Google AIY Voice Kitで日本語で受け答えするGoogleアシスタントを作る!その1

Google AIY Voice Kitで日本語で受け答えするGoogleアシスタントを作る!その1

先月1月にアップデートしたGoogleアシスタントが日本語対応となりました! そこで、英語でしか出来ないことに使い勝手悪くお蔵入りしていたGoogle AIY Voice Kitを再インストールして構築し直した時にハマったことを記事にしていきます!

日本語対応は、正確に言うと、google-assistant-sdk 0.4.2 がリリースされ、hotwordが日本語対応となったため、「OK、Google」の後、日本語で質問しても応えてくれるようになりました。

ただ、そのままでは日本語にはなりません。アップデートしてGoogle Cloud Consoleにデバイスを再登録し直し、なんとか動作するようになりました。

もちろん、「ピカチュウ」と声をかければ、ピカチュウが応えてくれます。ピカチュウから元に戻すには「バイバイ」と声かけて元に戻りました。(合ってる??)

ハマるポイントその1

実は自分の理解度の無さとかあまり関係なく、確実にハマるポイントがありましたので、それを2つご紹介します。(※2018年2月上旬のお話で、将来、スムースに導入出来ると思います)

イメージがGoogle AIY Voice Kitに対応していない?!

プロジェクトの公式サイト(Assembly Guide)にあるイメージ(https://dl.google.com/dl/aiyprojects/vision/aiyprojects-2018-01-03.img.xz)が古い(?)Google AIY Voice Kitに対応していなかったんですよ。

Voice kit img

現在、購入する人は問題ないのかも知れませんが、VoisHATを認識しないのです。ドライバが当たらないという感じです。

海外のサイトでかなり多くの人が無理っぽい書き込みだったので、修正するような気も起きず、古いバージョンからやり直しするハメになりました。

海外の掲示板でも同じエラーが
https://github.com/google/aiyprojects-raspbian/issues/255

現象としては、通知領域に出ている音量マークが不可で、用意されていたPythonプログラムが動きません。エラーを見ると、Pythonプログラムというより、そもそもデバイスを認識していませんね。たぶん。

こうなるとお手上げです。文系としては・・・。

結局、海外のサイトのように古い「aiyprojects-2017-09-11.img.xz」を再度microSDカードに書き込み直しました。また一からやり直しです。ただ! Google Cloud Consoleで行ったプロジェクト関連の設定は本体とは無縁なので飛ばせます。面倒だったから良かったw .jsonファイルの再ダウンロードは必要で、デバイスの登録はRaspberry Pi 側からやり直しになります。

ハマるポイントその2

後ほど紹介するデバイスの登録に際してややこしくてケアレスミス多発で何を間違えたのか分からなくなってしまった(これは私だけ??)

googlesamples-assistant-devicetool register の引数が長くて、それに自分で決めたモデル名やらGoogle Cloud Consoleでのプロジェクト名だとか、スペルミスやら指定ミスでどこまでどうなのか分からなくなってしまいました。結局は登録が上手く行っていなかったので、そこがクリアされたらあまり問題ないと思います。一発で行かないとハマるかも知れません。(私だけ?w)

今回の作業と完成形

一度はキットを組み上げて一応完成させた物です。キット付属の(間違いだらけ)インストールマニュアル冊子をよく読んで先ずは組み上げてください。それからバージョンアップして対応させるという手順になります。

新しく?バージョンアップした?キットと新しい2018-01-03版イメージならば、もしかしたら全く問題ないかも知れませんが再現できませんからご勘弁ください。

作業はSDKをバージョンアップし、Google Cloud Consoleへ再登録することです。

また、日本語対応にはスマホのアプリから設定を変更しないとなりません。アプリはインストールしてください。Androidは説明ありませんね。GoogleHOMEのアプリで、iOSのiPhoneはGoogle Assistantアプリから変更します。Googleに問い合わせしたところ、現在はこの方法でしか言語を日本語へ切り替えられないとのこと。便利なのか不便なのか・・・w

 

完成形としては、モニターなどインターフェイス無しで単独動作させたい。

・・・では、一旦は英語で受け答えするGoogle AIY Voice Kitを構築した後からのお話です。
キット付属のマニュアルか、公式ページ(https://aiyprojects.withgoogle.com/voice/#project-overview)でセットアップしてください。公式ページは英語ですが写真もありますからそれ程難しくはありません。難しいというか取っつきにくいのはGoogle Cloud Platform (GCP)の操作でしょう。またこの当サイトでも詳しくご紹介していきたいと思います。

Google Assistant SDKのアップデート

Pythonの仮想環境を作ります。

sudo apt-get update
sudo apt-get install python3-dev python3-venv 
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools
source env/bin/activate

 

実はインストールした後、パッケージが足りないと怒られたので、遡ってみたら、このインストールでPython3となっていますけど、

# Use python3.4-venv if the package cannot be found.というコメントがあった。

python3.4-venvにする必要がありました。

sudo apt-get install python3.4-dev python3.4-venv

※足りないエラーが出た場合は参考にしてください。

SDKパッケージのアップグレードインストール

SDKパッケージをインストールします。

(env)$ python -m pip install --upgrade google-assistant-library

samplesというSDKもアップグレードインストールします。

(env)$ python -m pip install --upgrade google-assistant-sdk[samples]

このsamplesのスペル間違えやすいです。sが付きます。また、時間がかかりますね。測りませんでしたが3分くらい?? 他のことして待ちましょう。

これが終わったら、認証ツールもアップグレードインストールです。

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

続けて、jsonファイルの指定です。

(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /path/to/client_secret_client-id.json

ここにある /path/to/client_secret_client-id.jsonGoogle Cloud Consoleから再度ダウンロードしてください。以前の物はそのままに残した方が分かりやすいので、再度ダウンロードし名前を変更しないでそのままのjsonファイルの名前とディレクトリパスに置き換えてください。

例えば・・・、/home/pi/client_secret_11111111~ .jsonのようなことです。ホーム直下に置いた場合です。私はdownloadからホームへ移動して実施しました。

 

ターミナル画面に、「enter the authorization code」と出てくれば成功です!

ターミナルのこのメッセージ前に下線のリンクが貼られているURLのようなものから飛ぶ必要があります。クリックしても行くのか試しませんでしたが、下線を右クリックコピーでブラウザに貼り付けて実行しました。

すると恐らくGoogleのログインを促されるのでログイン情報入れてログインすると、許可するかどうかダイアログが出るので許可すると、また数字から始まる長いコードが表示されますから、コピーしてください。

これをターミナルのenter the authorization code後にコピペしてエンターで認証が終了します。お疲れ様です。

モデルとデバイスの登録

(env)$ googlesamples-assistant-devicetool register-model --model 'my-model-identifier' --manufacturer 'Assistant SDK developer'  --product-name 'Assistant SDK light'  --description 'Assistant SDK light device'

どうもこれが上手く行かなくて上書き登録できませんでした・・・。 –trait action.devices.traits.OnOffはエラー出たので必要ありませんでした。(よく分からない)ですから省いています。後でデバイスが登録出来なくて日本語に言語変更が出来ませんでした。ここはハマったので、もしも通らない場合は、以下も追加で実行してください。

尚、–model ‘my-model-identifier’ は、ユニーク(固有)な名前が必要なので自由に決めてください。まぁ、分かりやすいようにプロジェクト名にプラスした名前の方がいいかも知れません。

(env)$ googlesamples-assistant-devicetool register-device --device 'my-device-identifier'  --model 'my-model-identifier'  --nickname 'My Assistant Light'
 
下記のコマンドでclient-type LIBRARYを入れないとダメかも知れません。ちょっとオプションの指定が異なりますが、これでスマホ側のデバイス一覧に出てきたように思います。試してみてください。

Update the device instance

(env)$ googlesamples-assistant-devicetool register-device --client-type LIBRARY --model my-model --device my-device-id

 

参考:

https://pypi.python.org/pypi/google-assistant-sdk/0.4.2

 

hotword(会話するため)として開始

Pythonの仮想環境に入ります。

ターミナルで、

$ source env/bin/activate

ターミナルが(env)付きになります。

(env)$ googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model

my-dev-projectは、Google Cloud Consoleで自由に決めたプロジェクト名です。
my-modelはデバイスを登録する際にRaspberry Pi のターミナルでコマンドを打つ際に自由に決めたモデル名です。

ターミナルに

Device registered

と表示されていれば完了です。
出ていない場合はモデルかデバイスの登録に失敗しています。

どちらも自分で決めた名前なのですけど、もう忘れてしまいました・・・。その場合も確認のためにも以下コマンドにて表示できます。
入力ミスも有り得るので、リストを表示してコピペした方が間違いないでしょう。

googlesamples-assistant-devicetool list --model
googlesamples-assistant-devicetool list --device

 

次回からhotwordとして日本語でやり取りする際にこの2つのコマンドから開始できます。

その2として別記事で自動起動で実行させたいと思います。

スマホアプリで言語を日本語に変更する

なぜか?スマホ側のアプリでしか言語変更ができません。Google Cloud Consoleでは出来ないのです。
よく分かりませんね・・・。
ここでAndroidはGoogleHomeアプリからで、iPhoneはGoogleアシスタントアプリから変更できます。

図のように変更すれば、これで日本語で会話(hotword)が可能となりました。

google-assistant-app

ここのデバイスに出てこない場合は、デバイスの登録に失敗しています。もう一度確認して再度ターミナルで実行してください。たぶん、何か間違っています。登録出来ていれば、その瞬間にスマホアプリ側でデバイス欄に表示されます。デバイス名は先程My Assistant lightと入力していればそのように表示されます。

※個人だとGoogle Cloud Consoleは無料ですけど、1日500回までやり取りできるようですね。

お疲れ様でした。
出来ましたか? 何か抜けているかも知れません。お気づきの方はラズパイダのフォーラムでお知らせください。

 

自動起動させました。その2もご覧ください。

Google AIY Voice Kitで日本語で受け答えするGoogleアシスタントを作る!その2 自動起動で実行させる

参考サイト:以下、参考にしました。

google-assistant-library empty #32

https://kureuetan.com/web/raspberrypi/4818/

https://developers.google.com/assistant/sdk/guides/library/python/extend/register-device-traits

http://mag.switch-science.com/2017/12/20/aiy-projects-kit/

Raspberry Pi で作ってみよう!

CTA-IMAGE いったいRaspberry Piって何が出来るの?
当サイト「ラズパイダ」では実際に作ってみた仕組みを公開しています。小さな基板で小さくても便利で楽しいシステムを記事を参考にしてトライしてみてください。
中年の文系オヤジでも出来る物ばかりです!

作ってみたカテゴリの最新記事