Tacotron: Towards End-to-End Speech Synthesis

时间:2017.4
作者:yuxuan wang
单位:Google inc

abstract

 一个text-to-speech的系统包含text analysis fronted, an acoustic model and an audio synthesis module,搭建需要多方面的专业知识,而且这些模型都单独训练,误差会被累加,训练难度较大。
 我们提出一个直接从character合成speech的集成的端到端系统—tactron。给出<text, speech>对,模型可以从任何起始点开始训练,在frame-level合成语音,性能优越。

1.introduction

 端到端的合成优点在于

  1. 减轻了工程压力
  2. 可以对模型的各种特性进行调节,比如说话者、语言或者像情感这样高层的特征。而且对新数据做自适应会更简单。
  3. 单个模型比multi-stage的模型更鲁棒,且可以在带噪数据上做训练。

 text-to-speech:输出是连续的,通常输出序列是长于输入序列,而且对于同一个文本,可能会有不同的speech可以对应,这也是合成的难度所在。
输入:character
输出: raw spec
不需要phoneme-level的对齐 ,生成评分3.8的英文语音。

2.related work

 Wavenet是一个强大的声码器,在TTS的合成也有效,但是由于它sample-level的自回归特性,需要TTS fronted 的语音特性,因此只是替代了声学模型和声码器,并不能称为端到端。
 wang wenfu(中科院自动化所)首先提出全部用神经网络做seq2seq TTS with attention,但是他需要一个预训练的HMM帮助seq2seq作对齐,很难说清楚seq2seq学到多少对齐。其次,在训练时做了一些trick,对韵律有损。而且,他预测的是声码器的参数,因此还需要一个声码器;输入是phoneme,输出有一些限制。
 char2wav也是预测是声码器参数,然后接一个 需要预训练的sampleRNN声码器。
 Tactron直接预测raw spec,可以从头开始训练(trained from scratch)

3.model architecture

在这里插入图片描述
Tactron是基于seq2seq model with attention,它包括一个encoder, attention-based decoder, a post-processing net.

3.1 CBHG module

(本文首提)是提取seq representation的强大模型。
关于该模型值得注意的几点:

1.模型先使用一系列的一维卷积网络,有一系列的filter,filter_size从1到K,形成一个Conv1D Bank。这样的作用相当于使用了一系列的unigrams, bigrams直到K-grams,尽可能多的拿到输入序列从local到context的完整信息。其实这样的模型,与之前我们提到过的IDCNN(Iterated Dilated Convolutionary Nerual Network)有异曲同工之妙。而IDCNN相比较起来有更少的参数,不知道如果把CBHG的Conv1D Bank换成IDCNN是怎样的效果。

2.模型在最终的BiGRU之前加入了多层的Highway Layers,用来提取更高层次的特征。Highway Layers可以理解为加入了本来不相邻层之间的“高速公路”,可以让梯度更好地向前流动;同时又加入一个类似LSTM中门的机制,自动学习这些高速公路的开关和流量。Highway Networks和Residual Networks、Dense Networks都是想拉近深度网络中本来相隔很远的层与层之间的距离,使很深的网络也可以比较容易地学习。
卷积的输出堆叠在一起,在时间轴作max-pool,以增加局部不变性。

3.模型中还使用了Batch Normalization(继ReLU之后大家公认的DL训练技巧),Residual Connection(减少梯度的传播距离),Stride=1的Max-pooling(保证Conv的局部不变性和时间维度的粒度)以及一个时髦的BiGRU。

3.2 encoder

 encoder的作用是提取文本序列的特征 ,输入是character seq,每一个文字表示成one-hot vector,并且嵌入到连续向量中。将embedding 经过pre-net作非线性变换,pre-net中用带有drop out的bottleneck layer,可以加速收敛,增强泛化。
 CNHG的attentionion模块将pre-net的输出转成最终encoder 的表示,而且和RNN encoder相比减少了过拟合和错误发音。

3.3 decoder

 我们使用一个文本相关的基于tanh的attention decoder,在每个解码时间步,RNN提供attention query,将context vector和attention的输出拼接,作为decoder RNN的输入。
