找回密码
 加入
搜索
查看: 3398|回复: 9

[AU3基础] 文本朗读如何不等待[已解决,感谢]

  [复制链接]
发表于 2012-4-29 13:48:57 | 显示全部楼层 |阅读模式
本帖最后由 lin6051 于 2012-5-3 12:50 编辑
dim $v="hou hou share she, ten ten soung shang. "
_TalkOBJ($v)
msgbox(0,"提示","")
Func _TalkOBJ($s_text)
  Local $o_speech = ObjCreate("SAPI.SpVoice")
  $o_speech.Speak($s_text)
  $o_speech = ""
EndFunc


搜索了一下,都类似上面 的 脚本, 这个要 等朗读完成后 才能执行下一行命令

有没有方法可以不等待它朗读完就执行下一行命令?
发表于 2012-4-29 14:43:49 | 显示全部楼层
分为两个EXE
发表于 2012-4-29 23:20:58 | 显示全部楼层
本帖最后由 komaau3 于 2012-4-30 01:10 编辑

回复 1# lin6051
朗读标志设为1就行了,
$o_speech.Speak($s_text, 1)
其他标记你自己研究吧
Enum SpeechVoiceSpeakFlags
    'SpVoice Flags
    SVSFDefault = 0
    SVSFlagsAsync = 1
    SVSFPurgeBeforeSpeak = 2
    SVSFIsFilename = 4
    SVSFIsXML = 8
    SVSFIsNotXML = 16
    SVSFPersistXML = 32

    'Normalizer Flags
    SVSFNLPSpeakPunc = 64

    'TTS Format
    SVSFParseSapi = 
    SVSFParseSsml = 
    SVSFParseAutoDetect = 

    'Masks
    SVSFNLPMask = 64
    SVSFParseMask = 
    SVSFVoiceMask = 127
    SVSFUnusedFlags = -128
End Enum
 楼主| 发表于 2012-4-30 14:15:57 | 显示全部楼层
dim $v="hou hou share she, ten ten soung shang. "
_TalkOBJ($v)
msgbox(0,"提示","")
Func _TalkOBJ($s_text)
  Local $o_speech = ObjCreate("SAPI.SpVoice")
  $o_speech.Speak($s_text,1)
  $o_speech = ""
EndFunc
没用啊
 楼主| 发表于 2012-4-30 14:52:14 | 显示全部楼层
回复 3# komaau3


1,11 都跳过朗读了
发表于 2012-4-30 15:19:33 | 显示全部楼层
本帖最后由 komaau3 于 2012-4-30 15:22 编辑

回复 4# lin6051


;异步朗读,
Local $text="you should give me some talk time but not kill me when I just want to read !will you ?"
Local $V = ObjCreate("SAPI.SpVoice")
$V.Speak($text,1)
ConsoleWrite("see, i'm reading now..." & @CRLF)
$V.WaitUntilDone (-1);你可以做任何事情,但不是立即退出或把对象给注销掉
ConsoleWrite('sure... i killed you , i should not set $o_speech=none , ' & @CRLF)

;同步,不会及时返回
Local $text="don't cut in until I finished reading these texts , ok ?"
Local $V = ObjCreate("SAPI.SpVoice")
$V.Speak($text,0)
ConsoleWrite('sure...' & @CRLF)
发表于 2012-4-30 17:35:49 | 显示全部楼层
本帖最后由 komaau3 于 2012-4-30 17:36 编辑

回复 5# lin6051

同样 为了更可靠的实现功能部署 我们可以使用event事件来监控朗读是否结束

示例:


;异步朗读,
Local $text="hoo , i also support event events."
Local $V = ObjCreate("SAPI.SpVoice")
ObjEvent($V, '_SpVoice_')
$V.Speak($text,1)
While 1
        Sleep(100)
WEnd

Func _SpVoice_StartStream()
    MsgBox(0,0,'朗读开始')
EndFunc

Func _SpVoice_EndStream()
    MsgBox(0,0,'朗读结束')
EndFunc
发表于 2012-5-2 17:48:58 | 显示全部楼层
还能朗读呀?厉害还会
发表于 2012-9-14 20:17:41 | 显示全部楼层
7楼的这个如何加入重复朗读,我怎么改也只朗读一遍。
发表于 2012-9-14 20:17:44 | 显示全部楼层
7楼的这个如何加入重复朗读,我怎么改也只朗读一遍。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-5 23:24 , Processed in 0.076967 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表