偶尔看到CCRUN上用TTS做语音,但发现XP以及TTS5.1已经没有那个TBL文件了。现在可以直接在BCB下添加microsoft
speech library,做语音很方便,甚至可以做识别。但偶水平太差,只能做Text to
speech,希望有大虾能做出点好东西给大家分享。
首先新建一个项目,在工程中导入类型库,选择Microsoft speech object library[version 5.0],成功后在import目录会生成一堆文件,不再细述。下面就是调用TTS的一段代码
//头文件添加包含文件
#include "SpeechLib_TLB.h"
#include "SpeechLib_OCX.h"
#include <OleServer.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSpVoice *SpVoice1=new TSpVoice(this); //生产一个SPVOICE类
ISpeechObjectTokensPtr sots;
WideString con="BCB真牛啊";
sots=SpVoice1->GetVoices((WideString)"Language=804",(wchar_t*)""); //获取中文语音
if (sots->get_Count()==0) //如果没有中文语音,则count为0
return;
SpVoice1->_set_Voice(sots->Item(0));//设置中文发音
SpVoice1->Speak(con,SVSFDefault);//快乐的说吧
delete SpVoie1;
}
是不是很简单。呵呵。
我用的是BCB6.0 SP4,XP SP2并安装了TTS5.1的中外包。
首先新建一个项目,在工程中导入类型库,选择Microsoft speech object library[version 5.0],成功后在import目录会生成一堆文件,不再细述。下面就是调用TTS的一段代码
//头文件添加包含文件
#include "SpeechLib_TLB.h"
#include "SpeechLib_OCX.h"
#include <OleServer.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSpVoice *SpVoice1=new TSpVoice(this); //生产一个SPVOICE类
ISpeechObjectTokensPtr sots;
WideString con="BCB真牛啊";
sots=SpVoice1->GetVoices((WideString)"Language=804",(wchar_t*)""); //获取中文语音
if (sots->get_Count()==0) //如果没有中文语音,则count为0
return;
SpVoice1->_set_Voice(sots->Item(0));//设置中文发音
SpVoice1->Speak(con,SVSFDefault);//快乐的说吧
delete SpVoie1;
}
是不是很简单。呵呵。
我用的是BCB6.0 SP4,XP SP2并安装了TTS5.1的中外包。