@mattpocockuk
I was using making a Text-to-speech integration in some service that does not use a specific cloud provider, so I made an abstract class that implements most of the functionality, and the service-specific API calls are left as abstract methods.