使用VQ-VAE(向量量化的变分自编码器)进行音乐生成.

训练

VQ-VAE结构

作者训练了三个具有不同时序分辨率的VQ-VAE模型,模型结构如下:

该模型训练时,损失函数由三部分组成:

损失函数

  1. $L_{recons}$表示生成音频$D(e_{z_t})$和原始音频$x_t$的重构误差;
  2. $L_{codebook}$表示训练Codebook时,其中的向量$e_{z_s}$和经过编码器得到的隐向量$h_s$之间的误差,其中$sg$表示固定梯度(stop gradient);
  3. $L_{commit}$表示编码器输出的隐向量$h_s$和Codebook之间的误差,其中$sg$表示固定梯度(stop gradient)。

采样

训练好的模型生成音乐时不需要编码器部分;从隐变量$z_t$的先验中采样喂入解码器。根据不同的任务输出需求使用不同的采样方法。

原始采样法 Ancestral sampling

随机生成一段音频,采用如下所示的原始采样法:

窗口采样法 Windowed sampling

要生成长度超过模型预设长度的音频,采用窗口采样法:

采样一段隐变量后,选择75%的重叠率在其后采样新的变量:

预先采样法 Primed sampling

先将已有的一段音频转换成VQ-VAE格式的张量,在其基础上进行采样: