GNOME Bugzilla – Bug 444416
No speech output from SayAll tests
Last modified: 2008-07-22 19:28:09 UTC
There is no speech or Braille output from running the SayAll keystroke files. I tried commenting out the line orca.settings.speechServerFactory = None from user-settings.py.in but it had no effect.
(In reply to comment #0) > There is no speech or Braille output from running the SayAll keystroke files. I > tried commenting out the line You should not get braille from SayAll, so that's OK. > orca.settings.speechServerFactory = None > > from user-settings.py.in but it had no effect. Did Orca not speak at all for any of the tests, or did it just not speak for the say all keystroke files?
Just the SayAll keystroke files.
Do you have a specific test case for this? I tried running: ./runone.sh ../keystrokes/gedit/say-all.keys gedit 0 It looks like the test tries to open a non-existent file. In looking at the code, I see that the SayAll support works a bit 'under the covers' in gnomespeechfactory, calling __speak. The calls to log speech output are in speech.py:speak. Perhaps we need to refactor the code to output the "SPEECH OUTPUT:" log lines as close to the call to the TTS engine as possible. This would also serve as a good test for spoken punctuation, etc. To do this, I'd recommend a new method be added to speech.py: logSpeechOutput(text), which simply look like: def logSpeechOutput(text): debug.println(debug.LEVEL_INFO, "SPEECH OUTPUT: '" + text + "'") log.info("'%s'" % text) Then, modify the speech.py:speak to do the following: if _speechserver: _speechserver.speak(text, __resolveACSS(acss), interrupt) else: logSpeechOutput(text) Then, modify each of gnomespeechfactory.py, speechdispatcherfactory.py, and espeechfactory.py to call speech.logSpeechOutput appropriately. For example, maybe gnomespeechfactory.py only needs a call in the say method of the _Speaker class.
Thanks! I'll try this.
I tried commenting out orca.settings.speechServerFactory = None and SayAll works correctly in the regression tests. I don't know why it didn't work before. It was probably 'pilot error'. I created '.settings' files (without the line above) for the SayAll regression tests. The SayAll regression tests sometimes produce the following traceback at the beginning of a run. This is the only diff between the runs. Traceback (most recent call last):
+ Trace 146758
server = SpeechServer.__createServer(s.iid)
driver = SpeechServer.__activateDriver(iid)
isInitialized = driver.isInitialized() COMM_FAILURE
If there is no simple fix, I recommend a sed script be used to filter out the diff since it appears to be harmless.
(In reply to comment #5) > I tried commenting out > > orca.settings.speechServerFactory = None This was really just a hack to see if SayAll was working correctly. I think the real fix that should be done should be along the lines of what is described in comment #3.
(In reply to comment #6) > (In reply to comment #5) > > I tried commenting out > > > > orca.settings.speechServerFactory = None > > This was really just a hack to see if SayAll was working correctly. I think > the real fix that should be done should be along the lines of what is described > in comment #3. > I'm hacking on some logging stuff for bug 415061 and came across a way (I think) to get the SayAll stuff to log correctly. I'll be checking some code in soon for that.
Patch checked in and working with regression suite. Closing as FIXED.