sikkimtemiさんのgoogle-home-voicetextのAPIサーバ、ファイルサーバの再実装です。
Google Homeに任意の音声を喋らせる仕組みです。
Dockerで動作させる前提で、マルチキャストDNS(mdns)を使わない作りにしました。
クラウドプッシュ連携はサーバと分離しました。
- Firebase(Firestore) https://github.com/yasu-hide/google-home-voicetext-firebase
- Beebotte(MQTT) https://github.com/yasu-hide/google-home-voicetext-mqtt
- Amazonダッシュボタン https://github.com/yasu-hide/google-home-voicetext-dashbutton
Google Homeはmdns(Bonjour,dns-sd)によるZeroconfに対応しています。
Docker標準のネットワーク(docker0)はiptablesでNATしていてマルチキャストパケットを通しません。
Docker環境では自動探索機能が利用できず、期待した動作をしないため廃止しました。
macvlanなどマルチキャストが使えるネットワークで利用される場合でも自動探索は行いません。
URLで指定したIPアドレスのGoogle Homeを喋らせられます。
複数のGoogle Homeを使い分けている場合に便利です。
curl -X POST -d "text=喋らせる言葉" http://(サーバIPアドレス)/(Google Home IPアドレス)
指定されたGoogle HomeのIPアドレスの分だけ音声ファイルが生成されるためディスク使用量には注意が必要です。
音声ファイルの形式を、Voicetext、Google Homeともに対応しているOgg Vorbis(.ogg)に変更しました。
任意のGoogle Homeを指定可能にした都合です。
- 実行例 (URLencoded)
curl http://192.168.20.140:8080/192.168.20.200 \
-d "text=おバブやかましい" \
-d "speaker=bear" \
-d "emotion=anger" \
-d "emotion_level=extreme"
- 実行例 (JSON)
curl http://192.168.20.140:8080/192.168.20.200 \
-H 'Content-Type: application/json' -d '{"text": "こんにちは、Googleです。"}'
喋らせたい内容です。
指定をしないとエラーが発生します。
Required String parameter 'text' is not present.
話者を指定できます。
設定できる項目は、VoiceTextのAPIマニュアルのパラメータを参照してください。
話者の感情を指定できます。
設定できる項目は、VoiceTextのAPIマニュアルのパラメータを参照してください。
話者の感情レベルを指定できます。
HOYA VoiceTextのAPIキーです。
以下のページで無料利用登録を行ってAPIキーを取得して設定してください。
https://cloud.voicetext.jp/webapi
export VOICETEXT_API_KEY={取得したAPIキー}
サーバが起動するIPアドレスです。
Google HomeがアクセスできるURLを生成するため、動作しているサーバのIPアドレスが必要です。
LISTEN_ADDRESS
にGoogle HomeからアクセスできるIPアドレスを指定してください。
export LISTEN_ADDRESS=192.168.20.140
IPアドレスが変動する環境で利用する場合はLISTEN_INTERFACE
に通信モジュール名を指定してください。
export LISTEN_INTERFACE=en0
サーバが起動するポート番号です。
デフォルトは 8080 です。
export LISTEN_PORT=80
話者を指定できます。
デフォルトの話者はHIKARI
という女性です。
設定できる項目は、VoiceTextのAPIマニュアルのパラメータを参照してください。
export VOICETEXT_SPEAKER=BEAR
話者の感情を指定できます。
デフォルトの感情はHAPPINESS
です。
設定できる項目は、VoiceTextのAPIマニュアルのパラメータを参照してください。
話者の感情レベルを指定できます。
デフォルトの感情レベルはNORMAL
です。
感情レベル | VoiceTextの値 |
---|---|
1 または NORMAL |
1 |
2 または HIGH |
2 |
3 または SUPER |
3 |
4 または EXTREME |
4 |
音量を数値で指定できます。
設定できる項目は、VoiceTextのAPIマニュアルのパラメータを参照してください。
kubectl create secret generic google-home-voicetext-server \
--from-literal=VOICETEXT_API_KEY={取得したAPIキー}
パラメータを編集します。
$ vi k8s-google-home-voicetext-server.yml
$ kubectl apply -f k8s-google-home-voicetext-server.yml
パラメータを編集します。
$ vi .env
$ docker-compose up -d