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???
搜索该路径的方法为:搜索从(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是一种用参数表示的,用于描述随机过程统计特性的概率模型。
参考:
DTW动态时间规整算法的更多相关文章
- Dynamic Time Warping 动态时间规整算法
转自:http://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069036.html Dynamic Time Warping(DTW)是一种衡量两个 ...
- DTW动态时间规整
参考: https://blog.csdn.net/raym0ndkwan/article/details/45614813
- 动态时间规整(DTW) 转载
Dynamic Time Warping(DTW)诞生有一定的历史了(日本学者Itakura提出),它出现的目的也比较单纯,是一种衡量两个长度不同的时间序列的相似度的方法.应用也比较广,主要是在模板匹 ...
- 语音信号处理之(一)动态时间规整(DTW)
语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com 原文:http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要 ...
- 动态时间规整DTW(Dynamic Time Warping )
动态时间规整DTW(Dynamic Time Warping ) 原文:https://blog.csdn.net/raym0ndkwan/article/details/45614813 算法笔记- ...
- 语音信号处理之动态时间规整(DTW)(转)
这学期有<语音信号处理>这门课,快考试了,所以也要了解了解相关的知识点.呵呵,平时没怎么听课,现在只能抱佛脚了.顺便也总结总结,好让自己的知识架构清晰点,也和大家分享下.下面总结的是第一个 ...
- 【VS开发】【智能语音处理】语音信号处理之(一)动态时间规整(DTW)
语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要了解了 ...
- 动态时间规整-DTW算法
作者:桂. 时间:2017-05-31 16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...
- 动态时间规整DTW
动态时间规整DTW 1 概述 动态时间规整是一个计算时间序列之间距离的算法,是为了解决语音识别领域中语速不同的情况下如何计算距离相似度的问题. 相对于用经典的欧式距离来计算相似度而言,DTW在数据点个 ...
随机推荐
- (.NET高级课程笔记)反射总结
反射总结 1.dll-IL-matadata-反射 2.反射加载dll,获取module.类.方法.特性 3.反射创建对象:反射+简单工厂+配置文件 4.反射调用实例方法.静态方法.重载方法.私有方法 ...
- 2017-2018_OCR_papers汇总
2017-2018_OCR_papers 1. 简单背景 基于深度的OCR方法的发展历程 近年来OCR发展热点与趋势 检测方法按照主题进行分类 2. ECCV + CVPR + ICCV +AAAI ...
- 功能比较全的StackExchange.Redis封装帮助类(.Net/C#)
Redis官网https://redis.io/ 以下内容未全部验证,如有问题请指出 //static NewtonsoftSerializer serializer = new Newtonsoft ...
- 生产环境nginx配置文件(带https安全认证)
#user www www; worker_processes 2; error_log logs/error.log info; pid /usr/local/nginx/nginx.pid; wo ...
- css3 手风琴
1.看了网上很多关于css的手风琴案例,但是都没有讲到相关的原理. 主要原理1. 利用target属性.2.锚点链接. <!doctype html><html><hea ...
- mui返回上个页面并刷新数据
转 https://blog.csdn.net/mercedescc/article/details/82769264 今天写项目遇到个问题,就是B页面支付操作完成以后,点击返回按钮要到A页面,此时A ...
- IDEA Failed to load dx.jar
IDEA-177053 Android app crashes on build "Failed to load dx.jar" Error:Android Pre Dex: [c ...
- Node.js建立服务、路径处理与响应
通过Node.js创建一个web服务器,要写的代码可能不是最少的,但是一定是最容易理解的. 用6行代码创建的web服务器 当在浏览器中访问http://127.0.0.1:1337会看到自定义的字样 ...
- Unix系统的启动
系统启动后: 第一个运行的进程是init 进程标识符为1. init派生一个getty.该进程负责打开终端端口,提供标准输入来源和标准输出.标准输出的去处,并且在屏幕上显示一个登录提示符 接下来执行/ ...
- mysql 数据备份和还原
使用mysqldump命令备份 使用root用户备份test数据库下的person表 mysqldump -u root -p test person > D:\backup.sql 备份多个数 ...