用C5402 DSP实现的G.168自适应回声消除器
2008-12-29
作者:蒋 彦1, 陈 健2
摘 要:叙述网络电话系统" title="电话系统">电话系统的回声特点,介绍了ITU-T G.168建议书的有关要点。基于性价比方面的考虑,提出了利用nLMS算法构成的横向滤波器" title="横向滤波器">横向滤波器组成自适应回声消除" title="回声消除">回声消除器,并在TMS320C5402 DSP上实现了该算法。经过测试,主要性能均达到G.168规范要求。
关键词: 横向滤波器 回声消除器 nLMS算法 数字信号处理 ITU-T标准
过去,通过卫星打国际长途电话时,因为同步静止卫星的通话路径长,引起通话延迟(单跳250ms,双跳500ms),因电路失配所引起的线路回声就很明显,所以从二十世纪80年代起人们就研究回声消除的办法。由简单的回声抑制器发展到自适应回声消除器,国际电联(ITU)也相应地制订了回声消除器的国际标准,如G.164?G.165和G.167等。进入90年代后期,通过英特网拨打长途电话,即IP电话流行。IP电话是以数据包的格式在英特网中与其它数据信息按TCP/IP协议一起传输,从发话端到受话端延时较长,并且是不确定的。这里的延时包括算法延迟?处理延迟?网络延迟等,算法延迟从0.125ms~30ms不等,处理延迟约30ms,网络延迟高达70~100ms,总的延迟在100ms以上,而人耳对于大于50ms的回声就能鉴别出来,因此IP电话系统的回声影响相当严重,如何消除IP电话中的回声成为非常重要的问题。
在IP电话系统中,自适应回声消除器成为不可缺少的设备。鉴于IP电话与普通国际长途电话的不同,ITU于1997年通过了G.168回声消除器的标准,该标准是G.165标准的发展,而更多地考虑到网络情况,包括话音?传真?固定和移动用户等应用,所以G.165和G.168均为IP电话系统采用的标准。
1 ITU-T G.168
国际电联就回声消除技术先后发布了一系列规范,分别包括电学回声和声学回声的消除,其中1997年公布的G.168是关于电学回声消除的最新规范。该建议书针对数字回声消除器提出了一般的设计要求,定义了相关的测试项目,以保证其能够在各种网络条件下提供足够的回声消除能力。该建议书覆盖了比G.165更加广泛的网络情况,包括话音?传真?残余的声学回声和移动网等不同应用。同时,该建议书还定义了一系列客观测试项目(objective tests),如果回声消除器通过这些测试,那么当其安装在网络中,起码就可以完成最低限度的回声消除功能。一个能够通过这些测试的回声消除器,不应该影响话音信号的传输或其它设备的工作。图1是回声消除器的基本组成和参数。
为了客观地评价各种回声消除器的性能,G.168中规定了一种特定的复合信号源(Composite Source Signals: CCS),带限CCS是具有与话音类似的功率密度谱的信号,可以仿真话音信号的特征,用它来作测试信号可以测量回声消除器对话音信号的处理能力。由于信号的起始和终止都有明确定义,因此可以方便地测出同一方向上的切换时间,和整个系统的切换和延迟时间。
在MATLAB中,利用程序生成了符合G.168要求的带限CCS信号,如图2所示。
2 回声消除器的算法原理
一般而言,回声消除器就是一个自适应辨识系统,它通过特定的方法辨识未知的目标系统,即:回声经过的路径。通常,先设定“自适应辨识网络”的结构形式,再通过对输入序列和输出序列的计算,不断地调整网络参数。这种自适应辨识要求在尽量短的输入数字序列期间,以某种合理定义下的辨识误差为准则,解出各待定参数。
自适应网络结构的常用形式为“横向(Transverse)滤波器”,如图3所示。T是延时器,W(n)=[w0(n),w1(n),...,wL-1(n)]是加权因子(n为时间序号),即待定的网络参数,它随着辨识误差等而改变,每隔一个码元间隔(每时间序号)调整一次。
最陡梯度法是以最小估计误差平方为准则的自适应信号处理算法,但是它要求知道输入/输出数据的二阶统计特性,并且要求这些数据信号是平稳的,通常不易满足。于是,在最陡梯度法的基础上引入适当的近似,即得到LMS算法。由于在最陡梯度法中应用的是统计平均特性,而在LMS法应用的是瞬间数据,只是在统计平均的意义下才与最陡梯度法等效,故解所反映的过程是随机的,即它为一随机自适应算法。虽说输入信号" title="输入信号">输入信号的二阶统计特性彼此相同,所得解(指权值)与最陡梯度法相比却呈现波动,且波动瞬间时值随输入信号的不同而异。LMS算法的特点是:每次迭代的计算量小,所需的存储量也小,易于实现。
在图3的情况下,设X(n)=[x(n),x(n-1),...,x(n-L+1)]T是时刻n的输入信号矢量,由最近的L个信号采样值构成,L是横向滤波器的长度。y(n)是回声消除器的期望(估计)输出值,d(n)是Sin点的实际输出值,e(n)是减法器得到的估计误差。μ是回声消除器控制稳定性和收敛速度的参量,称为步长因子。
LMS算法的基本方程归纳如下:
由于输入信号的大小对LMS算法存在影响,即同样情况下,能量高的信号会引起梯度噪放大,而能量低的信号算法收敛较慢。因此在实际应用中,将输入信号按照自身的平均能量进行归一化处理,得到归一化的LMS算法,即nLMS。如式(4)所示。
这里的参数a是nLMS所特有的,为了避免在输入信号矢量过小时可能产生的数值计算问题,而特意引入的,它是一个很小的正数。
从方程看,LMS算法的优点是运算简便,但它只有一个可调整参数,即步长因子μ,用来控制收敛速度。由于μ的选择受系统稳定性的限制,因此,算法的收敛速度受到较大限制。
3 用DSP实现的G.168回声消除器
3.1 TMS320VC5402 DSP的特点介绍
TMS320VC5402是TI C5000系列DSP芯片族中使用最广的一种,具有以下特点:
· TMS320VC5402 DSP,它的最高时钟频率达到100MHz,内核电压是1.8V,I/O电压是3.3V。它的片内存储器为:16KB DARAM,4KB ROM,功耗低,平均约为0.32mW/MIPS。
· DSP内部采用改进的哈佛结构,即:程序空间和数据空间分开,允许同时取指令和取操作数,而且,还允许在程序和数据空间之间相互传送数据。
· DSP芯片内部采用多总线结构,C54x内部有P?C?D和E等4条总线(每条总线包括地址总线和数据总线),可以在一个机器周期内从程序存储区取1条指令,从数据存储区读2个操作数并向数据存储区写1个操作数,大大提高了DSP的运行速度。
· 在DSP中,采用流水线结构,将一条指令执行所需要的取指?译码?取操作数并执行等几个步骤同时完成,使指令周期" title="指令周期">指令周期降低到最小值。
· DSP内部有多个处理单元,如算术逻辑运算单元(ALU)?辅助运算单元(ARCU)?累加器(ACC)和硬件乘法器(MUL)等,它们可以在一个指令周期内同时进行运算,特别适用于FIR和IIR滤波器。
· 在DSP的指令系统中,设计了一些特殊高效的DSP指令,如FIRS和LMS指令,专门用于对称FIR滤波器和LMS算法。
3.2 编程介绍
DSP中实现的nLMS算法就是上面介绍的(1)~(4)式,但其中的归一化方法需要说明。首先,考虑到数值计算的有限精度,将(4)式分母中的平方项拆开,组成两个分式相乘。拆开后的信号能量记为POWER(y(n)),由(6)式的时间估计值进行迭代计算。
以下为采用C5000汇编语言实现nLMS算法的基本代码:
STM#(TAPS-2),BRC ;根据横向滤波器的长度TAPS,循环(TAPS-1)次,但是另有一次
在RPTBD指令后的流水线中完成。
SSBX FRCT
XC 2, NTC ;如果要求停止更新滤波器系数,
则将(5)式的更迭项置零
ST #0, n_error_mu
LD #0,B
LD n_error_mu, T ;norm_error * mu -> T
RPTBD $nLMS_end-1
MPY *n_ref_ptr+0%,A
LMS *filter_ptr,*ref_ptr+0%
ST A,*filter_ptr+
|| MPY *n_ref_ptr+0%,A
;error (in T) * n_ref_sample->A
LMS *filter_ptr,*ref_ptr+0%
;A+coef<<16+round.->A
;coef*ref+B->B
$nLMS_end:
ST A,*filter_ptr
|| SUB *AR5,A
;S0<<16-B (est.echo) -> A
STH A,error_out
ABS A
STH A,ABSE0 ;abs value for power estimate.
在程序的主要循环体内,每次循环只需要两个指令周期,因此对于nLMS算法的每次系数更新需要的指令周期约为(2×TAPS)个。这里,DSP处理器的优越性能起了决定作用。
在实际应用中,回声消除器所需要的处理能力取决于回声路径容量,即自适应滤波器的抽头个数,以及在稳定情况下是否继续更新滤波器系数。如果仅仅是在话路建立初期激活滤波器系数的迭代,而在系数收敛以后,冻结迭代过程,维持当前系数,则可以节省系统的处理能力,完成对更多信道的回声消除。在表1中,对利用C5000汇编语言实现的nLMS算法进行了一些评估。从中可以看出,如果采用单片100MIPS的C5402,则可以并行处理11条64ms的回声路径。
3.3 测试结果
按照G.168的要求,采用带限CCS信号进行了有关的测试,并将输入/输出信号的功率作图示意。均方根(RMS功率)的估计范围是0.7s。
(1)测试项目1A,稳定工作时,残余回声电平测试(NLP暂停);
(2)测试项目2B,收敛性能测试(NLP暂停)。
这两个项目可以在一次测试中完成,结果如图4所示。这里,中间一条线是输入信号的均方根,最下方一条线是估计误差的均方根,最上方一条线是两者的差值。显然,采用带限CCS信号,当滤波器稳定工作时,残余回声电平(最下方曲线)低于输入信号(中间曲线)30dB以上,达到G.168的要求。
根据G.168要求,系统工作1s后,残余回声电平低于输入信号16dB,从图4可见,实际结果略低于规范要求。其原因在于,所选的步长因子为0.001,取值较小,导致系统收敛时间较长。测试项目3A,近端低电平的双讲性能测试(NLP暂停)。
如图5所示,这里,中间一条线是输入信号的均方根,最下方一条线(残余回声)是估计误差的均方根,最上方一条线是两者的差值。残余回声的功率与近端话音相当,符合规范要求。
本文介绍了回声消除中的LMS算法,以及在DSP上如何实现,最后按照G.168的各项测试要求进行了性能检测,主要指标都符合规范要求。因为IP电话系统发展很快,回声消除器是该系统不可缺少的模块,因此如何取得最佳的性价比是业界最为关心的。LMS不是回声消除中的最佳算法,但是它具有算法简便快速?DSP开销小等优点,并且在此基础上,通过一些改进可以得到性能较好的算法。如果是应用于局端的大容量IP电话终端,可以采用性能更高的C62xx DSP芯片。
参考文献
1 德州仪器公司应用报告 SPRA188.Implementing a Line-Echo Canceller Using the Block Update and NLMS Algorithms on the TMS320C54x DSP.1997;4ITU-T G.168.Apparatus associated with long-distance telephone circuits:Digital network echo cancellers.1997;4
3 陈尚勤. 快速自适应信息处理. 北京:人民邮电出版社
4 覃景繁,韦岗.回波消除理论进展及其应用.电路与系统学报.1998;3(3)