Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
train-对一个HMM进行训练的程序.m
Package: matlabyuyinshibiesuanfa.rar [view]
Upload User: djljerry
Upload Date: 2013-05-21
Package Size: 3k
Code Size: 1k
Category:
Speech/Voice recognition/combine
Development Platform:
Matlab
- 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),'data') & ~isempty(samples(k).data)
- continue;
- else
- samples(k).data = mfcc(samples(k).wave);
- end
- end
- hmm = inithmm(samples, M);
- for loop = 1:40
- fprintf('n第%d遍训练nn',loop)
- hmm = baum(hmm, samples);
- %计算总输出概率
- pout(loop)=0;
- for k = 1:K
- pout(loop) = pout(loop) + viterbi(hmm, samples(k).data);
- end
- fprintf('总和输出概率(log)=%dn', pout(loop))
- %比较两个HMM的距离
- if loop>1
- if abs((pout(loop)-pout(loop-1))/pout(loop)) < 5e-6
- fprintf('收敛!n');
- return
- end
- end
- end
- disp('迭代40次仍不收敛, 退出');