第 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 视觉理解

