| import joblib |
| import librosa |
| import numpy as np |
| import gradio as gr |
|
|
| |
| MODEL_PATH = "model.joblib" |
| model = joblib.load(MODEL_PATH) |
|
|
| |
| def extract_mfcc(file_path): |
| y, sr = librosa.load(file_path, sr=None) |
| mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13) |
| return np.mean(mfcc, axis=1) |
|
|
| |
| def predict_audio(audio_file): |
| try: |
| features = extract_mfcc(audio_file).reshape(1, -1) |
| prediction = model.predict(features)[0] |
| return "True Story" if prediction == 1 else "Deceptive Story" |
| except Exception as e: |
| return f"Error during prediction: {e}" |
|
|
| |
| with gr.Blocks() as demo: |
| gr.Markdown("<h1 style='text-align: center;'>Truth Detection from Audio Stories</h1>") |
| gr.Markdown( |
| "<p style='text-align: center;'>" |
| "This tool analyzes an audio story and predicts whether it is true or deceptive " |
| "based on MFCC features and a trained Random Forest classifier." |
| "</p>" |
| ) |
| audio_input = gr.Audio(type="filepath", label="Upload Audio File") |
| output = gr.Textbox(label="Prediction") |
| submit_btn = gr.Button("Predict") |
| submit_btn.click(fn=predict_audio, inputs=audio_input, outputs=output) |
| gr.Markdown("<p style='text-align: center; font-size: 12px; color: gray;'>Developed by Sangam Sanjay Bhamare, 2025.</p>") |
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|