1 / 28
文档名称:

(完整版)DTW算法原理分析与源码.docx

格式:docx   大小:532KB   页数:28页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

(完整版)DTW算法原理分析与源码.docx

上传人:jiyudian11 2022/6/13 文件大小:532 KB

下载得到文件列表

(完整版)DTW算法原理分析与源码.docx

文档介绍

文档介绍:引言
随着时代的发展,人们越来越注重生活的品质。便捷时尚成为当代人们的追求目标。现在,语 音信号处理的技术趋于完善,语音识别技术的应用有两个发展方向:一个是大词汇量连续语音识别系 统,主要应用于计算机的听写输入等;另一个是小型化、便携式语将T (n)和R (m)对齐。对齐可以采用线性扩张的方 法,如果N<M可以将T线性映射为一个M帧的序列,再计算它与{R (1) , R (2),......,R (M) } 之间的距离。但是这样的计算没有考虑到语音中各个段在不同情况下的持续时间会产生或长或短的 变化,因此识别效果不可能最佳。因此更多的是采用动态规划(DP)的方法。
如果把测试模板的各个帧号n=1~N在一个二维直角坐标系中的横轴上标出,把参考模板的各 帧号m=1~M在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网络,网 络中的每一个交叉点(n,m)表示测试模式中某一帧的交汇点。DP算法可以归结为寻找一条通过 此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。路径不是随意 选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此 所选的路径必定是从左下角出发,在右上角结束,如图2-1所示。
图2-1 DTW算法搜索路径
为了描述这条路径,假设路径通过的所有格点依次为(n,m ),......,(n,m ),......, (n , m ),其中(n , m ) = (1, 1),(n ,m ) = (N,M)。路径可以用函数 m =0 (n ) 描述,其中n =i,i=1,2,......,N,0 (1) =1,0 (N) =M。为了使路径不至于过倾斜,可以约 〜2的范围内,如果路径已经通过了格点(n,m ),那么下一个通过的格点(n,m ) 只可能是下列三种情况之一:
(n , m ) = (n +1, m +2)
(n , m ) = (n +1, m +1)
(n , m ) = (n +1, m )
用r表示上述三个约束条件。求最佳路径的问题可以归结为满足约束条件r时,求最佳路径函 数m =0(n ),使得沿路径的积累距离达到最小值,即:
搜索该路径的方法如下:搜索从(n,m )点出发,可以展开若干条满足g的路径,假设可 计算每条路径达到
(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算法可以直接按上面的描述来实现,即分配两个NxM的矩阵,分别为积累距离矩阵D 和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧 间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离。
3 Matlab程序的实现
DTW的一般算法

function dist = dtw(t,r)
n = size(t,1);
m = size(r,1);
%帧匹配距离矩阵
d = zeros(n,m);
for i = 1:n
end
dist = D(n,m);
程序中,首先申请两个nxm的距阵D和d,分别为累积距离和帧匹配距离。这里n和m为测 试模板与参考模板的帧数。然后通过一个循环计算两个模板的帧匹配距离距阵d。接下来进行动态 规划,为每个格点(i, j)都计算其三个可能的前续格点的累积距离DI、D2和D3。考虑到边界问 题,有些前续格点可能不存在,因此要加入一些判断条件。
最后利用最小值函数min,找到三个前续格点的累积距离的最小值作为累积距离,与当前帧的 匹配距离d (i, j)相加,作为当前格点的累积距离。该计算过程一直达到格点(n, m),并将D (n,m)输出,作为模板匹配