以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  DotNetSpeech判断朗读结束的代码?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=10670)

--  作者:baoxyang
--  发布时间:2011/6/17 9:28:00
--  DotNetSpeech判断朗读结束的代码?
 

Dim sp As New DotNetSpeech.SpVoice()
sp.Voice = sp.GetVoices(
String.Empty,String.Empty).Item(0)
sp.Speak(
"I am from china.", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)

 

请教,如何用代码来判断朗读结束呢?谢谢!!


--  作者:狐狸爸爸
--  发布时间:2011/6/17 9:54:00
--  

Dim sp As New DotNetSpeech.SpVoice()
sp.Voice = sp.GetVoices(
String.Empty,String.Empty).Item(0)
sp.Speak(
"I am from china.", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)

messagebox.show("我读完了")


--  作者:baoxyang
--  发布时间:2011/6/17 9:57:00
--  
以下是引用狐狸爸爸在2011-6-17 9:54:00的发言:

Dim sp As New DotNetSpeech.SpVoice()
sp.Voice = sp.GetVoices(
String.Empty,String.Empty).Item(0)
sp.Speak(
"I am from china.", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)

messagebox.show("我读完了")

这样是达不到我要效果的。

需要代码来判断是否读完?


--  作者:狐狸爸爸
--  发布时间:2011/6/17 10:04:00
--  

不读完就不能执行任何操作的。

所以只能在这里判断


--  作者:baoxyang
--  发布时间:2011/6/17 10:08:00
--  

 

哦,我这边朗读是采用异步的,不是同步的。

刚写的代码是随便复制的一段。(误解了)

我目的急需要朗读结束判断的代码来实现。

请问下SPEI_END_INPUT_STREAM表示朗读结束怎样使用?


--  作者:狐狸爸爸
--  发布时间:2011/6/17 10:28:00
--  

嘿嘿,我不会,你自行研究,有结果告诉我。


--  作者:baoxyang
--  发布时间:2011/6/19 10:37:00
--  

lxl兄,可否帮忙。

实现语音设置感兴趣的事件:SetInterest

1、 设定SAPI返回的消息 :setnotifywindowmessage
2,消息来时,确定事件类型:GetEvents
       清除事件结构:SpClearEvent
3,相应事件时,用GetStatus确定当前SAPI的状态
主要想实现二个目的:
1、取得语音在读的语句并光标随着变动。
2、获取语音在读的状态:开始读,结束读或其它信息。
参考网址:http://mailao.ycool.com/post.1836137.html(因为是C#不太懂)

--  作者:lxl
--  发布时间:2011/6/19 18:56:00
--  

那个代码是 C/C++的

 

DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync 标志 只是简单的异步。

也就是另启一个线程朗读。这样在朗读时间比较长的情况下,不会使界面进入无响应的状态。

但是这种异步方式的缺点是无法指定“回调函数”  回调函数就是线程执行完成后,执行的函数。

 

所以只能自己实现异步编程了。

至于“取得语音在读的语句并光标随着变动。”需要根据语速计算每秒读的字符数了。

下面这个文件只是简单的开启线程来实现的,真正开发是封装成异步编程模式来实现的。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table


--  作者:lxl
--  发布时间:2011/6/19 18:59:00
--  
函数在全局代码里面
--  作者:baoxyang
--  发布时间:2011/6/20 9:17:00
--  

哦,多谢了!但还是搞不定!