从频率计算冲激响应

2024-10-05 10:01:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试建立一个滤波器,它的频率响应类似于给定音频的频谱图。这将被用作物理模型合成器的损耗滤波器。你知道吗

import soundfile as sf
import scipy.signal as signal
import librosa as rosa
...

audio, rate = sf.read('/Users/.../PianoSound.wav')
spect = rosa.feature.melspectrogram(audio, sr=rate)
spect = np.mean(spect, axis=1)
pyplot.plot(spect)
pyplot.show()

freqs = rosa.core.mel_frequencies(fmax=rate)
freqs = freqs / rate

b = signal.firls(127, freqs, spect)
a = [1]
w, h = signal.freqz(b, a)

pyplot.plot(w, 20 * np.log10(abs(h)))
pyplot.show()

第一个图是输入声音: first plot 第二个图是滤波器的频率响应: second plot 该滤波器在最低频率处有增益,不代表输入声音的频率。这是不可取的,因为这个损耗滤波器被认为是一个字符串的能量退化模型,所以任何数量的增益都可以防止声音的自然衰减。我是否正确使用了scipy的firls函数?你知道吗


Tags: 模型import声音signalrateasscipysf

热门问题