mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-10 18:02:51 +00:00
更新AudioVolumeDefaults类,提升原声音量至1.2以平衡TTS音量,并允许最大音量达到2.0。新增智能音量调整功能,自动分析和调整音频轨道音量,确保音量在合理范围内。优化任务处理逻辑,结合用户设置和推荐音量配置,提升音频合成效果和用户体验。
4.1 KiB
4.1 KiB
音频音量平衡优化指南
问题描述
在视频剪辑后台任务中,经常出现视频原声音量比TTS生成的解说声音音量小很多的问题。即使设置了视频原声为1.0,解说音量为0.7,原声依然听起来比较小。
原因分析
-
音频响度差异:TTS生成的音频通常具有较高且一致的响度,而视频原声的音量可能本身就比较低,或者动态范围较大。
-
缺乏音频标准化:之前的代码只是简单地通过乘法器调整音量,没有进行音频响度分析和标准化处理。
-
音频混合方式:使用
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和原声的响度差异
- 计算合适的音量调整系数
- 保留用户设置的相对比例
- 限制调整范围,避免过度调整
配置更新
默认音量设置
# 原来的设置
ORIGINAL_VOLUME = 0.7
# 优化后的设置
ORIGINAL_VOLUME = 1.2 # 提高原声音量
MAX_VOLUME = 2.0 # 允许原声音量超过1.0
推荐音量配置
# 混合内容(默认)
'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. 自动优化(推荐)
系统会自动应用优化的音量配置:
# 在 task.py 中自动应用
optimized_volumes = get_recommended_volumes_for_content('mixed')
2. 手动配置
可以通过配置文件或参数手动设置:
# 应用预设配置文件
volumes = AudioConfig.apply_volume_profile('original_focused')
# 根据视频类型获取配置
volumes = AudioConfig.get_optimized_volumes('entertainment')
3. 智能分析
启用智能音量分析(默认开启):
# 在 schema.py 中控制
ENABLE_SMART_VOLUME = True
测试验证
运行测试脚本验证功能:
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(智能调整)
- 效果:音量平衡,听感自然
注意事项
- FFmpeg依赖:音频分析功能需要FFmpeg支持loudnorm滤镜
- 性能影响:智能分析会增加少量处理时间
- 音质保持:所有调整都保持音频质量不变
- 兼容性:向后兼容现有的音量设置
故障排除
1. LUFS分析失败
- 检查FFmpeg是否安装
- 确认音频文件格式支持
- 自动降级到RMS分析
2. 音量调整过度
- 检查音量限制设置
- 调整目标LUFS值
- 使用预设配置文件
3. 性能问题
- 关闭智能分析:
ENABLE_SMART_VOLUME = False - 使用简单音量配置
- 减少音频分析频率
未来改进
- 机器学习优化:基于用户反馈学习最佳音量配置
- 实时预览:在UI中提供音量调整预览
- 批量处理:支持批量音频标准化
- 更多音频格式:扩展支持的音频格式