[论文笔记] TACOTRON: TOWARDS END-TO-END SPEECH SYNTHESIS

Tacotron:端到端语音合成

摘要

一个文本到语音的合成系统通常需要经过多个步骤的处理,比如前端文本分析,声学模型,以及音频合成模块。构建这些成分往往需要额外的领域知识并且也可能因此而做出一些经不起检验的设计。本文提出的Tacotron,是一种端到端,文本到语音的生成性模型,可以直接从音素字符信息中生成对应的音频。使用<文本,语音>对,模型可以直接使用随机初始化的参数进行训练,我们使用了一些技巧来帮助seq2seq框架在某些任务中表现的更出色。Tacotron在美式英语的5级主观平均意见得分中得到了3.82分,在语音自然度上超过了现有的所有生产级参数系统。此外,由于Tacotron是帧级别的语音合成,所以在进行推断时速度会比样本级别的自回归方法大幅提高。

1 导论

现代的文本到语音合成需要设计非常复杂的流水线(Taylor, 2009)。比如,在一些基于统计学的模型中通常需要实现一个文本前端来抽取丰富的语言学特征,持续时间模型,声学特征预测模型和一个复杂的基于信号处理的声码器(Zen et al., 2009; Agiomyrgiannakis, 2015)。这些子模块不仅需要领域知识,在设计实现上也很困难。此外,由于这些子模型进行相互独立的训练,每个组件的错误可能会复合。上述TTS系统的设计复杂性导致在构建新模型的时候必须要进行大量的工程方面的努力。

因此,集成的端到端TTS系统具有许多优点,可以在具有最少人类标注要求的<text,audio>对上进行训练。 首先,这样的系统减少了繁重的特征工程的需要,这可能涉及启发式和脆弱的设计选择。 其次,它更容易对各种属性(如说话者或语言)或情绪等高级功能进行丰富的调节。 这是因为调节可以在模型的最开始发生,而不是仅发生在某些组件上。 同样,对新数据的适应也可能更容易。 最后,单个模型可能比多阶段模型更稳健,因为其中每个组件的错误可以复合成更大的错误。 这些优势意味着端到端模型可以让我们训练现实世界中发现的大量丰富,富有表现力(尽管经常嘈杂)的数据。

TTS是一个大规模的反向问题:高度压缩的信息源(文本)被“解压缩”为音频。由于相同的文本可以对应于不同的发音或说话风格,这对于端到端模型来说是特别困难的学习任务:它必须应对给定输入的信号级别的大变化。此外,与端到端语音识别(Chan等人,2016)或机器翻译(Wu等人,2016)不同,TTS输出是连续的,并且输出序列通常比输入的序列长得多。这些属性导致预测错误快速累积。在本文中,我们提出了Tacotron,一种基于序列到序列(seq2seq)的端到端生成TTS模型(Sutskever等,2014),具有注意力范式(Bahdanau等,2014)。我们的模型将字符作为输入并输出原始频谱图,使用几种技术来提高vanilla seq2seq模型的能力。给定<text,audio>对,Tacotron可以通过随机初始化从头开始完全训练。它不需要音素级对齐,因此可以轻松使用大量的带标注的声学数据进行大规模训练。通过简单的波形合成技术,Tacotron在美国英语评估集上产生3.82平均意见得分(MOS),在自然性方面优于生产参数系统

2 相关工作

WaveNet(van den Oord等,2016)是一种强大的音频生成模型。 它适用于TTS,但由于其样本级别的自回归性质,训练速度会变得很慢。 它还需要对现有TTS前端的语言特征进行调节,因此不是端到端:它只取代声码器和声学模型。 另一个最近开发的神经模型是DeepVoice(Arik等,2017),它通过相应的神经网络替换典型TTS流水线中的每个组件。 但是,每个组件都经过独立训练。将系统更改为以端到端的方式进行训练显然是更好的方式。

据我们所知,王等人。 (2016)是最早使用seq2seq注意力机制进行端到端TTS的工作。 但是,它需要预先训练的隐马尔可夫模型(HMM)对准器来帮助seq2seq模型学习对齐。 很难说seq2seq本身学到了多少对齐。 其次,作者使用一些技巧来训练模型,但是这些技巧会伤害韵律。 第三,它预测出来的是声码器参数因此还需要声码器。 此外,该模型以音素作为输入,实验结果似乎有些限制。

Char2Wav(Sotelo et al。,2017)是一个独立开发的端到端模型,可以用character进行训练。 然而,在使用SampleRNN神经声码器之前,Char2Wav仍然只预测出声码器参数(Mehri等,2016),而Tacotron直接预测原始频谱图。 此外,他们的seq2seq和SampleRNN模型需要单独预先训练,但我们的模型可以从头开始训练。 最后,我们对vanilla seq2seq范例进行了几项关键修改。 如后所示,vanilla seq2seq模型不适用于字符级输入。

