CELT 是一种开放、免版税的有损音频压缩格式,也是一种免费软件编解码器,具有特别低的算法延迟,适用于低延迟音频通信。这些算法是公开记录的,并且可以不受软件专利限制地使用。
CELT 是一种基于改进的离散余弦变换 (MDCT) 和 CELP 概念的变换编解码器(带有用于激励的码本,但在频域中)。与 Vorbis 一样,CELT 是一种全频带(整个人类听觉范围)通用编解码器,即不专门用于特殊类型的音频信号,因此与其兄弟项目 Speex 不同。
CELT 提供从 32 kbps 到 128 kbps 的一系列比特率,最高比特率可提供与 Vorbis 或 AAC 类似的高质量音频。然而,CELT 还提供 16 kbps 和 8 kbps 的极低比特率,适用于 VoIP 或视频会议等低延迟应用。
许多流行的 VoIP 和视频会议应用程序都使用 CELT,包括 Skype、Jitsi 和 WebRTC。WebM 视频格式也使用它。
粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓
CELT的发展历史可以追溯到2000年代初期,当时Xiph.Org基金会开始开发一种名为Speex的新音频编解码器。
CELT 的一些优势:
低算法延迟:CELT具有非常低的算法延迟,这意味着编码和解码音频所花费的时间非常短。这使其适合需要实时音频通信的应用,例如 VoIP 和视频会议。
高品质:CELT 可以以 64 kbps 或更高的比特率实现高质量音频。这与 Vorbis 或 AAC 的质量相当。
开源:CELT是开源的,这意味着它可以免费使用和修改。这使其成为想要创建自己的 VoIP 或视频会议应用程序的开发人员的热门选择。
多种比特率:CELT 支持多种比特率,从 32 kbps 到 128 kbps。这使得它适合各种应用,从低延迟 VoIP 到高质量音频流。
抗噪声能力强:CELT 对噪声具有鲁棒性,这意味着它在嘈杂的环境中仍然可以产生高质量的音频。这使得它成为重视音频质量的应用的不错选择,即使在嘈杂的条件下也是如此。
支持立体声音频:CELT 可以对立体声音频进行编码和解码。这使得它适合需要双通道音频的应用,例如音乐播放或视频会议。
支持可变比特率编码:CELT 可以以可变比特率对音频进行编码。这意味着可以调整比特率以匹配可用带宽或所需的质量水平。
支持丢包隐藏:CELT可以隐藏丢包。这意味着即使某些音频数据包丢失,它仍然可以产生高质量的音频。
CELT 的一些缺点:
不像其他编解码器那样得到广泛支持:CELT 不像 MP3、Vorbis 或 AAC 等其他编解码器那样得到广泛支持。这意味着可能无法在所有应用程序中使用 CELT。
计算成本可能很高:CELT 的编码和解码计算成本可能很高,尤其是在高比特率下。这可能并不适合所有设备,例如智能手机或低功耗嵌入式系统。
每一种音频算法兴起,都有其核心要点和关键步骤:
加窗:音频信号被分成重叠的帧,每个帧使用汉明窗加窗。这有助于减少频谱泄漏并提高 MDCT 的频率分辨率。
改进的离散余弦变换 (MDCT):使用 MDCT 将加窗音频帧变换到频域。这将音频信号分为 32 个频段,每个频段包含不同的频率范围。
量化:频率系数被量化以减少表示它们所需的位数。这是使用许多不同的技术来完成的,例如均匀量化、对数量化和自适应量化。
码本编码:使用码本对量化后的频率系数进行编码。这是一个预先计算的码字表,代表不同的频率系数模式。
打包:编码的码本条目被打包并传输到解码器。
解码:解码器接收数据包并解码以重建原始音频信号。
这些是 CELT 的核心步骤,但编码和解码过程中还涉及许多其他步骤。例如,CELT还使用了许多技术来提高解码音频的质量,例如噪声整形和后处理,其逻辑框图大概如下所示:
对于音乐文件,尤其是在资源有限的设备上进行播放,CELT 还是存在一定价值的(数据来源于:Internal MUSHRA (ITU-R BS.1534) test):
自 2011 年 2 月 4 日起,CELT/ SILK混合编解码器Opus (以前称为 Harmony)出现后不久,CELT 作为一个单独项目的开发就停止了,而是以 Opus 为基础(在处理时域中的频谱范围采用线性预测(SILK),频域中的较高部分采用MDCT)。
官网上也可以看到最后一次更新是在2011年2月15日。
虽然CELT暂停了,但是在OPUS算法中仍然可以看到其身影,我们会在后续的OPUS算法中再做一下介绍。
CELT 本身的标准化并未完成,IETF有一份草稿,有兴趣的可以参考一下:
https://datatracker.ietf.org/doc/html/draft-valin-celt-codec-02
出道即巅峰
CELT编解码器的出现彻底改变了人们对音频编解码的看法。它能够提供极低的延迟(仅几个毫秒)和高质量的声音,这对于实时音频流、音乐制作和游戏等应用来说至关重要。此外,CELT还具有很强的鲁棒性,因此在网络环境恶劣时也能保证良好的表现。这些突破性的特性使CELT迅速在音频编解码领域达到了巅峰。
转型为背后的英雄
然而,之后CELT的身影逐渐淡出了公众视线。它并没有消失,而是成为了一个新的、更先进的音频编解码器——Opus的一部分。Opus结合了CELT和另一种编解码器SILK的优点,以实现更广泛的应用。
在Opus中,CELT主要负责处理高比特率、复杂的音频内容(如音乐),而SILK则处理语音信号。因此,尽管CELT可能不再是公众熟知的名字,但它仍在背后默默工作,为我们提供优质的音频体验。
就像做嫁衣的裁缝一样,CELT虽然转型为”隐形”角色,但其价值并未减损,反而在新的领域和环境中得到了充分的发挥。这是一个典型的例子,显示出一个算法或技术即使不再处于主导地位,也能通过融入新的系统,继续提供其核心价值。
粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