以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  暂停朗读  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=29167)

--  作者:明丰
--  发布时间:2013/3/1 9:52:00
--  暂停朗读
 

窗口1_Button2_Click

 

Dim d As String = e.Form.controls("TextBox2").value

Dim sp As New DotNetSpeech.SpVoice()

sp.Voice = sp.GetVoices(String.Empty,String.Empty).Item(0) \'语音库

sp.rate = -1 \'低速

sp.Speak(d, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)

 

窗口1_Button3_Click

 

Dim sp As New DotNetSpeech.SpVoice()

sp.Pause()  \'暂停

\'sp.Resume() \'继续

 

执行暂停朗读操作无效,请问如何设置?


--  作者:狐狸爸爸
--  发布时间:2013/3/1 9:57:00
--  

你这样做,每个事件中的sp都是各自独立。

 

建议

 

1、在全局代码中加上:

 

public sp As New DotNetSpeech.SpVoice()

 

2、删除所有事件中的:

 

Dim sp As New DotNetSpeech.SpVoice()


--  作者:明丰
--  发布时间:2013/3/1 10:33:00
--  
请问有停止朗读的方法吗?
--  作者:狐狸爸爸
--  发布时间:2013/3/1 10:34:00
--  
2楼告诉你方法了啊
--  作者:明丰
--  发布时间:2013/3/1 10:56:00
--  

假如第1个单元格朗读到一半,这时候想朗读第2个单元格,如何设置?


--  作者:狐狸爸爸
--  发布时间:2013/3/1 11:06:00
--  
sp.pause
sp = New DotNetSpeech.SpVoice()

sp.Speak(
"新的内容"
, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)
--  作者:shenyl0211
--  发布时间:2013/3/1 13:29:00
--  

全局代码:

Public spv As New DotNetSpeech.SpVoice() \'全局变量至少3个字符
Public speak0 As String ="0" \'状态标志,=1为开启语音朗读,=0为禁止,这是专门针对没有音箱或耳机的计算机设置的

菜单中“语音朗读”按钮代码:

属性:类型为状态按钮,按下取false

事件:

Static ts As RibbonMenu.ToggleButton
If ts Is Nothing Then
    ts = RibbonTabs("日常工作").Groups("整表操作").Items("语音朗读") \'自己改
End If
If speak0="1" Then
    ts.pressed =False
    speak0="0"
    spv.pause
Else
    ts.pressed=True
    speak0="1"
    spv.resume
End If

表的ValidateEdit事件代码:

If speak0="1" Then
    spv.rate=-1 \'设置语速
    spv.Speak(e.text, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)
End If

 

如果开启,输入完后会自动朗读

一般情况下可以不用pause和resume

 


 

[此贴子已经被作者于2013-3-1 13:37:26编辑过]

--  作者:明丰
--  发布时间:2013/3/1 17:09:00
--  

已解决。

 

\'停止播放:

spv.Speak(String.Empty, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak)

[此贴子已经被作者于2013-3-2 15:23:57编辑过]