[Clam-devel] lpc formant extraction question

abe abe.kazemzadeh at gmail.com
Fri Jun 15 19:35:59 PDT 2007


Thanks David...
> Maybe is the time to move Sandra's formant tracking to the main repository. 
> You could be doing things that are already done. So it is better to show you 
> the code. I just joined all the related clam-draft folders in a single one so 
> it can be moved to a public repository. 
>
> So, Xavi, Pau, where an how do i move it.
>
>   
I'd be glad to see it and possibly save myself some work...

> I can't help you so much. I just ported the LPC to ports based behaviour and i 
> don't have much more insight on the algorithm than what you are explaining.
> Sandra code has a class named PolynomialRootsFinder. In the LPC there is an 
> algorithm called Levinson Durbin which also computes roots but i am not sure 
> is that what you are looking for.
>
>   
 From what I understand, the Levinson-Durbin is a preceding step.  Let 
me explain it b/c I think it helps me understand it better and also b/c 
maybe someone will catch me if I'm making a mistake... 

The general procedure is
windowing->autocorrelation coefficients->LPC coefficients->formants. 

The Levinson-Durbin recursion is the step that goes from the 
autocorrelation coefficients to LPC coefficients. For a linear 
prediction order of p, you use the previous p samples in a linear model 
to predict the p+1 sample.  The p coefficients of this linear model are 
the LPC coefficients.  To get these, you do the Levinson-Durbin 
algorithm which uses the auto correlation coefficients to recursively 
solve the LPC coefficients from 1 (first order filter)  to p (pth order 
filter). 

To get the formants, you have to solve the linear model of the LPC 
coefficients, which I think is just finding the roots of a polynomial or 
the poles of the filter.  The LPC coefficients are real valued, but the 
roots are complex.  The arg/angle of the root/pole is the formant 
frequency and the magnitude is the formant bandwidth.

I've read up on it the first week of the SoC, so I think I understand 
it, but if I'm mistaken or missing something let me know. 

> Matrix code could be considered deprecated as it is almost not used, not 
> tested and FOSS software libraries around can do linear algebra faster.
>
>   

Are there any particular libraries that I should look at?

Thanks,
Abe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: abe.kazemzadeh.vcf
Type: text/x-vcard
Size: 266 bytes
Desc: not available
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20070615/07279929/attachment-0003.vcf>


More information about the clam-devel mailing list