爆速!音声合成モデルのレスポンスを50ミリ秒以下に短縮した技術的工夫
How we made a text-to-speech model respond in sub-50 ms
How we made a text-to-speech model respond in sub-50 ms
現在、テキスト読み上げ(TTS)モデルの応答速度を50ミリ秒未満という驚異的なレベルにまで高速化する手法について解説します。リアルタイムなインタラクションが求められるシステムにおいて、このレイテンシ短縮は大きなゲームチェンジャーとなります。本記事では、アーキテクチャの最適化から推論パイプラインのチューニングに至るまで、私たちが実際に講じた技術的な改善策を深掘りしていきます。
リアルタイム音声アプリケーションにおいて、time-to-first-audio (TTFA) は非常に重要だ。vLLM-OmniやSGLang-Omniのようなオープンソースの実装は、プロダクション環境で使うには遅すぎることが多く、低レイテンシーを追求するとリアルタイム再生で問題が発生することもある。私たちはこれを解決したかったんだ。
人気のOSS TTSモデルであるqwen3-ttsを最適化し、1 x H100環境、秒間10リクエストで34 msというp95 TTFAを実現した。その実装とベンチマーク、そしてどのように達成したかの詳細をオープンソースとして公開している。
ChatGPTは反応がめちゃくちゃ速いけど、「うーん」「えーと、考えさせて」みたいなフィラー(間投詞)が入って、結局回答が遅れるんだよね。
GPT-Realtime-2は本当に奇妙だ。双方向になったことで失敗モードが発生しやすくなったせいか、変なタイミングでフィラーを挟んでくるし、全体的に前のめりすぎる。こういう取り組みのようなレイテンシーエンジニアリングに取り組む余地は十分にあったと思うんだけどね。
1年前からローカルの音声エージェントを構築している身として、これはまさに自分に必要なものだよ。これまで色々なモデルを試して、Omni音声向けのカスタム実装を何ヶ月もかけて調整してきた。24ステップのモデルで200ms以下のTTFAを達成できたことはないんだけど、理由は……品質なんだ。多くのTTSモデルには、まだまだ改善の余地が山ほどある。でも、ある程度の品質を保とうとするとハードルにぶつかるんだよ。遅延を優先して品質を下げると、割に合わないんだ。しっかりした音声エージェントを作るには、声の質、抑揚、表現などがすごく重要だからね。この実装を試して、期待通りの品質が出せるか確認するのが楽しみだ。もし良ければ、本当に素晴らしい仕事だよ。
自分でも音声アシスタントを作って(https://github.com/acatovic/ova )、他のサービスやモデルも色々試してきたけど、結局重要なのはオンデバイスで動くことだと思う。ここで言う「オンデバイス」ってのは、H100じゃなくてスマホで安価に動かせるって意味でね。今はすごく高速なPocket TTSや、Chatterbox、Fish Audio S2 Pro(Mac/PC)を使ってるけど、手が届きそうで届かないもどかしさを感じる。品質は素晴らしいけど、これを次のレベルに引き上げてスマホで動かすにはどうすればいいんだろう?何が必要だと思う?
これはクールだね。でもエージェントのシナリオにおいて、LLMが直接音声トークンを処理できない限り、推論でレイテンシーが失われてしまう。OpenAIの音声モデルが面白いのはそこなんだよね。
あと、スイートスポットは150ms以下だ。それなら残りの時間を推論とターンの切り替えに使える。TTSとSTTを含めて50msで応答できたら最高だね。
そこまでいけば「このAIエージェントは実在していて意識がある」と言えるレベルになる。
動画でのデモはないの?
もちろん速いに越したことはないけれど、あえてレイテンシーを持たせないと(あるいはその時間をQAやガードレールなどに使わないと)、モデルが気味悪く感じられたり、ユーザーが会話をぎこちなく感じたりする可能性があるよ。
人間には約200msの聴覚処理レイテンシー(音声入力から脳の応答まで)がある。会話の中ではこれをお互いに考慮していて、例えば誰かが100msで返事をしてきたら、「遮られた」とか「今言ったことに対してじゃなくて、もっと前に言ったことへの返事だな」と解釈するんだ。
これは、遮られたことによって意味が劇的に変わってしまうような文で特に重要になる。
「殺人は悪いと思うけど…」
もし「けど」の直後で遮られたら、人間は「殺人は悪い」という部分に対して割り込みが入ったと解釈するだろうね。これは「殺人を正当化しようとした直後に遮られる」のとは全く意味が違う。
Cloudflare AI Workers(あるいは類似の環境)で使えるようにする予定はある?すごくクールだし、ぜひ試してみたい!