コンテンツへスキップ

google-tts-apiからHOYA社のVoice Text Web APIへ

Google Home Notifierは、テキストをgoogle-tts-apiを用いて、音声変換を実施しております。十分に内容は把握できますし、実利用には支障はないのですが、HOYA社より優れたWeb APIが公開されているので、HOYA社のVoice Text Web APIを用いた音声に変更を実施します。HOYA株式会社 VoiceText Web API

  1. HOYA社Voice Text Web APIの利用登録
  2. 「voicetext」のインストール
  3. google-home-notifierソースコード修正

参考サイト

前提条件

  • (Raspberry Piの)Google Home Notifier導入が終わっている「google-home-notifier」導入
  • (Raspberry Piの)PHPが動作するWEBサーバがセットアップされている

導入手順

1.HOYA社Voice Text Web APIの利用登録

HOYA株式会社 VoiceText Web APIの「無料利用登録」より利用登録を実施して下さい。利用登録後に、API KEYがメールで送付されて来ます。

2.「voicetext」のインストール

以下のコマンドで、「voicetext」をインストールします。

3.google-home-notifierソースコード修正

「google-home-notifier.js」ファイルの修正

以下を参考に2箇所追加および1箇所コメントアウト(削除)を実施します。

「VoiceTextWriter.js」ファイルの新規作成

  • 「@APIKEY@」を利用登録時に受信したAPIKEYに変更
  • 「@WEBPAHT@」にWEBサーバの公開フォルダに格納する音声ファイルを指定
    例:/var/www/html/voice-text.wav
  • 「@URL@」にWEBサーバの音声ファイルへアクセスする際のURLを指定
    例:http://192.168.0.200/voice-text.wav

VoiceText Web APIマニュアルを参考に、speedやvolumeなどのオプション指定を変更して、好みの音声に変更して下さい。設定ファイル変更時には、Google Home Notifierの再起動が必要となります。

前提条件

「google-home-notifier」利用に向けて、Raspberry PiへNode.jsとnpmをインストールします。 参考ページ

参考にさせていただいたページです。

GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます
Google Home に任意のテキストを喋らせる
GitHub-google-home-notifier
google-home-notifierで"Error: get key failed from google"とエラーが出る問題の対処法

google-home-notifierインストール

GoogleTTSの仕様変更対応

GoogleTTSの新バージョンがリリースされており、このままでは、うまく動作しません。仕様変更により、今まで利用していたユーザーも利用できなくなり、関連する記事がWEBに複数出ておりました。
Error: get key failed from google
at /home/user/google-home-notifier/node_modules/google-tts-api/lib/key.js:23:23
at process._tickCallback (internal/process/next_tick.js:68:7)

package.jsonのバージョン情報を変更。(0.0.2から0.0.4に変更)

pakage.jason変更後に、google-tts-apiのアップデートを実施。

Webhook(WEBリクエスト)形式での運用準備

google-home-notifierフォルダにあるexample.jsを流用して、以下の形式でのリクエストによりGoogleホームより音声出力を実現します。以下のコマンドで、WEBアクセスの待ち状態となります。

Endpoints:
http://192.168.xxx.xxx:9081/google-home-notifier
GET example:
curl -X GET http://192.168.xxx.xxx:9081/google-home-notifier?text=Hello+Google+Home
POST example:
curl -X POST -d "text=Hello Google Home" http://192.168.xxx.xxx:9081/google-home-notifier

起動時に以下のWARNINGが出るのですが、ほかの方もWARNINGが出たまま運用しているようです。(WARNINGを消す情報は見つけられませんでした)

それでは設定です。google-home-notifierフォルダにあるexample.jsの言語設定を2か所変更します。

後は、Google HomeのIPアドレスと、WEBアクセスを受けるポートをexample.jsに設定します。

今回は3台分のGoogle Home Miniを運用したいので、example.jsを3個コピーして、3個のスクリプトを起動する方式にしました。

  • Google-Home-1:192.168.xxx.81:ポート番号9081
    http://192.168.xxx.xxx:9081/google-home-notifier?text=Hello+Google+Home
  • Google-Home-2:192.168.xxx.82:ポート番号9082
    http://192.168.xxx.xxx:9082/google-home-notifier?text=Hello+Google+Home
  • Google-Home3:192.168.xxx.83:ポート番号9083
    http://192.168.xxx.xxx:9083/google-home-notifier?text=Hello+Google+Home

forever導入による常時起動化とサーバー再起動時の自動起動

【Node.js入門】foreverの使い方とデーモン化による永続化・自動起動まとめ!
Node.js製のアプリをforeverで永続化する

foreverモジュールの導入方法

起動時のコマンドは、以下となります。

再起動時にスクリプトが自動起動するようにクーロン登録します。

以下を登録します。

以上、上手く行ったら良いですね。
時間があれば、HOYAのVoiceText Web APIを利用する方法へ変更する予定です。

【うまく動作しなかった際に、実行したコマンドです】

「google-home-notifier」利用に向けて、Raspberry PiへNode.jsとnpmをインストールします。

利用環境

  • NOOBS:Offline and network install、Version:3.1.1、Release date:2019-06-24
  • Raspberry Pi 3 Model B+:1.4GHz 64-bit quad-core processor

インストール

Google Home Notifier導入準備完了

「google-home-notifier」利用に向けて、Raspberry PiへNode.jsとnpmをインストールが完了しました。