前言
动态时间规整算法,Dynamic Time Wraping,缩写为DTW,是语音识别领域的一个基础算法。
算法的提出
DTW 的提出是为了解决或尽量解决在语音识别当中的孤立词识别不正确的问题。该问题简单描述为:在识别阶段,将输入语音的特征矢量时间序列依次与模板库中的每个模板进行相似度比较,最后将相似度最高者作为识别结果输出。但是,由于语音信号具有相当大的随机性,即使是同一个人在不同时刻所讲的同一句话、发的同一个音,也不可能具有完全相同的时间长度。而在进行模板匹配时,这些时间长度的变化会影响测度的估计,从而降低识别率。对此,日本学者 板仓(Itakura)将动态规划(DP)算法的概念用于解决孤立词识别时的说话速度不均匀的难题,提出了著名的动态时间规整算法或称动态时间伸缩算法(DTW)。
算法的内容
DTW 的目标是从不同时间跨度的两个数据求出它们之间的最小总累计距离,所以首先我们要找出输入矢量和参考矢量之间的对应关系,从而根据对应的矢量来求出模板之间的最小累计距离。在求累计距离的每一步中,需要满足以下条件的规整函数:
-
边界条件
w(1) = 1,w(N) = M (3-1)
即规整函数起点为(1,1),终点为(N,M),
-
连续条件
w(n + 1) = w(n) + 0/1/2,如果 w(n) <> w(n - 1) 成立 (3-2)
w(n + 1) = w(n) + 1/2,如果 w(n) == w(n - 1) 成立 (3-3)
Tip:
- 式(3-2)意思是 w() 的当前值和前一个 w() 值不相等,说明已经加过 1 或 2 ,则 w(n + 1) 的加上的值可为