回波的产生和抵消概要

上传人:s9****2 文档编号:498105574 上传时间:2023-03-28 格式:DOCX 页数:39 大小:955.09KB
返回 下载 相关 举报
回波的产生和抵消概要_第1页
第1页 / 共39页
回波的产生和抵消概要_第2页
第2页 / 共39页
回波的产生和抵消概要_第3页
第3页 / 共39页
回波的产生和抵消概要_第4页
第4页 / 共39页
回波的产生和抵消概要_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《回波的产生和抵消概要》由会员分享,可在线阅读,更多相关《回波的产生和抵消概要(39页珍藏版)》请在金锄头文库上搜索。

1、DSP课程设计实验报告回波的产生和抵消院(系):电子信息工程学院指导教师:杨恒小组成员:莫凌 08211149成浩凡 08223002一)实验目的二)设计任务及要求三)设计方案、算法原理说明四)实验主程序五)实验调试结果以及分析六)实验基本操作七)参考文献八)实验感想一) 实验目的1、掌握 CCS 环境的使用2、掌握 TMS320C5402DSP 芯片的基本知识3、掌握基于 CCS 编程设计的方法(1) 对DMA进行初始化;(2) 对A/D、D/A进行初始化;(3) 编写DMA通道传输程序,实现数据实时采集和实时地输出;(4) 设计自适应滤波算法,或调用DSPLIB中的自适应函数,实现信号的自

2、 适应滤波。(5) 滤波后信号实时输出的同时,将数据存放在数据文件中;(6) 利用自适应滤波实现语音信号回波对消。4、掌握利用MATLAB产生FIR滤波器的基本方法(二)设计任务及要求回波是由于语音信号在电话网中传输时阻抗不匹配而产生的。在模拟电路 里,由于二四转换混合线圈不平衡造成电流泄露,一部分信号能量被反射回信 号源会产生回波。回波的影响因通信距离和某些网络设备的因素而加剧,在语音 识别应用里,回波也会影响信号检测的准确性,尤其是在多方电话会议中,由于 信号经过多次阻抗不匹配的反复传播,回波对通信的影响会更加严重。为了去除 回波的影响,现代处理回波的技术主要是基于预测滤波器实现的,近端的

3、通信设 备可以采用自适应滤波器。自适应滤波不仅能够选择信号,而且能够控制信号的特性。自适应滤波器具 有跟踪信号和噪声变化的能力,它的系数能够被一种自适应算法所修改。利用DSP 可以实时地对信号进行自适应滤波oDSP利用直接存储器访问方式DMA采集数据时 不打扰CPU,因此CPU可以对信号进行实时地滤波。本设计要求利用DSP的DMA方式 进行信号采集和信号输出,同时对外部输入的信号进行数字滤波,完成对电话线 路中较为严重的回波进行抵消,实现电话线路中通话清晰。对输入的语音信号产生对应的回波,使说话者能听到自己的说话声和多重回 声,类似于山谷中大声说话的效果。然后编写自适应滤波算法程序,或调用DS

4、PLIB中的dims自适应滤波函数对产生的回波进行滤除,使说话者只听到与自 己同步的语音,而没有回声。具体到实验操作上:首先对外部信号进行实时采集,对外部模拟信号先进 行A/D转换,利用MCBSP的接收寄存器接收数据。对其接收到的数据进行衰减并进 行一定的延时(以产生较明显的多重回声效果)以产生回声。再采用一个自适应 滤渡器自动识别回声通道,通过自适应滤波算法的调整,使其冲激响应与实际回 声路径逼近,从而得到回声预测信号y(n),再将预测信号从近端采样的语音信号 d(n) 中减去,即可实现回声消除,比较滤波前和滤波后信号的差异来衡量自适应 滤波器的性能。自适应滤波算法程序可由自己编写,或调用D

5、SPLIB中的Ims滤波 函数。(三)设计方案、算法原理说明一理论基础1. 回声产生原理根据回声的产生原因,将回声分为两类:电学回声和声学回声。 电学回声:决定电学回声影响程度的参数之一是混合电路的损耗,也就是说有多 少发射信号被反射回来。一般情况下,损耗至少为6dB0参数之二是信道延迟, 如果信道延迟超过十几毫秒(一般是长途电话或者卫星电话),那么就会对讲话者 产生很大干扰0图1 声学回声产生机理2. 回声消除基本原理一般回声消除算法通过自适应滤波来完成,其基本原理如图2所示。其中, 远端信号x (k)通过回声信道h产生回声y(k),近端信号d(k)是由回声y(k)混合近 端声音信号(可包含

6、噪声信号)得到。通过使用M抽头的FIR自适应滤波器hh来模 拟回声信道h,可以使所得y(k)通近回声信号,进而达到回声消除的目的。由此 可见,回声消除的关键是自适应地调整h“使其接近h,可通过现有的各种自适应 滤波算法实现。图2 回声消除器的基本原理图声学回声消除的功能原理框图如图3所示:远端信号斗回声通道图3回声消除器原理框图3. LMS算法本实验采用LMS算法,即最小均方误差算法设计的自适应滤波器进行未知系 统识别,以将回声信号滤除。LMS算法的一个显著特点就是它的简单性。此外, 它不需要计算有关的相关函数,也不需要矩阵求逆运算。事实上,正是因为LMS 算法的简单性,使得它成为其他自适应滤

