The Open Interface for Speech Synthesis (OISS) provides an interface to speech synthesis hardware and software for end-user applications under Unix. It consists of a background process called speechd which receives text and commands sent to /dev/speech and sends them to a speech synthesizer of the user's choice. OISS is written in Python, and new drivers can be installed simply by placing Python source files in a directory where Python will find them. Current drivers: festival: driver for the Festival speech synthesizer (http://www.cstr.ed.ac.uk/projects/festival/) doubletalk: driver for the DoubleTalk synthesizers (http://www.rcsys.com/) Installation: To install OISS, follow the instructions in the INSTALL file. You will also need to set up a FIFO called /dev/speech, if it doesn't exist already. To do that, run the following command as root: mkfifo /dev/speech chmod 622 /dev/speech If you will be running speechd as root, then the setup of /dev/speech is complete. Otherwise, you need to make sure that the user who will be running speechd has permission to read from the file. The easiest way to do this is to make that user the owner of the file. Configuration: By default, the festival driver will be used. If you want to use another driver, you will need to create a configuration file. When speechd starts, it will first attempt to read settings from /etc/oiss.conf, and then from .oissrc in the user's home directory. These configuration files can actually contain any Python code, which will be run at startup. They most commonly contain variable assignments. For example, my configuration file looks like this: synth = "doubletalk" device = "/dev/ttyS0" The synth variable specifies the name of the synthesizer driver. The device variable specifies the device name for a hardware synthesizer. For a software synthesizer it is irrelevant and need not be included in the configuration files. Speech commands: Commands can be embedded in the text that is sent to /dev/speech in order to control the synthesizer. The only currently supported command is Control-X (ASCII code 24), which immediately stops the speech. Note that this command isn't yet implemented for Festival; if anyone knows how to implement it for this synthesizer, please let me know. Writing drivers: The driver interface for OISS is very simple at the moment. Each driver corresponds to a Python module. When the module is loaded, its "new" function is called with one argument. For hardware synthesizers, this argument is the device file name; for software synthesizers, it is usually None and should be ignored. The "new" function is expected to return an object with the following methods: speak(text): Speak the given text. stop(): Stop the speech immediately. Any cleanup that is necessary (such as closing files or killing processes) is handled by the "__del__" method on the returned object. Conclusion: If you have any questions, suggestions, or comments about this package, please e-mail them to me. This package is in its early stages right now, but I hope it will become the standard speech synthesis interface for applications under Unix. --Matthew Campbell