The CELT ultra-low delay audio codec
Overview
The CELT codec is an experimental codec for use in low-latency audio communication.
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
-
Compatibility version 0.5.1.3 released
12 May, 2009
This is a bugfix update of the 0.5.1.1 compatability release with several bugfixes backported into the 0.5.1 compatability branch. As with 0.5.1.1, this release is not compatible with either 0.5.0 or earlier, or with 0.5.2 and later.
-
Compatibility version 0.5.1.1 released
22 April, 2009
This is an update of the previous 0.5.1 prerelease; as several software and hardware projects have seen fit to deplot this prerelease version for development and testing, we've released this new version that changes the installation namespace from 'celt' to 'celt051' to ease installation and parallel development with other versions of celt without conflict. Aside from renaming symbols and install locations to 'celt051' there are no other changes from the celt 0.5.1 release. As with other CELT prereleases, this release is not compatible with either 0.5.0 or earlier, or with 0.5.2 and later.
-
Version 0.5.2 released
17 February, 2009
Version 0.5.2 has just been released with a few fixes over 0.5.1. On top of that, the pitch prediction was both improved and simplified. The other main change is a new bit allocation algorithm with better rounding and fine energy allocation. These changes resulted in considerable quality improvements at the smallest frame sizes. As with most prior releases this release breaks compatiblity with older bitstreams. The 0.5.2 testing page has more information.
-
Version 0.5.1 released
17 December, 2008
Version 0.5.1 is out. This release fixes a number of issues with 0.5.0. Several cases where the encoder could fail have been fixed, including one that could cause memory corruption (and possibly a segfault). In addition, the VQ search has been improved, which results in a small CPU reduction, while fixing some quality problems with low frequency tones. Other than that, there should be no significant quality changes.
-
Version 0.5.0 released
10 October, 2008
Version 0.5.0 is out. This release includes simplifications to the bit allocation code and includes a new low-complexity mode that can be enabled (without breaking compatibility) on the encoder side. There are several other optimisations and bug fixes included. The API has also been slightly modified, so code using CELT will have to be updated (minor).
-
Version 0.4.0 released
26 July, 2008
Version 0.4.0 is out. This release should greatly improve the handling of transients and reduce the amount of pre-echo, especially for larger frame sizes. There is now support for frame sizes up to 512 samples for those who don't have extreme delay requirements. The release also brings improved tuning for stereo and a variety of frame sizes and higher bit-rates. The API has been changed slightly to remove the overlap parameter, which is now automatically selected based on the frame size.
-
Version 0.3.2 released
16 May, 2008
Version 0.3.2 is out. This consists mainly of quality tuning. We've also completed some listening tests based on that version for the Comparison page.
