High-Fidelity Audio Compression with Improved RVQGAN翻译

摘要

语言模型已成功用于对自然信号(如图像、语音和音乐)进行建模。这些模型的一个关键组成部分是高质量的神经压缩模型,它可以将高维自然信号压缩为低维离散token。为此,我们引入了一种高保真通用神经音频压缩算法,该算法仅以 8kbps 带宽即可将 44.1 KHz 音频压缩 90 倍为token。我们通过将高保真音频生成的进步与图像领域中更好的矢量量化技术以及改进的对抗和重构损失相结合来实现这一目标。我们使用一个通用模型压缩所有域(语音、环境、音乐等),使其广泛适用于所有音频的生成建模。我们与竞争的音频压缩算法进行了比较,发现我们的方法明显优于它们。我们为每种设计选择提供了彻底的消融,以及开源代码和训练过的模型权重。我们希望我们的工作能够为下一代高保真音频建模奠定基础。

1. 介绍

高分辨率音频的生成建模由于高维度(每秒约 44,100 个音频样本)以及具有短期和长期依赖性的不同时间尺度的结构而困难。为了缓解这个问题,音频生成通常分为两个阶段:1) 根据某些中间表示(例如梅尔频谱图)预测音频;2) 根据某些条件信息(例如文本)预测中间表示。这可以解释为具有观察中间变量的分层生成模型。自然,另一种方法是使用变分自动编码器 (VAE) 框架学习中间变量,使用学习到的条件先验来预测给定某些条件的潜在变量。这种使用连续潜在变量并使用normalizing flows训练表达性先验的公式在语音合成中非常成功。
  一个密切相关的想法是使用 VQ-VAE 训练具有离散隐藏变量的相同变分自编码器。可以说,离散隐藏变量是更好的选择,因为可以使用强大的自回归模型来训练表达先验,这些模型是为对离散变量的分布进行建模而开发的。具体来说,Transformer 语言模型已经展示了随数据扩展的能力和模型能力,可以学习任意复杂的分布,例如文本、图像、音频、音乐等。虽然对先验进行建模很简单,但使用量化自动编码器对离散隐码进行建模仍然是一个挑战。
  学习这些离散code可以解释为有损压缩任务,其中通过使用固定长度码本对自编码器的表示进行矢量量化,将音频信号压缩到离散潜在空间中。此音频压缩模型需要满足以下属性:1)重建具有高保真度且无伪影的音频。2)实现高压缩率,同时进行时间缩放,以学习一种紧凑的表示方式,能够舍弃低级的、不可察觉的细节,同时保留高级结构。3)使用单一通用模型处理所有类型的音频,如语音、音乐、环境声音、不同的音频编码(如mp3)以及不同的采样率。
  虽然最近的神经音频压缩算法(例如 SoundStream 和 EnCodec)部分满足这些属性,但它们经常遭受困扰基于 GAN 的生成模型的相同问题。具体而言,此类模型表现出音频伪影,例如音调伪影、音高和周期性伪影,并且不完美地模拟高频,导致音频与原始音频明显不同。这些模型通常针对特定类型的音频信号(例如语音或音乐)进行定制,并且难以模拟通用声音。我们做出以下贡献:

  • 我们引入了Improved RVQGAN,这是一种高保真通用音频压缩模型,它可以将 44.1 KHz 音频压缩为 8 kbps 比特率(约 90 倍压缩)的离散code,同时将质量损失降至最低,伪影更少。在通过定量指标和定性听力测试进行评估时,即使在较低比特率(更高压缩)下,我们的模型也比最先进的方法表现更好。
  • 我们发现现有模型中存在一个关键问题,即由于码本崩溃(其中一部分code未使用)而无法利用全部带宽,并使用改进的码本学习技术来修复该问题。
  • 我们发现了量化器丢失的副作用 - 一种旨在允许单一模型支持可变比特率的技术,实际上会损害全带宽音频质量,并提出了一种解决方案来缓解它。
  • 我们通过添加周期性归纳偏差、多尺度 STFT 判别器、多尺度梅尔损失对现有的神经音频编解码器进行了有影响力的设计更改,并提供彻底的消融和直觉来激励它们。
  • 我们提出的方法是一种通用音频压缩模型,能够处理语音、音乐、环境声音、不同的采样率和音频编码格式。

