In the original method for MFCC and any other method based on cepstral coefficients The original step is like this: |FFT|^2 -> Filterbank -> Log -> DCT

but why not like that: |FFT|^2 -> Log -> Filterbank -> DCT

I didn't find the first paper proposed MFCC, Could someone please share it with me? Thank you :)


1 Answer 1


The M in the Mel Frequency Cepstral Coefficients (MFCC) stands for the Mel scale.

The Mel Scale accounts for a non-linear phenomenon associated with perception (in general) where equal input intervals do not produce proportionally equal perceptual intervals. For more information about this, you might want to check this Q&A and its references.

The $\log$ function in this process is what "transforms" the input from Hz to the Mel scale.

There are quite a few fundamental references in the Wikipedia resources cited above, including a reference to the paper that established the Mel scale.

Hope this helps.


I am not sure which "vertical axis" you are referring to in the comments because if you are referring to the "vertical axis" of the FFT then the answer would be "no", but if you are referring to the "vertical axis" of a spectrogram then the answer would be "yes" because that axis is the one that corresponds to ->frequency<-.

With reference to the following image (which is reproduced from here ), the Mel Scale is what creates this non-linear mapping. Therefore, you use the filterbank to segment your frequency domain into $N$ "bands" to then take the log of the power within those bands.

Hope this is more clear (?)

enter image description here

  • $\begingroup$ Thank you~Thanks for your share. But I still don't find the answer from them. Sorry, I didn't make myself clear, I know that Mel-scale is used to like human perception, But I don't know why apply filter ( not only MFCC but also LFCC and other cepstral coefficients method) before log but not after log(|FFT|)? Because the logarithmic algorithm only affects the vertical axis, right? So, why we always apply it after log? Thank you :) $\endgroup$
    – zlin
    Apr 2, 2019 at 11:02
  • $\begingroup$ @zlin Please see edits and also here $\endgroup$
    – A_A
    Apr 2, 2019 at 11:54
  • $\begingroup$ Thank you again, : ) The share from you are so nice, but I still cannot found the answer that I want. I mean the "vertical axis" of the FFT, (1)after FFT, we get spectrum in the frequency domain and the vertical axis is linear. (2)then we apply filterbank in |FFT| (sometime |FFT|^2) (3) then we apply log in the results from step (2), the vertical axis turns to log, right? So I want to know, why we apply filter in the FFT but not log|FFT|? The filter need log too? Do I miss something? $\endgroup$
    – zlin
    Apr 2, 2019 at 13:04

Not the answer you're looking for? Browse other questions tagged or ask your own question.