stemdeck README

The project's README from github.com/stemdeckapp/stemdeck. As one markdown file: README.md.

StemDeck

Free, local stem separation. No account. No upload. No subscription.

CI GitHub Stars Total Downloads Latest Release License

JOIN THE COMMUNITY

GitHub Discord Reddit Instagram X Website

Drop in an MP3, WAV, FLAC, OGG/Opus, MP4, or M4A file, or paste a YouTube URL, and StemDeck splits the audio into up to six stems (vocals, drums, bass, guitar, piano, other). Play them back in a DAW-style multitrack mixer: mute, solo, balance levels, zoom the waveform, loop a region, and export individual stems or a custom mix. Everything runs locally on your own machine.

What is this? StemDeck is a stem separation tool, not a downloader. Its main job is processing audio you already own: drag an MP3, WAV, FLAC, OGG, or M4A onto the import bar and go. YouTube support is a convenience for content you have the right to process. StemDeck does not store, cache, or redistribute any downloaded content. Everything happens locally and nothing leaves your machine.

StemDeck is a free, open alternative to cloud stem-splitters like Moises and LALAL.AI: no account, no quota, no uploads, no subscription. If you want stems for personal study and prefer to keep things local and free, StemDeck has you covered. If you need the polish, a mobile app, or deeper musician tooling, the commercial products are a better fit.

StemDeck screenshot

Star History

Star History Chart

We Recommend

StemDeck is free and does not accept any money, sponsorship, or funding from anyone listed below. I share these makers and artists and communities purely for the joy of pointing you toward wonderful people doing beautiful work. Go meet them ❤️

Category Name What they do Link
Artists & Creators Joao Gaspar Producer, film scorer, touring/session musician @jay_glaspar
Artists & Creators Killah Trakz Industry Secret Villain and Media Influencer @killahtrakz
Artists & Creators More Notes Less Talk Gear-focused creative project with a raw, tape-recorded identity @morenoteslesstalk
Artists & Creators Analog4Lyfe Analog gear specialist @analog4lyfe
Artists & Creators Dead röses Cork-based punk rock band @dead_rosesband
Instrument Builders & Repair Dlima Guitars Custom guitars and basses @dlimaguitars
Instrument Builders & Repair Lisbon Guitar Works Handmade guitars in Lisbon dlimaguitars.com
Instrument Builders & Repair Kris Luthier Instrument repair and restoration @krisluthier
Music Gear Empress Effects Boutique effects pedals empresseffects.com
Music Gear Thomann Large music-equipment retailer @thomann.music
Music & Karaoke Technology Beltr Local, subscription-free karaoke software beltr.app
Music & Karaoke Technology Seratone TV-based karaoke system seratone.audio
Media & Community slashCAM Camera, video, and post-production media @slashcam.de
Media & Community r/bass Bass-player community r/Bass
Writers & Storytellers Alexandre Borges Portuguese writer, screenwriter, and cultural commentator Books & author profile

Features

6-stem separation via Demucs htdemucs_6s, with auto-detection of the best Torch device (CUDA on NVIDIA, MPS on Apple Silicon, CPU fallback).

YouTube and local file import. Paste a YouTube URL or drop an MP3, WAV, FLAC, OGG/Opus, MP4, or M4A directly onto the import bar.

DAW-style waveform editor with min/max sample rendering across all stems, shared normalization, zoom in/out/Fit, loop drag on the ruler, gold playhead overlay, and stem-aligned lanes.

Stem subset extraction. Click stem chips to choose which stems to keep. Clicking from "all selected" snaps to "only this one"; subsequent clicks add or remove.

"Original" backing track. When you pick a subset, a 7th lane contains the complement (full song minus selected stems), perfect for A/B reference without doubling.

Downloadable selected mix. A single mix.wav of just your selected stems, summed via ffmpeg amix.

Per-stem mixer with volume fader, mute, solo, and "monitor" (solo-only) per stem. State syncs between the preview mixer and the stems sidebar.

Live VU meters per stem. Post-gain RMS via Web Audio analysers with peak hold and slow falloff.

Song analysis including BPM (librosa beat tracker), key, scale, and confidence (Albrecht-Shanahan profiles), integrated LUFS (BS.1770), and sample peak in dBFS.

