How to get speech-dispatcher to work without resorting to running another program first?

Not technically a SDL problem but I intend to use this for SDL (more
specifically, the proposed screen reader API) so I’m posting this
here.

The problem is with speech-dispatcher. In order to use it you need to
enable it first. Now, I thought that starting a speech-dispatcher
connection would be enough (the documentation says that programs
themselves would enable it), but at least here it doesn’t seem to.
Basically, as-is I can’t get any speech at all. Once I run another
program that outputs speech, suddenly it works just fine until I log
off. Argh. And yes, speech-dispatcher is always running, so I have no
idea what it wants to start working.

So, here are the questions:

  1. How do I enable speech-dispatcher so I don’t have to rely on
    running another program first to make it work? (and yes, solutions
    involving calling system() and such are valid as long as they’re
    reasonably portable among Linux distros)

  2. How important is this issue? Users who need it would already be
    running a speech based screen reader which in turn would have already
    enabled speech-dispatcher in the first place, so they will never see
    the issue in practice. Developers will run into it, but then again
    developers should not expect the API to work without a screen reader
    (or equivalent) present in the first place. And curious users who are
    just messing with it should expect problems arising :stuck_out_tongue:

Anyway, any ideas?

    to running another program first?

Message-ID:
<CAEyBR+U0xvBjJfNG-XnvLnCTStkFLt6OE10McOcqhsWJAS7geg at mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

Not technically a SDL problem but I intend to use this for SDL (more
specifically, the proposed screen reader API) so I’m posting this
here.

The problem is with speech-dispatcher. In order to use it you need to
enable it first. Now, I thought that starting a speech-dispatcher
connection would be enough (the documentation says that programs
themselves would enable it), but at least here it doesn’t seem to.
Basically, as-is I can’t get any speech at all. Once I run another
program that outputs speech, suddenly it works just fine until I log
off. Argh. And yes, speech-dispatcher is always running, so I have no
idea what it wants to start working.

So basically you need to start another program that does the same
thing to get the code to work? Sounds like you’re missing something
that’s poorly documented, I would suspect either
initialization-related or buffer-flushing-related. Does the program
that you’re starting work correctly on it’s own, or does it start
something up as well? Have you tried starting a second instance of
your dev program?> Date: Sun, 15 Mar 2015 06:41:28 -0300

From: Sik the hedgehog <sik.the.hedgehog at gmail.com>
To: SDL Development List
Subject: [SDL] How to get speech-dispatcher to work without resorting

2015-03-15 14:07 GMT-03:00, Jared Maddox :

So basically you need to start another program that does the same
thing to get the code to work?

Yep. For example, spd-say does the job (sadly, I can’t seem to make it
do anything if I pass it the empty string, which means that so far I
can’t just get away by running spd-say without having it say
anything).

Sounds like you’re missing something
that’s poorly documented, I would suspect either
initialization-related or buffer-flushing-related.

Probably, and I may have missed something. I was wondering if
somebody happened to knwo though.

Does the program
that you’re starting work correctly on it’s own, or does it start
something up as well?

No idea. All I know is that my code won’t output any speech at all
until I run something like spd-say, then my code works as intended no
matter how many times I run my program until the moment I close the
session.

Have you tried starting a second instance of
your dev program?

Doesn’t work.

Also mfw headdesk I just managed to make spd-say initialize
speech-dispatcher without making it say anything: spd-say " " (yep,
passing it a space). I wonder why I couldn’t get something like this
to work before (maybe I didn’t consider this option…?).

OK, I suppose that may do it for now, but if anybody has a better
(proper) suggestion, you’re welcome.