MelNet
前提条件
- 已在 Python 3.6.8 和 3.7.4, PyTorch 1.2.0 和 1.3.0 上测试。
pip install -r requirements.txt
如何训练
数据集
- Blizzard、VoxCeleb2 和 KSS 的 YAML 文件已经在
config/
文件夹下提供。对于其他数据集,请根据已提供的文件填写你自己的 YAML 文件。 - 所有类型的数据集都可以进行无条件训练,只要它们在 YAML 文件中的
data.extension
中指定了统一的文件扩展名。 - 目前仅为 KSS 和 Blizzard 数据集的一部分实现了条件训练。
运行代码
python trainer.py -c [配置 YAML 文件路径] -n [运行名称] -t [层数] -b [批量大小] -s [TTS]
- 每一层可以单独训练。由于每一层的大小都比前一层大(除第 1 层外),需要为每一层调整批量大小。
- 即使将批量大小设为 1,Blizzard 数据集的第 6 层也无法在 16GB P100 显卡上运行。
-s
参数是一个布尔值,用于决定是否训练 TTS 层。由于 TTS 层只在第 1 层有所不同,当[层数] != 0
时忽略该标志。警告:无论该标志后面是什么,此标志都会被切换为True
。如果你不打算使用它,请忽略它。
- 每一层可以单独训练。由于每一层的大小都比前一层大(除第 1 层外),需要为每一层调整批量大小。
如何采样
准备检查点
- 检查点必须存储在
chkpt/
文件夹下。 - 名为
inference.yaml
的 YAML 文件必须放在config/
文件夹下。 inference.yaml
文件必须指定层数、检查点的名称以及是否为条件生成。
运行代码
python inference.py -c [配置 YAML 文件路径] -p [推理 YAML 文件路径] -t [生成的梅尔频谱图的时间步] -n [样本名称] -i [条件生成的输入句子]
- 时间步指的是梅尔频谱图的长度。时间步与秒的比例大致为
[采样率] : [FFT 的跳步长度]
。 -i
参数是可选的,仅在条件生成时需要。用""
将句子括起来并以.
结尾。- 无论是无条件生成还是条件生成,目前都不支持引导生成(从提供的数据进行外推)。
- 时间步指的是梅尔频谱图的长度。时间步与秒的比例大致为
待办事项
- 实现上采样过程
- GMM 采样 + 损失函数
- 无条件音频生成
- TTS 合成
- Tensorboard 日志记录
- 多 GPU 训练
- 引导生成
实现作者
- Seungwon Park,June Young Yi,Yoonhyung Lee,Joowhan Song @ Deepest Season 6
许可证
MIT 许可证