語音助理與 LLM 串接
這一章把你的家從「用手機點」升級成「用嘴巴喊」。你會學會 Home Assistant 內建的 Assist 怎麼運作、怎麼決定哪些裝置聽得懂你講話、怎麼把語音辨識跟朗讀全部搬回家裡跑,還有怎麼把 ChatGPT、Gemini、Claude 這類大型語言模型(LLM)接上來,讓它真的能幫你關燈。
為什麼要學這個
你已經在第 6 章做好儀表板、在第 8 章寫過自動化了。但生活裡有一種情境是儀表板救不了的:你手上端著一鍋湯走進廚房,或是你已經躺平在床上、手機掉到床底下。這時候你需要的是喊一聲就有人理你。
Home Assistant 內建的語音助理叫 Assist,它是完全免費、內建的,不用裝任何東西就能用。而且它跟 Google 助理、Alexa 最大的不同是:你可以決定它的每一段要跑在你家裡,還是跑在別人的雲端。
讀完這章你會有這些能力:
- 知道 Assist 到底是什麼、跟「LLM」是兩回事還是一回事。
- 會設定哪些實體(Entity)可以被語音控制、哪些絕對不要開放。
- 會自己組一條語音流水線(Assist pipeline),四段各自挑本地或雲端。
- 會把 OpenAI/Google/Anthropic 的模型設成對話代理,而且真的叫得動家裡的燈。
- 知道 Model Context Protocol(MCP)在 Home Assistant 裡是什麼角色。
- 知道錢會花在哪、延遲會卡在哪、隱私會漏在哪。
Assist 是什麼:先分清楚三個名詞
很多人一開始就被三個詞搞混,我們先切乾淨。
| 名詞 | 白話解釋 | 你會在哪裡看到它 |
|---|---|---|
| Assist | Home Assistant 整套語音功能的品牌名。包含打字聊天和講話兩種用法。 | 右上角的對話圖示、手機 App 的三點選單 |
| 對話代理(Conversation agent) | 真正在「聽懂你在講什麼」的那顆腦袋。可以是內建的,也可以換成 LLM。 | 設定 → 語音助理 → 助理的設定畫面 |
| 語音流水線(Assist pipeline) | 一整條加工線:喚醒詞 → 語音轉文字 → 對話代理 → 文字轉語音。 | 設定 → 語音助理 裡的每一個「助理」就是一條流水線 |
最重要的一件事:Home Assistant 內建的對話代理不是 AI,它是一個句型比對器。它拿你講的話去比對一大堆事先寫好的句型範本,比對到就觸發對應的意圖(Intent),例如「打開客廳的燈」對到 HassTurnOn。
這帶來兩個結果:
- 好處:速度極快、完全在本機、零成本、不會亂講話。你叫它關燈它就是關燈。
- 壞處:句型沒中就是聽不懂。你說「幫我把客廳弄暗一點好嗎拜託」,它可能就當機了。而且它完全不會閒聊。
內建代理這幾年有在補強。2025.9 之後加了一個「模糊比對(fuzzy matcher)」,你多講幾個贅字、換個講法,它也還是能對到正確的意圖。不過官方講得很老實:這個功能是先從英文開始做的,其他語言會陸續跟上。所以講中文的你,短期內還是要靠好念的名字跟別名來拉高命中率。
想先玩玩看不用設定任何東西:登入 Home Assistant 後,點右上角的對話圖示(一個講話泡泡),直接打字「turn on the living room light」或用你設定的語言講一句。這就是 Assist 的最小可用形態。
流水線的四段,每段都能換零件
把語音助理想成一條工廠輸送帶。你喊一句話進去,最後吐出動作跟回話。中間有四個站,每個站都可以獨立選要用本地的還是雲端的。
| # | 站名 | 它在幹嘛 | 本地選項 | 雲端選項 |
|---|---|---|---|---|
| 1 | 喚醒詞 (Wake word) | 一直豎著耳朵等你叫它的名字 | openWakeWord(跑在 HA 主機上)、microWakeWord(跑在裝置晶片上) | 無,喚醒詞一律在本地 |
| 2 | 語音轉文字 (STT) | 把你的聲音變成一行字 | Whisper、Speech-to-Phrase | Home Assistant Cloud、OpenAI、Google Gemini |
| 3 | 對話代理 | 看懂那行字要幹嘛,決定動作 | 內建 Assist、Ollama(本地 LLM) | OpenAI、Google、Anthropic |
| 4 | 文字轉語音 (TTS) | 把回話唸出來 | Piper | Home Assistant Cloud、OpenAI、Google Gemini |
如果你只打字不講話(例如在手機 App 裡打字問 Assist),那第 1、2、4 站根本不會啟動,只有對話代理會跑。所以「我想接 ChatGPT 來聊天」跟「我想對著音箱喊」是兩件難度差很多的事。
本地方案的角色分工
- Whisper:語音轉文字,通用型,語言支援廣(包含中文)。官方 Add-on 的模型預設是
auto,在樹莓派這種 ARM 機器上會挑tiny-int8,其他機器挑base-int8。你可以自己往上調到small、medium,但吃 CPU 會明顯變重。 - Speech-to-Phrase:語音轉文字,但它只認得「你家裡真的有的東西」的句子,所以在很弱的硬體上也超快。代價是它不支援自由講話,而且目前的語言清單裡沒有中文,講中文的家庭基本上用不到。
- Piper:文字轉語音,本地朗讀,速度快、資源需求低。
- openWakeWord:喚醒詞偵測,跑在 Home Assistant 主機上。官方說法是一台樹莓派 4 大約可以同時扛 5 台語音衛星(satellite)串流音訊,再多就要把偵測搬到另一台機器上。
auto。官方文件明講,自動偵測語言會讓每一次請求都慢很多。直接指定你家講的語言。這四個都是官方 Add-on,安裝之後透過 Wyoming 這個通訊協定被 Home Assistant 發現。Add-on 商店怎麼用已經在附錄 A 講過了,這裡不重複。
哪些東西聽得懂你講話:公開實體
這是全章最重要、也最多人漏掉的設定。Home Assistant 不會把你所有實體都交給語音助理。你必須明確「公開(Expose)」它們,語音助理才看得到。這是刻意的安全設計。
-
打開公開設定頁
左側欄 設定(Settings) → 語音助理(Voice assistants),然後切到 公開(Expose) 分頁。
-
看看目前公開了什麼
清單會列出已經公開的實體,以及它被公開給哪些助理。這裡的助理不只 Assist,如果你有接 Google Assistant 或 Alexa,它們也會出現在同一張表上。
-
加入你要的實體
按 公開實體(Expose entities) 按鈕可以一次勾選多個加進來。也可以點單一實體進去,細調它要公開給哪幾個助理。
-
順手加別名(Alias)
點進單一實體後可以加別名。實體叫「客廳主燈」但你平常都講「大燈」,那就把「大燈」加成別名。你也可以從實體的資訊視窗右上角齒輪 → 語音助理 進去改。
-
把不該被喊的東西移除
門鎖、警報器、電熱水器、任何會發熱或有安全疑慮的東西,除非你真的想清楚了,否則從清單裡拿掉。
lock)跟警報主機(alarm_control_panel)公開給語音助理,等於任何站在你家窗外對著音箱喊話的人都可能開你家門。除非你完全清楚自己在幹嘛,預設就是不要公開。公開太多會怎樣
官方的最佳實務講得很直白:只公開最少必要的實體。原因有兩個,而且兩個都很痛:
| 用內建對話代理時 | 用 LLM 當對話代理時 |
|---|---|
| 名字跟別名越多,句型比對要掃的東西越多,反應越慢;名字相近還會誤中,你叫「房間燈」結果開到「房間空氣清淨機的指示燈」。 | 每一個公開的實體都會被塞進送給模型的提示裡,直接變成 token 成本,而且清單一長模型就開始選錯裝置。官方在 Ollama 的文件裡建議實驗本地模型時公開少於 25 個實體。 |
區域與樓層的別名
光公開實體還不夠。你要能說「把客廳的燈全部關掉」,前提是那些燈真的被指派到「客廳」這個區域。區域跟樓層也可以加別名:設定 → 區域、標籤與區間(Areas, labels & zones),點區域卡片上的鉛筆 → 新增別名;樓層則是點旁邊的三點選單 → 編輯樓層 → 新增別名。
Tuya Light Controller 0E54B1 Light 1 這種原廠名,語音助理是絕對叫不動的,趕快回第 4 章改名。動手做:組一條可以講話的流水線
這一節我們實際做出一個可以對著手機講話的助理。下面用「本地 Whisper + 本地 Piper + 內建代理」當範例,這是最省錢、隱私最好的起手式。
-
安裝語音轉文字 Add-on
到 設定 → 附加元件(Add-ons) → 附加元件商店,找到 Whisper,安裝後啟動。啟動前先進它的設定分頁,把
language改成你要用的語言,不要留auto。 -
安裝文字轉語音 Add-on
同一個商店裡找到 Piper,安裝後啟動。
-
接受 Wyoming 的自動探索
回到 設定 → 裝置與服務(Devices & services)。剛剛啟動的兩個 Add-on 會被 Wyoming Protocol 整合自動探索到,各按一次 新增(Add) 就好。如果沒自動跳出來,可以手動 新增整合 → 搜尋 Wyoming Protocol。
-
建立助理
到 設定 → 語音助理,按 新增助理(Add assistant)。取一個看得懂的名字(例如「家裡本地版」),選語言。
-
把四段零件裝上去
在同一個畫面裡:對話代理 選
Home Assistant;語音轉文字 選你剛加的 Whisper 並挑語言;文字轉語音 選 Piper 並挑語音變體。喚醒詞那一欄如果你還沒有實體語音裝置,可以先留著不管。 -
公開實體
切到 公開 分頁,照上一節把你要控制的燈、插座、風扇加進去。沒做這步的話,接下來一定叫不動。
-
用手機測試
打開 Companion App(第 7 章裝好的那個),右上角三點選單 → Assist。先打字測,能打字關燈之後再按麥克風講話測。
-
設成預設助理
一切都通了之後,回到 設定 → 語音助理,把這個助理設成預設。之後所有 Assist 入口都會走它。
configuration.yaml 裡加上一行 assist_pipeline: 再重啟。一般用 default_config: 的安裝不會遇到這個問題。雲端方案:Home Assistant Cloud 幫你做掉什麼
Home Assistant Cloud(背後的公司叫 Nabu Casa)是官方訂閱服務,錢會直接回到 Home Assistant 開發上。它跟語音有關的部分是兩件事:雲端語音轉文字和雲端文字轉語音。
| 項目 | 內容 |
|---|---|
| 價格 | 美國區 6.50 美元/月,或 65 美元/年;歐盟區 7.50 歐元/月,或 75 歐元/年。台灣的實際扣款金額看你信用卡走哪個區。 |
| 試用 | 官方標示 31 天試用 |
| 語音轉文字 | 官方支援清單裡有 Chinese (Taiwan) – zh-TW,另外也有 zh-CN、zh-HK 與粵語(yue-CN) |
| 文字轉語音 | 官方清單列出一百多個語言/口音變體,同樣包含 zh-TW,而且一種語言常常有好幾個聲音可挑 |
| 其他順便給的 | 遠端安全連線、雲端備份、Google Assistant 與 Alexa 串接等 |
設定方式很無腦:訂閱並登入之後,Home Assistant 會依你的地區語言自動建立一個助理。你只要到 設定 → 語音助理 選那個 Home Assistant Cloud 助理,確認語音轉文字、文字轉語音的語言,對話代理保持 Home Assistant,就可以用了。
接上 LLM:把腦袋換成大型語言模型
內建代理只認句型。當你想要「今天有點冷,幫我處理一下」這種模糊講法也叫得動裝置,或想要它回話有個性,就該把對話代理換成 LLM。
有哪些官方整合
| 整合名稱 | 你需要什麼 | 特點 |
|---|---|---|
| OpenAI Conversation | OpenAI API 金鑰 | 官方文件目前標示的預設模型是 gpt-4o-mini(下拉選單裡通常還有更新的模型可挑,模型清單變動很快,以你畫面上看到的為準)。這個整合會分出四種子項目(subentry):對話(Conversation)、AI Task、語音轉文字、文字轉語音。 |
| Google Generative AI | Google AI Studio 的 API 金鑰(有免費額度,但有速率限制,而且要在支援地區) | 同時提供對話代理、語音轉文字、文字轉語音三種實體。有「建議設定(Recommended settings)」開關,懶得調參數就開著。 |
| Anthropic | Anthropic Console 的 API 金鑰(需先開通付費) | 選項比較細:快取策略、思考預算、程式碼執行、網路搜尋等都可以開關。 |
| Ollama | 一台自己跑 Ollama 的機器 | 完全本地、不用付 token 錢。但控制功能官方標為實驗性,而且只有支援 Tools 的模型才能控制 Home Assistant。 |
設定流程
-
加整合
設定 → 裝置與服務 → 新增整合,搜尋你要的那一家(OpenAI、Google Generative AI、Anthropic、Ollama),照畫面填 API 金鑰或本地網址。
-
建一個新的助理
設定 → 語音助理 → 新增助理。取名字,然後在對話代理那一欄選剛剛加進來的那個 LLM。
-
調它的個性
在代理名稱旁邊的齒輪進去,會有一個提示範本(prompt template)欄位。你可以寫「你是一個講話很簡短的管家,回答不超過兩句話」,也可以寫「你是超級瑪利歐,講話要好笑」。這欄支援 Home Assistant 的範本語法,所以可以塞進即時資訊。
-
打開控制權限
同一個設定畫面裡找 控制 Home Assistant(Control Home Assistant)。這個一定要開,否則它只會跟你聊天,不會關燈。詳見下一節。
-
先用打字測
在代理的選單裡選「開始對話」,用打字測到穩定了,再把語音轉文字、文字轉語音掛上去。這樣出問題時你知道是哪一段爛掉。
讓 LLM 真的叫得動你家的燈
很多人接完 LLM 之後發現:它很會聊天,但叫它關燈它就開始瞎掰「好的,我已經幫你關閉客廳燈了」——然後燈還亮著。原因幾乎都是下面這三件事其中之一。
第一:控制開關沒打開
OpenAI、Google Generative AI、Anthropic 這三個整合,設定裡都有一個 控制 Home Assistant(Control Home Assistant) 的選項。打開之後,模型才會拿到 Home Assistant 的 Assist API 當工具(Tool)用。沒開就是純聊天機器人。
版本比較舊的話,同一個位置可能不是開關,而是一個下拉選單,選項寫著「無控制(No control)」跟「Assist」——選 Assist 就是把控制權打開,意思一樣。
第二:實體沒公開
這是最常見的。官方文件對這三家整合的說法都一樣:模型只能控制或查詢「已公開」的實體。開了控制權限但沒公開任何實體,等於給它一台沒有按鈕的遙控器。回到前面的「公開實體」那節做完。
第三:模型太小
如果你用的是 Ollama 跑本地小模型,官方文件講得很老實:小模型比大模型更容易出錯,而且開啟控制功能後,小模型可能無法穩定維持對話。官方甚至建議一個變通做法:開兩個 Ollama 設定,一個不開控制專門聊天,另一個開控制專門操作裝置。
省錢又保險的組合技:優先本地處理
在助理的三點選單裡有一個 優先在本地處理指令(Prefer handling commands locally) 的開關。打開之後,Home Assistant 會先讓內建的句型比對器試試看,比對得到就直接執行,比對不到才丟給 LLM。
這一招同時解決三個問題:
- 快:「開客廳燈」這種簡單指令走本地,幾乎零延遲。
- 省:日常八成的指令根本不會呼叫 API,不燒 token。
- 穩:關燈這種事交給不會亂想的比對器,比交給模型可靠。
讓 LLM 使用你的腳本
你在第 10 章寫的腳本(Script),也可以被公開給語音助理。這其實是「教 LLM 新技能」最乾淨的方式:把一串複雜動作包成腳本、取一個講人話的名字、公開出去,模型就會在適當時機呼叫它。比起讓模型自己拼湊十個動作,這樣穩定太多。
Model Context Protocol(MCP)現在是什麼狀況
MCP 是一套讓大型語言模型跟外部工具溝通的開放協定。Home Assistant 官方在部落格裡把它形容成「一層很薄的東西,讓 LLM 可以接上任何東西」。目前 Home Assistant 在 MCP 這件事上有兩個方向、兩個不同的整合,非常容易搞混,我們拆開講。
| MCP Server(伺服器) | MCP(用戶端) | |
|---|---|---|
| 方向 | 外面的 AI 來控制你家 | 你家的對話代理去用外面的工具 |
| 整合名稱 | Model Context Protocol Server | Model Context Protocol |
| 典型情境 | 用 Claude 或 ChatGPT 這類外部 App,直接叫它幫你關家裡的燈 | 讓你家的 Assist 對話代理多出「記憶」、「網路搜尋」之類本來沒有的能力 |
| 怎麼設定 | 設定 → 裝置與服務 → 新增整合 → Model Context Protocol Server,設定過程會問你要不要允許用戶端控制 Home Assistant | 設定 → 裝置與服務 → 新增整合 → Model Context Protocol,填 SSE 伺服器網址,需要驗證的話再填 OAuth 用戶端 ID 與密鑰 |
| 端點/驗證 | 對外開在 /api/mcp(要指定某一組 LLM API 的話是 /api/mcp/<api_id>,內建那組就是 /api/mcp/assist);驗證支援 OAuth(用 IndieAuth,用戶端 ID 就是那個 App 的網址,例如 https://claude.ai,Client Secret 用不到、隨便填或留空都行),不支援 OAuth 的用戶端則用長期存取權杖 | 目前只支援 MCP 的 Tools,還不支援 prompts、resources、sampling、notifications |
用戶端那個整合是在 2025.2 版加入的。設定完之後,它抓到的工具會像 Home Assistant 原生的 Assist API 一樣被丟給對話代理用——不過你還要另外去對話代理的設定裡把這些工具啟用。
/api/mcp 隨便暴露在沒有防護的公開網際網路上。遠端存取的做法請回附錄 A。把外部 AI 網頁掛進側邊欄
有時候你根本不需要串 API,只是想在 Home Assistant 的側邊欄按一下就跳到某個 AI 網頁,不用另外開分頁。這在平板掛牆上的情境特別有用。
panel_iframe: YAML 設定已經被「網頁(Webpage)」儀表板取代了。官方寫得很清楚:舊的 iFrame panel 設定會在升級時自動遷移成新的網頁儀表板,你不用手動改,但新設定不要再抄 panel_iframe,網路上教你貼那段 YAML 的文章都可以直接關掉。-
進儀表板設定
設定 → 儀表板(Dashboards)。
-
新增儀表板
按 新增儀表板(Add dashboard),在類型清單裡挑 網頁(Webpage)。
-
填名字、圖示、網址
取一個側邊欄上看得懂的名字,選一個圖示,填入你要嵌入的網址。
-
決定誰看得到
可以設定只有管理員看得到、以及要不要顯示在側邊欄。家裡有小朋友的話這格很有用。
-
按建立,然後測試
回到主畫面,側邊欄應該多一個項目,點下去就是那個網頁。
如果你只是想在某一個檢視裡塞一小塊網頁,而不是整個側邊欄項目,那用網頁卡片(Webpage card)就好,加卡片的方式跟第 6 章一樣。
要對著什麼講話:語音硬體
流水線設好了,但你總得有個東西聽你講。從最便宜到最爽,選項大概是這樣。
| 方案 | 成本 | 喚醒詞 | 適合場景 |
|---|---|---|---|
| Companion App(Android) | 免費 | 支援,可選 Hey Nabu/Hey Jarvis/Hey Mycroft | 隨身、外出、測試流水線 |
| Companion App(iPhone/iPad) | 免費 | 沒有內建喚醒詞;靠捷徑(Shortcuts)觸發,或用「語音控制」硬湊一個 | 隨身,但多半要動手按 |
| 舊平板掛牆 | 手邊有就免費 | 看瀏覽器與 App 支援 | 玄關、廚房固定點 |
| ESPHome 自製語音裝置 | 低(ESP32-S3 開發板等級) | 可用裝置端的 microWakeWord | 想自己焊、想塞進特定角落 |
| Home Assistant Voice Preview Edition | 官方建議售價 69 美元/59 歐元 | Okay Nabu/Hey Jarvis/Hey Mycroft,用 microWakeWord 在裝置上跑 | 想要一台放著就好、不折騰 |
Android 上怎麼叫出 Assist
- App 裡右上角三點選單 → Assist。
- 設成系統預設的數位助理之後,就能用手勢叫出來(從左下角往上滑、長按電源鍵,看你手機)。設成預設後也能從鎖定畫面啟動。
- 加桌面小工具:長按桌面 → 小工具 → Home Assistant → 拖出 Assist。
- 喚醒詞設定在 App 的 設定 → Companion app → Assist for Android。
iPhone 上怎麼叫出 Assist
- App 裡右上角三點選單 → Assist。
- 用 iOS 的「捷徑」App 建一個 Assist 捷徑,然後綁到你喜歡的觸發方式:背面輕點兩下、長按動作按鈕、控制中心、鎖定畫面小工具。
- 想要不動手:iOS 的語音控制(Voice Control)這個輔助使用功能可以自訂一句話(例如「Okay Nabu」)去觸發那個捷徑,算是 iPhone 上最接近喚醒詞的做法。官方也直說了,這條路比按按鈕或叫 Siri 慢,而且語音控制開著會一直在聽,自己斟酌。
- 注意:透過 Siri 觸發的捷徑,語言會跟著 Siri 的語言走,不是跟著你的流水線設定走。手動觸發的捷徑則可以指定語言——想要中英文各一個,就把捷徑匯入兩次、各設一種語言。
官方硬體:Voice Preview Edition
如果你懶得折騰,這是最省事的一台。裡面是 ESP32-S3(16MB flash、8MB PSRAM)加上 XMOS XU316 音訊晶片,負責回音消除、降噪跟自動增益——講白話就是「電視在放聲音的時候它還聽得到你」。雙麥克風陣列,內建喇叭也有 3.5mm 輸出孔,機身上有實體靜音開關、旋鈕音量、LED 燈環,還有一個 Grove 擴充埠可以接感測器。尺寸 84×84×21mm、96 公克。它不需要 Home Assistant Cloud 也能用,可以全本地跑,只是官方提醒全本地的完整體驗需要比較有力的主機(大約 Intel N100 等級起跳)。
順便一提:語音衛星可以主動找你講話
語音裝置不只是被動等你喊。assist_satellite 這個領域(Domain)提供三個動作,可以寫進自動化裡:
actions:
- action: assist_satellite.announce
target:
entity_id: assist_satellite.living_room
data:
message: 洗衣機洗好了
另外兩個是 assist_satellite.start_conversation(主動開啟一段對話)跟 assist_satellite.ask_question(問你一個問題並拿到你的回答)。第三個特別好玩:可以做出「偵測到有人開門 → 玄關的音箱問『要不要順便開客廳燈?』→ 你說要 → 燈就開」這種互動。
寫這種自動化很容易踩到一個坑:它正在跟人講話的時候,你又叫它播報,兩段話會互相蓋台。從 2026.2 起,自動化的條件(Condition)裡多了一組專門給語音衛星用的條件,可以判斷這台裝置現在是閒置、正在聽、正在處理、還是正在回話。播報前先加一個「閒置才播」的條件,家人講到一半被打斷的情況就沒了。
隱私、成本、延遲:三個東西不可能全拿
這一節沒有標準答案,只有給你做決定的表。
| 組合 | 隱私 | 金錢成本 | 反應速度 | 聽懂中文的能力 |
|---|---|---|---|---|
| 全本地(Whisper + 內建代理 + Piper) | 最好,聲音不出家門 | 零,但要一台夠力的主機 | 看 CPU,樹莓派上會明顯等 | Whisper 中文可以,但小模型會聽錯 |
| Cloud 語音 + 內建代理 | 聲音經過 Nabu Casa,官方聲明不儲存不訓練 | 約 6.5 美元/月 | 快,通常一兩秒內 | 好,官方支援 zh-TW |
| Cloud 語音 + 雲端 LLM 代理 | 聲音跟家中裝置清單都會送給 AI 供應商 | 訂閱費 + 每次對話的 token 費 | 最慢,多一次模型往返 | 最好,模糊講法也能懂 |
| 全本地 + Ollama 本地 LLM | 最好 | 零 token 費,但要顯卡等級的硬體 | 看你的機器,通常偏慢 | 看模型,小模型中文常出包 |
關於 token 花費,你該知道的心態
雲端 LLM 是按用量計費的,各家的單價一直在變,這裡不寫死數字(寫了很快就過期,去各家官網看最新價目)。但有幾個會讓帳單暴衝的原則是不會變的:
- 每一句話都會把你公開的實體清單送過去。公開 200 個實體跟公開 20 個,成本差一個數量級。
- 提示範本寫太長也是每次都在付錢。個性設定寫個三五句就好,不要寫小說。
- 「優先在本地處理指令」打開,日常關燈開燈根本不會呼叫 API。這是最有效的省錢開關。
- 先設定用量上限再把 API 金鑰貼進去。三家供應商的後台都可以設,去設。
常見卡關
-
叫不動任何裝置,它說「抱歉,我不知道那個」
九成是實體沒公開。去 設定 → 語音助理 → 公開 分頁確認那個實體在清單裡。第二個可能是你講的名字跟 Home Assistant 裡的名字對不上——它是拿實體的名稱或別名去比對的,差一個字就可能不算數,所以想到什麼講法就加什麼別名。第三個可能是它根本不在你以為的區域裡,回第 3 章檢查。
-
不知道問題出在哪一段
用官方的除錯工具。設定 → 語音助理 → 點你的助理 → 開啟除錯(Debug)對話框,從下拉選單挑你剛剛那一次執行,就能看到每一段各花了多久、辨識出來的文字是什麼。在除錯畫面右上角的圖示裡還可以選 Run text pipeline,直接打一句話跑完整條流水線。
-
只想知道句子有沒有被解析,不要真的執行
用 Assist 的句型測試工具:設定(Settings) → 工具(Tools) → Assist 分頁。它會告訴你這句話被解析成哪個意圖、鎖定了哪些實體,但不會真的動作。改名字、加別名之後拿它來驗收最快。
找不到「工具」的話看你的版本:2026.2 以前這一組工具叫「開發者工具(Developer tools)」,掛在左側欄最下面;2026.2 起它被搬進設定頁面的最下方,改叫「工具」。電腦上最快的走法是按 Ctrl + K(Mac 是 Cmd + K)打開快速搜尋,直接打「tools」或「開發者」。
-
它有反應但沒有聲音
先檢查 設定 → 系統 → 網路 裡的「本地網路 Home Assistant URL」是不是正確的。朗讀出來的音檔要靠這個網址讓裝置去抓,網址錯了就是有畫面沒聲音。如果你是純手寫 YAML 沒有用
default_config:,還要確認media_source:有加。 -
名字念不對、或每次都要講很饒舌的全名
加別名。設定 → 語音助理 → 公開 → 點該實體 → 新增別名。一個實體可以有多個別名,你家每個人講法不一樣就每種都加一個。中文特別容易遇到「口語簡稱」跟「正式名稱」不同的狀況,別名就是解法。
-
誤觸發:叫 A 卻開到 B
這是公開太多 + 名字太像的併發症。處理順序是:先砍掉不需要公開的實體,再把剩下容易搞混的重新命名成「區域 + 描述」的格式。官方最佳實務也提醒,實體的領域(Domain)跟裝置類別(Device class)要設對——你沒辦法叫 Assist「打開」一個被歸類成開關的閥門。
-
本地 Whisper 慢到想哭
三個方向:把
language從auto改成固定語言(官方說 auto 會慢很多);模型往下調(tiny-int8、base-int8這種 int8 壓縮版);或是把語音轉文字換成 Home Assistant Cloud,把本機留給對話代理。Whisper 的beam_size預設是0,代表在 ARM 機器上自動用 1、其他機器用 5——數字越大越準但越慢。 -
喚醒詞常常沒反應,或半夜自己醒來
先確認你的喚醒詞是跑在裝置上(microWakeWord)還是主機上(openWakeWord)。跑在主機上時,官方提到一台樹莓派 4 大約同時支撐 5 台衛星串流,超過就會開始卡。裝置端的問題則多半是麥克風增益或降噪設定,用 ESPHome 調整那台裝置的設定。
-
LLM 說它做了但其實沒做
模型幻覺的經典場景。檢查順序:整合設定裡的 控制 Home Assistant 有沒有開 → 那個實體有沒有公開 → 模型是不是太小(本地小模型開啟控制後可能連對話都撐不住)。改善做法是打開「優先在本地處理指令」,讓確定性高的指令根本不經過模型。
-
嵌進側邊欄的網頁是一片空白
對方網站用安全標頭禁止被 iframe 嵌入,這是它們決定的,你改不了。換一個網站,或改用「在新分頁開啟」的做法。另外檢查 HTTPS/HTTP 有沒有混用。
常見問題
我一定要付錢訂 Home Assistant Cloud 才能用語音嗎?
內建 Assist 跟接 ChatGPT 差在哪?我一定要接 LLM 嗎?
把 API 金鑰貼進 Home Assistant,我家的資料會被拿去訓練模型嗎?
我可以叫語音助理開門鎖或解除保全嗎?
lock 或 alarm_control_panel 的實體公開就行),但強烈不建議。語音沒有辦法可靠地分辨是誰在講話,站在門外對著窗戶喊也可能被聽到。如果你真的要做,至少改成用腳本包一層,加上額外的條件(例如某支手機必須在家、某個時間區間內),並且清楚知道自己承擔什麼風險。第 10 章有腳本的寫法。中文講不太準,有什麼優化順序?
Assist 聽不懂我某個特定講法,可以自己教它嗎?
configuration.yaml 裡擴充現有意圖:conversation:
intents:
HassTurnOn:
- "activate [the] {name}"更完整的做法是在設定資料夾裡開 config/custom_sentences/<語言代碼>/ 目錄(英文就是 config/custom_sentences/en/)放 YAML 檔,可以自己定義意圖、清單、數值範圍,甚至改掉它回你的句子(同目錄放一個 responses.yaml)。改完之後重新啟動一次 Home Assistant 最保險。一台音箱可以同時服務講中文的我跟講英文的家人嗎?
MCP 到底要不要碰?
/api/mcp),或是想給家裡的對話代理加上額外工具例如記憶、網路搜尋(用 Model Context Protocol 用戶端整合,2025.2 版加入,目前只支援 Tools)。兩者都牽涉到把控制權交出去,設定前先把「公開實體」的清單縮到最小。我把外部 AI 網站掛進側邊欄,結果一片空白,是我設錯了嗎?
panel_iframe: YAML 設定已經被「網頁」儀表板取代(升級時會自動遷移),現在請用 設定 → 儀表板 → 新增儀表板 → 網頁。可以在自動化裡「叫 AI 幫我做事」嗎?
conversation.process 動作,把一段文字丟給指定的對話代理處理,等於用程式的方式跟 Assist 講話。第二條是 AI Task(2025.7 版加入的建構區塊整合),提供 ai_task.generate_data 跟 ai_task.generate_image 兩個動作,專門用來在自動化裡產生文字、結構化資料或圖片,例如「看一眼攝影機畫面,數一下車道上有幾台車」。這比自己拼一大堆範本乾淨很多。