VC++使用Microsoft Speech SDK进行文字TTS朗读

Microsoft Speech SDK下载地址
https://www.microsoft.com/en-us/download/details.aspx?id=10121
需要msttss22L.exe、SpeechSDK51.exe、SpeechSDK51LangPack.exe三个,下载后全部安装
在这里插入图片描述
使用VS2005建立一个win32控制台项目
朗读"hello word"、中文“你好”的程序

#include <sphelper.h>//语音头文件
#include <stdio.h>int main(int argc, char* argv[])
{ISpVoice * pSpVoice = NULL;//初始化语音变量::CoInitialize(NULL);//初始化语音环境//给语音变量创建环境,相当于创建语音变量,FAILED是个宏定义,就是来判断CoCreateInstance这个函数又没有成功创建语音变量,下面是不成功的提示信息。if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice))){printf("Failed to create instance of ISpVoice! "); return -1;}pSpVoice->Speak(L"Hello World!你好!", SPF_DEFAULT, NULL);//执行语音变量的Speek函数,这个函数用来读文字。pSpVoice->Release(); //释放语音变量::CoUninitialize();//释放语音环境getchar();return 0;
}

点击项目,属性,配置属性,c/c++。设置附加包含目录,就是sdk安装目录下的include文件夹
在这里插入图片描述
链接器,常规,附加库目录就是sdk的lib\i386文件夹
在这里插入图片描述
链接器,输入,附加依赖项,添加sapi.lib
在这里插入图片描述
使用vs2005编译链接,会出现报错

1>c:\program files (x86)\microsoft speech sdk 5.1\include\sphelper.h(769) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft speech sdk 5.1\include\sphelper.h(1419) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft speech sdk 5.1\include\sphelper.h(2373) : error C2065: “psz”: 未声明的标识符
1>c:\program files (x86)\microsoft speech sdk 5.1\include\sphelper.h(2559) : error C2440: “初始化”: 无法从“CSpDynamicString”转换为“SPPHONEID *”
1>        没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>c:\program files (x86)\microsoft speech sdk 5.1\include\sphelper.h(2633) : error C2664: “wcslen”: 不能将参数 1 从“SPPHONEID *”转换为“const wchar_t *”

SAPI 包含sphelper.h编译错误解决方案, 在使用Microsoft Speech SDK 5.1开发语音识别程序时,包含了头文件“sphelper.h”和库文件“sapi.lib”
对sphelper.h的修改:
Line 769

const ulLenVendorPreferred = wcslen(pszVendorPreferred);
修改为:
const unsigned long ulLenVendorPreferred = wcslen(pszVendorPreferred);

Line 1418

static CoMemCopyWFEX(const WAVEFORMATEX * pSrc, WAVEFORMATEX ** ppCoMemWFEX)修改为:
static HRESULT CoMemCopyWFEX(const WAVEFORMATEX * pSrc, WAVEFORMATEX ** ppCoMemWFEX)

Line 2372

for (const WCHAR * psz = (const WCHAR *)lParam; *psz; psz++) {}修改为:
const WCHAR * psz; for (psz = (const WCHAR *)lParam; *psz; psz++) {}

Line 2559

SPPHONEID* pphoneId = dsPhoneId;修改为:
SPPHONEID* pphoneId = (SPPHONEID*)((WCHAR *)dsPhoneId);

Line 2633

pphoneId += wcslen(pphoneId) + 1;修改为:
pphoneId += wcslen((const wchar_t *)pphoneId) + 1;

之后编译通过,运行会朗读文本
Microsoft Speech SDK不仅支持Text to Speech(TTS)文字转语音,还支持Speech Recognition(SR)语音识别功能,可以自己尝试
下载
修改后的sphelper.h头文件
https://download.csdn.net/download/m0_60352504/88275713
Microsoft Speech SDK
https://download.csdn.net/download/m0_60352504/88275709

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116903.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[dasctf]misc3 chrchrchr.pcapng

webshell 流量分析 php代码部分没啥看的&#xff0c;主要在标黄的部分&#xff0c;裁剪掉前面的字符可base解码 能看到在向a.txt中写入数据 wp # tshark.exe -r chrchrchr.pcapng -T fields -e urlencoded-form.value -Y "urlencoded-form.keyzd2ebbfb26dd" >…

【Sql】把数据库字段用函数根据逗号分裂成列表,然后判断列表中是否包含目标值

【Sql】把数据库字段用函数根据逗号分裂成列表&#xff0c;然后判断列表中是否包含目标值 【1】问题描述【2】Oracle内置函数解决【3】mysql的内置函数INSTR()【4】mysql的内置函数FIND_IN_SET() 【1】问题描述 数据库中【库信息db】和【集群信息cluster】是一对多的关系&…

Remmina在ubuntu22.04中无法连接Windows

Remmina在ubuntu22.04中无法连接Windows 问题 提示为&#xff1a; 无法通过TLS到RDP服务器… 分析 原因是Remmina需要使用openssl通过RDP加密与Windows计算机连接&#xff0c;而ubuntu22.04系统中OpenSSL版本为3.0&#xff0c;Openssl3 将 tls<1.2 和 sha1 的默认安全级别…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——形式逻辑——联言选言假言——矛盾

角度 角度——汇总——持续优化 性质 &#xff08;1&#xff09; 所有的 S 是 P 所有的S是P 所有的S是P 与 有的 S 不是 P 有的S不是P 有的S不是P矛盾 &#xff08;2&#xff09; 所有的 S 不是 P 所有的S不是P 所有的S不是P 与 有的 S 是 P 有的S是P 有的S是P 矛盾 &#xf…

Git——Windows平台创建gitee私有仓库详解

