ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

把一块 ESP32 变成会说话的 AI 伙伴:xiaozhi-esp32 完整上手指南

把一块 ESP32 变成会说话的 AI 伙伴:xiaozhi-esp32 完整上手指南 把一块 ESP32 变成会说话的 AI 伙伴xiaozhi-esp32 完整上手指南【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32想让家里那块闲置的 ESP32-S3 开发板变成一个能被语音唤醒、会显示表情、还能反过来帮你按灯的 AI 小助手xiaozhi-esp32小智 AI 聊天机器人就是为这件事准备的开源固件。它把离线唤醒、语音识别、大模型对话、MCP 多设备控制这些能力全部塞进几块钱的芯片里覆盖 ESP32 到 S3、P4 共六类芯片平台适配 130 多种开发板。先想清楚你拿它想做什么在动手前先按使用场景挑一条主线后面选型、接线、写代码都会更顺。三种典型玩法桌面聊天伙伴用带屏幕的开发板M5Stack CoreS3、ESP32-S3-BOX-3、LILYGO T-Circle-S3 等日常闲聊、问答、讲冷笑话屏幕上同步显示表情与歌词。机器人 / 舵机控制参考 main/boards/otto-robot/ 示例让大模型通过 MCP 调用self.otto.jump这类工具让机器狗真的跳起来。智能家居入口把固件跑在带 4G 的板子上用语音控制家里的灯和插座通过云端 MCP 扩展到桌面操作、邮件查询等能力。它是什么给 ESP32 装上大脑和手脚xiaozhi-esp32 的核心思路是把设备端做成薄客户端把算力压力留给云端。架构分两层感官层设备本地麦克风拾音、离线唤醒词检测ESP-SR默认你好小智可自定义、Opus 编码上行同时负责 TTS 下行解码、OLED/LCD 表情渲染、电池与按键管理。相关源码集中在 main/audio/。决策层云端ASR、LLMQwen / DeepSeek 等、TTS 全部放在服务端设备只做流式收发延迟低、对芯片算力要求小。两种传输通道可选WebSocket默认低延迟全双工与MQTT UDP音频走 UDP、指令走 MQTT弱网更稳。详细说明见 docs/websocket.md 与 docs/mqtt-udp.md。一次对话如何走完协议与数据流从你好小智到回答出声本地 AFE 唤醒词引擎在静音/闲聊中命中唤醒词触发 main/audio/wake_words/ 下的回调。设备与后台握手hello消息里声明能力例如features: { mcp: true, ... }。你说话 → Opus 流上行 → 云端 ASR → LLM 推理 → TTS → Opus 流下行 → 扬声器播放。大模型想调用设备能力时通过tools/call发起请求设备执行后返回结果。MCP给大模型配一把万能遥控器MCPModel Context Protocol本质是 JSON-RPC 2.0 的一套约定设备把自己能做的事包装成工具Tool大模型通过工具名加参数就能隔空遥控你的硬件。想控制灯、想摇舵机、想读电池都用同一套消息格式。完整消息结构见 docs/mcp-protocol.md实战示例见 docs/mcp-usage.md。三条上手路径选一条就能开工按你手上有什么、想改多深走对应路径。路径一官方固件5 分钟通电最简单注册官方控制台账号下载对应板子的官方固件直接刷入。默认连官方服务器个人免费使用 Qwen 实时模型适合只想体验、不想搭环境的读者。路径二面包板 DIY理解每一根线没有成品开发板用 ESP32-S3 模组加 I2S 麦克风、I2S 扬声器杜邦线直连即可。接线与音频链路细节见 docs/v0/ 与 docs/v1/ 里的示例图麦克风和扬声器都是 I2S 接口插对方向就能出声。路径三从源码构建改到满意为止需要 ESP-IDF v6.0.2主线推荐加 C/C 工具链Linux 下编译更快、驱动问题更少。git clone https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 cd xiaozhi-esp32选目标芯片然后一键编译烧录idf.py set-target esp32s3 idf.py build flash monitor板子选型在 main/boards/每个目录一份config.json加若干.cc文件menuconfig里切一下目标板即可。进阶玩法让机器人听懂你的指令注册一个 MCP 工具想让大模型说让 Otto 跳两次时它真的跳只需在板级代码里加一段mcp_server.AddTool(self.otto.jump, 让机器人跳跃, PropertyList({ Property(steps, kPropertyTypeInteger, 1, 5), Property(period, kPropertyTypeInteger, 1000, 3000) }), [](const PropertyList p) { Otto().Jump(p[steps].valueint(), p[period].valueint()); return true; });云端调用长这样{ jsonrpc: 2.0, method: tools/call, params: { name: self.otto.jump, arguments: { steps: 2, period: 1500 } }, id: 1 }实现入口在 main/mcp_server.cc完整机器人示例在 main/boards/otto-robot/otto_robot.cc。自定义唤醒词与表情唤醒词用 ESP-SR 训练工具重训任意短语替换 main/assets/locales/ 下对应语种的提示音。表情 / 背景LVGL 图像转换脚本在 scripts/Image_Converter/OGG 语音打包在 scripts/ogg_converter/改完重新编译即可替换。常见问题排查现象大概率原因处理唤醒不到麦克风太远或背景太吵靠近声源先在安静环境验证语音卡顿网络抖动切到 MQTTUDP 通道或改走有线舵机 / 灯不响应工具未注册或参数类型错先用tools/list确认工具存在编译失败ESP-IDF 版本不对升级到 v6.0.2参考 docs/esp-idf-6-migration.md调试音频用 scripts/audio_debug_server.py能实时看到唤醒与 VAD 状态排查蓝牙配网看 docs/blufi_zh.md。MIT 协议开源免费商用。项目仓库GitHub_Trending/xia/xiaozhi-esp32如果你也做出了有意思的玩法欢迎提 Issue 或 PR把新板子、新工具、新教程贡献进来一起把 ESP32 的语音生态做大。【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表