DTW算法

上传人:ali****an 文档编号:109915786 上传时间:2019-10-28 格式:DOC 页数:41 大小:126KB
返回 下载 相关 举报
DTW算法_第1页
第1页 / 共41页
DTW算法_第2页
第2页 / 共41页
DTW算法_第3页
第3页 / 共41页
DTW算法_第4页
第4页 / 共41页
DTW算法_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《DTW算法》由会员分享,可在线阅读,更多相关《DTW算法(41页珍藏版)》请在金锄头文库上搜索。

1、引言 随着时代的发展,人们越来越注重生活的品质。便捷时尚成为当代人们的追求目标。现在,语音信号处理的技术趋于完善,语音识别技术的应用有两个发展方向:一个是大词汇量连续语音识别系统,主要应用于计算机的听写输入等;另一个是小型化便携式语音模块的应用,如手机的拨号汽车设备的语音控制等方面的应用,这些应用大多都需要使用硬件实现。 在此次课程设计中,我们引用现今较为成熟的语音信号处理技术,设计一个简单的非实时语音信号识别系统。其主要技术指标是识别率和计算量,其关键是特征参数的提取和模式识别方法。测试模板将预先录制好的09的语音文件用按键方式输入,经过A/D转换芯片0809后转化为数字信号,在单片机AT8

2、9C52中,先用端点检测将语音中有用的语音部分提取出来(即将头部和尾部的静音部分除掉),然后用LPC算法提取语音信号的特征参数,进行动态归整(DTW算法)后与模板库里面的标准语音作比较,最后将识别结果进行D/A转化后播放出来。在本部分的设计中,则主要完成语音识别的模式匹配算法部分的软件实现。 1 为什么要用DTW算法 孤立词识别方案主要有: (1)采用动态规划(Dynamic Programming)的方法。这是一种运算量较大,但技术上较简单,正识率也较高的方法。其中的失真测度可以用欧氏距离(适于短时谱或倒谱参数),也可以用对数似然比距离(适于参数)决策方法可用最近邻域准则 (2)采用矢量量化

3、(ectoruantization)的方法它既可用于语音通信中的波形或参数的压缩,也可用于语音识别尤其有限状态矢量量化(FSVQJ)方法,对于语音识别更为有效。决策方法一般用最小平均失真准则。 (3)采田隐马尔柯夫横型(HMM)的方法,该模型的参数既可以用离散概率分布函数,也可以用最新的连续概率密度函数(如:正态高斯密度,高斯自回归密度等)。决策方法则用最大后验概率准则 (4)采用混合技术的方法。例如:用矢量量化作为第一级识别(作为预处理,从而得出若干候选的识别结果),然后,再用DTW或HMM方法做最后的识别,因此,可有QDTW和HMM等识别方法 目前,语音识别的匹配主要应用HMM和DTW两种

4、算法。DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的各种知识用到语音识别算法中,因此在解决大词汇量、连续语音、非特定人语音识别问题时较之HMM算法相形见绌。HMM是一种用参数表示的,用于描述随机过程统计特性的概率模型。而对于孤立词识别,HMM算法和DTW算法在相同条件下,识别效果相差不大, 又由于DTW算法本身既简单又有效,但HMM算法要复杂得多。它需要在训练阶段提供大量的语音数据,通过反复计算才能得到参数模型,而DTW算法的训练中几乎不需要额外的计算。鉴于此,DTW更适合本系统的要求。 2 DTW算法原理 在孤立词语音识别中,最为简单有效的方法是采用DTW(Dy

5、namic Time Warping,动态时间归整)算法,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法。用于孤立词识别,DTW算法与HMM算法在训练阶段需要提供大量的语音数据,通过反复计算才能得到模型参数,而DTW算法的训练中几乎不需要额外的计算。所以在孤立词语音识别中,DTW算法仍然得到广泛的应用。 无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。已存入模板库的各个词条称为参考模板,一个参考模板可表示为R=R(1),R(2),R(m),R(M),m为训练语音帧的时序标号,m=1为起点语音帧,m=M为

