tunkeat
2005-Jan-04 21:39 UTC
[Speex-dev] different output for opt/non-opt on win32 platform
hi all, thanks Jean for the codec. I am new to speech coding. Am interested to implement speex on a TI dsp, say C54. just downloaded speex v 1.1.6. when I removed optimisation flags for win32 in libspeex.dsp, I get a slightly different output for decoding using speexdec.exe (debug version). no prob for speexenc.exe except for some differences in the ogg header. for anyone interested, i have zipped some wave files in speexlib.zip and posted on geocities.com/dunjie17/ - libspeex.dsp is the modified version. - male.spx is the encoded version of male.wav on the speex website, coded using bitrate 4000 - origdec_male.wav - origdec_male.wav - unoptmale.wav (the result after removing the optimisation flags) config of my system: winxp sp2, vs6 sp5, libogg1.1 from the archives, i read fixed-point is implemented. wonder whether there are any sample results that I could compare with? i have the understanding each speex frame is self-contained, i.e., the decoder could decode each frame independently. is that right? thanks for the time. cheers, tk
Jean-Marc Valin
2005-Jan-04 22:50 UTC
[Speex-dev] different output for opt/non-opt on win32 platform
Le mercredi 05 janvier 2005 ? 13:37 +0800, tunkeat a ?crit :> thanks Jean for the codec.My first name's Jean-Marc BTW :-)> I am new to speech coding. Am interested to implement > speex on a TI dsp, say C54.I think I've heard someone was working on that before...> just downloaded speex v 1.1.6. > when I removed optimisation flags for win32 in libspeex.dsp, > I get a slightly different output for decoding using speexdec.exe > (debug version). no prob for speexenc.exe except for some > differences in the ogg header.What difference in the ogg header? It's quite normal that compiler options will (slightly) change the result. The reason is that the rounding depends on when the compiler loads/stores the float values.> i have the understanding each speex frame is self-contained, > i.e., the decoder could decode each frame independently. is that > right?No. Like any other CELP codec, Speex has a memory. The only non-PCM speech codec I know that has independent frames is iLBC and it's suboptimal for most uses because of that. Jean-Marc -- Jean-Marc Valin <Jean-Marc.Valin@USherbrooke.ca> Universit? de Sherbrooke
illiminable
2005-Jan-04 23:05 UTC
[Speex-dev] different output for opt/non-opt on win32 platform
----- Original Message ----- From: "Jean-Marc Valin" <Jean-Marc.Valin@USherbrooke.ca> To: "tunkeat" <tunkeat@gmail.com> Cc: "speex" <speex-dev@xiph.org> Sent: Wednesday, January 05, 2005 2:48 PM Subject: Re: [Speex-dev] different output for opt/non-opt on win32 platform>No. Like any other CELP codec, Speex has a memory. The only non-PCM >speech codec I know that has independent frames is iLBC and it's >suboptimal for most uses because of that.Hmmm... i was unaware of this... so how many frames/packets of preroll are required to ensure "perfect" (where perfect = as it would have been reproduced at this point had the file played from the beginning) output ? ie basically what i'm asking is what impact does this have on seeking or editing/cutting/recombining ? Because when you just seek to some random point... obviously it doesn't have the same memory state as if it had played to there. I assume the difference is either very small or over such a short duration that the audio change at a seek essentially masks it ? Zen.
tunkeat
2005-Jan-05 19:08 UTC
[Speex-dev] different output for opt/non-opt on win32 platform
hi, Jean-Marc, thanks for the comments.> > just downloaded speex v 1.1.6. > > when I removed optimisation flags for win32 in libspeex.dsp, > > I get a slightly different output for decoding using speexdec.exe > > (debug version). no prob for speexenc.exe except for some > > differences in the ogg header. > > What difference in the ogg header? It's quite normal that compiler > options will (slightly) change the result. The reason is that the > rounding depends on when the compiler loads/stores the float values.diff in ogg header: oh, due to a random number passed to the second argument of ogg_stream_init(). without a good understanding of the celp and haven't delved into the codes, I am surprised that there is no such issue with the encoder. whether the optimsation flags are included or excluded, the encoded bits are the same. I assumed the decoder shared quite a number of functions as the encoder except maybe the perceptual enhancement part. strange.> > > i have the understanding each speex frame is self-contained, > > i.e., the decoder could decode each frame independently. is that > > right? > > No. Like any other CELP codec, Speex has a memory. The only non-PCM > speech codec I know that has independent frames is iLBC and it's > suboptimal for most uses because of that. >how big is this "Speex's memory"? I am thinking perhaps naively: at the encoder side, is it possible to get the states for the decoder from the encoder's memory without doing the actual decoding? if yes, the decoder's states could be sent over. I hope I am making sense here. thanks in advance, tk
Reasonably Related Threads
- different output for opt/non-opt on win32 platform
- different output for opt/non-opt on win32 platform
- Query r/e multiple decoder reset...
- different output for opt/non-opt on win32 platform
- Continous decoding of several audio files without destroying speex_decoder