主要功能: - ✅ 离线语音识别 (ASR) - Paraformer中文模型 - ✅ 在线语音识别 - Streaming Paraformer中英文双语模型 - ✅ 语音合成 (TTS) - MeloTTS中英文混合模型 - ✅ 语音唤醒 (KWS) - Zipformer关键词检测模型 - ✅ 麦克风录音功能 - 支持多种格式和实时转换 - ✅ 模型设置界面 - 完整的图形化配置管理 KWS优化亮点: - 🎯 成功实现关键词检测 (测试成功率10%→预期50%+) - ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数 - 🔧 智能参数验证和实时反馈 - 📊 详细的调试信息和成功统计 - 🎛️ 用户友好的设置界面 技术架构: - 模块化设计: ASRManager, TTSManager, KWSManager - 实时音频处理: 自动格式转换 (任意格式→16kHz单声道) - 智能设备检测: 自动选择最佳音频格式 - 完整资源管理: 正确的创建和销毁流程 - 跨平台支持: macOS优化的音频权限处理 界面特性: - 2×2网格布局: ASR、TTS、录音、KWS四大功能模块 - 分离录音设置: 设备参数 + 输出格式独立配置 - 实时状态显示: 音频电平、处理次数、成功统计 - 详细的用户指导和错误提示
208 lines
6.0 KiB
Markdown
208 lines
6.0 KiB
Markdown
# 分离录音设置功能说明
|
||
|
||
## 🎯 功能概述
|
||
|
||
QSmartAssistant现在采用全新的分离录音设置架构,将录音过程分为两个独立可控的阶段:
|
||
- **录音设置**:控制设备录制时使用的音频参数
|
||
- **输出设置**:控制最终保存文件的格式
|
||
|
||
这种设计让用户能够更精确地控制录音质量和输出格式,实现最佳的录音体验。
|
||
|
||
## 🏗️ 架构设计
|
||
|
||
### 传统单一设置 vs 分离设置
|
||
|
||
| 方面 | 传统方式 | 分离设置方式 |
|
||
|------|----------|-------------|
|
||
| 设置复杂度 | 单一选择 | 双重控制 |
|
||
| 录音质量 | 受输出格式限制 | 可使用设备最佳格式 |
|
||
| 输出灵活性 | 与录音格式绑定 | 完全独立自定义 |
|
||
| 用户理解 | 简单但限制多 | 清晰且功能强大 |
|
||
|
||
### 分离设置的优势
|
||
|
||
1. **录音质量最优化**
|
||
- 可以使用设备支持的最高质量格式录制
|
||
- 不受最终输出格式限制
|
||
- 自动检测设备最佳参数
|
||
|
||
2. **输出格式灵活性**
|
||
- 完全自定义输出格式
|
||
- 默认语音识别友好格式(16kHz单声道)
|
||
- 支持预设配置快速选择
|
||
|
||
3. **用户控制精确性**
|
||
- 清楚了解录音和输出的区别
|
||
- 可以根据需要精确调整
|
||
- 透明的格式转换过程
|
||
|
||
## 🎛️ 界面设计
|
||
|
||
### 录音设置区域(设备参数)
|
||
|
||
```
|
||
┌─ 录音设置(设备参数) ─────────────────┐
|
||
│ 录音采样率: [自动检测最佳 ▼] │
|
||
│ 录音声道: [自动检测最佳 ▼] │
|
||
└──────────────────────────────────────┘
|
||
```
|
||
|
||
**功能说明**:
|
||
- 控制实际录音时设备使用的参数
|
||
- "自动检测最佳"会选择设备支持的最高质量
|
||
- 也可以手动指定具体的录音参数
|
||
|
||
### 输出设置区域(保存格式)
|
||
|
||
```
|
||
┌─ 输出设置(保存格式) ─────────────────┐
|
||
│ 输出采样率: [16000 Hz (语音识别) ▼] │
|
||
│ 输出声道: [单声道 (Mono) ▼] │
|
||
│ [预设] 预估输出文件大小: ~2MB/分钟 │
|
||
└──────────────────────────────────────┘
|
||
```
|
||
|
||
**功能说明**:
|
||
- 控制最终保存文件的格式
|
||
- 默认16kHz单声道(语音识别友好)
|
||
- 提供预设配置和文件大小预估
|
||
|
||
## 🔄 工作流程
|
||
|
||
### 1. 设置阶段
|
||
```
|
||
用户配置录音设置 → 用户配置输出设置 → 程序验证兼容性
|
||
```
|
||
|
||
### 2. 录音阶段
|
||
```
|
||
使用录音设置参数 → 设备开始录制 → 实时显示录音状态
|
||
```
|
||
|
||
### 3. 处理阶段
|
||
```
|
||
录音完成 → 格式对比 → 必要时进行转换 → 保存为输出格式
|
||
```
|
||
|
||
### 4. 结果阶段
|
||
```
|
||
显示最终文件信息 → 提供播放选项 → 重新启用设置
|
||
```
|
||
|
||
## 📊 使用场景示例
|
||
|
||
### 场景1:语音备忘录
|
||
- **录音设置**: 自动检测最佳(可能是48kHz立体声)
|
||
- **输出设置**: 16kHz单声道
|
||
- **结果**: 高质量录制,紧凑保存,适合语音识别
|
||
|
||
### 场景2:音乐录制
|
||
- **录音设置**: 48kHz立体声(手动指定)
|
||
- **输出设置**: 44.1kHz立体声
|
||
- **结果**: 专业质量录制,CD质量保存
|
||
|
||
### 场景3:会议录音
|
||
- **录音设置**: 自动检测最佳
|
||
- **输出设置**: 22kHz单声道
|
||
- **结果**: 最佳录制质量,平衡的文件大小
|
||
|
||
### 场景4:高保真录音
|
||
- **录音设置**: 48kHz立体声
|
||
- **输出设置**: 48kHz立体声
|
||
- **结果**: 无损录制和保存,最高音质
|
||
|
||
## 🎨 用户体验设计
|
||
|
||
### 直观的视觉分离
|
||
- 两个独立的设置组框
|
||
- 清晰的标题说明用途
|
||
- 不同的默认值体现不同目的
|
||
|
||
### 智能默认配置
|
||
- 录音设置默认"自动检测最佳"
|
||
- 输出设置默认"16kHz单声道"
|
||
- 平衡易用性和功能性
|
||
|
||
### 实时反馈
|
||
- 显示实际使用的录音格式
|
||
- 显示目标输出格式
|
||
- 格式转换状态提示
|
||
|
||
### 预设配置支持
|
||
- 输出设置提供常用预设
|
||
- 一键切换不同使用场景
|
||
- 文件大小实时预估
|
||
|
||
## 🔧 技术实现
|
||
|
||
### 设备格式检测
|
||
```cpp
|
||
// 自动检测最佳格式的优先级
|
||
QList<int> deviceSampleRates = {48000, 44100, 22050, 16000};
|
||
QList<int> deviceChannels = {2, 1};
|
||
QList<QAudioFormat::SampleFormat> deviceFormats = {Int16, Float};
|
||
```
|
||
|
||
### 格式转换决策
|
||
```cpp
|
||
// 判断是否需要格式转换
|
||
if (recordFormat != outputFormat) {
|
||
// 执行智能音频转换
|
||
convertedData = convertAudioFormat(rawData, recordFormat, outputFormat);
|
||
}
|
||
```
|
||
|
||
### 用户界面状态管理
|
||
```cpp
|
||
// 录音期间禁用所有设置
|
||
recordSampleRateComboBox->setEnabled(false);
|
||
recordChannelComboBox->setEnabled(false);
|
||
outputSampleRateComboBox->setEnabled(false);
|
||
outputChannelComboBox->setEnabled(false);
|
||
```
|
||
|
||
## 📈 性能优化
|
||
|
||
### 智能转换策略
|
||
- 格式相同时跳过转换
|
||
- 高效的线性插值重采样
|
||
- 内存优化的数据处理
|
||
|
||
### 用户体验优化
|
||
- 实时格式验证
|
||
- 清晰的状态反馈
|
||
- 智能错误处理
|
||
|
||
### 设备兼容性
|
||
- 自动降级不支持的格式
|
||
- 完善的错误恢复机制
|
||
- 跨平台兼容性保证
|
||
|
||
## 🎉 功能优势总结
|
||
|
||
### 对用户的好处
|
||
✅ **更好的录音质量**: 使用设备最佳格式录制
|
||
✅ **更灵活的输出**: 完全自定义保存格式
|
||
✅ **更清晰的控制**: 分离设置让用途更明确
|
||
✅ **更智能的默认**: 语音识别友好的默认输出
|
||
✅ **更简单的操作**: 自动检测减少复杂配置
|
||
|
||
### 对开发的好处
|
||
✅ **更清晰的架构**: 录音和输出逻辑分离
|
||
✅ **更容易扩展**: 独立的设置系统
|
||
✅ **更好的维护**: 模块化的代码结构
|
||
✅ **更强的兼容**: 灵活的格式适配
|
||
|
||
## 🔮 未来扩展
|
||
|
||
### 短期计划
|
||
- 添加更多预设配置
|
||
- 支持批量格式转换
|
||
- 增加音频质量分析
|
||
|
||
### 长期规划
|
||
- 支持更多音频格式
|
||
- 实现音频效果处理
|
||
- 集成云端转换服务
|
||
|
||
这种分离设置架构为QSmartAssistant的录音功能提供了强大而灵活的基础,既满足了专业用户的精确控制需求,也为普通用户提供了简单易用的默认配置。 |