hi, thanks for answers to my previous qns. have some more of them. hope it's ok to ask questions on the basics of CELP here. let me know if it's not. 1) synthesized filter stability after interpolation of LSFs I read from some resources that if LSF representation of LPCs is used for interpolation, stability of the synthesis filter is guaranteed. from another source, i read that the stability of the interpolated LSF synthesis filter is satisfied only by preserving the intra-model interlacing theorem (the LSFs are interlaced with each other for a given LP analysis order) from speex codes, i see that stability of LSFs is enforced each time using the function lsp_enforce_margin. So, the synthesized filter after interpolation of filters may be unstable? will it be stable under certain conditions as mentioned in the previous paragraph? 2) bandwidth expansion lag windowing is applied to the autocorrelated signal and from what I understand, it's used for bandwidth expansion. in speex codes, there is a function bw_lpc for bandwidth expansion for reconstructed LPCs as well. what's the difference between these 2 (the initial lag windowing and this function) and why the need for the second bandwidth expansion (when lag windowing is already performed initially)? tia, tk
Jean-Marc Valin
2005-Jan-16 22:12 UTC
[Speex-dev] interpolation of LSFs and bandwidth expansion
> from speex codes, i see that stability of LSFs is enforced > each time using the function lsp_enforce_margin. So, > the synthesized filter after interpolation of filters may be > unstable? will it be stable under certain conditions as > mentioned in the previous paragraph?Two issues here. First, what happens is that quantization can sometimes cause two LSP's to "cross each other", making the filter unstable. The other thing is that I actually enforce more separation so that not only the filters are stable, but also not *too* close to instability.> lag windowing is applied to the autocorrelated signal and > from what I understand, it's used for bandwidth expansion.That's right.> in speex codes, there is a function bw_lpc for bandwidth expansion > for reconstructed LPCs as well. what's the difference between these 2 > (the initial > lag windowing and this function) and why the need > for the second bandwidth expansion (when lag windowing is already > performed initially)?The lag windowing is used to get the best LPC coefficients. The bw_lpc is only used to compute the perceptual weighting filter. Jean-Marc -- Jean-Marc Valin <Jean-Marc.Valin@USherbrooke.ca> Universit? de Sherbrooke
> from speex codes, i see that stability of LSFs is enforced > each time using the function lsp_enforce_margin.Enforcing LSF spacing isn't about filter stability, it's about representational stability and avoiding computational overflow/underflow. The filter as represented is still stable. Monty
hi, thanks for the speedy answers and for speeding my understanding of the celp. have some questions on the forming of the fixed code book 1) fixed codebook I understand that the residual, after removing sample-to-sample and periodic redunancies, when properly normalised is noiselike and gaussian-like. if i understand correctly, the codebook consists of a wide, relatively constant spectrum TO ensure Glottal pulse shaping. what is glottal pulse shaping? (synthesized output will sound like glottal utterances?) In addition, to the constant spectrum requirement (I understand that to be the codes are pseudorandomly generated), i read from fs 1016 that the code words are overlapped by a shift of -2. what is the idea behind this? just briefly, how are the fixed codewords in speex generated? finally, are these fixed codes, after passing through the synthesized filter, supposed to produce those unvoiced segments of speech and also the "noise component" in voiced segments? is the output called fricative noise in psychophysics? can anyone recommend a book that explains the basics of celp (more on the ideas, not just how it is done) for beginners? tia, tk