邢堃,杨小平,顾亚平,王德勇,薛英智
基于DSP的啸叫抑制系统的研究与实现
邢堃1,杨小平1,顾亚平1,王德勇2,薛英智2
(1. 中国科学院声学研究所东海研究站,上海 200032;2. 国科微电子有限公司,上海200233)
扩声系统中由于声反馈导致啸叫,造成了声音的严重失真。在基于ARC600 DSP核的基础上建立了较为完整的硬件试验系统,首先在计算机上研究并仿真了啸叫抑制算法,之后在此试验系统上对该算法做了实时的实现。实验结果说明,该系统的扩声增益提高了10 dB以上,有效地抑制啸叫并且可以保持较好的音质,实时性良好。
啸叫抑制;IIR陷波器;ARC600 DSP
当今的各种扩声系统由于同时使用了扬声器和传声器,普遍存在声反馈现象。声反馈的产生会直接导致声音出现失真。当反馈较严重时,则会引起啸叫。啸叫声不但使讲话、演唱无法顺利进行,而且会损伤人耳。剧烈的啸叫还可能会烧毁系统中的放大器或扬声器中的高音单元[1]。因此,如何有效地抑制声反馈,避免产生啸叫,是扩声系统中的一个重要课题。
现有的基于数字信号处理的啸叫抑制方法主要有以下几种。其一是移频法[2],它是通过升高或降低输入音频信号的频率成分,使输入信号再次进入系统不会和原始信号频率叠加,此方法虽简单有效,但是移频过程会造成频率失真,对音频信号音质损害较大,所以多是使用在对音质要求不高的场合。其二是随机相位法[3],它利用了人在主观听觉上对声音的相位变化不敏感的特点,在声反馈回路中加了一个随机相位系统,虽然这种方法不会带来音质上的明显失真,但是随机加入的相位有可能产生新的频率啸叫点。第三种是陷波法[4],基本陷波器的工作原理是对信号中出现的较明显的若干个超过预设值的频点进行抑制,在反馈频点设计滤波器对信号进行滤波,这种方法是目前较为常用的方法,但是如果对反馈频点位置及所滤波的带宽判断不够准确就会造成声音塌陷,引起声音失真。第四种是使用自适应声反馈抑制系统[5],它针对当前观察的数据自动调节本身的冲击响应特性,从而适应信号变化达到最优滤波,尽管这是目前抑制啸叫最有效的方法,但是由于这种方法需要不断调整滤波器的系数,导致系统低速、处理方法复杂。
综上技术方案,结合本文主要解决的KTV环境下音响系统对话筒声反馈而产生的啸叫声,采用MetaWare公司的ARC600 DSP处理器,选择陷波法来进行啸叫声抑制,设置每帧1024点,时域补零成2048点计算功率谱,在一定程度上减小了判断声反馈频点的误差。
本系统中,在算法设计上从两部分实现对啸叫声的抑制:声反馈频点的检测与判定算法、IIR陷波器的设计。
1.1 声反馈频点的检测与判定
对于啸叫抑制系统来说,能否找到准确的反馈声频点是至关重要的,它是陷波器设计的前提。本系统从频域的角度出发研究啸叫抑制的算法。
算法的第一步就是检测出有可能引起啸叫的频点,称为“候选啸叫频点”。对一帧的数据补零至2048点后进行快速傅里叶(Fast Fourier Transform, FFT)变换,并加窗以减少频谱泄露(这里采用的是布莱克曼窗)。选择经FFT计算后功率谱中最大的个值,本系统设为5,将这个频率值视为“候选啸叫频点”。
建立前期的声反馈信号,从频域上看,是一个单一的、频点固定不变的、幅度单增的谱峰。而其它大多数正常的语音信号都具有多个不同的频率,并且在它的峰值功率处,其频率和幅度都在时刻无规律地变化。据此,本系统采用峰均值功率比(Peak- to-Average Power Ratio, PAPR)作为判定依据[6]。设上述求出的功率谱为,,其判定步骤为:
(3) 计算峰值功率幅度与平均功率幅度之比(单位:dB)。
(2)
声反馈频点的检测与判定流程如图1所示。
1.2 IIR陷波器的设计
由于IIR滤波器可以用较低的阶数,实现较高阶FIR滤波器才能实现的频率选择性,如果用FIR去逼近滤波曲线的话可能会影响系统的实时性,又考虑到本系统对语音信号的相位特性要求不高,因此本文选用IIR滤波器。然而,IIR滤波器存在有限字长效应,可能会引起极点偏移。为了提高系统的稳定性,系统滤波器系数精度为32 bit,采样数据量化精度亦为32 bit。本文陷波器设计采用多个IIR滤波器级联来实现,通过降低声反馈频点的增益来抑制啸叫。
IIR滤波器系统函数的有理分式为
根据文献[7],得到滤波器的系数为:
(5)
(7)
(8)
本系统采用CPU与DSP多核实现,CPU作为主机端(Host),主要负责外设接口和控制等,DSP作为从机端(Client),主要负责算法实现。主机端和从机端采用IPC的通讯机制。主机端主要模块有:Boot loader,IPC Host,外设驱动(Flash、UART、IR等),片上调试接口(on-chip debugging),电源管理等。从机端主要的模块有:IPC Client,音频编解码器,啸叫抑制软件算法实现。两端共享DDR内存,用来传递音频PCM数据。本文主要介绍DSP Client端的实现。
2.1 系统硬件概述
Client端音频处理部分主要由3个模块组成,分别是传声器放大器、音频编解码器和ARC600 DSP。本系统采用的传声器放大器为MAX9814集成芯片,音频编解码器为4A2D96LD集成芯片。
MAX9814是一款低成本、高品质的传声器放大器。该器件分为三级放大,输入信号先通过增益为12 dB的低噪声前置放大器进行缓冲和放大,第二级由自动增益控制(Automatic Gain Control, AGC)和可变增益放大器(Variable Gain Amplifier, VGA)组成,VGA/AGC组合能够使增益在20~0 dB之间变化,输出放大器是最后一级,具有8、18、20 dB三个不同的固定增益,可通过一个三态逻辑输入编程设置。放大器级联可使总增益达到40、50或60 dB。
4A2D96LD FUJ55L是一款高品质、低功耗的音频编解码芯片,该器件输入具有自动音量控制功能,限制增益范围在0~42 dB之间,输出具有可编程增益调节功能,调节范围为-18~42 dB。模数转换ADC和数模转换DAC高度集成在芯片内部,均采用了先进的Sigma-delta过采样数字插补滤波器技术,采样率范围为8~192 kHz,动态范围分别可以达到90 dB和96 dB。
ARC600是MetaWare公司推出的一款全性能低功耗32 bit的定点DSP芯片,它采用哈佛结构设计,指令5级RISC流水线技术。ARC600支持高级语言C/C++等,具有强大的Cache缓存机制。对本系统而言,功率谱的计算需要耗费相当多的时间,它专门的FFT变址模式,可以方便地实现位(bit)反转,而指令集中的专门针对FFT蝶形运算的指令,能够很大程度上减少FFT蝶形运算的计算量,这对于保证系统的实时性是非常有用的。
如图3所示,传声器输入信号先经MAX9814放大,随后AUDIO CODEC对MAX9814输出的信号做AD转换,DSP再对数字音频信号做是否啸叫的判断与处理,把经DSP处理后的PWM信号输入到STA516B(功率放大器),最后从扬声器输出。
2.2 系统算法软件实现
系统算法软件实现部分是在Client端完成的。开始运行后,首先对I2S、SPDIF、4A2D96LD FUJ55L等进行初始化;其次是对Client端的IPC初始化,这是Host端与Client端通信机制的初始化工作;接着进行算法初始化,然后判断是否接收到一帧新的数据,如果是新的一帧,则DSP从接收缓存区中读数据,否则继续等待新的一帧到来;然后对新帧数据进行检测分析,判断里面是否含有声反馈频点,若存在这样的频点,则将这帧用IIR陷波器滤波,若未找到这样的频点,那么不做滤波处理;最后将数据取到发送缓存区后输出。
系统软件流程图如图4所示。
考虑到系统的实时性,为了提高系统的效率,本系统将软件算法中涉及大量计算的程序部分用汇编语言完成(FFT计算、二阶节IIR陷波器的实现),其余部分用C语言完成,在单声道情况下,系统占用MIPS数大约为40 MHz。
2.3 系统验证与分析
在混响时间大约为300 ms的小房间中,建立实验室测试环境。在实验环境中产生了一段比较明显的啸叫音频,截取其中4 s进行语谱分析。
图5是啸叫发生时的语谱图,图6是经过系统啸叫抑制后的语谱图。图5中啸叫频点大致位于4200 Hz处,在2.5~3.5 s这段时间内能量累积变得很大,明显产生啸叫。图6中在4200 Hz处2.5~3.5 s时信号能量得到大幅度衰减。
实验测得系统的扩声增益提高了10 dB以上。并且通过非正式的听音测试,证明该系统对音质的影响很小。
本文在研究了啸叫抑制软件算法的基础上,通过以ARC600 DSP为核心实现了整个系统,选取的算法具有高速、低复杂度的特点。经系统仿真验证,系统扩声增益可提高10 dB以上,实时系统测试表明,本系统可以快速、有效地抑制啸叫并且能够保持较好的音质。
[1] 梁晓汇, 周权.语音信号处理方法的可靠性研究[J]. 电声技术, 2010, 34(4): 58-62.
LIANG Xiaohui, ZHOU Quan.Validity research of acoustic signal processing[J]. Audio Engineering, 2010, 34(4): 58-62.
[2] Alisobhani J, Knorr S. Improvement of acoustic-feedback stability by bandwidth compression[J]. IEEE Transactions on Acoustics, Speech and Signal Processing, 1980, 28(6): 636-644.
[3] 吴鸣, 陈国跃, 邱小军, 等.采用随机相位技术的啸叫抑制方法[J]. 电声技术, 2007, 31(8): 14-16.
WU Ming, CHEN Guoyue, QIU Xiaojun, et al. Phase randomized technique for howling[J]. Audio Engineering, 2007, 31(8): 14-16.
[4] 郝国莉, 方元. 采用改进陷波器的声反馈抑制[J]. 电子测量技术, 2012,3: 65-68.
HAO Guoli, FANG Yuan. Acoustic feedback suppression with improved notch filter[J]. Electronic Measurement Technology, 2012,3: 65-68.
[5] LeotwassanaW, PunchalardR, SilaphanW. Adaptive howling canceller using adaptive IIR notch filter: simulation and implementation[C]//Proceedings of the 2003 International Conference on Neural Networks and Signal Processing, 2003: 848-851.
[6] Deepak Somasundaram. Feedback cancellation in a sound system: U.S., EP1903833 A1[P]. 2008-03-06.
[7] ZHANG Xiuli, ZHANG Ruihua, CHEN Weidong. Design of digital parametric equalizer based on second-order function[C]// IEEE International Conference on Image Analysis and Signal Processing, 2010: 182-185.
Design and implementation of howling suppression system based on ARC600 DSP
XING Kun1, YANG Xiao-ping1, GU Ya-ping1, WANG De-yong2, XUE Ying-zhi2
(1.Shanghai Acoustics Laboratory, Shanghai 200032, China; 2.Goke MicroelectronicsCo., Ltd, Shanghai 200233, China)
The howling is generated due to acoustic feedback in amplifying system, which can cause the serious distortion of sound. The paper establishes a relatively complete hardware test system based on ARC600 DSP: studying and simulating on computer for the howling suppression algorithm first, and then implementing the algorithm on this test system in real time. It turns out that the amplification gain of the system can be enhanced by about 10dB, and the howling can be effectively suppressed to keep the sound quality almost no loss.
howling suppression; IIR notch filter; ARC600 DSP
TB533
A
1000-3630(2015)-04-0338-04
10.16300/j.cnki.1000-3630.2015.04.009
2014-08-11;
2014-11-21
邢堃(1987-), 男, 山西太原人, 硕士, 研究方向为数字音频信号处理与嵌入式系统。
邢堃, E-mail: dianxinxingkun@163.com