ValueError:处理两通道音频信号时zi的意外形状

问题描述

我正在尝试编写自己的卷积函数来在处理 2 通道音频信号时替换 lfilter。我必须将过滤器状态从一个块传递到另一个块。

def convolution(h,x,N_taps,zi):
conv_out = np.zeros(len(x),dtype = 'complex_')
for i in range(len(x)):
    for j in range(N_taps):
        if j != N_taps-1: #have not reached the last one 
            conv_out[i] += zi[j]*h[N_taps-1-j]
            if j < N_taps-2:
                zi[j] = zi[j+1]
        else:             #last one
            conv_out[i] += x[i]*h[N_taps-1-j]
            zi[-1] = x[i]
return conv_out,zi     

但是,运行上面的代码会出现以下错误。注意:当我没有为 conv_out 指定 dtype 时,它​​不会引发任何错误,但也听不到输出音频。

ComplexWarning: Casting complex values to real discards the imaginary part
filtered_data[position:position+block_size,0],z = convolution(firwin_coeff,audio_data[position:position+block_size,zi = z)
ValueError: Unexpected shape for zi: expected (9999,),found (50,).

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)