语音信号处理的设计课程设计说明书_第1页
语音信号处理的设计课程设计说明书_第2页
语音信号处理的设计课程设计说明书_第3页
语音信号处理的设计课程设计说明书_第4页
语音信号处理的设计课程设计说明书_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学《专业课程设计3(数字信号处理)》课程设计说明书-2目录TOC\o"2-3"\h\z\u\t"标题1,1"1 技术要求 -1-2 基本原理 -1-2.1 语音信号时域波形和频谱特性 -1-2.2 窗函数法和双线性变换法 -2-2.2.1 窗函数法的设计步骤 -2-2.2.2 双线性变换法 -2-2.3 GUI界面设计和MATLAB编程 -3-2.3.1 GUI界面 -3-2.3.2 MATLAB编程 -3-3 建立模型描述 -3-3.1 系统模型描述 -3-3.1.1 实时语音信号的采集和保存 -4-3.1.2 语音信号分析 -5-3.1.3 分析结果的动态输出 -5-3.2 系统模型建立 -6-3.2.1 GUI界面设计 -6-4 程序流程图 -8-5 源程序代码 -9-6 调试过程及结论 -14-7 心得体会 -20-8 思考题 -21-9 参考文献 -22-语音信号处理的设计技术要求录制一段个人的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。基本原理语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是要得到某些语音特征参数以便高效地传输或存储;或者通过某种运算以达到某种用途的要求,例如人工合成语音、辨别出说话者、识别出讲话的内容等。本次课程设计涉及到语音信号的时域波形和频谱特性,窗函数法和双线性变换法,以及GUI界面设计和MATLAB编程等方面的理论知识,下面从这几方面进行简单的介绍。语音信号时域波形和频谱特性在时域里,语音信号可以直接用他的时间波形表示出来,通过观察时间波形可以看出语音信号的一些重要特性。语音信号是一个随机非平稳过程,具有短时平稳性,一般认为在10-30ms内语音信号特性基本是不变的,或者变化很缓慢。语音信号是时变信号,所以其频谱也是随时间变化的。但是由于语音信号随时间变化是很缓慢的,因而在一段时间内(如10-30ms之间,即所谓的一帧之内)可以认为其频谱是固定不变的,这种频谱又称为短时谱。本次课程设计主要工作是设计滤波器实现对语音信号的滤波,并观察滤波前后信号的时域和频谱变化,为了简化处理,不对语音信号进行加窗分帧处理,而仅利用傅里叶变换(FFT)代替短时傅里叶变换(STFT)。窗函数法和双线性变换法窗函数法的设计步骤窗函数法设计FIR滤波器的主要步骤如下:(1)给出希望设计的滤波器的频率频率响应Hd(ejw);(2)根据允许的过渡带宽度及阻带衰减,初步选定窗函数及其长度N;(3)根据技术要求确定待求滤波器的单位取样响应hd(n),。(4)将hd(n)与窗函数相乘得FIR数字滤波器的单位取样响应h(n),。(5)按如下方法计算FIR数字滤波器的频率响应,并验证是否达到所要求的技术指标:或。双线性变换法双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法,为了克服映射这一缺点,首先把整个平面压缩变换到某一中介的平面的一条横带里(宽度为,即从到),其次再通过标准变换关系将此横带变换到整个z平面上,这样就是s平面与z平面是一一对应的关系,消除了多值变换性,从根本上消除了频谱混叠现象。s平面与z平面之间的单值映射关系:其中变换常数c一般取为2/T,上述变换就成为双线性变换。由于在双线性变换中,,即模拟角频率和数字角频率之间存在非线性关系,所以双线性变换避免了混叠失真,却又带来了非线性的频率失真。GUI界面设计和MATLAB编程GUI界面GUI(GraphicalUserInterfaces)即图形用户界面,是由窗口、光标、按键、菜单、文字说明对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,如实现计算、绘图等。MATLAB中设计GUI程序的前台界面有全命令行的M文件编程和GUIDE辅助的图形界面设计两种方式。由于使用GUIDE建立GUI界面相对简单,故本次课程设计采用GUIDE创建GUI界面并进行相关回调函数的编程。MATLAB编程本次课程设计的主要工作量在于GUI界面回调函数(callback)的编写,程序界面越丰富,编程量越大,代码也相对越长。编程中用到与语音信号处理相关的函数有wavrecord、wavplay、wavwrite等,它们分别实现录音、播放和保存的功能。其他未用到的如wavread函数实现语音数据的读取,sound函数也可以实现语音播放的功能。关于滤波器这块,filter函数实现滤波,freqz函数绘制频率响应,bilinear函数实现双线性变换,fir1函数实现窗函数滤波。由于原理较简单,其他相关函数及其功能可以参见所附源程序代码及注释。建立模型描述系统模型描述根据技术要求,我设计了一个基于MATLAB的实时语音可视化时频域分析系统,该系统可以通过计算机声卡和语音采集工具箱采集实时的语音信号,并通过MATLAB进行时频域分析处理以及滤波处理后,将语音信号进行可视化输出。同时使用MATLAB的GUI集成开发环境GUIDE进行界面的设计,通过简单的图形界面简化操作过程及参数的修改和调试。GUI界面设计主要包括语音信号采集、播放和保存部分,滤波处理部分和图形动态显示输出部分等。语音信号采集部分可以设置采样时间和采样频率,并可实现语音信号的播放和保存功能。滤波处理部分可以选用窗函数法或双线性变换法,实现语音信号的低通、高通、带通、带阻滤波,实现语音信号的波形变换。图形动态显示输出部分实现原始语音信号波形、原始信号频谱、滤波后语音信号波形、滤波后信号频谱以及所设计的滤波器的频率响应的绘制。由上述分析可知,为了实现系统的各项功能,设计的系统结构如下图1所示。下面将从这三个部分对系统的原理和工作过程进行介绍。图SEQ图\*ARABIC1系统结构图实时语音信号的采集和保存一般来说,语音信号的频率范围通常是在300Hz-3400Hz之间,在设定语音信号的采样频率时要注意采样频率必须要不小于最高频率的两倍,这时语音信号才能无失真的恢复。MATLAB中利用wavrecord函数实现语音信号的采集,在最终设计的GUI界面中可以通过可编辑文本框(EditText)控制采样时间和采样频率,实际中采样频率可以取8000Hz、11025Hz、22050Hz和44100Hz。利用wavwrite函数可以实现以指定的名字将语音信号以wav格式保存起来,同时,wavplay函数可以实现语音信号的播放。编程时将采样频率和采样的语音信号存储在全局变量(global)中,便于程序的后续处理。在“开始录音”按钮的回调函数中先读入输入可编辑文本框设置的参数,然后按指定录音时间和采样频率进行录音。语音信号分析语音信号分析包括傅里叶变换后的频谱分析和滤波后的时域波形和频谱。对采样所得的语音信号进行FFT变换后即可得到原始语音信号的频谱图,令原始语音信号通过所设计的滤波器,即可得到滤波后时域的语音信号,然后对该信号进行FFT变换,即可得到滤波后的频谱图。滤波器设计是本次课程设计的重点,可以采用窗函数法和双线性变换法,而每一种方法又有着低通、高通、带通、带阻等多种滤波器,在所设计的GUI界面中,低通滤波器和高通滤波器的相关参数可以通过可编辑文本框(EditText)输入,进而得到相应的滤波效果。由于带通和带阻滤波器的参数个数较低通和高通滤波器的多,回调函数中已设定好带通和带阻滤波器的参数,滤波器输入参数不会影响带通和带阻滤波器的效果。注意调试时滤波器输入参数中抽样频率必须与语音信号的采样频率相等,否则滤波后横坐标的频率范围与实际输入滤波器的截止频率有出入,例如录音时的采样频率为8000Hz,则滤波器抽样频率Fs也必须响应为8000Hz。在窗函数法中,可以通过下拉列表框选择相应的窗函数,从而实现利用不同的窗函数对原始语音信号的滤波处理,可供选择的窗函数有boxcar(矩形窗)、triang(三角窗)、hamming(汉明窗)、hanning(汉宁窗)、blackman(布莱克曼窗)和kaiser(凯泽窗)等。分析结果的动态输出采用GUI界面设计,设计输出界面以及控制界面,以达到语音信号的可视化处理并简化操作。通过GUI界面上的按钮可以实现原始语音信号波形、原始信号频谱、滤波后语音信号波形、滤波后信号频谱以及滤波器的频率响应的绘制,还可以实现指定滤波器的设计和语音信号滤波处理,以及录制指定时间的语音信号。系统模型建立GUI界面设计GUI界面设计主要步骤如下:(1)打开GUI界面编辑器,新建一个GUI文件。(2)在界面编辑器的GUI布局区中放入10个PushButton、5个Axes、2个Panel、2个ButtonGroup、6个RadioButton、11个EditText、1个Pop-upMenu和17个StaticText对象,将各GUI对象布局在合适位置。(3)在各对象上双击打开属性查看器,设置对象的相应属性,由于控件对象数量较多,下面仅对重要的控件属性分别进行说明:=1\*GB3①Pop-upMenu的String属性设置为“-请选择窗口类型-(回车)boxcar(回车)triang(回车)hamming(回车)hanning(回车)blackman(回车)kaiser”;=2\*GB3②11个EditText的String属性全部设为空字符串,对齐方式全部设为右对齐(right)方式,其Tag属性可以参考源程序代码部分查看;=3\*GB3③6个RadioButton控件属性如下表1所示;表SEQ表\*ARABIC1RadioButton属性TagStringValueradiobutton1窗函数法1.0radiobutton2双线性变换法0.0lowpass低通1.0highpass高通0.0bandpass带通0.0bandstop带阻0.0=4\*GB3④10个PushButton属性设置如下表2所示;表SEQ表\*ARABIC2PushButton属性TagStringFontsizerecord_speech开始录音10save_speech保存录音10续表2pushbutton3原始信号波形12pushbutton4原始信号频谱12pushbutton5滤波后波形12pushbutton6滤波后频谱12play_speech播放语音12pushbutton10滤波后语音12close关闭12pushbutton7滤波器频率响应12=5\*GB3⑤其他如StaticText、Panel、ButtonGroup以及Axes控件对象属性大部分取默认属性,仅相关控件的String属性需要修改,具体可参照所设计的GUI界面。(4)编写相关控件的回调函数,主要是编写10个PushButton按钮的回调函数,实现对语音信号可视化的时频域分析。经过上述主要步骤后,最终设计的GUI界面如图2所示,该GUI界面为GUI界面编辑器GUIDE中已编辑完成时的情况,各控件属性和位置布局如图。图SEQ图\*ARABIC2语音信号处理系统GUI界面程序流程图图SEQ图\*ARABIC3简化的程序流程图由于该语音信号处理系统涉及GUI界面设计,编写的回调函数多,故程序流程图较为复杂。但是最终运行时,只要点击相关的按钮即可调用相应回调函数实现相关的功能,简化的程序流程图如上图3所示。源程序代码(1)“开始录音”按钮对应的源代码如下:functionrecord_speech_Callback(hObject,eventdata,handles)globaldata;globalfs;t_str=get(handles.record_time,'string');%读取录音时间time=str2num(t_str);%字符型转换为数值型fs_str=get(handles.sample_rate,'string');%读取采样频率fs=str2num(fs_str);%字符型转换为数值型data=wavrecord(time*fs,fs,'double');%开始录音,时长是time,采样频率是fs(2)“保存录音”按钮对应的源代码如下:functionsave_speech_Callback(hObject,eventdata,handles)globaldata;globalfs;wavwrite(data,fs,'test_speech.wav');%以test_speech.wav文件名保存语音(3)“原始信号波形”按钮对应的源代码如下:functionpushbutton3_Callback(hObject,eventdata,handles)globaldata;globalfs;t=(0:length(data)-1)/fs;%计算数据时刻plot(handles.axes1,t,data);title(handles.axes1,'原始语音信号波形');xlabel(handles.axes1,'时间/s');ylabel(handles.axes1,'幅值')axis(handles.axes1,[0,ceil(max(t)),-1,1]);%限定坐标轴范围(4)“原始信号频谱”按钮对应的源代码如下:functionpushbutton4_Callback(hObject,eventdata,handles)globaldata;globalfs;xf=fft(data);%对语音信号进行傅里叶变换fm=3000*length(xf)/fs;%确定频谱图上限频率f=(0:fm)*fs/length(xf);%计算频谱图的频率值plot(handles.axes2,f,abs(xf(1:length(f))));title(handles.axes2,'原始信号频谱');xlabel(handles.axes2,'频率/Hz');ylabel(handles.axes2,'幅度');(5)“滤波后波形”按钮对应的源代码如下:functionpushbutton5_Callback(hObject,eventdata,handles)globaldata;globalfs;globalb;%globalbz;globalaz;globaly;%滤波后时域语音信号ifget(handles.radiobutton1,'value')%选择窗函数法设计滤波器y=filter(b,1,data);endifget(handles.radiobutton2,'value')%选择双线性变换法设计滤波器y=filter(bz,az,data);endt=(0:length(data)-1)/fs;%计算语音时刻值plot(handles.axes3,t,y);title(handles.axes3,'滤波后语音信号波形');xlabel(handles.axes3,'时间/s');ylabel(handles.axes3,'幅值')axis(handles.axes3,[0,ceil(max(t)),-1,1]);%限定坐标轴范围(6)“滤波后频谱”按钮对应的源代码如下:functionpushbutton6_Callback(hObject,eventdata,handles)globaldata;%原始语音信号globalfs;%语音信号采样频率globalb;globalbz;globalaz;ifget(handles.radiobutton1,'value')%选择窗函数法设计滤波器y=filter(b,1,data);endifget(handles.radiobutton2,'value')%选择双线性变换法设计滤波器y=filter(bz,az,data);endY=fft(y);fm=3000*length(Y)/fs;%确定频率上限值f=(0:fm)*fs/length(Y);%计算频谱图的频率值plot(handles.axes4,f,abs(Y(1:length(f))));title(handles.axes4,'滤波后信号频谱');xlabel(handles.axes4,'频率/Hz');ylabel(handles.axes4,'幅度');(7)“播放语音”按钮相应的源代码如下:functionplay_speech_Callback(hObject,eventdata,handles)globaldata;globalfs;wavplay(data,fs);%播放原始语音信号(8)“滤波后语音”按钮相应的源代码如下:functionplay_speech_Callback(hObject,eventdata,handles)globaldata;globalfs;wavplay(data,fs);%播放原始语音信号(9)“滤波器频率响应”按钮对应的源代码如下:functionpushbutton7_Callback(hObject,eventdata,handles)ifget(handles.radiobutton1,'value')%选择窗函数法设计滤波器fp1_str=get(handles.fp1,'string');fp1=str2num(fp1_str);%读取滤波器相关技术指标fs1_str=get(handles.fs1,'string');fs1=str2num(fs1_str);As1_str=get(handles.As1,'string');As1=str2num(As1_str);fs_sample1_str=get(handles.fs_sample1,'string');fs_sample1=str2num(fs_sample1_str);wp=2*pi*fp1/fs_sample1;ws=2*pi*fs1/fs_sample1;wo=abs(ws-wp);%求过渡带wc=(wp+ws)/2/pi;sel=get(handles.window_sel,'value');switchselcase2N=ceil(2*2*pi/wo);%由过段带宽决定N的值window=boxcar(N+1);%矩形窗case3N=ceil(4*2*pi/wo);window=triang(N+1);%三角窗case4N=ceil(4*2*pi/wo);window=hamming(N+1);%汉明窗case5N=ceil(4*2*pi/wo);window=hanning(N+1);%汉宁窗case6N=ceil(6*2*pi/wo);window=blackman(N+1);%布莱克曼窗case7N=ceil(5*2*pi/wo);beta=0.1102*(As1-0.87);window=kaiser(N+1,beta);%凯泽窗endglobalb;ifget(handles.lowpass,'value')%低通滤波器b=fir1(N,wc,window);endifget(handles.highpass,'value')%高通滤波器b=fir1(N,wc,'high');endifget(handles.bandpass,'value')%带通滤波器wp=[wp/2/piws/2/pi];b=fir1(2*N,wp);endifget(handles.bandstop,'value')%带阻滤波器wc=[0.40.6];b=fir1(2*96,wc,'stop');end[Hw,w]=freqz(b,1);%求滤波器的频率响应plot(handles.axes5,w/pi,20*log10(abs(Hw)));%绘制滤波器的频率响应曲线title(handles.axes5,'窗函数法滤波器频谱');xlabel(handles.axes5,'归一化频率');ylabel(handles.axes5,'幅度/dB');endifget(handles.radiobutton2,'value')%选择双线性变换法设计滤波器fp2_str=get(handles.fp2,'string');fp2=str2num(fp2_str);%读取滤波器的相关技术参数fs2_str=get(handles.fs2,'string');fs2=str2num(fs2_str);As2_str=get(handles.As2,'string');As2=str2num(As2_str);Ap2_str=get(handles.Ap2,'string');Ap2=str2num(Ap2_str);fs_sample2_str=get(handles.fs_sample2,'string');fs_sample2=str2num(fs_sample2_str);wp=2*pi*fp2/fs_sample2;ws=2*pi*fs2/fs_sample2;Ts=1/fs_sample2;wap=2/Ts*tan(wp/2);was=2/Ts*tan(ws/2);[N,wc]=buttord(wap,was,Ap2,As2,'s');[z,p,k]=buttap(N);[Bap,Aap]=zp2tf(z,p,k);ifget(handles.lowpass,'value')%低通滤波器[b,a]=lp2lp(Bap,Aap,wc);endifget(handles.highpass,'value')%高通滤波器[b,a]=lp2hp(Bap,Aap,wc);endifget(handles.bandpass,'value')%带通滤波器fp1=1200;fp2=3000;fs1=1000;fs2=3200;Fs=fs_sample2;%确定技术指标Ap=1;As=10;wp1=2*pi*fp1/Fs;wp2=2*pi*fp2/Fs;%归一化,求得数字边缘频率ws1=2*pi*fs1/Fs;ws2=2*pi*fs2/Fs;Ts=1/Fs;wap1=2/Ts*tan(wp1/2);wap2=2/Ts*tan(wp2/2);was1=2/Ts*tan(ws1/2);was2=2/Ts*tan(ws2/2);wap=[wap1,wap2];was=[was1,was2];W1=(wap1+was1)/2;W2=(wap2+was2)/2;Bw=W2-W1;%求带宽wo=sqrt(W1*W2);[N,wc]=buttord(wap,was,Ap,As,'s');[z,p,k]=buttap(N);[Bap,Aap]=zp2tf(z,p,k);[b,a]=lp2bp(Bap,Aap,wo,Bw);endifget(handles.bandstop,'value')%带阻滤波器fp1=1200;fp2=3000;fs1=1000;fs2=3200;Fs=fs_sample2;%确定技术指标Ap=1;As=10;wp1=2*pi*fp1/Fs;wp2=2*pi*fp2/Fs;%归一化,求得数字边缘频率ws1=2*pi*fs1/Fs;ws2=2*pi*fs2/Fs;Ts=1/Fs;wap1=2/Ts*tan(wp1/2);wap2=2/Ts*tan(wp2/2);was1=2/Ts*tan(ws1/2);was2=2/Ts*tan(ws2/2);wap=[wap1,wap2];was=[was1,was2];W1=(wap1+was1)/2;W2=(wap2+was2)/2;Bw=W2-W1;%求带宽wo=sqrt(W1*W2);[N,wc]=buttord(wap,was,Ap,As,'s');[z,p,k]=buttap(N);%创建butterworth模拟滤波器[Bap,Aap]=zp2tf(z,p,k);[b,a]=lp2bs(Bap,Aap,wo,Bw);endglobalbz;globalaz;[bz,az]=bilinear(b,a,fs_sample2);%利用双线性变换实现模拟滤波器到数字滤波器的转换[Hw2,w2]=freqz(bz,az);plot(handles.axes5,w2/pi,20*log10(abs(Hw2)));%绘制滤波器频率响应曲线title(handles.axes5,'双线性变换法滤波器频谱');xlabel(handles.axes5,'归一化频率');ylabel(handles.axes5,'幅度/dB');axis(handles.axes5,[0,1,-20,2]);%想定坐标轴范围end(10)“关闭”按钮对应的源代码如下:functionclose_Callback(hObject,eventdata,handles)%hObjecthandletoclose(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)clearglobal;%清除所有的全局变量closeall;%关闭窗口调试过程及结论初始运行时的语音信号处理的GUI界面如下图4所示,由图可以看出初始运行时默认选择窗函数法低通滤波器,窗函数法中Pop-upMenu显示“-请选择窗口类型-”。图SEQ图\*ARABIC4语音信号处理系统初始GUI界面以下所有的调试过程中所用的原始语音信号均为“武汉理工大学”录音,且设置的录音时间为5s,采样频率为11025Hz。当选择窗函数法低通滤波器且窗函数选为boxcar(矩形窗)时,设置滤波器采样频率Fs为11025Hz,通带截止频率fp为1000Hz,阻带截止频率为1200Hz,阻带衰减为120dB,进行相关处理后的图形如下图5所示。图SEQ图\*ARABIC5fp=1000Hz时低通滤波结果图假若将窗函数法中抽样频率Fs改为22050Hz,其他各参数都不改变,进行相关处理后如图6所示。对比图5和图6可以发现,当时域采样频率和滤波器设计时所用的抽样频率相等,即均为11025Hz时,滤波后的频谱图的频率范围和所设计的滤波器的实际截止频率是一致的,即截止频率为1000Hz时,滤波处理后语音信号1000Hz以上频率分量均衰减为0。而将滤波器的抽样频率改为22050Hz,即两者不相等时,可以看出滤波后频谱图的频率范围明显与所设计的滤波截止频率1000Hz不符。由此可知滤波器设计参数中的抽样频率必须要与语音信号时域采样频率相等,这样进行滤波处理后所得到的频谱图频率范围才是正确的。这就是我第一次进行调试时实际频率范围和滤波器截止频率不一致的原因,两个抽样频率改为相等即可解决这个问题。图SEQ图\*ARABIC6改变滤波器抽样频率Fs后结果图当将上述窗函数类型改为kaiser(凯泽窗)时,其他各参数都不改变,滤波处理后图形如下图7所示。对比图5和图7可以看出,boxcar(矩形窗)和kaiser(凯泽窗)进行处理后语音信号时域和频域几乎没有区别,只是窗函数的频率响应曲线不同而已,从图中可以看出凯泽窗的阻带衰减叫矩形窗大。图SEQ图\*ARABIC7改为凯泽窗后结果图当选择窗函数高通滤波且窗函数类型为boxcar时,设置阻带截止频率为1500Hz,通带截止频率为1700Hz,其他参数不变时进行相关处理结果如图8所示。图SEQ图\*ARABIC8截止频率为1500Hz时高通滤波结果图当将滤波器截止频率改为3000Hz,通带截止频率改为3200Hz,其他参数不变时,进行语音信号的相关处理的结果如图9所示。图SEQ图\*ARABIC9截止频率为3000Hz时高通滤波结果图对比图8和图9可以看出,高通滤波滤除了语音信号的低频分量,只要高通滤波器截止频率足够高,在阻带内的频率幅度谱几乎衰减为零,此时语音回放几乎听不到任何声音。为了突出变化趋势,将阻带截止频率改为5000Hz,通带截止频率改为5200Hz时结果如图10所示。图SEQ图\*ARABIC10截止频率为5000Hz时高通滤波结果图对比图8、图9和图10可以看出,滤波器截止频率越高,语音信号低频分量滤去越多,能够听到的语音信号也将越来越尖锐,直至最后听不到声音信号。从图10中可以明显看出,滤波器截止频率为5000Hz时,滤波后语音信号时域波形图为0,滤波后的频谱中只剩下依稀能量很低的高频噪声信号。当采用双线性变换法时,滤波器类型选为低通滤波器,且设输入阻带截止频率为1500Hz,通带截止频率为1600Hz,此时进行相关语音信号处理后的结果图如图11所示。若改为高通滤波器,其他各参数均不改变,进行相关语音信号处理后的结果图如图12所示。对比图11和图12可以看出,低通滤波语音信号时域波形几乎没有太大变化,而经过高通滤波后,语音信号的时域波形收到很大幅度的衰减,从而可以看出语音信号的能量大部分集中在低频段。同时,通过语音回放可以发现低通滤波后语音信号较低沉,高通滤波后语音信号尖锐,如果高通滤波截止频率过高,最终将听不到任何声音。图SEQ图\*ARABIC11双线性变换低通滤波结果图图SEQ图\*ARABIC12双线性变换高通滤波器结果图下面录制“数字语音处理”的语音信号,录制时间设为4s,采样频率设为8000Hz,采用窗函数法低通滤波器,选择hamming(汉明窗),阻带截止频率为1300Hz,通带衰减设为1500Hz,按照上述参数设置后进行相关处理后的结果图如图13所示。由此可以看出该处理系统可以实时采集语音并进行处理。图SEQ图\*ARABIC13hamming窗函数法处理结果图从以上各图可以看出,本次课程设计我成功的设计了一个基于MATLAB的实时语音可视化的时频域分析系统,该系统可以通过计算机声卡和语音采集工具箱采集实时的语音信号,并通过MATLAB进行时频域分析处理以及滤波处理后,将语音信号进行可视化输出。同时使用MATLAB的GUI集成开发环境GUIDE进行界面的设计,通过简单的图形界面简化操作过程及参数的修改和调试。从

温馨提示

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

评论

0/150

提交评论