创建音频电平表 - 信号归一化

Creating audio level meter - signal normalization

我有实时跟踪音频信号的程序。我能够读取每个处理过的样本的值,范围在 <-1, 1>.

我想创建(并稍后显示)音频电平表。据我了解-要做到这一点,我需要在每个通道上将我的音频信号实时转换为 dB,然后以某种图形形式的条形图在每个通道上显示 dB 值。

我有点不知道该怎么做,这应该很简单。是否只是从 <-1, 1> 到 <0, 1> 的标准化(例如... [n-sample +1]/2)然后从每个即将到来的样本计算 20*log10 就可以了吗?

您不能直接绘制信号,因为它总是正负变化。

因此,您需要每隔这么多样本对信号强度进行平均。

假设您以 44.1kHz 采样,也许您可​​以选择 4410 个采样,这样您每秒更新显示 10 次。

因此您计算了 4410 个样本的 RMS - 请参阅 http://en.wikipedia.org/wiki/Root_mean_square

RMS 值始终为正。

然后您可以将其转换为 Db:

dBV = 20 x log10(Vrms)

这假设您的最大信号 -1 到 +1 对应于 -1 到 +1 伏特。如果没有,您将需要做进一步的调整。