2009-10-10

[zz]用Microsoft SDK实现中文语音发音方法小结

转自http://www.chinaeos.com/html/shangweiji/bcb/2009/0615/2646.html

一 安装Microsoft SDK 5.1
  安装后在环境变量及VC中设置相应的环境参数

二 安装Microsoft SDK中文包
  将其安装在Microsoft SDK 5.1所在的目录下,比如Microsoft SDK 5.1安装在了E:\Program Files\Microsoft Speech SDK 5.1目录下,那么Microsoft SDK 5.1中文包也应该安装在E:\Program Files\
  Microsoft Speech SDK 5.1目录下

三 配置Speech SDK引擎当前所处理的语言
  打开 "控制面板 ",打开 "语音 "配置项目,可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成,还可以配置相关的硬件设备以及控制语速
  在 "文字-语音转换 "的 "语音选择 "组合框中选择简体中文(Microsoft Simplified Chinese)。这样就可以合成汉语文字了。
  
四 VC编程
  #include <sapi.h>
  ISpVoice* pVoice = NULL;
  //COM初始化:
  if (FAILED(::CoInitialize(NULL)))
  return;
  //获取ISpVoice接口:
  HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
  if( SUCCEEDED( hr ) )
  {
  UpdateData();
  CString str("欢迎来到武汉大学电子信息学院"); //要发音的字符串
  int BufSize = MultiByteToWideChar(936,0,str,-1,NULL,0); //计算简体中文字符串 s 转成 widestring 之后占用的内存字节数
  WCHAR wsz[128]; //定义WCHAR类型的数组wsz,因为Speak函数的第一个参数为WCHAR类型
  MultiByteToWideChar(936,0,str,-1,wsz,BufSize); //将 AnsiString 字符串 str 转化为 unicode 的 WideString
  hr=pVoice- >Speak(wsz, 0, NULL); //调用函数Speak发音
  pVoice- >Release(); //释放pVoice内存
  pVoice=NULL;
  }

No comments: