dsp实现语音噪声滤波设计_第1页
dsp实现语音噪声滤波设计_第2页
dsp实现语音噪声滤波设计_第3页
dsp实现语音噪声滤波设计_第4页
dsp实现语音噪声滤波设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、语音噪声滤波利用DSP实现语音噪声的滤波学生姓名:学号:目 录一、绪论1二、设计任务书5三、设计方案、算法原理说明10四、程序设计、调试与结果分析15 五、设计(安装)与调试的体会25 六、参考文献26七、附录源程序16一、绪论随着语音技术研究的深入和实际应用的增多,各种语音处理系统都面临着进一步提高性能的问题。语音增强是其中的关键技术之一。从20世纪60年代开始,对语音增强的研究就一直没有停止。20世纪70年代由于数字信号处理理论的成熟,加速了语音增强技术的研究,使该技术走向成熟。20世纪80年代以后,超大规模集成电路技术的发展为语音增强的实时实现提供了可能。语音增强即语音噪声处理的目的是从

2、带有噪声的语音信号中提取纯净的原始语音。但由于噪声信号都是随机产生的,完全消除噪声几乎不可能,因此实际语音增强的目的主要有:改进语音质量,消除背景噪声,使听者乐于接受,不感到疲倦,同时提高语音信号的可懂度, 方便听者理解。语音增强不但与语音处理理论有关,而且涉及到人的听觉和语音学。再者,噪声的来源众多,应用场合不同,它们的特性也各不相同。因此在不同的噪声场合中应采用不同的语音增强方法。语音噪声处理的应用背景语音噪声处理技术是指当语音信号被各种各样的噪声(包括语音)干扰、甚至淹没后,从噪声背景中提取、增强有用的语音信号,抑制、降低噪声干扰的技术。语音增强技术无论在日常生活中,还是在其它的领域,或

3、者对语音信号处理技术本身来说都很有应用价值。在日常生活中,我们经常会遇到在噪声干扰下进行语音通信的问题。如:使用设置在嘈杂的马路旁或市场内的公用电话,或在奔驰的汽车、火车里使用移动电话时,旁人的喧闹声、汽车和火车的轰鸣声等背景噪声都会干扰语音通讯的质量。对受话人来说, 收听夹杂着各种干扰噪声的语音,至少会引起听觉疲劳,严重一点就会错误地识别或根本无法听清对方的语音。对电话来说,干扰主要来自电话信道的回波干扰。还有一种叫无线信道干扰,它来自信道对外界干扰屏蔽能力的强弱。比如雷雨天收听收音机,会听到阵阵噪声。它是由于雷电引起信道附近强电流的骤变,导致强大的电磁波串入信道,并传送到接受端而引起的噪声

4、干扰。这些随机性的干扰也严重影响了语音的传输质量。再有一类需要用到语音增强技术的方面就是处理旧的录音磁带。由于早年录音技术不完善,磁带质量不高,加上长久存放,使磁带发生霉变、机械损伤、磁粉脱落、磁化等问题,使得重放语音产生噪声。对于那些极具研究或收藏价值的宝贵录音资料来说, 语音增强技术是一个较好的恢复手段。在通信过程中,语音质量的好坏显得格外重要。如语音质量很差,接收方难以听清对方的语音信息,轻者可能延误时间、贻误时机,重者可能错误地识别对方的语音,因而错误地下达或执行命令,导致对工作造成不可估量的损失。在机械制造领域,声音环境一般都比较恶劣,除了各种机械内部产生的噪声,工作中还不时地充满了

5、各种冲击性噪声,使得工作者的语音经常被部分或全部淹没在一片强噪声中,即使花九牛二虎之力也常常难以收听到对方准确可靠的语音信息。因此,机械制造领域也迫切需要语音增强技术。随着现代科学的蓬勃发展,人类社会愈来愈显示出信息社会的特点。通信或信息交换已成为人类社会存在的必要条件,正如衣食住行对人类是必要的一样。语音作为语言的声学表现,是人类交流信息最自然、最有效、最方便的手段之一。然而,人们在语音通信过程中不可避免地会受到来自周围环境和传输媒介引入的噪声、通信设备内部电噪声、乃至其他讲话者的干扰。这些干扰最终将使接收者接收到的语音不再是纯净的原始语音,而是被噪声污染过的带有噪声的语音信号。例如,汽车、

