一阶低通滤波器的卷积脉冲响应会产生极度失真的音频

问题描述 投票:0回答:1

我正在为一个模拟音频项目设计一个滤波器组,我想在进行电路仿真之前测试不同的滤波器拓扑(贝塞尔、切比雪夫、巴特沃斯等)。我从一个简单的示例开始来测试该过程 - 一阶低通滤波器。我加载我的 wav 文件(3 秒长),对滤波器的拉普拉斯变换进行 ifft,然后将其与音频进行卷积。

我没有附上音频,但我可以向你保证没有发生低通滤波。音频严重失真。

import numpy as np
from scipy.io import wavfile
import sounddevice as sd


samplerate, data = wavfile.read('sample.wav')
w0 = 2*np.pi*170 #cutoff freq (1/RC)
f = np.fft.fftfreq(len(data), d = 1/samplerate)

transfer = w0 / (1j*2*np.pi*f + w0)
impulse_response = np.fft.ifft(transfer)

filtered_signal = np.convolve(data, impulse_response, mode='same')
filtered_signal = filtered_signal.real

sd.play(filtered_signal.real, samplerate)
sd.wait()

附注我最近发现 LTSpice 接受 wav 文件作为信号输入,当我使用电压源、电阻器和电容器实现此功能时,我得到了预期的结果。不太清楚这里的 DSP。

python numpy audio scipy signal-processing
1个回答
0
投票

我相信这就是我问题的答案:

https://dsp.stackexchange.com/questions/8319/simulated-analog-filter-using-volving-or-converting-with-fft

我需要过采样,以便双线性变换可以很好地映射。

© www.soinside.com 2019 - 2024. All rights reserved.