www.pudn.com > hmm--matlab.rar > train.asv
function [hmm,pout] = train(samples,M)
%输入:
% samples--样本结构
% M--为每个状态知道pdf个数,如【3 3 3 3】
%输出:
% hmm--训练完成后的hmm
K = length(samples);
%计算语音参数
disp('正在计算语音参数……')
for k=1:K
if isfield(samples{k})&~isempty(samples{k})
continue;
else
samples{k} = mfcc(samples{k}.wave); ???
end
end
hmm = inithmm(samples,M);
for loop =1:40
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});
end
fprintf('总和输出概率(log)=%d\n',pout(loop));
%比较两个HMM的距离
if loop>1
if abs((pout()))