刚开始用Microsoft Speech SDK ,有些问题不明白,请教:
ISpVoice * pVoice = NULL; if (FAILED(CoInitialize(NULL)))
{
AfxMessageBox("Error to intiliaze COM");
return;
} HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = pVoice->Speak(L"Terminating application", 0, NULL);
pVoice->Release();
pVoice = NULL;
} ::CoUninitialize();
为什么上面程序的发音是一个一个字母读出,而不是一个单词读出呢?
如果要一个单词读出,怎么做?
ISpVoice * pVoice = NULL; if (FAILED(CoInitialize(NULL)))
{
AfxMessageBox("Error to intiliaze COM");
return;
} HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = pVoice->Speak(L"Terminating application", 0, NULL);
pVoice->Release();
pVoice = NULL;
} ::CoUninitialize();
为什么上面程序的发音是一个一个字母读出,而不是一个单词读出呢?
如果要一个单词读出,怎么做?
http://www.codeproject.com/audio/speaktext.asp
你的这句是初始化读汉字的,以读汉字的方式读英文,它就一个字母一个字母的发音.
可用下面的方法做:
CoInitialize(NULL); CLSIDFromProgID(L"SAPI.SpVoice", &CLSID_SpVoice); ISpVoice * pSpVoice = NULL; if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice))) { cout << "Failed to create instance of ISpVoice!" << endl; return -1; } 现在我们用它来说 “Hello World”,非常简单: pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL); 最后,清除这一切 pSpVoice->Release(); CoUninitialize();