ロボットのマイクを利用して音声ストリーミング認識

ここまでくると、次の課題は、NAOのマイクから入ってくる音声をGoogleのクラウドAPIに送って、ストリーミングで認識、テキストデータ化させることである。
これについては、Pepperで色々試された結果がウェッブにあるので、それを学んでなんとか二つを接合させれないかと考えている。
http://www.baku-dreameater.net/archives/9331
とか、
http://qiita.com/hanzo/items/bb89d021e170133b9d41
とかがとても参考になりそうです。
それができれば、ロボットが聞いた言葉をパソコン経由でGoogleにストリーミング送信し、返ってきたデータをパソコン上で解析して、結論をロボットに送り込んで喋らせれば良い。

Googleのspeech recognitionのストリーミング版の試み

Googleのspeech recognitionのストリーミング版を試した。そのすごさにおどろかされた。
まず、それをやった手続きをいかに記録しておく。基本的に、
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/speech/grpc
解説されていることをそのままやったのだが。しかし、手間はかかるし、混乱する。
以下、MACの場合を想定している。
(1)先の、スタティックな音声ファイルの認識で書いたように、Google Cloud Platformへの登録手続きは済ませておかなければならない。
(2)Google Cloud SDKをインストールする。
https://cloud.google.com/sdk/
から、自分の環境に適合したのものをインストールする。
./install.sh
で開始される。OSに合ったクイックスタートページをチェックしておく。
gcloud initをやると、色々聞かれてくるので、答える。プロジェクトの選択が大事。
gcloud infoなどのコマンドを試し確認しておく。
PATHの設定変更なども自動でするので、その後、
source ~/.bash_profile
は、やっておくこと。
(3)権限ファイルがまた必要になるので、先の音声ファイルの時にもやった、権限ファイルの位置を示す次のコマンドを先にやっておいた。ガイドでは後でやるようになっているが、この辺りは自信はない。ただ、私は先にやっておいた。しかしこれはやらなくても良い感じだ。
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
(4)以下のコマンドで権限(authentication)の設定をする。
gcloud beta auth application-default login
このgcloudをじっこうすると、まず、gcloud Beta Commandsなどのコンポーネントがインストールされていないので、先にそれをやりますねというメッセージが出て、それを完了した時点で、あらためて上記のコマンドを自動で再起動しているようだ。
(5)途中、プラットフォームへのペジが開いて、ログインを求められるので、それを実行すると、権限ファイルが自動的に "default location"に保存されるようだ。
Credentials saved to file: [/Users/xxxxx/.config/gcloud/application_default_credentials.json]
というわけだ。
(6)PortAudioのインストール:brewがインストールされていれば
brew install portaudio
をやる。インストールされていなければ、インストールする。ただ、最後の実行段階で、audio系のエラーが出たので、結局、
pip install --global-option='build_ext' \
--global-option='-I/usr/local/include' \
--global-option='-L/usr/local/lib' \
pyaudio
をその後実行したら、エラーが出なくなった。クイックスタートのページでは、インストールの時点でエラーが出たらとなっていたが、その段階ではエラーがでなかった。
(9)virtualenvをインストールする。これがごちゃごちゃして、めどうだったが、そのウェッブサイトによれば、
$ [sudo] pip install virtualenv
でインストールできるようだ。sudoをつけて、root権限でインストールした方が良いと思う。
(10)virtualenvの実行と設定:以下のコマンドを実行する。
$ virtualenv env
$ source env/bin/activate
(11)サンプルを実行するための依存ファイルをインストールする。そのために、サイトに置かれているrequirements.txtの内容をコピーして、その名前のファイルとして、ローカルに作成しておく。そして、以下のコマンドを実行する。
$ sudo pip install -r requirements.txt
(12)pythonの実行ファイルのコピーと変更
サイトのtranscribe_streaming.pyをコピーして、ローカルのフォルダのファイルにする。コピーの際、インデントなどが崩れるとエラーになるので気をつけること。
唯一変更すべきところは、
language_code='en-US', # a BCP-47 language tag
の箇所を、
language_code='ja-JP', # a BCP-47 language tag
に変更する。変更しないと、こちらで喋ったことを全て、英語で返してくる。日本語として解釈するために必要な変更だ。
(12)ストリーミングによる認識、テキスト化の実行
$ python transcribe_streaming.py
を実行する。
パソコンのマイクに向かって、喋ると、ほとんどリアルタイムで、翻訳を返してくる!!!