3 模型结构

Tacotron的骨干是一种基于注意力的seq2seq模型(Bahdanau等,2014; Vinyals等,2015)。 图1描绘了该模型,其包括编码器,基于注意力的解码器和后处理网络。 在高级别的视角中,我们的模型将字符作为输入并生成语谱图,然后将其转换为波形。 我们将在下面逐一描述这些组件。

3.1 CBHG模块

我们首先描述一个名为CBHG的构建块,如图2所示.CBHG由一系列一维卷积滤波器组构成,紧接着连接到高速公路网(Srivastava等,2015)和一个双向门控循环单位(GRU)(Chung等,2014)循环神经网络(RNN)。 CBHG是一个功能强大的模块,用于从序列中提取表示信息。输入序列首先与K组1-D卷积滤波器进行卷积,其中第k组包含宽度为k的Ck滤波器(即k = 1; 2; :::; K)。这些过滤器显式地模拟了本地和上下文信息(类似于unigrams,bigrams,乃至K-gram的建模)。卷积层输出会被堆叠在一起,进而沿着时间轴对每一个时间步的结果进行最大池化,以增加局部不变性。请注意,我们使用的步幅为1,以保留原始时间分辨率。我们进一步将处理后的序列传递给几个固定宽度1-D卷积层,其输出通过残余连接与原始输入序列相加(He等,2016)。批量标准化(Ioffe&Szegedy,2015)用于所有卷积层。卷积输出被馈送到多层高速公路网络以提取高级特征。最后,我们在顶部堆叠双向GRU RNN以提取前向和后向文本特征。 CBHG受到机器翻译工作的启发(Lee et al。,2016),与李等人的主要区别在于(2016)使用非因果卷积,批次标准化,残余连接和步幅= 1最大池化。我们发现了这些修改改进了模型泛化能力。

3.2 编码器

编码器的目标是提取文本的高鲁棒性序列表示。 编码器的输入是字符序列,其中每个字符表示为one-hot矢量并嵌入到连续矢量中。

然后,我们对每个嵌入施加一组非线性变换,统称为“pre-net”。 我们在此工作中使用带有dropout的瓶颈层作为pre-net,这有助于收敛并提高泛化能力。 CBHG模块将pre-net输出转换为最终编码器表示以便被注意力模块使用。 我们发现这种基于CBHG的编码器不仅减少了过度拟合,而且比标准的多层RNN编码器产生更少的错误发音(参见我们的音频样本链接页面)。

3.3 解码器

我们使用基于内容的tanh注意力机制解码器(参见例如Vinyals等人(2015)),其中有状态的循环网络层在解码过程的每个时间步中产生注意力查询。我们将上下文矢量和attention RNN单元输出连接起来作为decoder RNN的输入。我们使用具有垂直残余连接的堆栈GRU(Wu等人,2016)用于解码器。我们发现残余连接加速了收敛。解码器输出目标是一个重要的创新。虽然我们可以直接预测(整段文本的)原始频谱图,但它是一种高度冗余的表示,用于学习语音信号和文本之间的对齐(这实际上是使用seq2seq执行此任务的动机)。由于这种冗余,我们将seq2seq解码目标设定为不同于原始语谱图的输出目标,之后再进行波形合成。 seq2seq目标可以是一种高度压缩的信息表示,只要它能为反演过程提供足够的可懂度和韵律信息,可以修复或训练。我们使用80波段梅尔谱图作为目标,但可以使用更少的波段或更简洁的目标,例如倒谱。我们使用后处理网络(下面讨论)将seq2seq目标转换为波形。

我们使用简单的全连接输出层来对解码器输出进行预测。 我们发现的一个重要技巧是在每个解码器步骤预测多个非重叠输出帧。 一次预测r帧将解码器步骤的总数除以r,这减小了模型大小,训练时间和推理时间。 更重要的是,我们发现这一技巧可以大幅提高收敛速度,这可以通过从注意力中学到更快(更稳定)的对齐来衡量。 这可能是因为相邻语音帧是相关的,并且每个字符通常对应于多个帧。 一次发射一帧会强制模型在多个时间步长内处理相同的输入令牌; 发射多个帧允许注意力在训练的早期向前推进。在Zen等人中也使用类似的技巧。 (2016)但主要是为了加快推理。

