图1展示了Tacotron 2系统架构的框图。该系统包含两个主要部分:特征预测网络和WaveNet vocoder。以下是架构的详细说明:
特征预测网络
- 输入文本:系统从输入文本开始,经过一系列处理生成语音特征。
- 字符嵌入层:输入的字符首先被嵌入到一个512维的向量空间中。
- 卷积层:字符嵌入通过3个卷积层,每个卷积层有512个滤波器,滤波器大小为5×1。卷积层后接批归一化和ReLU激活函数。
- 双向LSTM层:卷积层的输出被传递给一个包含512个单元(每个方向256个)的双向LSTM层,以生成编码特征。
- 位置敏感注意力机制:编码特征被传递给注意力网络,使用位置敏感注意力机制,结合前几个时间步长的累积注意力权重来计算每个解码步长的上下文向量。
- 2层前置网络(Pre-Net):解码器输入的预测mel谱图首先通过一个包含2个256维全连接层的前置网络。
- 2层LSTM层:前置网络的输出和注意力上下文向量被连接并传递给2个1024单元的单向LSTM层。
- 线性投影:LSTM层的输出经过线性变换生成目标mel谱图的预测。
- 5层卷积后处理网络(Post-Net):预测的mel谱图通过一个包含5个卷积层的后处理网络,每层有512个滤波器,形状为5×1,并接批归一化和tanh激活函数(最后一层除外)。后处理网络预测一个残差,加到预测的mel谱图上以改善整体重建质量。
- 停止标记:并行于频谱预测,解码器LSTM的输出和注意力上下文的连接结果经过线性变换并通过sigmoid激活,预测输出序列是否结束。
WaveNet vocoder
- mel谱图:通过特征预测网络生成的mel谱图作为WaveNet的条件输入。
- WaveNet架构:使用30层膨胀卷积(dilated convolution),分为3个膨胀循环,每层的膨胀率依次为(2^k \mod 10)。为了与mel谱图的12.5 ms帧跳匹配,仅使用2层上采样层。
- 10成分逻辑分布混合(MoL):WaveNet的输出通过ReLU激活函数后再经过线性变换,预测每个混合成分的参数(均值、对数尺度、混合权重)。
- 波形样本:生成的16位样本以24 kHz的速率输出,生成最终的波形样本。
该架构将mel谱图作为中间特征表示,通过改进后的WaveNet生成高质量的语音波形,实现了Tacotron级别的韵律和WaveNet级别的音质。
如果您需要进一步的技术细节或具体代码实现,请告诉我。
您提供的论文题为 “NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS”,主要研究通过将WaveNet在mel频谱预测上进行条件化来实现自然的TTS合成。该系统由两个主要组件组成:
- 序列到序列特征预测网络:将字符嵌入映射到mel频谱。
- 修改后的WaveNet模型:作为vocoder使用mel频谱生成时域波形。
主要内容概述
1. 简介
传统的TTS技术,如拼接合成和统计参数合成,通常生成的语音质量不及人类语音。WaveNet能够生成高质量的时域波形,但需要复杂的特征工程。Tacotron通过序列到序列网络简化了这一过程,但使用Griffin-Lim算法生成波形,质量较低。
2. 模型架构
论文提出的系统包含两个组件:
- 中间特征表示:使用mel频谱作为中间特征表示,比传统的语言学和声学特征更简单,且适合用WaveNet生成高质量的语音。
- 频谱预测网络:通过短时傅里叶变换(STFT)计算mel频谱,并使用包含卷积层和双向LSTM的编码器生成隐藏特征表示。解码器则通过带有注意力机制的自回归RNN逐帧预测mel频谱。
- WaveNet vocoder:修改后的WaveNet使用10成分逻辑分布混合(MoL)生成24 kHz的16位样本,通过对mel频谱特征进行反演生成时域波形。
3. 实验与结果
实验表明,使用mel频谱作为特征输入,结合修改后的WaveNet模型,可以生成接近真实人类语音质量的合成语音。不同系统的MOS评分如下:
- 基于参数的系统:3.492
- Tacotron(Griffin-Lim):4.001
- 拼接系统:4.166
- 基于语言学特征的WaveNet:4.341
- 实际语音:4.582
- 本论文提出的Tacotron 2:4.526
4. 结论
该系统结合了Tacotron的韵律和WaveNet的音质,直接从数据中训练,不依赖复杂的特征工程,生成的语音质量接近自然人类语音。
详细技术分析
您可以从论文中详细了解以下方面的内容:
- 模型细节:包括编码器和解码器的具体层结构,注意力机制的实现,以及WaveNet的修改部分。
- 实验设置:训练过程、优化器选择及超参数设置。
- 评价方法:包括MOS评分、误差分析及对比实验结果。
如果您需要进一步的具体分析或代码示例,请告知具体部分,我可以提供更详细的解析和实现指导。