ESP32-S3-BOX-3 部署 Home Assistant 本地化語音助理、3 種個性化方式教學 – Home Assistant 手把手教學 EP 10

透過語音控制智慧家庭大家應該再熟悉不過了,甚至在手機上大家也很常用 Hey Siri 或是 OK Google…等方式呼叫語音助理,延續上一篇:

我們將 Home Assistant 的語音助理更換成 Google Gemini 或是 ChatGPT,讓 Home Assistant 語音助理的回應不會像 Siri 這麼生硬也更聰明,甚至可以依照自己的喜好賦予人設,但不過當時還只能打字互動。

今天帶大家使用 ESP32-S3-BOX-3 來建置 Home Assistant 自家語音助理,這比起透過 HomeKit Bridge 或 Google Home 整合將裝置同步到 HomeKit 或 Google Home,再使用 Siri 或是 Google Assistant 語音控制來得更直接,也更可以依照自己的喜好打造更適合的語音助理 👍

先讓大家看看最終的效果:

很棒吧!這麼簡單就可以體驗古代皇帝的生活 🤣

不囉唆,我們開始吧!


ESP32-S3-BOX-3 開箱

ESP32-S3-BOX-3 開箱圖

內容物:

  1. ESP32-S3-BOX-3 本人:這就是主機,不管其他配件插上電也可以直接使用。
  2. DOCK:底座,上面有接口可以再串接其他的裝置。
  3. SENSOR:和 DOCK 差不多作用,但多了溫濕度傳感器、紅外線發射器\接收器、雷達傳感器、充電電池插槽、MicroSD 插槽,雖然今天都用不到,但因為比較帥所以我用這個 🤣
  4. BRACKET:轉接用配件,可以用這個把主機安裝在其他裝置上。
  5. BREAD:轉接用配件,用來和麵包板 (Breadboard) 連接。
  6. 傳輸線
  7. RGD 模組、杜邦線

以今天我們要做的事,其實可以買「ESP32-S3-BOX-3B」就好,包含主機和 DOCK,其他的都不會用到,你要買的時候考慮一下。


Step 1. 安裝並啟動 ESPHome 附加元件

Step 1-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 1-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 1-2. 安裝「ESPHome」

  1. 右下角點選「附加元件商店」
右下角點選「附加元件商店」
  1. 找到「ESPHome」並點擊
找到「ESPHome」並點擊
  1. 安裝「ESPHome」
安裝「ESPHome」
  1. 開啟 Watchdog、自動更新、於側邊欄顯示
  2. 點擊「啟動」
開啟 Watchdog、自動更新、於側邊欄顯示、點擊「啟動」
  1. 「ESPHome」啟動完成!
「ESPHome」啟動完成!

Step 2. 安裝 openWakeWord 附加元件

Step 2-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 2-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 2-2. 安裝「openWakeWord」

  1. 右下角點選「附加元件商店」
右下角點選「附加元件商店」
  1. 找到「openWakeWord」並點擊
找到「openWakeWord」並點擊
  1. 安裝「openWakeWord」
安裝「openWakeWord」
  1. 開啟 Watchdog、自動更新
  2. 點擊「啟動」
開啟 Watchdog、自動更新、點擊「啟動」
  1. 「openWakeWord」啟動完成!
「openWakeWord」啟動完成!

Step 3. 新增「openWakeWord」整合

Step 3-1. Home Assistant 左側「設定」 ➜ 「裝置與服務」

Step 3-1. Home Assistant 左側「設定」 ➜ 「裝置與服務」

Step 3-2. 設定「openWakeWord」整合

  1. 這時候會在「已掃描」區塊出現「openWakeWord」,點擊「設定」
  2. 系統會詢問是否使用 Wyoming Protocal,點擊「傳送」
  3. 在成功訊息視窗點擊「完成」
這時候會在「已掃描」區塊出現「openWakeWord」,點擊「設定」
系統會詢問是否使用 Wyoming Protocal,點擊「傳送」
在成功訊息視窗點擊「完成」

Step 4. 設定語音助理喚醒詞

Step 4-1. Home Assistant 左側「設定」 ➜ 「語音助理」

Step 4-1. Home Assistant 左側「設定」 ➜ 「語音助理」

Step 4-2. 選擇語音助理

Step 4-2. 選擇語音助理

Step 4-3. 設定喚醒詞

  1. 喚醒詞引擎選擇「openwakeword」
  2. 喚醒詞選一個你自己喜歡的,這裡示範選擇「ok nabu」
喚醒詞引擎選擇「openwakeword」
喚醒詞選一個你自己喜歡的,這裡示範選擇「ok nabu」

到這裡就把喚醒詞設定好啦~接下來進行 ESP32-S3-BOX-3 的安裝和設置!


