最近想给孩子制作一个 AI 玩具,把他现在的玩具,加上 LLM + ASR + TTS 能力,成为他的一个 AI 小伙伴,刚好关注到开源作者“虾哥”的这个项目「小智 AI 聊天机器人 (XiaoZhi AI Chatbot)」(链接见阅读原文),今天和朋友们一起看看这个项目,如果你也想给孩子做 AI 玩具,这个项目很适合入门上手 👍🏻
一、项目概览
-
定位:面向硬件开发者的 AI 语音交互开发框架
-
核心功能:
-
离线语音唤醒(ESP-SR)
-
多语言语音识别(SenseVoice 支持中/英/日/韩等)
-
流式语音对话(WebSocket/UDP)
-
大模型集成(Qwen/DeepSeek/Doubao)
-
语音合成(火山引擎 或 CosyVoice)
-
声纹识别(3D Speaker)
-
物联网设备控制(IoT 指令下发)
-
多模态交互(LCD/OLED 显示 + LED 反馈)
-
-
开源协议:MIT 许可证,允许商业使用
-
硬件兼容性:支持 30+ 种开发板(ESP-BOX/M5Stack/立创开发板等)
二、技术架构解析
- 硬件抽象层(HAL)
-
目录结构:
main/boards/包含各开发板驱动 -
关键设计:
-
使用
Board单例类抽象硬件操作(GetDisplay(),GetAudioCodec()) -
通过 Kconfig 选择开发板类型,编译时动态加载对应驱动
-
统一接口支持多种显示屏(OLED/LCD)、音频编解码芯片(ES8388/ES8311)
-
- 音频处理流水线
// 音频输入处理流程(application.cc)
codec->OnInputReady([this, codec]() {
// 采集音频 -> 重采样 -> Opus 编码 -> 发送到服务器
input_resampler_.Process(input_buf, resampled_buf);
opus_encoder_->Encode(resampled_buf, opus_data);
protocol_->SendAudioData(opus_data);
});
// 音频输出处理流程
void Application::PlaySound(...) {
opus_decoder_->Decode(opus_data, pcm_data);
output_resampler_.Process(pcm_data, output_buf);
codec->WriteOutput(output_buf);
}
-
关键技术:
-
Opus 低比特率编码(60ms 帧长)
-
动态重采样(适配不同硬件采样率)
-
回声消除/降噪处理(ESP-SR)
-
- 通信协议
-
协议选择:通过 Kconfig 配置 WebSocket 或 MQTT+UDP
-
WebSocket 协议要点:
-
二进制帧传输 Opus 音频
-
JSON 消息控制状态机(监听/说话/IoT指令)
-
心跳机制维持长连接
-
消息示例:
-
{
"type": "tts",
"state": "start",
"text": "你好,有什么可以帮您?"
}
- AI 能力集成
-
语音唤醒:ESP-SR 离线引擎
-
语音识别:SenseVoice 支持实时 STT
-
语音合成:火山引擎 或 CosyVoice
-
自然语言处理:通过 WebSocket 对接云端 Qwen/DeepSeek/Doubao
-
声纹识别:3D-Speaker 实现用户识别
三、关键代码模块
| 模块 | ||
| 文件 | ||
| 功能描述 | ||
| 状态机管理 | ||
| application.cc | ||
| 处理设备状态转换(空闲/连接/监听/说话) | ||
| OTA 升级 | ||
| ota.cc | ||
| 实现空中固件升级,支持断点续传 | ||
| 协议实现 | ||
| websocket_protocol.cc | ||
| WebSocket 连接管理/消息编解码 | ||
| 硬件抽象 | ||
| board.cc | ||
| 统一硬件操作接口 | ||
| 语音处理 | ||
| audio_processor.cc | ||
| 回声消除/降噪算法实现 | ||
四、开发部署流程
-
硬件准备:选择兼容的开发板(推荐 ESP32-S3)
-
环境搭建:
# 安装 ESP-IDF v5.3+
git clone https://github.com/78/xiaozhi-esp32.git
cd xiaozhi-esp32
idf.py set-target esp32s3
idf.py menuconfig # 配置开发板类型/网络参数
idf.py build flash
- 云端对接:部署配套的 xiaozhi-esp32-server
五、设计亮点
-
硬件兼容性设计:
-
通过 CMake 条件编译实现多开发板支持
-
抽象 Board 类隔离硬件差异
-
# CMakeLists 动态加载板级代码
file(GLOB BOARD_SOURCES boards/${BOARD_TYPE}/*.cc)
-
低功耗优化:
-
空闲时进入 power-save 模式
-
动态关闭未使用外设(MIC/显示屏背光)
-
-
多语言支持:
-
资源文件按语言目录组织
-
通过 gen_lang.py 自动生成语言配置头文件
-
六、应用场景
-
智能家居中控:通过语音控制 IoT 设备
-
教育机器人:多语言交互学习助手
-
工业巡检设备:语音报告+远程控制
-
零售终端:智能导购机器人
七、扩展建议
-
边缘 AI 推理:集成 TensorFlow Lite 实现本地 NLP
-
Mesh 组网:添加 ESP-NOW 实现多设备协同
-
低功耗优化:深度睡眠模式+运动唤醒
-
视觉扩展:接入 ESP32-CAM 实现多模态交互
这个项目为嵌入式 AI 开发提供了完整参考,开发者可基于此快速构建智能语音硬件产品。其模块化设计尤其适合需要快速适配不同硬件的商业场景。
作者发布了三个视频教程:
ESP32+SenseVoice+Qwen72B打造你的AI聊天伴侣!【bilibili】
https://www.bilibili.com/video/BV11msTenEH3/
给小智装上 DeepSeek 的聪明大脑【bilibili】
https://www.bilibili.com/video/BV1GQP6eNEFG/
手工打造你的 AI 女友,新手入门教程【bilibili】
https://www.bilibili.com/video/BV1XnmFYLEJN/
项目地址:
https://github.com/78/xiaozhi-esp32
欢迎朋友们关注❤️和星标⭐️
