# AI小智自定义唤醒词配置使用手册

## 🚀 快速开始

### 1. 配置项目

在项目根目录执行配置命令：
```bash
idf.py menuconfig
```

### 2. 导航到配置选项

在menuconfig界面中：
```
顶级菜单 → Xiaozhi Assistant → 唤醒词配置
```

### 3. 选择唤醒词模式

**方案A：使用自定义唤醒词（推荐）**
```
[ ] 启用唤醒词检测                    # 关闭传统模式
[*] 启用自定义唤醒词检测              # 开启自定义模式
    自定义唤醒词 (ni hao xiao zhi)   # 拼音配置
    自定义唤醒词显示文本 (你好小智)   # 显示文本
```

**方案B：使用传统固定唤醒词**
```
[*] 启用唤醒词检测                    # 开启传统模式
[ ] 启用自定义唤醒词检测              # 关闭自定义模式
```

## 🎨 自定义唤醒词配置示例

### 配置"小爱同学"
```
[*] 启用自定义唤醒词检测
    自定义唤醒词 (xiao ai tong xue)
    自定义唤醒词显示文本 (小爱同学)
```

### 配置"天猫精灵"
```
[*] 启用自定义唤醒词检测
    自定义唤醒词 (tian mao jing ling)
    自定义唤醒词显示文本 (天猫精灵)
```

### 配置"小度小度"
```
[*] 启用自定义唤醒词检测
    自定义唤醒词 (xiao du xiao du)
    自定义唤醒词显示文本 (小度小度)
```

### 配置"嘿Siri"
```
[*] 启用自定义唤醒词检测
    自定义唤醒词 (hei siri)
    自定义唤醒词显示文本 (嘿Siri)
```

## 📋 拼音输入规则

### 基本规则
- **格式**：汉语拼音，单词间用空格分隔
- **声调**：不需要标注声调
- **大小写**：建议使用小写
- **长度**：建议2-5个字，效果最佳

### 拼音对照表
| 汉字 | 拼音 | 汉字 | 拼音 |
|------|------|------|------|
| 小 | xiao | 智 | zhi |
| 爱 | ai | 助 | zhu |
| 你 | ni | 手 | shou |
| 好 | hao | 机 | ji |
| 天 | tian | 器 | qi |
| 猫 | mao | 人 | ren |

### 常见错误
❌ `xiaozhi`（连写）  
✅ `xiao zhi`（分开）

❌ `ni-hao`（用连字符）  
✅ `ni hao`（用空格）

## 🔧 编译和部署

### 1. 编译项目
```bash
idf.py build
```

**预期输出**：
```
...
[100%] Built target ai-xiaozhi.elf
Project build complete.
```

### 2. 烧录固件
```bash
idf.py flash
```

### 3. 查看运行日志
```bash
idf.py monitor
```

**成功日志示例**：
```
I (12345) CustomWakeWord: multinet:mn5_cn
I (12346) CustomWakeWord: Custom wake word: ni hao xiao zhi
I (12347) CustomWakeWord: Audio detection task started
...
I (15000) CustomWakeWord: Custom wake word 'ni hao xiao zhi' detected successfully!
```

## 🧪 功能测试

### 1. 基础测试
- **开机自检**：查看日志确认唤醒词模式
- **唤醒测试**：说出配置的唤醒词
- **响应测试**：确认设备正确响应

### 2. 对比测试
- **灵敏度**：与传统模式对比响应速度
- **准确率**：测试误唤醒和漏检情况
- **稳定性**：长时间运行测试

### 3. 环境测试
- **安静环境**：测试最低音量阈值
- **噪音环境**：测试抗干扰能力
- **距离测试**：测试有效识别距离

## ⚙️ 高级配置

### 调整检测阈值
如果唤醒词过于敏感或不够敏感，可以修改代码：

**文件**：`main/audio_processing/custom_wake_word.cc`
**位置**：第67行
```cpp
multinet_->set_det_threshold(multinet_model_data_, 0.5);  // 默认0.5，范围0.1-0.9
```

- **降低值**（如0.3）：更容易唤醒，但可能误触发
- **提高值**（如0.7）：减少误触发，但需要更清晰发音

### 调整超时时间
**位置**：第66行
```cpp
multinet_model_data_ = multinet_->create(mn_name_, 2000);  // 2秒超时
```

### 调试模式启用
在menuconfig中启用：
```
Component config → Log output → Default log verbosity → Debug
```

## 🐛 故障排除

### 编译错误

**错误1**：`undefined reference to CONFIG_CUSTOM_WAKE_WORD`
```
解决：确保在menuconfig中启用了自定义唤醒词
```

**错误2**：`esp_mn_commands_* not found`
```
解决：确认ESP-SR组件版本 >= 2.0.3
```

### 运行错误

**错误1**：初始化失败
```
日志：Failed to initialize multinet
解决：检查PSRAM配置，确保ESP32-S3芯片
```

**错误2**：唤醒词不响应
```
检查：1. 麦克风硬件  2. 拼音配置  3. 音量大小
```

**错误3**：频繁误触发
```
解决：提高检测阈值或更换唤醒词
```

## 📈 性能优化

### 内存优化
- 确保PSRAM启用
- 监控堆内存使用
- 定期检查内存泄漏

### CPU优化
- 合理设置任务优先级
- 避免在音频任务中执行重操作
- 使用合适的CPU核心分配

## 🔄 版本兼容性

| ESP-IDF版本 | 支持状态 | 备注 |
|-------------|----------|------|
| 5.3+ | ✅ 完全支持 | 推荐版本 |
| 5.2 | ⚠️ 部分支持 | 需要更新ESP-SR |
| 5.1 | ❌ 不支持 | 缺少必要组件 |

## 📞 技术支持

如遇到问题，请检查：
1. 硬件是否符合要求（ESP32-S3 + PSRAM）
2. ESP-SR组件版本是否正确
3. 拼音配置是否准确
4. 系统日志中的错误信息

---

**祝您使用愉快！** 🎉 