【问题标题】:Speech Recognition Server Does Not Stay Open语音识别服务器不保持打开状态
【发布时间】:2011-10-29 21:39:57
【问题描述】:

我正在尝试创建一个使用 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"

如果在我的系统上运行上述程序,它会说早上好,然后会弹出语音输入系统并等待时间、天气或退出。他们都按照他们所说的去做,但是如果我说时间和天气,而不是循环并再次询问直到我说退出,语音服务器超时并且不再弹出。有没有办法让该应用程序保持打开直到程序结束,或者 applescript 不能循环用户语音输入?

【问题讨论】:

    标签: macos applescript speech-recognition


    【解决方案1】:

    如果您找不到保持语音识别打开的方法,请尝试在再次调用之前添加延迟。我记得(很久以前)发现如果您尝试将事件发送到已经处于退出中间的应用程序(它不会重新打开应用程序),事件可能会丢失。

    【讨论】:

    • 第一次重复和告诉之间大约 5 秒的延迟非常有效。谢谢。
    【解决方案2】:

    在你结束之前重复添加

    告诉应用程序“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 repeat
    

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多