AI科技评论按,截至翻译开始前,该Github上的Star数已超过12000+。
GANSynth是一种利用生成对抗网络合成音频的算法。 详情可在ICLR 2019论文中查看。它比NSynth数据集上的标准WaveNet基线能获得更好的音频质量,并且合成音频的速度快数千倍。
项目地址:
https://github.com/tensorflow/magenta/tree/master/magenta/models/gansynth
Website:
https://magenta.tensorflow.org/gansynth
Paper《GANSynth: Adversarial Neural Audio Synthesis》:
https://openreview.net/forum?id=H1xQVn09FX
Colab:
https://colab.research.google.com/notebooks/magenta/gansynth/gansynth_demo.ipynb
如果要生成一些声音,首先需要按照Magenta的设置说明进行操作,然后下载预训练检查点,或者训练自己的检查点。 我们有几个(检查点)可供下载:
acoustic_only: 如论文所示,仅使用声学仪器24-84(Mel-IF,逐行,高频分辨率)进行训练。
all_instruments: 在24-84(Mel-IF,Progressive,High Frequency Resolution)的所有乐器上进行训练。
您可以通过解压缩检查点包并从Magenta目录的根目录中运行生成脚本来生成一些随机声音(随机音高和潜在向量)。
python magenta/models/gansynth/gansynth_generate.py --ckpt_dir=/path/to/acoustic_only --output_dir=/path/to/output/dir --midi_file=/path/to/file.mid
如果指定了MIDI文件,就会合成音符,并在时间内隐向量之间进行插值。 如果没有给出MIDI文件,则会合成随机批处理的音符。
如果你已经从pip包中安装,它将会安装一个控制台脚本,以便可以从任何地方运行。
gansynth_generate --ckpt_dir=/path/to/acoustic_only --output_dir=/path/to/output/dir --midi_file=/path/to/file.mid
GANSynth可以仅用~3-4天内训练单个V100 GPU上的NSynth数据集。如果要进行训练,首先需要使用安装或开发环境,并按照Magenta的设置说明进行操作,然后将NSynth数据集下载为TFRecords。
如果要测试该训练是否生效,请从Magenta repo目录的根目录运行:
python magenta/models/gansynth/gansynth_train.py --hparams='{"train_data_path":"/path/to/nsynth-train.tfrecord", "train_root_dir":"/tmp/gansynth/train"}'
这将会使用合适的超参数运行模型,以便快速测试训练(可以在model.py中找到)。你可以在configs/mel_prog_hires.py中找到论文中最佳表现的超参数配置(Mel-Spectrograms,Progressive Training,High Frequency Resolution)。 你可以通过将其添加为标志来对这个配置进行训练:
python magenta/models/gansynth/gansynth_train.py --config=mel_prog_hires --hparams='{"train_data_path":"/path/to/nsynth-train.tfrecord", "train_root_dir":"/tmp/gansynth/train"}'
你也可以更改它或进行其他配置以研究其他的表示。提醒一下,完整的超参数列表可以在model.py中找到。 默认情况下,该模型仅在声学仪器间距24-84进行训练,如论文中所示。 你可以在datasets.py中更改。
如果你已经从pip包中安装,它将会安装一个控制台脚本,以便可以从任何地方运行。
gansynth_train --config=mel_prog_hires --hparams='{"train_data_path":"/path/to/nsynth-train.tfrecord", "train_root_dir":"/tmp/gansynth/train"}'
点击阅读原文,查看 生成对抗网络(GAN) 背后的数学理论