让计算机开口说话

类别:VC语言 点击:0 评论:0 推荐:

让计算机开口说话

作者 Andy Aaron, Ellen Eide and John F. Pitrelli

向呆板的电子声说再见:新的语音合成系统听起来就像人声,他们可以即时响应。

 

打电话到银行或者航空公司,多数情况下你会听到录音回复而不是由值班人员来接听。通过组合事先录制好的短语,此系统可以恰当地处理银行业务或者诸如定票等业务。虽然拼接的语音听起来不自然,这个系统在处理一定范围内的事务是没问题的,因为此领域的事情是可预见。但是,由于短语需要事先录制,这就限制了它的应用范围。

IBM的语音合成研究者正在攻克一个难题:让计算机说人们所说的一切,并且使声音更自然。例如,我们开发了一个可以读早间新闻或者在电话里朗读电子邮件的系统。就像现在的短语拼接系统,但是我们的是最新的,叫做超级语音(Supervoices),也是基于真人的录音,它可以实时反应。但是不同的是他们可以发出任何的声音,包括所有单词的读音,声音提供者没有读过的。

此技术的直接应用是什么?它们包括播发最新消息,为残疾人读屏幕,通过电话接收E-mail,或者任何具有大词库的系统,并且其内容经常改变或者未预定义的,但是又无法显示的。在将来超级语音(Supervoices)可以提高视频或计算机游戏的可玩性,增强便携设备功能,或者用于电影生产。IBM于2002年底发布了其最新的商业化版本。

跟我说

科学家们模拟人声的尝试始于十八世纪初,当时的Wolfgang von Kempelen用一系列精巧的风箱、簧片、风笛和共鸣腔建造了一个“演说机”,他用它读一些基本的词。到上个世纪七十年代,建于数字计算机上的第一代现代文本朗读系统获得了广泛的应用。制造者们试图借助很少的相关参数直接产生全部的发音。虽然带有机器腔,但是可以理解。90年代以后,更快的计算机和更便宜的数据存储设备使高级的语音合成成为可能。它基于这样的前提:语音是由有限的音素构成,这些音素的重新组合就可以产生任何词(发音)。因此,就像排字工人的铅字匣一样,一套声音样本的录音集,是合成语音的模块。

超级语音就是利用这样的模块模型。对于语言,人们认为它是由一系列的字母或单词构成,软件认为它是一系列的音素。英语大约包括40个音素。例如,单词“please”由四个音素:P, L, EE, Z构成。超级语音有一个含有每一音素发音样本的音素库,当它需要发某个词的音时,它就会把适当的音素样本(发音)拼接到一起。

语音合成始于人声,所以我们特定听力小组就的任务就是从许多声音样本提供者中发现合适的声音。我们经常需要找优美的发音或者圆润的嗓音;清楚的读音以克服口音的问题。有时,我们需要为特殊的应用找特别发音,比如说合成外国人的变形的英语或者机器人的声音以用于电影。被选中的录音者在录音棚里朗读数千的句子,这要花费一周甚至更长的时间。这些句子经过精心挑选,包含不同的内容,以确保我们可以掌握在不同文本中尽可能多的英语语音要素。这样就有了数千的声音文件。

然后,软件将由一系列词构成的文本转换为相应的音素。软件记下每个音素的特征,包括它前后的音素,还有它句子中的位置等。它还可以区别在文本中的动词和名词。例如,声音提供者读“Welcome to my home page,”,软件会将其翻译如下的音素:

W EH L K UH M T OO M I H OW M P AY J,

在句子当中的“page”是名词,句首的音W后跟EN,J是句尾的音。

一旦文本被转化,就可以检查我们的声音文件。我们用韵律学的三个要素来衡量之:音调、时长和响度。这些参数将帮助我们在稍后的例子中决定一个声音是否可用于合成一个给定的短语。音调、时长和响度是动态变化的。我们的度量标准是随着声音文件的进行而变化的。

下一步,利用来自语音识别的技术(从声音到文本的听写程序),软件使相应的音素与文本匹配。通过这种声音文本的序列,我们可以查看录音文件,确定每一个音素的开始和结束。这一点至关重要,一旦我们可以定位和标记音素,我们的软件就可以编码他们,并把他们放入一个可检索的数据库中。

