IIR/FIR EQ参数转换、FEQ文件解析 + DRC+限幅+EQ全套DSP链预设编写要点
前置提醒:不存在无损、完全等价的IIR ↔ FIR双向精确转换。IIR是递归型、少系数、非线性相位;FIR是非递归、大量抽头、可实现线性相位,二者底层滤波器架构不一样,转换只能做到频响近似匹配,相位特性很难对齐,尤其低阶IIR转低阶FIR误差明显。
一、IIR、FIR EQ 参数互相转换原理与实操局限
1. IIR → FIR(最常用:把PEQ/参量EQ曲线转成FIR抽头)
适用场景:想要线性相位均衡效果,把一组IIR参量EQ频段,转为FIR滤波器冲击响应。
✅ 核心思路
1. 先根据每一段PEQ(F、Gain、Q),算出整套IIR EQ系统的目标频响函数H(jω)
2. 使用滤波器设计算法(窗函数法 / Parks-McClellan等),用有限长度FIR抽头去拟合这个目标频响
3. 输出Tap抽头系数数组,作为FIR EQ预设保存
⚠️ 关键缺点
- FIR抽头数量决定拟合精度:抽头越少,误差越大;想要高精度,FIR阶数必须很高,运算开销上涨
- IIR自带相位偏移,拟合出来的FIR如果开线性相位模式,最终相位特性和原IIR EQ一定不一样,听感会有微小差别
- 谐振尖峰很高的PEQ(Q很大),短抽头FIR很难复刻尖锐增益峰,容易出现波纹
举例子:4段高Q参量IIR EQ,转1024抽头FIR,可以做到频响肉眼几乎一致;转64抽头FIR,谐振位置会失真。
2. FIR → IIR(FIR抽头反向拟合IIR,极少用)
一般只能用模型降阶拟合算法:从FIR冲击响应,寻找少量二阶IIR节(biquad双二阶滤波器)组合逼近频响。
❌ 硬伤很多:
- 高阶FIR转少数IIR双二阶,频响误差不可避免
- 线性相位FIR,拟合出来IIR一定不是线性相位,相位特性直接丢失
- 容易出现IIR滤波器不稳定问题(极点跑到单位圆外会震荡)
实操中几乎没人这么做,一般都是直接重新调参写PEQ,不用反向拟合。
3. Biquad双二阶(IIR标准单元)公式简要回顾
绝大多数DSP内部PEQ都是基于Biquad双二阶滤波器实现
传递函数:
H(z)=\frac{b_0+b_1 z^{-1}+b_2 z^{-2}}{a_0+a_1 z^{-1}+a_2 z^{-2}}
预设里面可以两种存储方式二选一:
- 存储:F、Gain、Q(参量,可读性高,加载时DSP实时算b/a系数)
- 直接存储b0,b1,b2,a1,a2双二阶系数(省去计算,适合硬件DSP预设,加载更快)
二、FEQ预设文件完整解析(Foobar2000 FEQ)
FEQ本质:图形EQ专用纯文本单模块预设,只存固定频点增益,不属于完整DSP链预设,只能给Foobar的均衡器组件读取
✅ 标准FEQ文件样例
文件结构拆解
1. 以 # 开头是注释行,DSP加载直接忽略
2. 每行格式: 频点Hz : 增益dB
3. 仅记录固定中心频点+增益值,不保存Q值、滤波器类型、相位选项!
⚠️ 重大关键点:FEQ没有写Q!EQ形状由Foobar均衡器组件内部固定Q值决定!
👉 同一个FEQ文件,如果更换别的EQ插件读取,因为内置Q不一样,画出来EQ曲线会不一样,很多人踩这个坑!
FEQ局限
1. 只能图形EQ,不能用来写任意PEQ、高低通、陷波滤波器
2. 无法附带压缩器、限幅器、混响等其他DSP模块参数
3. 无链路顺序、旁路开关这类DSP链信息,仅单EQ模块预设
4. 旧版、新版foobar均衡内核略有差异,同一份FEQ加载后曲线微小差别
FEQ修改实操
记事本直接打开修改dB数值,保存后缀 .feq ,foobar即可导入;注意增益不要拉太高,防止削波。
三、DRC动态范围压缩 + 限幅器 + EQ,全套DSP链预设编写要点
推荐标准链路顺序(HiFi音频通用最优顺序,链路顺序非常重要,写预设不能写错顺序)
✅ 推荐: 输入信号 → EQ均衡 → DRC压缩 → 限幅器 → 输出
备选场景(需要先压峰值再调EQ:适合大峰值音源): 输入 → 软限幅预保护 → EQ → DRC → 最终限幅
❌ 不推荐:限幅器放在EQ前面,EQ增益调整会把已经压好的信号再次推爆,容易产生二次削波失真
预设编写核心原则:每个模块参数合理留安全余量,防止音频削波;DRC不要过度压缩,损失动态;限幅仅作为峰值保护,不做重度响度战争处理
模块1:EQ部分(写预设要点)
1. 确认EQ类型:选PEQ/图形EQ/FIR,统一滤波器规格,不要混用
2. 低频大增益(> +3dB)要小心:低频增益很容易把整体电平拉高,后面限幅器过载
3. 高Q谐振EQ,留意是否引入额外尖峰电平,预留Headroom净空空间
4. 预设中显式标记Bypass旁路开关,方便切换对比
5. 如果硬件DSP算力有限:优先用低阶IIR PEQ,不要用超长抽头FIR,防止延迟高、算力不足卡顿
模块2:DRC动态压缩器部分(预设参数规范)
DRC就是自动化的动态压缩,用来压低大音量、抬小音量,适合听力适配、耳机适配场景
编写预设重点:
- Threshold阈值:设置高于音频底噪,不要太低,不然全程持续压缩听感发闷
- Ratio比率:HiFi用途建议小比率 1.5:1 ~ 3:1,不要>4:1,重度压缩会丧失动态
- Attack起音:慢Attack(15~40ms)保留鼓、乐器瞬态;快Attack适合压突发大峰值
- Release释放:避免太短产生泵感(Pumping效应),一般60~200ms,根据音乐类型调
- Makeup增益:压缩之后音量降低,补偿增益不要一次性补太高,留给后面限幅把关
- 侧链选项:如果不需要侧链功能,预设里面直接写Bypass关闭侧链,减少不必要运算
模块3:输出限幅器(最后的安全闸门)
限幅器作用:防止信号超过0dBFS产生硬削波失真,HiFi场景优先软限幅,少用硬限幅
预设参数要点:
- 限幅天花板:一般设 -0.1 ~ -0.3 dBFS,不要卡0dB,防止采样间削波(Inter-sample peaks)
- Release释放时间:短释放适合快速峰值保护,过长释放会出现音量拖尾
- 开启/关闭过采样选项写进预设:过采样能更好捕捉采样间峰值,但是增加DSP算力开销
- ❗ 严禁把限幅器当作响度放大工具,单纯靠限幅硬拉音量会严重劣化音质
四、完整DSP链预设编写规范(通用,JSON示例模板,可参考用于自定义预设)
五、编写&迁移预设高频踩坑清单
1. ✅ 锁定采样率:IIR/FIR滤波器特性和采样率绑定,跨44100 ↔ 48000加载预设,频响会偏移,预设最好写明目标采样率
2. ✅ Headroom预留:整套链路逐级检查电平,EQ增益之后,用示波器看峰值,防止送入压缩限幅前就已经削波
3. ✅ 模块兼容性:写预设确认目标DSP平台支持这些模块;比如低端蓝牙DSP不支持高阶FIR,导入直接出错
4. ✅ 相位考量:如果需要线性相位,EQ模块强制选用FIR,整套链路相位延迟要评估,避免听音延迟问题
5. ✅ 备份:文本类预设(json/feq)比厂商私有二进制预设更容易跨设备迁。 |