解码器的第一步输入被调整为全零帧,其表示<GO>帧。 在推断中,在解码器步骤t,模型得到的r个预测帧中的最后一帧会被当做第t+1步的输入重新馈送到解码器。注意,在此处馈送最后一个预测帧是特别选择 - 我们也可以使用所有r个预测帧。 在训练期间,我们总是将r个帧的ground truth馈送到解码器。 输入帧如编码器中那样传递到pre-net。 由于我们不使用预定采样等技术(Bengio et al。,2015)(我们发现它会损害音频质量),pre-net中的dropout对于模型的泛化变得至关重要,因为它能提供噪声源来解决输出分布中的多种形式。

3.4 后处理网络和波形生成

如上所述,后处理网络的任务是将seq2seq目标转换为可以用于波形合成的目标。 由于我们使用Griffin-Lim作为合成器,后处理网络学习如何预测在线性频率范围内采样的频谱幅度。 后处理网的另一个动机是它可以看到完整的解码序列。 与始终从左到右运行的seq2seq相比,它具有前向和后向信息以校正每个单独帧的预测误差。 在这项工作中,我们使用CBHG模块进行后处理网络,尽管更简单的架构也可能起作用。 后处理网络的概念非常普遍。 它可用于预测很多目标,如声码器参数,或作为类似WaveNet的神经声码器(van den Oord等,2016; Mehri等,2016; Arik等,2017)直接合成波形样本。

我们使用Griffin-Lim算法(Griffin&Lim,1984)从预测的谱图中合成波形。 我们发现,在喂入Griffin-Lim之前,将预测的幅度提高1.2,可以减少声音的人工性,这可能是由于其谐波增强效应。 我们观察到Griffin-Lim在50次迭代后收敛(事实上,大约30次迭代似乎已经足够),这相当快。 我们在TensorFlow中实现了Griffin-Lim(Abadi等,2016),因此它也是该模型的一部分。 因为Griffin-Lim是可以区分的(它没有可训练的权重),我们并没有在这项工作中为他计算损失。 我们必须强调:我们选择Griffin-Lim是为了简单起见; 虽然它已经产生了强大的结果,但我们也正在开发一种快速和高质量的可训练波谱图到波形逆变器来取代Griffin-Lim。

4 模型结果

表1列出了超参数和网络架构。 我们使用对数幅度谱图与Hann窗口,50ms帧长度,12.5ms帧移位和2048点傅立叶变换。 我们还发现预强调(0.97)是有帮助的。 我们对所有实验使用24 kHz采样率。

我们在本文中使用r = 2(输出层缩减因子)作为MOS结果,尽管较大的r值(例如r = 5)也能很好地工作。 我们使用Adam优化器(Kingma&Ba,2015),学习率衰减,从0.001开始,分别在500K,1M和2M全局步骤后减少到0.0005,0.0003和0.0001。 我们对seq2seq解码器(mel-scale谱图)和后处理网络(线性比例谱图)使用简单的l1损失。 这两个损失的权重相等。

5 实验

我们使用内部的北美英语数据集训练Tacotron,该数据集包含由专业女性发言者讲话的大约24.6小时的语音数据。 短语是文本标准化的,例如, “16”转换为“十六”。

5.1消融分析

我们进行了一些消融研究,以了解我们模型中的关键组件。 对于生成模型而言,很难比较基于客观来指标,这些指标往往与感知无关(Theis et al。,2015)。 我们主要依靠视觉比较。 我们强烈建议读者听取提供的样本。

 

首先,我们与vanilla seq2seq模型进行比较。 编码器和解码器都使用2层残留RNN,其中每层有256个GRU单元(我们尝试了LSTM并获得了类似的结果)。 没有使用pre-net或后处理网,并且解码器直接预测线性标度对数幅度谱图。 我们发现该模型需要预定的采样(采样率0.5)来学习对齐和泛化。 我们在图3中显示了学习的注意力对齐。图3(a)显示vanilla seq2seq学习对齐的结果很差。 一个问题是注意力往往在向前移动之前被许多帧卡住,这导致合成信号中的语音清晰度差。 结果,自然性和总持续时间被破坏。 相比之下,我们的模型学会了干净平滑的对齐,如图3(c)所示。

其次,我们将CBHG编码器替换为2层残余GRU编码器的模型进行比较。 模型的其余部分,包括编码器预网,保持完全相同。 比较图3(b)和3(c),我们可以看到GRU编码器的对齐噪声更大。 听合成信号,我们发现噪声对齐通常会导致错误发音。 CBHG编码器可以减少过度拟合,并且可以很好地概括为长而复杂的短语。

