SoundStream:端到端神经音频编解码器

音频编解码器用于高效压缩音频,以减少存储要求或网络带宽。理想情况下,音频编解码器应该对最终用户透明,以便解码后的音频在感知上与原始音频没有区别,并且编码/解码过程不会带来可感知的延迟。

在过去的几年中,已经成功开发出不同的音频编解码器来满足这些要求,包括Opus和增强语音服务(EVS)。Opus 是一种多功能语音和音频编解码器,支持从 6 kbps(千比特每秒)到 510 kbps 的比特率,已广泛应用于从视频会议平台(如 Google Meet)到流媒体服务(如 YouTube)等应用程序。EVS 是3GPP 标准化机构针对移动电话开发的最新编解码器。与 Opus 一样,它是一种多功能编解码器,可在 5.9 kbps 到 128 kbps 的多种比特率下运行。使用这两种编解码器中的任何一种重建音频的质量在中低比特率(12-20 kbps)下都非常出色,但在非常低的比特率(⪅3 kbps)下运行时会急剧下降。虽然这些编解码器利用人类感知的专业知识以及精心设计的信号处理管道来最大限度地提高压缩算法的效率,但最近人们开始对用机器学习方法取代这些手工制作的管道产生兴趣,这些方法可以学习以数据驱动的方式对音频进行编码。

今年早些时候,我们发布了Lyra,这是一款用于低比特率语音的神经音频编解码器。在“ SoundStream:端到端神经音频编解码器”中,我们介绍了一种新型神经音频编解码器,它通过提供更高质量的音频并扩展以编码不同类型的声音(包括清晰语音、嘈杂和混响语音、音乐和环境声音)来扩展这些努力。SoundStream 是第一个适用于语音和音乐的神经网络编解码器,同时能够在智能手机 CPU 上实时运行。它能够使用单个训练模型在广泛的比特率范围内提供最先进的质量,这代表了可学习编解码器的重大进步。

从数据中学习音频编解码器

SoundStream 的主要技术要素是神经网络,由编码器、解码器和量化器组成,所有这些都是端到端训练的。编码器将输入的音频流转换为编码信号,使用量化器对其进行压缩,然后使用解码器将其转换回音频。SoundStream 利用神经音频合成领域最先进的解决方案,通过训练一个鉴别器来提供高感知质量的音频,该鉴别器计算对抗和重构损失函数的组合,使重构的音频听起来像未压缩的原始输入。经过训练后,编码器和解码器可以在不同的客户端上运行,从而有效地通过网络传输高质量音频。

1728552328978.jpg

SoundStream 训练和推理。在训练期间,编码器、量化器和解码器参数使用重建和对抗性损失的组合进行优化,这些损失由鉴别器计算得出,该鉴别器经过训练可以区分原始输入音频和重建音频。在推理期间,发送方客户端上的编码器和量化器将压缩比特流发送到接收方客户端,然后接收方客户端可以解码音频信号。

学习具有残差矢量量化的可扩展编解码器

SoundStream 的编码器会生成可取无限个值的向量。为了使用有限数量的比特将它们传输到接收器,必须用有限集合(称为码本)中的接近向量替换它们,这一过程称为矢量量化。这种方法在比特率约为 1 kbps 或更低时效果很好,但在使用更高比特率时很快就会达到极限。例如,即使比特率低至 3 kbps,假设编码器每秒生成 100 个向量,也需要存储包含超过 10 亿个向量的码本,这在实践中是不可行的。

在 SoundStream 中,我们通过提出一种新的残差矢量量化器 (RVQ) 来解决这个问题,它由多层组成(在我们的实验中最多有 80 层)。第一层以中等分辨率量化代码矢量,后面的每一层处理来自前一层的残差误差。通过将量化过程分为几层,可以大幅减少码本大小。例如,以 3 kbps 的速度每秒 100 个矢量,使用 5 个量化器层,码本大小从 10 亿增加到 320。此外,我们可以通过分别添加或删除量化器层来轻松增加或减少比特率。

由于传输音频时网络条件可能会发生变化,因此编解码器最好具有“可扩展性”,以便根据网络状态将比特率从低变为高。虽然大多数传统编解码器都具有可扩展性,但之前的可学习编解码器需要针对每种比特率进行专门的训练和部署。

为了规避这一限制,我们利用 SoundStream 中量化层的数量控制比特率这一事实,并提出了一种称为“量化器丢弃”的新方法。在训练期间,我们随机丢弃一些量化层来模拟变化的比特率。这促使解码器在任何传入音频流的比特率下都能表现良好,从而帮助 SoundStream 变得“可扩展”,这样单个训练模型就可以在任何比特率下运行,其表现与专门针对这些比特率训练的模型一样好。

1728552312377.jpg

比较在 18 kbps 下训练的 SoundStream 模型(越高越好),这些模型使用量化器丢失(比特率可扩展),不使用量化器丢失(比特率不可扩展),并使用可变数量的量化器进行评估,或以固定比特率(比特率特定)进行训练和评估。由于量化器丢失,与比特率特定模型(每个比特率使用不同的模型)相比,比特率可扩展模型(所有比特率使用一个模型)不会损失任何质量。

最先进的音频编解码器

3 kbps 的 SoundStream 优于 12 kbps 的 Opus,接近 9.6 kbps 的 EVS 质量,但使用的比特数却少了 3.2 至 4 倍。这意味着使用 SoundStream 编码音频可以提供类似的质量,同时使用明显更低的带宽。此外,在相同的比特率下,SoundStream 优于基于自回归网络的当前版本的 Lyra。与已经部署并针对生产用途进行优化的 Lyra 不同,SoundStream 仍处于实验阶段。未来,Lyra 将整合 SoundStream 的组件,以提供更高的音频质量和更低的复杂性。

1728552272436.jpg

3kbps 的 SoundStream 与最先进的编解码器。MUSHRA分数是主观质量的指标(分数越高越好)。

联合音频压缩和增强

在传统的音频处理管道中,压缩和增强(去除背景噪音)通常由不同的模块执行。例如,可以在发送端(音频压缩之前)或接收端(音频解码之后)应用音频增强算法。在这样的设置中,每个处理步骤都会增加端到端延迟。相反,我们设计 SoundStream 的方式是,压缩和增强可以由同一模型联合执行,而不会增加整体延迟。在以下示例中,我们展示了可以通过动态激活和停用降噪(5 秒内不降噪、5 秒内降噪、5 秒内不降噪等)将压缩与背景噪音抑制相结合。

结论

无论何时需要传输音频,无论是在流式传输视频时,还是在电话会议期间,高效压缩都是必需的。SoundStream 是改进机器学习驱动的音频编解码器的重要一步。它的性能优于最先进的编解码器,例如 Opus 和 EVS,可以按需增强音频,并且只需要部署一个可扩展模型,而不是多个。

SoundStream 将作为 Lyra 的下一个改进版本的一部分发布。通过将 SoundStream 与 Lyra 集成,开发人员可以利用现有的 Lyra API 和工具来完成他们的工作,从而提供灵活性和更好的音质。我们还将把它作为单独的 TensorFlow 模型发布以供实验。

致谢

本文所述工作由 Neil Zeghidour、Alejandro Luebs、Ahmed Omran、Jan Skoglund 和 Marco Tagliasacchi 撰写。我们非常感谢 Google 同事就这项工作提出的所有讨论和反馈。


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论