C++ : 如何将 SAPI 与 QT Creator 一起使用

C++ : How to use SAPI with QT Creator?

本文关键字:Creator QT 一起 SAPI C++      更新时间:2023-10-16

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

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

控制台输出

这是我 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

而我的主要.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;
}

感谢您的帮助!

这可能是我能想到的最简单的例子,适用于 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。