[Speex-dev] autocorrelation and levinson-durbin

tunkeat tunkeat at gmail.com
Thu Jan 13 00:50:42 PST 2005


am trying to understand speex's algo.

have a few questions.
1) autocorrelation:
in the function, _spx_autocorr (for floating point
version), there is a line

ac[0] += 10;

correct me if i am wrong, i suppose the addition of 
10 is used to condition  the autocorrelation matrix.  
wonder how the value of 10 is arrived at?

2) levinson durbin (LD) algo
in the function _spx_lpc,

i referred to some LD algo online.  am puzzled with
the reflection coefficient's computation. from the code, i 
understand it to be

r = [- Rxx(i) - sum(lpc*Rxx)] / [error + 0.003* Rxx(0)]

first question is why is negative of Rxx(i) added?
from the resources i gather positive Rxx(i) is added.
second is what is the motivation behind adding
0.003*Rxx(0) to error?

3) a more general question:
i have not been able to find any reason why
10 lpcs are used.  i suppose 10 lpcs are 
enough for prediction and using more coeffs
would not have made too much difference.
and 10 is even, good for lpc->lsf. had read
somewhere "historically", during the analog 
era, this number is used.  or maybe 10 is analagous
to a perfect number! ;-) 


More information about the Speex-dev mailing list