更多深度文章,请关注:https://yq.aliyun.com/cloud
作者介绍
Dhruv Parthasarathy:MIT毕业,曾经就职于Udacity,带领人工智能、自动驾驶、深度学习以及机器学习项目;目前就职于Athelas,研发副总裁。
领英:http://cn.linkedin.com/in/dhruv-parthasarathy
Twitter: https://twitter.com/dhruvp
博客:https://blog.athelas.com/@dhruvp
Medium:https://medium.com/@dhruvp4
本文介绍一篇关于Deep Voice的论文,Deep Voice是应用深度学习将文本转换语音的系统。
论文的Arxiv 链接:https : //arxiv.org/abs/1702.07825
这篇论文是由Andrew Ng的AI团队发表,遗憾的是Andrew Ng于2017年3月22日宣布离职,并开启他人工智能事业的新篇章,正可谓“东山再起竟有时,人生何处不相逢”,相信Andrew Ng在AI领域会有更多的贡献,感谢Andrew Ng对中国人工智能的发展做出的贡献并祝福他。
言归正传,这篇论文介绍了一个新的深度学习系统,该系统用于将文本转换为语音。论文能够生产的例子如下(可以去链接听取录音内容)。
与MacOS的TTS(文本转换成语音)系统相比,该技术的结果显得更加自然和拟人化。但以上结果有一个需要重点注意的地方—— Deep Voice有机会使用人讲话的录音来训练模型,这使得它说的像人一样。此外,Deep Voice也可以访问频繁和持续时间数据。但是,除了输出的质量语音之外,论文还有几个关键的方法在语音领域中脱颖而出:
1. Deep Voice对所有文字到语音管道的全过程中都使用了深度学习。
先前TTS(文本到语音)系统在不同组件使用了深度学习,但在Deep Voice之前,没有团队对整个系统采用深度学习。
2.需要非常少的特征工程,因此易于应用于不同的数据集。
与传统管道相比,通过使用深度学习能够避免大量的特征处理,这使得深度语音更加适用于不同的问题领域。另外比传统的TTS系统的训练周期更短,大大缩减了模型的训练时间,从之前的几周时间下降到几个小时即可完成训练。
3. 比目前最优的系统快很多,被设计用于生产系统。
本文的作者声称Deep Voice有效地实现了比Deep Mind的WaveNet快400倍的速度。他们特别写道:
作者专注于创建一个生产就绪系统,这需要设计的模型能实时运行推理。Deep Voice可以在几分之一秒内合成音频,并在合成速度和音频质量之间提供可调谐的权衡。相比之下,WaveNet需要几分钟的运行时间来合成一秒钟的音频。
背景材料
这些创新点有没有让你兴奋?接下来一起深入分析Deep Voice的不同部分,以及它们之间是如何组合吧。在此之前需要了解一些有用的预备知识:
亚当·考茨(Adam Coates)的演讲(从3:49观看,需翻墙)。Coates博士是Deep Voice的作者之一,之前与Stanford的Andrew Ng合作。看完背景材料后就该深入了解Deep Voice如何工作了!博客的剩余部分将遵循以下结构:
1. 首先,来看一下Deep Voice如何处理一个例句,并将其转化为与人声相似的语音。这被称为合成流程。
2. 然后,将合成流程分解成更小的部分,并了解每个部分的作用。
3. 之后,将介绍如何实际训练这些单独的部分以及实际的训练数据和标签。
4. 最后,在另一篇博文中,将研究用于实现这些不同组件的Deep Learning体系架构。
合成流程 - 将新的文本转换为语音
现在来看看Deep Voice如何处理一个简单的句子,并将其转换为音频。流程将具有以下架构:
为了了解这些内容是什么,以及它们如何组合在一起,我们逐步了解这个具体过程。例子短语:
it is early spring
步骤1:将语素(文本)转换为音素
语言是特殊的,例如英语,因为它们不是音形状=一致。例如,下面所有的词都使用后缀“ough”:
1. thought(如go中的o)
2. through(如too中的oo)
3. cough(如offer中的off)
4. rough(如suffer中的uff)
可以看到,即使它们具有相同的拼写,但发音却完全不一样。如果TTS系统使用拼写作为主要输入,那么即使它们具有相同的后缀,也不可避免地会遇到试图调和“though”和“rough”应该如此发音的问题。因此需要使用略微不同的表达方式来展示有关发音的更多信息,这正是音素所在的原因。
人发出的声音是由不同的音素单位组成,将它们结合在一起后就可以重新创建几乎所有单词的发音。以下是分为音素
(CMU的音素字典)的几个例子:
- White Room- [W,AY1,T,.,R,UW1,M,.]
- Crossroads - [K,R,AO1,S,R,OW2,D,Z,.]
音素旁边的数字1,2等代表发音压力的位置,此外句号表示发音中的停顿。所以,Deep Voice的第一步用一个简单的音素字典将每一句话简单的转换成它的音位的表示。
我们的句子
对于第一步而言,Deep Voice将具有以下输入和输出。
- 输入 - “It was early spring”
- 输出 - [IH1,T,...,W,AA1,Z ...,ER1,L,IY0,...,S,P,R,IH1,NG,.]
步骤2,第1部分:预测持续时间
有了音素后,需要估计的就是说话时应该保持这些音素的时间长短问题,另外音素应该是根据其上下文决定其持续长或短。围绕音素“AH N”进行以下实例:
- Unforgettable
- Fun
显然,在第一种情况下,“AH N”需要的时间比第二种情况更长,我们可以训练系统来做到这一点。
另外我们将会使用每个音素,并预测句子应该持有多长时间(秒)。
我们的句子
以下是我们这个例子中变成以下形式:
- 输入 - [IH1,T,.,W,AA1,Z.,ER1,L,IY0,.,S,P,R,IH1,NG,.]
- 输出 - [IH1((0.1s),T(0.05s),.(0.01s),...]
步骤2,第2部分:基频预测
之后还要预测每个音素的音调和语调,使其尽可能地听起来像人声。这在许多方面对于像汉语这样的语言尤其重要,其中相同的声音可以基于音调和口音具有着完全不同的含义(口音),大家都在生活中都遇到过口音闹出的笑话吧。预测每个音素的基频有助于做到这一点。频率告诉系统音素的准确发音及音调等。另外,一些音素根本不是有声音的,这意味着虽然它们被发音,但声带没有的任何振动,这类似于英语中的清辅音和浊辅音。本文的基频预测也将考虑到这一点,并预测什么时候是否应该发出声音。
我们的句子
以下是例句将变成以下形式:
- 输入 - [IH1,T,.,W,AA1,Z.,ER1,L,IY0,.,S,P,R,IH1,NG,.]
- 输出 - [IH1((140hz),T(142hz),.(不发音),...]
步骤3:音频合成
创建语音的最后一步是将音素、其持续时间和频率合在一起以输出声音。Deep Voice使用修改后DeepMind的WaveNet(需翻墙,见附件)的版本做到这点。强烈建议阅读原始博客(需翻墙,见附件)文章,了解WaveNet的基础架构。
WaveNet生成原始波形,允许生成所有类型的声音,包括不同口音、情绪、呼吸和人类言语的其他基本部分。此外,WaveNet甚至可以进一步生成音乐。
在论文中,该技术团队通过优化程序的执行能力(尤其是高频输入)来修改WaveNet。因此,如果WaveNet需要几分钟的时间才能生成新的音频,最终结果的WaveNet可能只需要几分之一秒的时间,即Deep Voice的作者所描述的那样:
Deep Voice可以在几分之一秒内合成音频,并在合成速度和音频质量之间提供可调谐权衡。相比之下,以前的WaveNet需要几分钟的运行时间来合成一秒钟的音频。
我们的句子
以下是Deep Voice管道最后的输入和输出!
- 输入 - [IH1(140hz,0.5s),T(142hz,0.1s),.(不发音0.2s),W(140hz,0.3s),..]
- 输出 - 听录音。
总结
通过这3个步骤,可以看到Deep Voice如何处理一个简单的文本以及转换后其音频的表现。以下是步骤的总结:
1. 将文本转换为音素。“It was early spring”
- [IH1,T,.,W,AA1,Z.,ER1,L,IY0,.,S,P,R,IH1,NG,.]
2.预测每个音素的持续时间和频率。
- [IH1,T,.,W,AA1,Z.,ER1,L,IY0,.,S,P,R,IH1,NG,.] -> [IH1(140hz,0.5s),T(142hz,0.1s),.(不发音0.2s),W(140hz,0.3s),..]
3.结合音素、持续时间和频率,输出表示文本的声波。
- [IH1(140hz,0.5s),T(142hz,0.1s),.(不发音0.2s),W(140hz,0.3s),..]->音频
但是,如何实际训练Deep Voice能够执行上述步骤?Deep Voice如何利用深度学习来实现其目标?
在下篇博客中,我们将介绍Deep Voice的每一部分是如何训练的和神经网络背后更直观的表示,有兴趣可以阅读第二部分。
附件为原文的pdf、需翻墙文档的pdf
文章原标题《Deep Voice explained: Part 1 — the Inference Pipeline》,作者:Dhruv Parthasarathy,译者:海棠,审阅:tiamo_zn
文章为简译,更为详细的内容,请查看原文