论文下载
ABSTRACT
这篇论文描述了Tacotron 2, 一个直接从文本合成语音的神经网络架构。系统由两部分构成,一个循环seq2seq结构的特征预测网络,把字符向量映射为梅尔声谱图,后面再接一个WaveNet模型的修订版,把梅尔声谱图合成为时域波形。我们的模型得到了4.53的平均意见得分(MOS),专业录制语音的MOS得分是4.58。为了验证模型设计,我们对系统的关键组件作了剥离实验研究,并且评估了使用梅尔频谱替代语言学、音长和F0特征作为WaveNet输入带来的不同影响。我们进一步展示了使用紧凑的声学中间表征可以显著地简化WaveNet架构
1 INTRODUCTION
从文本生成自然语音(语音合成,TTS)仍然是一项有挑战的任务。这一领域的主导技术随着时代的发展不断更迭。单元选择和拼接式合成方法,是一项把预先录制的语音波形的小片段缝合在一起的技术,过去很多年一直代表着最高水平。统计参数语音合成方法,是直接生成语音特征的平滑轨迹,然后由声码器来合成语音,这种方法解决了拼接合成方法中出现的边界人工痕迹的很多问题。然而由这些方法生成的语音与人类语音相比,经常模糊不清且不自然
WaveNet是时域波形的生成式模型,它生成的语音有机会与真人语音媲美,该模型已经应用到一些完整的语音合成系统中。然而WaveNet的输入数据(语言学特征,预测的对数基频(F0),以及音素时长)却需要大量领域内的知识才能生成,包括一个详尽的文本分析系统,还要一个健壮的语音字典(发音指南)
Tacotron是一个从字符序列生成幅度谱图的seq2seq架构,它仅用输入数据训练一个单一的神经网络,Tacotron用于替换语言学和声学特征的生成模块,从而简化了传统语音合成的流水线。为了最终合成出幅度谱图,Tacotron使用Griffin-Lim算法估计相位,然后施加一个短时傅里叶逆变换。作者们指出,相比WaveNet中使用的方法,Griffin-Lim算法会产生特有的人工痕迹并且合成的语音保真度较低,所以这只是一个临时方法,将来要替换成神经声码器
在这篇论文中,我们描绘一个统一的完整的神经网络语音合成方法,它集上述两种方法之长:一个seq2seq的Tacotron风格的模型用来生成梅尔声谱图,后接一个WaveNet声码器的修订版。该系统允许直接使用字符序列和语音波形数据进行端到端的训练学习语音合成,它合成语音的自然度更接近真人语音
Deep Voice 3描述了一个类似的方法,然而,不同于我们的系统,它的语音保真度还不能与人类语音匹敌。Char2Wav也提出了另外一个类似的方法,也使用神经声码器进行端到端的TTS学习,但它使用与我们不同的中间特征表达(传统的声码器特征),并且他们的模型架构与我们迥然不同
2 MODEL ARCHITECTURE
我们提出的系统由两部分组成,如Fig.1所示:
- 一个引入注意力机制(attention)的基于循环seq2seq的特征预测网络,用于从输入的字符序列预测梅尔频谱的帧序列
- 一个WaveNet网络的修订版,用于基于预测的梅尔频谱帧序列来学习产生时域波形样本
2.1 Intermediate Feature Representation
在这项研究中,我们使用低层次的声学表征:梅尔频率声谱图来衔接系统的两个部分。梅尔声谱图通过对时域波形进行计算很容易得到,使用这样一个表征,为我们独立训练两部分组件提供了可能。梅尔频谱比波形样本更平滑,并且由于其每一帧都是对相位不变的,所以更容易用均方误差损失(MSE)进行训练
梅尔频率声谱图与线性频率声谱图,即短时傅里叶变换的振幅是相关的。从对人类听觉系统的响应测试中得到启发,梅尔频谱是对短时傅里叶变换的频率轴施加一个非线性变换,用较少的维度对频率范围进行压缩变换得到的。这个与听觉系统类似的频率刻度方法,会强调语音的低频细节,低频细节对语音的可理解度非常关键,同时淡化高频细节,而高频部分通常被磨擦声和其他爆裂噪声所主导,因此基本上在高保真处理中不需要对高频部分进行建模。正是由于具有这样的属性,基于梅尔刻度的特征表达在过去几十年一直广泛应用于语音识别中
线性声谱图抛弃了相位信息(因此是有损的),而像Griffin-Lim这样的算法可以对抛弃的相位信息进行估计,用一个短时傅里叶逆变换就可以把线性声谱图转换成时域波形。梅尔声谱图抛弃的信息更多,因此对逆向波形合成任务提出了挑战。但是,对比WaveNet中使用的语言学和声学特征,梅尔声谱图更简单,是音频信号的更低层次的声学表征,因此使用类似WaveNet的模型构造神经声码器时,在梅尔声谱图上训练语音合成应该更直截了当。我们将会展示用WaveNet架构的修订版从梅尔声谱图生成高质量的音频
2.2 Spectrogram Prediction Network
在Tactron中,使用50毫秒帧长,12.5毫秒帧移,汉明窗截取,然后施加短时傅里叶变换(STFT)得出线性频谱。之后使用频率范围在125赫兹到7.6K赫兹之间的80通道的梅尔滤波器组对STFT的线性频率进行过滤,后接对数函数进行范围压缩,从而把STFT幅度转换到梅尔刻度上。在进行对数压缩前,滤波器组的输出振幅被稳定到最小0.01以便限制其在对数域中的动态取值范围
声谱图预测网络中,包含一个编码器和一个引入注意力(attention)机制的解码器。编码器把字符序列转换成一个隐层表征,继而解码器接受这个隐层表征用以预测声谱图。输入字符被编码成512维的字符向量,然后通过一个3层卷积,每层卷积包含512个5 x 1的卷积核,即每个卷积核横跨5个字符,后接批标准化(batch normalization)和ReLU激活函数。像Tacotron中一样,卷积层会对输入字符序列的大跨度上下文(例如N-grams)进行建模。最后一个卷积层的输出被传递给一个BiLSTM层用以生成编码特征,这个LSTM包含512个单元(每个方向256个单元)
构建一个注意力网络(attention network)用以融合编码器的输出结果,编码器的每次输出,注意力网络都将编码序列归纳为一个定长上下文向量。我们使用位置敏感的注意力机制,该机制对加法注意力机制进行了扩展,使得可以使用之前解码处理的累积注意力权重作为追加特征,因此使得模型在沿着输入序列向前移动的时候保持前后一致,减少了子序列重复或者遗漏等解码处理中潜在的失败。位置特征用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前后对均方误差进行最小化以辅助收敛,我们还实验了用混合密度网络对输出结果的分布进行对数似然损失最小化,以期待可以避免输出频谱是一个直流常量,但是结果发现这样做使得训练更困难,也没能得到更好的合成样本
并行于频谱帧的预测,解码器LSTM的输出与注意力上下文向量拼接在一起,投影成一个标量后传递给sigmoid激活函数,来预测输出序列是否已经完成,即"停止标志"。在推断时允许模型动态的决策什么时候结束频谱生成,而不是在固定时间内一直运行
网络中的卷积层使用概率为0.5的dropout进行正则化处理,LSTM层使用概率为0.1的zoneout进行正则化处理。为了在推断时给输出结果带来些变化,概率为0.5的dropout只施加在自回归解码器的Pre-Net上
与Tacotron对比,我们的模型使用更简洁的构造模块,在编码器和解码器中不使用Tacotron中的"CBHG"堆叠结构和GRU循环层,转而使用普通的LSTM和卷积层。我们没有在解码器的输出中使用"缩小因子(reduction factor)",即每个解码步骤只输出一个单独的频谱帧
2.3 WaveNet Vocoder
我们使用WaveNet架构的一个修正版,把梅尔频谱特征逆变换为时域波形样本。在WaveNet的原架构中,有30个扩大卷积层,分3个循环进行,也就是说第k(k = 0...29)层的扩张率等于2^{k (mod 10)}
然而没有像WaveNet那样使用softmax层预测离散片段,我们借鉴了PixelCNN 和最近WaveNet的改进版,使用10元混合逻辑分布(10-component MoL)来生成频率为24k赫兹的16位深的语音样本。为了计算混合逻辑分布,WaveNet的堆叠输出传给ReLU激活函数,再连接一个线性投影层来为每一个混元预测参数(均值,对数刻度,混合权重)。损失函数使用标定真实数据的负对数似然函数计算而得
3 EXPERIMENTS & RESULTS
3.1 Training Steup
我们的训练过程包括,首先单独训练特征预测网络,然后基于特征预测网络的输出,来训练修改版的WaveNet
我们在单个GPU上,使用最大似然训练规程来训练特征预测网络(在解码器端不是传入预测结果而是传入正确的结果,这种方法也被称为teacher-forcing),指定batch size为64,使用Adam优化器并设定参数beta_1=0.9,beta_2=0.999,epsilon=10^{-8},学习率初始值为10^{-3}并在50000次迭代后下降到10^{-5},使用权重为10^{-6}的L2正则化
然后我们把特征预测网络输出的预测结果与标定数据对齐,我们使用对齐处理后的预测结果,来训练修改过的WaveNet,也就是说这些预测数据是在teacher-forcing模式下产生的,所以每一个频谱帧数据恰好与一个波形样本对齐。训练过程中,使用Adam优化器并指定参数beta_1=0.9,beta_2=0.999,epsilon=10^{-8},学习率固定为10^{-4},把batch size为128的批训练分布在32颗GPU上执行并同步更新,这有助于使用最近的更新来平衡整个模型的权重。所以我们在更新网络参数时采用衰减率为0.9999的指数加权平均 – 这个处理用在推断中。为了加速收敛,我们用127.5的缩放因子来放大目标波形,这使得混合逻辑层的初始输出更接近最终分布
我们在内部美式英语数据集上训练所有的模型,这个数据集包含24.6小时的一位专业女性播音员的语音数据。数据集中的所有文本都被拼写出来了,比如”16”被写成”sixteen”,即所有的模型都是在预处理过的数据上训练的
3.2 Evaluation
在推断阶段生成语音的时候,是没有标定数据的,所以与训练阶段的teacher-forcing做法不同,我们在解码处理中直接传入上一步的预测结果
我们从测试数据集中随机选择了100个文本作为评估数据集,用这个评估数据集生成的语音发送给类似Amazon Mechanical Turk这样的打分服务团队,进行主观平均意见评分(MOS),每个评估数据至少有8个人打分,分值从1分到5分,打分间隔为0.5。每个模型的评估都是相互独立实施的,因此分配给评分人打分时,两个不同模型的输出结果不会被直接比较
注意虽然评估数据集中的评估样本实例不包含在训练数据集中,但是两个数据集中仍然有一些重复的模式和相同的词语,与用随机词语生成的数据集相比,这可能会导致得到一个较高的MOS得分。但是这样做我们可以很容易与标定真实数据进行比较。因为所有参与比较的系统都在同一数据集上进行训练,所以互相比较仍然是有意义的
表1展示了我们的方法和其他方法的对比结果。为了更好的隔离使用梅尔声谱图作为特征所带来的影响,我们使用类似上文介绍的方法对WaveNet架构进行了修改,并用语言学特征训练WaveNet模型,并对其结果进行了比较。我们还比较了使用线性声谱图和Griffin-Lim合成语音的原始Tacotron模型,以及Google内部已经投入生产系统的拼接式和参数式基线系统。我们发现,本次提出的系统显著优于所有其他TTS系统,其结果可以与标定真实语音相媲美
我们还对我们系统的合成结果和标定真实语音进行了细致的对比评估,评分者被要求给出一个 -3(合成结果比标定真实语音差很多)到3(合成结果比标定真实语音好很多)之间的分数。整体平均分−0.270 ± 0.155说明评分者在很小的程度上更喜欢标定真实语音,但这个程度在统计学上是显著的。细致的剖析请参考图2。评分者的点评表明偶尔的发音错误是更喜欢标定语音的主要原因
在附件E[11]中,我们手工分析了在这100个句子的测试数据集中,系统的出错模式。用这些句子合成的语音中,无单词重复,6次发音错误,1次跳词,23次韵律不自然,例如重音放在了错误的音节或者单词上,或者不自然的音调。最终我们的模型达到了4.354的MOS分数。这些结果表明,系统能够可靠的关注到全体输入,但在韵律建模上还有改善空间
最后,我们对使用37个新闻头条合成的语音进行了评估,以测试系统在领域外数据上的泛化能力。在这个评估中,我们的模型得到了4.148±0.124的MOS分数,而使用语言学特征训练的WaveNet得到了4.137 ± 0.128。对两个系统生成的语音进行细致的对比评估也表明二者不分伯仲 – 对我们系统的偏好在统计学上是非显著的0.142±0.338。查验评分者的点评也表明我们提出的神经系统模型生成的语音更自然,更接近人类。这个结果指出了端到端的神经方法所面临的一个挑战:模型训练需要在覆盖目标领域的数据上进行