更新情報
2018/12/01
2018年11月29日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。。対策を追記。
2020/11/09
2020年11月7日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。。対策を追記。
2020/12/10
2020年12月7日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。。対策を追記。
経緯
Raspberry PiからGoogle Homeを喋らせる などで、google-home-notifierでGoogle Homeを喋らせていたが、9月末ごろから
Error: get key failed from google
at /home/pi/work/googlehome/node_modules/google-tts-api/lib/key.js:27:13
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
などとエラーが出て喋らなくなってしまった。
軽く調べたところ google-home-notifierが「Error: get key failed from google」を吐いたので対策してみた などがひっかかったが、対策しないまま日が経ってしまった。
調査
上記記事にもある通り、GoogleのText-To-Speech(TTS)のAPIの仕様変更により、戻り値が変わり、エラーが出ている模様。
上記記事ではライブラリのコードを書き換えているが、
google-ttsのChangeLog を見たところ、Google TTSのNode.jsライブラリは修正されているので、その変更を取り込むことにした。
対処
google-home-notifierへのプルリクエスト が、2018-10-13時点でまだマージされていない。
対処法としては、google-tts-apiを0.0.3にバージョンアップすれば良いが、下記2通りの方法を思いついた。
対処1: google-home-notifierの書き換え
node_modules/google-home-notifier/package.jsonを google-home-notifierへのプルリクエスト の通りに修正を行う。
"dependencies": {
"body-parser": "^1.15.2",
"castv2-client": "^1.1.2",
"express": "^4.14.0",
"google-tts-api": "0.0.3", // ここを0.0.3に書き換える
"mdns": "^2.3.3",
"ngrok": "^2.2.4"
},
その後、google-home-notifierに移動し、npm updateにてgoogle-tts-apiをアップデートする。
cd node_modules/google-home-notifier
npm update google-tts-api
これで、node_modules/google-tts-apiが0.0.3にアップデートされる。
google-home-notifierのpackage.jsonを変更せずにアップデートしたかったが、npm update google-tts-api@0.0.3などとやってもアップデートできなかったので、仕方なくgoogle-home-notifierの方を変更した。npmのしくみがいまいちわかっていない…。
対処2: google-home-notifierのインストール元変更
Use forked package · shiratsuchi/home-hack@86944c8
を参考に、フォークされたgoogle-home-notifierパッケージを再インストールする。
google-home-notifierを一旦アンインストール
npm uninstall google-home-notifier
フォークされたリポジトリから再インストール
$ npm install https://github.com/kei-s/google-home-notifier/tarball/update-google-tts-api
再インストールしたので、After npm install に記載のnode_modules/mdns/lib/browser.jsの修正を再度行わないといけないのに注意。
まとめ
上記どちらの方法でも、喋ってくれるようになった。
(なんか喋りが早くなったような…気のせいか?)
追記(2018/12/01)
11月29日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。。
ここに対処法があったので、実施したら治った。
https://github.com/zlargon/google-tts/issues/22
上記「対処1」で、0.0.3に変えるところを0.0.4に変えるだけ。
"dependencies": {
"body-parser": "^1.15.2",
"castv2-client": "^1.1.2",
"express": "^4.14.0",
"google-tts-api": "0.0.4", // ここを0.0.4に書き換える
"mdns": "^2.3.3",
"ngrok": "^2.2.4"
},
追記(2020/11/09)
11月7日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。
下記によるとgoogle-tts-api v0.0.5で対応されているとのこと
https://github.com/zlargon/google-tts/issues/33#issuecomment-723548451
上記「対処1」で、0.0.3に変えるところを0.0.5に変えるだけ。
"dependencies": {
"body-parser": "^1.15.2",
"castv2-client": "^1.1.2",
"express": "^4.14.0",
"google-tts-api": "0.0.5", // ここを0.0.5に書き換える
"mdns": "^2.3.3",
"ngrok": "^2.2.4"
},
google-home-notifierの更新、完全に止まってますね…。
追記(2020/12/10)
12月7日頃にまたGoogleTTSの仕様変更があり、喋らなくなってしまった。
@kaerugekogeko さんの情報によると、google-tts-api v0.0.6で対応されているとのこと。
情報ありがとうございました!
上記「対処1」で、0.0.3に変えるところを0.0.6に変えるだけ。
"dependencies": {
"body-parser": "^1.15.2",
"castv2-client": "^1.1.2",
"express": "^4.14.0",
"google-tts-api": "0.0.5", // ここを0.0.6に書き換える
"mdns": "^2.3.3",
"ngrok": "^2.2.4"
},