def __init__(self): self._logger = logging.getLogger(__name__) # Create config dir if it does not exist yet #ender: should create config file for the first run if not os.path.exists(dingdangpath.CONFIG_PATH): try: os.makedirs(dingdangpath.CONFIG_PATH) except OSError: self._logger.error("Could not create config dir: '%s'", dingdangpath.CONFIG_PATH, exc_info=True) raise # Check if config dir is writable if not os.access(dingdangpath.CONFIG_PATH, os.W_OK): self._logger.critical( "Config dir %s is not writable. Dingdang " + "won't work correctly.", dingdangpath.CONFIG_PATH) config_file = dingdangpath.config('profile.yml') #ender: Read config, get config informations self._logger.debug("Trying to read config file: '%s'", config_file) try: with open(config_file, "r") as f: self.config = yaml.safe_load(f) except OSError: self._logger.error("Can't open config file: '%s'", config_file) raise #ender: prepare STT. if not setup, use default sphinx try: stt_engine_slug = self.config['stt_engine'] except KeyError: stt_engine_slug = 'sphinx' logger.warning( "stt_engine not specified in profile, defaulting " + "to '%s'", stt_engine_slug) #ender: create STT instance stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) try: slug = self.config['stt_passive_engine'] stt_passive_engine_class = stt.get_engine_by_slug(slug) except KeyError: stt_passive_engine_class = stt_engine_class try: tts_engine_slug = self.config['tts_engine'] except KeyError: tts_engine_slug = tts.get_default_engine_slug() logger.warning( "tts_engine not specified in profile, defaulting " + "to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Initialize Mic self.mic = Mic(self.config, tts_engine_class.get_instance(), stt_passive_engine_class.get_passive_instance(), stt_engine_class.get_active_instance())
def __init__(self): self._logger = logging.getLogger(__name__) self.config = config.profile try: stt_engine_slug = self.config['stt_engine'] except KeyError: stt_engine_slug = 'snowboy-stt' logger.warning( "stt_engine not specified in profile, defaulting " + "to '%s'", stt_engine_slug) stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) try: slug = self.config['stt_passive_engine'] stt_passive_engine_class = stt.get_engine_by_slug(slug) except KeyError: stt_passive_engine_class = stt_engine_class try: tts_engine_slug = self.config['tts_engine'] except KeyError: tts_engine_slug = tts.get_default_engine_slug() logger.warning( "tts_engine not specified in profile, defaulting " + "to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Initialize Mic self.mic = Mic(self.config, tts_engine_class.get_instance(), stt_passive_engine_class.get_passive_instance(), stt_engine_class.get_active_instance())
def __init__(self): self._logger = logging.getLogger(__name__) # Create config dir if it does not exist yet if not os.path.exists(jasperpath.CONFIG_PATH): try: os.makedirs(jasperpath.CONFIG_PATH) except OSError: self._logger.error("Could not create config dir: '%s'", jasperpath.CONFIG_PATH, exc_info=True) raise # Check if config dir is writable if not os.access(jasperpath.CONFIG_PATH, os.W_OK): self._logger.critical( "Config dir %s is not writable. Pocket companion " + "won't work correctly.", jasperpath.CONFIG_PATH) new_configfile = jasperpath.config('profile.yml') # Read config self._logger.debug("Trying to read config file: '%s'", new_configfile) try: with open(new_configfile, "r") as f: self.config = yaml.safe_load(f) except OSError: self._logger.error("Can't open config file: '%s'", new_configfile) raise try: stt_engine_slug = self.config['stt_engine'] except KeyError: stt_engine_slug = 'sphinx' logger.warning( "stt_engine not specified in profile, defaulting " + "to '%s'", stt_engine_slug) stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) try: slug = self.config['stt_passive_engine'] stt_passive_engine_class = stt.get_engine_by_slug(slug) except KeyError: stt_passive_engine_class = stt_engine_class try: tts_engine_slug = self.config['tts_engine'] except KeyError: tts_engine_slug = tts.get_default_engine_slug() logger.warning( "tts_engine not specified in profile, defaulting " + "to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Initialize Mic self.mic = Mic(tts_engine_class.get_instance(), None, stt_engine_class.get_active_instance())
def __init__(self): self._logger = logging.getLogger(__name__) os.environ[ 'GOOGLE_APPLICATION_CREDENTIALS'] = 'PATH_TO_SERVICEAUTH_FILE' #Load Config file when applicable self.config = None #Initialize Mic self.mic = Mic()
def __init__(self): self._logger = logging.getLogger(__name__) config.init() stt_engine_slug = config.get('stt_engine', 'sphinx') stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) slug = config.get('stt_passive_engine', stt_engine_slug) stt_passive_engine_class = stt.get_engine_by_slug(slug) tts_engine_slug = config.get('tts_engine', tts.get_default_engine_slug()) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Initialize Mic self.mic = Mic(tts_engine_class.get_instance(), stt_passive_engine_class.get_passive_instance(), stt_engine_class.get_active_instance())
def __init__(self): self._logger = logging.getLogger(__name__) stt_engine_slug = client.jasperprofile.profile.get( 'stt_engine', 'sphinx') stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) stt_passive_engine_slug = client.jasperprofile.profile.get( 'stt_passive_engine', stt_engine_slug) stt_passive_engine_class = stt.get_engine_by_slug( stt_passive_engine_slug) tts_engine_slug = client.jasperprofile.profile.get( 'tts_engine', tts.get_default_engine_slug()) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) active_stt_engine_instance = stt_engine_class.get_active_instance() if active_stt_engine_instance.has_mic() == True: passive_stt_engine_instance = active_stt_engine_instance else: passive_stt_engine_instance = stt_passive_engine_class.get_passive_instance( ) # Initialize Mic self.mic = Mic(tts_engine_class.get_instance(), passive_stt_engine_instance, active_stt_engine_instance) #stt_passive_engine_class.get_passive_instance(), #stt_engine_class.get_active_instance()) if tts_engine_slug == 'festival-tts': tts_engine_default_voice = client.jasperprofile.profile.get( 'tts_default_voice', '') if tts_engine_default_voice: self.mic.set_tts_default_voice(tts_engine_default_voice) else: self._logger.warning( "Profile does not contain a default voice for Festival." + " Will use the Festival installation default")
def __init__(self): # Read config config_file = os.path.abspath(os.path.join(client_path, 'profile.yml')) logger.debug("Trying to read config file: '%s'", config_file) with open(config_file, "r") as f: self.config = yaml.safe_load(f) try: api_key = self.config['keys']['GOOGLE_SPEECH'] except KeyError: api_key = None try: stt_engine_type = self.config['stt_engine'] except KeyError: stt_engine_type = "sphinx" logger.warning("stt_engine not specified in profile, defaulting to '%s'", stt_engine_type) # Compile dictionary sentences, dictionary, languagemodel = [os.path.abspath(os.path.join(client_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))
def __init__(self): self._logger = logging.getLogger(__name__) # Create config dir if it does not exist yet if not os.path.exists(jasperpath.CONFIG_PATH): try: os.makedirs(jasperpath.CONFIG_PATH) except OSError: self._logger.error("Could not create config dir: '%s'", jasperpath.CONFIG_PATH, exc_info=True) raise # Check if config dir is writable if not os.access(jasperpath.CONFIG_PATH, os.W_OK): self._logger.critical("Config dir %s is not writable. Jasper " + "won't work correctly.", jasperpath.CONFIG_PATH) # FIXME: For backwards compatibility, move old config file to newly # created config dir old_configfile = os.path.join(jasperpath.LIB_PATH, 'profile.yml') new_configfile = jasperpath.config('profile.yml') if os.path.exists(old_configfile): if os.path.exists(new_configfile): self._logger.warning("Deprecated profile file found: '%s'. " + "Please remove it.", old_configfile) else: self._logger.warning("Deprecated profile file found: '%s'. " + "Trying to copy it to new location '%s'.", old_configfile, new_configfile) try: shutil.copy2(old_configfile, new_configfile) except shutil.Error: self._logger.error("Unable to copy config file. " + "Please copy it manually.", exc_info=True) raise # Read config self._logger.debug("Trying to read config file: '%s'", new_configfile) try: with open(new_configfile, "r") as f: self.config = yaml.safe_load(f) except OSError: self._logger.error("Can't open config file: '%s'", new_configfile) raise try: stt_engine_slug = self.config['stt_engine'] except KeyError: stt_engine_slug = 'sphinx' logger.warning("stt_engine not specified in profile, defaulting " + "to '%s'", stt_engine_slug) stt_engine_class = stt.get_engine_by_slug(stt_engine_slug) try: slug = self.config['stt_passive_engine'] stt_passive_engine_class = stt.get_engine_by_slug(slug) except KeyError: stt_passive_engine_class = stt_engine_class try: tts_engine_slug = self.config['tts_engine'] except KeyError: tts_engine_slug = tts.get_default_engine_slug() logger.warning("tts_engine not specified in profile, defaulting " + "to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Initialize Mic self.mic = Mic(tts_engine_class.get_instance(), stt_passive_engine_class.get_passive_instance(), stt_engine_class.get_active_instance())
def __init__(self): self._logger = logging.getLogger(__name__) # Create config dir if it does not exist yet if not os.path.exists(jasperpath.CONFIG_PATH): try: os.makedirs(jasperpath.CONFIG_PATH) except OSError: self._logger.error("Could not create config dir: '%s'", jasperpath.CONFIG_PATH, exc_info=True) raise # Check if config dir is writable if not os.access(jasperpath.CONFIG_PATH, os.W_OK): self._logger.critical("Config dir %s is not writable. Jasper won't work correctly.") # FIXME: For backwards compatibility, move old config file to newly created config dir old_configfile = os.path.join(jasperpath.LIB_PATH, 'profile.yml') new_configfile = jasperpath.config('profile.yml') if os.path.exists(old_configfile): if os.path.exists(new_configfile): self._logger.warning("Deprecated profile file found: '%s'. Please remove it.", old_configfile) else: self._logger.warning("Deprecated profile file found: '%s'. Trying to copy it to new location '%s'.", old_configfile, new_configfile) try: shutil.copy2(old_configfile, new_configfile) except shutil.Error: self._logger.error("Unable to copy config file. Please copy it manually.", exc_info=True) raise # Read config self._logger.debug("Trying to read config file: '%s'", new_configfile) try: with open(new_configfile, "r") as f: self.config = yaml.safe_load(f) except OSError: self._logger.error("Can't open config file: '%s'", new_configfile) raise try: api_key = self.config['keys']['GOOGLE_SPEECH'] except KeyError: api_key = None try: stt_engine_type = self.config['stt_engine'] except KeyError: stt_engine_type = "sphinx" self._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 = tts.get_default_engine_slug() logger.warning("tts_engine not specified in profile, defaulting to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) # Compile dictionary sentences, dictionary, languagemodel = [jasperpath.config(filename) for filename in ("sentences.txt", "dictionary.dic", "languagemodel.lm")] vocabcompiler.compile(sentences, dictionary, languagemodel) # Initialize Mic self.mic = Mic(tts_engine_class(), stt.PocketSphinxSTT(), stt.newSTTEngine(stt_engine_type, api_key=api_key))
#!/usr/bin/env python2
print " Copyright 2013 Shubhro Saha & Charlie Marsh " print "===========================================================" speaker.say("Hello.... I am Jasper... Please wait one moment.") testConnection() configure() profile = yaml.safe_load(open("profile.yml", "r")) try: api_key = profile['keys']['GOOGLE_SPEECH'] except KeyError: api_key = None try: stt_engine_type = profile['stt_engine'] except KeyError: print "stt_engine not specified in profile, defaulting to PocketSphinx" stt_engine_type = "sphinx" mic = Mic(speaker, stt.PocketSphinxSTT(), stt.newSTTEngine(stt_engine_type, api_key=api_key)) addendum = "" if 'first_name' in profile: addendum = ", %s" % profile["first_name"] mic.say("How can I be of service%s?" % addendum) conversation = Conversation("JASPER", mic, profile) conversation.handleForever()
def getNewProfile(mic, profile): #This line bug ! mic.say('Who are you?') input = raw_input("Your name : ") if input == '': profile_file = 'profile.yml' else: profile_file = 'profile-' + input + '.yml' mic.say('Hello ' + input + " . You're the new user now") #TODO replace by directly reading the config file and changing the var profile #argument = list() #argument.append(sys.argv[0]) #for arg in sys.argv[1:]: # argument.append(arg) logger = logging.getLogger(__name__) # FIXME: For backwards compatibility, move old config file to newly # created config dir old_configfile = os.path.join(jasperpath.LIB_PATH, profile_file) new_configfile = jasperpath.config(profile_file) if os.path.exists(old_configfile): if os.path.exists(new_configfile): logger.warning( "Deprecated profile file found: '%s'. " + "Please remove it.", old_configfile) else: logger.warning( "Deprecated profile file found: '%s'. " + "Trying to copy it to new location '%s'.", old_configfile, new_configfile) try: shutil.copy2(old_configfile, new_configfile) except shutil.Error: logger.error("Unable to copy config file. " + "Please copy it manually.", exc_info=True) raise # Read config logger.debug("Trying to read config file: '%s'", new_configfile) try: with open(new_configfile, "r") as f: #Where the magic is. Clear the dict and then update it profile.clear() profile.update(yaml.safe_load(f)) except OSError: logger.error("Can't open config file: '%s'", new_configfile) raise try: api_key = profile['keys']['GOOGLE_SPEECH'] except KeyError: api_key = None try: stt_engine_type = profile['stt_engine'] except KeyError: stt_engine_type = "sphinx" logger.warning( "stt_engine not specified in profile, " + "defaulting to '%s'", stt_engine_type) try: tts_engine_slug = profile['tts_engine'] except KeyError: tts_engine_slug = tts.get_default_engine_slug() logger.warning( "tts_engine not specified in profile, defaulting " + "to '%s'", tts_engine_slug) tts_engine_class = tts.get_engine_by_slug(tts_engine_slug) #TODO To test ! flag = 0 for arg in sys.argv[1:]: if (arg == '--local'): from client.local_mic import Mic flag = 1 if flag == 0: from client.mic import Mic # Initialize Mic mic = Mic(tts_engine_class(), stt.PocketSphinxSTT(**stt.PocketSphinxSTT.get_config()), stt.newSTTEngine(stt_engine_type, api_key=api_key))