ScummVM speaks

Hello readers, first I might have to apologize, because with how busy I was at the end of last week, I actually forgot, I should write a blog post. But at least now I have a lot more to show you.

The Mission Supernova project is near it’s end, I created a pull request with the work I have done on it and right now it waits to be reviewed by the ScummVM community. You can find the pull request here.

This allowed me to fully focus on my next project, which is the text to speech. First I implemented the TTS on Linux, which was pretty easy, because the speech-dispatcher API is quite simple to use (A lot simpler then SAPI from Microsoft). The code for that should be close to finished, I just need to add some checks in a few places. Then, so I can test the TTS, I implemented reading of text in the GUI (A blind user could use this to navigate through the menus and maybe play some game, which also uses the TTS to read text). I spent quite a while doing this, because I wasn’t sure where to put all the code the GUI needed for TTS, but I quite like the state it is at now. So after I finished the GUI modifications, I started to work on the Windows side of the TTS. This is quite challenging for me, because I am used to work on Linux with my pretty specific setup, so I quite often unsuccessfully tried to use my custom shortcuts I am used to on Linux, which was quite annoying. This was also my first Windows specific C++ code, so working with the COM, or seeing the Microsoft custom uuid operator was quite new for me. But even with all this, I have managed to implement a pretty good portion of the Windows TTS code, I don’t have all the features programmed yet, but some results can already be seen, or rather heard.

I guess this is enough of me writing, I promised to show you stuff, so here is how the ScummVM sounds like, when it speaks:

Linux:

This is using the speech-dispatcher with espeak-ng, other TTS engines should work as well (I have tried Festival and it worked). The voices are set by user in speech-dispatcher configuration, but programmer can make some adjustments to them.
Windows:
This is using the Microsoft SAPI, the voice selection depends on the selected language and the set of installed voices (user has to install them into windows first in order to appear in voice selection in ScummVM). As you can see, I for some reason have a Chinese voice installed, so I can show you that switching languages works. But I think the voice is supposed to be used for a different dialect or something like that, because it seems it doesn’t understand the text, because it only spells it instead of reading it as a whole