I had calculated 13 MFCCs coefficients of a speech signal and i got output in the form numerical vectors please see below figure. My confusion whether it is in time domain or frequency domain. suppose if i need to plot a graph of MFCCs, what should be in x axis and y axis? enter image description here


TL;DR the x-axis is time and the y-axis is coefficients which means they have no units.

Let's go through the process of manufacturing the MFCC features while emphasizing measure units tracking. We start from a sampled audio signal $s(n)$ with amplitude units on the y-axis and time units on the x-axis.

  • First step is to frame the audio signal. An audio signal is statistically independent, meaning it is constantly changing and unmanageable. To make it approximately constant (statistically speaking) we frame it into $20_{ms} - 40_{ms}$ frames. This does not change the units so we are staying with seconds on the x-axis for each $s_i(n)$, where $i$ denotes the frame.

  • Next step would be to calculate the Periodogram estimate of the power spectrum for each frame $s_i(k)$. This represents the power distribution of the signal per frequency bin. the x-axis of the output is in units of frequency (Hz or $\frac{\pi \times rad}{sample}$ depending on normalization) y-axis will then respectively be $\frac{power}{frequency}$ ($\frac{db}{Hz}$ or $\frac{db}{\frac{\pi \times rad}{sample}}$). The intuition here is to imitate the human hearing system which is Identifies which frequency regions have more energy in them.

  • The human ear is more sensitive to frequency changes in the low-frequency region over the high one. In other words, it is easier for us to distinguish the $100_{Hz}$ frequency difference $400_{Hz}-300_{Hz}$ over $1400_{Hz}-1300_{Hz}$. To imitate this behavior, we use a filter bank to cumulate the energy over a number of bins (typically 26). We use triangular filters, to sum energies in a certain region. We use 26 filters and the higher the frequency the wider the filter. This leaves us with power units.

An example of the triangular filters: enter image description here

  • On the next step, we approximate the results using Discrete Cosine Transform (DCT). The output of that process leaves us with 26 coefficients. We usually discard the lower and are left with 12-13. This means we have 12-13 coefficients per frame, without any units.

  • We produce these coefficients for each time frame and stack them together. as presented in the image below:

enter image description here

Note here, the x-axis represents different time frames and is measured in seconds. The y-axis is the discrete values for 12 coefficients. the level of each coefficient for each time frame, is represented by the color scheme.

An additional big advantage of this representation is also being a very compact representation of sound resulting in 12-13 numbers per time frame.

  • $\begingroup$ thank you, how can i plot fft of my speech signal. $\endgroup$ – Prashanth Kolaneru Apr 28 '19 at 15:20
  • $\begingroup$ I am assuming you are on MATLAB from the image you posted. In MATLAB, you can use imagesc(); on your coefficients. $\endgroup$ – havakok Apr 29 '19 at 7:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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