(微电子学与固体电子学专业论文)基于tts的有声网页组件webvoice的设计与实现.pdf_第1页
(微电子学与固体电子学专业论文)基于tts的有声网页组件webvoice的设计与实现.pdf_第2页
(微电子学与固体电子学专业论文)基于tts的有声网页组件webvoice的设计与实现.pdf_第3页
(微电子学与固体电子学专业论文)基于tts的有声网页组件webvoice的设计与实现.pdf_第4页
(微电子学与固体电子学专业论文)基于tts的有声网页组件webvoice的设计与实现.pdf_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中山大学硕士学位论文 论文题目:基于t t s 的有声网页组件w e b v o i o e 的设计与实现 专业:微电子与固体电子学 硕士生:廖华江 指导老师:彭自成副教授 摘要 计算机语音技术近年来得到了长足的发展,部分关键技术也已得到了突破, 是近年来研究和开发的热点。特别在文本转语音领域,已取得了较多实用成果, 有些已成功地转化为产品。微软和m m 等国际软件巨头份份推出自己的语音开 发平台和产品,其中微软的m i c r o s o f ts p e e c hs d k 是目前应用得最广泛的语音开 发平台之一。 本文的工作是将微软m i c r o s o f t :s p e e c hs d k5 1 中的文本转语音 ( 1 橛t - 1 盼s p e 。也t t s ) 应用于微软i n t e r a c te x p l o r e 浏览器功能扩展,是将语 音技术应用于w e b 页面的尝试,改变现在w e b 页面主要由文本,图片或动画等 无声信息构成的状况,构造一个有声的、更加人性化的w e b 世界,具有一定的 创新性与实用性。 本文按照微软的i eb a n d 插件开发标准,设计并实现了一个嵌入于m 中的 工具条组件w e b v o i c e ,该组件可以对用户选定的网页内容进行发声朗读,实现 了有声网页的功能。 本文涉及的工作主要包括以下几个方面: 1 对微软的语音开发平台m i c r o s o f ts p e e c hs d k 的使用进行了研究,特别 是对于应用r r s 开发文本转语音应用软件进行了较深入的钻研。并且 为了适用本文的应用需要,对1 r s 中的i s p v o i c e 接口进行适当的封装 与改进,使其更加符合面向对象的使用习惯。 2 对微软的c o m 组件技术进行系统的学习与研究,并对微软i eb a n d 的 扩展编程规范进行了详细地了解与学习,成功地开发了一个嵌入到m 中山人学顾j 学位论上 中的工具条,扩展了i e 的功能。 3 为使w e b v o i c e 组件能适用网页中的各种文本,本文提出了一种简便实 用的算法,能识别文本中的中文和英文字符,在中文和英文发音中自动 切换,从面实现了中英文混读的功能。 关键词:文语转换( t t s ) 、c o m 组件、b a n d 、接口 中山大学硕士学位论文 t i t l e :t h ed e s i g na n dr e a l i z a t i o no fap r o n u n c i a t i o nw e bc o m p o n e n t w e b v 矾e eb a s e do nt t s m a j o r :m i c r o e l e c t r o n i c sa n ds o l i ds t a t ee l e c t r o n i c s n a m e :h u a j i a n gl i a o s u p e r v i s o r :a s s o c i a t ep r o f e s s o rz i c h e n gp e n g a b s t r a c t t h ec o m p u t e rp r o n u n c i a t i o nt e c h n o l o g yh a sg o tr a p i dp r o g r e s si nr e c e n ty e a r s , s o m ek e yt e c h n o l o g yh a sa l r e a d yg o tab r k t l l m u 出t os t u d ya n dd e v e l o pt h e c o m p u t e rp r o n u n c i a t i o nt e c h n o l o g yh a sb e c o m i n gt h eh o ts p o tf i e l d , e s p e c i a l l yi nt h e f i e l do f t t s ( t e x t - t o - s p e e c h ) ,h a sg o tm a n yp r a g m a t i ca c h i e v e m e n t , t h e r ea r ea l r e a d y q t n ea p p l i c a t i o np r o d u c tw e r ep u ti n t ou s e s o m es o f tc o m p a n yi n c l u d em i c r o s o f t a n dm m p r o m o t ct h e i rp r o n u n c i a t i o nd e v e l o p i n gp l a t f o r ma n dp r o d u m , a m o n gt h e m m i c r o s o f ts p e e c hs d ki so n eo ft h eb r o a d e s tp r o n u n c i a t i o nd e v e l o p sp l a t f o r m 破 p r 雠n l t h i sa r t i c l ei sat r i a lt oa p p l y - r r st oe x t e n d e di e sf u n c t i o n , a n da p p l i e s p r o n u n c i a t i o nt e c h n o l o g y t ow e bp a g e n o ww e bp a g ei sc o m p o s e do fs i l e n t i n f o r m a t i o ns u c ha st e x t p h o t o g r a p ho ra n i m a t e de a l t o o nm a i n l y , p r o n u n c i a t i o n t c c l m o l o g yw i l lm a k et h ew e bw o r l dh a v i n gs o u n da n dm o r ep e r s o n a l i z a t i o n a o r , o r d i n g t oi eb a n dd e v e l o p s s t a n d a r d ih a v ed e s i g n e da n dr e a l i z e da i m p l e m e n tm o d u l ew e b v o i i m p l a n t i n gi ni eb r o w s e r w h i c he n a b l et h ei eb r o w s e r r e a da l o u dt h ew e bc o n t e n tw h i c ht h eu s 盯s d c c t e d r e a l i z e dt h ew e bp a g e p r o n u n c i a t i o n t h em a i nj o bo ft h i sa r t i c l ei sm a i n l yr e l a t e dt oi n c l u d es e v e r a lo f t h e f o l l o w i n ga s p e c t : 1 h a v es t u d i e dt h es t r u c t u r ea n du s eo f m i c r o s o f ts p e e c hs d k 5 1 e s p e c i a l l y t t s b et oa p p l yt ot h i sa r t i c l e sa p p l i c a t i o n , c a r r yo u tt h e 印l o r o p r i a t e e n c a p s u l a t i o no ni s p v o i c ei n t e r f a c e 2 m a k et h o r o u g hs t u d ya n dr e s e a r c ho fm i c r o s o f tc o m t e c h n o l o g y s t u d y i n g d e t a l l yo fm i c r o s o f ti e 翩x p a n s i o np r o g r a m m i n gt e c h n o l o g y , e s p e c i a l l yt h e m 中山人学钡i 学位论上 d e v e l o p m e n tt e c h n o l o g yo fi eb a n d h a v i n gd e v e l o p e dai m p l a n tm o d u l e s u c c e s s f u l l yw h i c he x p a n di e sf u n c t i o n 3 f o rw e b v o i c em o d u l ec a l l a p p l yt ov a r i o u sw e bp a g e , t h i sa r t i c l eh a v e b r o u g h tf o r w a r do n ek i n do fp r a g m a t i cs i m p l ea n dc o n v e n i e n ta l g o r i t h m , w h i c hc a n d i s t i n g m s h c h i n e s ef r o m e n g l i s hc h a r a c t e r , a n dm a k e a u t o m a t i o ne x c h a n g e si nc h i n e s ea n de n g l i s hp r o n u n c i a t i o n k e y w o r d s :t t s ( t e x t t o - s p e e c h ) ,c o m ,b a n d ,i n t e r f a c e i v 中山人学硕士学位论文 第一章引言 让计算机或其他电子设备具备能发声或识别人类的自然语言,从而实现与人 面对面的语音交流,一直以来都是人们的梦想。经过几十年,特别近十几年来人 们对计算机语音技术的研究取得了瞩目的成就,让计算机能听会说已不仅仅是梦 想了。 1 1 语音技术概述 语音技术主要包括语音合成技术和语音识别技术,语音合成技术解决说的问 题,语音识别技术解决听的问题【1 1 。语音识别和语音合成技术是实现人机语音通 信及建立一个具有能听会说能力的系统所必需的两项关键技术。使计算机具有类 似于人一样的能说话和听懂人说话的能力。 语音识别技术,或称自动语音识别( a u t o m a t i cs p e e c hr e c o g n i t i o n , a s r ) , 指计算机能通过输入的语音信息,识别其中包括的单词、短语、数字等元素。自 动语音识别目前主要是支持中英文,在实现中英文混合识别问题上,还存在一些 障碍同时在识别大量词汇和个别发音方面还很难做到准确。 语音合成,又称文语转换,( t e x t - t o - s p e e c h ,r r s ) 技术,其解决的主要问 题就是如何将文字信息转化为可听的语音信息,也即让机器像人一样开口说话。 文语转换系统实际上可以看作是一个人工智能系统。为了合成出高质量的语音, 除了依赖于各种规则,包括语义学规则、词汇规则、语音学规则外,还必须对文 字的内容有很好的理解,这也涉及到自然语言理解的问题。 从目前和整个信息社会发展趋势看,语音技术可以做到很多的应用,这些应 用可以分为三大类1 2 1 。第一类是桌面应用,包括文章口述,用语音来控制计算机 可以应用到各个领域,完成如数据录入、查询、校对等处理,从而提高劳动生产 率,降低人类的劳动强度。第二类应用是人与计算机的对话功能,这种应用特别 适合于与传统的电话网络和i n t e r n e t 的结合,可以广泛地应用于各种信息的高效 率自动查询和自动转接,例如许多的呼叫中心业务,上市公司股票查询系统、银 中山人学顾f ,学位论上 行业务查寻系统、工商信息查寻、旅游信息查询等。第三类应用是帮助不同语种 之间的人类交流。通过与机器翻译技术、语音合成技术的结合,语音识别技术不 但可以解决人与计算机的交流问题,也能帮助人与人之间的交流。 当前语音合成方面取得的进展和成果相比语音识别要成熟一些,已有较多实 用成果走出实验室投入市场,并正在形成产业化。本文研究的方向也是基于语音 合成技术在有声网页上的应用。 t 2 语音合成技术 语音合成技术是实现人机语音通信,建立一个能听会讲能力的口语系统所必 需的关键技术之一,是使机器具有类似于人的说话能力的核心技术。 1 2 1 语音合成的实现方法 语音合成技术的实现可以有两种方法【1 j :一是在机器中预先存入语音信号,就 如普通的录音机一样,不同之处只是采用了数字存储技术。当需要语音合成时, 只须简单地将预先存入的单音或词组拼接起来,从而实现语音的输出,但是这种 方法有个很明显的缺陷,就是输出的语音是一个字一个字往外蹦”,非常机械呆 板,与人的自然发音差别很大,其发音效果人们很难接受。对此的改进方案是: 如果预先存入足够的语音单元,在合成时采用恰当的技术手段挑选出所需的语音 单元拼接起来,也有可能生成高自然度的语句,这就是波形拼接的语音合成方法。 另一种是采用数字信号处理的方法,将人类发声过程看作是一个模拟声门状态的 源,去激励一个表征声道谐振特性的时变数字滤波器,调整滤波器的参数等效于 改变口腔及声道形状,达到控制发不同音的目的,而调整激励源脉冲序列的周期 或强度,将改变合成语音的音调、重音等。因此,只要正确控制激励源和滤波 器参数,这个模型就能灵活地合成出各种语句来,因此又称为参数合成的方法。 根据时变滤波器的结构形式不同,又有l p c 合成和共振峰合成器等之分。 1 2 2 语音合成技术的三个模块 t t s 的基本结构可分为文本处理、韵律处理和合成处理三大处理模块 3 1 。其处理流程如图1 - 1 所示: 2 中山大学硕士学位论文 i 文本 一 jl i 文本处理 l 上 l韵律处理 jl l合成处理 语音输出 图i - it t s 的处理流程 一、文本处理 文本处理的主要功能是使计算机能识别文字信息,并根据上下文信息能在 一定程度上对文本的内容进行理解。知道哪些是词,哪些是句子、短语,在哪应 该停顿,停顿多长时间等等。其工作过程又可以分为文本规整、词的切分和语法 语义分析三个步骤。 二、韵律处理 人的发声都有一定的语音、语调、声长、停顿等,以表达不同的情绪和态 度,这些都属于韵律特征,韵律处理就是使合成的语音能正确地表达语义,听起 来更加自然。 三、合成处理 就是根据前两部分的处理结果合成语音 1 2 3 语音合成技术的发展、应用现状和前景 语音合成技术涉及声学、语言学、数字信号处理技术、多媒体技术等多个领 域,是当今世界强国竞相研究的热门技术之一2 0 世纪6 0 年代英文r r s 系统 首先被研制出来,8 0 年代我国开始介入汉字t t s 领域的研究。中科院声学所首 先开始汉语合成的研究。之后,社科院语言所、清华大学、中国科技大学、北方 交通大学等单位陆续开展了对汉语t t s 的研究。近年来,在国家“8 6 3 ”智能计 算机主题的支持下,汉语t t s 技术有了长足的进步。清华大学、中国科大、中科 中山人学硕卜笋位论立 院声学所等单位都在这一领域取得了很好的成绩有螳研究成果匕三经转化为产 品得到了实际的应用。如清华大学的s o n i c 系统,中国科技大学的d k - 8 6 3 汉语 文语转换系统,捷通公司的嵌入式t t s 汉语语音系统等【l 】。特别值得一提的是我 国语音技术领域“8 6 3 ”计划成果产业化基地安徽中科大讯飞信息科技有 限公司,在语音合成的研究与产业化方面已走在世界前列,在2 0 0 6 年b l i z z a r d c h a l l e n g e 国际英文合成大赛中,科大讯飞语音实验室送评的“英文语音合成系 统”获得2 0 0 6 国际英语语音合成大赛第一名【4 】。这标志着我国的英文语音合成技 术研究取得突破进展,已处于国际领先水平。通过科大讯飞公司的网站提供的演 示( h t t p :w w w i f l y t e k c o m s p e e c h s h o w a s p ) ,可以体验到其中英文文语转换的 发声效果已经非常接近真人发声了。 随着语音合成技术研究的突破,其对计算机发展和社会生活的重要性日益 凸现出来。以语音合成技术开发出的计算机应用软件产品,几乎深入到社会的每 个行业和每个方面。由于汉语言目前在全球的广泛使用,也导致了汉语语音合成 技术的市场需求、应用前景和经济效益是非常巨大的。目前在电信声讯领域、企 业级呼叫中心领域以及桌面软件领域,语音合成已经得到广泛的应用。预计未来 几年内,语音合成技术的应用必将呈现爆发式增长。 未来语音技术的发展方向主要是提高合成语音的自然度,丰富合成语音的表 现力,降低语音合成技术的复杂度以及多语种文语合成方面。【1 】 1 3 开发基于计算机语音技术软件的重要意义 现阶段,人们与计算机之间的交流仍然主要是通过计算机的外部设备,如 键盘、鼠标、显示器等,计算机用户通过输入设备一键盘、鼠标等向计算机发出 指令或输入信息,计算机进行处理后,通过输出设备一如显示器、打印机等将处 理结果或输出信息显示出来。这种交流方式相对与人与人之间直接的语音交流, 仍然存在诸如效率不高,不够直观,以及要求用户对计算机操作有一定了解,学 习门坎较高等不足。因此设计与开发能与人类用自然语言交流的软件系统不仅能 大大提高交流的效率,而且文化水平不高,对计算机操作不甚了解的用户,或是 行动不便的残疾人士一样能自如地操作计算机,方便的从计算机中获取需要的信 息。因此,开发基于计算机语音技术的应用是未来计算机技术发展的方向之一。 4 中山大学硕士学位论文 1 a 课题提出 目前,网络技术的飞速发展,使i n t e m e t 服务日益增多,各种各样的网 站页面为人们获取各种领域的信息提供了极大的方便。人们可以足不出户 就能了解到全世界的新闻资讯、天气情况、股票行情、专业资料等等,可 以说i n t e r n e t 已经对人们的生活方式产生了革命性的影响。但是,现在的大 多数网页信息仍然是以文字、表格、图片或动画为主,有些门户网站为提 供图文并茂的网页,借助a c t i v e x 技术,在页面中嵌入声音和视频,但这 种方式的声音信息是预先录制的,受制于网页的提供者,用户无法将任意 网页中感兴趣的文字信息转换为语音输出。如果能实现一个工具,具备将 任意网页中的文字信息朗读出来的功能,实现“有声”网页,无疑能大大 提高w e b 页面的信息的多样性和操作的人性化。 i e 的工具条因具有方便、快捷,简单易用且功能强大的特点而大受青 睐,近年来r r 企业纷纷推出的各自的工具条,如g o o g l e 、百度、新浪、腾 迅等,本文实现的有声网页组件也是以m 工具条的方式出现,用户只须通 过工具条上的几个按钮即可轻松完成文语转换的功能。 1 5 本文的组织结构 本文共分为九章,第一章为引言部分,综合介绍了语音合成技术,其 实现方法、过程以及发展、应用现状和发展趋势,介绍课题的选题背景, 设计和开发基于语音技术的应用软件的重要意义以及作者所完成的工作 第二章叙述了微软的语音开发包m i c t o s o t s p e e c hs d k 的结构和使用,对本 课题要用到的i s p v o i c e 接口进行了比较详细地描述。第三章介绍c o m 组 件技术及a t l 的有关知识。分析了c o m 组件技术的发展及组件级编程的 优势,阐述了c o m 中重要的概念及技术要点。第四章介绍了微软为其m 提供的开发接口,描述了如何开发b a n d 对象。第五章介绍w e b v o i c e 组件 的总体设计,分析了系统功能需求、系统架构、类的设计及系统中的数据 流向。第六章介绍了m 工具栏的实现方法,对m 工具栏应实现的接口进 5 中山人学坝l 学位论文 行详细解释,并对应用a t l 中的窗口类构造工具栏窗口的过程给出了实现 方法。第七章介绍了发声对象的实现,着重讲解了i s p v o i c e 接口的使用与 封装。第八章为系统测试,叙述了系统实现的效果。第九章是总结与展望, 对本课题的工作进行总结,并分析了今后需要进一步完善的工作。 6 中山人学硕士学位论文 第二章m ic r o s o f ts p e e c hs d k 语音开发包 2 1m i c r o s o f ts p e e c hs d k 简介 m i c r o s o rs p e e c hs d k 是微软公司免费提供的语音应用开发工具包,这个 s d k 中包含了语音应用设计接口( s a p i ) 、微软的连续语音识别引擎( m c s r ) 以及微软的语音合成( t f s ) 引擎等等。因课题只涉及语音合成,因此本文只对 t t s 模块进行介绍。目前的5 1 版本一共可以支持3 种语言的识别( 英语,汉语 和日语) 以及2 种语言的合成( 英语和汉语) 。s a p i 中还包括对于低层控制和高 度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别( s r ) 管理以及1 1 s 管理等强大的设计接口 与其它微软新推出的a p i 一样,这套a p i 是架构在c o m ( c o m p o n e n to b j e c t m o d e l ) 组件基础之上,用对象的方式提供编程接口,这使得用v b 、c + + 、d e l p h i 以及其它任何可以支持c o m 编程的语言都可以运用s p e e c ha f i 。而且在c o m 组件基础之上微软还提供了a c t i v e xc o n t r o l 控件( a c t i v e x 控件是以c o m 组件 技术为基础的一种组件控件技术,可以嵌入浏览器以及o f f i c e 当中使用) ,这 更方便了软件编程者在网页上使用s p e e c ha p i 的功能,而且a c t i v e x 控件也能 在v b a ( v bf o r a p p l i c a t i o n ) 中使用,在e x c e l 里也能够利用s p e e c h a p i 。 这些技术给软件开发者提供了广泛的应用领域。 2 2m i c r o s o f ts p e e c hs d k 结构 在应用m i c r o s o f ts p e e c hs d k 的软件系统中,可以分为三层结构,最底层就 是两个语音引擎,分为语音识别引擎和语音合成引擎,中间是s a p i 的运行库, 为上层提供了a p i 的运行环境,最上层就是各种需要语音服务的应用程序。应 用程序通过a p i 函数来使用s a p i 运行库,而s a p i 则通过d d i ( 设备驱动接口) 来使用语音引擎。 m i c r o s o f ts p e e c hs d k 5 1 的结构图如图2 1 所示 7 中山人学琐i 学位论文 图2 1s a p i 结构【5 】 在微软提供的软件开发包m i c r o s o f ts p e e c hs d k 中,提供的s p e e c ha p i ( s a p i ) 主要包含两大方面: 1 a p if o rt e x t t o s p e e c h 语音合成 2 a p if o rs p e e c hr e c o g n i t i o n 语音识别 其中a p if o r t e x t - t o s p e e c h ,就是微软t t s 引擎的接1 3 ,通过它我们可以很 容易地建立功能强大的文本语音程序,金山词霸的单词朗读功能就用到了这些 a p i 。至于a p if o rs p e e c hr e c o g n i t i o n 就是与t t s 相对应的语音识别,语音识别 技术是一种令人振奋的技术,让用户能用声音给系统发出指令或输入信息,但由 于目前语音识别技术准确度和识别速度不太理想,还未达到广泛应用的要求。 为使s p e e c ha p i 具有更好的封装性和扩展性,同时能方便各种不同丌发需 求的用户,s a p i 本身分为两个层次的结构,分别称为应用层接口 ( a p p l i c a t i o n - l e v e li n t e r f a c e ) 和引擎层接n ( e n g i n e l e v e li n t e r f a c e ) 【5 】,应用层接 口的对象( 高级对象) 为编程者提供较高级的接口形式,这个高级对象本身已经 对一般语音应用提供了默认的设置,几乎不需要改变就能直接使用,使得编制程 序更加方便。而对于语音质量有较高要求的应用,引擎层接口的对象( 低级对象) 则为编程者提供了较低级的控制方式,可以更灵活地控制语音引擎,但也使得编 制程序变得较为复杂。在一般情况下,程序设计利用高级对象就足够了,但如果 要更深层次地使用s p e e c ha p i ,能更精细地控制引擎的工作就必须使用低级对 象。语音引擎通过d d i 层和s a p i 进行交互,应用程序通过a p i 层和s a p i 通信。 通过使用这些a p i ,用户可以快速开发在语音识别或语音合成方面的应用程序。 在m i c r o s o f ts p e e c h s d k 中包含诸多接口供我们使用,其中应用层接口大致 可以分为七类睁】:语音接口类( a u d i o i n t e r f a c e ) 、事件接i :1 类( e v e n t i n g i n t e r f a c e s ) 、 语法编译接口类( g r a m m a r c o m p i l e r i n t e r f a c e s ) 、词典接口类( l e x i c o n i n t e r f a c e s ) 、资 源接口类( r c s o u r i n t e r f a c e ) 、语音识别接口类( s p e e c h r e c o g n i t i o n i n t e r f a c e ) 和文 中山大学硕士学位论文 语转换接口类( t e x t - t o - s p e e c h i n t e r f a c e s ) ,但本文只需要用到文语转换类的接口。 2 3m i c r o s o f ts p e e c hs d k 的使用 要在应用程序中使用m i c r o s o f ts p e e c hs d k ,首先需要进行s d k 安装,其次 还需要安装语音开发包l a n g u a g e s d k ,安装完微软的语音开发包后,系统会有 五个语音角色可供选择,分别是“m i c r o s o f tm a r y ”、“m i c r o s o t tm i k e ”,。m i c r o s o f t s a m ”、“m i c r o s o f ts i m p l i f i e dc h i n 雠”简体中文和。s a m p l et t sv o i c e ”,可以 在控制面板的语音选项中看到。这两个安装文件都可以在微软的官方网站上找 到,并可以免费下载。一些第三方企业也提供自己基于m st t s 的语音库,安装 注册后能直接使用。有些还提供中文方言的语音库,如广东话、四川话等,并提 供不同年龄特点的声音,大大丰富了输出的特色语音,但这些语音库大都要付费 使用。 和微软提供的其他开发包一样,s a p i 是以c o m 组件的方式提供的,构建 基于8 a _ p i 的t t s 应用程序主要就是与s a p i 提供的相关接口打交道。 2 3 1 i s p v o i c e 接口 t r s 的核心应用程序接口是i s p v o i c e ,应用程序可以通过建立c o m 对象来 使用i s p v o i c e 。一个i s p v o i e e 对象是一个t t s 声音的单独实例。当一个应用程 序第一次建立一个i s p v o i c e 对象时,该对象已经被初始化为缺省的声音,这时 可以直接调用s p e a k 或s p e a k s t r m n 函数来朗读文本s p e a k 或s p e a k s t r e a m 函 数有两种工作方式:一种是同步方式,在同步方式下,函数s p e a k 或s p e a i , s t r e a m 会阻塞线程,只有在朗读完文本之后才返回;第二种方式是异步方式,在异步方 式下,函数会立即返回,而不致于阻塞主线程,由背景线程继续朗读文本。在异 步方式下,应用程序有两种方法可以获得t r s 的当前状态信息:一种方法是使 用g e t s t a t u s 函数查询i s p v o i c e 对象的状态;另一种方法是让i s p v o i c e 对象在状 态改变时产生事件,主程序运行事件处理函数。 因为i s p v o i 是本文要用到的最主要接口,下面对i s p v o i c e 的主要方法进 行介绍,其中有些方法功能相关,合成一组: 【l 】h r e s u l ts p 翩k ( c o n s tw c h a r + p w c s , d w o r dd w f l a g s ,u l o n g * p u l s t o 中山人学倾f 学位论史 r e a m n u m b e r ) ; 功能:朗读文本 参数: * p w e s :输入的文本字符串,必需为u n i c o d e 。 d w f l a g s :s p e a k f l a g s 枚举参数,用来标志s p e a k 的方式,其中 s p f i s x m l 表示输入文本含有x m l 标签。 p u l s t r e 锄n u n l b e r 输出,用来获取当前文本输入的等候播放队列的位置, 只有在异步模式j 有用。 【2 】h r e s u l tp a u s e ( v o i d ) ; h r e s u l t r e s u m e ( v o i d ) ; 功能:分别是暂停和继续。 【3 】h r e s u l ts e t r a t e ( 1 0 n gr a t e a d j u s t ) ; h r e s u l tg a r 帅n g + p r a t e a d j u s 0 ; 功能:分别是设置、获取播放速度,范围:1 0t o1 0 4 】h r e s u l ts e t v o l u m e ( u s h o r tu s v o l u m e ) ; h r e s u l t g e t v o l u m e ( u s h o r t + p u s v o l u m e ) ; 功能:分别是设置、获取播放音量,范围:0t o1 0 0 【5 】h r e s u l ts e t v o i c e ( i s p o b j e c t t o k e n * p t o k e n ) : h r e s u l tg e t v o i c e ( i s p o b j e c t t o k e n * * p p t o k e n ) : 功能:分别是设置、获取声音角色 【6 】h r e s u u s e t s y n e s p e a k t i m e o u t ( u l o n gm s t i m e o u t ) ; h r e s u l t g e t s y n e s p e a k t i m e o u t ( u l o n g + p m s t i m e o u t ) ; 功能:分别是设置、获取同步超时时间。由于在同步模式中,调用s p e a k 后程序就会进入阻塞状态等待s p e a k 返回,为免程序长时间没相应,应 该设置超时时间,m s t i m e o u t 单位为毫秒。 【7 】h r e s u l ts e t o u t p u t ( i u n k n o w n + p u n k o u t p u t ,b o o lf a l l o w f o r m a t c h a n g e s ) ; 功能:设置输出 参数: p u n k o u t p u t :设置输出对象,可以是流,或一个音频设备; f a l l o w f o r m a t c h a n g e s :是否可以改变输出对象的格式。 1 0 中山大学硕士学位论文 2 3 2x m l 标记的使用 t t s 中可以有两种方式对输出语音相关参数进行控制,一种是直接调用订s 中i s p v o i c e 接口函数,对相关属性进行设置。另外一种就是通过在文本中嵌入 x m l 标签的形式对相关参数进行控制,通过x m l 标签设置音量、音调、延长、 停顿,可以对合成语音进行非常精细的控制,几乎可以使输出达到自然语音效果。 通过把s p e a k 参数d w f l a g s 设为s p f i s x m l ,t r s 引擎就能分析x m l 文本,输 入文本并不需要严格遵守w 3 c 的标准,只要含有x m l 标签就行了。下面通过 一个简单的示例,可以看出t r s 的x m l 标签的强大功能: # i n c l u d e 使用r r s 需要用到的头文件 i n tm a i n ( i n ta r g c ,c h a r * a r g v ) i s p v o i + p v o i c e = n u l l ; c o m 库初始化 i f ( f a i l e d ( :c o l n i t i a l i z e ( n u l l ) ) ) r 刨:啪f a l s e ; 创建实例,并获取i s p v o i c e 接口地址: h k e s u l th r = c o c r e a t e l n s t a n c e ( c l s i d _ s p v o i c e , n u l l , c l s c t x _ a l l i i d _ i s p v o i c e , ( v o i d ) & p v o i c e ) ; i f ( s u c c e e d e d ( h r ) ) 朗读x m l 格式的文本 h r = p v o i c e - s p e a k ( l ” i a l nm a r y n o wl e v e li s1 0 0 n o wp i t c hi s1 0 g r a t es p e e d = - - 1 0 “ n o ws p e e di 3 1 0 s p e l l e m p h o s i z e 。s p f _ i s _ x m l , n u l l ) ; 脾放c o m 引用 p v o i c e - r e l e a s e 0 ; 中山人学碗j 学位论文 p v o i c e = n u l l ; ) 释放c o m 库 :c o u n i n i t i a l i z e o ; 1 e b 1 mt r u e ; 说明: 1 标签: 把声音设为m i c r o s o f tm a r y ,英文版s d k 中一共含有3 种声音,另外两 种是m i c r o s o f ts a m 和m i c r o s o f tm i k e 。 2 标签: 把音量设为1 0 0 ,音量范围是0 1 0 0 。 3 标签: 标志音调( 1 0 1 0 ) 4 标签: 标志语速( 1 0 1 0 ) 5 标签: 逐个字母读: 6 标签: 强调 7 标签: 停顿2 0 0 毫秒( 最长为6 5 ,5 3 6 毫秒) 。 1 2 中山人学硕j :学位论文 第三章c o m 组件技术及a t l 在w m d o w s 下,c o m 组件技术已经成为基础架构,实际上整个w i n d o w s 操作系统从w i n 9 5 、9 8 开始,本身就是构建在一个个c o m 组件的基础上的。 m i c r o s o f ts p e e c hs d k 也是基于标准的c o m 组件,而本课题要构建的是一个能 嵌入到m i c r o s o t ti n t e r n e te x p l o r e 浏览器的c o m 组件,因此本课题与c o m 组件 技术密切相关本章分为两部分,分别介绍了c o m 组件编程的有关技术基础, 以及微软为c o m 组件开发提供的重要平台a t l 。 3 1c o m 组件技术 3 1 1 软件工程的发展及c o m 的出现 软件工程的发展大致经过了结构化编程,到面向对象编程,再到现在的组件 级编程,目的就是模块化希望软件能象堆积木一样各个模块可以单独实现,最 后再组装起来,而不是整个系统是“铁板一块”川,理想的结果就是组成软件系 统的各个模块的连接比较松散,一个模块内部的改变不会影响到其他模块的运 行,可以做到。即插即用”。图3 - 1 6 就显示了这两种系统之间的区别。 ( 1 ) 单个应用程序 ( 2 ) 组件应用程序 巫口回 困 丑 二口 图3 1 单个应用程序与组件应用程序 结构化编程是函数块的形式,通过把一个软件划分成许多模块,每个模块完 成各自不同的功能,不同的模块单独完成,然后组合到一起。结构化编程存在一 个明显的缺陷,就是数据和加在数据之上的操作是分离的,这至少会带来两个问 题:一个数据与加在数据之上的操作的对应关系必须由程序员自己来维护,当软 中山人学琐i 学位论史 件的规模比较大时,这种对应关系将会变得非常复杂而难以维护:二是当程序需 要更新时,不可避免地会涉及到其他的模块,可能会出现牵一发而动全身的问题。 于是面向对象编程出现了,它相对于面向功能的结构化方式是一个巨大的进步。 在面向对象编程中,构成软件系统的是一个个对象,每个对象都是一些数据( 属 性) 以及加在这些数据之上的方法的集合体,这与自然界中对象的概念是一脉相 承的,更易于人们理解与掌握。而且面向对象支持继承,在代码的重用方面前进 了一大步。 然而面向对象方法仍然有问题,首先在于对象作为构成系统的基本单元,它 的粒度太小,这会造成整个系统的层次性不强,如何合理地组织构成系统的各个 模块间的连接方式,以降低模块间的藕合性没有“机制”上的保证,主要依赖于 程序员的经验与技术水平;其次在于重用的方法。搭积木式的软件构造方法的基 础是有许许多多各种各样的可重用的部件、模块。最典型的是类库,因为我们用 面向对象的方法产生的直接结果就是许多的类。但类库的重用是基于源代码级别 的,这也是它的重大缺陷。一是它限制了编程语言,用一种语言编写的类不能用 在其他语言上。二是每次更新都必须重新编译,只有编译了j 。能与原来的代码结 合在一起生成可执行文件。这离理想的积木式软件构造方法还有一定差距,也就 是还不能做到“即插即用”,在我们的设想里希望把一个模块拿出来再换一个新 的模块是非常方便的事,可是现在不但要重新编译,还可能要重新改变代码。 c o m 组件技术就是针对面向对象的不足出现的,首先,c o m 组件是建立在二 进制一级的,因此它是跨语言的,不论用什么语言来实现的c o m 组件,任何其他 支持c o m 组件的语占都可以使用;其次,c o m 组件与应用系统问的联系只是通过 公开的接口,这种联系是非常松散的,只要接口不变,c o m 组件的更新与升级并 不会对应用系统有任何影响,应用系统根本不需要做更新,也不需要重新编译, 甚至可以在不中断系统运行的情况下更新,实现了平滑升级,真正做到了“即插 即用”。 3 1 2 c o m 的特性 c o m 规范的语言无关性、进程透明性和可重用的机制是c o m 最重要的三 个特性1 6 】。 1 语言无关性:c o m 的语言无关性是因为c o m 规范是建立在二进制一级 的,只要能生成符合c o m 要求的二进制代码,任何语言都可以用来开发和使用 1 4 中山大学碗上学位论文 c o m 组件,因此,c o m 的语言无关性实际上为我们跨语言合作开发提供了统一 标准。差不多每种语言在实现时都提供了对c o m 的支持,如m i c r o s o f t 的v i s u a l c + + 、v i s u a lb a s i c 、v i s u a lj + + ,b o r l a n d 公司的d e l p h i 、c + + b u i l d e r 等都支持 c o m 组件的开发和利用,但与c o m 规范最贴切且最能淋漓尽致发挥c o m 优势 的还是c 或c _ h 语言。 2 进程透明性:c o m 组件的运行方式也是客户、服务器模式,c o m 组件是 服务的提供方,称为“服务器”,使用c o m 组件的程序是服务的使用方,称为 。客户端”。客户和服务器可以在同一进程中,也可以在不同的进程中,甚至可 以在不同的机器中,据此可以把c o m 组件分成三类:进程内服务器、进程外服 务器和远程服务器。进程内服务器通常是以d l l 文件的方式提供。进程外和远 程服务器通常是一个e x e 文件。虽然c o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论