1、信号课程设计报告信号与线性系统课程设计报告课题五 数字语音信号分析系统设计班级:通信C111姓名:刘晓泽学号:115919成绩:指导教师:王霞日期:2014年1月8日课题五 数字语音信号分析系统设计摘要:用matlab对语音信号进行处理,是一项很重要,实用度很广的方法,本课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。即:对原始语音信号进行读取;对语音信号进行快速傅里叶变换,分析频谱,画出时域和频域波形;比较分析加噪声前后的语音信号,采用IIR低通滤波器,进行滤波,时域、频域分析比较,并回放声音;最后采用GUI实现以上功能。选作部分,进行信号的分帧,调用enframe函数进行,
2、部分时域参数计算;采用LabVIEW进行仿真设计,实现以上功能,给出系统的前面板和程序框图,并记录仿真结果。关键词:低通滤波器,FFT,噪声,GUI,LabVIEW1课程设计的目的、意义1.1课程设计目的(1)掌握Matlab软件的特点和使用方法。(2)掌握利用Matlab分析信号和系统的时域、频域特性的方法;(3)掌握数字滤波器的设计方法及应用。(4)了解语音信号的特性及分析方法。(5)了解LabVIEW虚拟仪器的特点,了解采用LabVIEW进行仿真的方法。(6)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。1.2 课程设计意义语音信号分析是一门比较实用的电子工程的专业工程
3、,语音是人类获取信息的重要来源和利用信息的重要手段,通过语音相互传递信息是人类最重要的基本功能之一。语言是人类特有的功能,语音信号处理是研究数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域设计面很广的交叉学科。语音信号处理越来收到人们的广泛的研究,学会用matlaB进行语音信号的处理既简便又可以实现多种功能,是一种应该掌握的技术。2 设计任务及技术指标2.1设计任务利用Matlab设计一个简单的数字语音信号分析系统,利用GUI设计友好的图形用户界面,实现数字语音信号读取,时域波形显示,频谱分析,设计数字滤波器滤除噪声,对语音信号的参数进行计算分析等功
4、能。具体任务如下:(1)对原始数字语音信号进行读取。(2)对原始数字语音信号加入干扰噪声,画出原始信号及带噪信号的时域波形,利用FFT进行频域分析,画出相应波形。(3)针对数字语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。(4)对噪声滤除前后的语音进行分析。(5)设计图形用户界面(包含以上功能)。选作:(1)对语音信号时域参数进行计算。(2)采用LabVIEW进行仿真设计,实现系统的功能,要求给出系统的前面板和框图,并记录仿真结果。2.2设计技术指标低通滤波器的技术指标wp,ws,RP,AS;采样频率的技术指标FS3 设计方案论证3.1傅里叶变换的选择DFT和FFT之间,我选择了FFT
5、,FFT本身在matlab中存在,简单了很多。3.2滤波器的选择在选择合适的滤波器时我选择了IIR。相对FIR滤波器来说,IIR数字滤波器是利用模拟滤波器成熟的理论及设计图表进行设计的,保留了一些典型模拟滤波器优良的幅度特性。4 设计内容4.1必做部分利用MATLAB软件对语音信号进行频谱分析;并对语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声。 (1)根据设计要求分析系统功能,掌握设计中所需理论及设计原理(抽样频率、量化位数的概念,抽样定理;信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较)。 (2)对语音信号做FFT,进行频谱分析,画出
6、信号的时域波形图和频谱图。(3)对语音信号加入干扰噪声,对语音信号进行回放(利用sound函数),感觉加噪前后声音的变化。对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析。(4)根据带噪语音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性。用所设计的滤波器对带噪语音信号进行滤波,记录处理过程中所得各种波形及频谱图。(5)对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行分析。(6)利用GUI设计友好的图形用户界面。要求主界面上包括语音的波形显示及播放按钮,滤波器参数设置框及滤波功能按钮;滤波
7、前后语音信号时域波形及频谱的显示,滤波器幅频特性的显示;语音信号时域参数计算等功能。其中波形及频谱显示可包含在主界面中,也可在新建图形窗口中完成。4.2 选作部分(1) 语音信号部分时域参数计算。对语音信号进行分帧,分别取浊音帧和清音帧计算短时能量和短时平均过零率等参数,并对结果进行比较分析。(2)采用LabVIEW进行仿真设计,实现系统的功能,包括语音文件的读取及播放、滤波前后语音信号时域波形及频谱的显示、滤波器设计、滤波器幅频特性的显示等功能,要求给出系统的前面板和程序框图,并记录仿真结果。5 实验结果与分析(1)对语音信号进行读取,画出原始信号的时域波形和频域波形y,fs,nbits=w
8、avread(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
9、(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);
10、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(振幅);grid on;subplot(2,1,2);plot(f,180/pi*unwrap(angle(h);xlabel(频率/Hz);ylabel(相位/o);grid on;wp=2*pi*2000,ws=2*pi*3500,Rp=2,As=60;
11、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);
12、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)对语音信号进行分帧,分别对浊音帧和清音帧的短时能量和平均过零率进行计算,并对结果进行分析。function f=enframe(x,len,i
13、nc)nx=length(x(:);if(nargin=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;su
14、bplot(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)设计图形用户界面function varargout = gui(varargin)% GUI M-file for gui.fig% GUI, by itself, creates a new GUI or raises the
15、existing% singleton*.% H = GUI returns the handle to a new GUI or the handle to% the existing singleton*.% GUI(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in GUI.M with the given input arguments.% GUI(Property,Value,.) creates a new GUI or raises the% existing sing
16、leton*. Starting from the left, property value pairs are% applied to the GUI before gui_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to gui_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI a
17、llows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help gui % Last Modified by GUIDE v2.5 02-Jan-2014 17:57:41 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Sing
18、leton, gui_Singleton, . gui_OpeningFcn, gui_OpeningFcn, . gui_OutputFcn, gui_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, va
19、rargin:);end% End initialization code - DO NOT EDIT % - Executes just before gui is made visible.function gui_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLA
20、B% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to gui (see VARARGIN) % Choose default command line output for guihandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes gui wait for user response (see UIRESUME)% ui
21、wait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = gui_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version o
22、f MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)%
23、eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global yfilename,pathname=uigetfile(*.wav,打开文件);str=strcat(pathname,filename);y=wavread(str);axes(handles.axes1);plot(y);Y=fft(y);axes(handles.axes2);plot(abs(Y); % - Executes
24、on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global ysound(y,16000); % - Executes on but
25、ton press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global yglobal y2global hn=0:length(y)-1;y2=y+h*c
26、os(0.9*pi*n);axes(handles.axes3);plot(y2);Y2=fft(y2);axes(handles.axes4);plot(abs(Y2);sound(y2,16000); % - Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future vers
27、ion of MATLAB% handles structure with handles and user data (see GUIDATA)global zglobal y2global y1global q1global q3global q5global q7global hif z=1 batewosi;else qiebixuefu;end% - Executes on selection change in lbq.function lbq_Callback(hObject, eventdata, handles)% hObject handle to lbq (see GCB
28、O)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,String) returns lbq contents as cell array% contentsget(hObject,Value) returns selected item from lbqglobal zz=get(handles.lbq,value) % - Executes during object creation, after setting all properties.function lbq_CreateFcn(hObject, eventdata, handl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1