summaryrefslogtreecommitdiff
path: root/client/speaker.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-09-10 20:48:04 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2014-09-26 13:34:45 +0200
commitf099b6eda8a48236fc801fb1e7a0714f7c665eaa (patch)
treef1ef2956939dbe6a698e64d4b8ee431b05c3c05e /client/speaker.py
parentf5126416f47956e792c8adff2d1631390d435e3b (diff)
downloadjasper-client-f099b6eda8a48236fc801fb1e7a0714f7c665eaa.tar.gz
jasper-client-f099b6eda8a48236fc801fb1e7a0714f7c665eaa.zip
Added logic to select the TTS engine from a slug
Diffstat (limited to 'client/speaker.py')
-rw-r--r--client/speaker.py19
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()