小智xiaozhi-esp32:MCP驱动的ESP32语音助手
【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32
把唤醒词说出口之后,大约一秒内会发生一串事:屏幕表情切换、麦克风开始流式上传、云端把语音转成文字并交给大模型推理,最后大模型没有只回一句文本,而是让设备把音量调小、把灯带点亮。这条链路就是 xiaozhi-esp32 的日常——一个基于 MCP 协议、跑在 ESP32 系列芯片上的开源 AI 语音助手固件,仓库名 xiaozhi-esp32,定位很直接:本地硬件负责采集和执行,云端模型负责思考,两边用同一套协议对话。
⚡ 能力速览
- 离线语音唤醒:基于 ESP-SR 在本地完成唤醒词识别,没喊名字之前语音不会出设备,同时支持自定义唤醒词
- 流式语音对话:Opus 音频流直传,兼容流式 ASR+LLM+TTS 方案和 Realtime 端到端语音模型,带 AEC 的硬件可做到实时全双工
- 设备端 MCP:大模型可以直接调用固件内置的工具集——音量、灯光、电机、GPIO,硬件变成模型的"手脚"
- 云端 MCP:同一套协议反向扩展模型能力,智能家居、PC 桌面操作、知识搜索、邮件收发都挂在云端工具上
- 多传输多网络:WebSocket 与 MQTT+UDP 两种通道可选,Wi-Fi、以太网、USB RNDIS 以及 Cat.1 4G 模块都能接入
🔁 工作原理:一次完整交互的时序
按时间线走一遍,比罗列模块更清楚各部分怎么协作。
- 本地唤醒。用户说唤醒词,ESP-SR 在片上完成识别。这一步不联网,隐私和功耗都守住了。
- 建连与能力声明。唤醒成功后固件打开音频通道(WebSocket 或 MQTT+UDP),设备先发出 hello 消息,在 features 字段里声明
"mcp": true,并带上 Opus 音频参数:16kHz、单声道、60ms 帧。 - MCP 会话初始化。后端识别到设备支持 MCP 后,用 JSON-RPC 2.0 格式的 initialize 请求发起会话,设备返回自身名称与固件版本。
- 语音流式处理。麦克风数据以 Opus 帧持续上行,云端完成流式识别、语义理解,回复的 TTS 音频流式下行播放,屏幕同步显示对应表情。
- 工具调用。如果意图涉及硬件操作,后端发 tools/call 请求,设备端的 MCP server 解析出工具名与参数,执行音量、灯光、GPIO 等动作后返回结果。也就是说,MCP 在这里是"设备当服务端、后端当客户端"的工具调用机制——模型不需要知道任何板卡细节,它只调用声明好的工具。
硬件层面同样按抽象设计:所有开发板收敛在 main/boards/ 目录下,通用外设(按键、背光、电池监控、摄像头)抽到 common/ 复用,音频、显示、协议各有独立模块。目前维护着 138 个板卡目录、171 个发布变体,覆盖 ESP32、C3、C5、C6、S3、P4 六个芯片平台。新增一块板,本质只是加一个目录加一份配置。
⚙️ 从零到跑通:最短可行路径
- 获取代码(新手也可以跳过编译,直接烧录仓库发布区里的现成固件):
git clone https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 cd xiaozhi-esp32- 配置开发板与参数:
idf.py menuconfig- 在配置界面选中你手头的板卡目录,确认服务器与配网方式(热点或 BluFi),然后
idf.py build flash烧录。 - 上电后用手机热点完成首次配网,说出唤醒词即进入对话。
🛠️ 进阶玩法:定制、扩展与调优
| 方向 | 做法 |
|---|---|
| 自定义唤醒词 | 用 ESP-SR 流程录制语料训练,把默认唤醒词换成专属短语 |
| 界面个性化 | 在 assets 中更换字体、表情与聊天背景,38 种界面语言可选,缺词自动回退英文 |
| 云端能力扩展 | 实现新的 MCP 工具(接 Home Assistant、PC 自动化、搜索服务),注册到云端工具列表即可被模型调用 |
| 电池场景 | 降低唤醒检测频率、配合深度睡眠,代码内置电源管理与休眠定时器 |
| 识别不准 | 优先安静环境、麦克风靠近声源,其次再调音频处理参数 |
协议、配网与自定义板卡的细节文档都放在 docs/ 下,按 websocket_zh、mqtt-udp_zh、custom-board_zh 分篇,排障时对照着查比翻代码快。
适合谁,下一步做什么
如果你正在找一个低成本、可长期维护的 ESP32 语音助手底座,或是想给自己的设备接上"听得懂话、动得了手"的 AI 层,这个项目目前完成度在同类里靠前。最直接的下一步:挑一块你手头已有的板子,先烧现成固件跑通一轮对话,再决定要不要进编译流改东西。
【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考