Microsoft Speech SDK 工具类
来源:互联网 发布:php fpm 错误日志 编辑:程序博客网 时间:2024/05/21 03:59
今天无意中发现了Windows平台下文字转语音的API接口—— Microsoft Speech SDK,就拿过来玩了下,写了一个工具类。
这款sdk似乎功能很多,我只是用了文字转语音的功能,以后有机会的话,再多多发掘一下。
1.1 下载地址
首先,是下载地址。
https://www.microsoft.com/en-us/download/details.aspx?id=10121
进入主页,点击下载,按照提示进行安装即可。
安装完成SDK之后,在安装路径之下就可以找到头文件和动态库/静态库。里面也有相应的说明文档和示例,很有帮助。
1.2 工具类
我把文字转语音的功能封成了一个类。大家可以借鉴使用。在使用时,当然少不了配置依赖项等属性。会一一介绍。
1.2.1 MSSpeacker
Class Declare:
// Class Declare1#ifndef _MSSPEAK_H_#define _MSSPEAK_H_#include <iostream>#include "sapi.h" // MS speech sdk 提供的头文件,需要自己配置文件路径属性#include <Windows.h>#include <string>#include <fstream>using namespace std;class MSSpeaker{public: MSSpeaker(void); ~MSSpeaker(void); static void InitialMsSpeaker(); static void CloseMsSpeaker(); static void Speaking(const string & speakContent);private: // string to wstring static wstring StringToWString(const string & str);};#endif
Class Implement:
#include "MSSpeak.h"MSSpeaker::MSSpeaker(void){}MSSpeaker::~MSSpeaker(void){}void MSSpeaker::InitialMsSpeaker(){ //初始化COM接口 if (FAILED(::CoInitialize(NULL))) MessageBox(NULL, "COM接口初始化失败!", "提示", MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2);}void MSSpeaker::CloseMsSpeaker(){ //释放com资源 ::CoUninitialize();}void MSSpeaker::Speaking( const string & speakContent ){ ISpVoice *pVoice = NULL; //获取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( StringToWString(speakContent).c_str(), 0, NULL); pVoice->Release(); pVoice = NULL; }}std::wstring MSSpeaker::StringToWString( const string &str ){ setlocale(LC_ALL, "chs"); const char* _Source = str.c_str(); size_t _Dsize = str.size() + 1; wchar_t *_Dest = new wchar_t[_Dsize]; wmemset(_Dest, 0, _Dsize); mbstowcs(_Dest,_Source,_Dsize); std::wstring result = _Dest; delete []_Dest; setlocale(LC_ALL, "C"); return result;}
需要注意的是,因为sdk里面使用的wchar字符,即宽字符集,所以我在这里用StringToWString()函数,将常用的string字符串转化为wstring字符串,并使用c_str()函数来构造wchar数组。
大家可以根据自己的需要来添加这些函数处理。只需要注意wchar字符集即可。
1.2.2 VC++项目依赖项设置
1) 头文件的设置
sdk里面提供了多个头文件,如sapi.h, sapiddk.h
等,根据自己要实现的功能选取即可。
因为我使用的是文字转语音,所以仅仅使用sapi.h
文件。
头文件的设置,就是在 VC++的项目属性->C/C++->常规->附加包含目录
里面设置。把路径设置好就行。
设置完成后,在代码里面使用地方包含头文件即可。
2) 依赖项的设置
依赖项主要是静态库和动态库的依赖问题。
sdk提供了对应的静态库和动态库。我使用的是静态库sapi.lib
。为的是编译生成之后直接使用,就不需要担心动态库的缺失了。
动态库的设置,就是在`VC++的项目属性->连接器->输入->附加依赖项。在这里需要把路径和库名字写对。
1.3 示例代码
我在这里写了一个main.cpp来测试这个类功能
#include "MSSpeak.h"#include <iostream>int main(){ // 初始化 MSSpeaker::InitialMsSpeaker(); // 发音,中英文均支持 MSSpeaker::Speaking(string("我爱中国,i love china!!!")); // 释放资源 MSSpeaker::CloseMsSpeaker(); return 0;}
- Microsoft Speech SDK 工具类
- Microsoft Speech API SDK
- VC下Microsoft Speech SDK
- Hello World by Microsoft Speech SDK 5.1
- Hello World by Microsoft Speech SDK 5.1
- Microsoft Speech SDK 文本语音转换入门
- Hello World by Microsoft Speech SDK 5.1
- VC 下Microsoft Speech SDK开发小结
- Microsoft Speech SDK 5.1 下载资源
- VC 下Microsoft Speech SDK开发小结
- VS2013使用Microsoft Speech SDK开发包
- 如何使用Microsoft Speech SDK开发包
- Microsoft Speech Platform SDK,语音识别
- vs2013+Microsoft Speech SDK 5.1+error C4996
- Microsoft Speech Application SDK 版本 1.0 Beta 3 的功能
- 关于Microsoft Speech SDK 中TTS的研究
- 一个简单的 Microsoft Speech SDK 5.1 例子
- 关于Microsoft Speech SDK help总揽的中文翻译
- iOS - Swift 仿微信聊天图片显示
- linux学习笔记--chown命令
- 按月等额本息还款
- 对于JAVA集合的一些总结
- Java关键字系列 — volatile、synchronized、lock
- Microsoft Speech SDK 工具类
- 数据拟合与插值方法
- cocos2d坐标系研究
- python-IDE-spyder自动设置时间,作者、联系方式的方法--python学习笔记27
- Linux学习的第一步——安装搜狗输入发
- 知识库--Garbage Collection Types(71)
- ajax数据处理
- Java 8 Default Methods
- caffe-windows下matcaffe接口配置