微软TTS示例
2024-10-15 18:51:07
#include "sphelper.h"
#include "sapi.h"
#pragma comment(lib, "sapi.lib") int CtestMFCDlg::testTTS(TCHAR* szWords)
{
if ( NULL == szWords || == szWords[] )
return -; ::CoInitialize(NULL); // COM初始化
CLSID CLSID_SpVoice;
CLSIDFromProgID(_T("SAPI.SpVoice"), &CLSID_SpVoice);
ISpVoice *pSpVoice = NULL;
IEnumSpObjectTokens *pSpEnumTokens = NULL; // 获取ISpVoice接口
if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&pSpVoice)))
{
return -;
}
// 列举所有的语音token,可以通过pSpEnumTokens指向的接口得到
if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens)))
{
ISpObjectToken *pSpToken = NULL;
// 依次获取每个token并朗读字符串
if (SUCCEEDED(pSpEnumTokens->Next(, &pSpToken, NULL)) && pSpToken != NULL)
{
pSpVoice->SetVolume();
pSpVoice->SetVoice(pSpToken); // 设置当前语音token为pSpToken
pSpVoice->Speak(szWords, SPF_DEFAULT, NULL); // 朗读中文和英文的混合字符串
pSpToken->Release(); // 释放token }
pSpEnumTokens->Release(); // 释放pSpEnumTokens接口
}
pSpVoice->Release();
::CoUninitialize(); return ;
}
最新文章
- java 导出word 并下载
- css3实现超出文本指定行数(指定文本长度)用省略号代替
- Floyd算法(二)之 C++详解
- Zookeeper WINDOWS 安装配置
- IOS网络第一天-01基本的HTTP请求
- CSS渲染速度改善的十个方法与建议
- Aspose 数字和日期 设置
- 20170713_js闭包/匿名函数/作用域
- 新手学习SEO要做的七件事是什么?
- java使用poi将html导出word,默认打开页面视图
- hdu 4670 Cube number on a tree(点分治)
- Java类的加载及实例的创建
- SpringMVC + MyBatis分库分表方案
- 关于Oxygen版 Eclipse JSP或html 中<;option>;标签嵌入jstl 如<;c:if>;出现报错
- Stringbuffer与substring
- SSM是什么框架?
- selenium 中装饰器作用
- vue中watch的用法
- C - Contest Setting Gym - 101982C dp 补题
- c++ 单引号和双引号
热门文章
- 开发板怎样开启telnet服务
- 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)
- [jQuery]无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案
- 跳转APP(app之间互相通信)
- C#修改 Excel指定单元格的值
- Linux下如何查看哪些进程占用的CPU内存资源最多
- git工作区和暂存区
- 远程控制利器TeamViewer使用教程(图)
- 给Extjs的GridPanel增加“合计”行(转)
- 使用ASP.NET MVC+Entity Framework快速搭建博客系统