イントロダクション
2017年10月にGoogleから日本語に対応したスマートスピーカー「Google Home」「Google Home Mini」が発売され、2017年3月に雑誌「The MagPi」第57号の付録として配布されて大きな話題になったAIY Projects voice kitが単体で入手できるようになるなど、Google Assistantを利用できるハードウェアデバイスはどんどん増えつつあります。
ここでは、Raspberry PiとReSpeaker 2-Mics Pi HATを組み合わせてGoogle Assistant SDKを活用する方法を紹介します。ReSpeaker 2-Mics Pi HATはSeeed Studioが開発したRaspberry Pi用拡張ボードで、$9.90という低価格にも関わらず、2つのマイクと1つのスピーカー出力、1つのヘッドフォン出力、2つのGroveコネクタ、1つのボタン、3つのRGB LEDを搭載しています。ReSpeaker 2-Mics Pi HATにより、柔軟に拡張でき、かつコンパクトなスマートスピーカーを実現できます。
準備
必要なもの
- Raspberry Pi 3 Model B:1個
- マイクロUSBカード:1枚
- マイクロUSBケーブル:1本
- USB電源アダプタ:1個
- ReSpeaker 2-Mics Pi HAT:1個(Mouserの713-107100001)
- スピーカ(8Ω、1W):1個(例)1
- JST PHコネクタ付きケーブル:1本(例)
セットアップ
- 公式ウェブサイトよりRaspbianのイメージファイルをダウンロードする(例:RASPBIAN STRETCH WITH DESKTOP September 2017)
- Etcherをダウンロードして解凍する
- Etcherを起動して画面右上の歯車アイコンをクリックし「Auto-unmount on success」のチェックを外す
- 画面右上の
Back
をクリックして本の画面に戻り、ダウンロードしたイメージファイルとSDカードリーダーを指定してFlash!
をクリックしてイメージを書き込む - 書き込みと検証が終わるまで10分間程度待つ
- ウェブブラウザでhttps://mascii.github.io/wpa-supplicant-conf-tool/にアクセスし、アクセスするWi−Fiアクセスポイントの情報を入力して
追加
ボタンを押し、wpa_supplicant.conf作成
とssh.txt作成
をクリックする - ダウンロードされた2つのファイルを書き込みが終わったマイクロSDカードの最上位階層(/boot/)にコピーし、マウントを解除してマイクロSDカードを取り出す
- 取り出したマイクロSDカードをRaspberry Piボードに挿入してマイクロUSB端子に電源を接続し、起動する
- ターミナルで
arp -an | grep b8:27:eb
と入力してRaspberry Piが取得しているIPアドレスを見つける(例:192.168.1.123)2 - ターミナルで
ssh pi@192.168.1.123
と入力し、ユーザーpi
に対して初期設定されているパスワードraspberry
を入力してログインする -
SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
(SSHが有効で、'pi'ユーザーのデフォルトパスワードは変更されていません。これはセキュリティ上のリスクです。新しいパスワードを設定するには、'pi'ユーザーとしてログインし、'passwd'と入力してください。)という警告が表示されるので、警告に従ってpasswd
コマンドを入力し、パスワードを初期値から別のものに変更する -
sudo apt-get update
に続けてsudo apt-get upgrade
を実行して最新版へ更新する -
sudo raspi-config
でRaspberry Pi Software Configuration Tool
を起動し、4 Localisation Options
>I2 Change Timezone
>Asia
>Tokyo
を選択し、exit
キーを押してツールを終了する
ReSpeaker 2-Mics Pi HATのセットアップ
まず、ReSpeaker 2-Mics Pi HATに搭載されているコーデックチップ「WM8960」を使用できるようにするため、カーネルを再ビルドし、再起動します。
$ git clone https://github.com/respeaker/seeed-voicecard.git
$ cd seeed-voicecard
$ sudo ./install.sh 2mic
$ sudo reboot
再起動後にaplay -l
とarecord -l
で再生と録音、それぞれにseeed2micvoicec
が追加されていることを確認します。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
確認できたら、seeed2micvoicec
をデフォルトの入出力デバイスとして使用するよう、/home/pi/
でnano .asoundrc
を実行し、以下の内容を入力します。
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:1,0"
}
}
/home/pi/.asoundrc
の設定を済ませたら、Google Assistant SDKサイトでの説明Configure and Test the Audioのステップ1で説明されているテストを順に実行します。
$ speaker-test -t wav
speaker-test 1.1.3
Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 128 to 131072
Period size range from 64 to 65536
Using max buffer size 131072
Periods = 4
was set period_size = 32768
was set buffer_size = 131072
0 - Front Left
Time per period = 0.032640
$ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
Recording raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
$ aplay --format=S16_LE --rate=16000 out.raw
Playing raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
これでReSpeaker 2-Mics Pi HATのサウンド入出力に関する一通りの動作確認ができましたので、alsamixer
コマンドでAlsaMixerを起動し、F6
キーを押してサウンドカードを選択し、ボリュームを適切に変更します。
以上でReSpeaker 2-Mics Pi HATのセットアップと動作確認は全て完了しましたので、Google Assistant Libraryのセットアップと動作確認へと進みます。
Google Assistant Libraryのセットアップと動作確認
- Configure a Developer Project and Account Settingsの説明に従ってプロジェクトを作成し、そのプロジェクトに対してGoogle Assistant APIを有効化し、OAuth Client IDを作成してダウンロードする
- 作成した
client_secret_<client-id>.json
ファイルをRaspberryPiの/home/pi/
にアップロードする(例:~/Downloadsにダウンロードしたファイルを192.168.1.123のRaspberry Piにアップするのであればscp ~/Downloads/client_secret_<client-id>.json pi@192.168.1.123:/home/pi/
) - Activity controlsページで自分のGoogleアカウントのアクティビティコントロールを確認し、Web & App Activity(ウェブとアプリのアクティビティ)、Device Information(端末情報)、Voice & Audio Activity(音声アクティビティ)の3つが有効(青色)になっていることを確認する
- Download the Library and Run the Sampleで説明されている手順に従ってPythonの仮想環境を準備し、Google Assistant Libraryをインストールする
-
google-assistant-demo
を実行して動作確認を行う
参照
- INSTALLING OPERATING SYSTEM IMAGES
- SSH (SECURE SHELL)
- SETTING WIFI UP VIA THE COMMAND LINE
- Raspberry Piの無線LANをmicroSDで設定する
- Raspberry Piの無線LANをmicroSDで簡単に設定するためのツールを作った
- ReSpeaker 2-Mics Pi HAT