完全本地运行的开源项目,可将音乐分离成独立音轨,支持本地部署。
免费、本地运行、开源的 AI 音轨分离工具。无需账号、无需上传、无需订阅。
将 MP3、WAV、FLAC、OGG/Opus、MP4 或 M4A 文件拖入,或粘贴一个 YouTube 链接,StemDeck 就能将音频拆分为最多 6 条音轨(人声、鼓、贝斯、吉他、钢琴、其他)。在 DAW 风格的多轨混音器中回放:静音、独奏、平衡电平、缩放波形、循环片段,导出单条音轨或自定义混音。一切都在本地运行。
这是什么?StemDeck 是一个音轨分离工具,而非下载器。它的主要用途是处理你已有的音频:把 MP3、WAV、FLAC、OGG 或 M4A 拖到导入栏上就开始。你Tube 支持是为了方便处理你有权限的内容。StemDeck 不会存储、缓存或重新分发任何下载的内容。所有操作都在本地完成,没有任何内容离开你的机器。
StemDeck 是云端音轨分离工具(如 Moises 和 LALAL.AI)的免费、开源替代品:无需账号、无配额、无上传、无订阅。如果你需要音轨用于个人学习,且偏好本地免费的方式,StemDeck 可以满足你。如果你需要更精良的效果、移动端应用或更深入的音乐人工具,商用产品更合适。

