zoukankan      html  css  js  c++  java
  • DTW动态时间规整算法

    1、基本介绍

    • DTW:Dynamic Time Warping,即动态时间归整。DTW算法基于DP动态规划思想,解决了发音长短不一的模板匹配问题,常用于语音识别(孤立词识别)。

    • HMM算法在训练阶段需要提供大量的语音数据,通过反复急速那才能得到模型参数;而DTW算法的训练中几乎不需要额外的计算。因此DTW算法得到了广泛使用。

    2、算法原理(理论原理)

    无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。

    2.1 主要术语

    • 参考模板:以存入模板库的各个词条成为参考模板,可以理解为训练集,表示形式为:

      [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帧的语音特征矢量。

    • 重点:参考模板与测试模板一半采用相同类型的特征矢量(MFCC、FPC系数)、相同的帧长、相同的窗函数和相同的帧移。

    2.2 算法由来和改进过程

    • 传统方法:

      • 首先,需要比较相似度,一般采用欧式距离(D[T, R]),距离越小则相似度越高。为了计算失真距离,应该让T和R中各个对应帧之间的距离算起。

      • 若N=M,则可以直接计算(d(T,R) = sqrt{(T_{1} - R_{1})^{2} + (T_{2} - R_{2})^{2} + ...+ (T_{N} - R_{N})^{2}})

      • 若N<M,则需要将T(n)和R(m)对对齐。对齐采用线性扩张的方法,即将测试模板T线性映射为一个M帧(参考模板长度)的序列,再计算测试模板T与参考模板R的欧式距离。

    • 改进方法(采用DP算法):由于传统方法计算没有考虑到语音各个段在不同情况下的持续时间会产生或短或长的变化,因此识别效果不佳。更多的是采用动态规划DP算法。

      • 具体实施方法:可以将测试模板和参考模板投影到一个二维直角坐标系中,测试模板的各个帧号可以在横轴上标出,参考模板的各个帧号可以在纵轴上标出。通过这些表示帧号的证书坐标画出一些纵横线即可形成一个网络,网络中的每一个交叉点(n,m)表示测试模式中某一帧的交汇点。

      • 其中的DP算法:DP算法可以归结为寻找一条通过此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。

      • 描述路劲:假设路径通过的所有格点依次为:(n1, m1), ..., (ni, mi), ..., (nN, mM),其中(n1,m1)=(1,1),(nN, mM)=(N,M)。路径函数为Oslash,如果路径已经通过格点(n,m),那么下一个通过的格点(n,m)只可能是下列三种情况在之一:

        • (n,m) -> (n+1, m+1)

        • (n,m) -> (n+1, m+1)

        • (n,m) -> (n, m+1)
          (eta)描述上述三个约束条件,则求最佳路径的问题可以归结为满足约束条件时 ,求最佳路劲函数m=&Oslash。使得沿着路劲的积累距离达到最小值。

        • 最佳路径函数Oslash???

      • 搜索该路径的方法为:搜索从(n,m)点出发,可以展开若干条满足(eta)的路径,假设可计算每条路径达到(n,m)点时的积累距离,具有最小积累距离者即为最佳路径。容易证明,由于约束条件(eta),点(n,m)一定选择(n-1,m-1)、(n-1,m)和(n,m-1)等这3个距离之路径延伸通过,此卢晶晶的积累距离为:

      [D[(n,m)] = d[T(n), R(m)] + min{D(n-1,m-1), D(n-1, m), D(n,m-1)} ]

        因此从(n,m)=(1,1)出发搜索(n,m),对每一个(n,m)都存储相应的距离,这个距离是当前格点的匹配距离与前一个累计距离最小的格点。搜索到(n,m)时,只保留一条最佳路径。通过逐点向前寻找就可以求得整条路劲,这套DP算法便是DTW算法。
      
      • 总结:DTW算法可以直接按照描述来实现,即分配两个NxM的矩阵,分别为积累距离矩阵D和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离。

    2.3 DTW算法流程

    • 等待完善

    • 代码实现

    3、算法DTW和算法HMM的比较

    • 优点:

      • (1)DTW算法本身简单且有效,而HMM算法比较复杂,对于孤立词识别,在相同条件下,两者算法的识别效果相差不大。

      • (2)HMM需要在训练阶段提供大量的语音数据,通过反复计算才能得到参数模型,而DTW算法的训练中几乎不需要额外的计算。

    • 缺点:

      • (1)DTW算法没有一个有效地用统计方法进行训练的框架,不容易将底层和顶层的各种知识用到语音识别模型中,因此在解决大词汇量、连续语音、非特定语音识别问题时较之HMM相形见绌。而HMM是一种用参数表示的,用于描述随机过程统计特性的概率模型。

    参考

    1. DTW算法:https://baike.baidu.com/item/dtw/3219286?fr=aladdin

    2. DTW原理实现:https://blog.csdn.net/ljh0302/article/details/50884303

  • 相关阅读:
    python wx安装
    HttpPost请求将带有数组json格式数据作为请求体传入的简单处理方法
    介绍基于camera和IMU的SLAM算法数据采集环境搭建
    《Linux操作系统分析》课程学习总结报告
    安装Sophus出现error: lvalue required as left operand of assignment unit_complex_.real() = 1.问题的解决办法
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    QT 无法运行“rc.exe”?
    linux上boost库编程cmake配置出错
  • 原文地址:https://www.cnblogs.com/hugechuanqi/p/10636553.html
Copyright © 2011-2022 走看看