近期,由浙江大学计算机学院赵洲老师团队开源的NATSpeech非自回归语音合成框架,在GitHub发布。
开源地址
https://github.com/NATSpeech/NATSpeech
PortaSpeech: Portable and High-Quality Generative Text-to-Speech (NeurIPS 2021)
论文:
https://arxiv.org/abs/2109.15166
Demo:
https://huggingface.co/spaces/NATSpeech/PortaSpeech
DiffSinger: Singing Voice Synthesis via Shallow Diffusion Mechanism (DiffSpeech) (AAAI 2022)
论文:
https://arxiv.org/abs/2105.02446
Demo:
https://huggingface.co/spaces/NATSpeech/DiffSpeech
基于Montreal Forced Aligner的非自回归语音合成数据处理流程; 便于使用和可扩展的训练和测试框架; 简单但有效的随机访问数据集类的实现。

PortaSpeech

DiffSpeech
@article{liu2021diffsinger,
title={Diffsinger: Singing voice synthesis via shallow diffusion mechanism},
author={Liu, Jinglin and Li, Chengxi and Ren, Yi and Chen, Feiyang and Liu, Peng and Zhao, Zhou},
journal={arXiv preprint arXiv:2105.02446},
volume={2},
year={2021}
}- egs: 配置文件,被utils/commons/hparams.py读取
- data_gen: 数据二进制化代码,便于随机访问,优化IO速度
- modules: 模块和模型
- tasks: 训练和推理逻辑
- utils: 常用工具代码
- data: 数据 raw: 原始数据 processed: 预处理后的数据 binary: 二进制化后的数据
- checkpoints: 模型的checkpoints,tensorboard日志和生成的结果
把模型添加到modules。
任务类用于管理训练和推理的流程。一个新任务(例如:tasks.tts.fs.FastSpeechTask)应继承任务基类(tasks.tts.speech_base.SpeechBaseTask)。
- build_tts_model,用于创建你的模型
- run_model,用于描述训练和推理的逻辑
添加一个新的配置文件
添加一个新的yaml配置文件到egs/datasets/audio/lj/YOUR_TASK.yaml

如果使用一个新的数据集YOUR_DATASET,应该在egs/datasets/audio/YOUR_DATASET/preprocess.py中添加一个数据预处理类YOUR_DATASET_Processor,继承data_gen.tts.base_preprocess.BasePreprocessor类。该类用于读取一些数据集的元信息。
预处理和二进制化数据集
python data_gen/tts/runs/align_and_binarize.py --config egs/datasets/audio/lj/base_text2mel.yaml训练
CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config YOUR_CONFIG --exp_name YOUR_EXP_NAME --resettensorboard --logdir checkpoints/EXP_NAME推理和测试
CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config egs/datasets/audio/lj/YOUR_TASK.yaml --exp_name YOUR_EXP_NAME --reset --infer随机读取的二进制化数据集
为了缓解读取大量小文件时的IO问题(应对网络IO等情况),我们设计了一个IndexedDataset类(utils/commons/indexed_datasets.py),支持快速随机读取(random access)。
我们引入了一个全局配置机制hparams,可以从.yaml配置文件中读取并可被用于任何代码位置。
所有的checkpoints和tensorboard日志都被保存在checkpoints/EXP_NAME,其中EXP_NAME是在训练时被指定的:python tasks/run.py .... --exp_nameEXP_NAME. 你可以使用tensorboard --logdir checkpoints/EXP_NAME来打开tensorboard并查看训练、验证曲线以及一些中间生成的结果。