7、波算法的参照标准。如图4所示,首先有一个横向滤波器(围绕它构造LMS算法):该部件的作用 在于完成滤波过程。其次,有一个对横向滤波器抽头权值进行自适应控制过程的 算法。横向滤波器各部分的细节如图5所示。抽头输入u(k),u(k-1), ,u(k-M+1) 为MX1抽头输入向量z(k)元素,其中M+1是延迟单元的个数;相应的ho(k), hi(k), , hm-1 (k)为Mx丨抽头权向量h(k)的元素。通过LMS算法计算这个向 量所得的值表示一个估计,当迭代次数趋于无穷时,该估计的期望值可能接近维 纳最优解,在滤波过程中,期望响应d(k)与抽头输入向量z(k) 一道参与处理。在 这种情况下,给

8、定一个输入,横向滤波器产生一个输出y(k)作为期望响应d(k) 的估计。因此,我们可把估计误差e(k)定义为期望响应与实际滤波器输出之差, 如图4所示。估计误差e(k)与抽头输入向量z(k)都被加到自适应部分,因此围绕 抽头权值的反馈环是闭环的。图5 横向渡波器结构框图通过以上分析可知,远端的信号通过回声通道产生回声信号dk,该信号一般 为远端信号的衰减和延迟。远端信号通过自适应滤波器产生回声预测信号yk。在k时刻,它们之差为剩余回声信号:ek=dk-yk (1)用它来控制LMS自适应滤波器的系数w(n)w(n +1) = w(n) + 2卩 xek xin(n)(2)其中U为自适应步长因子,

9、一般取0 U 1,可视为常数k时刻滤波器的输出为:y(n)二 1 w(n) * in(n - i)i=0以上(1),(2),(3)三个方程是LMS最小均方误差算法的核心方程,也是C语言编程的依据。LMS算法流程图如下图所示:二理论基础的实验实现1、回声信号的实现由于实验条件限制(实验室的 DSP 板只有 1 个输入端),不能像实际线路中 那样有近端回波、远端回波,所以在这个实验中简化了这个回声产生。即将麦克 输入的语音信号叠加上述麦克输入语音信号的延时衰减后的信号,用此混合信号 模拟真实的回波信号。因此回声通道的传输函数为:H(z)二sxz-m (S为衰减, M为延迟点数)听到的回波是混合信号

10、,此时不仅能听到自己的声音,也能听到 几个衰减后叠加的回声,该回声为近端输入的延迟和衰减。回波产生程序如下:while (!MCBSP_RRDY(HANDSET_CODEC) ; /codec 句柄如未准备好则等待 dk = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /从 ADC 读数 bfi=dk;/放入缓冲区if(i=10000)i=0;*(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = dk+bfi+1/2; /延迟+衰减 为了达到最好的效果,我们认为在产生回波的时候,关于输入信号的延时叠加, 可以采用多层次,多

11、延时的方案。而在调试过程中,我们的确采用了这样的方式, 这样不仅能及时听到及时的语音信号,而且能听到震荡式能量逐渐的回声,效果 不错。2、回声的消除( 1 ) C 语言程序回声的信号已经产生,现在需要利用LMS的算法实现对已合成信号的滤波,通过对于LMS算法的理解,我们查询了相关的资料,尝试着写出了一个可近似表 示LMS算法的C语言程序。由C语言实现LMS算法的C语言程序如下所示:double lms (double w,double x,double dk,double ek) /移植到CCS 中的 lms 算法s16 i;double uek,yk;yk=0;for(i=0;iN;+i)y

12、k=yk+wi*xi;ek=dk-yk;uek=2*mu*ek;for(i=0;iN;i+)wi=wi+uek*xi;return(ek);调试之后发现没有达到预期的理想效果。想想原因可能是采用Ims算法效率 不高,产生很大延时,也产生了很大的噪声。然而算法的效率与滤波器的长度有 关,因此应当适当减小滤波器的长度;同时也应该适当的提高FIR滤波器的阶数。 基于上述分析作出以下程序改进:(2)调用DSPLIB中的自适应函数替换原有的LMS算法的C语言实现程序,用CCS的diplib库中的函数short dlms(PARAM)取代自定义的lms()函数,同时用dsplib库里的函数short fi

13、r(PARAM)产生回声通道的输出信号(也就是用预定阶数的FIR滤波器模拟回声 通道),该输出信号作为自适应滤波器的理想输出信号,对之进行逼近进而得到预 定结果。Dsplib库中的dlsm函数和fir函数的子程序:Dlsm.h的程序如下,路径:C:tic5400dsplibEXAMPLESDLMS/ / / Filename:dlms_t.c/ Version: 0.01/ Description: test for dlms routine/ / /#include #include #include #include test.hshort i;short eflagr= PASS;sho

14、rt eflagh= PASS;void main(void)/* clear */for (i=0;iNH;i+) hi =0; /clearcoeffbuffer(optional)for (i=0;iNX;i+) ri =0;/ clear output buffer(optional)for (i=0; iNH; i+) dbufferi = 0; / clear delay buffer (amust)/* compute */ dlms(x,h,r,&dp,des,STEP, NH, NX);/* test */eflagr = test(r, rtest, NX, MAXERRO

15、R); / for r eflagh = test(h, htest, NH, MAXERROR); / for h if (eflagr != PASS) exit(-1);if (eflagh != PASS)exit(-1);return;FIR.h的程序如下,路径:C:tic5400dsplibEXAMPLESFIR/ / / Filename:fir_t.c/ Version: 0.01/ Description: test for fir routine/ / /#include #include #include #include test.hshort i;short eflag1= PASS;short eflag2= PASS;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号