数字信号处理课程设计报告-潘雅莉_第1页
数字信号处理课程设计报告-潘雅莉_第2页
数字信号处理课程设计报告-潘雅莉_第3页
数字信号处理课程设计报告-潘雅莉_第4页
数字信号处理课程设计报告-潘雅莉_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、东北林业大学课程设计信号处理综合设计 设 计 说 明 书设计项目: 语音信号的数字滤波处理项目完成人:姓名: 潘雅莉 学号: 2014221012专业班级: 电子信息工程二班指导教师: 刘淑玉,赵亚凤,王建卫,朱自民提交日期: 2017.1.7机电工程学院电子信息工程201. 设计基本原理1.1课题研究的背景1) 熟悉离散信号和系统的时域特性。2) 掌握数字信号处理的基本概念,基本理论和基本方法。3) 掌握序列快速傅里叶变换方法。4) 练习对MATLAB的使用,掌握MATLAB的程序设计方法。5) 学习利用MATLAB对语音信号进行频谱分析。6) 学习设计巴特沃斯滤波器以及采用hamming窗

2、设计FIR数字低通,高通和带通滤波器的方法。1.2课题研究意义通过本次课程设计,综合运用数字信号处理技术课程和其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力,学习设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。进行设计基本技能的训练,如查阅设计资料和手册、程序的设计、调试,了解语音信号的产生、采集、能绘制语音信号的频率响应曲线及频谱图,学会用MATLAB对语音信号进行分析和处理,学习设计滤波器的一般方法,通过课程设计树立正确的设计思想,提高分析问题、解决问题的能力,掌握用滤

3、波器去除语音信号噪声的方法,观察去噪前后的语音信号,进行设计基本技能的训练,如查阅设计资料和手册、程序的设计、调试等。设计任务2.1课题设计的任务(1) 熟练掌握数字信号处理的基本概念基本理论。 (2) 熟悉离散信号和离散系统的时域特性。 (3) 掌握序列快速傅里叶变换(FFT)方法。(4) 掌握滤波器的几种网络结构。(5) 学会使用软件MATLAB,掌握其程序设计方法。(6) 掌握利用MATLAB对语音信号进行频谱分析的方法。2.2课题研究的内容预习题部分1、设计卷积运算的演示程序: 可输入任意两个序列x1(n)、x2(n),指定x1(n)为自己的学号,例如x1(n)=2, 0, 1, 0,

4、 5, 7, 0, 5, 0, 2, 0, 1。x2(n)的内容和长度自选。例如x2(n)=0.5, 2.43, 6.17, 12.93, 22.17, 32.25, 40.88, 45.87, 45.87, 40.88, 32.25, 22.17, 12.93, 6.17, 2.43,1.007。 分别动态演示两个序列进行线性卷积x1(n)*x2(n)和圆周卷积x1(n)x2(n)的过程;要求分别动态演示翻转、移位、乘积、求和的过程; 圆周卷积默认使用两个序列中的最大长度,但卷积前可以指定卷积长度N用以进行混叠分析; 改变圆周卷积长度N,根据实验结果分析两类卷积的关系; 在计算机操作系统中选

5、一段声音文件(XP系统在“C:WINDOWSMedia”),读取文件取10ms的声音数据产生时域序列x1(n),序列内容自定义。利用x2(n)=0.5, 2.43, 6.17, 12.93, 22.17, 32.25, 40.88, 45.87, 45.87, 40.88, 32.25, 22.17, 12.93, 6.17, 2.43, 1.007。利用FFT实现快速卷积,验证时域卷积定理,并与直接卷积进行效率对比(验证时采用Matlab子函数)。 2、编写程序演示采样定理(时域采样、频谱周期延拓),同时演示采样频率小于2fc时,产生的混叠效应: 对下面连续信号进行采样:学号,A为幅度因子,

