今日も微速転進

ここではないどこかへ

Google AIY Voice Kit (Google Homeもどき)のセットアップ


スポンサーリンク

月曜日に到着したGoogle AIY Voice Kitを日曜日にセットアップしているってのはどうなんでしょう。

f:id:atuyosi:20171225033004j:plain:w320

Google AIY Voice Kit 販売開始のご案内 - Raspberry Pi Shop by KSY

国内正規品の初回ロット。最近の出荷分には日本語ガイドがついているそうです*1

何はともあれ、セットアップ。

Google AIY Voice Kitとは

ざっくり言うとGoogleがリリースしたスマートスピーカー(ホームスピーカー)の組み立てキットです。
発表されたのは少し前ですが、日本国内でも正式に販売が開始されたということで購入。

Google のAI Yourself プロジェクトの第一弾としてリリースされたもの。現在は第二弾のVision Kitというのもリリースされています。

このVoice KitはRaspberry Pi model 3Bと組み合わせることで、音声認識を活用した「何か」を作れますよ、というキット。

Voice Kit 自体は税抜き3,000円ですが、別途、Raspberry Pi model 3Bと電源アダプタ、microSDなどを用意する必要があります(Vision Kit の方はRaspberry Pi Zero WとPi Cameraが必要)。

Google Home もどきの自作キットという認識でよろしいかと。


Raspberry Pi mdel 3Bを組み込むので、ラズパイ関連のノウハウなり周辺機器の一部を利用できて色々と遊べる、はず……。

開封の儀

公式のページの写真と何も変わりはないですが、一応。

f:id:atuyosi:20171225033211j:plain:w480
英語のガイド本つき。

f:id:atuyosi:20171225033215j:plain:w480
外装のダンボールがお目見え。

f:id:atuyosi:20171225033222j:plain:w480

部品一式。

用意するもの

  • Raspberry Pi moedel 3B
  • 両面テープ
  • 精密ドライバー
  • microSD & SDカードアダプタ
  • HDMI接続のディスプレイ(VNCを使わない場合)
  • キーボードおよびマウス(VNCを使わない場合)

ドライバーは"#00"のサイズのものが必要と書いてあります。ダイソーの精密ドライバーセットで全く問題ないです。

ディスプレイとキーボード、マウスは無くてもSSH+VNCで作業するので無くても問題ない、です。

準備

事前にOSのイメージファイルをダウンロード。

2017年12月23日時点でaiyprojects-2017-09-11.img.xzというファイル名でした。

Etcherで書き込み。圧縮ファイルに対応しているので、xz形式のファイルを直接指定してOK。

一度microSDを取り外し、ssh接続用に小細工しておきます。

$ touch /Volumes/boot/ssh

Finderからbootというボリュームをマウント解除して取り出し。

2017年12月現在、旧式のRaspbian Jessie、つまりDebian 8ベースのRaspbianにサンプルコード一式を追加した代物のようです。

セットアップ作業

注意点

ラズパイ側に放熱用のヒートシンクを取り付けている場合、高さによっては接触するので取り外す必要あり。

基盤の取り付けと配線

それほど難しい英語ではないので、写真を見ながらゆっくり作業して行けば問題ないです。ドライバーはちゃんと寸法のあったものを使う、ぐらいでしょうか。

ちょっと拍子抜けするレベル。スペーサーの取り付けがちょっと力がいるので手こずるかも。

一通り取り付けて、配線を確認したら外装に組み込み。

f:id:atuyosi:20171225033707j:plain:w480

f:id:atuyosi:20171225034245j:plain:w480

片方の側面にだけ穴があるのはやはり内部からケーブルを取り出せということ?


分解はできなくはないですが、ラジオペンチでスペーサーの頭をつまむ必要があります。

電源投入

microSDをセットして電源ケーブルを接続。 無線は面倒なのでネットは有線に逃げました。

説明書にLEDの状態をチェックしろと書いてありますが、、本体上部の赤いボタンのLEDはプログラムを動かさない限り光らないようです。説明書の記述が間違っているとか。

ソフトウェア側の設定

前述のとおり、公式ページで提供されているOSはRaspbianそのものなので基本的にRaspbian Jessieのセットアップと同じ。まずはsshでログインしてVNCを有効化。

VNC

$ sudo raspi-config

VNCを有効化する。

過去記事を同じなので省略。

Raspbian Stretch Lite とVNC - ながいものには、まかれたくない

$ sudo vi /boot/config.txt

以下の2行の行頭のコメント記号を外す。

framebuffer_width=1280
framebuffer_height=720

スピーカーとマイクの動作チェック

とりあえずVNCで接続する。

警告が出るのでパスワードは変更しておく。

ログインするとデスクトップに"Check audio"というアイコンがあるのでおもむろにダブルクリックすると、端末エミュレータのウィンドウが開いていきなりスピーカーから音声が聞こえる。

テキストメッセージの指示に従ってEnterを押してから"Testing 1,2,3"と読み上げるとスピーカーから自分が読み上げた音声が再生される。

なぜか音量でかいので注意。

f:id:atuyosi:20171225031857p:plain:w480

Assistant APIの動作確認

APIの有効化

https://console.cloud.google.comにアクセスする。ラズパイ上でアクセスしてもいいし、普段使いのマシンで作業してJSONを転送してもいい。

  1. プロジェクトを作成
  2. Assistant APIを有効化
  3. OAutuの認証キーを作成してJSONファイルをダウンロード

