我試圖從a Microsoft sample page運行SAPI示例。SAPI(Microsoft Speech API)CoCreateInstance失敗
當運行應用程序(具有VS2010),此行失敗:
hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
小時返回錯誤代碼,並且不執行其他所有代碼。
我不知道爲什麼我錯了,因爲我認爲正確使用該頁面中的示例代碼,並且我從未使用過此API。
這是我完整的main.cpp文件。我錯過了什麼?
#include "stdafx.h"
#include <sapi.h>
#include <sphelper.h>
#include <atlcomcli.h>
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = S_OK;
CComPtr <ISpVoice> cpVoice;
CComPtr <ISpStream> cpStream;
CSpStreamFormat cAudioFmt;
//Create a SAPI Voice
hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
//Set the audio format
if(SUCCEEDED(hr))
{
hr = cAudioFmt.AssignFormat(SPSF_22kHz16BitMono);
}
//Call SPBindToFile, a SAPI helper method, to bind the audio stream to the file
if(SUCCEEDED(hr))
{
hr = SPBindToFile(L"c:\\ttstemp.wav", SPFM_CREATE_ALWAYS,
&cpStream, & cAudioFmt.FormatId(),cAudioFmt.WaveFormatExPtr());
}
//set the output to cpStream so that the output audio data will be stored in cpStream
if(SUCCEEDED(hr))
{
hr = cpVoice->SetOutput(cpStream, TRUE);
}
//Speak the text "hello world" synchronously
if(SUCCEEDED(hr))
{
hr = cpVoice->Speak(L"Hello World", SPF_DEFAULT, NULL);
}
//close the stream
if(SUCCEEDED(hr))
{
hr = cpStream->Close();
}
//Release the stream and voice object
cpStream.Release();
cpVoice.Release();
return 0;
}
你告訴使用HRESULT是一個錯誤代碼,但你沒有說明代碼是什麼。 –
@AdrianMcCarthy你是對的。我的歉意(我遲到了,我回到了我的女朋友生日派對的家中......)。下次我會更加小心。 – Jepessen