Step 5. 安裝、設置 ESP32-S3-BOX-3

⚠️ 注意!如果過去有安裝過 S3 BOX,務必先到「設定 > 裝置與服務 > ESPHome」找到 S3 BOX 並刪除 ⚠️

Step 5-1. 刷 ESP32-S3-BOX-3 韌體

  1. 前往 ESPHome 專案網站:https://esphome.io/projects/index.html
  2. 選擇「Voice assistant」
  3. 選擇「ESP32-S3-BOX-3」
  4. 點擊「Connect」
前往 ESPHome 專案網站:https://esphome.io/projects/index.html選擇「Voice assistant」選擇「ESP32-S3-BOX-3」點擊「Connect」
  1. 將 ESP32-S3-BOX-3 透過傳輸線連接到你的電腦
  2. 選擇 ESP32-S3-BOX-3 裝置
  3. 點擊「連線」
將 ESP32-S3-BOX-3 透過傳輸線連接到你的電腦選擇 ESP32-S3-BOX-3 裝置點擊「連線」
  1. 選擇「Install ESP32 S3 Box 3」
  2. 點擊「Install」
  3. 點擊「Next」
選擇「Install ESP32 S3 Box 3」點擊「Install」點擊「Next」

Step 5-2. 設定 WiFi 連線

輸入家中的 WiFi 連線資訊並點擊「Connect」

輸入家中的 WiFi 連線資訊並點擊「Connect」

Step 5-3. 將裝置加入 Home Assistant

  1. 點擊「Add to Home Assistant」
點擊「Add to Home Assistant」
  1. 確認 Home Assistant 實體位址
    預設是 “http://homeassistant.local:8123″,如果你在安裝 Home Assistant 時有自己變更,記得這裡要換成可以連接到 Home Assistant 的 URL!
  2. 點擊「Open Link」
確認 Home Assistant 實體位址
預設是 "http://homeassistant.local:8123",如果你在安裝 Home Assistant 時有自己變更,記得這裡要換成可以連接到 Home Assistant 的 URL!點擊「Open Link」
  1. 這時候你會自動被帶到 Home Assistant 整合列表中,在彈跳視窗中選擇「好」
  2. 在新增所發現的裝置選單中選擇「ESP32 S3 Box 3」
  3. 彈跳視窗中選擇「傳送」
這時候你會自動被帶到 Home Assistant 整合列表中,在彈跳視窗中選擇「好」在新增所發現的裝置選單中選擇「ESP32 S3 Box 3」彈跳視窗中選擇「傳送」

Step 6. 檢查 ESP32-S3-BOX-3 整合是否成功

  1. Home Assistant 左側欄「設定」>「裝置與服務」
  2. 找到 ESPHome 點擊裝置數
Home Assistant 左側欄「設定」>「裝置與服務」找到 ESPHome 點擊裝置數

這時候有看到 ESP32-S3-BOX-3 相關裝置資訊,並可以進行靜音、螢幕開關那你就整合成功啦!

這時候有看到 ESP32-S3-BOX-3 相關裝置資訊,並可以進行靜音、螢幕開關那你就整合成功啦!

試著和語音助理對話吧!

同場加映 – 個性化你的語音助理

只是換成有腦的語音助理肯定還是太無聊對吧?!試試看更改人設、自訂顯示圖片和自訂喚醒詞吧!

更改人設

  1. 點擊對話助理選單右側 ⚙️
  2. 在指示中新增你想要它扮演的角色
  3. 點擊「傳送」
點擊對話助理選單右側 ⚙️在指示中新增你想要它扮演的角色點擊「傳送」

這樣就可以更換成各式各樣你喜歡的人設啦!跟我分享你喜歡換成什麼人設?🤣

自訂語音助理顯示圖片

坦白說預設的顯示圖片真的太無聊了對吧!那就換張圖試試吧!你甚至可以換成你自己的照片 (如果你夠自戀 🤣),就好像有另外一個自己在幫你處理大小事,帥吧~

在開始之前,先看下圖了解 Home Assistant 語音助理的 6 種狀態:

Home Assistant 語音助理的 6 種狀態
Image credit: Home Assistant

① 進入 ESPHome web UI

通常會在側邊欄,如果沒有就到「設定 > 附加元件」找找

進入 ESPHome web UI

② 將 ESP32-S3-BOX-3 納入管理 (ADOPT)

這會讓你可以調整各種設定,完成後你會看到右上角的狀態從 DISCOVERED 變為 ONLINE

ESP32-S3-BOX-3 納入管理 (ADOPT)
Image credit: Home Assistant
ESP32-S3-BOX-3 納入管理 (ADOPT)

③ 選擇圖片素材或製作圖片素材

