この記事は筆者オンリーのAdvent Calendar 20259日目の記事です。
RustでSIP通話を受けて、音声を文字にして(ASR)、ずんだもんが返す音声ボットを作っています。
この記事はその中でも ASR(音声認識)をどう選ぶか を、ざっくり整理する回です。
(LLM、音声合成は次回に回します)
ざっくり結論
ローカルASR:自分のPC/サーバで動かす。音声が外に出ない。運用はそれなり。
クラウドASR:APIで使う。早く作れる。音声を外部に送る必要がある。
SIPボットは会話なので、精度だけじゃなく 反応速度(遅延) と 運用の楽さ が効きます。
ローカルASR:こういうのがある
「手元で動く」「サーバで自前運用できる」タイプのASRです。
Whisper系(OpenAI Whisperのローカル実装)
有名。日本語もそこそこ強い
モデルが大きいと重い(GPUあると快適)
Vosk / Kaldi系
軽めに動かしたいときに候補
精度はモデル次第、設定やチューニングは必要
音声処理込みのパイプラインを組む系
VAD(無音検出)+ASRみたいに、自前で会話向けに最適化できる
ローカルASRのイメージ:
👍 音声が外に出ない / ネットワークに依存しない
👎 セットアップ・推論環境・速度の確保が必要(GPU欲しくなることも)
クラウドASR:こういうのがある
「音声を送って、テキストを返してもらう」タイプです。
通話ボットだと ストリーミング対応 があると会話が作りやすいです。
Google Cloud Speech-to-Text
ストリーミングや機能が揃っている印象
Azure Speech
こちらもストリーミングや統合が強い
AWS Transcribe
AWSでまとめたい場合に相性がいい
Deepgram などの音声API系
リアルタイム寄りの提供が多い
クラウドASRのイメージ:
👍 とにかく早く動く / 運用が軽い / ストリーミングが使いやすい
👎 音声を外に送る(規約や同意) / 従量課金 / ネットワーク遅延が乗る
SIP音声ボット目線での選び方(雑に)
アドベントカレンダーで「動いた!」まで最短
→ クラウドASRが楽(APIで早い)
音声データを外に出せない/ローカル完結したい
→ ローカルASRが安心
最終的にちゃんと運用する気がある
→ 最初クラウド → 後でローカルに置き換え、も現実的
次回につなぐ(次の記事)
ASRで文字が取れたら、次は
LLMで返答を作る
VOICEVOXでずんだもん音声を作る
SIP(Zoiper等)に音声を返す
…という “会話ボット本体” に入っていきます。