音频音量标准化python

时间:2021-02-05 15:51:08

标签: python audio librosa

我有多个波形文件,有些是小音量,有些是大音量。

我想“标准化”声音振幅。

(就像某些音频音序器应用程序具有的“标准化”功能。 把音量调大到峰值就到了0db。)

例如 librosa 库,它有 librosa.util.normalize,但我不确定这是我的意思。

我想调整音频的音量,有什么做法吗?

1 个答案:

答案 0 :(得分:1)

找到任何通道中的最大峰值(正或负,因此使用 abs)。例如,在一个 16 位文件中,假设您找到 25000。计算该值相对于有符号 16 位范围内最大值的比率并将其取反:

ratio = 32767.0 / 25000 #(equivalent to 1 / (25000 / 32767.0))

现在迭代所有样本并将它们乘以反向比率,使 25000 变为 32767 :

for(sample in samples):
    sample = round(sample * ratio)

此操作被称为“标准化”或“优化”,具体取决于软件。