ESP32 语音助手实现:¥57 开发板接大模型,MCP 控制硬件
一块 ESP32 开发板能不能当作大模型的语音交互入口?答案是能。本文介绍的开源项目 xiaozhi-esp32(GitHub 28.9k Star,MIT 协议),把 ESP32 变成了一个 LLM 语音终端:设备采集音频、流式上传云端大模型、再把生成的语音播出来,中间还能通过 MCP 协议调用本机外设。最便宜的官方板卡 ¥57 起,大模型走免费的 Qwen 实时接口。
一、项目定位与技术背景
传统的智能音箱链路是「麦克风 → 厂商云端识别 → 厂商云端回答 → 喇叭」,四个环节全部被厂商锁死。xiaozhi-esp32 的思路是把这四段整体替换成开源实现,每一段都可以换。
从技术上看,它之所以能跑在 MCU 上,是因为推理不落在本地:ESP32 只做三件事——采集音频、通过 WebSocket 把音频流推给服务器、把服务器返回的 TTS 音频播出来。重计算全部在云端完成,所以一块带麦克风和功放的 ESP32-S3 就能胜任。
固件默认连接官方服务器 xiaozhi.me,注册账号即可免费使用 Qwen 实时模型;要完全自建,社区提供了 Python / Java / Go 三套服务器实现,可接入任意兼容 OpenAI 接口的模型。

二、硬件选型对比
官方提供了 138 个板卡目录、171 个固件变体,覆盖 ESP32 / C3 / C5 / C6 / S3 / P4 全系。选型只判断一件事:是否需要离线语音唤醒。
| 板子 | 参考价 | 离线唤醒 | 说明 |
|---|---|---|---|
| 虾哥 Xmini-C3(官方设计) | ¥57-79 | ❌ | 入门方案,官方调优 |
| 立创实战派 ESP32-C3 | ¥128 | ❌ | 带屏幕,可看对话 |
| 立创实战派 ESP32-S3 | ¥148 | ✅ | 唤醒 + 屏幕,性价比高 |
| 酷世DIY SP-V3 | ¥119 起 | ✅ | 可接 4G / 锂电池 |
| 乐鑫 ESP32-S3-BOX-3 | ¥299 | ✅ | 生态完整,官方兜底 |
价格来自 xiaozhi.me 官方开发板文档页,为官方参考价。最低成本路线是自焊:ESP32-S3 最小系统板 + 麦克风 + 功放 + 喇叭,按官方《小智 AI 聊天机器人百科全书》接线,约 ¥38。上图即官方 README 的面包板接法。
内存配置是实际门槛:Flash 至少 16MB、PSRAM 至少 4MB,否则固件刷不进去,详见第五节的踩坑记录。
三、实操步骤:刷固件与配网
官方提供编译好的 bin 固件,无需安装 ESP-IDF 工具链。
运行环境要求:Python 3.x(用于安装 esptool 烧录工具),Windows / macOS / Linux 均可。
# 1. 从 Releases 下载对应板子的固件 zip(如立创实战派 S3:v0.x.x_lichuang-dev.zip)
# 解压得到 .bin 固件与烧录说明
# 2. 安装烧录工具(esptool 或乐鑫官方 Flash 下载工具均可)
pip install esptool
# 3. 按住 BOOT 接 USB,执行烧录
esptool.py --chip esp32s3 --port /dev/ttyUSB0 write-flash 0x0 firmware.bin
烧录完成后上电,设备会开启配网热点,手机连接后选择 Wi-Fi,扫码登录 xiaozhi.me 绑定设备即可。全过程约 10 分钟,官方飞书文档有逐步配图。
四、MCP:从语音交互到设备控制
xiaozhi-esp32 与普通智能音箱的核心差异在于 MCP(Model Context Protocol)——一套让大模型调用外部工具的标准协议。它把 MCP 做到了设备端:注册一个工具,模型就能在对话中自动调用。

// 注册一个 MCP 工具:设置 RGB 灯颜色
mcp_server.AddTool("self.light.set_rgb", "设置RGB颜色", PropertyList({
Property("r", kPropertyTypeInteger, 0, 255),
Property("g", kPropertyTypeInteger, 0, 255),
Property("b", kPropertyTypeInteger, 0, 255)
}), [this](const PropertyList& properties) -> ReturnValue {
int r = properties["r"].value<int>();
int g = properties["g"].value<int>();
int b = properties["b"].value<int>();
SetLedColor(r, g, b);
return true;
});
这段代码完成三件事:命名工具(self.light.set_rgb)、声明用途、定义三个整数参数并挂回调。之后用户说「把灯调成橙色」,模型解析意图 → 经 MCP 触发 self.light.set_rgb(255, 165, 0) → 灯点亮。
需要强调一点:MCP 在设备端和云端都可以挂工具。设备端可控制喇叭、灯、舵机、GPIO;云端 MCP 还能接智能家居、PC 桌面操作、知识搜索、邮件。简言之,MCP 就是模型的「手」,注册什么工具就能操作什么。
官方还内置声纹识别、自定义唤醒词、表情屏、摄像头视觉输入。社区已有人用它驱动机器狗和桌面机器人——注册一个 self.dog.forward 工具,说句话设备即动。
五、常见问题与踩坑
Flash 容量不足。 8MB Flash 的 ESP32-S3 模块刷机反复报错,换 16MB Flash + 8MB PSRAM 模组(MCN16R8)才成功。下单前确认 Flash ≥ 16MB、PSRAM ≥ 4MB。
C3 系不支持离线唤醒。 Xmini-C3、立创 C3 需按键或手机 App 触发;要「喊一声就醒」得上 S3 系,官方文档每块板子旁均有标注。
新版存在回归。 Issue #1090 报告无法语音调音量,#1099 报告 WebSocket 推送语音时硬件只显示文字无声音。活跃项目迭代快,遇到问题先查 Issues。
免费模型有额度。 个人账号 Qwen 实时模型有免费额度,长对话会中断;重度使用建议自部署社区服务器(Python 版 xiaozhi-esp32-server 最成熟),可换任意模型。
六、总结与适用边界
结论:如果你要的是一个不交会员费、不被厂商生态绑定、还能用语音控制自己硬件的 AI 助手,xiaozhi-esp32 值得上手——¥38 的开发板加 ¥38 的麦克风功放,配一个免费 Qwen 账号即可跑通。
需要明确的边界是:它本质是联网语音终端,断网时只剩唤醒和简单本地逻辑,智能全部在云端,不能当作离线语音识别方案。设备能力上限取决于你在 MCP 里注册了多少工具——这是它与普通智能音箱真正的分界线。
更多推荐


所有评论(0)