StemDeck:基于 Demucs 和 Tauri 的免费本地 6 音轨 AI 音频分离工具

StemDeck 是一款开源、本地优先的分轨提取工作台,无需云端订阅或文件上传,即可分离人声、鼓点、贝斯、吉他和钢琴。

像 Moises、LALAL.AI 和 Splitter.ai 这类基于云端的分轨工具,让音乐人、混音师和制作人能够轻松解构音轨。然而,它们几乎总是伴随着严苛的使用额度限制、针对未发布音频的隐私担忧以及持续的按月订阅费用。

StemDeck 通过提供本地优先的音频分离工作台解决了这些痛点。它直接在你的本地设备上提取多达六个独立音轨(人声、鼓、贝斯、吉他、钢琴及其他),完全无需依赖云端、无需注册账号、无需上传任何数据。


StemDeck 的底层架构

StemDeck 将高性能机器学习模型与易用的 Web 原生工作台 UI 相结合,并封装在一个轻量级的跨平台桌面应用外壳中。

+-------------------------------------------------------------+
|                 StemDeck Desktop (Tauri v2)                 |
|  +-------------------------------------------------------+  |
|  |            Frontend (Vanilla JS + Web Audio)          |  |
|  |   - Multi-lane Canvas Waveforms  - Per-stem VU Meters |  |
|  |   - Loop Regions & Scrubbing     - Live Mixer Bus     |  |
|  +-------------------------------------------------------+  |
|                             │ SSE / REST API                |
|  +──────────────────────────▼────────────────────────────+  |
|  |                 FastAPI Backend (Python 3.12)         |  |
|  |   - Demucs (htdemucs_6s) [CUDA / MPS / CPU]           |  |
|  |   - UVR-MDX-NET Karaoke 2 (Lead/Backing Vocal Split)  |  |
|  |   - Librosa (BPM & Key) | Pyloudnorm (BS.1770 LUFS)   |  |
|  |   - FFmpeg Transcoding & Custom Mixdown Engine        |  |
|  +-------------------------------------------------------+  |
+-------------------------------------------------------------+
  • 分离引擎:通过 PyTorch 利用 Meta AI 的 htdemucs_6s 模型。它会自动检测并绑定 Linux/Windows 上的 NVIDIA CUDA、macOS 上的 Apple Silicon MPS,或者平稳回退至 CPU 线程。
  • 人声细分:支持通过 UVR-MDX-NET Karaoke 2 模型(借助 audio-separator)进行可选的二次处理,以进一步分离主唱与和声。
  • 音频分析:自动提取音轨元数据,包括 BPM(通过 librosa)、调式与音阶置信度(通过 Albrecht-Shanahan 音高轮廓),以及综合响度测量(通过 pyloudnorm ITU-R BS.1770)。
  • 前端与 DAW 混音台:无需繁重的前端框架构建。采用原生 JavaScript 配合 HTML5 <canvas> 进行最大/最小采样渲染,并结合 Web Audio API 实现增益后 RMS 监测、独奏/静音逻辑以及相位精准的循环播放。
  • 桌面端外壳:基于 Tauri v2 构建(Rust + 系统原生 WebView:macOS 上的 WKWebView 与 Windows 上的 WebView2)。

核心功能

  1. 6 轨分离:支持拖拽导入标准无损及有损压缩格式(MP3WAVFLACOGG/OpusMP4M4A),或直接粘贴 YouTube 链接。
  2. 智能子集提取:选择部分音轨(例如仅提取贝斯和鼓),StemDeck 会自动生成一个包含互补混音(完整混音减去所选音轨)的 Original 伴奏轨,避免声音叠加重叠。
  3. 非破坏性浏览器内混音:每个分轨均支持实时增益控制、独奏、静音和监听控制,并配备实时 VU 电平表。
  4. 即时混音导出:通过 FFmpeg amix 实时生成合并的 mix.wav 音频,或导出单独分离出的音频文件。

快速上手与安装

1. 原生桌面端安装包

macOS(Apple Silicon arm64 和 Intel x64)以及 Windows(CPU 或预打包 CUDA 版本)的预编译安装包可直接在 GitHub Releases 下载。首次启动时,应用会配置所需环境并将模型权重文件(约 170 MB)下载到本地数据目录。

2. 使用 Python 和 UV 在本地运行

如果你更倾向于直接运行 Web 服务器:

# 克隆代码仓库
git clone https://github.com/stemdeckapp/stemdeck && cd stemdeck

# macOS / Linux 自动化安装(需要 ffmpeg 和 uv)
./run.sh setup
./run.sh start

Windows PowerShell(配备 NVIDIA GPU):

# 使用 uv 安装依赖项
uv sync
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

# 设置设备并启动 FastAPI 服务器
$env:STEMDECK_DEMUCS_DEVICE = "cuda"
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000 --timeout-graceful-shutdown 5

3. Docker 部署

运行启用了 GPU 透传的官方 GHCR 容器:

docker run -d --name stemdeck \
  -p 8000:8000 \
  --runtime=nvidia \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -e STEMDECK_PERSIST_LIBRARY=1 \
  -v /local/jobs:/app/jobs \
  -v /local/cache:/cache \
  ghcr.io/stemdeckapp/stemdeck:edge

REST API 与任务工作流

StemDeck 提供了简洁的 REST 接口以及用于任务监控的 Server-Sent Events (SSE):

方法 端点 描述
POST /api/jobs 提交本地文件分块上传或 { "url": "...", "stems": [...] }
GET /api/jobs/{id}/events 发送任务进度(下载、分析、分离、混音)的 SSE 流
GET /api/jobs/{id}/stems/{stem}.wav 流式传输指定分轨音频(vocals.wavbass.wavdrums.wav 等)
POST /api/jobs/{id}/cancel 立即终止运行中的子进程管道并清理临时磁盘空间
PATCH /api/jobs/{id}/sections 保存标记点边界与波形标注

总结

如果你需要深度移动端集成或专属的 10 轨分离模型,商业 SaaS 平台仍是不错的选择。但对于追求极致隐私、无使用额度限制以及本地离线处理的制作人、扒谱师和音乐人而言,StemDeck 提供了令人惊艳的开源 DAW 风格工作流程。

项目来源

stemdeckapp/stemdeck: Stemdeck is an modern stem extraction platform for musicians,producers and hobbyists, designed to isolate vocals, drums, bass, piano and guitar for practice, transcription, remixing, and creative audio workflows through a modern and interactive interface