GANSynth:使用 GAN 制作音乐
文 / Jesse Engel, Google Research
Colab Notebook
http://goo.gl/magenta/gansynth-demo
🎵 Audio 示例
http://goo.gl/magenta/gansynth-examples
📝 ICLR 2019 论文
http://goo.gl/magenta/gansynth-paper
GitHub
http://goo.gl/magenta/gansynth-code
为什么要用 GAN 生成音频?
众所周知,GAN 是一种生成高质量图像的 SOTA 方法。因而,研究人员也一直在努力将其应用于更加序列化的数据,例如音频和音乐。在这个领域,自回归 (AR) 模型通过一次预测一个样本占据了主导地位(如 WaveNets 和 Transformers)。虽然 AR 模型的这一特性促成了它们的成功,但这也同时意味着采样是连续且缓慢,令人难以忍受的过程。为此,诸如概率密度蒸馏和专用内核等技巧被开发出来以满足实时语音合成的需要。
GANSynth 的特点并非在于顺序生成音频,而是并行生成整个序列。在现代 GPU 上合成音频的速度明显比实时要求的速度更快,比标准 WaveNet 快约50,000倍。我们先前发布的 NSynth 是基于 WaveNet 模型的自动编码器,使用时间分布潜码生成音乐。
GANSynth 与此不同,它使用单个潜向量生成整个音频剪辑,从而能够更轻松地解耦音高与音色等全局特征。使用 NSynth 乐器音符数据集,我们可以独立控制音高和音色。您可以在下面的样本中听到这一点,在该样本中,我们首先保持音色恒定,然后对整个演奏过程中的音色进行插值:
巴赫:无伴奏大提琴组曲 G 大调 1 号:前奏曲,BWV 1007
单一音色
插值后
巴赫组曲 MIDI 源文件下载地址
http://www.jsbach.net/midi/midi_solo_cello.html您也可以使用我们的 Colab 笔记本进行在线实战
http://goo.gl/magenta/gansynth-demo
GANSynth 是如何工作的?
GANSynth 使用的渐进式 GAN 架构可从单个矢量到完整声音进行增量上采样卷积。与先前的工作中遇到的情况相似, 我们发现很难直接生成相干波形,因为对于高度周期性的信号,上采样卷积在相位对齐方面有难处。请看下图:
红色-黄色曲线是一个周期信号。为了便于观察,每个周期的开始处都标记了一个黑点。黑色虚线代表帧与帧之间的切割线。如果我们沿用旧方法,将信号切分成周期帧来对其建模,就像 GAN 中的上采样卷积和短时傅立叶变换 (STFT) 一样,则每帧的起点(黑色虚线)与波的起点(黑点)之间的距离不会是定值,而会随时间变化(黑色实线)。
对于跨步卷积,这意味着卷积需要学习给定滤波器的所有相位排列,这是非常非常低效的。这个差值(黑色实线)被称为相位,它会随时间进动,这是波和帧的周期不同造成的。注1
如您在上面的示例中看到的,相位是一个循环量(黄色柱状图,模 2π),但是如果我们将其解开(橙色柱状图),则每帧的减少量一个定值(红色柱状图)。我们将其称为瞬时频率 (Instantaneous Frequency, IF),因为频率的定义是单位时间的相位变化。STFT 将信号帧与许多不同的频率进行比较,结果是布满斑点的相位模式,如下图左 2 所示。相反,当我们提取瞬时频率时,如下图左 4,我们能看到出现了连续的粗线,这反映了基础声音的相干周期性。
研究结果
在 GANSynth ICLR 论文中,我们用一系列频谱表示来训练 GAN。结果发现对于高度周期性声音(比如音乐中的那些),为相位分量生成瞬时频率 (IF) 的 GAN 在表现上胜过其他模型和强基线,被超过的模型包括生成波形的 GAN 和无条件的 WaveNet。
我们还发现渐进式训练 (P) 和增加 STFT 的频率分辨率 (H) 能够帮助分离密集的和声并以此提高性能。下图展示了用户听测的结果。测试方式是为用户播放两种不同方法生成的音乐示例,并询问他们哪个示例更好听:
除了论文中所述的诸多定量评测外,我们还可以在下图定性而显著地看出生成 IF-GAN 的优越之处:与先前的模型相比,它能产生更多的相干波形。下图的第一行左 1 为真实乐器生成的音频,生成的波形以音符的基础周期为模。需要注意的是,由于波形具有极高的周期性,因此真实数据会完全重叠。但是,WaveGAN 和 PhaseGAN 具有许多相位不规则性,从而形成了模糊的线网。
相比之下 IF-GAN 的波形相干得多,每个周期之间只有很小的变化。在下面第二行的彩虹图里(CQT,颜色表示瞬时频率),真实数据和 IF-GAN 模型具有相干波形,可为每个谐波产生颜色非常一致的线条,而 PhaseGAN 由于相位不连续的缘故在线条中产生许多斑点,至于 WaveGAN 模型则是非常不规则的图像。
下一步的工作是?
这项工作是我们 magenta 团队使用 GAN 生成高保真音频的初步尝试,因而仍有许多有趣的问题。尽管上述方法对于处理音乐信号效果很好,但用于语音合成时仍会产生一些明显的伪像。近期的一些相关工作便以此为基础,探索从生成的频谱图中恢复相位并减少伪像的新方法。其他有前途的方向包括使用多尺度 GAN 调节,处理可变长度的输出,或可用更加灵活的可微音频合成器替换现有的上采样卷积发生器。
如何进行引用?
如果您想使用 GANSynth 或在此基础上进行扩展研究,请引用这篇论文。
** 注释
一个有趣的事实是, “相位” 是一种基本的物理现象,它存在于形形色色的事物之中,例如摩尔纹,信号处理中的混叠,联觉,以及量子力学中的晶体的能带结构。
如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
高质量图像
https://thispersondoesnotexist.comWaveNets
https://magenta.tensorflow.org/maestro-wave2midi2waveTransformers
https://magenta.tensorflow.org/music-transformerNSynth
https://magenta.tensorflow.org/nsynthNSynth 乐器音符数据集
https://magenta.tensorflow.org/datasets/nsynthGANSynth ICLR 论文
https://openreview.net/forum?id=H1xQVn09FX渐进式训练
https://arxiv.org/abs/1710.10196CQT
https://gist.github.com/jesseengel/e223622e255bd5b8c9130407397a0494近期的一些相关工作
https://tifgan.github.io/论文
https://openreview.net/pdf?id=H1xQVn09FX