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
发布评论