刚开始用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();
为什么上面程序的发音是一个一个字母读出,而不是一个单词读出呢?
如果要一个单词读出,怎么做?

解决方案 »

  1.   

    你看看这篇文章吧。因为我目前不需要研究这个,所以我就不给你直接调试错误的原因了。
    http://www.codeproject.com/audio/speaktext.asp
      

  2.   

    CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    你的这句是初始化读汉字的,以读汉字的方式读英文,它就一个字母一个字母的发音.
    可用下面的方法做:
       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();