NarratoAI/docs/audio_optimization_guide.md
linyq 04ffda297f feat(audio): 增强音量管理和智能音量调整功能
更新AudioVolumeDefaults类,提升原声音量至1.2以平衡TTS音量,并允许最大音量达到2.0。新增智能音量调整功能,自动分析和调整音频轨道音量,确保音量在合理范围内。优化任务处理逻辑,结合用户设置和推荐音量配置,提升音频合成效果和用户体验。
2025-07-07 10:44:19 +08:00

163 lines
4.1 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.

# 音频音量平衡优化指南
## 问题描述
在视频剪辑后台任务中经常出现视频原声音量比TTS生成的解说声音音量小很多的问题。即使设置了视频原声为1.0解说音量为0.7,原声依然听起来比较小。
## 原因分析
1. **音频响度差异**TTS生成的音频通常具有较高且一致的响度而视频原声的音量可能本身就比较低或者动态范围较大。
2. **缺乏音频标准化**:之前的代码只是简单地通过乘法器调整音量,没有进行音频响度分析和标准化处理。
3. **音频混合方式**:使用 `CompositeAudioClip` 进行音频混合时,不同音频轨道的响度差异会被保留。
## 解决方案
### 1. 音频标准化工具 (`audio_normalizer.py`)
实现了 `AudioNormalizer` 类,提供以下功能:
- **LUFS响度分析**使用FFmpeg的loudnorm滤镜分析音频的LUFS响度
- **RMS音量计算**作为LUFS分析的备用方案
- **音频标准化**:将音频标准化到目标响度
- **智能音量调整**分析TTS和原声的响度差异计算合适的音量调整系数
### 2. 音频配置管理 (`audio_config.py`)
实现了 `AudioConfig` 类,提供:
- **默认音量配置**:优化后的默认音量设置
- **视频类型配置**:针对不同类型视频的音量配置
- **预设配置文件**balanced、voice_focused、original_focused等
- **内容类型推荐**:根据内容类型推荐音量设置
### 3. 智能音量调整
`generate_video.py` 中集成了智能音量调整功能:
- 自动分析TTS和原声的响度差异
- 计算合适的音量调整系数
- 保留用户设置的相对比例
- 限制调整范围,避免过度调整
## 配置更新
### 默认音量设置
```python
# 原来的设置
ORIGINAL_VOLUME = 0.7
# 优化后的设置
ORIGINAL_VOLUME = 1.2 # 提高原声音量
MAX_VOLUME = 2.0 # 允许原声音量超过1.0
```
### 推荐音量配置
```python
# 混合内容(默认)
'mixed': {
'tts_volume': 0.8,
'original_volume': 1.3,
'bgm_volume': 0.3,
}
# 原声为主的内容
'original_heavy': {
'tts_volume': 0.6,
'original_volume': 1.6,
'bgm_volume': 0.1,
}
```
## 使用方法
### 1. 自动优化(推荐)
系统会自动应用优化的音量配置:
```python
# 在 task.py 中自动应用
optimized_volumes = get_recommended_volumes_for_content('mixed')
```
### 2. 手动配置
可以通过配置文件或参数手动设置:
```python
# 应用预设配置文件
volumes = AudioConfig.apply_volume_profile('original_focused')
# 根据视频类型获取配置
volumes = AudioConfig.get_optimized_volumes('entertainment')
```
### 3. 智能分析
启用智能音量分析(默认开启):
```python
# 在 schema.py 中控制
ENABLE_SMART_VOLUME = True
```
## 测试验证
运行测试脚本验证功能:
```bash
source .venv/bin/activate
python test_audio_optimization.py
```
测试结果显示:
- TTS测试音频LUFS: -24.15
- 原声测试音频LUFS: -32.95
- 建议调整系数TTS 1.61, 原声 3.00
## 效果对比
### 优化前
- TTS音量0.7
- 原声音量1.0
- 问题原声明显比TTS小
### 优化后
- TTS音量0.8(智能调整)
- 原声音量1.3(智能调整)
- 效果:音量平衡,听感自然
## 注意事项
1. **FFmpeg依赖**音频分析功能需要FFmpeg支持loudnorm滤镜
2. **性能影响**:智能分析会增加少量处理时间
3. **音质保持**:所有调整都保持音频质量不变
4. **兼容性**:向后兼容现有的音量设置
## 故障排除
### 1. LUFS分析失败
- 检查FFmpeg是否安装
- 确认音频文件格式支持
- 自动降级到RMS分析
### 2. 音量调整过度
- 检查音量限制设置
- 调整目标LUFS值
- 使用预设配置文件
### 3. 性能问题
- 关闭智能分析:`ENABLE_SMART_VOLUME = False`
- 使用简单音量配置
- 减少音频分析频率
## 未来改进
1. **机器学习优化**:基于用户反馈学习最佳音量配置
2. **实时预览**在UI中提供音量调整预览
3. **批量处理**:支持批量音频标准化
4. **更多音频格式**:扩展支持的音频格式