[orca/570658] Temporarily tie in speaking the alternate speech with ACSS's



commit bc46420a23ccccfde61d4b1b2a423f741683935f
Author: Willie Walker <william walker sun com>
Date:   Wed May 13 15:48:22 2009 -0400

    Temporarily tie in speaking the alternate speech with ACSS's
---
 src/orca/speech.py          |   47 ++++++++++++++++++++----------------------
 src/orca/speechgenerator.py |   10 ++++++--
 2 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/src/orca/speech.py b/src/orca/speech.py
index 1b2be95..87d2422 100755
--- a/src/orca/speech.py
+++ b/src/orca/speech.py
@@ -137,33 +137,30 @@ def sayAll(utteranceIterator, progressCallback):
             debug.println(debug.LEVEL_INFO, logLine)
             log.info(logLine)
 
-def altspeak(textArray, interrupt=True):
-    """Speaks all queued text immediately.  If text is not None,
-    it is added to the queue before speaking.
-
-    Arguments:
-    - textArray:      optional text to add to the queue before speaking
-    - interrupt: if True, stops any speech in progress before
-                 speaking the text
-    """
-
-    # We will not interrupt a key echo in progress.
-    #
-    if orca_state.lastKeyEchoTime:
-        interrupt = interrupt \
-            and ((time.time() - orca_state.lastKeyEchoTime) > 0.5)
-
-    if settings.silenceSpeech:
-        return
-
-    acss = textArray[0]
-    for i in range(1, len(textArray)):
-        element = textArray[i]
+def altspeak(result, voice=None):
+    """Speaks the array-based speech from the alternate speech generator."""
+    subString = None
+    for element in result:
         if isinstance(element, basestring):
-            if _speechserver:
-                _speechserver.speak(element, __resolveACSS(acss), interrupt)
+            if subString:
+                subString += " " + element
+            else:
+                subString = element
         else:
-            altspeak(element, interrupt=True)
+            if subString:
+                print "Speaking '%s' with" % subString, voice
+                speak(subString, voice)
+            subString = None
+            if isinstance(element, list):
+                altspeak(element, voice)
+            elif isinstance(element, ACSS):
+                voice = ACSS(voice)
+                voice.update(element)
+            else:
+                print indent + "UNKNOWN element", element
+    if subString:
+        print "Speaking '%s' with" % subString, voice
+        speak(subString, voice)
 
 def speak(text, acss=None, interrupt=True):
     """Speaks all queued text immediately.  If text is not None,
diff --git a/src/orca/speechgenerator.py b/src/orca/speechgenerator.py
index 2816def..330a8b2 100755
--- a/src/orca/speechgenerator.py
+++ b/src/orca/speechgenerator.py
@@ -1859,12 +1859,13 @@ class SpeechGenerator:
 
         return utterances
 
-    def _dumpAndStripAltSpeech(self, result, indent=""):
+    def _dumpAndStripAltSpeech(self, result, voice=None, indent=""):
         """Dumps and strips the array-based speech from the 
         alternate speech generator.  The full result is
         dumped to stdout and the return value is a single
         depth array of only strings."""
         import acss
+        import speech
         newResult = []
         subString = None
         didACSS = False
@@ -1881,11 +1882,13 @@ class SpeechGenerator:
                 subString = None
                 if isinstance(element, list):
                     newResult.extend(
-                        self._dumpAndStripAltSpeech(element, indent))
+                        self._dumpAndStripAltSpeech(element, voice, indent))
                 elif isinstance(element, acss.ACSS):
                     print indent + '<voice acss=\"%s">' % element
                     indent += "  "
                     didACSS = True
+                    voice=acss.ACSS(voice)
+                    voice.update(element)
                 else:
                     print indent + "UNKNOWN element", element
         if subString:
@@ -1919,7 +1922,8 @@ class SpeechGenerator:
 
         result2 = self.alt.getSpeech(obj, \
             already_focused=already_focused, **args)
-        print result2
+        import speech
+        speech.altspeak(result2)
         result2 = self._dumpAndStripAltSpeech(result2)
 
         # making the returned values from alt.getSpeech into a string.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]