Raspberry Pi とReSpeaker 2-Mic Pi HATでVUI入門
家のリビングにGoogle Homeを置いており、家事で手が使えない場面でVUI(Voice User Interface)がとても役に立っています。
今回はヨシケンさんの記事を参考にさせていただきながら、Raspberry Pi を使って、VUIアプリ作成の入門をしてみました。
目次
- 環境
- Raspberry Piの設定1
- GCPでプロジェクト作成と認証情報登録
- Raspberry Piの設定2
- Lチカ
- サンプルコードのGPIOを変更
- スピーカーとマイクのテスト
- 最後に
- 参照URL
環境
- Raspberry Pi Zero WH
- ReSpeaker 2-Mic Pi HAT
Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス
- メディア: エレクトロニクス
Raspberry Piの設定1
OSインストール
今回はAIY KITのOSイメージを使います。
GitHubから最新のイメージをダウンロードします。
2019/10時点では、「aiyprojects-2018-11-16.img.xz」が最新でした。
「Etcher」で、OSイメージをSDカードに焼きます。
Etcherをインストールして起動したら、先程ダウンロードした「aiyprojects-2018-11-16.img」を選択し、Micro SDカードに焼きます。
IPアドレス設定
次回以降、ディスプレイなしでSSH接続をするために、固定のIPアドレスを設定しておきます。
「etc/network/interfaces」に下記の設定を追記します。
Xの部分に、環境に合わせたIPアドレスを入れます。
auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX broadcast XXX.XXX.XXX.XXX gateway XXX.XXX.XXX.XXX dns-nameservers XXX.XXX.XXX.XXX wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
GCPでプロジェクト作成と認証情報登録
続いてGCPの設定を進めます。
任意の名称でプロジェクトを作成します。
左メニューから、「APIとサービス-->ライブラリ」と進みます。
今回はGoogle Assistant APIを使いたいので、検索窓から検索して選択します。
「有効にする」をクリックします。
概要ページにリダイレクトされます。
画面右上の「認証情報を作成」をクリックします。
下記の内容を入力して、「必要な認証情報」をクリックします。
「同意画面を作成」をクリックします。
「アプリケーション名」を入力し、「サポートメール」に任意のメールアドレスを選択して「保存」します。
今回はRaspberry Piからアクセスするので、ドメインなどは設定していません。
「認証情報」メニューで、OAuth2.0クライアントIDを入力して「OAuthクライアントIDを作成」をクリックします。
「ダウンロード」をクリックして、認証に使うjsonファイルを取得します。
Raspberry Piの設定2
Raspberry PiとGCPの認証
ダウンロードしたjsonファイルを、「assistant.json」という名前で、Raspberry Piのpiユーザディレクトリ直下に配置します。
下記コマンドを実行して、少し待つと、認証用のURLが表示されます。
$ cd ~/AIY-projects-python/src/examples $ voice/assistant_grpc_demo.py
認証用のURLにブラウザからアクセスし、「Accept」をクリックします。
ブラウザ側で認証用のコードが発行されるので、Raspberry PiのTermnalにペーストします。
Raspberry PiとReSpeaker 2-Mic Pi HATの接続設定
Raspberry PiのGPIOとReSpeaker 2-Mic Pi HATを接続します。
「Step 1. Get the seeed voice card source code, install and reboot.」に従い、必要なソフトをインストールします。
$ git clone https://github.com/respeaker/seeed-voicecard.git $ cd seeed-voicecard $ sudo ./install.sh $ reboot
Lチカ
ReSpeaker 2-Mic Pi HATのLEDをチカチカさせるLチカというやつをやってみます。
Lチカは、電子工作の世界でのHello Worldだそうです。
$ sudo pip install spidev $ git clone https://github.com/respeaker/mic_hat.git $ python mic_hat/pixels.py
光った!
サンプルコードのGPIOを変更
ReSpeaker 2-Mic Pi HATには物理ボタン(赤枠部分)がついているのですが、AIY KITに付属しているVoice BonnetとはGPIOの番号が異なるようです。
下記ファイルの「BUTTON_PIN = 23」の数字を23から17に変更して保存します。 「AIY-projects-python」は、AIY KITのOSイメージに最初から含まれています。
~/AIY-projects-python/src/aiy/board.py ~/AIY-projects-python/src/aiy/pins.py
「voice/assistant_grpc_demo.py」を実行することで、ボタンを認識することを確認できました。
$ ~/AIY-projects-python/src/examples $ voice/assistant_grpc_demo.py DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None INFO:aiy.assistant.grpc:device_model_id: XXXXX INFO:aiy.assistant.grpc:device_id: XXXXX DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None INFO:aiy.assistant.grpc:Connecting to embeddedassistant.googleapis.com INFO:root:Press button to start conversation... <--ここで物理ボタンを押す INFO:root:Conversation started! <--ボタンを押したことにより、会話が始まる
スピーカーとマイクのテスト
マイクとスピーカーが認識されていることを確認します。
$ arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 0: seeed2micvoicec [seeed-2mic-voicecard], デバイス 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [] サブデバイス: 1/1 サブデバイス #0: subdevice #0 $ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: seeed2micvoicec [seeed-2mic-voicecard], デバイス 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [] サブデバイス: 1/1 サブデバイス #0: subdevice #0
イヤホンジャックにイヤホンを差し、マイクとイヤホン出力のテストをします。
$ arecord -f cd -Dhw:0 | aplay -Dhw:0
ここでReSpeaker 2-Mic Pi HATに話しかけると、自分の声がイヤホンから聞こえるはずなのですが、なぜだか聞こえません。
AIY KITのRaspberry PiにSDカードを挿して試すと正常に自分の声が聴こえるので、ReSpeaker 2-Mic Pi HAT側に問題があるのかもしれません。
試行錯誤したのですが、解決できなかったので、今回は一旦ここまで。
VUIの正式入門は次回におあずけです。
最後に
ヨシケンさんの記事を参考にさせていただきながら、試行錯誤してみました。
色々試したのですが、最後までマイクがうまく動かなかったのが謎です。
試行錯誤していたら、作業メモが大変なことになったので、整理してブログとして残しておきます。