【问题标题】:Creating audio level meter - signal normalization创建音频电平表 - 信号标准化
【发布时间】:2015-01-13 08:09:35
【问题描述】:

我有实时跟踪音频信号的程序。每个处理过的样本我都能在 之间读取它的值。

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

我有点不知所措,应该是简单的事情。只是从 到 标准化(比如... [n-sample +1]/2)然后从每个即将到来的样本中计算 20*log10 就可以了吗?

【问题讨论】:

    标签: audio signal-processing normalization


    【解决方案1】:

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

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

    假设您以 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 伏。如果没有,您将需要做进一步的调整。

    【讨论】:

    • 上述公式的结果并非严格意义上的 dBV,因为这是对 1V 信号的相对测量。上面的等式计算相对于满量程偏转的信号功率,在这种情况下是削波点。音频电平表(尤其是数字音频)有时会显示峰值而不是 RMS,在这种情况下,您需要为每个分析窗口计算 max(abs(X0)...abs(Xn-1))
    • 那将如何工作?从例如最后 4410 个样本计算 X = max(abs(X0)...abs(Xn-1)) 并在 lvl 仪表上每 100ms 显示 20 x log10(X)?
    猜你喜欢
    • 2013-09-19
    • 2015-09-12
    • 2016-03-28
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多