# esp-sr-model-tool
**Repository Path**: KiWi233333/esp-sr-model-tool
## Basic Information
- **Project Name**: esp-sr-model-tool
- **Description**: ESP32S3系列芯片的语音识别模型管理工具,帮助 Arduino / Platformio 开发者轻松配置、生成和烧写唤醒词模型。工具提供了友好的命令行界面,支持多种唤醒词选择,自动扫描分区表。(感谢Xu Jiwei提供博文的支持)
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-05-05
- **Last Updated**: 2025-05-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
ESP-SR-Model-Tool
一个用于ESP32系列芯片的语音识别模型管理工具,帮助开发者轻松配置、生成和烧写唤醒词模型。
[English](./README.en.md) | [中文](#中文介绍)

ESP-SR-Model-Tool 是一个易于使用的ESP32语音识别模型配置工具,可以帮助您快速选择、生成和烧写各种唤醒词模型到您的ESP32设备。无需手动配置复杂的参数,只需几个简单的步骤即可完成唤醒词的部署。
### ✨ 功能特点
- 📋 **直观的交互式界面** - 通过命令行交互轻松选择唤醒词和配置
- 🔊 **丰富的唤醒词支持** - 支持WakeNet9和WakeNet9s中所有官方唤醒词
- 📊 **分组分类展示** - 按中文、英文等类别分组展示唤醒词,便于选择
- 🔍 **智能分区表解析** - 自动扫描并解析项目中的分区表获取正确地址
- 📝 **动态生成配置** - 自动生成sdkconfig配置文件
- 📈 **实时进度显示** - 烧写过程中以动画进度条形式展示进度
- 🔌 **多平台支持** - 兼容Windows、Linux和macOS系统
- 🌐 **语音识别支持** - 可选配置语音识别模型(MultiNet)
- 🔄 **TTS数据烧写** - 支持烧写TTS语音合成数据
### 🛠️ 安装与依赖
在使用此工具前,请确保安装所需的Python依赖:
```bash
# 克隆仓库
git clone https://github.com/yourusername/esp-sr-model-tool.git
cd esp-sr-model-tool
# 安装依赖
pip install -r requirements.txt
```
您还需要:
1. 已安装ESP-IDF或Arduino ESP32开发环境
2. ESP-SR库(需放置在wake-word-tool/esp-sr目录)
3. 已安装esptool工具(`pip install esptool`)
### 🚀 使用方法
1. 确保您的ESP32已通过USB连接到电脑
2. 运行以下命令启动工具:
```bash
python main.py
```
3. 按照交互式界面提示操作:
- 选择唤醒词类别(WakeNet9或WakeNet9s)
- 选择具体的唤醒词
- 选择语音识别模型(可选)
- 选择分区表文件
- 选择串口设备
- 等待模型生成和烧写完成
### ⚠️ 注意
> 当你用PlatfromIO开发 可使用platform: `platform-espressif32.zip` 本压缩包已经修复其中的唤醒词硬编码(`hiesp`) // 不改变则不会替换唤醒词模型,`MN...`模型同理
platformio.ini 文件参考
```ini
[env:slef-esp32-s3]
platform =
board = esp32-s3-devkitc-1
framework = arduino
; lib_ldf_mode = deep+
monitor_speed = 115200
# 此处为含有model分区的分区表文件
board_build.arduino.partitions = esp-sr.csv
board_build.f_cpu = 240000000L
board_build.arduino.memory_type = qio_opi
board_upload.flash_size = 16MB
build_flags =
-DBOARD_HAS_PSRAM
-DCONFIG_USE_WAKENET
```
#### 🖼️ 使用效果
> 请确保您的ESP32设备已烧写了最新固件,并连接到电脑上。


#### 🖼️ 若你也是基于Arduino进行ESP-SR的开发
可参考`Xu Jiwei`: 的博客文章,也感谢作者的分享。
#### 命令行参数使用
高级用户可以通过命令行参数直接指定配置,无需交互式选择:
```bash
python main.py -c xiaoaitongxue.sdkconfig -p COM3 -b 2000000 -t -y
```
可用的命令行参数:
| 参数 | 说明 |
| ---- | ---- |
| `-c`, `--config` | 指定唤醒词配置文件路径 (.sdkconfig) |
| `-p`, `--port` | 指定串口设备 (如 COM3 或 /dev/ttyUSB0) |
| `-b`, `--baud` | 指定波特率 (默认: 2000000) |
| `-t`, `--tts` | 同时烧写TTS语音数据 |
| `-y`, `--yes` | 自动确认所有操作,无需用户确认 |
| `-a`, `--address` | 直接指定模型烧写地址 (例如 0x710000) |
例如,要自动烧写"小爱同学"唤醒词并同时烧写TTS数据:
```bash
python main.py -c xiaoaitongxue.sdkconfig -p COM3 -t -y
```
### 📋 支持的唤醒词
工具支持所有ESP官方提供的唤醒词,包括:
**中文唤醒词**:
- 你好小智、你好小鑫、小爱同学
- 小美同学、喵喵同学、小龙小龙
- 小宇同学、小明同学、小康同学
- 小滨小滨、小鸭小鸭、璃奈板
- 小酥肉、小箭小箭、小特小特
- 及更多...
**英文/Hi系列唤醒词**:
- Hi ESP、Hi 乐鑫、Hi Jason
- Hi M Five、Hi 瓦力、Hi 小星
- Hi 喵喵、Hi 莉莉、Hi 泰力
- Hi 小巫、及更多...
**其他唤醒词**:
- Alexa、Jarvis、Computer
- Hey Willow、Sophia、Mycroft
- Hey Printer、Hi Joy、Hey Wanda
- Astrolabe、及更多...
### 📄 分区表配置
工具会自动查找项目目录中的分区表文件,并解析出正确的模型和语音数据烧写地址。典型的分区表条目示例:
```
# Name, Type, SubType, Offset, Size
nvs,data,nvs,0x9000,0x6000
phy_init,data,phy,0xf000,0x1000
factory,app,factory,0x10000,1M
model,data,spiffs,0x710000,0x5E0000
voice_data,data,fat,0xCF0000,0x300000
```
工具将自动使用model分区的偏移量(0x710000)作为烧写地址。
如果无法找到分区表或分区表中没有model分区,工具将使用默认地址(0x710000)。
### ❓ 常见问题解答
1. **如何获取ESP-SR库?**
- 可以从乐鑫官方GitHub下载:[esp-sr](https://github.com/espressif/esp-sr)
- 也可以使用本项目提供的ESP-SR压缩包
2. **找不到唤醒词配置文件?**
- 新版工具会自动生成配置文件,无需手动创建
- 如需使用现有配置,确保文件后缀为`.sdkconfig`
- 检查配置文件中是否包含正确的唤醒词配置项
3. **遇到文件编码错误?**
- 工具支持多种编码格式 (UTF-8, GBK, GB2312, Latin1, CP1252)
- 如有问题,使用记事本打开sdkconfig文件,另存为UTF-8编码
4. **找不到COM端口?**
- 检查设备连接是否正常
- 确认驱动是否正确安装
- 使用`-p`参数手动指定端口
5. **模型生成失败?**
- 确认esp-sr目录结构是否正确
- 检查esp-sr/model目录中是否包含movemodel.py脚本
6. **烧写失败?**
- 尝试降低波特率 (`-b 115200`)
- 有些ESP32需要手动进入下载模式(按住BOOT按钮后按RST)
- 检查驱动是否正确安装
### 🤝 贡献
欢迎贡献代码、报告问题或提出改进建议!请遵循以下步骤:
1. Fork 本仓库
2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交您的更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启一个 Pull Request
### 🙏 鸣谢
- [Xu Jiwei的博客](https://xujiwei.com/blog/2025/04/esp32-arduino-esp-sr-tts) - 复刻小智AI,ESP32-S3搭建Arduino+ESP-SR+ESP-TTS开发环境踩坑记录
### 📜 许可证
本项目采用 Apache License 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件