I've been planning on doing this for a while now (a year or so, sigh), a simple and easy to use D-Bus service for speech output, using espeak.
What it does is queue text with a simple priority system, with just a few simple D-Bus calls. There are two interfaces, on fire-and-forget and one that can be used for tracking the output so calling applications know when it's speech has been output. It will also send signals for spoken words and such. Language and voice settings can be changed.
Currently LC_MESSAGES is used to set the default voice, but a proper control panel applet is planned.
It is still work-in-progress but works mostly. My current problem is that when using pulseaudio output espeak won't report any events. Testing version is available in extras-devel, but not recommended yet for any serious use.
TODO:
- Fix the event reporting
- Make control panel applet