stemkit README

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

StemKit

Split any YouTube song into isolated stems — vocals, drums, bass, guitar, piano and more — right on your machine.

Search YouTube or paste a link, pick the instruments you want, and play the result like a mini DAW: the video on one side, every stem on its own fader, all perfectly in sync. Karaoke, acapellas and instrumentals are one click away.

Everything runs locally — no accounts, no cloud, no API keys.

platform local

StemKit splitting Queen's Bohemian Rhapsody into six stems — video player, presets and color-coded waveform lanes

Features

Download

Grab installers from Releases:

First launch creates a private Python environment and downloads the separation engine (~2 GB) — one time. ffmpeg is bundled — nothing else to install.

Optional quality upgrades live behind a gear icon in the app (Settings), each with its own one-time download:

macOS first launch: builds are signed with a Developer ID but not notarized, so macOS may say it "cannot verify the developer". One-time fix: System Settings → Privacy & Security → Open Anyway (or xattr -cr /Applications/StemKit.app).

Windows: SmartScreen may warn on first run — "More info → Run anyway".

Requirements

Develop

npm install
npm run dev

Wrong Node version? Scripts auto-relaunch with a suitable one (nvm / nvm-windows).

Build & release

bash scripts/fetch-ffmpeg.sh        # mac/linux (one time)
powershell scripts/fetch-ffmpeg.ps1 # windows (one time)

npm run dist        # mac dmg -> release/
npm run dist:win    # windows nsis+zip -> release/
npm run dist:linux  # linux AppImage+deb (x64) -> release/
npm run dist:all    # both (on the matching OS)

Linux: building the .deb needs dpkg + fakeroot on the host; running the .AppImage needs FUSE. In-app self-update works on the AppImage — .deb installs update by re-downloading.

Releases are built by GitHub Actions:

macOS builds are Developer-ID-signed when the certificate is available — see Signing in CI below for the one-time setup, plus optional notarization.

Signing in CI (one-time setup)

Local builds sign with your keychain cert automatically. CI runners have empty keychains, so hand them the certificate via repo secrets:

  1. Keychain Access → My Certificates → right-click Developer ID Application: ... → Export → .p12 (set an export password)
  2. Base64 it and add these repo secrets:
    • CSC_MAC_P12 — the base64 string: base64 -i developer-id.p12 | pbcopy
    • CSC_MAC_PASSWORD — the export password from step 1
  3. Optional (full notarization, zero Gatekeeper prompts): add APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID and set repo variable ENABLE_NOTARIZATION to true (Settings → Secrets and variables → Actions → Variables). Requires an active Apple Developer membership — Apple's notary service rejects expired accounts.

Without these secrets CI falls back to ad-hoc signing (app runs, but Gatekeeper complains on download).

How it works

YouTube URL ──► yt-dlp (+JS runtime) ──► bundled ffmpeg ──► mel-band roformer (vocals) ─┐
                                        │                                               ├─► stems/*.wav
                                        └─────────────► demucs htdemucs ────────────────┘
                                             (drums/bass/other, shift-averaged)

Electron renderer ◄──── IPC events ─────┘
video iframe (muted) + Web Audio stem playback · master clock = the audio itself

Notes

Layout

src/main         Electron main process (pipeline, env bootstrap, library)
src/preload      IPC bridge
src/renderer     React UI (player, sync engine, waveforms)
python/          separate.py (demucs) and roformer.py (neural vocals) with JSON progress output
python/vendor/   patched model code — see python/vendor/README.md
scripts/         node runner, ffmpeg fetchers
build/           icon sources

stemkit (danielravina/stemkit)

Searching Database…

1.1K ·GitHub
这是什么?StemKit 可以把任何 YouTube 歌曲分离成独立的音轨——人声、鼓、贝斯、吉他、钢琴等——完全在你自己的机器上运行,并带有迷你 DAW 风格的播放器,可以对每条音轨进行混音/静音/独奏。
这是网页应用,还是要安装到我电脑上的东西?它是一款用 Electron 和 TypeScript 构建的原生桌面应用,以安装包(DMG、EXE、AppImage/deb)形式分发,不是网页服务。
怎么让它跑起来?从 GitHub Releases 页面下载对应的安装包——Apple Silicon Mac 用 DMG,Windows 用 EXE 安装程序或便携 zip,Linux 用 AppImage/deb——然后运行。
需要我自己先安装 Python 或 ffmpeg 吗?不需要——首次启动时 StemKit 会按需自动下载专用 Python 运行时(分离引擎需一次性下载约 2GB),ffmpeg 则随应用捆绑。
安装上有什么坑需要提前知道?在 macOS 上应用已签名但未经公证,所以在你手动允许之前,Gatekeeper 会提示「无法验证开发者」;在 Windows 上,SmartScreen 首次运行时可能会警告,需要选择「仍要运行」。
它能用于 Intel Mac 吗,还是只支持 Apple Silicon?macOS(12+)只支持 Apple Silicon Mac;同时支持 Windows 10/11 x64 和 Linux x64。
设置好之后还需要联网吗?一次性设置(运行时 + 分离引擎)完成后,StemKit 就完全离线运行——只有最初搜索/下载 YouTube 音频本身才需要联网。
我的音频或 YouTube 链接会被发送到别处吗?不会——包括分离本身在内的一切都在你的机器上本地运行,不涉及任何账号、云服务或 API 密钥。
用它下载 YouTube 音频真的合法吗?项目本身采用 MIT 许可,但 README 坦言,从 YouTube 提取音频违反其面向公开产品的服务条款,所以它仅用于个人用途。
必须要有 NVIDIA GPU 吗,还是 CPU 上也能跑?GPU 能加速(Apple Silicon 走 MPS,NVIDIA 走 CUDA),但如果没有 GPU,分离也可以在普通 CPU 上运行。
StemKit 能分离哪些乐器?人声、鼓、贝斯、吉他、钢琴等——你选择乐器,StemKit 会自动为它们选择合适的分离引擎。
一键预设有哪些?全部、卡拉OK、纯人声(Acapella)和鼓 + 贝斯预设,无需手动选择即可立刻得到你想要的音轨组合。
可以导出分离出的音轨吗?可以,任何单条音轨或全部音轨都可以导出为 WAV 文件。
有更高质量的分离选项吗?有,在设置齿轮图标中可选的一次性下载可以添加 Mel-Band Roformer 录音室级人声(+913MB)、微调过的 Demucs 模型(约 +320MB,最慢可达 4 倍),以及额外的精修处理(最慢可达 3 倍)。
Size
12.6 MB
Stars
1.1K
Age
1mo
Commits · 90 Days