siinghd/audiosplit

Self-hosted browser tools for video/audio editing and Demucs stem separation

★ 0Forks 0JavaScriptGitHub ↗Compare

README

audiosplit / mediatools

Free, signup-less browser tools for video and audio: separate stems with Demucs, trim, crop, compress, convert, extract audio, make GIFs, and more.

What it does

  • AI stem separation (vocals / drums / bass / other) via Demucs, with optional 6-stem mode
  • Video editing tools: trim, crop, rotate, change aspect ratio, change speed, convert format, video-to-gif
  • Image compression (JPEG / PNG / WebP) and video compression with adjustable CRF
  • FastAPI backend orchestrates ffmpeg + Demucs; React/Vite frontend serves a tool-per-page UI

Stack

Backend: Python + FastAPI + Demucs + ffmpeg, optional Redis for task state. Frontend: React + Vite + Tailwind, with a small Express server for SSR/static.

Run it

Backend:

cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # set REDIS_PASSWORD if you want Redis-backed task state
./start.sh             # or: uvicorn main:app --host 0.0.0.0 --port 8000

Frontend:

cd frontend
bun install            # or: npm install
bun run dev            # vite dev server
# production: bun run build && bun run start

Notes

  • Requires ffmpeg and ffprobe on PATH for the backend.
  • First Demucs run downloads the htdemucs_ft / htdemucs_6s model weights (~hundreds of MB).
  • GPU is auto-detected via PyTorch CUDA; falls back to CPU.
  • Without REDIS_PASSWORD the backend keeps task state in memory only (lost on restart).
  • uploads/ and outputs/ accumulate user files — wire up cleanup.py on a cron.

Contributors

siinghd

Issues