下林明正のブログ

思いついたことを適当に書いています。

Google Assistant SDKを古いRaspberry Pi 2に入れて遊んだ

Google Homeとかを買うほどでもないけど音声認識してHueとかいじったりしたいなあなどと考えていたら、Google Assistant SDKというやつを導入すれば色んな端末がGoogle Homeっぽい感じになるということを聞いたのでわけも分からずにやってみた。

今回のゴールはとりあえず音声認識させてTwitterに投稿させること。

マイクは手元に余っていた適当なUSBマイクを繋げた。

サンワサプライ USBマイクロホン ブラック MM-MCUSB21BK

サンワサプライ USBマイクロホン ブラック MM-MCUSB21BK

Raspberry Piにつなぐスピーカーなんて持ってなかったけどRaspberry Pi 2にはミニジャックが付いていたのでイヤフォンを刺してがんばって聞き取りながら進めた。

とりあえず公式ドキュメントっぽいやつに従って導入を進めた。 Introduction to the Google Assistant Library  |  Google Assistant SDK  |  Google Developers

何回か詰まったが、以下の対応で何とかなった気がする。

  • Raspbian wheezyとかいうクソ古い環境だったのでサンプルのビルドがわけの分からない理由でコケまくる。結局、jessieのpython3やgccやbuild-essentialをインストールしたら何とかなった
    • もっと新しい環境(testingとか)を使わなかったのは、apt-getのバージョンが古すぎて新しい環境のパッケージリストをうまく取り扱えて無さそうだったため……そもそもwheezyを使うべきでないので、元気があるなら新しい環境へちゃんとアップグレードした方が良いと思う。元気はない
  • 日本語的に「オーケーグーグル」や英語的に「OK Google」だとなぜかほとんど認識されず、英語的に「Hey Google」だと大体認識された
    • マイクの品質が低すぎるとか、ホットワードの設定がおかしいとか、様々な可能性がありそう
  • マイクの感度が悪い気がしたので、amixerで設定した
  • サンプルスクリプトが[3788:3816:ERROR:audio_input_processor.cc(748)] Input errorみたいなエラーを吐いた時はどうやら別のプロセスがマイクを掴んでいるときのようなので、pkill arecordなどとして当該のプロセスを殺す

その後はRaspberry Pi にGoogle Assistant SDKを搭載して「OK Google」してみる。 - Qiitaを参考にTwitterに投稿させるIFTTTのアプレットを作成して、何度か適当に喋っていたらうまくいった。

その後自動起動させたいと思って先ずは雑にコマンドの末尾にアンパサンドを付けて実行してみたが、そうするとなぜかInput errorが出てしまうのでバックグラウンド起動させられていない……。 調べてみた雰囲気ではsystemdを使って自動起動できてそうな人はいる感じだけど、wheezyなのでアップグレードしないと試せない……。

というわけで、動かすことはできたけど今日は実用レベルまで持っていけ無さそうな雰囲気になってきた。残念。また元気があったら調べたい。 ここまで書いて、余ってるAndroid端末にGoogle Assistantアプリを入れて音声でロック解除できるようにしたら、それを使えば良いのでは……?という気がしてきている(メイン端末はセキュリティ上の観点からやれない)。けど手持ちのAndorid端末全部まともな状態じゃないんだよな……。 iPadは鎮座しているものも迂遠なことをしないとIFTTTと連携できないっぽいし、役に立たない。