Cancellable jobs. Cancel mid-pipeline and the runner terminates the active subprocess immediately, deletes the partial job dir, and returns to ready.

Library panel with folder-based track organisation, drag-and-drop, search, and trash.


Honest Comparison

StemDeck is not trying to compete with commercial stem-separation products. It covers the core use case well and stops there. This table exists so you can make an informed choice rather than discover the gaps after the fact.

StemDeck Moises / LALAL.AI / similar
Price Free, forever Freemium; credits or subscription required for regular use
Hosting Runs entirely on your machine Cloud; audio must be uploaded to their servers
Account / login None Required
Internet required Only for YouTube download and first model fetch (~170 MB, cached after) Always; no offline use
Privacy Audio never leaves your machine Audio is uploaded and processed on third-party servers
Data retention You control it; delete anytime Governed by their privacy policy and retention period
Stem model Demucs htdemucs_6s (open source, Meta AI) Proprietary models, regularly updated, generally higher quality
Stem count 6 (vocals, drums, bass, guitar, piano, other) Up to 10 depending on service and plan
Input formats YouTube URL, MP3, WAV, FLAC, OGG/Opus, MP4, M4A MP3, WAV, FLAC, M4A, and more depending on service
Processing speed Depends on your hardware; fast with a GPU, slow on CPU only Fast regardless of your hardware (runs on their servers)
Batch processing One job at a time Yes, on paid plans
Mobile app No iOS and Android
Extra features No (no pitch shift, chord detection, lyrics, click track, BPM tap) Yes, varies by product
Polish Functional, hobby-grade UI Polished, production-grade apps
Source code Open source, forkable, self-hostable Closed source

If you need speed, quality, mobile access, or the extra musician tooling, the commercial products are worth the money. If you want stems for personal study, prefer to keep audio private, or just want something that runs locally with no strings attached, StemDeck is enough.


Download

Pre-built installers and zips are attached to each GitHub Release.

macOS

DMG GPU Chip
StemDeck-macOS-arm64.dmg Apple Silicon (MPS) M1 and later
StemDeck-macOS-x64.dmg CPU only Intel

Open the DMG, drag StemDeck to Applications, and launch it. On first launch the setup screen downloads the Python runtime (500 MB), FFmpeg, and the Demucs model (170 MB). Subsequent launches skip setup and start in seconds. No Python or system dependencies required.

macOS may show a Gatekeeper prompt on first open — right-click the app and choose Open to bypass it.

Windows

Zip GPU Approx. size
StemDeck-Windows-x64.zip CPU only ~700 MB
StemDeck-Windows-x64.NVIDIA.zip NVIDIA CUDA ~1.6 GB

Extract the zip anywhere, run StemDeck.exe. FFmpeg, the Demucs model, config, and logs live in a data/ folder next to StemDeck.exe, not in AppData; move or copy the whole extracted folder anywhere and it keeps working. On first launch the app verifies the bundled Python runtime and downloads FFmpeg and the Demucs model (170 MB) into that folder. Subsequent launches skip this and start in seconds. Everything is self-contained; no Python or system dependencies required. Your job/library data stays in its usual location (`/Documents/StemDeck` by default) and is relocatable anytime from Settings → StemData location.


Technologies

Platform Powered by Demucs CI: GitHub Actions

StemDeck is built on Python 3.12 managed via uv, with a FastAPI backend serving REST and Server-Sent Events. Stem separation uses Demucs (htdemucs_6s), Meta AI's open-source 6-stem neural network. The optional on-demand lead/backing vocal split runs the UVR-MDX-NET Karaoke 2 model via audio-separator, trained as part of the Ultimate Vocal Remover project by Anjok07. YouTube audio is fetched via yt-dlp; transcoding and mixing use FFmpeg. BPM detection and key analysis run on librosa; loudness measurement uses pyloudnorm (ITU-R BS.1770). The macOS and Windows desktop shells are Tauri v2 (Rust/WKWebView on macOS, Rust/WebView2 on Windows). The frontend is vanilla JS with the Web Audio API, no framework and no build step; waveforms are rendered on <canvas> using min/max sample rendering.

Thanks to the creators and maintainers of all the open-source libraries that make StemDeck possible.


Build from Source

