音响系统回波抵消研究
扫描二维码
随时随地手机看文章
引言
在许多音频设备(如视频会议系统)中,扬声器播放出来的声音被麦克风拾取后要发回远端,使得远端谈话者能听到自己的声音(经一个声路径延迟的声音),从而干扰语音传输,称为声学回波。
声学回波抵消器(AcousticEchoCancellor,AEC),是对扬声器信号与由它产生的多路径回波的相关性为基础建立的远端信号语音模型。利用它可对回波进行估计,并不断地修改滤波器的系数,使得估计值更加逼近真实的回波;然后再将回波估计值从话筒的输入信号中减去,从而达到消除回波的目的。AEC还会将话筒的输入与扬声器过去的值相比较,从而消除延长延迟的多次反射的声学回波。根椐存储器存放的过去的扬声器输出值的大小,通过AEC可以消除各种延迟的回波。
1回波抵消算法
声学回波抵消算法(简称AEC算法)采用一种成熟的商用频域算法模块,由美国的SPIRITCorp设计,遵循国际电信联盟(IUT)G.167标准,可用来去除由扬声器到麦克风的声音反馈所引起的回波,用户可设的最大回波路径延迟达508ms,该算法的原理框图如图1所示。
图1中的CNG(Comfortnoisegenerator)为舒适噪声产生器,DT(Doubletalk)detector为双端回话检测器,ERL(Echoreturnloss)为回声传播损失,NLP(Non-linearprocessor)为非线性处理器,NS(Noisesuppressor)为噪声抑制器,Tonedetector为音调检测器,Sub-bandadaptivesubtractors为子带自适应减法器,Sub-bandnoisesuppressor为子带噪声抑制器,Anti-howlingcontrol为抗啸叫控制单元,Convergencemonitor为算法收敛检测器。Felnput为远端参考信号输入,FeoUtpUt为经过AEC算法处理后的近端参考信号输出,称为接收回路;Nemput为回波信号与近端语音的混合信号,Neoutput为去除回波的近端语音信号,称为发送回路。
在AEC开始处理时,采用半双工方式可以避免AEC算法收敛时残余回波被听到,收敛监控器用于跟踪当前回波返回损失并检测收敛。一旦收敛AEC转向全双工方式,而且因为它对背景噪声和回波路径改变,非线性失真都非常强,所以不会再转向半双工方式,这样就能保证在任何条件下的全双工通讯。因为其子带结构,AEC仅处理32个输入缓冲区的样本,并在内部有96个样本的延迟。
AEC具有强大双端会话检测器,因而允许AEC算法在本地语音存在的条件下收敛,并且在双端会话期间不会带来残余回波增大。双端会话检测器可以在信噪比大于6dB的噪声条件下工作,双端会话检测器可控制自适应滤波器、NLP和CNG,以防止它们不收敛。当双端会话开始被检测到后,发送回路中的NLP关闭,并以确定速度逐渐增加其传输增益,直到达到其最大值1(16位时为32767)。当双端会话结束被检测到时,NLP打开并逐渐降低其增益,直到定义的最小值,这样就增加了回波抵消。
发送回路和接收回路中的NLP在半双工模式下都支持开关切换。CNG在NLP打开时工作产生与背景噪声幅度相适应的适度噪声,但其幅度小于设定的最大值。AEC具有内部音调检测器,可以防止AEC收敛在如拨号音或振铃音的正弦信号,这种收敛可能造成AEC运行错误。特别是在AEC收敛在这类信号的开始处,这一点对免提电话特别有用。AEC还具有抗啸叫控制单元,可用来避免因为声音在麦克风和扬声器间反馈引起的啸叫(Larsen效应),这种情况只有在远端和近端运行在全双工模式下才会发生。
2回波抵消器硬件构成
本文的回波抵消器硬件平台主要基于TI公司TMS320VC5416高性能DSP芯片来进行设计,其硬件平台结构如图2所示。
平台的工作原理:以DSP芯片TMS320VC5416作为主处理器完成算法的调用处理和音频数据流的控制调度;SRAM作为外扩存储器,用来存放中间运算结果;FLASH存储器用来固化算法和应用程序模块,使回波抵消器系统在外界环境固定,并使其在不需要调整控制参数时,能作为一个独立系统脱机工作。
codec采用高度集成的立体声音频编解码芯片TLV320AIC23B来处理音频输入和输出。系统的立体声输入部分,一路接Ne’nput近端语音与回波信号的混合信号,另一路接Femput远端参考信号,即远端说话人语音信号;而立体声输出部分的一路接Neoutput,即经过AEC处理的近端语音信号输出,另一路接FeOutput,即远端参考信号经过AEC处理的输出。AEC的控制参数可通过串口通讯来实现,由PC机向回波抵消系统发送AEC调控参数,可以达到最佳的抑制效果。
MCBSP
图2回波抵消器硬件平台结+构示意图
本回波抵消器硬件平台采用+5V单电源供电,可与PC机提供的+5V电源连接,并具有外部手动复位键,操作简单方便。
3串口通讯规则
为了方便调整AEC算法运行参数,本系统采用了RS232串口通讯方式。串口通讯的编程分为两部分:一部分采用汇编与C混合编程的方式,在TMS320C5416上运行;另一部分则采用VB6.0的人机控制界面设计図。
通讯机制采用查询方式。回波抵消器主程序上电运行时,对两个输入通道采样32个样本,在AEC算法处理前应查询一下串口有无控制参数发出。如没有,则按默认参数运行;如果串口有控制参数,则保存并按新的控制参数执行[6]。VB具有面向对象的设计方法,并具有简单方便的串行通讯和实用性强等优点。利用串行端口控件Mscomm可以实现简单的串行通信,该控件屏蔽了通信过程中的底层操作,用户可以设置、监视Mscomm控件的属性和事件,并可结合Timer控件完成对串行口的初始化和数据的输入输出工作。
串口控件Mscomm的使用和设置非常简单,通过以下代码即可完成该控件相应属性的初始化:
strset="19200,n,8,1"
Form1.MSComm1.InBufferSize=512‘定义输入缓冲区大小
Form1.MSComm1.OutBufferSize=512‘定义输出缓冲区大小
Form1.MSComm1.CommPort=1‘设置串行端口号
Form1.MSComm1.Settings=strset,设置数据格式
Form1.MSComm1.PortOpen=True'打开串口
这里将控制参数分类并排序,发送和接收都应当严格按次序执行,以确保通讯过程的正确。控制参数主要分为三类,图3所示是回波抵消器的人机控制界面图。其中,量化参数位于图3左侧,该类参数有具体数值,对于超过8位二进制数的参数,可采用分高低字节发送,并使用Slider控件来实现;AEC开关量为图3中间部分的参数,该类参数表示AEC算法中某些运算模块的打开和关闭,可采用Checkbox控件实现;选控参量为图3右侧的参数,该类参数表示AEC算法中某些参量数值的选择,如采样率、回波延迟设置等,主要采用
ComboBox控件实现。
图3回波抵消器人机控制界面图
用户使用时,在设置相应参数完毕后,点击“应用”即可完成参数传递过程,也可点击“复位”加载算法本身提供的默认参数。控制参数一旦根据音频设备使用环境设置完毕,则不需频繁修改,参数设置过程不影响算法的实时运行。
4结语
通过语音数据文件的仿真分析及实际会场环境检测证明,该回波抵消系统具有较好的回波抑制效果,而且算法收敛速度快,性能稳定,因而应用十分广泛。
20211012_6165a60b73ee6__音响系统回波抵消研究