0

TTS (텍스트 음성 변환) 용 음성 플랫폼을 사용하고 있습니다.Microsoft 음성 플랫폼 : "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; 
} 

을하지만,이 예상대로 작동하지 않습니다. "this is a sentence"라는 말을 출력하고 "마침표"는 발음하지 않습니다.

도와주세요.

+0

어떤 음성을 사용하고 있습니까? –

답변

1

코드를 보면 서버 음성을 사용하고있는 것으로 보입니다. 그 목소리 (내가 말할 수있는 한)는 SPF_NLP_SPEAK_PUNC을 지원하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 늦어서 답장을 드려 죄송합니다. '서버 음성'이 'Microsoft 텍스트 음성 변환 엔진'이란 것을 의미합니까? 나는 [Microsoft] (http://www.microsoft.com/en-us/download/details.aspx?id=27224)에서 다운로드하여 사용합니다. Microsoft 음성 플랫폼에서 en-US 음성을 사용하는 다른 옵션이 있습니까? – user3386195

+0

Microsoft는 서로 다른 용도로 최적화 된 두 개의 별개의 TTS 엔진 집합을 가지고 있습니다. 이들은 정확히 동일한 사용자 레벨 API를가집니다. 토큰을 통해 TTS 엔진을 선택합니다. 데스크톱 엔진을 사용할 경우 (예 :''HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Voices \ Tokens \ TTS_MS_EN-US_DAVID_11.0 "'토큰을 사용하면'SPF_NLP_SPEAK_PUNC'를 지원하는 목소리가 나옵니다. * 왜 * Speech Server 음성이 필요한지에 대한 자세한 내용은 –

+0

자세한 설명을 주셔서 감사합니다. _desktop_ 음성 엔진을 사용하여'SPF_NLP_SPEAK_PUNC'를 지원하는 음성을 받았습니다 (내 경우에는 MS-Anna) 내가 왜 _server_ voice를 사용했는지에 대한 특별한 이유는 없었지만 데스크톱 버전과 서버 버전의 차이점을 알지 못했습니다. [다른 대답] (http://stackoverflow.com/a/17623740/3386195) 또한 나를 위해 도움이됩니다. 감사합니다! – user3386195