はじめての電子工作超入門

ラズパイでスマートスピーカーを自作しよう!第2回: 部品を自作して、押したらGoogleがしゃべり出すPush to Talkを完成させる

こんにちは、ヨシケンです!
ラズパイでスマートスピーカー、活用していますでしょうか?
もし、「OK Google」と話しかけるのが気恥ずかしい、またはGoogle AIYキットのようにボタンで話し始めたいのであれば、今回は大きなLEDボタンとスピーカーを付けて、押したら話し出すPush to Talkを作りましょう。
ボタンやスピーカーなどは100円ショップなどの部品をフル活用すれば1,000円程の追加で、自作スマートスピーカーができあがります。(外装のセンスに関しては皆さんにお任せします!)

完成イメージ

今回の記事で必要なもの一覧

最低限必須なモノ:
・Raspberry Pi 3 Model B
Raspberry Pi 3 Model B

・小型USBマイク
小型USBマイク

・アンプキット(秋月電子などで手に入ります)
アンプキット

ここから先は100円ショップで手に入れた部品達です。

・耳元スピーカー(スピーカーは入っていますが、耳元で聞こえる程度の音量です)
耳元スピーカー

・プッシュLEDボタン(100円でよく売っていますよね)
プッシュLEDボタン

・小型バッテリー(こちらはダイソーで500円で購入した3,000mAhのものです)
小型バッテリー

 

今回の記事の流れ

1.Google AIY Voice Kitのチェック
2.アンプ付きスピーカーを自作する
3.プッシュLEDを改造する
4.ラズパイにPush to Talk機能を設定する
5.全体を組み込んで、プッシュGoogleデバイスを完成させる
6.まとめ

 

1.Google AIY Voice Kitのチェック

ラズパイにGoogle AIY Voice Kitをインストールしておいて下さい。
https://aiyprojects.withgoogle.com/voice/
まだの方は、前回の記事を見て、Google AIYが動くようにしておいて下さいね。
本記事では、これを前提にAIYをカスタマイズしていきます。

そもそもGoogle AIY Voice Kitはケースやスピーカー、ボタンと共にキットとして売っているので、そのソフトを入れただけだとボタンなどの機能は動きません。
ここでは、自分でスピーカーやボタンなどを作って、それをAIYと連動させて、動かせるようにします。

 

2.アンプ付きスピーカーを自作

前回は市販のイヤフォンやスピーカーなどを使ったと思いますが、今回は100円ショップ等の部品でお安くスピーカーをラズパイで使えるように自作します。

例えば、100円ショップ等でこのような「耳元スピーカー」が売られているのですが、これにはアンプなどが入っていないため、ラズパイの音声ジャックに直接差しても、大きな音が出ません。
このスピーカーにアンプキットを接続すれば、音声を増幅し、離れていても聞こえる音量にすることができます。これにより今後の工作でも、安価で、小型化など自分の形にあったスピーカーを作ることができるようになります。
まずスピーカー本体のケースを開け、ケーブルを途中で切断します。

スピーカー本体のケースを開け、ケーブルを途中で切断

切断したスピーカー・ケーブルの中には、赤(プラス)と黒(又は白、マイナス)の二本のケーブルが出ているので、これを引き出します。

アンプキットの方は、全部で6本の端子があるのですが。この配線に従ってハンダ付けなどしてつなぎます。入力がスピーカーのジャックから、電源がラズパイにあたります。

シングルエンド入力での使用例

シングルエンドという構成をとるので、差動入力(-)の所はGNDとつないで下さい。(上手で青い部分、写真では緑の端子でつないでいます。)
きれいなハンダ付けで無く申し訳ありませんが、つないだ形はこの写真のようになります。真ん中の赤と白のケーブルは、ラズパイの赤が電源と、白がGNDとつながります。左側の黒いコードがジャックで、それをラズパイに差します。

黒いコードがジャックで、それをラズパイに差します

さあ、これでラズパイから音を出して確認してみましょう。音量はラズパイ側のalsamixerを使って調整して下さい。

alsamixer #音量の調整、Escで元の画面に戻ります
aplay -l #スピーカーの確認、card番号を覚えておいて下さい
arecord -l #マイクの確認、card番号を覚えておいて下さい
arecord -f cd -Dhw:1 | aplay -Dhw:1 #Dhw:1の部分はarecord, aplayで確認したカード番号を入れて下さい

これで自分が話した声がオウム返しに聞こえたら、マイクもスピーカーもちゃんと動いているのが確認できます。

 

