【论文翻译】使用少量样本的神经语音克隆

这篇论文在神经网络 采用编码-解码RNN 做端到端的机器翻译的基础上,使得模型可以在预测下一个词的时候,自动地选择原句子相关的部分作为解码的输入,这也是后来被提为attention机制的内容。

原论文链接: Neural Machine Translation by Jointly Learning to Align and Translate

最近开始研究端到端语音合成,由于Attention机制在端到端的语音合成以及识别中的广泛应用,找到了这篇最早提出Attention概念的机器翻译论文。相关的论文原本准备自己翻译,看到网上已经有翻译的比较好的版本,
故转载于此,仅作重新排版和细节修改。 翻译原地址:https://my.oschina.net/stephenyng/blog/1631754

摘要

  语音克隆是个性化语音接口的一项备受期待的能力。基于神经网络的语音合成已经显示能为大量说话人生成高质量的语音。在本文中,我们介绍了一个神经语音克隆系统,将少量音频样本作为输入。我们研究了两种方法:说话人自适应和说话人嵌入。说话人自适应基于在一个多说话人生成模型上,使用少量克隆样本进行微调。说话人嵌入基于训练一个单独的模型以直接由克隆音频推断新的说话人,这在一个多说话人生成模型中被使用。就语音的自然度及其与原始说话人的相似度而言,即使只有非常少的克隆音频,这两种方法都可以实现良好的性能(克隆音频样本位于https://audiodemos.github.io)。尽管说话人自适应可以实现更好的自然度和相似度,说话人嵌入方法的克隆时间或所需存储明显更少,使其有利于低资源部署。
  

1. 介绍

  基于深度学习的生成模型已成功应用于许多领域,如图像合成(van den Oord et al., 2016; Karras et al., 2017),音频合成(Wang et al., 2017; Engel et al., 2017; Arik et al.,
2017a),和语言建模(Jozefowicz et al., 2016; Merity et al., 2017)。深度神经网络能够对复杂的数据分布进行建模,并且可以很好地扩展大型训练数据。它们可以进一步以外部输入为条件来控制高级行为,例如指示生成样本的内容和风格。

  对于语音合成,生成模型可以用文本(Wang et al., 2017)和说话人身份来训练(Arik et al., 2017b; Ping et al., 2017)。虽然文本携带语言信息并控制所生成语音的内容,但是说话人表征捕获说话人的特征,例如音调范围,语速和重音。一种多说话人语音合成的方法是用三元组(文本,音频,说话人身份)联合训练生成模型和说话人嵌入(Arik et al., 2017b; Ping et al., 2017)。所有说话人的嵌入都是随机初始化,并以生成性损失来训练的。该想法是以低维嵌入对说话人相关信息进行编码,同时对于所有说话人共享大多数模型参数。这种模型的一个限制是它只能为训练中观察到的说话人生成语音。一个更有趣的任务是少量语音样本中学习未知说话人的声音,这也被称为语音克隆。语音克隆可用于许多支持语音的应用程序,以提供个性化的用户体验。

  在这项工作中,我们专注于未知说话人的有限语音样本的语音克隆,这也可以在语音的小样本生成建模的背景下考虑。对于大量样本,可以从头开始为任意目标说话人训练生成模型。然而,除了具有吸引力外,小样本生成建模还具有挑战性。生成模型需要从少量音频样本提供的有限信息中学习说话人特征,并泛化至未知文本。我们利用最近提出的端到端神经语音合成方法(Wang et al., 2017; Ping et al., 2017)探索语音克隆方法,该合成方法应用了带注意力机制的序列到序列建模。在神经语音合成中,编码器将文本转换为隐藏表征,并且解码器以自回归方式估计语音的时频表征。与传统的单元选择语音合成(Sagisaka et al., 1992)和统计参数语音合成(Zen et al., 2009)相比,神经语音合成具有更简单的流水线并产生更自然的语音(Shen et al., 2017b)。

  端到端多说话人语音合成模型通常通过生成模型的权重和说话人嵌入查找表来参数化,其中后者应带有说话人特性。这项工作中,我们研究了两个问题。首先,说话人嵌入能够在多大程度上捕捉说话人之间的差异?然后,仅仅由未知说话人的少量样本,说话人嵌入能学习地多好?我们比较了两种语音克隆方法:(i)说话人自适应和(ii)说话人嵌入,在语音自然度,说话人相似度,克隆/推断时间和模型足迹方面。

2. 语音克隆

  我们考虑一个多说话人生成模型f(ti,j,si;W,esi) ,其中文本ti,j ,说话人身份si 。模型中的可训练参数由W 参数化,esi 表示为关于si 的可训练说话人嵌入。Wesi 都由最小化损失函数L 来优化,损失函数惩罚生成和真实标定音频之间的差异(例如,谱图的回归损失):(1)minW,eEsiS,(ti,j,ai,j)Tsi(L(f(ti,j,si;W,esi),ai,j)) 其中,S 是说话人集合,Tsi 是说话人si 的文本-音频对训练集,ai,j 是说话人si 的文本ti,j 对应地真实标定音频。通过所有训练发言人的文本音频对来估计期望。在实践中,损失函数的E 算子通过minibatch来近似。我们使用W^e^ 来表示训练参数和嵌入。

  说话人嵌入已经显示能有效地捕获多说话人语音合成中的说话人差异。它们是说话人特征的低维连续表征(Arik et al., 2017b; Ping et al., 2017)。尽管使用纯粹的生成性损失进行训练,但在嵌入空间中确实可以观察到判别式属性(例如,性别或口音)。

  语音克隆的目的是从一组克隆音频Ask 中提取未知说话人sk 的说话人特征,以便为该说话人生成基于给定文本的不同音频。生成音频的两个性能指标是(i)音频的自然度,以及(ii)它是否听起来是由同一个说话人发音的。

  神经语音克隆的两种方法总结在图1中,并在以下部分中进行了解释。

2.1 说话人自适应

  说话人自适应的想法是通过应用梯度下降,使用少量音频和相应的文本,来为未知说话人微调训练的多说话人模型。微调可用于说话人嵌入(Taigman et al., 2017)或者整个模型。对于仅作用于嵌入的自适应,我们有以下目标:(2)mineskE(tk,j,ak,j)Tsk(L(f(tk,j,sk;W^,esk),ak,j))

  在编码器-解码器框架中,编码器读入输入句子,它是一个向量序列x = (x1, … , xTx ),将其转换成一个向量c【尽管大多数之前的工作(例如:Cho et al., 2014a; Sutskever et al., 2014; Kalchbrenner and Blunsom, 2013)都把一个变长输入句子编码成一个定长向量,其实并不是必须的,甚至如果编码成变长向量会更好,我们会稍后展示】。实现这一任务的最普通的方法是使用RNN,使得:

(1)ht=f(xt,ht1)
并且:
c=q({h1,...,hTx})

其中,ht 属于n维实数空间,是t时刻的隐藏状态,c是由所有隐藏状态生成的向量,f和q是非线性函数。例如,Sutskever et al. (2014) 使用一个LSTM作为f,并令q({h1,...,hT})=hT

  解码器被训练用来在给定上下文向量c和所有之前的已预测词{y1,,yt1} 的情况下,预测下一个单词yt ,换句话说,解码器通过把联合概率分解成一系列条件概率,定义了翻译结果y的概率p:

(2)p(y)=t=1Tp(yt | {y1,...,yt1},c)

其中y=(y1,,yTy) 。在RNN中每个条件概率被建模为:

(3)p(yt | {y1,...,yt1},c)=g(yt1,st,c)

其中g是一个多层非线性函数,用以输出yt 的条件概率;st 是RNN的隐藏状态。请注意解码器也可以使用如RNN和反卷积神经网络的混合体(Kalchbrenner and Blunsom, 2013)等其他架构。

3. 学习对齐和翻译

  在这一部分,我们提出一个全新的神经机器翻译架构。这个新架构包含一个双向RNN作为编码器(参照3.2),和一个在翻译过程中对源句子进行仿真搜索的解码器(参照3.1)。

3.1 解码器: 概要描述

  在新模型架构中,我们定义公式(2)中的条件概率为:

(4)p(yi | y1,...,yi1,x)=g(yi1,si,ci)

其中si 是i时刻RNN的隐藏状态,其计算公式为:

si=f(si1,yi1,ci)

请注意既存的编码器-解码器方法(公式(2))中,每个单词使用的概率条件是相同的上下文向量c,而这里使用的概率条件是特定于每个目标单词yi 的不同的上下文向量ci

  上下文向量ci 依赖于由编码器从输入句子中映射过来的标注序列(h1,...,hTx) ,其中的每一个标注hi 都包含了输入句子的整体信息,并对输入句子中的第i个单词的附近部分给予了强烈关注。我们在3.2节详细解释如何计算这些标注。

  然后对标注hi 进行加权求和得到上下文向量ci

(5)ci=j=1Txαijhj

标注hj 的对应权重αij 的计算方法:

(6)αij=exp(eij)k=1Txexp(eik)

其中:

eij=a(si1,hj)

是一个对齐模型,它评价了输入句子的第j个单词附近的信息,在多大程度上与翻译输出的第i个单词相匹配。对齐模型的评价得分依赖于RNN隐藏状态si1 (恰在输出yi 之前的状态,参考公式(4))和输入句子的第j个标注hj

  我们将对齐模型a 参数化为一个前馈神经网络,它同系统的其他组件一起进行联合训练。注意不像传统机器翻译那样作为一个隐变量,这里的对齐模型直接计算一个软对齐,这使得损失函数的梯度可以向后传播,因此对齐模型可以同整个翻译模型一起进行联合训练。

  对所有标注加权求和的操作,我们可以理解成计算一个期望标注,这里的期望是指对齐的概率在标注序列上的分布。设αij 是目标单词yi 和源单词xj 的对齐或翻译概率,那么第i个上下文向量ci 就是给定所有标注和他们各自对应概率αij 情况下的期望标注。(译者注:ci 的意义就是统计了第i个目标单词与原始序列中的每个词,以及每个词附近的信息,如何发生关系,在多大程度上有关系,这就是第i个目标单词在原始序列中的上下文,恰好诠释了上下文这个概念。)

  概率αij ,或者其关联的能量eij ,反映了在给定前一个隐藏状态si1 的情况下,在决策下一个隐藏状态si 和生成下一个目标单词yi 的时候,标注hj 有多重要。直觉上,这是在解码器中实现了一个注意力机制,解码器可以决定应该关注源句子中的哪些部分。传统的编码器不得不将源句子的所有信息编码到定长向量中,我们通过让解码器拥有注意力机制,把编码器从这种负担中解脱了出来。这个新方法使得信息散布在标注序列中,在后续处理中解码器可以从标注序列中选择性的获取信息。

3.2 编码器:双向RNN生成标注序列

  公式(1)描述的通常的RNN,从输入序列X的第一个字符x1 顺序读入,直到最后一个字符xTx 。在我们提出的结构中,在每个单词的标注信息中,不仅要归纳前面单词的信息,还要归纳后面单词的信息,因此我们提议使用最近在语音识别(例如 Graves et al., 2013)中成功应用的双向RNN(BiRNN, Schuster and Paliwal, 1997)。

  一个BiRNN包含一个前向和一个后向RNN。前向RNN f 按照输入序列的顺序读取(从x1xTx ),同时计算前向隐藏状态序列(h1 , … , hTx )。而后向RNN f 逆序读取输入序列(从xTxx1 ),同时计算后向隐藏状态序列(h1 , … , hTx

  对每个单词xj ,通过拼接前向隐藏状态hj 和后向隐藏状态hj ,我们得到标注:hj=[hjT;hjT]T 。这样一来,标注hj 就同时包含了前后两个方向的单词信息。由于RNN倾向于对最近的输入有更好的表达,标注hj 将会聚焦于xj 附近的单词。这些标注组成的序列被后面的解码器和对齐模型用来计算上下文向量(公式(5)–(6))。

  图1展示了我们提出的模型。
  

这里写图片描述

4. 实验设定

  我们在英法翻译任务上,使用ACL WMT ’14 (http://www.statmt.org/wmt14/translation-task.html)提供的双语平行语料验证我们提出的方法。作为比较,我们对最近由Cho et al. (2014a)提出的RNN编码器-解码器模型也做了一个性能报告。在两个模型上我们使用同样的训练步骤和同样的数据集(模型实现在这里:https://github.com/lisa-groundhog/GroundHog)。

4.1 数据集

  WMT ’14 数据集包含下面的英法平行语料: 欧洲议会(61M words),新闻评论(5.5M), 联合国(421M) ,以及两个大小分别是90M和272.5M的爬虫语料,总计850M单词。我们使用Cho et al. (2014a)中描述的步骤,使用Axelrod et al. (2011) (获取网址: http://www-lium.univ-lemans.fr/˜schwenk/cslm_joint_paper/)提出的数据选取方法,将联合语料大小缩减到348M。尽管可以使用大得多的单语言语料来预训练编码器,但是我们没有使用前面提到的平行语料之外的任何单语言数据。我们把数据集WMT ’14中的news-test-2012 和news-test-2013拼接在一起作为开发(验证)数据集,并在测试集news-test-2014上做模型评估,其包含了不在训练数据中的3003个句子。

  经过常规的分词(我们使用开源的机器翻译包Moses中的分词脚本),我们使用每种语言中的前30000个高频词来训练模型,任何没有出现在这个名单中的词都被映射为一个特殊的词([UNK])。在此之外,我们没有对数据做任何其他特殊预处理,如小写转换或词干提取等。

4.2 模型

  我们训练两个模型,一个是RNN编码器-解码器模型(RNNencdec, Cho et al., 2014a),另一个是我们提出的模型,称它为RNNsearch。我们对每个模型训练两次:第一次使用长度不大于30的句子(RNNencdec-30, RNNsearch-30)训练,第二次使用长度不大于50的句子训练(RNNencdec-50, RNNsearch-50)。

  RNNencdec的编码器和解码器各自包含1000个隐藏单元【在这篇论文中,提到“隐藏单元”我们是指门控隐藏单元(参照附录A.1.1)】。RNNsearch的编码器由前向RNN和后向RNN构成,分别包含1000个隐藏单元,RNNsearch的解码器也包含1000个隐藏单元。两个模型都使用多层网络,后接一个单层maxout (Goodfellow et al., 2013)隐层来计算每个目标单词的条件概率(Pascanu et al., 2014)。

  我们使用minibatch随机梯度下降算法,并使用Adadelta (Zeiler, 2012)优化算法来训练每个模型,每次梯度更新使用80个句子作为minibatch,每个模型我们训练了大概5天。

  一旦模型训练完毕,我们使用集束搜索(beam search)方法找到使得条件概率最大化的翻译结果(例如Graves, 2012; Boulanger-Lewandowski et al., 2013)。Sutskever et al. (2014)在他们的神经机器翻译模型中使用了此方法来生成翻译结果。

  实验中使用的更多模型架构和训练过程的细节,请参照附录A和B。
  

5. 结果

5.1 定量结果

这里写图片描述

  在表1中我们列出了翻译性能的BLEU得分。很明显在各种情况下RNNsearch都比传统的RNNencdec优秀,更重要的是,当我们用只包含认识单词的句子评估我们提出的模型时,其性能与传统的基于短语的翻译系统(Moses)一样好。这是一个重要的成就,考虑到Moses除了我们使用的平行语料外,还使用了额外的单语言语料(418M单词)。

这里写图片描述

  我们提出这个方法的背后动机之一就是,基本的编码器-解码器方法中的定长上下文向量可能会带来限制。我们推测这种限制使得基本编码器-解码器方法在处理长句子时表现不佳。在图2中,我们看到当句子长度增加时RNNencdec的性能急剧下降,另一方面,RNNsearch-30和RNNsearch-50对句子长度更鲁棒,特别是RNNsearch-50,即使句子长度达到甚至超过50仍然没有性能恶化。表1中可以看到RNNsearch-30要比RNNencdec-50的性能还要好,这使我们提出的模型相对于基本编码器-解码器模型的优势得到了进一步确认。

5.2 定性分析

5.2.1 对齐

这里写图片描述

  我们提出的方法提供了一个直观的方式来观察翻译结果和源句子单词之间的(软)对齐,这是通过对公式(6)中的标注权重αij 进行可视化来实现,如图3所示。每个图中的矩阵的每一行表明了与标注关联的权重。通过这个图我们可以看到源句子中哪些位置在生成翻译目标单词时更重要。

  我们可以从图3的对齐中看出,英语和法语之间的单词对齐大致是单调性的,我们可以看到矩阵对角线上的权重最强。但是,也可以发现一些非平凡的,非单调的对齐。通常形容词和名词在法语和英语中的顺序是不同的,图3(a)中有一个这样的例子,图中显示模型正确地将短语[European Economic Area]翻译成了[zone ´economique europ´een]。RNNSearch模型能够跳过两个单词([European] and [Economic]),正确的将法语的zone和英语的area对齐,然后每次再回退一个词来完成整个短语[zone ´economique europ´een]。

  与硬对齐相比,软对齐的优势是明显的,比如图3(d),源短语[the man]被翻译成了[l’ homme],所有的硬对齐会把[the]对应到[l’],把[man]对应到[homme],但这样的对应无助于翻译,因为你必须[the]后面跟了什么单词才能决定[the]应该被翻译成[le], [la], [les] 还是 [l’]。我们的软对齐方法通过让模型同时关注[the]和[man],从而自然而然的解决了这个问题,所以在这个例子中,我们看到模型正确地将[the]翻译成了[l’]。类似的结果可以在图3的所有例子中看到。软对齐的一个额外的好处是,它能够顺理成章地应对源句和目标句之间的长度差异,不需要以一种违反直觉的方式将某些单词与 ([NULL])对应起来(例如Koehn, 2010的第4,5章)。

5.5.2 长句子

  可以清楚地从图2看到,在翻译长句子时,提出的模型(RNNsearch)比传统模型(RNNencdec)要好得多。这可能是由于RNNsearch不需要完美地将长句子编码成定长向量,只需要准确编码输入句子围绕特定单词的部分。
  例如,考虑测试集中的这个源句:

这里写图片描述

  RNNencdec-50将这句话翻译成:

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章