#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 ;
}

最新文章

  1. java 导出word 并下载
  2. css3实现超出文本指定行数(指定文本长度)用省略号代替
  3. Floyd算法(二)之 C++详解
  4. Zookeeper WINDOWS 安装配置
  5. IOS网络第一天-01基本的HTTP请求
  6. CSS渲染速度改善的十个方法与建议
  7. Aspose 数字和日期 设置
  8. 20170713_js闭包/匿名函数/作用域
  9. 新手学习SEO要做的七件事是什么?
  10. java使用poi将html导出word,默认打开页面视图
  11. hdu 4670 Cube number on a tree(点分治)
  12. Java类的加载及实例的创建
  13. SpringMVC + MyBatis分库分表方案
  14. 关于Oxygen版 Eclipse JSP或html 中<option>标签嵌入jstl 如<c:if>出现报错
  15. Stringbuffer与substring
  16. SSM是什么框架?
  17. selenium 中装饰器作用
  18. vue中watch的用法
  19. C - Contest Setting Gym - 101982C dp 补题
  20. c++ 单引号和双引号

热门文章

  1. 开发板怎样开启telnet服务
  2. 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)
  3. [jQuery]无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案
  4. 跳转APP(app之间互相通信)
  5. C#修改 Excel指定单元格的值
  6. Linux下如何查看哪些进程占用的CPU内存资源最多
  7. git工作区和暂存区
  8. 远程控制利器TeamViewer使用教程(图)
  9. 给Extjs的GridPanel增加“合计”行(转)
  10. 使用ASP.NET MVC+Entity Framework快速搭建博客系统