Spaces:
Runtime error
Runtime error
File size: 2,299 Bytes
833cfe7 ab74fcc 833cfe7 f96d709 833cfe7 2c57d33 e975cee 833cfe7 db2f8b5 833cfe7 b8db7e8 e2bcf7c b8db7e8 e2bcf7c e975cee 833cfe7 b8db7e8 d19b13c 833cfe7 2c57d33 833cfe7 b8db7e8 833cfe7 b8db7e8 833cfe7 b8db7e8 833cfe7 d305e8c 7539d90 e2bcf7c 5717cc5 833cfe7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
## libraries for data preprocessing
import numpy as np
import pandas as pd
## libraries for training dl models
import tensorflow as tf
from tensorflow import keras
## libraries for reading audio files
import librosa as lib
import gradio as gr
## lets load the model
model = keras.models.load_model('best_heartbeatsound_classification.h5')
def loading_sound_file(sound_file, sr=22050, duration=10):
input_length = sr * duration
X, sr = lib.load(sound_file, sr=sr, duration=duration)
dur = lib.get_duration(y=X, sr=sr)
# # pad audio file same duration
# if (round(dur) < duration):
# print ("fixing audio lenght :", file_name)
# y = lib.util.fix_length(X, input_length)
# extract normalized mfcc feature from data
# ## pad audio to same duration
# if round(dur) < duration:
# X = lib.util.fix_length(X, input_length)
# Pad or truncate audio file to the same duration
if round(dur) < duration:
pad_amount = input_length - len(X)
X = np.pad(X, (0, pad_amount), mode='constant')
elif round(dur) > duration:
X = X[:input_length]
mfccs = np.mean(lib.feature.mfcc(y=X, sr=sr, n_mfcc=25).T,axis=0)
## Reshape to match the model's input shape
data = np.array(mfccs).reshape(1, -1, 1)
return data
def heart_signal_classification(data):
X = loading_sound_file(data)
pred = model.predict(X)
## Define the threshold
threshold = 0.6
max_prob = np.max(pred)
## Create labels
labels = {
0: 'artifact',
1: 'unlabel',
2: 'extrastole',
3: 'extrahls',
4: 'normal',
5: 'murmur'
}
if max_prob < threshold:
label = 'unknown'
else:
result = pred[0].argmax()
label = labels[result]
return label
################### Gradio Web APP ################################
title = "Heart Signal Classification App"
Input = gr.Audio(sources=["upload"], type="filepath")
Output1 = gr.Textbox(label="Type Of Heart Signal")
description = "Type Of Signal: Artifact, Murmur, Normal, Extrastole, Extrahls"
iface = gr.Interface(fn=heart_signal_classification, inputs=Input, outputs=Output1, title=title, description=description)
iface.launch(inline=False) |