2024年5月5日发(作者:)

维普资讯

计算机时代2002年第3期 ・l9・ 

用VB6.0开发英文朗读软件 

零月秀 

(广西师范走学541004) 

1前言 

VB6+0是功能强大的可视化编程语言,有很强的多媒 

体处理能力,如众所周知的演示动画、播放动态图像与声 

音文件等 大家都知道,声音文件的数据量非常尤 一分 

钟声音,单声道、8位采样位数、采样频率为11.025kltz, 

数据量为0 66MB/ ̄":若采佯频率为22.05kHz,则数据量 

为I 32MB份,若为双声道,则为2 6MB/分。可以设想. 

如果不用事先录音,计算机能直接朗读文字那该多好啊。 

现在,我们这个设想宴现了,有点遗憾的是计算机只能朗 

读英文 

让计算机具有英文语音朗读功能是通过使用Microsoft 

的TTs(Toxt to Specch)技术.对Microsoft Sp ̄ch API 

编程实现的 Microsoft Speech API韵功能十分强大,不光 

可以准确地读出单词,而且还能够实现流利地朗读句子乃 

至段落、文章。 

在VB中.通过VoiceTextObject(VTxtAu ̄对象)使 

用TTs技术,使计算机具有说话的能力 Microsoft Speech 

API以COM组件的形式提供绐程序员,VTxtAuto对象是 

个ActiveXCOM对象。 

2设置开发英语语音朗读软件的VB环境 

2.1安装Microsoft Speech API 

Microsoft Speech API在共享软件光盘中一般都会带有 

也可到http://researchmicrosoft.c ̄rn/网站击下载。垒山词 

霸2000的英文全文朗读功能也是使用MicrosoftSpe ̄hAPI 

技术.因此,在垒山词霸光盘上也能找到它。在金山词霸 

2000光盘上找到并打开iciba文件夹,运行并安装msRs 

exe(Microsoft TTS engine)和spchapi exe(Microsoft Speech 

API)即可。 

2.2在VB6.0工程中引用VoiceTextObject函数库 

虽然在系统中安装了Micmso ̄SpeechAPI,但是,在用 

VB建立的工程中还不能直接引用VTxtAulo对象,必须先 

在VBT程工作环境中引用VoiceTextObject函数库。方法是: 

(1)单击“工程”菜单中的“引用”命令,出现“引 

用”对话框。 

(,1滚动列表哉到Voice Tex'tO ectLibrary选项,并单 

击其复选框.将其选定。 

(3)单击“确定”按钮关闭对话框。 

经过以上步骤,已经将Voice Text Object函数库引入 

到我们的工程中,单击VB6 0“视图”菜单下的“对象测 

览器”或按F2功能键,打开 对象浏览器 窗口,就可 

以在“对象浏览器”窗口的“工程,库”框中看到YTxtAuto 

库.在“类”列表中可以看到VTxtAuto类。现在就可以 

引用VTxtAuto对象,使用VTxlAuto对象的属性和方法编 

程了 

3 VTxtAuto对象的属性和方法 

3 1属性 

{i)Callback属性 

这个属性用来指定一个自定义类的名字,这个类的方 

法接收来自VTxtAuto对象的通知。这个自定义类必须包 

含一个spcakjn县st ed方法和一个SpeakingDo ̄方法。 

(2)Enab ̄甜属性 

Enabled属性是使被朗读文本有效或无效,值为逻辑 

型 当取值为True时,文本有效,允许朗读 当取值为 

False时.文本无效,禁止朗读 

(3)IsSpeaking属性 

这个属・睦用来检查VTxtAuto对象是否正在朗读文本。 

若是,值为True 若不是,值为False。这个属性为只读 

属性.不能赋值。 

(4)Speed属性 

这个属性用来设置或返回朗读的速度。速度韵单位为: 

字份,速度的取值范围在3O~510之间,超出这个范围将 

产生错误。Speed的值也可取0或・1,若取值为0,则速度 

设置为最慢值,即3O字份:若取值为-I,则建度设置为 

最快值,即为510字份。缺省值为170 分。 

3.2 VTxtAuto对象的方法 

(】)王毒敷的方法 

语法为:对象方法 

无参数的方法共有5个,它们分别为: 

AudioFasForward方法前进一个句子或短语 

AudioPause方法暂停朗读 

AudioResume方法恢复朗读 

AudioRewind方法后退一个句子或短语 

StopSpeaking方法停止朗读 

维普资讯

20・ Computer era No.3 2002 

【2)有拳敷妁方法 

