Advertisement
Guest User

Untitled

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