Snore-Detector / app.py
AbdullaShafeeg
app update
99cbfbc
raw
history blame
1.93 kB
import streamlit as st
from st_audiorec import st_audiorec
import matplotlib.pyplot as plt
import sounddevice as sd
import numpy as np
import pandas as pd
# Session state
if 'text' not in st.session_state:
st.session_state['text'] = 'Listening...'
st.session_state['run'] = False
# Audio parameters
st.sidebar.header('Audio Parameters')
FRAMES_PER_BUFFER = int(st.sidebar.text_input('Frames per buffer', 3200))
FORMAT = 'audio/wav'
CHANNELS = 1
RATE = int(st.sidebar.text_input('Rate', 16000))
# Open an audio stream
monitoring = False
audio_data = []
def start_monitoring():
global monitoring
st.session_state['run'] = True
monitoring = True
def stop_monitoring():
global monitoring
st.session_state['run'] = False
monitoring = False
st.title('🎙️ Real-Time Snore Detection App')
with st.expander('About this App'):
st.markdown('''
This streamlit app from Hypermind Labs Helps users detect
how much they are snoring during their sleep.
''')
wav_audio_data = st_audiorec()
if wav_audio_data is not None:
np_wav = np.frombuffer(wav_audio_data, dtype=np.int16)
# PERCENTAGE OF SNORING PLOT
model = np.random.rand(4, 5)
snore = 0
other = 0
for row in model:
for element in row:
if element > 0.5:
snore += 1
else:
other += 1
total = snore + other
snore_percentage = (snore / total) * 100
other_percentage = (other / total) * 100
categories = ["Snore", "Other"]
percentages = [snore_percentage, other_percentage]
plt.figure(figsize=(8, 4))
plt.barh(categories, percentages, color=['#ff0033', '#00ffee'])
plt.xlabel('Percentage')
plt.title('Percentage of "Snore" and "Other"')
plt.xlim(0, 100)
for i, percentage in enumerate(percentages):
plt.text(percentage, i, f' {percentage:.2f}%', va='center')
st.pyplot(plt)