StemDeck 完全免费,不接受任何下方列出的个人或组织的金钱、赞助或资助。我分享这些创作者、艺术家和社区纯粹是为了带给你快乐——向你介绍那些做着美好作品的人们。去认识他们吧 ❤️
通过 Demucs htdemucs_6s 实现 6 音轨分离,并自动检测最佳 Torch 设备(NVIDIA 上为 CUDA,Apple Silicon 上为 MPS,备用为 CPU)。
支持 YouTube 和本地文件导入。粘贴 YouTube 链接,或直接将 MP3、WAV、FLAC、OGG/Opus、MP4 或 M4A 拖到导入栏上。
DAW 风格的波形编辑器,包含所有音轨的 min/max 采样渲染、共享归一化、放大/缩小/适应、标尺拖拽循环、金色播放头叠加,以及音轨对齐轨道。
音轨子集提取。点击音轨芯片选择要保留的音轨。从"全选"点击会切换到"仅这一个";后续点击为添加或移除。
"原始"伴奏轨道。当你选择一个子集时,第 7 条轨道包含补集(完整歌曲减去所选音轨),非常适合 A/B 对比而不产生叠加。
可下载的所选混音。将你选择的音轨通过 ffmpeg amix 求和,生成单一的 mix.wav。
每条音轨的混音器:音量推子、静音、独奏,以及每条音轨的"监听"(仅该音轨独奏)。状态在预览混音器和音轨侧边栏之间同步。
每条音轨的实时 VU 表。通过 Web Audio 分析器实现后增益 RMS,带峰值保持和缓慢回落。
歌曲分析包括 BPM(librosa 节拍追踪)、调性、音阶及置信度(Albrecht-Shanahan 谱),整合的 LUFS(BS.1770),以及以 dBFS 为单位的采样峰值。
可取消的任务。在管道中途取消时,Runner 会立即终止子进程、删除部分任务目录,并恢复到就绪状态。
库面板,支持基于文件夹的曲目组织、拖拽、搜索和回收站。
StemDeck 无意与商业音轨分离产品竞争。它很好地覆盖了核心用例,并在那里止步。下面这张表是为了让你在事后发现差距之前就能做出明智的选择。
如果你需要速度、音质、移动端访问或额外的音乐人工具,商用产品值得付费。如果你需要音轨用于个人学习、偏好保持音频隐私,或者只是想要一个本地运行、无任何束缚的东西,StemDeck 就够了。
预构建的安装程序和压缩包附在每个 GitHub Release 上。
打开 DMG,将 StemDeck 拖到应用程序,然后启动。第一次启动时,设置屏幕会下载 Python 运行时(约 500 MB)、FFmpeg 和 Demucs 模型(约 170 MB)。后续启动跳过设置,几秒内即可启动。无需 Python 或系统依赖。
macOS 可能在首次打开时显示 Gatekeeper 提示——右键点击应用并选择"打开"即可绕过。
将压缩包解压到任意位置,运行 StemDeck.exe。FFmpeg、Demucs 模型、配置和日志位于 StemDeck.exe 旁边的 data/ 文件夹中,而非 AppData;将整个解压文件夹移动或复制到任何位置,它都能继续工作。第一次启动时,应用会验证捆绑的 Python 运行时,并下载 FFmpeg 和 Demucs 模型(约 170 MB)到该文件夹。后续启动跳过此步骤,几秒内即可启动。所有内容都是自包含的;无需 Python 或系统依赖。你的任务/库数据保存在其通常位置(默认在 ~/Documents/StemDeck),并可随时通过设置 → StemData 位置重新定位。
StemDeck 基于 Python 3.12 构建(通过 uv 管理),使用 FastAPI 后端提供 REST 和 Server-Sent Events。音轨分离使用 Demucs(htdemucs_6s),这是 Meta AI 的开源 6 音轨神经网络。可选的按需人声/伴奏分离使用 UVR-MDX-NET Karaoke 2 模型(通过 audio-separator 运行),该模型是 Ultimate Vocal Remover 项目的一部分,由 Anjok07 训练。YouTube 音频通过 yt-dlp 获取;转码和混音使用 FFmpeg。BPM 检测和调性分析在 librosa 上运行;响度测量使用 pyloudnorm(ITU-R BS.1770)。macOS 和 Windows 桌面壳由 Tauri v2 构建(macOS 上为 Rust/WKWebView,Windows 上为 Rust/WebView2)。前端是纯 JS + Web Audio API,无框架、无构建步骤;波形通过 <canvas> 使用 min/max 采样渲染。
感谢所有使 StemDeck 成为可能的开源库的创建者和维护者。
需要 Rust、Node.js 和 Python 3.12。构建一个自包含的 .app,在首次启动时下载自己的运行时。
# 首次只需——添加交叉编译目标
rustup target add aarch64-apple-darwin # Apple Silicon
rustup target add x86_64-apple-darwin # Intel
# 构建 Apple Silicon
ARCH=arm64 scripts/macos/make-runtime-pack.sh
ARCH=arm64 scripts/macos/make-app.sh
ARCH=arm64 scripts/macos/make-dmg.sh
# 构建 Intel(需要 Rosetta 2 和 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
.app 位于 desktop/src-tauri/target/<target>/release/bundle/macos/StemDeck.app。DMG 位于 .build/macos-dist/StemDeck-macOS-<arch>.dmg。
不通过 DMG 直接运行新构建:
open desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app
如果 macOS 用 Gatekeeper 提示阻止了应用,运行:
xattr -dr com.apple.quarantine desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app
注意:要测试开发期间的干净首次启动,可以先擦除旧应用数据:rm -rf ~/Library/Application\ Support/StemDeck。请不要在真实安装上这样做。
Web 服务端(macOS / Linux / Windows,需要 Python 3.12+)
Python 3.12 或更高版本,PATH 上有 ffmpeg,以及 uv。约需 170 MB 可用磁盘空间存放 Demucs 模型(首次运行时自动下载)。
git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
./run.sh setup # 安装 ffmpeg + uv,运行 uv sync
./run.sh start
setup 在 macOS 上使用 Homebrew,在 Debian/Ubuntu 上使用 apt-get。对于其他 Linux 发行版,请手动安装 ffmpeg 和 uv,然后运行 uv sync,再运行 ./run.sh start。
安装前提条件:
uv — winget install astral-sh.uv
ffmpeg — winget install Gyan.FFmpeg(或 Chocolatey:choco install ffmpeg)
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
run.sh 仅适用于 macOS/Linux。Windows 上使用上面的 PowerShell 命令,或在 WSL 内运行。
NVIDIA GPU(CUDA):启动前安装 CUDA 启用版的 torch 构建:
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
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 限制了你停止 uvicorn 时等待开放连接的时间。StemDeck 在浏览器标签页打开应用时保持一个长连接的 SSE 流,所以在没有此参数的情况下 Ctrl-C 会等待该流而不是退出。
docker compose -f build/docker-compose.yml up --build
音轨会落在主机的 ./jobs/ 下。Demucs 权重缓存在命名卷中,因此重新构建时不会重新下载。注意:macOS Docker 没有 GPU 直通。
预构建镜像发布到 GHCR。标签:edge(滚动版本,每次合并到 main 时重建)、latest(最新稳定版本)和 X.Y.Z(固定到某个发布版本)。
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
在有 NVIDIA GPU 的 Linux 主机上(已安装驱动 + NVIDIA Container Toolkit),添加 --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all,StemDeck 会自动检测 CUDA。镜像已经捆绑了 CUDA 启用版的 torch,因此无需单独安装 CUDA。
StemDeck 在 Unraid 社区应用中可用:打开 Apps,搜索"StemDeck"并安装。将两个卷映射到持久化的 appdata 路径:
/app/jobs -> /mnt/user/appdata/stemdeck/jobs(库 + 音轨)
/cache -> /mnt/user/appdata/stemdeck/cache(模型权重)
库默认是持久化的(STEMDECK_PERSIST_LIBRARY=1),因此曲目永远不会自动删除。要启用 GPU 加速,安装 Nvidia Driver 插件,然后将容器的额外参数设置为 --runtime=nvidia(NVIDIA_VISIBLE_DEVICES 和 NVIDIA_DRIVER_CAPABILIES 变量已在模板中)。纯 CPU 无需额外配置即可工作。
./run.sh setup # 一次性:安装 ffmpeg + uv,然后 uv sync
./run.sh start # 在后台启动 uvicorn
./run.sh stop # 优雅关闭
./run.sh restart # stop + start
./run.sh status # 是否在运行?
在导入栏上,点击音轨芯片选择要提取哪些音轨(默认全选 6 条)。
粘贴 YouTube 链接或拖入音频文件(MP3、WAV、FLAC、OGG、MP4、M4A),然后点击 Process。
等待完成:Uploading... / Downloading... → Analyzing... → Separating... → Mixing tracks....
完成后,工作室面板出现。如果你选择了子集,第一条轨道是 Original(完整歌曲减去你的选择);其余的是你分离出的独立音轨。
混音:播放/暂停/停止控制主传输。M 静音一条音轨,S 将其独奏(可叠加;多个独奏都保持可听),Monitor 仅独奏该音轨并清除其他。音量推子与拖拽 1:1 移动;双击重置为 0 dB;Shift+滚轮进行粗调, plain 滚轮进行细调。Reset、Mute 和 Solo 工具栏按钮一次性作用于所有音轨。
在标尺上拖拽定义循环区域;点击 Loop 启用。使用 + / - / Fit 或 Ctrl/Cmd+滚轮缩放。
底部的 Download Mix 给你一个所选音轨求和后的 WAV 文件。
键盘快捷键:Space 播放/暂停 · [ 快退 5 秒 · ] 快进 5 秒 · L 循环 · I 循环入点 · O 循环出点
run.sh 还读取以下环境变量:HOST(默认 127.0.0.1)、PORT(默认 8765)、RELOAD=1(启用 uvicorn 自动重载用于开发)、FOREGROUND=1(在前台运行而非后台)。
ffmpeg: command not found:安装 ffmpeg 并用 ./run.sh restart 重启。
WARNING: [youtube] No supported JavaScript runtime:安装 deno(macOS 上为 brew install deno)并重启。没有它下载仍然有效,但可能选择次优格式。
首次分离非常慢:Demucs 在首次运行时下载 htdemucs_6s 权重(约 170 MB);之后会被缓存。
Demucs 仅在 CPU 上运行:检查启动日志中的 device=mps 或 device=cuda。如果你看到 cpu,你的 torch 安装可能仅是 CPU 版本。
页面在任务中途刷新:任务会在服务端继续运行。等待它完成,然后重新提交。
./run.sh: Permission denied:运行 chmod +x run.sh。
jobs/<job_id>/
└── stems/
├── vocals.wav # 6 条 Demucs 音轨(始终存在)
├── drums.wav
├── bass.wav
├── guitar.wav
├── piano.wav
├── other.wav
├── original.wav # 未选音轨的总和(仅子集)
└── mix.wav # 所选音轨的 ffmpeg amix(仅子集)
任务状态存储在内存中。重启服务器后任务列表会重置,但文件会保留在磁盘上。旧目录会自动清理(TTL 24 小时,可配置)。
StemDeck 是一个本地音频音轨分离工具,旨在用于个人学习、研究和实验。它不是下载服务。它不会存储、缓存或重新分发任何音频内容。所有处理都在用户自己的机器上运行,没有任何音频被传输到任何地方。
YouTube URL 支持通过 yt-dlp 提供,作为一种便利。自动下载可能违反 YouTube 的服务条款。你,作为用户,有责任确保你有权处理你提交的任何音频,遵守你下载内容的任何网站的服务条款,并尊重你所用材料的版权。
你还负责遵守本项目所依赖的底层工具的许可(yt-dlp、Demucs、FFmpeg、PyTorch,以及 pyproject.toml 中列出的其他工具)。
StemDeck 的作者以此软件"按原样"提供,不提供任何种类的保证,且不接受任何因其使用方式而产生的责任或义务。
环境变量
这些用于开发和测试。发布版本只识别标记为"release"的变量。
问题、功能建议和 Pull Request 欢迎参与。参见开放问题以了解计划中的内容。