小智AI语音机器人——开源ESP32 | 零代码对接LLM+ASR+TTS | 多语言对话+物联网控制 | 30+硬件即插即用

picture.image

最近想给孩子制作一个 AI 玩具,把他现在的玩具,加上 LLM + ASR + TTS 能力,成为他的一个 AI 小伙伴,刚好关注到开源作者“虾哥”的这个项目「小智 AI 聊天机器人 (XiaoZhi AI Chatbot)」(链接见阅读原文),今天和朋友们一起看看这个项目,如果你也想给孩子做 AI 玩具,这个项目很适合入门上手 👍🏻

picture.image

一、项目概览

  • 定位:面向硬件开发者的 AI 语音交互开发框架

  • 核心功能:

    • 离线语音唤醒(ESP-SR)

    • 多语言语音识别(SenseVoice 支持中/英/日/韩等)

    • 流式语音对话(WebSocket/UDP)

    • 大模型集成(Qwen/DeepSeek/Doubao)

    • 语音合成(火山引擎 或 CosyVoice)

    • 声纹识别(3D Speaker)

    • 物联网设备控制(IoT 指令下发)

    • 多模态交互(LCD/OLED 显示 + LED 反馈)

  • 开源协议:MIT 许可证,允许商业使用

  • 硬件兼容性:支持 30+ 种开发板(ESP-BOX/M5Stack/立创开发板等)

二、技术架构解析

  1. 硬件抽象层(HAL)
  • 目录结构:main/boards/ 包含各开发板驱动

  • 关键设计:

    • 使用 Board 单例类抽象硬件操作(GetDisplay(), GetAudioCodec()

    • 通过 Kconfig 选择开发板类型,编译时动态加载对应驱动

    • 统一接口支持多种显示屏(OLED/LCD)、音频编解码芯片(ES8388/ES8311)

  1. 音频处理流水线
  
// 音频输入处理流程(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)

  1. 通信协议
  • 协议选择:通过 Kconfig 配置 WebSocket 或 MQTT+UDP

  • WebSocket 协议要点:

    • 二进制帧传输 Opus 音频

    • JSON 消息控制状态机(监听/说话/IoT指令)

    • 心跳机制维持长连接

    • 消息示例:

  
{  
    "type": "tts",  
    "state": "start",  
    "text": "你好,有什么可以帮您?"  
  }
  1. 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
回声消除/降噪算法实现

picture.image

四、开发部署流程

  1. 硬件准备:选择兼容的开发板(推荐 ESP32-S3)

  2. 环境搭建:

  
# 安装 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
  1. 云端对接:部署配套的 xiaozhi-esp32-server

五、设计亮点

  1. 硬件兼容性设计:

    • 通过 CMake 条件编译实现多开发板支持

    • 抽象 Board 类隔离硬件差异

  
# CMakeLists 动态加载板级代码  
   file(GLOB BOARD_SOURCES boards/${BOARD_TYPE}/*.cc)
  1. 低功耗优化:

    • 空闲时进入 power-save 模式

    • 动态关闭未使用外设(MIC/显示屏背光)

  2. 多语言支持:

    • 资源文件按语言目录组织

    • 通过 gen_lang.py 自动生成语言配置头文件

六、应用场景

  1. 智能家居中控:通过语音控制 IoT 设备

  2. 教育机器人:多语言交互学习助手

  3. 工业巡检设备:语音报告+远程控制

  4. 零售终端:智能导购机器人

七、扩展建议

  1. 边缘 AI 推理:集成 TensorFlow Lite 实现本地 NLP

  2. Mesh 组网:添加 ESP-NOW 实现多设备协同

  3. 低功耗优化:深度睡眠模式+运动唤醒

  4. 视觉扩展:接入 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

欢迎朋友们关注❤️和星标⭐️

0
0
0
0
评论
未登录
暂无评论