音量正常化 python

Audio volume normalize python

我有多个wave文件,有的是小音量,有的是大音量。

我想“正常化”声音振幅。

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

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

我想调整音量大小,请问有什么做法吗?

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

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

现在迭代所有样本并将它们乘以倒比,这样 25000 就变成 32767 :

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

根据软件的不同,此操​​作称为“规范化”或“优化”。