有参数的方法只有两个.Register方法和Speak方法。 

Register方法用来注册使用VtxtAuto对象的应用程序。 

必须在调用其它属 手日方法之前先使用这个方1挂。语法为: 

对象.Register(sSitename as String,sApplicationname 

as String) 

第一个参数sSitename指要连接到的位置,用一个空 

的字符串代替默认位置(“Local PC”)。第二个参数sAp- 

p]icationname为应用程序的名字。 

Speak方法:该方法把指定的英文文本用语音朗读出 

来。语法为: 

对象Speak{sTextToSpeak aS String,IFlag as Long) 

参数sTextToSpeak是用来向TTs引擎传送需要朗读的 

文本 参数IFlag是用来指定朗读时使用的语气及优先级, 

它的值如表l所示 

表 

符号常辫 僵 I熏义 

删I平常雠的普气c£揩僵】 

4'Tal QIESUON 2 f 硼 

语 mI C m AhD m 竹69 

mIWl删G 8 69 

mIm∞lm &HlO嘲 69 

mI N【n0ERs 删0 适 弼i臻撇气 

吡I刚强曲S_哑ET 髓10请 僦于黼甲埔的爵气 

ti, ̄p VERYH 0 &qSO打断正在朗证明P嘱.旦孵出用此方式朗 

比先噩 I读的交丰.骺重薪钎馕已酣 的文丰. 

由 D GH &HIO0 l镬完正在朗读弹嗯 1日 

D NO№L  ̄1200 l傩加^播帆列末尾c 佰: 

4一个简单的实例 

新建一个标准EXE工程,按照上述第二个主题的步 

骤来设置工程的工作环境。在窗体上添加一个标签、一个 

文本框,四个命令按钮 窟体的haole为 frmMaiu”、caption 

为“The English Speaker”:文本框的name为“txtEditor”、 

MultiLine为“True”、Scro]lgars为“2 venica 四1、命 

令按钮的name分别为:“cmdSpeak”、“cmdPause”、 

“cmdS ̄p”、“cmdExit”。程序的运行界面如图I昕示 

图】 

在代码窗口中输入 下代码: 

Option Explicit 

Dim Vtxl AS VTxIAuto VTxtAuto 

’定卫具有点音能力的VTxIAuto对象 

Dim GreetUser As String 

Private Sub Form Load 0 

Set Vtxt=New IAuto VTxtAulo 

’建立一十新的VlxtAuto对象 

Call Vtxt Register(App Title.App EXENama) 

注册本应用程序使用下Ts引肇 

设置朗读按钮为有效的,暂停与结束按钮为无效的 

cmdSpeak Enabled=True 

cmdPause Enabled=False 

cmdStop Enabled=False 

’根据系统当前时间同候用户 

Vtxt Spaed=13D 

IfT ̄me¥0)”18:00:00”Then 

G reetUser=”Good evening! 

Else 

tfTimes n>”12 0Q 00“Then 

GreetUser ’_Good aSernoon!” 

Else 

G reetUser ”Good morning!” 

End 

Endlf 

Call Vtxt Speak(GreetUse ̄.vlxtsLSTATEMENT) 

End Sub 

Private Sub cmdSpeak_clid(0 

If txtEdilor.Texl=_Then 

ExitSub’若文本框申没有要朗读的英文,到培束子过程 

Else 

Call Vltx Speak(txtEdilor Text.vtxtst-sTATEMENT) 

’朗读文本框申的蔓文文丰 

’朗读时.激活暂停与结束按钮 

omdPause Enabled=True 

errdSIop Enabled=True 

End 

EndSub 

Private Sub cmdPause

_

Ctick【) 

If Vht IsSpeaking Then 

Vlxt AudioPause ’若正在朗读,则暂停 

omdPause Caption &Resum e.. 

’暂停时,把按钮的标题改为“Resume” 

’暂停时,屏蔽朗读与结束按钮 

 ̄mdSpeak Enabled=FaIes 

cmdSlop Enabled=FaIse 

Else 

Vtxt AodioResume ’I蔓复朗读 

