Google AIY Voice KitをGoogle Assistant SDKを使って日本語応答にする方法

グーグルホーム完成!

こんばんは、ゆきです!

Google AIY Voice KitでGoogle Homeの自作が出来る事は「Google Homeが自作できる!?Google AIY Voice Kitの必要なものと作り方」の記事でも紹介した通りなのですが、このままだと英語音声にしか対応できません。

英語であれこれ指示するのも面倒なので、日本語化にしたいと思い色々調べたところ、Google Assistant SDKを一から入れれば、コマンドで日本語対応出来る事が判りました。

今回はその方法をご紹介します。

(2018/05/15)googlesamples-assistant-devicetoolに、-project-idオプションが必須になった旨追記

日本語化の手順

日本語化は次の手順で実施します。

  1. SDKのインストール
  2. デバイスを登録する
  3. サンプルコードを再生する

この辺りの内容は、以下のサイトを参照しています。

Introduction to the Google Assistant Service(Google)
Change language? #79(Github)

1. SDKのインストール

Google AIY Voice Kitの組み立てが完了し、SDカードにOSが導入され、起動しているものとして進めます。その辺りの手順は「Google AIY Voice KitのOS・ソフトウェアインストールと設定方法」で纏めていますので、併せてどうぞ。

ここでは上記リンクの設定(Google Assistant APIの準備と認証)が一通り実施されているものとして進めます。Google Cloud APIの設定等が終わっていないようでしたら、上記のリンクから設定を実施してください。

(1)コマンドラインを開き、以下のコマンドを1行ずつ入力します。

$ sudo apt-get update
$ sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
$ python3 -m venv env
$ env/bin/python -m pip install --upgrade pip setuptools
$ source env/bin/activate

 

(2)Google Assistant SDKを入手します。以下のコマンドを1行ずつ入力します。

(env)$ sudo apt-get install portaudio19-dev libffi-dev libssl-dev
(env)$ python -m pip install --upgrade google-assistant-sdk[samples]

 

(3)次にデバイスの認証情報を取得します。以下のコマンドを入力します。

(env)$ python -m pip install --upgrade google-auth-oauthlib[tool]

 

(4)Google APIsでOAuthクライアントIDを取得します。
OAuthクライアントIDの取得方法については、「Google AIY Voice KitのOS・ソフトウェアインストールと設定方法/Google Assistant APIの準備と認証」の(1)~(13)の手順を参照してください。
なお、上記の記事ではJSONのファイル名を変更していますが、ここではリネームはダメとのこと。

(5)ダウンロードフォルダから、以下のコマンドで移動します。~部分は利用者ごとの任意の文字列です。client_secret_まで入力してタブキーを押すと自動補完されます。もしくはフォルダから移動させてください。

cd Downloads
mv client_secret_~.apps.googleusercontent.com.json /home/pi/client_secret_~.apps.googleusercontent.com.json

次のようになっていればOKです。

証明書は/home/pi直下へ

 

(6)その後は下記コマンドで認証を実行します。

(env)$ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /home/pi/client_secret_~.json

コマンドラインに次のような表示が出るため、URL部分をコピーし、ブラウザに張り付けます。

Please visit this URL to authorize this application: https://...

ブラウザではGoogle APIsのオーナーになっているgoogleアカウントにログインしてください。

(7)ログインすると、認証コード(4/XXXXのような形式)が表示されます。これをコピーしてコマンドラインの「Enter the authorization code:」のあとにペーストします。

うまくいけば、「credentials saved:」という表記がでます。「InvalidGrantError」と表示された場合はもう1度最初からコピペを試してみてください。

2.デバイスを登録する

(1)次にデバイスを登録するため、以下のように打ちます。表のタグに該当する箇所は適宜ご自身の環境に合わせて修正してください。

(env)$ googlesamples-assistant-devicetool register-model --manufacturer my-manufacturer --product-name my-product-name --type device-type --model my-model
my-manufacturer 任意。製造者の名前
例 “yuki"(ダブルクオテーションも含む)
my-product-name 任意。商品名
例 “Original google home" (ダブルクオテーションも含む)
device-type SWITCH(スイッチ), OUTLET(コンセント),LIGHT(ライト)
何でもOKです。僕はスイッチにしておきました。
my-model モデル名。後程使うのでメモしておきましょう。
例 yuki-no-yabo-001-my-model

例をもとに構築すると、次のようになります。

(env)$ googlesamples-assistant-devicetool register-model --manufacturer "yuki" --product-name "Original google home" --type SWITCH --model yuki-no-yabo-001-my-model

(2018/05/15追記)
ソフトウェアのアップデートにより、googlesamples-assistant-devicetoolの引数に–project-idコマンドが必須になった可能性があります。上記のやり方でエラーが出た場合、下記のやり方を試してみてください。

(env)$ googlesamples-assistant-devicetool --project-id my-project-id register-model  --manufacturer my-manufacturer --product-name my-product-name --type device-type --model my-model

my-project-idには、ご自身で設定したプロジェクトidを記入します。
idが分からない場合は、Google APIsのプロジェクト選択画面を見るか、.jsonファイルの、project_id:以降が該当となります。

3. Google Assistantを起動する

デバイスの登録が出来れば、いよいよGoogle Assistantを起動してみよう!my-dev-projectはプロジェクトIDを、my-modelは先ほどデバイス登録時につけたモデル名を入力します。

ポイントはコマンドの末尾にlang ja_jpを付けること。これで日本語化できます。

(2018/02/10追記)Google Cloud APIsに登録されているアカウントでGoogle Homeアプリにログインしている場合、Google Homeアプリ側から日本語の設定ができます。これを利用すれば、末尾にlang ja_jpは不要です。

(env)$ googlesamples-assistant-pushtotalk --project-id my-dev-project --device-model-id my-model
--lang ja_jp

上手く起動するとPress enter send a new requestと出ます。エンターキーを押して、音声コマンドを発話しましょう。

音声コマンド受付状態

上手く認識してくれれば、Voice KitからGoogle homeと変わらない声で応答してくれます。すぐに音声入力がないとプログラムが停止するため、Enterを押したらすぐ話しかけましょう。

注意点としては、Embeddedバージョンのためか、ニュース読み上げや音楽再生等は出来ないこと。アラームも動作を登録できないからか、このコマンドだけでは対応不可です。翻訳や、天気予報、マップ検索、なぞなぞ等の機能は実装されています。

LEDを付けるサンプルについては、Google Assistant SDKの公式で紹介されていますので、あわせてどうぞ。

トラブルシューティング

僕自身がちょっとハマったポイントをメモしておきます。

再起動したらGoogle Assistantが使えない!

仮想環境を起動し忘れていないでしょうか?コマンドラインに(env)と表示されていないようでしたら、以下コマンドで仮想環境を起動し、再度3項で紹介したコマンドを入力しましょう。

source env/bin/activate

my-deviceの名前を忘れた!

以下のコマンドで確認することができます。

(env)$ googlesamples-assistant-devicetool list --model

Failed bulding wheel for grpico

SDKのインストール時に「Failed bulding wheel for grpico」というエラーメッセージが出る場合は、SDKのインストール前に以下コマンドを試してみてください。

(env)$ pip install wheel

まとめ:ウェイクワードで起動するにはあと一歩必要

これでGoogle AIY Voice Kitを日本語で応答することができるようになりましたが、ウェイクワードを待つ状態を作るにはもう少し手間がかかりそうです。

またその辺りも出来るようになったらご紹介したいと思います。

以上!