Tacotron 2 是一个端到端的语音合成神经网络结构,是Tacotron的升级版,由两部分组成,一部分负责由character映射到mel谱,另一部分是修改过的Wavenet声码器,负责将mel谱映射成音频。Tacotron2实现了和groud Truth非常接近的自然度,MOS评测得分gd 4.58, tacotron2合成的音频 4.53。
为啥说是修改过的Wavenet?
原来Wavenet的输入为语言学特征、durations、F0, 这里采用了mel谱作为Wavenet的输入,文中发现这种方法明显地降低了Wavenet的size。
1. 模型结构
由两部分组成,一部分由循环神经网络,应用Attention,自回归地产生mel谱序列,另一部分是修改后的Wavenet,将mel谱序列映射成音频。如下图所示。
1.1 中间的特征表示
本文选择了mel谱作为两个部分之间的桥梁,这使得两个部分可以分别训练。mel谱比waveform sample更smooth,更容易训练。同时mel谱是对线性谱的一个非线性的映射,按照人耳的敏感特征,在低频分辨率比较高,在高频分辨率比较低,在合成中,语音也是集中在低频,高频噪声等不需要被高保真的建模,因此选用了mel谱作为中间的桥梁。
线性谱丢失了相位信息,可以通过Griffin-Lim算法重建。mel谱丢失了更多的信息,但是相比较语言学信息、F0、durations,mel谱是更low-level的特征,对于Wavenet来说,降低了建模的难度,这是本文提高音质的关键。
1.2 预测mel谱的网络结构
首先是mel谱特征的提取:50ms帧长,12.5ms帧移,文中提到也尝试了和原本Wavenet一样的Hop 5ms,但是发音问题明显增多了。f_min=125 Hz, f_max=7.6 kHz.
由一个encoder和一个带attention的decoder组成,输入的character首先经过一个512维的embedding(由三层5*1卷积+BN+RELU组成),然后经过双向的512units的BLSTM,即得到了encoder的输出。
decoder应用了location-sensitive attention,即当计算当前时间步的attention时,会累加上个时间步的attention,使得attention的位置一直保持单调前行,缓解了decoder因为softmax形式的atten造成的重复和skip。将encoder的输出和location vector project到128维度的hidden reprensentations,然后用于计算Attention probabily 。
Decoder 根据 encoder 的输出自回归地产生 mel 谱, 每次产生一帧。之前产生的mel谱序列,通过pre-net,然后经过2层单向LSTM,并与Attention 后出来的context vector concat, 经过projection 预测mel谱 ,同时该mel还会经过post-net同样也产生mel谱,采用 MSE loss 同时计算两个mel谱的 loss 能够帮助收敛。同时LSTM与Attention 后出来的context vector concat, 经过另一个projection之后,用于预测 stop token, 当stop token的概率超过了0.5时,则认为解码mel谱的过程已经结束了,已经得到了完整的音频。LSTM的训练采用了’Zoneout’策略,为了在每次inference的时候能够产生不完全一样的音频,在inference时将decoder pre-net的drop out 开到了0.5。
1.3 修改后的Wavenet声码器
为了满足12.5ms的hop,采用了两层上采样,同时采用 a 10-component mixture of logistic distributions (MoL)准则(不太清楚是什么)训练声码器。