【问题标题】:C++ : How to use SAPI with QT Creator?C++:如何将 SAPI 与 QT Creator 一起使用?
【发布时间】:2015-06-19 15:12:23
【问题描述】:

我必须做一个项目,包括创建一个包含文本到语音解决方案的网络浏览器。我使用了 MSDN (here) 中的示例,但是当我尝试编译我的项目时,我遇到了很多错误,并且我没有找到任何解决方案...

我正在为这个项目使用 QT Creator。

The console output

这是我的 project.pro:

#-------------------------------------------------
#
# Project created by QtCreator 2015-06-18T15:14:25
#
#-------------------------------------------------

QT       += widgets webkitwidgets network multimedia

TARGET = Project

TEMPLATE = app

SOURCES += main.cpp \
    browser.cpp

HEADERS += \
    browser.h

unix|win32: LIBS += -lsapi

还有我的 main.cpp:

#include <sapi.h>
#include "sphelper.h"

int main(int argc, char *argv[])
{
    ISpVoice *pVoice;
    pVoice = NULL;
    HRESULT hr = SpCreateBestObject(SPCAT_VOICES, L”Gender=Female”, NULL, &pVoice); 
    // --> I tried with HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);, that's the same result...
    if( SUCCEEDED( hr ) )
    {
        hr = pVoice->Speak(L"Hello world", 0, NULL);
        pVoice->Release();
        pVoice = NULL;
    }
    return 0;
}

感谢您的帮助!

【问题讨论】:

    标签: c++ qt sapi


    【解决方案1】:

    这可能是我能想到的适用于 MSVC 的最简单的示例。我认为 QT Creator 不会有太大的不同。

    #include <sapi.h>
    #include <sphelper.h>
    #include <conio.h>
    
    int main(int argc, char *argv[]){
        HRESULT hr = S_OK;
        CComPtr<ISpVoice> cpVoice;
    
        ::CoInitialize(NULL);
    
        hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
    
        if(SUCCEEDED(hr)){
            cpVoice->Speak(L"This is a test phrase.", SPF_DEFAULT, NULL);
            cpVoice.Release();
        }
    
        puts("Press any key to continue...");
        getch();
    }
    

    此代码将获取默认语音并开始说话。在 Windows 7 中,该声音将是 MS Anna。

    【讨论】:

    • 您好 RobotScourge,您的示例可以在 QT Creator 中正常工作,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多