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