# Cepstral Mean Normalization

Can anyone please explain about Cepstral Mean Normalization, how the equivalence property of convolution affect this? Is it must to do CMN in MFCC Based Speaker Recognition? Why the property of convolution is the fundamental need for MFCC?

• Can without using filter bank,converting the frequency directly into melscale will work in MFCC process? – purple Dec 10 '14 at 18:14

Just to make things clear - this property is not fundamental but important. It is the fundamental difference when it comes to using DCT instead of DFT for spectrum calculation.

## Why do we do Cepstral Mean Normalisation

In speaker recognition we want to remove any channel effects (impulse response of vocal tract, audio path, room, etc.). Providing that input signal is $x[n]$ and channel impulse response is given by $h[n]$, the recorded signal is linear convolution of both:

$$y[n] = x[n] \star h[n]$$

By taking the Fourier Transform we get:

$$Y[f] = X[f]\cdot H[f]$$

due to convolution-multiplication equivalence property of FT - that is why it's so important property of FFT at this step.

Next step in calculation of cepstrum is taking the logarithm of spectrum:

$$Y[q] = \log Y[f] = \log \left( X[f] \cdot H[f]\right) = X[q] + H[q]$$

because: $\log(ab) = \log a +\log b$. Obviously, $q$ is the quefrency. As one might notice, by taking the cepstrum of convolution in time domain we end up with the addition in cepstral (quefrency) domain.

## What is the Cepstral Mean Normalisation?

Now we know that in cepstral domain any convolutional distortions are represented by addition. Let's assume that all of them are stationary (which is a strong assumption as a vocal tract and channel response are not changing) and the stationary part of speech is negligible. We can observe that for every i-th frame true is:

$$Y_i[q] = H[q] + X_i[q]$$

By taking the average over all frames we get

$$\dfrac{1}{N}\sum_{i} Y_i[q] = H[q] + \dfrac{1}{N}\sum_{i} X_i[q]$$

Defining the difference:

$$\begin{array} &R_i[q] &= Y_i[q] - \dfrac{1}{N}\sum_{j} Y_j[q]\\ & = H[q] + X_i[q] - \left(H[q] + \dfrac{1}{N}\sum_{j} X_j[q]\right) \\ & = X_i[q] - \dfrac{1}{N}\sum_{j} X_j[q]\\ \end{array}$$

We ending up with our signal with channel distortions removed. Putting all above equations into simple English:

• Calculate cepstrum
• Subtract the average from each coefficient
• Optionally divide by variance to perform Cepstral Mean Normalisation as opposed to Subtraction.

## Is Cepstral Mean Normalisation necessary?

It's not mandatory, especially when you are trying to recognise one speaker in a single environment. In fact, it can even deteriorate your results, as it's prone to errors due to additive noise:

$$y[n] = x[n] \star h[n] + w[n]$$

$$Y[f] = X[f]\cdot H[f] + W[f]$$

$$\log Y[f] = \log \left[X[f]\left(H[f]+\dfrac{W[f]}{X[f]} \right) \right] = \log X[f] +\log \left(H[f]+\color{red}{\dfrac{W[f]}{X[f]}} \right)$$

In poor SNR conditions marked term can overtake the estimation.

Although when CMS is performed, you can usually gain few extra percent. If you add to that performance gain from derivatives of coefficients then you get a real boost of your recognition rate. The final decision is up to you, especially that there are plenty of other methods used for the improvement of speech recognition systems.

• @mun: Glad it helped. Why not to mark answers to your questions as accepted so you could remove new-user restrictions? – jojek Dec 10 '14 at 11:12
• @mun: Congrats! Now you post more links, vote up on questions and answers + flag posts. – jojek Dec 10 '14 at 11:17
• thanks @jojek ..I am very new to these all.But am glad that I got my problem solved. – mun Dec 10 '14 at 11:19
• @mun: Then I definitely suggest you to take a quick tour – jojek Dec 10 '14 at 11:28
• In last answer, I cannot get what "add to that performance gain from derivatives of coefficients" actually mean. Can you give some simple explain? Thanks a lot – Shuai Wang Aug 13 '15 at 8:03