【发布时间】:2013-03-22 14:48:07
【问题描述】:
我正在开发一个使用 Microsoft SAPI5 语音引擎的应用程序。然而,我已经碰壁了。我一直在尝试使用存储用户输入的变量中的数据,以便 TTS 引擎可以重复它。但是 sapi5 语音函数不允许字符串、wstrings 或除 LPCWSTR 之外的其他类型,根据我的研究,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
【问题讨论】: