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

 

目录
相关文章
|
2月前
|
安全 Windows
永久关闭 Windows 11 系统更新
永久关闭 Windows 11 系统更新
151 0
|
27天前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
67 32
|
1月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
92 13
如何配置Windows主机MPIO多路径访问存储系统
|
2月前
|
API 开发工具 C#
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
本文将介绍,ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
|
2月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
2月前
|
运维 网络安全 虚拟化
Windows系统镜像检测修复建议
Windows系统镜像检测修复建议
|
2月前
|
Windows
安装Windows XP系统
安装Windows XP系统
|
2月前
|
API 开发工具 UED
在 UWP 中使用 Windows App SDK
【10月更文挑战第17天】在UWP中使用Windows App SDK可增强应用功能和性能。首先了解SDK特性,接着安装Visual Studio 2022及以上版本,并从微软官网下载安装SDK。配置项目时,确保目标版本支持SDK,添加SDK引用后即可使用新API提升应用体验。开发过程中应充分利用调试工具进行测试,确保应用的兼容性和稳定性。