フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。

Google Home ことはじめ

ポエム

半年前くらいに第一子が産まれたのでプライベートのタスクが爆増していたのだが、ようやく落ち着いてきたので趣味プロ兼実用のために Google Home で使えるアプリを作りたくいろいろ調べていた。というのも、子育てのタスクは絶妙に片手の半分が空く程度にしか手が使えず長く薄く注意を払う必要がある。こういうときにレシピの検索などをしたいが、入出力のデバイスとしてスマートフォンでは集中力が必要すぎるし、そうなると俄然スマートスピーカーによる音声入出力は魅力的に見えてきた。そこで冒頭のように Google Home を制御するにはどうしたらいいのかを調べてみた。 後述するがあまりちゃんとは調べていない。というのも Google Assistant を拡張する方法で Google Home をいじる方法を調べたが最初から実装するにはやや量が多く、手っ取り早く触ってみるに向いていないためぼくのような初心者が手を出すものではないと判断した。

やりたいこと

ぼくのやりたいことはシンプルで「冷蔵庫の中身を保持しておき残りものからよしなな料理とレシピを紹介してくれること」「入出力デバイスGoogle Home にする」である。後者をよくわかっていないのでとりあえず何を使えばいいのか知りたい。

結論

Actions on Google だと現段階ではできること&実装することが多すぎるので次は Dialogflow + Cloud Functions の構成を調査する。 Dialogflow + Cloud Functions の構築については下記のようなブログに詳しい。現時点で Dialogflow がどの部分を対応しているのかは把握していない。

qiita.com

調査内容

Actions on Google Smart Home

基本的には下記の公式ページにあたるのが良い。

developers.google.com

やること

Actions on Google を使って Google Home などのデバイスからの操作を受け付けるには Fulfillmentと呼ばれるやりとり を通じて下記のように応答を行う必要がある。

図 1. クラウドでの実行パス( https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication より)

この Developer Cloud なのだが Fulfillment だけならともかく、もろもろの実装要件がありなかなかこれがヘビーである。

  1. OAuth 2.0 の authorization code grant flow の実装
  2. OAuth 2.0 の authorization header による API の認可
  3. 認可したユーザーの CRUD 操作
  4. Smart device の Intent 処理(Fulfillment の実装)

だいたい 1. のあたりからちょっと面倒すぎる。その代わりすべての細かい処理を書ける(=書かなければならない)ので高度なことをやるのであれば対応すればよい。ただ、この辺でぼくの手には負えなさそう& Dialogflow + Cloud Fnctions でお手軽に実装できるという記事を観測していたので一旦調査を打ち切った。

終わりに

音声合成を C, C++ 言語でやっていたりするとよくあるのだが、波形ファイルを読み込もうとするとバイナリの形式の説明が出てくるマッチョイムズとは反対で、 web 系は how は非常にそろっている一方、すぐに検索できる記事では why が欠けてしまって疑問に思ったので調べた記事を残した。中身を詳しく見たわけではないので単品の記事としては微妙な感じだけれども折角調べましたし。