name_ch: 高保真神经音频压缩

name_en: High Fidelity Neural Audio Compression

date_publish: 2022-10-24

paper_addr: http://arxiv.org/abs/2210.13438

code: github.com/facebookresearch/encodec

1 读后感

方法与 SoundStream 相似,模型主要使用了卷积,LSTM,还加入 Transformer 优化量化单元,以减少带宽。

2 摘要

Encodec 也是一个音频编码器 audio codec,包括编码器 - 解码器架构、量化方法和感知损失等要素。EnCodec 在多个音频压缩比和采样率条件下,在语音和音乐的压缩中均达到了最先进的质量水平。

文章还讨论了神经网络压缩模型的两个问题:如何表示噪音和如何高效地压缩,作者通过构建大而多元化的训练集和引入辨别器网络,解决了第一个问题,而通过引入熵编码和实时模式流的控制来解决第二个问题。

检验了 EnCodec 的运算速度、实时和压缩效果,得到了较好的实验效果。

3 方法

模型由编码器,量化器,解码器三部分组成。

3.1 编解码器结构

如图所示,主要使用卷积结构。另外,同时提供针对流式数据和非流式数据的处理方法。

3.2 残差向量量化

同 StreamSound 类似,通过在训练时选择不同数量的残差步骤,可以使用单个模型支持多个带宽目标

3.3 语言建模和熵编码

另外训练了一个小型基于 Transformer 的语言模型,旨在通过单个 CPU 核心保持快于实时的端到端压缩/解压缩速度。

该模型包括 5 层、8 个头、200 个通道、每个前馈块的维度为 800,没有 dropout。

在训练时,选择一个带宽和相应的 codebook 数量 Nq。对于时间步 t,从时间 t-1 得到的离散表示使用学习的嵌入表之一变换成连续表示,然后相加。

Transformer 的输出被馈送到 Nq 个线性层,并且每个线性层输出通道的数量与每个 codebook 的基数(例如 1024)相同,这样可以给在时间 t 上估计占用每个 codebook 的分布的对数。

因此,在单个时间步骤上忽略了潜在的码书之间的互信息。这样就可以加速推理,并且对最终交叉熵的影响有限

3.4 训练目标

目标函数结合了重建损失,判别损失,以及量化损失。

其中 x 是原始音频,x^是生成音频;

  • 重建损失包含时域损失 lt 和频域损失 lf
    • lt:评价了音频帧的差异
    • lf:评价了多个时间尺度在梅尔频谱的差异
  • 对抗损失
    • lg:对抗中的判断器,评价了判别器的损失,引入了基于多尺度短时傅里叶变换 (MS-STFT) 鉴别器的感知损失项
    • lfeat:对抗中的生成器,评价了音频之间特征的差异,为生成器添加了相对特征匹配损失,

lw:VQ 承诺损失,用于计算 zc 当前残差和 qc(zc) 相应码本中最近的条目的差异。

lr:另外,还训练一个小型 Transformer 语言模型(可选),用于使用在量化单元上进行熵编码,以进一步减少带宽。

3.5 损失函数的参数

引入了一个损失平衡器,平衡器可以更容易地推断出不同的损失权重,每个权重都可以解释为来自相应损失的模型梯度的分数。