I have deployed the app to a huggingface space, When i upload the file, and reaches the part where input tensor is fed into the model, always the streamlit server shows CONNECTING… and then the app restarts but the uploaded file is there. sometimes its giving error 500 also…coudn’t figure out the issue here, can someone please point out if there is any bugs in the code
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
import torch
# import torchaudio
import wave
import io
from scipy.io import wavfile
import pydub
import time
import os
import atexit
import librosa
# MODEL LOADING and INITIALISATION
def load_model():
model = torch.jit.load("*****l.ptl")
model.eval()
return model
model = load_model()
# Audio parameters
def process_data(waveform_chunks):
snore = 0
other = 0
st.write("Reached stage 4")
for chunk in waveform_chunks:
st.write("Reached stage 5")
input_tensor = torch.tensor(chunk).unsqueeze(0)
st.write("Reached stage 6")
st.write(input_tensor.shape)
result = model(input_tensor)
st.write(result)
if np.abs(result[0][0]) > np.abs(result[0][1]):
other += 1
else:
snore += 1
return snore, other
st.sidebar.markdown(
"""
</div>
""",
unsafe_allow_html=True,
)
uploaded_file = st.file_uploader("Upload Sample", type=["wav"])
if uploaded_file is not None:
st.write("Analsysing...")
# time.sleep(2.5)
audio, sample_rate = librosa.load(uploaded_file, sr=None)
waveform = audio
# Set the chunk size
chunk_size = 16000
st.write("Reached stage 2")
# Calculate the number of chunks
num_chunks = len(waveform) // chunk_size
# Reshape the waveform into chunks
waveform_chunks = np.array_split(waveform[:num_chunks * chunk_size], num_chunks)
st.write("Reached stage 3")
snore, other = process_data(waveform_chunks)
total = snore + other
snore_percentage = (snore / total) * 100
other_percentage = (other / total) * 100
categories = ["Snore", "Other"]
percentages = [snore_percentage, other_percentage]
st.write(f'Snore Percentage: {snore_percentage}')
# plt.figure(figsize=(8, 4))
# plt.barh(categories, percentages, color=['#ff0033', '#00ffee'])
# plt.xlabel('Percentage')
# plt.title('Percentage of Snoring')
# plt.xlim(0, 100)
# for i, percentage in enumerate(percentages):
# plt.text(percentage, i, f' {percentage:.2f}%', va='center')
# st.write("DONE")
# st.pyplot(plt)