AwesomeTTS is a monolithic piece of code which bundles everything together, GUI and service code. In my opinion, the services can be extracted out into a standalone python library. Here's how I would do it:
Services would need to declare in a more structured way which languages and voices they support. This would allow users of the library (including AwesomeTTS and Awesom-o) to display choices by language, particularly useful for new users who don't know what service to choose.
The library would have a strict goal of not having dependencies which wouldn't be available in the Anki environment.
We would rely heavily on automated testing. A matrix of service x language would be fully tested, using the technique I implemented in AwesomeTTS (generate the sound, then go back to text using speech recognition, to make sure the audio is correct). We would have a very good idea which services work with what languages.
This would beneficial for contributors who fix services. There wouldn't need to spin up the complex Anki testing environment (which requires linux and an X server, and a bunch of PyQt dependencies). We would make it easier for people to contribute and fix services.
This sounds really good. Having testing suite that don't require full-Anki and could be run simply from the shell (with python installed) would help with providing fixes.
AwesomeTTS is a monolithic piece of code which bundles everything together, GUI and service code. In my opinion, the services can be extracted out into a standalone python library. Here's how I would do it:
This would beneficial for contributors who fix services. There wouldn't need to spin up the complex Anki testing environment (which requires linux and an X server, and a bunch of PyQt dependencies). We would make it easier for people to contribute and fix services.