我们提供代码(https://github.com/descriptinc/descript-audio-codec)、模型和音频样本(https://descript.notion.site/Descript-Audio-Codec-11389fce0ce2419891d6591a68f814d5),鼓励读者聆听。

2.相关工作

High fidelity neural audio synthesis:最近,由于前馈(并行)生成器的存在,生成对抗网络 (GAN) 已成为一种生成高质量音频并具有快速推理速度的解决方案。MelGAN 成功训练了基于 GAN 的声谱图反转(neural vocoding)模型。它引入了多尺度波形判别器 (MSD) 来惩罚不同音频分辨率下的结构,并引入了特征匹配损失,以最小化真实音频和合成音频的判别器特征图之间的 L1 距离。HifiGAN 通过引入多周期波形判别器 (MPD) 进行高保真合成,并添加辅助梅尔重建损失以进行快速训练,改进了此配方。UnivNet 引入了多分辨率声谱图判别器 (MRSD) 来生成具有清晰声谱图的音频。BigVGAN 通过使用 Snake 激活函数引入周期性归纳偏差来扩展 HifiGAN 配方。它还将 HifiGAN 中的 MSD 替换为 MRSD,以提高音频质量并减少音高、周期性伪影。虽然这些基于 GAN 的学习技术用于语音编码,但这些方法很容易应用于神经音频压缩。我们的改进型 RVQGAN 模型与 BigVGAN 训练方法非常相似,但有一些关键变化。我们的模型使用了一种新的多频带多尺度 STFT 判别器来减轻混叠伪影,并使用了多尺度梅尔重构损失来更好地模拟快速瞬变
  Neural audio compression models:VQ-VAE 一直是训练神经音频编解码器的主要框架。第一个基于 VQ-VAE 的语音编解码器是在 [13] 中提出的,运行速度为 1.6 kbps。该模型使用了 [38] 中的原始架构,带有卷积编码器和自回归 wavenet 解码器。SoundStream 是首批能够处理多种音频类型的通用压缩模型之一,同时使用单个模型支持不同的比特率。它们使用完全因果卷积编码器和解码器网络,并执行残差矢量量化 (RVQ)。该模型使用 VQ-GAN 公式进行训练,通过添加对抗和特征匹配损失以及多尺度谱重建损失。EnCodec 紧密遵循 SoundStream 配方,并进行了一些修改以提高质量。EnCodec 使用多尺度 STFT 判别器和多尺度谱重建损失。他们使用损失平衡器,根据来自判别器的梯度的不同尺度来调整损失权重。
  我们提出的方法还使用了卷积编码器-解码器架构、残差矢量量化和对抗性感知损失。但是,我们的方案具有以下主要区别:1) 我们使用 Snake 激活引入周期性归纳偏差;2) 我们通过将编码投影到低维空间来改进码本学习;3) 我们使用对抗性和感知损失设计的最佳实践获得稳定的训练方案,具有固定的损失权重,并且不需要复杂的损失平衡器。我们发现我们的更改导致接近最佳的有效带宽使用率。这使得我们的模型即使在比特率低 3 倍的情况下也能胜过 EnCodec。
  Language modeling of natural signals:神经语言模型已在各种任务中取得了巨大成功,例如具有上下文学习功能的开放式文本生成。这些模型的一个关键组成部分是自注意力,它能够对复杂和长距离依赖关系进行建模,但计算成本会随着序列长度而呈二次方增长。对于具有非常高维度的自然信号(例如图像和音频),这种成本是不可接受的,需要紧凑地映射到离散空间。这种映射通常使用 VQ-GAN 进行学习,然后在离散token上训练自回归 Transformer。这种方法已在图像、音频、视频和音乐领域取得成功。SoundStream 和 EnCodec 等编解码器已用于生成音频模型,例如 AudioLM、MusicLM 和 VALL-E。我们提出的模型可以作为这些方法中使用的音频tokenizer模型的替代品,从而实现高度卓越的音频保真度,并且由于我们的最大熵代码表示,学习效率更高。

3. The Improved RVQGAN Model

