日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAPI实现TTS

發(fā)布時間:2025/5/22 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAPI实现TTS 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

廢話不多說,直接上代碼

//tts_module.h #ifndef __TTS_MODULE_HH__ #define __TTS_MODULE_HH__#ifdef WIN32 #ifdef TTS_MODULE_EXPORTS #define TTS_MODULE_API __declspec(dllexport) #else #define TTS_MODULE_API __declspec(dllimport) #endif #else #define TTS_MODULE_API #endifclass TTS_MODULE_API TssModule { public:TssModule();~TssModule();int Initialise();int Readout(const char * text);void Uninitialise();private:void* pSpVoice; };#endif //tts_module.cpp #include "tts_module.h" #include <sphelper.h>TssModule::TssModule() {pSpVoice = NULL; }TssModule::~TssModule() {}int TssModule::Initialise() {pSpVoice = NULL;// Initialize COMCoInitialize(NULL);// Create the voice interface objectif (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice))){printf("Fail to create instance of ISpVoice!");return -1;}CComPtr<IEnumSpObjectTokens> cpEnum;CComPtr<ISpObjectToken> cpToken;//if (FAILED(SpEnumTokens(SPCAT_VOICES, L"Name=Ekho Mandarin", NULL, &cpEnum)))if (FAILED(SpEnumTokens(SPCAT_VOICES, L"Name=Microsoft Lili", NULL, &cpEnum))){printf("Fail to get voices!");return -2;}//Get the closest tokenif (FAILED(cpEnum->Next(1, &cpToken, NULL))){printf("Fail to get voice EkhoVoice!");return -3;}//set the voice if (FAILED(((ISpVoice*)pSpVoice)->SetVoice(cpToken))){printf("Fail to set voice EkhoVoice!");return -4;}return 0; }int TssModule::Readout(const char * text) {int nLen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, text, -1, NULL, 0);if (nLen == 0){printf("MultiByteToWideChar get length = 0");return -1;}wchar_t* pResult = new wchar_t[nLen];MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, text, -1, pResult, nLen);((ISpVoice*)pSpVoice)->Speak(pResult, SPF_DEFAULT, NULL);delete pResult;return 0; }void TssModule::Uninitialise() {CoUninitialize(); }

總結(jié)

以上是生活随笔為你收集整理的SAPI实现TTS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。