语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc

上传人:聆听****声音 文档编号:12478345 上传时间:2023-06-05 格式:DOC 页数:21 大小:443.32KB
下载 相关 举报
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第1页
第1页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第2页
第2页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第3页
第3页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第4页
第4页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第5页
第5页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第6页
第6页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第7页
第7页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第8页
第8页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第9页
第9页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第10页
第10页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第11页
第11页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第12页
第12页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第13页
第13页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第14页
第14页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第15页
第15页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第16页
第16页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第17页
第17页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第18页
第18页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第19页
第19页 / 共21页
语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc

《语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc》由会员分享,可在线阅读,更多相关《语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc(21页珍藏版)》请在冰点文库上搜索。

语音信号处理课程设计报告--基于动态时间规整的小规模孤立词语音识别系统设计与开发.doc

课程设计报告

名称语音信号处理课程设计

基于动态时间规整的小规模孤立词语音识别系统设计

与开发

指导教师李红莲

设计起止日期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;

目录

12级“语音信号处理课程设计”任务书 2

摘要 3

Abstract 4

第一章概述 6

1.1主要内容 6

1.2要求 6

1.3主要仪器设备 6

1.4基本方法 6

第二章信号特征参数MFCC提取 7

第三章DTW算法 9

第四章实现过程及结果 11

4.1实现过程 11

4.2结果及分析 12

结束语 12

参考文献 12

附录 13

1、place_recgrnition 13

2、vad 14

3、mfcc 16

4、dtw 17

5、out 19

第一章概述

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。

提取原理图如下:

MFCC

Ln(M(p))

X(n)

M(p)

X(k)

DCT变换

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=c

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2