技適通ってなくても Google Home を使ってみる Raspberry Pi 編

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 の有効化

プロジェクトページへ行き、新規にプロジェクト作成。

google-api-manager

API Manager で Google Assistant API を有効に。一覧に見当たらない場合は、検索でAssistant と入れると出てきます。

enable-assistant-api

Google Assistant API には Quota があるようなので、他の API 同様、有償なんですね。一日500リクエストまでは無償の割当があります。

Credentials の作成

Credentials から新規に OAuth2.0 Client ID を作成し、JSON ファイルでダウンロードして、Raspberry Pi へコピー。

create-credentials

“Create credentials” から “OAuth client ID” を選び、”Configure consent screen” へ。

credentials-oauth-consent-screen-mask

“Product name shown to users” に適当に入れ、残りはブランクで、”Save”。

credentials

“Application type” は “Other” を選び、client ID に名前をつけてCredentials 新規追加完了。

Google アカウントの設定

Google Assistant を利用するには、特定のアクティビティデータを Google と共有する必要があります。Google アカウントの アクティビティ管理 ページ へ行き、

  • ウェブとアプリのアクティビティ
  • ロケーション履歴
  • 端末情報
  • 音声アクティビティ

の4つをオンにしておきます。

activity-controls-ja-pointer

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 ファイルを指定。

authentication

コマンドラインに表示されるURLをブラウザで開きます。

token-mask

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 が必要です。

参考文献

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s