读书人

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

发布时间: 2012-02-26 20:19:44 作者: rapoo

请问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改变到中文朗读

读书人网 >C++

热点推荐