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 音高轮廓),以及综合响度测量(通过pyloudnormITU-R BS.1770)。 - 前端与 DAW 混音台:无需繁重的前端框架构建。采用原生 JavaScript 配合 HTML5
<canvas>进行最大/最小采样渲染,并结合 Web Audio API 实现增益后 RMS 监测、独奏/静音逻辑以及相位精准的循环播放。 - 桌面端外壳:基于 Tauri v2 构建(Rust + 系统原生 WebView:macOS 上的 WKWebView 与 Windows 上的 WebView2)。
核心功能
- 6 轨分离:支持拖拽导入标准无损及有损压缩格式(
MP3、WAV、FLAC、OGG/Opus、MP4、M4A),或直接粘贴 YouTube 链接。 - 智能子集提取:选择部分音轨(例如仅提取贝斯和鼓),StemDeck 会自动生成一个包含互补混音(完整混音减去所选音轨)的
Original伴奏轨,避免声音叠加重叠。 - 非破坏性浏览器内混音:每个分轨均支持实时增益控制、独奏、静音和监听控制,并配备实时 VU 电平表。
- 即时混音导出:通过 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.wav、bass.wav、drums.wav 等) |
POST |
/api/jobs/{id}/cancel |
立即终止运行中的子进程管道并清理临时磁盘空间 |
PATCH |
/api/jobs/{id}/sections |
保存标记点边界与波形标注 |
总结
如果你需要深度移动端集成或专属的 10 轨分离模型,商业 SaaS 平台仍是不错的选择。但对于追求极致隐私、无使用额度限制以及本地离线处理的制作人、扒谱师和音乐人而言,StemDeck 提供了令人惊艳的开源 DAW 风格工作流程。