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
LP analysis in AMR speech codec
Started by ●January 31, 2005
Reply by ●January 31, 20052005-01-31
EC-AKD wrote:> Hi, > > In the transcoding document provided by 3GPP standard for AMRspeech> codec, in the section LP analysis it is mentioned thatauto-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
Reply by ●February 1, 20052005-02-01
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
Reply by ●February 1, 20052005-02-01
akd_ecc@yahoo.com wrote:> Hey Rune, Thanks a lot for the posting. It was indeed a valueaddition.> But I still fail to appreciate its use in AMR. If what you say isright> then should not this factor be multiplied with all the autocorelation> factors. > In AMR, only r(0) gets multiplied with this noise correction factor > while other auto corelation factors are multiplied by lag windowhence> 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
Reply by ●February 1, 20052005-02-01
"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