设计报告.docx
- 文档编号:27539970
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:29
- 大小:443.21KB
设计报告.docx
《设计报告.docx》由会员分享,可在线阅读,更多相关《设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
设计报告
设计报告
课程名称语音信号处理
任课教师周泽华
设计题目语音信号的短时分析
班级08电子
(1)班
姓名黄玉娥
学号0805070015
日期2011.10.16
摘要
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门新兴学科。
语音信号处理的应用极为广泛,其中的主要技术包括语音编码、语音合成、
取语音识别作为重点讨论课题。
语音识别就是让计算机听懂人的话,并做出正确的反应。
目前主流的语音识别技术是基于统计模式识别的基本理论。
本文首先对语音信号处理进行了概述,其中包括各种处理技术、发展及应用。
接下来主要介绍了语音识别方面的知识。
根据语音识别系统的基本构成模型,介绍了预处理、端点检测到模板匹配各个部分所涉及到的语音数字信号处理原理和方法。
重点研究了孤立词识别系统的原理、构成及各部分的实现算法。
并在MATLAB平台上进行了系统的仿真。
关键词:
端点检测,Matlab,短时分析,周期检测
Abstract
Speechsignalprocessingistostudytheuseofdigitalsignalprocessingtechnologytoprocessvoicesignalsofanewstudy.Voicesignalprocessingisextensivelyused,inwhichthemaintechnologiesincludespeechcoding,speechsynthesis,speechrecognitionandspeechenhancement.ThiselectionAccessSpeechrecognitionasakeytopicofdiscussion.Speechrecognitionistomakethecomputerunderstandpeoplesay,andmaketherightresponse.Currentmainstreamspeechrecognitiontechnologyisbasedonthebasictheoryofstatisticalpatternrecognition.Thispaperfirstprovidesanoverviewofspeechsignalprocessing,includingvariousprocessingtechniques,developmentandapplication.Thenintroducestheknowledgeofspeechrecognition.Speechrecognitionsystemaccordingtothebasicstructuremodel,introducedpretreatment,endpointdetectiontotemplatematchingpartsofspeechinvolvedindigitalsignalprocessingprinciplesandmethods.Focusesontheprincipleofisolatedwordrecognitionsystem,formpartoftherealizationofvariousalgorithms.MATLABplatforminasystemsimulation.
Keyowrds:
endpointdetection,Matlab,short-termanalysis,cycledetection
用Matlab编程实现语音信号的短时分析
1、目的
1.在理论学习的基础上,进一步地理解和掌握语音信号短时分析的意义,短时时域分析的基本方法。
2.进一步理解和掌握语音信号短时平均能量函数及短时平均过零数的计算方法和重要意义。
2、原理及方法
一定时宽的语音信号,其能量的大小随时间有明显的变化。
其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。
短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。
这在语音识别中有重要意义。
3、内容
选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;也可以设计FIR和IIR数字滤波器,并对被噪声污染的语音信号进行滤波,我们只分析滤波后信号的时域和频域特征,回放语音信号;最后,设计一个信号处理系统界面。
在所设计的系统界面上可以选择信号分析的类型。
4、总体设计方案
利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。
再将该向量看作一个普通的信号,对其进行FFT等变换实现频谱分析,在依据实际情况对它进行滤波。
对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。
我们还可以通过sound命令来对信号进行回放,以便在听觉上来感受声音的变化。
选择设计此方案,是对数字信号处理的一次实践。
在数字信号处理的课程学习过程中,我们过多的是理论学习,几乎没有进行实践方面的运用。
这个课题正好是对数字语音处理的一次有利实践,而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。
这个方案用到的软件也是在数字信号处理中非常通用的一个软件%26mdash;%26mdash;MATLAB软件。
所以这个课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。
课题用到了较多的MATLAB语句,而由于课题研究范围所限。
真正与数字信号有关的命令函数却并不多。
5、课程设计的具体实现
5.1语音信号的短时分析
一定时宽的语音信号,其能量的大小随时间有明显的变化。
其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。
短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。
这在语音识别中有重要意义,所用语音信号文件名为3.wav。
Matlab编程实验步骤:
1.新建M文件,扩展名为“.m”,编写程序;
2.选择File/Save命令,将文件保存在F盘中;
3.在CommandWindow窗中输入文件名,运行程序;
Matlab部分函数语法格式:
读wav文件:
x=wavread(`filename`)
数组a及b中元素相乘:
a.*b
创建图形窗口命令:
figure
绘图函数:
plot(x)
坐标轴:
axis([xminxmaxyminymax])
坐标轴注解:
xlabel(`…`)ylabel(`…`)
图例注解:
legend(`…`)
一阶高通滤波器:
y=filter([1-0.09375],1,x)
分帧函数:
f=enframe(x,len,inc)
x为输入语音信号,len指定了帧长,inc指定帧移,函数返回为n×len的一个矩阵,每一行都是一帧数据。
在本次设计中,我们利用filter对语音信号进行短时分析,就可以得到信号的频谱特性,其程序见附录。
程序结果如下图1:
图1语音信号的短时分析
5.2分析语音信号的短时谱特性
语谱图分析语音又称语谱分析,与谱图中显示了大量的语音的语句特性有关的信息,它综合了频谱图和时域波形的优点,明显地显示出语音频谱随时间的变化情况。
预铺土实际上是一种三维频谱,即同时在实践和频率上显示出语音的特性,或者说是一种动态的频谱。
窄带语谱图可以得到较好的频域分辨率(即以较窄的频域间隔观察频域上的正弦波成分),窗长通常为至少两个基音周期的“长窗”;而宽带语谱图可以给出较好的时域分辨率(即以较窄的时域间隔观察时域波动),窗长为小于一个基音周期的“短窗”,其程序见附录。
程序结果如下图2:
图2分析语音信号的短时谱特性
5.3语音信号倒谱与复倒谱的分析
同态信号处理的基本原理:
设输入信号,将卷积性信号转化为加性信号。
包括三部分,首先对系统输出的加性信号进行Z变换,然后进行指数运算,得到的是乘积性信号最后进行逆Z变换,得到卷积性的语音恢复信号,其实验程序见附录。
程序结果如下图3:
图3语音信号倒谱与复倒谱的分析
5.4运用自相关方法估计语音信号的声道参数
由均方预测误差最小的得到正则方程
(4-1)
其中,
(4-2)
在最佳解时的误差为
(4-3)
在自相关法中式4-1,式4-3变为
(4-4)
(6)
(4-5)
由式4-4可列出方程组式4-6
(4-6)
解方程组式(4-6)求出线性预测系数,通过误差式(4-5)可求出增益G。
其实验程序见附录。
程序结果如下图4:
图4运用自相关方法估计语音信号的声道参数
5.5基音周期检测实验
基音周期是语音信号最重要的参数之一,旨在比较基音周期
提取过程中的带通滤波和中心削波两种方法。
并且在此基础上比较自相关函数和平均幅差函数两种基音周期检测算法。
经过实验,明显得出:
综合带通滤波和中心削波两种方法之后,从而得到改进后的基音检测方法,能够更准确更有效地提取到语音信号的基音周期。
其程序见附录。
程序结果如下图5:
图5基音周期检测实验
5.6语音信号增强实验
噪声来源于实际的应用环境,因而其特性变化很大。
噪声可以是加性的,也可以是非加性的。
对于非加性噪声,有些可以通过变换转变为加性噪声。
例如,乘积性噪声或卷积性噪声可以通道同态变换而成为加性噪声。
其程序见附录。
程序结果如下图6:
图6语音信号增强实验
5.7语音信号端点检测实验
在独立词(字)语音识别系统中需正确判定每一个输入语音的起点和终点,利用短时平均幅度和短时过零率可以做到这一点。
在背景噪声比较小的时候用平均能量来识别比较有效,在背景噪声比较大的时候用平均过零率来识别比较有效,但是通常情况是两个参数联合进行识别,其程序见附录。
程序结果如下图7:
图7语音信号端点检测实验
6、课程设计总结与心得
课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了。
那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题。
我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。
相信在以后的学习工作中我们会更加努力,把自己学到的知识真正用到实践上来,真正做到学以致用。
努力掌握好电子信息工程的各类技术,充分发挥它们的长处,在于不断的培养我们的能力,也在不断地挖掘了我们潜力,使我们对未知的电子技术领域有了更进一步的了解,通过课程设计的实践操作,再加上老师的细心指导,使我对电子信息有了重新的认识,相信在以后的学习工作中,我们会以一种坚强、不服输的毅力走下去,这次课程设计不仅使我们了解了以前不了解的知识,而且也锻炼了我们的意志,充分展示了我们的动手能力,更重要的是它培养了我们对电子技术课程的深厚兴趣,使我们在以后的学习、工作中有了更大的信心,相信这次课程设计的经历,将是我们学习中重要的一部分,也将是人生中重要一环。
在课程设计中指导老师始终如一的教导我们,感谢指导老师,我们希望学校能够多开展一些课程设计的活动,在课程设计中教会我们包括本专业的更多的知识,来不断充实我们自己。
附录
源代码:
functionvarargout=untitled(varargin)
%UNTITLEDM-fileforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%UNTITLED('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinUNTITLED.Mwiththegiveninputarguments.
%UNTITLED('Property','Value',...)createsanewUNTITLEDorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFunctiongetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.529-Jun-201015:
07:
10
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled_OpeningFcn,...
'gui_OutputFcn',@untitled_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{:
});
(13)
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstountitled(seeVARARGIN)
%Choosedefaultcommandlineoutputforuntitled
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1)
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_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)
[x]=wavread('3.wav');
sound(x)
subplot(4,1,1);
plot(x);
(14)
axis([1length(x)-11]);
ylabel('Speech');
enhance=filter([1-0.9375],1,x);
FrameLen=240;FrameInc=80;
yframe=enframe(x,FrameLen,FrameInc);
amp1=sum(abs(yframe),2);
subplot(4,1,2);
plot(amp1);
axis([1length(amp1)0max(amp1)]);
ylabel('Amp');
legend('amp1=∑│x│');
amp2=sum(abs(yframe.*yframe),2);
subplot(4,1,3);
plot(amp2);
axis([1length(amp2)0max(amp2)]);
ylabel('Energy');
legend('amp1=∑│x*x│');
tmp1=enframe(x(1:
end-1),FrameLen,FrameInc);
tmp2=enframe(x(2:
end),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
subplot(4,1,4);
plot(zcr);
axis([1length(zcr)0max(zcr)]);
ylabel('ZCR');
legend('zcr');
functionf=enframe(x,win,inc)
nx=length(x(:
));
nwin=length(win);
if(nwin==1)
len=win;
else
len=nwin;
(15)
end
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),:
));
if(nwin>1)
w=win(:
)';
f=f.*w(ones(nf,1),:
);
end
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[our]=wavread('3.wav');
specgram_hw3p20(our,1024,512,10000);
specgram_hw3p20(our,512,256,10000);
function[spec]=specgram_hw3p20(x,winlgh,frmlgh,sampling_rate);
%specgram_hw3p20(x,winlgh,frmlgh,sampling_rate
%functiontocomputeaspectrogram
%x=inputwaveform
%winlgh=windowlengthinsamples
%frmlgh=framelengthinsamples
%sampling_rate=samples/sec
%PARAMETERS
%sampling_rate=10000;%samplingrate
lfft=1024;%FFTlength
lfft2=lfft/2;
%winlgh=200;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设 计 报 告.docx