inithmm.m
上传用户:ay_070428
上传日期:2014-12-04
资源大小:11427k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function hmm = inithmm(samples, M)
  2. K = length(samples); %语音样本数
  3. N = length(M); %状态数
  4. hmm.N = N;
  5. hmm.M = M;
  6. % 初始概率矩阵
  7. hmm.init    = zeros(N,1);
  8. hmm.init(1) = 1;
  9. % 转移概率矩阵
  10. hmm.trans=zeros(N,N);
  11. for i=1:N-1
  12. hmm.trans(i,i)   = 0.5;
  13. hmm.trans(i,i+1) = 0.5;
  14. end
  15. hmm.trans(N,N) = 1;
  16. % 概率密度函数的初始聚类
  17. % 平均分段
  18. for k = 1:K
  19. T = size(samples(k).data,1);
  20. samples(k).segment=floor([1:T/N:T T+1]);
  21. end
  22. %对属于每个状态的向量进行K均值聚类,得到连续混合正态分布
  23. for i = 1:N
  24. %把相同聚类和相同状态的向量组合到一个向量中
  25. vector = [];
  26. for k = 1:K
  27. seg1 = samples(k).segment(i);
  28. seg2 = samples(k).segment(i+1)-1;
  29. vector = [vector ; samples(k).data(seg1:seg2,:)];
  30. end
  31. mix(i) = getmix(vector, M(i));
  32. end
  33. hmm.mix = mix;