diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-24 16:05:56 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-09-26 13:34:48 +0200 |
| commit | 8c71b2cc05500fc72a6bc8a925f4411f7c52c903 (patch) | |
| tree | 615756c45b5250bf1b0eea5beace743d139a39a9 | |
| parent | 4fc9567ff2c326c348e559c681679363b01daf59 (diff) | |
| download | jasper-client-8c71b2cc05500fc72a6bc8a925f4411f7c52c903.tar.gz jasper-client-8c71b2cc05500fc72a6bc8a925f4411f7c52c903.zip | |
Move tts_engine_slug to jasper.py, improve module functions of speaker.py
| -rw-r--r-- | client/speaker.py | 34 | ||||
| -rwxr-xr-x | jasper.py | 9 |
2 files changed, 20 insertions, 23 deletions
diff --git a/client/speaker.py b/client/speaker.py index 96fb3ed..cdebe2c 100644 --- a/client/speaker.py +++ b/client/speaker.py @@ -282,7 +282,10 @@ class googleSpeaker(AbstractMp3Speaker): self.play_mp3(tmpfile) os.remove(tmpfile) -def newSpeaker(): +def get_default_engine_slug(): + return 'osx-tts' if platform.system() == 'darwin' else 'espeak-tts' + +def get_engine_by_slug(slug=None): """ Returns: A speaker implementation available on the current platform @@ -290,33 +293,20 @@ def newSpeaker(): Raises: ValueError if no speaker implementation is supported on this platform """ - - tts_engine = None - - # Try to get tts_engine from config - if os.path.exists('profile.yml'): - with open('profile.yml', 'r') as f: - profile = yaml.safe_load(f) - if 'tts_engine' in profile: - tts_engine = profile['tts_engine'] - # Default values if config file does not exist or option not set - if not tts_engine: - if platform.system() == 'darwin': - tts_engine = 'osx-tts' - else: - tts_engine = 'espeak-tts' - - selected_engines = filter(lambda engine: hasattr(engine, "SLUG") and engine.SLUG == tts_engine, get_engines()) + if not slug or type(slug) is not str: + raise TypeError("Invalid slug '%s'", slug) + + selected_engines = filter(lambda engine: hasattr(engine, "SLUG") and engine.SLUG == slug, get_engines()) if len(selected_engines) == 0: - raise ValueError("No TTS engine found for slug '%s'" % tts_engine) + raise ValueError("No TTS engine found for slug '%s'" % slug) else: if len(selected_engines) > 1: - print("WARNING: Multiple TTS engines found for slug '%s'. This is most certainly a bug." % tts_engine) + print("WARNING: Multiple TTS engines found for slug '%s'. This is most certainly a bug." % slug) 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() + raise ValueError("TTS engine '%s' is not available (due to missing dependencies, missing dependencies, etc.)" % slug) + return engine def get_engines(): def get_subclasses(cls): @@ -53,12 +53,19 @@ class Jasper(object): stt_engine_type = "sphinx" logger.warning("stt_engine not specified in profile, defaulting to '%s'", stt_engine_type) + try: + tts_engine_slug = self.config['tts_engine'] + except KeyError: + tts_engine_slug = speak.get_default_engine_slug() + logger.warning("tts_engine not specified in profile, defaulting to '%s'", tts_engine_slug) + tts_engine = speak.get_engine_by_slug(tts_engine_slug) + # Compile dictionary sentences, dictionary, languagemodel = [os.path.abspath(os.path.join(jasperpath.LIB_PATH, filename)) for filename in ("sentences.txt", "dictionary.dic", "languagemodel.lm")] vocabcompiler.compile(sentences, dictionary, languagemodel) # Initialize Mic - self.mic = Mic(speak.newSpeaker(), stt.PocketSphinxSTT(), stt.newSTTEngine(stt_engine_type, api_key=api_key)) + self.mic = Mic(tts_engine(), stt.PocketSphinxSTT(), stt.newSTTEngine(stt_engine_type, api_key=api_key)) def run(self): if 'first_name' in self.config: |
