Categories
Uncategorized

GSoC Final Work Product

Project Goals

The main goal of this project was to add text-to-speech, or TTS, to a variety of ScummVM engines. TTS enhances the accessibility of games supported by these engines and helps language learners. Furthermore, adding TTS to more engines standardizes the implementation of this feature, meaning the inclusion of TTS will be more consistent across engines. Adding TTS to an engine entails adding responsive voicing of text elements such as dialogue, menus, user input, objects, and credits, as well as adapting TTS to user actions and the functionalities of the games themselves.

What was Done

The original goal of the project was to add TTS to 12 engines, but I had enough time to add TTS to an additional 3 engines. Therefore, I added full TTS support to a total of 15 engines over the summer. In addition, I added TTS to 2 engines prior to the official start of GSoC, and I helped fix a few bugs for one engine.

Current State

All of my pull requests have been merged, meaning 17 engines now have full TTS implementations. Games that use these engines should have comprehensive and usable TTS.

What’s Left

All of my project’s goals, as well as a few stretch goals, have been completed. Nonetheless, some engines that support a wide variety of games, such as SCUMM, may need additional testing by end users. Any required changes found from this testing should only be tweaks to behavior: the core of the TTS implementations themselves should be complete. In addition, there are still a few engines left that need TTS support.

Code

Most PRs are for adding TTS to certain engines, but some are fixes for previously merged code. The following is a list of each PR I opened:

  1. TTS for Drascula: https://github.com/scummvm/scummvm/pull/6526
  2. TTS for TeenAgent: https://github.com/scummvm/scummvm/pull/6566
  3. TTS for WAGE: https://github.com/scummvm/scummvm/pull/6669
  4. Fix for Russian TTS for TeenAgent: https://github.com/scummvm/scummvm/pull/6722
  5. TTS for Cine: https://github.com/scummvm/scummvm/pull/6700
  6. TTS for CruisE: https://github.com/scummvm/scummvm/pull/6710
  7. TTS for Draci: https://github.com/scummvm/scummvm/pull/6742
  8. Fixes for TTS for CruisE: https://github.com/scummvm/scummvm/pull/6752
  9. TTS for MADE: https://github.com/scummvm/scummvm/pull/6779
  10. TTS for ADL: https://github.com/scummvm/scummvm/pull/6785
  11. TTS for Parallaction: https://github.com/scummvm/scummvm/pull/6795
  12. TTS for Prince: https://github.com/scummvm/scummvm/pull/6807
  13. TTS for EFH: https://github.com/scummvm/scummvm/pull/6820
  14. Bug fixes for EFH: https://github.com/scummvm/scummvm/pull/6821
  15. TTS for MM: https://github.com/scummvm/scummvm/pull/6835
  16. Czech and Polish TTS for TeenAgent: https://github.com/scummvm/scummvm/pull/6867
  17. TTS for SCUMM: https://github.com/scummvm/scummvm/pull/6856
  18. TTS for AGI: https://github.com/scummvm/scummvm/pull/6862
  19. TTS for Gob: https://github.com/scummvm/scummvm/pull/6880
  20. TTS for Got: https://github.com/scummvm/scummvm/pull/6888
  21. Fix for TTS for Got: https://github.com/scummvm/scummvm/pull/6900
  22. TTS for Hugo: https://github.com/scummvm/scummvm/pull/6897
Challenges and What was Learned

Ensuring TTS compatibility across numerous games, languages, and versions that a single engine may support was sometimes challenging to comprehensively address. Furthermore, some engines handle their text almost entirely with game scripts, which makes it more difficult to narrow down where text is being displayed and how to feed it to TTS. To address these problems, I had to test thoroughly, think about limitations and features that differ between games or platforms, and employ strategies such as recreating click boxes to properly voice text as the user interacts with the game. Thus, most challenges with adding TTS revolved around compatibility and logical voicing of text elements.

I learned a great amount this summer about working with a team, understanding and modifying code written by other developers, and writing code that fits into an existing codebase. I am now more comfortable with navigating and working on larger projects.

Conclusion

I enjoyed working on my Google Summer of Code project, and I found it to be a very entertaining and rewarding experience. I am happy that I was able to contribute something to ScummVM, and I hope that it will be helpful to users.

I would like to thank my mentor, criezy, for kindly guiding me throughout the summer, and sev, for guiding me as well. I would also like to thank all members of the ScummVM team that I interacted with for their patience and assistance, and the entire ScummVM team for their work on this application.

Leave a Reply

Your email address will not be published. Required fields are marked *