VC6.0 C++ 如何调用微软windows系统SDK 语音API-阿里云开发者社区

开发者社区> 小波linux> 正文

VC6.0 C++ 如何调用微软windows系统SDK 语音API

简介: 下载3个语音API安装包 http://www.microsoft.com/en-us/download/details.aspx?id=10121  需要安装微软语音API安装包:SpeechSDK51LangPack、SpeechSDK51以及 msttss22L、  为了在VC中使用这SDK,必需在工程中添加SDK的include和lib目录,为免每个工程都添加目录,最好的办法是在VC的        Option->Directoris立加上SDK的include和lib目录。
+关注继续查看

下载3个语音API安装包 http://www.microsoft.com/en-us/download/details.aspx?id=10121

 需要安装微软语音API安装包:SpeechSDK51LangPack、SpeechSDK51以及 msttss22L、

 
为了在VC中使用这SDK,必需在工程中添加SDK的include和lib目录,为免每个工程都添加目录,最好的办法是在VC的
    
    Option->Directoris立加上SDK的include和lib目录。也可以直接将sapi.h sapi.lib 分别放到VC6的 头文件合库文件中

 

有关TTS用法:https://msdn.microsoft.com/en-us/library/ms720165(v=vs.85).aspx#InitializeCOM
    
    一个最简单的例子
 

 #include <sapi.h>
    
    #pragma comment(lib,"ole32.lib") //CoInitialize CoCreateInstance需要调用ole32.dll
    
    #pragma comment (lib,"sapi.lib") //sapi.lib在SDK的lib目录,必需正确配置
    
    int main (int argc, char* argv[])
    
    {

 ISpVoice * pVoice = NULL;

//COM初始化:

if (FAILED(::CoInitialize(NULL)))

return FALSE;

//获取ISpVoice接口:

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

if( SUCCEEDED( hr ) )

{hr = pVoice->Speak(L"欢迎使用本系统,管理员请登录或者注册", 0, NULL);

pVoice->Release();

pVoice = NULL;}

::CoUninitialize(); //释放

return TRUE;

}

 

详细解释:

 
void voice_succeed()
{
ISpVoice * pVoice; //pVoice指针


::CoInitialize(NULL);  //初始化COM库



//获取核心的应用程序接口ISpVoice接口
 
CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);//创建识别引擎
 
pVoice->Speak(L"登录成功!欢迎使用!", 0,NULL);

//发音 speak 参数详解:1.用来输入文本字符串 2.标志speak的方式 3.获取当前文本输入等候播放队列位置

pVoice->Release();//释放资源


pVoice->Release();//释放资源

::CoUninitialize(); //释放资源

}

 

 

 用CoInitialize(), CoCreateInstance()获取IspVoice接口就够了, 程序结束前一定要用CoUninitialize()释放资源。
    
 获取IspVoice接口,然后用ISpVoice::Speak()把文本输出为语音,程序的核心就是IspVoice接口。

 把文本语音输出为WAV文件

 

   #include <sapi.h>
    
    #include <sphelper.h>
    
    #pragma comment(lib,"ole32.lib")
    
    #pragma comment(lib,"sapi.lib")
    
    int main(int argc, char* argv[])
    
    {
    
    ISpVoice * pVoice = NULL;
    
    if (FAILED(::CoInitialize(NULL)))
    
    return FALSE;
    
    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL,
    
    IID_ISpVoice, (void **)&pVoice);
    
    if( SUCCEEDED( hr ) )
    
    {
    
    CComPtr<ISpStream> cpWavStream;
    
    CComPtr<ISpStreamFormat> cpOldStream;
    
    CSpStreamFormat OriginalFmt;
    
    pVoice->GetOutputStream( &cpOldStream );
    
    OriginalFmt.AssignFormat(cpOldStream);
    
    hr = SPBindToFile( L"D:\\output.wav",SPFM_CREATE_ALWAYS,
    
    &cpWavStream,&OriginalFmt.FormatId(),
    
    OriginalFmt.WaveFormatExPtr() );
    
    if( SUCCEEDED( hr ) )
    
    {
    
    pVoice->SetOutput(cpWavStream,TRUE);
    
    WCHAR WTX[] = L"<VOICE REQUIRED=''NAME=Microsoft Mary''/>text to wave";
    
    pVoice->Speak(WTX, SPF_IS_XML, NULL);
    
    pVoice->Release();
    
    pVoice = NULL;
    
    }
    
    }
    
    ::CoUninitialize();
    
    return TRUE;
    
    }
    

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架【值得收藏】
Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架【值得收藏】
3 0
Vue3.x <script setup> 语法糖详解,助力快速上手Vue3.x【值得收藏】
Vue3.x <script setup> 语法糖详解,助力快速上手Vue3.x【值得收藏】
16 0
基于 H5 Canvas "指纹识别" 技术 【浏览器指纹 VS Canvas指纹】
基于 H5 Canvas "指纹识别" 技术 【浏览器指纹 VS Canvas指纹】
22 0
写业务代码有成长机会吗
一乐兄弟写过一篇[做业务系统如何成长为架构师],深有同感,包接口的例子可以往下说说。各家都在搞开放API ,好不好用只有用过才知道。比如加签验签,有没有不同语言的client demo可以参考,参数说明是否清晰等。
14 0
多点生活的分布式服务框架DSF(下)
多点生活的分布式服务框架DSF(下)
11 0
求解质量熵
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
8 0
同一浏览器打开两个同源页面引发的bug【@码云 提个小优化】
同一浏览器打开两个同源页面引发的bug【@码云 提个小优化】
15 0
软件质量稳定性之殇
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
10 0
user-modify VS contenteditable 【实现掘金沸点话题标签】
user-modify VS contenteditable 【实现掘金沸点话题标签】
16 0
+关注
小波linux
嵌入式系统软件/硬件工程师
230
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载