我正在開發一個使用Microsoft SAPI5語音引擎的應用程序。但是,我已經撞牆了。我一直試圖使用存儲來自用戶輸入的變量的數據,所以TTS引擎可以重複它。但是sapi5語音函數不允許字符串,字符串或其他類型,除了LPCWSTR,我的研究是一個指向寬字符串的指針,所以它不應該接受wstrings?存儲一個變量,用於保存sapi5中的用戶輸入數據speak function
下面是一些示例代碼從MSDN:
#include <stdafx.h>
#include <sapi.h>
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))
{
hr = pVoice->Speak(L"Hello world", 0, NULL);
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
}
因此,可以說,比如我有這段代碼:
...
wstring text;
if(SUCCEEDED(hr))
{
wcin >> text;
hr = pVoice->Speak(text, SPF_IS_XML, NULL);
pVoice->Release();
pVoice = NULL;
}
...
但是,這是行不通的。我將如何去存儲允許LPCWSTR類型的變量? 我對C++很陌生,這是我第一次遇到這樣的問題,所以對我來說這很新鮮。
我看到關於這一主題的OP具有完全相同的問題:https://stackoverflow.com/questions/12292790/how-do-i-use-variables-in-sapi-tts