Yi Ren、Yangjun Ruan、Xu Tan、Tao Qin、Sheng Zhao、Zhou Zhao、Tie-Yan Liu作者胡曦月 张倩编译

将文本转语音速度提高38倍,这个FastSpeech真的很fast

基于神经网络的端到端文本语音转换(TTS)显著改善了合成语音的质量,但存在推理速度慢、合成语音不稳健等问题。在本文中,来自浙大和微软的研究者提出了一种基于 Transformer 的新型前馈网络,用于为 TTS 并行生成梅尔频谱。在 LJSpeech 数据集上的实验表明,本文的并行模型在语音质量方面达到了自回归模型的水平,而且与自回归 Transformer TTS 相比,本文的模型可以将梅尔频谱生成速度提高 270 倍,将端到端语音合成速度提高 38 倍。

基于神经网络的端到端文本语音转换(TTS)显著改善了合成语音的质量。一些主要方法(如 Tacotron 2)通常首先从文本生成梅尔频谱(mel-spectrogram),然后使用诸如 WaveNet 的声码器从梅尔频谱合成语音。

与基于连接和统计参数的传统方法相比,基于神经网络的端到端模型有一些不足之处,包括推理速度较慢,合成语音不稳健(即某些词被跳过或重复),且缺乏可控性(语音速度或韵律控制)。

本文提出了一种基于 Transformer 的新型前馈网络,用于为 TTS 并行生成梅尔频谱。具体来说就是,从基于编码器-解码器的教师模型中提取注意力对齐(attention alignments),用于做音素(phoneme)持续时间预测。长度调节器利用这一预测来扩展源音素序列,以匹配目标梅尔频谱序列的长度,从而并行生成梅尔频谱。

在 LJSpeech 数据集上的实验表明,本文的并行模型在语音质量方面达到了自回归模型的水平,基本上消除了复杂情况下的单词跳过和重复的问题,并且可以平滑地调整语音速度。最重要的是,与自回归 Transformer TTS 相比,本文的模型可以将梅尔频谱生成速度提高 270 倍,因此,研究者将该模型命名为 FastSpeech 模型。代码将在论文发表后发布于 GitHub 上。

基于神经网络的端到端 TTS 模型存在哪些问题?

当前基于神经网络的 TTS 系统中,梅尔频谱是自回归地生成的。由于梅尔频谱的长序列和自回归性质,这些系统面临着如下挑战:

  1. 产生梅尔频谱的推理速度慢。虽然 CNN 和基于 Transformer 的 TTS 可以加速对 RNN 模型的训练,但所有模型都以先前生成的梅尔频谱为条件来生成新的梅尔频谱,并且由于梅尔频谱序列长度成百上千,推理速度会因此变慢。

  2. 合成语音不稳健。由于自回归生成时的误差传播以及文本和语音之间错误的注意力对齐,所生成的梅尔频谱往往存在单词跳过和重复的问题。

  3. 合成语音缺乏可控性。以前的自回归模型会自动逐个生成梅尔频谱,而不会明确地利用文本和语音之间的对齐。因此,通常很难直接控制自回归生成中的语音速度和韵律。

本文解决方案

考虑到文本和语音之间的单调对齐,为了加速生成梅尔频谱,本文提出的新模型 FastSpeech 采用基于 Transformer 和一维卷积中自注意力机制的前馈网络,以文本(音素)序列作为输入,生成非自回归的梅尔频谱。

图 1:FastSpeech 的整体架构。a. 前馈 Transformer。b. 前馈 Transformer 模块。c. 长度调节器。d. 持续时间预测器。MSE 损失表示仅存在于训练过程中的预测和提取持续时间之间的损失。

