硬件准备
ADAU1787EVB开发板 一块
链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.45523553osmJkt&id=596099627833
USBI仿真器 一个
链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.70e42dbdxmNoiF&id=38242936768
ADAU1787 的进阶例程 13:1 段 EQ
终于到了音效处理的环节啦,下面的章节,我会用很大的篇章来讲一下均衡。EQ 是最常用的音效处理。(本人是电子工程师,并不是声学工程师,水平有限,对音效的理解更偏重于 DSP 电子设计应用的实现这部分,文字中有错误或不准确的地方,请原谅、指正,共同学习,谢谢)
Equealizer,EQ,中文翻译为均衡。我的理解,在音效系统里,我们需要对原始的音频信号进行许多方面的加工处理,才能使播放的声音变得优美、悦耳、动听,满足人们对声乐的高品质需要。EQ 就是其中的一种用来对频响曲线进行调整的工具。换句话说,EQ 能对不同频率的声音信号进行不同的提升或衰减。因为它能补偿由于各种原因造成的信号中欠缺的频率部分,也能抑制信号中过多的频率成分,从而达到高品质声音效果。
例如,EQ 可以抑制频率为 60~250Hz 的低频交流声,也能抑制频率为 6~12KHz 的高频噪声。
由于乐器发出的声音大多是复合音,即他们是由基波和谐波复合而成的,所以改变了各频段能量分布的相对大小,就相当于改变了基波与谐波之间的相对关系,从而导致人耳对声音频谱结果的听觉感受发声了改变,我们俗称音色的改变。因此,利用 EQ 还可以进行音调调节和音色加工。
EQ 的种类有很多,我们的 SigmaDSP 就提供了非常多的 EQ 算法模块供大家使用,这些 EQ的最基本工作原理应该都是相通的。它们都是将音频信号的全频带(20Hz~20KHz)或全频带的主要部分,按一定的规律分成几个甚至几十个频点(也称之为频段),再分别进行提升或者衰减,从而获得所希望的频响校正曲线。
我们常说的 31 段 EQ,多少段 EQ,SigmaDSP 最多能实现多少段 EQ 是什么意思?频段数越多,则频段分得越细致,补偿修正功能越高。打个比方,15 段 EQ,中心频率我设置个常用的,在 25Hz,40Hz,63Hz,100Hz,160Hz,250Hz,400Hz,630Hz,1.6KHz,2.5KHz,4KHz,6.3KHz,10KHz,16KHz。31 段 EQ,中心频率我设个常用的,在 20Hz,25Hz,31.5Hz,40Hz,50Hz,63Hz,80Hz,100Hz,125Hz,160Hz,200Hz,250Hz,316Hz,400Hz,500Hz,630Hz,800Hz,1KHz,1.25KHz,1.6KHz,2KHz,2.5KHz,3.15KHz,4KHz,5KHz,6.3KHz,8KHz,10KHz,
12.5KHz,16KHz,20KHz。根据需要,我们可以在 20Hz~20KHz 的整个音频范围内,调节更多的频点特性,根据需要,精准的提升与衰减增益,消除噪声,修饰音色,提高音质,校正房间声学特性,还能模拟一些特殊的声音效果!
均衡的技术指标有很多,我在这里简单的说一说:
- 中心频率
中心频率就是指均衡中各谐振回路的谐振频率,即提升或者衰减频段的峰点或谷点所对应的频率。 - 频带宽度
各段频带宽度是指的以中心频率为中心,-3dB 点所对应的频带宽度,它与品质因子 Q 值有关,Q 值越大频带越窄,Q 值越小频带越宽。 - 最大提升/衰减量
均衡器在中心频率点所对应的音频信号,能够提升或者衰减的最大能力,用 dB 分贝来表示。 - 频率响应
频率响应也成频率特性,通常是表示不同频率对某一参考电平的相对信号电平特征曲线图。在给定的频率范围内,若所有频率信号均有平均的电平,则称之为平坦的频响曲线。频响也可表示为电平偏差不超过某一分贝数值的皮率范围。均衡器的频率响应指在音频频率范围内各个频率点不提升也不衰减时的频率响应,此时的频率响应曲线越平坦越好! - 频率中心点误差
频率中心点误差是指各频率点实际中心频率与设定的频率的相对偏移,通常用百分数表示。 - 总谐波失真
信号通过均衡器后,新增加的所有谐波成分的方均根值占基波信号的百分比 - 信噪比
音频信号电平与通过均衡器后产生的各种噪声电平的比值,用 dB 来表示,用于衡量均衡器的噪声性能,信噪比越大,说明均衡器噪声影响就越小。 - 最大输入电平
均衡器输入回路所能接受的信号最大电平。还有其他的参数,如最大输出电平,输入阻抗,输出阻抗等等,这里就不再细说了,属于音频基础知识,可以百度或者找本教材读读看。
以上,简单介绍了一下 EQ,在 SigmaDSP 里,实现 EQ 是一件非常容易的事情,不过想要调好 EQ 就是一个细致的活,我们一起慢慢看,慢慢学,先做一个最简单的 EQ 程序。
ADAU1787 的进阶例程 14:15 段 EQ
注意,我并没有设置频率和调参数,大家可以通过自己的专业声学知识来设定每段的频点,以及增益和补偿,来调试音效。
ADAU1787 的进阶例程 15:31 段 EQ
注意,我这里用的是 48K 的采样率,结果下载程序的时候报错了,说我超出资源了,DSP 干不动了,我看把采样率降低一下试试。
试了一下,用 32K 采样率,就可以做到 31 段 EQ 了。
看看我们占用了多少资源了。
再说一个题外话,很多用户都问 Sigmadsp 到底能做几段 EQ,我想说的是,芯片的资源是有限的,我也说不好你的设计中,EQ 占了芯片多少资源,其他功能模块占了多少资源,到底最后留给 EQ 的能做出几段来。采样率的高低也会直接表现在 DSP 资源的占用上。
但软件上实现 EQ 是非常容易的,你只需要自己亲自试一下,把你的系统都搭好,看看增加到多少段 EQ,USBi 下载没问题。一旦 USBi 下载出错,那就可能是超出了芯片的能力范围,这个临界值就是你的 EQ 段数啦。
ADAU1787 的进阶例程 16:延时
延时是音频处理中最常见的一种算法,“延迟”(Delay)模块(采用 Z-a 算法)向信号流中添加一个可变延迟,其范围在 1 与 DSP 的最大可用内存之间。
我做一个例程:
在这个例程呢,我把延迟加了进来,并且做了一个开关,上面的音频流是加了延时的,下面的音频流是直通,通过开关来选择,大家可以调整一下延时参数,切换一下开关,听一下有没有区别吧。
ADAU1787 的进阶例程 17:移频防啸叫
ADAU1787 有专门的移频算法,这个模块多用于防啸叫,我只给一个最简单的例程,至于防啸叫就需要用户自己在自己的声乐环境下细调了。
ADAU1787 的进阶例程 18:反馈
“反馈”(Feedback)算法在信号通道中生成一个延迟,并将信号重新引导至该通道中较早发生的输入。(图中所示即为这种反向信号流,这是唯一一个绿色输入位于右侧、蓝色输出位于左侧的模块。)注意,如果设计中要求反馈,则必须使用该模块。
我做一个例子,主要是要讲一下这个反馈的信号流是反的:
至于反馈怎么样嵌入到用户自己的音频流中去,这就看诸位各显神通啦。
ADAU1787 的进阶例程 19:算法-动态低音增强(Dynamic Bass Boost)
对于能找到详细说明的模块,我会多一些笔墨描述模块:
“动态低音增强”(Dynamic Bass Boost)模块可提供因输入信号电平而异的增强效果:低电平比高电平要求且接收更多低音。该模块采用一个可变-Q 滤波器,可动态调节增强量。
滤波器在“阈值”(Threshold) 与“最低增益”(Min(imum) Gain)设置间计算低音增强量。高于最低增益、低于阈值的输入存在固定最大限值。
7 个参数(如下所述)控制着该模块的性能。在相应字段输入参数值,也可通过箭头输入。尽管了解这些参数的工作原理及其具体作用是非常重要的,但您需要做的只是试试各个参数,感受它们各自及组合后对目标音效的影响。
低通频率(Lowpass Freq) – 低通频率范围为 20Hz 至 250Hz;检测器通过选中点之下的频率来确定增强量。
高阈值(High Threshold) (dB) – 高阈值的范围为-20 至 10dB,用于设定检测器操作的上限点。高于最低增益的信号不会影响增强计算,而会被以固定量增强。
时间常数(Time Constant) – 范围为 0 至 500 毫秒,控制着检测器的均方根时间常数,可改变起音速率(attack rate)和释放速率(release rate)。
低阈值(Low Threshold) (dB) – 该值的范围为-100 至-20dB,为检测器的阈值下限。进入检测器且低于此阈值的任何信号不会影响增强计算,而是获得固定量的增强。
压缩比(Compression Ratio) – 压缩比的范围为 1 至 15,可能理解为一种动态增强比更为恰当,控制着低音增强从低阈值变为高阈值的比率。
增强(Boost) – 该滑块的范围为 0 至 16dB,控制着动态应用于算法的最大增益。另见下一个参数。低音频率(Bass Freq)- 本字段位于增强滑块之下,其范围为 20 至 300Hz,用于设定增强滤波器的中心频率。将所需值直接输入字段,或通过滑块两端的两个水平箭头输入。 注意: 当滑块向下滑至 0dB 时,实际上并未绕过该模块。
ADAU1787 的进阶例程 20:算法-响度低和高Loudness (Low and High)
对于低电平,“响度”(低和高) (Loudness (Low and High))模块可增强低于 60 Hz 的低音和高于 7kHz 的高音(另见下面的控制旋钮部分)。
增强值依据著名的 Fletcher-Munson 等响曲线及其他曲线计算而得。这项研究显示,低电平时,低声级和高声级必须显著提高响度,才能使音色平衡听起来比例适当,并使整体声音在人耳中呈现出相同的响度。
请注意,这种算法为固定而非动态算法:它假定输入电平保持不变。该模块的参数包括电平滑块、LPF 及 HPF 旋钮和电平(Level)。
-
电平滑块控制整个信号的输出音量, 但更重要的是,它同时也控制响度算法。低电平时,响度算法对低频的增强效果好于高频。电平为 0dB 时,无论输入电平为何,低频和高频都不能增强。
-
通过 LP 旋钮,您可以更改低通滤波器的截止频率。默认值接近 Fletcher-Munson 曲线。频率值越高,低音带宽增益越高。
-
通过 HF 旋钮,您可以更改高通滤波器的截止频率。默认值为 7kHz,接近 Fletcher-Munson曲线。
ADAU1787 的进阶例程 21:算法- Phat-立体声
Phat–立体声(Phat-Stereo)是一种扩展算法,通过立体声交叉耦合在立体声扬声器及其他双声道应用中模拟环绕声。人耳对低于 2 kHz 的耳间相移最为敏感, 这种相移增量会导致立体声像扩展。一种 3D 增强,可为耳机和立体声扬声器产生一个浓缩的环绕声场。
有两个参数控制着该模块:
截止频率(Cut Freq) (Hz) – 控制一阶低通滤波器的截止频率,决定着附加反相信号的频率范围。为获得最佳效果,范围应为 500 Hz 至 2 kHz。
电平(Level) – 控制滤波器的输出电平; -80dB 基本为直通电平,不存在信号调制。
ADAU1787 的进阶例程 22:动态处理器示例-RMS
下面的设计为一种音频流应用,采用了“ RMS 检测” (RMS Detect)(显示)模块及输入/输出模块。在以下所示示例中,需要注意的是“压缩曲线”(Compression Curve)窗口、显示栏上的相对输入/输出电平和“后增益” (Post Gain)旋钮。
水平输入电平轴上的阈值(即电平匹配点,此处无动态处理)设为约 35 dB,垂直输出轴上的阈值也作相同设置。超过阈值的压缩比约为 2.7:1。
对于低于 35 dB 的所有输入信号,其输出电平将不受影响。然而,当输入超过该阈值时,输入每增加 2.7 dB,输出将只减少 1 dB。
两个显示栏分别显示输入电平和压缩比(越绿表示压缩比越高)。绿色输入水平栏显示的是当前电平之前的上一个值的电平。
这种情况下,压缩大幅降低了输出电平,为了进行补偿,有必要将输出调高。
设计如图:
本文档的内容就到这里,下一个文档将着重讲一讲调音的最关键的模块:滤波器!