我实际上在python上实时图形均衡器上工作。我正在使用pyaudio
模块,scipy
,numpy
模块。我的均衡器基于从25 Hz到20 kHz(所以30个频段)的第三个八度频段滤波器组。该滤波器组将输入信号分为30个滤波信号(以每个第三个倍频程频带的中心频率为中心)。此外,流媒体是逐块实现的。
我使用了filtfilt
模块中的scipy.signal
,但是每个块之间都有一些间断(有些可听见的喀哒声)。因此,我遵循了Continuity issue when applying an IIR filter on successive time-frames,它适用于高频。
但是对于低频,我需要遵循以下步骤:
1)对输入信号进行下采样(以保持良好清晰度的滤波器);
2)使用lfilter_zi
进行过滤,以保持每个块之间的连续性(用于流式传输);
3)对滤波后的信号进行上采样。
我的问题是上采样,因为这破坏了每个块之间的连续性。