届语音信号处理课程设计报告孤立词识别资料.docx
- 文档编号:23975161
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:27
- 大小:296.20KB
届语音信号处理课程设计报告孤立词识别资料.docx
《届语音信号处理课程设计报告孤立词识别资料.docx》由会员分享,可在线阅读,更多相关《届语音信号处理课程设计报告孤立词识别资料.docx(27页珍藏版)》请在冰豆网上搜索。
届语音信号处理课程设计报告孤立词识别资料
课程设计报告
名称语音信号处理课程设计
基于动态时间规整的小规模孤立词语音识别系统设计
与开发
指导教师李红莲
设计起止日期2015-5-14至2015-6-14
学院信息与通信工程
专业电子信息工程
学生姓名
班级/学号
成绩
指导老师签字
12级“语音信号处理课程设计”任务书
题目3
基于动态时间规整的小规模孤立词语音识别系统设计与开发
主要
内容
编程实现基于动态时间规整的小规模孤立词语音识别系统,可以实时识别每个集合内的孤立词。
设计
要求
1.录制训练及测试语音。
2.能够提取特征参数MFCC。
3.能够使用动态时间规整(DTW)算法计算语音模板之间的距离。
4.编程实现基于动态时间规整的小规模孤立词语音识别系统。
5.对某个集合内的孤立词语音实时进行识别
6.准确率应不低于80%。
主要
仪器
设备
计算机1台,安装MATLAB软件及cooledit录音软件
主要
参考
文献
数字语音处理及MATLAB仿真[M].北京:
电子工业出版社,2010.
课程设计进度计划(起止时间、工作内容)
本课程设计共安排3个题目,这是其中题目之一。
具体进度如下:
6学时复习题目相关知识,掌握实现的原理;
16学时用MATLAB语言实现题目要求;
6学时进一步完善功能,现场检查、答辩;
4学时完成课程设计报告。
课程设计开始日期
2015.5.14
课程设计完成日期
2015.6.14
课程设计实验室名称
电子信息技术实验室
地点
实验楼3-507
资料下载地址
摘要
本论文主要阐述了语音识别系统开发的过程,采用了端点检测和特征参数提取的思路,主要的关注点是如何运用MEL频率倒谱系数(MFCC)的算法,也运用了动态时间规整(DTW)算法,以MATLAB语言为编程语言,编程和获得语音识别算法。
笔者设计的语音识别算法的识别率相对较高,而以该算法为基础的语音识别系统可以达到设计的要求,所以其市场前景广阔。
关键词:
语音识别系统;MFCC;DTW;孤立词识别
Abstract
Thispapermainlyexpoundsthevoicerecognitionsystemdevelopmentprocess,usingtheendpointdetectionandfeatureextractionofideas,themainconcernishowtouseMELFrequencyCepstralCoefficients(MFCC)algorithm,alsousedtheDynamicTimeWarping(DTW)algorithminMATLABlanguageprogramminglanguageprogrammingandaccesstospeechrecognitionalgorithm.Theauthordesignthespeechrecognitionalgorithmoftherecognitionrateisrelativelyhigh,andbasedonthealgorithmofspeechrecognitionsystemcanmeetthedesignrequirements,soitswideprospectofmarket.
Keywords:
speechrecognitionsystem,MFCC,theDTW(dynamictimewarping);isolatedwordsrecognition;
第一章概述
21世纪,人类要不断地进行信息交流和传递,而在这一过程中,语音无疑是最为方便的工具和主要的交流媒介。
所以,为了达到交流方便的目的,我们往往在人机系统中,采用语音识别系统。
说得更通俗一点,语音识别就是要能让机器理解人在说什么,即准确地识别出语音的内容,以此来达到人的意愿执行机器指令的目的。
就语音识别技术的应用的主要内容来看,主要就是语音拨号、导航、语音文档检索等一系列功能。
语音识别技术就好像其他的自然语言处理技术一样,在处理了相关的技术之后,就能够顺利地展开语音间翻译。
1.1主要内容
编程实现基于动态时间规整的小规模孤立词语音识别系统,可以实时识别每个集合内的孤立词。
1.2要求
1.录制训练及测试语音。
2.能够提取特征参数MFCC。
3.能够使用动态时间规整(DTW)算法计算语音模板之间的距离。
4.编程实现基于动态时间规整的小规模孤立词语音识别系统。
5.对某个集合内的孤立词语音实时进行识别
6.准确率应不低于80%。
1.3主要仪器设备
计算机1台,MATLAB软件及cooledit录音软件
1.4基本方法
一般开说,我们在识别语音的时候,主要有三种语音识别方法:
第一种是声道模型和语音知识方法,第二种是模板匹配方法,第三种是人工神经网络语音识别方法。
(1)声道模型和语音识别方法:
这种方法是较早就开始进行过研究的,当时主要是在语音识别技术的基础上提出来的,但是考虑到其模型及语音知识相对来说不是很简单,所以就是到了现在也没有采用于实际的工作中。
一般来说,人们都会以为,在一些我们经常使用到的语言中,语音基元的数量是有限的,在区分它们的时候,我们通常都是以时域特性和语音信号频域为基础的,具体地来说,要实现该方法主要是按以下步骤进行的:
其一,分段和标号,通过以时间为基本单元,把语音信号按划分成若干个离散的段,任何一段都与若干个语音基元特性存在着相互对应的联系。
从此之后,人们在对语音基元进行分段的时候,都是以声学特性为基础,会给出相对应的标音符号。
其二,我们成功地获取到了词序列之后,下一步的工作就是以语音识别序列为基础,获取到首个语音基元网格。
(2)主要的模版匹配方法
模板匹配方法目前的发展情况非常好,可以所已经处于一个比较成熟的实用阶段。
我们在匹配模板的时候,通常都是按照下面的顺序来进行的:
提取特征、讯乱模板、分类模板、判决。
其中,往往用来开展此工作的方法如下:
动态时间规整(DTW)、隐马尔可夫(HMM)理论等。
第二章信号特征参数MFCC提取
语音信号在端点检测以后,就把其中的噪声消去了,同时也把有价值的语音信息全部提出来了,这也就进到了语音识别的最关键的阶段:
特征提取阶段。
正确又合理地把特征参数选择出来,有利于提高系统的识别率,而且还会系统的实时性能产生较大的影响。
语音信号特征提取往往就是出于二个目的,其一就是想尽办法取得模式匹配数据库中的模板样本:
其二就是在进行语音识别时,采取一切措施,减少相同类的类间距离,与此同时,语音信号的端点还要保持在类的类间距离尽量大,这也就意味着异音字特征间的距离尽可能的大,而使得同音字的间距尽可能地缩小。
近几年以来,充分地利用人耳的特殊感知特性的参数在实际中得到了普及应用,这就是Mel频率倒谱参数(MelFrequencyCepstrumCoefficient,MFCC),简称MFCC。
MFCC参数能够比LPCC参数可以更好地优化系统的性能。
Mel频率和线性频率的具体关系式如下:
对于频率轴,我们主要是使用了不均匀划分方法,而这也是MFCC特征最大的特点。
如图2.2所示的滤波器组中,就有16个滤波器。
图2.2Mel带通滤波器组图
我们往往也按帧来计算MFCC倒谱系数,在实际应用中,MFCC倒谱系数的计算过程如图2.3:
图2.3MFCC计算的一般流程
(1)其一,就是要对信号进行预加重和加窗处理,然后以此为基础,做好离散FFT的变换工作,在进行了取模,再平方以后,又得到了离散功率谱
。
在此次文章中,我们主要是用了帧长为256点,帧移为80点的信号。
所以,我们根据此,得到了第n帧语音信号
另外也做了离散傅里叶变换工作,并得到了下面的关系式:
除此之外,我们再根据短时功率谱与短时傅里叶变换的关系,可以直接地把其中的短时功率谱求解出来,具体的可以用如下的关系式:
(2)对
做准确的计算,其主要的思路就是通过M(M往往是取16~24)个Mel带通滤波器
,在滤波处理了以后,以此得到了相关的功率值。
所以,在任何的频带里,人耳在其中的作用是叠加形成的,所以我们把滤波器的能量放在一起,也主要是对
和
在各点离散频率点上的乘积的和做一些详细的计算,以此来获得M个参数只
(3)对
的自然对数,我们运用如下的公式进行计算,以此来计算出对数功率谱,接下来,我们开展离散余弦变换(DCT)工作,从而得到了L个MFCC系数。
对于L,我们往往是取12-16位为主。
(4)对于其中的任何一个帧的语音信号,我们都要想办法把其中的L维MFCC参数计算出来,往往还是使用其中的一个参数进行提升。
总的来说,标准的MFCC参数往往就只能显示出语音信号的某些静态特性,虽然纯净语音信号情况下可能会产生比较好的识别率。
但是,有一点要注意的,那就是如果测试环境和训练环境无法进行匹配,就有可能会导致识别系统的性能下降的情形。
其具体的计算公式如下:
第三章DTW算法
DTW(DynamicTimeWarping,动态时间规整)
算法简介:
在识别孤立词语音的时候,较好的方法就是DTW算法,它在语音识别中实用得比较早,也是其中最有影响力的一种,在识别孤立词的时候,经常都会使用到这种方法。
在DTW算法中,无需做更多的计算。
不管是建立模板还是训练模板的阶段,还是识别的阶段,需要判断最终的语音起点和终点。
用{R
(1),R
(2),..R(m),..R(M)}来表示其中的一个参考模板,其中起点语音帧用m=1表示,而m=M表示的则是终点语音帧。
在表示参考模板和测试的时候,分别用T和R来表示它们。
通常来说,相似度越高的距离就越小。
(1)如果N和M是相等的,那么就表示R和T事实上就是相同的。
直接匹配T
(1)与R
(1)帧,T
(2)与R
(2)帧,⋯,T(m)与R(m)帧,计算出它们的失真度,并对其进行求和,这样一来就可以获得总失真。
(2)如果N和M值不相等的话,那么就表示R和T事实上是不相同的,这时可以采用动态规划(DP)方法
首先需要对测试模式的各个帧号进行标记,具体情况如下图2.3所示:
在对齐的时候,使用的主要办法是动态规划。
实际上,首先需要查找出网络中所有格点的路径,当然,不可能随意地选择其中的路径,其主要原因就在于任何一种语音发音都有快慢,然而有一点是不能变的,那就是其各部分的先后次序。
所以,无论选择什么样的路径,都是从左下角到右上角,参见图3:
图2.3DTW算法搜索路径
为了能够准确地描述这条路径,按照先后的顺序来设定这些格点,分别是(
),⋯,
,而在这其中(
)=(1,1),
=(N,M)。
为了保持路径之间能够平稳过渡,可以限制其斜率在0.5:
2左右,这也就是说若路径通过格点
,那么下一个格点就是
:
为了能够获取到最准确的路径函数,确保积累的路径距离是最小的,最佳的搜索思路应该是:
首先确定(
)为起点,假设
表示的是所有路径的累计距离,最佳路径积累的距离才是最小的。
不难证明,在限定条件下,所有的格点
,满足要求的路径只有一条。
也就是说可以达到该格点的前一个格点只可能是
、
和
,所以说
一定是从上面三者中选择最小者所对应的格点来充当其前续结点,若用
来代表这一格点,则路径的积累距离可以通过下面的公式来计算:
因此,在开展搜索工作的时候,应该以出发点为起点。
在现实工作过程中,必须严格存放好所有的前一格点及相应的帧匹配距离。
如果能够搜索得到,需要将最佳路径留下来。
有时需要向前寻找来进一步得到整条路径。
这就是DTW算法。
第四章实现过程及结果
4.1实现过程
1.应用cooledit录音软件录制及测试语音,共录入50个孤立词。
2.使用8000Hz的采样率,对录入的音频进行端点检测。
3.提取特征参数MFCC。
提取原理图如下:
4.使用动态时间规整(DTW)算法计算语音模板之间的距离。
5.编程实现基于动态时间规整的小规模孤立词语音识别系统。
6.对集合内的孤立词语音实时进行识别。
4.2结果及分析
分析:
对麦克风读入“北京”,语音识别系统识别为“北京”。
结果正确无误。
结束语
在本次课程设计中,我应用MFCC特征参数、端点检测等方法提高语音识别的准确性,得到了一个完整的语音识别系统。
在整个语音识别系统的研究和设计时,我查阅了相应的资料,而由于语音识别技术毕竟是一个新的领域,所以会在具体的研究上碰到各种各样的困难,造成了在系统中出现各种各样的问题,主要表现在系统在噪音较大的环境下识别的准确度不高等。
就当前来看,在语音技术领域有较大的潜力可以挖掘。
我们还需要不断地改进其算法,提高识别的精确度。
而在其中,人工智能是一个比较重要的前沿发展方向。
参考文献
[1]数字语音处理及MATLAB仿真[M].北京:
电子工业出版社,2010.
[2]中国科技论文在线.语音识别中双门限端点检测算法的研究.WvcW.paper.edu.ca,2008.04.07.
[3]ZHANGJun,WEIGang.RobustMultistreamSpeechRecognitionBasedonWeightingtheOutputProbabilitiesofFeatureComponents[J].声学学报(英文版),2009
[4]YangJianhua,ZhaoLi.RecognitionOfSpokenChineseDigitBasedOnIntegrationOfVQAndHMM,DepartmentofElectronicEngineering,NUAA2000
[5]郭春霞,裘学红.基于MFCC的说话人识别系统,电子科技,2005,11:
53-56
[6]赵力.语音信号处理[M].机械工业出版社,2003
[7]蒋珉.MATLAB程序设计及应用,北京邮电大学出版,2010
[8]王志强.孤立词语识别系统关键问题的研究[D].北京:
北京邮申大学,2008
附录
1、place_recgrnition
clc
clearall
fori=1:
50
name=[num2str(i)'.wav'];
[y,fs,bits]=wavread(name);
[StartPoint,EndPoint]=vad(y);%%端点检测
ms{i}=mfcc(y(StartPoint:
EndPoint));
end
a=1;
whilea
Fs=8000;
y=wavrecord(3*Fs,Fs,'int16');
[StartPoint,EndPoint]=vad(y);
%%plot(y(StartPoint:
EndPoint));
ms_unknown=mfcc(y(StartPoint:
EndPoint));
fori=1:
50
d(i)=dtw(ms_unknown,ms{i});
end
index=find(d==min(d));
out(index);
a=input('1继续');
End
2、vad
function[n1,n2]=vad(x)
%幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
%常数设置
FrameLen=240;
FrameInc=80;
amp1=10;
amp2=2;
zcr1=10;
zcr2=5;
maxsilence=8;%6*10ms=30ms
minlen=15;%15*10ms=150ms
status=0;
count=0;
silence=0;
%计算过零率
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);
%计算短时能量
amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),2);
%调整能量门限
amp1=min(amp1,max(amp)/4);
amp2=min(amp2,max(amp)/8);
%开始端点检测
x1=0;
x2=0;
forn=1:
length(zcr)
goto=0;
switchstatus
case{0,1}%0=静音,1=可能开始
ifamp(n)>amp1%确信进入语音段
x1=max(n-count-1,1);
status=2;
silence=0;
count=count+1;
elseifamp(n)>amp2|...%可能处于语音段
zcr(n)>zcr2
status=1;
count=count+1;
else%静音状态
status=0;
count=0;
end
case2,%2=语音段
ifamp(n)>amp2|...%保持在语音段
zcr(n)>zcr2
count=count+1;
else%语音将结束
silence=silence+1;
ifsilence count=count+1; elseifcount status=0; silence=0; count=0; else%语音结束 status=3; end end case3, break; end end count=count-silence/2; x2=x1+count-1; n1=((x1+2)/3)*240; n2=((x2+2)/3)*240; 3、mfcc functionccc=mfcc(x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %functionccc=mfcc(x); %对输入的语音序列x进行MFCC参数的提取,返回MFCC参数和一阶 %差分MFCC参数,Mel滤波器的阶数为24 %fft变换的长度为256,采样频率为8000Hz,对x256点分为一帧 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bank=melbankm(24,256,8000,0,0.5,'m'); %归一化mel滤波器组系数 bank=full(bank); bank=bank/max(bank(: )); %DCT系数,12*24 fork=1: 12 n=0: 23; dctcoef(k,: )=cos((2*n+1)*k*pi/(2*24)); end %归一化倒谱提升窗口 w=1+6*sin(pi*[1: 12]./12); w=w/max(w); %预加重滤波器 xx=double(x); xx=filter([1-0.9375],1,xx); %语音信号分帧 xx=enframe(xx,256,80); %计算每帧的MFCC参数 fori=1: size(xx,1) y=xx(i,: ); s=y'.*hamming(256); t=abs(fft(s)); t=t.^2; c1=dctcoef*log(bank*t(1: 129)); c2=c1.*w'; m(i,: )=c2'; end %差分系数 dtm=zeros(size(m)); fori=3: size(m,1)-2 dtm(i,: )=-2*m(i-2,: )-m(i-1,: )+m(i+1,: )+2*m(i+2,: ); end dtm=dtm/3; %合并mfcc参数和一阶差分mfcc参数 ccc=[mdtm]; %去除首尾两帧,因为这两帧的一阶差分参数为0 ccc=ccc(3: size(m,1)-2,: ); 4、dtw %DTW的高效算法 functiondist=dtw(test,ref) globalxy_miny_max globaltr globalDd globalmn t=test; r=ref; n=size(t,1); m=size(r,1); d=zeros(m,1); D=ones(m,1)*realmax; D (1)=0; %如果两个模板长度相差过多,匹配失败 if(2*m-n<3)||(2*n-m<2) dist=realmax; return end %计算匹配区域 xa=round((2*m-n)/3); xb=round((2*n-m)*2/3); ifxb>xa %xb>xa,按下面三个区域匹配 %1: xa %xa+1: xb %xb+1: N forx=1: xa y_max=2*x; y_min=round(0.5*x); warp end forx=(xa+1): xb y_max=round(0.5*(x-n)+m); y_min=round(0.5*x); warp end forx=(xb+1): n y_max=round(0.5*(x-n)+m); y_min=round(2*(x-n)+m); warp end elseifxa>xb %xa>xb,按下面三个区域匹配 %0: xb! %xb+1: xa %xa+1: N %forx=1: xb forx=0: xb y_max=2*x; y_min=round(0.5*x); warp end forx=(xb+1): xa y_max=2*x; y_min=rou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 处理 课程设计 报告 孤立 识别 资料