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

语音合成与识别

开发平台:

Matlab

  1. % Compare the difference between dtwmex1 and dtwmex1n
  2. fprintf('This test script compares the difference between dtwmex1.dll (DTW minimizing the total distance) and dtwmex1n.dll (DTW minimizing the average distancee).n');
  3. file1 = 'singer1.wav';
  4. file2 = 'singer2.wav';
  5. y1 = wavread(file1);
  6. y2 = wavread(file2);
  7. mfcc1 = wave2mfccmex(y1);
  8. mfcc2 = wave2mfccmex(y2);
  9. frameNum1 = size(mfcc1, 2);
  10. frameNum2 = size(mfcc2, 2);
  11. figure
  12. % Vertical yellow grid line
  13. for i = 1:frameNum1,
  14. line([i, i], [1, frameNum2], 'color', 'y');
  15. end
  16. % Horizontal yellow grid line
  17. for j = 1:frameNum2,
  18. line([1, frameNum1], [j, j], 'color', 'y');
  19. end
  20. % ====== Solution obtained by DTW
  21. [minDist, DTWpath] = dtwmex1(mfcc1, mfcc2);
  22. fprintf('dtwmex1(): distance = %g, path length = %gn', minDist, size(DTWpath,2));
  23. for i = 1:size(DTWpath,2)-1,
  24. line([DTWpath(1,i), DTWpath(1,i+1)], [DTWpath(2,i), DTWpath(2,i+1)], ...
  25. 'color', 'r', 'marker', '.');
  26. end
  27. [minDist, DTWpath] = dtwmex1n(mfcc1, mfcc2);
  28. fprintf('dtwmex1n(): distance = %g, path length = %gn', minDist, size(DTWpath,2));
  29. for i = 1:size(DTWpath,2)-1,
  30. line([DTWpath(1,i), DTWpath(1,i+1)], [DTWpath(2,i), DTWpath(2,i+1)], ...
  31. 'color', 'g', 'marker', '.');
  32. end
  33. title('DTW paths (red: min. total distance, green: min. average distance');
  34. xlabel(file1);
  35. ylabel(file2);
  36. axis image
  37. box on