Edited at

Raspberry Pi に Actions on Google で会話アプリをつくる 【Google Assistant SDK/API.ai】

More than 1 year has passed since last update.

先日Google Assistant SDKを利用してRaspberry Piを利用して音声認識エンジンを利用することが出来たのですが、もう少し細かく自分の意図した音声コマンドを認識させてみたいと思いました。

Google Assistantでは「Actions on Google」というツールを使い音声コマンドを利用した会話アプリの制作が行えるようです。早速試してみました。

Raspberry Pi Actions on Google

Raspberry Pi Actions on Google - YouTube


環境(RaspberryPi)

DSC_0107.JPG


  • Raspberry Pi3 (RASPBIAN JESSIE WITH PIXEL 4.4 / Python 3.4.2)

  • LOGICOOL ウェブカム HD画質 120万画素 C270

  • Amazonベーシック USB A100 マルチメディアスピーカー

  • 7インチ(1024*600) IPS液晶パネル ディスプレイ

  • 秋葉原で買った500円位のプッシュボタン


環境(Ubuntu16.04)


  • node.js 6.9.1


Actions on Google

Actions on Google     Actions on Google     Google Developers.png

Actions on Google

リニューアルして使いやすくなっていました。トップページには「30分でアプリが作れるよ!」みたいに書いてあります。今回はこちらのチュートリアルに沿って試してみたいと思います。

サンプルプログラムで会話形式のアクションがあるので、こちらを試してみました。

actions on google apiai facts about google nodejs  Facts about Google API.AI sample for Actions on Google.png

actions-on-google/apiai-facts-about-google-nodejs - GitHub

このレポジトリをクローンしてきます。

アクティビティ管理.png

アクティビティ管理

続いてGoogleアカウントの「ウェブとアプリのアクティビティ」「端末情報」「音声アクティビティ」を有効にします。

Actions on Google.png

Actions on Google Developer Console.

「Actions on Google」の開発者コンソールでアプリの設定をします。GoogleCloudPlatformのプロジェクトIDが必要になりますので、事前にID登録は済ませ、課金を有効にします。(発生する料金は各自ご確認下さい)

今回はAPI.aiを利用します。

Actions on Google2.png

「CREATE ACTION ON API.ai」よりGCPのプロジェクトIDと紐付いたエージェントが自動的に作成されます。


API.ai

API.AI0.png

API.ai

昨年Googleに買収されたBot作成のライブラリです。GUIを利用して会話を組み立てることが出来ます。

作成したエージェントの会話パターンはzipファイルに読み込み・書き出しが行えます。今回は上述のサンプルより会話パターンのzipファイルを読み込んでみます。

API.AI.png

ちょっと分かりづらいのですが、エージェント設定画面の「Export and Inport」タブからzipファイルに読み込み・書き出しが行えます。今回はサンプルプログラムの「FactsAboutGoogle.zip」を読み込みます。

読み込みが終わると会話パターンが自動的に反映されます。

API.AI2.png

API.aiの最大のポイントは入力した様々なキーワードの選択をして、webhookのエンドポイントに手軽にリクエストを送れることです。

Botのキーワード取得のためだけにAPIサーバーを立てる必要がありません。

Google Assistantの音声認識して得られたテキストをAPI.aiに送付し、キーワードに対するアクションをwebhookのエンドポイントに送付することが出来るという仕組みです。

Webhookのエンドポイントに送られたjsonデータを元に、Google Cloud Functionsを起動させ、Google Assistantに返事をさせます。


デプロイ

Deploy Fulfillment     Actions on Google     Google Developers.png

Deploy Fulfillment - Actions on Google

チュートリアルでは、ローカル環境にを利用する方法と、GoogleCloudPlatformを利用する方法の2種類紹介されています。

今回はGCPにデプロイしてみます。必要なツールや有効化するライブラリがいくつかありますので簡単にまとめてみます。


Google Cloud SDK

Google Cloud SDK ドキュメント     Cloud SDK     Google Cloud Platform.png

上記アドレスよりOSに合わせてSDKをダウンロードします。ここではUbuntu16.04用のものをインストールしました。sudo apt-get installで入れられます。(Mac環境だとインストールにPython2系が必要になり、少し面倒です)

パスがきちんと通ればsudo gcloud initでGCPのアカウントや使用するプロジェクト、リージョンなどの設定が可能になります。

Actions on Googleを利用するにあたり以下のGCPアプリケーションが必要になります。

音声認識する毎にnode.jsを実行させるためにGoogle Cloud Functionsというサーバレスアーキテクチャが必要になります。

また、そのデータを保管するためにのCloud Storageバケットが必要になります。


Google Cloud Functions

API Manager   test.png

GCPの管理画面から使用するプロジェクトでGoogle Cloud FunctionsAPIを有効にします。


Cloud Storageバケット

参照   test.png

同じくGCPの管理画面から使用するプロジェクトでバゲットの作成をします。


Google Cloud SDKからデプロイ

チュートリアルにあるようにgcloudコマンドを使いデプロイします。

$ sudo gcloud init

デプロイしたいnode.jsのファンクションネームを調べます(ここではfactsAboutGoogle)。もうひとつ、先ほど作成したバゲットの名前を使います。

$ cd apiai-facts-about-google-nodejs

$ sudo gcloud beta functions deploy factsAboutGoogle --trigger-http --stage-bucket <storage_bucket_name>

デプロイ出来ました。デプロイしたアドレスをAPI.aiのWebhookに指定します。

API.AI5.png


Raspberry PiでGoogle Assistantを使う

こちらの記事

Raspberry Pi にGoogle Assistant SDKを搭載して「OK Google」してみる。 - Qiita

をご参照下さい。ただ、SDKが0.0.2にバージョンアップしており、記事中のインストールでは実行できません。

Download the Library and Run the Sample - Google Assistant SDK

こちらにあるアドレスからインストールして下さい。

$ python3 -m pip install --upgrade https://github.com/googlesamples/assistant-sdk-python/releases/download/0.3.0/google_assistant_library-0.0.2-py2.py3-none-linux_armv7l.whl

さて、もう少しです。

Actions on Google4.png

冒頭で設定したActions on Googleのアプリ設定画面の必要事項を記入して(呼びかけのホットワード設定やアプリアイコンなど)完成させます。

さて、30分で完成出来たでしょうか?


まとめ

嬉しいことに先日のGoogleの開発者会議でGoogle Assistantの日本語対応が発表されました。

対話型音声入力Googleアシスタントが日本語対応へ。スマートスピーカーGoogle Homeも今夏国内発売 - Engadget 日本版

管理画面にもこっそりJapaneseの文字が...。

Actions on Google3.png

楽しみですね。