我想问一下什么是音频信号处理的好滤波器,尤其是音符开始处理?
特别是,我需要的是一个过滤器,使峰值更清晰,同时平滑其他峰值,如下图所示:
我不确定我需要的是低通/高通滤波器,因为我知道这些滤波器在频域工作,我特别想使用时域。我只研究单声道信号,用.WAV 44.1Khz 16位单声道格式录制。
谢谢!
答案 0 :(得分: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 ms)来改善结果。)以k = 0.1开始,然后尝试减少它直到滞后变得不可接受。
答案 1 :(得分:1)
您可能需要尝试使用某种形式的AGC(自动增益控制)来标准化信号的包络幅度,而不是使用某种形式的AGC(自动增益控制),时间常数在1拍时间附近。
但准确的音符开始检测可能需要更先进的信号处理和模式匹配技术。关于这个主题似乎有不止一些研究论文。