Spaces:
Runtime error
Runtime error
Upload 5 files
Browse files- app.py +86 -0
- models/Emotion_Model.h5 +3 -0
- models/labels +0 -0
- models/model_json.json +1 -0
- requirements.txt +0 -0
app.py
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from keras.models import model_from_json
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
+
import keras
|
5 |
+
import pickle
|
6 |
+
import pandas as pd
|
7 |
+
import numpy as np
|
8 |
+
import librosa
|
9 |
+
import librosa.display
|
10 |
+
|
11 |
+
def transform_data(audio):
|
12 |
+
print("audio: ", audio)
|
13 |
+
# Lets transform the dataset so we can apply the predictions
|
14 |
+
X, sample_rate = librosa.load(audio
|
15 |
+
,res_type='kaiser_fast'
|
16 |
+
,duration=2.5
|
17 |
+
,sr=44100
|
18 |
+
,offset=0.5
|
19 |
+
)
|
20 |
+
|
21 |
+
print("HEREEEE", sample_rate, X.shape)
|
22 |
+
|
23 |
+
sample_rate = np.array(sample_rate)
|
24 |
+
mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=13),axis=0)
|
25 |
+
newdf = pd.DataFrame(data=mfccs).T
|
26 |
+
return newdf
|
27 |
+
|
28 |
+
def predict(newdf, loaded_model):
|
29 |
+
# Apply predictions
|
30 |
+
newdf= np.expand_dims(newdf, axis=2)
|
31 |
+
print("***HERRRREEEEE*** ", newdf.shape )
|
32 |
+
newpred = loaded_model.predict(newdf,
|
33 |
+
batch_size=16,
|
34 |
+
verbose=1)
|
35 |
+
return newpred
|
36 |
+
|
37 |
+
|
38 |
+
def get_label(newpred):
|
39 |
+
filename = 'models/labels'
|
40 |
+
infile = open(filename,'rb')
|
41 |
+
lb = pickle.load(infile)
|
42 |
+
infile.close()
|
43 |
+
|
44 |
+
# Get the final predicted label
|
45 |
+
final = newpred.argmax(axis=1)
|
46 |
+
final = final.astype(int).flatten()
|
47 |
+
final = (lb.inverse_transform((final)))
|
48 |
+
return final
|
49 |
+
|
50 |
+
def load_model():
|
51 |
+
# loading json and model architecture
|
52 |
+
json_file = open('models/model_json.json', 'r')
|
53 |
+
loaded_model_json = json_file.read()
|
54 |
+
json_file.close()
|
55 |
+
loaded_model = model_from_json(loaded_model_json)
|
56 |
+
|
57 |
+
# load weights into new model
|
58 |
+
loaded_model.load_weights("models/Emotion_Model.h5")
|
59 |
+
print("Loaded model from disk")
|
60 |
+
|
61 |
+
# the optimiser
|
62 |
+
opt = keras.optimizers.RMSprop(lr=0.00001, decay=1e-6)
|
63 |
+
loaded_model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
|
64 |
+
return loaded_model
|
65 |
+
|
66 |
+
|
67 |
+
def main(audio):
|
68 |
+
newdf = transform_data(audio)
|
69 |
+
loaded_model = load_model()
|
70 |
+
newpred = predict(newdf, loaded_model)
|
71 |
+
final = get_label(newpred)
|
72 |
+
return "Classification: " + final
|
73 |
+
|
74 |
+
demo = gr.Interface(
|
75 |
+
main,
|
76 |
+
inputs=gr.Audio(
|
77 |
+
sources=["microphone"],
|
78 |
+
type="filepath",
|
79 |
+
),
|
80 |
+
outputs="text"
|
81 |
+
)
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
if __name__ == "__main__":
|
86 |
+
demo.launch(show_api=False)
|
models/Emotion_Model.h5
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:baba567dca858b61c748bd2b8d6baaaeb818fc72e627d2e5cd4eb0496b7714a7
|
3 |
+
size 10391096
|
models/labels
ADDED
Binary file (446 Bytes). View file
|
|
models/model_json.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 216, 1], "dtype": "float32", "sparse": false, "ragged": false, "name": "conv1d_input"}}, {"class_name": "Conv1D", "config": {"name": "conv1d", "trainable": true, "batch_input_shape": [null, 216, 1], "dtype": "float32", "filters": 256, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_1", "trainable": true, "dtype": "float32", "filters": 256, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization", "trainable": true, "dtype": "float32", "axis": [2], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_1", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "MaxPooling1D", "config": {"name": "max_pooling1d", "trainable": true, "dtype": "float32", "strides": [8], "pool_size": [8], "padding": "valid", "data_format": "channels_last"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_2", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_2", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_3", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_3", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_4", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_4", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_5", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": true, "dtype": "float32", "axis": [2], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_5", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "MaxPooling1D", "config": {"name": "max_pooling1d_1", "trainable": true, "dtype": "float32", "strides": [8], "pool_size": [8], "padding": "valid", "data_format": "channels_last"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_6", "trainable": true, "dtype": "float32", "filters": 64, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_6", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Conv1D", "config": {"name": "conv1d_7", "trainable": true, "dtype": "float32", "filters": 64, "kernel_size": [8], "strides": [1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_7", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Flatten", "config": {"name": "flatten", "trainable": true, "dtype": "float32", "data_format": "channels_last"}}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 14, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_8", "trainable": true, "dtype": "float32", "activation": "softmax"}}]}, "keras_version": "2.10.0", "backend": "tensorflow"}
|
requirements.txt
ADDED
Binary file (172 Bytes). View file
|
|