Change microphone.py, decodes data before callback

Microphone.py is now responsible for decoding audio data. The decoded data now passed to the callback function
This commit is contained in:
Scott Lawson 2017-01-30 07:19:50 -08:00 committed by GitHub
parent 35c26ca7bb
commit ee0eda9a4c

View File

@ -1,16 +1,29 @@
import time
import numpy as np
import pyaudio
import config
def start_stream(callback):
p = pyaudio.PyAudio()
frames_per_buffer = int(config.MIC_RATE / config.FPS)
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=config.MIC_RATE,
input=True,
frames_per_buffer=int(config.MIC_RATE / config.FPS))
frames_per_buffer=frames_per_buffer)
overflows = 0
prev_ovf_time = time.time()
while True:
callback(stream)
try:
y = np.fromstring(stream.read(frames_per_buffer), dtype=np.int16)
y = y.astype(np.float32)
callback(y)
except IOError:
overflows += 1
if time.time() > prev_ovf_time + 1:
prev_ovf_time = time.time()
print('Audio buffer has overflowed {} times'.format(overflows))
stream.stop_stream()
stream.close()
p.terminate()