別のマシンからVoice Kit内部のラズパイに送る場合は、以下のようにする。

$ scp Downloads/client_secret_*.json pi@raspberrypi.local://home/pi/

ラズパイ側で、ファイル名をassistant.jsonにリネームする。

$ mv client_secret_*.json assistant.json

`https://myaccount.google.com/activitycontrols'にアクセス。

  • ウェブとアプリのアクティビティ
  • 端末情報
  • 音声アクティビティ

の3つを有効化する。

[2017/12/27 追記]

「ウェブとアプリのアクティビティ」という項目に関しては、以下のチェックボックスをオンにしないと定形応答しか帰ってきません。チェックしなくても音声認識は動作するようです。

Chrome の閲覧履歴と Google サービスを使用するウェブサイトやアプリでのアクティビティを含める

f:id:atuyosi:20171227184742j:plain

何を話しかけても同じ応答メッセージが帰ってくる場合はアクティビティの設定を確認。

権限不足の場合は何かが足りないのでGoogleのページを参照しろ、という応答が返ってきます。

"Actually? There are silence? XXX your development? Going to Google web site your phone? for more detail."(イマイチ聞き取れず)。

参考:Configure a Developer Project and Account Settings  |  Google Assistant SDK  |  Google Developers

[追記ここまで]

デモプログラムの実行

デスクトップ上にある、"Start dev terminal"をダブルクリック。端末エミュレータのウィンドウが起動するので、``と入力してEnterキーを押す。

デモプログラもの動作が始まると、赤いボタンの内蔵LEDが点滅する。

"OK, Google"と話しかけると反応がある。ただし、発音を英語っぽく”オーケイ、ゴオゥゴォ”みたいに呼びかけないと反応しない……。

なんか早口で会話が成立していない。

付属のデモプログラムについて

全部で4つデモプログラムが付属。Assistant API のAPIキーで動くのは以下の3つ。

  • AIY-voice-kit-python/src/assistant_library_demo.py : "OK, google"という呼びかけに反応するサンプル
  • AIY-voice-kit-python/src/assistant_library_with_button_demo.py : "OK, google"という呼びかけか、ボタンを押すと反応するサンプル
  • AIY-voice-kit-python/src/assistant_grpc_demo.py : ボタンを押すと認識した音声がコンソールに表示されるサンプル

デモプログラムの返答は固定っぽい。"OK, google"ではなく"Hey, Google"でも反応する。

最後の1つはCloud Speech APIを有効化する必要があるサンプル。月1時間までは無料ですが、それ以上は課金されるので注意。

  • AIY-voice-kit-python/src/cloudspeech_demo.py : ボタンを押すと音声がテキストに変換される(要カスタマイズ?)

Assistant APIと同じ要領で、Google Cloud Speech APIのAPIを有効化し、サービスアカウントのAPIキーを作成する必要あり。認証情報のJSONファイル(プロジェクト名で始まるファイル)を入手してcloud_speech.jsonにリネームしてホームディレクトリに配置すると動く。

公式ドキュメント参照:Create a service account and credentials  

普通のRapsbianとの違い

再配布に制限のあるパッケージを除去して拡張基板(VoiceHat)用のドライバ類がインストールされただけ?

dmesgコマンドの出力を見ると、voicehat-codeというのが認識されています。

$ dmesg | grep voicehat
[    2.687675] voicehat-codec voicehat-codec: property 'voicehat_sdmode_delay' not found default 5 mS
[    3.880121] snd-googlevoicehat-soundcard soc:sound: voicehat-hifi <-> 3f203000.i2s mapping ok
[   18.092070] voicehat-codec voicehat-codec: Enabling audio amp...
[   19.201221] voicehat-codec voicehat-codec: Disabling audio amp...
[   34.730969] voicehat-codec voicehat-codec: Enabling audio amp...
[   34.737530] voicehat-codec voicehat-codec: Enabling audio amp...
[   37.056762] voicehat-codec voicehat-codec: Disabling audio amp...

カーネルまわりは普通っぽいし。

 uname -a
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux

いまいちよくわかりませんでした。

所感など

どこからどこまでラズパイ側で処理しているのかちょっと不明です。"OK, Google"だけラズパイ側でTensorflowでやってるとか?

構造上、Pi Camera は使えないです。それとヒートシンクが干渉するというのはちょっと盲点でした。いわゆるHATシリーズは今まで試したことがなかったので気づきませんでしたよ。

ダンボール筐体にボタンというのも趣があります。

問題は自宅に赤外線リモコン対応機器がロクにないとか、遠隔操作可能な家電がないってことですかね。

はんだ付けしてやればスピーカーをモノラルからステレオに拡張できるみたいですし、付属の冊子を読む限りサーボモータをつないだり色々できるようです。

入手方法について

KSYから買うのが確実ですが、、入門セットがamazonでも購入できる状態になっているようです。

はてなのAmazon商品紹介、検索にヒットしてもうまくリンクされないのはちょっと困るんですが。

まとめ

なんだかんだで遊べそうです。基本的にスピーカーとマイクとプラスアルファなのに。

次の目標は日本語の呼びかけに反応させることと、USBのカメラの制御ぐらいはやらせたい。

*1:別にいらないけど

広告