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

DTW动态时间规整算法的更多相关文章

  1. Dynamic Time Warping 动态时间规整算法

    转自:http://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069036.html Dynamic Time Warping(DTW)是一种衡量两个 ...

  2. DTW动态时间规整

    参考: https://blog.csdn.net/raym0ndkwan/article/details/45614813

  3. 动态时间规整(DTW) 转载

    Dynamic Time Warping(DTW)诞生有一定的历史了(日本学者Itakura提出),它出现的目的也比较单纯,是一种衡量两个长度不同的时间序列的相似度的方法.应用也比较广,主要是在模板匹 ...

  4. 语音信号处理之(一)动态时间规整(DTW)

    语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com 原文:http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要 ...

  5. 动态时间规整DTW(Dynamic Time Warping )

    动态时间规整DTW(Dynamic Time Warping ) 原文:https://blog.csdn.net/raym0ndkwan/article/details/45614813 算法笔记- ...

  6. 语音信号处理之动态时间规整(DTW)(转)

    这学期有<语音信号处理>这门课,快考试了,所以也要了解了解相关的知识点.呵呵,平时没怎么听课,现在只能抱佛脚了.顺便也总结总结,好让自己的知识架构清晰点,也和大家分享下.下面总结的是第一个 ...

  7. 【VS开发】【智能语音处理】语音信号处理之(一)动态时间规整(DTW)

    语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要了解了 ...

  8. 动态时间规整-DTW算法

    作者:桂. 时间:2017-05-31  16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...

  9. 动态时间规整DTW

    动态时间规整DTW 1 概述 动态时间规整是一个计算时间序列之间距离的算法,是为了解决语音识别领域中语速不同的情况下如何计算距离相似度的问题. 相对于用经典的欧式距离来计算相似度而言,DTW在数据点个 ...

随机推荐

  1. 旷视研究院Detection组负责人

    http://www.skicyyu.org/ https://zhuanlan.zhihu.com/p/61910297 俞刚,旷视研究院Detection组负责人.2014年博士毕业于新加坡南洋理 ...

  2. Tarjan求LCA

    LCA问题算是一类比较经典的树上的问题 做法比较多样 比如说暴力啊,倍增啊等等 今天在这里给大家讲一下tarjan算法! tarjan求LCA是一种稳定高速的算法 时间复杂度能做到预处理O(n + m ...

  3. forms-隐藏处理

    获取pin码. 查看网页源码<form action="" method="post">    PIN:<br>    <inpu ...

  4. Android-Gradle(五)

    Android studio不仅允许你为你的app和依赖库创建模块,同时也可为Android wear,Android TV,Google App Engine等创建模块,而这些单独的模块又可以在一个 ...

  5. mysql查看所有触发器以及存储过程等操作集合

    今天在做每个月定时扣费的功能 用到了Mysql的Event Scheduler 昨完之后发现一个问题 Event Scheduler 默认是不开启的 要在mysql内执行SET GLOBAL even ...

  6. ceph运维常用指令

    一.集群 1.启动一个ceph 进程 启动mon进程 service ceph start  mon.node1 启动msd进程 service ceph start mds.node1 启动osd进 ...

  7. 【融云分析】如何实现分布式场景下唯一 ID 生成?

    ◀背景▶ 对于一套分布式部署的 IM 系统,要求每条消息的 ID 要保证在集群中全局唯一且按生成时间有序排列.如何快速高效的生成消息数据的唯一 ID ,是影响系统吞吐量的关键因素.那么,融云是如何做到 ...

  8. Net Core API网关Ocelot

    Ocelot在github的地址 https://github.com/TomPallister/Ocelot , 非常给力的是在课程当天完成了.NET Core 2.0的升级,升级过程请看https ...

  9. MySQL复制表-CREATE SELECT

    假设存在以下Table: mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+-- ...

  10. layui 单选项 点击显示与隐藏

    同一个页面有多个单选按钮:https://blog.csdn.net/haibo0668/article/details/86220767