ラズパイ の 簡易スマート・スピーカー Google AIY で Voice Recognizer を 作る

この記事は「おうちハック Advent Calendar 2017」 13日目になります.
せっかくの Advent Calendar なので、何かネタをと思って考えてたのですが、うまく作れなかった… ので、Google AIY の キットを使っての話にしたいと思います.

作業環境

  • Raspberry Pi 3 Model B
  • Google AIY Voice Kit
  • GCP
  • Xming (必要に応じて)

最初は何を作りたかったのか

本題に入る前に、そもそも何を作ろうと思い、作れなかったのかについて少々. 作りたかったものはこれ、 Google AIYVoice Kit を ラズパイ・ゼロ で実現!です.

Voice Kit については、予約購入できたので 作って いました. (なかなか作業時間が取れず、ついに1ヶ月もかかってますが…)

その完成を目指すのもよいかと思ったのですが、同様のことがラズパイ・ゼロできたらコンパクトでよいと思い挑戦してました. なぜか Speaker pHat が 壊れてしまい、どうしても動作してくれないためタイムアウト. Voice Kit の 完成を目指すことにしました. 無念…

Google Home 簡易版ってだけでなく、下記のような面白いこともできそうだったのになぁと. いずれ再挑戦です!

Tomy Mr Money Google AIY Assistant | CIRCUITBEARD
https://circuitbeard.co.uk/2017/11/18/tomy-mr-money-google-aiy-assistant/

I turned a Furby into an Amazon Echo. Introducing: Furlexa - howchoo
https://howchoo.com/g/otewzwmwnzb/amazon-echo-furby-using-raspberry-pi-furlexa

Google AIY Voice Kit とは?

本題の Google AIY Voice Kit ですが、これは Raspberry Pi 3 と 組み合わせることで、簡易的なスマート・スピーカーを作ることができるキットです.
ラズパイなので、さらに自分で機能を追加できるので Google Home ではできない おうちハック が 目指せます! 例えばラズパイ・カメラをつけることもできます. ラズパイ本体の GPIO は Voice Hat で 埋まっていますが、Voice Hat に Servo を つけたりもできるようです.

品物は 例によって Pimoroni さん 始め、国内でも スイッチサイエンス さん や KSY さん で購入できます. (2017年12月現在、国内は品薄ですが)

また Raspberry Pi 3 (と マイクロ SD カード、電源) が 別途必要で、箱の中に入れるので ほぼ占有されます.
その他、工具としては小さいドライバ と 両面テープ が 必要となります.

必要なもの は ページの最後にまとめ たので、よろしければ ご確認ください.

国内の販売店さん は 日本語の説明書をつけてくれるようですが、Pimoroni さん で 購入した場合は 英語の冊子になります.
こちらの 公式 オンライン・ドキュメント と ほぼ同じで、写真がたくさんついているので英語が苦手でも作ることができるかと思います.

私の作成記はこちらになります.

今回は GCP(Google Cloud Platform) に 接続して、Voice Recognizer を 完成させます.

GCP への サインアップ と プロジェクトの作成

GCP の Cloud Console https://console.cloud.google.com/ へ アクセスします.
画面上部 [プロジェクトを選択] を クリックします.

プロジェクトの選択ダイアログが表示されるので、ダイアログ右上 [+] ボタンをクリックします.

新しいプロジェクト作成画面が表示されるのでプロジェクト名を入力し、[作成] を クリックします.
今回は voice-recognizer としました.

最初の画面に戻るので、画面上部 [プロジェクトを選択] を クリックしてプロジェクトの一覧を表示します.
作成したプロジェクトの名前をクリックします.

Google Assistant API の 有効化

左メニュー の [API と サービス] を クリックします.

画面中央上部 の [API と サービスの有効化] を クリックします.

API ライブラリが 表示されるので [API と サービスを検索] に assistant を 入力します.

Google Assistant API が 表示されるので、クリックします.

Google Assistant API の 詳細 が 表示されるので、[有効にする] を クリックします.

OAuth 2.0 の 設定

Google Assistant API の 画面で “認証情報が必要” と 警告されている通り、認証設定が必要となります.
左メニュー から [認証情報] を クリックします.

画面上側の [OAuth 同意画面] を 選択します.
これを設定しないと認証情報の作成時に警告され進めないので、あらかじめ作成しておきます.

最小限 [ユーザーに表示するサービス名] を 入力し、[保存] ボタンをクリックします.

認証情報の画面に戻るので、画面中央 [認証情報の作成] を クリックし、[OAuth クライアント ID] を 選択します.

クライアント ID の 作成画面が表示されるので、以下の情報を設定し、[作成] を クリックします.

  • アプリケーションの種類: その他
  • 名前: 任意の文字列 (今回は voice-recognizer と しました、クライアントだからホスト名のがよかったかな)

OAuth クライアント の 情報が表示されます.
この情報はファイルとしてダウンロードするので [OK] を クリックして進めます.

認証情報の一覧に先ほど作成した ID が あるので、右側の 下矢印 を クリックしてダウンロードします.
このファイルは後程使うのと、サービスにアクセスるための重要情報になるので大切に管理します.

Gooogle My Activity の 設定

