ローカル音声認識・音声合成
最終更新
Home Assistantの音声アナウンス:Piperの声で家の中に話しかける
アナウンスはAssistの応答とは違い、決めた文を決めたスピーカーへ送ります。
Assistの応答は話しかけた機器へ戻りますが、アナウンスは決めたスピーカーへ送ります。tts1.speakに合成エンジン、スピーカー、文を入れると、Piperの声がその部屋で流れます。部屋ごとにスピーカーを分け、夜の音量を決める方法を扱います。
応答とアナウンスは別に動く
Assistに話しかけると答えはそのサテライトやスマホへ戻ります。アナウンスは決めたスピーカーへ向かうため、「玄関のドアが開きました」は話しかけた機器ではなくリビングのスピーカーから流れます。
この違いが分かると、2つを別々に設計します。会話はサテライトの近く、アナウンスは人がいる部屋で、と分けます。

tts.speakで文を送る
自動化の動作でtts.speakを選び、対象に合成エンティティ(例:Piperが提供するTTS)を、データにスピーカーと文を入れます。スピーカーはmedia_playerエンティティで指定します。
同じ文を繰り返すとキャッシュが使われ、2回目から速くなります。時刻や温度のように毎回変わる値が入るとキャッシュが合わないため、固定の案内と値を含む案内を分けておきます。
部屋ごとにスピーカーを分ける
スピーカーが複数あるなら部屋名を付け、出来事の場所に応じて送り先を選びます。玄関のセンサーはリビングへ、洗濯機の通知は洗濯室の近くへ送ると、音が人を追います。
全室に同時に話すならスピーカーをグループにして一度に送ります。部屋ごとに送ると文が少しずつずれて重なって聞こえます。

夜は静かに
夜は音量を下げ、急がない通知は翌朝へ回します。ドアの開閉や煙のように急ぐものだけを、夜も音で知らせます。
音量はスピーカーごとに合わせます。同じ値でも小さなスピーカーと大きなスピーカーでは聞こえ方が違うため、部屋ごとに一度聞いて決めます。
文が長いときに変わること
長い文は合成時間も延び、聞き手が途中で聞き逃しやすくなります。アナウンスは2文以内にし、詳しい内容はスマホ通知や画面へ回します。
数字は「23」より「二十三度」のように読むとおりに書くと発音が安定します。機器名も読ませたい音で書くと、変な読みが減ります。

用語の注釈
音声合成 — テキストを発音や韻律を伴う音声信号に変換する技術です。
本文に戻る
よくある質問
- この記事で最初に確認すべきことは何ですか?
- Assistの応答は話しかけた機器へ戻りますが、アナウンスは決めたスピーカーへ送ります。tts.speakに合成エンジン、スピーカー、文を入れると、Piperの声がその部屋で流れます。部屋ごとにスピーカーを分け、夜の音量を決める方法を扱います。
