准周期并行波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: 源代码的文件夹。在

语料库和路径设置

^{pr2}$
  • Training wav listdata/scp/vcc18_train_22kHz.scp。在
  • Validation wav listdata/scp/vcc18_valid_22kHz.scp。在
  • 测试wav listdata/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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java调用看起来模棱两可,但在意外的输出下运行得很好   java Spring工具套件:导入Spring入门内容时出错   javasocket在不接受连接的情况下侦听?   java无法将camel服务部署到jboss Fuse   使用java将jdbc结果集设置为文本文件   编辑JTable时java向量类类型的更改   java使用递归和二叉树计算算术表达式   java如何基于用户输入运行一组代码   java Jetty ServletTester类打包在哪里?   从一定的旋转位置发射子弹   java谷歌Foobar数字站   java LibGDX textfield输入导致崩溃   在Android Java中,公共阵列列表的大小在两个地方显示不同   RESTJava。lang.NoClassDefFoundError:org/eclipse/jetty/server/Handler   java将颜色更改为<ice:commandLink>   ArrayList Java的ints输入列表   如何使用Gson将JSON映射转换为自定义Java列表?   java调用用@Cacheable(org.springframework.cache.annotation.Cacheable)注释的方法   java ServletContext getContextPath()