a light weight connector for espeak-ng and speakup
  • C 96.6%
  • Meson 3.4%
Find a file
Alexander Epaneshnikov e92edf96dc softsynth: bound the wait for espeak to acknowledge a stop request
request_espeak_stop() waited forever for the espeak thread to
acknowledge the stop.  If espeak-ng is wedged inside the audio output
(e.g. an ALSA device blocked or stuck returning EBUSY, as reported in
issue #62), the acknowledgement never comes, and the softsynth thread
stops draining /dev/softsynth forever.  Speakup's kernel buffer then
fills up and console output stalls, which matches the "blocks dmesg
output after a couple of pages" observation in issue #45.  The process
goes silent and only SIGKILL gets rid of it.

Wait at most 10 seconds for the acknowledgement (a normal cancellation
takes milliseconds; the timeout can only trigger when espeak is truly
stuck).  On timeout, exit with a clear message so that the init system
respawns espeakup in a clean state: our systemd unit already has
Restart=always.  A one-second restart beats an unkillable silent
daemon, and was explicitly requested by the reporter of issue #62.

Helps: https://github.com/linux-speakup/espeakup/issues/45
Helps: https://github.com/linux-speakup/espeakup/issues/62

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-29 10:29:36 +02:00
doc format build files consistently 2021-07-03 03:53:58 +03:00
services meson: switch from deprecated functions (#49) 2022-03-11 14:51:28 +01:00
src softsynth: bound the wait for espeak to acknowledge a stop request 2026-06-29 10:29:36 +02:00
.clang-format use clang-format for code styling 2021-06-19 01:57:49 -05:00
.gitignore switch to meson (#30) 2021-06-18 21:53:04 -05:00
.indent.pro added .indent.pro to the repository 2009-05-30 00:20:31 -05:00
COPYING added gpl 2008-08-01 21:46:54 -05:00
meson.build meson: switch from deprecated functions (#49) 2022-03-11 14:51:28 +01:00
meson_options.txt format build files consistently 2021-07-03 03:53:58 +03:00
README.md Fix deprecated Meson setup command warning in README (#61) 2025-08-22 14:12:32 +03:00

espeakup connector

espeakup is a program which makes it possible for speakup to use the espeak-ng software synthesizer. It does this by reading speakup's softsynth device and passing the text to espeak-ng which actually speaks.

Requirements

This program works with the speakup screen reader, which can be obtained from http://linux-speakup.org, and the espeak-ng software speech synthesizer.

You must have both of these installed and operational. Setting them up is beyond the scope of this document.

Installation

The preferred way to install espeakup is using your distribution's packaging system, but if your distribution does not have a package for espeakup yet, espeakup just uses meson, so you should be able to change to the source directory, then type:

meson setup . ./build
cd ./build
ninja
sudo ninja install

Starting Up

This program should be run after speakup is set up to communicate with a software synthesizer and after /dev/softsynth exists. The way this is done is distribution specific, so it is beyond the scope of this documentation.

Acknowledgements

I would like to thank Marc Mulcahy, the author of the speakup to TTSynth connector, on which this work is based. Also, I would like to thank Kirk Reiser and Jonathan Duddington, the authors of Speakup and Espeak, respectively, for their work.

Filing Bugs

Bugs should be filed on our bug tracker at https://github.com/linux-speakup/issues.