关于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(...) {
}
}
//---------------------------------------------------------------------------
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);
}
}
//--------------------------------------------------------------------