# AI小智自定义唤醒词移植说明 ## 概述 本项目已成功将新版AI小智的自定义唤醒词功能移植到旧版项目中,现在支持两种唤醒词模式: - **传统唤醒词模式**:使用固定的唤醒词模型(原有功能) - **自定义唤醒词模式**:支持用户自定义唤醒词(新增功能) ## 功能特性 ### 自定义唤醒词模式特点 - ✅ 支持任意中文唤醒词配置 - ✅ 使用汉语拼音输入,支持中文显示 - ✅ 基于ESP32的multinet命令词识别技术 - ✅ 与传统唤醒词模式互斥,确保系统稳定性 - ✅ 保持完全的向后兼容性 ### 硬件要求 - ESP32-S3芯片 - PSRAM支持 - 足够的Flash存储空间用于模型文件 ## 配置方法 ### 1. 使用menuconfig配置 在项目根目录执行: ```bash idf.py menuconfig ``` 导航到:`Xiaozhi Assistant` → 找到唤醒词相关选项 ### 2. 配置选项说明 **选择唤醒词模式(二选一):** - **启用唤醒词检测**(`USE_WAKE_WORD_DETECT`) - 传统模式,使用固定唤醒词 - 默认启用 - **启用自定义唤醒词检测**(`USE_CUSTOM_WAKE_WORD`) - 新增模式,支持自定义唤醒词 - 默认关闭 **自定义唤醒词配置(仅在启用自定义唤醒词时生效):** - **自定义唤醒词**(`CUSTOM_WAKE_WORD`) - 默认值:`"ni hao xiao zhi"` - 格式:汉语拼音,用空格分隔 - 示例:`"xiao ai tong xue"`(小爱同学) - **自定义唤醒词显示文本**(`CUSTOM_WAKE_WORD_DISPLAY`) - 默认值:`"你好小智"` - 格式:中文显示文本 - 示例:`"小爱同学"` ### 3. 配置示例 **场景1:使用"小爱同学"作为唤醒词** ``` [*] 启用自定义唤醒词检测 自定义唤醒词 (xiao ai tong xue) 自定义唤醒词显示文本 (小爱同学) ``` **场景2:使用"你好小智"作为唤醒词(默认)** ``` [*] 启用自定义唤醒词检测 自定义唤醒词 (ni hao xiao zhi) 自定义唤醒词显示文本 (你好小智) ``` **场景3:使用传统固定唤醒词** ``` [*] 启用唤醒词检测 [ ] 启用自定义唤醒词检测 ``` ## 编译和烧录 ### 1. 编译项目 ```bash idf.py build ``` ### 2. 烧录固件 ```bash idf.py flash ``` ### 3. 查看日志 ```bash idf.py monitor ``` ## 使用说明 ### 1. 系统启动 系统启动后会显示当前使用的唤醒词模式: - 传统模式:显示检测到的固定唤醒词 - 自定义模式:显示配置的自定义唤醒词 ### 2. 唤醒测试 说出配置的唤醒词,系统应该响应并进入对话模式。 ### 3. 日志信息 在自定义唤醒词模式下,系统会输出如下日志: ``` I (12345) CustomWakeWord: multinet:mn5_cn I (12346) CustomWakeWord: Custom wake word: ni hao xiao zhi I (12347) CustomWakeWord: Audio detection task started, feed size: 512 fetch size: 512 I (15000) CustomWakeWord: Custom wake word 'ni hao xiao zhi' detected successfully! ``` ## 故障排除 ### 1. 编译错误 **错误**:`undefined reference to CONFIG_CUSTOM_WAKE_WORD` **解决**:确保已启用自定义唤醒词功能并重新运行`idf.py menuconfig` ### 2. 初始化失败 **错误**:`Failed to initialize multinet, mn_name is nullptr` **解决**: - 检查是否有足够的PSRAM - 确认ESP32-S3芯片支持 - 检查模型文件是否正确烧录 ### 3. 唤醒词不响应 **问题**:说出唤醒词没有反应 **排查**: 1. 检查麦克风是否正常工作 2. 查看日志是否有音频数据输入 3. 确认拼音配置是否正确 4. 尝试调整检测阈值 ### 4. 性能问题 **问题**:系统运行缓慢或重启 **解决**: - 确保PSRAM配置正确 - 检查任务栈大小设置 - 监控内存使用情况 ## 技术原理 ### 架构设计 移植采用了模块化设计: ``` WakeWord (基类) ├── WakeWordDetect (传统模式) └── CustomWakeWord (自定义模式) ``` ### 关键技术 - **multinet**:ESP32的命令词识别引擎 - **AFE**:音频前端处理 - **条件编译**:根据配置选择不同实现 ### 兼容性保证 - 保持原有API接口不变 - 添加向后兼容的方法映射 - 统一的配置管理 ## 参考资料 - [ESP32-S3音频开发指南](https://docs.espressif.com/projects/esp-sr/en/latest/) - [ESP-SR语音识别框架](https://github.com/espressif/esp-sr) - [自定义唤醒词模型训练指南](https://pcn7cs20v8cr.feishu.cn/wiki/CpQjwQsCJiQSWSkYEvrcxcbVnwh) ## 版本历史 - **v1.0**:完成基础移植,支持自定义唤醒词 - **v1.1**:增加向后兼容性,优化配置界面 - **v1.2**:改进错误处理,添加详细日志 --- **注意**:使用自定义唤醒词功能需要更多的RAM和CPU资源,建议在性能充足的设备上使用。