6、a为衰减因子,为模拟角频率,其中n为学号(例如,贺娜同学n=201); 要求输入采样频率fs(根据程序处理需要指定范围)后,在时域演示信号波形、采样脉冲及采样后信号;在频域演示不同采样频率下对应信号的频谱。设计题部分 数字滤波器设计及其应用 利用Windows下的录音机或其他软件,进行语音信号的采集(*.wav); 语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图; 产生噪声信号并加到语音信号中,得到被污染的语音信号,并回放语音信号; 污染信号的频谱分析,画出被污染的语音信号时域波形和频谱; 根据有关的频谱特性,采用间接法设计IIR数字滤波器,并画出相应滤波器的幅频、相频图(设计3个I

7、IR滤波器)a模拟滤波器类型:巴特沃斯滤波器(低通、带通、高通)b总体要求:Matlab原程序+仿真波形+技术指标 根据有关的频谱特性,采用直接法设计FIR数字滤波器,并画出相应滤波器的幅频、相频图(设计3个FIR滤波器)a滤波器类型:汉宁(Hanning)窗(低通、带通、高通)b总体要求:Matlab原程序+仿真波形+技术指标+窗函数 用自己设计的这些滤波器分别对被不同噪声污染的信号进行滤波; 分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。设计提示1语音信号的采集要求利用windows下的录音机(开始程序附件娱乐录音机,文件属性

8、立即转换8000Hz,8位,单声道)录制一段自己的话音,或者采用Windows自带的声音文件(默认为22050Hz),时间控制在几秒左右。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,要求理解采样频率、采样位数等概念。wavread函数调用格式:y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。y,fs,nbits=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。y=wavread(file,N),读取前N点的采样值放在向量y中

9、。y=wavread(file,N1,N2),读取从N1点到N2点的采样值放在向量y中。2语音信号的频谱分析要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。3设计数字滤波器和画出频率响应根据语音信号的特点给出有关滤波器的性能指标,例如:1)低通滤波器性能指标,fp=1000Hz,fc=1200 Hz, As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=2800 Hz,fp=3000 Hz,As=100dB,Ap=1dB;3)带通滤波器性能指标,fp1=1200 H

10、z,fp2=3000 Hz,fc1=1000 Hz,fc2=3200 Hz,As=100dB,Ap=1dB。4.回放语音信号在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。5.语音的反转将女生的一段声音反转成男生,或者将男生的声音反转成女生。2.3课题研究的指标 在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度和相位响应。幅度指标主要以两种方式给出。第一种是绝对指标。它提供对幅度响应函数的要求,一般应用于F

11、IR滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求。在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中人有线性相位。运用线性相位响应指标进行滤波器设计具有如下优点:只包含实数算法,不涉及复数运算;不存在延迟失真,只有固定数量的延迟;长度为N的滤波器(阶数为N-1),计算量为N/2数量级。因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。预习部分练习1.线性卷积 n1=1:40;n2=1:40;x1=zeros(1,12),2,0,1,4,2,2,1,0,1,2,0,0,zeros(1,16); x2=zeros(1,12),2,4,5,6,2,

