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
|