def __init__(self): super(PlatformPatchSkill, self).__init__(name="PlatformPatchSkill") self.platform_type = ConfigurationManager.instance().get( "enclosure").get("platform") self.platform_build = ConfigurationManager.instance().get( "enclosure").get("platform_build") self.timer = None
def get(phrase, lang=None, context=None): """ Looks up a resource file for the given phrase. If no file is found, the requested phrase is returned as the string. This will use the default language for translations. Args: phrase (str): resource phrase to retrieve/translate lang (str): the language to use context (dict): values to be inserted into the string Returns: str: a randomized and/or translated version of the phrase """ if not lang: from mycroft.configuration import ConfigurationManager lang = ConfigurationManager.instance().get("lang") filename = "text/" + lang.lower() + "/" + phrase + ".dialog" template = resolve_resource_file(filename) if not template: LOG.debug("Resource file not found: " + filename) return phrase stache = MustacheDialogRenderer() stache.load_template_file("template", template) if not context: context = {} return stache.render("template", context)
def __init__(self): self.ws = WebsocketClient() ConfigurationManager.init(self.ws) self.config = ConfigurationManager.instance().get("enclosure") self.__init_serial() self.reader = EnclosureReader(self.serial, self.ws) self.writer = EnclosureWriter(self.serial, self.ws) # Send a message to the Arduino across the serial line asking # for a reply with version info. self.writer.write("system.version") # When the Arduino responds, it will generate this message self.ws.on("enclosure.started", self.on_arduino_responded) self.arduino_responded = False # initiates the web sockets on display manager # NOTE: this is a temporary place to initiate display manager sockets initiate_display_manager_ws() # Start a 5 second timer. If the serial port hasn't received # any acknowledgement of the "system.version" within those # 5 seconds, assume there is nothing on the other end (e.g. # we aren't running a Mark 1 with an Arduino) Timer(5, self.check_for_response).start() # Notifications from mycroft-core self.ws.on("enclosure.notify.no_internet", self.on_no_internet)
def get(phrase, lang=None, context=None): """ Looks up a resource file for the given phrase. If no file is found, the requested phrase is returned as the string. This will use the default language for translations. Args: phrase (str): resource phrase to retrieve/translate lang (str): the language to use context (dict): values to be inserted into the string Returns: str: a randomized and/or translated version of the phrase """ if not lang: from mycroft.configuration import ConfigurationManager lang = ConfigurationManager.instance().get("lang") filename = "text/"+lang.lower()+"/"+phrase+".dialog" template = resolve_resource_file(filename) if not template: logger.debug("Resource file not found: " + filename) return phrase stache = MustacheDialogRenderer() stache.load_template_file("template", template) if not context: context = {} return stache.render("template", context)
def __init__(self, wake_word_recognizer, hot_word_engines=None): if hot_word_engines is None: hot_word_engines = {} self.config = ConfigurationManager.instance() listener_config = self.config.get('listener') self.upload_config = listener_config.get('wake_word_upload') self.wake_word_name = listener_config['wake_word'] # The maximum audio in seconds to keep for transcribing a phrase # The wake word must fit in this time num_phonemes = wake_word_recognizer.num_phonemes len_phoneme = listener_config.get('phoneme_duration', 120) / 1000.0 self.TEST_WW_SEC = int(num_phonemes * len_phoneme) self.SAVED_WW_SEC = (10 if self.upload_config['enable'] else self.TEST_WW_SEC) speech_recognition.Recognizer.__init__(self) self.wake_word_recognizer = wake_word_recognizer self.audio = pyaudio.PyAudio() self.multiplier = listener_config.get('multiplier') self.energy_ratio = listener_config.get('energy_ratio') # check the config for the flag to save wake words. self.save_utterances = listener_config.get('record_utterances', False) self.save_wake_words = listener_config.get('record_wake_words', False) \ or self.upload_config['enable'] or self.config['opt_in'] self.upload_lock = Lock() self.save_wake_words_dir = join(gettempdir(), 'mycroft_wake_words') self.filenames_to_upload = [] self.mic_level_file = os.path.join(get_ipc_directory(), "mic_level") self._stop_signaled = False self.hot_word_engines = hot_word_engines
def main(): global ws lock = Lock('skills') # prevent multiple instances of this service # Connect this Skill management process to the websocket ws = WebsocketClient() ConfigurationManager.init(ws) ignore_logs = ConfigurationManager.instance().get("ignore_logs") # Listen for messages and echo them for logging def _echo(message): try: _message = json.loads(message) if _message.get("type") in ignore_logs: return if _message.get("type") == "registration": # do not log tokens from registration messages _message["data"]["token"] = None message = json.dumps(_message) except: pass logger.debug(message) ws.on('message', _echo) # Startup will be called after websocket is full live ws.once('open', _starting_up) ws.run_forever()
def main(): global ws lock = Lock('skills') # prevent multiple instances of this service # Connect this Skill management process to the websocket ws = WebsocketClient() ConfigurationManager.init(ws) ignore_logs = ConfigurationManager.instance().get("ignore_logs") # Listen for messages and echo them for logging def _echo(message): try: _message = json.loads(message) if _message.get("type") in ignore_logs: return if _message.get("type") == "registration": # do not log tokens from registration messages _message["data"]["token"] = None message = json.dumps(_message) except: pass logger.debug(message) ws.on('message', _echo) # Kick off loading of skills ws.once('open', _load_skills) ws.run_forever()
def __init__(self, wake_word_recognizer): self.config = ConfigurationManager.instance() listener_config = self.config.get('listener') self.upload_config = listener_config.get('wake_word_upload') self.wake_word_name = listener_config['wake_word'] # The maximum audio in seconds to keep for transcribing a phrase # The wake word must fit in this time num_phonemes = wake_word_recognizer.num_phonemes len_phoneme = listener_config.get('phoneme_duration', 120) / 1000.0 self.TEST_WW_SEC = int(num_phonemes * len_phoneme) self.SAVED_WW_SEC = (10 if self.upload_config['enable'] else self.TEST_WW_SEC) speech_recognition.Recognizer.__init__(self) self.wake_word_recognizer = wake_word_recognizer self.audio = pyaudio.PyAudio() self.multiplier = listener_config.get('multiplier') self.energy_ratio = listener_config.get('energy_ratio') # check the config for the flag to save wake words. self.save_utterances = listener_config.get('record_utterances', False) self.save_wake_words = listener_config.get('record_wake_words') \ or self.upload_config['enable'] or self.config['opt_in'] self.upload_lock = Lock() self.save_wake_words_dir = join(gettempdir(), 'mycroft_wake_words') self.filenames_to_upload = [] self.mic_level_file = os.path.join(get_ipc_directory(), "mic_level") self._stop_signaled = False
def main(): global ws lock = Lock('skills') # prevent multiple instances of this service # Connect this Skill management process to the websocket ws = WebsocketClient() ConfigurationManager.init(ws) ignore_logs = ConfigurationManager.instance().get("ignore_logs") # Listen for messages and echo them for logging def _echo(message): try: _message = json.loads(message) if _message.get("type") in ignore_logs: return if _message.get("type") == "registration": # do not log tokens from registration messages _message["data"]["token"] = None message = json.dumps(_message) except: pass LOG('SKILLS').debug(message) ws.on('message', _echo) ws.on('skill.converse.request', handle_converse_request) # Startup will be called after websocket is full live ws.once('open', _starting_up) ws.run_forever()
def __init__(self): self.ws = WebsocketClient() self.ws.on("open", self.on_ws_open) ConfigurationManager.init(self.ws) self.config = ConfigurationManager.instance().get("enclosure") self.__init_serial() self.reader = EnclosureReader(self.serial, self.ws) self.writer = EnclosureWriter(self.serial, self.ws) # initiates the web sockets on display manager # NOTE: this is a temporary place to initiate display manager sockets initiate_display_manager_ws()
def __init__(self): self.ws = WebsocketClient() self.ws.on("open", self.on_ws_open) ConfigurationManager.init(self.ws) self.config = ConfigurationManager.instance().get("enclosure") self.__init_serial() self.reader = EnclosureReader(self.serial, self.ws) self.writer = EnclosureWriter(self.serial, self.ws) # initiates the web sockets on display manager # NOTE: this is a temporary place to initiate display manager sockets initiate_display_manager_ws()
def __init__(self): self.ws = WebsocketClient() ConfigurationManager.init(self.ws) self.config = ConfigurationManager.instance().get("enclosure") self.__init_serial() self.reader = EnclosureReader(self.serial, self.ws) self.writer = EnclosureWriter(self.serial, self.ws) # Send a message to the Arduino across the serial line asking # for a reply with version info. self.writer.write("system.version") # When the Arduino responds, it will generate this message self.ws.on("enclosure.started", self.on_arduino_responded) self.arduino_responded = False # Start a 5 second timer. If the serial port hasn't received # any acknowledgement of the "system.version" within those # 5 seconds, assume there is nothing on the other end (e.g. # we aren't running a Mark 1 with an Arduino) Timer(5, self.check_for_response).start() # Notifications from mycroft-core self.ws.on("enclosure.notify.no_internet", self.on_no_internet)
from speech_recognition import ( Microphone, AudioSource, AudioData ) from mycroft.configuration import ConfigurationManager from mycroft.util import ( check_for_signal, get_ipc_directory, resolve_resource_file, play_wav ) from mycroft.util.log import getLogger config = ConfigurationManager.instance() listener_config = config.get('listener') logger = getLogger(__name__) __author__ = 'seanfitz' class MutableStream(object): def __init__(self, wrapped_stream, format, muted=False): assert wrapped_stream is not None self.wrapped_stream = wrapped_stream self.muted = muted self.SAMPLE_WIDTH = pyaudio.get_sample_size(format) self.muted_buffer = b''.join([b'\x00' * self.SAMPLE_WIDTH]) def mute(self):
from mycroft.util.log import getLogger from mycroft.api import is_paired import mycroft.dialog logger = getLogger("Skills") __author__ = 'seanfitz' ws = None loaded_skills = {} last_modified_skill = 0 skills_directories = [] skill_reload_thread = None skills_manager_timer = None installer_config = ConfigurationManager.instance().get("SkillInstallerSkill") MSM_BIN = installer_config.get("path", join(MYCROFT_ROOT_PATH, 'msm', 'msm')) def connect(): global ws ws.run_forever() def install_default_skills(speak=True): """ Install default skill set using msm. Args: speak (optional): Enable response for success. Default True """
from mycroft.util import connected from mycroft.util.log import getLogger import mycroft.dialog logger = getLogger("Skills") __author__ = 'seanfitz' ws = None loaded_skills = {} last_modified_skill = 0 skills_directories = [] skill_reload_thread = None skills_manager_timer = None installer_config = ConfigurationManager.instance().get("SkillInstallerSkill") MSM_BIN = installer_config.get("path", join(MYCROFT_ROOT_PATH, 'msm', 'msm')) def connect(): global ws ws.run_forever() def install_default_skills(speak=True): if exists(MSM_BIN): p = subprocess.Popen(MSM_BIN + " default", stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True) t = p.communicate()[0] if t.splitlines()[-1] == "Installed!" and speak: ws.emit(Message("speak", {
from speech_recognition import ( Microphone, AudioSource, AudioData ) from mycroft.configuration import ConfigurationManager from mycroft.util import ( check_for_signal, get_ipc_directory, resolve_resource_file, play_wav ) from mycroft.util.log import getLogger config = ConfigurationManager.instance() listener_config = config.get('listener') logger = getLogger(__name__) __author__ = 'seanfitz' class MutableStream(object): def __init__(self, wrapped_stream, format, muted=False): assert wrapped_stream is not None self.wrapped_stream = wrapped_stream self.muted = muted self.SAMPLE_WIDTH = pyaudio.get_sample_size(format) self.muted_buffer = b''.join([b'\x00' * self.SAMPLE_WIDTH]) def mute(self):
from mycroft.configuration import ConfigurationManager from mycroft.messagebus.client.ws import WebsocketClient from mycroft.messagebus.message import Message from mycroft.skills.core import load_skill, create_skill_descriptor, \ MainModule, FallbackSkill from mycroft.skills.event_scheduler import EventScheduler from mycroft.skills.intent_service import IntentService from mycroft.skills.padatious_service import PadatiousService from mycroft.util import connected from mycroft.util.log import LOG ws = None event_scheduler = None skill_manager = None skills_config = ConfigurationManager.instance().get("skills") BLACKLISTED_SKILLS = skills_config.get("blacklisted_skills", []) PRIORITY_SKILLS = skills_config.get("priority_skills", []) SKILLS_DIR = '/opt/mycroft/skills' MSM_BIN = ConfigurationManager.instance().get("SkillInstallerSkill").get( "path", join(MYCROFT_ROOT_PATH, 'msm', 'msm')) MINUTES = 60 # number of seconds in a minute (syntatic sugar) def connect(): global ws ws.run_forever() def _starting_up(): """
from os.path import join, dirname, splitext, isdir from functools import wraps from adapt.intent import Intent from mycroft.client.enclosure.api import EnclosureAPI from mycroft.configuration import ConfigurationManager from mycroft.dialog import DialogLoader from mycroft.filesystem import FileSystemAccess from mycroft.messagebus.message import Message from mycroft.util.log import getLogger from mycroft.skills.settings import SkillSettings __author__ = 'seanfitz' skills_config = ConfigurationManager.instance().get("skills") BLACKLISTED_SKILLS = skills_config.get("blacklisted_skills", []) SKILLS_DIR = "/opt/mycroft/skills" MainModule = '__init__' logger = getLogger(__name__) def load_vocab_from_file(path, vocab_type, emitter): if path.endswith('.voc'): with open(path, 'r') as voc_file: for line in voc_file.readlines(): parts = line.strip().split("|") entity = parts[0]
from mycroft.messagebus.client.ws import WebsocketClient from mycroft.messagebus.message import Message from mycroft.skills.core import load_skill, create_skill_descriptor, \ MainModule, FallbackSkill from mycroft.skills.event_scheduler import EventScheduler from mycroft.skills.intent_service import IntentService from mycroft.skills.padatious_service import PadatiousService from mycroft.util import connected from mycroft.util.log import LOG ws = None event_scheduler = None skill_manager = None skills_config = ConfigurationManager.instance().get("skills") BLACKLISTED_SKILLS = skills_config.get("blacklisted_skills", []) PRIORITY_SKILLS = skills_config.get("priority_skills", []) SKILLS_DIR = '/opt/mycroft/skills' MSM_BIN = ConfigurationManager.instance().get("SkillInstallerSkill").get( "path", join(MYCROFT_ROOT_PATH, 'msm', 'msm')) MINUTES = 60 # number of seconds in a minute (syntatic sugar) def connect(): global ws ws.run_forever() def _starting_up(): """