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

 

目录
相关文章
|
16天前
如何隐藏windows10系统任务栏右下角的语言输入法图标?
如何隐藏windows10系统任务栏右下角的语言输入法图标?
|
29天前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
169 0
|
1月前
|
安全 中间件 API
跨平台整合:如何在不同系统中使用淘宝商品详情API
使用淘宝商品详情API实现跨平台整合,涉及步骤包括理解平台要求、研究API文档、设计数据模型、开发中间件、确保安全认证、测试调试、遵循法规、UI适配及持续维护。此过程能共享数据,提升效率,增加销售机会,优化顾客体验。注意API调用限制、数据格式及各平台特定需求。
26 1
|
22天前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
|
17天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
2天前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
5天前
|
网络协议 安全 测试技术
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
|
5天前
|
存储 安全 文件存储
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
|
17天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
14 0
|
29天前
|
算法 Linux API
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
28 0
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取