我想滤除20 Hz - 20000 Hz以外的所有信号。我使用的是巴特沃斯滤波器:20hz-20000hz巴特沃斯滤波爆炸
from scipy.io import wavfile
from scipy import signal
import numpy
sr, x = wavfile.read('sweep.wav')
nyq = 0.5 * sr
b, a = signal.butter(5, [20.0/nyq, 20000.0/nyq], btype='band')
x = signal.lfilter(b, a, x)
x = numpy.float32(x)
x /= numpy.max(numpy.abs(x))
wavfile.write('b.wav', sr, x)
我注意到,它的工作原理与44.1 kHz的文件,但不具有96kHz WAV文件(demo file here)(它不是一个音频I/O问题):输出是空白(静音)或爆炸(与其他一些输入wav文件)。
1)是否有某件事使Butterworth滤波器不能用带通[b1,b2]工作,其中b2 < 0.5?
2)更一般地说,你将如何做一个过滤,以保持与Python/scipy只有20 - 20000Hz?(没有其他外部库)
错误的堆栈。尝试dsp.stackexchange.com。 – wwii
Scipy是一个外部库。 – wwii