I just downloaded eSpeak. It is free, and has remarkably useful features. While the voice options are by no means the same as a true storyteller and occasionally pronounce words differently than intended (wind is pronounced with a long 'i', when, in the case of what I wrote, I required a short 'i'.), they get the basic job done.
I'm pasting below what their website says:
eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows. http://espeak.sourceforge.net
eSpeak uses a "formant synthesis" method. This allows many languages to be provided in a small size. The speech is clear, and can be used at high speeds, but is not as natural or smooth as larger synthesizers which are based on human speech recordings.
eSpeak is available as:
•A command line program (Linux and Windows) to speak text from a file or from stdin.
•A shared library version for use by other programs. (On Windows this is a DLL).
•A SAPI5 version for Windows, so it can be used with screen-readers and other programs that support the Windows SAPI5 interface.
•eSpeak has been ported to other platforms, including Solaris and Mac OSX.
Features. •Includes different Voices, whose characteristics can be altered.
•Can produce speech output as a WAV file.
•SSML (Speech Synthesis Markup Language) is supported (not complete), and also HTML.
•Compact size. The program and its data, including many languages, totals about 1.4 Mbytes.
•Can be used as a front-end to MBROLA diphone voices, see mbrola.html. eSpeak converts text to phonemes with pitch and length information.
•Can translate text into phoneme codes, so it could be adapted as a front end for another speech synthesis engine.
•Potential for other languages. Several are included in varying stages of progress. Help from native speakers for these or other languages is welcome.
•Development tools are available for producing and tuning phoneme data.
•Written in C.