项目介绍:UnivNet
UnivNet是一个用于高保真波形生成的神经语音合成器,采用多分辨率频谱判别器来实现高精度的语音生成。这个项目是对Jang等人(来自Kakao)的UnivNet论文的PyTorch非官方实现。以下将为您介绍该项目的详细信息。
项目特色
UnivNet在最近的GAN(生成对抗网络)基础的神经语音合成器中展现出最佳的客观结果,包括HiFi-GAN。此外,它在主观评估中也超过了HiFi-GAN,并且推理速度快1.5倍。该实现使用与HiFi-GAN官方版本相同的Mel频谱图函数,这样便于与NVIDIA的Tacotron2兼容。
安装需求
- Python 3.6
- PyTorch 1.6.0
- NumPy 1.17.4 和 SciPy 1.5.4
- 其他依赖项可从requirements.txt安装:
pip install -r requirements.txt
数据集准备
要开始使用,首先需要下载并准备训练数据集。推荐使用的音频格式为具有24000Hz采样率的wav文件,原论文使用了LibriTTS数据集。在准备修改采样率时,可以根据需要调整配置文件。
数据准备
下载LibriTTS数据集:
- 从此链接下载数据集。
- 解压后,将内容放置在
datasets/LibriTTS/train-clean-360
文件夹下。
元数据准备
按照NVIDIA Tacotron2的格式,元数据应包括音频路径、文本转录及说话者ID等信息:
path_to_wav|transcript|speaker_id
UnivNet不使用转录文本进行训练,仅依赖音频数据。
训练过程
配置文件准备
将默认配置文件default_c32.yaml复制并重命名为config.yaml,然后根据实际数据位置进行编辑。例如:
data:
train_dir: 'datasets/'
train_meta: 'metadata/libritts_train_clean_360_train.txt'
val_dir: 'datasets/'
val_meta: 'metadata/libritts_train_clean_360_val.txt'
选择c16或c32型号时,可以调整gen
部分的channel_size
。
开始训练
运行以下命令开始训练:
python trainer.py -c CONFIG_YAML_FILE -n NAME_OF_THE_RUN
使用Tensorboard
可以使用以下命令启动Tensorboard以监控训练过程:
tensorboard --logdir logs/
推理过程
使用以下命令执行推理:
python inference.py -p CHECKPOINT_PATH -i INPUT_MEL_PATH -o OUTPUT_WAV_PATH
预训练模型
可从Google Drive下载已训练好的模型:
结果展示
该项目中提供的音频样本验证了其高效的语音生成能力。在模型验证集上的评估分数如下:
- PESQ和RMSE等客观指标均优于很多现有模型,如HiFi-GAN。
更多音频样本可在其项目主页查看。