Simplified version of real-time audio scoring for goal detection
import pyaudio | |
import librosa | |
import numpy as np | |
import requests | |
# ring buffer will keep the last 2 seconds worth of audio | |
ringBuffer = RingBuffer(2 * 22050) | |
def callback(in_data, frame_count, time_info, flag): | |
audio_data = np.fromstring(in_data, dtype=np.float32) | |
# we trained on audio with a sample rate of 22050 so we need to convert it | |
audio_data = librosa.resample(audio_data, 44100, 22050) | |
ringBuffer.extend(audio_data) | |
# machine learning model takes wavform as input and | |
# decides if the last 2 seconds of audio contains a goal | |
if model.is_goal(ringBuffer.get()): | |
# GOAL!! Trigger light show | |
requests.get("http://127.0.0.1:8082/goal") | |
return (in_data, pyaudio.paContinue) | |
# function that finds the index of the Soundflower | |
# input device and HDMI output device | |
dev_indexes = findAudioDevices() | |
stream = pa.open(format = pyaudio.paFloat32, | |
channels = 1, | |
rate = 44100, | |
output = True, | |
input = True, | |
input_device_index = dev_indexes['input'], | |
output_device_index = dev_indexes['output'], | |
stream_callback = callback) | |
# start the stream | |
stream.start_stream() | |
while stream.is_active(): | |
sleep(0.25) | |
stream.close() | |
pa.terminate() |
This comment has been minimized.
This comment has been minimized.
Given the name of the class and its methods, I would say it comes from here, without credit. |
This comment has been minimized.
This comment has been minimized.
It appears that link is now dead, any idea where the RingBuffer specifically is from @mailletf ? |
This comment has been minimized.
This comment has been minimized.
You saved me a couple of hours. Thanks. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Hi Dude,
I was just looking to play around with your code a bit but there is no definition for RingBuffer and findAudioDevices, where can I find the implementations?