数字信号处理课程设计_第1页
数字信号处理课程设计_第2页
数字信号处理课程设计_第3页
数字信号处理课程设计_第4页
数字信号处理课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

江汉大学物理与信息工程学院数字信号处理课程设计报告课题名称:基于MATLAB有噪声语音信号处理专业:电子与信息工程班级:电信一班学号:XXXXXXXXXX学生姓名:XX目录摘要正文一、课程设计内容二、设计原理1、采样定理2、FFT原理3、FIR数字滤波器的设计三、设计过程1、语音信号的采集2、语音信号的时域和频域分析3、语音信号加噪与频谱分析4、滤波器设计①、低通②、带通③、高通结论参考文献摘要滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成局部。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均到达指定要求。关键词 数字滤波器MATLAB窗函数法一、课程设计内容录制一段语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声参加到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计FIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号;二、设计原理1、采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,那么采样之后的数字信号完整地保存了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍,采样定理又称奈奎斯特定理。2、FFT的算法原理快速傅氏变换〔FFT〕是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改良获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。设x(n)为N项的复数序列,由DFT变换,任一X〔m〕的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”〔四次实数乘法和四次实数加法〕,那么求出N项复数序列的X〔m〕,即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列〔设N=2k,k为正整数〕,分为两个N/2项的子序列,每个N/2点DFT变换需要〔N/2〕2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2〔N/2〕2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。3、FIR数字滤波器的设计IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H〔s〕,然后将H〔s〕按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器通常采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。设计FIR滤波器的步骤。如下:〔1〕根据对阻带衰减及过渡带的指标要求,选择串窗数类型〔矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等〕,并估计窗口长度N。先按照阻带衰减选择窗函数类型。原那么是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。〔2〕构造希望逼近的频率响应函数。〔3〕计算h(n).。〔4〕加窗得到设计结果。三、设计过程:1、语音信号的采集 利用PC机上的声卡和Win操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“新年快乐!”,说完后停止录音。用格式工厂软件解决音频文件格式的问题,最终转换为.wav文件〔“新年快乐.wav”〕。将该文件保存入Matlab程序文件目录中。如下列图所示:Win7录音机音频文件“新年快乐.wav”的存放2、语音信号的时域和频域分析利用MATLAB中的“wavread”命令来读入〔采集〕语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。函数调用格式如下:[y,fs,nbits]=wavread(file)功能说明:采样值放在向量y中,fs表示采样频率〔hz〕,nbits表示采样位数。时域、频域分析程序:[y,fs,nbits]=wavread('新年快乐.wav');%读取语音信号文件y:向量,fs:采样频率,nbits:采样位数;sound(y,fs,nbits);%回放语音信号N=length(y);%记录语音信号的长度Y=fft(y,N);%对N点语音信号序列进行傅里叶变换subplot(2,1,1);plot(y);title('原始语音信号时域波形');subplot(2,1,2);plot(abs(Y));title('原始语音信号频域波形');程序结果如下列图:3、语音信号加噪与频谱分析由于电脑录音效果比拟好,很难得显著地看到滤波器滤波效果,所以通过MATLAB向语音信号添加高斯白噪声,在这里我们直接用randn函数产生高斯分布序列。Randn函数有两种根本调用格式:Randn(n)和Randn〔m,n〕,前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用Randn〔m,n〕函数。语音信号添加噪声及其频谱分析的主要程序如下:[y,fs,nbits]=wavread('新年快乐.wav');%读取语音信号文件N=length(y);%记录语音信号的长度Noise=0.01*randn(N,2);%生成噪音序列Si=y+Noise;%加噪sound(Si);subplot(2,1,1);plot(Si);title('加噪语音信号的时域波形');S=fft(Si);%对N点加噪后的语音信号序列进行傅里叶变换subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形');程序结果如下列图:效果分析:加噪后,声音变得更为嘈杂、浑厚,加噪后频谱干扰信号增多,幅值也加大了。4、滤波器设计:①FIR低通滤波器程序源代码:[y,fs,nbits]=wavread('新年快乐.wav');Fp=900;Fc=1100;Fs=fs;wp=2*pi*Fp/Fs;ws=2*pi*Fc/Fs;rp=1;rs=50;p=1-10.^(-rp/20);%通带阻带波纹s=10.^(-rs/20);fpts=[wpws];mag=[10];dev=[ps];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%kaiserord求阶数截止频率b21=fir1(n21,wn21,Kaiser(n21+1,beta));%由fir1设计滤波器[h,w]=freqz(b21,1);%得到频率响应%plot(w/pi,abs(h));%title('FIR低通滤波器');n=length(y);%求出语音信号的长度noise=0.01*randn(n,2);%随机函数产生噪声s=y+noise;%语音信号参加噪声S=fft(s);%傅里叶变换z21=fftfilt(b21,s);sound(z21);m21=fft(z21);subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱');subplot(2,2,2);plot(abs(m21),'r');title('滤波后信号的频谱');subplot(2,2,3);plot(s);title('滤波前信号的波形');subplot(2,2,4);plot(z21);title('滤波后的信号波形');滤波器幅频特性曲线图:高通滤波器滤波效果:效果分析:滤波前后波形的变化没有显著的变化,而频谱有比拟明显的变化,中间有一局部幅值急剧减小。语音信号重放,明显感觉噪音有所变化。②buffer带通滤波器程序源代码:Fp1=1400;Fp2=3400;Fs1=1500;Fs2=3600;[y,fs,nbits]=wavread('新年快乐.wav');Ft=fs;wp1=tan(pi*Fp1/Ft);%带通到低通滤波器参数转换wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp*wp2-w.^2)/(bw*w);[n22,wn22]=buttord(wp,ws,1,50,'s');%求低通滤波器阶数和截止频率[b22,a22]=butter(n22,wn22,'s');%求S域的频率响应的参数[num2,den2]=lp2bp(b22,a22,sqrt(wp1*wp2),bw);%将S域低通参数转为带通的[num22,den22]=bilinear(num2,den2,0.5);%双线性变换实现S域到Z域的转换[h,w]=freqz(num22,den22);%根据参数求出频率响应%plot(w*8000*0.5/pi,abs(h));%axis([0400001.5]);%legend('带通滤波器〔butter〕');n=length(y);%求出语音信号的长度noise=0.01*randn(n,2);%随机函数产生噪声s=y+noise;%语音信号参加噪声S=fft(s);%傅里叶变换z22=fftfilt(b22,s);sound(z22);m22=fft(z22);%求滤波后的信号subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱');subplot(2,2,2);plot(abs(m22),'r');title('滤波后信号的频谱');subplot(2,2,3);plot(s);title('滤波前信号的波形');subplot(2,2,4);plot(z22);title('滤波后的信号波形');滤波器幅频特性曲线图:高通滤波器滤波效果:效果分析:滤波前后波形在时域和频域在幅值上都有比拟明显的变化。语音信号重放,明显感觉声音变得消沉、噪声减少了些。③FIR高通滤波器程序源代码:[y,fs,nbits]=wavread('新年快乐.wav');Fp=1500;Fc=1400;Fs=fs;wp=2*pi*Fp/Fs;ws=2*pi*Fc/Fs;p=1-10.^(-rp/20);%通带阻带波纹s=10.^(-rs/20);fpts=[wswp];mag=[01];dev=[ps];[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta));%由fir1设计滤波器[h,w]=freqz(b23,1);%得到频率响应%plot(w*12000*0.5/pi,abs(h));%title('FIR高通滤波器');%axis([3000600001.2]);n=length(y);%求出语音信号的长度noise=0.01*randn(n,2);%随机函数产生噪声s=y+noise;%语音信号参加噪声S=fft(s);%傅里叶变换z23=fftfilt(b23,s);sound(z23);m23=fft(z23);%求滤波后的信号subplot(2,2,1);plot(abs(S),'g');subplot(2,2,2);plot(abs(m23),'r');title('滤波后信号的频谱');subplot(2,2,3);plot(s);tit

温馨提示

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

评论

0/150

提交评论