新浪博客

《科学世界》:智能语音技术——让计算机能听会说

2015-07-01 16:16阅读:
《科学世界》:智能语音技术——让计算机能听会说

作者:《科学世界》记者/方晨

智能语音技术的应用日益普及,现在计算机已经可以进行实时语音翻译。机器到底是如何学会“听懂”一个人说的话,并翻译成另一种语言后再说出来?《科学世界》专访了微软亚洲研究院首席研究员宋謌平博士,请他为我们介绍其中的奥妙。

说话是我们人类最自然、最方便的交流方式。过去,会说话的机器人还只是出现在科幻作品中,但近年来这种技术已逐渐进入我们的生活,你或许已经使用过智能手机上的语音助手,或在开车时用过语音导航。前不久,微软推出了Skype Translator中文预览版,可以实现中英文之间的实时语音互译,也就是将一个人说的话用对方的语言说出来,让两位只会说各自的母语的用户直接对谈。那么,计算机是如何学会听懂对话内容并翻译成另一种语言说出来的?

智能语音翻译包括3个环节

科学世界:您是什么时候开始研究语音的?

宋謌平: 我个人做语音的研究工作已经超过30年。我是从念研究生的时候就开始做,后来加入美国贝尔实验室,在那儿工作了20年,然后在又应邀在日本的先端语音研究院工作了两年,2004年加入微软亚洲研究院,到现在已经超过10年了。在整个过程中,我基本上做的都是语音的研究,包括说话人识别、语音合成,识别、编码、抗噪、增强等等。

微软研究院的创始人里克•雷斯特(Rick Rashid)首次提出了微软亚洲研究院要做一个不同语言间的口语翻译的项目(Speech-to-Speech),把看似不可能的梦想变为可能。这个翻译系统研究我们做了许多年,我也是最早参与这个计划的人之一,这个项目主要由微软的雷蒙德和北京两个研究院负责。

科学世界:实时语音翻译技术包括哪些内容?

宋謌平:语音到语音的翻译系统,基本上可以分成三个模块:语音识别、机器翻译和语音合成。甲跟乙说话,我们要做一个甲说的语言的语音识别,把它听出来,然后把语音变成一串词组,中文的话就是汉字;有了文字以后,第二步是机器翻译,就是把甲说的文字翻译成乙可以理解的语言文字;最后,有了文字以后,还要把它试着用模拟甲的语音,可是用乙的语言(甲不会说)说出来。同时,从乙到甲的对话,次序都都反过来。这两个沟通方向,可以说可逆,也可以说不可逆。因为两种语言,它的结构、词汇、发音的组成都很不一样,不同方向的语音翻译很可能有不同的困难。这三个模块,我们语音组负责语音识别和语音合成这两部分,机器翻译由自然语言计算组负责。

有人说为什么要那么复杂,大家都用键盘打字不就可以了?但是现在很多终端上的键盘和屏幕都很小,打字不好打,阅读显示的文字也比较费力。另外,许多情况下打字没有说话快。人机沟通,只要能够说得清晰、听得懂,语音是一种很好的交互界面。

我们当初做语音翻译,听起来就是一个梦想。做了几年之后,201210月,在天津召开的“二十一世纪的计算”学术研讨会上,我们做了一个现场展示,就是里克•雷斯特在台上用英文演讲,同时机器识别、翻译,并用他的中文语音合成再说出来。

《科学世界》:智能语音技术——让计算机能听会说

我们当初做语音翻译,听起来就是一个梦想。做了几年之后,201210月,在天津召开的“二十一世纪的计算”学术研讨会上,我们做了一个现场展示,就是里克•雷斯特在台上用英文演讲,同时机器识别、翻译,并用他的中文语音合成再说出来。

科学世界:那是英文和中文之间的翻译?

宋謌平对。语音识别技术把里克•雷斯特说的英语识别出来,在大屏幕上显示出英文。大概最多1秒钟的迟滞,这就是语音识别的过程。认出英文以后,机器翻译成中文。翻译过程中有些因为中英文表达语序不同,所以还要重组后再做翻译。最后是语音合成器把文字变成语音。我们用里克•雷斯特说英文的语料,训练了一个说中文的系统,而且语音听起来像他本人。

《科学世界》:智能语音技术——让计算机能听会说

科学世界:那么现在这方面有什么实际的应用?

宋謌平现在通过Skype Translator,我们把它产品化、服务化。这个基本上包括了刚才讲的整个语音识别、机器翻译,还有语音合成的过程。现在我们有Windows PhoneSkype等平台来实现人与人之间的沟通。Skype Translator是这一种产品的先锋,希望通过它,使只能说不同语言的人相互沟通。另外并实现人和机器之间的沟通。

让计算机听懂人的语言


科学世界:回到语音翻译的第一步,语音识别。计算机是怎么听懂人说的语言?

