信号课程设计报告.docx

上传人:b****6 文档编号:8252997 上传时间:2023-01-30 格式:DOCX 页数:27 大小:1.51MB
下载 相关 举报
信号课程设计报告.docx_第1页
第1页 / 共27页
信号课程设计报告.docx_第2页
第2页 / 共27页
信号课程设计报告.docx_第3页
第3页 / 共27页
信号课程设计报告.docx_第4页
第4页 / 共27页
信号课程设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

信号课程设计报告.docx

《信号课程设计报告.docx》由会员分享,可在线阅读,更多相关《信号课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

信号课程设计报告.docx

信号课程设计报告

信号与线性系统课程设计报告

课题五数字语音信号分析系统设计

 

班级:

通信C111

姓名:

刘晓泽

学号:

115919

成绩:

指导教师:

王霞

日期:

2014年1月8日

 

课题五数字语音信号分析系统设计

摘要:

用matlab对语音信号进行处理,是一项很重要,实用度很广的方法,本课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。

即:

对原始语音信号进行读取;对语音信号进行快速傅里叶变换,分析频谱,画出时域和频域波形;比较分析加噪声前后的语音信号,采用IIR低通滤波器,进行滤波,时域、频域分析比较,并回放声音;最后采用GUI实现以上功能。

选作部分,进行信号的分帧,调用enframe函数进行,部分时域参数计算;采用LabVIEW进行仿真设计,实现以上功能,给出系统的前面板和程序框图,并记录仿真结果。

关键词:

低通滤波器,FFT,噪声,GUI,LabVIEW

1课程设计的目的、意义

1.1课程设计目的

(1)掌握Matlab软件的特点和使用方法。

(2)掌握利用Matlab分析信号和系统的时域、频域特性的方法;

(3)掌握数字滤波器的设计方法及应用。

(4)了解语音信号的特性及分析方法。

(5)了解LabVIEW虚拟仪器的特点,了解采用LabVIEW进行仿真的方法。

(6)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。

1.2课程设计意义

语音信号分析是一门比较实用的电子工程的专业工程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语音相互传递信息是人类最重要的基本功能之一。

语言是人类特有的功能,语音信号处理是研究数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域设计面很广的交叉学科。

语音信号处理越来收到人们的广泛的研究,学会用matlaB进行语音信号的处理既简便又可以实现多种功能,是一种应该掌握的技术。

2设计任务及技术指标

2.1设计任务

利用Matlab设计一个简单的数字语音信号分析系统,利用GUI设计友好的图形用户界面,实现数字语音信号读取,时域波形显示,频谱分析,设计数字滤波器滤除噪声,对语音信号的参数进行计算分析等功能。

具体任务如下:

(1)对原始数字语音信号进行读取。

(2)对原始数字语音信号加入干扰噪声,画出原始信号及带噪信号的时域波形,利用FFT进行频域分析,画出相应波形。

(3)针对数字语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。

(4)对噪声滤除前后的语音进行分析。

(5)设计图形用户界面(包含以上功能)。

选作:

(1)对语音信号时域参数进行计算。

(2)采用LabVIEW进行仿真设计,实现系统的功能,要求给出系统的前面板和框图,并记录仿真结果。

2.2设计技术指标

低通滤波器的技术指标wp,ws,RP,AS;采样频率的技术指标FS

3设计方案论证

3.1傅里叶变换的选择

DFT和FFT之间,我选择了FFT,FFT本身在matlab中存在,简单了很多。

3.2滤波器的选择

在选择合适的滤波器时我选择了IIR。

相对FIR滤波器来说,IIR数字滤波器是利用模拟滤波器成熟的理论及设计图表进行设计的,保留了一些典型模拟滤波器优良的幅度特性。

4设计内容

4.1必做部分

利用MATLAB软件对语音信号进行频谱分析;并对语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声。

(1)根据设计要求分析系统功能,掌握设计中所需理论及设计原理(抽样频率、量化位数的概念,抽样定理;信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较)。

(2)对语音信号做FFT,进行频谱分析,画出信号的时域波形图和频谱图。

(3)对语音信号加入干扰噪声,对语音信号进行回放(利用sound函数),感觉加噪前后声音的变化。

对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析。

(4)根据带噪语音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性。

用所设计的滤波器对带噪语音信号进行滤波,记录处理过程中所得各种波形及频谱图。

(5)对语音信号进行回放,感觉滤波前后声音的变化。

比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行分析。

(6)利用GUI设计友好的图形用户界面。

要求主界面上包括语音的波形显示及播放按钮,滤波器参数设置框及滤波功能按钮;滤波前后语音信号时域波形及频谱的显示,滤波器幅频特性的显示;语音信号时域参数计算等功能。

其中波形及频谱显示可包含在主界面中,也可在新建图形窗口中完成。

4.2选作部分

