2009-06-12 10 views
11

我有一堆WAV格式的不同音频录音(所有不同的乐器和音高),我想对它们进行“标准化”,以便它们在播放时的音量大致相同。如何确定WAV文件的响亮程度?

我试过测量平均样本量(所有绝对值之和除以样本数),但通过这种测量正常化不能很好地工作。我认为这种方法不起作用,因为它没有考虑到声音的频率,而且我知道高频录音听起来比具有相同幅度的低频声音更响亮。

有没有人知道测量声音响度的好方法?

+0

看起来这取决于你控制之外的许多因素 - 其中最大的一个因素是听众对各种频率的相对敏感度。这从个人到下一个人都有很大不同。 – 2009-06-12 02:26:22

+2

呃?那是什么? – MusiGenesis 2009-06-12 02:27:37

+0

只是在开玩笑。是的,很多这些会因人而异,但是我希望尽可能地正常化。 – MusiGenesis 2009-06-12 02:28:26

回答

10

Root Mean Square通常用于估计声音文件的响度。这是因为如果声音很短,那么很大声的声音可能不会被认为是这样。另外请记住,功率与幅度的平方成指数增长。

在Hydrogen Audio的音频怪才知道这个东西吨...看看他们的免费Replay GainReplay Gain软件。你根本不需要做任何编程。

编辑:包括功率与幅度的评论反馈。

3

不是音频方面的专家,而是添加到以前的评论中,您应该弄清楚您定义的“峰值功率的最短时间”,然后将波形转换为原始浮点并使用RMS在这段时间内,持续地拍摄这段时间的大块,找到最大值,并在那里获得最高的峰值功率。

-1

我可能会离开这里,但是,如果你有wavepad,你可以加载多个文件,并将这些卷混淆一点,所以它们都是一样的。另外,如果某个文件的某些部分声音较大,则可以选择该部分并降低该部分的音量。

编辑:对不起,它不是测量音量的“方法”,但如果你只是需要使它们都一样,这应该工作得很好。

2

为了增加PeterAllenWebb的回应:

之前计算RMS,你应该“中心”的样本第一(想了5分钟的.wav其中每个样品具有最大+振动幅度的)。最好的方法是使用亚音速频率的高通滤波器。

这仍然不会采用人类敏感的频率进行计数。要做到这一点,你可以使用A-权重。有一个页面,您可以在线计算的话: http://www.diracdelta.co.uk/science/source/a/w/aweighting/source.html

的代码似乎是在这里: http://www.diracdelta.co.uk/science/source/a/w/aweighting/multicalc.js

1

重申一下其他一些人说,使用RMS值来估计一个通道的“音量”的声音。

但是,如果您正在处理像采摘或打鼓等冲动声音,则您需要执行滑动RMS值并仅挑选峰值RMS值。测量100毫秒的声音,滑动窗口,再次测量等,然后根据您找到的最大值进行标准化。

在做RMS之前,肯定会删除任何DC值,而A-权重会使它更像我们听到的。这里是MATLAB/OctavePython的A权重代码。