使音频剪辑在 RMS 方面具有可比性

信息处理 声音的 正常化 波形相似性
2022-02-14 16:47:00

我有一个关于如何规范化几个音频剪辑的具有挑战性的问题,以便它们在 RMS 中具有可比性(相似),但没有剪辑剪辑(值超过 -1 和 1)。有系统的方法来做到这一点吗?必须为所有剪辑找到一个比例因子,以便它们的 L/R 通道保持它们的比率,同时使不同剪辑的 RMS 相等。提前致谢!

1个回答

不久前我写了这个简单的 Matlab 函数,它在 dBFS 上运行:

function y = change_rms(x, newRMS)

    currentRMS = mean(20*log10(rms(x)));

    d = newRMS - currentRMS;
    y = x * 10^(d/20);
end

您可以使用要更改其 RMS 的信号作为第一个参数(沿第一个维度的连续样本,沿第二个维度的通道)和 dBFS 中的新 RMS 值作为第二个参数来调用这样的函数。在处理完所有信号以使它们的 RMS 等于您的参考 RMS 之后,您检查哪个信号包含最高的绝对值。然后将所有信号除以该值。然后,它们都将具有相同的 RMS(即平均 RMS),并且它们在通道之间的内部电平比仍将是更改其 RMS 之前的值。

但是请注意,在此过程之后所有信号的最终 RMS 将不等于您在调用该函数时使用的参考 RMS。这当然是由于使用该函数后将所有信号除以整个数据集的最大绝对值。因此,最终的 RMS 将由包含整个数据集的最大绝对值的信号确定。

以下是分步指南:

  1. 使用上面提供的脚本处理所有音频文件。newRMS对所有音频文件使用相同的。newRMS可以是任意值。

  2. 在整个音频文件集中找到最高的绝对值。

  3. 将所有音频文件除以该值。

之后,所有音频文件都将具有相同的 RMS。所有音频文件的值都在 [-1 1] 范围内。