(1)语音信号部分时域参数计算。

对语音信号进行分帧,分别取浊音帧和清音帧计算短时能量和短时平均过零率等参数,并对结果进行比较分析。

(2)采用LabVIEW进行仿真设计,实现系统的功能,包括语音文件的读取及播放、滤波前后语音信号时域波形及频谱的显示、滤波器设计、滤波器幅频特性的显示等功能,要求给出系统的前面板和程序框图,并记录仿真结果。

5实验结果与分析

(1)对语音信号进行读取,画出原始信号的时域波形和频域波形

[y,fs,nbits]=wavread('jia1.wav')

subplot(2,1,1);

plot(y);

title('原始信号的时域波形');

Y=fft(y);

subplot(2,1,2);

plot(abs(Y));

title('原始信号的频域波形');

分析:

 

(2)对原始信号加入单一干扰噪声和白噪声,并进行回放,感觉加噪声前后的变化,画出加入噪声信号的时域波形和频域波形,对结果进行分析。

n=0:

length(y)-1;

y2=y'+0.01*cos(0.9*pi*n);

sound(y2,16000);

subplot(2,1,1)

plot(y2)

title('加噪声后时域波形')

Y2=fft(y2);

subplot(2,1,2)

plot(abs(Y2))

title('加噪声后频域波形')

n=length(y);

y3=y'+0.01*randn(1,n);

sound(y3,16000);

subplot(2,1,1);

plot(y3);

title('加噪声后时域波形');

subplot(2,1,2);

Y3=fft(y3);

plot(abs(Y3));

title('加噪声后频域波形');

分析:

 

(3)根据带噪音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的幅频特性和相频特性。

wp=2000*2*pi;

ws=3500*2*pi;

Rp=3,Rs=25;

Fs=16000;

Nn=128.0;

[N,wn]=buttord(wp,ws,Rp,Rs,'s');

[z,p,k]=buttap(N);

[Bap,Aap]=zp2tf(z,p,k);

[b,a]=lp2lp(Bap,Aap,wn);

[bz,az]=impinvar(b,a,Fs);

figure;

[h,f]=freqz(bz,az,Nn,Fs);

subplot(2,1,1);plot(f,20*log10(abs(h)));

xlabel('频率/Hz');ylabel('振幅');

gridon;

subplot(2,1,2);plot(f,180/pi*unwrap(angle(h)));

xlabel('频率/Hz');ylabel('相位/^o');

gridon;

wp=2*pi*2000,ws=2*pi*3500,Rp=2,As=60;

[N1,Wp1]=cheb1ord(wp,ws,Rp,As,'s');

[B1,A1]=cheby1(N1,Rp,Wp1,'s');

Fs=18000;

Nn=128;

[bz,az]=impinvar(B1,A1,Fs);

figure;

[h,f]=freqz(bz,az,Nn,Fs);

subplot(2,1,1);

plot(f,20*log10(abs(h)));

subplot(2,1,2);

plot(f,180/pi*unwrap(angle(h)));

分析:

 

(4)用所设计的滤波器进行滤波,并画出时域和频域波形,对结果进行分析。

y1=filter(bz,az,y2);

sound(y1,16000);

subplot(2,1,1);

plot(y1);

title('低通滤波后的时域波形');

Y1=fft(y1);

subplot(2,1,2);

plot(abs(Y1));

title('低通滤波后的频域波形');

 

p1=filter(bz,az,y2);

sound(p1,16000);

subplot(2,1,1);

plot(p1);

title('切比雪夫滤波后的时域波形');

P1=fft(y1);

subplot(2,1,2);

plot(abs(P1));

title('切比雪夫滤波后的频域波形');

 

分析:

 

(5)对语音信号进行分帧,分别对浊音帧和清音帧的短时能量和平均过零率进行计算,并对结果进行分析。

functionf=enframe(x,len,inc)

nx=length(x(:

));

if(nargin<3)

inc=len;

end

nf=fix((nx-len+inc)/inc);

f=zeros(nf,len);

indf=inc*(0:

(nf-1)).';

inds=(1:

len);

f(:

)=x(indf(:

ones(1,len))+inds(ones(nf,1),:

));

f=f';

F1=enframe(y,200);

eng=sum(F1.^2);

subplot(2,2,1);plot(eng);xlabel('帧');ylabel('短时能量');title('N=200');

F2=enframe(y,150);

eng=sum(F2.^2);

subplot(2,2,2);plot(eng);xlabel('帧');ylabel('短时能量');title('N=150');

F3=enframe(y,100);

eng=sum(F3.^2);

subplot(2,2,3);plot(eng);xlabel('帧');ylabel('短时能量');title('N=100');

F4=enframe(y,50);

eng=sum(F4.^2);

subplot(2,2,4);plot(eng);xlabel('帧');ylabel('短时能量');title('N=50');

分析:

