概述
EQ(Equaliser)为音频均衡器,通过对声音某一个或多个频段进行增益或者衰减,其他频段保持不变从而达到调整音色的目的。音频均衡器在各个音乐 app 中,各个 RTC 厂商中都可以设置。以声网的 RTC 的 demo 为例,图中红色的部分就是音频均衡器。:
首先我们来了解一下各个频段对人声的影响。人耳可分辨的声音频率大约是在 20Hz~20kHz,因此调音台中的四段均衡器把其分为的 4 个频段,根据德国柏林音乐研究所资料介绍,它们是:
• HF(高频):6kHz-16kHz,影响音色的表现力、解析力。
• MID HF(中高频):600Hz-6kHz,影响音色的明亮度、清晰度。
• MID LF(中低频):200Hz-600Hz,影响音色和力茺和结实度。
• LF(低频):20Hz-200Hz,影响音色的混厚度和丰满度。
EQ 的设计原理不复杂,但是如何调节各个波段的增益保持声音动听这是一大难点。EQ 通常使用滤波器来对各个频段滤波来实现。通常我们会把 EQ 设置为 10 个频段,每个频段有中间频率,截止频率,起始频率。在书籍《Audio Effects》有如下表,其中左边代表倍频,右边代表 1/3 倍频:
根据以上的介绍,我们知道 EQ 中最重要的参数包括:
1)进行增益的中心频率:f0
2) 当前频段要进行的增益:G Gain 增益可以为正为负
3)设定进行增益或衰减频段宽度的参数:Q Quantize,Q 越小,频段越宽;反之,频段越窄。
滤波器
滤波器常见的有低通、高通、带通滤波器。这些滤波器都有一个共同的点,理想情况下,在滤波器截止频率范围以外,增益基本为 0。而 EQ 需要对声音某一个或多个频段进行增益或者衰减,其他频段保持不变从而达到调整音色的目的。因此,理想情况下,滤波器截止频率范围以外,增益基本为 1。因此,EQ 中使用的滤波器为 lowself,highself,peak 滤波器。下面详细介绍下这 3 种滤波器。
lowself 滤波器是低通滤波器的一个变形版本,需设置截止频率外增益为 1。因此,lowshelf 滤波器可以认为是低通滤波器在截止频率外并联一个直通信号。
lowself 滤波器的增益曲线为:
一阶 lowself 滤波器的传输函数表示为:
其中 A(z)是一个一阶全通滤波器。
highself 滤波器与 lowself 的设计是一样的。只需要将 Z 变化为 1/Z 即可。
highself 滤波器的增益曲线为:
peak 滤波器是带通滤波器的变形。
滤波器的增益曲线为:
一阶 peak 滤波器设计为
其中 A2(z)为一个二阶全通滤波器
对于 EQ 各个频段使用滤波器时,第一个频段需要使用 lowshelf filter,最后一个频段使用 highshelf filter,其余频段使用 peak filter
滤波器实现
滤波器使用二阶的 IIR 滤波器,可以表示为
频域行为:
b0 + b1*z^-1 + b2*z^-2
H(z) = ————————
a0 + a1*z^-1 + a2*z^-2
时域形式为:
y[n] = (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2]- (a1/a0)*y[n-1] – (a2/a0)*y[n-2]
求解滤波器可以使用 Audio_EQ_CookBook 中的方法,Audio_EQ_CookBook 使用双线性变换法将滤波器从 S 域转换到 Z 域,为方便示意,下列参数示意都在 S 域。关于双线性变换法可以参考:知乎-双线性变换法
首先设置中间参数 dBgain 增益 f0 截止频率
loweshelf filter 设计为
highshelf filter 设计为
peak filter 设计为
开源代码的实现
开源音频编辑软件 audacity 实现了 EQ,可参照其实现自己的 EQ。
本文介绍了音频 EQ 及其原理,侧重点还是在 EQ 的滤波器的设计上。EQ 的滤波器一般使用 IIR 滤波器,这样节省了很多运算复杂度,但是实现 IIR 滤波器的时候,一定要考虑滤波器的稳定性。关于 EQ 的代码剖析,如果有时间,会补上。
原文链接:https://cloud.tencent.com/developer/news/830372