Created
July 14, 2017 17:35
-
-
Save yodakohl/8d4cb942289f750eece0123c66f287ef to your computer and use it in GitHub Desktop.
Snowboy trigger
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# limitations under the License. | |
"""Detect keywords in the audio stream.""" | |
import logging | |
import numpy as np | |
import triggers.snowboydetect | |
import os | |
from triggers.trigger import Trigger | |
logger = logging.getLogger('trigger') | |
class SnowboyTrigger(Trigger): | |
"""Detect claps in the audio stream.""" | |
def __init__(self, recorder): | |
super().__init__() | |
self.have_clap = True # don't start yet | |
decoder_model="/usr/share/snowboy.umdl" | |
resource = "/usr/share/common.res" | |
sensitivity=0.5 | |
decoder_model = [decoder_model] | |
sensitivity = [sensitivity] | |
model_str = ",".join(decoder_model) | |
self.detector = triggers.snowboydetect.SnowboyDetect(resource.encode(), model_str.encode()) | |
self.detector.SetAudioGain(1) | |
sensitivity_str = ",".join([str(t) for t in sensitivity]) | |
#self.detector.SetSensitivity(sensitivity_str) | |
recorder.add_processor(self) | |
def start(self): | |
self.have_clap = False | |
def add_data(self, data): | |
""" audio is mono 16bit signed at 16kHz """ | |
audio = np.fromstring(data, 'int16') | |
if not self.have_clap: | |
ans = self.detector.RunDetection(data) | |
if ans == -1: | |
logger.warning("Error initializing streams or reading audio data") | |
elif ans > 0: | |
logger.info("Keyword detected") | |
os.system("aplay /usr/share/ding.wav") | |
self.callback() | |
self.have_clap = True | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment