音声認識で何か作ってみたいなーと思いつつ、調べて動かすだけでも疲れたので、ひとまず整理。
音声対話で使いたいので、認識精度が良いAPIやレスポンスの早いストリーミング方式を中心に記載。
動作確認環境
Windows 11 バージョン22H2 (OSビルド 22621.1105)
WSL2のUbuntu 20.04インストール済み
バッチ方式
SpeechRecognitionライブラリ
複数の音声認識をラッピングしてくれて、発話した音声だけを区切ってくれる偉大なライブラリ。
面倒なことは全部ライブラリがやってくれるので、実装が楽。ひとまず音声認識したかったら、もうこれでいいかもと思いはじめている。
対話で使うには終話判定が遅く、そのあとに音声認識するので遅い。
GitHub
公式サンプル
pyaudioを使ったサンプル。動作確認には別途Googleの認証設定が必要。
ストリーミング方式 (単発)
Google Cloud Speech-to-Text API
ストリーミング音声認識のサンプル
pyaudioを使ったサンプル。"en-US" の部分を"ja-JP"に変えれば日本語の認識ができる。動作確認には別途Googleの認証設定が必要。
メモ
- APIにはSpeech-to-Text V1とSpeech-to-Text V2がある。ドキュメントの場合、左上で切り替える必要がある。
- single_utteranceを設定すると音声認識は1回になるが、発話終了の検出も早くなる(ような気がする)
- phrasesで音声認識のヒントは渡せるが、読み仮名を伝える手段がない。。。
リンク
公式ページ
Speech-to-Text リクエストの構成
クラスライブラリのドキュメント
料金
料金は2022年の11月から1秒単位の切り上げに!
制限事項
(開発言語に依存しない)ベストプラクティス
トラブルシューティングとサポート
リリースノート
対応音声フォーマット
ストリーミング方式 (連続音声認識)
単発との違いは、音声認識中に別の発話があっても漏れなく音声認識できること。
GCPのサイトでは、エンドレス ストリーミングって表現してた。
Google Cloud Speech-to-Text API
公式サンプル
pyaudioを使ったサンプル。"en-US" の部分を"ja-JP"に変えれば日本語の認識ができる。動作確認には別途Googleの認証設定が必要。
AmiVoice API
単語登録できて、しゃべった時間だけ課金なのも嬉しい。
ネットでの情報が少ない。
アカウント作成時に用意されるAPPKEYでも認証できるが、用途によってはキーの流出が怖い。
ワンタイムAppKeyを発行できるが、発行したあとに無効化する方法がよくわからなかった。。。
公式サンプル
Wrpがストリーミング方式のサンプル。別途、音声データを渡してあげる必要がある。
マイクを使った公式サンプル
ストリーミング方式。PulseAudioを使ったサンプル。上記の動作確認環境だと直接動かないため、WSL2上で確認。
リンク
料金
制限事項
対応音声フォーマット
マイページ
お試しページ
その他メモ
Googlle Speech-to-Text On-Prem
ローカルで動かせるのかと期待したけど違った。任意のGKEクラスタにコンテナとしてデプロイできるらしい。
AmiVoice作成の他社とのAPI比較資料
2022年時点のわかりやすい音声認識API比較