6、街道、机场中的电话,常受到强背景噪声的干扰,严重影响通话质量。而环境噪声的污染使得许多语音处理系统的性能急剧恶化。例如,语音识别已取得重大进展,正步入使用阶段。但目语音识别系统大多都是在安静环境中工作的,在噪声环境中尤其是强噪声环境,语音识别系统的识别率将受到严重影响。在上述情况下,必须加入语音增强系统,或者抑制背景噪声,以提高语音通信质量, 或者作为预处理器,以提高语音处理系统的抗干扰能力,维持系统性能。因此,语音增强技术在实际中有重要价值。目前,语音增强已在语音处理系统、通信技术、多媒体技术、数字化家电等领域得到了越来越广泛的应用。二、设计任务书:1、设计背景: 语音通信的目的是传递声音信

7、息。位于甲地的通信者发出的声音经语音传感器变换成为电信号,经发送端设备变换为适合传输的形式,通过传输信道传输到乙地。在乙地经接收端设备恢复出原来的语音信号,经耳机或者喇叭转换为接收者可以听到的声音信号。这就是最基本的语音通信系统,但是由于周围环境的原因,我们采集到语音信号经常含有不同程度的噪声。典型语音通信系统中的噪声来自三个方面:信号处理设备产生的电噪声及传输信道中的电噪声; 信号发送端空间环境中的音频噪声信号经麦克风变换为电信号之后,与有用信号其同传递到接收端;信号接收端空间环境中的音频噪声对信号接收者的影响。噪声是由于发生体作无规则振动产生的。在很多情况下,环境中的背景噪声是通信系统中噪

8、声干扰的主要来源。当语音信号受到背景噪声干扰时语音通信质量变得不可接受,因此要对语音信号中的噪声滤除。DSP利用直接存储器访问方式DMA(Direct Memory Access)采集数据时不打扰CPU,因此利用DMA方式工作时,CPU可以对语音信号进行实时地滤波。本设计要求利用DSP的DMA方式进行信号采集和信号输出,对语音信号进行数字编码,滤波后进行解码。2、设计要求及目标:基本部分:(1)对DMA进行初始化;(2)对A/D、D/A进行初始化;(3)编写DMA中断服务程序和滤波算法程序,实现语音信号的实时滤波;发挥部分:(1)使用DSP产生带回波的语音信号; (2)利用自适应滤波实现语音信

9、号的回波对消。3、设计思路:首先利用DSP的DMA方式对外部含噪声的语音信号进行实时采集,语音信号先经过A/D转换为数字信号,利用MCBSP的接收寄存器接收数据。编写滤波算法程序,或调用DSPLIB中的滤波函数,对信号进行滤波。滤波后的数据利用DMA方式送到D/A转换器转换为模拟信号。4、要求完成的任务:(1) 编写C语言程序,并在CCS集成开发环境下调试通过;(2) 将包含噪声的语音信号进行滤波,从扬声器输出端口输出,比较滤波前后的信号的变化;(3) 按要求撰写设计报告。三、设计方案、算法原理说明:语音噪声滤波是个很宽泛的题目,虽然从老师给的要求来看,主要是想让我们熟悉CODEC、DMA和简

10、单的数字滤波器设计,但我们认为语音噪声的处理远远不止于此。既然我们要进行语音滤波滤掉噪音,我们就要将我们的注意力聚焦在各种噪声的处理上。我们将分门别类的处理各式各样的噪声。不同的噪声有不同的处理方法。噪声的种类根据与输入语音的关系,噪声可分为加性噪声和非加性噪声两类。对某些非加性噪声而言,可以通过一定的变换转换成加性噪声。例如乘性噪声可以通过同态变换转换为加性噪声。某些与信号相关的量化噪声也可以通过随机噪声扰动的方法转换成与信号独立的加性噪声。因此,为简化讨论,下面主要分析加性噪声的干扰。语音处理中的加性噪声大体上可以分为周期噪声、脉冲噪声、宽带噪声和同声道其它语音干扰等。(1)周期性噪声周期

11、性噪声主要来源于发动机等周期性运转的机械,电气干扰也会引起周期性噪声。其特点是频谱上有许多离散的线谱。实际信号受多种因素的影响,线谱分量通常转变为窄带谱结构,而且通常这些窄带谱都是时变的,位置也不固定。必须采用自适应滤波的方法才能有效地区分这些噪声分量。(2)脉冲噪声脉冲噪声主要来源于爆炸、撞击、放电及突发性干扰等。其特征是时间上的宽度很窄。消除脉冲噪声通常可以在时域内进行,其过程如下:根据带噪语音信号幅度的平均值确定阈值。当信号幅度超出这一阈值时判别为脉冲噪声。然后对信号进行适当的衰减, 就可以完全消除噪声分量,也可以使用内插方法将脉冲噪声在时域上进行平滑。(3)宽带噪声宽带噪声来源很多,热

