如何设计可调控低中高频的音频数字滤波器并在Python/MATLAB实现
三频段可调音频数字滤波器设计方案
1. Python手动设计实现方案
你要实现的可独立调节低中高频的滤波器本质是三段参数均衡器,音频场景下推荐用二阶IIR架构实现,延迟低、运算量小,也可根据需求替换为FIR架构:
- 首先确定匹配目标幅频响应的核心参数:音频采样率(常用44.1kHz/48kHz)、三个频段的分频拐点频率、各频段增益值、Q值(控制过渡带陡峭度)
- 调用
scipy.signal模块的滤波器设计函数实现,代码示例如下:
import numpy as np from scipy import signal import matplotlib.pyplot as plt # 基础参数,全部可根据目标幅频响应调整 fs = 44100 # 实际使用的采样率 low_cutoff = 250 # 低频段截止频率 mid_center = 2000 # 中频段中心频率 high_cutoff = 4000 # 高频段起始频率 low_gain = 6 # 低频增益,单位dB,负为衰减正为提升 mid_gain = -3 # 中频增益 high_gain = 4 # 高频增益 Q = 1.4 # 品质因数,值越大过渡带越陡峭 # 设计低频搁架滤波器 sos_low = signal.iirfilter(2, low_cutoff/(fs/2), btype='low', ftype='butter', output='sos') sos_low[:, :3] *= 10 ** (low_gain / 20) # 设计中频峰值滤波器 sos_mid = signal.iirpeak(mid_center, Q, fs, output='sos') sos_mid[:, :3] *= 10 ** (mid_gain / 20) # 设计高频搁架滤波器 sos_high = signal.iirfilter(2, high_cutoff/(fs/2), btype='high', ftype='butter', output='sos') sos_high[:, :3] *= 10 ** (high_gain / 20) # 级联得到总滤波器系数 sos_total = np.vstack([sos_low, sos_mid, sos_high]) # 验证幅频响应,和目标对比调整参数即可 w, h = signal.sosfreqz(sos_total, fs=fs) plt.semilogx(w, 20 * np.log10(np.abs(h))) plt.xlabel('频率(Hz)') plt.ylabel('增益(dB)') plt.grid(True) plt.show()
- 若需要用FIR实现,替换上述
iirfilter为firwin/remez函数,阶数设置越高过渡带越陡峭,和目标幅频的匹配度越高。
2. MATLAB Filter Designer设计并导出系数到Python的方案
操作步骤如下:
- 在MATLAB命令行输入
filterDesigner启动滤波器设计工具 - 响应类型选择多频段均衡器(Multiband EQ),频段数设置为3
- 填写设计参数:先设置匹配实际场景的采样率,再依次设置三个频段的频率范围、增益、Q值,完全匹配目标幅频响应的数值,滤波器架构可选择IIR二阶节或者FIR
- 点击「设计滤波器」按钮,界面会实时展示幅频响应,调整参数直到和目标完全匹配
- 导出系数:
- 点击菜单栏
File > Export,导出目标选择工作区,变量名可自定义(比如sos_coeff),导出格式选择二阶节(SOS),同时勾选导出增益变量G - 在MATLAB命令行执行以下命令,将系数保存为通用csv文件:
writematrix(sos_coeff, 'filter_sos.csv'); writematrix(G, 'filter_gain.csv'); - 点击菜单栏
- Python端读取调用方式:
import numpy as np from scipy import signal # 读取导出的系数 sos = np.genfromtxt('filter_sos.csv', delimiter=',') gain = np.genfromtxt('filter_gain.csv', delimiter=',') # 应用增益到系数 sos[:, :3] *= gain # 处理音频时直接调用sosfilt即可 # filtered_audio = signal.sosfilt(sos, raw_audio)
内容的提问来源于stack exchange,提问作者Sanket Jain
相关产品推荐
相关产品推荐