在 Home Assistant 的 Github repository 裡有分享給大家取用的素材,如果你像我一樣沒什麼美術天份,可以直接從裡面找一個你喜歡的。

當然你也可以自己畫,或是讓 AI 幫你畫,並參考格式和規範產出相關圖片素材檔案:

  1. 尺寸:320×240,如果提供的素材不是 4:3 比例,那剩下的區域會用背景色 (background color) 填滿。
  2. 圖片格式:PNG, JPEG, SVG。
  3. 在圖片裡,你可以使用兩種背景色,用以大致區分語音助理處於活躍或非活躍狀態:
    • loading、idle 狀態:深色背景。
    • listening、thinking、replyig 狀態:淺色背景。
    • error 狀態:深色或淺色背景都行。
  4. 如果你的圖片背景留透明,後面步驟可以在 configuration 中設定背景色 (background color)。
  5. 將 6 張圖做好放到一個資料夾裡
  6. 將包含 6 張圖的資料夾放到 config/ESPHome 的資料夾中

④ 編輯 ESP32-S3-BOX-3 設定檔

在 ESPHome web UI 中找到 ESP32-S3-BOX-3 並點擊「EDIT」

編輯 ESP32-S3-BOX-3 設定檔

這時候你會看到 yaml 編輯器,像這樣:

編輯 ESP32-S3-BOX-3 設定檔

如果你是選用 Home Assistant Github repository 素材庫,將下列代碼放到 substitutions 區塊中:
※ 記得把路徑換成你想要的素材路徑

YAML
substitutions:
  loading_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/loading.png
  idle_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/idle.png
  listening_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/listening.png
  thinking_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/thinking.png
  replying_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/replying.png
  error_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/error.png

如果你是自製素材,將下列代碼放到 substitutions 區塊中,並設定各狀態的背景顏色 (如果圖片是透明背景):
※ 將範例中的 voice_assistant_gfx 更換為你的素材資料夾名稱
※ 記得更換各狀態的背景顏色 (下面範例中 line 8~13)

YAML
substitutions:
  loading_illustration_file: voice_assistant_gfx/loading.png
  idle_illustration_file: voice_assistant_gfx/idle.png
  listening_illustration_file: voice_assistant_gfx/listening.png
  thinking_illustration_file: voice_assistant_gfx/thinking.png
  replying_illustration_file: voice_assistant_gfx/replying.png
  error_illustration_file: voice_assistant_gfx/error.png
  loading_illustration_background_color: '000000'
  idle_illustration_background_color: '000000'
  listening_illustration_background_color: 'FFFFFF'
  thinking_illustration_background_color: 'FFFFFF'
  replying_illustration_background_color: 'FFFFFF'
  error_illustration_background_color: '000000'

⑤ 儲存並安裝

這個步驟會依據你使用的硬體環境而安裝時間會有所不同,耐心等待一下吧!完成後就可以在螢幕上看到新的顯示圖片啦!~

※ 我使用樹莓派 4 + 8G RAM (Raspberry Pi 4 Model B/8G) 大概跑了 30 分鐘

儲存並安裝

意外發現這樣蠻適合我的桌面搭配的 🤣

ESP32-S3-BOX-3 桌面搭配

ESP32-S3-BOX-3 還有很多可以玩的,也有國外大神自製韌體讓 BOX 的觸控螢幕有更多功能,未來也會找時間來試試。

希望今天這篇可以對已經加入 Home Assistant 的你在建置本地化語音助理有幫助,也歡迎在下方留言和我互動囉!👋

8 COMMENTS
  1. Hi Neil,
    我follow 完設定後跟ESP32 講話都沒有喚醒他,ESP32一直都是待機的畫面,請問是不是要註冊跟付費HA Cloud 才能使用這樣的語音功能?

  2. hi Neil您好,請問printf輸出中文是黑方塊能怎麼解決呢,換了幾個字體都還是一樣?

    • 自己試出來:D
      本來以為glyphs不加就是全字集都有
      結果一定要加才有
      不好意思打擾了

      – file: “https://github.com/notofonts/noto-cjk/raw/refs/heads/main/google-fonts/NotoSerifTC%5Bwght%5D.ttf”
      id: font_response
      size: 15
      glyphs: ‘${allowed_characters}’

  3. 請問搭配sensor並按您文章內容完成設定及韌體燒錄後,HA中會有溫濕度,紅外線傳送接收的實體出現嗎?

LEAVE A REPLY

Please enter your comment!
Please enter your name here

