准周期并行波gan实现
qppwg的Python项目详细描述
准周期平行波gan(QPPWG)
这是正式的QPPWGPyTorch实现。 QPPWG是一种基于PWG和{a4}结构的非自回归神经语音生成模型。在
在本报告中,我们提供一个例子来训练和测试QPPWG作为WORLD声学特性的声码器。 更多细节可以在我们的Demo页面找到。在
新闻
- 2020/7/22版本v0.1.2
- ^{str1}$2020/6/27发布^{str1}$mel规范特征提取和{a7}语料库的预训练模型。在
- ^{str1}$2020/6/26发布vcc18语料库的预训练模型。在
- ^{str1}$2020/5/20发布第一个版本(v0.1.1)。在
要求
这个存储库在Ubuntu16.04上用Titan V GPU进行了测试。在
- Python 3.6+
- Cuda 10.0版
- 铜7+
- Pythorch 1.0.1+
环境设置
该代码适用于Python和virtualenv。 以下示例使用水蟒。在
$ conda create -n venvQPPWG python=3.6 $ source activate venvQPPWG $ git clone https://github.com/bigpon/QPPWG.git $ cd QPPWG $ pip install -e .
有关详细信息,请参阅PWG回购。在
文件夹体系结构
- egs: 项目的文件夹。在
- egs/vcc18: VCC2018项目的文件夹。在
- egs/vcc18/exp: 用于训练模型的文件夹。在
- egs/vcc18/conf: 用于配置的文件夹。在
- egs/vcc18/data: 语料库相关文件(wav,feature,list…)的文件夹。在
- qppwg: 源代码的文件夹。在
跑
语料库和路径设置
- 在
egs/vcc18/run.py
中修改相应的CUDA路径。在 - 下载Voice Conversion Challenge 2018(vcc218)语料库来运行QPPWG示例
- Training wav list:
data/scp/vcc18_train_22kHz.scp
。在 - Validation wav list:
data/scp/vcc18_valid_22kHz.scp
。在 - 测试wav list:
data/scp/vcc18_eval_22kHz.scp
。在
预处理
# Extract WORLD acoustic features and statistics of training and testing data $ bash run.sh --stage 0 --config PWG_30
- 可以在
egs/vcc18/conf/vcc18.PWG_30.yaml
中更改与世界相关的设置。在 - 如果您想使用另一个语料库,请创建一个相应的配置文件和一个包含功率阈值和f0范围的文件,比如
egs/vcc18/data/pow_f0_dict.yml
。在 - 有关特征提取的更多详细信息可以在QPNetrepo中找到。在
- 将自动生成辅助功能列表。在
- Training辅助列表:
data/scp/vcc18_train_22kHz.list
。在 - 验证辅助列表:
data/scp/vcc18_valid_22kHz.list
。在 - 测试辅助列表:
data/scp/vcc18_eval_22kHz.list
。在
QPPWG/PWG培训
# Training a QPPWG model with the 'QPPWGaf_20' config and the 'vcc18_train_22kHz' and 'vcc18_valid_22kHz' sets. $ bash run.sh --gpu 0 --stage 1 --conf QPPWGaf_20 \ --trainset vcc18_train_22kHz --validset vcc18_valid_22kHz
- gpu ID可以通过--gpu gpu_ID设置(默认值:0)
- 模型体系结构可以通过--conf CONFIG设置(默认值:PWG_30)
- 可以通过--resume NUM(默认值:None)设置已训练的模型resume
QPPWG/PWG测试
# QPPWG/PWG decoding w/ natural acoustic features $ bash run.sh --gpu 0 --stage 2 --conf QPPWGaf_20 \ --iter 400000 --trainset vcc18_train_22kHz --evalset vcc18_eval_22kHz # QPPWG/PWG decoding w/ scaled f0 (ex: halved f0). $ bash run.sh --gpu 0 --stage 3 --conf QPPWGaf_20 --scaled 0.50 \ --iter 400000 --trainset vcc18_train_22kHz --evalset vcc18_eval_22kHz
监控培训进度
$ tensorboard --logdir exp
- 普华永道30号与泰坦五号的训练时间约为3天。在
- QPPWGaf_20与泰坦V的训练时间约为5天。在
推理速度(RTF)
- 香草PWG(PWG U 30)
# On CPU (Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz 32 threads)[decode]: 100%|███████████|140/140 [04:50<00:00, 2.08s/it, RTF=0.771]2020-05-26 12:30:27,273 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.579). # On GPU (TITAN V)[decode]: 100%|███████████|140/140 [00:09<00:00, 14.89it/s, RTF=0.0155]2020-05-26 12:32:26,160 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.016).
- PWG w/仅20块(PWG U 20)
# On CPU (Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz 32 threads)[decode]: 100%|███████████|140/140 [03:57<00:00, 1.70s/it, RTF=0.761]2020-05-30 13:50:20,438 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.474). # On GPU (TITAN V)[decode]: 100%|███████████|140/140 [00:08<00:00, 16.55it/s, RTF=0.0105]2020-05-30 13:43:50,793 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.011).
- QPPWG(QPPWGaf_20)
# On CPU (Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz 32 threads)[decode]: 100%|███████████|140/140 [04:12<00:00, 1.81s/it, RTF=0.455]2020-05-26 12:38:15,982 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.512). # On GPU (TITAN V)[decode]: 100%|███████████|140/140 [00:11<00:00, 12.57it/s, RTF=0.0218]2020-05-26 12:33:32,469 (decode:156) INFO: Finished generation of 140 utterances (RTF=0.020).
模型和结果
- 预先训练的模型和生成的话语被释放。在
- 您可以下载每个语料库的整个文件夹,然后将其放入
egs/[corpus]
中,使用预先训练的模型运行语音生成。在 - 您也只能下载
[corpus]/data
文件夹和所需的预先培训模型,然后将data
文件夹放入egs/[corpus]
中,并将模型文件夹放入egs/[corpus]/exp
。在 - 这两个模型都有100000次迭代(训练过的有STFT损耗)和400000次迭代(训练过的w/STFT和GAN损耗)都发布了。在
- 生成的话语位于每个模型文件夹的
wav
文件夹中。在
使用预培训模型
分析综合
给出了执行分析和综合的最小代码。在
# Make sure you have installed `qppwg`# If not, install it via pip $ pip install qppwg # Take "vcc18" corpus as an example# Download the whole folder of "vcc18" $ ls vcc18 data exp # Change directory to `vcc18` folder $ cd vcc18 # Put audio files in `data/wav/` directory $ ls data/wav/ sample1.wav sample2.wav # Create a list `data/sample.scp` of the audio files $ tail data/scp/sample.scp data/wav/sample1.wav data/wav/sample2.wav # Extract acoustic features $ qppwg-preprocess \ --audio data/scp/sample.scp \ --indir wav \ --outdir hdf5 \ --config exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/config.yml # The extracted features are in `data/hdf5/`# The feature list `data/sample.list` of the feature files will be automatically generated $ ls data/hdf5/ sample1.h5 sample2.h5 $ ls data/scp/ sample.scp sample.list # Synthesis $ qppwg-decode \ --eval_feat data/scp/sample.list \ --stats data/stats/vcc18_train_22kHz.joblib \ --indir data/hdf5/ \ --outdir exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/wav/400000/ \ --checkpoint exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/checkpoint-400000steps.pkl # Synthesis w/ halved F0 $ qppwg-decode \ --f0_factor 0.50 \ --eval_feat data/scp/sample.list \ --stats data/stats/vcc18_train_22kHz.joblib \ --indir data/hdf5/ \ --outdir exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/wav/400000/ \ --checkpoint exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/checkpoint-400000steps.pkl # The generated utterances can be found in `exp/[model]/wav/400000/` $ ls exp/qppwg_vcc18_train_22kHz_QPPWGaf_20/wav/400000/ sample1.wav sample1_f0.50.wav sample2.wav sample2_f0.50.wav
参考文献
QPPWG存储库是基于以下存储库和纸张开发的。在
引文
如果您发现代码有帮助,请引用以下文章。在
@article{wu2020qppwg,
title={Quasi-Periodic Parallel WaveGAN Vocoder: A Non-autoregressive Pitch-dependent Dilated Convolution Model for Parametric Speech Generation},
author={Wu, Yi-Chiao and Hayashi, Tomoki and Okamoto, Takuma and Kawai, Hisashi and Toda, Tomoki},
journal={arXiv preprint arXiv:2005.08654},
year={2020}
}
作者
发展:
Yi Chiao Wu@名古屋大学(@bigpon)
电子邮件:yichiao.wu@g.sp.m.is.nagoya-u.ac.jp
顾问:
Tomoki Toda@名古屋大学
电子邮件:tomoki@icts.nagoya-u.ac.jp
- 项目
标签: