ラズベリーパイでスマートスピーカー(テキスト返信)を作ってみた!【Hotword機能】
この記事のポイント
  • Googleアシスタントの作成を行う.
  • 材料はラズベリーパイとマイクのみ!
  • びっくりするほど超簡単に作れちゃう!

こんにちは.けんゆー(@kenyu0501_)です.
ラズベリーパイでスマートスピーカー(テキスト版のHotword機能)を自作してみました.
必要な材料はこちらです.

youtubeに動画の様子をあげたのでご覧ください.

ペンのすけ

やっぱり何か作ることは楽しいねー!

GoogleアシスタントAPIをインターネットに落として,ラズベリーパイにマイクを差し込んだらすぐに実装できます.
参考にした技術書はこちらの本です.
Raspberry Pi + AI電子工作超入門』という本です.

分かりやすくてオススメです.

本書に無くて迷った点

指定ファイルの追加

Hotword機能を実装する直前!

仮想環境で,上のコードをターミナル(コマンドプロンプト)に打ち込むと思いますが,

[FATAL:audio_input_stream.cc(47)] Input device could not be opened: default
中止

というエラーメッセージが帰ってくるのですよね.
これはおそらく,全ての方に出るエラーメッセージだと思います.
(おいらも1時間くらい格闘しました)

解決策はこちらです.これをすることで恐らく解決です.

「/home/pi/.asoundrc」ファイルを作成する!そして適切な中身をかく!

それだけです.順を追って説明していきます.

「/home/pi/.asoundrc」ファイルを作成.は簡単ですね.仮想環境下のターミナルで以下を行ってください.

そうすると,何も記載されていないファイルが開かれるので,以下のコードを記載してください.9行目の「hw:1,0」はマイクの「カード番号,デバイス番号」,15行目の「hw:0,0」はスピーカーの「カード番号,デバイス番号」です.おいらの場合でカード番号とデバイス番号を書いていますが,デフォルトだとこれで良いと思います.また,今回,マイクは使用しませんが,後々使うと思うので,記載していてください.

こちらの上のコードを記載したら,[Ctrl]+[X]キーを同時に押しすると,保存確認に移るので,Yesの[Y]を押し,[Enter]で終了します.

こちらを記載すると,完璧にできると思います.

打ち間違えに気をつけよう

p.155のコピーする長いコードは気をつけてくださいね!打ち間違える可能性が大です!
おいらはずっとこのエラーコード400に躓いてました.
変なところを行ったりきたりです.

400. That’s an error. Error: invalid_scope Some requested scopes were invalid. {valid=[https://www.googleapis.com/auth/gcm], invalid=[https://www.googleapis.com/auth/assistant-sdk-protptype]}

厳密には,おいらのタイプミスで「prototype」を「protptype」にしていただけなんですけどね!笑

仮想環境から出るとき

ちなみに,ターミナルの仮想環境から抜けるときは「deactivate」とタイプすると抜けれます.
p.152で,仮想環境に入ったは良いものの,抜けるときにどうしたら良いのだろうと思っている方へ!

ちなみに,仮想環境に入るときは,

こちらですね!

録音時のエラー

p.97の録音時,「$arecord voice.wav」でエラーが出る場合は,こちらを試してみて下さい.

これで恐らく,集音できると思います.
しかし,アナログスピーカーから出力される音は,おいらの環境ではノイズだらけでした.
そのため,録音した音が上手く聞こえない,ということが多々ありました.
スピーカーによく耳を傾けてようやく聞こえる,という感じでしたので,皆さんも,「聞こえない」ではなく,「聞こえるかも!」というスタンスを取って下さい!

オーディオ接続で認識しない問題

ちなみに,完全なる余談ですが,外部スピーカー(オーディオ)をラズパイに取り付けて,そのオーディオを認識しないトラブルありませんか.
(今回のスマートスピーカーには関係ないのですが,,,)
あのときは,恐らくこれで解決です.

config.txtの一番最後に以下を書き込んで,再起動(reboot)してください.

nanoは,[Ctrl]+[X]キーを同時に押しすると,保存確認に移るので,Yesの[Y]を押し,[Enter]で終了します.
最後に再起動して下さいね!

ターミナルで『sudo reboot』です.!

オススメはリモートデスクトップ

リモートデスクトップはまじでオススメです.
特に初心者は,絶対にやった方が良いです.
コピーアンドペーストも捗りますし,エラーを潰す際に,検索画面を横に出しながら作業ができるので良いです.
基本は全てリモートデスクトップのPCでやってしまいますが,たまーにラズベリーパイに接続されたキーボード・マウス・モニターが役に立ちます.

リモートデスクトップのやり方がイマイチ分からない方はこちらです.

こちらの記事もオススメです

ペンのすけ

AIに関連した記事だと,こちらの記事もすごくおすすめだよ!!!