news 2026/9/8 21:47:13

30 分钟,让 ESP32 开口说话:xiaozhi-esp32 ESP32 AI 语音助手上手指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
30 分钟,让 ESP32 开口说话:xiaozhi-esp32 ESP32 AI 语音助手上手指南

30 分钟,让 ESP32 开口说话:xiaozhi-esp32 ESP32 AI 语音助手上手指南

【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32

想让开发板"会聊天"?单片机固件、音频驱动、大模型接口三件事压过来,多数人还没动手就放弃了。xiaozhi-esp32 把这个过程压到一次编译烧录:刷进 ESP32 后,离线唤醒、流式语音识别、自然对话全链路就绪,AI 能力通过 MCP 协议外挂。本文带你从裸板到第一次对话。

🔭 先看看它能干什么:唤醒、流式对话、控制硬件一样不少

装完固件,你能直接拿到三样东西:

  1. 离线唤醒 + 实时对话。唤醒词检测跑在板子上的 ESP-SR 引擎,语音上传后既走流式"识别 + 大模型 + 合成"链路,也支持 Realtime 端到端语音模型;带 AEC 回声消除的板子可以边说边听,全双工互不打断。
  2. 本地硬件听大模型指挥。调音量、改屏幕亮度、切换主题、拍张照片,都是大模型对话中的一句指令。固件内置 38 种界面语言(main/assets/locales/),练外语口语可以直接切目标语言。
  3. 云端能力随意扩。设备端 MCP 只管本地硬件,查天气、控智能家居、操作 PC 桌面这类重活交给云端 MCP,两边走同一套 JSON-RPC 2.0 格式。

⚙️ 它内部怎么跑起来的:把 ESP32 本身当成一台 MCP 服务器

整个项目最核心的设计选择只有一个:设备端不写"AI 逻辑",而是把自己注册成 MCP 服务器。开机连上后端后,固件向云端上报一张"工具清单"——每一项对应板子上一个真实动作,代码在 main/mcp_server.cc 的AddTool里,比如self.audio_speaker.set_volume调音量、self.screen.set_brightness设亮度、self.camera.take_photo拍照并解释画面。

大模型拿到这张清单后,对话中"把音量调到 30"这类话就会变成一个工具调用,板子执行完把结果回传。反过来,云端也可以把自己的服务(天气、智能家居)挂成 MCP 工具,设备侧代码不用改一行。

补充三句就够:传输层有 WebSocket 和 MQTT + UDP 两套实现(main/protocols/);音频走 Opus 流式编解码;工程基于 ESP-IDF v6.0.2。

🧰 动手之前先备齐:板子选型和工具链版本清单

硬件按预算选,三种档位:

用途推荐型号理由
最低成本试水面包板 + ESP32-C3/S3 + I2S 麦克风 + 小喇叭几十块钱跑通全链路,接线与引脚参考 main/boards/bread-compact-esp32/
完整体验M5Stack CoreS3麦克风、喇叭、屏幕、按键一体,到手就能用
要屏幕表情微雪 ESP32-S3-Touch-AMOLED 系列触摸交互,表情和 UI 呈现效果好

工具链与环境各一条:

  • 工具链:Cursor 或 VSCode 装 ESP-IDF 插件,版本首选v6.0.2(主线已迁移到 IDF 6,v5.5 只留给文档明确标注的旧板子);Linux 下编译明显更快,也更省驱动折腾。
  • 网络条件:一个能正常连 Wi-Fi 的室内环境,手机随时待命——首次配网要连设备热点;芯片平台覆盖 ESP32、C3、C5、C6、S3、P4,S3 生态最成熟,新手优先。

🚀 跟着做,让它第一次跑起来:从裸板到开口对话

第 1 步:拿到代码

git clone https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 cd xiaozhi-esp32

验收信号:目录里能看到main/(固件源码)、docs/(协议与板卡文档)、partitions/(分区表),README 中文版在README_zh.md

第 2 步:装好编译环境

在 IDE 里安装 ESP-IDF v6.0.2 插件。验收信号:插件状态栏显示当前 IDF 版本为 6.0.2,而不是残留的 5.x。

第 3 步:menuconfig 里锁定你的板子

idf.py set-target esp32s3

然后运行idf.py menuconfig,进入Xiaozhi Assistant -> Board Type选中你的板卡;没有对应型号就选"面包板 ESP32 DevKit"这类基础项,再补上屏幕/音频的开关选项。验收信号:对应的CONFIG_BOARD_TYPE_*已经写进当前 sdkconfig(esp32s3 目标默认就是bread-compact-wifi)。

第 4 步:编译并烧录

idf.py build && idf.py flash

验收信号:build 以Project build complete收尾,flash 输出Wrote ... bytes后串口监视器立刻开始滚动启动日志。完全不想搭环境的话,也可以直接下现成固件烧录,默认接官方服务器,注册账号后免费用 Qwen 实时模型。

第 5 步:配网激活,等第一声提示音

开机后设备开启 Wi-Fi 热点(或 BluFi 模式),手机连上热点,按向导填入家里 Wi-Fi 密码。设备重启联网、完成激活后,对着它说唤醒词。验收信号:听到提示音、屏幕表情变化,随便说句话得到回答——链路全通了。

