声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5609|回复: 8

[模式识别] 训练HMM(语音识别)的问题

[复制链接]
发表于 2009-4-2 11:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
小弟近日利用扩展编程里语音识别HMM的实例来进行HMM训练
结果总和概率输出为NaN。
源程序我没有改动,哪里出现问题了呢?
顺便问一下,源程序里那个samples.mat的cell型究竟是怎样类型的
看书上说是samples.data和samples.wave
但是这是一个1*10 的cell型,这些数据怎么放进去?
我想自己生成的samples.mat
但是不知道内部的cell结构
知情者请赐教
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-4-2 14:04 | 显示全部楼层
后面的samples.wave和samples.data我弄清楚了
其实就是一个1*10 的cell然后赋值给了上述的数组
然后用mfcc进行参数提取和训练的

但是原始代码和.mat用起来出错是为什么呢?
为什么都是NaN?
等待大侠们给说说
发表于 2009-4-2 14:47 | 显示全部楼层
Bioinformatics Toolbox个人没碰过, 但直觉NaN容易解决!
专业并不同, 建议楼主可以的话说简单具体些!
 楼主| 发表于 2009-4-2 15:01 | 显示全部楼层
多谢chaching的回复
我在做HMM模型下的语音识别,用的源码就是matlab扩展编程上面提供的,包含train、viterbi等函数
在训练过程中,有一段程序需要求总和概率
具体的源码为
for loop = 1:3
fprintf('\n第%d遍训练\n\n',loop)
hmm = baum(hmm, samples);
%计算总输出概率
pout(loop)=0;
for k = 1:K
  pout(loop) = pout(loop) + viterbi(hmm, samples(k).data);
end
fprintf('总和输出概率(log)=%d\n', pout(loop))
%比较两个HMM的距离
if loop>1
  if abs((pout(loop)-pout(loop-1))/pout(loop)) < 5e-6
   fprintf('收敛!\n');
   return
  end
end
end
其中的viterbi就是另外一个函数了
算出来pout全部是NaN

书上的源程序我都没有改过,怎么会出错呢?
如果您用过的话,可能一下就会明白的,我是个初学者,所以弄了半天还是不知道错在哪里
出现了分母为零?

我也正在不断尝试
感谢:handshake
发表于 2009-4-3 16:19 | 显示全部楼层
LZ的状况我无法复制, 好像缺些资料!?
NaN的问题, 建议设断点进入debug模式, 看看那一步出现NaN, 或inf...
我都是如此检查的!
 楼主| 发表于 2009-4-8 10:52 | 显示全部楼层
感谢chaching。因为这个程序包含很多函数互相嵌套,而且还有训练样本,一并上传会很大。
我准备用dubug去尝试找找。
估计还是可以解决的

只是源程序莫名其妙出错让人觉得很怪。

尽信书则不如无书

感谢chaching again!!
发表于 2009-6-17 16:41 | 显示全部楼层
从研学跑到这里 还是没有人给解答啊:@Q
发表于 2011-11-15 22:47 | 显示全部楼层
等把书看明白了,在看一下lz的程序
发表于 2011-12-6 12:02 | 显示全部楼层
同问,我是想用自己的数据,全部都是NAN。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 13:00 , Processed in 0.113278 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表