← 返回文章
ASSEMBLY MANUAL

🎙️ ESP32-S3 本地端 AI 語音助理 — 組裝說明書

ESP32 全系列 × 3D 列印實作系列 · 第 45 篇 · 文件版本 v1.0(2026-11-03)

⏱️ 總工時:約 100 分鐘(不含 3D 列印與 NAS 部署) 🎯 難度:★★★★☆ 中進階 🔧 工具:十字起子、烙鐵、斜口鉗、序列埠終端、curl

🧰 零件與工具確認

① 音箱腔體 ×1(PLA 深綠) ② 上蓋含 MIC 減震座 ×1 ③ 燈環導光圈 ×1(乳白) ④ 壁掛支架 ×1(選配) ⑤ ESP32-S3 N16R8 ×1 ⑥ INMP441 ×1 ⑦ MAX98357A ×1 ⑧ 4Ω 3W 喇叭 ×1 ⑨ WS2812 12 燈環 ×1 ⑩ 船型靜音開關 ×1 ⑪ 5V 2.5A USB-C 電源 ×1 🔧 十字起子、烙鐵 🖥️ NAS(Docker、RAM ≥10GB)
💡 先確認 NAS 記憶體:whisper int8 吃 2GB + qwen2.5:7b 吃 8GB。不夠就跑 base+1.5B 小模型,體驗打八折但一樣全內網。
1

列印與腔體後處理

⏱️ 列印約 6.5 小時🎯 難度 ★☆☆☆☆
密閉腔 260cc(內壁封孔漆×2) φ52 喇叭(前板外鎖) 倒相孔 φ22×40mm → 調諧 65Hz MIC 聲孔導音柱(上蓋側)
  1. 依文章設定列印 4 件;腔體 28% 三角填充、牆厚 2.4mm。
  2. 腔體內壁噴 acrylic 封孔漆兩遍(每遍間隔 30 分鐘)——漏音封住,低頻差一檔變一檔。
  3. 喇叭孔鎖牙預留 M3×4,攻牙後試鎖喇叭確認不壓框。
⚠️ 倒相孔長度是調諧參數,列印時不要擅自縮短——65Hz 變 90Hz,人聲立刻變對講機。
2

MIC 減震小板

⏱️ 15 分鐘🎯 難度 ★★★☆☆
INMP441 小板 聲孔對導音柱 上蓋減震座 四角發泡墊卡位——喇叭低音不會「搖麥克風」
  1. INMP441 焊到 3×4cm 小 PCB 上(SCK/WS/SD/GND/VDD 五點),線預留 10cm。
  2. 小板四角套發泡墊,卡進上蓋減震座——聲孔正對導音柱,歪了高頻衰一半。
  3. L/R 腳飛線接地(左聲道,跟韌體設定一致)。
💡 裝好後彈一下桌角聽錄音回放:減震做好的話,敲桌聲應該是悶的;尖銳「鏘」一聲就是硬連接了。
3

喇叭、功放與燈環

⏱️ 20 分鐘🎯 難度 ★★☆☆☆
喇叭(前板) MAX98357A 貼壁散熱(B 類會熱) OUT±(正負別接反) 燈環朝前 + 導光圈
  1. 喇叭前板外鎖(螺絲從外進,框內無突出);OUT+ / OUT− 接喇叭 + / −,接相了低音會虛。
  2. MAX98357A 雙面膠貼腔壁(離喇叭 ≥8cm、離 MIC 導音柱 ≥10cm)。
  3. 燈環 12 燈朝前卡進上蓋,導光圈壓住;DIN 串 330Ω 焊回主板。
⚠️ 功放 VIN 直接從 5V 端子走,不要經板載 3V3/LDO——喇叭峰值一拉就保護重啟,而且你只會看到「它偶爾失憶」。
4

靜音開關:物理隱私接法

