 * brass - Braille and speech server
 *
 * Copyright (C) 2001 by Roger Butenuth, All rights reserved.
 *
 * This is free software, placed under the terms of the
 * GNU General Public License, as published by the Free Software
 * Foundation.  Please see the file COPYING for details.
 *
 * $Id: README,v 1.2 2001/02/14 19:37:15 butenuth Exp $

Softspeech reads from standard input and sends audio to /dev/dsp. It
needs freephone or hadifix and mbrola as subprocesses. They are
expected to be in /opt/speech, so your /opt/speech should look similar
to the following:

drwxr-xr-x   2 root     root         1024 Nov  3 11:04 FESTIVAL_USERS
-rwxr-xr-x   1 root     root        14330 Sep 20 13:40 README
drwxr-xr-x   3 root     root         1024 Jun  5 19:06 de2
drwxr-xr-x   3 root     root         1024 Sep 10 17:55 en1
-rwxr-xr-x   1 root     root        74808 Nov 15 19:40 freephone
drwxr-xr-x   2 root     root         1024 Nov 15 19:40 lib
-rwxr-xr-x   1 root     root       165272 Nov  3 11:11 mbrola
-rw-r--r--   1 root     root        30958 Oct 22 11:00 readme.txt
-rwxr-xr-x   1 root     root      1828527 Sep 26 17:50 txt2pho
drwxr-xr-x   2 root     root         1024 Nov  3 21:14 txt2pho_data

With this setup, you have German and English speech. If you need only
one language, you can remove the files for the other one. Softspeech
starts with a default language (English), if you do not want this,
you can override it by defining a symbol on the command line or in the 
source code (look for DEFAULT_LANGUAGE).

The input of Softspeech is similar to that of the Dolphin
synthesizers, but not compatible (ranges for parameters are
given as decimal numbers, ranges are different).

The sign # is a placeholder for a decimal number >= 0.

"@=1" German
"@=2" British English

"@W#" speed, 100 is normal

"@F#" frequency (pitch), 100 is normal

"@A#" volume, from 0 to 100, default is 75 (soundblaster default)

"@I#" set index, when index is reached, "@I#" is returned on stdout
It is difficult to track how much of the input has been transformed by
the t2pho part or mbrola, for this reason each index stalls the speech
pipe until everything before the index is spoken. So be careful: When
you write much after an index and wait for the index after the write
has completed, deadlock may occur. You are on the save side whenever
you write less than the amount a Linux pipe can hold after an index.

0x18 (control X) clear speech pipe

This is an early release, there are probably bugs. Don't hesitate to
contact me whenever you find one.

Roger Butenuth
