编解码器杂谈浅析-Opus
作者:赵晓涵,声网 Agora 音频算法工程师。原文首发于 RTC 开发者社区。谈起 Opus,对于编解码器有所了解的同学也许会知道,Opus 是由两个编解码器——Silk 和 Celt 融合而成。为什么来自两个组织的编解码器会合二为一,Opus 的性能又如何,本文将简述一下 Opus 的前世今生和部分技术分析。 提到 Opus,就不得不提到它的主要作者,Jean Marc Valin,他从学生时代就开始致力于高音质编解码算法的实现,著名的编解码器 Speex 也是他的作品之一。时间回到2007年,Jean Marc Valin 在博士后期间,完成了 Speex 的开发。在当时,业内编解码器主要分为两个流派:高延时的音乐编解码器(如 MP3、AAC 和 Vorbis)和低延时的语音编解码器(AMR、Speex、G.729)。而工业界对低延时音乐编解码器的需求越来越高,于是 Celt 的开发也被提上了日程。Celt 的早期目标是实现 4-8ms 的编码延时,相比当时 MP3 和 AAC 编码的 100ms+ 延时,优势是非常巨大的。 在研发过程中,Jean Marc Valin 和其他开发者始终围绕着 Vorbis 作者 Christopher “Monty” Montgomery 的意见“尽量保持信号能量谱的低失真”进行开发,这也是 Celt(Constrained Energy Lapped Transform)名字的由来。第一版 Celt 的研发持续了两年,但因为需要保证低延时的原因,Celt 的表现并没有超过 MP3 和 AAC。但在经过了持续六个月的改进后(使用了部分 MP3 的技术),Celt 的表现第一次超过了 MP3。也就是在那个时候,Celt 逐渐走出实验室,迎来了它在工业界的第一批使用者–部分用户因为低延时的强需求不得不选择了 Celt。也就是这一批最早期的用户给了 Celt 的开发者们宝贵的反馈,使其不断改进 Celt。 ...