文章标题

DTW算法介绍

DTW算法本身属于理解这篇的先验知识,同时觉得目前我在网上找到的几篇讲得相当到位了,自觉不能讲得更好,索性把前人的链接放在这里,有需要自取
链接1
链接2

DTW模板训练

背景

在原始的 DTW 算法中,只是简单地选择一个语音样本的特征序列作为模板,不存在模板训练的问题。不但模板帧的数量(帧数)多,而且有较大的随机性。为了解决这个问题,可以用多个语音样本来训练得到一个具有代表性的语音模板。还换句话说,就是找到这多个语言样本的聚类中心

具体算法

1.首先指定训练模板帧的个数并生成初始的模板(初始的聚类中心)
根据先验知识,我们设模板帧个数为M (例如对于一个孤立的汉语音节我们假设模板的帧数为 M =6);在初始化时,我们将一个样本平均分割为M段,各段取均值作为初始模板帧y,
y(n)(i)=E(subSample(i)) .
这里上标n=0,表示迭代次数,subSample(i) 表示第i段样本,i=1,…,M; E(·) 表示求均值.
2. 用 DTW 算法对每个训练样本进行分割。
我们知道再用DTW算法进行压扩的时候,样本对模板的匹配过程就是把样本进行分割。
我们用 y(n) 作为模板,用样本(n+1) 进行DTW, 得到一系列分割点 S(n+1)(i)
3. 训练新模板。使用上述的分割点将样本(n+1)分为M段,逐段求平均得到新的模板 y(n+1) .
4. 对其他样本(n+2)、(n+3)…同样进行2、3两步。
5. 若能得到较为稳定的模板帧,就可以退出迭代了。

实例

(这是我的课程作业,拿出来分析一下)
已知下列数据(蓝色)按照时间顺序依次是三个不同均值的白噪声信号。请用 DTW方法进行数据分割聚类,计算出数据的分割点和聚类中心(红色水平线)。
这里写图片描述

算法步骤

Step1: 把原始数据分为3段,分割点为S1和S2,对这三段求均值保存为y(1)~y(3);
Step2: 使用DTW算法,模板即为选取的y, 可以得到新的分割点S1‘,S2’;
Step3:用新的到的分割点S1‘,S2’ 分割原始数据,重新求得三个均值 y(1)’ ~ y(3)’ 作为新的模板;
Step4:重复Step2和Step3直到算法收敛,即分割点不再变化。最后一次迭代的分割点和模板即为所求的数据的分割点和聚类中心。

代码实现

由于这门课还没有结课,代码先不放出来了,结课后补上。有需要的同学可以评论或者邮件找我要。

参考文献

主要参考了清华大学电子工程系肖熙老师《语音信号处理》的课件,感谢老师的悉心指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值