У меня есть стереофонические аудиоданные, представленные массивом numpy с формой (2500, 2)
. Я хотел бы отфильтровать его, используя функцию signal.sosflt()
от scipy, но я получаю:
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
, но ни один из них не является правильным.)