在这里插入图片描述
  我们的模型建立在 VQ-GAN 框架上,遵循与 SoundStream 和 EnCodec 相同的模式。我们的模型使用来自 SoundStream 的完全卷积编码器-解码器网络,该网络使用选定的步长因子执行时间维度的降维。根据最近的文献,我们使用残差矢量量化 (RVQ) 量化编码,该方法在使用不同码本的初始量化步骤之后递归量化残差。在训练期间应用量化器 dropout,以使单个模型可以在多个目标比特率下运行。我们的模型同样使用频域重建损失以及对抗和感知损失进行训练。
  采样率为 f s f_s fs (Hz)、编码器步长因子为 M M M、RVQ 层数为 N q N_q Nq 的音频信号产生形状为 S × N q S × N_q S×Nq 的离散code矩阵,其中 S S S 是定义为 f s / M f_s/M fs/M 的帧速率。表 1 将我们提出的模型与基线进行了比较,以对比潜在code的压缩因子和帧速率。请注意,提到的目标比特率是一个上限,因为所有模型都支持可变比特率。与所有基线方法相比,我们的模型实现了更高的压缩因子,同时在音频质量方面也优于它们,正如我们稍后展示的那样。最后,在离散代码上训练语言模型时,较低的帧速率是理想的,因为它会产生更短的序列。

3.1 Periodic activation function

众所周知,音频波形具有高周期性(尤其是在有声部分、音乐等中)。虽然当前的非自回归音频生成架构能够生成高保真音频,但它们通常会表现出刺耳的音调和周期性伪影。此外,众所周知,常见的神经网络激活(如 Leaky ReLU)难以推断周期性信号,并且在音频合成中表现出较差的分布外泛化能力。
  为了给生成器添加周期性归纳偏差,我们采用了 Liu et al. [47] 提出的 Snake 激活函数,并将其引入 BigVGAN 神经vocoding模型的音频领域。它定义为 s n a k e ( x ) = x + 1 α s i n 2 ( α x ) snake(x) = x + \frac{1}{α}sin^2(αx) snake(x)=x+α1sin2(αx) ,其中 α α α 是控制信号周期分量的频率。在我们的实验中,我们发现用 Snake 函数替换 Leaky ReLU 激活函数是一个有影响力的变化,可以显著提高音频保真度(表 2)。

3.2 Improved residual vector quantization

在这里插入图片描述
  虽然矢量量化 (VQ) 是训练离散自编码器的一种流行方法,但在训练它们时仍存在许多实际困难。由于初始化不佳,Vanilla VQ-VAE 的码本使用率较低,导致很大一部分码本未被使用。有效码本大小的减少会导致目标比特率的隐性降低,从而导致重建质量不佳。
  为了缓解这种情况,最近的音频编解码器方法使用 k-means 聚类来初始化码本向量,并在某些码本在多个批次中未使用时手动采用随机重启。然而,我们发现以 24kbps 目标比特率训练的 EnCodec 模型以及我们提出的使用相同码本学习方法的模型(使用 EMA 提出的模型)仍然受到码本利用不足的影响(图 1)。
  为了解决这个问题,我们使用了从改进的 VQGAN 图像模型中引入的两种关键技术来提高码本的使用率:分解码本和 L2 归一化码本。分解通过在低维空间(8d 或 32d)中执行码本查找,而码本嵌入位于高维空间(1024d)中,将码本查找和码本嵌入分离。直观地讲,这可以解释为仅使用输入向量的主成分进行码本查找,这些主成分可以最大限度地解释数据中的方差。编码和码本向量的 L2 归一化将欧几里得距离转换为余弦相似度,这有助于提高稳定性和质量。
  这两个技巧以及整体模型配方显著提高了码本的使用率,从而提高了比特率效率(图 1)和重建质量(表 2),同时更易于实现。我们的模型可以使用原始 VQ-VAE 码本和commitment损失进行训练,而无需 k-means 初始化或随机重启。修改后的码本学习过程的方程式写在附录 A 中。

3.3 Quantizer dropout rate