3.プッシュLEDボタンの改造

次に、押したら光ってGoogleが動きだすボタンを作成します。こちらも、100円ショップ等でよくあるLEDプッシュボタンを改造します。

プッシュLEDボタンの改造

このボタンを分解して、このような配線を行います。ここではボタンとつながった黄色いケーブルをGPIO16につないでいます。

ボタンとケーブルをつなぐ

まずはこのような簡単なプログラムで動くかどうか確認しましょう。

$ sudo pip install rpi.gpio
$ sudo vi button.py

このプッシュLEDボタンでは、ボタンを押し下げるとLEDが点灯し常時通電状態になります。その間、ずっと“ON”が出力されたでしょうか?軽く押すようにすると、一瞬LEDがONになって、また元のOFFに戻る様になります。

4.ラズパイにPush to Talk機能を設定

それでは、自前で付けたボタンをGoogle AIYから使えるようにします。
Push to Talkのプログラムは、こちらにありますので、まずバックアップを取って、以下3点を変更します。

cd /usr/local/lib/python3.5/dist-packages/googlesampels/assistant/grpc/ #この下にpushtotalk.pyというプログラムがあります
sudo cp pushtotalk.py pushtotalk.py.original #コピーしてバックアップを取っておきます
sudo vi pushtotalk.py #以下3点を編集します

#GPIO Pin Setの部分
#GPIO Pin Setの部分

#GPIO setupの部分
#GPIO setupの部分

#GPIO Button Addの部分
#GPIO Button Addの部分

それではボタンを押して、Googleに話しかけてみましょう!
Push to Talkを日本語で動かすには、パラメータとして–langにja-JPを付けます。事前にAIYのシェルを起動しておいて下さいね。

./bin/AIY-projects-shell.sh

googlesamples-assistant-pushtotalk –project-id aiy-prj –device-model-if aiy-prj-device1 –lang ja-JP

ここでEnterキーを押すか、自分のボタンを押すと、Googleが聞く状態に入ります。例えば、「今日の天気は何ですか」など話しかけると、この画面のようにちゃんと読み取ってくれます。
Googleが読み取ってくれる

Googleがちゃんと受け答えしてくれたでしょうか?ボタンを押し下げた状態ですと、続けて話をすることができます。

5.全体を組み込んでプッシュGoogleデバイスの完成

最後に、ボタン、スピーカー、ラズパイ、電源などを全て組み込んで、スマートスピーカーを完成させましょう。
この組み合わせ方はあくまで一例です。外装は皆さんのセンスに任せて形作ってみて下さい。

組み合わせてみる

これで完成!ボタンが大きくて、つい押したくなってしまう形ですね!

つい押してみたくなるボタン

では最後に、このPush to Talk機能が、ラズパイを起動したら自動的に動き出すようにしておきましょう。
それにはまず、Google環境を設定するシェルスクリプトを以下の様に変更して、AIY-pushtotalk-jp.shなどとして保存します。

Google環境を設定するシェルスクリプト1
その後、このシェルを自動起動させるサービスを以下のような内容で、AIY-pushtotalk-jp.serviceなどとして作ります。
Google環境を設定するシェルスクリプト2

そしてサービスを有効化させ、起動させれば自動的に動き出すようになります!

sudo systemctl enable AIY-pushtotalk-jp.service #サービスの有効化
sudo systemctl start AIY-pushtotalk-jp.service #サービスのスタート
sudo systemctl status AIY-pushtotalk-jp.service #サービスのステータス確認

statusでサービスが設定されたのを確認した後、ラズパイを再起動して下さい。

Google環境を設定するシェルスクリプト3

再起動後、少し待ってボタンを押すと、ちゃんとGoogleが受け答えしてくれたでしょうか?
こちらが動いているところの動画です。けっこう健気に動いてくれて、愛着が湧いてくるのではないでしょうか?

 

6.まとめ

今回は、手軽な部品を改造して、スピーカー、LEDボタンを自作してみました。またGoogle AIYに変更を加え、これらの自作パーツからPush to Talkを動かせるようにしました。
外装を自分で作ると愛着が湧き、ポーンとたたくと応えてくれるのは、なかなか楽しいのではないかと思います。色々話しかけて、自作スマートスピーカーとして活用してみて下さい。

次回は、このGoogle Home機能以外にも、リアルタイム音声認識の機能を使って、便利なデバイスを作っていきたいと思います。
Make AI Yourself!(AIを自作して、自分のものに!)

電子工作マニュアル Vol.4
ヨシケン(吉田 顕一)

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net