首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教WIN32如何样把语音从英文变成中文啊

2012-02-26 
请问WIN32怎么样把语音从英文变成中文啊?#includesapi.h#includesphelper.h#includewindows.h//#inc

请问WIN32怎么样把语音从英文变成中文啊?
#include   <sapi.h>
#include   <sphelper.h>
#include   <windows.h>
//#include   <atlcom.h>
const   DWORD     SP_CHINESE   =   0x0000;   //简体中文.
const   DWORD     SP_ENGLISH   =   0x0001;   //英语.
int   main(int   argc,   char*   argv[])
{       ISpVoice   *   pVoice   =   NULL;
   
          if   (FAILED(::CoInitialize(NULL)))
return   FALSE;

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

if(   SUCCEEDED(   hr   )   )
{
CComPtr <ISpStream> cpWavStream;
CComPtr <ISpStreamFormat> cpOldStream;
CSpStreamFormat   OriginalFmt;
pVoice-> GetOutputStream(   &cpOldStream   );
OriginalFmt.AssignFormat(cpOldStream);
 
              //绑定文件:
//hr   =   SPBindToFile(   L "E:\\output.wav ",SPFM_CREATE_ALWAYS,
//&cpWavStream,&OriginalFmt.FormatId(),
//OriginalFmt.WaveFormatExPtr()   );
               
if(   SUCCEEDED(   hr   )   )
{
pVoice-> SetOutput(cpWavStream,TRUE);
//pVoice-> SetLanguage(cpWavStream,SP_CHINESE);
WCHAR   WTX[]   =   L " <VOICE   REQUIRED= 'NAME=Microsoft   Mary '/> 0517 ";
pVoice-> Speak(WTX   ,SPF_IS_XML,   NULL);
pVoice-> Release();
pVoice   =   NULL;
}
}

//释放COM资源:
::CoUninitialize();  
return   TRUE;
}
这是一个发出英文的语音,怎么改把英文变成中文?还有如果少于4位了,就可以读出的是一个数字,不是一个一个读出的数字?

[解决办法]
SAPI开发语音合成?我记得可以直接设置的。在控制面版的语音里吧,你训练的时候就要用到那个吧,很久前用过这个。在程序里面改的话,你就要好好看看那个帮助文件了。
[解决办法]
使用的是 pVoice-> SetVoice改变到中文朗读

热点排行