kapieciiのブログ

日々学んだことを残しておくためのブログです。このブログはGoogle Analyticsを利用しています。

Raspberry Pi とReSpeaker 2-Mic Pi HATでVUI入門

家のリビングにGoogle Homeを置いており、家事で手が使えない場面でVUI(Voice User Interface)がとても役に立っています。
今回はヨシケンさんの記事を参考にさせていただきながら、Raspberry Pi を使って、VUIアプリ作成の入門をしてみました。

deviceplus.jp

目次

環境

Raspberry Piの設定1

OSインストール

今回はAIY KITのOSイメージを使います。

GitHubから最新のイメージをダウンロードします。
2019/10時点では、「aiyprojects-2018-11-16.img.xz」が最新でした。

github.com

f:id:kapiecii:20191012112932p:plain

「Etcher」で、OSイメージをSDカードに焼きます。
Etcherをインストールして起動したら、先程ダウンロードした「aiyprojects-2018-11-16.img」を選択し、Micro SDカードに焼きます。

www.balena.io

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とサービス-->ライブラリ」と進みます。 f:id:kapiecii:20191012113635p:plain

f:id:kapiecii:20191012113716p:plain

今回はGoogle Assistant APIを使いたいので、検索窓から検索して選択します。

f:id:kapiecii:20191012113745p:plain

「有効にする」をクリックします。 f:id:kapiecii:20191012113835p:plain

概要ページにリダイレクトされます。
画面右上の「認証情報を作成」をクリックします。

f:id:kapiecii:20191012113938p:plain

下記の内容を入力して、「必要な認証情報」をクリックします。

f:id:kapiecii:20191012114009p:plain

「同意画面を作成」をクリックします。

f:id:kapiecii:20191012114046p:plain

「アプリケーション名」を入力し、「サポートメール」に任意のメールアドレスを選択して「保存」します。
今回はRaspberry Piからアクセスするので、ドメインなどは設定していません。

f:id:kapiecii:20191012114230p:plain

「認証情報」メニューで、OAuth2.0クライアントIDを入力して「OAuthクライアントIDを作成」をクリックします。

f:id:kapiecii:20191012114259p:plain

「ダウンロード」をクリックして、認証に使うjsonファイルを取得します。

f:id:kapiecii:20191012114325p:plain

Raspberry Piの設定2

Raspberry PiGCPの認証

ダウンロードしたjsonファイルを、「assistant.json」という名前で、Raspberry Piのpiユーザディレクトリ直下に配置します。

下記コマンドを実行して、少し待つと、認証用のURLが表示されます。

$ cd ~/AIY-projects-python/src/examples 
$ voice/assistant_grpc_demo.py

認証用のURLにブラウザからアクセスし、「Accept」をクリックします。
ブラウザ側で認証用のコードが発行されるので、Raspberry PiのTermnalにペーストします。

f:id:kapiecii:20191012114629p:plain

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.」に従い、必要なソフトをインストールします。

wiki.seeedstudio.com

$ 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

光った!

f:id:kapiecii:20191012115051p:plain

サンプルコードのGPIOを変更

ReSpeaker 2-Mic Pi HATには物理ボタン(赤枠部分)がついているのですが、AIY KITに付属しているVoice BonnetとはGPIOの番号が異なるようです。

f:id:kapiecii:20191012115144p:plain

下記ファイルの「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の正式入門は次回におあずけです。

最後に

ヨシケンさんの記事を参考にさせていただきながら、試行錯誤してみました。
色々試したのですが、最後までマイクがうまく動かなかったのが謎です。
試行錯誤していたら、作業メモが大変なことになったので、整理してブログとして残しておきます。

参照URL

aiyprojects.withgoogle.com

wiki.seeedstudio.com

deviceplus.jp

kapieciiのブログについてお問い合わせがある場合、下記のフォームからご連絡をお願い致します。
お問い合わせはこちら