mirror of
https://git.exozy.me/a/Never-Gonna-Give-Beep-Up
synced 2024-11-22 13:57:30 +00:00
Add mic to beeper script
This commit is contained in:
parent
b18d63a602
commit
62ceacf109
40
mic.py
Normal file
40
mic.py
Normal 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
|
Loading…
Reference in New Issue
Block a user