Skip to content

Liwuyuee/xiaozhi-esp32-local

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xiaozhi-esp32-local — 离线语音命令 & 声纹识别扩展

License: MIT ESP-IDF Platform Stars

基于 xiaozhi-esp32 开源项目,适配 ICECAT K2 开发板,深度体验端云协同 AI 语音交互。


项目概述

本项目是一个基于 ESP32-S3 的 AI 语音交互机器人固件,采用「端侧唤醒 + 云端智能处理」的端云协同架构。

版本 说明
固件版本 v2.2.2(基于上游主分支)
硬件平台 ICECAT K2(ESP32-S3 + 8MB PSRAM + OV2640)
开发框架 ESP-IDF 5.1 + FreeRTOS
大模型 DeepSeek V3.2

已验证的功能

端侧(ESP32 固件)

功能 状态
ESP-SR 离线语音唤醒(自定义唤醒词) ✅ 已验证
I2S + DMA 音频采集(16kHz/16bit) ✅ 已验证
Opus 音频编解码 ✅ 已验证
WebSocket / MQTT 双协议通信 ✅ 已验证
离线语音命令识别(Local ASR 扩展) ✅ 已开发,代码开源
低功耗自动休眠(3分钟超时) ✅ 已验证

云侧(服务器端功能,已实际体验)

功能 说明
声纹识别(3D Speaker) 可识别不同说话人身份,实测能准确识别本人声音
声音克隆(CosyVoice) 曾使用定制音色,后因自然度问题切回默认
大模型对话(DeepSeek V3.2) 当前使用的 LLM 引擎,中文理解能力强
流式 TTS 语音合成 低延迟语音合成反馈
SenseVoice 多语言识别 支持中英日韩粤等多种语言

系统架构

用户说出唤醒词
  → ESP-SR 端侧唤醒检测
  → 与云端建立 WebSocket 连接
  → I2S+DMA 采集音频 → Opus 编码 → 上传
  → 云端: ASR 转文字 → LLM 理解 → TTS 合成
  → 音频下发 → Opus 解码 → I2S 播放
  → 完成语音交互闭环

核心模块

main/
├── application.cc/h      # 主控逻辑、事件循环、状态机
├── audio/                # 音频服务:采集、播放、编解码
│   ├── audio_service.cc  # 音频任务调度(3个并行任务)
│   ├── codecs/           # ES7210、ES8311 等 Codec 驱动
│   └── wake_words/       # ESP-SR 唤醒词引擎
├── local_asr/            # [新增] 离线命令识别模块
│   ├── local_asr.cc      # 10条中文指令 + ESP-SR multinet
│   └── include/          # 头文件
├── protocols/            # WebSocket / MQTT 协议
├── display/              # OLED / LCD 显示与表情
├── led/                  # LED 状态指示
├── boards/               # 板级支持包(70+ 开发板)
└── mcp_server.cc         # MCP 协议设备控制

我的贡献

1. 离线语音命令识别(Local ASR)

在网络不可用时,系统自动降级为本地命令识别模式。实现代码在 main/local_asr/ 目录。

核心改动:

文件 改动内容
main/local_asr/local_asr.cc/h 新增 LocalAsr 类,封装 ESP-SR multinet 命令识别
main/audio/audio_service.h/cc 新增 AS_EVENT_LOCAL_ASR_RUNNING 事件 + 音频路由
main/application.h/cc 新增离线模式状态管理和命令执行逻辑
main/device_state.h 新增 kDeviceStateOfflineListening 状态
main/Kconfig.projbuild 新增 LOCAL_ASR_ENABLE 等菜单配置项

支持的命令:

拼音指令 功能
da kai deng 打开灯
guan bi deng 关闭灯
da kai feng shang 打开风扇
guan bi feng shang 关闭风扇
zhan ting 暂停
ji xu 继续
xian zai shi jian 现在时间

2. 配套工具链:ESP32 Voice Cloner

独立开发的声音克隆工具链,实现「浏览器录音 → AI 克隆 → 部署到 ESP32」的全流程。

📍 github.com/Liwuyuee/esp32-voice-cloner

3. 硬件适配与系统测试

  • 完成 ICECAT K2 开发板的系统移植和驱动调试
  • 完成分场景、分距离的性能测试(唤醒率/功耗/稳定性)
  • 项目代码和文档完全开源

硬件

本项目基于 ICECAT K2 开发板:

组件 型号
主控 ESP32-S3(双核 Xtensa LX7 @ 240MHz)
PSRAM 8MB
Flash 16MB
音频 ADC ES7210
麦克风 ZTS6216 MEMS 硅麦
扬声器 8Ω / 3W
电池 3.7V / 1000mAh 锂电池
摄像头 OV2640

测试数据

指标 测试结果
1m 安静环境唤醒率 99%
3m 安静环境唤醒率 97%
3m 强噪音唤醒率(优化前) 75%
3m 强噪音唤醒率(优化后) 82%+
云端识别准确率(安静) 98%
端到端响应时间 650-710ms
待机电流 8.5mA
待机续航(1000mAh) 约 117h
72h 稳定性 全部指标 > 90%

快速开始

git clone https://github.com/Liwuyuee/xiaozhi-esp32-local.git
cd xiaozhi-esp32-local

idf.py set-target esp32s3
idf.py menuconfig
  → Xiaozhi Assistant → Board Type → ICECAT K2
idf.py build
idf.py -p PORT flash monitor

默认连接官方服务器 xiaozhi.me,注册即用。 如需自建服务器,修改 Kconfig.projbuild 中的 WebSocket 地址并重新编译。


技术栈

  • 框架: ESP-IDF 5.1 + FreeRTOS
  • 语言: C / C++
  • 语音唤醒: ESP-SR (WakeNet + MultiNet)
  • 音频: I2S + DMA + Opus
  • 通信: WebSocket / MQTT + UDP
  • 云侧: SenseVoice ASR + DeepSeek LLM + CosyVoice TTS + 3D Speaker
  • CI/CD: GitHub Actions 自动构建

致谢


License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors