一个月之前,微软发布了基于深度神经网络的文本到语音(text-to-speech,TTS)系统,并且做为 Azure 认知服务中的一项,提供面向客户的预览版本。
就此,我们采访了微软语音、自然语言与机器翻译的技术负责人黄学东,他向我们展示了一系列 TTS 生成的「真假难辨」的语音样例,并分享了微软在 TTS 一途上的经历与考量。
下面的视频里包括了三段录音与三段合成音,你能分辨出机器与人声的区别吗?
机器之心:微软是从什么时候开始提供 TTS 服务的?TTS 与微软语音系统的关系是什么?
事实上,TTS 是微软语音 API(Microsoft Speech API, SAPI)进入大众视野的契机。
1995 年,我作为项目负责人推出 SAPI 1.0 的目标是让人机互动更加自然。而研发 TTS(文本转语音)技术的初衷是为了给残障人士提供更多「无障碍功能」(accessibility)。1996 年,文本转语音功能被纳入 Microsoft NT 4.0 中,那是 SAPI 第一次整合进 Windows,进入大众视野。
机器之心:在神经网络用于 TTS 之前,常用的方法有哪些?
语音合成经历了许多次技术与范式的转移。
第一代 TTS 技术采用的是由麻省理工学院的教授 Dennis Klatt 提出的共振峰合成法(Formant synthesis)。这样的技术生成的语音能够被人们所理解,但是听上去特别机械。已逝的理论物理学巨匠 Stephen Hawking 在失去发声能力之后,就在使用这一套技术对外交流。
这个模型非常非常小,需要的计算资源也非常少,甚至在当时的德州仪器公司(TI)开发的很多玩具中,都有简单的语音合成功能。
第二个阶段是拼接合成法(Concatenation synthesis),把语音的每个单元存下来,拼接到一起。串联法的交接部分会有很多问题,这时候就需要进行很多的处理。从最早的直接对接、平滑(smoothing)到后来使用基于统计的参数合成的隐马尔科夫方法(HMM)进行处理。
选择用 HMM 是因为它在语音识别领域获得了非常不错的结果,因此在语音大领域内都流行了起来。
第三个阶段就是利用深度神经网络了,这是一次飞跃式的进步。谷歌的 WaveNet、Tacotron,百度的 ClariNet,都是基于深度神经网络的 TTS [BD4] 系统,在学术上都取得了一定的突破,但是工程化方面仍然没有一个实时的系统。
机器之心:能否介绍一下微软的深度神经网络 TTS?
微软的深度神经网络 TTS 系统由两部分组成,第一部分是将文本转换成包含语音信息(phonetic)和韵律信息(prosodic)的声学参数(acoustic features)。第二部分是将两部分信息转为声波(waveform)。
我们的系统最大的突破在于,这是第一个实时的神经网络 TTS,并且大家直接可以在 Azure 云上使用。
之前我们的很多与人类相比较的突破不同的是,之前的大部分突破是从研究角度,我们的算法可以达到人类的水平。例如我们在 ImageNet 图像识别数据集、Switchboard 语音识别数据集、SQuAD 问答数据集上的工作都是这一类型。而此次我们除了合成的声音 MOS 分(Mean Opinion Score)非常高,达到了与真人的声音不可区分的水平之外,最值得骄傲的是,我们构建了一个云计算服务系统,可以让大家来实时地使用 TTS。
实时深度神经网络 TTS 能够实现,有几个关键因素:第一是我们的云计算平台,提供了人工智能算力的支持;第二是我们的工程方面的进步,让这样一个序列到序列的过程可以实现实时;最后,我们的系统具有比较强的泛化能力,在实际应用场景中出现错误的概率比一般模型小很多。
机器之心:TTS 的使用文档中提到,用户可以提交训练样本定制自己的声音模型,想要完成定制,用户需要提交什么规模的何种数据?
「定制」是写在微软的基因里的一个概念。
我们第一次推出语音识别认知服务时,就同时推出了量身定制的语音识别系统,自然语言理解系统 LUIS 也是一个量身定制的语言理解系统,除此之外机器翻译、图像识别等等,都有量身定制的功能。
用户提供几百句声音样本数据,就能获得一个「入门」级的声音定制;提供五千句左右,可以进行「标准」的定制,如果能够提供一万句甚至更多,我们就能提供接近人声水平的 TTS 语音定制。
机器之心:TTS 和语音识别算法之间有哪些联系呢?
我们借鉴了很多语音识别领域的做法。
例如,以前李开复在卡内基梅隆大学的博士论文中,一个最大的贡献就是把不同人的声音合在一起,共同训练出一套通用的语音识别系统,而不需要为特定人训练自己的语音识别系统。
我们的语音合成系统也可以把不同人的声音性能整合起来,变成一个通用的、自然的语音合成系统。在这个情况下,要量身定制某一个人的语音就会比较容易。
机器之心:TTS 相比于机器翻译和语音识别模型,对算力的需求如何?
相对要求还是要高,这也是为什么其他厂商现在还没有提供实时神经网络语音合成系统的原因。
另一方面,TTS 的质量和对算力的要求是非线性的,想要达到类似人类的水平,需要的算力非常多,但是稍微降低要求,算力需求就小很多。
机器之心:TTS 有哪些应用场景?
最大的应用场景是智能音箱。其次是无障碍功能,Windows 可以读出屏幕中的内容。第三是公共汽车、火车、机场上的报站功能、GPS 导航、语音读物等等。
我们把「产生声音」的能力放在云上之后,人们可以用它进行各种不同的工作。