どうも、CHASUKEです。
任意のウェイクワードでGoogleアシスタントを呼び出す方法を紹介します。
と言うのも、メールでこんなリクエストを頂いたからです。
「メリークリスマス!」でクリスマスツリーを点灯させたい。しかし、Amazon EchoやGoogle Homeではウェイクワードが必要で困っています。
CHASUKE
お問い合わせありがとうございます
メールの最後に「電子機器にはまるで疎いのですがやる気だけはあります!」と力強いお言葉が添えられていたので、考えてみました。
最終的に以前紹介したスマートスピーカー自作キット『Google AIY Voice Kit』を使って、それっぽくできました。
もうすぐクリスマス。イベントごとで活躍したら幸いです!
それではやっていきましょう♪
ウェイクワードは必須!
現在販売されている各種スマートスピーカーで、アシスタントを呼び出すには、以下のようなウェイクワードが必須です。
- Amazon Echoなら「アレクサ」
- Google Homeなら「OK、Google」
- Clovaなら「クローバ」
または、スピーカー本体のボタンを押すことでアシスタントを呼び出せます。
逆に、これらの操作無しにアシスタントを呼び出すことはできない。基本的にウェイクワードを自由に変更することもできません。
ただし、自作スマートスピーカーであれば、ウェイクワードを自由に変更できます!
ウェイクワードを変更する方法
自作スマートスピーカーを使って、ウェイクワードを変更する方法を紹介していきます!
自作スマートスピーカーを準備する
RaspberryPi(ラズパイ)にマイクやスピーカーなどのパーツを接続して、自作スマートスピーカーを作ることも可能です。
CHASUKE
けれど、パーツ揃えたり設定するのがめちゃ大変!
ということで、以前紹介した自作キット「Google AIY Voice Kit」を使います。簡単にGoogleアシスタント内蔵のスマートスピーカーが作れますよ。
▼詳しくはこちら
https://chasuke.com/wp/voicekit/
CHASUKE
記事を参考に初期設定してみてください!
▼現在はRaspberryPi Zeroを使ったバージョン2も販売されています。
ウェイクワード「メリー」を準備する
ウェイクワード(検知ワード)の作成には「snowboy」を使いました。
snowboyとは、クラウドベースで学習したホットワードのモデルデータをRaspberry Piなどの環境で利用可能にするライブラリです。個人的利用であれば無償で利用可能です。
「アレクサ」や「OK、Google」といったウェイクワードを自作して設定を可能にします。
上記ページから既存のGoogleアカウントなどでログインすると、「Create Hotword」から自作できます。今回は、「メリー」というウェイクワードを作っていきます。
▼3回分音声を録音することができる。
▼テストをして、音声ファイルをダウンロードできます。
umdlという拡張子のファイルができます。
これを自作スマートスピーカーに転送しておきましょう。僕は「/home/pi/snowboy/merry.pmdl」に配置しました。
自作ウェイクワードで呼んでみる
Google AIY Voice Kitのウェイクワードをカスタマイズして、先ほど準備した「メリー」でGoogleアシスタントを呼び出せるようにします。
この連携部分は、Githubで公開されている「custom-hotword-for-aiy-voicekit」を利用させてもらいました。これでカスタマイズが容易にできます!
▼インストールする
// インストール
$ cd /home/pi/
$ sudo apt-get install libatlas-base-dev
$ git clone https://github.com/senyoltw/custom-hotword-for-aiy-voicekit
$ cp -ipr custom-hotword-for-aiy-voicekit/mod AIY-projects-python/src/
$ cp -ip custom-hotword-for-aiy-voicekit/assistant_library_with_snowboy_demo.py AIY-projects-python/src/examples/voice/
$ cd AIY-voice-kit-python
$ chmod a+x src/examples/voice/assistant_library_with_snowboy_demo.py
▼Snowboyで作成したファイルを引数にセットして、実行します!
$ src/examples/voice/assistant_library_with_snowboy_demo.py /home/pi/snowboy/merry.pmdl
▼「メリー!」と声を掛けて、ボタンが光れば成功です♪
「今日の天気は?」「株価は?」など、あとはGoogleアシスタントが返事してくれます。
反応が悪い時の対処方法
認識率は少々低めなのですが、Snowboyモデルの呼び出し時のパラメータを変化させ、認識率を高めることができました。
先ほど、Githubから持ってきてコピーした「assistant_library_with_snowboy_demo.py」の81行目付近を下記のように書き換えます。
def _run_hotword(self):
detector = snowboydecoder.HotwordDetector(model, sensitivity=1.0, audio_gain=1)
with aiy.audio.get_recorder():
CHASUKE
これでかなり反応が良くなった
「メリー、クリスマス!」でツリーを光らせる
ウェイクワード無しでメッセージを伝えることはできませんが、「メリー」でGoogleアシスタントが呼べるようになった。
合わせて、Google HomeアプリやIFTTTを使って「クリスマス」という言葉に反応する仕組みを作ることで、「メリー、クリスマス」を実現しました!
▼かなり強引ですが、こんな感じにできました。
ウェイクワードを「メリー」にして、メリークリスマスを実現。
強引です。 pic.twitter.com/mmD4skuypn— CHASUKE (@chasuke__) November 9, 2018
「ハッピークリスマス」の棒読み具合が残念ですが、無事にクリスマスツリーを光らせることに成功しました。
光らせたクリスマスツリーは、Amazonで899円のUSB給電タイプです。グラデーションが綺麗でなかなか良いです。これをスマートコンセントで制御しています。
https://chasuke.com/wp/smacon/
最後に
ウェイクワードを変更する方法を紹介してみました。これができると、スマートスピーカーの活用の幅がもっともっと広がりますね。
こちらの記事が参考になれば幸いです。
それではまた。