首先下个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