#どどんとふ + TTS(Text To Speech)という妄想 #これでいいですか竹流さん

@torgtaitai さんへ宛てた個人的なまとめです。
1

このまとめは?

ふとしたきっかけで思いついた設計(妄想)を連投したので。
それを どどんとふ 開発者の @torgtaitai さんへ送るための。
ものっそい個人的なまとめです。


どどんとふ とは

いわゆるTRPGのオンラインセッション支援サイト(サーバアプリケーション)です。
詳しくは こちら を。


TTS(Text To Speech) とは

いわゆるひとつの音声読み上げというものです。
ニコ生とかでいうところの softalk とか
棒読みちゃんとかみたいな「コメントの読み上げ」のことです。


前置きなげーよ

では、以下の連投をご覧ください。


サロンパス @saronpasu

朝からぼんやり考えていた、どどんとふのチャット音声読み上げの構想というか妄想について今考えていることを連投してみる。

2014-02-28 11:52:00
サロンパス @saronpasu

チャットメッセージを取得するWEBIFがあるので。まずはそこからチャットメッセージを取得する。

2014-02-28 11:52:54
サロンパス @saronpasu

呼び出しを受けたら、受け取ったメッセージ内容から音声読み上げのバイナリファイル(*.wav)を生成するWEBIFを新たに実装する。(※)

2014-02-28 11:54:56
サロンパス @saronpasu

テキストから音声読み上げのバイナリファイル(*.wav)を生成する部分に関しては、昔とった杵柄である AquesTalkライブラリ(いわゆる「ゆっくりボイス」)を使えば良くて。たぶんこれは組めそう。 問題は、どどんとふ仕様のWEBIFを新規で組めるか?ってところだ。

2014-02-28 11:56:28
サロンパス @saronpasu

どどんとふには標準で(どういう実装かわからんが)ダイスを転がした音を鳴らすことができる。 たぶん、音声ファイルをどうにか用意できれば。画面上で再生させることも可能なのではないかと予想。(※)

2014-02-28 11:57:41
サロンパス @saronpasu

実際に、ただ単純に音声ファイルを用意すればそれでいいのかってわけじゃなくて。 たぶん、Flexフロントエンドもいじらないとならないよーな気がする。 そのへんはまったく詳しくないのであまり自身はない。

2014-02-28 11:58:44
サロンパス @saronpasu

音声ファイルの再生終了をトリガーとして、音声バイナリファイルの削除をさせる。 これはFlexフロントエンドから再生終了のトリガーが、呼び出しを受けたら音声ファイルバイナリ削除を行うWEBIFへ通知するという形になるといいのだろうか。(※)

2014-02-28 12:02:26
サロンパス @saronpasu

問題は。音声ファイルの再生終了をどどんとふサーバのどのレイヤー(Flexフロントエンドなのか、WEBIFなのか)で取得、通知できるのかがさっぱりわかっていない。もしかしたら、音声ファイルを生成する段階で、再生時間を検知する必要があるのやもしれない。微妙。

2014-02-28 12:04:38
サロンパス @saronpasu

前後が逆になるけど。概要をいうと既存のWEBIFのやりとりを新規にいくつか増やして。 オプションプラグイン(?)としての音声読み上げ(いわゆるニコ生の棒読みちゃん)みたいなものをどどんとふにものっけようというものだ。(※)

2014-02-28 12:06:42
サロンパス @saronpasu

ニコ生などでよくあるコメントの読み上げはクライアントサイドでの実装だが、どどんとふの場合は。 そもそものコンセプトデザインとして「オールインワン」という設計思想があるので。 やはり、クライアントサイドではなくサーバサイドで実装を完結する必要があるのだろう。たぶん。

2014-02-28 12:08:00
サロンパス @saronpasu

大まかな設計(ほんと、ざっくりと)だが。 1.チャットWEBIFからメッセージ取得 2.音声ファイル生成WEBIFがコールを受けて、音声ファイルを生成 3.Flexフロントエンドで音声ファイルを再生 >>

2014-02-28 12:09:57
サロンパス @saronpasu

>> 4.Flexフロントエンド(?)から、音声ファイルの再生終了トリガーを取得 5.再生終了トリガーで、音声ファイル削除WEBIFをコール。音声ファイルを削除。 だいたいこんな感じ。

2014-02-28 12:11:22
サロンパス @saronpasu

課題。 a.)どどんとふ仕様のWEBIFを新規に組めるのか b.)Flexフロントエンドを新規追加できんのか c.)Flexフロントエンドで音声再生できんのか d.)Flexフロントエンドで再生終了トリガー取得できんのか >>

2014-02-28 12:13:54
サロンパス @saronpasu

>> e.)サーバサイドでの音声読み上げ(テキスト>音声ファイル>再生>消去)の処理  これを、どどんとふの部屋毎レベルで実装すると負荷がどのぐらいのものになるのか検討もつかない。  ぶっちゃけ、実働に耐えるレベルの負荷に収まるのか(収められるのか)がわからない。

2014-02-28 12:16:07
サロンパス @saronpasu

とりま。どどんとふの該当箇所周辺のソースコードと、Flexのリファレンスとかを読みながら。 よちよち歩きで久方ぶりの AquesTalk による音声読み上げ(いわゆる「ゆっくり実況」)のサーバサイド実装を勉強しましょうねー。というか、この設計でそもそもいけるのでせうか。

2014-02-28 12:18:05
サロンパス @saronpasu

しかし。もし、仮にこれが実装できたとすると。 どどんとふ+ニコ生?あるいはどどんとふ+ニコ動?による投稿動画作成が 「サーバサイドでデフォルトで、コメントのゆっくり読み上げがつく」!!!!という大盤振る舞いになりそうな予感。

2014-02-28 12:19:29
サロンパス @saronpasu

やったね、たえちゃん。ユーザビリティが格段に向上するよ!!(※サーバサイドリソースと実装コストと開発コスト度外視ですが)

2014-02-28 12:20:24
サロンパス @saronpasu

よし。連投おわりー。これをトゥギャったかなんかにまとめて、あとで竹流さんにメンションでも送ろーっと。

2014-02-28 12:21:10

ツッコミなど

くまかば @kumakaba

@saronpasu 拝見してましたが、実装方法はともかくとして「音声データ転送量」と「音声再生が間に合わない(次のメッセージが来た場合)の処理」も課題になりそうですな。

2014-02-28 12:19:06
ノル @noll528

@saronpasu うちのどどんとふ、ファンブルするとデデーンって流れるようにしてるお。 カットイン機能で簡単にできるお

2014-02-28 12:23:48
くまかば @kumakaba

おそらくサーバー実装では無く、クライアントからsoftalk(もしくは棒読みちゃん)のapi(?)をcallしちゃった方が良いんだろうなぁという想像はしたことがある。Flashでできるかどうかは全くわからぬw

2014-02-28 12:21:24
サロンパス @saronpasu

@kumakaba コスパを考えると、クライアントサイド実装ていうのが現実的なんだと思います。ただ、「サーバサイドでオールインワン」というのがどどんとふのコンセプトというか設計思想にあったよーな話をどこかで聞いたような気がします。 なんで、あえてのサーバサイドなんですよね。

2014-02-28 12:23:52
ノル @noll528

@saronpasu さっきリプしたけどすごく壮大なことしようとしてて噴いたwwwwwwwwwww

2014-02-28 12:24:39