Windows TTS语音引擎VC编程入门
来源:互联网 发布:李元霸有多厉害知乎 编辑:程序博客网 时间:2024/05/16 10:54
以前看过不少软件像foxitreader,office等软件带有语音朗读功能,现在也有机会做做这方面的应用,查过些资料,引用比较多的是这个网站:
http://write.blog.csdn.net/postedit?ref=toolbar
Windows Speech SDK包含语音识别SR引擎和语音合成SS引擎两种语音引擎。语音识别引擎用于识别语音命令,调用接口完成某个功能,实现语音控制。语音合成引擎用于将文字转换成语音输出。
SAPI包括以下几类接口:Voice Commands API、Voice Dictation API、Voice Text API、Voice Telephone API和Audio Objects API。我们要实现语音合成需要的是Voice Text API。
下面是根据此网站内容做了一个通用类,方便我们的工程调用。
UserTTSAPI.h文件
#pragma once
#include <sapi.h>
#include <sphelper.h>
#pragma comment(lib,"sapi.lib")
#pragma comment(lib,"ole32.lib")
class CUserTTSAPI
{
public:
CUserTTSAPI(void);
~CUserTTSAPI(void);
public:
ISpVoice* pSpVoice;//初始化COM对象
IEnumSpObjectTokens *pSpEnumTokens;
ISpObjectToken *pSpToken;
BOOL blOpenTTSAPI(void);
void vSysReadBySST(CString strData);
void vCloseTTSAPI(void);
};
extern CUserTTSAPI m_UserTTSAPI;
UserTTSAPI.app文件
#include "StdAfx.h"
#include "UserTTSAPI.h"
CUserTTSAPI m_UserTTSAPI;
CUserTTSAPI::CUserTTSAPI(void)
{
::CoInitialize(NULL);
pSpVoice = NULL;//初始化COM对象
pSpEnumTokens = NULL;
pSpToken = NULL;
}
CUserTTSAPI::~CUserTTSAPI(void)
{
::CoUninitialize();
}
BOOL CUserTTSAPI::blOpenTTSAPI(void)
{
CLSID CLSID_SpVoice;
CLSIDFromProgID(_T("SAPI.SpVoice"),&CLSID_SpVoice);
//获取ISPVoice接口
if (FAILED(CoCreateInstance(CLSID_SpVoice,NULL,CLSCTX_INPROC_SERVER,IID_ISpVoice,(void**)&pSpVoice)))
{
return FALSE;
}
//列举所有的语音token,可以通过pSpenumTokens指向的接口得到
if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES,NULL,NULL,&pSpEnumTokens)))
{
pSpEnumTokens->Item(0,&pSpToken);
pSpVoice->SetVoice(pSpToken);
}
return TRUE;
}
void CUserTTSAPI::vSysReadBySST(CString strData)
{
if (g_Channel.blPrompt == TRUE)
{
long lSpeeh = 0;
switch(g_Channel.bySoundSpeed)
{
case 0:
lSpeeh = -10;
break;
case 1:
lSpeeh = -8;
break;
case 2:
lSpeeh = -5;
break;
case 3:
lSpeeh = -3;
break;
case 4:
lSpeeh = 0;
break;
case 5:
lSpeeh = 3;
break;
case 6:
lSpeeh = 5;
break;
case 7:
lSpeeh = 8;
break;
case 8:
lSpeeh = 10;
break;
}
pSpVoice->SetRate(lSpeeh);//设置声音快慢
unsigned short usVolume = g_Channel.bySoundVolume * 10;
pSpVoice->SetVolume(usVolume);//设置音量
//pSpVoice->Pause();
pSpVoice->Speak(NULL,SPF_PURGEBEFORESPEAK,0);
pSpVoice->Speak(strData,SPF_ASYNC,NULL);//异步
//pSpVoice->Speak(strData,SPF_DEFAULT,NULL);
//pSpVoice->Resume();
}
}
void CUserTTSAPI::vCloseTTSAPI(void)
{
if (g_Channel.blPrompt == TRUE)
{
g_Channel.blPrompt = FALSE;
pSpToken->Release();
pSpEnumTokens->Release();
pSpVoice->Release();
}
}
本类实现TTS语音引擎的初始化以及关闭流程,中间的g_Channel.bySoundSpeed声音速度,g_Channel.bySoundVolume 声音大小,g_Channel.blPrompt指示开启的标志。
- Windows TTS语音引擎VC编程入门
- 微软TTS语音引擎编程入门
- Windows TTS语音编程
- ekho--TTS语音引擎
- WINCE TTS语音合成引擎
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
- 微软TTS语音引擎(中文)5.1
- 科大讯飞和Tizen-TTS语音合成引擎
- 更换微软TTS语音引擎切换
- Windows下 使用Python 3 调用讯飞 TTS 引擎实现文本转语音
- VC用TTS实现文字语音朗读
- VC用TTS实现文字语音朗读
- 应用 Microsoft TTS 语音引擎的 Delphi 语言实例
- Android中文语音合成(TTS)各家引擎对比
- Android中文语音合成(TTS)各家引擎对比
- Android中文语音合成(TTS)各家引擎对比
- Android中文语音合成(TTS)各家引擎对比 .
- Android中文语音合成(TTS)各家引擎对比
- linx基础学习
- TA技术规范文档
- 360 笔试题 因子计算器的实现
- zoj 3898 Stean 高等数学 数值积分
- 宝石商人(2016网易游戏校招笔试)
- Windows TTS语音引擎VC编程入门
- 安卓开发笔记 通过AlertDialog实现从底部弹出的菜单的代码编写
- 333 mdd的烦恼【欧拉函数】
- CString与char *转换
- 将studio项目 转换为eclipse项目
- samba不允许一个用户使用一个以上用户名与一个服务器或共享资源
- Minimum Depth of Binary Tree,Maximum Depth of Binary Tree
- poj 3667 Hotel 【线段树lazy + 区间合并】
- readonly与disable的区别