Reply by Vladimir Vassilevsky January 19, 20112011-01-19

John McDermick wrote:
> Hi, > > Which fixed point algorithm is the optimal choice in terms of > precision (and speed?) for calculating LPC and LSF coefficients?
There are many good algorithms to compute LPCs and LSPs. Levinson-Durbin recursion for LPC and then the direct search for the roots along the unit circle for the LSPs are straightforward, well behaved and most commonly used. It should work unless you are after something special. Speed is no issue as those algorithms are tiny fraction of the typical workload.
> The algorithm I am working on loads 16bit samples into a frame. The > frame is high pass filtered and the filter output ranges between > -50000 to 50000. I wanted to keep the output in 16bit and tried to > scale the filter output, but that screws up the signal processing in > the remaining algorithm. So the filter output is 32bit.
Why can't you scale the data just for LPC calculation? Especially as scaling doesn't matter as the algorithms operate on the normalized autocorrelation values. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Reply by Rafael Deliano January 19, 20112011-01-19
> fixed point algorithm ... for calculating LPC ... coefficients?
Well known and later often used is: Le Roux , Gueguen "A fixed Point Computation of partial Correlation Coefficients" IEEE ASSP June 1977 Google will find it as lerouxgueguenschur.pdf , its online. Searching for "LeRoux Gueguen LPC" will come up with implementations. MfG JRD
Reply by John McDermick January 18, 20112011-01-18
Hi,

Which fixed point algorithm is the optimal choice in terms of
precision (and speed?) for calculating LPC and LSF coefficients?

The algorithm I am working on loads 16bit samples into a frame. The
frame is high pass filtered and the filter output ranges between
-50000 to 50000. I wanted to keep the output in 16bit and tried to
scale the filter output, but that screws up the signal processing in
the remaining algorithm. So the filter output is 32bit.


Thanks.