cmdPause Caption=”&Pause'’ 

cmdSlop Enabled=True’恢复魄读后,激活结束按缸 

End 

End Sub 

Privale Sub cmdStop

_

ClicR 0 

IfVlxt IsSpeaking Then 

Vtxt StopSpeaking ’若正在朗读、姑柬朗读 

Endlf 

txtEdilor SetFocus 

维普资讯

计算机时代2002年第3期 -21・ 

怎样包装C++Budder应用程序 

王有一 

(国家电力 司热工研究院710032) 

般应用程序开发完成后,都需要进行包装, 便于 或选择的所有设定值都将存储在DBA iwz文件里。 

同时,工具程序还显示出一张设定步骤表(如表1所 

示)。 

销售发行 你不必到市面上购买通用的安装程序制作软件, 

c++B ui】dcr的光盘内就附有一套用于分配发行的工具软件 

[nstaIlShieId。当你的c 一Builde 工程项目开发完成后,就 

可以使用这套工具程序把工程项目包舍的所有程序和数据 

文件包装起来。包装的文件主要包括应用程序的执行文件, 

其次,BDE数据库引擎、SQI Links驱动程序、OCX文件、 

Paradox或F0xpr0数据库文件,应根据应用程序是否用到, 

进行选择包装。 

当体按照表格,执行完所有的设定步骤t应用程序的 

包装就完成了 

2・l第一设定步骤Set the Visual Design 

点击第一设定步骤AppI ationInformation项・会出现 

s theVi 】D g 窗口的APPI f0页面。请在ApPIicatjon 

N虮忙框输入应用程序的名称,可以随意起一个名字辅入, 

2使用InstallShield包装数据库应用程序 如DBA o在App i。 i。 。。 ’。框输入应用程序的执行 

装警 应里程序是比较典型的应用,以下介绍怎}羊包 Des a1 Director'框暂且不要首它,在后面的第四设定 

一 

数 应用 : 

从(『孑f始”一“程序”菜单中选择执行ExpressFor 

B _】d。r4程序・即进入I“虬 【lshi。Id E pre L mj d E曲iD盯 

。..  .

步骤中还可 对它设定修改 最后按-r确定”,即完成该项 

目^h 自 

再进入M

ain Wind。w页面.在M n Title项.可选 xl 

新 !。.掌击“st Fi晤。e 工 ”_ ” 开N奠‘比如D:w 。Bj 和存储位 ec 窗呈,.尊 文字标题,如果休输入 国家电力公司”,则它会被作为 

置安装过程的显示标题。在L。g。Bi【map项.可输入安姜 

(比如 、 YDBA ’然后单击“cre 

按钮,即在 程的显示画面

由于Ins扭儿shjeld Ex ss包 序只支持 

’结束明读后.把当前焦点移到文本框 准备精^需要朗读文本 

EndSub 

EndSub 

运行程序时.计算机首先问候用户。当用户在文本框 

中输入需要朗读的英文后,单击“Speak”按钮,计算机 

将把文本框中的英文朗读出来。文本榧具有编辑功能,如 

果要朗读的英文已在计算机中,用不着从键盘输入,把要 

朗读的英文复制到文本框即可 

Private Sub txtEditor GotFocus 0 

’当前焦点在文本框时,激活朗读按钮、屏蔽暂停与结束 

按钮 

cmdSpeak Enabled="l-rLie 

cmdStop Enabled=False 

cmdPause Enabled=False 

End Sub 

Pdvate Sub Fom

5结束语 

上述程序是一个使用T丁s技术的简单实例,可以用来 

学习英语单词或短语的发音、朗读课文、{啦听力练习,也 

可以用来校对英文文章。如果把TTs技术应用到英语课件 

中去,用来朗读课文,不仅可 省掉大量的录音工作,还 

可 节省大量的存储空间,使课件的体积大大地减小。当 

然,使用T丁s技术还不能实现口语中如带感情色彩的语 

调、语速等的变化.显得有点单调 以上程序在Windows98、 

VB6 0中调试通过 

Unload(Cancel As Integer) 

IfVtxt IsSpeakingThen 

Vtxl SlopSpeaking 

EndIf 

SetVtxt=Nothing’关闭VtxlAuto对象 

End Sub 

Pdvala Sub cmdExit

click 0 

_

E