This post is Private. Only a writer or those who know its URL can access this post.

Improve article
RevisionsShow article in Markdown
Report article
Help us understand the problem. What is going on with this article?

GoogleHomeを自由に喋らせてみよう

More than 1 year has passed since last update.

GoogleHomeを自由に喋らせてみよう

by sikkim
1 / 38

自己紹介

高橋 太郎
職業:サーバーサイドエンジニア
所属:インターマン株式会社

https://github.com/sikkimtemi


発表内容

Google Homeを自由に喋らせたい


そんなの簡単では?

  • こちらの呼びかけに対してアクションを起こすのは簡単
    • IFTTT
    • Dialogflow
  • 自発的に喋らせるのは意外と難しい

まずはデモ


curlコマンドを実行できる人は次のように打ってみてください

$ curl -X POST -d "text=こんにちは、Googleです。" \
http://192.168.11.3:8080/google-home-voicetext

いま何が起こったか


google-home-voicetextの仕組み.png


google-home-voicetextとは

  • node.jsのモジュール
  • google-home-notifierの改良版
  • VoiceText Web APIを利用しているので声の質が良い

VoiceTextとは


いまご紹介した仕組みには欠点があります


  • Google Homeにキャストできるのは同一ネットワークに存在するモジュールのみ
  • 起点となるモジュールが同一ネットワークにいる必要がある
  • つまりインターネット側から制御できない

この問題は既に対応済みです


ではインターネット側からGoogle Homeを喋らせてみます


今度は何が起こったか


google-home-voicetextの仕組み2.png


Firebaseとは

  • Googleが提供するmBaaS
    • mobile backend as a Service
  • Cloud FirestoreはFirebaseのDB
    • クライアントアプリとの同期が簡単かつ高速

インターネット側から制御できると何が嬉しいか


  • クラウド上のサービスと連携できる
    • 例:Googleカレンダーに予定を入れると喋って通知してくれる
  • メッセージ系のサービスと連携できる
    • 例:Slackで特定のチャンネルに書き込むとGoogle Homeが喋る

まとめ


  • Google Homeを自発的に喋らせるのは意外と難しい
  • google-home-voicetextを使うとGoogle Homeを喋らせることが出来る
  • インターネット側からも制御できる

参考URL

元ネタ
https://qiita.com/sikkim/items/f03df7e2db13ea7f5a2b

GitHub
https://github.com/sikkimtemi/google-home-voicetext
https://github.com/sikkimtemi/google-home-voicetext-docker

応用例(IFTTTおよびGASとの連携)
https://qiita.com/sikkim/items/60eac02554b37b14e5a6


ワークショップ


Dockerの準備

Dockerを使います。ご自分の環境に合わせてインストールしてください。
https://hub.docker.com/editions/community/docker-ce-desktop-windows
https://hub.docker.com/editions/community/docker-ce-desktop-mac
Linuxの人はディストリビューションに合わせて各自でご用意ください。


Gitの準備

gitコマンドを実行できるようにしてください。
MacやLinuxは標準で入っています。
Windowsの場合はGit for Windowsなどをインストールしてください。


VoiceText APIキーの準備

「無料利用登録」からAPIキーを取得してください(要メールアドレス)。
https://cloud.voicetext.jp/webapi
「利用目的」は「その他」


Dockerコンテナ起動まで

$ git clone https://github.com/sikkimtemi/google-home-voicetext-docker.git
$ cd google-home-voicetext-docker
$ docker-compose up -d

ソースコードのダウンロード

$ cd myapps
$ git clone https://github.com/sikkimtemi/google-home-voicetext.git

Dockerコンテナに接続

$ docker exec -it node bash
# node -v
v11.15.0

プロンプトが#に変わり、コンテナ内部に入りました。
node.jsのバージョンが11.15.0であることを確認してください。


npmインストール

# cd google-home-voicetext
# npm install

mdnsにパッチをあてる

# patch -u node_modules/mdns/lib/browser.js < mdns_patch/browser.js.patch

環境変数の設定

# export VOICETEXT_API_KEY={取得したAPIキー}
# export WIRELESS_IP={自分のマシンのIPアドレス}
# export GOOGLE_HOME_IP=192.168.11.5

mdns関連のサービス起動

# service dbus start
# service avahi-daemon start

file-server.jsとapi-server.jsを起動

# node file-server.js &
# node api-server.js &

動作確認

# curl -X POST -d "text=こんにちは、Googleです。" http://localhost:8080/google-home-voicetext

コンテナから抜けるには

# exit

dockerコンテナの終了方法

$ docker-compose down

いろいろやってみよう

  • 話者を変えてみよう
    • 6種類の中から選べます(HIKARI, BEAR, HARUKA, SANTA, SHOW, TAKERU)
    • 例) export VOICETEXT_SPEAKER=SHOW
  • Cloud Firestoreと連動させよう
  • Googleカレンダーと連動させよう
sikkim
サーバーサイドエンジニア。情報処理安全確保支援士(登録番号:020092)。PythonやNode.js、FileMaker、Nuxt.jsで開発することが多いです。
https://github.com/sikkimtemi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away