Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| # Load your saved joblib model, scaler, label_encoder, feature order | |
| d = joblib.load("genre_classifier.joblib") | |
| clf = d["model"] | |
| scaler = d["scaler"] | |
| le = d["label_encoder"] | |
| feature_order = d["features"] # Should match what your web UI sends | |
| def predict_genre( | |
| danceability, energy, key, loudness, mode, speechiness, acousticness, | |
| instrumentalness, liveness, valence, tempo, time_signature | |
| ): | |
| # Pack input as expected by model | |
| X = np.array([[ | |
| danceability, energy, key, loudness, mode, speechiness, acousticness, | |
| instrumentalness, liveness, valence, tempo, time_signature | |
| ]]) | |
| X_scaled = scaler.transform(X) | |
| pred = clf.predict(X_scaled) | |
| label = le.inverse_transform(pred)[0] | |
| return label | |
| # For API: single call with all features | |
| iface = gr.Interface( | |
| fn=predict_genre, | |
| inputs=[ | |
| gr.Number(label=f) for f in feature_order | |
| ], | |
| outputs=gr.Text(label="Predicted Genre"), | |
| title="Billboard Genre Classifier", | |
| description="Predicts the genre from audio features. For API usage, send a POST to /run/predict.", | |
| allow_flagging="never" | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |