Loading file...

Loading file...

Featured Project

AI Audio Stem Separator

This audio app lets you split songs into separate parts like vocals, drums, bass, and other instruments using AI technology. It's really user-friendly - you can either use the desktop version with a clean interface or access it through a web API. Just drag and drop your music files, and it'll work its magic to separate everything out. The app is pretty smart too - it'll use your graphics card to speed things up if you have one, but works fine on regular computers as well. You can download each part individually or grab everything at once in a zip file. It's perfect for musicians who want to remix tracks, producers working on new beats, or anyone curious about picking apart their favorite songs to hear what's going on under the hood.

CompletedHigh PriorityDesktop app
105views
team:solo
Client: Personal

Technologies Used

Project Overview

Budget

$0

Duration

2 Days

Platforms

WebDesktop

Frameworks

FastAPIPyQt6DemucsPyTorchUvicornLibrosaSoundFileNumPyScipyPydanticPyTest

Achievements

I'm pretty proud that I got both interfaces working seamlessly - you can literally drag and drop a song and watch it get separated in real-time. The task queue system turned out really solid too, so multiple people can use it at once without everything grinding to a halt. The AI separation quality honestly surprised me - hearing individual drum tracks or isolated vocals from your favorite songs never gets old.


The app splits songs into vocals, drums, bass, and everything else with pretty impressive accuracy. It handles all the common audio formats people actually use, shows you exactly what's happening as it processes, and works whether you're on Windows, Mac, or Linux. Plus it's smart about cleaning up after itself so you don't end up with gigabytes of temporary files cluttering your system.

Challenges

Getting multiple AI models to work together without crashing your computer was no joke - especially when dealing with huge audio files that want to eat up all your RAM. Making sure everything worked smoothly whether someone was using the web version or desktop app took a lot of trial and error. The trickiest part was probably getting real-time updates to show users how their audio processing was going, especially when juggling multiple people's requests at once.

Key Learnings

This project really opened my eyes to how complex audio processing can get when you throw AI into the mix. I had to get creative with managing memory so the app wouldn't freeze up on large files, and figuring out how to build something that feels native on both web and desktop was a real learning curve. The biggest lesson was probably how important good error handling is - audio files can be unpredictable, and users definitely don't want the app to just crash on them.

Future Improvements

I'm excited about adding batch processing so you could throw a whole album at it and come back later. Custom model training would be amazing - imagine training it on specific genres or instruments. Cloud storage integration is definitely on the wishlist, and I think adding some collaborative features could make it really useful for bands or production teams working together.

Audio Stem Separator 🎵

Audio Stem Separator Logo

Python FastAPI CUDA License

Ever wanted to isolate just the vocals from your favorite song? Or maybe you're a producer who needs to pull out that perfect drum track? This tool uses AI to magically separate audio into individual parts (we call them "stems") - vocals, drums, bass, piano, and more!

See It In Action

Web Version

Web Dashboard Preview Just drag, drop, and let the magic happen

Web Processing View Watch your audio get separated in real-time

Web Results View Download exactly what you need

Desktop App

Desktop Main View Clean, modern interface that's actually fun to use

Desktop Processing No more wondering "is it done yet?"

Desktop Results Your stems, ready to download

What Makes This Cool?

Smart AI Separation - We're talking studio-quality results that'll make you wonder how it works (spoiler: lots of math and neural networks)

Super Easy to Use - Literally just drag your file in. That's it. No PhD in audio engineering required.

Watch It Work - See your audio get processed in real-time because waiting without knowing what's happening is the worst

Get What You Want - Download individual parts or grab everything at once

Plays Nice - Works with pretty much any audio format you throw at it (MP3, WAV, FLAC, you name it)

Smart Cleanup - Automatically tidies up so your hard drive doesn't hate you

Getting Started (The Fun Part!)