每个英语音素在我们的数据库中平均包含的1000个样本。粗看起来这会存在大量的冗余。其实在不同的语境中,或者不同的人的发音变化极大。例如,让我们看一个音素,在”smooth”中读“OO”。但是在数据库中一些“OO”后跟“L”,例如“pool”,还有位于单词的结尾,如“shampoo”。这些变化会改变“OO”的发音,并且决定我们用那个音素在我们以后的应用中。

有了音素样本库只是问题的一个方面,一旦要合成逼真的语句,我们还需要选择声音的特色。例如,说话者会在停顿之前慢下来,比如说遇到逗号的时候。所以我们需要在逗号前注意停顿。我们对每个声音样本提供者的数据库建立统计模型,用以发现其声音的规律,比如声调的升降、时长和响度。这个统计模型通过自学习这些规律用于在日后的应用中合成更自然的规律。

应用实例

现在我们已经“建立”起来了系统,让我们来试一试它。超级语音的反应时间为毫秒级,可以与人即时交谈。首先我们给它几个句子让它来说,如:“Can we have lunch today?”我们需要先将单词转化为音素,他们是超级语音的模块,我们的句子看起来如下:

K AE N W EE H AE V L UH N CH T OO D AY

Supervoice 标记句子的特征,这是一个问句,第三个单词是一个动词,最后的单词的第二音节重读。

将这些特征输入到统计模型。根据这些特征,超级语音在随后的应用中就可以确定重音、时长和响度。例如,模型可以注意到yes/no问句,并在句尾应用升调。使用这种模式,我们仅需要在数据库中确定音素匹配曲线,并放置正确的音素样本。但是选用那个音素来合成我们的语句呢?我们的句子含有16个音素,可能的组合有1064之多,或者是10,00016,如此大的数目是无法处理的。我们使用一种动态程序更有效地搜索数据库以确定最佳匹配。

当我们将选出的音素组成句子,还有一个平滑优化的问题。虽然每个音素有大量的样本,并且是精心选出的,但是刚刚生成的句子还会有一些不连续,语句的结尾会突然结束,并且会有颤音。我们通过降低音调来调整它,就像木匠通过砂纸和胶水来创造光洁的表面一样。我们逐个第调整音调,使之相互协调,使整个句子听起来就像真人的对话。

发展前景

我们的开发人员自己也经常争论文本朗读技术的终极是什么。符合图灵测试,让人们无法分辨真假?也许不是,应该考虑的是,当人们以为是在同人交谈而实际上是一台机器,发现这一点人们会感到不快。例如他们打电话到一个公司的客户服务中心去的时候。无论如何,下面这些情况下“自然的声音”不是最好的选择,驾驶时提醒睡着的声音,卡通玩具,视频节目或者计算机游戏,这些场合更需要机械一些的声音。而且文本朗读系统可以做一般人无法完成的工作,例如它可以像说母语一样说许多种语言,或者一口气读完整本书也不会疲劳。

这项技术最终的用途可能是这样:一种甜美、富于表现力的声音,让人们不需要适应就听起来舒服。或者开发象人一样的社交技巧,看这个例子:

致电者说:“我最好是乘坐星期二早上的班机去波士顿。”

计算机:“我这里有星期二下午的两个航班去波士顿。”

软件强调下午的能力会化简交流的过程。来电者会自然地理解为早上没有可用的航班,计算机为他提供了一个可选择的方案。否则的话,一个完全没有表现力的系统会使来电者以为计算机误解了他的意思而挂掉电话重打。

对于超级语音这样的技术这依然是一个巨大的挑战,虽然它听起来已经与人声惊人地相象了。毕竟,软件无法理解它所说的,你不可能期望它象第八分类频道一样,在朗读风格上具有富于表现力的变化,并能够解释他或她所读的东西。获得这样的能力,这是我们的一个长久的任务。

——译自 Scientific American  2003年3月17日

本文地址:http://com.8s8s.com/it/it1893.htm