MATLAB课设(打印))

上传人:bei****lei 文档编号:111337298 上传时间:2022-06-20 格式:DOCX 页数:22 大小:294.32KB
收藏 版权申诉 举报 下载
MATLAB课设(打印))_第1页
第1页 / 共22页
MATLAB课设(打印))_第2页
第2页 / 共22页
MATLAB课设(打印))_第3页
第3页 / 共22页
资源描述:

《MATLAB课设(打印))》由会员分享,可在线阅读,更多相关《MATLAB课设(打印))(22页珍藏版)》请在装配图网上搜索。

1、Matlab与信息处理课程设计课题:语音信号采集与处理 姓名: 学号: 指导老师:2016.7.5目录一、实践目的2二、课题要求:2三、MATLAB仿真21、录音及频谱分析22、语音信号时域分析33、傅里叶变换性质6尺度变换:6抽取:7插值:8调制与解调:9四、信号加噪及滤波13低通滤波器14高通滤波器16带通滤波器18五、总结20六、参考文献21一、实践目的本次课程设计的课题为语音信号采集与处理,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。此次实

2、习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。二、课题要求1、利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音)。2、对录制的语音信号进行频谱分析。3、对采集到的语音信号进行时域的尺度变换,抽取与插值,调制与解调,观测前后信号的变化。4、实现语音信号的音量变大变小、快放、慢放、倒放、混音、回声、男女变声等效果。5、对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。6、利用MATLAB GUI 制作语音信号采集与分析演示系统。三、MATLAB仿真1、录

3、音及频谱分析用WINDOWS下的录音机,用单声道录制一段音乐或声音,时间在5S内。然后MATLAB软件平台下,利用函数WAVREAD对语音信号进行采样,记住采样频率和采样点数。对语音信号进行快速傅立叶变换,在一个窗口同时画出信号的时域波形图和频谱图,分析语音信号的频谱特点y,fs=audioread(I:zjk.wav); %读声音文件N=length(y); t=0:1/fs:(length(y)-1)/fs; %求出语音信号的长度Y=fft(y,N); %快速傅里叶变换AM=abs(Y)/(N/2);AM(1,:)=AM(1,:)/2;ff=(0:N-1)/N*fs;subplot(2,1

4、,1);plot(t,y); %语音信号时域图subplot(2,1,2);plot(ff,AM) %语音信号频谱图;运行如下: 图(1) 时域、频谱图2、语音信号时域分析 (1)语音信号音量放大f1,fs=audioread(I:zjk.wav);sound(2*f1,fs) %“2”1,所以放大(2)语音信号音量变小f1,fs=audioread(I:zjk.wav);sound(0.5*f1,fs) %0.51,所以变小(3)语音信号倒放x,fs=audioread(I:zjk.wav);y0=flipud(x); &flipud实现矩阵上下翻转,从而实现语音倒放sound(y0,fs)

5、;(4)混音音效Y1,fs1=audioread(I:xqq.wav);Y2,fs2=audioread(I:zjk.wav); %读取两段不同的音频y1=Y1(:,1);y2=Y2(:,1); %取单声道T=0.1;if length(y1)length(y2) y2=y2;zeros(length(y1)-length(y2),1);%比较两段音频的长度,使两个音频长度相等endy1=zeros(T*fs2,1);y1;y2=y2;zeros(T*fs2,1);y3=y1+y2; %声音合成sound(y3,fs2);(5)回音效果x,fs=audioread(I:zjk.wav);n1=

