TTS 관련..이것 저것 …쓰레기수준.. by 미친감자

그냥 정리 하지 않고 올립니다.

Speech SDK 5.1

http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en

http://msdn.microsoft.com/en-us/library/ms717236%28VS.85%29.aspx

http://www.bytecool.com/voices.htm


 

http://www.bytecool.com/dlcoolspch.htm


 

음…

Example

http://blog.niwota.com/a/1647456.htm


 

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();

很容易,是不是?下面我稍微改一下:


 

IEnumSpObjectTokens *pSpEnumTokens = NULL;

if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, L"language=409", NULL, &pSpEnumTokens)))

{

    ISpObjectToken *pSpToken = NULL;

    while (SUCCEEDED(pSpEnumTokens->Next(1, &pSpToken, NULL)) &&

        pSpToken != NULL)

    {

        pSpVoice->SetVoice(pSpToken);

        pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);

        pSpToken->Release();

    }

    pSpEnumTokens->Release();

}

如果只需要一 Voice,SpFindBestToken 更加方便:

ISpObjectToken * pSpObjectToken = NULL;

if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"gender=female",

    NULL, &pSpObjectToken)))

{

    pSpVoice->SetVoice(pSpObjectToken);

    pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);

    pSpObjectToken->Release();

}

在改使用中文:

ISpObjectToken * pSpObjectToken = NULL;

if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804",

    NULL, &pSpObjectToken)))

{

    pSpVoice->SetVoice(pSpObjectToken);

    pSpVoice->Speak(L"世界你好!", SPF_DEFAULT, NULL);

    pSpObjectToken->Release();

}

ISpVoice::Speak 可以允许朗读的句子中包含 XML 标记,其实以上这一切用 XML 标记将变得十分简单:

pSpVoice->Speak(L"世界你好!", SPF_DEFAULT, NULL);

    pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);

最后,以一段简单报时结篇文章:

SYSTEMTIME st;

GetLocalTime(&st);

ISpObjectToken * pSpObjectToken = NULL;

if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804", NULL, &pSpObjectToken)))

{

    pSpVoice->SetVoice(pSpObjectToken);

    WCHAR wsz[128];

    swprintf(wsz,

        L"现在是%.4d-%.02d-%.2d %.2d:%.02d",

        st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute);

    pSpVoice->Speak(wsz, SPF_IS_XML, NULL);

    pSpObjectToken->Release();

}


 

http://www.hcilab.co.kr/demo/tts-1.asp



 



트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://micingamja.egloos.com/tb/5158753 [도움말]

덧글

덧글 입력 영역