GoogleHomeアプリをTypeScriptで書いてみた話

皆さん、『GoogleHome』はご存知でしょうか。

GoogleHomeとは
「スマートスピーカー」のひとつで、本体内蔵されたマイクに「OK Google. ~」と話しかけると応答や動作をしてくれる端末です。

私も先日 GoogleHomeを購入して、朝に家を出る前は天気を聞いたり、帰宅したらニュースを聞いたり、寝る前に音楽を聴いたりと意外と重宝しています。
さて今回は、このGoogleHomeのアプリケーションをサクッと作りたいと思い、模索したことについてまとめようと思います。

今回作ってみるもの

GoogleHomeに話を聞かせて、文章の内容から今どのような感情なのかを当てるアプリケーションを作る。

開発環境

●Actions on Google (https://developers.google.com/actions/)
●Dialogflow (https://dialogflow.com/)
●Cloud Functions for Firebase (https://firebase.google.com/docs/functions/)
●Cloud Natural Language API (https://cloud.google.com/natural-language/)
FirebaseをベースにNode.jsで作っていきます。
また、Cloud Functions for Firebaseの対象Nodeバージョンが若干低いので、TypeScript→JavaScriptのコンパイルを挟みます。

処理の流れ

1. dialogflowでGooleHomeから受け取った文章を言語解析させる。

<イメージ>
(ユーザーの発話)「今日は、○○○」、「今の気分は、○○○」 → (dialogflow){text: ○○○}

2. dialogflowからWebhookして、Cloud Functions for FirebaseのAPIを呼ぶ。

言語解析に成功したら、dialogflowが1の○○○をリクエストパラメータに付けて、3を呼ぶ。

3. Cloud Functions for Firebase で Cloud Natural Language API を使い文章を分析する。

パラメータに入っている文章を Cloud Natural Language API に渡して感情を分析。
分析した情報をもとにGoogleHomeが発話する相槌を生成してActions on Googleに渡す。
作成したソースコードは下に記載しておきます。

4. GoogleHomeが喋る

 

テスト

実際に、ちゃんと動くか確かめてみます。
まずは、Actions on Googleのシミュレーターを使って文章で会話してみます。

今の気分はあまりよろしくは無いです。 → 「あなたは今、ネガティブな気分ですね。」
今日は美味しいディナーに行きました。  → 「あなたは今、ポジティブな気分ですね。」
と良い感じに気分を言い当ててくれました。

最後に家にあるGoogleHomeで試してみます。
Actions on Googleでテストしたユーザーと同じユーザーでGoogleHomeにログインしている場合は、「テスト用アプリに繋いで」と発話するだけで作った機能が使えます。

最後に

思っていたよりも簡単にアプリケーションを作ることができました。
アプリを使ってみても、Googleアシスタントの音声認識の性能が良いので誤字が少ないのにも驚きです。
作ったアプリケーションは審査に通せば全ユーザーに公開することも可能なので、これからも新しいコンテンツがどんどん増えていくと思います。
今後のスマートスピーカーに期待です。

作成したソースコード

 

 ./index.ts

 

 ./GoogleCloudNaturalLanguageAPI.ts

 

./interface.ts

 


ホームページ http://www.ois-yokohama.co.jp

facebook   https://www.facebook.com/orientalinformationservice/