12、噪声、气流(如风、呼吸)噪声及各种随机噪声源、量化噪声也可视为宽带噪声。宽带噪声与语音信号在时域和频域上基本上重叠,只有在无话期间, 噪声分量才单独存在。因此消除这种噪声比较困难。对于平稳的宽带噪声,通常可以认为是高斯白噪声。(4)同声道语音干扰在实际生活中经常遇到很多人同时说话的情况,此时不需要的语音就形成了同声道干扰。入耳可以根据需要分辨出其中某个人的声音,这种能力来源于人的双耳输入效应和人类语音中包含的“声纹特征,这是人体内部语音理解机理的一种感知能力表现。通常情况下语音经双耳输入,人们根据两路输入的不同时延特性进行分离。同时由于人的发声器官生理结构的差异,每个人都有自身独特的“声纹,因

13、此即使双耳效应不显著(例如单声道传输时)人耳也可以借助声纹对信号进行分离。(5)背景噪声背景噪声破坏了信号原有的声学特征及模型参数,因此减弱了不同语音间的差别, 使语音质量下降,可懂度降低。强噪声会使人产生听觉疲劳,从而影响人耳的听觉特性。同时,较强的背景噪声也会使讲话人的发音方式发生变化,即使发相同的语音,其语音的特征参数也会与安静环境下的发音有所不同。这种效应称为Lombard效应。(6)单频噪声它主要源于无线电干扰。因为电台发射的频谱集中在比较窄的频率范围内,因此可以近似地看作是单频性质的。另外,像电源交流电,反馈系统自激振荡等也都属于单频干扰。它的特点是种连续干扰,并且其频率是可以通过

14、实测来确定的,因此在采取适当的措施后就有可能防止。以上的噪声有的离我们很远,有的对我们来讲太难。经过我们的总结,我们准备将重点放在语音通信中的三种噪声上。1、信道干扰它来自信道对外界干扰屏蔽能力的强弱。比如雷雨天收听收音机,会听到阵阵噪声。它是由于雷电引起信道附近强电流的骤变,导致强大的电磁波串入信道,并传送到接受端而引起的噪声干扰。这些随机性的干扰也严重影响了语音的传输质量。2、回波噪声声回波是指在语音通信中,远端的语音信号通过近端扬声器-房间-近端麦克风路径,又随着近端说话者的声音一同通过通信线路传播到了远端。然而,远端听话者是不愿听到自己声音回波的。3、脉冲式噪声 这种噪声主要是仿真当我

15、们语音通话时突然外界传来巨大声响的情况,比如在施工现场。这种情况下,听者的听觉和心情会被突入的巨大声响严重损害。应对方式:对于信道干扰,往往会上尖峰或者工频脉冲。这种噪声的特点就是与语音信号的频率差异很大。所以,我们应用滤波器将4000HZ频率以上的声音滤除,即可一定程度上消除电噪声或其他信道干扰。 对于回波噪声就不能应用这种方法,因为噪声本体就是声音信号,频率于我们的语音信号一样,对于这种噪音,我们应用自适应滤波方式进行滤除。 对于脉冲式,我们将应用阈值滤波的方法。1、 信道干扰滤波部分:首先利用DSP的DMA方式对外部含噪声的语音信号进行实时采集,语音信号先经过A/D转换为数字信号,利用M

16、CBSP的接收寄存器接收数据。编写滤波算法程序,或调用DSPLIB中的滤波函数,对信号进行滤波。滤波后的数据利用DMA方式送到D/A转换器转换为模拟信号。这就是我们的设计思路。具体的设计方案原理图如下。模拟输入信号通过DSK的MIC端口输入,经A/D转换,然后到达DSP的DMA通道2,DSP接收到信号后,调用中断服务程序进行滤波,滤波后的信号可以在CCS上显示,也可以通过DMA通道3将信号输出到D/A转换器,经D/A转换后从SPEAKER端口输出。(1)直接存储器访问DMA直接存储器访问(Direct Memory Access)是C54x DSP非常重要的片上外设,DMA控制器可以在不影响C