macOS Native App

Requires Rust, Node.js, and Python 3.12. Builds a self-contained .app that downloads its own runtime on first launch.

# First time only — add the cross-compilation targets
rustup target add aarch64-apple-darwin   # Apple Silicon
rustup target add x86_64-apple-darwin    # Intel

# Build Apple Silicon
ARCH=arm64 scripts/macos/make-runtime-pack.sh
ARCH=arm64 scripts/macos/make-app.sh
ARCH=arm64 scripts/macos/make-dmg.sh

# Build Intel (requires Rosetta 2 and an x86_64 Python)
ARCH=x64 scripts/macos/make-runtime-pack.sh
ARCH=x64 scripts/macos/make-app.sh
ARCH=x64 scripts/macos/make-dmg.sh

The .app lands at desktop/src-tauri/target/<target>/release/bundle/macos/StemDeck.app. The DMG lands at .build/macos-dist/StemDeck-macOS-<arch>.dmg.

To run a fresh build directly without the DMG:

open desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app

If macOS blocks the app with a Gatekeeper prompt, run:

xattr -dr com.apple.quarantine desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app

Note: To test a clean first-launch during development, you can wipe previous app data first: rm -rf ~/Library/Application\ Support/StemDeck. Don't do this on a real install.


Web Server (macOS / Linux / Windows with Python 3.12+)

Prerequisites

Python 3.12 or newer, ffmpeg on your PATH, and uv. Around 170 MB of free disk for the Demucs model, which downloads automatically on first run.

macOS / Linux (one-shot)

git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
./run.sh setup     # installs ffmpeg + uv, runs uv sync
./run.sh start

Open http://localhost:8000.

setup uses Homebrew on macOS and apt-get on Debian/Ubuntu. For other Linux distros, install ffmpeg and uv manually, then run uv sync followed by ./run.sh start.

Windows (PowerShell)

Install prerequisites:

git clone https://github.com/stemdeckapp/stemdeck stemdeck; cd stemdeck
uv sync
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000 --timeout-graceful-shutdown 5

Open http://localhost:8000.

run.sh is macOS/Linux only. On Windows use the PowerShell commands above, or run inside WSL.

NVIDIA GPU (CUDA): install the CUDA-enabled torch build before starting:

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
$env:STEMDECK_DEMUCS_DEVICE = "cuda"
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000 --timeout-graceful-shutdown 5

Manual (any platform)

git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
uv sync
uv run uvicorn app.main:app --reload --timeout-graceful-shutdown 5

--timeout-graceful-shutdown bounds how long uvicorn waits for open connections when you stop it. StemDeck keeps a long-lived SSE stream open for the import queue while a browser tab is on the app, so without it Ctrl-C waits for that stream instead of exiting.

Docker

docker compose -f build/docker-compose.yml up --build

Stems land in ./jobs/ on the host. Demucs weights are cached in a named volume so they don't re-download on rebuild. Note: no GPU passthrough on macOS Docker.

A prebuilt image is published to GHCR. Tags: edge (rolling, rebuilt on every merge to main), latest (newest stable release), and X.Y.Z (pinned to a release).

docker run -d --name stemdeck -p 8000:8000 \
  -v /path/to/jobs:/app/jobs \
  -v /path/to/cache:/cache \
  -e STEMDECK_PERSIST_LIBRARY=1 \
  ghcr.io/stemdeckapp/stemdeck:edge

On a Linux host with an NVIDIA GPU (driver + NVIDIA Container Toolkit installed), add --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all and StemDeck auto-detects CUDA. The image already bundles CUDA-enabled torch, so no separate CUDA install is needed.

Unraid

StemDeck is available in Unraid Community Applications: open Apps, search "StemDeck", and install. Map the two volumes to persistent appdata paths:

The library is persistent by default (STEMDECK_PERSIST_LIBRARY=1), so tracks are never auto-deleted. For GPU acceleration, install the Nvidia Driver plugin, then set the container's Extra Parameters to --runtime=nvidia (the NVIDIA_VISIBLE_DEVICES and NVIDIA_DRIVER_CAPABILITIES variables are already in the template). CPU-only works with no extra configuration.

run.sh control script

