[Speex-dev] Programming questions

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Mon Jan 17 01:17:07 PST 2005

> you are better off using the vogg orbis codec. speex is meant 
> specifically for telephonic voice. it takes a single human voice and 
> compresses it well. it cannot handle muliple voices or music very well.

That part is true, so of course it depends on the application. I guess I
should have added that for most applications, 16 kHz is recommended
instead of 44.1 kHz.

> For instance, a whistle can after a while, completely fade out on speex.

That has *nothing* to do with Speex. If you don't like that, just don't
use the denoiser I provide. It's an additional feature usually not
present in other codecs and it's *off* by default. If you chose to use
it, live with its characteristics. Besides, a constant sinusoid *is*
noise, so removing it is a feature, not a bug. :-)

> what every your sized chunks you have, for speex, you will have to repack 
> them as 160 samples per frame.

Actually, Speex frames are 160 samples only in narrowband. In wideband,
it's 320 samples and in ultra-wideband, it's 640.

> simply use two instances of speex state structures, one for each channel.

what??? The stereo encoding can be seen in speexenc/speexdec and is a
very simple model (it only encodes intensity difference).

> for sanity's sake, just accept that speex will work only with 160 samples 
> per frame.

See above.

> >      4) What is the difference "SPEEX_GET_FRAME_SIZE" and
> >         "SPEEX_MODE_FRAME_SIZE" operations. This should not be identical
> >         since these operations are provided by two different functions
> >         but I don't see any explanation of a difference in the
> >         documentation.
> SPPEX_GET_FRAME_SIZE will return the size of the uncompressed frame(whic 
> is 160). it is the number of PCM samples that each speex frame represents.
> Speex is a variable bit rate codec. Hence, the 160 samples are compressed 
> into a speex packet of a size that is determined by the selected mode of 
> compression. SPEEX_MODE_FRAME_SIZE returns the size of the compressed 
> frame. and it will vary depending upon the mode selected.

No. SPEEX_MODE_FRAME_SIZE returns the number of samples in a frame, not
the encoded size. Encoded size can be obtained with


Jean-Marc Valin <Jean-Marc.Valin at USherbrooke.ca>
Université de Sherbrooke

More information about the Speex-dev mailing list