宋謌平你说机器能够“听懂”,我稍微修正一下,语音识别不完全等于“听懂”,但至少是要让它“听到”。如果机器真的能够直接全“听懂”,机器翻译也就不是问题了。就像我们看抽象画,每种颜色都认得,每个线条都知道,但说不定还是不明白这张抽象画是什么意思。也就是说“听到”和“听懂”之间还是有距离。

目前来讲,语音识别比“听到”可能更进了一步,因为在这个过程中,我们也利用了一些文法、词汇和习惯的说法来帮助机器“听到”,也就是说“听到”的过程中也有一些“听懂”的成分。语言或者语音的规律里,与“听懂”、“听到”都有些关系。我们希望机器不但能够清楚地听到对方说了哪些词,还能听出来是谁说的,甚至连说话时的某些情绪都能识别出来。不过,纯粹的语音识别就是要听到,希望对你说的每一个词都能够听清楚,都没有听错。

其实所有的识别,不管是图像识别还是语音识别,基本上都是一个比对的学习过程。就像小孩听父母说话、跟着学语一样,首先要让他听到,而且要通过互动来强化他的意识,让他把具体的内容和听到的声音联系起来。这就是一个学习或者训练的过程。我们也是提供数据、语料,通过训练告诉机器这些语料说的是什么内容。我们希望利用匹配好的文字和语音去训练语音识别器(用于识别语音的计算机程序)。当然,语音、语言的变化是无穷的,你不可能把世界上所有人的语音全部录下来去做比对。第一,数据量太大了;第二,人们说话总是会有一些新的内容,不可能穷尽。所以我们希望利用一个基于统计的识别模式来实现这个技术。统计的方法和我们总结现象的物理定律类似:也就是通过大量的观察和数据分析,归纳出一种最简单的方式,可以去解释现有的和未来的新数据。表示这些数据之间的关系就是一个统计模型,现在有些用马尔可夫模型,有些用比对的程序,或者用机器的深度学习和深层神经网络等,其实它们要达到的最终的目的都相同。

计算机通过学习和训练的过程,产生了一个模型,这个模型一方面可以用来解释训练数据,另外更重要的是解释一些将要被测试的数据。测试数据和训练数据始终是会有一些差别,不论是噪声的多寡、离麦克风的远近、说话人的相似或不同、发音的含混度、有没有口音、高低起伏,抑扬顿挫的变化,这些都会影响到最终识别的效果。对这些数据的解释的准确性,直接与之前在训练中有没有解释过类似的数据有关。

科学世界:这些语料信息,都要数字化吗?

宋謌平都要把它数字化。整个模型就是一个数字模型,而且是一个经过极度压缩的数字模型。因为如果要把所有东西都放进来对比,会比到天长地久。

要让模型对于没有见过的数据进行适当的比对,而且还要尽可能少出错,这个模型本身就需要有高精度和抗噪性。因此,训练它的语料需要包括尽可能多的变量,比如说噪音、距离麦克风的远近、不同的手机、说话的环境、口音、情绪等等。让机器在这些变量当中去寻找那些是不变的内容,也就是要识别出它说了哪些话。这是一个“异中求同”的过程。

做语音识别,不仅要求训练数据越多越好,还要求训练数据有代表性,能够尽量包括可能的变量。训练数据的来源有很多,包括翻译的网页、配有字幕的视频,以及经过翻译并转录成文字的对话等。

虽然这永远是一个夸父追日的过程,训练得再多也永远不够,可是你如果能够多收一些数据,机器就能多学一点。这和小孩学语言类似,听得越多,互动越多,矫正也就越多,效果就越好。

我们前面展示的应用,用来训练的语料的时间长度差不多是2000个小时语音库,包括了几千个人说的话。经过这样训练的系统,对任何人说的英文,只要他说得比较标准、口音不很重,都可以识别了。

科学世界:一般人会觉得奇怪,计算机怎么能自己学习,或者接受训练?

宋謌平其实很简单。可以通过一个反馈系统来学习,它包括了正向和逆向的反馈:你做(说)对了,我给你奖赏,这是正向反馈;你做(说)错了,我给你惩罚,这是逆向反馈。利用正向和逆向的反馈,就可以不断加强机器的识别能力。

对所有的训练数据,你都知道这些数据的真正内容是什么。如果这次机器识别错了,那么这个地方得要加强一些(也就是调整模型中的相关参数)把它矫正过来;如果它认对了,那很好;可是如果不是很对,就可能需要再加强一点。经过不断训练,识别的准确率就会逐步提高。

我们需要把数据分成两个部分,一部分叫做训练数据,另一部分叫做确认数据(Validation Data)。用训练数据训练出来的模型去比对确认数据,来看训练的模型是不是足够准确,再决定是不是还需要继续训练。目前来讲,最有效的就是利用深层神经网络(Deep Neural Networks, DNN)的学习。

