NarratoAI / docs /audio_optimization_guide.md
m19921414377's picture
Upload folder using huggingface_hub
8587b71 verified
# 音频音量平衡优化指南
## 问题描述
在视频剪辑后台任务中,经常出现视频原声音量比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. **更多音频格式**:扩展支持的音频格式