找回密碼
 立即註冊
    查看: 203|回覆: 0

    讓家裡的音箱開口說話:TTS 從安裝引擎到五個完整可用的自動化

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 02:06:12 | 顯示全部樓層 |閱讀模式
    音箱除了聽你講話,也可以主動跟你說話。這一篇從裝引擎開始,一路做到五個真的會用到的自動化,每一個都是可以直接複製的完整 YAML,每一步都有可以自己確認的檢查點。

    音箱除了聽你講話,也可以主動跟你說話。這一篇從裝引擎開始,一路做到五個真的會用到的自動化,每一個都是可以直接複製的完整 YAML,每一步都有

    這篇用的版本,以及一個重要的語法變動

    Home Assistant 穩定版 2026.9.3。

    ⚠ 網路上大部分的 TTS 教學都過時了。 舊文章教的是:
    1. service: tts.google_translate_say
    2. entity_id: media_player.ke_ting_yin_xiang
    3. data:
    4.   message: 衣服洗好了
    5.   language: zh-tw
    複製代碼

    這個寫法有兩個問題。第一,service: 已經被 action: 取代。第二,也是更麻煩的一個:tts.google_translate_say 這個動作只有在你用舊的 configuration.yaml 方式設定 TTS 時才會存在。用現在的 UI 方式裝的話,那個動作根本不會被註冊,你在開發者工具裡搜尋會找不到它。

    現行的寫法是這樣:
    1. action: tts.speak
    2. target:
    3.   entity_id: tts.google_zh_tw
    4. data:
    5.   media_player_entity_id: media_player.ke_ting_yin_xiang
    6.   message: 衣服洗好了,記得去晾
    7.   cache: true
    複製代碼

    注意 target 和 data 各放什麼:target 放的是 TTS 引擎(那個 tts. 開頭的實體),要播出來的音箱放在 data 底下的 media_player_entity_id。這兩個位置最多人放反,放反的症狀是動作跳錯誤說找不到實體。

    步驟 1:確認音箱在 Home Assistant 裡

    到 開發者工具 → 狀態,實體欄位打 media_player。

    你會看到一份清單,Google 音箱通常長這樣:
    1. 實體                              狀態
    2. media_player.ke_ting_yin_xiang    off
    3. media_player.wo_shi_yin_xiang     idle
    複製代碼


    • off / idle → 開著待命,正常
    • unavailable → 沒連上。檢查它的電源和 Wi-Fi
    • playing → 正在播東西


    一台都沒有 → Google Cast 整合沒裝或沒探測到。到 設定 → 裝置與服務 看有沒有 Google Cast。沒有就 + 新增整合 → 搜尋 Google Cast → 新增(同網段的話通常會自動找到)。

    ⚠ 音箱和 Home Assistant 必須在同一個網段,而且不能開 AP 隔離。 分 VLAN 的話要放行 mDNS,這是最常見的「怎麼都掃不到」的原因。

    把你要用的音箱實體 ID 抄下來,下面全部會用到。

    步驟 2:裝 TTS 引擎

    2-1 免費的:Google 翻譯 TTS

    設定 → 裝置與服務 → 右下角 + 新增整合 → 搜尋 Google Translate → 選 Google Translate text-to-speech。

    設定畫面兩個欄位:


    • 語言 → 選 zh-tw
    • 頂級網域(TLD)→ com 就好


    按提交。

    你會看到多一個整合,底下一個實體。到 開發者工具 → 狀態 搜尋 tts.:
    1. tts.google_zh_tw       unknown
    複製代碼

    ⚠ 實體 ID 是照「語言 + 頂級網域」命名的,你看到的那一串要抄下來,下面所有 YAML 都要換成它。 狀態顯示 unknown 是正常的,TTS 引擎本來就沒有狀態。

    語言清單裡找不到 zh-tw → 捲到最下面找,清單有七十幾個而且沒有照直覺排序。真的沒有的話先選 zh-CN,發音是普通話,用詞偶爾不一樣但聽得懂。

    2-2 付費的:Home Assistant Cloud

    有訂 Nabu Casa 的話不用額外裝,登入之後它會自己出現。到 開發者工具 → 狀態搜尋 tts.,你會看到多一個 tts.home_assistant_cloud。

    到 設定 → 家庭助理雲端,往下找文字轉語音那一塊,你會看到可以選語言和聲音。繁中選 Chinese (Taiwan),聲音有幾種可以挑(底層是 Azure 的語音服務,所以聲音名稱是 HsiaoChen、HsiaoYu、YunJhe 這種)。

    旁邊有一顆試聽,按下去選一台音箱。你會看到(聽到)那台音箱講出一段問候語。

    兩個引擎的差別:


    • Google 翻譯:免費,聲音偏機械,長句子的斷句不自然,偶爾會被 Google 限流(症狀是播不出來,日誌裡有 429)
    • Cloud:付費(6.50 美元/月或 65 美元/年),聲音自然很多,可以挑音色,不會被限流


    兩個可以同時裝。下面的範例都用 Google 翻譯的實體名,有 Cloud 的話把 tts.google_zh_tw 換成 tts.home_assistant_cloud 即可,其他一個字都不用改 —— 這正是 tts.speak 這個新寫法的好處:換引擎只換一個實體 ID。

    以下還有約 81% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 01:02 , Processed in 0.136466 second(s), 25 queries .

    快速回覆 返回頂部 返回列表