Re: [orca-list] PulseAudio (was Re: orca speech uncontrolled and jumbled with speech-dispatcher)



On Sun, Nov 01, 2009 at 10:51:51AM EST, Jason White wrote:
Recent versions of PulseAudio are reputed to give better latency. It should
also be noted that, according to the PulseAudio developers, it has exposed
bugs in some sound drivers that have needed to be fixed.

Thus, a recent version of PulseAudio with a recent Linux kernel should work
better, but this does not imply that all of the issues have been resolved with
all sound cards.

Also bare in mind that the speech-dispatcher code to work with pulseaudio is by no means optimized. Since 
speech-dispatcher's pulseaudio output code was added, pulseaudio's buffering metrics have changed quite a lot 
from a more static buffering setup, to a dynamic buffering setup, where pulseaudio is constantly monitoring 
performance with the audio hardware, and changes audio buffers accordingly.

Speech-dispatcher's pulseaudio output, and indeed synthesizer drivers still use a static buffering system, 
where buffering is set to an arbitrary number, according to previous testing etc. The pulseaudio output code 
at the moment requests that pulseaudio set the best possible settings for speech-dispatcher's pulseaudio 
output buffering, however this is still not optimal, due to several speech synthesizer drivers having static 
buffering settings, causing speech to break up when used with pulseaudio output. The speech-dispatcher 
pulseaudio output code also does not request an update on buffering metrics from pulseaudio during its 
operation

The one speech synthesizer that works with speech-dispatcher, and that does not break up when being used via 
pulseaudio, is flite. Flite doesn't have anything in its API that requires an audio buffer to be set, however 
as we all know, flite is not the most pleasant to listen to, and is not the most responsive of speech 
synthesizers.

During the GNOME 2.29/30 cycle, and during the next Ubuntu cycle, my main accessibility focus will be to 
optimize the speech-dispatcher pulseaudio code, and adjust the driver and audio output buffering metrics to 
be dynamically updated, according to what pulseaudio uses. If alsa is used, things will stay as a static 
buffering system, as that seems to work now without issue.

As for speech-dispatcher and orca in Ubuntu karmic, if one was to use the screen reader accessibility profile 
to install Ubuntu, pulseaudio will be disabled system wide, allowing speech-dispatcher to work via alsa. As 
for the espeak crashing issue, the actual problem has not yet been found, but I do have a work-around in 
mind, which I hope to code in the next week. The work-around in question will cause the sd_espeak driver to 
be restarted should it crash.

Hope this helps clear things up a bit.

Luke



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