关于XML在语音合成中的应用

作者:网络 来源:佚名 更新时间:2008-09-19 10:52:55 点击:

    互联网以及和它相关的一切现在似乎随处可见。您也许已经试过接到夜间电话推销员的语音电话、又或者曾经接到过当地药店给您的处方通知。现在,有一种新技术可以使用语音合成结合xml技术传送语音信息了。


    以语音传递信息的手段并不是什么新东西。它是我们几千年来一直使用的交流方法。而且,从一台计算机那里接收到电话也并非什么新发明。许多语音技术到现在已经大行其道了,从传真机、自动拨号器到集成语音回复系统(ivr)。电话当然是它最普遍的应用。

    传统的语音系统使用预先录制好的样本、词典和音素来创建我们所听到的声音。然而,使用这种预先录制的手段有很多问题。其中最普遍的问题之一就是缺少连贯性和变化。如果只有一种录制好的语音版本,其中每个单词或者声音都只有一个样本,那么很难让计算机发出和普通陈述语句不同语调的疑问句。同样困难的是让计算机知道何时该用某种语调或者该用何种语调发音。

    为了帮助解决语音合成问题,w3c为语音合成标记语言(speech synthesis markup language)创建了一种新的工作草稿。这种新的xml词汇表可以使语音浏览器开发人员能够控制一个语音合成器的创建方法。例如,开发者可以将命令包含进音量中,并在合成语音模式的时候使用它。

    ssml规范基于sun公司早期的一项名为jspeeck markup language(jsml)的研究工作。jsml则是基于java speech api markup language。现在ssml是w3c语音研究工作组的工作稿。

    ssml语言的基本目标是一个文本到语音(text-to-speech简称tts)的处理器。一个tts引擎获得一个文本的集合并将它转换为语音。现在已经有了几种tts应用程序了,例如电话语音合成回复系统,以及为盲人设计的更高级的系统等等。特定文本集合的发音本身固有的不确定性是现有tts系统的所面临的主要难题之一。其他普遍一点的问题集中在单词简写(如html)、拼写和发音不同的单词(如subpoena)等词类的发音上。

    ssml语言的基础元素指定了文本的格式。例如针对html,ssml语言提供了一种段落元素而且走得更远。因为它还提供了句子元素。通过像指定段落一样指定句子的地址,包括起始地址和终止地址,tts引擎就能更精确的生成语音。

    除了基本的格式,ssml还提供了功能来指定如何发某个预定的词语或者词语集合。这个功能由“say-as”元素来实现。它是ssml中一个非常有用的组件。它能让你指定一个模板,这个模板描述如何发音某个单词或者单词集合。通过“say-as”,我们可以为缩写的单词指定如何发音,也可以为拼写与发音不同的单词指定发音。我们还可以列出数字和日期之间的区别。“say-as”元素包含了对email地址、货币和电话号码等的支持。

    我们也可以对文本提供一种语音学上的表达方式。例如,我们可以通过这种手段来指出美式英语和英式英语对potato单词发音的不同。

    ssml语言的几个高级属性可以帮助我们让tts系统生成更人性化的声音。我们可以使用“voice”元素指定男声、女声或者中性的声音,而且还可以指定声音所属的年龄。我们可以使用这个元素来指定从4岁的男孩到75岁的老妇之间的任何声音。

    我们还可以使用“emphasis”元素环绕那些需要强调或者比较次要的文本。我们还可以使用“break”元素告诉系统语音在某处应该暂停。

    ssml语言最高级地特性之一体现在它地“prosody”元素上。通过它我们可以以某种指定地方式生成某个确定的文本集合的语音。我们可以指定声音的语调、范围、语速(单词每分钟)。我们甚至可以通过使用“contour”元素指定更细节的东西。“contour”元素把语调和语速集成在了一起。通过指定一个文本集合的“contour”元素值,我们可以更精确的定义如何生成语音。