首先在Delphi的菜单中选“project-Import Type Library”,在弹出的对话框中选“Add”,
此时会弹出“Open Type Library”对话框,将之定位到你的Windows/Speech目录中,选择
“vtxtauto.tlb”,然后在Import Type Library对话框中单击"Install",
单击OK,Delphi会自动生成一个VtxtAuto_TLB.pas文件。
这个文件包含了TTS引擎的COM类接口,可以用来与DLL文件通信。
我们就利用它编个小程序来读一段英文文本。
新建一个工程,将这个文件包含进来: uses VtxtAuto_TLB;
跟着声明一个对象: var ... TTS: IVTxtAuto;
然后如图在窗体上放置5个TButton (分别命名为ReadBtn, PauseBtn, StopBtn, PrevBtn, NextBtn)、
一个TMemo(命名为Memo1)、一个TStaticText(命名为SpeedText)和一个TTrackbar
(命名为Speed)。现在我们开始写代码。
首先在启动时初始化:
procedure TForm1.FormCreate(Sender: TObject);
begin
TTS := CoVTxtAuto_.Create;
// 建立对象
TTS.Register('Project1', 'Project1');
// 用Register方法注册,两个参数是WideString,我们随便填
Speed.position:=TTS.Get_Speed;
//TTS允许调整朗读的速度。用Get_Speed方法来读取当前朗读的 //速度值,并当做初值赋给Trackbar end;
然后我们用按钮控制朗读的启停:
procedure TForm1.ReadBtnClick(Sender: TObject);
// 朗读按钮
begin
TTS.Speak(memo1.text,vtxtst_READING);
// 这就是核心方法Speak,第一个参数是要朗读的文本,第二个参数
// 是朗读风格常数,这里取值为vtxtst_READING,其他值请参考
//VtxtAuto_TLB.pas文件。不过这个参数好象对朗读的效果改变不大。
end;
procedure TForm1.StopBtnClick(Sender: TObject);
//停止按钮
begin
TTS.StopSpeaking;
//用StopSpeaking方法可以停止朗读
end;
接着,我们用一个按钮让朗读可以随时暂停:
procedure TForm1.PauseBtnClick(Sender: TObject);
begin
If TTS.IsSpeaking then
//如果属性IsSpeaking为真,则表示正在朗读
begin
TTS.AudioPause;
//暂停
PauseBtn.Caption:='继续';
end
else
begin
TTS.AudioResume;
//如果已经处于暂停状态则继续
PauseBtn.Caption:='暂停';
end;
end;
Trackbar用来调整朗读的速度。如果你对自己的外语听力有足够的自信,尽可以将速度上调,体验一下什么叫“妙语连珠”(小心你的耳朵忙不过来);要是你的听力水平同我一样“高”的话,最好还是将速度值调到180左右:
procedure TForm1.SpeedChange(Sender: TObject);
begin
TTS.Set_Speed(Speed.position);
//设置速度
SpeedText.Caption:='速度:'+inttostr(Speed.position);
//显示速度数值
end;
TTS还允许跳读,可以方便地朗读上一句或直接读下一句:
procedure TForm1.PrevBtnClick(Sender: TObject);
begin
TTS.AudioRewind
//跳到上一句
end;
procedure TForm1.NextBtnClick(Sender: TObject);
begin
TTS.AudioFastForward;
//跳到下一句 end;
最后,记得在程序结束时释放接口对象TTS: procedure TForm1.FormDestroy(Sender: TObject);
begin
TTS:=nil;
end;
OK!大功告成。运行,在Memo中随便输入几句英文,点击“朗读”就能听到声音了。
你还可以将程序改进一下,让它读某个文件内容或剪贴板的信息(“词霸2000”就是这样处理的)。现在谁还敢说你的程序不专业?