Name

Speech Listener Application

Dictionary commands

listen for allows a script to “listen for” any text provided in a list of strings (or numbers), then respond accordingly when it hears one of the listed words or numbers. The return value of the listen for command is the text or number that is recognized. The following example first sets a fam variable to a list of names. It then uses the listen for command to prompt the user to say one of the names. If the name is recognized (let’s say it’s “Emily”) then the computer responds by saying “Hey guys, Emily is my family member too!” The [[emph - ]] syntax is an embedded speech command that (in this case) de-emphasizes the pronunciation of the following word. Embedded speech commands are explained elsewhere in this chapter. If the script listens but does not hear any spoken commands in 60 seconds, it will time out and raise error number -1712. The example script catches this error, says “bye-bye,” and exits the repeat loop (effectively terminating the script). Listen for also raises an error when text is heard but does not match any of the specified text options.

(* repeat the prompt until a family name is identified
or the script times out *)
repeat
try
tell application "Speech Listener"
set fam to {"Stacy", "Bruce", "Rachel", "Emily", "Anne",¬
"Dean", "Bob"}
(* listen for returns the recognized text, which the fam_member
variable is set to *)
set fam_member to (listen for fam with prompt "Say a¬
family [[emph - ]] member")
end tell
say "Hey guys, " & fam_member & " is my family [[emph -
]]¬
member too!"
exit repeat
on error number errnum
If errnum is -1712 then
say "Bye-Bye"
exit repeat
else
say "I'm sorry, try again."
end if
end try
end repeat
listen for list of strings or numbers

The listen for command has to be nested in a tell block targeting the Speech Listener application, as in tell application "Speech Listener"...end tell. Chapter 7 , describes the tell statement. Listen for’s required parameter is a list of strings or numbers comprising the text that the machine listens for. The example below listens for certain numbers and, if it hears one, will speak that number squared. In other words, if it hears “5,” then the script will speak the result of 5 * 5. This example uses embedded speech commands, such as [[ slnc 500 ]] (which produces half a second of silence). These commands are explained elsewhere in this chapter. The three listen for labeled parameters are optional.

with prompt string

The machine says this prompt before listening for the designated text, as in with prompt "say your name".

giving up after integer

You can designate a number of seconds for the Speech Listener app to wait before it returns a timeout error (error number -1712) and quits listening. If you do not specify an integer for giving up after, then the default timeout will occur in 60 seconds.