12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
|