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();
}
相关推荐
xiaolang_8616_wjl2 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
夜月yeyue2 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
无小道3 小时前
c++-引用(包括完美转发,移动构造,万能引用)
c语言·开发语言·汇编·c++
FirstFrost --sy5 小时前
数据结构之二叉树
c语言·数据结构·c++·算法·链表·深度优先·广度优先
Tanecious.5 小时前
C++--map和set的使用
开发语言·c++
Yingye Zhu(HPXXZYY)5 小时前
Codeforces 2021 C Those Who Are With Us
数据结构·c++·算法
limingade6 小时前
手机通话语音离线ASR识别商用和优化方向
智能手机·语音识别·funasr离线识别·android做asr·手机断网离线asr·asr语音转文字识别
liulilittle6 小时前
LinkedList 链表数据结构实现 (OPENPPP2)
开发语言·数据结构·c++·链表
无聊的小坏坏6 小时前
三种方法详解最长回文子串问题
c++·算法·回文串
山河木马7 小时前
前端学习C++之:.h(.hpp)与.cpp文件
前端·javascript·c++