图4(a)和4(b)显示了使用后处理网的好处。 我们训练了没有后处理网络的模型,同时保持所有其他组件不受影响(除了没有后处理的解码器RNN会直接预测线性比例谱图)。 利用更多的上下文信息,来自后处理网的预测包含更好的分辨谐波(例如,100和400之间的高次谐波)和高频共振峰结构,这减少了合成音的不自然度。

5.2平均意见评分测试

我们进行平均意见评分测试,要求受试者评估声音的自然度(满分为5分)。 MOS测试由母语人士组成。

100个看不见的短语用于测试,每个短语收到8个评级。 在计算MOS时,我们仅使用采用耳机进行的评分。 我们将模型与基准模型(基于LSTM(Zen等,2016))和连接模型(Gonzalvo等,2016)进行比较,两者都已上线使用。 如表2所示,Tacotron的MOS值为3.82,优于基准系统。 鉴于Griffin-Lim合成引入的强基线和artifacts ,这代表了非常令人信服的结果。

6 讨论

我们提出一种整合多模块的端到端语音合成模型Tacotron,他可以把字符序列作为输入并输出相应的语谱图。通过一个简单的波形生成模块(将语谱图转换成波形),模型在美式英语合成中得到了3.82的MOS值,在语音自然度上超过了现有的所有生产级参数系统。Tacotron是帧级别的语音合成,所以在进行推断时速度会比样本级别的自回归方法大幅提高。和之前的方法不同的是,tacotron不需要人工设计的语言学特征或者复杂的模型组成(比如HMM对齐)。他可以从头开始以随机初始化的方式被训练得到。我们进行了一些简单的文本正规化处理,尽管最近的一些论文提出这个做法并不必要。

我们的模型还有很多方面可以提高,许多处理过程沿用了之前的成熟方法。比如:输出层,注意力模块,损失函数,Griffin-Lim-based 波形生成等。更详细一点:我们正在尝试使用基于神经网络的快速高效的语谱图转换方法来替换Griffin-Lim 方法。

 

实验调参建议:

  1. 训练速度:在开始的时候,人很傻,直接拿音频文件来进行训练。因为模型训练不是直接拿音频作为输入进行训练,而在之前还对音频进行了一些计算过程。因此在训练时,每次一次输入音频都要做一次计算才输入到我们的网络中。后来参考github上的一些人的建议,提前将音频处理好,输出为.npy文件。然后再在训练时将.npy文件,然后采用队列的形式,一次读入一个batch的数据传给GPU。这样训练速度相比之前拿音频进行训练提升了20%左右;
  2. 数据的预处理:在训练英文的tacotron时,会发现有一些英文的缩写,但是发音还是按照完整的单词来读的,比如:Mr,Dc等等。因此在训练之前要将一些常用的英文缩写还原成对应的单词;还有就是对于阿拉伯数字和一些符号比如”$”、”.”,我们也要将其还原成对应的单词;
  3. 静音的处理:在训练之前,需要对音频文件去除其开头与结尾部分的静音。这样做对模型训练的收敛速度有很大的提升;
  4. 输入文本中的符号的处理:tacotron模型时可以学习出标点符号的停顿和发音的,因此我们保留了几个常用的标点符号,将其与单词一样embedding我词向量输入到网络中;
  5. 使用音素进行训练:在训练完tacotron后,我还尝试了使用英文的音素进行训练,也就是将英文单词转化为英文的音素。发现训练同样的轮数,使用英文的音素训练处的模型的效果要比英文单词要好;
  6. 在训练过程中会产生梯度爆炸的现象:不知道是attention机制的弊端还是怎么地的,在训练过程中偶尔会出现梯度爆炸的现象,虽然在之后loss还是会降下来,但是这样浪费了大量的训练时间,因此在优化的时候采用clipped_gradient,这样可以有效的避免梯度爆炸或者梯度消失的现象;
  7. 对于合成较长的音频,模型效果并不是太好:这是因为我们训练集的音频长度都是在1s-10s之间。所以在对于较长的文本,末尾部分的发音可能不太好。有两种方法解决这个问题,第一种就是在数据集中添加较长的文本和音频进行训练;第二种方法你可以在测试的时候对文本进行判断,但文本长度较长时,可以按照符号进行切割,分成好几个部分进行预测,最后再拼接起来。第二种方法在拼接处可能听起来会不太自然。
  8. 最近去jd面试,他们也在使用这个模型做语音合成。对于语音合成,他们想要做实时合成。而使用的Griffin-Lim是基于CPU实现的,进行合成还没有到达实时的地步。一个想法是使用百度DeepVoice里的使用wavenet代替Griffin-Lim算法合成语音。另一个是写一个基于GPU的Griffin-Lim合成算法。

参考:https://blog.csdn.net/Left_Think/article/details/74905928 
 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值