您的位置:首页 > 其它

关于语音包读汉字或英文问题

2008-08-02 22:07 113 查看
首先下个TTS开发包 微软的TTS SDK5.0

#include <windows.h>

#include <sapi.h>

#include <wininet.h>

#include <assert.h>

#include <cstdio>

#include <sphelper.h>

#pragma comment(lib,"wininet")

int main(int argc, char* argv[])

{

ISpVoice* pVoice ;

ISpObjectToken* pVoiceToken;

IEnumSpObjectTokens* pEnum;

ULONG ulCount=0;

if (FAILED(::CoInitialize(NULL)))

return FALSE;

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

if( SUCCEEDED( hr ) )

{

hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pEnum);

if(SUCCEEDED(hr))

hr = pEnum->GetCount(&ulCount);

// Obtain a list of available voice tokens, set the voice to the token, and call Speak

while (SUCCEEDED(hr) && ulCount -- )

{

if(SUCCEEDED(hr))

hr = pEnum->Next( 1, &pVoiceToken, NULL );

if(SUCCEEDED(hr))

hr = pVoice->SetVoice(pVoiceToken);

if(SUCCEEDED(hr))

hr = pVoice->Speak( L"How are you?", SPF_DEFAULT, NULL);

hr = pVoice->Speak(L"Hello world", 0, NULL);

// Change pitch

hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL );

hr = pVoice->Speak(L"1234567¹þ¹þ", 0, NULL);

pVoiceToken->Release();

pVoiceToken=NULL;

}

pVoice->Release();

pVoice = NULL;

}

::CoUninitialize();

return TRUE;

/*

LPCSTR url="https://202.106.134.65/";

HINTERNET hInet=InternetOpen("",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);

assert(hInet);

HINTERNET hHttps=InternetOpenUrl(hInet,url,NULL,NULL,NULL,NULL);

assert(hHttps);

ULONG nRead=0;

do{

char Buffer[1024];

Buffer[1000]=0;

InternetReadFile(hHttps,Buffer,1000,&nRead);

puts(Buffer);

}while(nRead>0);

InternetCloseHandle(hHttps);

InternetCloseHandle(hInet);

*/

}

关于:TTS VTxtAuto

1.成员函数的第一个参数向TTS引擎传送需要朗读的文字,第二个参数传递朗读时的语气和优先级别,由两个常量相加组成

控制优先级别的常量有:

vtxtsp_HIGH=256(&H100),尽快读出,加入播放队列开始

vtxtsp_NORMAL=512(&H200),默认,加入播放队列末尾

vtxtsp_VERYHIGH=128(&H80),立即读出,可以打断正在读的内容

控制语气的常量有:

vtxtst_COMMAND=4,命令的语气

vtxtst_NUMBERS=32(&H20),阅读数字的语气

vtxtst_QUESTION=2 提问的语气

vtxtst_READING 阅读文档时的语气

vtxtst_SPREADSHEET=64(&H40),阅读电子表格中元素的语气

vtxtst_STATEMENT=1 ,平时说话时的语气

vtxtst_WARNING=8,警告的语气

通过IsSpeaking可以取得当前状态

可以通过改变AudioForward和AudioRewind向前和向后跳过一句朗读

修改speed属性可以设置朗读的语速,默认值speed=170

语音朗读开发包

www.smartysoft.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