金山词霸2000的奂文全文朗读功能相信一定给尝试过的用户留下了很深刻的印象,而作为一个程序设计者,你一定也想在自己的程序中加入类似的功能吧,因为那将让自己的程序增色不少。 其实这并不是一件困难的事,因为金山词霸实际上也只是直接使用了MS的TTS(Text-to-Speech)技术而已,通过对MS Speech API 的编程,我们完全可以实现比其更强大的功能。下面,让我们在Delphi环境下实际尝试一下。www.goodsgy.com
首先从金山词霸的光盘上\ ciba目录下运行并安装mstts. Exe(MS TTs engine)和spchapi. Exe (MS Speech API).www.goodsgy.com
再在Delphi 里新建一个application。www.goodsgy.com
然后从Delphi的菜单Project/Import Type Library. . .中选击Add. . .,浏览到Windows目录下的Speech子目录里,打开vtxtauto. Tlb,可以看到下面Class names中会出现我们需要的接口的包装类的名字TVTxtAuto,注意对话框底部的Generate Component Wrapper需要被选中,点击Create Unit 就可以打开一个名为VtxtAuTo_TLB的Unit。www.goodsgy.com
至此,我们就可以开始实际编程了。www.goodsgy.com
首先在Form的OnCreate中对需要使用接口初始化并进行注册:www.goodsgy.com
...www.goodsgy.com
Procedure TfrmMain. FormCreate (Sender. Tobject); beginwww.goodsgy.com
FISpeech: = CoVTxtAuto_Create;www.goodsgy.com
FISpeech. Register (“Demo Site’, ‘Demo App’); end;www.goodsgy.com
...www.goodsgy.com
由于Delphi对接口进行了良好的包装,因此,只需直接建立包装类,其他后台的操作如接口的查询、释放等交给Delphi在后台自动完成。www.goodsgy.com
注意这里的Register操作是必不可少的,因为可能有多个程序不同设置使用TIS引擎。www.goodsgy.com
然后在MainForm上放一个Tmemo和若干个Tbutton,并在其OnClick中加入对应的代码。www.goodsgy.com
Form定义如下:www.goodsgy.com
Object frmMain: TfrmMainwww.goodsgy.com
Left = 296www.goodsgy.com
Top = 187www.goodsgy.com
BorderStyle = bsDialogwww.goodsgy.com
Caption = ‘英文全文朗读演示’www.goodsgy.com
ClientHeight = 185www.goodsgy.com
ClientWidth = 456www.goodsgy.com
Color = clBtnFacewww.goodsgy.com
Font. Charset = GB2312_CHARSETwww.goodsgy.com
Font. Color = clWindowTextwww.goodsgy.com
Font. Height = -12www.goodsgy.com
Font. Name = ‘宋体’www.goodsgy.com
Font. Style = [ ]www.goodsgy.com
OldCreateOrder = Falsewww.goodsgy.com
Position = poDesktopCenterwww.goodsgy.com
OnCreate = FormCreatewww.goodsgy.com
PixelsPerInch = 96www.goodsgy.com
TexHeight = 12www.goodsgy.com
Object memText: Tmemowww.goodsgy.com
Left =8www.goodsgy.com
Top = 8www.goodsgy.com
Width = 361www.goodsgy.com
Height = 169www.goodsgy.com
ScrollBars = ssVerticalwww.goodsgy.com
TabOrder = 0www.goodsgy.com
Endwww.goodsgy.com
Object btnRead: Tbuttonwww.goodsgy.com
Left = 376www.goodsgy.com
Top = 8www.goodsgy.com
Width = 75www.goodsgy.com
Height = 25www.goodsgy.com
Caption = ‘朗读(&R)’www.goodsgy.com
TabOrder = 1www.goodsgy.com
OnClick = btnReadClickwww.goodsgy.com
Endwww.goodsgy.com
Object btnPause: Tbuttonwww.goodsgy.com
Left = 376www.goodsgy.com
Top = 40www.goodsgy.com
Width = 75www.goodsgy.com
Height = 25www.goodsgy.com
Caption = ‘暂停(&P)’www.goodsgy.com
Enabled = Falsewww.goodsgy.com
TabOrder = 2www.goodsgy.com
OnClick = btnPauseClickwww.goodsgy.com
End www.goodsgy.com
Object btnStop: Tbuttonwww.goodsgy.com
Left = 376www.goodsgy.com
Top = 72www.goodsgy.com
Width = 75www.goodsgy.com
Height = 25www.goodsgy.com
Caption = ‘停止(&S)’www.goodsgy.com
Enabled = Falsewww.goodsgy.com
TabOrder = 3www.goodsgy.com
OnClick = btnStopClickwww.goodsgy.com
Endwww.goodsgy.com
Object btnForward: Tbrttonwww.goodsgy.com
Left = 376www.goodsgy.com
Top = 120www.goodsgy.com
Width = 75www.goodsgy.com
Height = 25www.goodsgy.com
Caption = ‘下一句(&N)’www.goodsgy.com
Enabled = Falsewww.goodsgy.com
TabOrder =4www.goodsgy.com
OnClick = btnForwardClickwww.goodsgy.com
End www.goodsgy.com
Object btnRewind: Tbuttonwww.goodsgy.com
Left = 376www.goodsgy.com
Top = 152www.goodsgy.com
Width = 75www.goodsgy.com
Height = 25www.goodsgy.com
Caption = ‘上一句(&W)’www.goodsgy.com
Enabled = falsewww.goodsgy.com
TabOrder = 5www.goodsgy.com
OnClick = btnRewindClickwww.goodsgy.com
End www.goodsgy.com
Endwww.goodsgy.com
关键代码段如下:www.goodsgy.com
1.朗读与停止www.goodsgy.com
...www.goodsgy.com
procedure TfrmMain. BtnReadClick (Sender: Tobject); beginwww.goodsgy.com
FISpeech. Speak (memText. Lines. Text, vtxtst_READING0;www.goodsgy.com
BtnPause. Enabled : = True;www.goodsgy.com
BtuStop. Enabled : = True;www.goodsgy.com
End;www.goodsgy.com
Procedure TfrmMain. BtnStopClicl (Sender: Tobject); beginwww.goodsgy.com
FISpeech. StopSpeaking;www.goodsgy.com
BtnPause. Enabled : = False;www.goodsgy.com
BtnStop. Enabled : = False;www.goodsgy.com
BtnPause. Caption : = ‘暂停(&P)’;end;www.goodsgy.com
...www.goodsgy.com
www.goodsgy.com
[1] [2] 下一页