根据论文:https://arxiv.org/abs/1712.05884
首先第一部分为论文主体的翻译:
摘要
这篇文章描述了一个直接从文本合成语音的神经网络架构,Tacotron-2。该系统由两部分组成,首先是把字符向量(character embeddings)映射到梅尔声谱(mel-scale spectrograms)的循环序列到序列(seq2seq)结构的特征预测网络,之后连接一个改良的WaveNet模型以扮演声码器(Vocoder)的角色,将那些梅尔声谱合成时域波形(time-domain waveforms)。我们的模型取得了平均主观意见分(mean opinion score,MOS)4.53分,与专业录制语音的MOS分相当(4.58分)。为了验证我们的设计选择,我们对系统的关键组件进行了消融研究(ablation studies),并且评估了使用梅尔声谱代替语言学、时长以及基频(F0)特征作为WaveNet条件输入所产生的影响。进而,我们展示了使用紧凑声学中间表示(compact acoustic intermediate representation)可以显著简化WaveNet架构的尺寸。
1. 介绍
尽管从文本生成自然语音(text-to-speech synthesis, TTS)的研究已经进行了几十年,其仍然是一项具有挑战的任务[1]。随着时间的过去,这一领域的主导技术不断更迭。基于单元选择的拼接合成方法(Concatenative synthesis with unit selection )在过去很多年一直代表了最高水平。该方法将预先录制好的小片段语音波形进行缝合[2, 3]。统计参数语音合成方法(statistical parametric speech synthesis)[4-7]直接生成语音特征的平滑轨迹,之后由声码器来进行合成。该方法解决了拼接方法中边界人工痕迹所引起的很多问题。然而,由这些系统生成的语音与人类语音相比,经常听上去模糊不清并且不自然。
WaveNet[8]是一种时域波形生成式模型,其所生成的语音质量开始可以与真人语音媲美,并且该模型已经应用到一些完整的语音合成系统中[9-11]。然而,WaveNet的输入,诸如语言学特征、所预测的对数基频(F0)以及音素时长,需要大量的相关领域专业知识,并且需要一个详尽的文本分析系统,此外还需要一个鲁棒的发音词典(发音指南)。
Tacotron[12]是一个从字符序列生成幅度谱的seq2seq架构[13]。其通过将仅用数据训练出的一个单一神经网络,替换语音学和声学特征生成模块,来简化传统语音合成的流水线。为了合成最终的幅度谱,Tacotron使用Griffin-Lim[14]算法进行相位估计,然后紧接一个短时傅里叶逆变换。正如作者所指出的,Griffin-Lim算法只是一个临时的方法,将来要替换成神经声码器。因为,相比于诸如WaveNet类的方法,Griffin-Lim会产生特有的人工痕迹并且语音质量较低。
在这篇文章中,我们描述了一个统一完整的神经网络语音合成方法。它将之前两种方法的最优之处联合起来:一个seq2seq的Tacotron风格的模型 [12] 用来生成梅尔声谱,之后接一个改良的WaveNet声码器 [10, 15]。通过直接在归一化的字符序列及所对应的语音波形数据上进行训练,我们的模型所合成的自然语音已经很难与真人语音区分开来。
Deep Voice 3 [11]描述了一个类似的方法,然而,不同于我们的系统,它的语音自然度还不能与人类语音相匹敌。Char2Wav [16]提出了另外一个类似的方法通过使用神经声码器来进行端到端的文本到语音的合成。但是,它使用了不同的中间特征表达(传统的声码器特征),并且它的模型架构也与我们明显不同。
2. 模型架构
我们提出的系统包括两个部件,如图1所示:(1) 一个引入注意力机制(attention)的基于循环seq2seq的特征预测网络,用于从输入的字符序列预测梅尔频谱帧;(2) 一个改良版的WaveNet,用于从所预测的梅尔频谱帧生成时域波形样本。
2.1. 中间特征表示
在这项工作中,我们使用低层次的声学表示,梅尔频谱,来衔接系统的两个部件。使用这样一种可以轻易从时域波形中计算出来的特征,可以让我们对系统的两个部件分别进行训练。梅尔频谱比波形样本更平滑,并且由于其在每一帧内都是对相位不变的,所以更容易用均方误差损失(squared error loss,MSE)进行训练。
梅尔频谱与线性频谱-即短时傅里叶变换的振幅-是相关的。从对人类听觉系统的响应测试中得到启发,梅尔频谱是对短时傅里叶变换的频率轴施加一个非线性变换,用较少的维度来表征频谱内容。使用这样一个听觉频率尺度可以提升低频信息的细节(这对于语音可懂度非常重要),同时去加重高频信息细节(高频部分通常被磨擦声和其他爆裂噪声所主导,因此通常在高保真处理中不需要对此部分进行建模)。这是由于这样的特性,从梅尔尺度得到的特征作为一种潜在表示在过去几十年广泛应用于语音识别。
尽管线性谱抛弃了相位信息(因此是有损的),像Griffin-Lim [14] 这样的算法可以对抛弃的相位信息进行估计,从而通过短时傅里叶反变换实现时域转换。梅尔谱抛弃的信息甚至更多,因此使得逆向波形合成成为挑战。然而,相比于WaveNet中使用的语言学及声学特征,梅尔谱是语音信号的更简单、更低层次的声学表征。因此,作为神经声码器,使用类似WaveNet的模型基于梅尔谱来生成语音更加直截了当。的确,我们将会展示用改良版WaveNet架构从梅尔谱生成高质量的语音。
2.2. 声谱预测网络
在Tacotron中,使用50ms帧长,12.5ms帧移,汉宁窗(Hann)函数,并通过短时傅里叶变换(shorttime Fourier transform,STFT)计算得到梅尔频谱。我们尝试使用了5ms的帧移来匹配原始WaveNet的条件输入频率,但是时间分辨率的相应增加导致了更多的发音问题。
我们使用一个跨越125Hz到7.6kHz的80个通道的梅尔filterbank将STFT幅度转换为梅尔尺度,然后进行对数动态范围压缩。在对数压缩之前,滤波器组输出幅度被修剪到最小值0.01,以便限制对数域中的动态范围。
声谱预测网络由一个编码器和一个引入注意力(attention)机制的解码器组成。编码器把字符序列转换成一个隐层表征,继而解码器接受这个隐层表征用以预测声谱。输入字符使用一个学习到的512维的字符向量来表征,然后穿过一个3层卷积,每层卷积包含512个5 x 1的卷积核,即每个卷积核横跨5个字符,后接批标准化(batch normalization)[18]和ReLU激活函数。像Tacotron中一样,卷积层会对输入字符序列的长时上下文(例如N-grams)进行建模。 最后一个卷积层的输出被传递给一个双向[19] LSTM [20]层用以生成编码特征,这个LSTM包含512个单元(每个方向256个单元)。
编码器的输出结果将被一个注意力网络(attention network)使用。编码器的每次输出,注意力网络都将编码序列归纳为一个定长上下文向量。我们使用[21]中的位置敏感的注意力机制,该机制对加性注意力机制[22]进行了扩展,使得可以使用之前解码时间步的累积注意力权重作为追加特征。这使得模型在沿着输入序列向前移动的时候保持前后一致,减少了子序列重复或者遗漏等解码处理中潜在的失败。位置特征用32个长度为31的1维卷积核卷积得出,然后把输入序列和位置特征投影到128维隐层表征后,计算出注意力概率。
解码器是一个自回归的循环神经网络,它从经过的编码输入序列预测输出声谱,一次预测一帧。上一步预测出的频谱帧首先被传入一个每层由256个隐藏ReLU单元组成的双层全连接的pre-net。我们发现作为一个信息瓶颈层(bottleneck),pre-net对于学习注意力是必要的。pre-net的输出和注意力上下文向量拼接在一起,传给一个两层堆叠的由1024个单元组成的单向LSTM。LSTM的输出再次和注意力上下文向量拼接在一起,然后经过一个线性变换投影来预测目标频谱帧。最后,所预测的目标频谱帧经过一个5层卷积的post-net来预测一个残差叠加到卷积前的频谱帧上,用以改善频谱重构的整个过程。post-net的每层由512个5 × 1卷积核和一个批标准化批处理组成,除了最后一层卷积,每层的批标准化批处理都后接一个tanh激活函数。
我们在post-net前后对均方误差进行最小化以辅助收敛,我们还实验了用混合密度网络(Mixture Density Network)[23, 24]对输出结果的分布进行对数似然损失最小化,以期待可以避免输出频谱是一个直流常量,但是结果发现这样做使得训练更困难,也没能得到更好的合成样本。
并行于频谱帧的预测,解码器LSTM的输出与注意力上下文向量拼接在一起,投影成一个标量后传递给sigmoid激活函数,来预测输出序列是否已经完成的概率。预测了这一“停止标志”,在推断时允许模型动态的决策什么时候结束频谱生成,而不是在固定时间内一直运行。具体来说,对于首个阈值超过0.5的帧数出现时,生成结束。
网络中的卷积层使用概率为0.5的dropout [25]进行正则化处理,LSTM层使用概率为0.1的zoneout [26]进行正则化处理。为了在推断时给输出结果带来些变化,概率为0.5的dropout只施加在自回归解码器的pre-net上。
与原始的Tacotron对比,我们的模型使用更简洁的构建模块,在编码器和解码器中不使用Tacotron中的CBHG堆叠结构和GRU循环层,转而使用普通的LSTM和卷积层。我们没有在解码器的输出中使用缩小因子(reduction factor),即每个解码步骤只输出一个单独的频谱帧。
2.3. WaveNet 声码器
我们使用从[8]中改良版的WaveNet架构,把梅尔频谱特征表达逆变换为时域波形样本。在原始的架构中,有30个扩大卷积层,分3个循环进行,也就是说第k(k = 0...29)层的扩张率等于2的p次方,p等于k (mod 10)。为了配合频谱12.5ms的帧移,在调节堆叠中,我们代替原来的3层而仅使用2个上采样层。
然而没有像WaveNet那样使用softmax层预测离散片段,我们借鉴了PixelCNN++ [27]和Parallel WaveNet[28],使用10元混合逻辑分布(10-component MoL)来生成频率为24kHz的16位深的语音样本。为了计算混合逻辑分布,WaveNet的堆叠输出传给ReLU激活函数,再连接一个线性投影层来为每一个混元预测参数(均值,对数刻度,混合权重)。损失函数使用标定真实数据的负对数似然函数计算而得。
3. 实验及结果
3.1. 构建训练
我们的训练过程包括,首先单独训练特征预测网络,然后基于特征预测网络的输出,来训练改良版的WaveNet。
为了训练特征预测网络,我们在单个GPU上指定batch size为64,使用标准的最大似然训练步骤(在解码器端不是传入预测结果而是传入正确的结果,这种方法也被称为teacher-forcing)。我们使用Adam优化器[29]并设定参数β1 = 0.9; β2 = 0.999; epsilon = 10e−6,学习率初始值10e-3并在50000次迭代后指数衰减到10e-5。我们同时也使用权重为10e-6的L2正则化。
之后,我们把特征预测网络输出的预测结果与标定数据对齐,使用经过对齐处理的预测结果来训练改良版的WaveNet。也就是说这些预测数据是在teacher-forcing模式下产生的:所预测的每一帧是基于编码的输入序列以及所对应的前一帧标定数据频谱。这保证了每个预测帧与目标波形样本完全对齐。
在训练过程中,我们使用Adam优化器并指定参数β1 = 0.9; β2 = 0.999; epsilon= 1e-8,学习率固定为10e-4,把batch size为128的批训练分布在32个GPU上执行并同步更新。这有助于使用最近的更新来优化平均模型权重。所以我们在更新网络参数时采用衰减率为0.9999的指数加权平均 – 这个处理用在推断中(请参照[29])。为了加速收敛,我们用127.5的缩放因子来放大目标波形,这使得混合逻辑层的初始输出更接近最终分布。
我们在内部美式英语数据集[12]上训练所有的模型,这个数据集包含24.6小时的一位专业女性播音员的语音数据。数据集中的所有文本都被拼写出来了,比如”16”被写成”sixteen”,即所有的模型都是在经过预标准化处理过的数据上训练的。
3.2. 评估
在推断阶段生成语音的时候,是没有标定数据的。所以与训练阶段的teacher-forcing做法不同,我们在解码处理中直接传入上一步的预测结果。
我们从内部数据集的测试集中随机选择100个固定的例子作为评估集。用这个评估数据集生成的语音发送给类似Amazon Mechanical Turk这样的打分服务团队,进行主观平均意见评分(MOS),每个评估数据至少有8个人打分,分值从1分到5分,打分间隔为0.5。每个模型的评估都是相互独立实施的,因此分配给评分人打分时,两个不同模型的输出结果不会被直接比较。
注意虽然评估数据集中的评估样本实例不包含在训练数据集中,但是两个数据集中仍然有一些重复的模式和相同的词语。尽管与用随机词语生成的数据集相比,这可能会导致得到一个较高的MOS得分,但是这样做我们可以很容易与标定真实数据进行比较。因为所有参与比较的系统都在同一数据集上进行训练,所以互相比较仍然是有意义的。
表1展示了我们的方法和其他方法的对比结果。为了更好的隔离使用梅尔频谱作为特征所带来的影响,我们使用类似上文介绍的方法对WaveNet架构进行了修改,并用语言学特征[8]训练WaveNet模型,并对其结果进行了比较。我们还比较了使用线性频谱和Griffin-Lim合成语音的原始Tacotron模型,以及Google内部已经投入生产系统的拼接式[30]和参数式[31]基线系统。我们发现,本次提出的系统显著优于所有其他TTS系统,其MOS结果可以与标定真实语音相媲美。
我们还对我们系统的合成结果和标定真实语音进行了细致的对比评估,评分者被要求给出一个 -3(合成结果比标定真实语音差很多)到3(合成结果比标定真实语音好很多)之间的分数。整体平均分−0.270 ± 0:155说明评分者在很小的程度上更喜欢标定真实语音,但这个程度在统计学上是显著的。细致的剖析请参考图2。评分者的点评表明偶尔的发音错误是更喜欢标定语音的主要原因。
我们在[11]中附录E的自定义的100句测试集进行了单独的评级实验,取得了4.354的MOS分。在我们系统错误模式的人工分析中,每一类错误独立计数,0个句子包含重复单词,6个包含发音错误,1个包含跳过的单词,23个主观决定包含非自然韵律,如强调错误的音节或单词,或非自然的音调。还有一个单独案例,对包含最多字符的输入句子的端点预测失败。这些结果表明,虽然我们的系统能够可靠地处理整个输入,但韵律建模仍有改进的空间。
最后,我们评估从37条新闻标题生成的样本,以测试我们的系统对域外文本的泛化能力。在这个评估中,我们的模型得到了4.148±0.124的MOS分数,而使用语言学特征训练的WaveNet得到了4.137 ± 0.128的MOS分数。这个结果指出了端到端的神经方法所面临的一个挑战:模型训练需要在覆盖目标领域的数据上进行。
3.3. 消融研究
3.3.1. 预测特征 vs. 真实标定数据
尽管我们模型的两部分组件是分别独立训练的,WaveNet组件要依赖于前一个组件的特征预测结果才能进行训练。一个可替代的方法允许与特征预测网络隔离开来训练WaveNet,就是使用从真实标定数据抽出的梅尔频谱来训练。我们在表2展示了这种方法的可能性。
正如所料,当训练和推断使用的特征类型一致时性能最好。然而,当使用真实标定数据的梅尔频谱训练而使用预测特征进行推断时,比两者互换后的得分更糟糕。这是由于所预测的频谱有过度平滑的趋势、相比于真实标定数据缺失细节——由特征预测网络优化平方误差损失的结果。当使用真实标定频谱训练,网络无需学习从过平滑的特征生成高质量的语音波形。
3.3.2. 线性频谱
为了与梅尔频谱效果做对比,我们训练特征预测网络使其预测线性频谱,这样就可以用Griffin-Lim算法对频谱进行逆变换。
正如[10]中指出的,WaveNet比Griffin-Lim算法生成的语音质量高很多。但是,使用线性频谱或者梅尔频谱却没有太大区别。这样一来,梅尔频谱由于是一个更紧凑的表达所以使用它更好。在未来的工作中,探索mel频率bin的数量与音频质量之间的平衡将是非常有趣的。
3.3.3. 后处理网络
由于所预测的未来特征帧在被解码前不能被使用,我们在解码后使用了一个卷积后处理网络把解码后的过去帧和未来帧都包含进来以改善未来帧的预测。然而,因为WaveNet已经包含了卷积层,可能会质疑当使用WaveNet作为声码器,后处理网络是否还有必要。为了回答这个问题,我们比较了使用和不使用后处理网络的结果,不使用后处理的MOS评分只得到了4.429 ± 0:071,而使用后处理的MOS评分是4.526 ± 0:066,所以从经验上看后处理网络仍然是网络设计的一个重要组成部分。
3.3.4. 简化WaveNet
WaveNet最典型的特征是它使用了扩大卷积,感受野随卷积的层数指数级增长。我们提出一个假说:由于相比语言学特征,梅尔频谱是声波的更贴切的表达,并且也获取了帧序列中的长期依赖信息,更小感受野的更浅的网络或许也可以圆满的解决问题。我们使用不同的感受野大小和卷积层数来评价WaveNet,以验证我们提出的假说。
如表4所示,我们发现,与30层卷积,256ms感受野的基线模型相比,卷积层减少到12层,感受野10.5ms时,模型仍然能生成高质量语音。这个结果确认了[9]中的观察:对于语音质量来说一个大的感受野并不是必须的。然而,我们推测正是因为选择了梅尔频谱所以才允许了这个复杂度的降低。
另一个角度看,如果我们去除所有的扩大卷积,感受野就会比基线模型小2个数量级,尽管堆栈还是同样深,但语音质量会大幅度下降。这表明模型需要足够的时间轴上下文才能生成高质量语音。
4. 总结
这篇论文对Tacotron2进行了详细描述,它是一个整合了两个组件的系统,一个是用来预测梅尔频谱的带有注意力机制的seq2seq循环网络,另一个是改良版的WaveNet声码器。该系统合成的语音在韵律上达到了Tacotron同等水平,同时语音质量达到了WaveNet水平。该系统可以通过数据直接训练,不需要依赖复杂的特征工程,达到了与人类语音的品质接近的当前最佳语音质量。
其次是相关博客的介绍:
https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html
https://google.github.io/tacotron/publications/tacotron2/index.html
从文本(文本到语音,TTS)生成非常自然的探测语音已经成为过去数十年的研究目标。在近几年中,TTS研究取得了很大的进展,TTS系统有许多独立的模块都有了很大的改进。结合在 Tacotron 和 WaveNet 等过去研究思路,我们增加了更多改进,最终实现了我们的新系统 Tacotron 2 。我们的方法不使用复杂的语言和声学特性作为输入,相反,我们仅使用语音示例和相应的文本记录进行训练的神经网络,来从文本生成类似人类的语音。
对于这一新系统的完整描述可以在我们的论文“Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions”(通过调节 WaveNet 对 Mel 谱图预测的自然 TTS 合成)中找到。简而言之,其工作原理是这样的:我们使用针对 TTS 优化的序列到序列模型来映射序列字母到编码音频的一系列功能。这些功能是一个 80 维音频频谱图,每 12.5 毫秒计算一次帧,不仅可以捕捉单词的发音,还可以捕捉人类语音的各种微妙之处,包括音量,速度和语调。最后,这些功能使用类似 WaveNet 的架构转换为 24 kHz 波形。
(图为 Tacotron 2 的详细模型架构。图像的下半部分描述了将字母序列映射到光谱图的序列到序列模型。更多技术细节请参阅相关论文。)
您可以点击这里听一些 Tacotron 2 生成的音频样本。在一个评估中,我们要求听众对生成的语音的自然度进行评分,并获得了与专业录音相媲美的评分。
虽然我们的样本听起来不错,但仍然有一些棘手的问题需要解决。例如,我们的系统在复杂的单词(例如“decorum”和“merlot”)的发音上有困难,在极端的情况下甚至会随机产生奇怪的噪音。另外,我们的系统还不能实时生成音频。而且,我们还不能控制生成的语音,比如引导它听起来高兴或悲伤。这些都是一个有趣的研究问题。