使用 RMS 获取轨道的响度

信息处理 声音的 离散信号
2021-12-30 04:38:49

我正在尝试计算存储在缓冲区中的音轨的响度。缓冲区包含信号的 PCM 数据,我想通过使用 Root Mean Squared 来了解它的“响度”。我假设我可以在时域中做到这一点,而不必切换到频域。这样做的伪代码是什么?

我会简单地采样一秒钟(音频 [0] - 音频 [44099]、音频 [44099] - 音频 [88199] 等)并计算这些值的 RMS 吗?所以,例如,我会这样做:

RMS=audio[0]2+audio[1]2+audio[2]2.....audio[44099]244100

每秒?

1个回答

另一件事是 RMS 值与感知响度的相关性不是很好。您可能要考虑将其称为 level 或 volume。有一种称为等响度轮廓的东西,它可以量化耳朵对一个特定频率与另一个频率相比的敏感程度,请参阅维基百科文章这些曲线是电平相关的。例如,与 100Hz 音调相比,人耳对 1kHz 音调非常敏感,如下图所示(横轴是以 Hz 为单位的频率):

等响度等值线

您可以做的相对简单的事情之一是使用反向等响度曲线过滤您的 PCM 数据。或者您可以应用标准 A 加权,请参阅 Wikipedia Weighting Filter 文章然后您可以计算等响度加权滤波器输出的 RMS 值。