《MFC添加语音功能》

2023-11-01

MFC一般提示都是用消息对话框来处理,同时我们也可以加上语音播报功能。语音播报我们可以调用微软自带的Microsoft Speech API (SAPI) 5.4,它里面有语音识别,还有有一个Text-to-Speech 引擎,可以将文本转化为语音,我们用的就是这个。

下面我们创建一个简单的MFC例子来演示这玩意是怎么用的

1、创建一个对话框取名叫“Speak”,添加一个按钮,修改为“语音播报”

2、添加头文件,找到下面这两个头文件,将它们和源文件放在一块,然后转到解决方案,项目名称“Speak”右键选择添加"现有项",然后选择上面那两个头文件,点确定,头文件就添加完了

 

3、包含头文件,创建对象

#include "TextSpeaker.h"

gds::CTextSpeaker m_TextSpeak;

4、双击“”语音播报“”按钮,添加控件响应函数,添加如下代码:

void CSpeakDlg::OnBnClickedButton1()
{
	//< TODO: 在此添加控件通知处理程序代码
	m_TextSpeak.Speak(_T("Hello World!"));
}

然后运行程序,点击按钮,就会出现一个女声美式发音。

5、如果报以下错误,那就是属性选择的字符集的问题,将TextSpeaker.h里面代码进行修改:

void Speak(const CString &text)
    {
        //
        // Input text must not be empty
        //
        if (text.IsEmpty())
        {
            ATLTRACE(TEXT("Empty text passed to CTextSpeaker::Speak().\n"));
            AtlThrow(E_INVALIDARG);
        }


        //
        // Speak input text
        //
        ULONG streamNumber;
		//USES_CONVERSION; 
		//LPCWSTR pwcStr = A2CW((LPCSTR)text); 
        HRESULT hr = m_tts->Speak(text, SPF_IS_NOT_XML | SPF_ASYNC | SPF_PURGEBEFORESPEAK, &streamNumber);
        if (FAILED(hr))
        {
            ATLTRACE(TEXT("Speak failed.\n"));
            AtlThrow(hr);
        }
    }

完整代码


完整Demo链接:https://download.csdn.net/download/mars_xiaolei/10666223

