Speech support is standard with all versions of Vista (and windows 7).
If I remember the MSD article correctly it's uses the bell labs phonic system as standard
Its documentation says that it understands SSML. libespeak has some understanding, but doesn't (yet?) seem to handle <phoneme>.
As far as the Bell Labs system goes, I can't find any useful description of it which will let me determine whether I should stick with espeak or try a different library:consider where it's necessary to render text as phonemes to get the right pronunciation; if the W!ndows one has enough in common with an open-source one, then that one should be preferred for reasons of avoiding more pronunciation guide files.
(Hmm, espeak started out on RISC OS. I'd completely forgotten that. Definite point in its favour there…)
eSpeak's intended SSML support of <phoneme> would allow extra configuration by OXPers.
an eSpeak dll can be built on Windows with Visual Studio C++ http://sourceforge.net/forum/message.php?msg_id=6538460
If a Windows patch and dll are available more players can check it out.
Solas, have you got this to work? I have already built espeak.dll with MinGW/MSYS + libportaudio, but it has a problem: Synchronous playback only. In simple terms, this means that whenever there is speech to play, the game stops, says the phrase it has to say, then continues. Obviously this is unacceptable. I tried putting the speech synthesis on a separate thread and managed to get it to work wonderfully for about 45 seconds before crashing.
If you have managed to get espeak to work with the SAPI5, then I would appreciate some indications as to how you did it.
"Solas, have you got this to work?"
No, I was quoting from the espeak website ..
"the game stops, says the phrase it has to say, then continues. Obviously this is unacceptable."
we interrupt this program ..
is an espeak.dll or espeak_sapi.dll built using Visual Studio C++ of any use at all ?
Unfortunately, I have also tried to build with portaudio and pthreads in order to support async playback, only to have to stop a bit later on, when a Unix specific header was requested during the build process. After that, I did not pursue it further, because I do not like the idea of having to add two to three more external libraries to the package (plus the espeak setup files) just for this. I would still like to investigate the option of doing the speech on separate threads, but this is something that I will have to find some serious time for. Thanks for pointing out the links, anyway.