我是靠谱客的博主 冷酷耳机,最近开发中收集的这篇文章主要介绍Windows Speech SDK5.1的安装和使用(xp/win7),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于工作需要,需要文字转语音功能的支持。由于各种原因限制,所以选择了使用Windows平台自带的语音引擎。

首先使用场景是局域网,无法访问互联网。所以通过网络接口提供的服务就被排除了,比如百度的tts服务。

由于应用范围也很有限,规模小,所以付费的语音引擎也不考虑了。比如科大讯飞的语音引擎。

再者个人经验阅历有限,目前不知道其他开源的语音引擎,所以,只能选择平台自带的语音引擎(非windows正版用户功能有阉割),还好,找到了修复工具,解决了这个问题,修复工具见上一篇文章,附带好多语音库可以下载使用,还提供了demo工具可以测试。

下面说一下使用流程。

  • 安装SpeechSDK5.1

这个直接到微软官网下载https://www.microsoft.com/en-us/download/confirmation.aspx?id=27226,可以下载汉语的语音包,不过是用英语的语调读汉语,比较别扭。下载安装后,需要下载补丁工具。

  • 下载修复工具和测试工具

http://blog.sina.com.cn/s/blog_88bdc35c0102vd0e.html --------------------- 本文来自 moyebaobei1 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/moyebaobei1/article/details/82789362?utm_source=copy

这是个测试工具,可以用来测试服务是否可用,以及语音库是佛安装成功。http://www.cppfans.com/cbknowledge/skills/media/ttsdemo.asp --------------------- 本文来自 moyebaobei1 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/moyebaobei1/article/details/82789362?utm_source=copy

语音库可以看到我安装了哪些语音,语音库都是符合一定标准的就可以识别。然后输入朗读内容,单击【朗读】就可以按照这种语音库的规律朗读文字。如果朗读成功,则说明语音库安装成功了。

Windows平台,是基于COM和DCOM组织起来的,所以实现上就是需要创建出对应的组件,然后调用接口上的方法。哦通过SDK调用TTS服务,需要设置默认的语音库。

  • 设置系统语音服务(默认语音库)

控制面板 - 语音(32位)- 文字转语音

  • 封装调用

然后对SDK调用做一下简单的封装。

#pragma once
#include<iostream>
#include <sapi.h> //导入语音头文件
#include <string>
#pragma comment(lib,"sapi.lib") //导入语音头文件库
using namespace std;
void
MSSSpeak(LPCTSTR speakContent)// speakContent为LPCTSTR型的字符串,调用此函数即可将文字转为语音
{
ISpVoice *pVoice = NULL;
//初始化COM接口
if (FAILED(::CoInitialize(NULL)))
MessageBox(NULL, (LPCWSTR)L"COM接口初始化失败!", (LPCWSTR)L"提示", MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2);
//获取SpVoice接口
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void**)&pVoice);
if (SUCCEEDED(hr))
{
pVoice->SetVolume((USHORT)100); //设置音量,范围是 0 -100
pVoice->SetRate(0); //设置速度,范围是 -10 - 10
hr = pVoice->Speak(speakContent, 0, NULL);
pVoice->Release();
pVoice = NULL;
}
//释放com资源
::CoUninitialize();
}
//string转换车wstring
std::wstring
StringToWString(const std::string& s)
{
std::wstring wszStr;
int nLength = MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, NULL, NULL);
wszStr.resize(nLength);
LPWSTR lpwszStr = new wchar_t[nLength];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, lpwszStr, nLength);
wszStr = lpwszStr;
delete[] lpwszStr;
return wszStr;
}
void read(string temp){
wstring a = StringToWString(temp);
LPCWSTR str = a.c_str();
/*不知道为什么Cstr不行*/
MSSSpeak(str);
cout << "朗读结束n";
}

 

最后

以上就是冷酷耳机为你收集整理的Windows Speech SDK5.1的安装和使用(xp/win7)的全部内容,希望文章能够帮你解决Windows Speech SDK5.1的安装和使用(xp/win7)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部