基于FPGA的音频响度控制
2016-12-26吴旭旭喻金华肖铁军
吴旭旭,喻金华,肖铁军
(1.江苏大学 计算机学院,江苏 镇江 212013;2.南京视威电子科技股份有限公司,江苏 南京 210038)
基于FPGA的音频响度控制
吴旭旭1,喻金华2,肖铁军1
(1.江苏大学 计算机学院,江苏 镇江 212013;2.南京视威电子科技股份有限公司,江苏 南京 210038)
响度控制是音频播放中的值得注意问题,响度控制的实质是给定音频要求下响度大小优化问题。为满足实时性需求,采用Xilinx公司的Spartan6系列FPGA,改进了响度控制算法以适合在FPGA上实现。该算法采用了分段处理的方法,以及Xilinx众多的结构化的IP核,保证了运算的速度和可靠性。实验结果表明,该设计在FPGA上运行稳定,有较好的响度控制效果。
FPGA;响度控制;分段处理
日常生活中,由于电视台的信号源和制作标准问题,经常会出现不同的节目声音差别较大的问题。若两个节目声音大小差别较大,在节目切换时,尤其是在电视节目中穿插的广告,此处的音频响度一般高于其他节目。声音的突变会使得观众感到不适和烦躁,这就是常见的响度问题[1]。
响度问题已严重影响了节目的播出效果和用户收看电视节目的体验。因此,响度控制成为现如今在播出系统中急需解决的一个问题[2]。
随着观众对于影视音的要求越来越高,众多音频处理厂商推出了自己的响度处理控制模块,其控制模块多是硬件实现的,其灵活性不足,且价格昂贵。FPGA灵活易于编程的特点适合进行音频相关的处理。因此,研究基于FPGA的响度控制具有重要意义。本文根据不同频率段的响度的特点进行分段式的响度控制进而在FPGA上实现。
1 响度
响度是人耳对于声响的主观感受。人耳对于响度的感知是由声音的振幅和频率共同作用产生的。通过大量数据的统计与分析发现:人耳对于3 ~5 kHz 频率段的声音较为敏感,对低频的声音不敏感。所以,本文将人耳可以听到的声音分为20 Hz~3 kHz的低频段,3~5 kHz的敏感频段和5~20 kHz的高频段。各频率的声压级与响度级的数值接近,与频率的关系较小。由于人耳对于不同频率声音敏感程度不同,故本文通过根据分段式的方法进行音频响度的控制和处理。
2 响度测量
由于缺少合适的客观指标,电视节目中响度问题始终困扰着观众和光电行业的工作人员。为此国际电信联盟(International Telecommunication Union,ITU)制定了BS.1770系列标准[3],推荐了一种基于RLB的加权的响度测量算法[4-5]。
(1)用一个滑动矩形窗,从待测音频中,截取一段时长为T的响度块,进行K计权滤波。K计权滤波器由前置滤波器和RLB滤波器串联而成,前置滤波器用来模仿人头部高频搁架式抬升的频率响应,而RLB滤波器则用来模仿人耳低频滚降的听觉特性
Y(jω)=X(jω)·FK(jω)
(1)
(2)在计算出滤波后,各声道音频样本的均方能量
(2)
(3)对各声道的均方值进行加权累加、取对数值,就可获得响度电平。不同声道的加权值不同,如图1所示。
(3)
图1 ITU-R BS.1770 响度算法框图
滑动矩形窗的长度虽然为秒级,但每次截取的音频片断都有所重叠,因此响度电平的示值仍然能以较高的频率更新显示,可满足实时测量的要求。
3 响度控制
响度的测量和控制模块是在Xilinx公司的ISE14.4软件环境下,使用Verilog HDL语言对响度控制电路进行描述,并以Xilinx公司的xc6slx45t-3fgg484为核心芯片的FPGA开发板进行硬件实现级功能验证。
该模块支持两种输入信号:SDI信号和HDMI信号。若输入的是加嵌着音频的SDI信号,需要将I2S音频信号从SDI数据流中解嵌出来。而若数据输入的端口是HDMI,数据流中带有I2S串行信号,可直接使用。
由于人耳可听到的声音的频率的范围是20 Hz~20 kHz。在这一频域内,人耳较为敏感的区域是3~5 kHz。同时,人耳对于低频段的声音感知能力较差,而高频段声音过高会使人觉得声音较为刺耳。
图2 响度控制的流程
基于上述原因,本文决定使用分频段处理的方式对音频的响度进行控制和处理。使用低通和高通滤波器将可听到的音频范围进行分割为3段,如图3所示。
图3 频率的分割
从图3可知,串并转换得到的24位并行音频信号通过高通滤波器1和低通滤波器2,得到3~5 kHz的人耳敏感的频率区域。
音频数据通过低通滤波器1,可得到20 Hz~3 kHz的低频段声音。通过高通滤波器1和高通滤波器2的音频频率是5~20 kHz。这样人耳可感知的音频就被人为分为了3段:低频段(20 Hz~3 kHz),中间频段(3~5 kHz),高频段(5~20 kHz)。
3.1 滤波器的实现
相对于FIR滤波器,IIR滤波器通带内平稳波动较小且易于实现。使用FPGA实现特定的滤波要求,IIR滤波器比FIR滤波器需要的阶数更低且资源占用更少。所以本文采用IIR滤波器进行频率分割。
首先,在Matlab中预先模拟出想要的滤波器的滤波特性,得到滤波器的传递函数和滤波器的系数
(4)
然后,对得到的传递函数进行z变换,得到滤波器的差分方程
(5)
在得到滤波器差分方程的情况下,使用延时器和乘法器实现需要的滤波器。
3.2 中间频段
通过滤波器组的得到此频率段的音频和经过响度测量模块得到此段音频响度值,通过查找表的方法获得系数,从而进行计算和处理。具体处理流程如图4所示。
图4 调整控制模块
由于人耳的预期的响度值是-23 LKFS,考虑到此段只有3~5 kHz的声音,取此处的预期响度值为-25 LKFS。
本文取响度的动态范围为5 LKFS。则在-22.55~27.55 LKFS范围内,调整系数设置为1,此响度范围内数据不作处理。
建立的查找表分为两个部分。当未处在响度动态范围内时,设置参数进行缩放处理;在允许的动态范围内将系数设置为常数1,即不做处理。限幅器可较好的解决音频数据溢出问题。
本文使用查找表的方法进行计算和处理,响度测量模块的得到的响度值,通过查找表得到调整系数coef,输入到调整模块。在调整模块内,音频数据乘以调整系数,实现音频控制。
3.3 低频段和高频段
低频段有着较多的低频声音,丰富的声音细节,若没有此段的音频过低或过少,声音将会 “干涩”,不够饱满。适当的根据频率进行增益是有必要的。而高频段的衰减可较好地解决音频刺耳的问题。
采用Xilinx自带的FFT IP核变换的方法[4-5]进行增益处理。首先,使用FFT核将音频变换到频域。在频域内,根据频率的不同分别进行增益。增益处理后的音频通过IFFT变换到时域完成处理[8-9]。
从仿真可看出,FFT核可较好地实现数据在时域和频域之间的转换,只要在转换到频域时,根据频率的不同进行适当的增强即可。此方法可较好的解决低频段不同频率增强/衰弱的问题。
图5 FFT和IFFT变换仿真
3.4 实验效果
实验使用HDMI和SDI两种输入信号。音频信号通过HDMI接口或者SDI接口输入给搭载一片Xilinx公司xc6slx45t-3fgg484 FPGA芯片的开发板进行提取和处理。使用响度测量工具取15 min测量可知,调试后的音频响度处于合理的动态范围内,基本符合预期效果。
图6 使用响度测量工具取15 min测试前后结果
4 结束语
本文研究了基于FPGA的响度控制的方法,不但能满足响度处理的实时性要求且较好的解决声音的低频和高频问题,避免了音频数据的失真。本文结合FPGA特点将音频数据根据频率的不同进行分段式处理,根据人耳对于不同频率声音感知的不同,分频率段进行处理。实验结果表明,在FPGA上运行稳定,有较好的响度控制效果。
[1] 叶志阳.电视伴音响度控制的探讨[J].现代电视技术,2008(8):107-109.
[2] 邓向东,张建东,崔俊生,等.电视节目伴音响度一致性方案研究[J].广播与电视技术,2011,38(z1):26-28.
[3] ITU-R BS.645 ,Test signals and metering to be used on international sound programme connections[M].Grace:ITU-R BS,2010.
[4] ITU-R BS.1771-1,Requirements for loudness and true-peak indicating meters[M].ITU-R BS,2012.
[5] EBU Tech.Practical guidelines for distribution systems in accordance with EBU R 128 [M].Swissland:EBU Technology Company,2011.
[6] 魏辉.响度控制器原理及应用[J].音响技术,2011(3):21-24.
[7] 毛京丽,李文海.数据通信原理[M].北京:北京邮电大学出版社,2000.
[8] 杨永昌,杨瑞,王凯.快速傅立叶变换算法及其实现技术[J].邢台职业技术学院学报,2006,23(3):36-38.
[9] 刘钢.快速傅里叶变换在声音均衡和频谱中的应用[J].通信技术,2008,41(7):250-251.
Loudness Control Based on FPGA
WU Xuxu1,YU Jinhua2,XIAO Tiejun1
(1.School of Computer Science and Telecommunications Engineering, Jiangsu University, Zhenjiang 212013, China; 2. Nanjing SWIT Electronics Co., Ltd, Nanjing 210038, China)
Loudness control is the significant problem in audio zone, essentially it is loudness distortion optimization under the constraint of audio requirement. In order to meet high-speed applications, loudness control algorithm was designed and implemented on the platform of Spartan6 Xilinx FPGA. This algorithm applies the method of segment control and lots of Xilinx IP cores to ensure the speed and the reliability. The experiment result shows that the design gains a good control result and runs stably on FPGA.
FPGA; loudness control; segment control
10.16180/j.cnki.issn1007-7820.2016.12.007
2016- 02- 22
吴旭旭(1990-),男,硕士研究生。研究方向:FPGA设计。喻金华(1984-),男,硕士,工程师。研究方向:FPGA设计。肖铁军(1963-),男,教授,硕士生导师。研究方向:嵌入式计算及系统。
TN79;TP302
A
1007-7820(2016)12-023-03