# 录音设置技术说明

## 📊 采样率详解

### 采样率选项及应用场景

| 采样率 | 质量等级 | 文件大小 | 适用场景 | 技术说明 |
|--------|----------|----------|----------|----------|
| 8000 Hz | 电话质量 | 最小 | 电话录音、语音备忘 | 奈奎斯特频率4kHz，适合人声基频 |
| 16000 Hz | 语音标准 | 小 | 语音识别、会议录音 | 语音识别模型标准，平衡质量与大小 |
| 22050 Hz | 广播质量 | 中等 | 广播、播客 | CD采样率的一半，适合语音内容 |
| 44100 Hz | CD质量 | 大 | 音乐录制、高质量音频 | CD标准，20kHz频响，适合音乐 |
| 48000 Hz | 专业级 | 最大 | 专业录音、影视制作 | 专业音频标准，最高保真度 |

### 文件大小计算

**公式**: 文件大小 = 采样率 × 声道数 × 位深度 × 时长 ÷ 8

**示例计算**:
- 44.1kHz立体声16位，1分钟 = 44100 × 2 × 16 × 60 ÷ 8 = 10,584,000 字节 ≈ 10.6MB
- 16kHz单声道16位，1分钟 = 16000 × 1 × 16 × 60 ÷ 8 = 1,920,000 字节 ≈ 1.9MB

## 🔊 声道配置

### 单声道 (Mono)
- **优势**: 文件小，处理简单，适合语音
- **劣势**: 无空间感，音质相对较差
- **应用**: 语音录制、电话录音、语音识别

### 立体声 (Stereo)
- **优势**: 空间感强，音质好，适合音乐
- **劣势**: 文件大，处理复杂
- **应用**: 音乐录制、环境录音、高质量内容

## ⚙️ 智能格式适配和转换

### 分离设置架构

程序现在采用"录音设置 + 输出设置"的分离架构：

1. **录音设置（设备参数）**: 控制实际录音时使用的音频参数
   - 可选择设备支持的具体参数
   - 支持"自动检测最佳"模式
   - 确保录音质量最优

2. **输出设置（保存格式）**: 控制最终保存文件的格式
   - 完全自定义的输出格式
   - 默认16kHz单声道（语音识别友好）
   - 支持预设配置快速选择

3. **智能格式转换**: 录音格式与输出格式不同时自动转换

### 录音功能格式处理

1. **录制阶段**: 使用录音设置中指定的格式，或自动检测的最佳格式
2. **转换阶段**: 如果录音格式与输出格式不同，进行智能转换
3. **保存阶段**: 保存为输出设置指定的格式

### 语音识别格式处理

1. **录制阶段**: 使用设备支持的最佳格式
2. **实时转换**: 转换为16kHz单声道浮点格式
3. **识别处理**: 直接送入语音识别模型

### 新的处理流程示例

**录音功能（分离设置）**:
```
录音设置: 自动检测最佳 → 48kHz 立体声 (实际录制)
输出设置: 16kHz 单声道 (用户指定)
↓ (音频转换)
最终保存: 16kHz 单声道 (输出格式)
```

**录音功能（手动设置）**:
```
录音设置: 44.1kHz 立体声 (用户指定录制格式)
输出设置: 44.1kHz 立体声 (用户指定输出格式)
↓ (格式相同，无需转换)
最终保存: 44.1kHz 立体声 (直接保存)
```

**语音识别功能**:
```
设备最佳: 44.1kHz 立体声 (录制使用)
↓ (实时转换)
识别输入: 16kHz 单声道 (模型要求)
```

## 🎯 预设配置详解

### 语音录制预设 (16kHz 单声道)
- **目标**: 语音识别和语音备忘
- **优势**: 文件小，处理快，识别准确
- **文件大小**: ~2MB/分钟
- **频响范围**: 0-8kHz (覆盖人声频率)

### 音乐录制预设 (44.1kHz 立体声)
- **目标**: 音乐录制和高质量音频
- **优势**: CD质量，立体声效果
- **文件大小**: ~10.6MB/分钟
- **频响范围**: 0-22kHz (全频响)

### 专业录音预设 (48kHz 立体声)
- **目标**: 专业音频制作
- **优势**: 最高质量，专业标准
- **文件大小**: ~11.5MB/分钟
- **频响范围**: 0-24kHz (超全频响)

