Files
QSmartAssistant/docs/MODEL_SETTINGS_UPDATE.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

171 lines
4.2 KiB
Markdown
Raw Permalink 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的模型设置界面进行了重大改进主要包括
1. 将ASR设置分离为离线ASR和在线ASR两个独立标签页
2. 移除了VITS中英文混合模型选项
3. 移除了识别后自动播放语音功能
## 🔄 主要变更
### 1. ASR设置分离
**之前**:单一的"语音识别(ASR)"标签页
**现在**:分为两个独立标签页
#### 离线语音识别标签页
- **用途**:配置用于文件识别的离线模型
- **预设模型**
- Paraformer中文模型
- Whisper多语言模型
- 自定义模型
- **配置项**
- 模型文件(.onnx)
- 词汇表文件(tokens.txt)
#### 在线语音识别标签页
- **用途**:配置用于实时麦克风识别的在线模型
- **预设模型**
- Streaming Paraformer中英文模型
- Streaming Zipformer中英文模型
- 自定义模型
- **配置项**
- 编码器文件(encoder.onnx)
- 词汇表文件(tokens.txt)
### 2. TTS模型选项简化
**移除的选项**
- ❌ VITS中英文混合模型
**保留的选项**
- ✅ MeloTTS中英文混合模型
- ✅ VITS中文模型
- ✅ 自定义模型
**原因**:简化用户选择,专注于稳定可靠的模型选项。
### 3. 移除自动播放功能
**移除的功能**
- ❌ "识别后自动播放语音"复选框
- ❌ 自动合成和播放识别结果的功能
- ❌ synthesizeAndPlayText方法
**原因**
- 简化用户界面
- 减少不必要的功能复杂性
- 用户可以手动选择是否播放合成的语音
## 🏗️ 技术实现
### 代码结构变更
#### ModelSettingsDialog.h
```cpp
// 新增方法
ModelConfig getCurrentOfflineASRConfig() const;
ModelConfig getCurrentOnlineASRConfig() const;
void setCurrentOfflineASRConfig(const ModelConfig& config);
void setCurrentOnlineASRConfig(const ModelConfig& config);
// 新增UI组件
QWidget* offlineAsrTab;
QWidget* onlineAsrTab;
// ... 相关控件
```
#### ModelSettingsDialog.cpp
- 新增 `setupOfflineASRTab()` 方法
- 新增 `setupOnlineASRTab()` 方法
- 更新配置保存和加载逻辑
- 分离离线和在线ASR的验证逻辑
#### SpeechTestMainWindow.h/cpp
- 移除 `autoPlayCheckBox` 控件
- 移除 `synthesizeAndPlayText()` 方法
- 更新模型设置对话框调用
### 配置存储结构
**新的配置分组**
```ini
[OfflineASR]
modelPath=...
tokensPath=...
modelType=...
[OnlineASR]
modelPath=...
tokensPath=...
modelType=...
[TTS]
modelPath=...
tokensPath=...
lexiconPath=...
dictDirPath=...
dataDirPath=...
modelType=...
```
## 🎨 用户体验改进
### 更清晰的功能分离
- 用户可以明确区分离线和在线识别的配置
- 每个标签页专注于特定的使用场景
- 减少配置混淆的可能性
### 简化的界面
- 移除了不常用的自动播放功能
- 减少了TTS模型选项的复杂性
- 更专注的功能设计
### 更好的可扩展性
- 分离的ASR配置为未来添加更多模型类型提供了基础
- 清晰的代码结构便于维护和扩展
## 📋 使用指南
### 配置离线ASR
1. 打开"设置" → "模型设置"
2. 切换到"离线语音识别"标签页
3. 选择预设模型或自定义配置
4. 指定模型文件和词汇表文件路径
### 配置在线ASR
1. 切换到"在线语音识别"标签页
2. 选择适合实时识别的流式模型
3. 配置编码器文件和词汇表文件
### 配置TTS
1. 切换到"语音合成(TTS)"标签页
2. 选择MeloTTS中英文混合或VITS中文模型
3. 配置所需的模型文件和辅助文件
## 🔮 未来规划
### 短期计划
- 实现模型测试功能
- 添加模型自动扫描功能
- 优化模型加载性能
### 长期规划
- 支持更多ASR和TTS模型
- 添加模型性能监控
- 实现云端模型支持
## ✅ 兼容性说明
### 向后兼容
- 现有的配置文件会自动迁移到新的结构
- 旧的ASR配置会同时应用到离线和在线ASR
- 不影响现有的录音和识别功能
### 升级建议
- 建议用户重新配置离线和在线ASR模型
- 检查TTS模型配置是否正确
- 测试各项功能确保正常工作
这次更新使QSmartAssistant的模型配置更加专业和用户友好为后续功能扩展奠定了良好的基础。