0

我正在使用Speech Platform for TTS(文本到語音)。Microsoft Speech Platform:「SPF_NLP_SPEAK_PUNC」不起作用

我想獲得符號發音(標點符號)的語音輸出。

MSDN說:

ISpVoice::Speak speaks the contents of a text string or file. 

    HRESULT Speak(
    LPCWSTR  *pwcs, 
    DWORD   dwFlags, 
    ULONG   *pulStreamNumber 
); 
    ... 
    dwFlags 
    [in] Flags used to control the rendering process for this call. The flag values are contained in the SPEAKFLAGS enumeration. 
    ... 

http://msdn.microsoft.com/en-us/library/speechplatform_ispvoice_speak.aspx

SPEAKFLAGS 
    ... 
    SPF_NLP_SPEAK_PUNC 
    Punctuation characters should be expanded into words (for example, "This is a sentence." would become "This is a sentence period"). 
    ... 

http://msdn.microsoft.com/en-us/library/speechplatform_speakflags.aspx

所以,我寫了下面的代碼:

#define TOKEN_ID L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech Server\\v11.0\\Voices\\Tokens\\TTS_MS_en-US_Helen_11.0" 

int main(void) { 
    CoInitialize(NULL); 
    ISpVoice* spVoice = NULL; 
    CoCreateInstance(CLSID_SpVoice, NULL, 
     CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&spVoice); 

    ISpObjectToken* token = NULL; 
    SpGetTokenFromId(TOKEN_ID, &token, FALSE); 
    spVoice->SetVoice(token); 

    spVoice->Speak(L"This is a sentence.", 
     SPF_DEFAULT | SPF_NLP_SPEAK_PUNC, NULL); 
    CoUninitialize(); 
    return 0; 
} 

但這不按預期工作。 這輸出「這是一個句子」的演講,而不是發音「時期」。

請幫幫我。

+0

您使用哪種語音? –

回答

1

看着你的代碼,看起來你正在使用服務器的聲音。那些聲音(據我所知)不支持SPF_NLP_SPEAK_PUNC

+0

謝謝您的回覆,我很抱歉我遲到的回覆。你的意思是'服務器語音'是'微軟文本到語音引擎'嗎?我使用它,從[Microsoft](http://www.microsoft.com/en-us/download/details.aspx?id=27224)下載。在Microsoft Speech Platform上是否還有其他選項可用於使用en-US語音? – user3386195

+0

微軟有兩套不同的TTS引擎,針對不同的目的進行了優化。這些具有完全相同的用戶級API;您通過令牌選擇TTS引擎。如果您使用桌面引擎(例如,使用標記「HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Voices \ Tokens \ TTS_MS_EN-US_DAVID_11.0」,那麼您將擁有支持「SPF_NLP_SPEAK_PUNC」的語音。更詳細地說明爲什麼*你需要語音服務器的語音,這也會有幫助 –

+0

感謝您的詳細解釋。我使用_desktop_語音引擎(在我的例子中,MS-Anna提供了支持「SPF_NLP_SPEAK_PUNC」的語音)。爲什麼我使用_server_ voice沒有什麼特別的理由,我不知道桌面版和服務器版的區別,所以[你的另一個答案](http://stackoverflow.com/a/17623740/3386195)是對我也有幫助,謝謝! – user3386195

相關問題