You are correct. When I rewrote the pulse audio driver for speech-dispatcher based on Luke's code, and the code I found in libao, I was able to set some buffer parameters and get things working. Bill On Thu, Dec 24, 2009 at 12:38 PM, Lennart Poettering <lennart at poettering.net> wrote: > On Sun, 20.12.09 07:22, Bill Cox (waywardgeek at gmail.com) wrote: > >> Hi. >> >> I'm trying to debug a problem in Ubuntu Lucid that appears to be >> pulseaudio related. ?When we set the speech rate of espeak to 100% in >> Orca, and enable key echo, the keys are not announced when pressed. >> Instead, when you type one key, no sound is played, but when you press >> another key, both keys are played. >> >> I've traced this bug from Espeak to libao and now to pulseaudio. >> Libao is using the pa_simple_write function to play speech sounds. ?I >> find that when sounds of over about 2000 samples are sent, then then >> sound is played. ?If sounds of less than 2000 samples are sent, then >> they are not played, and instead buffered somewhere until the next >> sample is passed to pa_simple_write. >> >> Would anyone have any idea of what might be causing this, or what area >> I should inspect more closely? ?Currently, I'm using fprintf commands >> to trace the pulseaudio source. ?So far, I've traced this from >> simple.c to stream.c to pstream.c, where I see the samples being >> queued. ?From there, I'm a bit lost about how the samples are moved >> along. > > You probably figured this out already, given the other traffic on the > ML, but just to write this down here for all eternity (i.e. folks > googling through the mailing list archives): this is caused by the > prebuffering. By default PA will not start playback until the playback > buffer is filled at least once. > > That is actually not much different with other audio engines, except > maybe that usually the PA buffers are larger than hw buffers. An > applicatin that makes assumptions about the start thresholds (alias > "prebuf") is broken and needs to be fixed, either by writing proper > silence, or by setting prebuf properly, or by triggering a > pa_stream_flush() call. > > Lennart > > -- > Lennart Poettering ? ? ? ? ? ? ? ? ? ? ? ?Red Hat, Inc. > lennart [at] poettering [dot] net > http://0pointer.net/lennart/ ? ? ? ? ? GnuPG 0x1A015CC4 > _______________________________________________ > pulseaudio-discuss mailing list > pulseaudio-discuss at mail.0pointer.de > https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss >