资源描述:
《MATLAB语音分析代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、fs=20000;%设置采样频率x1=wavread('E:XINHAO');%读取噪声xO=wavread(,E:XINHAO,);t=(O:length(x1)-1)/20000;%釆样时间f=fs*(():10239)/20480;%用0到10239来表示20480个频率点%d=wavreadCE:zhaoshengr);d=[0.15*cos(2*pi*4000*t)]';%噪声为4kHz的余弦信号x1(1:length(d))=xl(1:length(d))'+d*;%把两个噪声相加,提示该代码有错误时
2、,把d后面的'去掉,因为可能是数据类型不同%y=xl(l:length(xl));%N=length(xl);%M=lcngth(d);%y=0.05*resample(d,N,M);%n=length(d);%y=[x1(1:n)+dxl(n+l:end)];y1=fft(x0,20480);%快速傅氏变换y2=fft(x1,20480);%—设计带阻滤波器%wlp二2850*pi*2/fs;wls=3400*pi*2/fs;%wup=4900*pi*2/fs;wus=4600*pi*2/fs;%B=(wus-wls
3、);%M=ccil(12*pi/B)-1;%wp=[(wls+wlp)/2/pi,(wus+wup)/2/pi];%[bz,az]=fir1(M,wp,'stop',blackman(M+1));%设计一个低通滤波器wp=2000*pi*2/fs;ws=2*pi*2200/fs;Rp=2;As二30;[N,wc]=buttord(wp,ws,Rp,As);[B,Al=butter(N,wc);figure(l)subplot(2,l,l);plot(t,x0)gridon;axistight;title('l^始语音信
4、号');xlabel('time(s)^);ylabel(幅度);subplot(2,1,2);plot(t,xl)gridon;axistight;titlc(*加噪后的信号');xlabel('time(s)');ylabel('幅度);figure⑵subplot(2,lJ);plot(f,abs(y1(1:10240)));gridon;axistight;titled原始语音信号频谱工xlabelCHz');ylabelC幅度');subplot(2,l,2);plot(f,abs(y2(l:10240)))
5、;gridon;axis([0,10000,0,8]);%axistight;title。加噪语音信号频谱xlabel('Hz');ylabel('幅度');figure(3)frcqz(B,A);%freqz(bz,az);gridon;axistight;y3=filter(B,A,xl);%y3=filter(bz,az,x1);X=fft(y3,20480);subplot(2,l,l);plot(y3);gridon;ylim([-().()15,0.015])titleC滤波后信号波形);xlabel('t
6、ime(s)');ylabel('幅度)subplot(2,l,2);plot(abs(X(l:10240)));title。滤波后信号频谱J;gridon;%axistight;axis([0,10000,0,8]);xlabeK'Hz^ylabelC幅度');sound(y3)%nj-设置不同的参数听加噪Z前及加噪Z后和滤噪Z后的声音Eil«Edit.MiCIWXxtMOXt.XodZRdzlct.op5fitindow*OQ葩I$殴e7、0■•••»•・•••0.5timefs)11.5」F±so^e2I-
8、
9、u
10、
11、x
12、KiloE.di€Miow11X15=ox-七XooXzD.ozlct.opndowHolp*□WUl3忑咬0劝®1導□目
13、■力口噪谙音彳言号频i昔