./run.sh setup      # one-shot: install ffmpeg + uv, then uv sync
./run.sh start      # boots uvicorn in the background
./run.sh stop       # graceful shutdown
./run.sh restart    # stop + start
./run.sh status     # is it running?

How to Use

  1. On the import bar, click stem chips to choose which stems to extract (defaults to all 6).
  2. Paste a YouTube URL or drop an audio file (MP3, WAV, FLAC, OGG, MP4, M4A), then click Process.
  3. Wait through Uploading... / Downloading... → Analyzing... → Separating... → Mixing tracks....
  4. When done, the studio dashboard appears. If you picked a subset, the first lane is Original (full song minus your selection); the rest are your isolated stems.
  5. Mix: Play/Pause/Stop controls the master transport. M mutes a stem, S solos it (additive; multiple solos stay audible), Monitor solos only that stem and clears others. The volume fader moves 1:1 with drag; double-click resets to 0 dB; Shift+wheel gives coarse adjustment and plain wheel gives fine. The Reset, Mute, and Solo toolbar buttons act on all stems at once.
  6. Drag on the ruler to define a loop region; click Loop to enable. Use + / - /

stemdeck (stemdeckapp/stemdeck)

Searching Database…

这是什么?StemDeck 是一款免费开源的音轨分离工具:把一首歌拖进去,它就能把人声、鼓、贝斯、吉他、钢琴和其他声部分离成独立的音轨,可用于练习、扒谱、remix 等各种音频工作——而且完全在你自己的电脑上运行。
它是桌面应用,还是在浏览器里用的?两者都有。既有基于 Tauri v2 打包的 macOS 和 Windows 桌面应用,也有网页服务器模式(FastAPI + SSE)和 Docker 镜像,可以在本地运行或自己部署——都通过同一个交互式网页界面操作。
怎么把它跑起来?从 GitHub Releases 页面下载 DMG(macOS)或 zip(Windows)并启动。首次启动会下载内置的 Python 运行时(约 500 MB)、FFmpeg 和 Demucs 模型(约 170 MB);之后就不用再安装任何 Python 或系统依赖了。
和商业分离工具相比,它主要有哪些不足?一次只能处理一个任务,没有手机版,也没有变调、和弦识别、歌词之类的附加功能。开源的 Demucs 模型能分出 6 条音轨,但质量属于业余水准,不如成熟的商业服务。
我可以直接贴一个 YouTube 链接吗,还是得用自己的文件?都可以——既可以贴 YouTube 链接,也可以把本地的 MP3、WAV、FLAC、OGG、MP4 或 M4A 文件拖到导入栏里。不过它只是分离工具,不是下载器:不存储也不转发任何内容,所以请只处理你有权处理的内容。
我的音频会被上传到别处吗?不会,任何数据都不会离开你的电脑:分离、混音和分析全部在本地完成,无需账号,也没有上传。只有导入 YouTube 视频和首次下载约 170 MB 的模型时才需要联网。
它能分离出哪些音轨?最多六条:人声、鼓、贝斯、吉他、钢琴和其他,使用的是 Meta AI 的开源 Demucs htdemucs6s 模型。另外还可以通过 UVR-MDX-NET Karaoke 2 模型按需把人声进一步分成主唱和伴唱。
音轨分离出来之后能做什么?可以在类似 DAW 的多轨视图里混音,支持音量推子、静音、独奏、循环播放和波形缩放,然后导出单条音轨或自定义混音的 mix.wav。歌曲分析功能还会给出 BPM、调性和音阶、综合 LUFS 响度以及采样峰值。
它和 Moises、LALAL.AI 有什么不同?StemDeck 免费开源,而且完全在本地运行——不需要账号,没有配额限制,也不上传文件。那些商业应用是云端免费增值模式,音轨更多、音乐人工具更丰富,有手机版,界面也更精致,而且不管你的电脑配置如何,处理速度都很快。
能在服务器或 NAS 上运行吗?可以——GHCR 上发布了现成的 Docker 镜像(edge、latest 以及固定版本标签),StemDeck 也已上架 Unraid 社区应用商店。在装有 NVIDIA Container Toolkit 的 Linux 主机上,还能在 Docker 里获得 CUDA 加速。
Size
17.5 MB
Stars
4.1K
Age
5mo
Commits · 90 Days