我正在开发一个使用 Microsoft SAPI5 语音引擎的应用程序。然而,我已经碰壁了。我一直在尝试使用存储用户输入的变量中的数据,以便 TTS 引擎可以重复它。但是 sapi5 语音函数不允许字符串、wstrings 或其他类型,除了来自我研究的 LPCWSTR 是指向宽字符串的指针,所以它不应该接受 wstrings 吗?
下面是一些来自 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