分类
智能语音技术

[论文分享]FastSpeech: 快速鲁棒可控的语音合成

Ren, Yi, et al. “Fastspeech: Fast, robust and controllable text to speech.” Advances in Neural Information Processing Systems. 2019.

本次分享的论文是FastSpeech语音合成框架,这篇论文由微软研究院和浙大联合发表在NIPS2019上。

近年来,由于深度学习的发展,文字转语音(TTS)引起了很多关注。基于深度神经网络的系统对于TTS越来越流行,例如Tacotron,Tacotron 2,Deep Voice 3和完全端到端的ClariNet。这些模型通常首先从文本输入中自动生成梅尔频谱图,然后使用诸如Griffin-Lim,WaveNet,Parallel WaveNet或者WaveGlow的声码器从梅尔频谱图合成语音。在语音质量方面,基于神经网络的TTS优于传统的级联和统计参数方法。在当前基于神经网络的TTS系统中,梅尔频谱图是自回归生成的。

由于梅尔谱图的序列较长且具有自回归特性,因此这些系统面临以下挑战:

  • 梅尔谱图生成的推理速度慢:尽管基于CNN和Transformer的TTS可以加快基于RNN的模型的训练,但所有模型都会生成基于先前生成的梅尔频谱图的梅尔频谱图,并且在给定梅尔频谱图的情况下会遭受较慢的推理速度。梅尔频谱图序列的长度通常为数百或数千。
  • 合成语音通常不可靠:由于误差传播和自回归生成中,文本和语音之间错误的注意对齐方式,生成的梅尔频谱图通常出现缺少单词、跳过和重复的现象。
  • 合成语音缺乏可控性:以前的自回归模型会自动一个接一个地生成Mel频谱图,而没有明确利用文本和语音之间的对齐方式,以至于在自回归生成中通常很难直接控制语音速度和韵律。

考虑文本和语音之间的单调对齐,以加快梅尔谱图的生成,在该篇论文中,作者提出了一个新颖的模型FastSpeech,该模型将文本(音素)序列作为输入并非自回归地生成Mel频谱图。它采用基于Transformer和1D卷积中的自注意力的前馈网络。由于梅尔频谱图序列比其对应的音素序列长得多,为了解决两个序列匹配长度不一致的问题,FastSpeech 采用长度调节器,该长度调节器根据音素的持续时间(每个音素所对应的梅尔频谱图的数量)对音素序列进行上采样,以匹配梅尔频谱图序列的长度。调节器基于音素持续时间预测器,可预测每个音素的持续时间。论文提出的FastSpeech可以解决上述三个挑战,如下所示:

  • 通过并行的梅尔谱图生成,FastSpeech大大加快了合成过程。
  • 音素持续时间预测器可确保音素与其梅尔频谱图之间的硬对齐,这与自回归模型中的软音和自动注意力对齐非常不同。因此,FastSpeech避免了错误传播和错误注意对齐的问题,因此减少了跳过单词和重复单词的比率
  • 长度调节器可以通过延长或缩短音素持续时间来轻松确定语音速度,从而确定生成的Mel频谱图的长度,还可以通过在相邻音素之间添加间隔来控制部分韵律。

论文作者在LJSpeech数据集上进行实验以测试FastSpeech。结果表明,就语音质量而言,FastSpeech几乎与自回归Transformer模型相匹配。此外,与自回归Transformer TTS模型相比,FastSpeech在mel频谱图生成方面的速度提高了270倍,在最终语音合成方面实现了38倍的速度,几乎消除了单词跳过和重复的问题,并且可以平稳地调整语音速度。

这里我们介绍一下FastSpeech的体系结构设计:

为了并行生成目标质谱图序列,作者设计了一种新颖的前馈结构,而不是使用大多数序列采用的基于编码器-注意-解码器的体系结构来进行基于序列的自回归和非自回归。FastSpeech的整体模型架构如图所示。

3.1 前馈转换器

FastSpeech的体系结构是基于Transformer和1D卷积中的自注意力的前馈结构,此结构被称为前馈Transformer(FFT),如图a所示。前馈Transformer堆叠多个FFT块以用于音素到mel频谱图的转换,其中N个块位于音素侧,还有N个块位于mel频谱图侧,其间有一个长度调节器(将在下一个小节中进行介绍),以弥合音素和梅尔谱图序列之间的长度差距。每个FFT块均包含一个自注意和1D卷积网络,如图b所示。自注意网络由多头注意力组成,以提取交叉位置信息。与Transformer中的2层密集网络不同,这里使用具有ReLU激活函数的2层1D卷积网络。

