ただし、問題点はある。
「はい、よろこんで、やらせていただきます。」
と、
「はい、」「よろこんで、やらせていただきます。」
は別の台詞なので、TTSでは後者は不自然な発声になることがある。
これの解決方法も一応ある。
「はい、」を生成、再生したあと、「はい、よろこんで、やらせていただきます。」を生成し、「よろこんで…」から再生すればOK。ただ、特にAI音声合成だとタイムスタンプが得られない(おそらくだいたいは)ので、「はい、」の再生時間を取得し、「はい、よろこんで、やらせていただきます。」からその再生時間の前後で無音領域を検索し、無音領域の後部分だけ再生する、みたいな工夫がいる。そこまでするのはちょい面倒。
AIキャラチャットで一番大切なのは、応答速度ではない、という結論に至りつつある。チャットをターン制バトルじゃなくて、アクティブタイムバトルにするのが、たぶん一番大事だ。
チャットをターン制としてpull的、同期的に処理しようとするから、応答速度が気になってしまうんだろう。でも、会話って必ずしも「応答」するもんじゃないし、即座の「応答」があると会話っぽいかというと、そんなことも無い。応答速度を気にするあまり、フィラーを機械的に挿入して、いかにも機械との会話っぽくなってしまって本末転倒状態まである。
任意のタイミングで、こちらの話がそれなりの時間内に相手に伝わり、任意のタイミングで相手の話がこちらに伝われば、会話は成立するんだ。我々は普通にそれくらいの遅延があるボイスチャットを人間同士でもやってるわけで。
このキャラチャットシステムは、kv cacheを使っていてChatGPT並に応答が早いので、せっかくだから、音声応答も早くしたかったというのがあった。だいぶ早くなって満足。あとストリーム生成もさくっと実装したいところ。ちょっと作り的にめんどさがあって、滞ってるが。