Tacotron1: TOWARDS END-TO-END SPEECH SYNTHESIS知识点说明
Tacotron1: TOWARDS END-TO-END SPEECH SYNTHESIS
文章于2017年4月发表
整体过程:
- Encoder: 输入Character, character embeddings;
- Pre-net, 一个带**函数的DNN网络,其主要功能是对输入进行一系列的非线性的变换,进一步扩大输入空间;
- CBHG;conv bank + residual connection:筛选出关键的上下文信息,同时保留原始信息; 四层Highway net和双向GRU: 提取高层隐藏特征,进一步获得上下文信息;
- Decoder: 经过Pre-net预处理, 防止Decoder的过拟合,attention_decoder解码;注意力模块将 Attentional Layers 的隐状态 与 编码器模块输出的每个元素进行打分运算,归 一化后的得分可视为每个元素被解码器当前步选择的概率表征了输入序列和输出序列的对齐关系;最后使用归一化得分对所有元素线性求和即可得到上下文向量。
- 两层带残差的GRU,获得mel谱, 其特殊的地方在于它将Pre-net的输出和Attention的输出拼接起来作为输入,经过GRU后输出到Decoder RNN中;
- Postnet: CBHG模块,获得幅度谱,输出更平滑、高频细节还原更清晰。
- Vocoder: Griffin-Lim算法
细节: 将所有输入序列pad到最大长度,然后使用loss mask来训练序列模型,该mask会遮盖零填充帧上的损失。 但是,以这种方式训练的模型不知道何时停止输出,从而最终产生重复的声音。 解决这个问题的一个简单技巧就是重建零填充帧。
decoder输出后的mel_loss和postnet输出后的linear_loss都采用l1_loss,且两者权重相同。