我在一个 DSP 实验室工作,我不知道如何将我创建的过滤器应用到声音中。我在网上发现的唯一对我的声音有影响的东西是,signal.filtfilt
但这似乎只是出于某种原因输出了静音。
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal
import librosa
sf = 44100
t = np.arange(0., 0.5+1./sf, 1./sf)
totalTime = 0.5
mysound = totalTime * np.sin(2*np.pi*697*t) + totalTime * np.sin(2*np.pi*1477*t)
#Creation of the filter
N = 6 # Filter order
fc = 1000/3000 # Cutoff frequency, normalized
b, a = signal.butter(N, fc)
#Apply the filter
tempf = signal.filtfilt(b,a, mysound)
librosa.output.write_wav('3mod.wav',tempf,sf)
我想我要么在创建过滤器时犯了一个错误,要么就是找不到正确的方法来应用它。由于我对 DSP 很陌生,我无法真正理解所有文档材料,所以我可能只是忽略了我一直在阅读的文档之一中的一些简单内容,但我不知道是什么。
编辑:当我将过滤器创建代码更改为
#Creation of the filter
cutOff = 1000 # Cutoff frequency
nyq = 0.5 * sf
N = 6 # Filter order
fc = cutOff / nyq # Cutoff frequency normal
b, a = signal.butter(N, fc)
所以似乎对奈奎斯特频率的计算错误让我沉默了。我不是 100% 确定这.filtfilt
是部署过滤器的正确(或唯一)方法。
把问题留在这里,以防它帮助别人。