DSPRelated.com
Forums

LP analysis in AMR speech codec

Started by EC-AKD January 31, 2005
Hi,

  In the transcoding document provided by 3GPP standard for AMR speech
codec, in the section LP analysis it is mentioned that auto-corelation
r(0) is multiplied by the white noise correction factor 1.0001 which
is equivalent to adding a noise floor at -40dB.

Could someone explain more about this. What is noise floor and why is
it necessary to add the noise floor?

Thanks and Regards,
Anoop Deoras
EC-AKD wrote:
> Hi, > > In the transcoding document provided by 3GPP standard for AMR
speech
> codec, in the section LP analysis it is mentioned that
auto-corelation
> r(0) is multiplied by the white noise correction factor 1.0001 which > is equivalent to adding a noise floor at -40dB. > > Could someone explain more about this. What is noise floor and why is > it necessary to add the noise floor?
I don't know why it has been included in this standard, but I often add a small amount of noise to certain data to avoid numerical trouble. One example would be when converting spectra from linear to dB scale. Adding a small amount of noise after computing the spectrum removes the risk for "Error: log of zero" type problems. Rune
Hey Rune, Thanks a lot for the posting. It was indeed a value addition.
But I still fail to appreciate its use in AMR. If what you say is right
then should not this factor be multiplied with all the auto corelation
factors.
In AMR, only r(0) gets multiplied with this noise correction factor
while other auto corelation factors are multiplied by lag window hence
achieving 60Hz bandwidth expansion.
Please correct me if I am wrong.

Anoop Deoras

akd_ecc@yahoo.com wrote:
> Hey Rune, Thanks a lot for the posting. It was indeed a value
addition.
> But I still fail to appreciate its use in AMR. If what you say is
right
> then should not this factor be multiplied with all the auto
corelation
> factors. > In AMR, only r(0) gets multiplied with this noise correction factor > while other auto corelation factors are multiplied by lag window
hence
> achieving 60Hz bandwidth expansion. > Please correct me if I am wrong.
Again, I don't know the codec you use, so don't take my suggestions too literally. However, multiplying r(0) and not the other elements, with the 1.001 factor is exactly the kind of thing one might do to avoid numerical trouble. Increasing the relative magnitude of the diagonal in an estimate for the autocorrelation matrix might just be what keeps the matrix positive definite. In the modified covariance estimator for the autocorrelation matrix, the estimate is not Toeplitz so it is not guaranteed to be positive definite. With that estimator you need to come up with some kind of voodoo to keep the matrix positive definite. Which, incidentially, seems to be a good reason why the modified covariance estimator is not very widely used... In a fixed-point implementation the multiplication might be necessary even for Toeplitz estimators, if the poles of the system are close to the unit circle. In a fixed-point aritrhmetical system they might otherwise just slip outside the unit circle and cause all sorts of trouble. Unless somebody who actually know what they are talking about say otherwise, I'd settle for the explanation that this is a method to prevent numerical problems. Rune
"Rune Allnor" <allnor@tele.ntnu.no> wrote in message 
news:1107238973.365667.257570@c13g2000cwb.googlegroups.com...
> > akd_ecc@yahoo.com wrote: >> Hey Rune, Thanks a lot for the posting. It was indeed a value > addition. >> But I still fail to appreciate its use in AMR. If what you say is > right >> then should not this factor be multiplied with all the auto > corelation >> factors. >> In AMR, only r(0) gets multiplied with this noise correction factor >> while other auto corelation factors are multiplied by lag window > hence >> achieving 60Hz bandwidth expansion. >> Please correct me if I am wrong. > > Again, I don't know the codec you use, so don't take my suggestions > too literally. > > However, multiplying r(0) and not the other elements, with the > 1.001 factor is exactly the kind of thing one might do to avoid > numerical trouble. Increasing the relative magnitude of the > diagonal in an estimate for the autocorrelation matrix might > just be what keeps the matrix positive definite. In the modified > covariance estimator for the autocorrelation matrix, the estimate > is not Toeplitz so it is not guaranteed to be positive definite. > With that estimator you need to come up with some kind of > voodoo to keep the matrix positive definite. Which, incidentially, > seems to be a good reason why the modified covariance estimator > is not very widely used... > > In a fixed-point implementation the multiplication might be > necessary even for Toeplitz estimators, if the poles of the system > are close to the unit circle. In a fixed-point aritrhmetical > system they might otherwise just slip outside the unit circle > and cause all sorts of trouble. > > Unless somebody who actually know what they are talking about > say otherwise, I'd settle for the explanation that this is a > method to prevent numerical problems. > > Rune >
Hi Chaps - I'd try a search on "comfort noise" I think there is a simple and not terribly performant approach that adds unshaped noise at the -40dB level. Best of luck - Mike