Skip to content

Commit

Permalink
Merge branch 'devel' of https://github.com/Kitt-AI/snowboy into devel
Browse files Browse the repository at this point in the history
  • Loading branch information
chenguoguo committed Apr 6, 2018
2 parents 38509e9 + 196ce94 commit ebcba35
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
21 changes: 19 additions & 2 deletions examples/Python/snowboydecoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import wave
import os
import logging
from ctypes import *
from contextlib import contextmanager

logging.basicConfig()
logger = logging.getLogger("snowboy")
Expand All @@ -17,6 +19,19 @@
DETECT_DING = os.path.join(TOP_DIR, "resources/ding.wav")
DETECT_DONG = os.path.join(TOP_DIR, "resources/dong.wav")

ERROR_HANDLER_FUNC = CFUNCTYPE(None, c_char_p, c_int, c_char_p, c_int, c_char_p)

def py_error_handler(filename, line, function, err, fmt):
pass

c_error_handler = ERROR_HANDLER_FUNC(py_error_handler)

@contextmanager
def no_alsa_error():
asound = cdll.LoadLibrary('libasound.so')
asound.snd_lib_error_set_handler(c_error_handler)
yield
asound.snd_lib_error_set_handler(None)

class RingBuffer(object):
"""Ring buffer to hold audio from PortAudio"""
Expand All @@ -43,7 +58,8 @@ def play_audio_file(fname=DETECT_DING):
"""
ding_wav = wave.open(fname, 'rb')
ding_data = ding_wav.readframes(ding_wav.getnframes())
audio = pyaudio.PyAudio()
with no_alsa_error():
audio = pyaudio.PyAudio()
stream_out = audio.open(
format=audio.get_format_from_width(ding_wav.getsampwidth()),
channels=ding_wav.getnchannels(),
Expand Down Expand Up @@ -104,7 +120,8 @@ def audio_callback(in_data, frame_count, time_info, status):

self.ring_buffer = RingBuffer(
self.detector.NumChannels() * self.detector.SampleRate() * 5)
self.audio = pyaudio.PyAudio()
with no_alsa_error():
self.audio = pyaudio.PyAudio()
self.stream_in = self.audio.open(
input=True, output=False,
format=self.audio.get_format_from_width(
Expand Down
21 changes: 19 additions & 2 deletions examples/Python3/snowboydecoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import wave
import os
import logging
from ctypes import *
from contextlib import contextmanager

logging.basicConfig()
logger = logging.getLogger("snowboy")
Expand All @@ -17,6 +19,19 @@
DETECT_DING = os.path.join(TOP_DIR, "resources/ding.wav")
DETECT_DONG = os.path.join(TOP_DIR, "resources/dong.wav")

ERROR_HANDLER_FUNC = CFUNCTYPE(None, c_char_p, c_int, c_char_p, c_int, c_char_p)

def py_error_handler(filename, line, function, err, fmt):
pass

c_error_handler = ERROR_HANDLER_FUNC(py_error_handler)

@contextmanager
def no_alsa_error():
asound = cdll.LoadLibrary('libasound.so')
asound.snd_lib_error_set_handler(c_error_handler)
yield
asound.snd_lib_error_set_handler(None)

class RingBuffer(object):
"""Ring buffer to hold audio from PortAudio"""
Expand Down Expand Up @@ -44,7 +59,8 @@ def play_audio_file(fname=DETECT_DING):
"""
ding_wav = wave.open(fname, 'rb')
ding_data = ding_wav.readframes(ding_wav.getnframes())
audio = pyaudio.PyAudio()
with no_alsa_error():
audio = pyaudio.PyAudio()
stream_out = audio.open(
format=audio.get_format_from_width(ding_wav.getsampwidth()),
channels=ding_wav.getnchannels(),
Expand Down Expand Up @@ -141,7 +157,8 @@ def audio_callback(in_data, frame_count, time_info, status):
play_data = chr(0) * len(in_data)
return play_data, pyaudio.paContinue

self.audio = pyaudio.PyAudio()
with no_alsa_error():
self.audio = pyaudio.PyAudio()
self.stream_in = self.audio.open(
input=True, output=False,
format=self.audio.get_format_from_width(
Expand Down

0 comments on commit ebcba35

Please sign in to comment.