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

语音合成与识别

开发平台:

Matlab

  1. function rate = loo(waveData, distmat, mode)
  2. % LOO Leave-one-out test
  3. if nargin<1, mode=1; end
  4. waveNum = length(waveData);
  5. h = waitbar(0, 'Please wait...');
  6. for i = 1:waveNum,
  7. % fprintf('i = %gn', i);
  8. correct(i)= rundtwfcn1(waveData, i, mode, distmat);
  9. waitbar(i/waveNum, h);
  10. end;
  11. close(h)
  12. rate = sum(correct)/waveNum;
  13. %=================sub function 1========================
  14. function correct = rundtwfcn1(waveData, index, mode, distmat)
  15. waveNum = length(waveData);
  16. distance = distmat(index, :);
  17. if mode == 1, % Mode 1 is file-based LOO test
  18. distance(index) = inf;
  19. else % Mode 2 is speaker-based LOO test
  20. for i=1:waveNum,
  21. if strcmp(waveData(index).speaker, waveData(i).speaker),
  22.           distance(i) = inf;
  23. end
  24. end
  25. end
  26. [a,b] = sort(distance);
  27. correct = strcmp(waveData(b(1)).answer, waveData(index).answer);