在大部分的学科中,时间序列是数据的一种常见表示形式。对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性。在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。
语音信号具有很强的随机性,不同的发音习惯,发音时所处的环境不同,心情不同都会导致发音持续时间长短不一的现象。如单词最后的声音带上一些拖音,或者带上一点呼吸音,此时,由于拖音或呼吸音会被误认为一个音素,造成单词的端点检测不准,造成特征参数的变化,从而影响测度估计,降低识别率。
在孤立词语音识别中,最为简单有效的方法是采用动态时间归整(Dynamic Time Warping)算法。该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法,用于孤立词识别。[2]
动态时间规整在60年代由日本学者Itakura提出,把未知量伸长或缩短(压扩),直到与参考模板的长度一致,在这一过程中,未知单词的时间轴会产生扭曲或弯折,以便其特征量与标准模式对应[2] 。
是一个典型的优化问题,它用满足一定条件的的时间规整函数 描述测试模板和参考模板的时间对应关系,求解两模板匹配时累计距离最小所对应的规整函数。
测试语音参数共有 帧矢量,而参考模板共有 帧矢量, 和 不等,寻找一个时间规整函数 ,它将测试矢量的时间轴 非线性地映射到模板的时间轴 上,并使该函数 满足:
第 帧测试矢量 和第 帧模板矢量 之间的距离测度
最优时间规整情况下,所有矢量帧间的距离和 最小[2] 。
给定两个时间序列 和 ,他们的长度分别是 和 :
若 ,可直接计算两个序列的距离;
若 ,则需要线性缩放,即把短的序列线性放大到和长序列一样的长度,或者把长的线性缩短到和短序列一样的长度,再进行比较。但是,语音中各个段在不同情况下的持续时间会产生或长或短的变化,因此,这样的计算导致识别效果不佳。实践中,更多的是采用动态规划(dynamic programming)的方法,具体如下:
为对齐这两个序列,构造一个 的矩阵网格,矩阵 处的元素为 和 两个点的距离 (即序列 的每一个点和 的每一个点之间的相似度,距离越小则相似度越高),一般采用欧式距离,即 。该DP方法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点。
那么如何找到这条路径?
我们把这条路径定义为warping path 规整路径,并用 来表示, 的第 个元素定义为 ,