Some implementations of MFCC apply sinusoidal liftering as the final step in calculations of MFCC. It is claimed that speech recognition can be significantly improved. For instance, if $\text{MFCC}_i$ is a cepstral coefficient, and $w$ is a lifter, then $$\widehat{\text{MFCC}_i}=w_i\text{MFCC}_i$$

is a liftered cepstral coefficient, where $w_i$ for sinusoidal liftering is defined as:

$$w_i=1+\frac{D}{2}\sin\Big(\frac{\pi i}{D}\Big)$$

When I look at the equation, I understand the sinusoidal function has a shape such that its maximum is in the middle and approaches to zero at edges. Therefore, cepstral vector's first and the last coefficients are is reduced to zero while the middle one is intact.

Why is liftering applied and how does it improve the speech recognition?


3 Answers 3


This paper$^1$ suggests:

enter image description here

that the reason is because the filtered versions give less weight to the higher coefficients which provide less discrimination than the lower ones.

That paper references this one$^2$ which shows the plot below indicating how the application of window reduces the variability.

enter image description here



  2. B.H. Juang, L.R. Rabiner and J.G. Wilpon, "On the use of bandpass liftering in speech recognition", IEEE Trans. Acoust., Speech and Signal Processing Vol. ASSP-35, No. 7, pp. 947-954, July 1987.


While Peter K's answer may explain the use of liftering in computing a smooth spectral envelope in noise, I don't think it explains the use of liftering in the MFCC calculation. The code in HTK uses a D parameter of 23 for computing 12 MFCC, i.e. the weights are:

>> w=1+(23/2)*sin((1:12)*pi/23)
w =

 Columns 1 through 7:

    2.5659    4.1027    5.5816    6.9752    8.2575    9.4046   10.3952

 Columns 8 through 12:

   11.2107   11.8360   12.2595   12.4732   12.4732

It seems much more likely that this liftering is to do with making the 12 coefficients more equal in variance. That would be useful if you were planning to use an unweighted Euclidean metric for comparison of MFCC vectors later. Presumably you don't need to do this if you have a separate variance normalisation or use a weighted-Euclidean metric.

Mark H.


It just lift the high frequency part coefficients we can refer the HTK book, equ 5.12 enter image description here

We can plot the 12 coeffs while using these condition:

N=13; %N is the number of cepstral coefficients 

L=22; % L is the liftering parameter

ceplifter = ( 1+0.5*L*sin(pi*[0:N-1]/L) );


xlabel('number of cepstral coefficients');


title('sinusoidal  ceplifter coefficients');

enter image description here

definitely you will get the effection of "lifting" as pic shows


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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