From f099b6eda8a48236fc801fb1e7a0714f7c665eaa Mon Sep 17 00:00:00 2001 From: schneefux Date: Wed, 10 Sep 2014 20:48:04 +0200 Subject: Added logic to select the TTS engine from a slug --- client/speaker.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'client') 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() -- cgit v1.3.1