你可能會喜歡
最近的討論
  • Neil 2025/07/09Hi Victor, 不太影響,到新家網路通了之後再整體測試一下就好。 關於開關,我個人一直是不太建議改 86 盒,雖然會讓選擇變很多,但是要考慮一下未來房子轉手和未來可能的維修買料的問題,而且 118 也不是沒有好用的選擇Home Assistant 安裝步驟詳解,快速打造智慧家庭 – 手把手教學 EP 1
  • Victor 2025/07/09你好,預計今年底會完成裝潢,想學著搭建智能家庭,關於建立樹莓派的第5點,我需要等到新家後再連結有線網路嗎? 還是不影響,可以先搭建好樹莓派,等搬家過後不會有影響能直接使用呢?(目前一直在研究裝潢要先準備的事項,除了開關中性線也很猶豫有沒有需要使用86規格的盒子,還是也使用vizo 就可以) 非常新手問題,抱歉 乙太網路線:雖然你買的 樹莓派 Raspberry Pi 可能有支援 WiFi 連線,不過為了讓 Home Assistant 有穩定的網路和考慮到未來遠端控制需要固定 IP,還是建議用有線網路會比較合適。Home Assistant 安裝步驟詳解,快速打造智慧家庭 – 手把手教學 EP 1
  • salvia 2025/07/04腳本從MQTT執行 sequence: – data: payload: >- {“ir_code_to_send”: “填入IR碼”} topic: zigbee2mqtt/Tuya ZS06 IR Remote/set action: mqtt.publish alias: “AC Remote: Turn off” mode: single description: “”Home Assistant 如何透過 Zigbee2MQTT 接入 (幾乎) 所有 Zigbee 設備 – Home Assistant 手把手教學 EP 2
  • ycyc 2025/07/03冒昧的想請問一下 ,塗鴉ZS06研究了好幾天 還是不知道該如何發送訊息 我在https://www.zigbee2mqtt.io/devices/ZS06.html文中說透過zigbee2mqtt/FRIENDLY_NAME/set 發布做以下的事情 一直不知到如何可以輸入下面的code 目前做到zigbee2mqtt點入後可以搜到設備,在頁面也可以學習,並且點兩下手動測試發送,但遲遲無法設定自動發送 請問有相關經驗可以分享嗎 謝謝Home Assistant 如何透過 Zigbee2MQTT 接入 (幾乎) 所有 Zigbee 設備 – Home Assistant 手把手教學 EP 2
  • bdg game 2025/07/03這篇文章寫得非常詳細!對於新手來說,Home Assistant 的安裝步驟一目了然,相信會讓很多人更容易入門智慧家庭的世界。期待後續的教學!Home Assistant 安裝步驟詳解,快速打造智慧家庭 – 手把手教學 EP 1
  • Loïc 2025/06/27謝謝你的回應,抱歉比較晚才回覆。 我先以zigbee下去規劃,如果有甚麼淘寶上的開關再來和你分享! 感謝!2025 Home Assistant 入坑完全指南 – SMART HOME 智慧家庭 EP 7
  • Neil 2025/06/25Hi Frank, 1. 對切迴路在使用零火開關的狀況下確實是不需要,但我自己還是有留,以免未來換屋時新屋主需要 2. 智慧開關搭配智慧燈具的狀況就比較複雜,燈具處一定會有中性線,如果你的燈具本身就是單獨控制,那你只需要在開關處把火線和負載線直接接通 (同時分接給開關,這時候開關實際上不影響燈具),這樣燈具就常時有電,再透過智慧中樞控制每盞燈的亮度、色溫,並且設定開關切換連動燈具 我目前的選擇是智慧開關搭配傳統嵌燈,因為我們家不太有控制亮度和色溫的需求,當然有是很好,但使用率夠不夠高你就需要依照使用需求自己評估了~零火開關多切設定教學 – Home Assistant 手把手教學 EP 8
  • Frank 2025/06/25Neil大大您好,近期我家中準備要做智能家居,設計師有給了估價單,目前在燈具以及開關上遇到難題 估價單中包含了對切開關迴路、開關迴路、電燈迴路 我詢問了人之後得到的回覆是,不需要對切開關迴路,因可透過智能開關後台設定 但其他迴路(開關迴路、電燈迴路)仍是必要的 另外除了智能開關要拉中性線之外,智能燈具也必須每一顆拉中性線,才能個別控制每一顆的亮暗程度、開關、色溫;不然就是要用傳統燈具有支援色溫、明亮控制的,再轉接控制器藏在天花板內,這個做法比較省錢,可以一次控制一整個迴路的燈具,但是沒辦法個別控制 以上理解是否有誤?當初您家中燈具又是怎麼選擇的呢?感謝解惑零火開關多切設定教學 – Home Assistant 手把手教學 EP 8
  • Neil 2025/06/09Hi Loïc, 目前我還是會建議以 zigbee 為主,淘寶的開關我就沒什麼研究了,如果想要便宜一點的可以考慮 Aqara2025 Home Assistant 入坑完全指南 – SMART HOME 智慧家庭 EP 7
你可能會喜歡