STT APIの応答時間比較
人間と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を採用