MFC 使用sapi文字转换为语音

文章目录

添加头文件

声明变量

c 复制代码
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);//异步读取
}
c 复制代码
int CChKBarSCCodeApp::ExitInstance()
{
	

	if (pSpVoice)
	{
		pSpVoice->Release();
	}
	::CoUninitialize();

	return CWinApp::ExitInstance();
}
相关推荐
超闻逸事22 分钟前
【题解】[UTPC2024] C.Card Deck
c++·算法
暴力求解33 分钟前
C++类和对象(上)
开发语言·c++·算法
让我们一起加油好吗1 小时前
【基础算法】枚举(普通枚举、二进制枚举)
开发语言·c++·算法·二进制·枚举·位运算
大锦终1 小时前
【C++】特殊类设计
开发语言·c++
泽02021 小时前
C++之STL--list
开发语言·c++·list
Dovis(誓平步青云)3 小时前
探索C++标准模板库(STL):String接口的底层实现(下篇)
开发语言·c++·stl·string
KyollBM4 小时前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
feiyangqingyun4 小时前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181
CV点灯大师4 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
成工小白5 小时前
【C++ 】智能指针:内存管理的 “自动导航仪”
开发语言·c++·智能指针