Google Homeに喋らせてみた
さいしょに
本記事はただの学習記録です。
環境
- Ubuntu 18.04.1 LTS
- node.js v10.14.1
失敗編
この記事の内容を実行してみたかっただけ
必要なライブラリ
`sudo apt install libavahi-compat-libdnssd-dev
蛇足
もし、 apt install
がエラーになった場合は、 /etc/apt/source.list
が以下のようになっているか確認して下さい。
標準では、 main だけになっているはずです。
`deb http://archive.ubuntu.com/ubuntu bionic main universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-security main universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates main universe multiverse
コードを実行してみると・・・ 動かない(その 1)
Error: get key failed from google
API の返り値が変わってしまった為に、google-tts-api ライブラリがエラーを吐いている模様。
原因は以下の Qiita に詳しく書いてありました。
google-tts-api の新しいバージョンでは対応済みのようなので、 package.json
の以下の行を書き換えてバージョンアップさせます。
`# 20行目付近
"google-tts-api": "0.0.2",
↓
"google-tts-api": "0.0.4",
コードを実行してみると・・・ 動かない(その 2)
Web ブラウザから、 http://<host>:8091/google-home-notifier?text=Hello+Google+Home
を実行してみると、(大量の WARNING はとりあえず無視して)
`Error: connect ECONNREFUSED 192.168.1.20:8009
これは割と単純で、Google Home の IP アドレスが分かっていない時に起きる。
example.js
の先頭に var ip = '192.168.1.20'; // default IP
というところがあるので
それを書き換える。
なお、Google Home の IP アドレスは、Google Home アプリの設定画面の一番下に表示されている。
これを直せばとりあえず動くはず。
蛇足:
すぐ上に Google Home のデバイス名が設定されているが、これは間違っていても IP アドレスが正しければ動く。
(とりあえず初版)
IP アドレスが固定なのはさすがに酷い
対応その 1
そもそも、README に書いてある通りの事をやっていなかった。
・・・やっても効果はなく、しかも npm で入れたものに対して修正かけるのは反則なのでは・・・
原理から考えてみる
Google Home アプリは普通に自動的に Google Home を発見できるので、何かのプロトコルで探索できるはず。
というか、普通に example.js
が mDNS を呼んでいるのでこれで見つかるはず。
でも、先にググってみたら既に Qiita にお書きになってる人がいらっしゃいました。
要するに、example.js
の devicename に書く値が・・・というよりもう探索の仕方が(今となっては)正しくない。
example.js
のコードでは、現状実質 IP アドレスベースで動かすしかない。
コード書いてみる
Discussion