dtw路径与线性变换路径对比

转自:http://baike.baidu.com/link?url=z4gFUEplOyqpgboea6My0mZPBh3_sZZpk6EfpzwuZ16uMlyPl7utZQi-XNkotLzLrGih9zUFNG4_tygNg8khiK

在孤立词 语音识别

中,最为简单有效的方法是采用DTW(Dynamic Time Warping,动态时间归整)算法,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法,用于孤立词识别。HMM算法在训练阶段需要提供大量的语音数据,通过反复计算才能得到模型参数,而DTW算法的训练中几乎不需要额外的计算。所以在孤立词 语音识别

中,DTW算法仍然得到广泛的应用。

无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。已存入模板库的各个词条称为参考模板,一个参考模板可表示为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

,LPC系数)、相同的帧长、相同的窗函数和相同的帧移。

假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离 D[T,R],距离越小则相似度越高。为了计算这一失真距离,应从T和R中各个对应帧之间的距离算起。设n和m分别是T和R中任意选择的帧号,d[T(n),R(m)]表示这两帧特征矢量之间的距离。距离函数取决于实际采用的距离度量,在DTW算法中通常采用欧氏距离。

若N=M则可以直接计算,否则要考虑将T(n)和R(m)对齐。对齐可以采用线性扩张的方法,如果N

若把测试模板的各个帧号n=1~N在一个二维直角坐标系中的横轴上标出,把参考模板的各帧号m=1~M在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网络,网络中的每一个交叉点(n,m)表示测试模式中某一帧的交汇点。DP算法可以归结为寻找一条通过此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束

为了描述这条路径,假设路径通过的所有格点依次为(n 1

,m 1

),……,(n i

,m j

),……,(n N

,m M

),其中(n 1

,m 1

)=(1,1),(n N

,m M

)=(N,M)。 路径

可以用函数m = Oslash;(n )描述,其中n =i,i=1,2,……,N,Ø(1)=1,Ø(N)=M。为了使路径不至于过倾斜,可以约束斜率在0.5~2的范围内,如果路径已经通过了格点(n ,m ), [1]

那么下一个通过的格点(n ,m )只可能是下列三种情况之一:

(n ,m )=(n +1,m +2)

(n ,m )=(n +1,m +1)

(n ,m )=(n +1,m )

用r表示上述三个约束条件。求最佳 路径

的问题可以归结为满足约束条件r时,求最佳路径函数m =Ø(n ),使得沿路径的积累距离达到最小值,即:

搜索该路径的方法如下:搜索从(n ,m )点出发,可以展开若干条满足ŋ的路径,假设可计算每条路径达到(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算法可以直接按上面描述来实现,即分配两个N×M的矩阵,分别为积累距离矩阵D和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离

dtw算法 c语言实现,dtw算法 - WELEN相关推荐

  1. c语言考试算法,c语言考试常用算法docx.docx

    c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...

  2. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  3. 函数c语言桶排算法,C语言基本排序算法之桶式排序实例

    本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...

  4. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)

    Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...

  5. c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)

    1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...

  6. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)

    算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...

  7. 用c语言编写银行家算法,C语言实现银行家算法

    <C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...

  8. 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)

    最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...

  9. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

  10. 格雷码算法c语言实验报告,算法设计与分析实验报告

    本科生实验报告 课程名称:算法设计与分析 实验项目:递归和分治算法 实验地点:计算机系实验楼110 专业课:物联网1601学生.2016002105 学生姓名:于 指导员:郝晓丽 2018年5月4日 ...

最新文章

  1. [Swift]LeetCode901. 股票价格跨度 | Online Stock Span
  2. idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)
  3. spark 简单实战_大数据入门与实战-Spark上手
  4. 大商超的2020:转型、收紧、试新
  5. hdu5831 Rikka with Parenthesis II
  6. CSM管理系统_复选框删除多条记录
  7. 【POJ3277】City Horizon,线段树
  8. 《Java程序员面试宝典(第4版)》试读感想
  9. TrueLicense 使用JDK自带的 keytool 工具生成公私钥证书库
  10. atoll C语言实现
  11. CSS-Learning | 使用border-radius创建圆形和胶囊形状(长圆形)
  12. 解决vue项目在ie、360兼容模式下空白页面问题
  13. 【划词翻译】Ubuntu 实现划词翻译
  14. 阿觿学长带领准大学生们一起走进互联网
  15. 积极向上的佳句(2)
  16. java epson指令集_小票打印机指令集封装(支持EPSON指令)
  17. java计算机毕业设计基于springboo+vue的人事管理系统
  18. GameBench企业版中关于FPS的测试项分析
  19. 在ORANGES的基础上改进操作系统
  20. SAP 批量打开生产工单

热门文章

  1. Android开发学习总结——appcompat_v7项目说明
  2. 二进制文件(.bin)查看
  3. 阿里云网盘来了,来搭建自己“免费“私人网盘
  4. 啊哈 c语言pdf百度云,啊哈c语言完整版
  5. 基于Python与selenium实现河北干部网络学院自动化登录与学习
  6. c++万能头文件包含的头文件
  7. IntelliJ IDEA 代码格式化,快捷键
  8. win10使用debug
  9. 网易音乐链接html代码,爬取网易云音乐MP3链接脚本
  10. python ppt表格样式展示