I need some verification on steps required to extract MFCCs from raw audio as I'm finding that some sources outline them slightly differently.
- Get raw audio frame
- Run window function (eg Blackman) on raw audio data by multiplying each datapoint with the window
- Perform FFT on windowed audio frame.
magnitudesby powering and summing real and imaginary parts of first half of FFT
real^2 + imaginary^2
10 * Math.log10(magnitude)
- Construct Mel Filter Bank consisting of eg 26 triangular filters spaced out across entire spectrum
dBvdata with Mel Filter Bank to get 26 coefficients
log10on each of the 26 coefficients
iFFT? on 26 coefficients
- Result produced is 26 MFCCs?
Regarding point 7: I'm not certain of input for multiplying with Mel Filter Bank. Should it be dBv, magnitudes, magnitudes converted to Mel scale or something else?
Point 9: I found some sources saying that said 26 coefficients should then be used as an input for DCT/FFTs as though they would be a signal. Other sources say the should be used for an inverse FFT as the result is mean to be a cepstrum. Can someone clarify?
Can someone verify this process and point out any mistakes?
I find it difficult to find solid points of reference covering these techniques and providing reasoning behind them. I was wondering if there's a book covering all of the above with technical examples, starting with theory and explanation of DSP concepts along with MFCCs and related speech analysis techniques. Most books I'm seeing focus mainly on Mixed Markov Models and don't seem cover cepstrums and MFCCs at all (at least by looking at their tables of contents).