《科学世界》:智能语音技术——让计算机能听会说

科学世界:什么是深层神经网络?

宋謌平神经网络是一种能够“一般化”的统计模型。

其实神经网络很早就有过研究,在20世纪80年代后期和90年代初期,那时计算机的运算和存储能力都还不够强大,虽然那时候已发现神经网络较诸典型的统计模型有较强的学习功能,但还是不及传统的统计模型做得好,所以神经网络的研究又偃息旗鼓,淡下来了。近年来,当计算机的存储和计算能力,有了大幅度的提升,于是它又重新受到关注。

深层神经网络具有一些特定的结构。所谓“深层”是指与传统的神经网络相比,它具有更多的层次。神经网络的每一层里面都有输入和输出的节点,这些节点都可以互联连接,它们互相之间的联系,可以是强联系、弱联系,可以是正联系、负联系。这些加权的参数值,都是经过整个数据库训练,通过有效快速的学习算法算出它们的最优关系值。

比如说,最后输出的结果有的错误,有的正确,那么就要看神经网络中的那些“神经元”之间的关系,是哪个部分使它识别犯错,又是哪个部分让它识别正确了。有了这些线索,我们就可以用正向、逆向的反馈学习机制去调整相关的权重。权重不断地学习调整,就是训练神经网络的进程。

科学世界:神经网络各层之间是什么关系?

宋謌平通常最底层是输入。当中是多层网络,每一层,都有输入和输出。从下到上基本是“见微知著”,从“微观”慢慢进到了“宏观”的过程。先是识别出一些局部和细节的东西,然后再逐渐组合成某个完整的大样。比如识别猫的话,很可能起先是看到一根胡须或者面部的粗略线条,慢慢组合出耳朵、眼睛等等。一层层往上,可识别出有代表性的东西就越来越多。所以这种识别不会“见树不见林”,而是“既见树又见林”。我们发现,利用深层神经网络得到的结果,与原来最好的系统相比,语音识别的错误减少了30%
语音识别的典型深层神经网络结构示意图
《科学世界》:智能语音技术——让计算机能听会说

科学世界:神经网络如何处理输入的音频?

宋謌平语音信号本身是一个动态的进程,把我们说的话记录下来,看声音频率随时间的变化,实际上是一个很连续的轨迹,这个轨迹里面有一些最基本的东西,叫做音位或音素。就像我们身边的物质都是由原子、分子组成的,语音则是由音素组成的。音素经过不同的组合,就成了不同的音节、字和词,短语,句子等等。在语音识别时,就要把语音资料分解成一个个很小的单位,即音素,然后再对这些音素之间的关系进行统计、分析。经过训练,机器最后不但要“听到”这些音素组成的音节,字词,短语等,还要能“听懂”。

《科学世界》:智能语音技术——让计算机能听会说
音频的时间变化

例如这张图片,是两个人说话的音频,一个是女声,一个是男声,但说的文字内容完全一样。黑白表示声音的强度,越黑表示强度(功率)越强。在同一个时刻,在不同频率的声音强度是不同的。在对这个音频进行处理时,先要把它分解成很小的单元,也就是将频率(纵坐标)的变化在时间(横坐标)上切成一小片,一小片。从图中可以看到,虽然一是男声,一是女声,声音的大小和频率的变化都不太相同,可是“观其大概”,又可看出它们有一些共性,这些共性被一般化以后就可以被记录学习在神经网络的统计模型里。下次输入具有这些共性特征的新的音频时,系统经过解码的过程,就可以识别出这句话的内容。如像两只不同的猫,虽然它们的毛色等可能不同,但它们的形态都具有一些共性,我们的大脑经过多次识别训练后,就可以根据这些共性认出它们都是猫。

科学世界:在分解音频的时候,相当于每一个时刻都得到一个频率的谱。

宋謌平是的。要分解得非常细,10毫秒就要切一片(在语音分析上我们称为“一帧”),解析度相当于1秒钟的语音要分成100份。其中任何一帧,都可以看到它在某个频率上的能量分布,有些频率上能量比较高,有些频率上则比较低。

同时,可以看它左右的相关的内容是否相似。也就是说在时间上,不仅要看其中的某一帧,同时要看各帧之间的变化量。在某些地方几乎没什么变化,但有的时候突然能量上升,变化量很大,这实际上可能就是语音中的爆破音。把这些不同的数据结构结合在一起,就可以更确定地判断它是哪个音了。

解码是一个动态搜索的过程,他的算法称为动态规划。透过动态规划,我们可以找到所有的可能性,这是一个高效率的超大搜索。动态搜索中所有不可能的情况都被及早放弃,一边搜,一边扔。

科学世界:有一个概念叫“协同发音”,是什么意思?

我的更多文章

下载客户端阅读体验更佳

APP专享