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 Statesen_US
英語United Kingdomen_GB
英語Australiaen_AU
英語Canadaen_CA
英語Indiaen_IN
英語Singaporeen_SG
スペイン語Latinoamerica?
スペイン語Espanaes_ES
デンマーク語Denmarkda_DK
ドイツ語Deutschlandde-DE
フランス語Francefr-FR
フランス語Canadafr-CA
ヒンディー語Indiahi-IN
インドネシア語Indonesiaid_ID?
イタリア語Italiait_IT
日本語Japanja_JP
韓国語Koreako_KR
オランダ語Nederlandsnl_NL?
ロシア語Rossiaru_RU?
スウェーデン語Swedensv_SE?
タイ語Thailandth_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を使う。を見てください。

Snowboyを入れてHotwordで起動できるようにする。” に対して1件のコメントがあります。

  1. おおた より:

    ありがとうございます。
    11月16日版動きました。ただ、libf77blasがないと怒られたので、
    sudo apt install libatlas-base-dev
    として対応しました。
    Jarvis.umdl を使いたいのですが、そっちはまだうまくいってないです。

    1. もんごんた より:

      コメントありがとうございます。
      libatras-base-devは依存パッケージのところに書いておいたのですがわかりづらかったでしょうか?

      Jarvis.umdlだけ確かに動きませんね。
      もし必要であれば、https://snowboy.kitt.ai/からもダウンロードできるのでそちらを使ってみてください。

      1. おおた より:

        すみません、誤記でした。libf77blast-devでした。

  2. ももも より:

    丁度,AIYのAPIの更新に対応できるようにsnowboyの改良を考えていたところ何たる救い!
    試してみましたが11/16版動きました.
    こちらcloudspeech_demo.pyへ移植していろいろと制御を行ってみましたがこれも無事うまく行きました.
    Jarvis.umdlはこちらも動かず.調べてみたところsnowboy公式gitのsnowboydecoder.pyが少しバージョンアップしてるようですね.
    具体的には,HotwordDecoderクラスの引数にapply_frontendが追加されてるようで(Jarvis.umdlが動かないのがこれのせいかどうかはまだよくわかりませんが)
    おかげさまでsnowboyで遊ぶことができました.本当にありがとうございました.

    1. もんごんた より:

      コメントありがとうございます。

      Snowboydecoder.pyも変わっているのですね。
      情報ありがとうございました。時間があったら取り込めそうか調べてみます。

      https://github.com/Kitt-AI/snowboy/issues/525を見るとデータのようですね。

      これからもAIY活用していきましょう。

  3. もんごんた より:

    おおたさん、もももさん>

    jarvis.umdlですが、本家のGitHubのデータでも動かないことを確認しました。
    ライセンスを削除と書いてあるので何か引っかかったのかもしれません。

    snowboyのHPからダウンロードできるjarvis.pmdlは動作確認しましたのでもし必要であればそちらからダウンロードしてください。自分のGitHubからは削除しておきます。

  4. おおた より:

    もんごんた様、

    おおたのミスでしたか。すみません。
    jarvisは、よく読めてないのですが、license error jarvisでぐぐると、Jarvisだけv1.3仕様とかになってて、v1.2からv1.3に変わって、sensivityだかが変わったので、そこを変えてどうにかしろとか出てきます。どのファイルをいじれば良いのかいまいち理解できてませんが、ライセンスの話じゃない様子。具体的なURLは探し直しますね。情報量少なくてすみません。

    1. おおた より:

      これではなかった気がしますが、何かヒントになれば。。。
      https://github.com/Kitt-AI/snowboy/issues/447

        1. おおた より:

          ここの中段のshivasiddharthさんの投稿に

          If you want to use jarvis.umdl then make the following change in main.py in lines 151 and 152 in main.py

          と書いてありました。
          コピペだとなんかうまく引用できない。。

          1. おおた より:

            change len(models) to (len(models)+1) this is if you are using jarvis.umdl only.

            です。細切れすみません

    2. もんごんた より:

      おおたさん>

      色々情報ありがとうございます。
      ざーっとソース見てみたのですが、やはりsnowboydetect.py,snowboydecoder.pyとその先のsoも変更しないといけないので、すぐには難しいです。

      https://snowboy.kitt.ai/

      からダウンロードできるjarvis.pmdlではだめなのでしょうか?

      1. おおた より:

        もんごんた様

        チェックありがとうございます。
        厄介そう。ということ、拝承いたしました。

        jarvis.pmdlですが、MacでもWinでも、自分の環境ではクロームブラウザ使ってもクローム使えと拒否されてましたが、先ほどMac版のFireFoxで、ようやく、録音->ダウンロードできましたので、これから試してみます。色々ありがとうございました。勉強になります。

        1. もんごんた より:

          おおたさん>

          そういえば私もChromeで拒否され、FireFoxでやりました。前はできたのに。。。後でもう一つの記事にChromeはダメと追記しておきます。

          jarvis.pmdlは私の環境ではAlexaよりも誤動作が少なくていい感じです。
          こちらこそ色々な情報ありがとうございました。近いうちに新しいAIYKitsOSが出るようなので、そのタイミングで実装考えてみます。

          1. おおた より:

            なんと。やっと入れたのに、もう新しいのが出るですかwww

            おかげさまで、無事にjarvis動きました。先住民alexaが居るので、 Alexa以外にする必要があったもんで。助かりました。
            これでしばらく使ってみます。

コメントを残す

メールアドレスが公開されることはありません。