如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
至此已做好了编写语音程序的准备工作,可以开始编写语音程序了。下面首先介绍文本-语音转换的编程技术。11.2.1构造CText2Speech类为了便于使用SpeechSDK提供的文本-语音转换COM接口,笔者编写了一个类CText2Speech,其中封装了文本-语音转换COM接口的基本方法。借助该类来编写文本-语音转换程序非常方便。先来讨论该CText2Speech类的设计,其定义文件列举如下://///////////////////////////////////////////////////////////////activespeechengine//#include<atlbase.h>externCComModule_Module;#include<atlcom.h>#include"sapi.h"#include<sphelper.h>/////////////////////////////////////////////////////////////////speechmessage//#defineWM_TTSEVENTWM_USER+101/////////////////////////////////////////////////////////////////text-to-speechclass//classCText2Speech{public:CText2Speech();virtual~CText2Speech();//initializeBOOLInitialize(HWNDhWnd=NULL);voidDestroy();//speakHRESULTSpeak(constWCHAR*pwcs,DWORDdwFlags=SPF_DEFAULT);HRESULTPause();HRESULTResume();//rateHRESULTSetRate(longlRateAdjust);HRESULTGetRate(long*plRateAdjust);//volumeHRESULTSetVolume(USHORTusVolume);HRESULTGetVolume(USHORT*pusVolume);//voiceULONGGetVoiceCount();HRESULTGetVoice(WCHAR**ppszDescription,ULONGlIndex=-1);HRESULTSetVoice(WCHAR**ppszDescription);//errorstringCStringGetErrorString(){returnm_sError;}//interfaceCComPtr<ISpVoice>m_IpVoice;private:CStringm_sError;};文件的开始几行语句:#include<atlbase.h>externCComModule_Module;#include<atlcom.h>#include"sapi.h"#include<sphelper.h>用于使我们的代码能操作SpeechSDK中的相关的接口、函数和常量。SpeechSDK支持事件。为了与窗口交互,这里在类中定义了消息WM_TTSEVENT。当发生Speech事件时,向相应的窗口发送WM_TTSEVENT消息。在窗口中响应该消息就响应了相应的事件。CText2Speech类中定义了一个操作Text-To-Speech引擎的接口指针m_IpVoice,作为数据成员,其定义如下:CComPtr<ISpVoice>m_IpVoice;几乎所有的Text-To-Speech操作都是借助该指针来调用IspVoice接口的方法而实现的。CText2Speech类实现了如下的方法://初始化和释放函数BOOLInitialize(HWNDhWnd=NULL);voidDestroy();//语音操作函数HRESULTSpeak(constWCHAR*pwcs,DWORDdwFlags=SPF_DEFAULT);HRESULTPause();HRESULTResume();//语速函数HRESULTSetRate(longlRateAdjust);HRESULTGetRate(long*plRateAdjust);//音量函数HRESULTSetVolume(USHORTusVolume);HRESULTGetVolume(USHORT*pusVolume);//语言函数ULONGGetVoiceCount();HRESULTGetVoi