




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSP系统课程设计音频信号多种类型噪声滤波分析与处理任课老师: 钱满义 学 院: 电信学院 班 级: 姓 名: 学 号: 142 同组成员班级: 同组成员姓名: 同组成员学号: 142 2017年4月20日目录:设计背景3设计要求4设计思路及原理5设计思路5设计原理6Matlab实验9噪声类型分析过程9噪声滤除方法11Matlab仿真过程11Matlab结果分析总结22DSP设计程序运行及结果22运行结果22运行结果分析26滤波算法程序段27设计过程中遇到的问题及解决方法29DSP设计感想30参考文献32设计背景 随着信息时代和数字世界的到来,数字信号处理已成为如今一门极其重要的学科和技术领域
2、。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。数字信号处理(DSP)包括两重含义:数字信号处理技术(Digital Signal Processing)和数字信号处理器(Digital Signal Processor)。数字信号处理(DSP)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。 在信号处理中,滤波就显得非常重要。在数字信号处理过程中,经常需对信号进行过滤、检测、预测等处理,这些任务的完成都要用到
3、滤波器。数字滤波器是数字信号处理的基本方法。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应( IIR)滤波器和有限冲激响应(FIR)滤波器。FIR 滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的。它可以在幅度特性随意设计的同时,保证精确严格的线性相位。所以FIR 数字滤波器广泛地应用于数字信号处理领域。 音频信号(audio)是带有语音、音乐和音效的有规律的声波的频率、幅度变化信息载体。音频信号在信号采集、传输、处理等过程中常受到多种类型噪声的干扰,主要包含环境噪声、电子线路噪声、电源噪声等等。为了恢复原来的音频信号,常需要设计音频信号滤波算法用于抑制或者滤除音频信号中的噪声
4、。图1音频信号噪声产生的示意图 由于音频信号可能受到不同类型的干扰从而形成不同类型的噪声,可通过分析不同类型噪声的特点,设计适用的滤波算法实现噪声的抑制或滤除。 设计要求1、利用Matlab分析实验提供的4份含噪音频信号的特征分析并设计实现适用于不同类型噪声的滤波方法。培养利用Matlab进行信号处理的仿真能力;2、对A/D和D/A转换器及DSP信号处理器进行编程,培养使用DSP硬件平台实现信号采集与传输能力,同时利用DSP C语言实现对采集到的信号检测识别,即具有实时信号处理的能力。设计思路及原理设计思路1、 利用Matlab进行仿真分析(1)分别读取含有不同种类噪声的音频文件提取音频对应的
5、数据以及采样率,显示含噪信号的时域波形;(2)从时、频域分别分析含噪信号中噪声类型特征;(3)设计适用于不同种类噪声类型的滤波算法,利用Matlab设计含噪信号滤波处理,尝试进行滤波性能的定量分析。2、利用C语言设计DSP程序,在信号处理平台上实现噪声滤波处理首先利用利用Matlab分析音频信号所含噪声特征,设计合适的滤波方法;在DSP对音频信号通过A/D采集,编写音频信号采集、滤波程序,实现音频信号的噪声滤波处理。实验步骤:(1)音频信号的噪声分析对实验提供的四份音频信号利用Matlab进行噪声信号的特征分析,对每种不同的噪声提出适用的滤波处理算法;(2)音频信号的滤波算法实现与验证利用Ma
6、tlab编程实现滤波算法,通过滤波后的音频数据与原始不含噪声的音频数据进行对比分析,计算检验滤波算法的性能参数。(3)音频信号DSP平台采集通过音频线连接计算机声卡至DSP板卡的音频输入口,初始化DSP的A/D采集模块的硬件配置(采样率等),利用查询模式或者DMA模式进行音频信号的采集,将采集到的音频信号存储到申请的缓冲区中。(4)时域信号的分析将采集获得的音频信号利用Graph波形查看功能显示时域波形,并从波形上分析音频信号的时域特征,并与Matlab数据进行比较等。(5)滤波算法的DSP平台实现在DSP平台上实现音频信号的滤波算法,利用DSP实现音频信号中多种噪声类型的滤波处理。(6)DS
7、P滤波实现的性能验证通过D/A播放滤波后的音频信号进行滤波性能的验证。设计原理信号采集与传输:DSP数据流的输入和输出信号处理:Matlab算法仿真Simulator下C算法仿真DSP硬件处理利用DSP实现信号实时FIR滤波需要分4个步骤:第1步:利用MATLAB进行FIR滤波仿真第2步:利用Simulator在CCS下进行FIR滤波仿真第3步:编写利用DMA进行信号采集与传输程序,利用DSP进行快速信号采集与传输;第4步:实时DMA采集外部信号,实现DSP信号实时FIR滤波 信号采集和滤波的流程图在DMA采集和传输程序的主程序main_dma.c中的存储器处理子程序processBuffer
8、()中嵌入滤波算法,则可以实现利用DSP实现信号实时滤波。DSPLIB库与fir()函数的调用方法调用DSPLIB库时,在工程中要添加库文件55xdspx.lib(存储器为大模式),在C源程序中要包含dsplib.h头文件,即#include <dsplib.h>。Fir()函数调用格式:ushort oflag = fir(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx,ushort nh)入口参数说明:xnx 表示含有nx个实数的实输入信号向量;hnh 表示含有nh个实数的系数向量,按自然顺序 排列,即滤波器的单位脉冲响应
9、。rnx 表示含有nx个实数的输出向量; 允许原位运算,即r=x。 注:DATA为Q15格式数据Matlab实验工具箱:滤波器设计工具箱sptool设计FIR滤波器Matlab实验噪声类型分析过程:audio_typea信号噪声类型:由于信号频谱是全频段的,考虑是高斯噪声。用audio_typea信号减去audio_inital信号后得到噪声a信号,画出噪声a信号波形,对时域进行概率统计,发现幅值呈正态分布,查阅资料得出噪声a为高斯噪声。实验程序(节选):figure(22)n1=y1-y;n11=hist(n1,100);plot(n11); 噪声a概率统计audio_typeb信号噪声类型
10、:用上诉方法做出噪声b的波形后,发现噪声b的幅值结果只集中在一点,所以b是脉冲干扰。噪声b时域波形audio_typec信号噪声类型:做出audio_typec信号的波形,发现有个100hz单频噪声,用上诉方法做出噪声c的波形后,发现噪声信号是多个幅值不同但频率相同的正弦信号叠加。噪声c时域波形audio_typed信号噪声类型:做出audio_typed信号波形后,发现噪声d为频率4000Hz附近的高频噪声。噪声滤除方法:a噪声,采用滑动平均去噪;b噪声,采用中值滤波;c噪声,采用高通滤波;d噪声,采用带阻滤波。Matlab仿真过程audio_inital读取程序y,Fs = audiore
11、ad('audio_inital.wav');sound(y,48000);N=length(y);f=Fs*(0:(N/2-1)/N;Y=fft(y,N);fp=abs(Y);figure(1)subplot(2,1,1),plot(y)subplot(2,1,2),plot(f,fp(1:N/2),axis(0 1000 0 200) audio_inital信号时域、频域波形audio_typea信号中噪声类型为高斯噪声,采用20点滑动平均去噪实验程序y,Fs = audioread('audio_inital.wav');y1,Fs = audiorea
12、d('audio_typea.wav');N=length(y1);f=Fs*(0:(N/2-1)/N;Y1=fft(y1);fp1=abs(Y1);figure(2);subplot(2,1,1),plot(y1);subplot(2,1,2),plot(f,fp1(1:N/2),axis(0 10000 0 200);%20点滑动平均去噪x=y1(:,1);z1=smooth(x,20);sound(z1,48000);Z1=fft(z1);fpz2=(Z1);figure(21);subplot(2,1,1),plot(z1);subplot(2,1,2),plot(f,
13、fpz2(1:N/2),axis(0 10000 0 200);figure(22)n1=y1-y;n11=hist(n1,100);plot(n11); audio_typea信号滤波前时域、频域波形audio_typea信号滤波后时域频域波形audio_typeb中噪声类型为脉冲噪声,采用13点的中值滤波实验程序y2,Fs = audioread('audio_typeb.wav');N=length(y2);f=Fs*(0:(N/2-1)/N;Y2=fft(y2);fp2=abs(Y2);figure(3)subplot(2,1,1),plot(y2)subplot(2,
14、1,2),plot(f,fp2(1:N/2),axis(0 10000 0 300)%13点的中值滤波x=y2(:,1);z2=medfilt1(x,13);Z2=fft(z2);fpz2=abs(Z2);figure(41)subplot(2,1,1),plot(z2);subplot(2,1,2),plot(f,fpz2(1:N/2),axis(0 10000 0 300figure(32)n2=y2-y;n22=hist(n2,1000);plot(n22);audio_typeb信号滤波前时域、频域波形audio_typeb信号滤波后时域、频域波形audio_typec中噪声类型为低频
15、正弦噪声,采用高通滤波实验程序y3,Fs = audioread('audio_typec.wav');N=length(y3);f=Fs*(0:(N/2-1)/N;Y3=fft(y3);fp3=abs(Y3);figure(4)subplot(2,1,1),plot(y3)subplot(2,1,2),plot(f,fp3(1:N/2),axis(0 1000 0 500)%高通滤波,Num3为fdatool设计的截频为100HZ的高通滤波器 z3=filter(Num3,1,y3); Z3=fft(z3); fpz3=abs(Z3); sound(z3,48000); fi
16、gure(41) subplot(2,1,1),plot(z3);subplot(2,1,2),plot(f,fpz3(1:N/2),axis(0 1000 0 500)figure(42) n3=y3-y; plot(n3)滤波器参数滤波器幅频特性audio_typec信号滤波前时域、频域波形audio_typec信号滤波后时域、频域波形audio_typed中的噪声为某高频段的噪声,采用带阻滤波。实验程序:y4,Fs = audioread('audio_typed.wav');N=length(y4);f=Fs*(0:(N/2-1)/N;Y4=fft(y4);fp4=ab
17、s(Y4);figure(4)subplot(2,1,1),plot(y4)subplot(2,1,2),plot(f,fp4(1:N/2),axis(0 5000 0 1000)%带阻滤波,Num4为fdatool设计的截频为35004900的带阻滤波器z4=filter(Num4,1,y4);Z4=fft(z4);fpz4=abs(Z4);sound(z4,48000);figure(41)subplot(2,1,1),plot(z4);subplot(2,1,2),plot(f,fpz4(1:N/2),axis(0 5000 0 1000)滤波器幅频特性audio_typed信号滤波前时
18、域、频域波形audio_typed信号滤后时域、频域波形Matlab结果分析总结:audio_typea信号中噪声类型为高斯噪声,采用20点滑动平均去噪audio_typeb信号中噪声类型为脉冲噪声,采用13点的中值滤波audio_typec信号中噪声类型为低频正弦噪声,采用高通滤波audio_typed信号中噪声为4000Hz高频段的噪声,采用带阻滤波。DSP设计程序运行及结果运行结果audio_inital信号频谱audio_typea信号audio_typea信号滤波后频谱audio_typeb信号频谱audio_typeb信号滤波后频谱audio_typec信号频谱audio_type
19、c信号滤波后频谱audio_typed信号频谱audio_typed信号滤波后频谱运行结果分析因为matlab中设计的滤波器阶数过高,ccs中难以实现,因此在ccs中我们对滤波器稍微做了简化,但是依然达到了很明显的滤波效果。在ccs中,对a噪声采用了低通滤波,由audio_typea信号滤波前后频谱对比,可以看到全频域的噪声信号幅度变小了,且滤波后的信号频谱与audio_inital信号频谱非常接近,说明滤波成功。对b噪声采用了低通滤波,由audio_typeb信号滤波前后频谱对比,可以看到把高频噪声分量滤去了,且滤波后的信号频谱与audio_inital信号频谱非常接近,说明滤波成功。对c噪
20、声采用了高通滤波,由audio_typec信号滤波前后频谱对比,可以看到100Hz附近的低频噪声被滤去了,且滤波后的信号频谱与audio_inital信号频谱非常接近,说明滤波成功。对d噪声采用了带通滤波,由audio_typed信号滤波前后频谱对比,可以看到4000Hz附近的高频噪声被滤去了,且滤波后的信号频谱与audio_inital信号频谱非常接近,说明滤波成功。滤波算法程序段:修改main C文件,将FIR算法嵌入到DMA程序中,实现实时滤波。void processBuffer(void) Uint32 addr; static Int16 pingPong = PING;/whil
21、e(DMA_FGETH (hDmaRcv, DMACCR, ENDPROG)/ ; / / Determine which ping-pong state we're in if (pingPong = PING) / Configure the receive channel for pong input data addr = (Uint32)gBufferRcvPong) << 1; DMA_RSETH(hDmaRcv, DMACDSAL, addr & 0xffff); /DMA_RESETH()对DMA寄存器写值(将addr低位写到hDmaRcv的DMAC
22、DSAL中) DMA_RSETH(hDmaRcv, DMACDSAU, (addr >> 16) & 0xffff);/(将addr高16位写到hDmaRcv的DMACDSAU中)/ Set new state to PONG pingPong = PONG; else / Configure the receive channel for ping input data addr = (Uint32)gBufferRcvPing) << 1; DMA_RSETH(hDmaRcv, DMACDSAL, addr & 0xffff); DMA_RSETH(
23、hDmaRcv, DMACDSAU, (addr >> 16) & 0xffff); / Set new state to PING pingPong = PING; /DMA_FSETH (hDmaRcv, DMACCR, ENDPROG, 1);/DMA_FSETH (hDmaXmt, DMACCR, ENDPROG, 1); if (pingPong = PONG) Int16 j;/Insert your application program here. 此处可以插入算法程序 copyleft(gBufferRcvPing, leftRcvPing, BUFFSI
24、ZE); copyright(gBufferRcvPing, rightRcvPing, BUFFSIZE); for (j=0; j<BUFFSIZE/2; j+) leftXmtPongj = 0; / 对left进行FIR滤波,结果存放在leftXmtPong中 fir(leftRcvPing, h, leftXmtPing, db, BUFFSIZE/2, NH); /copyData(leftRcvPing,leftXmtPing,BUFFSIZE/2); recoverl(leftXmtPing, gBufferXmtPing, BUFFSIZE/2); for (j=0;
25、j<BUFFSIZE/2; j+) rightXmtPongj = 0; / 对right进行FIR滤波,结果存放在rightXmtPong中 fir(rightRcvPing, h, rightXmtPing, dc, BUFFSIZE/2, NH); / copyData(rightRcvPing,rightXmtPing,BUFFSIZE/2); recoverr(rightXmtPing, gBufferXmtPing, BUFFSIZE/2);/6 / / Configure the transmit channel for ping output data addr = (U
26、int32)gBufferXmtPing) << 1; DMA_RSETH(hDmaXmt, DMACSSAL, addr & 0xffff);/将addr低位写到hDmaXmt的DMACDSSAL中) DMA_RSETH(hDmaXmt, DMACSSAU, (addr >> 16) & 0xffff);/将addr高位写到hDmaXmt的DMACDSSAU中 else Int16 j;/Insert your application program here. 此处可以插入算法程序 copyleft(gBufferRcvPong, leftRcvPo
27、ng, BUFFSIZE); copyright(gBufferRcvPong, rightRcvPong, BUFFSIZE); for (j=0; j<BUFFSIZE/2; j+) leftXmtPongj = 0; / / 对left进行FIR滤波,结果存放在leftXmtPong中 fir(leftRcvPong, h, leftXmtPong, db, BUFFSIZE/2, NH); / copyData(leftRcvPong,leftXmtPong,BUFFSIZE/2); recoverl(leftXmtPong, gBufferXmtPong, BUFFSIZE/2
28、); for (j=0; j<BUFFSIZE/2; j+) rightXmtPongj = 0; / 对right进行FIR滤波,结果存放在rightXmtPong中 fir(rightRcvPong, h, rightXmtPong, dc, BUFFSIZE/2, NH); /copyData(rightRcvPong,rightXmtPong,BUFFSIZE/2); recoverr(rightXmtPong, gBufferXmtPong, BUFFSIZE/2); / Configure the transmit channel for pong output data a
29、ddr = (Uint32)gBufferXmtPong) << 1; DMA_RSETH(hDmaXmt, DMACSSAL, addr & 0xffff); DMA_RSETH(hDmaXmt, DMACSSAU, (addr >> 16) & 0xffff); / Start the DMA DMA_start(hDmaRcv);/ DMA_start(hDmaXmt);/* main routine*/设计过程中遇到的问题及解决方法(1)a信号,我们直接从频谱上并不能直接看出噪声类型,在小组讨论后,我们使用a信号减去原始信号得到噪声频谱,发现该噪声是全频段的噪声,时域呈正态分布,查阅资料,发现该噪声是高斯噪声,可以用滑动平均滤除。(2)b信号,开始我们使用小波去噪,结果不是很理想,在使用b信号减去原始信号得到噪声频谱,发现是低频脉冲噪声,在请教了计算机控制老师后,我们决定采用中值滤波,得到了比较好的结果。(3)d信号,我们发现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中九年级数学教案教学设计一元二次方程地根与系数关系
- 《普通动物学》总结模版
- 建筑施工事故安全管理体系
- 抗肿瘤药物临床应用指导原则全文
- 园林法律法规试题及答案
- 银行社招ai面试题库及答案
- 艺术类国企面试题目及答案
- 区域生态循环农业项目可行性研究报告
- 修路公务员面试题及答案
- 影视器材运输保险服务与定制保险箱租赁协议
- (完整版)农业主要知识点
- 体育科研方法试卷试题答案
- 《国家电网公司十八项电网反事故措施(试行)》实施细则
- 射线检测操作指导书
- 中国民主同盟入盟申请表(样表)
- 国家标准色卡电子版(WORD版图片)
- 9种基坑坍塌案例
- 《呼吸机的使用管理》PPT课件.ppt
- 《手机摄影》全套课件(完整版)
- 年产10万吨甲醇低压羰基化合成醋酸精制工段工艺设计(共56页)
- 儿童相声剧本43286
评论
0/150
提交评论