这是一份基于 Home Assistant 2025.12.x 版本特性的详细新手教程。 在 2024-2025 的演进中,Home Assistant (HA) 的 TTS(文本转语音)逻辑已经非常标准化,推荐使用通用的 tts.speak 服务,而不是旧版特定平台的服务(如 tts.google_translate_say),这样即使未来更换语音引擎,自动化脚本也不需要修改。 核心原理TTS 集成:负责将文字转换成音频流(如 Google Translate, Edge TTS, Piper 等)。 媒体播放器:负责播放音频的设备(如小爱同学、HomePod、浏览器、蓝牙音箱)。 Jinja2 模板:负责抓取传感器数据并嵌入到文字中。
准备工作Home Assistant:版本 2025.12.2(或相近版本)。 播放设备:已接入 HA 的媒体播放器(实体 ID 示例:media_player.living_room_speaker)。 传感器:已接入的 PM2.5 传感器(实体 ID 示例:sensor.living_room_pm25)。
第一步:配置 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),配置后的逻辑与下方完全一致。
第二步:验证 TTS 能否发声在写自动化之前,先确保声音能播出来。 打开左侧菜单 开发者工具 (Developer Tools) -> 服务 (Services/Actions)。 在搜索动作中输入:tts.speak (这是现代 HA 的标准发声动作)。 目标 (Target):选择刚才添加的 TTS 实体(如 tts.google_zh_cn)。 媒体播放器实体 (Media Player Entity):选择你的音箱(如 media_player.browser 或你的智能音箱)。 消息 (Message):输入 “你好,这是一次测试”。 点击 执行动作 (Perform Action)。
如果音箱响了,即可进入下一步。如果不响,请检查网络或音箱音量。 第三步:编写播报自动化 (UI 可视化模式)我们要实现:每天早上 8 点,播报当前 PM2.5 数值,并给出开窗建议。 1. 设置触发条件 (Triggers)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 < 35 %}空气质量优,适合开窗通风。{% elif pm < 75 %}空气质量良,可以适当通风。{% else %}空气污染较重,请关闭门窗并开启净化器。{% endif %}
小白代码解析: {{ states('...') }}:这是提取传感器数值的固定写法。请务必将 sensor.living_room_pm25 替换为你自己系统里的传感器 ID。 {% set pm = ... %}:定义一个变量叫 pm,方便后面做判断。float(0) 是为了防止传感器不可用时报错,默认设为 0。 {% if ... %}:逻辑判断,根据数值让小爱/Siri 说不同的话。
3. 保存自动化 第四步:进阶技巧 (YAML 模式)如果你想直接通过 YAML 代码配置或者分享给别人,可以点击自动化编辑器右上角的三个点,选择 在 YAML 中编辑。 以下是一个完整的、标准化的自动化 YAML 配置(基于 HA 2025 标准): codeYaml
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
常见问题与排坑指南通过以上步骤,你就可以在 Home Assistant 2025 中实现智能化的语音播报了。建议先跑通简单的“你好”,再逐步加入传感器数据。
|