Skip to content

局域网本地语音 + LLM 中控

架构拓扑

[ESP32 麦克风阵列]
▼ (Opus 音频流 - Wyoming 协议)
[家庭服务器 / 端侧 NPU]
├── 语音唤醒 (openWakeWord)
├── 语音转文字 (faster-whisper)
├── 语义决策 (本地 LLM + Function Calling)
└── 文本转语音 (Piper TTS)
▼ (REST / WebSocket / MQTT)
[Home Assistant / 智能设备]

核心选型

拾音前端

  • ESP32-S3 Box 3:官方参考设计,集成双麦 + 屏幕
  • ReSpeaker 4-Mic Array:XMOS 4 麦 + 3.5mm 输出
  • ATK-DLMP258B / DFRobot SEN0539:国产替代,性价比高

计算底座

硬件算力跑 LLM跑 Whisper适合场景
树莓派 5 (8GB)1.5B Q4tiny.en验证 / 极轻量
Intel N100 mini-PC7B Q4small.en主流方案
NVIDIA Jetson Orin Nano7B Q5 + 视觉medium.en全栈
Apple M2 Mac mini极强14B Q4large-v3重度

Agent 协议

  • MCP (Model Context Protocol):Anthropic 提出,标准 LLM ↔ 工具协议
  • Home Assistant Tool API:HASS 内置 REST + WebSocket
  • OpenAI Function Calling:兼容 GPT / Qwen / Llama 工具调用

部署步骤

  1. 硬件:N100 小主机 + 1 × ESP32-S3 拾音 + 1 × Home Assistant
  2. 服务栈Home Assistant + Rhasspy / Wyoming + Ollama + OpenWakeWord
  3. 集成:通过 HASS 官方 conversation 组件 + 自定义 LLM API 暴露设备
  4. 离线优先:Whisper / Piper 模型本地化;只在大模型上做意图分类

⛔ 别这么做 (Anti-patterns)

经验证的坑 —— 跳过 = 至少浪费半天,严重的烧板 / 锁机。

❌ 错误做法💥 后果⚠️ 风险范围
不要在断电前直接拔 Valetudo 改装中的 USB-TTL刷机中途断电 = 变砖。先 dmesg 确认串口没掉再操作。🟡智米扫拖一体 / Roborock S5 Max
不要把米家设备 token 上传到任何第三方云token = 设备控制权,泄漏 = 任何人可远程开门。🔴所有米家 / Aqara 设备
不要在生产 HA 配置里直接编辑 configuration.yaml 后 check_config 不通过就 reload错的 reload 会让 HA 启动失败 → 所有自动化停摆。用 configuration.yaml 备份 + git 版本化。🟢Home Assistant
不要给 Frigate 摄像头内网用 admin/admin 默认密码RTSP / ONVIF 默认账号 = 局域网裸奔。先改密码。🟡海康 / 大华摄像头
不要在 ESPHome 设备上直接 OTA 升级到主版本 (major)主版本常改 NVS 分区。OTA 升级后启动失败 = 拆壳刷机。先 flash USB 一次。🟡ESP32-S3 语音卫星 / 智能开关
不要在智能家居自动化里写死设备 IPDHCP 重启后 IP 变 = 自动化失效。用 hostname / mDNS / 静态租约。🟢Home Assistant / Hubitat
不要在 Matter 设备首次配对时关掉手机蓝牙Matter 配对 = BLE → WiFi handover,全程需要蓝牙。🟢Aqara M3 / Apple Home

🚨 风险总览 (Risk Matrix)

风险等级含义例子
🟢 低改错可回滚 / 几分钟恢复pip 全局装包、DHCP IP 写死
🟡 中需要重新刷机 / 重装 / 1-2 小时恢复装错 ROS 2 版本、没 OTA 升级看版本
🔴 高不可逆 / 烧板 / 安全风险电池反接、micro-ROS 没看门狗、刷机中途断电

参考资料