import numpy as np import gradio as gr import pickle import librosa from sklearn.linear_model import LogisticRegression lr_model = LogisticRegression() with open("./lr_mfcc_model.pkl", "rb") as f: lr_model = pickle.load(f) def extract_mfcc_gradio(audio): sample_rate, y = audio y = y.astype(np.float32) y /= np.max(np.abs(y)) if y.ndim == 1: data = y else: data = y[:, 0] mfcc = np.mean(librosa.feature.mfcc(y=data, sr=sample_rate).T, axis=0) return mfcc def voice_mfcc_classification(audio): mfcc = extract_mfcc_gradio(audio) prediction = lr_model.predict([mfcc]) if prediction[0] == 0: return "engaging" else: return "boring" def voice_classification(audio): # generate a random number between 0 and 1 # if 1 for engaging, 0 for boring random_number = np.random.rand() if random_number > 0.5: result = "boring" else: result = "engaging" return result gr.Interface(fn=voice_mfcc_classification, inputs="audio", outputs="text").launch()