ローカル音声認識・音声合成

Home Assistantの音声アナウンス:Piperの声で家の中に話しかける

アナウンスはAssistの応答とは違い、決めた文を決めたスピーカーへ送ります。

Assistの応答は話しかけた機器へ戻りますが、アナウンスは決めたスピーカーへ送ります。tts1.speakに合成エンジン、スピーカー、文を入れると、Piperの声がその部屋で流れます。部屋ごとにスピーカーを分け、夜の音量を決める方法を扱います。

実行条件と要点
  • tts.speakに合成エンティティ、スピーカー、文を入れると、その部屋で音が出ます。
  • アナウンスはAssistの応答と違い、話しかけた機器へ戻りません。
  • 部屋ごとにスピーカーを分け、夜は音量を下げます。

応答とアナウンスは別に動く

Assistに話しかけると答えはそのサテライトやスマホへ戻ります。アナウンスは決めたスピーカーへ向かうため、「玄関のドアが開きました」は話しかけた機器ではなくリビングのスピーカーから流れます。

この違いが分かると、2つを別々に設計します。会話はサテライトの近く、アナウンスは人がいる部屋で、と分けます。

窓辺の机に開いた本、小型コンピューター、スピーカーが置かれています。
アナウンスは話しかけた機器ではなく、決めたスピーカーから流れます。

tts.speakで文を送る

自動化の動作でtts.speakを選び、対象に合成エンティティ(例:Piperが提供するTTS)を、データにスピーカーと文を入れます。スピーカーはmedia_playerエンティティで指定します。

同じ文を繰り返すとキャッシュが使われ、2回目から速くなります。時刻や温度のように毎回変わる値が入るとキャッシュが合わないため、固定の案内と値を含む案内を分けておきます。

部屋ごとにスピーカーを分ける

スピーカーが複数あるなら部屋名を付け、出来事の場所に応じて送り先を選びます。玄関のセンサーはリビングへ、洗濯機の通知は洗濯室の近くへ送ると、音が人を追います。

全室に同時に話すならスピーカーをグループにして一度に送ります。部屋ごとに送ると文が少しずつずれて重なって聞こえます。

マイク、ヘッドホン、音声波形を表示したモニターが見えます。
部屋ごとにスピーカーを分けると、人がいる場所から音が出ます。

夜は静かに

夜は音量を下げ、急がない通知は翌朝へ回します。ドアの開閉や煙のように急ぐものだけを、夜も音で知らせます。

音量はスピーカーごとに合わせます。同じ値でも小さなスピーカーと大きなスピーカーでは聞こえ方が違うため、部屋ごとに一度聞いて決めます。

文が長いときに変わること

長い文は合成時間も延び、聞き手が途中で聞き逃しやすくなります。アナウンスは2文以内にし、詳しい内容はスマホ通知や画面へ回します。

数字は「23」より「二十三度」のように読むとおりに書くと発音が安定します。機器名も読ませたい音で書くと、変な読みが減ります。

ノートPCの横の机と棚に二台の金属製装置が置かれ、ケーブルが手前のスイッチボックスにつながっている
夜は音量を下げ、急ぐ通知だけを音で流します。

用語の注釈

  1. 音声合成 — テキストを発音や韻律を伴う音声信号に変換する技術です。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
Assistの応答は話しかけた機器へ戻りますが、アナウンスは決めたスピーカーへ送ります。tts.speakに合成エンジン、スピーカー、文を入れると、Piperの声がその部屋で流れます。部屋ごとにスピーカーを分け、夜の音量を決める方法を扱います。