demo.m
上传用户:jzquartz
上传日期:2008-06-09
资源大小:389k
文件大小:4k
源码类别:

Audio

开发平台:

Matlab

  1. % Demo script that generates all graphics in the report
  2. % and demonstrates our results.
  3. disp('Mini-Projet: Automatic Speaker Recognition');
  4. disp('By Christian Cornaz & Urs Hunkeler (SC)');
  5. disp('Responsible Assistant:  Vladan Velisavljevic');
  6. disp(' ');
  7. disp(' ');
  8. [s1 fs1] = wavread('amintrains1.wav');
  9. [s2 fs2] = wavread('amintrains2.wav');
  10. %Question 2
  11. disp('> Question 2');
  12. t = 0:1/fs1:(length(s1) - 1)/fs1;
  13. plot(t, s1), axis([0, (length(s1) - 1)/fs1 -0.4 0.5]);
  14. title('Plot of signal s1.wav');
  15. xlabel('Time [s]');
  16. ylabel('Amplitude (normalized)')
  17. pause
  18. close all
  19. %Question 3 (linear)
  20. disp('> Question 3: linear spectrum plot');
  21. M = 100;
  22. N = 256;
  23. frames = blockFrames(s1, fs1, M, N);
  24. t = N / 2;
  25. tm = length(s1) / fs1;
  26. subplot(121);
  27. imagesc([0 tm], [0 fs1/2], abs(frames(1:t, :)).^2), axis xy;
  28. title('Power Spectrum (M = 100, N = 256)');
  29. xlabel('Time [s]');
  30. ylabel('Frequency [Hz]');
  31. colorbar;
  32. %Question 3 (logarithmic)
  33. disp('> Question 3: logarithmic spectrum plot');
  34. subplot(122);
  35. imagesc([0 tm], [0 fs1/2], 20 * log10(abs(frames(1:t, :)).^2)), axis xy;
  36. title('Logarithmic Power Spectrum (M = 100, N = 256)');
  37. xlabel('Time [s]');
  38. ylabel('Frequency [Hz]');
  39. colorbar;
  40. D=get(gcf,'Position');
  41. set(gcf,'Position',round([D(1)*.5 D(2)*.5 D(3)*2 D(4)*1.3]))
  42. pause
  43. close all
  44. %Question 4
  45. disp('> Question 4: Plots for different values for N');
  46. lN = [128 256 512];
  47. u=220;
  48. for i = 1:length(lN)
  49.     N = lN(i);
  50.     M = round(N / 3);
  51.     frames = blockFrames(s1, fs1, M, N);
  52.     t = N / 2;
  53.     temp = size(frames);
  54.     nbframes = temp(2);
  55.     u=u+1;
  56.     subplot(u)
  57.     imagesc([0 tm], [0 fs1/2], 20 * log10(abs(frames(1:t, :)).^2)), axis xy;
  58.     title(sprintf('Power Spectrum (M = %i, N = %i, frames = %i)', M, N, nbframes));
  59.     xlabel('Time [s]');
  60.     ylabel('Frequency [Hz]');
  61.     colorbar
  62. end
  63. D=get(gcf,'Position');
  64. set(gcf,'Position',round([D(1)*.5 D(2)*.5 D(3)*1.5 D(4)*1.5]))
  65. pause
  66. close all
  67. %Question 5
  68. disp('> Question 5: Mel Space');
  69. plot(linspace(0, (fs1/2), 129), (melfb(20, 256, fs1))');
  70. title('Mel-Spaced Filterbank');
  71. xlabel('Frequency [Hz]');
  72. pause
  73. close all
  74. %Question 6
  75. disp('> Question 6: Modified spectrum');
  76. M = 100;
  77. N = 256;
  78. frames = blockFrames(s1, fs1, M, N);
  79. n2 = 1 + floor(N / 2);
  80. m = melfb(20, N, fs1);
  81. z = m * abs(frames(1:n2, :)).^2;
  82. t = N / 2;
  83. tm = length(s1) / fs1;
  84. subplot(121)
  85. imagesc([0 tm], [0 fs1/2], abs(frames(1:n2, :)).^2), axis xy;
  86. title('Power Spectrum unmodified');
  87. xlabel('Time [s]');
  88. ylabel('Frequency [Hz]');
  89. colorbar;
  90. subplot(122)
  91. imagesc([0 tm], [0 20], z), axis xy;
  92. title('Power Spectrum modified through Mel Cepstrum filter');
  93. xlabel('Time [s]');
  94. ylabel('Number of Filter in Filter Bank');
  95. colorbar;
  96. D=get(gcf,'Position');
  97. set(gcf,'Position',[0 D(2) D(3)*2 D(4)])
  98. pause
  99. close all
  100. %Question 7
  101. disp('> Question 7: 2D plot of accustic vectors');
  102. c1 = mfcc(s1, fs1);
  103. c2 = mfcc(s2, fs2);
  104. plot(c1(5, :), c1(6, :), 'or');
  105. hold on;
  106. plot(c2(5, :), c2(6, :), 'xb');
  107. xlabel('5th Dimension');
  108. ylabel('6th Dimension');
  109. legend('Signal 1', 'Signal 2');
  110. title('2D plot of accoustic vectors');
  111. pause
  112. close all
  113. %Question 8
  114. disp('> Question 8: Plot of the 2D trained VQ codewords')
  115. d1 = vqlbg(c1,16);
  116. d2 = vqlbg(c2,16);
  117. plot(c1(5, :), c1(6, :), 'xr')
  118. hold on
  119. plot(d1(5, :), d1(6, :), 'vk')
  120. plot(c2(5, :), c2(6, :), 'xb')
  121. plot(d2(5, :), d2(6, :), '+k')
  122. xlabel('5th Dimension');
  123. ylabel('6th Dimension');
  124. legend('Speaker 1', 'Codebook 1', 'Speaker 2', 'Codebook 2');
  125. title('2D plot of accoustic vectors');
  126. pause
  127. close all
  128. % %Question 8
  129.  disp('> Question 8_1: Plot of the 2D trained VQ codewords')
  130.  d1 = vqlbg(c1,16);
  131.  d2 = vqlbg(c2,16);
  132.  subplot(121)
  133.  plot(c1(5, :), c1(6, :), 'or')
  134.  hold on
  135.  plot(d1(5,:),d1(6,:),'+')
  136.  xlabel('5th Dimension');
  137.  ylabel('6th Dimension');
  138.  legend('Speaker 1', 'Codebook of s1');
  139.  title('2D plot of accoustic vectors');
  140.  subplot(122)
  141.  plot(c2(5, :), c2(6, :), 'or')
  142.  hold on
  143.  plot(d2(5,:),d2(6,:),'+')  
  144.  xlabel('5th Dimension');
  145.  ylabel('6th Dimension');
  146.  legend('Speaker 2', 'Codebook of s2');
  147.  title('2D plot of accoustic vectors');
  148.  D=get(gcf,'Position');
  149.  set(gcf,'Position',[0 D(2) D(3)*2 D(4)])
  150.  pause
  151.  close all