本文提出的 FastSpeech 可以解决上述三个挑战:

  • 通过并行生成梅尔频谱,FastSpeech 大大加快了合成过程。

  • 自回归模型中的自动注意力软对齐非常不同的是,音素持续时间预测器确保音素与其梅尔频谱之间的硬对齐,从而可以使 FastSpeech 避免错误传播和错误注意对齐的问题,减少单词跳过和重复单词的比例。

  • 长度调节器可以通过延长或缩短音素持续时间来轻松调节语音速度,以确定生成的梅尔频谱的长度,此外还可以通过在相邻音素之间添加间隔来控制部分韵律。

FastSpeech 模型在 LJSpeech 数据集上进行的实验结果表明,在语音质量方面,FastSpeech 几乎达到了自回归 Transformer 模型的水平。此外,与自回归 Transformer TTS 模型相比,FastSpeech 在梅尔频谱生成时速度提高 270 倍,在最终语音合成时速度提高 38 倍,几乎消除了单词跳过和重复的问题,并且可以平滑地调整语音速度。

前馈 Transformer

如图 1a 所示,FastSpeech 的架构是基于 Transformer 和一维卷积中自注意力机制的前馈结构,称之为为前馈 Transformer(FFT)。前馈 Transformer 将多个 FFT 块堆叠以进行音素到梅尔频谱的变换,其中音素侧有 N 个块,梅尔频谱侧有 N 个块,长度调节器(将在下一小节中介绍)介于两者之间,用于弥合音素和梅尔频谱序列之间的长度差距。如图 1b 所示,每个 FFT 块由一个自注意力结构和一个一维卷积网络组成。自注意力网络由多头注意力提取交叉位置信息。与 Transformer 中的 2 层密集网络不同,由于在语音任务中的字符/音素和梅尔频谱序列中,相邻的隐藏状态更紧密相关,因此本文使用具有 ReLU 激活函数的 2 层一维卷积网络。文章在实验部分评估了一维卷积网络的有效性。在 Transformer 之后,分别在自注意力网络和一维卷积网络之后添加了残差连接、层归一化和 dropout。

长度调节器

长度调节器(图 1c)用于解决前馈 Transformer 中音素和频谱图序列之间长度不匹配的问题,此外还可以用于控制语音速度和韵律。音素序列长度通常小于其梅尔频谱序列的长度,并且每个音素对应于多个梅尔频谱。本文将对应于某音素的梅尔频谱长度称为音素持续时间(论文将在下一小节中描述如何预测音素持续时间)。基于音素持续时间 d,长度调节器将音素序列的隐藏状态扩展 d 倍,从而使得隐藏状态的总长度等于梅尔频谱的长度。将音素序列的隐藏状态表示为 Hpho = [h_1,h_2,...,h_n],其中 n 是序列的长度。将音素持续时间序列表示为 D = [d_1,d_2,...,d_n],其中 ,m 是梅尔频谱序列的长度。从而可以将长度调节器 LR 表示为

其中,α 是一个用于确定扩展序列 Hmel 长度的超参数,从而控制语音速度。

持续时间预测器

音素持续时间预测对于长度调节器很重要。如图 1d 所示,持续时间预测器由具有 ReLU 激活函数的 2 层一维卷积网络组成,每个网络后都加上层归一化、dropout,以及用于输出标量的额外线性层,该标量正是预测的音素持续时间。请注意,此模块堆叠在音素侧的 FFT 块之上,并使用均方误差损失(MSE)与 FastSpeech 模型共同训练,以预测每个音素的梅尔频谱的长度。研究者在对数域中预测长度,使其更加符合高斯分布,并且更容易训练。请注意,训练好的持续时间预测器仅用于 TTS 推理阶段,因为我们可以直接使用从训练中的自回归教师模型中提取的音素持续时间(参见下面的讨论)。如图 1d 所示,为了训练持续时间预测器,本文从自回归教师 TTS 模型中提取真实音素持续时间。

实验设置

训练和推理

