雷锋网 AI 科技评论消息,今日百度研究院在官网上正式推出了 Deep Voice:实时语音合成神经网络系统(Real-Time Neural Text-to-Speech for Production),Twitter 上也同步更新了消息,目前论文也已经投递 ICML 2017。
本系统完全依赖深度神经网络搭建而成,最大的优势在于能够满足实时转换的要求。在以前,音频合成的速度往往非常慢,需要花费数分钟到数小时不等的时间才能转换几秒的内容,而现在,百度研究院已经能实现实时合成,在同样的 CPU 与 GPU 上,系统比起谷歌 DeepMind 在去年 9 月发布的原始音频波形深度生成模型 WaveNet 要快上 400 倍。
基于传统的 TTS 流程,Deep Voice 采用深度神经网络与更为简单的词性取代原有的转换方法。这样一来,系统能够兼容所有新的数据集、语音文件甚至是从未涉猎的领域。系统主要由五个部分构成:
用于定位音素边界的分割模型;
用于字素转音素的转换模型;
判断音素能持续多长时间的预测模型;
基频预测模型;
音频合成模型。
在分割模型中,百度研究院提出了一种通过 CTC 损失(connectionist temporal classification)实现音素边界检测的新方法。而比起 WaveNet,百度的合成模型所需要的参数更少,速度更快。
Deep Voice 目前需要借助一个音素模型与音频合成组件的帮助,希望在未来能够实现真正意义上的端到端(end-to-end)语音合成,上述系统不需要经过复杂的合成流程,也不依赖手工设计特征的输入或预训练文本。
在官网上,百度研究院展示了三个不同的语音样本做为对比,欢迎点击此处查看。可以听出,过 Deep Voice 合成的语音已经非常接近原始视频的声音,研究院的音频的合成能够有效地重塑人声。
语音合成即文本转换技术(TTS),根据百度语音官网的介绍,它是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术。它是将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的口语输出的技术。
现在也有很多领域都需要应用这一技术,比如提供语音服务的设备、导航系统,或是为视觉障碍者提供语音辅助。最早期的做法是机械地将预先录制好的声音拼接在一起(concatenative TTS),后来衍生出通过语音编码器、合成分析并再现语音输入的参数式 TTS(parametric TTS),但该项目开发流程可谓兼具高难度与强工作量。
有不少研究所都在语音合成领域下了功夫,其中最为有名的包括谷歌 DeepMind 及蒙特利尔大学机器学习研究所(MILA)。
谷歌 DeepMind 于去年 9 月公布了原始音频波形深度生成模型 WaveNet,显示生成的原始音频质量优于目前Google采用的两种最优模型 Parametric TTS 与 Concatenative TTS。WaveNet通过直接为音频信号的原始波形建模,一次为一种音频样本建模,来改变这种范式。同生成听起来更为自然的语音相同,使用原始波形意味着WaveNet能够为任意类型的音频建模,包括音乐。
为了实现这一点,研究团队需要告诉 WaveNet 文本的内容。我们通过将文本转换成语言和语音特征(包括音位、音节、单词等),把转换得来的特征提供给 WaveNet。这意味着网络的预测步骤不仅仅基于先前获得的音频样本,而且要基于文本所传达的内容。
而除了谷歌 DeepMind,近日 MILA 的 Yoshua Bengio 与 Aaron Courville 二位《Deep Learning》作者联合 Jose Sotelo 等人推出了端到端的语音合成模型 Char2Wav,并于近日投递了 ICLR 2017 的 workshop track。
Char2Wav 模型由一个读取器与一个神经声码器组成,前者是一个聚焦机制的编码-解码器模型;而后者是 SampleRNN 的条件式扩展,两者的结合能够直接根据文本生成音频。
在论文中团队指出,语音合成需要达成两个目标:
一个是可理解性(intelligibility),指的是音频的清晰程度,特别是听者能在多大程度上提取出原有的信息;
另一个是自然感(naturalness),追求的是与可理解性相对的层面,即听者听懂句意的程度、全句的风格一致性,还有地域或语言层面的差异程度等。
而现在百度也公布了它们在语音合成的巨大进展,这也引发了包括 Yoshua 团队在内的研究者们的注意。
最近,百度的 DeepVoice 论文作者 @NiftyIon 与 Char2Wav 作者之一 @kkastner 就在 Reddit 上针对 DeepVoice 进行了一番讨论。@NiftyIon 的真实身份并不可考,在 Reddit 上他自称是 DeepVoice 的作者之一。
据雷锋网 AI 科技评论判断,这位名为 @kkastner 的 Reddit 用户应该是 Char2Wav 论文五作 Kyle Kasnter。根据 LinkedIn 资料显示,Kyle Kasnter 是蒙特利尔大学的在读博士生,曾经在 IBM Watson、谷歌大脑团队及 scikit-learn 实习,一方代表百度硅谷 AI 团队,一方代表 Yoshua 的机器学习大牛,他们的「华山论剑」又会擦出怎样的火花?一起来看看以 Kasnter 为代表的语音合成团队都在关注哪些技术细节吧,为方便阅读,由雷锋网 AI 科技评论整理成问答形式,@NiftyIon下称“Deep Voice作者”,@kkastner下称“Char2Wav作者”:
Char2Wav 作者:
官网中展示的样例表现都非常棒,考虑到百度做为一家中国企业,你们是否会将研究重心放在汉语上呢?
Deep Voice 作者:
我们对 Char2Wav 的成果感到非常振奋,也曾经讨论过几次采用聚焦机制而摆脱持续预测的想法,它正在朝着我们感兴趣的方向发展,而且确实是管用的。
我们目前专注于英语,因为这项研究目前是在百度硅谷 AI 实验室(SVAIL)完成。我们自然是希望能将这个系统应用于汉语及其它语言。
Char2Wav 作者:
您在论文中数次提及了「WORLD TTS system」,但 WORLD 只关注 DSP 领域(实际上它是一个声码器)。大多数 TTS 系统也在做前端(文本),因此我并不觉得可以把 WORLD 标记为 TTS 系统。在我看来,TTS 最糟糕的地方在于文本,但你们的模型更多地集中于这一点上。此外,我并不认为我们的模型需要基于现有的 TTS 系统。就像论文中提及的,我们需要一个手工/专业的声码器实现端到端的语音生成,但我们不需要任何细粒度注释的训练或生成。而我认为我们所实现的目标是将句子作为一个数据集,并训练生成 wav 给定的句子。
其中的区别有些微妙,但从用户的角度上看,我们的系统看起来是一样的(除了您的系统更快!)。但我们真的很难在 LDC 外找到合理大小的细粒度注释,也引致我们正在重新尝试实现和扩展 Alex Graves 的演示。我在阅读 WaveNet 的论文时,因为前端的预测依赖文本,我也有相同的感觉。因此,所有的区别归结起来就是:「我需要用什么样的数据来训练」,「如何扩展系统,使大量的数据可用」,以及「如何分解模型」。我认为 Heiga Zen 最近的演讲很好地提供了参数合成的一个概述。
未来,您所训练的数据是会公开,还是不会?另外,数据集的来源有哪些?
Deep Voice 作者:
您提及了我们有预先存在的 TTS 系统,确实,我们没有对不同阶段的流程进行区分。而我们所说的 WORLD TTS 功能指的是您提及的声码器。而我们并没有考虑到实际上前端有很多的 TTS 特征,因此可能想当然了。如果有读者像您一样对这一点感到疑惑,我们感到非常抱歉。
在「生成」的时候,我承认两个系统看起来是一样的:我们想表达的是,与 Char2Wav 的差异只存在于训练前。事实上,我最欣赏您系统的原因在于整个系统是端到端的,目前我们的产品还不能做到这一点。
我觉得团队不会公开内部数据集,但我们也展示了源自 Blizzard 2013 数据的结果,这一数据是开放的,当然,你需要签署相关协议。
Char2Wav 作者:
我们模型的测试时间数据稍后也会在 arxiv 上公布,不过 DeepVoice 的速度表现真的很好。如果我没有看错的话,系统能达到 48kHz/秒的速度。从研究角度看,它是真的预示着高水准音频合成时代的到来,还是这只是在理想状态下的表现?至少在我看来是不可思议的。
Deep Voice 作者:
我们在实验中了解到原始数据就是 48kHz 的,而且我们发现之前基于 WaveNet 得到的「低质量音频」实际上是 16 kHz 的,而不是 48 kHz。因此我们训练的就是常规的 40 层模型,并直接输出 48kHz 的音频。所以从长远来看,我们将能实时合成高于 16kHz 的音频(虽然目前做不到),但依然有很多未实现的想法。
Deep Voice 作者:
您如何看待直接从字素到音频的想法?我们曾经考虑这样设计算法,不过担心这样的模型可能无法自动修正错误拼写问题。因此,字素到音素,与音素到音频的分离是必须的。而即使是人类,在这一点上可能也没办法做得很好吧——你可以问问人们"Jalapeno" and "P!nk" 和"Worcestershire"这几个词该怎么念。
(雷锋网 AI 科技评论按:Jalapeno:墨西哥胡椒,[ˌhɑ:lə'peɪnjoʊ];P!nk:美国著名歌手,同 pink; Worcestershire: 伍斯特郡 [ˈwustəʃiə]。)
Char2Wav作者:
这个问题非常有趣,因为它的定义非常不明确。考虑像 GAN 这样的超分辨率技术也存在一个类似的问题——它属于一对多的映射,但所选择的任何方案都需要是全局一致(或至少中等范围一致的)。我们尝试的方法是采用全局扬声器调节,希望通过捕获扬声器质量,也能捕获默认的发音与说话者之间的变化,但希望同一个人之间能够保持一致。我目前没有看到任何习得清晰发音的合成示例,但我们也看到了在两个对话者切换之时,语音的速度与韵律发生了明显改变,这也意味着系统未来有可能学会更好地发音。
机器翻译也存在类似的问题,因此对于我而言并不是无法解决的,但可能需要更多的数据或/以及一些思考,比如为什么英语发音如此奇怪,而且它是如何形成的。我们已经有一些初步的想法,但为时还早。参数化的做法已经避免了大部分的发音问题,但需要考虑细粒度注释的问题。不过,我知道任何这个领域的研究者都了解不少优秀的数据库,它们能够为建立 TTS 系统提供非常重要的帮助。
而以决策树连接系统为代表的发音系统也存在一个优点,即不论怎样总能在决策树中找到正确发音,研究者也能够利用这一点反复迭代,基于用户反馈处理特殊情况。
在我看来,英语之所以难以训练,在于它发音的多模态性,一些基于字素而训练得到的英语听起来非常怪异。我个人最喜欢的例子是"I am an athlete"。像西班牙语这样的其它语言,即使缺少数据,映射性的表现也不差。德语与罗马尼亚语表现相当,目前我正寄希望于冰岛语的测试上。
Deep Voice 作者:
实际上我们的系统并没有做长时间的训练。系统训练了 20 小时,但只需要 3-5 小时就能得到很高质量的音频结果。我们也没有测试过音素的持续时间和 F0 预测模型对数据的敏感程度。不过,像在 VoiceBunny.com 这样的平台,你就能花 5000 到 10000 美金拿到 5 到 10 小时的音频。而开一个小工作室然后录上一周的话,这样也不花什么钱,不过我们自己没有这么做。你需要文本和对应的音频——不一定要数据注释,因为你可以用音素字典和一个字素到音素模型获得。如果有需要的话,可以采用 LibriSpeech 获取音频内容,只需要弄清楚如何将文本对齐音频。我觉得可以采用语音识别系统来实现这一点(在百度,我们用的是自己研发的 Deep Speech2,你也可以选择自己训练或寻找外部 API)。
关于 48kHz 模型,我们发现最有意思的地方在于我们大概有 83ms 的文本,而且它的表现相当不错。这与 SampleRNN 没有关系,但 WaveNet 也具有固定的感受野,显然 83ms 已经基本足够。这也意味着高质量的合成可能与感受野无关,而是与其它因素有联系。我们有一些解释的想法,但还不是非常确定。
Char2Wav 作者:
我觉得三个小时以上的训练只是一个开始,尝试采用一些更小的数据集时,系统看起来在 5-10 小时之间会有更好的结果。我不记得 DIMEX 是多少时间了,但记得也很短。有的取决于说话者的数量,有的与语种有关。
至于你说的感受野的问题,非常有意思。在 WaveNet 中完全被隐藏了,而相对短(时间)的感受野,甚至在无监督的情况下也给出了长距离的一致性,但 83 ms 也非常小,几乎也只是三方对话的规模。因此你们团队做出的质量改进非常有意思,让我感到很惊讶。酷!
整体而言,双方对彼此论文都非常熟悉,而且也提出了一针见血的关键问题,看得可谓是非常过瘾,雷锋网也将关注后续交流的进展(如果有的话)。
目前不少公司及高校研究院在实现端到端语音合成上做出了相关的尝试与努力, AI 科技评论也认为,不论语音合成技术的发展未来如何,它的终极目标一定是要让人类感觉易理解且自然,只有实现这一点,方能实现人机交互的“大同世界”。