To add this stuff to Macintosh python (and have some use for it):

1. Obtain a copy of the Speech Manager. It can be found on
   ftp.apple.com.
2. Put the Speech.h file from the Speech Manager distribution and
   macspeechmodule.c in your python Modules directory.
3. Add the new module to python and build a new python.
4. Install the Speech Manager (under sys7 the extension goes in the
   Extensions folder, the data file in the System folder) and reboot.
5. Try it.

The test program 'hum' does that, you type notes and it hums them
(badly, addmitted, but that isn't my fault really).

The test program 'grail' is more fun, but you need stdwin support for
it. It reads the script for the Holy Grail film from the file SCRIPT
and both animates it (text only:-) on the screen and reads it out the
speaker. It will use all voices available in the system.
