Diffsinger的Pytorch实现:通过浅扩散机制(集中在diffspeech上)唱歌语音综合。


K边界预测的一个更容易的技巧K作为最大时间步长利用预先训练的辅助解码器 +训练Denoiser 数据集是指以下文档中的数据集的名称,例如LJSpeech 。
模型是指模型的类型(从“幼稚”,“ aux ”,“ shallow ”中选择)。
您可以使用
pip3 install -r requirements.txt
您必须下载预算的型号并将其放入
output/ckpt/LJSpeech_naive/ for'naive '模型。output/ckpt/LJSpeech_shallow/用于“浅”模型。请注意,“浅”模型的检查站都包含“浅”和“ AUX ”模型,这两个模型将共享所有目录,除了整个过程中的结果。对于英语单扬声器TTS,运行
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --model MODEL --restore_step RESTORE_STEP --mode single --dataset DATASET
生成的话语将放入output/result/ 。
也支持批次推理,尝试
python3 synthesize.py --source preprocessed_data/LJSpeech/val.txt --model MODEL --restore_step RESTORE_STEP --mode batch --dataset DATASET
综合preprocessed_data/LJSpeech/val.txt中的所有话语。
可以通过指定所需的音高/能量/持续时间比来控制合成话语的音高/音量/口语速率。例如,一个人可以将语言率提高20%,并将数量减少20%
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --model MODEL --restore_step RESTORE_STEP --mode single --dataset DATASET --duration_control 0.8 --energy_control 0.8
请注意,可控性起源于fastspeech2,而不是diffspeech的重要利益。
支持的数据集是
首先,运行
python3 prepare_align.py --dataset DATASET
用于一些准备工作。
对于强制对准,蒙特利尔强制对准器(MFA)用于获得发音和音素序列之间的比对。此处提供了数据集的预提取对齐。您必须在preprocessed_data/DATASET/TextGrid/中解压缩文件。或者,您可以自己运行对准器。
之后,通过
python3 preprocess.py --dataset DATASET
您可以训练三种类型的模型:“幼稚”,“辅助”和“浅”。
培训幼稚版本(“天真”):
训练幼稚版本
python3 train.py --model naive --dataset DATASET
培训辅助解码器的浅版本(“ AUX ”):
要训练浅版本,我们需要一个预训练的FastSpeech2。以下命令将使您训练包括辅助解码器在内的FastSpeech2模块。
python3 train.py --model aux --dataset DATASET
边界预测的一个更容易的技巧:
为了从我们的验证数据集中获取边界K ,您可以使用以下命令使用预训练的辅助FastSpeech2运行边界预测变量。
python3 boundary_predictor.py --restore_step RESTORE_STEP --dataset DATASET
它将在命令日志中打印出预测值(例如, K_STEP )。
然后,用预测值设置配置如下
# In the model.yaml
denoiser :
K_step : K_STEP请注意,这是基于附录B中引入的技巧。
培训浅版本(“浅”):
为了利用预训练的FastSpeech2,包括辅助解码器,必须将restore_step设置为辅助FastSpeech2培训的最后一步作为以下命令。
python3 train.py --model shallow --restore_step RESTORE_STEP --dataset DATASET
例如,如果在辅助培训期间将最后一个检查点保存在160000步骤中,则必须使用160000设置restore_step 。然后,它将加载AUX模型,然后在浅层训练机制下继续进行训练。
使用
tensorboard --logdir output/log/LJSpeech
在您的本地主机上提供张板。显示了损耗曲线,合成的MEL光谱图和音频。







27.767M ,类似于原始纸张( 27.722M )。100 ,这是幼稚扩散的完整时间段,因此在扩散步骤上没有优势。 @misc{lee2021diffsinger,
author = {Lee, Keon},
title = {DiffSinger},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/keonlee9420/DiffSinger}}
}