:: [devuan-dev] bug#496: devuan-projec…
Top Page
Delete this message
Reply to this message
Author: Gregory Nowak
Date:  
To: Devuan Bug Tracking System
Subject: [devuan-dev] bug#496: devuan-project: request to fork speech-dispatcher package from debian
Package: devuan-project
Severity: grave
Tags: a11y
Justification: renders package unusable

This is a request to fork the speech-dispatcher package from debian,
and modify speech-dispatcher's configuration.

-- background:
There are two methods to access a devuan system with speech output.
The first method is to use the text console.
On a devuan system installed with accessibility, the text console is accessed
through the speakup screen reader, espeakup, and espeak/espeak-ng.
The speakup screen reader is part of the linux kernel.
Since speakup lives in kernel space, it cannot access a software speech
synthesizer like espeak directly.
On a devuan system installed with speech output, the connector between
speakup and espeak is a piece of software called espeakup.

Espeakup monitors speakup for text to be spoken, and uses
espeak to process the text for speech to be output through the sound card.
The espeakup program uses ALSA to access the sound card.
ALSA is used so that espeakup has a minimal number of dependencies,
and so that those who don't want to use pulseaudio aren't forced to do so.

The second method to access a devuan system with speech
is to use the orca screen reader at the graphical console.
To produce speech output, orca uses a program called speech-dispatcher.
The aim of speech-dispatcher is to accept text to speak from
multiple clients, and pass it to one of multiple speech synthesizers
for speech output.
The speech-dispatcher program can output speech to a sound card in multiple
ways, or it can even output speech over the network.

On a devuan system installed with speech, the speech-dispatcher
program inherited from debian uses pulseaudio to drive the sound card.
Since pulseaudio doesn't autospawn on devuan,
this means that speech-dispatcher by default
can't output speech to the sound card.
This in turn means that users don't get speech at the
graphical console
in devuan 3.0 by default.
Users do however get speech at the text console,
since as I mentioned above, espeakup uses ALSA to output to the sound card.

In debian pulseaudio is autospawned by systemd, so the opposite is true;
users have speech at the graphical console, but not at the text console,
since pulseaudio holds the sound card, preventing espeakup from accessing the
sound card through ALSA.

-- proposed solution:
The solution I'm proposing is to fork debian's speech-dispatcher
package, and change speech-dispatcher's configuration
so it uses libao instead of pulseaudio by default for speech output.
As long as devuan's default is not to autospawn pulseaudio,
this means that both espeakup and speech-dispatcher
will use ALSA to drive the sound card.
This in turn means that users requiring speech output in devuan
will have it both at the text and the graphical consoles by default.

If devuan does however change to autospawn pulseaudio
by default in the future, the change I'm proposing
means that users would not have speech at either text or
graphical consoles.

Configuring speech-dispatcher to use libao for output is done in the
/etc/speech-dispatcher/speechd.conf file.
In that file, the line which reads:

# AudioOutputMethod "pulseaudio"

should be changed to read:

AudioOutputMethod "libao"

This change is also suggested in the troubleshooting
section of the debian accessibility wiki.

I'm planning to fork and maintain the speech-dispatcher package for devuan
once I'm able to take on that responsibility, assuming no one does so first.
There are other ways to fix this situation.
However, the method I'm proposing is the most
straightforward, and should be welcomed by most users requiring speech output
at the text and graphical consoles.


-- System Information:
Distributor ID:    Debian
Description:    Devuan GNU/Linux 3 (beowulf)
Release:    3
Codename:    beowulf