What You'll Need

  • Python 3.8 or newer (if you don't have it, grab it from python.org)
  • A graphics card with CUDA is nice but not required (it just makes things faster)

Setting Things Up

Step 1: Get the code

git clone 
cd audio-stem-separator

Step 2: Create your own little Python world

python -m venv venv
source venv/bin/activate  # Windows folks: venv\Scripts\activate

Step 3: Install the magic

pip install -r requirements.txt

Fire It Up!

python -m app.main

Then head over to http://localhost:8000 and start separating some audio!

Actually Using This Thing

For Tinkering Around

Start the server:

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Then visit:

  • http://localhost:8000 for the main app
  • http://localhost:8000/docs if you want to see all the nerdy API details

For Serious Business

Production mode (handles more traffic):

uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4

Or if you're into Docker:

docker build -t audio-stem-separator .
docker run -p 8000:8000 audio-stem-separator

Tweaking Settings

You can customize how things work with these environment variables:

WhatWhat It DoesDefault
MODEL_PATHWhere to find the AI modelsmodels/
UPLOAD_DIRWhere uploaded files gouploads/
MAX_FILE_SIZEBiggest file you can upload100MB
GPU_ENABLEDUse your graphics card for speedtrue

The Desktop App Experience

Want something that feels more like a real program? We've got you covered with a desktop version that's actually pleasant to use.

What You Need

  • Python 3.8+ (same as before)
  • PyQt6 (for the pretty interface)
  • The main server needs to be running

Getting It Running

Install the desktop bits:

pip install PyQt6 requests

Start the server first:

python -m app.main

Then launch the desktop app:

python desktop.py

The desktop app gives you drag-and-drop uploading, real-time progress updates, and easy downloading. It's like the web version but feels more like home.

Just Want the Web Interface?

If you prefer browsers, serve up the web interface like this:

python -m http.server 3000

Then visit http://localhost:3000 and you're good to go!

For the API Nerds

If you like diving into technical details, check out:

  • Interactive docs: http://localhost:8000/docs
  • Alternative docs: http://localhost:8000/redoc

What the API Can Do

HowWhereWhat
GET/"Hey, are you working?"
POST/upload"Here's my audio, do your thing"
GET/status/{task_id}"How's my audio coming along?"
GET/download/{task_id}"Give me all the stems!"
GET/download/{task_id}/{stem_name}"Just the vocals, please"
DELETE/cleanup/{task_id}"Clean up after yourself"
GET/tasks"Show me everything you're working on"
GET/queue/status"How busy are you right now?"

What's Under the Hood

We built this with some really solid tools:

FastAPI powers the backend (it's fast and handles everything gracefully)

Custom ML models do the actual audio separation magic

Redis keeps track of the queue (optional but helpful)

Local storage keeps your files safe

CUDA support makes GPU owners very happy

Want to Help Make This Better?

We love when people contribute! Check out our Contributing Guide to see how you can help make this even more awesome.

MIT License - basically, use it however you want, just don't blame us if something goes wrong. Full details in the LICENSE file.

Tech Stack
15 Technologies

Programming Languages

3
PythonLinuxHTML

Frameworks

11
FastAPIPyQt6DemucsPyTorchUvicornLibrosaSoundFileNumPyScipyPydanticPyTest

Technologies

1
Docker
3
Languages
11
Frameworks
1
Technologies
Project Timeline
Completed
Duration: 2 Days
100% Complete
Overall Progress
100%

Timeline Events

Made Main.py to test my computer processor

Jan 6, 2024

I checked my laptop to see if everything was working fine and if my computer can handle the load.

Created The files needed

Jan 6, 2024

I made sure all files and codes are easy to read and well organized.

Documented my work and fixed bugs

Jan 7, 2024

I completed the whole code, and started documenting my work so if you or someone else would like to use the application, they would. I added step by step instructions on how to run the application on your local machine.

2 Days
Total Duration
Jun 18, 2025
Start Date
Project Metrics
Progress
100%
105
Views
0
Comments
Timeline
Made Main.py to test my computer processor
Jan 6, 2024
Created The files needed
Jan 6, 2024
Documented my work and fixed bugs
Jan 7, 2024
Duration
2 Days
Team & Links
Team Sizesolo
ClientPersonal
Project Gallery
web-results.png
image
web-processing.png
image
web-dashboard.png
image
logo.png
image
desktop-results.png
image
desktop-processing.png
image
desktop-main.png
image
Stem Separator demo video.mp4
video
AI Audio Stem Separator - Mohamed Amara | Medzy Amara