研究者首先在 4 个 NVIDIA V100 GPU 上训练自回归 Transformer TTS 模型,其中每个 GPU 上运行一个 batch,每个 batch 包含 16 个句子。本文使用 Adam 优化,其中β_1= 0.9,β_2= 0.98,ε= 10^(-9),学习率与[22]相同。训练至收敛需要 80k 步。然后再次将训练集中的文本-语音对输入模型以获得用于训练持续时间预测器的编码器 - 解码器注意力对齐。此外,本文还利用 5 个序列级知识精馏,在将知识从教师模型转移到学生模型的非自回归机器翻译中取得了良好的表现。对于每个源文本序列,本文使用自回归 Transformer TTS 模型生成梅尔频谱,并将源文本和生成的梅尔频谱作为 FastSpeech 模型训练的成对训练数据。

本文将 FastSpeech 模型与持续时间预测器一起训练,其优化器选择和其他超参数与自回归 Transformer TTS 模型相同。为了加快训练过程并提高性能,研究者从自回归 Transformer TTS 模型初始化了部分权重:1)初始化自回归 Transformer TTS 模型的音素嵌入; 2)由于共享相同的架构,研究者使用自回归 Transformer TTS 模型的编码器在音素侧初始化 FFT 块。在 4 个 NVIDIA V100 GPU 上训练 FastSpeech 模型大约需要 80k 步。在推理过程中,使用预训练的 WaveGlow 将 FastSpeech 模型的输出梅尔频谱转换为音频样本。

图 2:FastSpeech 和 Transformer TTS 的推理时间(秒)与梅尔频谱长度对比。

图 3:分别为 1.5x、1.0x 和 0.5x 倍速的语音梅尔频谱。输入文本是「For a while the preacher addresses himself to the congregation at large, who listen attentively」。

图 4:在单词之间添加中断之前和之后的梅尔频谱。对应的文本是「that he appeared to feel deeply the force of the reverend gentleman』s observations, especially when the chaplain spoke of」。在「deeply」和「especially」之后添加了中断以改善韵律。图 4b 中的红色框对应于添加的中断。

表 3:FastSpeech 和 Transformer TTS 在 50 个特别难的句子上的稳健性比较。每种单词错误在一个句子中最多计算一次。

论文链接:https://arxiv.org/pdf/1905.09263.pdf

理论端到端模型TTS浙江大学微软
3
相关数据
微软机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

高斯分布技术

正态分布是一个非常常见的连续概率分布。由于中心极限定理(Central Limit Theorem)的广泛应用,正态分布在统计学上非常重要。中心极限定理表明,由一组独立同分布,并且具有有限的数学期望和方差的随机变量X1,X2,X3,...Xn构成的平均随机变量Y近似的服从正态分布当n趋近于无穷。另外众多物理计量是由许多独立随机过程的和构成,因而往往也具有正态分布。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

语音合成技术

语音合成,又称文语转换(Text to Speech)技术,是将人类语音用人工的方式所产生,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工嘴巴。它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是信息处理领域的一项前沿技术,解决的主要问题就是如何将文字信息转化为可听的声音信息,也即让机器像人一样开口说话。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

自回归模型技术

自回归模型,是统计上一种处理时间序列的方法,自回归模型被广泛运用在经济学、资讯学、自然现象的预测上。

层归一化技术

深度神经网络的训练是具有高度的计算复杂性的。减少训练的时间成本的一种方法是对神经元的输入进行规范化处理进而加快网络的收敛速度。层规范化是在训练时和测试时对数据同时进行处理,通过对输入同一层的数据进行汇总,计算平均值和方差,来对每一层的输入数据做规范化处理。层规范化是基于批规范化进行优化得到的。相比较而言,批规范化是对一个神经元输入的数据以mini-batch为单位来进行汇总,计算平均值和方法,再用这个数据对每个训练样例的输入进行规整。层规范化在面对RNN等问题的时候效果更加优越,也不会受到mini-batch选值的影响。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~