diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-19 16:24:00 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-26 13:34:47 +0200 |
| commit | aee49f0a5d37e296699c9b8a3aef0cde0c31aa40 (patch) | |
| tree | 5bbed08f242d907c7a26e0693c4be3a555ee50ba /client/speaker.py | |
| parent | 3970fabe28e60d5e944de9cdeffe5ff6ab0e55ea (diff) | |
| download | jasper-client-aee49f0a5d37e296699c9b8a3aef0cde0c31aa40.tar.gz jasper-client-aee49f0a5d37e296699c9b8a3aef0cde0c31aa40.zip | |
Add better TTS engine detection/testing code
Diffstat (limited to 'client/speaker.py')
| -rw-r--r-- | client/speaker.py | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/client/speaker.py b/client/speaker.py index d89313f..bcf3702 100644 --- a/client/speaker.py +++ b/client/speaker.py @@ -221,14 +221,32 @@ def newSpeaker(): raise ValueError("TTS engine '%s' is not available (due to missing dependencies, missing dependencies, etc.)" % tts_engine) return engine() +def get_engines(): + def get_subclasses(cls): + subclasses = set() + for subclass in cls.__subclasses__(): + subclasses.add(subclass) + subclasses.update(get_subclasses(subclass)) + return subclasses + return [tts_engine for tts_engine in list(get_subclasses(AbstractSpeaker)) if hasattr(tts_engine, 'SLUG') and tts_engine.SLUG] + if __name__ == '__main__': - engines = [] - for engine in AbstractSpeaker.__subclasses__(): - if hasattr(engine, 'SLUG'): - instance = engine() - if instance.is_available(): - engines.append(instance) + engines = get_engines() + available_engines = [] + for engine in get_engines(): + if engine.is_available(): + available_engines.append(engine) + print("Available TTS engines:") + for i, engine in enumerate(available_engines, start=1): + print("%d. %s" % (i, engine.SLUG)) + + print("") + print("Disabled TTS engines:") + for i, engine in enumerate(list(set(engines).difference(set(available_engines))), start=1): + print("%d. %s" % (i, engine.SLUG)) - for engine in engines: - print engine.SLUG - engine.say("This is a test.") + print("") + for i, engine in enumerate(available_engines, start=1): + print("%d. Testing engine '%s'..." % (i, engine.SLUG)) + engine().say("This is a test.") + print("Done.") |