17、PU的情况下完成数据的传输,因此数据传输速度快,在要求信号实时采集和处理的系统中常采用DMA方式进行信号采集和传输。C5402有6个可独立编程的DMA通道,每个DMA通道受各自的5个16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、单元计数寄存器DMCTR、同步事件和计数寄存器DMSFC、发送模式控制寄存器DMMCR。目的地址寄存器DMDST规定DMA要传送数据目的地址和首地址。单元计数寄存器DMCTR规定DMA传送数据的个数为DMCTR寄存器的值加1。同步事件和桢计数寄存器DMSFC规定DMA传送数据的同步事件类型和传送一块数据所含桢信号的个数。发送模式控制寄存器DMMCR

18、规定DMA通道的传输模式,当DMA工作在自动初始化模式时,CPU在一个DMA事件完成后自动装载下一个DMA初始化设置并继续进行数据传送。DINM位和IMOD位设置DMA中断产生方式。CTMOD位设置发送计数模式控制,CTMOD位为0时,DMA工作在多桢模式,CTMOD位为1时,DMA工作在自动缓冲ABU模式。SIND位和DIND位用来设置源地址和目的地址的自动调整方式。此外,DMA的6个通道还受通道优先级和使能控制寄存器DMPREC控制。本实验利用DMA通道2与MCBSP1通道结合来读取A/D转换器的数据,利用DMA通道3与MCBSP1通道结合来将处理后的数据发送至D/A转换器。选择MCBSP

19、1通道的接收寄存器DRR11(41H)为DMA传送数据的首地址,并选择DMA源地址工作在不调整方式,选择MCBSP1接收事件为DMA同步事件,以实现DMA和MCBSP的结合。A/D转换器的数据按MCBSP1的设置被传送到DSP内部接收寄存器DRR11中,再由DMA通道2将DRR11中的数据读到指定数据存储区inp_buffer中完成数据采集。DMA在传送外部来的数据时不会影响CPU的正常运行,当DMA通道2采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道2可以按照设定继续采集下一组数据,实现了数据采集与CPU处理的并行操作。当一组数据处理完成后,

20、将数据存放在数据存储区out_buffer中,选择out_buffer为DMA通道3的首地址,并选择源工作地址工作在不调整方式。选择MCBSP1通道的发送积存器DXR11(43H)为DMA通道3传送数据的目的地址,并选择DMA源地址工作在不调整方式,选择MCBSP1接收事件为DMA同步事件,以实现DMA和MCBSP的结合。在CCS集成开发环境中,与DMA相关的头文件有regs54xx.h和dma54xx.h。在这两个头文件中,定义了DMA的寄存器资源、使用方法和DMA寄存器的地址和基本访问方式,以及寄存器的各个比特域和访问方法,因此需要进行C源程序的开始处包含这两个头文件。输入信号经A/D转换

21、后,利用DMA通道2进行传输进入DSP处理,而滤波后的信号输出利用了DMA通道3进行传输进入D/A转换器等输出,因此需要对DMA通道2和通道3进行初始化配置。(2)A/D和D/A转换器本实验要用到A/D和D/A转换器。A/D转换器能够将接收的语音信号(模拟信号)转化为数字信号,供CPU进行处理;D/A转换器能够将数字信号转换为语音信号送SPEAKER端口输出。要使用A/D和D/A转换器,必须首先对A/D和D/A转换器进行初始化设置,即设置A/D转换器的工作模式(15+1bit模式,16bit模式)、输入增益(0dB,6Db,12dB)以及抽样频率(8000Hz,16000Hz)等。2、回波去噪

22、部分:初始化FIR延迟输出数组dbuffer_h、FIR输出数组、自适应滤波器系数矢量coff_w和自适应滤波器的输出数组out_w以及DSK板之后,采集输入的语音信号,根据模式的不同进行不同的处理以输出不同的信号来进行效果的比较。我们的做法是利用设置参数mode来改变板子的功能。mode=1时信号通过FIR滤波器后产生回声,为使现象更明显可以附加一个延迟;mode=2时用自适应滤波器逼近FIR滤波器以使之输出近似的信号,用信号通过两个系统产生的信号之差(即剩余回声)来调整自适应滤波器的系数,使剩余回声逐渐收敛于0。(1)自适应滤波器的基本原理:自适应滤波原理:利用前一时刻获得的滤波结果,自动

