4.8 KiB
4.8 KiB
AI小智自定义唤醒词移植说明
概述
本项目已成功将新版AI小智的自定义唤醒词功能移植到旧版项目中,现在支持两种唤醒词模式:
- 传统唤醒词模式:使用固定的唤醒词模型(原有功能)
- 自定义唤醒词模式:支持用户自定义唤醒词(新增功能)
功能特性
自定义唤醒词模式特点
- ✅ 支持任意中文唤醒词配置
- ✅ 使用汉语拼音输入,支持中文显示
- ✅ 基于ESP32的multinet命令词识别技术
- ✅ 与传统唤醒词模式互斥,确保系统稳定性
- ✅ 保持完全的向后兼容性
硬件要求
- ESP32-S3芯片
- PSRAM支持
- 足够的Flash存储空间用于模型文件
配置方法
1. 使用menuconfig配置
在项目根目录执行:
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. 编译项目
idf.py build
2. 烧录固件
idf.py flash
3. 查看日志
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. 唤醒词不响应
问题:说出唤醒词没有反应 排查:
- 检查麦克风是否正常工作
- 查看日志是否有音频数据输入
- 确认拼音配置是否正确
- 尝试调整检测阈值
4. 性能问题
问题:系统运行缓慢或重启 解决:
- 确保PSRAM配置正确
- 检查任务栈大小设置
- 监控内存使用情况
技术原理
架构设计
移植采用了模块化设计:
WakeWord (基类)
├── WakeWordDetect (传统模式)
└── CustomWakeWord (自定义模式)
关键技术
- multinet:ESP32的命令词识别引擎
- AFE:音频前端处理
- 条件编译:根据配置选择不同实现
兼容性保证
- 保持原有API接口不变
- 添加向后兼容的方法映射
- 统一的配置管理
参考资料
版本历史
- v1.0:完成基础移植,支持自定义唤醒词
- v1.1:增加向后兼容性,优化配置界面
- v1.2:改进错误处理,添加详细日志
注意:使用自定义唤醒词功能需要更多的RAM和CPU资源,建议在性能充足的设备上使用。