Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have read through many papers related to the Mel-frequency cepstrum coefficient (MFCC): I have some confusion about the MFCC process:

  1. Many of the papers say that I have to do a FT (Fourier Transform) on the log-spectrum to obtain cepstrum (as mentioned in Wikipedia : definition of power cepstrum)

  2. Many say I have to do an IFT (Inverse Fourier Transform) on log-spectrum to obtain cepstrum.

  3. Many refer to the DCT-II (Discrete cosine Transform-2) on the Mel-log-spectrum to obtain MFCC.

My question is, which one is right:

  1. FT or IFT?

  2. If the IFT is correct than why are they using DCT-II instead of IDCT-II, since the DCT-II is similar to DFT or FT?

(hence, the IDFT or IFT should be similar to IDCT-II)

share|improve this question

migrated from Nov 7 '12 at 15:30

This question came from our site for professional and enthusiast programmers.

First of all, FT and IFT of a discrete sequence are the same up to complex conjugation/scaling - these two operations will thus yield qualitatively the same result (in the sense that subsequence processing/statistical modeling will make abstraction of these differences anyway). The textbook definition of cepstrum requires a Fourier transform. People sometimes use the inverse Fourier transform to emphasizes that the X axis on the cepstrum plot can indeed be interpreted as a time (rather than as a quefrency).

The MFCC extraction process found in speech and audio analysis systems uses the DCT since it has the advantage of being a real -> real transform, and because the resulting coefficients are in practice decorrelated from each other - which is not the case if you take the sequence of real/imaginary part of a FT or IFT. This makes the resulting data very good for subsequent modeling with gaussian models with diagonal covariance matrix.

Another view on this: take thousands of hours of audio, extract log mel frequency coefficients (through a bank of filters with triangular responses, with center frequencies distributed on the Mel scale) for each analysis frame. You'll get a big dataset... Do a PCA on it to extract the dimensionality reduction transform that captures most of the variance of the mel coefficients. The transform matrix the PCA will produce will be uncannily close to the DCT matrix.

share|improve this answer
would you know of hours of audio speech anywhere on the web, to run PCA on ? I believe your point, but it would be interesting / fun to check it on real data. – denis Oct 10 '13 at 14:58 – pichenettes Oct 10 '13 at 15:56

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.