diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-10 20:48:04 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-26 13:34:45 +0200 |
| commit | f099b6eda8a48236fc801fb1e7a0714f7c665eaa (patch) | |
| tree | f1ef2956939dbe6a698e64d4b8ee431b05c3c05e /client | |
| parent | f5126416f47956e792c8adff2d1631390d435e3b (diff) | |
| download | jasper-client-f099b6eda8a48236fc801fb1e7a0714f7c665eaa.tar.gz jasper-client-f099b6eda8a48236fc801fb1e7a0714f7c665eaa.zip | |
Added logic to select the TTS engine from a slug
Diffstat (limited to 'client')
| -rw-r--r-- | client/speaker.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/client/speaker.py b/client/speaker.py index 41b4f78..c69ff95 100644 --- a/client/speaker.py +++ b/client/speaker.py @@ -197,6 +197,8 @@ class googleSpeaker(AbstractMp3Speaker): self.play_mp3(tmpfile) os.remove(tmpfile) +TTS_ENGINES = [googleSpeaker, picoSpeaker, eSpeakSpeaker, saySpeaker] + def newSpeaker(): """ Returns: @@ -206,8 +208,15 @@ def newSpeaker(): ValueError if no speaker implementation is supported on this platform """ - for cls in [googleSpeaker, picoSpeaker, eSpeakSpeaker, saySpeaker]: - if cls.is_available(): - return cls() - raise ValueError("Platform is not supported") -
\ No newline at end of file + tts_engine = 'espeak-tts' + + selected_engines = filter(lambda engine: hasattr(engine, "SLUG") and engine.SLUG == tts_engine, TTS_ENGINES) + if len(selected_engines) == 0: + raise ValueError("No TTS engine found for slug '%s'" % tts_engine) + else: + if len(selected_engines) > 1: + print("WARNING: Multiple TTS engines found for slug '%s'. This is most certainly a bug." % tts_engine) + engine = selected_engines[0] + if not engine.is_available(): + raise ValueError("TTS engine '%s' is not available (due to missing dependencies, missing dependencies, etc.)" % tts_engine) + return engine() |
