Penta creation

ホームへ
2017年06月23日

Raspberry Pi 3BでGoogle Assistant SDK

AIY Projectsの「Voice Kit」を試したかったのですが、残念がら現時点では手に入らないため、いろいろ調べたところ、Google Assistantを使っているようなのでGoogle Assistant SDKを試してみました。GoogleはRaspberry Piを使っているメイカーのプロジェクトをサポートするため、AI等の開発ツールの充実を進めているので、Google Assistant SDKもオフィシャルにRaspberry Piに対応しています。



ハードウェアの準備

インターネットにつながるRaspberry Pi3(セットアップ済み)が必要です。また、Google Assistantは、対話型音声AIなので、USBマイクとスピーカーも必要になります。

※スペック的にRaspberry Pi3が必要になります。
※Google Assistant SDKのオフィシャルサイトに書いてありますが、時刻が合っていないとSSLエラーになるので、作業を始める前に時刻を合わせておく必要があります。

● マイクとスピーカーの設定

マイクとスピーカーの設定をします。まずはスピーカーの接続テストです。下記コマンドを実行して何も聞こえなかったら、スピーカーの接続を再確認します。マイクは、Raspberry Pi 3Bで音声認識で設定したので、割愛します。

$ speaker-test -t wav

マイクとスピーカーのカード番号とデバイス番号を調べます。

#マイクのカード番号とデバイス番号を調べます。
$ arecord -l

#スピーカーのカード番号とデバイス番号を調べます。
$ aplay -l

「/home/pi」に.asoundrcという設定ファイルを作成します。<card number>、<device number>には上記で調べた番号を入れます。

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>"
  }
}

Google Developer Projectの設定

Google Developer Projectを設定して、Raspberry Pi3からGoogle Assistant APIにアクセスできるようにします。

● 新規プロジェクトの作成

作業は、Google Cloud Platformで行います。Google Cloud Platformにアクセスして、「プロジェクトを作成」から新しいプロジェクトを作成します。新しいプロジェクトを作成する画面で、プロジェクト名を半角英数で入力して、「作成」をクリックします。※Googleのアカウントが必要になります。


● Google Assistant APIを有効にする

Google Assistant APIのページで、作成したプロジェクトを選択してAPIを有効にします。

● OAuthクライアントIDを作成する

同じくGoogle Assistant APIのページで、OAuthクライアントIDを作成します。左側のメニューから「認証情報」を選び、「認証情報を作成」をクリックすると、プルダウンメニューが表示されるので、「OAuthクライアントID」をクリックします。

クライアントIDの作成画面が表示されるので、「その他」を選択して、クライアントIDの名前を入力して「作成」をクリックします。

次にタブメニューをクリックして、OAuth同意画面を表示させ、必要項目を入力して「保存」をクリックします。※OAuth同意画面 はAPIへのリクエストが発生した際表示される画面です。

認証情報のトップ画面で、クライアントシークレットJSONファイルをダウンロードします。

● アクティビティコントロールの設定

Google Assistant SDKを使用するために、アクティビティ管理画面から、「ウェブとアプリのアクティビティ」、「ロケーション履歴」、「端末情報」「音声アクティビティ」の4つを有効にする必要があります。


Google Assistant Libraryのサンプルコードを動かす

● 仮想環境にPython3をセットアップ

Google Assistant Libraryを使用するためにはPython3の開発環境が必要ですが、Python2とPython3には互換性がないので、システムのPythonをPython3にしてしまうと、Python2で動くプログラムが動かなくなります。そこで、仮想環境にPython3をセットアップします。

# Raspberry Piを最新の状態にします。
$ sudo apt-get update

# Python3の開発ツールと仮想環境をインストール
$ sudo apt-get install python3-dev python3-venv

# 「/home/pi/env」に仮想環境を作成
$ python3 -m venv env

# pipをセットアップ
$ env/bin/python -m pip install --upgrade pip setuptools

# 仮想環境を起動
$ source env/bin/activate

● ライブラリとサンプルコードを取得

仮想環境を起動した状態で、ライブラリとサンプルコードをインストールします。

# 「/home/pi/env/lib/python3.4/site-packages」の中にライブラリとサンプルコードをインストール
(env) $ python -m pip install --upgrade google-assistant-library

● 認証作業

認証ツールをインストールします。

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

クライアントシークレットJSONファイルを「/home/pi/client_secret_xxxxx.json(xxxxxにはクライアントIDが入ります。)」にダウンロードします。ダウンロードしたら、JSONファイルを使って承認作業をおこないます。

# 認証ツールを実行
(env) $google-oauthlib-tool --client-secrets /home/pi/client_secret_xxxxxx.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

# 認証作業を行うため、ブラウザで下記URLにアクセスするように求められます。
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxxxx-xxxxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fassistant-sdk-prototype&state=xxxxx&prompt=consent&access_type=offline

Enter the authorization code:

ブラウザで上記URLにアクセスすると、GoogleアカウントへのログインとAPIサービスへのアクセスへの許可を求めらるので、「許可」をクリックします。

許可すると、コードが発行されるので、認証ツールで要求されているauthorization codeにコピーアンドペーストします。

Enter the authorization code:

● サンプルコードの起動

これでサンプルコードを起動できるようになりました。

(env) $google-assistant-demo

Amazon EchoやLINE WAVEが今年発売される予定で、スマートスピーカーやクラウドAIが本格的に動き出しそうで楽しみです!

前の記事へ

Raspberry Pi 3Bで音声認識

次の記事へ

Google Assistant SDKサンプルコードをカスタマイズ

ページトップへ