学界 | 吴恩达盛赞的Deep Voice详解教程,教你快速理解百度的语音合成原理(下)

AI科技评论按:百度前段时间推出了语音合成应用 Deep Voice,AI科技评论也于近日回顾了百度在语音识别及语音合成的研究历程《从SwiftScribe说起,回顾百度在语音技术的七年积累》,但对于不了解TTS的同学们来说,要理解 Deep Voice 同样困难。

而前百度首席科学家吴恩达在 Twitter 上转发了MIT Dhruv Parthasarathy 的一篇medium 文章,其详细阐述了Baidu Deep Voice 的具体原理及操作方法。吴恩达表示,“如果你是语音合成的新手,那么这篇文章便是 Deep Voice 优秀且可读性强的一个总结。感谢@dhruvp! ”AI科技评论编译,未经许可不得转载。

这是解析运用深度学习进行百度语音合成的第二篇文章。

在这篇文章中,我们将介绍使用有标签的数据对各个语音合成步骤进行实际训练的方法。

Deep Voice 的 Arxiv链接:https://arxiv.org/abs/1702.07825

背景资料

首先将上篇介绍语音合成流程的文章进行总结,便于理解后面的原理介绍:

步骤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),…] -> 音频

那么,我们实际通过什么样的方式来训练这些步骤的模型,从而得到可靠的预测结果呢?

语音训练流程-使用现有的数据训练Deep Voice

下面,我们将逐个讲解训练流程中的每个环节。

步骤一:训练语素—音素模型

语音合成的第一步就是使用语素—音素转换模型将文本转换成音素。

