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

语音合成与识别

开发平台:

Matlab

  1. % Get features of all wave files and save them into a single mat file
  2. addpath mex
  3. % Find the speakers automatically
  4. dirinfo = dir('wavefile');
  5. speakers = {dirinfo.name};
  6. speakers(1:2) = []; % Get rid of "." and ".." 
  7. % Specify the singers
  8. %speakers = {'Gao', 'Gavins', 'Joey', 'Jtchen', 'Oreo', 'Rock', 'Roger', 'Wenny', 'Zoo'};
  9. %speakers = {'Roger', 'Wenny', 'Zoo'};
  10. % ====== Compute no. of total files
  11. waveNum = 0;
  12. for i=1:length(speakers),
  13. dirinfo = dir(['wavefile/', speakers{i}, '/*.wav']);
  14. singers = {dirinfo.name};
  15. waveNum = waveNum + length(singers);
  16. end
  17. h = waitbar(0, ['Converting ', num2str(waveNum), ' wave files to mat structure ...']);
  18. % ====== Compute features
  19. index = 1;
  20. for i=1:length(speakers),
  21. dirinfo = dir(['wavefile/', speakers{i}, '/*.wav']);
  22. singers = {dirinfo.name};
  23. for j=1:length(singers),
  24. waitbar(index/waveNum);
  25. % fprintf('%g/%gn', index, waveNum);
  26. wavefile = ['wavefile', speakers{i}, '', singers{j}];
  27. [y, fs, nbits] = wavreadc(wavefile);
  28. waveData(index).speaker = speakers{i};
  29. waveData(index).gender = eval(speakers{i}(1));
  30. waveData(index).answer = singers{j}(1:end-4);
  31. waveData(index).feature = wav2ftr(y);
  32. waveData(index).frameNum = size(waveData(index).feature, 2);
  33. waveData(index).wavepath = wavefile;
  34. index = index + 1;
  35. end;
  36. end;
  37. close(h);
  38. save waveData waveData