The Speex project aims to build an open-source (LGPL) patent-free voice codec. Unlike other codecs like MP3 and Ogg Vorbis, Speex is specially designed for compressing voice at low bit-rates in the 8-32 kbps/channel range. Possible applications include Voice over IP (VoIP), Internet audio streaming, archiving of speech data (e.g. voice mail), and audio books. In some sense, it is meant to be complementary to the Ogg Vorbis codec.

If you are interested in participating to the project, contact us at speex-devel@lists.sourceforge.net or join our mailing list. Right now, we are mostly looking for developers with signal processing and speech coding knowledge, as well as people with knowledge about patents in that field. See the task list for more details about what's left to do in Speex


You can download Speex from here.


This Speex manual includes information about the algorithms used in Speex, the bit-stream, the API and more.
Speex manual (PDF)
Speex manual (Postscript)
Speex manual (HTML online)
Speex manual (HTML tarball)

There is also some API documentation generated by Doxygen directly from the header files
Speex API (PDF)


You can listen to samples encoded with Speex here

Who uses Speex

LinPhone: A SIP-based VoIP phone written for GNOME
Speex XMMS plugin written by Jens Burkal
OpenH323: An open-source H.323 stack
GnomeMeeting: A H323 Video Conferencing Program

In development:
Asterisk: An open-source PBX



Speex 0.8.1 released. This release fixes a bug in the new 0.8 API (function speex_mode_query). For those using only speexenc/speexdec, no need to upgrade but those using libspeex (directly or through another application) should.


Speex 0.8.0 released. The speex_decode() function no longer uses the 'lost' parameter. Applications will need to be updated.


Speex 0.7.0 released. The format of the bit stream has changed once again and the bandwidth required has been reduced slightly.


Speex 0.6.0 has been released. This is a major release that contains many improvements and lots of bug-fixing. The post-filter that was causing problems throughout 0.5.x was replaced with a new perceptual enhancement system, which sounds better and consume much less CPU. Also many changes to Ogg encoder/decoder, including possibility to see the bit-rate being played/encoded. There is also a discontinuous transmission (DTX) mode. Last but not least, 0.6.0 now reports no error when being run with the valgrind memory debugger.


Speex 0.5.2 is out and brings a number of improvements and bug fixes. First, the search has been improved and it is now possible to choose the right quality/encoding time tradeoff (--comp option). Is is also possible to pack more that one frame in an Ogg packet (--nframes), reducing the overhead for low bit-rates. Last but not least: there is now some documentation about Speex!


Version 0.5.1 is released. This release brings quality improvements at very low bit-rate (5.7 kbps) and a new post-filter. VBR should also be a bit better though there's still a lot to do. Most of the modes are bit-rate compatible with 0.5.0, with the exception of the very low bit-rate (which is sometimes used in VBR, so expect some glitches). The source (and probably binary) compatibility with 0.5.0 is maintained.


Speex 0.5.0 is out. The most important new feature is Varible Bit-Rate (VBR). It can be enabled by using the --vbr option to speexenc. When encoding in VBR, the --quality option can still be used. Note VBR implementation in this release is experimental and still requires lots of tuning.


Speex 0.4.0 is here, adding many more bit-rates to both narrowband and wideband, as well as the ability to change bit-rate dynamically from frame to frame. The narrowband modes now range from 8 kbps to 18 kbps, while wideband range from 10 kbps to 28 kbps. There is also a "noise coding" mode at 2 kbps for narrowband and 3 kbps for wideband. All this will lead to real Variable Bit-Rate (VBR) in the future. Also, worth mentioning the codec latency has been reduced from 40 ms to 30 ms (20 ms frames + 10 ms lookahead).


Speex 0.3.0 has been released. There is now a new "low bit-rate" narrowband mode for coding speech at 8 kbps. There's also support for big-endian machines (untested, please report bugs). Speex files now have real header containing information like bit-stream version (revents from playing an incompatible bit-stream), sampling rate, bit-rate and user comments. On the quality side, the post-filter has been improved and there has been more codebook optimization. Note that this release breaks bit-stream compatibility with previous releases.


Speex 0.2.0 is out. This is a major release with lots of improvements and bugfixes. First, the encoder and decoder can work directly from wav files (mono only for now) and the decoder can play directly to soundcard. Also, most of the codebooks have been re-trained in order to improve quality (but this also breaks format compatibility with previous versions), while slightly decreasing complexity. Speex is now able to encode both DTMF and music (not as good as Vorbis of course) after bugs were fixed in the pitch prediction and LSP quantization. Last but not the least, the perceptual post-filter has been improved.


Speex 0.1.2 is out. This adds a perceptual post-filter at the decoder to (hopefully) increase quality. It can be enabled with the --pf option to speexdec. The Speex format remains the same for both narrowband and wideband.


Speex 0.1.0 has been released. Speex now uses the Ogg bitstream (using libogg). That means that there is now (limited) bitstream error recovery. Also, the narrowband bit-rate has been reduced from 15.7 kbps to 15.1 kbps and the wideband bit-rate has been reduced from 31.3 kbps to 27.7 kbps. The quality remains roughly the same for both narrowband and wideband. Once again, this breaks compatibility with previous versions.
Say NO to corrupt audio discs
SourceForge Logo
Jean-Mrc Valin
$Date: 2002/09/16 00:59:10 $