我正在尝试创建一个简单的程序,循环为用户语音输入使用com.apple.speech.recognitionserver。到目前为止,我的代码如下:
set user_response to "start"
repeat while user_response is not equal to "Exit"
tell application id "com.apple.speech.recognitionserver"
set user_response to listen for {"Time", "Weather", "Exit"} with prompt
"Good Morning"
end tell
if user_response = "Time" then
set curr_time to time string of (the current date)
set curr_day to weekday of (the current date)
say "It is"
say curr_time
say "on"
say curr_day
say "day"
else if user_response = "Weather" then
say "It is hot outside. What do you expect?"
end if
end repeat
say "Have a good day"如果在我的系统上运行上面的程序,它会说早上好,然后它会弹出语音输入系统,等待Time、Weather或Exit。他们都做了他们说要做的事情,但是如果我说时间和天气,他们不会循环一遍又一遍,直到我说退出,演讲器超时,再也不会弹出。有没有办法让应用程序保持打开直到程序结束,或者applescript不能循环用户语音输入?
发布于 2010-05-09 00:46:21
如果您找不到打开语音识别的方法,请尝试在再次调用它之前添加延迟。我记得(很久以前)我发现,如果您尝试将事件发送到正在退出的应用程序(它不会重新打开应用程序),则事件可能会丢失。
发布于 2010-05-28 07:37:44
在结束之前重复添加
告诉应用程序"SpeechRecognitionServer“退出结束告诉
大约35秒后,它会重复,在寒冷的日子里,它像蜂蜜一样慢,但它是有效的。试试看。
下面是一个简单的例子:
repeat
tell application "SpeechRecognitionServer"
set theResponse to listen for {"yes", "no"} with prompt "open a finder?"
set voice to (theResponse as text)
end tell
if voice contains "yes" then
tell application "Finder"
activate
end tell
else
say "not understood"
end if
tell application "SpeechRecognitionServer"
quit
end tell
end repeathttps://stackoverflow.com/questions/2791200
复制相似问题