これは Home Assistant 2025.12.x のバージョン仕様に基づく、詳しい初心者向けチュートリアルです。
2024〜2025 の進化の中で、Home Assistant (HA) の TTS(テキスト読み上げ)の仕組みは非常に標準化されました。旧版のプラットフォーム固有のサービス(tts.google_translate_say など)ではなく、汎用の tts.speak サービスを使用することをおすすめします。そうすれば将来音声エンジンを変更しても、オートメーションスクリプトを修正する必要がありません。
核心となる仕組み
- TTS インテグレーション:テキストを音声ストリームに変換します(Google Translate、Edge TTS、Piper など)。
- メディアプレーヤー:音声を再生するデバイス(小愛同学、HomePod、ブラウザ、Bluetooth スピーカーなど)。
- Jinja2 テンプレート:センサーデータを取得してテキストに埋め込みます。
準備
- Home Assistant:バージョン 2025.12.2(または近いバージョン)。
- 再生デバイス:HA に接続済みのメディアプレーヤー(エンティティ ID 例:media_player.living_room_speaker)。
- センサー:接続済みの PM2.5 センサー(エンティティ ID 例:sensor.living_room_pm25)。
ステップ1:TTS サービス (Text-to-Speech) を設定する
初心者にとって最も簡単で追加ハードウェアが不要なのは、内蔵の Google Translate TTS(ネットワーク環境の対応が必要)を使う方法、または HACS から Edge TTS をインストールする方法(より自然な音声でおすすめ)です。ここでは公式の内蔵フローを説明します。
- HA の左メニュー 設定 (Settings) -> デバイスとサービス (Devices & Services) を開きます。
- 右下の インテグレーションを追加 (Add Integration) をクリックします。
- Google Translate text-to-speech を検索して追加をクリックします。
- 言語コードを設定します。中国語の場合は zh-cn を入力し、送信をクリックします。
- システムが自動的にエンティティを生成します。通常は tts.google_zh_cn です。
注意
:オフライン動作やより良い中国語の品質を求める場合は、”Piper”(公式ローカルアドオン)または “Edge TTS”(HACS)の検索・インストールをおすすめします。設定後の仕組みは以下と完全に同じです。
ステップ2:TTS が発声できるか検証する
オートメーションを書く前に、まず音が出ることを確認します。
- 左メニューの 開発者ツール (Developer Tools) -> サービス (Services/Actions) を開きます。
- アクションの検索欄に tts.speak と入力します(これが現代 HA の標準的な発声アクションです)。
- ターゲット (Target):先ほど追加した TTS エンティティ(例:tts.google_zh_cn)を選択します。
- メディアプレーヤーエンティティ (Media Player Entity):自分のスピーカー(例:media_player.browser またはスマートスピーカー)を選択します。
- メッセージ (Message):「こんにちは、これはテストです」と入力します。
- アクションを実行 (Perform Action) をクリックします。
スピーカーが鳴れば次のステップに進めます。鳴らない場合は、ネットワークまたはスピーカーの音量を確認してください。
ステップ3:アナウンスのオートメーションを作成する(UI ビジュアルモード)
実現したいこと:毎朝 8 時に、現在の PM2.5 値をアナウンスし、窓を開けるかどうかのアドバイスを出します。
- 設定 -> オートメーションとシーン -> オートメーションを作成 -> 新しいオートメーションを作成 を開きます。
1. トリガー条件 (Triggers) を設定する
- トリガーを追加 -> 時間 (Time) を選択 をクリックします。
- 固定時間を設定します。例:08:00:00。
2. アクション (Actions) を設定する – 核心部分
- アクションを追加 -> TTS: Speak(または「テキストを音声に送信」と表示)を検索して選択 をクリックします。
- TTS エンティティ:tts.google_zh_cn を選択します。
- メディアプレーヤーエンティティ:自分のスピーカーを選択します。
- メッセージ (Message):ここが最も重要な手順で、テンプレート (Template) を使って変数を挿入する必要があります。以下のコードをメッセージ欄にコピーしてください:
codeJinja2
おはようございます。現在のリビングの PM2.5 指数は {{ states(‘sensor.living_room_pm25’) }} マイクログラム毎立方メートルです。{% set pm = states(‘sensor.living_room_pm25’) | float(0) %}アドバイス:{% if pm
- 初心者向けコード解説:
- {{ states(‘…’) }}:これはセンサー値を取得する定型の書き方です。sensor.living_room_pm25 を必ず自分のシステムのセンサー ID に置き換えてください。
- {% set pm = … %}:pm という変数を定義し、後の判定に使います。float(0) はセンサーが使用不可のときにエラーになるのを防ぐためで、デフォルトは 0 です。
- {% if … %}:論理判定で、数値に応じてスピーカーに異なる内容を話させます。言語 (Language):空欄のままか、zh-cn を入力します。
3. オートメーションを保存する
- 右下の保存をクリックし、「毎日の大気質アナウンス」と命名します。
ステップ4:上級テクニック (YAML モード)
YAML コードで直接設定したり、他の人に共有したりしたい場合は、オートメーションエディタ右上の 3 つの点をクリックし、「YAML で編集」を選択します。
以下は完全で標準化されたオートメーションの YAML 設定です(HA 2025 標準に基づく):
alias: 每日空气质量播报description: "通过TTS播报PM2.5及建议"trigger:
- platform: time
at: "08:00:00"condition: action:
- action: tts.speak
target:
entity_id: tts.google_zh_cn
# 你的TTS实体
data:
media_player_entity_id: media_player.living_room_speaker
# 你的音箱实体
message: >- 现在是 {{ now().strftime('%H点%M分') }}。 当前 PM2.5 数值为 {{ states('sensor.living_room_pm25') }}。 {% set pm = states('sensor.living_room_pm25') | float(0) %} {% if pm > 75 %} 空气不好,我已经为您自动开启了净化器。 {% else %} 空气清新,祝您心情愉快。 {% endif %}mode: single
よくある問題とトラブルシューティングガイド
- 数値が “Unknown” または “Unavailable” と読み上げられる:
- 原因:その時点でセンサーがオフラインだったか、ID の入力が間違っています。
- 解決:「開発者ツール -> 状態」で sensor ID が正しいか、具体的な数値があるかを確認してください。
Google TTS が鳴らない:
- 原因:Google のサービスがあなたのネットワーク環境から接続できない可能性があります。
- 解決:
- 案 A:ネットワーク環境を設定する(ルーター側)。
- 案 B(推奨):HACS で Edge TTS インテグレーションをダウンロードします。これは Microsoft Edge ブラウザのインターフェースを利用しており、中国国内でも接続が非常に速く、音声も自然です。設定方法は上記の手順と完全に同じで、action 内のエンティティを tts.edge_tts に変えるだけです。
数値を整数にするには?
- 「PM2.5 は 25.3421…」と聞きたくない場合は、テンプレートに round を追加できます:
- {{ states(‘sensor.living_room_pm25’) | float(0) | round(0) }}
プレーヤーが対応していない:
- Sonoff などの簡単なブザーゲートウェイを使用している場合、TTS には対応していません。本物のメディアプレーヤー(HomePod、Sonos、Google Nest、または DLNA 接続のスピーカーなど)が必要です。
以上の手順で、Home Assistant 2025 でスマートな音声アナウンスを実現できます。まず簡単な「こんにちは」を通してから、徐々にセンサーデータを追加することをおすすめします。