Spaces:
Sleeping
Sleeping
import streamlit as st | |
import numpy as np | |
# Page setup | |
st.title("🎵 Music Genre Classifier") | |
st.write("Upload an audio file to analyze its genre") | |
# Create two columns for better layout | |
col1, col2 = st.columns(2) | |
with col1: | |
# File upload | |
audio_file = st.file_uploader("Upload an audio file (MP3, WAV)", type=['mp3', 'wav']) | |
if audio_file is not None: | |
# Display audio player | |
st.audio(audio_file) | |
st.success("File uploaded successfully!") | |
# Add a classify button | |
if st.button("Classify Genre"): | |
with st.spinner("Analyzing..."): | |
# Simulate genre classification (we'll replace this with real model later) | |
genres = ["Rock", "Pop", "Hip Hop", "Classical", "Jazz"] | |
confidences = np.random.dirichlet(np.ones(5)) # Random probabilities that sum to 1 | |
# Show results | |
st.write("### Genre Analysis Results:") | |
for genre, confidence in zip(genres, confidences): | |
st.write(f"{genre}: {confidence:.2%}") | |
# Show top prediction | |
top_genre = genres[np.argmax(confidences)] | |
st.write(f"**Predicted Genre:** {top_genre}") | |
with col2: | |
# Display some tips and information | |
st.write("### Tips for best results:") | |
st.write("- Upload files in MP3 or WAV format") | |
st.write("- Ensure good audio quality") | |
st.write("- Try to upload songs without too much background noise") | |
st.write("- Ideal length: 10-30 seconds") | |
# Add a sample counter | |
if 'analyzed_count' not in st.session_state: | |
st.session_state.analyzed_count = 0 | |
if audio_file is not None: | |
st.session_state.analyzed_count += 1 | |
st.write(f"Songs analyzed this session: {st.session_state.analyzed_count}") | |
# Footer | |
st.markdown("---") | |
st.write("Made with ❤️ using Streamlit") |