1
0
mirror of https://git.exozy.me/a/Never-Gonna-Give-Beep-Up synced 2024-11-22 14:17:29 +00:00

Add mic to beeper script

This commit is contained in:
Anthony Wang 2022-10-03 13:56:46 -04:00
parent b18d63a602
commit 62ceacf109
No known key found for this signature in database
GPG Key ID: 42A5B952E6DD8D38

40
mic.py Normal file
View File

@ -0,0 +1,40 @@
import numpy as np
import pyaudio
from requests import get
audio = pyaudio.PyAudio()
stream = audio.open(
format = pyaudio.paInt16,
channels = 1,
rate=44100,
input=True
)
# https://stackoverflow.com/questions/45908268/how-to-know-the-frequency-of-audio-from-microphone
# https://stackoverflow.com/questions/3694918/how-to-extract-frequency-associated-with-fft-values-in-pytho
curfreq = 0
stop = False
while True:
chunk = stream.read(2048)
w = np.fft.fft(list(chunk))[10:100]
f = np.fft.fftfreq(4196)
i = 10+np.argmax(np.abs(w))
mag = abs(w[i-10])
freq = abs(2 * f[i] * 44100)
if mag > 50000 and curfreq == 0:
# Detected mic input
# Start new freq
stop = False
curfreq = freq
print('Starting', curfreq)
get('http://10.242.6.228:5000/startfreq/' + str(curfreq))
elif mag <= 50000 or abs(curfreq-freq) > 20:
if stop and curfreq != 0:
print('Stopping', curfreq)
get('http://10.242.6.228:5000/stopfreq/' + str(curfreq))
curfreq = 0
else:
# Stop next round
stop = True