首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于TTS 倾巢给分解决方案

2013-11-01 
关于TTS倾巢给分以前开发用VC6.0,这次领导要让我用C++ BUILDER6.0开发,摸索一个月把界面功能数据解析等做

关于TTS 倾巢给分
以前开发用VC6.0,这次领导要让我用C++ BUILDER6.0开发,摸索一个月把界面功能数据解析等做了,可这是一个报警装置  需要语音报警,我不想调用本地语音文件的方式,做语音文件太麻烦了感觉,所以想使用TTS技术,可是环境配置让我无语了~~   使用VC6.0配置成功,可是BC就是不行,在网上搜到的那篇文章哪都是,以下是开头:
"启动BCB,打开菜单项PROJECT->Import Type Library...,在弹出的对话框中单击Add,选择windows\speech目录下的Vtxtauto.tlb,加入VtxtAuto[Version 1.0]一项。单击OK,BCB就会自动生成一个VtxtAuto_TLB.cpp文件。这个文件包含了TTS引擎的COM类接口,可以用来与DLL文件通信。新建一个工程,将这个文件包含进来:"

“windows\speech”  这个目录是在C盘吗 我翻了个遍,完全没有 Vtxtauto.tlb ,Microsoft Speech SDK 5.1 ,SpeechSDK51LangPack   都已经安装了,我肯定哪位先知把具体的配置步骤赐教一下~  求详细,领导就差拽着我的耳朵催了。   最好给个例子 ,不要拿网上那个文章忽悠我了  看到那个我快要过敏了。   给你我所有~  TTS???C++BUILDER
[解决办法]
简单点的..



void __fastcall TForm1::btn1Click(TObject *Sender)
{
    try {
        Variant VoiceObj    = Variant::CreateObject("Sapi.SpVoice");
        VoiceObj.OleFunction("Speak", mmo1->Text.c_str());
        VoiceObj    = Unassigned;
    }
    catch(...) {
    }
}


[解决办法]
步骤
1、安装TTS语音引擎(win98才需要,XP系统自带了)
2、安装speechSDK5.1及中文语音包(或者下载另外的语音包,我用的另外的一个语音包)
3、查找sapi.dll
4、打开bcb6 project-》import ... ->add  选择sapi.dll
   点击安装,选择dclusr.bpk 然后一路ok。(若成功,ActiveX下会增加许多sp控件)
5、新建工程,将控件栏中ActiveX下的SpVoice添加到工程,即可使用!

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
pVoice = NULL;
if ( SUCCEEDED(::CoInitialize(NULL)) )
if (::CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL,
IID_ISpVoice, (void **)&pVoice) != S_OK)
pVoice = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if ( pVoice )
{
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Enabled = false;
if ( pVoice )
{
WideString wsText = WideString(Memo1->Lines->Text);
pVoice->Speak(wsText.c_bstr(), 0, NULL);
}
Button1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackRateChange(TObject *Sender)
{
if ( pVoice )
{
RateValue->Caption = TrackRate->Position;
pVoice->SetRate(TrackRate->Position - 10);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackVolumeChange(TObject *Sender)
{
if ( pVoice )
{
VolumeValue->Caption = TrackVolume->Position;
pVoice->SetVolume(TrackVolume->Position * 5);
}
}
//--------------------------------------------------------------------



热点排行