DTW算法理解复习篇

                          dtw路径与线性变换路径对比
 
在孤立词 语音识别中,最为简单有效的方法是采用DTW(Dynamic Time Warping,动态时间归整)算法,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法,用于孤立词识别。
参考模板,可表示为R={R(1),R(2),……,R(m),……,R(M)},m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模板所包含的语音帧总数,R(m)为第m帧的语音特征矢量。
测试模板,可表示为T={T(1),T(2),……,T(n),……,T(N)},n为测试语音帧的时序标号,n=1为起点语音帧,n=N为终点语音帧,因此N为该模板所包含的语音帧总数,T(n)为第n帧的语音特征矢量。
假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离 D[T,R],距离越小则相似度越高。
设n和m分别是T和R中任意选择的帧号,d[T(n),R(m)]表示这两帧特征矢量之间的距离。
若N=M则可以直接计算,否则要考虑将T(n)和R(m)对齐。
对齐可以采用线性均匀扩张的方法, 但是这样的计算没有考虑到语音中各个段在不同情况下的持续时间会产生或长或短的变化,因此 识别效果不可能最佳,更多的是采用动态规划(DP)的方法。
DP算法可以归结为寻找一条通过此网络中若干格点的 路径, 路径通过的格点即为测试和参考模板中进行计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是先后次序不可能改变,因此 所选的路径必定是从左下角出发,在右上角结束。
为了描述这条路径,假设路径通过的所有格点依次为(n 1 ,m 1 ),……,(n i ,m j ),……,(n N ,m M ),其中(n 1,m 1 )=(1,1),(n N ,m M )=(N,M)。 路径可以用函数m = Oslash;(n )描述,其中n =i,i=1,2,……,N,Ø(1)=1,Ø(N)=M。 为了使路径不至于过倾斜,可以 约束斜率在0.5~2的范围内,如果路径已经通过了格点(n ,m ), [1] 那么下一个通过的格点(n ,m )只可能是下列三种情况之一:
(n ,m )=(n +1,m +2)
(n ,m )=(n +1,m +1)
(n ,m )=(n +1,m )
 
用r表示上述三个约束条件。求最佳 路径的问题可以归结为满足约束条件r时,求最佳路径函数m =Ø(n ), 使得沿路径的积累距离达到最小值,即:
搜索该路径的方法如下:搜索从(n ,m )点出发,可以展开若干条满足ŋ的路径,假设可计算每条路径达到(n ,m )点时的总的积累距离,具有最小累积距离者即为最佳路径。易于证明,限定范围的任一格点(n ,m )只可能有一条搜索路径通过。对于(ni,mi),其可达到该格点的前一个格点只可能是(n ,m )、(n ,m -1)和(n ,m -2),那么(n ,m )一定选择这3个距离之路径延伸而通过(n ,m ),这时此路径的积累距离为:
D[(n ,m )]=d[T(n ),R(m )]+D[(n , m )]
其中的n = n -1 ,m -1由下式决定:
D[(n ,m )]=min{D[(n , m )],D[(n , m -1)],D[(n , m -2)]}
这样可以 从(n ,m )=(1,1)出发搜索(n ,m ),再搜索(n ,m ),……,对每一个(n ,m )都存储相应的前一格点(n ,m )及相应的帧匹配距离d[n ,m ]。搜索到(n ,m )时,只保留一条最佳路径。如果有必要的话,通过逐点向前寻找就可以求得整条路径。这套DP算法便是DTW算法。
DTW算法可以直接按上面描述来实现,即分配两个N×M的矩阵,分别为积累距离矩阵D和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离
 

 

怎样找到距离最小?

要做到全局最小,这个全局要通过一条路径累积得到。 整个累积是通过不同阶段逐步累积才得到的。
所以不同阶段时间t中,要保存所有的可能性事件的累积距离。
从当前的时间t,到下一个阶段t+1,通过之前的累积状态,计算出当前各种不同事件的累积距离。
逐步将这个累积距离往前推,得到最后时间te各个不同时间的累积距离,选出距离最小。
 
通过这个累积距离最小,如何反推出它的路径(有点类似维特比解码)。
 
在计算累积概率的同时,保存了当前时刻t的各个状态下的前一个路径。如此,可以反向递推出整条路径
 
 
这种逐步往前推进的做法,不用考虑各种全网络的连通可能性,内存和效率都可以得到提升。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值