Advertisement
Guest User

Untitled

a guest
Mar 21st, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.54 KB | None | 0 0
  1. function [mfcc] = compute_mfcc(path)
  2. [wav,Fs,bits] = wavread(path)
  3.  
  4. sof = zeros(1,23248)
  5. for i=1:23248
  6.     sof(i) = wav(i) - mean(wav)
  7. end
  8.  
  9. logE = zeros(1,144);
  10. for j=0:143
  11.     s = 0
  12.     for i=1:400
  13.         if(j*160+i <= length(sof)) then
  14.         logE(j+1) = logE(j+1) + (sof(j*160+i))**2
  15.         end
  16.     end
  17.     logE(j+1) = max(-50,log(logE(j+1)));
  18. end
  19.  
  20.  
  21. spe = zeros(1,23248);
  22. for i=1:23248
  23.     if i==1 then
  24.         spe(i) = sof(i)
  25.     else
  26.         spe(i) = sof(i) - 0.97*sof(i-1)
  27.     end
  28. end
  29.  
  30. hamming = window('hm',400)
  31. spec_rep = zeros(144,512);
  32. for i=0:143
  33.     if(i*160+400>length(spe)) then
  34. //        spec_rep(i+1,:) = [conv([spe(i*160+1:length(spe)),zeros(1,400-length(spe)+(i*160))],hamming,'same'),zeros(1,112)]
  35.         spectral_rps(i+1,:) = [[spe(i*160+1:length(spe)),zeros(1,400-length(spe)+(i*160))].*hamming,zeros(1,112)]
  36.     else
  37. //        spec_rep(i+1,:) = [conv(spe(i*160+1:i*160+400),hamming,'same'),zeros(1,112)]
  38.         spectral_rps(i+1,:) = [ (spe(i*160+1:i*160+400) .* hamming) , zeros(1,112)]
  39.     end
  40.     spectral_rps(i+1,:) = abs(fft(spectral_rps(i+1,:)))
  41. end
  42.  
  43.  
  44. loadmatfile('C:\Users\freespace\Desktop\MFCC\mel_filters.mat')
  45. energy = zeros(144,23)
  46. for i=1:144
  47.     energy(i,:) =  spectral_rps(i,1:257)*mel_filters;
  48. end
  49.  
  50.  
  51. loadmatfile('C:\Users\freespace\Desktop\MFCC\gas_station_mfcc.mat')
  52. mfcc = zeros(14,144);
  53. mfcc(1,:) = logE
  54. for i=0:12
  55.     for f=1:144
  56.        for j=1:23
  57.             mfcc(i+2,f) = mfcc(i+2,f) + max(-50,log(energy(f,j)))*cos(%pi*i/23*(j-1/2))
  58.        end
  59.     end
  60. end
  61.  
  62. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement