mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-10 18:02:51 +00:00
更新AudioVolumeDefaults类,提升原声音量至1.2以平衡TTS音量,并允许最大音量达到2.0。新增智能音量调整功能,自动分析和调整音频轨道音量,确保音量在合理范围内。优化任务处理逻辑,结合用户设置和推荐音量配置,提升音频合成效果和用户体验。
4.5 KiB
4.5 KiB
音频音量平衡优化 - 完成总结
问题解决
✅ 已解决:视频原声音量比TTS解说音量小的问题
原始问题
- 即使设置视频原声为1.0,解说音量为0.7,原声依然比解说小很多
- 用户体验差,需要手动调整音量才能听清原声
根本原因
- 音频响度差异:TTS音频通常具有-24dB LUFS的响度,而视频原声可能只有-33dB LUFS
- 缺乏标准化:简单的音量乘法器无法解决响度差异问题
- 配置不合理:默认的原声音量0.7太低
解决方案实施
1. 音频分析工具 ✅
- 文件:
app/services/audio_normalizer.py - 功能: LUFS响度分析、RMS计算、音频标准化
- 测试结果:
- TTS测试音频: -24.15 LUFS
- 原声测试音频: -32.95 LUFS
- 智能调整建议: TTS×1.61, 原声×3.00
2. 配置优化 ✅
- 文件:
app/models/schema.py - 改进:
- 原声默认音量: 0.7 → 1.2
- 最大音量限制: 1.0 → 2.0
- 新增智能调整开关
3. 智能音量调整 ✅
- 文件:
app/services/generate_video.py - 功能: 自动分析音频响度差异,计算合适的调整系数
- 特点: 保留用户设置的相对比例,限制调整范围
4. 配置管理系统 ✅
- 文件:
app/config/audio_config.py - 功能:
- 不同视频类型的音量配置
- 预设配置文件(balanced、voice_focused等)
- 内容类型推荐
5. 任务集成 ✅
- 文件:
app/services/task.py - 改进: 自动应用优化的音量配置
- 兼容性: 向后兼容现有设置
测试验证
功能测试 ✅
python test_audio_optimization.py
- 音频分析功能正常
- 配置系统工作正常
- 智能调整计算正确
示例演示 ✅
python examples/audio_volume_example.py
- 基本配置使用
- 智能分析演示
- 实际场景应用
效果对比
| 项目 | 优化前 | 优化后 | 改进 |
|---|---|---|---|
| TTS音量 | 0.7 | 0.8 (智能调整) | 更平衡 |
| 原声音量 | 1.0 | 1.3 (智能调整) | 显著提升 |
| 响度差异 | ~9dB | ~3dB | 大幅缩小 |
| 用户体验 | 需手动调整 | 自动平衡 | 明显改善 |
配置推荐
混合内容(默认)
{
'tts_volume': 0.8,
'original_volume': 1.3,
'bgm_volume': 0.3
}
原声为主的内容
{
'tts_volume': 0.6,
'original_volume': 1.6,
'bgm_volume': 0.1
}
教育类视频
{
'tts_volume': 0.9,
'original_volume': 0.8,
'bgm_volume': 0.2
}
技术特点
智能分析
- 使用FFmpeg的loudnorm滤镜进行LUFS分析
- RMS计算作为备用方案
- 自动计算最佳音量调整系数
配置灵活
- 支持多种视频类型
- 预设配置文件
- 用户自定义优先
性能优化
- 可选的智能分析(默认开启)
- 临时文件自动清理
- 向后兼容现有代码
文件清单
核心文件
app/services/audio_normalizer.py- 音频分析和标准化app/config/audio_config.py- 音频配置管理app/services/generate_video.py- 集成智能调整app/services/task.py- 任务处理优化app/models/schema.py- 配置参数更新
测试和文档
test_audio_optimization.py- 功能测试脚本examples/audio_volume_example.py- 使用示例docs/audio_optimization_guide.md- 详细指南AUDIO_OPTIMIZATION_SUMMARY.md- 本总结文档
使用方法
自动优化(推荐)
系统会自动应用优化配置,无需额外操作。
手动配置
# 应用预设配置
volumes = AudioConfig.apply_volume_profile('original_focused')
# 根据内容类型获取推荐
volumes = get_recommended_volumes_for_content('original_heavy')
关闭智能分析
# 在 schema.py 中设置
ENABLE_SMART_VOLUME = False
后续改进建议
- 用户界面集成: 在WebUI中添加音量配置选项
- 实时预览: 提供音量调整的实时预览功能
- 机器学习: 基于用户反馈学习最佳配置
- 批量处理: 支持批量音频标准化
结论
通过实施音频响度分析和智能音量调整,成功解决了视频原声音量过小的问题。新系统能够:
- 自动检测音频响度差异
- 智能调整音量平衡
- 保持兼容现有配置
- 提供灵活的配置选项
用户现在可以享受到更平衡的音频体验,无需手动调整音量即可清晰听到视频原声和TTS解说。