如何使用Pydub参照另一音频设置AudioSegment的RMS相对电平
Pydub调整音频电平问题解决方案
核心原因
Pydub的AudioSegment为不可变对象,所有音频处理方法(包括apply_gain())都不会修改原对象本身,只会返回处理后的新AudioSegment实例。你之前的代码调用apply_gain()后没有将返回值赋值给原变量,所以调整没有生效,打印的rms和dBFS自然没有变化。
修正后代码(实现第一个音频比第二个高4dB的需求)
# 先将两个音频对齐到相同dBFS电平 if segmentOne.dBFS > segmentTwo.dBFS: gain = segmentOne.dBFS - segmentTwo.dBFS # 接收apply_gain返回的新音频片段 segmentTwo = segmentTwo.apply_gain(gain) elif segmentOne.dBFS < segmentTwo.dBFS: gain = segmentTwo.dBFS - segmentOne.dBFS segmentOne = segmentOne.apply_gain(gain) # 两者电平对齐后,给第一个音频加4dB,满足相对电平要求 segmentOne = segmentOne.apply_gain(4) # 叠加音频 segmentOne = segmentOne.overlay(segmentTwo)
效果验证
处理完成后可以输出电平数值确认是否符合预期:print(segmentOne.dBFS, segmentTwo.dBFS)
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