23、调节现时刻的滤波器参数,以适应信号和噪声的未知特性,从而实现最优滤波。自适应滤波器主要由系数可调的数字滤波器和调整滤波器系数的自适应算法两部分构成自适应滤波器的一般结构如图l所示自适应滤波其最重要的性能是能有效地在未知环境中跟踪时变的输入信号,使输出信号达到最优。因而在电信、雷达、声纳、实时控制以及图像处理等领域都有成功的应用。常规滤波器具有特定的特性,对于输入信号根据这个滤波器特性产生相应的输出。也就是,先有了滤波器构成的权系数,然后决定相应输出值。但有些实际应用往往是反过来要求的,即对滤波器输出的要求是明确的,而滤波器特性是无法预先知道的。例如长话系统,回波相消器的理想输出是无回波信号,这

24、个要求是明确的,而系统本身却不能一开始就确定下来,因为它取决于长话系统话路传输条件的变化,像这样的应用技术就必须依赖自适应滤波技术。图l中d(n)为期望响应,x(n)为自适应滤波器的输入,y(n)为自适应滤波器的输出, e(n)为估计误差,P(n)= x(n)-y(n)前置级完成跟踪信号的选择,确定是信号还是噪声;后置级根据前置级的不同选择对数字滤波器输出作不同的处理,以得到信号输出自适应滤波器的滤波器系数受误差信号e(n)控制,根据e(n)的值和自适应算法自动调整(2)回声消除器的基本原理:回声消除的基本原理是采用一个自适应滤渡器自动识别回声通道,通过自适应滤波算法的调整,使其冲激响应与实际

25、回声路径逼近,从而得到回声预测信号y(n),再将预测信号从近端采样的语音信号d(n)中减去,即可实现回声消除。自适应算法要求收敛速度快、计算复杂度低、稳定性好和失调误差小。虽然许多自适应算法在理论上实现回声消除都是可行的,但通常采用的是较简单的算法。例如广泛应用的LMS自适应算法。(3)LMS算法:本设计中自适应算法是根据最小均方误差判据来设计的,即理想信号与滤波器输出之差的平方值的期望值最小,并且根据这个判据来修改权系数。均方误差表示为Ee2(n)=Ed(n)-y(n)2对于横向结构滤波器,代入y(n)的表达式,有= Ed2(n)+WT(n)RW(n)-2 WT(n)P其中,R = EX(n

26、) XT(n)是N*N的自相关矩阵,它是输入信号采样值间的相关性矩阵。P = Ed(n) X(n)为N*1互相关矢量,代表理想信号d(n)与输入矢量的相关性。在均方误差达到最小时,得到最佳权系数W*=w0*, w1* , w2*, , wN-1*T。它应满足下列方程=0即 R*W-P=0显然,x(m)=x(n)x(n-m)是x(n)的自相关值,xd(R) =Ex(n)d(n-k)是x(n)与d(n)的互相关值。在有些应用中,把输入信号的采样值分成相同的段(每段称为一帧),再求出R和P估计值,以得到每帧的最佳权系数。这种方法称为块对块自适应算法。如语音信号的线性预测编码LPC,就是把语音信号分成

27、帧进行处理的。R和P的计算,要求出期望值E,在实际运算中不易实现。为此,可通过下式进行估计:=用以上方法获得最佳W*的运算量很大,对于一些在线或实时应用的场合,无法满足其时间要求。大多数场合使用迭代算法,对每次采样值求出较佳权系数,称为采样值对采样值迭代算法。迭代算法可以避免复杂的R-1和P的运算,又能实时求得式的近似解,因而切实可行。LMS算法是以最快下降法为原则的迭代算法,即W(n+1)矢量是W(n)矢量按均方误差性能平面的负斜率大小调节相应一个增量。W(n+1)= W(n)-u(n)这个u是由系统稳定性和迭代运算收敛速度来决定的自适应步长。(n)为n次迭代的梯度。对于LMS算法,(n)是

28、Ee2(n)的斜率。由式W(n+1)= W(n)-u(n),产生了求解最佳权系数的两种方法,一种是最陡梯度法。其思路为,设定初始权系数,用上式迭代公式计算,直到W(n+1)与W(n)误差小于规定范围。其中(n)的E计算,可用估计值表达式式中K的取值应该足够大。如果用瞬时-2e(n)X(n)来代替上式对-2E e(n)X(n)的估计运算,就产生了另一种算法随机梯度法,即Widrow Hoff的LMS算法。此时迭代公式为W(n+1)= W(n)+2u e(n)X(n)以上讨论的自适应算法都是基于Widrow Hoff的LMS算法。上式的迭代公式,假定滤波器结构为横向结构。对于对称横向型结构,也可推

