主要功能: - ✅ 离线语音识别 (ASR) - Paraformer中文模型 - ✅ 在线语音识别 - Streaming Paraformer中英文双语模型 - ✅ 语音合成 (TTS) - MeloTTS中英文混合模型 - ✅ 语音唤醒 (KWS) - Zipformer关键词检测模型 - ✅ 麦克风录音功能 - 支持多种格式和实时转换 - ✅ 模型设置界面 - 完整的图形化配置管理 KWS优化亮点: - 🎯 成功实现关键词检测 (测试成功率10%→预期50%+) - ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数 - 🔧 智能参数验证和实时反馈 - 📊 详细的调试信息和成功统计 - 🎛️ 用户友好的设置界面 技术架构: - 模块化设计: ASRManager, TTSManager, KWSManager - 实时音频处理: 自动格式转换 (任意格式→16kHz单声道) - 智能设备检测: 自动选择最佳音频格式 - 完整资源管理: 正确的创建和销毁流程 - 跨平台支持: macOS优化的音频权限处理 界面特性: - 2×2网格布局: ASR、TTS、录音、KWS四大功能模块 - 分离录音设置: 设备参数 + 输出格式独立配置 - 实时状态显示: 音频电平、处理次数、成功统计 - 详细的用户指导和错误提示
6.1 KiB
6.1 KiB
麦克风实时语音识别使用指南
功能概述
麦克风实时语音识别功能使用sherpa-onnx-streaming-paraformer-bilingual-zh-en模型,支持中英文双语实时识别。
模型要求
必需文件
确保以下文件存在于 ~/.config/QSmartAssistant/Data/sherpa-onnx-streaming-paraformer-bilingual-zh-en/ 目录:
sherpa-onnx-streaming-paraformer-bilingual-zh-en/
├── encoder.int8.onnx # 编码器模型(推荐使用int8量化版本)
├── decoder.int8.onnx # 解码器模型
├── tokens.txt # 词汇表文件
└── test_wavs/ # 测试音频文件(可选)
模型特性
- 双语支持:同时支持中文和英文识别
- 实时流式:支持连续语音流处理
- 端点检测:自动检测语音开始和结束
- 低延迟:优化的流式处理架构
使用方法
1. 启动识别
- 确保麦克风已连接并正常工作
- 点击 "开始麦克风识别" 按钮
- 看到状态变为 "识别中..." 表示已开始
2. 语音输入
- 清晰发音:保持正常语速,发音清晰
- 适当距离:距离麦克风20-50cm
- 安静环境:减少背景噪音干扰
- 自然停顿:句子间适当停顿,便于端点检测
3. 查看结果
- 实时反馈:状态栏显示当前识别内容
- 分段结果:检测到语音结束时显示完整句子
- 最终结果:停止识别时显示最后的识别内容
4. 停止识别
点击 "停止识别" 按钮结束录音和识别
界面说明
按钮状态
- 开始麦克风识别(红色):可以开始识别
- 识别中...(灰色):正在进行识别,不可点击
- 停止识别(灰色):结束当前识别会话
状态显示
- 状态栏:显示当前识别状态和实时结果
- 识别结果区域:显示分段识别结果
- 最终结果:停止时显示完整识别内容
技术参数
音频格式
- 采样率:16000 Hz
- 声道数:单声道(Mono)
- 位深度:16位
- 格式:PCM
识别参数
- 特征维度:80维梅尔频谱
- 解码方法:贪婪搜索(Greedy Search)
- 最大活跃路径:4条
- 处理间隔:100毫秒
端点检测
- 规则1最小尾随静音:2.4秒
- 规则2最小尾随静音:1.2秒
- 规则3最小语音长度:20.0秒
支持的语言
中文识别
- 普通话:标准普通话识别效果最佳
- 常用词汇:日常对话、技术术语
- 数字识别:支持中文数字表达
英文识别
- 美式英语:主要训练数据
- 技术词汇:编程、科技相关术语
- 混合语音:中英文混合表达
使用技巧
获得最佳识别效果
-
环境准备
- 选择安静的环境
- 关闭风扇、空调等噪音源
- 使用质量较好的麦克风
-
发音技巧
- 保持正常语速,不要过快或过慢
- 发音清晰,避免含糊不清
- 句子间适当停顿
-
内容建议
- 使用常见词汇和表达
- 避免过于专业的术语
- 中英文切换时稍作停顿
常见问题解决
识别准确率低
- 检查麦克风音量设置
- 减少背景噪音
- 调整与麦克风的距离
- 确保发音清晰
无法启动识别
- 检查麦克风权限设置
- 确认音频设备正常工作
- 验证模型文件完整性
- 重启应用程序
识别延迟较高
- 关闭其他占用CPU的程序
- 检查系统资源使用情况
- 考虑使用更快的存储设备
性能优化
系统要求
- CPU:推荐4核心以上
- 内存:至少4GB可用内存
- 存储:SSD存储提升加载速度
- 音频:支持16kHz采样率的音频设备
优化建议
- 模型选择:使用int8量化模型减少内存占用
- 线程数量:根据CPU核心数调整线程数
- 缓冲设置:适当调整音频缓冲区大小
故障排除
麦克风权限问题(macOS常见)
症状:
- 提示"Kiro想访问麦克风"但功能不工作
- 音频源状态一直显示
IdleState - 控制台显示"音频源状态异常"
解决步骤:
-
手动授权权限
系统设置 → 隐私与安全性 → 麦克风 添加qt_speech_simple程序并开启权限 -
重置权限
sudo tccutil reset Microphone # 然后重新运行程序,点击"允许" -
使用权限检查脚本
./check_audio_permissions.sh -
验证权限状态
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \ "SELECT client, auth_value FROM access WHERE service='kTCCServiceMicrophone';"
详细解决方案请参考: docs/MICROPHONE_PERMISSION_FIX.md
模型加载失败
检查步骤:
1. 确认模型文件路径正确
2. 验证文件完整性(大小、权限)
3. 检查磁盘空间是否充足
4. 查看控制台错误信息
音频设备问题
解决方法:
1. 检查系统音频设置
2. 确认麦克风权限(重点!)
3. 测试其他音频应用
4. 重新插拔音频设备
5. 重启音频服务:sudo killall coreaudiod
识别结果异常
可能原因:
1. 音频质量问题
2. 模型版本不匹配
3. 配置参数错误
4. 系统资源不足
5. 权限未正确授予
Qt音频源状态问题
状态说明:
- ActiveState: 正常录音状态
- IdleState: 空闲状态(通常是权限问题)
- StoppedState: 已停止状态
- SuspendedState: 暂停状态
解决IdleState问题:
1. 检查麦克风权限
2. 重启音频服务
3. 使用不同的音频格式
4. 检查设备占用情况
开发说明
关键组件
- ASRManager:管理在线识别器
- SpeechTestMainWindow:处理音频输入和界面更新
- QAudioSource:音频数据采集
- QTimer:定时处理音频数据
数据流程
麦克风 → QAudioSource → 音频数据 → 格式转换 →
sherpa-onnx → 识别结果 → 界面显示
扩展可能
- 支持更多语言模型
- 添加语音活动检测
- 实现语音命令识别
- 集成语音翻译功能