目录 1. 安装git 2. gitbash配置 2.1 设置 2.2 生成key 2.3 项目管理 2.3.1 本地新建 2.3.2 clone远程仓库的工程到本地改文件 1. 安装git 默认安装。 2. gitbash配置 2.1 设置 打开gitbash&#xff0c;设置用户名和邮箱&#xff1a; git config --global user.name …

excel功能区(ribbonx)编程笔记--2 button控件与checkbox控件

我们上一章简单先了解了ribbonx的基本内容,以及使用举例实现自己修改ribbox的内容,本章紧接上一章,先讲解一下ribbonx的button控件。 在功能区的按钮中,可以使用内置图像或提供自已的图像,可以指定大按钮或者更小的形式,添加少量的代码甚至可以同时提供标签。此外,可以利…

WPF基础入门-Class7-WPF-MVVN框架

WPF基础入门 Class7-MVVN框架 使用框架可以省掉如Class6中的ViewModelBase.cs的OnPropertyChanged&#xff0c;亦方便命令传参 1、NuGet安装CommunityToolkit.Mvvm&#xff08;原Mircrosoft.Toolkit.Mvvm&#xff09;也可以安装MVVMLight等其他集成库 2、显示页面&#xff1…

用Rust打印hello world!

步骤1 桌面新建1个名为 rustDemo 的文件夹&#xff08;文件夹名字随便取&#xff09; 步骤2 打开新建的文件夹&#xff0c;在地址输入栏输入 cmd 按回车键进入命令行窗口 步骤3 打开编译器&#xff0c;按 Ctrl S&#xff0c;保存文件到 rustDemo 文件夹中&#xff0c;保存的…

简述SpringMVC

一、典型的Servlet JSP JavaBean UserServlet看作业务逻辑处理&#xff08;Controller&#xff09;User看作模型&#xff08;Model&#xff09;user.jsp看作渲染&#xff08;View&#xff09; 二、高级MVC 由DispatcherServlet对请求统一处理 三、SpringMVC MVC与Spr…

MySQL8.0.22安装过程记录(个人笔记)

1.点击下载MySQL 2.解压到本地磁盘&#xff08;注意路径中不要有中文&#xff09; 3.在解压目录创建my.ini文件 文件内容为 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8[mysqld] # 设置端口 port 3306 # 设计mysql的安装路径 basedirE:\01.app\05.Tool…

OpenCV(十四):ROI区域截取

在OpenCV中&#xff0c;你可以使用Rect对象或cv::Range来截取图像的感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;。 方法一&#xff1a;使用Rect对象截取图像 Rect_(_Tp _x&#xff0c; _Tp _y&#xff0c; _Tp _width,_Tp _height) Tp:数据类型&…

stable diffusion实践操作-大模型介绍

本文专门开一节写大模型相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 模型下载网站 国内的是&#xff1a;https://www.liblibai.com 国外的是&#xff1a;https://civitai.com&#xff08;科学上网&#xff09; 一、发展历…

高效率、高质量的DMG映像制作:DMG Canvas for mac,助你轻松实现

如果你是一位开发者或企业用户&#xff0c;你一定知道DMG磁盘映像文件在分发应用程序或文件时的重要性。DMG磁盘映像文件可以让用户轻松地创建磁盘映像&#xff0c;并将其挂载到Mac电脑上&#xff0c;从而方便地安装或使用应用程序或文件。 然而&#xff0c;传统的DMG磁盘映像…

MacApp自动化测试之常用工具简介

自动化测试在国内主要以单元测试、API测试、WebUI测试为主&#xff0c;对于MacApp测试却鲜有涉及。但2021年统计MacBook市场占有率接近10%&#xff0c;相比前一年市场占有率提升了26%&#xff0c;可见发展势头非常不错。 与此MacBook上的应用程序MacApp也在有序地发展着&#…

C语言 语法积累

参考博文&#xff1a; c语言中int默认是有符号还是无符号,C语言迷题&#xff1a;有符号数与无符号数的问题_旋斡勃人的博客-CSDN博客前些天偶然看到了一个收集C语言迷题的网站&#xff0c;很是感兴趣。本人对C/C语言本身很是感兴趣&#xff0c;曾经做过几年相应的开发&#xf…

FBX SDK 开发环境配置 visual studio 2022

FBX | Adaptable File Formats for 3D Animation Software | Autodesk. 下载windows的sdk并安装. 创建一个c console 工程 设置include目录 添加预处理宏 FBX_SHARED1 添加fbx sdk lib 目录 添加依赖lib : libfbxsdk-md.lib libxml2-md.lib zlib-md.lib 配置完毕.

JavaScript Web APIs - 05 Window对象 、本地存储

Web APIs - 05 文章目录 Web APIs - 05js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储&#xff08;今日重点&#xff09;localStorage&#xff08;重点&#xff09;sessionStorage&#xff08;了解&#xff09;localStorage 存储复杂数据类型 综…

【校招VIP】算法考点之堆排

考点介绍&#xff1a; 排序算法属于数据结构和算法的基础内容&#xff0c;并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值&#xff0c;但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶&#xff0c;取得 n…

transformer源码

1.传统RNN网络 每一层都需要上一层执行完才能执行 1.1 自注意力 在一句话中找到it_指代的是什么&#xff0c;它的上下文语境是什么&#xff1f; self-attetion计算 1.2 multi-header机制 1.3 堆叠多层self-attention&#xff0c;相当于再一次卷积 1.4 位置信息编码 1.5 残…

性能测试有哪些常见的测试指标?

一、什么是性能测试 先看下百度百科对它的定义 <font size"3">性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。</font> 我们可以认为性能测试是&#xff1a;通过在测试环境下对系统或构件的性能进…