29、出类似的迭代公式W(n+1)= W(n)+2u e(n)X(n)+ X(n-N+1) 其中,X(n)=,而X(n-N+1)=。LMS算法流程图自适应控制 自适应控制可以看作是一个能根据环境变化智能调节自身特性的反馈控制系统以使系统能按照一些设定的标准工作在最优状态。一般地说,自适应控制在航空、导弹和空间飞行器的控制中很成功。可以得出结论,传统的自适应控制适合(1)没有大时间延迟的机械系统;(2)对设计的系统动态特性很清楚。但在工业过程控制应用中,传统的自适应控制并不如意。PID自整定方案可能是最可靠的,广泛应用于商业产品,但用户并不怎么喜欢和接受。传统的自适应控制方法,要么采用模型参考要么采用

30、自整定,一般需要辨识过程的动态特性。它存在许多基本问题(1)需要复杂的离线训练;(2)辨识所需的充分激励信号和系统平稳运行的矛盾;(3)对系统结构假设;(4)实际应用中,模型的收敛性和系统稳定性无法保证。另外,传统自适应控制方法中假设系统结构的信息,在处理非线性、变结构或大时间延迟时很难。一言以蔽之:就是利用LMS的方式使以前的波形信息为反馈提供给适合的参数已达到滤去噪声的作用。3、脉冲式滤波:我们的方式先求个点的平均值,然后根据实际,大于这个平均值的5倍以上的信号幅度进行衰减,这样可以在时域直接进行处理。进而得到需要的声音,将乱入的声音滤掉,保护听者。4、小创意:变调音调转移使用同一个存储的

31、声音片断,可以帮助产生其他频率的音符。正弦信号的频率与周期成反比,所以抽样间隔变大的话,就相当于频率变大。 运用此原理,我们对dma256数据进行抽样,若抽样间隔大于,则抽样频率提高,声调提高;若间隔小于,则抽样频率降低,声调降低。四、程序设计、调试与结果分析:1、调试过程:a、首先设计FIR滤波器。FIR滤波器的算法可以由MATLAB来设计。打开MATLAB,在命令窗中输入FDAtool,打开滤波器设计与分析工具。因为语音信号的频率成分主要分布在300Hz到3400Hz,所以我们只要设计4000Hz的低通FIR滤波器就可以实现对语音信号中掺杂的噪声的滤除。在FDA中选择带低通FIR滤波器,阶

32、数选择15,抽样频率选择16kHz。就可以设计所要的滤波器了。然后将设计好的结果导出为fir.c文件。设计好滤波器后,还要进行对A/D和D/A以及DMA的初始化,并编写主程序和中断服务程序,以及控制调用中断时程序流向的中断向量表,详细内容请见程序清单。由于DSK5402板上存储器分配方式基本相同,所以 .cmd文件可以采用其他程序中的 .cmd文件。b、信号滤波部分:(1)通过MIC向计算机输入语音信号。但此种方式不能很好的听出声音到底有什么变化,因为其实板子的噪声即不准。所以最好是用输入正弦波再利用CCS看图形的方式。可是,咱们的板子本身有问题,经过板子后会加上噪音图形无法分辨!(2)编译滤

33、波工程之前先在CCS下选择Tools/Linker Configuration,出现连接器配置对话框,选择Use the Visual Linker,然后再对程序进行编译。(3)编译通过则会产生Firlab.out文件,并可执行文件Firlab.out下载到DSP中。(4)在中断服务程序dmac2isr.c中的有效行上设置断点,以便观察图形。(5)选择Debug/Animate,激活程序。Animate=Run-Halt-Run。(6)在CCS中选择View/Graph/Time/Frequency,出现图形属性对话框。图形属性对话框中,Start Adress设置为输入变量名、Acquisi

34、tion Buffer Size为十进制256、Display Data Size 为十六进制、DSP Data Type为16位有符号整形数,其它设置不变。确定后出现如下图所示时域波形。c、扩展回波对消部分:(1)由麦克将产生的语音信号输入到J5端口。J6端口接入音响或耳机,对比处理前后的语音信号。(2)编译滤波工程之前先在CCS下选择Tools/Linker Configuration,出现连接器配置对话框,选择Use the text Linker,然后再对程序进行编译。(3)通过设置mode的值,对不同算法处理过的信号分别观察。0代表产生输入原声;1代表产生带回波噪声的声音;2代表用自