百度网盘链接:https://pan.baidu.com/s/1WjivKqte1qSvBYcumhaISg 
提取码:gxje 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《MFC添加语音功能》 的相关文章

  • 全网多种方法解决com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure的问题

    文章目录 1 复现错误 2 分析错误 3 解决问题 4 解决该错误的其他方法 1 复现错误 今天在使用knife4j 调用后端接口时 报出如下错误 于是 赶紧查看控制台的错误信息 错误信息如下所示 com mysql cj jdbc exc
  • ctf.show wed6

    1 or 1 1 返回sql注入错误 当无空格是正常返回 1 or 1 1 password 查库 1 union select 1 database 3 password 查表 1 union select 1 group concat
  • Linux驱动,如何添加驱动,让make menuconfig识别到

    在 drivers input touchscreen Makefile中添加驱动 obj CONFIG TOUCHSCREEN GSLX680 gslx680 只要当配置了CONFIG TOUCHSCREEN GSLX680的选项才会去编
  • Flink报错处理-1

    在 flink job 运行一段时间后 观察日志发现出现了如下的 warn日志 The operator name exceeded the characters length limit and was truncated 完整的 war
  • 一个可拖拽顺序,可添加可删除的React标签组件

    关于react ts中react draggable tags onChange事件不会触发 拿不到拖拽后的数组 官方回复是 示例上确实触发了 但是在实际的react ts项目中并没有触发这个onChange事件 于是我就自己写了一个 im
  • 基于MATLAB的FastICA算法实现语音信号盲分离

    基于MATLAB的FastICA算法实现语音信号盲分离 FastICA Fast Independent Component Analysis 是一种常用的盲源信号分离算法 可以应用于语音信号处理等领域 本文将介绍如何使用MATLAB实现F
  • 用白盒的思想黑盒地测试

    好久没写自动化测试的文章了 忘了自己的主业 实在是罪过罪过 今天就来点热闹的 抛个砖 分享一个我对某个案例的看法 题目虽然看起来比较晦涩 而且有堆砌关键词的嫌疑 但是我相信还是比较贴切的 相信现在业界都还是认为白盒测试是比较高级的一种测试
  • 晶振

    晶振是石英晶体谐振器 quartz crystal oscillator 的简称 也称有源晶振 它能够产生中央处理器 CPU 执行指令所必须的时钟频率信号 CPU一切指令的执行都是建立在这个基础上的 时钟信号频率越高 通常CPU的运行速度也
  • 动手学深度学习——5. 数据清洗

    动手学深度学习 5 数据清洗 记录一下学习深度学习的一些 本篇简述如何使用 cleanlab 清洗分类数据 所使用环境 Ubuntu 16 04 8700K GeForce RTX 1080Ti Python 3 8 Pytorch 1 7
  • 【Docker】 docker 命名空间(namespaces)

    神秘代码 5Lmd5biI5YWE5ZSv5LiA5Y6f5Yib5paH56ug77yM56aB5q2i6L2s6L29 1 概述 Docker 的出现一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和生产环境环境一
  • php在apache中的三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL

    原文地址 http hi baidu com thisuc item 818a77725234f011d1dcb314 一 CGI模式与模块模式比较 php在apache中两种工作方式的区别 CGI模式 Apache 模块DLL 这两种工作
  • LSM6DSR驱动

    ST陀螺仪LSM6DSR的驱动 由于最近MPU的价格疯涨 不得已只能更换主控上的陀螺仪芯片 刚好VL53L1X这颗激光芯片的厂家ST有几颗陀螺仪可以用 就拿了几颗试一下 感觉效果还不错 好像可以用于手机做单击双击的判断 于是突发奇想是不是也
  • 【华为OD机试真题 Java】加扰字符串(100%通过+全网最详细注释)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • PCA降维以及维数的确定

    概述 PCA principal components analysis 即主成分分析技术 又称为主分量分析 旨在利用降维的思想 把多个指标转换为少数的几个综合指标 主成分分析是一种简化数据集的技术 它是一个线性变换 这个线性变化把数据变换
  • Dialog DA14585+Sensirion SHT3X+SGP30环境温湿度检测设计

    好记性不如烂笔头 既然不够聪明 就乖乖的做笔记 温故而知新 Phosphor IOT Module是以DA14585作为主控的用于环境监测的评估板 DA14585是符合Bluetooth 5 0标准 16M 32位ARM Cortex M0
  • 学习Redis(持续更新...)

    文章目录 前言 一 redis入门 二 10大数据类型 1 字符串String 2 列表list 3 哈希表Hash 4 集合set 5 有序集合zset sorted set 6 位图bitmap 7 基数统计HyperLogLog 8
  • springboot 2.0多模块标准父类pom文件,别再问问什么找不到主类了,照着个写就行

    标准如下
  • ECharts动态加载数据绘制折线图

    Echarts动态加载数据绘制折线图 ECharts 引入ECharts 步骤 连接数据接口 动态加载图表 动态加载数据 整体代码 折线图绘制 总结 绘制多个图表的方法 ECharts 纯Javascript的图表库 支持各种图表的绘制 下
  • 区块链(肖臻笔记)

    区块链的技术与应用 比特币 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊 概述 基于账户的分布式账本 数据结构 状态树 交易树 收据树 ghost协议 挖矿 me

