如何确定WAV文件的声音大小?

时间:2009-06-12 02:24:47

标签: audio analysis

我有一堆WAV格式的不同录音(所有不同的乐器和音高),我想对它们进行“标准化”,以便播放时它们的声音大致相同。

我已经尝试过测量平均样本量(所有绝对值的总和除以样本数),但通过此测量进行标准化并不能很好地进行。我认为这种方法不起作用,因为它没有考虑到声音的频率,我知道高频录音听起来比同频率的低频声音更响亮。

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

5 个答案:

答案 0 :(得分:11)

Root Mean Square通常用于估计声音文件的响度。这是因为如果声音非常短,那么非常响亮的声音可能不会被这样察觉。还要记住,功率随振幅的平方呈指数增长。

Hydrogen Audio的音频爱好者对这些内容了如指掌......请查看他们的免费 Replay Gain软件。您可能根本不需要进行任何编程。

编辑:包含关于功率与幅度的评论反馈。

答案 1 :(得分:3)

好吧,不是音频方面的专家并添加到之前的评论中,你应该弄清楚你所定义的“峰值功率的最短时间”然后只需将波形转换为原始浮点并使用RMS而不是延长时间并不断地获取那段时间的大块,找到MAX,你就拥有了最高的峰值功率。

答案 2 :(得分: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

答案 3 :(得分:1)

重申一些其他人所说的话,用RMS值估计一段声音的“响度”。

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

在执行RMS之前绝对删除任何DC值,A加权将使它更像我们听到的。以下是MATLAB/OctavePython中的A加权代码。

答案 4 :(得分:-1)

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

编辑:对不起,它不是衡量音量的“方法”,但如果你只需要制作它们就可以了,这应该可以正常工作。