添加头文件
声明变量
pSpVoice = NULL; //默认构造函数中初始化为空
bool CChKBarSCCodeApp::InitSpVoice()
{
HRESULT hr = ::CoInitialize(NULL); // COM初始化
if (!SUCCEEDED(hr))
{
AfxMessageBox(_T("声音环境初始化失败!"));
return false;
}
// 获取ISpVoice接口
if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&pSpVoice)))
{
AfxMessageBox(_T(" 获取ISpVoice接口失败!"));
return -1; // 当获取ISpVoice接口失败时,返回-1
}
//SpFindBestToken是SAPI中的一个函数,用于根据指定的属性条件查找最佳的语音token
if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804", NULL, &pSpObjectToken)))//804代表中文
{
pSpVoice->SetVoice(pSpObjectToken);//设置中文
pSpVoice->SetVolume(m_oHardPara.m_nVolumeSize);//设置声音大小
pSpVoice->SetVolume(m_oHardPara.m_nVolumeSpeed);
}
else
{
AfxMessageBox(_T("没有安装微软语音库!"));
return false;
}
return true;
}
void CChKBarSCCodeApp::SpVoiceOK()
{
CString sTxt =_T("扫描成功");
pSpVoice->Speak(sTxt.AllocSysString(), SPF_ASYNC, NULL);//异步读取
}
void CChKBarSCCodeApp::SpVoiceNG()
{
CString sTxt = _T("扫描失败");
pSpVoice->Speak(sTxt.AllocSysString(), SPF_ASYNC, NULL);//异步读取
}
int CChKBarSCCodeApp::ExitInstance()
{
if (pSpVoice)
{
pSpVoice->Release();
}
::CoUninitialize();
return CWinApp::ExitInstance();
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » MFC 使用sapi文字转换为语音
发表评论 取消回复