6、0:2000;b=x(:,1); %产生单声道信号N=3;yy2=filter(1,1,zeros(1,80000/(N+1),0.7,b,zeros(1,40000);% 三次回声滤波器sound(yy2,fs);(6)男女变声定义voice函数功能:function Y=voice(x,f) %更改采样率使基频改变 f1降低;f1升高f=round(f*1000);d=resample(x,f,1000); %时长整合使语音文件恢复原来时长 W=400; Wov=W/2; Kmax=W*2; Wsim=Wov; xdecim=8; kdecim=2; X=d; F=f/1000; Ss =

7、W-Wov; xpts = size(X,2);ypts = round(xpts / F); Y = zeros(1, ypts); xfwin = (1:Wov)/(Wov+1); ovix = (1-Wov):0; newix = 1:(W-Wov);simix = (1:xdecim:Wsim) - Wsim; padX = zeros(1, Wsim), X, zeros(1,Kmax+W-Wov);Y(1:Wsim) = X(1:Wsim); lastxpos = 0; km = 0; for ypos = Wsim:Ss:(ypts-W) xpos = round(F * ypo

8、s); kmpred = km + (xpos - lastxpos); lastxpos = xpos; if (kmpred 1降调,为男声;1升调为女声3、傅里叶变换性质(1)尺度变换y,fs=audioread(I:zjk.wav); %读声音文件N=length(y); t=0:1/fs:(length(y)-1)/fs; %求出语音信号的长度Y=fft(2*y,N);%快速傅里叶变换AM=abs(Y)/(N/2);AM(1,:)=AM(1,:)/2;ff=(0:N-1)/N*fs;subplot(2,1,1);plot(t,2*y);subplot(2,1,2);plot(ff,A

9、M);尺度变换图如下: 图(2)尺度变换(2)抽取y,fs=audioread(I:zjk.wav);y1=y(:,1);y2=downsample(y1,1); %从第一项开始,等间隔1,对y1采样,得到的序列为y2y1p=fft(y1);y2p=fft(y2);n1=length(y1);w1=fs/n1*(0:n1-1);t1=(0:n1-1)/fs;n2=length(y2);w2=fs/n2*(0:n2-1);t2=10*(0:n2-1)/fs;subplot(2,1,2);plot(w2,abs(y2p);ylabel(幅值);xlabel(频率(hz));title(抽值后频谱)

10、;subplot(2,1,1);plot(w1,abs(y1p);ylabel(幅值);xlabel(频率(hz));title(原始频谱);图形如下: 图(3)抽取图形(3)插值y,fs=audioread(I:zjk.wav);y1=y(:,1);y2=dyadup(y1,1); %从y1中第一个元素开始采样y1p=fft(y1);y2p=fft(y2);n1=length(y1);w1=fs/n1*(0:n1-1);t1=(0:n1-1)/fs;n2=length(y2);w2=fs/n2*(0:n2-1);t2=10*(0:n2-1)/fs;subplot(2,1,2);plot(w2

11、,abs(y2p);ylabel(幅值);xlabel(频率(hz);title(插值后频谱);subplot(2,1,1);plot(w1,abs(y1p);ylabel(幅值);xlabel(频率(hz);title(原始频谱);图形如下: 图(4)插值图形(4)调制与解调f1,fs=audioread(I:zjk.wav); figure(1); subplot(2,1,1); N=length(f1); t=0:1/fs:(N-1)/fs;plot(t,f1); title(信息信号的时域波形);fy1=fft(f1);w1=0:fs/(N-1):fs;subplot(2,1,2);

12、plot(w1,abs(fy1);title(信息信号的频谱); f2=sin(22000*pi*t); %高频正弦载波figure(2);subplot(3,1,1); fy2 = fft(f2);N2=length(f2);w2=fs/N*0:N-1;plot(w2,abs(abs(fy2); title(载波信号的频谱);f1=f1(:,1);f3=f1.*f2; %两段波形相乘subplot(3,1,2); fy3 = fft(f3);plot(w1,abs(abs(fy3); title(已调信号的频谱);f4=f3.*f2;subplot(3,1,3);fy4=fft(f4);pl

13、ot(w1,abs(abs(fy4);title(解调信号的频谱);解调后波形失真,用滤波器对其进行过滤:fp1=0; fs1=5000; As1=100;wp1=2*pi*fp1/fs; ws1=2*pi*fs1/fs; BF1=ws1-wp1;wc1=(wp1+ws1)/2;M1=ceil(As1-7.95)/(2.286*BF1)+1;N1=M1+1;beta1=0.1102*(As1-8.7); Window=(kaiser(N1,beta1); b1=fir1(M1,wc1/pi,Window);figure(3);subplot(2,1,1);f4_low = filter(b1,

14、1, f4);plot(t,f4_low);title(滤波后的解调信号时域波形);f5=fft(f4_low);subplot(2,1,2);plot(w1,abs(f5);title(滤波后的解调信号频谱); 图(5)信号图 图(6)解调图 图(7)滤波解调图4、信号加噪与滤波(1)信号加噪y,Fs=audioread(I:zjk.wav);fs=Fs %语音信号采样频率为FsL=length(y); %计算音频信号的长度noise=0.1*randn(L,1); %产生等长度的随机噪声信号(这里的噪声的大小取决于随机函数的幅度倍数)Y=y+noise; %将两个信号叠加成一个新的信号加噪

15、声处理 sound(Y,fs) %对加噪后的语音信号进行分析n=length(y); %选取变换的点数 Yp=fft(Y,n); %对n点进行傅里叶变换到频域 f=fs*(0:n/2-1)/n; % 对应点的频率figure subplot(2,2,1); plot(y_z); %加噪语音信号的时域波形图title(加噪语音信号时域波形); xlabel(时间轴); ylabel(幅值 A);subplot(2,2,2); plot(f,abs(Yp(1:n/2); %加噪语音信号的频谱图title(加噪语音信号频谱图); xlabel(频率Hz); ylabel(频率幅值);加噪后图形如下:

16、 图(8)加噪图形(2)低通滤波器利用FADTOOL生成滤波器function Hd = lowpass%LOWPASS Returns a discrete-time filter object.% MATLAB Code% Generated by MATLAB(R) 8.5 and the Signal Processing Toolbox 7.0.% Generated on: 04-Jul-2016 21:10:25% Equiripple Lowpass filter designed using the FIRPM function.% All frequency values

17、are in Hz.Fs = 44100; % Sampling FrequencyFpass = 1000; % Passband FrequencyFstop = 1200; % Stopband FrequencyDpass = 0.057501127785; % Passband RippleDstop = 1e-05; % Stopband Attenuationdens = 20; % Density Factor% Calculate the order from the parameters using FIRPMORD.N, Fo, Ao, W = firpmord(Fpas

18、s, Fstop/(Fs/2), 1 0, Dpass, Dstop);% Calculate the coefficients using the FIRPM function.b = firpm(N, Fo, Ao, W, dens);Hd = dfilt.dffir(b);% EOF调用lowpass进行滤波Hd=lowpass; %低通滤波a=filter(Hd,Y);sound(a,fs) %对滤波后的语音信号进行分析 ap=fft(a,n); %对n点进行傅里叶变换到频域 f=fs*(0:n/2-1)/n; % 对应点的频率 subplot(2,2,3); plot(a); %滤波

19、后语音信号的时域波形图title(滤波后语音信号时域波形); xlabel(时间轴) ylabel(幅值 A) subplot(2,2,4); plot(f,abs(ap(1:n/2); %滤波后语音信号的频谱图title(滤波后语音信号频谱图); xlabel(频率Hz); ylabel(频率幅值);图形如下: 图(9)低通图(3)高通滤波利用FDATOOL生成高通滤波器function Hd = highpass%HIGHPASS Returns a discrete-time filter object.% MATLAB Code% Generated by MATLAB(R) 8.5

20、and the Signal Processing Toolbox 7.0.% Generated on: 04-Jul-2016 20:31:00% Equiripple Highpass filter designed using the FIRPM function.% All frequency values are in Hz.Fs = 44100; % Sampling FrequencyFstop = 4800; % Stopband FrequencyFpass = 5000; % Passband FrequencyDstop = 1e-05; % Stopband Atte

21、nuationDpass = 0.057501127785; % Passband Rippledens = 20; % Density Factor% Calculate the order from the parameters using FIRPMORD.N, Fo, Ao, W = firpmord(Fstop, Fpass/(Fs/2), 0 1, Dstop, Dpass);% Calculate the coefficients using the FIRPM function.b = firpm(N, Fo, Ao, W, dens);Hd = dfilt.dffir(b);

22、% EOF调用highpassHd=highpass; %高通滤波a=filter(Hd,y_z);sound(a,fs) %对滤波后的语音信号进行分析 ap=fft(a,n); %对n点进行傅里叶变换到频域 f=fs*(0:n/2-1)/n; %对应点的频率 subplot(2,2,3); plot(a); %滤波后语音信号的时域波形图title(滤波后语音信号时域波形); xlabel(时间轴) ylabel(幅值 A) subplot(2,2,4); plot(f,abs(ap(1:n/2); %滤波后语音信号的频谱图title(滤波后语音信号频谱图); xlabel(频率Hz); yl

23、abel(频率幅值);图形如下: 图(10)高通图(4)带通滤波利用FDATOOL生成带通滤波器function Hd = bandpass%BANDPASS Returns a discrete-time filter object.% MATLAB Code% Generated by MATLAB(R) 8.5 and the Signal Processing Toolbox 7.0.% Generated on: 04-Jul-2016 20:45:53% Equiripple Bandpass filter designed using the FIRPM function.% A

24、ll frequency values are in Hz.Fs = 44100; % Sampling FrequencyFstop1 = 100; % First Stopband FrequencyFpass1 = 1200; % First Passband FrequencyFpass2 = 3000; % Second Passband FrequencyFstop2 = 3200; % Second Stopband FrequencyDstop1 = 1e-05; % First Stopband AttenuationDpass = 0.057501127785; % Pas

25、sband RippleDstop2 = 1e-05; % Second Stopband Attenuationdens = 20; % Density Factor% Calculate the order from the parameters using FIRPMORD.N, Fo, Ao, W = firpmord(Fstop1 Fpass1 Fpass2 Fstop2/(Fs/2), 0 1 . 0, Dstop1 Dpass Dstop2);% Calculate the coefficients using the FIRPM function.b = firpm(N, Fo

26、, Ao, W, dens);Hd = dfilt.dffir(b);% EOF调用bandpassHd=bandpass; %带通滤波a=filter(Hd,y_z);sound(a,fs) %对滤波后的语音信号进行分析 ap=fft(a,n); %对n点进行傅里叶变换到频域 f=fs*(0:n/2-1)/n; % 对应点的频率 subplot(2,2,3); plot(a); %滤波后语音信号的时域波形图title(滤波后语音信号时域波形); xlabel(时间轴) ylabel(幅值 A) subplot(2,2,4); plot(f,abs(ap(1:n/2); %滤波后语音信号的频谱

27、图title(滤波后语音信号频谱图); xlabel(频率Hz); ylabel(频率幅值);图形如下: 图(11)带通图五、总结通过为期两周的MATLAB课程设计,我对MATLAB这个仿真软件有了更进一步的认识和了解。在这两周时间里,我通过自己摸索,查阅资料,并且在指导老师的指导下完成了:语音信号的采集及分析;给原始信号加上一个高频噪声;设计一个滤波器,滤除高频噪声;并最终将课程设计报告总结完毕。在整个设计过程中我懂得了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的

28、成功喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质六、参考文献1 周利清,苏菲数字信号处理基础北京:北京邮电大学出版社,2005 2 姚东.MATLAB及在电子信息课程中的应用M.第二版.北京:北京电子工业出版社,2000 3 高西全,丁玉美数字信号处理第3版北京:西安电子科技大学出版社,2008 4 肖伟、刘忠. MATLAB程序设计与应用M.北京:清华大学出版社 2005 5 张智星.MATLAB程序设计与应用.北京:清华大学出版社,200221

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!