在这里插入图片描述
  SoundStream 引入了量化器 dropout,用于训练具有可变比特率的单一压缩模型。量化器的数量 N q N_q Nq 决定了比特率,因此对于每个输入样例,我们随机采样 n ∼ { 1 , 2 , . . . , N q } n ∼ \{1, 2, . . . , N_q\} n{1,2,...,Nq},并在训练时仅使用前 n q n_q nq 个量化器。然而,我们注意到应用量化器 dropout 会降低全带宽下的音频重建质量(图 2)。
  为了解决这个问题,我们改为以概率 p p p 将量化器 dropout 应用于每个输入示例。有趣的是,我们发现 dropout 概率 p = 0.5 p = 0.5 p=0.5 与较低比特率下的基线重建质量非常接近,同时缩小了与未使用量化器 dropout 训练的模型(p = 0.0)的全带宽质量之间的差距。
  此外,我们还对量化器 dropout 的实际行为及其与 RVQ 的交互提供了更多见解。首先,我们发现这些技术结合在一起,使得量化码本能够随着每个额外的量化器学习从最高有效位到最低有效位的信息。当使用 1... N q 1 . . . N_q 1...Nq 码本重构时,我们可以看到每个码本都增加了越来越多的精细细节。我们认为这种交互在这些码本上训练分层生成模型时是有益的,例如将码本划分为“粗” token(表示最高有效码本)和“细” token。

3.4 Discriminator design

与之前的研究一样,我们使用多尺度 (MSD) 和多周期波形判别器 (MPD),从而提高音频保真度。但是,生成的音频的频谱图仍然会显得模糊,在高频中表现出过度平滑的伪影。UnivNet 提出了多分辨率频谱图判别器 (MRSD) 来修复这些伪影,BigVGAN 发现它也有助于减少音高和周期性伪影。但是,使用幅度频谱图会丢弃相位信息,而判别器本来可以利用这些信息来惩罚相位建模误差。此外,我们发现高频建模对于这些模型来说仍然具有挑战性,尤其是在高采样率下。
  为了解决这些问题,我们在多个时间尺度上使用了一个复杂的 STFT 判别器,发现它在实践中效果更好,并能改善相位建模。此外,我们发现将 STFT 分成子带可以略微改善高频预测并减轻混叠伪影,因为判别器可以学习特定子带的鉴别特征并向生成器提供更强的梯度信号。多频带处理早先在 [43] 中提出,用于预测子带中的音频,然后将其相加以产生全频带音频。

3.5 Loss functions

Frequency domain reconstruction loss:虽然梅尔重构损失可以提高稳定性、保真度和收敛速度,但多尺度频谱损失鼓励在多个时间尺度上对频率进行建模。在我们的模型中,我们结合了这两种方法,对使用窗口长度 [32、64、128、256、512、1024、2048] 和跳跃长度设置为 window_length / 4 计算的梅尔频谱图使用 L1 损失。我们特别发现,使用最低跳跃大小 8 可以改善音乐领域中特别常见的非常快速的瞬态的建模。
  EnCodec 使用类似的损失公式,但同时包含 L1 和 L2 损失项,并将梅尔箱大小固定为 64。我们发现固定梅尔箱大小会导致频谱图中出现空洞,尤其是在滤波器长度较短的情况下。因此,我们使用与上述滤波器长度相对应的梅尔箱大小 [5、10、20、40、80、160、320],这些滤波器长度已通过人工检查验证为正确。
  Adversarial loss:我们的模型使用多周期判别器进行波形鉴别,并使用提出的多频带多尺度 STFT 判别器进行频域鉴别。我们使用 HingeGAN 对抗损失公式,并应用 L1 特征匹配损失。
  Codebook learning:我们使用原始 VQ-VAE 公式中的简单码本和带有停止梯度的commitment损失,并使用直通估计器通过码本查找反向传播梯度。
  Loss weighting:我们对多尺度梅尔损失使用 15.0 的损失权重,对特征匹配损失使用 2.0 的损失权重,对对抗损失使用 1.0 的损失权重,对码本和commitment损失使用 1.0、0.25 的损失权重。这些损失权重与最近的研究一致(对梅尔损失使用 45.0 的权重),但只是重新调整了比例以考虑我们用于计算梅尔损失的多个尺度和 log10 基数。我们不使用 EnCodec 中提出的损失平衡器。

4.实验

4.1 Data sources

4.2 Balanced data sampling

4.3 Model and training recipe

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值