Google Home の中の人 Google Assistant が SDK としてリリースされて、Alexa のように自分の製品の中に組み込むことができるようになりました。ということは、Alexa の同様Google Homeを持ってなくても「おっけーぐーぐる!」ができるかも。
ということで、Google Assistant SDK のサンプルを Raspberry Pi にインストールしてみました。
Google Developer アカウント
Google Assistant API を使うためには Google Developer アカウントが必要です。サインアップはGoogle Developer Consoleから。
Google Assistant API の有効化
プロジェクトページへ行き、新規にプロジェクト作成。
API Manager で Google Assistant API を有効に。一覧に見当たらない場合は、検索でAssistant と入れると出てきます。
Google Assistant API には Quota があるようなので、他の API 同様、有償なんですね。一日500リクエストまでは無償の割当があります。
Credentials の作成
Credentials から新規に OAuth2.0 Client ID を作成し、JSON ファイルでダウンロードして、Raspberry Pi へコピー。
“Create credentials” から “OAuth client ID” を選び、”Configure consent screen” へ。
“Product name shown to users” に適当に入れ、残りはブランクで、”Save”。
“Application type” は “Other” を選び、client ID に名前をつけてCredentials 新規追加完了。
Google アカウントの設定
Google Assistant を利用するには、特定のアクティビティデータを Google と共有する必要があります。Google アカウントの アクティビティ管理 ページ へ行き、
- ウェブとアプリのアクティビティ
- ロケーション履歴
- 端末情報
- 音声アクティビティ
の4つをオンにしておきます。
Raspberry Pi の準備
Raspberry Pi のマイクとスピーカーをチェックし、Pythonの環境を設定。最後にGoogle Assistant SDK サンプルをインストール。
オーディオ入出力のチェック
Raspberry Pi でオーディオの出力と入力が設定されているかチェックしておきます。
# 音声の再生ができるかチェック
speaker-test -t wav
# マイクが音を拾っているかチェック
# 5秒間録音
arecord --format=S16_LE --duration=5 --rate=16k --file-type=raw out.raw
# いま録音したものを再生
aplay --format=S16_LE --rate=16k out.raw
# 再生と録音の音量調整
alsamixer
Python & Virtualenv のインストール
Virtualenv を作って環境が汚れないように分離
# Python3 をインストール
sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install pip setuptools --upgrade source env/bin/activate
# Google Assistant に必要なライブラリ
sudo apt-get install portaudio19-dev libffi-dev libssl-dev
Google Assistant SDK サンプルアプリのインストール
python -m pip install google-assistant-sdk[samples]
このコマンドはそこそこ時間かかりました。インストールが終わったら、Google Assistant SDK サンプルの実行に必要な認証を行います。
python -m googlesamples.assistant.auth_helpers --client-secrets /home/pi/client_secret_XXXX.json
コマンドの引数の最後のファイルは Credentials で作ったClient ID、Client Secret でダウンロードした JSON ファイルを指定。
コマンドラインに表示されるURLをブラウザで開きます。
Google Assistant SDK がアクセスする Google アカウントでログインし認証します。認証が完了するとブラウザに表示される Token をターミナルの Enter the authorization code へコピペして認証作業完了。これは最初に移行する際に一度だけ行います。
サンプルの起動
python -m googlesamples.assistant
でサンプルを起動します。
使い方
Google Assistant SDK のサンプルでは Wake-Up Word にはできていないようです。コマンドラインでEnterキーを押してから音声入力が開始されるようになっています。
おまけ
Google Assistant SDK のサンプルアプリでは Google Home のように Wake-Up Word がないので、ちょっと寂しいなーと思っていたら、Snowboy を使った Wake-Up Word をトリガーにする拡張を作ってくれる御仁がいらっしゃいました。
Github: Google Voice for Raspberry Pi。KITT.AI の Snowboy が必要です。