如何标准化 python 中音频文件的音量?

How to normalize the volume of an audio file in python?

我有一堆 AAC (.m4a) 音频文件需要规范化,我希望找到一种方法来使用一些包通过简单的 python 脚本来完成。

我在超级用户 this thread 上发现有人在 python 中编写了一个 ffmpeg 命令行实用程序,它运行良好,但想知道目前是否有一些可用的 python 包 pip install 可以完成任务。

您可以使用pydub模块以最少的代码实现峰值音量的归一化。 使用

安装 pydub
pip install pydub

灵感来自here

您可以在 pydub 中测量 rms,它是平均振幅的测量值,pydub 提供为 audio_segment.rms。它还提供了一种将值转换为 dBFS (audio_segment.dBFS)

的便捷方法

如果您希望音频文件具有相同的平均振幅,基本上您选择一个平均振幅(以 dBFS 为单位,下例中为 -20),并根据需要进行调整:

from pydub import AudioSegment

def match_target_amplitude(sound, target_dBFS):
    change_in_dBFS = target_dBFS - sound.dBFS
    return sound.apply_gain(change_in_dBFS)

sound = AudioSegment.from_file("yourAudio.m4a", "m4a")
normalized_sound = match_target_amplitude(sound, -20.0)
normalized_sound.export("nomrmalizedAudio.m4a", format="mp4")
from pydub import AudioSegment, effects  

rawsound = AudioSegment.from_file("./input.m4a", "m4a")  
normalizedsound = effects.normalize(rawsound)  
normalizedsound.export("./output.wav", format="wav")

之前:

之后: