物联网原理与应用技.doc
第六章 语音识别6.1引言物联网的一个关键技术就是要解决人与物之间的关系,这也就是说人能够用语音操控机器,反之,机器能产生人能听懂的语音。与机器进行语音交流,让机器明白你说什么并且机器发出声音告诉你什么,这是人们长期以来梦寐以求的事情。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术,语音识别正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。最新预测表明,随着3G网络的逐渐普及,语音驱动的服务将在3G市场中扮演重要的角色,支持语音识别的各种产品纷纷面世。同时,近几年工业机器人技术和信息家电技术正在向智能化、模块化和系统化的方向发展,开发实用的语音识别和控制系统,对于语音识别技术的普及与应用具有十分重要的意义。人们预计,未来10年内,语音识别技术将开始从实验室走向市场,进入工业、家电、通信、医疗、家庭服务、消费电子产品等各个领域。很多专家都认为语音识别技术是未来若干年信息技术领域重要的科技发展技术之一,尤其是网上语音交互系统有可能取得重大突破。所谓网上语音交互系统就是指人们在网上无需键盘输入命令,直接与计算机(手机)对话,计算机(手机)能通过TTS发出声音朗读文章,当你说出“你好”,计算机也能发出“How are you ”,具有一定的网上语音翻译系统功能。网上语音交互系统是指基于互联网平台,应用语音识别、合成和转换技术,为固定和移动电话用户提供用语音访问互联网并获取网上信息的门户,语音门户融合了语音、CTI、Web、电信、计算机及网络等技术,构筑出新一代语音上网平台,将使更多的用户能够通过各类通信终端快速接入互联网。 当前语音识别主要是基于文本搜索,语音参数与模拟参数相匹配,应用某种不变测度,寻求语音参数与模拟参数之间的相似性,最后结合装有DSP语音板卡一起工作,用似然函数进行判决,这也就是说语音参数与模拟参数匹配是当前语音识别系统的核心。由于HMM模型并不含有语义信息,语音参数与模拟参数的相似度远远比不上语义相似度计算严格。另外,TTS语音反馈信息也缺乏必要的语义抽取,因此,寻找一种语义搜索应用于当前分布式系统语音识别,对提高分布式系统语音识别应用有十分重要的意义,尤其是网上语音交互系统。目前,谷歌将把现有的语音识别和自动翻译技术整合到手机中,并希望能够在几年内开发出基本的架构。如果这一想法能够实现,最终将为全球上千多种语言的用户提供语音翻译服务。 谷歌已经创建了一款能够在电脑上使用的自动文本翻译系统,并且通过对全球数百万个多语种网站和文档的扫描提升了性能。目前为止,该服务已经涵盖了52种语言,上周刚刚增加了对海地克里奥尔语的支持。 谷歌还拥有一款语音识别系统,能够让用户通过手机使用网络搜索功能。只需要说出语音指令,而不需要手动输入文本,即可获得查询结果。 同样,苹果公司语音识别正在为手机搜索作准备,并确立在移动互联网上运行,用户通过苹果公司的语音识别,不但可以在手机上迅速定位音乐,文件,更可以在云计算平台上搜索更多内容。6.2语音识别的发展历史 语音识别的研究工作可以追溯到20世纪50年代AT&T贝尔实验室的Audry系统,它是第一个可以识别十个英文数字的语音识别系统。但真正取得实质性进展,并将其作为一个重要的课题开展研究则是在60年代末70年代初。这首先是因为计算机技术的发展为语音识别的实现提供了硬件和软件的可能,更重要的是语音信号线性预测编码(LPC)技术和动态时间规整(DTW)技术的提出,有效地解决了语音信号的特征提取和不等长匹配问题。这一时期的语音识别主要基于模板匹配原理,研究的领域局限在特定人,小词汇表的孤立词识别,实现了基于线性预测倒谱和DTW技术的特定人孤立词语音识别系统;同时提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。 随着应用领域的扩大,小词汇表、特定人、孤立词等这些对语音识别的约束条件需要放宽,与此同时也带来了许多新的问题:第一,词汇表的扩大使得模板的选取和建立发生困难;第二,连续语音中,各个音素、音节以及词之间没有明显的边界,各个发音单位存在受上下文强烈影响的协同发音现象;第三,非特定人识别时,不同的人说相同的话相应的声学特征有很大的差异,即使相同的人在不同的时间、生理、心理状态下,说同样内容的话也会有很大的差异;第四,识别的语音中有背景噪声或其他干扰。因此原有的模板匹配方法已不再适用。 实验室语音识别研究的巨大突破产生于20世纪80年代末,人们终于在实验室突破了大词汇量、连续语音和非特定人这三大障碍,第一次把这三个特性都集成在一个系统中,比较典型的是卡耐基梅隆大学的Sphinx系统,它是第一个高性能的非特定人、大词汇量连续语音识别系统。 这一时期,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络(ANN)在语音识别中的成功应用。HMM模型的广泛应用应归功于AT&TBell实验室Rabiner等科学家的努力,他们把原本艰涩的HMM纯数学模型工程化,从而为更多研究者了解和认识,从而使统计方法成为了语音识别技术的主流。统计方法将研究者的视线从微观转向宏观,不再刻意追求语音特征的细化,而是更多地从整体平均(统计)的角度来建立最佳的语音识别系统。在声学模型方面,以Markov链为基础的语音序列建模方法HMM(隐式Markov链)比较有效地解决了语音信号短时稳定、长时时变的特性,并且能根据一些基本建模单元构造成连续语音的句子模型,达到了比较高的建模精度和建模灵活性。在语言层面上,通过统计真实大规模语料的词之间同现概率即N元统计模型来区分识别带来的模糊音和同音词。另外,人工神经网络方法、基于文法规则的语言处理机制等也在语音识别中得到了应用。 20世纪90年代前期,许多著名的大公司如IBM、苹果、ATT和NTT都对语音识别系统的实用化研究投以巨资。语音识别技术有一个很好的评估机制,那就是识别的准确率,而这项指标在20世纪90年代中后期实验室研究中得到了不断的提高。比较有代表性的系统有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公NuanceVoice Platform 语音平台,Microsoft的Whisper,Sun的VoiceTone等。 其中IBM公司于1997年开发出汉语ViaVoice语音识别系统,次年又开发出可以识别上海话、广东话和四川话等地方口音的语音识别系统ViaVoice'98。它带有一个32,000词的基本词汇表,可以扩展到65,000词,还包括办公常用词条,具有“纠错机制”,其平均识别率可以达到95%。该系统对新闻语音识别具有较高的精度,是目前具有代表性的汉语连续语音识别系统。 我国语音识别研究工作起步于五十年代,但近年来发展很快。研究水平也从实验室逐步走向实用。从1987年开始执行国家863计划后,国家863智能计算机专家组为语音识别技术研究专门立项,每两年滚动一次。我国语音识别技术的研究水平已经基本上与国外同步,在汉语语音识别技术上还有自己的特点与优势,并达到国际先进水平。中科院自动化所、声学所、清华大学、北京大学、哈尔滨工业大学、上海交通大学、中国科技大学、北京邮电大学、华中科技大学等科研机构都有实验室进行过语音识别方面的研究,其中具有代表性的研究单位为清华大学电子工程系与中科院自动化研究所模式识别国家重点实验室。6.3语音识别应用领域 语音识别技术的应用可以分为两个发展方向:一个方向是大词汇量连续语音识别系统,主要应用于计算机的听写机,以及与电话网或者互联网相结合的语音信息查询服务系统,这些系统都是在计算机平台上实现的;另外一个重要的发展方向是小型化、便携式语音产品的应用,如无线手机上的拨号、汽车设备的语音控制、智能玩具、家电遥控等方面的应用,这些应用系统大都使用专门的硬件系统实现,特别是近几年来迅速发展的语音信号处理专用芯片和语音识别芯片的出现,为其广泛应用创造了极为有利的条件。语音识别专用芯片的应用领域,主要包括以下几个方面:电话通信的语音拨号 特别是在中、高档移动电话上,现已普遍的具有语音拨号的功能。随着语音识别芯片的价格降低,普通电话上也将具备语音拨号的功能。 汽车的语音控制 由于在汽车的行驶过程中,驾驶员的手必须放在方向盘上,因此在汽车上拨打电话,需要使用具有语音拨号功能的免提电话通信方式。此外,对汽车的卫星导航定位系统(GPS)的操作,汽车空调、照明以及音响等设备的操作,同样也可以由语音来方便地控制。 工业控制及医疗领域 当操作人员的眼或手已经被占用的情况下,在增加控制操作时,最好的办法就是增加人与机器的语音交互界面。由语音对机器发出命令,机器用语音做出应答。个人数字助理(PDA)的语音交互界面 PDA的体积很小,人机界面一直是其应用和技术的瓶颈之一。由于在PDA上使用键盘非常不便,因此,现多采用手写体识别的方法输入和查询信息。但是,这种方法仍然让用户感到很不方便。现在业界一致认为,PDA的最佳人机交互界面是以语音作为传输介质的交互方法,并且已有少量应用。随着语音识别技术的提高,可以预见,在不久的将来,语音将成为PDA主要的人机交互界面。智能玩具 通过语音识别技术,我们可以与智能娃娃对话,可以用语音对玩具发出命令,让其完成一些简单的任务,甚至可以制造具有语音锁功能的电子看门狗。智能玩具有很大的市场潜力,而其关键在于降低语音芯片的价格。家电遥控 用语音可以控制电视机、VCD、空调、电扇、窗帘的操作,而且一个遥控器就可以把家中的电器皆用语音控起来,这样,可以让令人头疼的各种电器的操作变得简单易行。除了上文中所提到的应用以外,语音识别专用芯片在其他方面的应用可以说是不胜枚举。随着语音识别专用芯片的技术不断提高,将给人们带来极大的方便。6.4语音识别原理 语音识别是模式识别的一个分支,又从属于信号处理科学领域,同时与语音学、语言学、数理统计及神经生物学等学科有非常密切的关系。 图6.1 语音识别过程未知(待识别)语音经过话筒变换成电信号(即语音信号)后加在识别系统的输入端,首先经过预处理,再根据人的语音特点建立语音模型,对输入的语音信号进行分析,并抽取所需的特征,在此基础上建立语音识别所需的模板。而计算机在识别过程中要根据语音识别的模型,将计算机中存放的语音模板与输入的语音信号的特征进行比较,根据一定的搜索和匹配策略,找出一系列最优的与输入的语音匹配的模板。然后根据此模板的定义,通过查表就可以给出计算机的识别结果。显然,这种最优的结果与特征的选择、语音模型的好坏、模板是否准确都有直接的关系。语音信号识别最重要的一环就是特征参数提取。提取的特征参数必须满足以下的要求: (1)提取的特征参数能有效地代表语音特征,具有很好的区分性; (2)各阶参数之间有良好的独立性; (3)特征参数要计算方便,最好有高效的算法,以保证语音识别的实时实现。特征提取,用于提取语音中反映本质特征的声学参数,如平均能量、平均跨零率、共振峰等。训练,是在识别之前通过让讲话者多次重复语音,从原始语音样本中去除冗余信息,保留关键数据,再按照一定规则对数据加以聚类,形成模式库。最后模式匹配,是整个语音识别系统的核心,它是根据一定规则(如某种距离测度)以及专家知识(如构词规则、语法规则、语义规则等),计算输入特征与库存模式之间的相似度(如匹配距离、似然概率),判断出输入语音的语意信息。 动态时间规整(DTW) 语音信号的端点检测是进行语音识别中的一个基本步骤,它是特征训练和识别的基础。所谓端点检测就是在语音信号中的各种段落(如音素、音节、词素)的始点和终点的位置,从语音信号中排除无声段。在早期,进行端点检测的主要依据是能量、振幅和过零率。但效果往往不明显。60年代日本学者提出了动态时间规整算法(DTW:DynamicTimeWarping)。算法的思想就是把未知量均匀的升长或缩短,直到与参考模式的长度一致。在这一过程中,未知单词的时间轴要不均匀地扭曲或弯折,以使其特征与模型特征对正。 隐马尔可夫法(HMM) 隐马尔可夫法(HMM)是70年代引入语音识别理论的,它的出现使得自然语音识别系统取得了实质性的突破。HMM方法现已成为语音识别的主流技术,目前大多数大词汇量、连续语音的非特定人语音识别系统都是基于HMM模型的。HMM是对语音信号的时间序列结构建立统计模型,将之看作一个数学上的双重随机过程:一个是用具有有限状态数的Markov链来模拟语音信号统计特性变化的隐含的随机过程,另一个是与Markov链的每一个状态相关联的观测序列的随机过程。前者通过后者表现出来,但前者的具体参数是不可测的。人的言语过程实际上就是一个双重随机过程,语音信号本身是一个可观测的时变序列,是由大脑根据语法知识和言语需要(不可观测的状态)发出的音素的参数流。可见HMM合理地模仿了这一过程,很好地描述了语音信号的整体非平稳性和局部平稳性,是较为理想的一种语音模型。 矢量量化(VQ) 矢量量化是一种重要的信号压缩方法。与HMM相比,矢量量化主要适用于小词汇量、孤立词的语音识别中。其过程是:将语音信号波形的k个样点的每一帧,或有k个参数的每一参数帧,构成k维空间中的一个矢量,然后对矢量进行量化。量化时,将k维无限空间划分为M个区域边界,然后将输入矢量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。矢量量化器的设计就是从大量信号样本中训练出好的码书,从实际效果出发寻找到好的失真测度定义公式,设计出最佳的矢量量化系统,用最少的搜索和计算失真的运算量,实现最大可能的平均信噪比。 核心思想可以这样理解:如果一个码书是为某一特定的信源而优化设计的,那么由这一信息源产生的信号与该码书的平均量化失真就应小于其他信息的信号与该码书的平均量化失真,也就是说编码器本身存在区分能力。 在实际的应用过程中,人们还研究了多种降低复杂度的方法,这些方法大致可以分为两类:无记忆的矢量量化和有记忆的矢量量化。无记忆的矢量量化包括树形搜索的矢量量化和多级矢量量化。 神经网络的方法 利用人工神经网络的方法是80年代末期提出的一种新的语音识别方法。人工神经网络(ANN)本质上是一个自适应非线性动力学系统,模拟了人类神经活动的原理,具有自适应性、并行性、鲁棒性、容错性和学习特性,其强的分类能力和输入-输出映射能力在语音识别中都很有吸引力。但由于存在训练、识别时间太长的缺点,目前仍处于实验探索阶段。 由于ANN不能很好地描述语音信号的时间动态特性,所以常把ANN与传统识别方法结合,分别利用各自优点来进行语音识别。 6.5语音识别所面临的问题 (1) 就算法模型方面而言,需要有进一步的突破。目前能看出它的一些明显不足,尤其在中文语音识别方面,语言模型还有待完善,因为语言模型和声学模型正是听写识别的基础,这方面没有突破,语音识别的进展就只能是一句空话。目前使用的语言模型只是一种概率模型,还没有用到以语言学为基础的文法模型,而要使计算机确实理解人类的语言,就必须在这一点上取得进展,这是一个相当艰苦的工作。此外,随着硬件资源的不断发展,一些核心算法如特征提取、搜索算法或者自适应算法将有可能进一步改进。可以相信,半导体和软件技术的共同进步将为语音识别技术的基础性工作带来福音。 (2) 就自适应方面而言,语音识别技术也有待进一步改进。目前,象IBM的ViaVoice都需要用户在使用前进行几百句话的训练,以让计算机适应你的声音特征。这必然限制了语音识别技术的进一步应用,大量的训练不仅让用户感到厌烦,而且加大了系统的负担。并且,不能指望将来的消费电子应用产品也针对单个消费者进行训练。因此,必须在自适应方面有进一步的提高,做到不受特定人、口音或者方言的影响,这实际上也意味着对语言模型的进一步改进。现实世界的用户类型是多种多样的,就声音特征来讲有男音、女音和童音的区别,此外,许多人的发音离标准发音差距甚远,这就涉及到对口音或方言的处理。如果语音识别能做到自动适应大多数人的声线特征,那可能比提高一二个百分点识别率更重要。事实上,ViaVoice的应用前景也因为这一点打了折扣,只有普通话说得很好的用户才可以在其中文版连续语音识别方面取得相对满意的成绩。(3) 就强健性方面而言,语音识别技术需要能排除各种环境因素的影响。目前,对语音识别效果影响最大的就是环境杂音或嗓音,在公共场合,你几乎不可能指望计算机能听懂你的话,来自四面八方的声音让它茫然而不知所措。很显然这极大地限制了语音技术的应用范围,目前,要在嘈杂环境中使用语音识别技术必须有特殊的抗嗓麦克风才能进行,这对多数用户来说是不现实的。在公共场合中,个人能有意识地摒弃环境嗓音并从中获取自己所需要的特定声音,如何让语音识别技术也能达成这一点呢?这的确是一个艰巨的任务。此外,带宽问题也可能影响语音的有效传送,在速率低于1000比特/秒的极低比特率下,语音编码的研究将大大有别于正常情况,比如要在某些带宽特别窄的信道上传输语音,以及水声通信、地下通信、战略及保密话音通信等,要在这些情况下实现有效的语音识别,就必须处理声音信号的特殊特征,如因为带宽而延迟或减损等。语音识别技术要进一步应用,就必须在强健性方面有大的突破。(4) 多语言混合识别以及无限词汇识别方面:简单地说,目前使用的声学模型和语音模型太过于局限,以至用户只能使用特定语音进行特定词汇的识别。如果突然从中文转为英文,或者法文、俄文,计算机就会不知如何反应,而给出一堆不知所云的句子;或者用户偶尔使用了某个专门领域的专业术语,如“信噪比"等,可能也会得到奇怪的反应。这一方面是由于模型的局限,另一方面也受限于硬件资源。随着两方面的技术的进步,将来的语音和声学模型可能会做到将多种语言混合纳入,用户因此就可以不必在语种之间来回切换。此外,对于声学模型的进一步改进,以及以语义学为基础的语言模型的改进,也能帮助用户尽可能别。 6.6 SALT WEB应用开发方法物联网的定义是什么?有人认为物联网就是指各类传感器和现有的互联网衔接的一种技术。这个定义似乎简单了一点。IIU(国际电讯联盟)这样描述物联网:“通过各种物体上嵌入短距离移动收发装置,人类在信息与通信世界里获得一个新的沟通空间,从任何时间任何地点的人与人之间的沟通直接到人与物和物与物之间的沟通连接。”这样解释似乎精确一些,其实要解释人与物在互联网上沟通,在Web平台上Microsoft SALT软件正好是一种解决问题有力的开发工具。SALT体系结构SALT是将语音接口用于HTML文档和XML元素中的一个子集,它允许开发者自由地在网页中增加语音对话接口。一般而言,WEB SALT系统具有以下特点: (1)开放式体系结构。采用最新的SALT技术标准和B/S模式,支持分布式流程部署,采用ASP.NET技术实现与其他WEB应用的集成; (2)高度的适应性。支持Windows操作系统,支持多种数据库和多种CTI接口; (3)方便的图形化界面。支持语音流程编辑,支持语音识别;(4)完备的配置管理。提供完善的安装、配置、管理、监控和日志工具;图6.2是SALT的体系结构。图6.2 SALT体系结构基于SALT的Web应用要使用语音功能,必须要具备以下四个组成部分:(1)Web服务商。Web服务商提供Web页面,包含HTML,SALT和内嵌Script,用Script来控制提供声音交互的对话流。如图6.2中所示。(2)电话服务。电话提供商负责连接电话网络,他们结合声音浏览器对HTML,SALT以及Script进行解释。如图6.2中所示。(3)语音服务。语言平台需要提供语音识别、播放声音提示以及给出用户响应。如图6.2中所示。(4)客户端设备。对于单一的语音应用,一部电话就够了;而对于多模式应用,客户端需要包括一部装有微软IE浏览器软件的移动客户端或PC,并且该浏览器版本必须支持SALT应用。如图6.2中所示。 目前,支持SALT标准的主要产品和开发工具有:微软的SASDK,飞利浦基于Java 2的SALT浏览器,美国Kirusa公司的SoftServer,美国HeyAnita公司的FreeSpeech Platform,卡耐基·梅隆大学的OpenSAIT等。微软的SALT语音开发工具包(Speech Application Software Development Kit,SASDK)能够无缝嵌入到Visual Studio .NET中。SASDK可以让Web开发人员创建、调试和部署支持语音的Microsoft ASP.NET Web应用程序,这些应用程序适用于多种设备,包括电话、基于Microsoft Windows Mobile的设备以及桌面计算机等。SASDK提供了全套的开发工具,可用来设计在多种客户端上运行的、支持语音的Web应用程序。SASDK还提供了一组功能强大的ASP.NET语音控件、一个适用于Microsoft Internet Explorer的语音外接程序、一个适用于Microsoft Pocket Internet Explorer的语音外接程序、一个内容丰富的语法库和语音调试工具以及一个事件日志记录工具。6.6.1 SALT控件元素SALT控件有三个最顶级的属性元素:<listen>,<prompt>和<dtmf>。其中<listen>和<dtmf>属性又包含<bind>和<grammar>属性,同时<listen>元素也支持<record>属性。下面分别介绍它们。<listen> 该属性控件用于语音输入,根据指定语法规则来处理语音识别的方式方法,同时也用于记录语音输入(比如声音信息)。因此,它包含了<grammar>,<record>和<bind>属性和一些处理语音资源的事件以及配置识别属性,还包含一些语法的激活和去活的方法,可以控制语音识别的开始和停止。下面举一个简单的语音识别例子:<salt:listen id="travel"><salt:grammar src=". /city. xml"/><salt:bind targetElement="txtBoxOriginCity"value="/result/origin_ city"/)</salt:listen>listen属性还可以通过程序或脚本文件调用Start()方法。而对应<listen>属性需要完成语音识别的处理,包括对成功、不成功识别以及超时,其他的语音事件和每个识别开关都可以通过指明超时时间,识别置信度或其他一些相关参数来完成配置。<grammar>该属性用来指明相关语法,嵌入或者引用。一个<listen>属性可以被赋予多个语法,在<listen>属性设置中,在识别开始以前可以通过方法对单个语法进行激活和去活。<bind>该属性可以用于对变量或控件的相关值进行识别结果的赋值,即在语音识别时可以将识别结果直接传递到相应绑定的变量或者平台控件(比如C#中的列表控件或者文本控件)。在<listen>属性中,它可选择进行多重绑定。识别结果往往通过XML文档形式进行返回,因此<bind>属性在其值属性中用XPath来指定一个特定的节点存放返回结果,同时在测试属性下,用一个XML模式的查询来指明绑定条件。如果条件为真,节点的值就被赋给指定的页面目标元素的相应属性值。下面举一个简单的例子:<result text="I'd like to go to London, please" confidence="0.45"><dest_city text="to London" confidence="0.55"> London </dest_city></result>下面代码中绑定状态将节点“dest city”的值赋给XHTML元素txtBoxDest,而在"dest_city”的预设条件中设置其置信度“confidence”的属性值为大于0.4:<input name="txtBoxDestCity" type="text"/><salt:listen><salt:bind targetElement="LxtBoxDestCity"value="/result/dest_ city"test-"/result/dest_ cityconfidence >0.4"/></salt:listen>所以绑定元素是一个简单的处理识别结果的方法。对于更多复杂的处理,在onReco事件处理中可以通过编程方式或在浏览器的脚本文件中调用来完成。<record> 该属性用于指明声音记录参数和其他一些语音输入的相关信息。记录的结果也可以在<bind>中得到处理,或者在浏览器脚本代码中完成。<prompt> 该属性被用于指明系统语音或文本输出。它可以是简单的文本,语音输出标记,变量值,声音文件的链接,或者这些的复合输出。<prompt>属性一般是在脚本代码或者SMIL浏览器,或者脚本文件中的对象方法中来执行。为了使SALT应用具有交互性,SALT用户将支持W3C标准。<salt:prompt id=""ConfirmTravea”>So you want to travel from<salt:value targetElement="txtBoxOriginCity"' targetAttribute="value"/>to<salt:value targetElemen=“txtBoxDestCity"' targetAttribute="value"/>?</salt:prompt><prompt>也具有<start>,<stop>,<pause>和<resume prompt playback>,以及<alter speed>和<volume>属性。<dtmf> 该属性用于电话应用中指明DTMF语法来处理键盘输入和其他事件。比如<listen>属性,它的属性要素是<grammar>和<bind>,同时它也包含DTMF的一些资源配置来处理DTMF按键和超时。对于<listen>属性它可以通过编程方式用<start>和<stop>命令来执行。和LISTEN控件类似,<dtmf>也包含了<grammar)和<bind>属性。下面的例子说明了通过grammar和bind属性如何监听和获取电话号码。<salt:dtmf id-"dmtfPhoneNumber"><salt:grammar src="7digits.gram"/><salt:bind value="/result/phoneNumber" targetElement="iptPhoneNumber"/></salt:dtmf>dtmf元素的配置包括超时设置和其他属性设置。并且还包括了键盘处理事件,规则的dtmf序列和语法规则外的输入。事件处理 根据上面的介绍,SALT的元素是页面文档模型(DOM)中的XML对象。这样,每个SALT元素都包含了方法、属性以及脚本中可以调用的事件处理,这样在网页执行过程中也可以和其他事件进行交互。这就允许SALT的语音接口很好地和网页应用进行综合。例如,<listen>、<prompt>和<dtmf>都包含了不同的方法来控制控件的开始和结束。另外,它们还包含配置和结果存储以及事件处理属性,同时还包含语音相关的事件。因此当识别结果被成功返回时,事件"onReco”被绑定在<listen>属性,如果在播放用户提示时,一旦收到用户输入,“onBargain”事件就会激活。下面的例子是多模式网页应用,当用户点击一个输入域时激活start方法,实现click-to-talk的交互模式。<input name=" txtBoxDestCity" type="text"onclick="recoDestCity.Start()”/><salt:lis七en id="recoDestCity"><salt:grammar src="city.xml“/><salt:bind targetElement="txtBoxDestCity" value="/result/city"/></salt:listen><input type=""button"" onclick="recoFromTo.Start()”value="Say From andTo Cities"/><input name="txtBoxOriginCity" type="text"/><input name="txtBoxDestCity" type="text"/><salt:listen id="recoFromTo"><salt:grammar src="FromToCity.xml"/><salt:bind targetElement="txtBoxOriginCity"value=”/result/originCity"/><salt:bind targetElement="txtBoxDestCity"value="/result/destCity"/></salt:listen>6.6.2对话流程 本节介绍了一个简单地用client-side脚本完成的对话流程管理例子。SALT根据RunAsk()脚本函数去激活<listen>和<prompt>。为了说明程序执行结果,识别结果被绑定在相关的输入域,通过脚本函数procOriginCity()和procDestCity()来完成,它们将会通过和<listen>相关的onReco事件来触发。onNoReco事件用于在收到不可识别的语音输入时来播放适当的提示信息SayDidntUnderstand提示。<!一一HTML一><html xmlns:salt="urn:saltforum.org/schemas/020124"><body onload="RunAsk()“><form id="travelForm"><input name="txtBoxOriginCity" type="text"/><input name="txtBoxDestCity" type=“text"/></form><!一一Speech Application Language Tags一><salt:prompt id="askOriginCity"> Where would you like to leave from?</salt:prompt><salt:prompt id="askDestCity"> Where would you like to go to?</salt:prompt><salt:prompt id="sayDidntUnderstand" onComplete="runAsk()">Sorry, I didn't understand.</salt:prompt><salt:listen id="reco0riginCity"'onReco="procOriginCity()"onNoReco="sayDidntUnderstand.Start()"><salt:grammar src="city.xml“/></salt:listen><salt:listen id="recoDestCity"onReco="procDestCity()"onNoReco="sayDidntUnderstand.Start()"><salt:grammar src="city.xml""/)</salt:listen><!-script-><script>function RunAsk() if (travelForm.txtBoxOriginCity.value="") askOriginCity.Start(); reco0riginCity.Start(); )else if (travelForm.txtBoxDestCity.value="") askDestCity.Start(); recoDestCity.Start(); function procOriginCity() travelForm.txtBoxOriginCity.value=reco0riginCity.text; RunAsk();function procDestCity() travelForm.txtBoxDestCity.value=recoDestCity.text; travelForm.submit();</script></body></html>以上对SALT技术应用过程中将会用到的一些知识作了简要介绍和说明,通过简单的例程,展现了SALT技术在网页设计中如何完成语音平台和网络开发平台的整合。基于SALT的语音识别WEB应用实例系统功能本节在上述理论方法的基础上开发完成一个基于SALT的语音识别系统,它不但有自己的独立功能模块,而且还可以附加其他功能模块或其他子系统集成为一个企业语音平台,比如构建一个企业呼叫中心。该实例具备下列一些功能:(1)语音合成在语音识别系统中,存在许多语音播放效果,