随机推荐

  • 初识EMC元器件(四)——共模电感选型及应用

    通过上一篇文章 共模电感的参数解读 已经对共模电感的参数有了初步的认识 那么本章将结合电路应用 一 共模电感选型步骤 共模电感滤波应用选型步骤 确定电路性质 电气参数 滤波频段 电感参数 主要需要考虑的参数有 电感感量 额定电流 额定电压
  • 前端基础2——CSS样式

    文章目录 一 使用方式 1 1 内联方式 1 2 内部方式 1 3 外部导入方式 推荐 二 选择器类型 2 1 元素选择器 2 2 ID选择器 2 3 类选择器 2 4 派生选择器 三 常用属性 3 1 内边距和外边距 3 2 文本 3 3
  • 转置卷积/逆卷积

    转置卷积作用 上采样 原理 卷积过程 step1 滑动窗口非常低效 我选择等效矩阵 相应位置相乘再相加 得到输出feature map step2 展平 得到矩阵i step3 把每一个等效矩阵展平为列向量 得到矩阵c step4 矩阵i和
  • vue中粘贴板clipboard的使用方法

    安装clipboard npm install clipboard save 在模板文件中引入 import Clipboard from clipboard 具体使用 这里我用的表格
  • 开发遇到问题全记录【增量】

    1 MyEclipse内部启动tomcat jar包冲突 在
  • 计算机文化基础-计算思维

    文章目录 计算思维 计算思维基础 计算思维定义 计算思维本质 计算思维特征 计算思维的基本问题 计算思维的基本方法 计算思维的应用 计算思维 关于计算机的说法很多 但就计算机科学来讲 计算机科学家在用计算机解决问题时形成的特有思维方式和解决
  • 三、对象与类

    1 面向对象程序设计概述 面向对象 OOP 是由对象组成的 每个对象包含对用户公开的特定功能部分和隐藏的实现部分 在OOP中 不必关心对象的具体实现 只要能满足用户的需求即可 类与对象概述 类 是构造对象的模板或蓝图 由类构造对象的过程称为
  • 什么是IoT数字孪生?

    数字孪生是资产或系统的实时虚拟模型 它使用来自连接的物联网传感器的数据来创建数字表示 数字孪生允许您从任何地方实时监控设备 资产或流程 数字孪生用于多种目的 例如分析性能 监控问题或在实施之前运行测试 从物联网数字孪生中获得的见解使用户能够
  • curl get post传参说明

    一 get请求 方式一 多个参数间用 连接 curl http 127 0 0 1 8080 api send type 1 mobile 13111111111 apikey sdfsdfdfs code 1234 方式二 url用单引号
  • 【云计算与大数据技术】虚拟化简介及虚拟化的分类讲解(图文解释 超详细)

    一 虚拟化简介 1 什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是在真实的 独立的物理硬件基础上运行 这种以优化资源 简化软件的重新配置过程为目的的解决方案就是虚拟化技术 虚拟化架构就是在一个物理硬件机器上同时运行多个不同应用的独立
  • sklearn-多元线性回归

    sklearn 多元线性回归 和简单线性回归使用单一解释变量和单一系数不同 多元线性回归使用任意数量的解释变量 每个解释变量对应一个系数 用于线性回归的模型也可以被表示为向量计法 多元线性回归 Y X Y是一个由训练实例响应变量组成的列向量
  • centOS7 重启后,连不上网(网卡不见了,ifcfg-ens33文件不存在)

    问题 ifconfig查询的时候 只有lo网卡 但是ifconfig a查询的时候却有ens33网卡 ls etc syconfig network scripts 查找所有网卡配置信息文件的时候 没有ifcfg ens33网卡配置文件 解
  • Python连接influxdb2.x

    Python连接influxdb2 x 一 调研 1 1 influxdb pypi 1 2 influxdb client pypi 二 连接 2 1 对象源码 2 2 连接实例 三 问题汇总 3 1 token非永久化问题结果 一 调研
  • 人工智能技术与现代应用

    人工智能的定义 人工智能 ArtificialIntelligence AI 学科从1956年正式提出 目前已取得长足的发展 成为一门广泛的交叉和前沿科学 总的说来 人工智能的目的就是让计算机这台机器能够像人一样思考 如果希望做出一台能够思
  • Vue 学习笔记

    Vue js 库 把一些常用的功能封装成一个个函数或者对象 并放到一个JS文件里 目的是为简化原生JS的操作 他是一个封装好的框架 框架 一套架构 提供一套整体解决方案 他能完全搞定整个项目开发 并且很轻松就能解决复杂的问题 vue的特征
  • 华硕天选笔记本电脑能上网但浏览器打不开

    系列文章目录 文章目录 系列文章目录 前言 二 第二种方法 1 打开设置 2 选择更改适配器选项 三 第三种方法 重置网络 1 设置 2 重置网络 前言 华硕天选笔记本电脑能上网但浏览器打不开 网上的方法 1 点击 开始 选择 控制面板 2
  • springboot配置多个数据源(两种方式)

    在我们的实际业务中可能会遇到 在一个项目里面读取多个数据库的数据来进行展示 spring对同时配置多个数据源是支持的 本文中将展示两种方法来实现这个功能 springboot mybatis 第一种方式 在配置文件中配置多个数据源 然后通过
  • 一张图看懂小程序全生态!目前总结最全的,没有之一

    本文为微信公众号 造个程序 ID zgcx007 原创 授权CSDN首发 版权归作者所有 责编 陈秋歌 关注微信开发等领域 寻求报道或者投稿请发邮件至chenqg csdn net 2017年1月9日 小程序发布在万众瞩目中发布 不仅占据了
  • k8s-进阶-工作负载

    一 控制器 Pod 容器组 是 Kubernetes 中最小的调度单元 您可以通过 kubectl 直接创建一个 Pod Pod 本身并不能自愈 self healing 如果一个 Pod 所在的 Node 节点 出现故障 或者调度程序自身
  • 《MFC添加语音功能》

    MFC一般提示都是用消息对话框来处理 同时我们也可以加上语音播报功能 语音播报我们可以调用微软自带的Microsoft Speech API SAPI 5 4 它里面有语音识别 还有有一个Text to Speech 引擎 可以将文本转化为