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();
}
相关推荐
阿让啊4 小时前
C语言strtol 函数使用方法
c语言·数据结构·c++·单片机·嵌入式硬件
liulilittle4 小时前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
田里的水稻7 小时前
C++_队列编码实例,从末端添加对象,同时把头部的对象剔除掉,中的队列长度为设置长度NUM_OBJ
java·c++·算法
Jayden_Ruan8 小时前
C++逆向输出一个字符串(三)
开发语言·c++·算法
liulun8 小时前
Skia如何渲染 Lottie 动画
c++·动画
点云SLAM9 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
东风西巷9 小时前
Balabolka:免费高效的文字转语音软件
前端·人工智能·学习·语音识别·软件需求
UnnamedOrange11 小时前
ROS2 配置 linter 的代码格式化工具为 clang-format
c++·cmake
Dobby_0511 小时前
【面试题】C++系列(一)
c++·面经
一拳一个呆瓜11 小时前
【MFC】对话框节点属性:Language(语言)
c++·mfc