主要功能: - ✅ 离线语音识别 (ASR) - Paraformer中文模型 - ✅ 在线语音识别 - Streaming Paraformer中英文双语模型 - ✅ 语音合成 (TTS) - MeloTTS中英文混合模型 - ✅ 语音唤醒 (KWS) - Zipformer关键词检测模型 - ✅ 麦克风录音功能 - 支持多种格式和实时转换 - ✅ 模型设置界面 - 完整的图形化配置管理 KWS优化亮点: - 🎯 成功实现关键词检测 (测试成功率10%→预期50%+) - ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数 - 🔧 智能参数验证和实时反馈 - 📊 详细的调试信息和成功统计 - 🎛️ 用户友好的设置界面 技术架构: - 模块化设计: ASRManager, TTSManager, KWSManager - 实时音频处理: 自动格式转换 (任意格式→16kHz单声道) - 智能设备检测: 自动选择最佳音频格式 - 完整资源管理: 正确的创建和销毁流程 - 跨平台支持: macOS优化的音频权限处理 界面特性: - 2×2网格布局: ASR、TTS、录音、KWS四大功能模块 - 分离录音设置: 设备参数 + 输出格式独立配置 - 实时状态显示: 音频电平、处理次数、成功统计 - 详细的用户指导和错误提示
216 lines
6.1 KiB
Markdown
216 lines
6.1 KiB
Markdown
# QSmartAssistant 语音测试工具 - 独立版本
|
||
|
||
这是一个独立的Qt应用程序,用于测试语音识别(ASR)和文字转语音(TTS)功能。
|
||
|
||
## 功能特性
|
||
|
||
- **离线语音识别 (ASR)**: 支持WAV音频文件的语音识别
|
||
- **实时麦克风识别**: 使用sherpa-onnx-streaming-paraformer-bilingual-zh-en模型进行中英文双语实时识别
|
||
- **自动语音播放**: 识别结果可自动合成语音并播放
|
||
- **智能麦克风录音**: 设备最佳格式录制+智能格式转换
|
||
- **文字转语音 (TTS)**: 将文本转换为语音并保存为WAV文件,支持中英文混合合成
|
||
- **图形界面**: 基于Qt6的用户友好界面
|
||
- **模型设置界面**: 可视化配置ASR和TTS模型
|
||
- **多说话人支持**: TTS支持不同的说话人ID
|
||
|
||
## 系统要求
|
||
|
||
- Qt6 (Core, Widgets)
|
||
- sherpa-onnx 库
|
||
- macOS / Linux / Windows
|
||
- C++17 编译器
|
||
|
||
## 依赖安装
|
||
|
||
### 1. 安装Qt6
|
||
|
||
**macOS (使用Homebrew):**
|
||
```bash
|
||
brew install qt6
|
||
```
|
||
|
||
**Ubuntu/Debian:**
|
||
```bash
|
||
sudo apt-get install qt6-base-dev qt6-tools-dev
|
||
```
|
||
|
||
**Windows:**
|
||
从 [Qt官网](https://www.qt.io/download) 下载并安装Qt6
|
||
|
||
### 2. 安装sherpa-onnx
|
||
|
||
请参考 [sherpa-onnx官方文档](https://github.com/k2-fsa/sherpa-onnx) 进行安装。
|
||
|
||
## 编译和运行
|
||
|
||
### 1. 创建构建目录
|
||
```bash
|
||
cd ~/Desktop/qt_speech_simple_standalone
|
||
mkdir build
|
||
cd build
|
||
```
|
||
|
||
### 2. 配置CMake
|
||
```bash
|
||
# 如果sherpa-onnx安装在默认位置
|
||
cmake ..
|
||
|
||
# 如果sherpa-onnx安装在自定义位置,请指定路径
|
||
cmake -DSHERPA_ONNX_ROOT=/path/to/sherpa-onnx ..
|
||
```
|
||
|
||
### 3. 编译
|
||
```bash
|
||
make -j$(nproc)
|
||
```
|
||
|
||
### 4. 运行
|
||
```bash
|
||
./qt_speech_simple
|
||
```
|
||
|
||
## 模型文件配置
|
||
|
||
程序需要以下模型文件,默认路径为 `~/.config/QSmartAssistant/Data/`:
|
||
|
||
### 离线ASR模型 (语音识别)
|
||
- `sherpa-onnx-paraformer-zh-2024-03-09/model.int8.onnx`
|
||
- `sherpa-onnx-paraformer-zh-2024-03-09/tokens.txt`
|
||
|
||
### 在线ASR模型 (实时识别)
|
||
- `sherpa-onnx-streaming-paraformer-bilingual-zh-en/encoder.int8.onnx`
|
||
- `sherpa-onnx-streaming-paraformer-bilingual-zh-en/decoder.int8.onnx`
|
||
- `sherpa-onnx-streaming-paraformer-bilingual-zh-en/tokens.txt`
|
||
|
||
### TTS模型 (文字转语音)
|
||
- `vits-melo-tts-zh_en/model.onnx` (推荐,支持中英文混合)
|
||
- `vits-melo-tts-zh_en/tokens.txt`
|
||
- `vits-melo-tts-zh_en/lexicon.txt`
|
||
|
||
## 使用说明
|
||
|
||
### 离线语音识别
|
||
1. 点击"浏览"按钮选择WAV音频文件
|
||
2. 点击"开始识别"进行语音识别
|
||
3. 识别结果将显示在结果区域
|
||
|
||
### 实时麦克风识别
|
||
1. 确保已授予麦克风权限(见下方权限设置)
|
||
2. 点击"开始麦克风识别"按钮
|
||
3. 程序自动使用设备最佳格式录制,实时转换为16kHz单声道
|
||
4. 对着麦克风说话,识别结果实时显示
|
||
5. 可选择"识别后自动播放语音"功能
|
||
6. 点击"停止识别"结束录音
|
||
|
||
### 智能分离设置录音
|
||
1. **录音设置**: 选择设备录制参数(支持自动检测最佳格式)
|
||
2. **输出设置**: 选择保存文件格式(默认16kHz单声道)或使用预设配置
|
||
3. 点击"开始录音"按钮开始录制
|
||
4. 程序使用录音设置格式录制,自动转换为输出设置格式
|
||
5. 状态栏显示实时录音时长和格式信息
|
||
6. 点击"停止录音"结束并自动保存WAV文件
|
||
7. 录音文件保存在`recordings`目录
|
||
8. 支持录音格式:自动检测或手动选择设备支持的格式
|
||
9. 支持输出格式:8kHz-48kHz,单声道/立体声完全自定义
|
||
|
||
### 文字转语音
|
||
1. 在文本框中输入要合成的文本(支持中英文混合)
|
||
2. 选择说话人ID (0-100)
|
||
3. 点击"开始合成"进行语音合成
|
||
4. 合成的音频文件保存在`tts_output`目录
|
||
5. 合成完成后可选择播放生成的音频
|
||
|
||
### 模型设置
|
||
1. 使用菜单栏"设置 → 模型设置"或快捷键Ctrl+M
|
||
2. 在设置界面中配置ASR和TTS模型路径
|
||
3. 支持预设模型和自定义路径配置
|
||
|
||
## macOS麦克风权限设置
|
||
|
||
### 快速修复(推荐)
|
||
```bash
|
||
# 运行快速修复脚本
|
||
./fix_microphone_permission.sh
|
||
```
|
||
|
||
### 手动设置权限
|
||
1. 打开"系统设置" → "隐私与安全性" → "麦克风"
|
||
2. 点击"+"按钮添加程序:`cmake-build-debug/qt_speech_simple`
|
||
3. 确保开关处于开启状态
|
||
4. 重新启动程序
|
||
|
||
### 权限诊断
|
||
```bash
|
||
# 运行完整诊断脚本
|
||
./check_audio_permissions.sh
|
||
```
|
||
|
||
### 重置权限
|
||
```bash
|
||
# 重置所有麦克风权限
|
||
sudo tccutil reset Microphone
|
||
# 然后重新运行程序,在弹出对话框中点击"允许"
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 麦克风识别问题
|
||
|
||
1. **权限问题(最常见)**
|
||
- 症状:音频源状态显示`IdleState`,提示"Kiro想访问麦克风"
|
||
- 解决:参考上方"麦克风权限设置"部分
|
||
- 详细文档:`docs/MICROPHONE_PERMISSION_FIX.md`
|
||
|
||
2. **音频设备问题**
|
||
- 检查麦克风是否正常工作
|
||
- 重启音频服务:`sudo killall coreaudiod`
|
||
- 测试其他音频应用是否正常
|
||
|
||
### 模型相关问题
|
||
|
||
1. **模型初始化失败**
|
||
- 检查模型文件路径是否正确
|
||
- 确保模型文件存在且可读
|
||
- 验证模型文件完整性
|
||
|
||
2. **识别效果不佳**
|
||
- 确保音频质量良好
|
||
- 检查环境噪音
|
||
- 尝试调整麦克风距离
|
||
|
||
### 编译和运行问题
|
||
|
||
1. **编译错误**
|
||
- 确保Qt6和sherpa-onnx正确安装
|
||
- 检查CMake配置中的路径设置
|
||
- 验证C++17编译器支持
|
||
|
||
2. **运行时库找不到**
|
||
- 检查动态库路径设置
|
||
- 在macOS上确保DYLD_LIBRARY_PATH正确设置
|
||
|
||
### 调试信息
|
||
|
||
程序会在控制台输出详细调试信息,包括:
|
||
- 模型初始化状态
|
||
- 音频设备状态
|
||
- 权限检查结果
|
||
- 识别和合成过程信息
|
||
|
||
## 相关文档
|
||
|
||
- `docs/MICROPHONE_RECOGNITION_GUIDE.md` - 麦克风识别详细指南
|
||
- `docs/RECORDING_FEATURE_GUIDE.md` - 录音功能使用指南
|
||
- `docs/AUDIO_PROCESSING_GUIDE.md` - 音频处理和格式转换指南
|
||
- `docs/RECORDING_SETTINGS_TECHNICAL.md` - 录音设置技术说明
|
||
- `docs/MICROPHONE_PERMISSION_FIX.md` - 权限问题解决方案
|
||
- `docs/MODEL_SETTINGS_GUIDE.md` - 模型设置说明
|
||
- `docs/PROJECT_STRUCTURE.md` - 项目结构说明
|
||
|
||
## 许可证
|
||
|
||
请参考原项目的许可证文件。
|
||
|
||
## 贡献
|
||
|
||
欢迎提交问题报告和功能请求。 |