2

好的,目前,我有一个如下所示的脚本:

tell application "SpeechRecognitionServer"
    set theResponse to listen for {"Mark"} with prompt "What is your name?"
end tell

但是,我不希望它听特定的关键字。我希望它从该提示中收集语音数据并将其转换为可以存储在数据库中的字符串。

因此,例如,用户会被提示“你叫什么名字?”这个口头问题。然后,他们会说出他们的名字,说“Mark”,语音识别服务器将捕获该输入,将其转换为文本,将其存储为变量,(userName = theResponse;)

这可能吗?现在我只看到了监听关键字的选项,这对于我想要实现的目标来说是不可取的。

感谢您的任何帮助。

4

2 回答 2

1

正如加勒特所说,我所做的是使用对话框来输入文本。默认语音命令键是双击“fn”键。

tell application "Finder"
say "Which application would you like me to open?" using "Alex"
end tell
set theOpen to text returned of (display dialog "Press the 'fn' key twice and speak!" default answer "" buttons {"Cancel", "Ok"} default button 2)
tell application "Finder"
say "Ok! I will open " & theOpen & " for you" using "Alex"
end tell
tell application theOpen
activate
end tell
于 2013-04-09T14:48:59.890 回答
1

这是我的 QuickAction Automator 脚本,用于打开对话框、开始听写、捕获输入并运行 shell 脚本将其转换为连字符文本,然后它将连字符文本插入前台应用程序。

您可能需要调整键盘快捷键以启动 Preferences->Keyboard->Dictation 下的听写。

QuickActions 将进入所有应用程序的“服务”菜单。然后,您可以在键盘首选项下为该新服务分配键盘快捷键。然后我在辅助功能键盘上创建一个按钮来运行该快捷方式。

on run {input, parameters}

ignoring application responses
    tell application "System Events"
        -- send keystrokes to start dictation.
        -- delay 1
        keystroke "`" using {control down, command down}
    end tell
end ignoring

-- capture input
set theResponse to text returned of (display dialog "Input:" default answer "" with icon note buttons {"Cancel", "Continue"} default button "Continue")

-- convert to hyphenated
set newOutput to do shell script "ruby -e 'puts ARGV.join(\"-\").downcase' " & theResponse


    return newOutput
end run

于 2019-12-19T20:25:21.413 回答