[orca/570658] Temporarily tie in speaking the alternate speech with ACSS's
- From: William Walker <wwalker src gnome org>
- To: svn-commits-list gnome org
- Subject: [orca/570658] Temporarily tie in speaking the alternate speech with ACSS's
- Date: Wed, 13 May 2009 15:49:05 -0400 (EDT)
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]