35、适应消除回波后的声音;3代表产生添加正弦频率噪音的信号;4代表用自适应方法滤除正弦噪音后的声音;5代表音调降低;6代表近音调升高;7代表滤除脉冲噪音(4)选择Debug/Animate,激活程序。Animate=Run-Halt-Run。(5)在程序运行过程中,输入语音信号分别进行语音输出观察。2、结果分析:(1)理论上老师给的滤波输入输出信号:我们的:女变男:明显看出有失真。五、设计(安装)与调试的体会:感想: 这次的dsp实验我们可以用辛酸来形容,500多人排不到20块板子,必须要起个大早才可以用到板子,所以我们的用板时间真的不是太多.当然有我们前几天的大意这方面的因素,后来当我们把理论知

36、识研究到一定深度的准备实践的时候,实验室已经门可罗雀了,唉 我们的辛酸的借板子的历程就开始了.虽然资源不够,但这同样给与了我们提高,锻炼了我们非常娴熟的调试技术,可以用神速来形容我们俩生成工程的速度!所以,什么样的情况都是一种经历,这种艰苦的经历对于我们更是一种锻炼和提高,对于我们这种从小没怎么吃苦的孩子们也是一次额外的经历,也许到了我们老了,还会想起交大小学期排板子的经历.那时我们俩要是一起聊天,一定会相视一笑的因为本课题的基本语音滤波部分杨老师在课上给予了我们讲解,因此我们就在原本的基础上进行改善和增加拓展。因为课题要求是进行语音滤波,因此我们一开始从通道的初始化使能着手,然后了解到整个程

37、序模板中真正对采集到的音频信号进行滤波的是中断服务程序,这与我们学得单片机有惊人的类似. 所以这方面的初始化,我们还是掌握的不错的,但是dma寄存器实在是太多了,我们只能照着书一点一点的翻,一点一点的写,当然书上的初始化程序还是给的很细,我们也借鉴了很多,但我们想,这些都是死的.我们没有必要在这上面浪费很多时间,还是以理解为主吧之后就是研究中断中具体的滤波程序了,我们是从噪声的种类角度下手,一点一点的进行的,考虑了很多噪声,这在报告的前面部分中也都提到了,然后我们就研究具体的解决办法,一步一步地下手.再查找具体的滤波函数的时候,我们也发现我们的数学水平真的还欠缺,或者说我们很强的耐心看很长的数

38、学公式,这在日后的学习过程中还待加强阿接着,我们在原来的基础上,想到了变声。我们最初想对实时滤波处理过后的个语音样本点间的距离进行适当的拉长和压短,这样应该就会产生一定的变声。因为女生普遍比男生发生的频率高,这样音调高,所以对语音样本点间的距离进行压缩后,就能将一段男声近似变成“女声”;同理,对语音样本点间的距离进行拉长后,这样频率变低,就相应地实现女声变“男声”。最后经过反复实验,我们做出了近似变声功能。然后,我们用自适应滤波器滤除回波。比对了几种自适应滤波器后,我们最终决定采用滤波器进行滤波,最后我们用了将近一天的时间的参数使用和定义搞清楚。一开始我们遇到了不小的麻烦,不管怎么样都不出声,

39、最后我们想到参考资料上介绍的是用采集方式,数据一个一个的采集,而我们用的是传输,是一串一串的采集,所以我们猜想是不是自适应滤波器的步长参数设置得过低,使得其自适应的过程中容量不够,因此我们尝试着将步长由原来的该为,最后一试还真的实现了回波消除。用板的一个语音输入端模拟一方的电话用户,而再用软件产生一个接近的正弦信号模拟另一端用户传来的语音,将这两端传来的信号叠加在一起后就类似于我们日常通话中能听到自己回声的现象,再采用自适应滤波,滤除一方信号后就能实现回声消除!最后我们自己模仿了脉冲噪音的形式,自己录制了一段声音,然后想在MODE7中应用阈值滤波法滤波,但是因为时间有限,主要是因为板子太少,在

