annotate dsp/mk_mfcc.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents c3b0cd708782
children
rev   line source
samer@32 1 % mk_mfcc - Function factory, makes MFCC functions
samer@32 2 %
samer@32 3 % mk_mfcc ::
samer@32 4 % I:[[M]->[N]] ~'selects which rows of DCT to compute',
samer@32 5 % N:natural ~'size of input',
samer@32 6 % nonneg ~'sampling rate'
samer@32 7 % -> ([[N]]->[[M]]).
samer@32 8
samer@32 9 function f = mk_mfcc(M,N,fs)
samer@32 10 Nfft = 2^nextpow2(N+1);
samer@32 11 Nspec= dftbins(Nfft);
samer@32 12
samer@32 13 wndw = spdiag(hamming(N,'periodic'));
samer@32 14 melW = tri_filterbank(melspace(400/3,min(7000,fs/2),42),fs*(0:Nspec-1)/Nfft);
samer@32 15 dctW = row(dct(eye(size(melW,1))),M);
samer@32 16 f=@mfcc;
samer@32 17
samer@32 18 function y=mfcc(x)
samer@32 19 ft = fft(wndw*x,Nfft);
samer@32 20 y = dctW*log(melW*abs(ft(1:Nspec,:)).^2);
samer@32 21 end
samer@32 22 end