Forums

Regarding the Linear prediction

Started by neelufar.2005 September 25, 2007
Hi,

I am currently trying to implement the linear prediction analysis in c to
decorrelate the speech signal. I have implemented the livenson durbin code
in C. Is there any method to cross check that the linear filter coefficient
are correct. And I also want to know  what will be the effect of the order
on decorrelation. If i want to decorrelate the speech signal and convert
it as a white noise which order filter is suitable. Thanks in advance.

Regards,
Neelufar.
On Sep 25, 7:44 am, "neelufar.2005" <neelufar.2...@gmail.com> wrote:
> Hi, > > I am currently trying to implement the linear prediction analysis in c to > decorrelate the speech signal. I have implemented the livenson durbin code > in C. Is there any method to cross check that the linear filter coefficient > are correct. And I also want to know what will be the effect of the order > on decorrelation. If i want to decorrelate the speech signal and convert > it as a white noise which order filter is suitable. Thanks in advance. > > Regards, > Neelufar.
Cross-checking the Levinson-Durbin algorithm's output is easy. Remember, the algorithm gives you a fast solution to the system Ax = b where A is a Toeplitz matrix and x and b are vectors. After you complete the algorithm, you get the filter coefficient vector, which is x in the above example. To check the result, you can premultiply the vector by the matrix A to ensure you get b out. Jason

neelufar.2005 wrote:
> Hi, > > I am currently trying to implement the linear prediction analysis in c to > decorrelate the speech signal. I have implemented the livenson durbin code > in C. Is there any method to cross check that the linear filter coefficient > are correct.
Look at the spectrums of the original and filtered signals. The LPC action is immediately seen.
> And I also want to know what will be the effect of the order > on decorrelation. If i want to decorrelate the speech signal and convert > it as a white noise which order filter is suitable. Thanks in advance.
Generally, the higher is the order the better is the result. However from the practical standpoint the order of 10 is adequate for the 8kHz sampled speech. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
>> I am currently trying to implement the linear prediction analysis in c to >> decorrelate the speech signal. I have implemented the livenson durbin >> code >> in C. Is there any method to cross check that the linear filter >> coefficient >> are correct. > > Look at the spectrums of the original and filtered signals. The LPC action > is immediately seen.
And how does "comparing spectrums" verify that his implementation of the levinson-durbin algorithm is correct?
>On Sep 25, 7:44 am, "neelufar.2005" <neelufar.2...@gmail.com> wrote: >> Hi, >> >> I am currently trying to implement the linear prediction analysis in c
to
>> decorrelate the speech signal. I have implemented the livenson durbin
code
>> in C. Is there any method to cross check that the linear filter
coefficient
>> are correct. And I also want to know what will be the effect of the
order
>> on decorrelation. If i want to decorrelate the speech signal and
convert
>> it as a white noise which order filter is suitable. Thanks in advance. >> >> Regards, >> Neelufar. > >Cross-checking the Levinson-Durbin algorithm's output is easy. >Remember, the algorithm gives you a fast solution to the system > >Ax = b > >where A is a Toeplitz matrix and x and b are vectors. After you >complete the algorithm, you get the filter coefficient vector, which >is x in the above example. To check the result, you can premultiply >the vector by the matrix A to ensure you get b out. > >Jason > > Hi Jason,
Thanks for replying for my question now I have got idea how to cross check the linear prediction coefficient. I have another question which is regrding windowing which is done before LCP, where we have a frame of size 240 samples i.e 40 samples from past, 80 samples of present frame and 40 samples from future. I am using the linear prediction analysis for decorrelation of signal, got from acoustic echo cancellation. I can store the 40 samples from past but how can I get the future 40 samples. Can you please tell me how to construct a frame for LP analysis. Thanks in advance. Regards, Neelufar.
>
On Sep 25, 7:44 am, "neelufar.2005" <neelufar.2...@gmail.com> wrote:
> Hi, > > I am currently trying to implement the linear prediction analysis in c to > decorrelate the speech signal. I have implemented the livenson durbin code > in C. Is there any method to cross check that the linear filter coefficient > are correct. And I also want to know what will be the effect of the order > on decorrelation. If i want to decorrelate the speech signal and convert > it as a white noise which order filter is suitable. Thanks in advance. > > Regards, > Neelufar.
Filter white noise with a filter, and then feed this into your LPC code. The LPC coefficient should converge to the filter coefficients of the one used to filter the white noise ... assuming the filters have the same order. You can also look at the spectrum of the error of the LPC, which should be white. Best, David
On 25 Sep, 13:44, "neelufar.2005" <neelufar.2...@gmail.com> wrote:
> Hi, > > I am currently trying to implement the linear prediction analysis in c to > decorrelate the speech signal. I have implemented the livenson durbin code > in C. Is there any method to cross check that the linear filter coefficient > are correct. And I also want to know what will be the effect of the order > on decorrelation. If i want to decorrelate the speech signal and convert > it as a white noise which order filter is suitable. Thanks in advance.
First you need to check the numerical integrity of your code. The Levinson recursion is a fast way to solve a system Ax = b for x given a nonpositive definite A. You need to start with a system that can be solved with the Levinson recursion (i.e. which satisfies the requirements to symmetry), solve with your own code and then with a standard solver, and check that the solutions are similar. Start with A of full rank. Next, test a singular A. In this case the Levinson reflection at the rank(A)'th iteration should vanish and the Levinson recursion terminate. Then add an order estimator (Akaike's Information Criterion is a good place to start.) Once you have done that, make an AR(D) signal and solve for the coefficients to check that your program works. Then start adding white noise to your data. Start with a very high SNR, test the results from the order estimator and check the coefficients against the "true" parameters. At some SNR the deviation becomes large. At this point you are ready to start checking your program agains measured data. Rune