Skip to content

Instantly share code, notes, and snippets.

@yodakohl
Created July 14, 2017 17:35
Show Gist options
  • Save yodakohl/8d4cb942289f750eece0123c66f287ef to your computer and use it in GitHub Desktop.
Save yodakohl/8d4cb942289f750eece0123c66f287ef to your computer and use it in GitHub Desktop.
Snowboy trigger
# 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