Xiph logo

The CELT ultra-low delay audio codec

Overview

The CELT codec is a compression algorithm for audio. Like MP3, Vorbis, and AAC it is suitable for transmitting music with high quality. Unlike these formats CELT imposes very little delay on the signal, even less than is typical for speech centric formats like Speex, GSM, or G.729.

Using CELT application developers can build software that allows musicians to perform together across the Internet, or simply build great sounding telephony systems. Why shouldn't your telephone sound as good as your stereo?

Like other open and unencumbered technology from the Xiph.Org Foundation CELT requires no royalties and no complicated licensing.

The Technology

CELT stands for "Constrained Energy Lapped Transform". It applies some of the CELP principles, but does everything in the frequency domain, which removes some of the limitations of CELP. CELT is suitable for both speech and music and currently features:

  • Ultra-low latency (typically from 3 to 9 ms)
  • Full audio bandwidth (≥20kHz; sample rates from 32 kHz to 96 kHz)
  • Support for both speech and music
  • A quality/bitrate trade-off competitive with widely used high delay codecs
  • Stereo support
  • Packet loss concealment
  • Constant bit-rates from 32 kbps to 128 kbps and above
  • A fixed-point version of the encoder and decoder

The CELT codec is meant to bridge the gap between Vorbis and Speex for applications where both high quality audio and low delay are desired.

Getting Involved

CELT is still in an early state of development. At this point, two ways of getting involved are: helping design the algorithm (requires strong DSP knowledge) or building applications using CELT. Your feedback can help define the future direction the codec will take.

Since CELT is still in development, most new releases (even minor ones) change the bit-stream, so compatibility is not preserved. This instability is why CELT is currently called experimental. The ability to change the format is important in allowing us to make quality improvements while we develop CELT. Once version 1.0 is released the bitstream will be frozen and future revisions will be compatible.

If you are interested in using CELT privately, among people who can coordinate CELT versions, in non-interoperable embedded applications, or are doing software development in preparation for the final version then the instability of the bitstream should not be a problem for you and we'd like your feedback. However, for major public adoption CELT will need to reach 1.0.

If you have questions or are interested in contributing to the project, you can join the mailing list. You can also contact the Project Lead, Jean-Marc Valin (the mailing list is usually preferable).

Headlines

  • Version 0.8.1 released

    8 July, 2010

    CELT 0.8.1 fixes some bugs introduced in 0.8.0. The bit-stream remains compatible with 0.8.0, with the caveat that CELT no longer supports frame sizes that have prime factors larger than 5. This should not affect any reasonable application.

  • Version 0.8.0 released

    2 July, 2010

    Version 0.8.0 has been released, with improvements for high bit-rates and for transients in general. It also adds the possibility of changing the frame size dynamically, which requires a minor change in the API. At last, the new PLC algorithm from 0.7.1 is now enabled for the fixed-point builds as well. Version 0.8.0 is not bit-stream compatible with previous releases.

  • Version 0.7.1 released

    20 January, 2010

    Version 0.7.1 has been released, with improvements to the packet loss concealment (PLC). It is the first release not to break bit-stream compatibility with the previous release (0.7.0). But I promise not to do it again, the next CELT release will likely break compatibility once again.

  • Version 0.7.0 released

    26 October, 2009

    Version 0.7.0 has been released, with improvements to the stereo and low birate audio quality. API is incompatible with previous releases.

  • Version 0.6.1 released

    13 July, 2009

    Version 0.6.1 has been released, with improvements to the stereo mode. The mono mode is not affected.