在程序中加入英文朗读功能

作者:佚名来源:网络点击:
 金山词霸2000的奂文全文朗读功能相信一定给尝试过的用户留下了很深刻的印象,而作为一个程序设计者,你一定也想在自己的程序中加入类似的功能吧,因为那将让自己的程序增色不少。

其实这并不是一件困难的事,因为金山词霸实际上也只是直接使用了MS的TTS(Text-to-Speech)技术而已,通过对MS Speech API 的编程,我们完全可以实现比其更强大的功能。下面,让我们在Delphi环境下实际尝试一下。

首先从金山词霸的光盘上\ ciba目录下运行并安装mstts. Exe(MS TTs engine)和spchapi. Exe (MS Speech API).

再在Delphi 里新建一个application。

然后从Delphi的菜单Project/Import Type Library. . .中选击Add. . .,浏览到Windows目录下的Speech子目录里,打开vtxtauto. Tlb,可以看到下面Class names中会出现我们需要的接口的包装类的名字TVTxtAuto,注意对话框底部的Generate Component Wrapper需要被选中,点击Create Unit 就可以打开一个名为VtxtAuTo_TLB的Unit。

至此,我们就可以开始实际编程了。

首先在Form的OnCreate中对需要使用接口初始化并进行注册:

...

Procedure TfrmMain. FormCreate (Sender. Tobject); begin

FISpeech: = CoVTxtAuto_Create;

FISpeech. Register (“Demo Site’, ‘Demo App’); end;

...

由于Delphi对接口进行了良好的包装,因此,只需直接建立包装类,其他后台的操作如接口的查询、释放等交给Delphi在后台自动完成。

注意这里的Register操作是必不可少的,因为可能有多个程序不同设置使用TIS引擎。

然后在MainForm上放一个Tmemo和若干个Tbutton,并在其OnClick中加入对应的代码。

Form定义如下:

Object frmMain: TfrmMain

Left = 296

Top = 187

BorderStyle = bsDialog

Caption = ‘英文全文朗读演示’

ClientHeight = 185

ClientWidth = 456

Color = clBtnFace

Font. Charset = GB2312_CHARSET

Font. Color = clWindowText

Font. Height = -12

Font. Name = ‘宋体’

Font. Style = [ ]

OldCreateOrder = False

Position = poDesktopCenter

OnCreate = FormCreate

PixelsPerInch = 96

TexHeight = 12

Object memText: Tmemo

Left =8

Top = 8

Width = 361

Height = 169

ScrollBars = ssVertical

TabOrder = 0

End

Object btnRead: Tbutton

Left = 376

Top = 8

Width = 75

Height = 25

Caption = ‘朗读(&R)’

TabOrder = 1

OnClick = btnReadClick

End

Object btnPause: Tbutton

Left = 376

Top = 40

Width = 75

Height = 25

Caption = ‘暂停(&P)’

Enabled = False

TabOrder = 2

OnClick = btnPauseClick

End

Object btnStop: Tbutton

Left = 376

Top = 72

Width = 75

Height = 25

Caption = ‘停止(&S)’

Enabled = False

TabOrder = 3

OnClick = btnStopClick

End

Object btnForward: Tbrtton

Left = 376

Top = 120

Width = 75

Height = 25

Caption = ‘下一句(&N)’

Enabled = False

TabOrder =4

OnClick = btnForwardClick

End

Object btnRewind: Tbutton

Left = 376

Top = 152

Width = 75

Height = 25

Caption = ‘上一句(&W)’

Enabled = false

TabOrder = 5

OnClick = btnRewindClick

End

End

关键代码段如下:

1.朗读与停止

...

procedure TfrmMain. BtnReadClick (Sender: Tobject); begin

FISpeech. Speak (memText. Lines. Text, vtxtst_READING0;

BtnPause. Enabled : = True;

BtuStop. Enabled : = True;

End;

Procedure TfrmMain. BtnStopClicl (Sender: Tobject); begin

FISpeech. StopSpeaking;

BtnPause. Enabled : = False;

BtnStop. Enabled : = False;

BtnPause. Caption : = ‘暂停(&P)’;end;

...

speak成员函数的第一个参数向TTS引擎传递需要朗读的文字,第二个参数由指定朗读时使用的语气和优先级的两个符号合并而成

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 验证码: 验证码
查看所有评论
  • 相关文章
  • 广告推荐