【问题标题】:Filter for audio signal processing?过滤音频信号处理?
【发布时间】:2011-06-23 10:57:34
【问题描述】:

我想问一下什么是音频信号处理的好滤波器,尤其是音符开始处理?

特别是,我需要一个过滤器,使峰值更清晰,同时平滑其他峰值,如下图所示:

我不确定我需要的是低通/高通滤波器,因为我知道这些滤波器在频域工作,我特别想在时域工作。我只处理单声道信号,以 .WAV 44.1Khz 16 位单声道格式录制。

谢谢!

【问题讨论】:

    标签: audio filter signal-processing


    【解决方案1】:

    我建议采用非线性方法 - 实际上,您希望以较短的时间常数进行包络检测。

    y_1 = 0;                       // init y_1 = previous value of output signal, y
    loop
      y = abs(x);                  // rectify input signal
      y = k * y + (1.0 - k) * y_1; // apply single pole recursive low pass filter
      y_1 = y;                     // save output value for next iteration
    end
    

    选择k(注意:0.0 < k < 1.0)是一个棘手的部分,可能需要一些实验。如果k 太小,那么您将有一个很大的时间常数,这可能会导致您的发病检测滞后太多。如果 k 太大,则时间常数可能太小,您可能会得到误报。 (在后一种情况下,尽管您可以通过拒绝从前一个“真实”开始(例如 10 毫秒)落入给定最小齿窗内的开始来改善结果。)从 k = 0.1 开始,然后也许尝试减少它,直到延迟变得不可接受为止。

    【讨论】:

    • 嗨,保罗,第三行是 y(n) = a.x(n)-b.y(n-1)a = k, b=1-k 吗?并且您将输入和输出存储在同一个变量y 中以保存变量?只是好奇:)
    • @nmxprme:它是一个递归 (IIR) 滤波器 - 下一个输出值 y 是当前输入值 y = abs(x) 和前一个输出值 y_1 的函数。然后我们保存存储的输出值用于下一次迭代。正如你所说,我想我在这里将y 用于两个目的。而且我应该添加一个循环以使其更清晰。谢谢。
    【解决方案2】:

    您可能想要尝试某种形式的 AGC(自动增益控制)来规范化信号的包络幅度,而不是使用滤波器来进行所需的音频处理,时间常数在 1 个节拍时间附近。

    但准确的音符起始检测可能需要更高级的信号处理和模式匹配技术。关于这个主题的研究论文似乎不止几篇。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-01
      • 2013-06-07
      • 2012-11-05
      • 1970-01-01
      • 2013-01-16
      • 2012-05-23
      • 2014-04-10
      • 1970-01-01
      相关资源
      最近更新 更多