您的位置:首页 > 其它

浅谈中文文本语音转换技术

2006-01-24 14:25 435 查看
现在语音技术应用十分广泛,本人也一直在从事这方面的工作,利用MS TTS开发产品,针对中文发音设置的问题,在这里阐述一下自己的实现方法。

void CIMEInfoAcquisitionDlg::SpeakVoice(LPCTSTR csVoice)
{
//com初期化
if (FAILED(CoInitialize(NULL)))
{
AfxMessageBox("Error to intiliaze COM");
return;
}

//文字変換
LPOLESTR lpw = new WCHAR [256];
MultiByteToWideChar(CP_ACP,0,csVoice,-1,lpw,256);

HRESULT hr = S_OK;
if( SUCCEEDED( hr ) )
{
CComPtr<ISpObjectToken> cpVoiceToken;
CComPtr<IEnumSpObjectTokens> cpEnum;
CComPtr<ISpVoice> cpVoice;
ULONG ulCount = 0;

// 建立

hr = cpVoice.CoCreateInstance(CLSID_SpVoice);

LPCSTR name;
name = "Microsoft Simplified Chinese";

CString s; s.Format("Name=%s", name);
WCHAR wName[1024];
MultiByteToWideChar(CP_ACP, 0, s, -1, wName, sizeof(wName));

ISpObjectToken* pToken = NULL;
if(SUCCEEDED(SpFindBestToken(SPCAT_VOICES, NULL, wName, &pToken))){
cpVoice->SetVoice(pToken);
}
//文读
if (SUCCEEDED (hr))
{
hr = cpVoice->Speak( lpw, SPF_DEFAULT, NULL );
}

}

//com的结束
delete [] lpw;
CoUninitialize();
return;
}

以上利用ISpObjectToken接口实现了对中文的阅读,是不是很简单明了:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: