Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from keras.models import model_from_json | |
| import matplotlib.pyplot as plt | |
| import keras | |
| import pickle | |
| import pandas as pd | |
| import numpy as np | |
| import librosa | |
| import librosa.display | |
| def transform_data(audio): | |
| # Lets transform the dataset so we can apply the predictions | |
| X, sample_rate = librosa.load(audio | |
| ,res_type='kaiser_fast' | |
| ,duration=2.5 | |
| ,sr=44100 | |
| ,offset=0.5 | |
| ) | |
| sample_rate = np.array(sample_rate) | |
| mfccs = librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=30) | |
| mfccs = np.expand_dims(mfccs, axis=-1) | |
| return mfccs | |
| def predict(newdf, loaded_model): | |
| # Apply predictions | |
| newdf= np.expand_dims(newdf, axis=0) | |
| # print("***HERRRREEEEE*** ", newdf.shape ) | |
| newpred = loaded_model.predict(newdf, | |
| batch_size=16, | |
| verbose=1) | |
| return newpred | |
| def get_label(newpred): | |
| filename = 'models/labels' | |
| infile = open(filename,'rb') | |
| lb = pickle.load(infile) | |
| infile.close() | |
| # Get the final predicted label | |
| final = newpred.argmax(axis=1) | |
| final = final.astype(int).flatten() | |
| final = (lb.inverse_transform((final))) | |
| return final | |
| def load_model(): | |
| # loading json and model architecture | |
| json_file = open('models/model_json_conv2D.json', 'r') | |
| loaded_model_json = json_file.read() | |
| json_file.close() | |
| loaded_model = model_from_json(loaded_model_json) | |
| # load weights into new model | |
| loaded_model.load_weights("models/Emotion_Model_conv2D.h5") | |
| print("Loaded model from disk") | |
| # the optimiser | |
| opt = keras.optimizers.RMSprop(lr=0.00001, decay=1e-6) | |
| loaded_model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) | |
| return loaded_model | |
| def main(audio): | |
| newdf = transform_data(audio) | |
| loaded_model = load_model() | |
| newpred = predict(newdf, loaded_model) | |
| final = get_label(newpred) | |
| return "Classification: " + final | |
| demo = gr.Interface( | |
| title = "ποΈ Audio Gender/Emotion Analysis ποΈ", | |
| description = "<h3>A Neural Network to classify the gender of the voice (male/female) and the emotion, such as: happy, angry, sad, etc. </h3> <br> <b>Record your voice</b>", | |
| allow_flagging = "never", | |
| fn = main, | |
| inputs=gr.Audio( | |
| sources=["microphone"], | |
| type="filepath", | |
| ), | |
| outputs="text" | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch(show_api=False) |