c++语音播报 error C4996: ‘GetVersionExA': 被声明为已否决

这篇具有很好参考价值的文章主要介绍了c++语音播报 error C4996: ‘GetVersionExA': 被声明为已否决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果出现以下错误:

error C4996: ‘GetVersionExA': 被声明为已否决

关闭SDL:

Project Properties > Configuration Properties > C/C++ > General > SDL checks关掉

转载于

C++ 简单的语音合成(TTS,即文字转语音)类_少年磊的博客-CSDN博客_c++ tts

微软win7及以上版本自带的语音合成引擎,可以直接拿来用,不需要额外的dll文件,只需要引用头文件即可, 封装一个简单的类用来做语音合成如下:
tts.h

#pragma once
#include <Windows.h>
#include "sapi.h"
#include <list>
#include <string>
#include "sphelper.h"
#pragma comment(lib, "sapi.lib")
 
 
class TTS
{
public:
	TTS();
	~TTS();
	bool Speak(std::wstring);
	bool IsUseful();
 
private:
	ISpVoice*	m_pSpVoice;
 
	bool InitVoice();
	void StopVoice();
};
 

tts.cpp

#include "tts.h"
 
 
TTS::TTS()
{
	m_pSpVoice = nullptr;
}
 
 
TTS::~TTS()
{
	StopVoice();
	::CoUninitialize();
}
 
bool TTS::InitVoice()
{
	HRESULT ret = ::CoInitialize(NULL);
	ret = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&m_pSpVoice);
	if (0 == ret && m_pSpVoice)
	{
		m_pSpVoice->SetVolume(80);
 
		IEnumSpObjectTokens *pSpEnumTokens = NULL;
		if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens)))		//找到lili语音进行朗读, 否则就跳出
		{
			ISpObjectToken *pSpToken = NULL;
			while (SUCCEEDED(pSpEnumTokens->Next(1, &pSpToken, NULL)) && pSpToken != NULL)
			{
				LPWSTR pId = new WCHAR[32];
				pSpToken->GetId(&pId);
 
				int nLen = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)pId, -1, NULL, 0, NULL, NULL);
 
				char *s = new char[nLen + 1];
				WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)pId, -1, s, nLen, NULL, NULL);
 
				if (0 == strcmp(s, ("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MS-Lili-2052-20-DSK")))
				{
					m_pSpVoice->SetVoice(pSpToken);      // 设置lili语音
					pSpToken->Release();
					delete[] s;
					break;
				}
				delete[] s;
				pSpToken->Release();
			}
			pSpEnumTokens->Release();
		}
		return true;
	}
	else
	{
		
	}
	return false;
}
 
bool TTS::Speak(std::wstring word)
{
	StopVoice();
	if (InitVoice())
	{
		HRESULT ret = m_pSpVoice->Speak(word.c_str(), SPF_ASYNC, NULL);
		return ret;
	}
	else
	{
		return false;
	}
 
}
 
bool TTS::IsUseful()
{
	bool bRet = InitVoice();
	StopVoice();
	return bRet;
}
 
void TTS::StopVoice()
{
	if (m_pSpVoice!=nullptr)
	{
		m_pSpVoice->Release();
	}
}

实例化对象,使用Speak函数就行了,后一次会把前一次没播放完的停掉,注意参数是wstring型 

下面链接是Qt实现的语音播报功能,可以调节音量、音色、播报速率,跨平台,功能更强大:

Qt的QTextToSpeech类实现语音播报功能文章来源地址https://www.toymoban.com/news/detail-519345.html

到了这里,关于c++语音播报 error C4996: ‘GetVersionExA': 被声明为已否决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue 语音播报(文字转语音)】

    查看代码 参考 1.speak-tts: https://github.com/tom-s/speak-tts 2.Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音) :https://www.cnblogs.com/badaoliumangqizhi/p/15822975.html 3.vue 语音播报(文字转语音)https://www.icode9.com/content-4-864733.html

    2024年02月11日
    浏览(59)
  • uniapp小程序使用文字转语音播报类似支付宝收款播报

    第一步:登陆微信公众平台,侧边栏的设置-----第三方设置-----插件管理----添加插件(搜索–同声传译) 第二步:打开 hbiuider-x,找到当前项目,打开manifest.json,找到源码视图,配置插件     第三步,页面引入使用  

    2024年02月12日
    浏览(44)
  • Android文字转语音播报

    Android文字转语音播报可以通过Android自带TTS和第三方语音框架实现。 代码如下(示例): 代码如下(示例): 1.包名、应用名: com.svox.pico 系统自带不支持中文语音 com.baidu.duersdk.opensdk 度秘语音引擎3.0 不支持5.0以下系统,大小11.95M com.google.android.tts 谷歌文字转语音引擎,不

    2023年04月08日
    浏览(38)
  • uniapp 语音文本播报功能

    最近uniapp项目上遇到一个需求 就是在接口调用成功的时候加上语音播报 , ‘创建成功’ ‘开始成功’ ‘结束成功’ 之类的。 因为是固定的文本 ,所以我先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了。 这里用到的工具: 知意配音 链接地址:https://peiy

    2024年02月15日
    浏览(44)
  • h5开发语音播报功能

    一、使用window自带的api,但是手机浏览器多数不支持,兼容性差(不推荐) 1.使用到了window的speechSynthesis属性,如下如1.1                                                                         图1.1  2.主要用到了播报方法speak()和取消播报

    2024年02月14日
    浏览(49)
  • 简述Android语音播报TTS

    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页:开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。 🔥如需转载请参考【转载须知】 在现

    2024年04月22日
    浏览(38)
  • uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)

    uni-app/vue 文字转语音朗读(小程序语音识别和朗读) 一、第一种方式:直接加语音包 固定的文本 先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了 这里用到的工具:知意配音 链接地址:https://peiyin.wozhiyi.com/newproduction.html 接下来,代码部分。 在min.js文件里加

    2024年02月07日
    浏览(60)
  • (vue)vue项目实现语音播报

    解决参考1: 在 Vue 项目中,你可以使用 Web Speech API 中的 SpeechSynthesis 接口来实现文本内容的自动朗读。下面是一个示例: 1.在 Vue 组件的模板中添加一个按钮,用于触发朗读: 2.在 Vue 组件的方法中实现朗读功能: 学习参考2:https://www.yzktw.com.cn/post/1266165.html

    2024年02月15日
    浏览(37)
  • STM32+JR6001语音播报

      文章目录 前言 一、JR6001怎么用? 二、使用步骤 1.合成语音 2.STM32代码 总结   最近在做一个利用STM32最小系统实现语音播报的小项目,加入到智能家居远程控制系统中,用来提示上位机对应操作的播报,于是就选择了JR6001作为语音播报模块,接下来就是学习过程。 提示:

    2024年02月06日
    浏览(163)
  • 基于STM32 + SYN6288语音播报

    完整代码下载 https://download.csdn.net/download/zhouml_msn/85592868 1:5V供电 ,功耗约120mA (带图中小喇叭); 2:最少接3根线:5V,  GND,  RXD,TXD-可不接,BY-可不接 3:两种音源输出接口,排针、标准3.5mm接口,接小喇叭和普通音箱都无压力。 4:每次最多可转换200字节文本; 1:串口配置波

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包