人間とAIが”会話”するためには,STT,TTSの処理が必要である. このとき,会話のターンアラウンドタイムが長いほど,人間側の体験は悪くなる. というわけで早いAPIを探すぞ!


環境

Macbook Air M2, 2025/06/01

対象

  • AzureAI Speech STT
  • Amazon Transcribe
  • Gooogle Cloud Speech-to-Text
  • OpenAI Speech to text それぞれに対し,ストリーミングと非ストリーミング

実装

  • WebRTC VADで発話開始検出
    • ストリーミングの場合,発話開始0.5秒からストリーミング接続
  • WebRTC VADで発話終了検出
    • 非ストリーミングの場合,発話終了検出時にAPIを叩く
  • 最終結果が返ってくるまでの時間を結果とする

  • 検証用音声は短い会話3種類およびそれらをくっつけたもの

結果

| プロバイダー | モード | 平均時間 | 最小時間 | 最大時間 | サンプル数 | | —— | ———— | —— | —— | —— | —– | | aws | nonstreaming | 4.320s | 3.205s | 5.821s | 3 | | aws | streaming | 2.323s | 1.668s | 3.466s | 4 | | azure | nonstreaming | 3.998s | 2.504s | 7.416s | 4 | | azure | streaming | 2.376s | 1.599s | 4.006s | 4 | | gcp | nonstreaming | 4.096s | 2.616s | 7.324s | 4 | | gcp | streaming | 5.306s | 2.974s | 7.520s | 4 | | openai | nonstreaming | 2.629s | 2.063s | 3.630s | 4 | | openai | streaming | 3.851s | 2.288s | 5.373s | 4 |

  • aws-nonstreamingは合成した長い音声でコケた
  • aws-streamingは認識精度が怪しい

というわけでazureのstreamingを採用