6、终点语音帧,因此M为该模板所包含的语音帧总数,R(m)为第m帧的语音特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T=T(1),T(2),T(n),T(N),n为测试语音帧的时序标号,n=1为起点语音帧,n=N为终点语音帧,因此N为该模板所包含的语音帧总数,T(n)为第n帧的语音特征矢量。参考模板与测试模板一般采用相同类型的特征矢量(如MFCC,LPC系数)、相同的帧长、相同的窗函数和相同的帧移。 假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离DT,R,距离越小则相似度越高。为了计算这一失真距离,应从T和R中各个对应帧之间的距离算起。设n和m分

7、别是T和R中任意选择的帧号,dT(n),R(m)表示这两帧特征矢量之间的距离。距离函数取决于实际采用的距离度量,在DTW算法中通常采用欧氏距离。 若N=M则可以直接计算,否则要考虑将T(n)和R(m)对齐。对齐可以采用线性扩张的方法,如果N1 D2 = D(i-1,j-1); else D2 = realmax; end if j2 D3 = D(i-1,j-2); else D3 = realmax; end D(i,j) = d(i,j) + min(D1,D2,D3); end end dist = D(n,m); 程序中,首先申请两个nm的距阵D和d,分别为累积距离和帧匹配距离。这里n

8、和m为测试模板与参考模板的帧数。然后通过一个循环计算两个模板的帧匹配距离距阵d。接下来进行动态规划,为每个格点(i,j)都计算其三个可能的前续格点的累积距离D1、D2和D3。考虑到边界问题,有些前续格点可能不存在,因此要加入一些判断条件。 最后利用最小值函数min,找到三个前续格点的累积距离的最小值作为累积距离,与当前帧的匹配距离d(i,j)相加,作为当前格点的累积距离。该计算过程一直达到格点(n,m),并将D(n,m)输出,作为模板匹配的结果。 3.2 DTW的高效算法 由于匹配过程中限定了弯折的斜率,因此许多格点实际上是到达不了的,如图3-1所示。因此菱形之外的格点对应的帧匹配距离是不需要

9、计算的。另外也没有必要、保存所有的帧匹配距离距阵和累积距阵,因为每一列各格点上的匹配计算只用到了前一列的三个网格。充分利用这两个特点可以减少计算量和储存空间的需要。 如图3-1所示,把实际的动态弯折分为三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),其中: 图3-1 匹配路径约束示意图 Xa和Xb都取相近的整数。由此也得出对M和N长度的限制条件: 当不满足以上条件时,认为两者差别实在太大,无法进行动态弯折匹配。 在X轴上的每一帧不再需要与Y轴上的每一帧进行比较,而只是与Y轴上y ,y 间的帧进行比较,y 和y 的计算如下式: 也可能会出现XaXb的情况,此时弯折匹配的三段为(1,Xb

10、),(Xb+1,Xa)和(Xa+1,N)。 对于X轴上每前进一帧,虽然所要比较Y轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的: 由于X轴上每前进一帧,只需要用到前一列的累积距离距阵。每前进一帧都进行更新,即按上式利用前一列的累积距离D和当前列的所有帧匹配的距离d(x,y),求出当前帧的累积距离,保存于矢量d中,再把更新的距离d赋值给D,作为新的累积距离,供下一列使用。如图3-2所示。这样一直前进到X轴上最后一列,矢量D的第M个元素即为两个模板动态弯折的匹配距离。 图3-2 累积距离矢量的动态更新 用这种方法实现的另一种DTW算法的代码如下: function dist = dtw(test, ref) global x y_min y_max global t r global D d global m n t = test; r = ref; n = size(t,1); m = size(r,1); d = zeros(m,1); D = one

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号