MelGAN 项目介绍
MelGAN 是一款基于 PyTorch 的非官方实现的声码器项目。它旨在通过 Mel 频谱图生成语音,与传统方法相比,MelGAN 更轻便、运行速度更快,并且在处理未见过的语音时表现出更好的泛化能力。以下是对该项目的详细介绍。
项目特色
- 轻便高效:相较于其他声码器如 WaveGlow,MelGAN 更加轻便并且运行速度更快。
- 广泛兼容:该项目使用了与 NVIDIA Tacotron2 相同的 Mel 频谱图功能,因此可以直接用于将 Tacotron2 的输出转换为原始音频。
- 预训练模型:提供基于 LJSpeech-1.1 数据集预训练的模型,并可通过 PyTorch Hub 进行下载和调用。
环境准备
MelGAN 项目在 Python 3.6 下进行测试使用,用户只需运行以下命令来安装所需的 Python 包:
pip install -r requirements.txt
数据集准备
在训练前需要准备数据集,推荐使用采样率为 22050Hz 的 WAV 文件,例如 LJSpeech 数据集。具体步骤如下:
- 下载所需的数据集。
- 预处理数据:
python preprocess.py -c config/default.yaml -d [数据根路径]
。 - 编辑配置文件
config.yaml
以适应你的数据。
模型训练与可视化
进行训练时,用户需要根据以下步骤:
- 执行命令:
python trainer.py -c [配置文件路径] -n [运行名称]
。 - 编辑
config.yaml
文件并记录训练/验证文件的根路径,每个路径下应包含*.wav
和对应的(预处理后的)*.mel
文件对。 - 使用 TensorBoard 进行训练过程的可视化:
tensorboard --logdir logs/
。
预训练模型的使用
用户可以通过以下示例代码在 Google Colab 上尝试使用预训练模型:
import torch
vocoder = torch.hub.load('seungwonpark/melgan', 'melgan')
vocoder.eval()
mel = torch.randn(1, 80, 234) # 使用自己的 Mel 频谱图
if torch.cuda.is_available():
vocoder = vocoder.cuda()
mel = mel.cuda()
with torch.no_grad():
audio = vocoder.inference(mel)
推理过程
运行推理可以使用以下命令:
python inference.py -p [checkpoint 路径] -i [输入 Mel 路径]
项目成果
在 V100 GPU 上,模型进行了 14 天的训练,使用的数据集是 LJSpeech-1.1。更多示例音频可以访问 该链接。
项目贡献者
- Seungwon Park @ MINDsLab Inc.
- Myunchul Joe @ MINDsLab Inc.
- Rishikesh @ DeepSync Technologies Pvt Ltd.
许可证信息
本项目采用 BSD 3-Clause License。有关具体文件的授权信息,请参考项目中的详细说明。
有用的资源
- GAN 训练指南 by Soumith Chintala
- MelGAN 官方实现
通过这些文档和资源,用户可以更好地理解和使用 MelGAN 项目。