sgunji’s blog

ものづくりやプログラミングなど…最近はXamarinを少々

Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。

12月20日 Google Assistant SDKのブログで日本語に対応したと情報があったことから試してみることに。

developers.googleblog.com

基本的には以下の通り。
Set Up Hardware and Network Access  |  Google Assistant SDK  |  Google Developers


自分は以下から落としてきたRASPBIANを使っています。
www.raspberrypi.org

imgファイルをSDに書き込むには
https://sourceforge.net/projects/win32diskimager/sourceforge.net
を使ってます。

f:id:sgunji:20171228154832p:plain
こんなかんじで、Writeを選択してもらえれば、警告文がでますので、YESを選択します。

イメージをSDに書き込んでいる間にGoogle側の設定を行います。
cloud.google.com

右上のログインを選択します。
f:id:sgunji:20171228155537p:plain
ログインをしたら、その隣のコンソールを選択します。

上の検索窓にassistantと入力すれば、Google Assistant APIでてきます。
f:id:sgunji:20171228155928p:plain

順番に進みます。
f:id:sgunji:20171228161635p:plain

プロジェクト未作成のまま有効と押すと、プロジェクトを作るよう促されます。
f:id:sgunji:20171228161703p:plain

適当にプロジェクト名をつけて作成します。
f:id:sgunji:20171228161649p:plain

次に認証情報を作成します。
f:id:sgunji:20171228161718p:plain

OAuthという仕組みでGoogleのサービスにログインするので、同意画面を作成しておきます。
f:id:sgunji:20171228161734p:plain

認証情報を作成します。OAuthクライアントIDを選択します。
f:id:sgunji:20171228161750p:plain

その他を選択して、適当に名前をつけます。
f:id:sgunji:20171228161809p:plain

下矢印を選択してjsonファイルをダウンロードしておいてください。
f:id:sgunji:20171228162122p:plain

ここまでくるとたぶん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