彩票走势图

Deep Voice详解教程------前百度首席科学家吴恩达力荐(上篇)

转帖|使用教程|编辑:龚雪|2017-03-17 16:50:23.000|阅读 653 次

概述:如果你是语音合成的新手,那这篇文章教你快速理解百度的语音合成原理!

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

最近,前百度首席科学家吴恩在的百度人工智能团队发布了一篇文章,文章介绍了一种基于深度学习把文本转换成语音的新系统。文章中百度 Deep Voice 生成的录音例子如下所示,让结果来说话()

显而易见,与 MacOS 的 TTS (文本转换成语音)系统相比,百度 Deep Voice 生成的录音听起来更自然,更像人类朗读的声音。但以上结果应当注意到一个大前提——百度 Deep Voice 原型有一个先天优势,那就是它利用人类朗读的一个录音源件来进行训练,这给它添加了一点人类说话的韵味。除此之外,Deep Voice还可以访问频率和持续时间数据。

除了能输出高质量的语音,论文创新的几个关键点是:

  • Deep Voice 将深度学习应用于语音合成的全过程。

以前的 TTS 系统会在某些环节上采用深度学习,但在Deep Voice之前,没有团队采用全深度学习的框架。

  • 需要提取的特征非常少,因此容易应用于不同的数据集。

传统语音合成需要进行大量的特征处理和特征构建,但百度通过使用深度学习避免了这些问题。这使得 Deep Voice 的应用范围更加广泛,使用起来也更加方便。论文中也提到,如果需要应用于新的数据集,与传统系统动辄几个星期的时间相比,Deep Voice 可以在几个小时内完成重新调试:

传统的 TTS 系统完成(重新训练)需数天到数周的时间进行调节,而对Deep Voice进行手动操作和训练模型所需的时间只要几个小时就足够。

  • 与现有技术相比,这个系统非常高效,专为生产系统而设计。

相比于 DeepMind 关于人类音频合成的中实现的 WaveNet ,现在这个系统的有效速度提升了400倍。

我们专注于创建一个能迅速实现产品化的系统,这需要我们的模型能运行实时推断。Deep Voice 可以在几分之一秒内合成音频,并在合成速度和音频质量之间提供可调和的权衡。相比之下, WaveNet 合成一秒钟的音频,系统需要跑好几分钟。

一、背景材料

光说说这些创新点就足以令人感到兴奋不已了!但是它是如何工作的呢?本文的剩余部分,将尝试深入研究 Deep Voice 的不同部分,以及分析它们是如何融合在一起的。在此之前,可能你需要先看看这个视频,了解一下基础知识:

  • 曾在斯坦福大学与Andrew Ng 一起工作的 Adam Coates 是 Deep Voice 的作者之一, Coates 博士在百度发表了关于把深度学习应用到语音的演讲(从3:49处开始观看)。 做好了功课,现在是时候深入探究 Deep Voice 的工作原理了!这篇博客的其余部分将遵循以下结构:

1.首先,看看 Deep Voice 如何理解一个例句并将其转换为与人声相似的语音(这一步就是大家熟知的合成流程)。

2.然后将推理流程进一步拆解,了解每个部分的作用。

3.接下来,我们将介绍这些独立部分实际上是如何训练的,以及实际的培训数据和标签。

4.最后,在下一篇博文中,我们将深究用于实现这些不同组件的深度学习架构。

二、合成流程——将新文本转换为语音

现在让我们立足高点,看看 Deep Voice 如何识别一个简单的句子,并将其转换为我们听得见的音频。

为了理解这些组件是什么,以及它们如何组合在一起,我们一起逐步细究合成的具体过程。我们来看看 Deep Voice 是如何处理下面这个句子的:

It was early spring.

步骤1:将语素(文本)转换为音素

以英语为代表的语言不是语音语言(phonetic)。 

例如以下单词(参考于linguisticslearner),都带后缀“ough”:

  1. thoug (和 go 里面的 o 类似 )
  2. through (和 too 里面的 oo 类似)
  3. cough (和 offer 里面的 off 类似 )
  4. rough (和 suffer 里面的的 uff 类似)

