LoginSignup
20
17

More than 5 years have passed since last update.

Google Cloud Speech APIでストリーミング音声認識

Last updated at Posted at 2016-09-15

2016/9/14現在の情報です

Google Cloud Speech APIでマイク入力からのストリーミング音声認識を試す.

以前REST API版で録音済ファイルの認識を試したので、今回はgRPC版でストリーミング認識させてみる.

手順

Google公式のサンプル
のREADMEの手順に従う.

今回試すのはストリーミング認識のtranscribe_streaming.py .

Service Accountのjsonを得るところまではREST版と同じ手順.

  1. Google Cloud platformにサインアップ
  2. Developer consoleでプロジェクト作ってSpeech APIを有効化し、認証用のService Account jsonファイルを取得
  3. ダウンロードしたjsonファイルを環境変数GOOGLE_APPLICATION_CREDENTIALS に設定
  4. サンプルスクリプト実行
    1. portaudioを使えるようにする
    2. 必要なpipモジュールのインストール (virtualenv推奨)
    3. transcribe_streaming.pyを日本語認識できるよう設定
      1. recognition_configのlanguage_codeをen-USからja-JPに変更
      2. サンプリングレート等を自分の環境に合うように調整
      3. デバイス周りの設定はrecord_audio で、pyaudioのお作法で
    4. $ python transcribe_streaming.py でサンプルを実行し、マイクに向かって話しかける

起動するとlisten_print_loopの中でservice.StreamingRecognizeが値を返す限り認識が続く.(DEADLINE_SECSの秒数が経過するとタイムアウトで終了する)

このサンプルは発言にexitまたはquitの単語が含まれていると処理を終えるようになっている (listen_print_loopの後半) ので、これらの単語を止まれ とか 終了 とかに変えておくと日本語でも同じことができるだろう.

認識の挙動

  • 一定期間の沈黙があるまで、多少の間があってもひとつながりの発話として認識される.
  • 認識が済むと結果のテキストとともにis_final=Trueconfidenceが返される
  • streaming_configinterim_results=Trueを指定すると発話途中の認識結果も取れる.

発話途中の認識は単語レベルで行われているようで、ネットッワークを介してると思えない速さでびっくりする. ただし途中の認識結果は間違っていることもあるので、急がないなら全部終わるのを待った方が確実だろう.

その他のオプションはgRPC APIのマニュアル 参照

Githubのコードはかなり頻繁に更新されているので、日々チェックした方が良い.

不具合

MACとLinuxでそれぞれラップトップのビルトインマイク/USBの外付けマイクで試したが、いずれも3-10発話または15-30秒ぐらい経つと特にエラーもないまま認識しなくなる.
要調査.

雑感

v1beta1とあって、まだまだテスト段階なのかなと思われる.
gRPC (とpytonからの扱い方) に慣れないと正しく使うのが難しそう.

20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17