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

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.lryc.cn/news/152539.html

相关文章:

  • FFmpeg4.3.1+h264在windows下编译与VS2017项目集成
  • mapboxGL3新特性介绍
  • 类ChatGPT大模型LLaMA及其微调模型
  • 50个简洁的提示提高代码可读性和效率(0-10)
  • Linux —— 进程信号
  • Android笔记 自定义控件时drawText字符串宽度的3种计算方式
  • ChatRWKV 学习笔记和使用指南
  • Particle Life粒子生命演化的MATLAB模拟
  • golang中byte和rune的区别?
  • AI图像行为分析算法 opencv
  • MATLAB制图代码【第二版】
  • 5.0: Dubbo服务导出源码解析
  • python自动化测试-自动化基本技术原理
  • lodash 之 _.isEmpty
  • layui数据表格实现表格中嵌套表格,并且可以折叠展开
  • 云端笔记系统-自动化测试
  • 将帅要避免五个方面的弱点:蛮干、怕死、好名、冲动、溺爱民众
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书成都理工大学图书馆
  • vue的第3篇 第一个vue程序
  • 线性求逆元
  • 第一章 USB应用笔记之USB初步了解
  • 小白入门python
  • 《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》
  • Adobe Illustrator 2023 for mac安装教程,可用。
  • ElasticSearch(一)数据类型
  • Spark-Core核心算子
  • Linux和Windows下防火墙、端口和进程相关命令
  • 2021年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【算法】滑动窗口
  • JS获取Beego渲染模板Temple时传递的数据