>
首页 » 技术文章 » 基于MCU的AEC算法实现

基于MCU的AEC算法实现

作者:电子科技大学通信学院 龚乐中 李广军 郭志勇  时间:2007-04-18 09:59  来源:本站原创

摘 要:本文介绍了声学回声消除的基本原理,提出了一种基于飞思卡尔公司MCF5235 Coldfire 微控制器的AEC 实现方案,在Matlab 环境下进行了仿真,并在VoIP 电话终端上集成AEC 模块测试实时效果。
关键词:回声消除;LMS算法;NLMS算法;Geigle语音判决算法

引言
较之传统电话,VoIP语音质量较差。影响因特网语音质量的关键因素之一是回声。要提高因特网的语音质量, 就必须在语音传输的过程中进行回声消除的处理。AEC 是基于自适应算法、可被应用于VoIP 的回声消除技术。
本文用于AEC 算法实现与研究的硬件平台是以Freescale公司的MCF5235为核心的开发板。MCF523x系列是以带有增强型乘加运算单元(eMAC)的ColdFire V2内核为核心,同时结合了增强型时序处理单元(eTPU)和10/100M以太网多媒体通道控制模块(MAC)的MCU,具有强大的数据处理能力和丰富的接口,能够满足VoIP电话终端对于数据处理速度以及网络通信安全性的要求。

回声消除器介绍
声学回声消除原理
AEC是以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使得估计值更加逼近真实的回声。然后,将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。
声学回声消除器的结构如图1所示。y(n)代表远端语音信号,r(n)代表回声,x(n)是近端语音信号。近端信号x(n)叠加了回声信号r(n)。对回声消除器来说,将远端信号作为一个参考信号,自适应滤波器用它来产生回声的估计值r’(n),从近端带有回声的语音信号中将r’(n)减去,估计出近端输出信号m(n)。在近端没有说话的情况下,即当x(n)=0时,m(n)为回声的残差信号e(n)。e(n)的计算方程为:
e(n)=r(n)-r’(n) (1)
此时,回声的残留信号的理想值应为0。
自适应FIR滤波器
在声学回声消除器里,横向结构的自适应滤波器通过采用参考信号来产生回声的副本,如果这个横向结构的自适应滤波器的转换函数与回声通道的函数模型一致,那么,回声的副本与回声就应该是一致的,通过两者的抵消就可以达到消除回声的目的。
FIR 滤波器的最主要特点是没有反馈回路,是一种非递归系统,它的冲激响应h(n)是一个有限长序列。下面的方程被用来计算FIR滤波器的输出:
(2)
自适应FIR 滤波器是根据上一时刻的近端输出信号m(n)以及远端语音信号y(n),通过某种自适应算法来估算当前时刻FIR 滤波器的系数ak(n+1)。
LMS和NLMS算法
在输入信号和参考信号都是平稳随机信号的情况下,自适应滤波器的均方误差E[e(n)]性能曲面是滤波器加权系数ak的二次函数。其系数修正的算法通常是采用使均方误差最小的最优化求解算法,如最速下降算法。
由于实际的梯度值只能根据观测数据估计,因此,LMS 算法提出的一个基本思想就是用平方误差来代替均方误差。它是对基本的最速下降算法的改进,其算法迭代公式为:
ak(n+1)=ak(n)+2me(n)*y(n) (3)
其中,y(n)为输入信号,m为迭代步长常量。
规一化LMS(NLMS)算法被用来在LMS 自适应滤波器方程里修正FIR 滤波器的系数。NLMS 算法与LMS 算法几乎是一样的, 唯一的不同是在NLMS 算法中用可变的步长控制因子代替了LMS 算法中的常量因子, 其目的是加快算法的收敛速度。其算法迭代公式为:
(4)
其中m应由试验来确定。m的选取至关重要,为了确保收敛,必须满足0

实现方案
声学回声消除器AEC主要包括FIR滤波模块、Geigle 双端语音判决模块、NLMS 系数更新模块、语音状态控制模块4个部分,图2为AEC简要的结构。
Freescale 公司的硬件开发平台是以Coldfire 系列MCF5235为核心。该系列MCU 支持标准C 语言以及其专用的汇编语言。最终在该平台上运行的功能模块需要使用C 语言或者专用汇编语言。AEC 的开发以及移植过程如图3所示。
首先,搭建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 功能模块进行实时免提通话测试。

结语
本文介绍了声学回声消除的原理,并介绍了声学回声消除器的设计以及AEC 在基于 MCF5235开发平台的VoIP 语音通信终端上的集成。该AEC 实现了包括语音检测、自适应滤波等语音处理算法。程序执行的实时性良好。通过Matlab 模型的仿真和通话主观测试的结果,证明该方案实现的声学回声消除器能够满足网络通信对语音的要求。■

参考文献
1. 王琦. VOIP 中为保证语音质量所采用的关键技术[J ] 1 中国数据通信, 2002, (2) : 25 291
2. MCF5235 ColdFire Integrated Microprocessor User’s Manual. Freescale Semiconductor, Inc. 2004.
3. Emmanuel C. Ifeachor, Barrie W. Jervis. Digital Signal Processing A Practical Approach, Second Edition. 北京:电子工业出版社 2004.

相关推荐

基于MCU的AEC算法实现

基于Labview实现信号处理和TCP远程通信

在线研讨会
焦点