A web application that separates vocals from music using AI-powered audio source separation. Upload audio files or provide YouTube URLs to extract clean vocal and accompaniment tracks.
- File Upload: Upload MP3, WAV, or other audio files directly
- YouTube Integration: Extract audio from YouTube videos by URL
- AI-Powered Separation: Uses Spleeter for high-quality vocal/accompaniment separation
- Dual Output: Download both vocal and accompaniment tracks separately
- Modern UI: React-based frontend with internationalization support
Backend:
- Python 3
- Flask (REST API)
- Spleeter (audio source separation)
- youtube-dl (YouTube audio extraction)
Frontend:
- React
- Redux (state management)
- Axios (HTTP client)
- i18next (internationalization)
- Python 3.6+
- Node.js 12+
- FFmpeg (required by Spleeter)
- Navigate to the backend directory:
cd back-end- Install Python dependencies:
pip install -r requirements.txt- Install FFmpeg if not already installed:
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
# Windows
# Download from https://ffmpeg.org/download.html- Navigate to the frontend directory:
cd front-end- Install Node.js dependencies:
npm installcd back-end
python test-spleeter.pyThe Flask server will start on http://0.0.0.0:5000
cd front-end
npm startThe React app will start on http://localhost:3000
POST /upload- Upload an audio file for vocal separationPOST /youtubeToMp3- Provide a YouTube URL to extract and separate vocalsGET /accompaniment/<timestamp>- Download the accompaniment trackGET /title- Get the title of the processed audio
- User uploads an audio file or provides a YouTube URL
- Backend downloads/receives the audio file
- Spleeter processes the audio using a pre-trained 2-stem model
- The audio is separated into two tracks: vocals and accompaniment
- Both tracks are made available for download
ExtractVocal/
├── back-end/
│ ├── pretrained_models/ # Spleeter models
│ ├── test-spleeter.py # Flask API server
│ └── requirements.txt # Python dependencies
├── front-end/
│ ├── public/ # Static assets
│ ├── src/ # React components
│ └── package.json # Node.js dependencies
└── README.md
This project uses Spleeter, which is licensed under the MIT License.
- Spleeter by Deezer for audio source separation
- youtube-dl for YouTube audio extraction