3.2 长度调节器

长度调节器(图c)用于解决前馈Transformer中音素和频谱图序列之间的长度不匹配问题,以及控制语音速度和部分韵律。一个音素序列的长度通常小于其mel频谱图序列的长度,并且每个音素对应于几个mel频谱图。基于音素持续时间d,长度调节器将音素序列的隐藏状态扩展d倍,然后隐藏状态的总长度等于Mel声谱图的长度。

3.3 持续时间预测器

音素持续时间预测对于长度调节器很重要。如图d所示,持续时间预测器由具有ReLU激活函数的2层1D卷积网络组成,每个网络都紧跟着层归一化和drop层,以及一个额外的线性层以输出标量,这正是预测的音素持续时间。此模块堆叠在音素侧的FFT块的顶部,并与FastSpeech模型一起进行训练,以预测每个音素的Mel频谱图的长度,并具有均方误差(MSE)损失。在对数域中预测长度,将使它们变得更加高斯化,并且更易于训练。经过训练的持续时间预测变量仅用于TTS推断阶段,因为我们可以在训练中直接使用从自回归教师模型中提取的音素持续时间

论文作者在LJSpeech数据集上进行了实验,该数据集包含13,100个英语音频剪辑和相应的文本记录,音频总长度约为24小时。数据集被随机分为3组:12500个样本用于训练,300个样本用于验证,300个样本用于测试。

为了减轻发音错误的问题,作者在论文提到还使用了内部的音素到音素转换工具,将文本序列转换为音素序列,语音数据会将原始波形转换为梅尔频谱图。帧大小和跳数分别设置为1024和256。

为了评估论文提出的FastSpeech的鲁棒性,作者还特意挑选了 对于TTS系统来说特别困难的50个句子。

模型配置: FastSpeech模型

FastSpeech模型在音素端和梅尔频谱图端均包含6个FFT块。音素词汇的大小为51,包括标点符号。音素嵌入的维数,自注意的隐藏大小和FFT块中的1D卷积都设置为384。注意头的数量设置为2。2层卷积中1D卷积的内核大小网络都设置为3,第一层的输入/输出大小为384/1536,第二层的输入/输出大小为1536/384。输出线性层将384维隐藏图转换为80维梅尔频谱图。在我们的持续时间预测器中,一维卷积的内核大小设置为3,两层的输入/输出大小为384/384。

自回归Transformer TTS模型在这里有两个目的:

  1. 提取音素持续时间作为目标来训练持续时间预测器;
  2. 在序列级知识蒸馏中生成梅尔谱图(将在后面介绍)。

模型配置:

它由一个6层编码器,一个6层解码器组成,使用1D卷积网络。该教师模型的参数数量与FastSpeech模型的参数数量相似。

训练与推论

首先在4个NVIDIA V100 GPU上训练自回归Transformer TTS模型,每个GPU上批量处理16个句子。使用β1= 0.9,β2= 0.98,ε= 10-9的Adam优化器,大概需要8万步的训练才能收敛。然后再次将训练集中的文本和语音输入到模型,以获得编码器-解码器注意对齐,用于训练持续时间预测器。另外,论文中还利用序列级知识蒸馏在非自回归机器翻译中取得了良好的性能,从而将知识从教师模型转移到学生模型。对于每个源文本序列,作者使用自回归Transformer TTS模型生成mel频谱图,并将源文本和生成的mel频谱图作为配对数据进行FastSpeech模型的训练,将FastSpeech模型与持续时间预测器一起训练。 FastSpeech的优化器和其他超参数与自回归Transformer TTS模型相同。在4个NVIDIA V100 GPU上,FastSpeech模型训练大约需要进行8万步。在推理过程中,使用预先训练的WaveGlow,将FastSpeech模型的输出Mel频谱图转换为音频样本。

该结果显示了FastSpeech相对于其他模型在音频质量和推理速度上的性能优势,

以及在鲁棒性上的优势。

这里显示了FastSpeech对于音频长度控制的实现,可以清楚看到该模型对语速、停顿等音频特性的控制能力。

最后谢谢大家,如果有什么疑问欢迎提出来。

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2020/09/07/paper-share-fastspeech-tts/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

5 × 3 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待