40、我们答辩以前,我俩还没有利用板子尝试过,但是我们的原理很清晰,并准备在答辩时现场尝试。综上,就是我们对这次实验的感想,最后我们表达一下对小学期的情感.虽然说这小学期比上课还要累,但我们从理论逐步向实践过渡了,把两门信号处理的大课的知识结合到实践中去做了.我们不再是只会算题的学生了,更像是两个工程师,虽然研究的东西不太高端,但对我们应经是受益匪浅了,用一句玩笑来形容就是,这些实践为我们回去和朋友吹嘘自己在大学学到了什么提供了很强的说服力.最后的最后,感谢杨老师为我们上课打下的最原始的基础,感谢那些借我们板子的可爱的同学们,更要感谢学院开设这么有意义的课.六、源程序代码1、FIRlab.C/*/*

41、 FIRlab.C AIC,McBSP,DMA initialization for FIR lab Filter */ /* */* Goal: This code performs the following functions: */*- toggle the three LEDs on the DSK */*- setup AIC (CODEC) parameters */* - initialize DMA Channel (CH2-input) */*- turn on interrupts */*- run forever (waiting for DMA interrupts

42、to transfer data) */* */* Author: Scott Bland Date: 03/20/2000 */*/ /*/* Include Files */*/#include <type.h>#include <board.h>#include <codec.h>#include <string.h>#include <dma54xx.h>#include <regs54xx.h>#include <intr.h>#include "timer.h"#include

43、<dsplib.h>#include <math.h>/*/* Function Prototypes */*/void delay(s16 period);extern void DMAC2ISR();/*/* Global Variables */*/HANDLE hHandset;unsigned int dmsefc, dmmcr, dmctr, src_addr, dst_addr;unsigned int dmpre, dmsrcp, dmdstp, dmidx0, dmidx1, dmfri0, dmfri1, dmgsa, dmgda, dmgcr, d

44、mgfr;/* Create specific data section for buffer (symbol, section_name) */#pragma DATA_SECTION(inp_buffer,"audio_buffer");int inp_buffer0x200;/* Create specific data section for buffer (symbol, section_name) */#pragma DATA_SECTION(out_buffer,"outt_buffer");int out_buffer0x200;/* C

45、reate specific data section for coeffiecients */#pragma DATA_SECTION(coeffs,"coefficients");/* Low Pass Filter fs=16000 fc=4000Hz*/ int coeffs16= -79, -136, 312, 654, -1244, -2280, 4501, 14655, 14655, 4501, -2280, -1244, 654, 312, -136, -79; /* High Pass Filter */ / int coeffs16=-120,5245,

46、-3421,2451,-11216,40,-24657,29610,29610,-24657,40,-11216,2451,-3421,5245,-120; /* Band Pass Filter */ /* int coeffs16=921,-2494,137,-3654,-2485,-2063,-9015,16165,16165,-9015,-2063,-2485,-3654,137,-2494,921; */* Band Stop Filter */* int coeffs16=491,165,-2159,772,-6697,10044,648,12297,12297,648,10044

47、,-6697,772,-2159,165,491; */ /* All Pass Filter */* int coeffs16 =32767,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; */int highpass16=-848, -1129, -1496, -2000, -2754, -4053, -6980, -21279, 21279, 6980, 4053, 2754, 2000, 1496, 1129, 848; /* Create specific data section for delay buffer */#pragma DATA_SECTION(dela

48、ybuff,"delayb");int delaybuff16=0; int delaybuff116=0;/* declare and initialize two variables for DMAC ISRs */int frame=0; int flag=0;int temp; int a,b;int bf10x3000=0;/* delayptr holds the address of the start of the delay buffer */ int *delayptr1 = &(delaybuff0); int *delayptr2 = &am

49、p;(delaybuff10); interrupt void DMAC2ISR();/*/* MAIN */*/void main() s16 cnt=2;a=8;b=6;/* These are the items that BIOS will set when we use it */ BSCR = 0x8806; XPC = 0; PMST = 0xA0; brd_set_cpu_freq(100); TIMER_HALT(0); brd_set_wait_states(7, 7, 9); TIMER_RESET(0); IMR=0;/禁止所有中断/* - */if(brd_init_

50、bios() return; while(cnt-)brd_led_toggle(BRD_LED0);/切换LED指示灯的显示状态delay(1000);brd_led_toggle(BRD_LED1);/切换LED指示灯的显示状态delay(1000);brd_led_toggle(BRD_LED2);/切换LED指示灯的显示状态delay(1000); /* Open Handset Codec */ hHandset = codec_open(HANDSET_CODEC); /* Acquire handle to codec */* Set codec parameters */ co

51、dec_dac_mode(hHandset, CODEC_DAC_15BIT); /* DAC in 15-bit mode */ codec_adc_mode(hHandset, CODEC_ADC_15BIT); /* ADC in 15-bit mode */ codec_ain_gain(hHandset, CODEC_AIN_6dB); /* 6dB gain on analog input to ADC */ codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); /* -6dB gain on analog output from DAC */ codec_sample_rate(hHandset,SR_16000); /*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论