🛠️ 把它变成自己的:三个改起来最划算的方向

  • 加一个设备端工具。打开 main/mcp_server.cc,仿照self.audio_speaker.set_volume写一个AddTool:起个名字、描述用途、定义参数、给个回调,几十行搞定。大模型下次上线就能"看见"并调用它。
  • 适配自己的硬件。在 main/boards/ 下新建目录,按 docs/custom-board_zh.md 在config.h里把麦克风、喇叭、按键的引脚写对,再补一个config.json声明目标芯片。照着现有板卡抄,几十行定义就能把新板子接进来。
  • 换传输协议或自建后端。main/protocols/websocket_protocol.cc 和 mqtt_protocol.cc 是两套完整实现,私有化部署时照协议文档自建服务端即可,细节见 docs/websocket_zh.md 与 docs/mcp-usage_zh.md。

🩹 出问题时自己救:三个新手最高频的坑

坑 1:编译直接报依赖错现象:装的是 5.x 老环境,依赖组件解析失败。先查什么:插件显示的 IDF 版本。怎么解决:主线需要ESP-IDF v6.0.2,v5.5 只保留给文档明确标注的旧板卡;升级插件后按 docs/esp-idf-6-migration.md 核对你这块板子的验证状态。

坑 2:开了 BluFi,设备却只给热点现象:明明启用了 BluFi 配网,设备还是走 Wi-Fi 热点。先查什么:menuconfig 里WiFi Configuration Method的当前选择。怎么解决:热点模式优先级更高,两个配网方式会打架,把 Hotspot 选项关掉再编译,详见 docs/blufi_zh.md。

坑 3:语音时灵时不灵,对话断流现象:偶尔没反应、声音截断。先查什么:供电(换足功率的 USB 电源,别用笔记本共享口);再看串口日志里有没有音频断流打印。怎么解决按场景走:

场景调什么怎么调
电池供电整机功耗缩短单次交互时长,空闲让设备进深度睡眠
响应慢后端链路换 WebSocket 传输,并挑延迟低的模型
唤醒词误触发唤醒词本身用官方工具重训一个更短、更独特的唤醒词

最后,一句话收个尾

xiaozhi-esp32 的价值,就是让一块几十块钱的 ESP32 独立扛下"唤醒到对话"整条链路,AI 部分全靠 MCP 协议外挂,想加能力不用动硬件。最短路径就五步:

  1. clone 仓库
  2. 装 ESP-IDF 6.0.2 插件
  3. menuconfig 选板子
  4. build 加 flash
  5. 手机连热点配网

卡住时按图索骥:

  • docs/ 官方文档目录;自定义板卡看 docs/custom-board_zh.md;MCP 协议交互流程看 docs/mcp-protocol_zh.md;传输协议细节看 docs/websocket_zh.md 和 docs/mqtt-udp_zh.md。

【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 21:46:54

btop:在终端快速上手 NVIDIA/AMD/Intel 显卡性能监控

btop:在终端快速上手 NVIDIA/AMD/Intel 显卡性能监控 【免费下载链接】btop A monitor of resources 项目地址: https://gitcode.com/GitHub_Trending/bt/btop 游戏掉帧、渲染卡顿,瓶颈到底在 CPU 还是 GPU?用 btop 做终端显卡监控可以…

作者头像 李华
网站建设 2026/9/8 21:46:20

3 步配好 Agent Zero 模型配置:Ollama 本地模型与 API 密钥一次接通

3 步配好 Agent Zero 模型配置:Ollama 本地模型与 API 密钥一次接通 【免费下载链接】agent-zero Agent Zero AI framework 项目地址: https://gitcode.com/GitHub_Trending/ag/agent-zero Agent Zero 模型配置只需要看一个页面。Agent Zero 是一款能统一接入…

作者头像 李华
网站建设 2026/9/8 21:45:46

opencode 终端 Agent 实战:模型自由切换、代码修改与团队协作

这个月我的终端里只剩两类窗口:编辑器,和 opencode。如果你所在的技术群里最近总有人发截图,一个深色终端里 AI 在刷刷刷地改代码,那基本就是它。opencode 是一个开源终端编码 Agent,不绑定任何一家模型厂商&#xff0…

作者头像 李华
网站建设 2026/9/8 21:45:41

用Hermes搭建GitHub PR自动化审查体系:从部署到实战复盘

那个周四下午,我们主分支上的一个bug直接引爆了线上告警。追查下来,问题不在测试覆盖,而在三天前一条被合入的PR——负责审查的同事当时正在开另一个会,用手机扫了一遍diff,留下一句LGTM,刷新页面就去忙别的…

作者头像 李华
网站建设 2026/9/8 21:44:53

RPCS3汉化补丁完整教程:5步把PS3游戏切换成中文

RPCS3汉化补丁完整教程:5步把PS3游戏切换成中文 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 装上RPCS3汉化补丁,被语言卡住的PS3游戏立刻变得可读。这篇教程从环境准备…

作者头像 李华
网站建设 2026/9/8 21:43:31

Ryujinx 使用指南:在 PC 上运行 Switch 游戏的完整步骤

Ryujinx 使用指南:在 PC 上运行 Switch 游戏的完整步骤 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx 是一款用 C# 编写的开源 Nintendo Switch 模拟器,让你在电脑里运行 .xc…

作者头像 李华