DSPRelated.com
Forums

Question regarding LPC Difference equation

Started by EC-AKD October 13, 2004
Hi,

  I was going through the Source filter model of speech production
given in "Digital Speech" by author Kondoz.

The LPC sysnthesis filter looks like :


  H(z) = G / A(z)
where,
  A(z) = 1 - SUM{a[j]*z^-j}  ; j running from 1 to 10 for speech
synthesis.

 If we transform the above equation into sampled time domain, it looks
like:

  s(n) = G*x(n) + SUM{a[j]*s[n-j]} ; j running from 1 to10 for speech
synthesis.

  The above equation is the famous LPC Difference equation, which
states that the value of the present output, s(n), may be determined
by summing the weighted present input, G*x(n), and a weighted sum of
the past output samples. Hence in the LPC analysis the problem states
is given the measurement of the signal, s(n), we need to find the
filter params a[j] so that the synthesised speech using these coeff
would perceptually sound the same.
Hence if b[j] represents the estimate of a[j], then the error or
residual is shown to be :

  e(n) = s(n) - SUM{b[j]*s[n-j]} ; j running from 1 to 10 for speech
synthesis.

  So my doubt is that how come G*x(n) does not get cancelled out when
finding out the residual signal. It so seems from the above function
that the synthesised signal (from the predicted filter params , b[j])
does not have the term G*x(n).
Could some one explain to me the funda behind this. 
was i clear enough in stating my doubt? 

In short if I denote the synthesised signal as s_cap[n] then would it
look like this:

  S_cap[n] = G*x(n) + SUM{b[j]*s[n-j]}     OR
  S_cap[n] = G*x(n) + SUM{b[j]*s_cap[n-j]} OR
  S_cap[n] =          SUM{b[j]*s[n-j]}     OR
  S_cap[n] =          SUM{b[j]*s_cap[n-j]}

Thanks and Regards,

Anoop Deoras
Sasken Communication Tech.,
India
In article <2f592dd3.0410130131.14ffd05d@posting.google.com>, EC-AKD wrote:
> In short if I denote the synthesised signal as s_cap[n] then would it > look like this: > > S_cap[n] = G*x(n) + SUM{b[j]*s_cap[n-j]}
Don't forget, you need to have a model for x(n) too. The basic synthesis model is either spikes spaced by the pitch period or white noise depending on the structture of e(x). That's what the venerable sp0250 used. Better models can be done, like using half-triangles for the pitch impulses. OG.
Olivier Galibert <galibert@pobox.com> wrote in message news:<slrncmtuc5.jhq.galibert@m23.limsi.fr>...
> In article <2f592dd3.0410130131.14ffd05d@posting.google.com>, EC-AKD wrote: > > In short if I denote the synthesised signal as s_cap[n] then would it > > look like this: > > > > S_cap[n] = G*x(n) + SUM{b[j]*s_cap[n-j]} > > Don't forget, you need to have a model for x(n) too. The basic > synthesis model is either spikes spaced by the pitch period or white > noise depending on the structture of e(x). That's what the venerable > sp0250 used. Better models can be done, like using half-triangles for > the pitch impulses. > > OG.
Hi, If a model for x(n) is used as mentioned above (spikes spaced by pitch period)tand if b[j]=a[j] then e(n) is nothing but scaled x(n) in computing the residual error (i.e. impulses at pitch periods). If you notice x(n) would be zero everywhere except at the pitch period boundaries and hence the model is approximated like a forward prediction system.I feel if b[j] is an approximate estimate of a[j] then the residual error is x(n)+ e'(n) where e'(n) is due to the change in values of a(j) to b(j). I am no expert in this but it would be nice if the knowledgable people in this group correct me if i am wrong. Thanks Nithin