在这里插入图片描述
模型架构

  • encoder:包括pre-net做非线性变换,CBHG网络编码成向量输出;
  • attention机制:在做不同的预测时,需要关注句子序列中的位置是不一样的,通过attention对输出的向量✖️权重再求和,权重较大的位置加强 关注,权重为 0的地方不再关注,实现变长的向量;但是会引入较大的参数量,产生 巨大的计算力需求。
  • decoder:pre-net先做非线性变换,attention-RNN,RNN decoder,RNN网络对编码的向量进行解码,输出上下文语言信息相关的语音。
  • post-processing net:首先是CBHG模块将decoder的输出转成线性谱,然后用vocoder进行wav合成。
    参考:http://www.cnblogs.com/demo-deng/p/7692757.html
     decoder是RNN的垂直堆叠,残差连接会加速收敛。如果decoder直接预测raw spec,会有很大的冗余,因为学习的是text和speech signal的对齐。为了避免这个冗余,我们用80-d的mel-scale spec作为target,然后用post-processing net将seq2seq转为wav。
     用dense预测decoder的输出,训练的 trick是每次预测r帧不重叠的片段,这样就把时间t按照r切分,这样可以减小model size,加快训练时间和预测时间,加速收敛,这可能是因为相邻语音帧是相关的,而且一个字会对应多帧。如果每次只输出一帧,就会导致多个时间步的输入是一样的。一次输出多帧还会使attention在训练的早期向前推进。
     decoder的初始输出是全0帧,记作,在inference阶段,会把r帧的最后一帧作为decoder下一时间步的输入。这是一个ad-hoc choice(临时选择的方案),也可以送入r帧全部。在training阶段,送入第r帧的ground truth。输入帧像编码器那样送入prenet。我们发现scheduled sampling对语音质量有损失,而pre-net的drop out会引入噪声,解决输出分布多模态的问题。

post-processing net and speech synthesis

 post-processing的任务就是 把seq2seq输出的target转成可以转成wav的target。因为我们用的是GL vocoder,所以需要target是线性幅度谱(如stft变换的)。

5.1 ablation analysis

 我们采取消融分析去理解模型中的关键部分,和生成模型一样,很难从客观的指标去进行评价。

  1. 首先和vanilla seq2seq model比较,encoder和decoder都用了2层256个units的GRU,没有pre-net和post-processing net,解码器直接预测线性对数幅度谱,但是需要0.5的scheduled sampling让模型学习路线并概括。发现模型在几帧后会停滞不前,这导致了合成信号不好,自然度和总持续时间被破坏。参见图3(a)
  2. 然后将CBHG encoder模块用一个2层的GRU encoder代替,其他部分保持一致,会发现学习路线有噪声,听合成的语音会发现有错误的发音,说明CBHG模块减少了过拟合,可以生成长的复杂的词组。参见图3(b)
  3. 图4(a);4(b)证明了使用post-processing net的好处—模型没有post-processing net,RNN预测线性谱。post-preocessing net从网络中得到更多的文本信息,因此预测中有更多的分辨谐波和高频共振结构,减少了合成伪像。

 scheduled sampling是seq2seq的模型的训练阶段,训练阶段解码器在最大化第t个元素概率时,标准序列到序列模型使用上一时刻的真实元素yt−1作为输入。设上一时刻生成的元素为gt−1,Scheduled Sampling算法会以一定概率使用gt−1作为解码器输入。
 标准的序列到序列模型中,如果序列前面生成了错误的元素,后面的输入状态将会收到影响,而该误差会随着生成过程不断向后累积。Scheduled Sampling以一定概率将生成的元素作为解码器输入,这样即使前面生成错误,其训练目标仍然是最大化真实目标序列的概率,模型会朝着正确的方向进行训练。因此这种方式增加了模型的容错能力。

5.2 mean opinion score

3.82的MOS评分

猜你喜欢

转载自blog.csdn.net/qq_40168949/article/details/87869240
今日推荐