#include
"sphelper.h"
#include "sapi.h"
#pragma comment(lib, "sapi.lib")
int CtestMFCDlg::testTTS(TCHAR*
szWords)
{
if ( NULL == szWords ||
0 == szWords[
0] )
return -
1;
::CoInitialize(NULL); // COM初始化
CLSID CLSID_SpVoice;
CLSIDFromProgID(_T("SAPI.SpVoice"), &
CLSID_SpVoice);
ISpVoice *pSpVoice =
NULL;
IEnumSpObjectTokens *pSpEnumTokens =
NULL;
// 获取ISpVoice接口
if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (
void**)&
pSpVoice)))
{
return -
1;
}
// 列举所有的语音token,可以通过pSpEnumTokens指向的接口得到
if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &
pSpEnumTokens)))
{
ISpObjectToken *pSpToken =
NULL;
// 依次获取每个token并朗读字符串
if (SUCCEEDED(pSpEnumTokens->Next(
1, &pSpToken, NULL)) && pSpToken !=
NULL)
{
pSpVoice->SetVolume(
100);
pSpVoice->SetVoice(pSpToken);
// 设置当前语音token为pSpToken
pSpVoice->Speak(szWords, SPF_DEFAULT, NULL);
// 朗读中文和英文的混合字符串
pSpToken->Release();
// 释放token
}
pSpEnumTokens->Release();
// 释放pSpEnumTokens接口
}
pSpVoice->
Release();
::CoUninitialize();
return 0;
}
转载于:https://www.cnblogs.com/jingdian1956/p/3757949.html
相关资源:DirectX修复工具V4.0增强版