Tacotron以及Tacotron2详解

本文详细介绍Tacotron2模型,包括梅尔谱图音频特征表示、深度神经网络如CNN和LSTM的应用、结合混合注意力机制的自回归网络解码器以及WaveNet声码器等关键组成部分。

Tacotron以及Tacotron2详解

概述

​ ​ ​ ​ Tacotron模型是首个真正意义上的端到端TTS深度神经网络模型。与传统语音合成相比,它没有复杂的语音学和声学特征模块,而是仅用<文本序列,语音声谱>配对数据集对神经网络进行训练,因此简化了很多流程。然后Tacotron使用Griffin-Lim算法对网络预测的幅度谱进行相位估计,再接一个短时傅里叶(Short-Time Fourier Transform,STFT)逆变换,实现端到端语音合成的功能。Tacotron的总体架构如下图:
在这里插入图片描述

​ ​ ​ ​ 如上图所示,Tacotron是一个带有注意力机制(Attention Mechanism)的序列到序列(Sequence-To-Sequence,Seq2Seq)生成模型,包括一个编码器模块和一个带有基于内容注意力的解码器模块,以及后处理网络。编码器负责将输入文本序列的每个字符映射到离散的One-Hot编码向量,再编码到低维连续的嵌入形式(Embedding),用于提取文本的鲁棒序列表示。解码器负责将文本嵌入(Text Embedding)解码成语音帧,在Tacotron中使用梅尔刻度声谱作为预测输出;其中基于内容的注意力模块用于学习如何对齐文本序列和语音帧,序列中的每个字符编码通常对应多个语音帧并且相邻的语音帧一般也具有相关性。后处理网络用于将该Seq2Seq模型输出的声谱转换为目标音频的波形,在Tacotron中先将预测频谱的振幅提高(谐波增强),再使用Griffin-Lim算法估计相位从而合成波形。除此之外,Tacotron独到地描述了一个称为CBHG的模块,它由一维卷积滤波器(1D-Convolution Bank)、高速公路网络(Highway Network)、双向门控递归单元(Bidirectional GRU)和循环神经网络(Recurrent Neural Network,RNN)组成,被用于从序列中提取高层次特征。

​ 在Tacotron改进版Tacotron2中,研究者去除了CBHG模块,改为使用更普遍的长短期记忆网络(Long Short-Term Memory,LSTM)和卷积层代替CBHG。并且因为Griffin-Lim算法合成的音频会携带特有的人工痕迹并且语音质量较低,在后处理网络中Tacotron2使用可训练的WaveNet声码器代替了Griffin-Lim算法。并且Tacotron2模型的语音合成性能更优(在MOS测试中达到4.526分,与真实人声接近)。Tacotron2的模型结构如下图:
在这里插入图片描述

梅尔谱图

​ ​ ​ ​ 研究Tacotron2模型结构之前,首先需要介绍模型的输入表示形式,在Tacotron2中,使用梅尔谱图(Mel Spectrogram)作为模型的声学表示。

​ ​ ​ ​ 由于声音信号是一维的时域信号,不容易从时域波形中直观地看出频率变化规律。若进行直接的时频变换,如通过快速傅里叶变换(Fast Fourier Transform,FFT)将时域波形转换到频域上,虽然能展现信号的频率分布,但与此同时也丢失了时域相关的信息,不能表示声音信号中频率分布随时间的变化情况。因此,为了解决该问题,学者提出了很多时频域分析的方法,其中最具代表性和常用的算法是STFT。STFT公式如下:
F(ω,t)=∫−∞∞f(τ)h(τ−t)e−jωτdτ F(\omega,t)=\int_{-\infty}^{\infty}f(\tau)h(\tau - t)e^{-j\omega \tau} d\tau F(ω,t)=f(τ)h(τt)ejωτdτ
其中f(t)f(t)f(t)是原时域信号,h(t)h(t)h(t)是窗函数。它假设信号在短时间内是平稳不变的,通过对长信号分帧、加窗再对每一帧做FFT,将结果沿某一维度堆叠,得到图像形式的二维信号表示。当原时域信号是音频波形时,通过STFT变换得到的就是声谱图。

​ ​ ​ ​ 然而STFT处理后的频谱是线性的,由于语音信号相邻点间的相似性会导致在模型学习文本与音频对齐时产生极大冗余。声学领域的研究表明,人耳对频率的感知呈非线性,会自动强调低频信息,弱化高频信息。在1937年,Stevens、Volkmann和Newman根据此现象提出了梅尔标度,用于刻画人的听觉感知频率。梅尔频率标度的映射关系如下:
mel(f)=2595 log10(1+f700) mel(f)=2595\, log_{10}(1 + \frac{f}{700}) mel(f)=2595log10(1+700f)
梅尔标度反映了人类的听觉系统对声音的感知特性,它与频率呈对数增长关系,相对高频部分来说人耳对低频更敏感,这与现实生活对应——语音携带的信息大部分处于低频段,高频部分通常以摩擦声、噪声为主。所以使用梅尔标度可以提升语音数据中低频信息的细节,从而增强合成语音的可理解性。同时,通过频率轴经过梅尔标度的非线性变换后,可以用相对更少的维度来表征频谱内容,这也有利于信息的压缩。而且由于梅尔谱图具有相位不变性,相比波形表示更平滑,便于用均方误差损失(Mean Squared Error,MSE)进行训练。由于这样的特性,从梅尔尺度得到的特征作为一种声学表示在过去几十年广泛应用于语音处理。

深度学习相关概念

​ ​ ​ ​ 深度学习是近些年来兴起的一类多层神经网络学习算法,相对传统训练算法具有很多优势,被广泛应用于各个领域。在Tacotron2框架中,设计者使用到诸如卷积神经网络(Convolutional Neural Network,CNN)、长短期记忆网络(LSTM)等结构,下面将对Tacotron2中使用到的这些相关概念做一个介绍和梳理。

卷积神经网络(CNN)

​ ​ ​ ​ 卷积神经网络的研究起源于生物学中对视觉系统的研究,1962年Hubel和Wiesel在研究猫脑视觉皮层时发现一种对视觉输入空间局部区域敏感的细胞,将其定义为“感受野”。感受野以某种方式覆盖整个视觉域,能够更好地获取图像中的局部空间相关性。因此,学者们将这一结构特性加以拓展,应用到神经网络中,用以提取输入层的局部特征。卷积神经网络包括输入层(Input Layer)、卷积层(Convolutional layer)、池化层(Pooling layer)、全连接层(Fully-Connected Layer)以及输出层(Output Layer)等结构。在CNN中最核心的层结构是卷积层和池化层,均被应用到Tacotron2的模型中。

在这里插入图片描述

​ ​ ​ ​ 卷积层的功能是对输入层的数据进行特征提取,在本文中即用于提取文本嵌入的隐含特征。卷积层内部包括多个卷积核,卷积核通常是一个权值矩阵,在本文中由于处理的是声音信号故卷积核是向量表示。通过卷积核与输入层局部域的卷积操作(实际上是加权求和计算)可以实现对该层的特征提取;在提取过程中一般使用多个卷积层,从前往后逐层获取更高级的特征。除此之外卷积层还有一个重要的概念是滑动步长,即在某一层中卷积核每次计算完成后向前平移的距离。在经过卷积层处理后,由于神经网络的特性,通常需要经过一个非线性激活函数(Activation Function)处理,目前CNN最常用的激活函数是ReLU函数:
fcov(x)=max(0,x) f_{cov}(\pmb{x})=max(\pmb{0},\pmb{x}) fcov(xxx)=max(000,xxx)
Tacotron2中卷积层使用的也是该激活函数。卷积层的深度、卷积核大小、滑动步长均会影响CNN提取特征的性能和训练效率,通常卷积层数量越多特征提取效果越好,但过多也会造成过拟合的现象,在设计网络时需选取适当值。

​ ​ ​ ​ 池化层的功能是降低特征的分辨率、压缩数据量,一般接在卷积层之后,用于获取具有空间不变性的特征,同时也可以防止模型的过拟合。与卷积层类似,池化层中也有多个称为池化核的结构,以及滑动步长的概念。

长短期记忆网络(LSTM)

​ ​ ​ ​ 在语音合成中,由于输入语句的某处发音通常决定于其上下文内容,因此建模时需要关注长时间跨度的序列信息。前文提到的卷积神经网络属于前向神经网络,即是单向的输入到输出映射,无法很好地获取时序相关信息。因此在建模具有时间跨度的序列特征时,通常使用的结构是RNN。RNN是一类具有循环连接结构的网络,它能够记忆之前时刻输入的信息并储存在记忆单元中,在计算时将综合处理当前时刻输入序列与之前的记忆内容再输出,完成输入序列到输出序列的建模。但一般的RNN结构,由于梯度消失问题,能捕获到的上下文内容是有范围限制的,故引入LSTM网络。

在这里插入图片描述

​ ​ ​ ​ 上图中展示了LSTM网络内部的核心构件记忆细胞单元。记忆细胞单元内部由胞状态(Cell State)、输入门(Input Gate)、输出门(Output Gate)、遗忘门(Forget Gate)这四个部件构成。其中,遗忘门控制对上一层中细胞状态的遗忘程度,由仿射变换和Sigmoid函数计算出的概率ftf_tft所决定:
ft=σ(Wf ⋅[ht−1,xt] + bf) \pmb{f}_t=\sigma(\pmb{W}_f\, \cdot [\pmb{h}_{t-1},\pmb{x}_t]\, + \, \pmb{b}_f) ffft=σ(WWWf[hhht1,xxxt]+bbbf)

其中xt\pmb{x}_txxxt代表当前时刻的输入,ht−1\pmb{h}_{t-1}hhht1代表上一时刻LSTM的输出,Wf\pmb{W}_fWWWfbf\pmb{b}_fbbbf为权重和偏置,下同。

​ ​ ​ ​ 输入门由Sigmoid和tanh两种激活函数组成,根据当前时刻输入和上一时刻输出计算得到结果it\pmb{i}_tiiitat\pmb{a}_taaat,相乘后传递给细胞状态。
it=σ(Wi ⋅[ht−1,xt] + bi)at=σ(Wa ⋅[ht−1,xt] + ba) \pmb{i}_t = \sigma(\pmb{W}_i\, \cdot [\pmb{h}_{t-1},\pmb{x}_t]\, + \, \pmb{b}_i) \\ \pmb{a}_t = \sigma(\pmb{W}_a\, \cdot [\pmb{h}_{t-1},\pmb{x}_t]\, + \, \pmb{b}_a) i

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值