Speex: A Free Codec For Free Speech
When I started implementing Speex in 2002, there was no good free codec that could be used for speech communication. The situation was greatly harming the development of voice over IP (VoIP) on Linux and other free operating systems. Unlike the Vorbis codec that already existed at that time, the Speex codec is optimised for speech and is designed for low latency communication over an unreliable packet network. This talk will start with an overview of the different software components involved with Speex. Then, an explaination of the underlying coding algorithm (CELP) will be provided. In order to help Speex users choose the right operating mode, samples will be included to demonstrate the quality available for different sampling rates and bitrates and tips given for achieving the highest possible communication quality. An emphasis will be placed on trends for VoIP, such as the migration to wideband communication. Finally, some information will be given on the future directions and upcoming features in Speex. Speex is based on the popular Code Excited Linear Prediction (CELP) algorithm but because of patent restrictions, some techniques like the use of algebraic codes (ACELP) could not be used. Nevertheless, Speex is able to achieve a quality comparable to proprietary codecs at the same bitrate, while supporting features not found in other speech codecs. These features include variable bitrate, which makes better use of the bits when encoding to a file, and embedded coding, which provides an easy way to interface wideband (16 kHz) channels with legacy narrowband (8 kHz) telephony equipment. Speex is now evolving into a complete toolkit for voice over IP (VoIP) development, including algorithms for noise cancellation, acoustic echo cancellation and adaptive jitter buffering. This allows a developer without any signal processing knowledge to implement a VoIP client. In the mean time, Speex is being ported to architectures without a floating-point unit, allowing Speex to be used in embedded devices equipped with a fixed-point CPU/DSP.
Jean-Marc Valin has a PhD, a master's degree and a bachelor's degree in electrical engineering from the University of Sherbrooke. His PhD thesis focuses on bringing hearing capabilities to a mobile robotics platform, including sound source localization and separation. His other research interests cover speech coding and he has developed the Speex codec, aimed at low bitrate speech communications. He is a member of the IEEE Signal Processing Society.