Snowboyを入れてHotwordで起動できるようにする。
★OSはaiyprojects-2018-08-03.img.xzおよび2018-11-16のバージョンで検証しています。
GoogleAIYVoiceKitV2を使い始めて一番不便なのが、、、
「OK,Google」というHotwordで起動できない
ということです。
具体的には、assistant_library_demo.pyを実行すると
Cannot run hotword demo on Pi Zero!
と表示されてしまいます。
この不便な点を解消するには、RaspberryPiZeroWHではなくRaspberryPi3Bか3B+に変えるしかないのですが、それではせっかくの外箱が使えなくなります。
調べていくと「snowboy」というソフトを導入するとRaspberryPiZeroWHでも動き、任意のHotwordにもできるようなので早速使ってみました。
ラズパイ関連の目次へ戻る(工事中)
Snowboyとは?
Snowboy Hotword Detection
「ホットワード検出エンジン」です。クラウドで学習したホットワードをRaspberryPiなどでリアルタイムに検出できるようになります。
任意のHotwordを使いたい場合はSnowboyのサイトへログインする必要がありGitHub,Google,Facebookのいずれかのアカウントが必要です。
まずは「Alexa」と言って起動できるようにする。
任意のHotwordで起動させる前にまず「Alexa」と言って起動できるようになるものがGitHubで公開されていましたので試します。
2018-08-03バージョン
https://github.com/mongonta0716/custom-hotword-for-aiy-voicekit/tree/aiykits2018-08-03
2018-11-16バージョン
2018/1/21にやっと動くまで行きました。
https://github.com/mongonta0716/custom-hotword-for-aiy-voicekit
インストール
①snowboyで必要なパッケージをインストール
sudo apt install libatlas-base-dev
②git cloneする。
OSのバージョンによりクローンするパラメータを変更してください。(旧バージョンはリリースからでもアーカイブを取得できます。)
●2018-08-03
git clone -b aiykits2018-08-03 https://github.com/mongonta0716/custom-hotword-for-aiy-voicekit.git
●2018-11-16
git clone https://github.com/mongonta0716/custom-hotword-for-aiy-voicekit.git
③ファイルをコピー
必要なファイルをAIY-projects-python配下にコピーします。
cp -ipr custom-hotword-for-aiy-voicekit/mod ~/AIY-projects-python/src/
cp -ip custom-hotword-for-aiy-voicekit/assistant_grpc_demo_snowboy.py ~/AIY-projects-python/src/examples/voice/
④スクリプトに実行権限を与える。
cd ~/AIY-voice-kit-python
chmod a+x src/examples/voice/assistant_grpc_demo_snowboy.py
使い方
スクリプトを下記のように実行します。
AIY-projects-shell.sh
src/examples/voice/assistant_grpc_demo_snowboy.py --model=src/mod/resources/alexa/alexa_02092017.umdl
起動するまで5秒ぐらいかかります。コマンドプロンプトに下記のように表示されたら「アレクサ」と話しかけます。
Speak own hotword and speak
認識すると下記のように
Listening...
と表示されるので「今日の天気は?」と話しかけてください。
Googleアシスタントから返事が来たらOKです。
★英語でしか反応しない場合★
英語しか認識しない場合は、Raspbianの言語設定が日本語になっているか確認してください。とりあえず動作確認するだけなら「What time is it now?」と聞いてみてください。
snowboyの動作確認完了
Googleアシスタントから返事が返ってきたらインストールは完了です。次は自分の好きなHotwordの設定をしてみましょう。
Snowboyで好きなHotwordを使う。パラメータについて
assistant_grpc_demo_snowboy.pyの2018-11-16バージョンではいくつかのパラメータを指定できます。下記のように起動時に指定してください。
src/examples/voice/assistant_grpc_demo.py --volume=50 \
--language=ja_JP \
--sensitivity=0.3
volume
Googleアシスタントの初期ボリュームを指定できます。省略した場合は100です。
language
言語コードを指定します。言語コードは下記の表を参照してください。
※?が付いている箇所は開発中のためか使えないようです。
言語 | 国 | 文字コード |
---|---|---|
英語 | United States | en_US |
英語 | United Kingdom | en_GB |
英語 | Australia | en_AU |
英語 | Canada | en_CA |
英語 | India | en_IN |
英語 | Singapore | en_SG |
スペイン語 | Latinoamerica | ? |
スペイン語 | Espana | es_ES |
デンマーク語 | Denmark | da_DK |
ドイツ語 | Deutschland | de-DE |
フランス語 | France | fr-FR |
フランス語 | Canada | fr-CA |
ヒンディー語 | India | hi-IN |
インドネシア語 | Indonesia | id_ID? |
イタリア語 | Italia | it_IT |
日本語 | Japan | ja_JP |
韓国語 | Korea | ko_KR |
オランダ語 | Nederlands | nl_NL? |
ロシア語 | Rossia | ru_RU? |
スウェーデン語 | Sweden | sv_SE? |
タイ語 | Thailand | th_th? |
sensitivity
snowboyの感度を調整できます。0(感度低)から1(感度高)までの間の値を指定します。省略すると0.5です。
困ったときに
インストールしたけど動かないという場合は下記を確認してみてください。
LEDは点灯するが音声を認識しない。
check_audio.pyが正常に動くかどうか確認しましょう。動かなかった場合はGoogle AIY Voicekitの不具合や注意事項まとめを参照してください。
また、alsamixerで設定したマスターボリュームが小さすぎると認識しない場合があるようです。ボリュームを調整してみてください。
jarvis.umdlが動かない。
snowboyのAPIが変更になっていて、2019/1現在は動きません。どうしてもjarvisを使いたい場合はsnowboyのHPへ登録をしてjarvis.pmdlをダウンロードしてください。詳しい手順はSnowboyで好きなHotwordを使う。を見てください。
ありがとうございます。
11月16日版動きました。ただ、libf77blasがないと怒られたので、
sudo apt install libatlas-base-dev
として対応しました。
Jarvis.umdl を使いたいのですが、そっちはまだうまくいってないです。
コメントありがとうございます。
libatras-base-devは依存パッケージのところに書いておいたのですがわかりづらかったでしょうか?
Jarvis.umdlだけ確かに動きませんね。
もし必要であれば、https://snowboy.kitt.ai/からもダウンロードできるのでそちらを使ってみてください。
すみません、誤記でした。libf77blast-devでした。
丁度,AIYのAPIの更新に対応できるようにsnowboyの改良を考えていたところ何たる救い!
試してみましたが11/16版動きました.
こちらcloudspeech_demo.pyへ移植していろいろと制御を行ってみましたがこれも無事うまく行きました.
Jarvis.umdlはこちらも動かず.調べてみたところsnowboy公式gitのsnowboydecoder.pyが少しバージョンアップしてるようですね.
具体的には,HotwordDecoderクラスの引数にapply_frontendが追加されてるようで(Jarvis.umdlが動かないのがこれのせいかどうかはまだよくわかりませんが)
おかげさまでsnowboyで遊ぶことができました.本当にありがとうございました.
コメントありがとうございます。
Snowboydecoder.pyも変わっているのですね。
情報ありがとうございました。時間があったら取り込めそうか調べてみます。
https://github.com/Kitt-AI/snowboy/issues/525を見るとデータのようですね。
これからもAIY活用していきましょう。
おおたさん、もももさん>
jarvis.umdlですが、本家のGitHubのデータでも動かないことを確認しました。
ライセンスを削除と書いてあるので何か引っかかったのかもしれません。
snowboyのHPからダウンロードできるjarvis.pmdlは動作確認しましたのでもし必要であればそちらからダウンロードしてください。自分のGitHubからは削除しておきます。
もんごんた様、
おおたのミスでしたか。すみません。
jarvisは、よく読めてないのですが、license error jarvisでぐぐると、Jarvisだけv1.3仕様とかになってて、v1.2からv1.3に変わって、sensivityだかが変わったので、そこを変えてどうにかしろとか出てきます。どのファイルをいじれば良いのかいまいち理解できてませんが、ライセンスの話じゃない様子。具体的なURLは探し直しますね。情報量少なくてすみません。
これではなかった気がしますが、何かヒントになれば。。。
https://github.com/Kitt-AI/snowboy/issues/447
これかな?
https://github.com/shivasiddharth/GassistPi/issues/455
ここの中段のshivasiddharthさんの投稿に
If you want to use jarvis.umdl then make the following change in main.py in lines 151 and 152 in main.py
と書いてありました。
コピペだとなんかうまく引用できない。。
change len(models) to (len(models)+1) this is if you are using jarvis.umdl only.
です。細切れすみません
おおたさん>
色々情報ありがとうございます。
ざーっとソース見てみたのですが、やはりsnowboydetect.py,snowboydecoder.pyとその先のsoも変更しないといけないので、すぐには難しいです。
https://snowboy.kitt.ai/
からダウンロードできるjarvis.pmdlではだめなのでしょうか?
もんごんた様
チェックありがとうございます。
厄介そう。ということ、拝承いたしました。
jarvis.pmdlですが、MacでもWinでも、自分の環境ではクロームブラウザ使ってもクローム使えと拒否されてましたが、先ほどMac版のFireFoxで、ようやく、録音->ダウンロードできましたので、これから試してみます。色々ありがとうございました。勉強になります。
おおたさん>
そういえば私もChromeで拒否され、FireFoxでやりました。前はできたのに。。。後でもう一つの記事にChromeはダメと追記しておきます。
jarvis.pmdlは私の環境ではAlexaよりも誤動作が少なくていい感じです。
こちらこそ色々な情報ありがとうございました。近いうちに新しいAIYKitsOSが出るようなので、そのタイミングで実装考えてみます。
なんと。やっと入れたのに、もう新しいのが出るですかwww
おかげさまで、無事にjarvis動きました。先住民alexaが居るので、 Alexa以外にする必要があったもんで。助かりました。
これでしばらく使ってみます。