WEB开发网
开发学院软件开发VC 文本语音转换入门 阅读

文本语音转换入门

 2010-05-12 20:35:21 来源:WEB开发网   
核心提示:内容简介文本语音(Text-to-Speech,以下简称TTS),文本语音转换入门,它的作用就是把通过TTS引擎把文本转化为语音输出,本文不是讲述如何建立自己的TTS引擎, CoCreateInstance()获取IspVoice接口就够了,需要注意的是初始化COM后,而是简单介绍如何运用Microsoft Speec

内容简介

文本语音(Text-to-Speech,以下简称TTS),它的作用就是把通过TTS引擎把文本转化为语音输出。本文不是讲述如何建立自己的TTS引擎,而是简单介绍如何运用Microsoft Speech SDK 建立自己的文本语音转换应用程序。

Microsoft Speech SDK简介

Microsoft Speech SDK是微软提供的软件开发包,提供的Speech API (SAPI)主要包含两大方面:

1.API for Text-to-Speech

2.API for Speech Recognition

其中API for Text-to-Speech,就是微软TTS引擎的接口,通过它我们可以很容易地建立功能强大的文本语音程序,金山词霸的单词朗读功能就用到了这写API,而目前几乎所有的文本朗读工具都是用这个SDK开发的。至于API for Speech Recognition就是与TTS相对应的语音识别,语音技术是一种令人振奋的技术,但由于目前语音识别技术准确度和识别速度不太理想,还未达到广泛应用的要求。

Microsoft Speech SDK可以在微软的网站免费下载,目前的版本是5.1,为了支持中文,还要把附加的语言包(LangPack)一起下载。

为了在VC中使用这SDK,必需在工程中添加SDK的include和lib目录,为免每个工程都添加目录,最好的办法是在VC的

Option->Directoris立加上SDK的include和lib目录。

一个最简单的例子

先看一个入门的例子:

#include <sapi.h>
#pragma comment(lib,"ole32.lib") //CoInitialize CoCreateInstance需要调用ole32.dll
#pragma comment(lib,"sapi.lib")  //sapi.lib在SDK的lib目录,必需正确配置
int main(int argc, char* argv[])
{
  ISpVoice * pVoice = NULL;
//COM初始化:
  if (FAILED(::CoInitialize(NULL)))
    return FALSE;
//获取ISpVoice接口:
  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;
  }
//千万不要忘记:
  ::CoUninitialize();
  return TRUE;
}

短短20几行代码就实现了文本语音转换,够神奇吧。SDK提供的SAPI是基于COM封装的,无论你是否熟悉COM,只要按部就班地用CoInitialize(), CoCreateInstance()获取IspVoice接口就够了,需要注意的是初始化COM后,程序结束前一定要用CoUninitialize()释放资源。

1 2 3  下一页

Tags:文本 语音 转换

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接