def say(self, text):
self._proxy.setBusy(True)<EOL>self._proxy.notify('<STR_LIT>')<EOL>i = <NUM_LIT:0><EOL>for word in text.split('<STR_LIT:U+0020>'):<EOL><INDENT>self._proxy.notify('<STR_LIT>', location=i, length=len(word))<EOL>try:<EOL><INDENT>i = text.index('<STR_LIT:U+0020>', i+<NUM_LIT:1>)+<NUM_LIT:1><EOL><DEDENT>except Exception:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>self._proxy.notify('<STR_LIT>', completed=True)<EOL>self._proxy.setBusy(False)<EOL>
Speaks the given text. Generates the following notifications during
output:

started-utterance: When speech output has started
started-word: When a word is about to be spoken. Includes the character
    "location" of the start of the word in the original utterance text
    and the "length" of the word in characters.
finished-utterance: When speech output has finished. Includes a flag
    indicating if the entire utterance was "completed" or not.

The proxy automatically adds any "name" associated with the utterance
to the notifications on behalf of the driver.

When starting to output an utterance, the driver must inform its proxy
that it is busy by invoking L{driver.DriverProxy.setBusy} with a flag
of True. When the utterance completes or is interrupted, the driver
inform the proxy that it is no longer busy by invoking
L{driver.DriverProxy.setBusy} with a flag of False.

@param text: Unicode text to speak
@type text: unicode