アクティビティ管理 https://myaccount.google.com/activitycontrols へ アクセスし、以下の項目を有効化します.

  • ウェブとアプリのアクティビティ (Web and app activity)
  • 端末情報 (Device information)
  • 音声アクティビティ (Voice and audio activity)

Voice Kit の 設定

先ほど作成した認証情報のファイルを Voice Kit の /home/pi/assistant.json へ コピーします.
デモ・スクリプトが用意されているので起動します. デモは以下の3つです.

  • assistant_library_demo.py : 「おーけー ぐーぐる」の 音声に反応して起動し、会話をしてくれます
  • assistant_grpc_demo.py : Voice Kit の ボタンに反応して起動し、会話をしてくれます
  • cloud_speech_demo.py : Google Cloud Speech API を使って、独自のアプリを作るためのデモです

今回は 簡易 Google Home ということで、 assistant_library_demo.py を 起動します.
なお、最初に起動するときにブラウザが立ち上がり Google の OAuth を 行います. そのため Voice Kit に ディスプレイとキーボードをつなぐ必要があります. 今回は無かったので Xming で 代用しました.

また 公式 オンライン・ドキュメント の Using your device だと デスクトップ の [Start dev terminal] を ダブルクリックして、 src/assistant_library_demo.py を 実行するだけで起動するように書かれていますが、SSH 経由のためか ImportError: No module named 'google' エラーとなってしまいました. venv 環境に入れないとダメとのことで、こちらの Issues #133 executables breaking on ImportError after fresh clone on latest Raspbian Strech · Issue #133 · google/aiyprojects-raspbian に 上がっていました. 助かりました.

SSH から 以下のように実行しました.

1
pi@raspberry:~ $ cd ./AIY-voice-kit-python
2
pi@raspberry:~/AIY-voice-kit-python $ source env/bin/activate
3
(env) pi@raspberry:~/AIY-voice-kit-python $ src/assistant_library_demo.py
4
Say "OK, Google" then speak, or press Ctrl+C to quit...

実行するとブラウザが立ち上がり、Google 認証画面が表示されます.

先ほど設定した Google アカウントでサインインします.

OAuth で 認可を求められます. 先ほど設定した [Voice Recognizer] の 名前が表示され、Google アシスタントの利用許可が求められています. [許可] を クリックします.

認証フロー環境のめっせーが出るのでブラウザを閉じます.

あとは、「おーけー ぐーぐる」して話しかけて楽しみましょう!
ただし英語で orz

以上、おうちハック Advent Calendar 2017 13日目でした.


おうちハック Advent Calendar 2017 、いろいろな人のハックがあり、とても勉強になります.

明日 14日目 は @ponkio-oさん、「ラズパイとSuicaで玄関を開ける」とのこと。楽しみです!
2017.12.14 追記 14日目は @ponkio-o さん のところ、間違えて記載しておりました。訂正します。申し訳ありません。

2017.12.15 更新
前日 12日は、公開がないので、前々日 11日は @ksasao さん、Windows 10 でおうちハックする
「おうちハック」といういと、ついラズパイとか考えてしまうのですが、パソコンで慣れ親しんでる Windows 10!しかも 詫びデータ !! そして “あえて Windows - Windows 10 でおうちハックする“ です. 熱い!

後日 14日は、@ponkio-oさん、ラズパイとSuicaで玄関を開ける! スマートロックというんでしょうか、話は聞いたことがありますが、さすが「おうちハック」!自作するの勉強させていただきました!たしかに作れるんですよね!!

みんな、すごいなぁ!!


Google AIY Voice Kit に 必要なもの

Raspberry Pi 3

ラズパイがないと始められないので必要になります. 箱の中に入れてしまうので、ほぼ占有されます.

Raspberry Pi 3 の 電源

Raspberry Pi 3 は 5V/3A の 電源が必要になります. スマホの充電アダプタでは出力が足りない場合もあるので確認が必要です.

マイクロ SD カード

ラズパイ の OS や ストレージに必要です. 16GB あれば十分だと思いますが、用途次第なので お好みのサイズで用意します.

ドライバーセット

スピーカー配線のコネクタをしめるのに使います. 細いドライバーであればなんでも大丈夫です.

両面テープ

マイクを箱の天板に貼り付けるのに使います. 持っていそうで意外となかったりも. (今回は無かった…)

Google AIY

Google AIY Voice Kit そのもの. 一応載せておきますが 出始めなので Amazon.co.jp さん だと、高いですね. KSY さん 待ちでしょうか. Pimoroni さん は 2017年12月現在 在庫があるので £20.83 + 送料 £5.50 = 約4,000円です.
Pimoroni さん での お買い物方法は、こちら「Raspberry Pi Zero の 購入」も ご参照いただければ幸いです.


これで最近はやりのスマートスピーカーが我が家にもやってきました.
欲しいなぁと思っていたところではありましたが、やっぱり自分で作ったものがよかったので Google AIY の Voice Kit が 出てくれてとても嬉しいです.

今回は Google Home ならぬ Google Assist を 作りましたが、Amazon Echo ならぬ Amazon Alexa も ラズパイに入れられるので試してみたいところです.

スマスピ(?) で おうちハック を 加速させよう!