Microsoft Speech SDK 编程入门

作者:eping
email:eping@eping.net

TTS(Text-To-Speech,文本语音转换)顾名思义,将文本转找成语音进行输出。目前TTS技术已相对比较成熟,TTS引擎也比较多,比较有名的有Microsoft Speech SDK 和IBM的ViaVoice还有开源的Festival等。至于他们的优劣本人不做评价也未曾做考究,因毕计原因要使用TTS引擎,考虑到开发平台及工具都使用Microsoft的亦决定TTS引擎也选择Microsoft Speech SDK 。本文不论使用的OS还是开发工具到目前(2010年5月13)为止都是最新的。接下来将详细介绍Microsoft Speech SDK的使用。

开发平台:windows 7 旗舰版

开发工具:Visaul Studio 2010 & Microsoft Speech SDK

一、开发环境配置

打开Visual Studio 2010新建解决方案,创建MFC基于对话框应用程序。配置项目属性如图15所示:

clip_image002

图 15 项目属性

在附加包含目录中找到Speech SDK安装目录下的include目录路径如图16的本人配置目录:C:\Program Files\Microsoft Speech SDK 5.1\Include

clip_image004

图 16 配置include目录

在C++的Link栏加中的Input项Additional中附加sapi.lib库的路径

本人路径:C:\Program Files\Microsoft Speech SDK 5.1\Lib\i386\sapi.lib

配置操作示意图如图 17所示。

clip_image006

图17 附加依赖库

到此,使用Visual Studio 2010、Microsoft Speech SDK开发环境配置完成。

语音小助手编码实现

配置好开发环境,使用Microsoft Speech SDK将会是一件比较愉快的事情。以下将简单介绍下Microsoft Speech SDK的使用。接下来使用一个Demo程序介绍Speech SDK的使用方法。

使用Speech SDK时应包含所需的头文件和库文件。如:

#include <sapi.h>

#pragma comment(lib,"sapi.lib");

在一个按钮事件响应函数中的实现代码如下所示:

ISpVoice *pVoice = NULL;

//初始化COM接口

if (FAILED(::CoInitialize(NULL)))

MessageBox(L"COM接口初始化失败");

//获取SpVoice接口

HRESULT hr = CoCreateInstance(CLSID_SpVoice,NULL,CLSCTX_ALL,IID_ISpVoice,(void**)&pVoice);

if (SUCCEEDED(hr))

{

hr = pVoice->Speak(L"Hello World",0,NULL);

pVoice->Release();

pVoice = NULL;

}

//释放com资源

::CoUninitialize();

posted @ 2010-05-23 20:04  eping  阅读(15250)  评论(1编辑  收藏  举报