ミーハーなことに、Google Home miniを買ってしまった。
職場にGoogle Homeを買ったのだけど、案外ものわかりがいいやつだということに気付いてしまったのだ。
それだけだったらまだしも、IFTTTとかでしゃべらせることができるらしい。
ならば、買わねばならぬのぅ。
Google Home、IFTTT、Googleスプレッドシートを使って独自音声コマンドでログをとる(ついでにNode.jsやngrokやらも使ってLINEやGoogle Homeに通知する) - Qiita
こちらを読むと、google-home-notifierというやつをインストールするらしい。
https://github.com/noelportugal/google-home-notifier
npmでインストールするらしい。
確か、node.jsとかの関係だよな。
$ npm install google-home-notifier
いろいろ出た後、ERRになった。。。
installだからsudoがいりそうな気もしたのだが、そういうエラーではないように見える。
sudo apt install npm node.js libnss-mdns libavahi-compat-libdnssd-dev
よくわからんが、そのページに書いてあって関係ありそうなものをインストールしたら、google-home-notifierもインストール出来たようだ。
WARNがいくつも出ているが、大丈夫よ・・・ね?
書いてあるサンプルをファイルに保存して実行してみたが、requireが見つからんと言われる。
心配になって、もう一度npm installしてみると、エラーではないもののnodeのバージョンが期待よりも古いといわれているようだ。
aptでは最新なのだけど、世の中の最新は別のところにあるらしい。
Ubuntuに最新のNode.jsを難なくインストールする - Qiita
aptではnodeはv4.2.6が最新だったのだけど、これをやるとv8.8.1になった。
全然違うやん・・・。
フォルダの中のファイルを消して、もう一度npm installしなおした。
npm WARN saveError ENOENT: no such file or directory, open '/home/xxx/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/home/xxx/package.json'
なんかダメそうだ・・・。
npm installはあきらめて、こっちの方法でやることにした。
https://github.com/noelportugal/google-home-notifier#listener
手順の最後でexample.jsを動かすようだが、こちらを見ながらやっても改造がうまくいかん。。。
GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます - Qiita
もしかしたらRaspberry Pi用の説明なのかもしれんと思い、githubに書いてあった方のサンプルを簡単に改造した。
var googlehome = require('./google-home-notifier'); googlehome.device('地下室'); googlehome.accent('ja'); googlehome.notify('冷たいビールが飲みたい', function(res) { console.log(res); });
このファイルをtest.jsという名前で保存し、
~/xxx/google-home-notifier$ node test.js
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
Device notified
こんなログは出るものの、ちゃんと日本語でしゃべってくれた。
あ、「地下室」というのは、うちにあるGoogle Home miniにつけた名前だ。
別に地下室じゃないんだけどね。。。
このサンプルは、google-home-notifier.jsを書き換えないと動かないやつになっていた。
var googlehome = require('./google-home-notifier'); googlehome.device('地下室', 'ja'); googlehome.ip('xx.xx.xx.xx'); googlehome.notify('朝ごはんは食べましたか?', function(res) { console.log(res); });
デバイス名で検索出来ていたのかと思ったが、IPアドレスを指定している方が効いているみたいだ。
あるいは、デバイス名が英語だったらいけるのかもしれんと思ったが、ダメだった(abortする)。
device()で'ja'にしないと、notify()で日本語をしゃべってくれない。
つまり、しゃべってほしい言語はここで指定することになるようだ。
記事を参考に喋らせることができました。ありがとうございます。
返信削除なお、記事の内容プラス「google-home-notifier.js」内の
langを'en'から全て'ja'に書き換えたら動いたので
参考までにコメントしておきます。