MelNet 项目介绍
MelNet 是一个音频生成模型,通过在频域内进行生成,旨在为音频合成领域带来革命性的变革。此项目主要是在 PyTorch 框架下对这一模型进行实现。
项目环境准备
在实施 MelNet 项目之前,用户需确保以下环境要求:
- 使用 Python 3.6.8 或 3.7.4 版本。
- PyTorch 应使用 1.2.0 或 1.3.0 版本。
- 需要通过
pip install -r requirements.txt
安装所有必要的Python包。
如何进行模型训练
数据集准备
项目支持多种音频数据集进行模型训练,例如 Blizzard、VoxCeleb2 和 KSS。这些数据集有对应的 YAML 配置文件存放在 config/
目录下。用户可以根据提供的示例,为其他数据集编写自己的 YAML 文件。
模型支持无条件训练,只要数据集存在一个一致的文件扩展名,并在 YAML 文件中通过 data.extension
指定即可。此外,条件训练目前仅适用于 KSS 数据集和部分 Blizzard 数据集子集。
运行训练代码
训练模型的命令如下:
python trainer.py -c [配置文件路径] -n [运行名称] -t [层级号] -b [批次大小] -s [TTS]
- 每个层级可以单独训练。由于层级越高,模型复杂度越大(Tier 1 除外),需相应调整批量大小。
- Blizzard 数据集的第 6 层即使将批量大小调整为 1,也无法在 16GB 的 P100 GPU 上正常运行。
-s
参数用于指定是否训练 TTS 层。如非 Tier 1,系统会忽略此标志。警告:此标志无论后续跟随什么内容都会被视为True
。
如何进行声音采样
准备检查点
采样所需的模型检查点需要存放在 chkpt/
目录中。同时,用户需在 config/
目录下提供名为 inference.yaml
的配置文件,文件中需指出层级数量、检查点名称,以及是否为条件生成。
运行采样代码
采样时需运行如下命令:
python inference.py -c [配置文件路径] -p [推断文件路径] -t [生成的梅尔频谱图时间步长] -n [样本名称] -i [条件生成输入句子]
- 时间步长指梅尔频谱图的长度。时间步长和实际秒数的比率大致是
[采样率] : [FFT 的跳步长度]
。 -i
参数为可选参数,仅在条件生成时需要。需要使用""
包裹句子,并以.
结束。- 当前无条件生成和条件生成均不支持基于现有数据进行的扩展生成(被称为 primed generation)。
项目进展与成员
目前,MelNet 项目已实现了上采样程序、GMM 采样与损失函数、无条件音频生成、TTS 合成、Tensorboard 日志记录以及多 GPU 训练等功能,唯有 primed generation 尚未完成。
项目由 Seungwon Park、June Young Yi、Yoonhyung Lee 和 Joowhan Song 于 Deepest Season 6 共同完成,且采用 MIT 许可证授权。