### 紧凑模式预设 (22kHz 单声道)
- **目标**: 平衡质量与文件大小
- **优势**: 适中质量，合理大小
- **文件大小**: ~2.6MB/分钟
- **频响范围**: 0-11kHz (适合语音和简单音乐)

## 🔧 技术实现细节

### WAV文件格式

程序生成标准的RIFF/WAVE格式文件：

```
文件结构:
├── RIFF头 (12字节)
│   ├── "RIFF" 标识
│   ├── 文件大小
│   └── "WAVE" 标识
├── fmt子块 (24字节)
│   ├── 格式信息
│   ├── 采样率
│   ├── 声道数
│   └── 位深度
└── data子块 (变长)
    ├── 数据大小
    └── 音频数据
```

### 音频数据处理

1. **数据采集**: 使用QAudioSource从麦克风获取音频数据
2. **格式转换**: 16位PCM格式，小端字节序
3. **缓冲管理**: 100ms间隔读取，避免数据丢失
4. **实时监控**: 计算录音时长和文件大小

### 音频转换算法

#### 转换步骤
1. **格式检测**: 检查输入和输出格式是否相同
2. **数据类型转换**: Int16 ↔ Float 格式转换
3. **声道处理**: 多声道混音为单声道（取平均值）
4. **重采样**: 线性插值重采样到目标采样率
5. **输出格式化**: 转换为目标数据格式

#### 重采样算法
```cpp
// 线性插值重采样
float ratio = targetSampleRate / sourceSampleRate;
for (int i = 0; i < newSampleCount; i++) {
    float srcIndex = i / ratio;
    int index = (int)srcIndex;
    float frac = srcIndex - index;
    float sample = samples[index] * (1-frac) + samples[index+1] * frac;
    output[i] = sample;
}
```

#### 声道混音算法
```cpp
// 多声道转单声道
for (int frame = 0; frame < frameCount; frame++) {
    float sum = 0.0f;
    for (int ch = 0; ch < channelCount; ch++) {
        sum += samples[frame * channelCount + ch];
    }
    monoSamples[frame] = sum / channelCount;
}
```

### 内存管理

- **缓冲策略**: 使用QByteArray动态缓冲
- **内存优化**: 及时释放不需要的音频数据
- **大文件处理**: 支持长时间录音而不会内存溢出
- **转换缓存**: 智能复用转换缓冲区

## 📈 性能优化

### CPU使用优化
- **低频采样**: 100ms处理间隔，减少CPU占用
- **高效编码**: 直接PCM格式，无需实时编码
- **内存复用**: 重用音频缓冲区

### 存储优化
- **压缩算法**: 虽然是PCM格式，但结构紧凑
- **文件系统**: 优化写入策略，减少磁盘碎片
- **缓存管理**: 合理的内存缓存大小

## 🎛️ 高级设置建议

### 根据用途选择设置

**会议录音**:
- 采样率: 16kHz
- 声道: 单声道
- 理由: 语音清晰，文件小，易传输

**音乐录制**:
- 采样率: 44.1kHz或48kHz
- 声道: 立体声
- 理由: 保持音乐的完整频响和空间感

**播客制作**:
- 采样率: 22kHz
- 声道: 单声道
- 理由: 平衡音质和文件大小

**专业制作**:
- 采样率: 48kHz
- 声道: 立体声
- 理由: 最高质量，后期处理空间大

### 设备性能考虑

**低端设备**:
- 推荐: 16kHz单声道
- 原因: 减少CPU和内存占用

**高端设备**:
- 推荐: 48kHz立体声
- 原因: 充分利用硬件性能

**移动设备**:
- 推荐: 22kHz单声道
- 原因: 平衡性能和电池消耗

## 🔍 故障排除

### 常见问题

**录音无声音**:
1. 检查麦克风权限
2. 确认音频设备工作正常
3. 尝试降低采样率设置

**音质不佳**:
1. 提高采样率设置
2. 改善录音环境
3. 使用更好的麦克风设备

**文件过大**:
1. 降低采样率
2. 使用单声道
3. 考虑录音时长

**设备不兼容**:
1. 使用预设配置
2. 让程序自动降级
3. 检查设备驱动

这些技术细节帮助用户更好地理解和使用录音功能，根据具体需求选择最适合的设置。