Frank Lorenz
2010-Feb-05 10:36 UTC
[Speex-dev] Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
Hi Jean-Marc, I did what you proposed. I changed the levinson durbin algorithm to: { int i, j; spx_word16_t r; spx_word16_t error = ac[0]; for (i = 0; i < p; i++) lpc[i] = 0; if (ac[0] == 0) { //for (i = 0; i < p; i++) // lpc[i] = 0; return 0; } for (i = 0; i < p; i++) { /* Sum up this iteration's reflection coefficient */ spx_word32_t rr = NEG32(SHL32(EXTEND32(ac[i + 1]),13)); for (j = 0; j < i; j++) rr = SUB32(rr,MULT16_16(lpc[j],ac[i - j])); #ifdef FIXED_POINT // stop calculation if error < 30 if ( error <= 30 ) { return error; } //r = DIV32_16(rr+PSHR32(error,1),ADD16(error,10 )); r = DIV32_16(rr+PSHR32(error,1),error); #else r = rr/(error+.003*ac[0]); #endif This improves the situation. There's no more "freak out" for most cases. I tested with 2000 Hz, 2200 Hz and 3000 Hz input for different complexity and quality settings. Nevertheless, for 2200 Hz, quality 7 complexity 3, there's still this horrible overdrive. It is also interesting that the limit (30 in my case) for stopping the iteration is very important. While even a limit of 0 is o.k. for 2000 and 2200 Hz signals, this will not work for 3000 Hz. If I put the limit up to 100, 2200 Hz signals cause the "freak out" again. Another point is that beside the "freak out", there is still distortion in the re-synthesized signal for harmonic inputs - a strong amplitude modulation, in some cases with a clear period equal to have the frame rate (160 samples). You can reduce this by setting the complexity to higher values (5 and above work quite well). A third point is a time-variable and sometimes very slow "fade in" of the re-synthesized signal after a frame loss. The steepness of the "fade in" is varying. It is depenent on some parameter I cannot find (changing complexity/quality or even the limit inside the levinson-durbin algorithm changes it quite chaotically). So we are on the right track, but did not reach the goal up to now ;-) Do you think it is a good idea to but the levinson-durbin algorithm to a higher precision? Or do you have some other idea how to proceed? best regards, Frank Jean-Marc Valin <Jean-Marc.Valin at USherbrooke.ca> hat am 4. Februar 2010 um 15:47 geschrieben:> Now that's an interestinganalysis! Thanks a lot for spending the time to dig> into this. Inow think the whole idea of adding a small value to the error was>misguided from the beginning. Instead, what the code should probably do is just> stop once the error has reached a small enough value(and set the remaining LPC> coefs to zero). > >? ??Jean-Marc ___________________________________________________________ GRATIS f?r alle WEB.DE-Nutzer: Die maxdome Movie-FLAT! Jetzt freischalten unter http://movieflat.web.de
Seemingly Similar Threads
- Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fwd: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- FW: Re: Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"