F1=enframe(y,200);

S1=F1>=0;

K1=diff(S1);

Z1=sum(abs(K1))./2;

subplot(2,2,1);plot(Z1);xlabel('帧');ylabel('短时平均过零率');title('N=200');

F2=enframe(y,150);

S2=F2>=0;

K2=diff(S2);

Z2=sum(abs(K2))./2;

subplot(2,2,2);plot(Z2);xlabel('帧');ylabel('短时平均过零率');title('N=150');

F3=enframe(y,100);

S3=F3>=0;

K3=diff(S3);

Z3=sum(abs(K3))./2;

subplot(2,2,3);plot(Z3);xlabel('帧');ylabel('短时平均过零率');title('N=100');

F4=enframe(y,50);

S4=F4>=0;

K4=diff(S4);

Z4=sum(abs(K4))./2;

subplot(2,2,4);plot(Z4);xlabel('帧');ylabel('短时平均过零率');title('N=50');

分析:

 

(6)设计图形用户界面

functionvarargout=gui(varargin)

%GUIM-fileforgui.fig

%GUI,byitself,createsanewGUIorraisestheexisting

%singleton*.

%

%H=GUIreturnsthehandletoanewGUIorthehandleto

%theexistingsingleton*.

%

%GUI('CALLBACK',hObject,eventData,handles,...)callsthelocal

%functionnamedCALLBACKinGUI.Mwiththegiveninputarguments.

%

%GUI('Property','Value',...)createsanewGUIorraisesthe

%existingsingleton*.Startingfromtheleft,propertyvaluepairsare

%appliedtotheGUIbeforegui_OpeningFcngetscalled.An

%unrecognizedpropertynameorinvalidvaluemakespropertyapplication

%stop.Allinputsarepassedtogui_OpeningFcnviavarargin.

%

%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone

%instancetorun(singleton)".

%

%Seealso:

GUIDE,GUIDATA,GUIHANDLES

%Edittheabovetexttomodifytheresponsetohelpgui

%LastModifiedbyGUIDEv2.502-Jan-201417:

57:

41

%Begininitializationcode-DONOTEDIT

gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,...

'gui_Singleton',gui_Singleton,...

'gui_OpeningFcn',@gui_OpeningFcn,...

'gui_OutputFcn',@gui_OutputFcn,...

'gui_LayoutFcn',[],...

'gui_Callback',[]);

ifnargin&&ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

});

end

%Endinitializationcode-DONOTEDIT

%---Executesjustbeforeguiismadevisible.

functiongui_OpeningFcn(hObject,eventdata,handles,varargin)

%Thisfunctionhasnooutputargs,seeOutputFcn.

%hObjecthandletofigure

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

%varargincommandlineargumentstogui(seeVARARGIN)

%Choosedefaultcommandlineoutputforgui

handles.output=hObject;

%Updatehandlesstructure

guidata(hObject,handles);

%UIWAITmakesguiwaitforuserresponse(seeUIRESUME)

%uiwait(handles.figure1);

%---Outputsfromthisfunctionarereturnedtothecommandline.

functionvarargout=gui_OutputFcn(hObject,eventdata,handles)

%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);

%hObjecthandletofigure

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

%Getdefaultcommandlineoutputfromhandlesstructure

varargout{1}=handles.output;

%---Executesonbuttonpressinpushbutton1.

functionpushbutton1_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton1(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globaly

[filename,pathname]=uigetfile('*.wav','打开文件');

str=strcat(pathname,filename);

y=wavread(str);

axes(handles.axes1);

plot(y);

Y=fft(y);

axes(handles.axes2);

plot(abs(Y));

%---Executesonbuttonpressinpushbutton2.

functionpushbutton2_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton2(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globaly

sound(y,16000);

%---Executesonbuttonpressinpushbutton3.

functionpushbutton3_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton3(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globaly

globaly2

globalh

n=0:

length(y)-1;

y2=y'+h*cos(0.9*pi*n);

axes(handles.axes3);

plot(y2);

Y2=fft(y2);

axes(handles.axes4);

plot(abs(Y2));

sound(y2,16000);

%---Executesonbuttonpressinpushbutton4.

functionpushbutton4_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton4(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globalz

globaly2

globaly1

globalq1

globalq3

globalq5

globalq7

globalh

ifz==1

batewosi;

else

qiebixuefu;

end

%---Executesonselectionchangeinlbq.

functionlbq_Callback(hObject,eventdata,handles)

%hObjecthandletolbq(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

%Hints:

contents=cellstr(get(hObject,'String'))returnslbqcontentsascellarray

%contents{get(hObject,'Value')}returnsselecteditemfromlbq

globalz

z=get(handles.lbq,'value')

%---Executesduringobjectcreation,aftersettingallproperties.

functionlbq_CreateFcn(hObject,eventdata,handl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1