如何在嵌入式系统中使用音频编解码器更轻松地优化音频性能?
投稿人:DigiKey 北美编辑
2021-02-17
许多设计人员在其基于微控制器的嵌入式系统设计中加入了音频编解码器,以提供高保真音频。但在这样做之前,他们必须弄清楚如何对其应用进行音频编解码器调校。如果不进行调校,即使有好的编解码器和扬声器,也可能会让应用听起来很平淡或音质很差。问题是每个扬声器都有自己的频率响应,因此编解码器应该根据扬声器的特性进行调校,同时要考虑到将要播放的音频种类和所需的响应。
调校音频播放系统的解决方案不是使用硬件滤波,而是利用音频编解码器自身的数字滤波器块。每个编解码器都有这个块,允许开发人员使用高通、低通和带通滤波器进行输出滤波。这样就可以根据需要仔细调校扬声器的响应。
本文将以 AKM Semiconductor 的编解码器为例,讨论编解码器中包含的内部数字音频块。同时还将讨论几个调校编解码器的小技巧,以帮助开发人员加速他们的音频播放开发,同时提高系统的音质。
了解扬声器的频率响应特性
在《如何选择和使用嵌入式音频反馈文件的音频编解码器和微控制器》一文中我们讨论了选择编解码器并将其添加到系统中的基本原理。下一步就是使用该编解码器来获得最佳的音频输出。
有几个不同的因素会影响到系统所发出音频的声音。这些因素包括:
- 扬声器的外壳
- 扬声器的安装方式
- 所播放音频的频率
- 扬声器的频率响应
在仔细考虑了这些因素之后,开发人员很快就会意识到,只有在音频系统处于最终生产状态时,对其进行调校才是有用的。当然,系统可以用印刷电路板和扬声器在外壳外进行调校,但不应该期望这些相同的调校参数在扬声器安装并固定到其外壳中后还适用。
如果机械设计团队已经妥善设计了系统外壳和支架,那么开发商需要密切关注的主要特征就是扬声器的频率响应。每个扬声器都有不同的特性和响应曲线。即使是相同型号的扬声器,其频率响应也往往会有细微的变化,但制造商通常会提供一条典型的频率响应曲线。例如,图 1 显示了 CUI Devices GC0401K 8 欧姆 (Ω)、1 瓦扬声器的频率响应曲线。GC0401K 的额定频率在 390 赫兹 (Hz) 和 20 千赫兹 (kHz) 之间。
图 1:CUI Devices 的 GC0401K 8Ω、1 瓦扬声器的额定频率在 390 Hz 和 20 kHz 之间。(图片来源:CUI Devices)
扬声器额定使用区间通常是其响应曲线中响应相对平坦的区域。仔细观察图 1 可以发现,GC0401K 的频率响应在约 350 Hz 时开始变平,至少到 9 kHz 时保持相对平坦。高频率区有一定的下降,但在 20 kHz 以内仍然稳定。
CUI Devices 的 GF0668 则可以看到不同的扬声器频率响应(图 2)。这款扬声器的体积更大一些,可以输出 3 瓦的功率。频率响应额定区间为 240 Hz 至 20 kHz。这款扬声器可以播放比 GC0401K 略低的频率,但再次要注意的是,在指定的范围内,曲线比较平坦,但在整个曲线长度仍有一些低谷和峰值。
图 2:CUI Devices 的 GF0668 8 Ω、3 瓦扬声器的频率响应显示了为什么它的额定频率范围为 240 Hz 至 30 kHz。(图片来源:CUI Devices)
最后一个值得关注的扬声器响应是 Soberton, Inc. 的 SP-2804Y(图 3)。SP-2804Y 是一款 500 毫瓦 (mW) 扬声器,频率响应范围为 600 Hz 至 8 kHz。物理定律决定,扬声器越小,对低频的响应时间就越差。这意味着,如果开发人员不滤波掉低频就试图以这些频率来驱动扬声器,其结果可能是一些本来听起来应该晶莹剔透的音色变得很粗糙或有缺陷。
请注意,在 10 kHz 左右的频率响应也有明显的下滑。因此,该扬声器的额定频率仅为 8 kHz,尽管在某些应用中,其使用频率可能高至 20 kHz。
图 3:Soberton Inc. 的 SP-2804Y 8Ω、0.5 瓦扬声器的频率响应显示其适合频率范围为 600 Hz 至 8 kHz 频率。它在 10kHz 后有一个下降,但在某些应用中仍可使用到 20 kHz。(图片来源:CUI Devices)
从每个扬声器的频率响应来看,显然需要进行某种滤波和调校,因为有些频率是不应该驱动扬声器的。例如,试图在这些扬声器上驱动 4 赫兹的低音,可能会引起持久的振动,而高频率注入其中时会导致大量声音失真。
音频数字滤波器块解剖
过去用来调出不需要频率的一种方法是在通往扬声器路径上设立硬件滤波器。例如,500Hz 的高通滤波器可以防止 500Hz 以下的频率进入扬声器。在另一端,可以使用低通滤波器来去除任何高于 15 kHz 的音调。从我个人经验来看,有时如果用小扬声器来播放女性的声音,而小扬声器的效率又比较高,那么扬声器就会发出高亢的颤音。仔细选择频率可以消除这些失真,创造出更纯净的音色。
虽然外部硬件滤波器可以完成这项工作,但它们会增加成本并占用额外的空间。基于这些原因,使用音频编解码器中内置的数字滤波器块对音频进行调校更为实用和高效。
例如,在 AKM Semiconductor AK4637 24 位音频编解码器的框图中就突出显示了数字滤波器块(图 4)。
图 4:AK4637 是一款具有单声道扬声器输出的音频编解码器,具有音频播放和录音功能。该器件还包含内部音频功能块,可用于对输入和输出的音频进行滤波,以提高音频保真度。(图片来源:AKM Semiconductor)
在此实例数字滤波器块中包含了几种不同的滤波功能,具体包括:
- 高通滤波器 (HPF2)
- 低通滤波器 (LPF)
- 四段均衡器(4 段 EQ)
- 自动调平控制 (ALC)
- 一段均衡器(1 段 EQ)
这些功能并不需要全部启用。开发人员可以选择自己需要的功能,可以启用和禁用该块或或通过它们连接麦克风或播放音频。在这个接合点,真正的问题是如何对音频编解码器进行计算和编程?
数字滤波器参数如何计算和编程
在大多数音频应用中,高通滤波器用于去除低频,低通滤波器用于排除高频。均衡器可用于平滑频率响应曲线或加强某些音调。这些设置到底该如何选择,不在本文讨论范围之内。相反,本文将以 AKM AK4637 为例,探讨如何计算并编程与这些参数相关的值。
首先,看一下规格书总是有好处的。该编解码器规格书第 7 和第 8 页显示了最重要的寄存器图。鉴于该器件有 63 个寄存器,第一眼看上去可能是云里雾里。然而,这些寄存器中有许多是控制数字音频块的。例如,寄存器 0x22 至 0x3F 控制均衡器。寄存器 0x19 至 0x1C 控制高通滤波器,0x1D 至 0x20 控制低通滤波器。
开发人员通常不能只指定一个频率输入到编解码器中。相反,有一个滤波器方程可用于计算滤波器系数,然后将其编程到编解码器寄存器中,以创建所需频率的滤波器。例如,要使用数字滤波器块创建一个 600 Hz 的高通滤波器,使用公式 1:
图 5:如图所示为计算 AK4637 数字滤波器块高通滤波器的系数所需的公式。(图片来源:AKM Semiconductor)
开发人员应确定所需的截止频率 fc,在这种情况下是 600 Hz。音频采样频率 fs 通常为 48 kHz,但可以根据应用情况而改变。这些值随后会代入计算系数 A 和 B 的方程中,然后在启动期间,这些值会通过 I2C 写入编解码器寄存器。同样的过程将用于低通滤波器和其他数字块功能,尽管传输功能通常不同,但都需要使用它们自己的方程组(参考规格书)。
音频编解码器调校小技巧
音频编解码器中包含的数字滤波器块通常是相当灵活和强大的。即使是低成本的音频编解码器也能为开发人员提供生成高保真音频所需的工具。不过归根结底,音频编解码器只是其中一块拼图。要想成功地调校一个音频编解码器,有几个“小窍门”开发人员应该牢记,比如:
- 确保将应用的扬声器安装在适合的外壳中。一个设计不当的扬声器箱很容易毁掉一个原本完美的播放系统。
- 在系统完全按照其生产意图配置组装好之前,不要调校编解码器音频滤波器块。否则,调谐参数可能会改变。
- 根据要播放的音频选择频率范围。例如,吉他、钢琴或有人说话的音乐的频率设置都会不同。
- 使用数字平衡块来补偿扬声器的频率响应。有些频率的声音自然会更响亮、更清晰,有些可能需要进行衰减,而有些可能需要进行放大。
- 使用测试音调来评估系统的频率响应。通过简单的网络搜索,可以找到各种音频音调的 mp3 文件,可用它们来了解音频播放系统的频率响应和数字滤波器块的工作方式。
- 将滤波器块配置设置值存储在闪存或 EEPROM 中,以便在生产过程中进行设置,从而考虑系统与系统之间的差异(如果需要的话)。
遵循这些“小技巧”的开发人员会发现,他们在尝试调校音频播放系统时,会节省不少时间并省去很多麻烦,从而确保产品能以预期的音频特性上市。
结语
在嵌入式系统中添加一个音频编解码器对最终用户来说并不能保证是好事。每一套音频播放系统都需要精心调校。可以使用外部滤波器来实现这种调校,但音频编解码器内置了数字滤波和平衡功能。如上所述,这些功能可以用来只给扬声器提供最适合的频率。通过仔细分析滤波器设置并予以应用,开发人员可以调校出终端用户对其设备所期望的纯净音质。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。