2015-06-19 216 views
1

我必須做一個項目,創建一個包含文本到語音解決方案的網絡瀏覽器。我用MSDN的例子(here),但是當我嘗試編譯我的項目,我有很多錯誤,並且我還沒有找到任何解決方案...C++:如何在QT Creator中使用SAPI?

我正在使用QT此項目的創建者。

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

感謝的對你有所幫助!

回答

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。

+0

Hello RobotScourge,你的例子與QT Creator正常工作,非常感謝! – Toars