时间序列数据存在多种相似或距离函数,其中最突出的是动态时间规整。一次正确的发音应该包含构成该发音的全部音素以及正确的音素连接次序。其中各
音素持续时间的长短与音素本身以及讲话人的状况有关。为了提高识别率,克服发同一音而发音时间长短的不同,采用对输入语音信号进行伸长或缩短直到与标准模式的长度一致。这个过程称为时间规整。
提出背景
在大部分的学科中,
时间序列是数据的一种常见表示形式。对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性。在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。
语音信号具有很强的随机性,不同的发音习惯,发音时所处的环境不同,心情不同都会导致发音持续时间长短不一的现象。如单词最后的声音带上一些拖音,或者带上一点呼吸音,此时,由于拖音或呼吸音会被误认为一个音素,造成单词的端点检测不准,造成特征参数的变化,从而影响测度估计,降低识别率。
在孤立词语音识别中,最为简单有效的方法是采用动态时间归整(Dynamic Time Warping)算法。该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法,用于孤立词识别。
基本概念
动态时间规整在60年代由日本学者Itakura提出,把未知量伸长或缩短(压扩),直到与参考模板的长度一致,在这一过程中,未知单词的时间轴会产生扭曲或弯折,以便其特征量与标准模式对应。
原理描述
是一个典型的优化问题,它用满足一定条件的的时间规整函数 描述测试模板和参考模板的时间对应关系,求解两模板匹配时累计距离最小所对应的规整函数。
测试语音参数共有 帧矢量,而参考模板共有 帧矢量, 和 不等,寻找一个时间规整函数 ,它将测试矢量的时间轴 非线性地映射到模板的时间轴 上,并使该函数 满足:
第 帧测试矢量 和第 帧模板矢量 之间的距离测度
最优时间规整情况下,所有矢量帧间的距离和 最小。
实现步骤
给定两个时间序列 和 ,他们的长度分别是 和 :
若 ,可直接计算两个序列的距离;
若 ,则需要线性缩放,即把短的序列线性放大到和长序列一样的长度,或者把长的线性缩短到和短序列一样的长度,再进行比较。但是,语音中各个段在不同情况下的持续时间会产生或长或短的变化,因此,这样的计算导致识别效果不佳。实践中,更多的是采用
动态规划(dynamic programming)的方法,具体如下:
为对齐这两个序列,构造一个 的矩阵网格,矩阵 处的元素为 和 两个点的距离 (即序列 的每一个点和 的每一个点之间的相似度,距离越小则相似度越高),一般采用欧式距离,即 。该DP方法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点。
那么如何找到这条路径?
我们把这条路径定义为warping path 规整路径,并用 来表示, 的第 个元素定义为 ,
这条路径不是随意选择的,需要满足以下几个约束:
(1) 边界条件:
任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束。
(2) 连续性:
若 ,则路径的下一个点 需要满足
即,不可能跨过某个点去匹配,只能和自己相邻的点对齐。这样可以保证 和 中的每个坐标都在 中出现。
(3) 单调性:
如果 ,那么对于路径的下一个点 需要满足
这限制 上面的点必须是随着时间单调进行的。
综合连续性和单调性约束,每一个格点的路径就只有三个方向。如:如果路径已经通过了格点 ,那么下一个通过的格点只可能是下列三种情况之一:
满足上面这些约束条件的路径可以有指数个,然后我们感兴趣的是使得下面的规整代价最小的路径:
举例
假设标准模板R为字母ABCDEF(6个),测试模板T为1234(4个)。R和T中各元素之间的距离已经给出。如下:
我们需要找出其中距离最短的那条匹配路径。
现假设题目满足如下的约束:当从一个方格 或 或 中到下一个方格,如果是横着或者竖着的话其距离为,如果是斜着对角线过来的则是 。其约束条件如下:
其中, 表示 个模板都从起始分量逐次匹配,已经到了 中的 分量和 中的 分量,并且匹配到该步是两个个模板之间的距离。
所以我们将所有的匹配步骤标注后如下:
路径如下图:
在语音中的应用
假定一个孤立字(词)
语音识别系统,利用模板匹配法进行识别。这时一般是把整个单词作为识别单元。在训练阶段,用户将词汇表中的每一个单词说一遍,提取特征后作为一个模板,存入模板库。在识别阶段,对一个新来的需要识别的词,也同样提取特征,然后采用DTW算法和模板库中的每一个模板进行匹配,计算距离。求出最短距离也就是最相似的那个就是识别出来的字了。