Join us at the Oolite Anniversary Party -- London, 7th July 2024, 1pm
More details in this thread.

Speech

General discussion for players of Oolite.

Moderators: winston, another_commander

User avatar
_ds_
Deadly
Deadly
Posts: 180
Joined: Thu Jan 22, 2009 5:34 pm
Location: In a cloaked ship behind you

Re: If my aged organic memorybanks are correct

Post by _ds_ »

KZ9999 wrote:
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…)
http://tartarus.org/~ds/oolite/patches, Buzzer OXP etc.
Solas
Dangerous
Dangerous
Posts: 70
Joined: Sun Jan 04, 2009 7:26 am

Post by Solas »

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.
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6569
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

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
Dangerous
Dangerous
Posts: 70
Joined: Sun Jan 04, 2009 7:26 am

Post by Solas »

"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 ?

regarding MinGW/MSYS + libportaudio .. all I can find espeak related are ..
'espeak uses the PortAudio sound library ( version 18 )' .. http://espeak.sourceforge.net/commands.html
threading .. http://sourceforge.net/forum/forum.php? ... _id=538922
the eSpeak forum seem helpful. I just don't know the right questions to ask.
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6569
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

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.
Post Reply