win7以上(vista未考证),VS2008以上,不再需要Microsoft Speech SDK,直接引用头文件即可。
1、引用头文件,加载sapi.lib:
2、初始化COM,初始化 SAPI:
1、引用头文件,加载sapi.lib:
#include <sapi.h>
#include <sphelper.h>
#pragma comment(lib,sapi.lib)
2、初始化COM,初始化 SAPI:
ISpVoice * pVoice = NULL; //初始化COM
if (FAILED(CoInitialize(NULL)))
{
AfxMessageBox("Error to intiliaze COM");
return false ;
}
//初始化SAPI
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
ISpObjectToken * pSpObjectToken = NULL;
if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804", NULL, &pSpObjectToken)))//804代表中文
{
pVoice->SetVoice(pSpObjectToken);//声音大小
pVoice->SetRate(-2);//语速
pSpObjectToken->Release();
} else {
AfxMessageBox("没有安装微软语音库!");
return false;
}
//朗读编辑框中的文字
if( SUCCEEDED( hr ) )
{
CString strText="语音测试";//引号是朗读的话 可以是中文
CString strText="语音测试";//引号是朗读的话 可以是中文
hr = pVoice->Speak(strText.AllocSysString(), 0, NULL);
pVoice->Release(); pVoice = NULL;
}
3、与CoInitialize(NULL)成对使用,释放COM
CoUninitialize();
3、与CoInitialize(NULL)成对使用,释放COM