第 9 章:語音對話
本章目標:接入小智 AI 雲端服務,與 NanoCam 進行自然語音對話。
關於本章
本章涉及 XiaoZhi AI 模式(ai_mode:6)。重要:模式 6(語音對話)和模式 7(ESP-Claw)共用同一份固件(nanocam_espclaw/),只是設備啟動時根據 NVS 中儲存的 ai_mode 值載入不同的 MCP 工具集。
| 對比維度 | XiaoZhi AI (mode 6) | ESP-Claw (mode 7) |
|---|---|---|
| 語音對話 | ✅ ASR→LLM→TTS | ✅ 同一條語音管線 |
| MCP 工具 | 通用工具(音量/拍照等) | 通用工具 + 5 個硬體專用工具 |
| 視覺理解 | self.camera.take_photo | self.camera.inspect_image (多模態視覺) |
| LED 控制 | ❌ | ✅ 語音調色 |
| 適用場景 | 通用 AI 對話、兒童教育 | 硬體控制、視覺巡檢、智能家居 |
本章聚焦 **XiaoZhi AI(模式 6)**的語音對話核心功能。想了解 ESP-Claw 硬體控制能力,請閱讀第 11 章:ESP-Claw 語音控制。
原理
NanoCam 整合了小智 AI 開源框架,透過 WebSocket / MQTT 協議連接 LLM 伺服器實現完整語音互動流水線:
用戶說話 → ES8311 麥克風採集 → Opus 編碼
→ WebSocket → 雲端 ASR 語音識別
→ LLM 大模型生成回覆
→ TTS 語音合成 → Opus 解碼
→ NS4150B 功放 → 揚聲器播放全雙工設計:用戶在 AI 說話時可以直接打斷(barge-in),體驗接近真人對話。
硬體需求
本章涉及音頻功能,需要以下硬體:
NanoCam 核心板(含 ES8311 Codec + AP2718AT 麥克風)
NanoCam 底板(含 NS4150B 功放 + CH340K)
揚聲器(接到底板揚聲器接口,VON/VOP)
僅核心板也可以測試(透過 ES8311 耳機輸出監聽)。麥克風為 AP2718AT 模擬 MEMS 矽麥,透過 C26 隔直電容接入 ES8311 MIC1P。
步驟
9.1 燒錄 XiaoZhi AI 固件
XiaoZhi AI 使用 nanocam_espclaw/ 獨立固件項目:
cd nanocam_espclaw
idf.py set-target esp32s3
idf.py build
idf.py -p COMx flash monitor啟動後默認即 XiaoZhi AI 模式。
9.2 連接 xiaozhi.me 雲端服務
NanoCam 出廠默認連接 xiaozhi.me 官方雲端服務(免費),無需自建伺服器。
在 xiaozhi.me 註冊帳號
設備上電後自動播報 6 位激活碼
在 xiaozhi.me 控制台輸入激活碼 → 綁定設備
在控制台選擇 LLM 模型(Qwen / DeepSeek 等)
激活只需一次,之後每次上電自動連接。
9.3 首次對話
聽到提示音後即可對話:
你: "你好小智,今天天氣怎麼樣?"
NanoCam: "我幫你查一下今天的天氣..."喚醒詞為 「你好小智」(默認)。
9.4 常用對話場景
💬 "講個笑話" → AI 語音回答
💬 "幫我設個5分鐘的鬧鐘" → 鬧鐘功能
💬 "現在幾點了" → 報時
💬 "播放一首輕音樂" → 聯網播放音樂
💬 "什麼是黑洞" → 知識問答自部署伺服器(可選)
如果對私隱有要求,或希望使用自建 LLM,可以部署小智 AI 開源伺服器端:
git clone https://github.com/xinnan-tech/xiaozhi-esp32-server
cd xiaozhi-esp32-server
pip install -r requirements.txt
python app.py固件的伺服器地址透過 OTA 系統(sdkconfig 中的 CONFIG_OTA_URL)下發,設備上電後自動請求伺服器地址。
XiaoZhi AI 使用小智 AI 開源伺服器端(WebSocket 私有協議 + ASR/LLM/TTS 管線)。ESP-Claw 模式在此基礎上,視覺分析功能由伺服器端在 MCP 握手階段下發 Vision API URL 和 token,固件無須自行配置。
故障排除
| 症狀 | 可能原因 | 解決 |
|---|---|---|
| 聽不到聲音 | 揚聲器未連接 | 檢查底板揚聲器接口 |
| 語音識別不準 | 環境噪音太大 | 靠近麥克風說話(距離 < 1m) |
| 無法連接 | WiFi 未配置 | 先用串口配網 sta_ssid:xxx |
| 沒有激活碼 | 首次啟動未完成 | 等待 30 秒,設備會自動播報 |
| 回答很慢 | LLM 伺服器端延遲 | xiaozhi.me 選擇更快模型,或自建伺服器 |
串口配網等完整指令見串口協議手冊。
下一章:第 10 章:AI 視覺理解

