实验二 语音交互设计TTS-基于图形用户界面.doc

实验二 语音交互设计TTS-基于图形用户界面.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 语音交互设计TTS-基于图形用户界面

COM:即组件对象模型,Component Object Model。 在COM构架下,人们可以开发出各种各样的功能专一的组件,组件实际上是一些小的二进制可执行程序,它们可以给应用程序、操作系统以及其他组件提供服务,然后将它们按照需要组合起来,构成复杂的应用系统(如dll)。优点:可用新组件替换原有组件,系统升级和定制更加简便;可在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言、平台无关,程序员可充分发挥自己的才智与专长编写组件模块等。 使用和处理COM对象。COM独立于语言,COM为自己提供对象管理例程。COM中创建对象,实际是调用COM库中的API函数CoCreatInstance().调用该函数时,在注册表中查找COM服务器位置,将服务器加载到内存,并创建所请求的实例。 一般使用COM对象的步骤是: 初始化COM库(Initialize); 创建一个COM对象,获得相应接口; 如果对象创建成功,则调用COM对象的某个方法; 释放接口; 收回COM库(Uninitialize) 二、TTS—基于图形界面 基于图形用户界面创建一个TTS应用程序,通过对菜单命令的选择执行文本-语音的转换。 一、建立项目 1、创建一个实现典型“Hello world”应用的windows 32平台应用程序项目。 二、设置sapi路径:与SAPI相关的文件路径必须在项目中声明。(sapi.h和sapi.lib) 1、选择“Tools”→ “Options”→“Directories”选项卡; 2、选择“Include Files”下拉式选单,增加“sapi.h”的文件路径; 3、选择“Library Files”下拉式选单,增加“sapi.lib”的文件路径; 三、创建“Speak”菜单命令 1、修改自动生成的菜单项。打开“资源管理器”→“File”菜单→增加“Speak”命令项→资源ID设置为“IDM_SPEAK”。 四、实现speak功能 第1步:初始化COM 第2步:创建语音对象设置声音 第3步:调用speak函数 第4步:设置感兴趣的事件 第5步:确定事件类型 第6步:响应事件 ?1、初始化COM ?if( FAILED( CoInitialize(NULL) ) ) ?? { ????? return FALSE; ?? } ?? ?2、创建语音对象设置声音 ? ??? 一旦com运行后,下一步就是要创建语音对象。这里需要用到CoCreatInstance().为简洁和方便起见,这个例子使用了特别的处理方式。首先,它使用initinstance ( )来初始化声音。这是最简单的初始化过程。第二,这个语音对象是全局性的。第三,语音对象建立之后,对象本省和用到的内存立即被释放。最后,如果初始化失败,应用程序应该有更强有力的检查错误机,更广泛的报告和更详细的资料。 ?程序清单2: ISpVoice *pVoice;?? //SAPI voice(初始化模块) …… BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { 。。。。。。 // Instead of using IDC_TEST, use the identifier of menu resource of the current application. SetMenu(hWnd, LoadMenu(hInstance, MAKEINTRESOURCE(IDC_TEST))); ?? ShowWindow(hWnd, nCmdShow); ?? UpdateWindow(hWnd); //Initialize SAPI HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)pVoice); if( SUCCEEDED( hr ) ) { pVoice-SetInterest( SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_BOUNDARY) ); pVoice-SetNotifyWindowMessage( hWnd, WM_USER, 0, 0 ); } else return FALSE;? 3、调用Speak函数实现“讲话”的功能 ???? 要让计算机讲话只需一句简单的调用命令,要讲话的内容用一个参数传给语音对象,常是从一个对话框或一个文件获取字符串的。另外,字符串也可以从一个流中获取,但就要使用另外一个调用 ispvoice:: spe

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档