上一篇文章中我们就介绍了这个例子:

  • Input — “It was early spring”
  • Output — [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

在大多数情况下,我们可以使用音素字典直接将文本输入,并得到如上对应的音素结果。

但如果出现音素字典没有覆盖的词呢?这其实时常发生,就跟我们人类经常会增加新的词汇一样(比如,“谷歌”,“截屏”等等的)。那么,在遇到新词的时候,我们便需要一个回退机制来预测音素了。

Deep Voice使用神经网络来实现这个功能。准确来讲,它沿用过了Yao和Zweig在微软进行的Sequence to Sequence(Seq2Seq)的学习方法来进行文本对应的音素预测。

与其将这个原理用我自己的语言剖析深入,还是附上我觉得解释得比较好的视频和文章给大家来理解(视频地址)

  • Quoc Le(Google Brain的深度学习研究院和Sequence to Sequenc分析模型的作者)在湾区深度学习学校关于Sequence to Sequenc分析模型的课程
  • 《深度学习白皮书》中循环神经网络和LSTM的章节

数据构成

那么,基于上述原理,训练使用的数据和标签是什么样子的呢?

Input(X-逐字的)

  • [“It”, “was”, “early”, “spring”]

标签(Y)

  • [[IH1, T, .], [W, AA1, Z, .], [ER1, L, IY0, .], [S, P, R, IH1, NG, .]]

通过查询标准音素字典(比如CMU这个,链接),我们可以得到与输入文本一一对应的标签。

步骤二:运行分割模型

在上一篇中,我们讲过,在语音合成的时候我们需要预测音素的持续时间和基频。而通过音素的音频剪辑,我们可以轻易地获取这两个数据。

Deep Voice运用了分割模型来获取每个音素的音频剪辑。

分割模型将每个音素发声的场景进行匹配,从而获取其对应的音频分割片段和其在音频中的发声位置。

如下图所示:

分割模型预测了音素在一组音频剪辑中的发声位置和时长

数据构成

分割模型真正有趣的部分在于其预测的不是每个独立音素的位置,而实际是预测了每组音素对的位置。此外,这种模式是无监督的,因为我们事实上无法知道语音片段中语素对应的真正位置的标签信息。分割模型通过CTC loss模型来训练,你可以通过链接,深入了解它的原理。

如下是数据的形式:

Input(X)

  • “It was early spring”的音频剪辑
  • 对应的音素
  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

Outputs(Y)

  • 音素对和它们在音频中的起始时间
  • [(IH1, T, 0:00), (T, ., 0:01), (., W, 0:02), (W, AA1, 0:025), (NG, ., 0:035)]

为什么要去预测音素对而不是独立的每个音素呢?因为当我们对给定时间戳对应的某个音素进行预测时,在该音素发声的中间位置预测的概率是最大的。

对独立单个的音素而言,给定语音对应某个音素的概率在语音的发声正中最大;而对成对的音素而言,概率最大值出现在两个音素交界点上

对成对的音素来说,概率最大值出现在两个音素交界点上(见上图)。我们可以轻易的检测出两个音素发声的交界点,因此,使用音素对可以让我们更简单地进行定位。

步骤三:训练音素的持续时间和基频的预测模型

在语音合成步骤中,我们需要对音素的持续时间和基频进行预测。

根据步骤二,我们已经从分割模型中拿到了音素的持续时间和基频,现在我们可以通过模型训练来预测新音素的数据了。

分割模型输出是持续时间模型和基频率模型的标签

Deep Voice通过一组单一共同训练的模型输出这些数据。

如下是数据组成:

Input(X)

  • 音素
  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

标签(Y)

  • 每个音素的持续时间和基频,通过分割模型获取
  • [(IH, 0.05s, 140 hz), (T, 0.07s, 141 hz), … ]

有了这些数据,我们就可以进行时间和Fo函数预测了。

步骤四:训练语音合成

最后,我们需要对语音合成流程中的实际生成语音的步骤进行训练。与Deep Mind中的WaveNet非常相似,这个模型具有如下的架构:

我们将会把真实的语音剪辑作为标签来进行训练

数据构成:

Input(X)

  • 带有持续时间和基频信息的音素
  • [(HH, 0.05s, 140 hz), (EH, 0.07s, 141 hz), ... ]

标签(Y)

  • 对应文本的真实语音剪辑

这样,我们就将语音合成的各个步骤过了一遍,由此便可以进行语音合成了。

总结

恭喜你!读到这里,你已经知晓了Deep Voice生成语音的过程了,并且你也了解了每个步骤的训练方法。这里将训练方法总结一下:

1、训练语素-音素模型

Input(X)

  • “It was early spring”

标签(Y)

  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

2、运行分割模型

Input(X)

  • It was early spring的音频波形
  • 音素
  • [IH1,T,.,W,AA1,Z,.,ER1,L,IY0,.,S,P,R,IH1,NG,.]

output(Y)

  • 音素对和各音素对在音频中的起始时间
  • [(IH1, T, 0:00), (T, ., 0:01), (., W, 0:02), (W, AA1, 0:025), (NG, ., 0:035)]

3、训练持续时间和Fo预测模型

Input(X)

  • 音素
  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

标签(Y)

  • [(IH, 0.05s, 140 hz), (T, 0.07s, 141 hz), ... ]

4、训练语音合成

Input(X)

  • [(HH, 0.05s, 140 hz), (EH, 0.07s, 141 hz), ... ]

标签(Y)

  • 文本对应的真实语音剪辑

到这里,你已经充分了解了语音合成中的各个步骤,并对其实现和训练的方法有了一定的认识,感谢你对这个系列百度Deep Voice的教程的阅读。

via medium

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI2ML人工智能to机器学习

易图秒懂の深度学习诞生 问题篇

认知科学改写了一帮搞物理的人在做神经网络的局面(参考 ”易图秒懂の连接主义诞生“), 从此以心理学大师Estes的学生,Rumelhart为代表的连接主义的早...

461
来自专栏鸿的学习笔记

The Quora Topic Network(下)

为我们的网络确定的最简单的度量之一是每个节点的indegree。这只是指向节点的链接的权重的总和。在我们的例子中,这对应于我们在上一节中定义的入站链路权重的总和...

751
来自专栏ATYUN订阅号

【学术】算法交易的神经网络:强化经典策略

今天我想做一个带有实际预测的金融时间序列结论:我们将用神经网络强化经典移动平均策略,证明它真的改善了最终结果,并且审查新的预测目标。 训练神经网络的代码地址:h...

1792
来自专栏智能算法

深度学习如何调参?

1274
来自专栏新智元

【重磅】Facebook AI 负责人:深度学习技术趋势报告(150 PPT 全文翻译及下载)

Yann LeCun 是卷积神经网络的发明人,Facebook 人工智能研究院的负责人。下文的 150 张 PPT,是 LeCun 对深度学习领域的全面而细致的...

3926
来自专栏大数据文摘

学界 | CVPR 2018颁布五大奖项,何恺明获年轻学者奖

904
来自专栏CDA数据分析师

导论丨图说深度学习丨神经网络和 TensorFlow (附视频中字)

CDA字幕组 编译整理 本文为 CDA 数据分析师原创作品,转载需授权 Youtube数据科学领域的热门博主sentdex,经常会分享关于Python和机器学习...

2248
来自专栏CreateAMind

OPENAI进化策略学习-强化学习的扩展替代-速度快!

本文由谷歌翻译 https://blog.openai.com/evolution-strategies/

932
来自专栏专知

NLPprogress.com-随时跟进自然语言处理研究最新进展,34个NLP任务的数据、模型、论文与代码

【导读】自然语言处理有众多的研究子领域,很多仍然未解决达到可实用的性能。为此,NLP领域的研究者正致力于解决这些问题。那如何最终这些NLP任务的研究最新进展?作...

1893
来自专栏AI科技大本营的专栏

AI 技术讲座精选:数学不好,也可以学好人工智能(五)——深度学习和卷积神经网络

【AI100 导读】欢迎阅读《数学不好,也可以学好人工智能》系列的第五篇文章。如果你错过了之前的四部分,一定记得把它们找出来看一下!本文主要介绍了深度学习架构—...

33810

扫描关注云+社区