动态时间扭曲作为分类器,一个好主意吗?

6视图(30天)
艾哈迈德elmehdawi
艾哈迈德elmehdawi 2016年5月27日
回答: 伯特 2016年10月4日
大家好!
在你开始阅读之前请原谅我糟糕的英语,谢谢。
我在我最后一年在计算机工程学课程在利比亚。
我的毕业设计名称是“孤立词语音识别系统使用分类器融合方法”。项目的基本思想是,我输入一个1秒记录一个数字(0 - 9),它会在屏幕上显示为文本。我的步骤是:
*输入词。
*预处理的语音信号。
*提取特征使用Mel频率Cepstral系数。
*分类使用:
*医疗分类器。
*动态时间翘曲分类器。
*贝叶斯分类器
*分类器融合:组合上述分类器,希望为了弥补薄弱
她面前的性能。
所以我使用MFCC和提取特征后,我使用了地中海只是为了看一看整个ASR系统可视化如何工作。然后我开始与DTW分类器,说实话我不知道我做的是正确的,这是代码,如果有人使用DTW作为分类器之前请告诉我这是一个好主意使用DTW,如果是这样,我这样做对吗? ? ?
测试。垫有两个变量“m”的口语是第一,“b”的口语是一号也可每一个单独记录,我将保持“m”,记录并比较两个,1 vs1必须的成本较小的1 vs2,但不是在我的例子中,这是为什么呢? ? ? ?
清晰;
负载(“test.mat”)
b = m;
m = b;
说= 0(长度(米),(b));
ac_cost = 0(长度(米),(b));
成本= 0;
p = [];
%我们创建的距离矩阵计算之间的欧氏距离
%全对
i = 1:长度(米)
j = 1:长度(b)
dis (i, j) = (b (j) - m (i)) ^ 2;
结束
结束
ac_cost (1, - 1) = dis (1,1);
%计算第一行
我= 2:长度(b)
ac_cost (i) =说(我)+ ac_cost(1张);
结束
%计算第一coulmn
我= 2:长度(米)
ac_cost(我,1)=说(我,1)+ ac_cost(1张);
结束
%计算矩阵的其余部分
我= 2:长度(米)
j = 2:长度(b)
ac_cost (i, j) = min ([ac_cost (j - 1张),ac_cost(张,j), ac_cost (i, j - 1))) + dis (i, j);
结束
结束
%找到最佳路径
我=长度(米)
j =长度(b)
成本=成本+ dis (i, j) + dis (1, 1)
我> 1 & & j > 1
成本=成本+分钟([dis (j - 1张)说(张,j)说(i, j - 1)));
如果我= = 1
j = j - 1;
elseifj = = 1
我张=;
其他的
如果张ac_cost (j) = = min ([ac_cost (j - 1张),ac_cost(张,j), ac_cost (i, j - 1)))
我张=;
elseifac_cost (i, j - 1) = = min ([ac_cost (j - 1张),ac_cost(张,j), ac_cost (i, j - 1)))
j = j - 1;
其他的
我张=;
j = j - 1;
结束
结束
结束
提前谢谢大家

答案(1)

伯特
伯特 2016年10月4日
你好,
首先,您的实现在第一眼看起来挺好的。可以肯定的是,在最新版本的matlab实现DTW所以你没有写这自己(或者可以下载: https://nl.mathworks.com/matlabcentral/fileexchange/43156-dynamic-time-warping--dtw- )
其次,DTW是一个很老的语音识别方法。但数量有限的单词可能会奏效。最大的缺点是每个单词你只使用一个例子。如果这个例子是一个人,DTW可能不认识的时候使用另一个人(甚至同一个人使用不同的强调)……因为这个原因(如果适用的话)你可能想看看基于模型的方法,如隐藏marcov模型,但这些都是复杂得多。
希望这有助于

类别

找到更多的在人工智能的信号帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!