其实这并不是一件困难的事,因为金山词霸实际上也只是直接使用了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引擎传递需要朗读的文字,第二个参数由指定朗读时使用的语气和优先级的两个符号合并而成。
符号 | 值 | 意义 | |
语气
| vtxtst_STATEMENT | $00000001 | 平常说话的语气(缺省) |
vtxtst_QUESTION | $00000002 | 提问的语气 | |
vtxtst_COMMAND | $00000004 | 命令的语气 | |
vtxtst_WARNING | $00000008 | 警告的语气 | |
vtxtst_READING | $00000010 | 阅读文档时的语气 | |
vtxtst_NUMBERS | $00000020 | 适合阅读数字的语气 | |
vtxtst_SPREADSHEET | $00000040 | 适合阅读电子表格中元素的语气 | |
优先级 | vtxtsp_VERYHING | $00000080 | 立即读出,可打断正在读的内容 |
vtxtsp_HIGH | $00000100 在百度中搜索更多在程序中加入英文朗读功能相关网页 转贴于:中国下载站
【中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页】 相关文章
文章评论(评论内容只代表网友观点,与本站立场无关!)
栏目导航
分类广告
热门文章
|