Microsoft SAPI5 音声エンジンを使用するアプリケーションを開発しています。しかし、私は壁にぶち当たりました。TTSエンジンがそれを繰り返すことができるように、ユーザーからの入力を格納する変数のデータを使用しようとしています。しかし、sapi5 音声関数は、私の研究ではワイド文字列へのポインタである LPCWSTR 以外の文字列、wstring、またはその他の型を許可していません。
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