标题在VB中利用MSTTS技术实现英文朗读功能
栏目软件世界
发布2000年第22期
《金山词霸2000》的英文全文朗读功能,是直接使用了MSTTS(Text-to-Speech)技术,在VB6.0中通过对MS Speech API的调用,可以轻松实现更强大的功能。方法如下:
首先,从《金山词霸2000》光盘上\ciba子目录下运行mstts.exe(MS TTS engine)并安装spchapi(MS Speech API)。
第二,进入VB6.0,执行菜单“工程”中的“引用”,“浏览”到Windows目录下的Speech子目录,打开vtxtauto.tlb,则“VoiceText 1.0 Type Library”将被添加到可用的引用中。选中它,然后单击确定。
第三,执行菜单“文件/新建工程/标准EXE”并确定,在Form1中添加Text1,command1,command2,command3和command4。主要属性设置如下:
Form1的StartUpPosition=2
Text1的MultiLine=True,Caption="How are you?",ScrollBars=2
Command1的Caption="Read"
Command2的Caption="Stop",Enabled=false
Command3的Caption="Pause",Enabled=false
Command4的Caption="Quit"
第四,代码如下:
'通用声明
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Private Sub Form_Load()
'通过API函数调用,判断系统是否安装有声卡以及声卡驱动程序
Dim i As Integer
i = waveOutGetNumDevs()
If i <= 0 Then
MsgBox "系统无声卡或未装声卡驱动程序,请安装好以后再试...","错误提示"
Unload Me
Else
'注册
Call VTxtAuto.VTxtAuto.Register(Space(10),Space(10))
End If
End Sub
Private Sub Command1_Click()
'如果text1中有汉字,转到错误提示
On Error GoTo handler
'开始朗读
Call VTxtAuto.VTxtAuto.Speak(Trim(Text1.Text),vtxtsp_VERYHIGH + vtxtst_READING)
Command2.Enabled = True
Command3.Enabled = True
Exit Sub
handler:
MsgBox "本程序只能阅读英文文档",,"错误提示"
End Sub
Private Sub Command2_Click()
'停止朗读
Call VTxtAuto.VTxtAuto.StopSpeaking
Command2.Enabled = False
Command3.Enabled = False
End Sub
Private Sub Command3_Click()
'暂停或恢复朗读
If VTxtAuto.VTxtAuto.IsSpeaking Then
Call VTxtAuto.VTxtAuto.AudioPause
Command3.Caption = "Resume"
Else
Call VTxtAuto.VTxtAuto.AudioResume
Command3.Caption = "Pause"
End If
End Sub
Private Sub Command4_Click()
Unload Me
End Sub
程序运行时,在Text1中输入英文句子,然后单击“朗读”按钮,即可实现朗读。
第五,说明:
1.成员函数的第一个参数向TTS引擎传递需要朗读的文字,第二个控制朗读时的语气和优先级,由两个常量相加组成。
控制优先级的常量有:vtxtsp_HIGH = 256 (&H100),尽快读出,加入播放队列开始。vtxtsp_NORMAL = 512 (&H200),默认,加入播放队列末尾。vtxtsp_VERYHIGH = 128 (&H80),立即读出,可打断正在读的内容。
控制语气的常量有:vtxtst_COMMAND = 4,命令的语气。vtxtst_NUMBERS = 32 (&H20),阅读数字的语气。vtxtst_QUESTION = 2,提问的语气。vtxtst_READING = 16 (&H10),阅读文档时的语气。vtxtst_SPREADSHEET = 64 (&H40),阅读电子表格中元素的语气。vtxtst_STATEMENT = 1,平时说话时的语气,默认。vtxtst_WARNING =,警告语气。
2.通过IsSpeaking可以取得当前状态,AudioPause和AudioResume实现暂停和恢复朗读。
3.另外,AudioFastForward和AudioRewind可以向前和向后跳过一句朗读,修改Speed属性的值可以设置朗读的语速,默认是170。
4.本程序支持粘贴功能,可从剪贴板中粘贴英文文档内容到文本框中,也可直接输入英文句子。
注:本程序在Win98、VB6.0环境中调试通过。