实施“多模式合成的持续时间知情注意力网络”(https://arxiv.org/pdf/1909.01700.pdf)纸。
状态:发布
榴莲是用于文本到语音综合任务的编码器架构。与Tacotron 2这样的先前体系结构不同,它不学习注意机制,而是考虑了音素持续时间信息。因此,当然,要使用此模型,应该已经进行了音调和持续时间一致的数据集。但是,您可以尝试在LJSpeech数据集(使用的CMU dict)上使用验证的持续时间模型。链接将在下面提供。
榴莲模型由两个模块组成:骨干合成器和持续时间预测指标。以下是文章中描述的榴莲中最明显的差异:
骨干合成器和持续时间模型均经过同时训练。为了实现简化,持续时间模型可以预测固定最大帧数的对齐。您可以通过概括框架轴或使用两个损失(尚未测试此输出),将此输出作为BCE问题,MSE问题,将其设置在config.json中。实验表明,Just-BCE版本的优化过程表明自己对更长的文本序列不稳定,因此更喜欢使用MSE+BCE或Just-MSE(不要介意您在张量板中遇到不良对准)。
您可以在demo文件夹(使用的WaveGlow vocoder)中检查合成演示式波动(在收敛之前获得很多) 。
首先,请确保您使用pip install --upgrade -r requirements.txt安装了所有软件包。使用pytorch==1.5.0测试该代码
克隆存储库: git clone https://github.com/ivanvovk/DurrIAN
要开始培训基于纸的榴莲版本运行python train.py -c configs/default.json 。您可以将基线模型指定为python train.py -c configs/baseline.json --baseline
为了确保在本地环境中一切正常,您可以通过python <test_you_want_to_run.py>在tests文件夹中运行单元测试。
使用音节持续时间与BCE持续时间损失最小化的LJSpeech数据集对此实现进行了训练。您可以通过此链接找到它。
该模型的主要缺点是持续时间对齐的数据集。您可以找到用于培训filelists文件夹当前实现的LJSpeech Filelist。为了使用数据,请确保您以与提供的LJSpeech相同的方式组织了您的filelists。但是,为了节省大脑的时间和神经元,您可以尝试使用我的模型检查点上的LJSpeech持续时间模型上预处理(未尝试)在LJSpeech持续时间模型上训练模型,而不会持续一致。但是,如果您有兴趣对齐个人数据集,请仔细遵循下一部分。
在实验中,我将LJSpeech与蒙特利尔强制对齐工具对齐。如果这里不清楚,请按照工具包的文档中的说明进行操作。首先,对齐算法有多个步骤:
正确组织数据集。 MFA要求它位于结构{tusterance_id.lab,tusterance_id.wav}的单个文件夹中。确保所有文本均为.lab格式。
下载MFA版本并通过此链接遵循安装说明。
使用MFA完成后,您需要带有音素转录的数据集字典。在这里,您有几个选择:
bin/mfa_generate_dictionary /path/to/model_g2p.zip /path/to/data dict.txt ,使用MFA预处理的模型列表中验证的G2P模型生成字典。请注意,默认的MFA安装将自动为您提供英文预验证的型号,您可能会使用它。一旦准备好数据,字典和G2P模型,现在就可以对齐了。运行命令bin/mfa_align /path/to/data dict.txt path/to/model_g2p.zip outdir 。等到完成。 outdir文件夹将包含词汇单词的列表和一个带有.TextGrid格式的特殊文件的文件夹,其中存储了WAVS对齐。
现在,我们要处理这些文本网格文件,以获取最终的filelist。在这里,您可能会发现有用的Python软件包TextGrid 。使用pip install TextGrid安装它。这里如何使用它:
import textgrid
tg = textgrid.TextGrid.fromFile('./outdir/data/text0.TextGrid')
现在tg是集两个对象:第一个对象包含对齐单词,第二个对象包含对齐的音素。您需要第二个。提取持续时间(以框架! tg间隔为几秒钟,因此可以转换),可以通过迭代获得的.TextGrid文件并以与我在filelists文件夹中提供的filelist相同的格式来准备filelist。
我找到了几个对准器的概述。也许会有所帮助。但是,据我所知,我建议您使用MFA,因为它是最准确的对准器之一。