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

208 lines
6.0 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现在采用全新的分离录音设置架构将录音过程分为两个独立可控的阶段
- **录音设置**:控制设备录制时使用的音频参数
- **输出设置**:控制最终保存文件的格式
这种设计让用户能够更精确地控制录音质量和输出格式,实现最佳的录音体验。
## 🏗️ 架构设计
### 传统单一设置 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的录音功能提供了强大而灵活的基础既满足了专业用户的精确控制需求也为普通用户提供了简单易用的默认配置。