你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
MSTTS技术在VFP中调用应用
 

  :本文介绍了一种在VFP中调用微软TTS技术的实现方法,并通过一个发音实例,说明其设计步骤

关键词VFPTTS,,ACTIVEXOLE容器控件

 

一、前言

金山词霸2000中即可进行查字典时同时读出相应的英文单词,也可进行全文英文朗读功能,这大大方便了用户的使用,提高了金山词霸的实用性。其实,金山词霸2000 就是直接利用了微软的TTS Text To Speech)技术,即文本语音发声技术。

VFPVisual Foxpro)在数据库数据处理方面,其性能是众所周知的,而在其它方面,有时又有一点力不从心。比如,调用微软的TTS技术实现发音,直接调用就比较困难,而作为一名VFP程序设计者,你一定也想在自己的程序中加入类似的功能吧,因为那将让自己的程序增色不少。怎么办?用VBVisual Basic)编制生成一个可供VFP调用的ActiveX控件,一切都可解决。

下面,具体介绍一种调用方法及实现英语单词发音的实例,供有兴趣的电脑爱好者参考。

三、具体实现方法如下:

第一,    要在您的电脑中安装MSTTS引擎。

在金山词霸2000 的安装过程中,将自动安装MSTTS;我们也可以利用金山词霸2000 安装光盘中的MSTTS.EXE 文件单独安装,在金山词霸2000光盘上\ciba子目录下运行mstts.exe(MS TTS engine)并安装spchapi(MS Speech API)。安装成功后,在您系统的Windows 目录下将有一个Speech 子目录,其中安装了相应的支持文件。其中的Vcmd.exe 作为进程外的自动化服务器,提供将文本转换为语音的服务。Vtxtauto.tlb 为相应的类型库,对服务器的接口给出了与语言无关的描述。

第二,编制生成ActiveX 控件

1、进入VB6.0,执行“文件”菜单下的“新建工程”,然后在“新建工程”窗口中选取“ActiveX 控件”,最后单击“确定”。

2、执行菜单“工程/引用”,然后单击“浏览”按钮,选择Windows目录下的Speech子目录,打开Vtxtauto.tlb,这时“Voice Text object Library”将被添加到可用的引用中。选中“Voice Text object Library”,然后单击“确定”按钮。如图所示:

3、编写程序代码:

Public Sub audio_init()

Rem 通过API函数调用 , 判断系统是否安装有声卡以及声卡驱动程序

Rem 注册

  Call VTxtAuto.VTxtAuto.Register(Space(10), Space(10))

End Sub

Public Sub audio_speak(st As String)

Rem 如果text1中有汉字 , 转到错误提示

On Error GoTo handler

Rem 开始朗读

Call VTxtAuto.VTxtAuto.Speak(Trim(st), vtxtsp_VERYHIGH + vtxtst_READING)

Exit Sub

handler:

MsgBox "本程序只能阅读英文文档″, , ″错误提示″"

End Sub

Public Sub audio_stop()

Rem 停止朗读

Call VTxtAuto.VTxtAuto.StopSpeaking

End Sub

Public Sub audio_pause()

  Call VTxtAuto.VTxtAuto.AudioPause

End Sub

Public Sub audio_resume()

  Call VTxtAuto.VTxtAuto.AudioResume

End Sub

4、执行“文件”菜单下的“生成工程1.OCX,然后在“文件名”输入框中想要生成的ActiveX 控件名(如:MYVOICE.OCX),最后按“确定”完成第二步工作。(最好将其拷贝至您的WINDOWSSYSTEM子目录下)。

第三, 在VFP中编制发音程序

1、进入VFP6.0,执行菜单“文件/新建”,然后单击“文件类型框”中的“项目”选项,然后单出“新建文件”按钮,在弹出的对话框中“项目文件”输入框中输入一个项目文件名,如MYTTS,最后单出“保存”按钮就完成了第一步工作。这时屏幕上会出现一个“项目管理器”窗口。

2、 在“项目管理器”窗口中选择“文档”中的“表单”,然后单击“新建”按钮后选择“新建表单”按钮。这时会出现一个表单设计器窗口,这时便可开始进行程序界面的设计,建立五个VFP常规控件:五个命令按钮和一个文本框。具体如下图:

然后分别修改五个控件的主要属性:

Form1Caption属性的值为"微软TTS技术的一个例子"

Text1Value属性的值为”Hello,my friends!”

Command1

Caption属性的值为″开始发音″

Enabled属性的值为 .T.

Command2

Caption属性的值为″停止发音″

Enabled属性的值为 .F.

Command3:

Caption属性的值为″暂停发音″

Enabled属性的值为 .F.

Command4:

Caption属性的值为″继续发音″

Enabled属性的值为 .F.

Command5:Caption属性的值为″退出系统″

3,加入ActiveX对象,具体如下:

在表单控件工具框中,选择“OLE容器控件”,并在表单的TEXT1文本框的右边将其放置,这时可能需要一段时间等待(视计算机速度),之后将在屏幕上出现一个“Insert Object”对话框,在对话框中选择“Insert Control”选项(也可能需要一段时间等待),然后将在屏幕上出现一个“Control Type”选择框,在其中选择“工程1.USERControl1,最后单击“OK”按钮完成ActiveX对象的插入。如下图所示:

第五, 编写程序代码:

1、双击FORM1,在弹出的FORM1_ACTIVATE()代码窗口中输入如下代码:

thisform.olecontrol1.audio_init

2、双击“开始发音”控件,在弹出的Command1_Click()代码窗口中输入如下代码:

* 如果text1中有汉字 , 将有错误

* 开始朗读

thisform.olecontrol1.audio_speak(thisform.text1.text)

thisform.command1.enabled=.t.

thisform.command2.enabled=.t.

thisform.command3.enabled=.t.

thisform.command4.enabled=.f.

3、 双击“停止发音”控件,在弹出的Command2_Click()代码窗口中输入如下代码:

*停止发音

thisform.olecontrol1. audio_stop

thisform.command1.enabled=.t.

thisform.command2.enabled=.f.

thisform.command3.enabled=.f.

thisform.command4.enabled=.f.

4、 双击“暂停发音”控件,在弹出的Command3_Click()代码窗口中输入如下代码:

*暂停发音

thisform.olecontrol1. audio_Pause

thisform.command1.enabled=.t.

thisform.command2.enabled=.f.

thisform.command3.enabled=.f.

thisform.command4.enabled=.t.

5、 双击“继续发音”控件,在弹出的Command3_Click()代码窗口中输入如下代码:

*继续发音

thisform.olecontrol1. audio_Resume

thisform.command1.enabled=.t.

thisform.command2.enabled=.t.

thisform.command3.enabled=.t.

thisform.command4.enabled=.f.

6、双击“退出系统”控件,在弹出的Command4_Click()代码窗口中输入如下代码:

    thisform.release

   至此,已完成所有工作,点击VFP表单的执行表单按钮,运行上述程序,并在Text1中输入英文单词或句子,然后单击“开始发音”按钮,即可实现朗读。

三、结束语

    微软的MSTTS发音技术至目前还不支持中文发音(CTTS),所以本文介绍的方法,在Text1文本输入框中只能输入英文单词或句子,不能输入中文,否则将发生错误,希望大家注意。

 注:本程序在Win98VB6.0VFP6.0环境中调试通过。

 

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089