Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。
12月20日 Google Assistant SDKのブログで日本語に対応したと情報があったことから試してみることに。
基本的には以下の通り。
Set Up Hardware and Network Access | Google Assistant SDK | Google Developers
自分は以下から落としてきたRASPBIANを使っています。
www.raspberrypi.org
imgファイルをSDに書き込むには
https://sourceforge.net/projects/win32diskimager/sourceforge.net
を使ってます。
こんなかんじで、Writeを選択してもらえれば、警告文がでますので、YESを選択します。
イメージをSDに書き込んでいる間にGoogle側の設定を行います。
cloud.google.com
右上のログインを選択します。
ログインをしたら、その隣のコンソールを選択します。
上の検索窓にassistantと入力すれば、Google Assistant APIでてきます。
順番に進みます。
プロジェクト未作成のまま有効と押すと、プロジェクトを作るよう促されます。
適当にプロジェクト名をつけて作成します。
次に認証情報を作成します。
OAuthという仕組みでGoogleのサービスにログインするので、同意画面を作成しておきます。
認証情報を作成します。OAuthクライアントIDを選択します。
その他を選択して、適当に名前をつけます。
下矢印を選択してjsonファイルをダウンロードしておいてください。
ここまでくるとたぶんSDへの書き込みを終わっているので、ラズパイにさしてラズパイ側を起動します。
日本語入力する場合は、
sudo apt-get install ibus-anthy
または、
sudo apt-get install ibus-mozc
vncを使う方は、
(最近のPi3はRealVNCが最初から入っていたような)
sudo apt-get install tightvncserver
Google Assistant のために Python3をいれます。
SDカードへのイメージ書き込み時にもとのイメージがfullだったらいりません。
sudo apt-get install python3-dev
python -m pip install --upgrade pip setuptools
マイク情報を取得するには、
arecord -l
スピーカー情報を取得するには
aplay -l
設定ファイルを作ります。
[.asoundrc]でディレクトリは/home/pi/に保存します。
pcm.!default { type asym capture.pcm "mic" playback.pcm "speaker" } pcm.mic { type plug slave { pcm "hw:<card number>,<device number>" } } pcm.speaker { type plug slave { pcm "hw:<card number>,<device number>" } }
あんまりいないかもしれませんが、
ラズパイに直接HDMIをつないでいる場合は、
別で用意したスピーカーから出力できるよう設定する必要があります。
sudo raspi-config
Advanced options から Audio を選択して3.5mm ジャックの方を選べればOKだと思います。
ご自身の環境に合わせて設定してください。
Googleのガイドに従ってPython3 が動く仮想環境を構築します。
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
パッケージをインストールします。
python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples]
資格証明書を作成します。
まず作成するためのライブラリを落としてきます。
python -m pip install --upgrade google-auth-oauthlib[tool]
下記のように/path/to/に自分の環境にあったように入力し、ダウンロードしたjsonファイルのファイル名を合わせます。
ちょうど下記のような[client_id]のところに自分が落としてきた部分を書き換えます。
google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /path/to/client_secret_client-id.json
画像を忘れましたが、
Please visit this URL to authorize this application:
以降にかかれたURIにアクセスするようにします。
Googleに自分のアカウントでログインして、
4/で始まるコードが表示されるのでそれをコピーして
ターミナルが
Enter the authorization code:
と出ているので、この後ろに貼り付けします。
すると、
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
と表示され、資格証明書が作成できました。
あとは、[my-model]の部分を自分の好きな名前に変えて
(GoogleはプロジェクトIDを頭に加えることを推奨しているよう?)
googlesamples-assistant-devicetool register-model --manufacturer "Assistant SDK developer" --product-name "Assistant SDK light" --type LIGHT --model my-model
[my-dev-project]を自分のプロジェクト名に書き換えて、
[my-model]を上で決めたモデル名に書き換えるだけで
googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model
できるはずなのですが、
{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } }
と出てしまいました。
パーミッションに問題があるようなので、
一応、アクティビティコントロールを見て確認しましたが、
https://myaccount.google.com/activitycontrols
ウェブとアプリのアクティビティ
端末情報
音声アクティビティ
すべてアクティブにしているのですが、
このエラー・・・。
誰か教えてください・・・。
解決しました!
sgunji.hatenablog.jp