基于飞思卡尔MCU的AEC算法实现
扫描二维码
随时随地手机看文章
0 引言 voip是在ip网络上实现音视频及传真信号传输的一门全新的集成业务数据网络技术。ip语音传输技术具有节省带宽、话费低,可方便地集成智能型开放体系结构以及多媒体业务等优势。但较之传统电话,其语音质量较差。事实上,影响因特网语音质量的因素是多方面的,关键因素之一是回声的影响。因此,要提高因特网的语音质量,就必须在语音传输过程中进行回声消除。aec是基于自适应算法并可用于voip的声学回声消除技术。而用于aec算法的实现与研究的硬件平台是以freescale公司的mcf5235为核心的开发板。mcf523x系列mcu是首个以带有增强型乘加运算单元(emac)的coldfire v2内核为核心,该产品同时结合了增强型时序处理单元(etpu)和10/100以太网多媒体通道控制模块(mac)的mcu,因而具有强大的数据处理能力和丰富的接口,能够满足voip电话终端对数据处理速度以及网络通讯安全的要求。1 回声消除1.1 声学回声消除原理 aec是以扬声器信号与由它产生的多路径回声的相关性为基础建立的远端信号语音模型,利用它可对回声进行估计,并不断地修改滤波器的系数,以使估计值更逼近真实的回声,然后,将回声估计值从话筒的输人信号中减去,从而达到消除回声之目的。 声学回声消除器的结构原理如图1所示。其中y(n)代表远端语音信号,r(n)代表回声,x(n)是已经叠加了回声信号r(n)的近端语音信号。对回声消除器来说,可将远端信号作为一个参考信号,然后由自适应滤波器通过它来产生回声的估计值r′(n),再从近端带有回声的语音信号中减去r′(n),从而估计出近端输出信号μ(n)。在近端未说话时,即当x(n)=0时,μ(n)即为回声的残差信号e(n)。e(n)的计算方程为:
e(n)=r(n)-r′(n) (1) 此时,回声的残留信号的理想值应为0。1.2 自适应fir滤波器 在声学回声消除器里,横向结构的自适应滤波器可通过参考信号来产生回声的副本,其原理如图2所示。如果这个横向结构的自适应滤波器的转换函数与回声通道的函数模型一致,那么,回声的副本与回声就应该是一致的,这样,通过两者的抵消便可达到消除回声之目的。
fir滤波器的最主要特点是没有反馈回路,这是一种非递归系统,它的冲激响应是一个有限长序列。fir滤波器的输出计算公式为:
自适应fir滤波器根据上一刻的近端输出信号μ(n)及远端语音信号y(n),并通过自适应算法来估算当前时刻fir滤波器的系数ak(n+1)。1.3 lms算法和nlms算法 在输入信号和参考信号都是平稳随机信号的情况下,自适应滤波器的均方误差e[e(n)]性能曲面是滤波器加权系数ak的二次函数。其系数修正算法通常采用可使均方误差最小的最优化求解算法。 由于实际的梯度值只能根据观测数据估计,因此lms算法提出的一个基本思想就是用平方误差e[e2(n)]来代替均方误差e[e(n)]。它是对基本的最速下降算法的改进,其算法迭代公式为:ak(n+1)=ak(n)+2μe(e)*y(n) (3) 其中y(n)为输入信号,μ为迭代步长常量。 规一化lms (nlms)算法可用来在lms自适应滤波器方程里修正fir滤波器的系数。nlms算法与lms算法几乎是一样的,唯一的不同是nlms算法中使用可变步长控制因子来代替lms算法中的常量因子。其目的是加快算法的收敛速度。其算法迭代公式为:
其中,μ可由试验来确定。但应注意,μ的选取至关重要,为了确保收敛,必须满足0<μ<2。本方案中的自适应算法就是采用nlms算法。1.4 语音检测 语音活动检测可用来确定三种语音状态:近端讲话状态、远端讲话状态和双端讲话状态。因为aec要根据不同的语音活动状态来进行相应的处理。它在检测到近端语音活动状态时,滤波器既不进行滤波,也不进行系数更新;而在检测到双端语音活动状态时,将停止滤波器系数的更新,但要进行滤波。由于在只有远端语音活动的状态下,既要进行滤波,又要进行系数更新。因此,语音活动状态检测的正确与否在很大程度上会影响回声消除的效果。语音活动检测流程如图3所示。
双端讲话情况可以通过设计近端话音检测器,并采用geigel算法来判决。利用该算法计算回声延时大小范围内的瞬时能量比较,具有着良好的性能优势。其geigel算法描述如下:
式中,n是fir延时级数,之所以将r(i)和最近n个远端输入的