2.4.2 模式识别具体算法--动态时间伸缩算法(Dynamic Time Warping,DTW)
一次正确的发音应该包含构成该发音的全部音素以及正确的音素连接次序。其中各音素持续时间的长短与音素本身以及讲话人的状况有关。为了提高识别率,克服同一音时间长短的不同,采用对输入语音信号进行伸长或缩短直到与标准模式的长度一致。这个过程称为时间规整。DTW是用满足一定条件的时间归正函数描述待识别模板和参考模板的时间轴上的对应关系,求解计算得出待测信号与参考模板匹配之间的累计距离最小所对应的归正函数,这种思想为了得到正确率最高的识别算法。DTW解决了孤立词模式匹配中发音长短不一的问题。实验证明,这种算法在应用于孤立词的语音识别中取得了良好的识别率。
2.4.3 DTW算法原理
若将测试模板和参考模板用字母T和R来表示,为了比较它们之间的相似度,可以通过计算它们之间的距离,记作 ,显然计算得出的距离值越小那么两者的相似度就越高。为了计算这一失真距离,就逐个的计算T和R两个模板中的对应帧之间的距离累加求和。假设n和m分别是T和R中两个任意选择帧的序号,则用 来表示这两帧特征矢量之间的距离。该距离函数因采用的距离度量的不同会产生很大差异,而本设计采用的是欧氏距离度量。
若n和m相等就可以进行直接计算,不然就要考虑将 和 长度对齐。为了达到对齐,本设计采用了动态规划(Dynamic Programming, DP)的方法。将测试模板的每一个帧号,即n的取值为1到N,在直角坐标系的横轴上标出,把参考模板的帧号m的取值为1到M,在纵轴上标出。穿过这些表示帧号两个按顺序排列距离均匀分布的整数数列,画出纵横交错的直线进而形成一个网格,网格中的直线形成的交叉点用坐标 描述,这些交叉点表示的是测试模板中某一帧与训练模版中某一帧的交汇点[13]。
DP算法就是为寻找一条路径通过此网格中若干个格点,该路径通过的格点即为测试模板和参考模板中进行距离计算的帧号。路径不是随意选取的,因为虽然任何一个语音词汇的发音快慢都不可能完全相同,但其各个部分的先后顺序却不可能改变,因此所选的路径必须是从左下角的格点出发,顺序的朝着右上角方向连接,在右上角的格点结束,动态规整探索路径如图5所示。
1 2 3 4 5 6 7 8 9 10 N
图5 动态规整探索路径
为了具体的描述一条正确的路径,假设这条路径是通过的所有格点,并将这些格点依次记为( , ),…,( , ),…,( , ),其中( , )=(1,1), ,( , )=(N,M)。路径可以用函数 = 描述,其中 =i,i=1,2,…,N, =1, =M。为了使路径不至于过分倾斜,不妨约束每一段路径的斜率在范围为 之间,假设路径已通过了格点( , ),则下一个格点( , )只可能是下列三种情况之一。
以上的三个条件用 来表示。求的最佳路径的问题就可以归结为满足约束条件 时,求最佳的路径函数 = 的问题,即求沿路径得到最小累加距离,即:
(5)
搜索获得该路径的方法为:首先从点( , )开始,虽然可以展开若干条满足条件 的路径,但是可以计算出每条路径达到点( , )时的总的累加距离,其中最小累加距离路径就是最佳路径。限定范围内的任何格点( , )只可能有一条搜索路径通过。由此可得,其可达到该格点的前一个格点只可能是( , )、( , )和( , ),那么( , )一定要选择这3个格点中距离最小的作为最佳前续格点,若用( , )代表此格点,并将通过该格点的延伸而通过,进而该路径的积累距离可以记为: MATLAB语音识别系统的设计+DTW算法+流程图(7):http://www.751com.cn/tongxin/lunwen_809.html