from trigger.snowboy import snowboydecoder class MissingParameterException(Exception): pass class Snowboy(object): def __init__(self, **kwargs): # pause listening boolean self.interrupted = False # callback function to call when hotword caught self.callback = kwargs.get('callback', None) if self.callback is None: raise MissingParameterException("callback function is required with snowboy") # get the pmdl file to load self.pmdl = kwargs.get('pmdl_file', None) if self.pmdl is None: raise MissingParameterException("Pmdl file is required with snowboy") def interrupt_callback(self): """ This function will be passed to snowboy to stop the main thread :return: """ return self.interrupted def start(self): """ Start the snowboy thread and wait for a Kalliope trigger word :return: """ detector = snowboydecoder.HotwordDetector(self.pmdl, sensitivity=0.5) # start snowboy loop detector.start(detected_callback=self.callback, interrupt_check=self.interrupt_callback, sleep_time=0.03) # we wait that a callback detector.terminate() def pause(self): """ Stop the Snowboy main thread :return: """ self.interrupted = True def unpause(self): self.interrupted = False