您现在的位置:首页 > 技术资料 | ![]() |
基于MCU的AEC算法实现
引言 较之传统电话,VoIP语音质量较差。影响因特网语音质量的关键因素之一是回声。要提高因特网的语音质量,就必须在语音传输的过程中进行回声消除的处理。AEC是基于自适应算法、可被应用于VoIP的回声消除技术。 本文用于AEC算法实现与研究的硬件平台足以FREESCALE公司的MCF5235为核心的开发板。MCF523X系列是以带有增强型乘加运算单元(eMAC)的ColdFire V2内核为核心,同时结合了增强型时序处理单元(eTPU)和10/100M以太网多媒体通道控制模块(MAC)的MCU,具有强大的数据处理能力和丰富的接口,能够满足VoIP电话终端对于数据处理速度以及刚络通信安全性的要求。 回声消除器介绍 声学回声消除原理 AEC是以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使得估计值更加逼近真实的回声。然后,将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。 声学回声消除器的结构如图l所示。y(n)代表远端语音信号,r(n)代表回声,x(n)是近端语音信号。近端信号x(n)叠加了回声信号r(n)。对同声消除器来说,将远端信号作为一个参考信号,自适应滤波器用它来产生回声的估计值r'(n),从近端带有回声的语音信号中将r'(n)减去,估计出近端输出信号μ(n)。在近端没有说话的情况下,即当x(n)=0时,μ(n)为回声的残差信号e(n)。e(n)的计算方程为:
自适应FIR滤波器 在声学回声消除器里,横向结构的自适应滤波器通过采用参考信号来产生回声的副本,如果这个横向结构的自适应滤波器的转换函数与回声通道的函数模型一致,那么,回声的副本与回声就应该是一致的,通过两者的抵消就可以达到消除回声的目的。 FIR滤波器的最主要特点是没有反馈回路,是一种非递归系统,它的冲激响应h(n)是一个有限长序列。下面的方程被用来计算FIR滤波器的输出: 自适应FIR滤波器是根据上一时刻的近端输出信号μ(n)以及远端语音信号y(n),通过某种自适应算法来估算当前时刻FIR滤波器的系数ak(n+1)。 LMS和NLMS算法 在输入信号和参考信号都是平稳随机信号的情况下,自适应滤波器的均方误差E[e(n)]性能曲面是滤波器加权系数ak的二次函数。其系数修正的算法通常是采用使均方误差最小的最优化求解算法,如最速下降算法。 由于实际的梯度值只能根据观测数据估计,因此,LMS算法提出的一个基本思想就是用平方误差来代替均方误差。它是对基本的最速下降算法的改进,其算法迭代公式为: 其中,y(n)为输入信号,μ为迭代步长常量。 规一化LMS(NLMS)算法被用来在LMS自适应滤波器方程里修正FIR滤波器的系数。NLMS算法与LMS算法几乎是一样的,唯一的不同是在NLMS算法中用可变的步长控制因予代替了LMS算法中的常量因子,其目的是加快算法的收敛速度。其算法迭代公式为: 其中μ应由试验来确定。μ的选取至关重要,为了确保收敛,必须满足0<μ<2。本方案中的自适应算法就采用了NLMS。 实现方案 声学回声消除器AEC主要包括FIR滤波模块、Geigle双端语音判决模块、NLMS系数更新模块、语音状态控制模块4个部分,图2为AEC简要的结构。
首先,搭建AEC的Matlab模型并对该模型进行仿真验证。然后,以已通过验证的模犁为标准,搭建可在MCF5235开发板上运行的C语言模型。最后根据需要,将运算较为密集的那部分C语言程序转化为Coldfire芯片的专用汇编语言。 实验结果及分析 在Matlab环境下,对AEC进行测试。将需要的三部分语音信号同时输入到回声消除器,测试回声消除的相关性能。 输入语音信号波形如图4所示,从上到下依次表示远端语音信号y(n)、近端语音信号x(n)和回声信号echo(n),其中,echo(n)与x(n)之和作为近端输入,与y(n)一同构成了回声消除器的两个输入信号。将滤波器的阶数设置为512,即采取64ms延时的回声消除,通过回声消除处理得到残差信号e(n),其波形如图5所示。 从图4和图5的对比中可以发现,当只存在远端信号和回声信号,近端缄默的情况下,回声消除器能够快速收敛并消除绝大部分的回声;当双端存在信号,回声消除器能在消除回声的基础上较好地保持近端语音波形。
结语 本文介绍了声学回声消除的原理,并介绍了声学回声消除器的设计以及AEC在基于MCF5235开发平台的VoIP语音通信终端上的集成。该AEC实现了包括语音检测、自适应滤波等语音处理算法。程序执行的实时性良好。通过Matlab模型的仿真和通话主观测试的结果,证明该方案实现的声学回声消除器能够满足网络通信对语音的要求。
|