DSP系统的自适应回声消除模块的设计

描述

引言

常见的DSP系统的结构主要由低通滤波器、放大器、模数转换器(ADC)、数字信号处理器和数模转换器(DAC)五个模块构成。DSP系统设计步骤如图1所示。

放大器

1 系统架构

本文回声消除模块的总体设计如图2所示。

放大器

如图,本文设计的DSP系统可以划分成信号输入模块、算法实现模块和信号输出模块。

信号输入模块,可分为主通道和参考通道。DSP在处理算法时需要用到远端语音输入信号和近端语音输入信号。主通道和参考通道分别采集近端语音信号和远端语音信号,经过处理转换成数字信号,同时送入到DSP中进行处理。

算法实现是自适应滤波器设计的核心部分。本文采用型号为TMS320F28335的高速信号处理器。已经转换成数字信号的主通道和参考通道信号在高速信号处理器中按照自适应滤波算法进行处理,处理完成以后送到系统的输出模块。在信号的输出模块,通过数模转换器得到模拟信号,再经过低通滤波,送给扬声器输出,由此得到经过回声消除以后的语音信号。

本文设计的自适应回声消除模块的程序设计流程图如图3所示。在各个子模块的程序设计中,通过调用集成在CCS开发平台中的芯片支持库,可以有效地简化开发流程,极大地提高工作效率。

放大器

2 软件设计

CCS(Code Composer Studio)是美国德州仪器公司(Texas Instrument,简称TI)推出的代码开发和调试软件。

自适应滤波算法的软件实现流程框图如图4所示。根据滤波器系数迭代数据以后,并不需要根据计算误差e(n)来判断计算得到的数据是否输出。而是不管得到的数据和目标数据的误差有多大,都把该数据输出,所以输出的数据有个收敛的过程,刚开始误差比较大,往后就稳定在一个较小的误差范围以内。

在CCS开发平台上搭建好开发环境,选择目标配置对象为TMS320F28335,用C语言编写实现LMS自适应算法的核心程序代码如下:

for(i=0;i《n;i++)《 p=“”》

{

sum = 0.0f;

for(j=0;j《m;j++)《 p=“”》

{

sum+=h[j]*x[i+j];

}

y[i]=sum;

error=d[i]-y[i];

for(j=0;j《nh;j++)《 p=“”》

{

h[j]=h[j]+(miu*error*x[i+j]);

}

}

首先对程序中需要用到的各个参数进行初始化,取每一次需要处理的信号序列长度N=512,滤波器的阶数M=4,步长因子miu=0.0001。用MATLAB录制一段语音从参考通道输入,作为回声消除算法的远端参考语音。同时把这段语音从主通道输入,在DSP处理器中把它缩小为原来的三分之一,作为近端回声信号。

放大器

在视频和音频数据流控制中经常用到一种被称为“乒乓操作”的处理机制。它的最大特点是接收数据流的缓存单元按照一定规律有节拍的切换,这样数据就传送的很顺畅,不会丢失,而且没有任何停顿,不会阻塞。这种方式非常适合音频和视频数据的流水线处理。在每一段单位时间内,处理器处理数据的时间不能过长,否则本段数据还没有处理完成,下一段数据就已经来了,这样就会导致数据的丢失和错乱。通过DMA实现“乒乓操作”的流程如图5所示。

放大器

3 双端检测(DTD)

双端通话指近端和远端同时说话的情况,此时远端、近端语音信号不相关,近端语音在算法处理时会表现成一个干扰信号,使得自适应滤波器性能变差,甚至发散。因此,为了使滤波器适应双端通话的情况,需要在回声消除系统中添加一个双端通话检测器(Double-Talk Detector,DTD)。通过它来区分单端和双端通话,如果不存在双端通话时,滤波器就实时更新其系数,反之,滤波器系数则停止更新。

放大器

目前,最常见的DTD算法有互相关比较法和能量比较法。

4 硬件设计

放大器

具体硬件设计如图6所示。整个硬件系统以TMS320F28335型号的DSP为核心,通过编码器TLV320AIC23b与外部进行语音信号的交换(TLV320AIC23b实现语音信号的模拟-数字,数字-模拟的转换工作)。TMS320F28335对TLV320AIC23b的控制通过I2C总线实现,其数据交换通过多通道缓冲端口(McBSP)来完成。JTAG通过仿真器连接DSP与上位机,以实现程序的下载、调试。其他模块与DSP构成能正常工作的最小系统。DSP与编码器的具体连接如图7所示。TLV320AIC23b数字音频接口与DSP之间的数据传输时序如图8所示。

放大器

在音频信号的输入端和输出端各加了一级滤波器,滤除高频信号的干扰。共有两个通道,分别获取远端参考信号和近端回声信号。

为了使编码器能够正常工作,需要对它内部的寄存器进行配置,配置是通过控制接口(I2C接口)来完成的。对应的配置命令字的前7位表示的是寄存器地址,后9位代表对寄存器的配置内容。该音频芯片提供了11个配置寄存器,如表1所示。

放大器

在本DSP系统设计中,采用+5 V的稳压直流输入作为外部引入电源,这样首先就满足了模拟电路供电需求,并且通过LM117DT3-3.3电源转换芯片将5 V转换为3.3 V来给I/O引脚及部分外围电路,再通过LM117DT3-1.8电源转换芯片将3.3 V主电源转换为1.8 V,给DSP内核供电。

5 回声消除系统调试

为了验证本文所设计的自适应滤波器的功能,设计了一个模拟实际通话环境的回声消除实验。

场景布置:房间A作为远端房间,房间B作为近端房间,两个房间的参与者利用局域网传输工具FeiQ进行语音通信。A说话的声音被计算机的麦克风捕获到,通过网络传到B房间的计算机中,此时声音从计算机中分为两路输出,其中一路直接输入到回声消除模块的参考通道,另一路则通过扬声器输出,作为远端参与者传输给近端参与者的声音信息。扬声器出来的声音和近端参与者说话的声音通过麦克风进入回声消除模块的主通道,主通道和参考通道的声音经过DSP处理后输出,输出的声音通过电脑的麦克风再经过网络传输给A房间的远端参与者。

6 结果分析

根据原理图设计PCB,最后设计好的完整的回声消除模块如图9所示。模块中包含两个输入通道,两个输出通道,一个电源接口,一个调试接口。按照上文所述的方式搭建测试环境。

放大器

第一次测试,不加回声消除算法,用录音软件录下回声大小,如图10所示。

放大器

在相同条件下,加入回声消除算法,用录音软件录得的回声波形如图11。

放大器

通过波形曲线,测得不加回声算法和加入回声算法的回声幅度大小,经过计算,回声抑制比为26 dB,对回声起到了很好的抑制作用,增强了近端和远端说话者的通话体验。

从图11中可以看出,回声的波形仍然存在,所以回声只是被抑制了,并没有被彻底消除。这是因为实际的环境没有仿真环境理想,DSP的精度限制了回声算法的收敛精度,使得最后的收敛曲线会在一个很小的范围内波动;另一方面,算法的性能也影响收敛精度,步长因子和权系数迭代公式决定了误差的波动范围。所以,提高回声抑制比的最主要方式是提高DSP的运算精度和算法的性能。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分