当前位置: 首页 > news >正文

MFC 使用sapi文字转换为语音

文章目录

  • 添加头文件
    • 声明变量

添加头文件

在这里插入图片描述

声明变量

在这里插入图片描述

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中的一个函数,用于根据指定的属性条件查找最佳的语音tokenif (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();
}

相关文章:

  • 跨域、JSONP、CORS、Spring、Spring Security解决方案
  • maven的install不报错但deploy到nexus报400错误
  • AI大模型探索之路-实战篇16:优化决策流程:Agent智能数据分析平台中Planning功能实践
  • Python 中的装饰器及其作用
  • Oracle数据库连接并访问Microsoft SQL Server数据库
  • Apple开发者macOS设备与描述文件Profile创建完整过程
  • 协程库——面试问题
  • 大模型Prompt-Tuning技术进阶
  • 中介子方程十一
  • 异常(Exception)
  • 【VUE3 element时间选择器默认选择七天】
  • 【WP|9】深入解析WordPress [add_shortcode]函数
  • 摄影店展示服务预约小程序的作用是什么
  • idm究竟有哪些优势
  • Java File IO
  • 【个人向】《HTTP图解》阅后小结
  • ➹使用webpack配置多页面应用(MPA)
  • angular组件开发
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java的Interrupt与线程中断
  • JSONP原理
  • leetcode46 Permutation 排列组合
  • OSS Web直传 (文件图片)
  • Promise面试题2实现异步串行执行
  • PV统计优化设计
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue-loader 源码解析系列之 selector
  • 百度地图API标注+时间轴组件
  • 聊聊flink的TableFactory
  • 前端代码风格自动化系列(二)之Commitlint
  • 实战|智能家居行业移动应用性能分析
  • 详解NodeJs流之一
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 达梦数据库知识点
  • #Ubuntu(修改root信息)
  • (7)摄像机和云台
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (SpringBoot)第七章:SpringBoot日志文件
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (四)Linux Shell编程——输入输出重定向
  • (四)图像的%2线性拉伸
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • **PHP分步表单提交思路(分页表单提交)
  • .apk文件,IIS不支持下载解决
  • .bat批处理出现中文乱码的情况
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net framework4与其client profile版本的区别