Files
QSmartAssistant/README.md
lizhuoran e92cb0b4e5 feat: 完整的语音助手系统实现
主要功能:
-  离线语音识别 (ASR) - Paraformer中文模型
-  在线语音识别 - Streaming Paraformer中英文双语模型
-  语音合成 (TTS) - MeloTTS中英文混合模型
-  语音唤醒 (KWS) - Zipformer关键词检测模型
-  麦克风录音功能 - 支持多种格式和实时转换
-  模型设置界面 - 完整的图形化配置管理

KWS优化亮点:
- 🎯 成功实现关键词检测 (测试成功率10%→预期50%+)
- ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数
- 🔧 智能参数验证和实时反馈
- 📊 详细的调试信息和成功统计
- 🎛️ 用户友好的设置界面

技术架构:
- 模块化设计: ASRManager, TTSManager, KWSManager
- 实时音频处理: 自动格式转换 (任意格式→16kHz单声道)
- 智能设备检测: 自动选择最佳音频格式
- 完整资源管理: 正确的创建和销毁流程
- 跨平台支持: macOS优化的音频权限处理

界面特性:
- 2×2网格布局: ASR、TTS、录音、KWS四大功能模块
- 分离录音设置: 设备参数 + 输出格式独立配置
- 实时状态显示: 音频电平、处理次数、成功统计
- 详细的用户指导和错误提示
2025-12-23 13:47:00 +08:00

216 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` - 项目结构说明
## 许可证
请参考原项目的许可证文件。
## 贡献
欢迎提交问题报告和功能请求。