12、7,4,8,9,6,4,8,3,5,7,8,zeros(1,12);x11=zeros(size(x1);subplot(3,1,1)stem(n1,x1)subplot(3,1,2)stem(n2 ,x2)pause(1);for i=1:24 x11(i)=x1(25-i);endfor i=25:40 x11(i)=0;endsubplot(3,1,1)stem(n1,x11); pause(1)x3=zeros(size(x11);for i=1:28x11=zeros(1,1),x11(1:(40-1);x3(i)=sum(x11.*x2);subplot(3,1,1)stem(n1

13、,x11)subplot(3,1,3)x4=zeros(1,12),x3(1:i),zeros(1,28-i);stem(n1,x4)pause(1)end 圆周卷积x=2,0,1,4,2,2,1,0,1,2,0,0;y=5,4,3,6,1,7,4,8,4,5,4,8,3,8,7,8;subplot(2,1,1)stem(x,zeros(1,28);N1=length(x);N2=length(y);N=N1;if N2>N1 N=N2;endM=input('请输入圆周卷积长度n');if M>=N N=M;endif N=N1 x=x;else x=x,zero

14、s(1,N-N1);endX=zeros(N,N);x1=zeros(1,N);pause(2)for n=1:N if n=1 x1(n)=x(n); else x1(n)=x(N-n+2); endendX(1,1:N)=x1;for i=2:N pause(1) for n=1:N if n=1 X(i,n)=X(i-1,N); else X(i,n)=X(i-1,n-1); end end subplot(2,1,1) stem(X(i,1:N);end if N2<Ny=y,zeros(1,N-N2);endY=y'W=X*Y;W=W'n=1:N;subplot

15、(2,1,2)stem(n,W)分析总结:由以上分析可知,当循环卷积区间长度大于28时,不会出现混叠显现;当循环卷积长度小于28时,会出现混叠现象从而失真。利用FFT实现快速卷积x1=wavread('Alarm01.wav',2000);x1=x1'x1=x1(1,:);x2=1 2.43 6.17 12.93 22.17 32.25 40.88 45.87 45.87 40.88 32.25 22.17 12.93 6.17 2.43 1;subplot(7,1,1);stem(x1);ylabel('x1(n)');title('x1(n)

16、');subplot(7,1,2);stem(x2);ylabel('x2(n)');title('x2(n)');y=conv(x1,x2);subplot(7,1,3);stem(y);ylabel('y');title('x1(n)与x2(n)的卷积');N1=length(x1);N2=length(x2);N=N1+N2-1;X1=fft(x1,N);X2=fft(x2,N);subplot(7,1,4);stem(X1);ylabel('X1');title('x1(n)的N点DFT&#

17、39;);subplot(7,1,5);stem(X2);ylabel('X2');title('x2(n)的N点DFT');Y1=X1.*X2;subplot(7,1,6);stem(Y1);ylabel('Y1');title('X1与X2相乘的结果');Y2=ifft(Y1);subplot(7,1,7);stem(Y2);ylabel('Y2');title('Y1的IDFT结果');fs=input('请输入采样频率:');n=input('请输入4位学号:'

18、;);t=0:1/fs:1;t1=0:0.0005:1;A=n;a=sqrt(2)*n*pi;w=a;x=A*exp(-a*t).*sin(w*t);x1=A*exp(-a*t1).*sin(w*t1);subplot(5,1,1)plot(x1);xn=ones(1,length(t);subplot(512)stem(xn)yn=xn.*x;subplot(5,1,3)stem(yn);y=fft(yn,fs);f=fs*(0:fs/2)/fs;subplot(5,1,4)plot(f,y(1:fs/2+1);yn=ifft(y);subplot(5,1,5)plot(yn)编写程序演示采

19、样定理(时域采样、频谱周期延拓),同时演示采样频率小于2fc时,产生的混叠效应(n=14):t=0:0.0005:0.3;xa=14*exp(-14*sqrt(2)*pi*t).*sin(14*sqrt(2)*pi*t);subplot(6,1,1);plot(t,xa);title('origin xa')t=0.015;n=0:t:0.3;pt=ones(0.3/t+1);subplot(6,1,2);stem(n,pt);title('采样脉冲');xaa=14*exp(-14*sqrt(2)*pi*n).*sin(14*sqrt(2)*pi*n);sub

20、plot(6,1,3);stem(n,xaa);title('采样后信号');y1=fft(xa,4096);subplot(6,1,4);plot(abs(y1);title('采样频率2kHz');y2=fft(xaa,4096);subplot(6,1,5);plot(abs(y2);title('采样频率66Hz');t=0.005;n=0:t:0.3;xa1=14*exp(-14*sqrt(2)*pi*n).*sin(14*sqrt(2)*pi*n);y2=fft(xa1,4096);subplot(6,1,6);plot(abs(y2

21、);title('采样频率200Hz');结果分析总结:当序列的长度为2N时,可用FFT变换,再用两者频域相乘,逆变换成时域,计算速度比直接计算卷积快的多。当循环区间长度L>=N+M-1时,线性卷积与循环卷积相等,且无时域混叠现象。滤波器的设计除了低通数字滤波器之外,实际中还常常需要高通、带通及带阻数字滤波器。这三种数字滤波器的设计步骤如下:(1)将数字滤波器H(z)的技术指标p和s,通过=tan(/2)转变为模拟滤波器G(s)的技术指标p和s,作归一化处理后,得到p=1,s=s/p;(2)化解为模拟原型滤波器G(s)的技术指标;(3)设计模拟原型滤波器G(p);(4)将

22、G(p)转换为模拟滤波器的转移函数G(s);(5)将G(s)转换成数字滤波器的转移函数H(z)s=(z1)(z+1)。 所谓原型滤波器是指归一化的低通滤波器。本节主要讨论通过IIR数字滤波器的原型转换设计法和IIR数字滤波器的直接设计方法来设计数字高通、带通及带阻滤波器其转换方法主要有3种一是直接由模拟低通滤波器转换成数字高通、带通或带阻滤波器二是先由模拟低通滤波器转换成模拟高通、带通或带阻滤波器然后再把它转换成相应的数字滤波器三是将模拟低通滤波器先转换成数字低通滤波器再通过变量代换变换成高通、带通或带阻滤波器。语音信号的频谱范围主要为22050HZ左右,并且在50000HZ左右有一个小信号,

23、因此,在设计低通滤波器时,应把噪声频谱设定在50000HZ以上,这样,通过低通滤波器,即可滤除噪声信号从而还原语音信号;在设计高通滤波器时,应把噪声设定在22050HZ以内,以通过高通滤波器滤除低频的噪声信号,从而还原相对频率较高的语音信号;在设计带通滤波器时,可把噪声设计在低于22050HZ或高于50000HZ的频谱上,已通过带通滤波器还原带通范围内的语音信号。巴特沃思滤波器低通滤波器%读入音频信号x,FS,bits=wavread('Alarm01.wav');x=x(:,1);figure(1);subplot(2,1,1);plot(x);sound(x,FS,bits

24、); title('语音信号时域波形图')y=fft(x,3260);f=(FS/1630)*1:1630; subplot(2,1,2);plot(f(1:1630),abs(y(1:1630);title('语音信号频谱图');%产生噪声t=0:length(x)-1;zs=0.05*cos(2*pi*6000*t/22050);zs0=0.05*cos(2*pi*6000*t/22050000);figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs,1200);%sound(

25、zs,FS,bits); subplot(2,1,2)plot(f(1:600),abs(zs1(1:600);title('噪声信号频谱');%tjzsx1=x+zs'sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);%用傅里叶转为频域figure(3);subplot(2,1,1);plot(x1);title('加入噪声后的信号波形');subplot(2,1,2);plot(f(1:600),abs(y1(1:600);title('加入噪声后的信号频谱');%巴特沃斯低通滤波器fp=30

26、00;fs=3500;Fs=22050;rp=1;rs=10;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);N,wc=buttord(wap,was,rp,rs,'s');B,A=butter(N,wc,'s');Bz,Az=bilinear(B,A,Fs1);figure(4);h,w=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h);title('巴特沃斯低通滤波器');xlabel('频率(HZ)');yla

27、bel('耗损(dB)');grid on;yd=filter(Bz,Az,x1);figure(5);subplot(2,1,1);plot(yd); title('滤波后信号波形');ydd=fft(yd,1200);subplot(2,1,2);plot(f(1:600),abs(ydd(1:600);title('滤波后信号频谱');sound(yd,FS,bits)巴特沃斯带通滤波器%语音信号x,fs,bits=wavread('Alarm01.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数%soun

28、d(x,fs,bits);% 按指定的采样率和每样本编码位数回放N=length(x);% 计算信号x的长度fn=5000;% 单频噪声频率t=0:1/fs:(N-1)/fs;% 计算时间范围,样本数除以采样频率x=x(:,1)'% 将双声道转为单声道%加入噪声y=x+0.01*sin(fn*2*pi*t);% 加噪声sound(y,fs,bits);% 应该可以明显听出有尖锐的单频啸叫声X=abs(fft(x); Y=abs(fft(y);% 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分deltaf=fs/N; % 计算频

29、谱的谱线间隔f=0:deltaf:fs/2-deltaf;% 计算频谱频率范围figure(1); %新建图形subplot(2,2,1); plot(x);%原始语音信号幅度图xlabel('time n');%定义X坐标ylabel('幅度 n');%定义Y坐标title('原始语音信号shiyishi');%定义主题axis(0 120000 -1.1 1.1);grid on%设定X轴和Y轴范围 subplot(2,2,2);%定义第二个子图plot(f,X);%原始语音信号幅度谱图title('语音信号幅度谱图shiyishi&

30、#39;);%定义主题xlabel('频率(单位:HZ)');%定义Y坐标ylabel('幅度谱');%定义X坐标axis(0 8000 0 600);grid on%设定X轴和Y轴范围subplot(2,2,3);%定义第三个子图plot(y);%加噪声后的语音信号图axis(0 120000 -1.0 0.9);grid on%设定X轴和Y轴范围xlabel('time n');ylabel('幅度 n');title('加入干扰后的语音信号');subplot('2,2,4');plot(f,

31、Y);%加噪声后的语音信号幅度谱图>> axis(0 8000 0 700);grid onxlabel('频率(单位:HZ)'); ylabel('幅度谱');title('加入干扰后信号幅度谱图');% 巴特沃斯带通滤波器fsl=300;fpl=800;fpu=1200;fsu=2200;fs_1=22050;rp=1;rs=10;wp=2*pi*fpl,fpu/fs;ws=2*pi*fsl,fsu/fs;Fs=fs/fs;wap=2*tan(wp/2);was=2*tan(ws/2);N,wc=buttord(wap,was,r

32、p,rs,'s');B,A=butter(N,wc,'s');Bz,Az=bilinear(B,A,Fs);h,w=freqz(Bz,Az,512,Fs*44100);figure(2);subplot(311);plot(w/pi,abs(h);title('巴特沃斯带通滤波器-频率响应');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;yd=filter(Bz,Az,y);subplot(312);plot(yd);title('巴特沃斯带通滤波器-滤波后的信号波形

33、');ydd=fft(yd,1050);subplot(313);plot(f(1:300),abs(ydd(1:300);title('巴特沃斯带通滤波器-滤波后的信号频谱');sound(yd,fs,bits); 巴特沃斯高通滤波器%语音信号x,fs,bits=wavread('Alarm01.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数sound(x,fs,bits);% 按指定的采样率和每样本编码位数回放N=length(x);% 计算信号x的长度fn=5000;% 单频噪声频率t=0:1/fs:(N-1)/fs;% 计算时

34、间范围,样本数除以采样频率x=x(:,1)'% 将双声道转为单声道%加入噪声y=x+0.01*sin(fn*2*pi*t);% 加噪声sound(y,fs,bits);% 应该可以明显听出有尖锐的单频啸叫声X=abs(fft(x); Y=abs(fft(y);% 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分deltaf=fs/N; % 计算频谱的谱线间隔f=0:deltaf:fs/2-deltaf;% 计算频谱频率范围figure(1); %新建图形subplot(2,2,1); plot(x);%原始语音信号幅度图xlab

35、el('time n');%定义X坐标ylabel('幅度 n');%定义Y坐标title('原始语音信号shiyishi');%定义主题axis(0 120000 -1.1 1.1);grid on%设定X轴和Y轴范围 subplot(2,2,2);%定义第二个子图plot(f,X);%原始语音信号幅度谱图title('语音信号幅度谱图shiyishi');%定义主题xlabel('频率(单位:HZ)');%定义Y坐标ylabel('幅度谱');%定义X坐标axis(0 8000 0 600);g

36、rid on%设定X轴和Y轴范围subplot(2,2,3);%定义第三个子图plot(y);%加噪声后的语音信号图axis(0 120000 -1.0 0.9);grid on%设定X轴和Y轴范围xlabel('time n');ylabel('幅度 n');title('加入干扰后的语音信号');subplot('2,2,4');plot(f,Y);%加噪声后的语音信号幅度谱图>> axis(0 8000 0 700);grid onxlabel('频率(单位:HZ)'); ylabel('

37、幅度谱');title('加入干扰后信号幅度谱图');% 巴特沃斯高通滤波器fp=1500;fs1=500;Fs=22050;rp=1;rs=10;wp=2*pi*fp/fs;ws=2*pi*fs1/fs;Fs=Fs/fs;wap=2*tan(wp/2);was=2*tan(ws/2);N,wc=buttord(wap,was,rp,rs,'s');B,A=butter(N,wc,'high','s');Bz,Az=bilinear(B,A,Fs);figure(4);subplot(311);h,w=freqz(Bz,A

38、z,512,Fs*44100);plot(w/pi,abs(h);title('巴特沃斯高通滤波器-频率响应');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;yd=filter(Bz,Az,y);subplot(312);plot(yd);title('巴特沃斯高通滤波器-滤波后的信号波形');ydd=fft(yd,800);subplot(313);plot(f(1:600),abs(ydd(1:600);title('巴特沃斯高通滤波器-滤波后的信号频谱');sound(

39、yd,fs,bits);hanning窗低通滤波器%语音信号x,fs,bits=wavread('Alarm01.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数sound(x,fs,bits);% 按指定的采样率和每样本编码位数回放N=length(x);% 计算信号x的长度fn=5000;% 单频噪声频率t=0:1/fs:(N-1)/fs;% 计算时间范围,样本数除以采样频率x=x(:,1)'% 将双声道转为单声道%加入噪声y=x+0.01*sin(fn*2*pi*t);% 加噪声sound(y,fs,bits);% 应该可以明显听出有尖锐的单频啸

40、叫声X=abs(fft(x); Y=abs(fft(y);% 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分deltaf=fs/N; % 计算频谱的谱线间隔f=0:deltaf:fs/2-deltaf;% 计算频谱频率范围figure(1); %新建图形subplot(2,2,1); plot(x);%原始语音信号幅度图xlabel('time n');%定义X坐标ylabel('幅度 n');%定义Y坐标title('原始语音信号shiyishi');%定义主题axis(0 12000

41、0 -1.1 1.1);grid on%设定X轴和Y轴范围 subplot(2,2,2);%定义第二个子图plot(f,X);%原始语音信号幅度谱图title('语音信号幅度谱图shiyishi');%定义主题xlabel('频率(单位:HZ)');%定义Y坐标ylabel('幅度谱');%定义X坐标axis(0 8000 0 600);grid on%设定X轴和Y轴范围subplot(2,2,3);%定义第三个子图plot(y);%加噪声后的语音信号图axis(0 120000 -1.0 0.9);grid on%设定X轴和Y轴范围xlabel

42、('time n');ylabel('幅度 n');title('加入干扰后的语音信号');subplot('2,2,4');plot(f,Y);%加噪声后的语音信号幅度谱图>> axis(0 8000 0 700);grid onxlabel('频率(单位:HZ)'); ylabel('幅度谱');title('加入干扰后信号幅度谱图'); %滤波-hanning窗低通滤波器程序fp=1500,fc=3000; wp=2*pi*fp/fs;ws=2*pi*fc/fs;B

43、t=ws-wp; N0=ceil(6.2*pi/Bt); N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,hanning(N); X=conv(hn,y); sound(X,fs,bits);X1=fft(X,1200);figure(6);h1,w1 = freqz(hn,1,512);subplot(311);plot(w1/pi,abs(h1);title('hanning窗低通滤波器-频率响应');subplot(312);plot(X);title('hanning窗低通滤波器-滤波后的信号波形');s

44、ubplot(313);plot(f(1:600),abs(X1(1:600); title('hanning窗低通滤波器-滤波后的信号频谱');hanning窗高通滤波器(效果差,噪声没有全部过滤,原声过滤)%语音信号x,fs,bits=wavread('Alarm01.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数sound(x,fs,bits);% 按指定的采样率和每样本编码位数回放N=length(x);% 计算信号x的长度fn=5000;% 单频噪声频率t=0:1/fs:(N-1)/fs;% 计算时间范围,样本数除以采样频率x=x(

45、:,1)'% 将双声道转为单声道%加入噪声y=x+0.01*sin(fn*2*pi*t);% 加噪声sound(y,fs,bits);% 应该可以明显听出有尖锐的单频啸叫声X=abs(fft(x); Y=abs(fft(y);% 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分deltaf=fs/N; % 计算频谱的谱线间隔f=0:deltaf:fs/2-deltaf;% 计算频谱频率范围figure(1); %新建图形subplot(2,2,1); plot(x);%原始语音信号幅度图xlabel('time n

46、9;);%定义X坐标ylabel('幅度 n');%定义Y坐标title('原始语音信号shiyishi');%定义主题axis(0 120000 -1.1 1.1);grid on%设定X轴和Y轴范围 subplot(2,2,2);%定义第二个子图plot(f,X);%原始语音信号幅度谱图title('语音信号幅度谱图shiyishi');%定义主题xlabel('频率(单位:HZ)');%定义Y坐标ylabel('幅度谱');%定义X坐标axis(0 8000 0 600);grid on%设定X轴和Y轴范围s

47、ubplot(2,2,3);%定义第三个子图plot(y);%加噪声后的语音信号图axis(0 120000 -1.0 0.9);grid on%设定X轴和Y轴范围xlabel('time n');ylabel('幅度 n');title('加入干扰后的语音信号');subplot('2,2,4');plot(f,Y);%加噪声后的语音信号幅度谱图>> axis(0 8000 0 700);grid onxlabel('频率(单位:HZ)'); ylabel('幅度谱');title(&

48、#39;加入干扰后信号幅度谱图');%滤波-hanning窗高通滤波器程序fp=2000,fs_1=1500; wp=2*pi*fp/fs;ws=2*pi*fs_1/fs;Bt=wp-ws; N0=ceil(6.2*pi/Bt); N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,'high',hanning(N); X=conv(hn,y);X1=fft(X,512);sound(X,fs,bits);figure(7);h1,w1 = freqz(hn,1,512);subplot(311);plot(w1/pi,ab

49、s(h1);title('hanning窗高通滤波器-频率响应');subplot(312);plot(X);title('hanning窗高通滤波器-滤波后的信号波形');subplot(313);plot(f(1:300),abs(X1(1:300);title('hanning窗高通滤波器-滤波后的信号频谱');hanning窗带通滤波器%语音信号x,fs,bits=wavread('Alarm01.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数sound(x,fs,bits);% 按指定的采样率和每样本

50、编码位数回放N=length(x);% 计算信号x的长度fn=5000;% 单频噪声频率t=0:1/fs:(N-1)/fs;% 计算时间范围,样本数除以采样频率x=x(:,1)'% 将双声道转为单声道%加入噪声y=x+0.01*sin(fn*2*pi*t);% 加噪声sound(y,fs,bits);% 应该可以明显听出有尖锐的单频啸叫声X=abs(fft(x); Y=abs(fft(y);% 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分deltaf=fs/N; % 计算频谱的谱线间隔f=0:deltaf:fs/2-delt

51、af;% 计算频谱频率范围figure(1); %新建图形subplot(2,2,1); plot(x);%原始语音信号幅度图xlabel('time n');%定义X坐标ylabel('幅度 n');%定义Y坐标title('原始语音信号shiyishi');%定义主题axis(0 120000 -1.1 1.1);grid on%设定X轴和Y轴范围 subplot(2,2,2);%定义第二个子图plot(f,X);%原始语音信号幅度谱图title('语音信号幅度谱图shiyishi');%定义主题xlabel('频率(

52、单位:HZ)');%定义Y坐标ylabel('幅度谱');%定义X坐标axis(0 8000 0 600);grid on%设定X轴和Y轴范围subplot(2,2,3);%定义第三个子图plot(y);%加噪声后的语音信号图axis(0 120000 -1.0 0.9);grid on%设定X轴和Y轴范围xlabel('time n');ylabel('幅度 n');title('加入干扰后的语音信号');subplot('2,2,4');plot(f,Y);%加噪声后的语音信号幅度谱图>>

53、axis(0 8000 0 700);grid onxlabel('频率(单位:HZ)'); ylabel('幅度谱');title('加入干扰后信号幅度谱图');%滤波-hanning窗带通滤波器程序 fp1=1000,fs1=500; fp2=1500,fs2=2000;ws1=2*pi*fs1/fs;wp1=2*pi*fp1/fs;wp2=2*pi*fp2/fs;ws2=2*pi*fs2/fs;Bt1=wp1-ws1;N0=ceil(6.2*pi/Bt1); N=N0+mod(N0+1,2);wc=(wp1+ws1)/2/pi,(wp2+ws2)/2/pi; hn=fir1(N-1,wc,hanning(N);X=conv(hn,y); sound(X,fs,

温馨提示

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

评论

0/150

提交评论