Thursday, August 27, 2009

Emacspeak Servers --- Catching Up With Debian And Ubuntu

Over the last couple of years, the TCL world has moved on from TCL8.3 to TCL8.4 --- this introduces a set of needed changes to how Emacspeak servers such as Espeak and ViaVoice-Outloud work. I have finally decided to break backward compatibility with TCL8.3 and move things forward to TCL8.4, now that all the Linux distributions have settled on TCL8.4.

Also, sometime in 2005, I transitioned all of the server Makefiles to use libtool --- at the time, it made compilation of the servers somewhat easier. However, this has tended to make things more complex over time, thanks to changes in libtool. I've now dropped the libtool dependency in favor of using simpler Makefiles --- thanks William Hubbs of Gentoo!

ViaVoice Outloud Server For Emacspeak

The Voxin package from Guilles continues to be the easiest means of obtaining high-quality text-to-speech on Linux. Installation of that package went smoothly on Hardy; however on Jaunty, things did not go so well, see notes below for things to watch out for on Jaunty or later.

  • The libstdc++ compat libraries ended up not getting installed on Jaunty. Consequence, ViaVoice produces a warning asking you to install the ViaVoice RTK, even though it's already installed. I ended up rescueing the compat libs from my Hardy build. Perhaps we should put up a simple tar.gz file that drops those libs into /usr/lib?
  • Alsa is configured to use pulseaudio on Jaunty. An unfortunate consequence is that when ViaVoice runs, it sounds like a stereo channel played as mono, i.e. the speech slows down and the voice sounds wrong. The fix is to create a .asoundrc file in your home directory --- you can use the sample in linux-outloud/ASOUNDRC as a starting point. To see if pulseaudio is intervening in your setup, do :aplay -v wav file --- to see the set of alsa plugins that are participating in audio output.

ESpeak And Emacspeak

The ESpeak server does not get affected by the above problem. However, unless you install package alsa-oss and invoke that server as :aoss tcl espeak the server will fail to start if some other application is using the audio device.

Software Dectalk And Emacspeak

This still needs testing under newer Linux distributions --- I've not used it in a long time and dont have the libs installed any more.