【发布时间】:2020-03-08 03:52:32
【问题描述】:
我有立体声音频数据,由形状为(2500, 2) 的 numpy 数组表示。我想使用 scipy 的 signal.sosflt() 函数对其进行过滤,但我得到了:
ValueError: Invalid zi shape. With axis=0, an input with shape (2500, 2), and an sos array with 2 sections, zi must have shape (2, 2, 2), got (2, 2).
代码中唯一的复杂性是我在处理第一个缓冲区时初始化了一次 zi,然后使用它来调节后续调用的过滤器:
from scipy import signal
def setup():
zi = None
# define a narrow band filter centered around 440 Hz.
sos = signal.butter(2, [438, 442], btype='bandpass', output='sos', fs=48000)
def process(src, dst):
# src and dst shape = (2500, 0)
if zi is None:
zi = signal.sosfilt_zi(sos) # initialize zi on first buffer
dst, zi = signal.sosfilt(sos, src, axis=0, zi=zi)
(注意:我尝试过axis=-1 和axis=1,但它们都不正确。)
【问题讨论】:
标签: numpy scipy signal-processing