A state-of-the-art music recommendation system that combines audio feature extraction, lyrics analysis, sentiment analysis, and machine learning to provide personalized song recommendations.
- Advanced Audio Analysis: Extract and analyze audio features using librosa and numpy
- Lyrics Processing: Fetch and analyze lyrics with natural language processing techniques
- Sentiment Analysis: Understand the emotional tone of songs using VADER and TextBlob
- Hybrid Recommendation Engine: Get personalized recommendations based on sound profile, lyrics content, and emotional tone
- YouTube Integration: Search, download, and process songs directly from YouTube
- Upload Your Own Music: Analyze and get recommendations for your personal music collection
- Beautiful Interactive UI: Easy-to-use Streamlit interface with dark mode support
-
Clone the repository:
git clone https://github.com/Heisenberg-Vader/DSPipeXP.git cd DSPipeXP -
Set up a virtual environment:
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the Streamlit app:
cd dspipexp_streamlit streamlit run app.py
DSPipeXP/
├── dspipexp_streamlit/ # Main Streamlit application
│ ├── app.py # Main application entry point
│ ├── src/ # Core functionality
│ │ ├── audio.py # Audio feature extraction
│ │ ├── db.py # Database operations
│ │ ├── lyrics.py # Lyrics fetching and analysis
│ │ ├── recommender.py # Recommendation algorithms
│ │ ├── utils.py # Utility functions
│ │ └── youtube.py # YouTube integration
│ └── requirements.txt # App-specific dependencies
├── scripts/ # Utility scripts
├── src/ # Additional source code
├── lyric_dataset/ # Dataset files
├── requirements.txt # Project dependencies
└── README.md # Project documentation
- Enter a song name or artist in the search tab
- Select a song from the results
- Click "Get Recommendations" to see similar songs
- Explore audio features and lyrics for each recommendation
- Enter a YouTube URL or search for songs on YouTube
- The system will extract audio features and lyrics
- View recommendations based on the YouTube song
- Optionally save the song to the database
- Upload an MP3, WAV, FLAC, or OGG file
- The system will analyze the audio
- Enter song metadata (title, artist, etc.)
- Get recommendations based on your uploaded song
- Frontend: Streamlit
- Backend: Python, FastAPI
- Database: PostgreSQL
- Audio Processing: librosa, ffmpeg
- NLP & ML: scikit-learn, gensim, FAISS
- APIs: YouTube, Genius Lyrics
Our recommendation system uses a hybrid approach combining:
- Audio Feature Similarity: Analyzes sound characteristics like tempo, energy, danceability
- Lyrics Similarity: Compares the semantic content of lyrics using NLP techniques
- Sentiment Analysis: Matches songs with similar emotional tones
- Progressive Refinement: Continuously improves recommendations in the background
DSPipeXP was developed by a team of data science students:
- Akshit S Bansal - Lead Developer
- Kriti Chaturvedi - Data Scientist
- Hussain Haidary - Machine Learning Engineer
This project is optimized for deployment on Streamlit Cloud. For detailed deployment instructions, see STREAMLIT_DEPLOYMENT.md.
This project is licensed under the MIT License - see the LICENSE file for details.