⏱️ 15 分鐘🎯 難度 ★★★☆☆
3V3 船型開關 開關後段(偵測點) → MIC VDD 100k 100k → GND GPIO12 分壓中點
  1. 3V3 → 開關一腳;開關另一腳 → MIC VDD,同時並一支線到 GPIO12 分壓中點。
  2. 開關裝側板,「靜音」位露出紅色標記——肉眼可讀的隱私狀態。
  3. 燒錄前先用萬用表驗證:撥靜音,MIC VDD 必須是 0.00V 而不是 1.xV 的懸浮感應電壓。
⚠️ 這顆開關只能斷麥克風,別手巧去斷整機電源——韌體連 Wi-Fi 都斷不了,斷整機就沒人報錯給你聽了。
5

NAS 三件套部署(組裝前先通)

⏱️ 20 分鐘🎯 難度 ★★★☆☆
ESP32-S3 只有 WAV 進出 gateway :8090 FastAPI 閘道 faster-whisper :8091 base int8 · 2GB Ollama :11434 qwen2.5:7b · 8GB edge-tts(台灣腔語音)
  1. NAS 上建 voice/:貼上文章的 docker-compose.yml + gateway/app.py,docker compose up -d。
  2. 拉模型:ollama pull qwen2.5:7b(首次約 4.7GB,內網跑一晚)。
  3. 冒煙測試:拿手機灌一句 WAV curl -T test.wav http://NAS:8090/asr_say → 應該吐「文字+回答」兩行。
  4. curl "http://NAS:8090/tts?text=你好" 應該回一段 16k WAV——能播就過關。
💡 三件套全綁內網防火牆:gateway 8090 只準 192.168.8.0/24 進——這台助理的哲學是資料不出家門,包括不進網際網路。
6

燒錄與 WakeNet 喚醒校準

⏱️ 25 分鐘🎯 難度 ★★★★☆
[sr] wake: xiao-tian-xiao-tian [sr] score 0.712 thr 0.55 OK [mic] 3.28V mute=off [sr] rejected tv-noise 0.31 A. 1m 內三呼三中 B. 電視最大聲 30 分不喚 C. 開關撥靜音→燈全滅
  1. Arduino IDE:板型 ESP32S3 Dev Module、PSRAM OPI、Flash 16MB、分區 16MB。燒錄。
  2. 序列埠 115200 看 WakeNet score:喚醒成功應 > 0.55;連呼三次都 < 0.45 先查 MIC L/R 接地與減震。
  3. 調 setMinimumFeeback(0.2 靈→0.4 鈍)跑 A/B 兩關;電視新聞聯播聲是最好的假陽性試紙。
  4. 靜音開關撥下:燈環必須全滅、序列埠 mute=on——燈跟實體開關同步,這顆助理才算合規。
⚠️ 喚醒詞請用官方支援的中文詞表(hilexin 系)——自創發音 = WakeNet 永遠聽不懂,這是新手最常見的卡關點。
7

合蓋、擺位與端到端验收

⏱️ 15 分鐘🎯 難度 ★★☆☆☆
水槽 助理 MIC 朝操作檯 45° 離水槽 ≥40cm(水花比你想的遠) Mic 聲孔朝站立視線
  1. 上蓋卡扣合上(先確認燈環沒有被導光圈頂高翹起);壁掛版上牆。
  2. 擺位三原則:MIC 朝常站位置、離水槽 ≥40cm、離微波爐 ≥1m(磁控幹擾 I2S 會偶發爆音)。
  3. 端到端验收:「小天小天」→ 青燈;「現在幾點了」→ 橙燈 <1s → 藍燈開口,全程 ≤3 秒。
  4. 拔 NAS 電源重測:助理應改用本地指令報時+「NAS 沒回應」語調——斷奶測試通過,交機 🎉
💡 每週看一次 gateway 日誌的「未攔截指令」清單:出現三次以上的高頻句子,就把它提拔進 localCommand——三週後你就有一台 80% 指令秒回的助理。

♻️ 保養與回收

  1. 燈環導光圈發黃(PLA 怕 UV)一年一換,改乳白 PETG 可根治。
  2. MIC 減震發泡墊半年檢查粉化,粉化了用 3M 泡棉替。
  3. 腔體封孔漆两年後可能龜裂漏音——重噴一遍就回春,不用重印。