import speech # say() speaks out loud. speech . say ( "I am speaking out loud." ) # input() waits for user input. The prompt text is optional. spoken_text = speech . input ( "Say something, user!" ) print "You said: %s " % spoken_text # You can limit user input to a set of phrases. spoken_text = speech . input ( "Are you there, user?" , [ "Yes" , "No" , "Shut up, computer." ]) print "You said: %s " % spoken_text # If you don't want to wait for input, you can use listenfor() to run a callback # every time a specific phrase is heard. Meanwhile your program can move on to other tasks. def L1callback ( phrase , listener ): print "Heard the phrase: %s " % phrase # listenfor() returns a Listener object with islistening() and stoplistening() methods. listener1 = speech . listenfor ([ "any of" , "these will" , "match" ], L1callback ) # You can listen for multiple things at once, doing different things for each. def L2callback ( phrase , listener ): print "Another phrase: %s " % phrase listener2 = speech . listenfor ([ "good morning Michael" ], L2callback ) # If you don't have a specific set of phrases in mind, listenforanything() will # run a callback every time anything is heard that doesn't match another Listener. def L3callback ( phrase , listener ): speech . say ( phrase ) # repeat it back if phrase == "stop now please" : # The listener returned by listenfor() and listenforanything() # is also passed to the callback. listener . stoplistening () listener3 = speech . listenforanything ( L3callback ) # All callbacks get automatically executed on a single separate thread. # Meanwhile, you can just do whatever with your program, or sleep. # As long as your main program is running code, Listeners will keep listening. import time while listener3 . islistening (): # till "stop now please" is heard time . sleep ( 1 ) assert speech . islistening () # to at least one thing print "Dictation is now stopped. listeners 1 and 2 are still going." listener1 . stoplistening () print "Now only listener 2 is going" # Listen with listener2 for a while more, then turn it off. time . sleep ( 30 ) speech . stoplistening () # stop all remaining listeners assert not speech . islistening ()