注意,即使它们有相同的拼写,但它们的发音却完全不同。如果我们的 TTS 系统使用拼写作为其主要输入,即使有相同的后缀,在接受为什么"thoug"和"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 将具有以下输入和输出。

  • Input - "It was earky spring"
  • Output - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG,. ]

步骤2,第1部分:预测持续时间

现在有了音素后,我们需要估计在说话时,这些音素的发音时间。这也是一个有趣的问题,因为音素应该基于上下文来决定它们或长或短的持续时间。拿下面围绕音素“AH N”的单词举例: 

  • Unforgettable
  • Fun

相比第二个单词,“AH N”显然需要在第一个单词里发更长的发音时间,我们可以训练系统做到这一点。能够理解每个音素,并预测它们的发音时长(以秒为单位)是关键。 我们的句子 在这一步我们的例句会变成以下形式:

  • Input - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG,.]
  • Output - [IH1 (0.1s), T(0.05s),. (0.01s),...]

步骤2,第2部分:基频预测

基本频率(蓝线)是声带发出浊音音素期间产生的最低频率(将其视为波形的形状)。我们的目标是预测每个音素的基频。

为了让发音尽可能地接近人声,我们还想要预测出每个音素的音调和语调。这一点从多方面考量,对以汉语为代表的语言尤为重要。因为这些语言中,相同的声音,读出不同的音调和重音具有完全不同的含义。预测每个音素的基频有助于我们发好每一个音素,因为频率会告诉系统,什么音素该发什么音高和什么音调。

此外,一些音素并不完全都发浊音,这意味着发这些音不需要每次都震动声带。

例如,拿发音“ssss”和“zzzz”做例子,注意到前者是清音 (unvoiced),发音时声带没有振动,而后者是浊音 (voiced) ,发音时声带振动了。

我们的基本频率预测也将考虑到这一点,预测出何时应当发清音,何时应该发浊音。

我们的句子 在这一步我们的例句会变成以下形式:

  • Input - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, ., R, Ih1, NG,.]
  • Output - [IH1(140hz),T(142hz),. (Not voiced),...]

步骤3:音频合成

 

 

 

 

在最后一步,我们将音素、持续时间和基频 (F0 profile) 合并,生成一个真正的音频。

生成语音的最后一步是,合并音素、持续时间和频率,输出声音。Deep Voice 是基于 DeepMind 的 基础之上的改进版本,成功地实现了这一步。

基于每个输入的贡献, DeepMind 的原始 WaveNet 可以把众多不同输入扩大指数倍。注意上面列出的指数树结构

WaveNet 生成原始波形,允许生成所有类型的声音,不同的口音、情绪、呼吸和人类语音的其他基本部分都能包含在内,这样的声音和人类的声音区别就非常小了。此外, WaveNet 甚至能在这一步之上生成音乐。

在发布的文章中,百度团队通过优化程序的执行能力,特别是优化执行生成高频输入的能力来改进 WaveNet 。因此, WaveNet 需要几分钟来生成一秒钟的新音频,百度修改后的 WaveNet 可能只需要几分之一秒完成同样的任务,如 Deep Voice 的作者所述:

Deep Voice 可以在几分之一秒内合成音频,并在合成速度和音频质量之间提供可调谐的权衡。相比之下,以前的 WaveNe 合成一秒钟的音频需要几分钟的运行时间。

我们的句子

下面是 Deep Voice 管道最后一步的输入和输出!

  • Input - [IH1(140hz,0.5s), T(142hz, 0.1s),
  • (Not voiced, 0.2s), W(140hz, 0.3s), ...]
  • Output - see bolow.

三、概要

以上就是探究的结果了!通过这三个步骤,我们已经看到了 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), . (Not voiced, 0.2s), W (140hz, 0.3s),…]

3.合并音素、持续时间和频率,输出该文本的声音。

· [IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…] - > Audio但是我们该如何实际训练 Deep Voice 以便能够执行上述这些步骤呢? Deep Voice 如何利用深度学习实现这个目标?

更多行业资讯,更新鲜的技术动态,尽在。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP