项目文件夹

文件
wehub-resource-sync 572aca14f1
CI / deps-audit (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / js-syntax (push) Has been cancelled
CI / sast-bandit (push) Has been cancelled
CI / trivy (push) Has been cancelled
Docker Publish / build-and-push (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 10:58:55 +00:00

436 行
23 KiB
Markdown

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
<!-- WEHUB_ZH_README -->
> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/stemdeckapp/stemdeck) · [上游 README](https://github.com/stemdeckapp/stemdeck/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
<div align="center">
<img src="imgs/stemdeck-svg-assets/stemdeck-logo-stacked.svg" alt="StemDeck" width="515" />
**免费、本地音轨分离。无需账号。无需上传。无需订阅。**
<div align="center">
<a href="https://github.com/stemdeckapp/stemdeck/actions/workflows/ci.yml"><img src="https://github.com/stemdeckapp/stemdeck/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://github.com/stemdeckapp/stemdeck/stargazers"><img src="https://img.shields.io/github/stars/stemdeckapp/stemdeck?style=flat-square" alt="GitHub Stars"></a>
<a href="https://github.com/stemdeckapp/stemdeck/releases"><img src="https://img.shields.io/github/downloads/stemdeckapp/stemdeck/total?style=flat-square&color=52c65f" alt="Total Downloads"></a>
<a href="https://github.com/stemdeckapp/stemdeck/releases/latest"><img src="https://img.shields.io/github/v/release/stemdeckapp/stemdeck?style=flat-square" alt="Latest Release"></a>
<a href="https://github.com/stemdeckapp/stemdeck/blob/main/LICENSE"><img src="https://img.shields.io/github/license/stemdeckapp/stemdeck?style=flat-square" alt="License"></a>
</div>
<br>
<p align="center"><sub>加入社区</sub></p>
<div align="center">
<a href="https://github.com/stemdeckapp/stemdeck"><img src="https://img.shields.io/badge/GitHub-stemdeckapp-181717?style=flat-square&logo=github&logoColor=white" alt="GitHub"></a>
<a href="https://discord.gg/2MVsWqaPRe"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
<a href="https://www.reddit.com/r/StemDeckApp/"><img src="https://img.shields.io/badge/Reddit-r%2FStemDeckApp-FF4500?style=flat-square&logo=reddit&logoColor=white" alt="Reddit"></a>
<a href="https://www.instagram.com/stemdeck"><img src="https://img.shields.io/badge/Instagram-stemdeck-E4405F?style=flat-square&logo=instagram&logoColor=white" alt="Instagram"></a>
<a href="https://x.com/StemDeckApp"><img src="https://img.shields.io/badge/X-StemDeckApp-000000?style=flat-square&logo=x&logoColor=white" alt="X"></a>
<a href="https://stemdeck.app"><img src="https://img.shields.io/badge/Website-stemdeck.app-000000?style=flat-square&logo=safari&logoColor=white" alt="Website"></a>
</div>
</div>
<br>
拖入 MP3、WAV 或 FLAC 文件,或粘贴 YouTube URL,StemDeck 可将音频拆分为最多六个音轨(vocals 人声、drums 鼓、bass 贝斯、guitar 吉他、piano 钢琴、other 其他)。在 DAW 风格的多轨混音器中回放:静音、独奏、平衡电平、缩放波形、循环某段区域,并导出单个音轨或自定义混音。一切都在你自己的机器上本地运行。
> **这是什么?** StemDeck 是一款音轨分离工具,而不是下载器。它的主要工作是处理你已拥有的音频:将 MP3、WAV 或 FLAC 拖到导入栏即可开始。YouTube 支持是为你有权处理的内容提供的便利功能。StemDeck 不会存储、缓存或再分发任何下载内容。一切都在本地完成,没有任何数据离开你的机器。
> StemDeck 是 Moises、LALAL.AI 等云端音轨分离服务的免费开源替代方案:无需账号、无配额限制、无需上传、无需订阅。如果你想为个人学习获取音轨,并倾向于保持本地、免费,StemDeck 能满足你的需求。如果你需要更精致的体验、移动应用或更深入的音乐人工具,商业产品会更合适。
![StemDeck screenshot](imgs/screenshot/stemdeck.png)
## 我们推荐
StemDeck 免费,且**不接受任何资金、赞助或资助**——既不来自用户,也不来自下方列出的任何人。我们分享这些创作者和艺术家,纯粹是为了向你介绍那些做着美好工作的优秀之人。去认识他们吧 ❤️
| 名称 | 他们在做什么 | 链接 |
|---|---|---|
| Dlima Guitars | 定制吉他与贝斯 | [@dlimaguitars](https://www.instagram.com/dlimaguitars) |
| Lisbon Guitar Works | 吉他制作 | [dlimaguitars.com](https://dlimaguitars.com) |
| Joao Gaspar | 制作人/电影配乐师,巡演/录音室乐手 | [@jay_glaspar](https://www.instagram.com/jay_glaspar) |
| Kris Luthier | 制琴师与乐器维修,里斯本 | [@krisluthier](https://www.instagram.com/krisluthier) |
| Thomann | 在线音乐商店 | [@thomann.music](https://www.instagram.com/thomann.music) |
| Analog4Lyfe | 模拟音乐设备 | [@analog4lyfe](https://www.instagram.com/analog4lyfe) |
| Empress Effects | 效果踏板 | [empresseffects.com](https://empresseffects.com) |
---
## 功能
通过 Demucs `htdemucs_6s` 实现**六轨分离**,自动检测最佳 Torch 设备(NVIDIA 上使用 CUDA,Apple Silicon 上使用 MPS,CPU 作为后备)。
**YouTube 与本地文件导入。** 粘贴 YouTube URL,或将 MP3、WAV 直接拖到导入栏。
**DAW 风格波形编辑器**,所有音轨均采用 min/max 采样渲染、共享归一化、放大/缩小/适应(Fit)、在标尺上拖拽循环、金色播放头叠加,以及音轨对齐的轨道。
**音轨子集提取。** 点击音轨标签选择要保留的音轨。从「全部选中」状态点击会切换为「仅此项」;后续点击可添加或移除。
**「原始」伴奏轨。** 选择子集时,第 7 条轨道包含补集(完整歌曲减去所选音轨),非常适合 A/B 参考对比,且无需重复加载。
**可下载的选定混音。** 一个 `mix.wav`,仅包含你选定的音轨,通过 ffmpeg amix 求和混音。
**逐轨混音器**,每条音轨配有音量推子、静音、独奏和「监听」(仅独奏)功能。预览混音器与音轨侧栏之间的状态同步。
**实时 VU 表**,每条音轨独立显示。通过后增益 RMS(Web Audio 分析器)实现,带峰值保持与缓慢回落。
**歌曲分析**,包括 BPM(librosa 节拍追踪器)、调性、音阶与置信度(Albrecht-Shanahan profiles)、集成 LUFSBS.1770)以及 dBFS 采样峰值。
**可取消的任务。** 可在处理流程中途取消;运行器会立即终止活动子进程、删除部分任务目录,并返回就绪状态。
**曲库面板**,支持基于文件夹的曲目组织、拖放、搜索与回收站。
---
## 如实对比
StemDeck 并非要与商业音轨分离产品竞争。它很好地覆盖了核心使用场景,仅此而已。本表旨在帮助你做出知情选择,而不是事后才发现差距。
| | StemDeck | Moises / LALAL.AI / 类似产品 |
|---|---|---|
| **价格** | 永久免费 | 免费增值;常规使用需积分或订阅 |
| **托管方式** | 完全在你的机器上运行 | 云端;音频必须上传到其服务器 |
| **账号 / 登录** | 无 | 必需 |
| **是否需要互联网** | 仅用于 YouTube 下载和首次模型获取(约 170 MB,之后缓存) | 始终需要;无法离线使用 |
| **隐私** | 音频永不离开你的机器 | 音频被上传至第三方服务器处理 |
| **数据保留** | 由你控制;随时可删除 | 受其隐私政策与保留期限约束 |
| **音轨模型** | Demucs `htdemucs_6s`(开源,Meta AI) | 专有模型,定期更新,通常质量更高 |
| **音轨数量** | 6vocals 人声、drums 鼓、bass 贝斯、guitar 吉他、piano 钢琴、other 其他) | 视服务与套餐而定,最多 10 轨 |
| **输入格式** | YouTube URL、MP3、WAV | MP3、WAV、FLAC、M4A 等,视服务而定 |
| **处理速度** | 取决于你的硬件;有 GPU 时快,仅 CPU 时慢 | 无论你的硬件如何都很快(在其服务器上运行) |
| **批量处理** | 一次一个任务 | 有,付费套餐支持 |
| **移动应用** | 无 | iOS 与 Android |
| **额外功能** | 无(无移调、和弦检测、歌词、节拍器、BPM 敲击) | 有,因产品而异 |
| **精致度** | 实用、爱好者级 UI | 精致、生产级应用 |
| **源代码** | 开源,可 fork,可自托管 | 闭源 |
如果你需要速度、质量、移动端访问或额外的音乐人工具,商业产品物有所值。如果你只是想为个人学习获取音轨、希望保持音频私密,或只是想要一款无附加条件的本地运行工具,StemDeck 已足够。
---
## 下载
每个 [GitHub Release](https://github.com/stemdeckapp/stemdeck/releases). 都附有预构建安装包和 zip 压缩包。
**macOS**
| DMG | GPU | 芯片 |
|---|---|---|
| `StemDeck-macOS-arm64.dmg` | Apple Silicon (MPS) | M1 及更新机型 |
| `StemDeck-macOS-x64.dmg` | 仅 CPU | Intel |
打开 DMG,将 StemDeck 拖入 Applications(应用程序)文件夹并启动。首次启动时,设置界面会下载 Python 运行时(约 500 MB)、FFmpeg 以及 Demucs 模型(约 170 MB)。之后再次启动会跳过设置,几秒内即可进入。无需安装 Python 或任何系统依赖。
macOS 首次打开时可能会弹出 Gatekeeper 提示——右键点击应用并选择“打开”即可绕过。
**Windows**
| Zip | GPU | 大约大小 |
|---|---|---|
| `StemDeck-Windows-x64.zip` | 仅 CPU | ~700 MB |
| `StemDeck-Windows-x64.NVIDIA.zip` | NVIDIA CUDA | ~1.6 GB |
将 zip 解压到任意位置,运行 `StemDeck.exe`。首次启动时,应用会校验内置的 Python 运行时,并下载 FFmpeg 与 Demucs 模型(约 170 MB)。之后再次启动会跳过此步骤,几秒内即可进入。所有内容自包含;无需 Python 或系统依赖。
---
## 技术栈
<div align="center">
<img src="https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-0078D6?style=flat-square&logo=windows" alt="Platform">
<img src="https://img.shields.io/badge/Powered_by-Demucs-FF6B35?style=flat-square" alt="Powered by Demucs">
<img src="https://img.shields.io/badge/CI-GitHub_Actions-2088FF?style=flat-square&logo=github-actions&logoColor=white" alt="CI: GitHub Actions">
</div>
<br>
StemDeck 基于 **[Python 3.12](https://python.org)**,通过 **[uv](https://github.com/astral-sh/uv)**, 管理,后端采用 **[FastAPI](https://fastapi.tiangolo.com)** 提供 REST 与 Server-Sent Events(服务器发送事件)。音轨分离使用 **[Demucs](https://github.com/facebookresearch/demucs)**`htdemucs_6s`),即 Meta AI 的开源 6 轨神经网络。YouTube 音频通过 **[yt-dlp](https://github.com/yt-dlp/yt-dlp)**; 获取;转码与混音使用 **[FFmpeg](https://ffmpeg.org)**.;BPM 检测与调性分析基于 **[librosa](https://librosa.org)**;;响度测量使用 **[pyloudnorm](https://github.com/csteinmetz1/pyloudnorm)**ITU-R BS.1770)。macOS 与 Windows 桌面外壳采用 **[Tauri v2](https://tauri.app)**macOS 为 Rust/WKWebView,Windows 为 Rust/WebView2)。前端为原生 JS 配合 Web Audio API,无框架、无构建步骤;波形在 `<canvas>` 上通过 min/max 采样渲染绘制。
*感谢所有开源库的创作者与维护者,正是他们让 StemDeck 成为可能。*
---
## 从源码构建
### macOS 原生应用
需要 Rust、Node.js 和 Python 3.12。会构建一个自包含的 `.app`,首次启动时会自行下载运行时。
```sh
# 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
```
`.app` 输出到 `desktop/src-tauri/target/<target>/release/bundle/macos/StemDeck.app`。DMG 输出到 `.build/macos-dist/StemDeck-macOS-<arch>.dmg`
若要在不安装 DMG 的情况下直接运行全新构建:
```sh
open desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app
```
若 macOS 因 Gatekeeper 提示阻止应用运行,请执行:
```sh
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 / 已安装 Python 3.12+ 的 Windows
#### 前置条件
Python 3.12 或更高版本,PATH 中可访问 `ffmpeg`,以及 [uv](https://github.com/astral-sh/uv).。Demucs 模型约需 170 MB 磁盘空间,首次运行时会自动下载。
#### macOS / Linux(一键脚本)
```sh
git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
./run.sh setup # installs ffmpeg + uv, runs uv sync
./run.sh start
```
打开 <http://localhost:8000>。
`setup` 在 macOS 上使用 Homebrew,在 Debian/Ubuntu 上使用 `apt-get`。对于其他 Linux 发行版,请手动安装 `ffmpeg` 与 [uv](https://github.com/astral-sh/uv),然后依次运行 `uv sync``./run.sh start`
#### WindowsPowerShell
安装前置依赖:
- [uv](https://docs.astral.sh/uv/getting-started/installation/) — `winget install astral-sh.uv`
- [ffmpeg](https://ffmpeg.org/download.html) — `winget install Gyan.FFmpeg`(或通过 Chocolatey`choco install ffmpeg`
```powershell
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
```
打开 <http://localhost:8000>。
> `run.sh` 仅适用于 macOS/Linux。在 Windows 上请使用上述 PowerShell 命令,或在 WSL 中运行。
**NVIDIA GPUCUDA):** 启动前先安装支持 CUDA 的 torch 构建:
```powershell
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
```
---
#### 手动安装(任意平台)
```sh
git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
uv sync
uv run uvicorn app.main:app --reload
```
#### Docker
```sh
docker compose -f build/docker-compose.yml up --build
```
分离音轨会写入宿主机的 `./jobs/`。Demucs 权重缓存在命名卷中,重建时不会重新下载。注意:macOS Docker 不支持 GPU 透传。
预构建镜像发布在 GHCR。标签:`edge`(滚动更新,每次合并到 main 时重建)、`latest`(最新稳定版发布)以及 `X.Y.Z`(固定到某一发布版本)。
```sh
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 驱动与 NVIDIA Container Toolkit 的 Linux 宿主机上,添加 `--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all`,StemDeck 会自动检测 CUDA。镜像已内置支持 CUDA 的 torch,无需单独安装 CUDA。
#### Unraid
StemDeck 可在 Unraid Community Applications 中获取:打开 **Apps**,搜索 "StemDeck" 并安装。将两个卷映射到持久化 appdata 路径:
- `/app/jobs` -> `/mnt/user/appdata/stemdeck/jobs`(曲库 + 音轨)
- `/cache` -> `/mnt/user/appdata/stemdeck/cache`(模型权重)
曲库默认持久化(`STEMDECK_PERSIST_LIBRARY=1`),因此曲目不会被自动删除。若要 GPU 加速,请安装 **Nvidia Driver** 插件,然后将容器的 Extra Parameters 设置为 `--runtime=nvidia`(模板中已包含 `NVIDIA_VISIBLE_DEVICES``NVIDIA_DRIVER_CAPABILITIES` 变量)。仅 CPU 模式无需额外配置。
#### `run.sh` 控制脚本
```sh
./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?
```
---
## 使用方法
1. 在导入栏中,点击音轨芯片以选择要提取的音轨(默认全部 6 轨)。
2. 粘贴 YouTube URL **或** 拖放 MP3/WAV 文件,然后点击 **Process**
3. 依次等待 `Uploading...` / `Downloading...``Analyzing...``Separating...``Mixing tracks...`
4. 完成后会显示工作室仪表盘。若你选择了子集,第一条轨道为 **Original**(完整歌曲减去你所选音轨);其余为你的独立音轨。
5. 混音:**Play/Pause/Stop** 控制主传输。按 **M** 静音某轨,按 **S** 独奏(可叠加;多个独奏同时可听)。**Monitor** 仅独奏该轨并清除其他独奏。音量推子随拖拽 1:1 移动;双击重置为 0 dB;`Shift+wheel` 用于粗调,普通滚轮用于微调。**Reset**、**Mute** 与 **Solo** 工具栏按钮会同时作用于所有音轨。
6. 在标尺上拖拽以定义循环区域;点击 `Loop` 启用。使用 `+` / `-` / `Fit``Ctrl/Cmd+wheel` 缩放。
7. 页脚的 **Download Mix** 可下载所选音轨混合后的 WAV 文件。
**键盘快捷键:** `Space` 播放/暂停 · `[` 后退 5 秒 · `]` 前进 5 秒 · `L` 循环 · `I` 循环入点 · `O` 循环出点
---
## 配置
| 变量 | 默认值 | 说明 |
|---|---|---|
| `STEMDECK_DEMUCS_DEVICE` | auto | 强制指定 Torch 设备:`cuda``mps``cpu`。 |
| `STEMDECK_DEMUCS_MODEL` | `htdemucs_6s` | Demucs 模型名称。 |
| `STEMDECK_JOBS_DIR` | `./jobs` | 任务目录的存放位置。 |
| `STEMDECK_DATA_DIR` | (none) | 便携模式根目录;其下所有子目录均置于该目录内。 |
| `STEMDECK_CACHE_DIR` | `<data>/cache` | Torch 模型缓存目录。 |
| `STEMDECK_DOWNLOADS_DIR` | `<data>/downloads` | yt-dlp 下载临时目录。 |
| `STEMDECK_MODELS_DIR` | `<data>/models` | Demucs 模型权重目录。 |
| `STEMDECK_LOGS_DIR` | `<data>/logs` | 日志文件输出目录。 |
| `STEMDECK_FFMPEG_DIR` | (none) | 包含捆绑 ffmpeg 二进制文件的目录。 |
| `STEMDECK_FFMPEG` | `ffmpeg` | ffmpeg 可执行文件路径。 |
| `STEMDECK_FFPROBE` | `ffprobe` | ffprobe 可执行文件路径。 |
| `STEMDECK_MAX_DURATION_SEC` | `1200` | 拒绝超过此时长(秒)的音频。 |
| `STEMDECK_JOB_TTL_SECONDS` | `86400` | 任务目录在磁盘上的保留时长。 |
| `STEMDECK_MAX_PENDING_JOBS` | `3` | 排队任务数上限,超出后返回 503。 |
| `STEMDECK_TIMEOUT_FFMPEG` | `300` | ffmpeg 子进程超时(秒)。 |
| `STEMDECK_TIMEOUT_ANALYZE` | `120` | 音频分析超时(秒)。 |
| `STEMDECK_TIMEOUT_DEMUCS_STALL` | `1800` | 若在此秒数内无输出则终止 Demucs。 |
`run.sh` 还会读取:`HOST`(默认 `127.0.0.1`)、`PORT`(默认 `8765`)、`RELOAD=1`(开发时启用 uvicorn 自动重载)、`FOREGROUND=1`(前台运行而非后台运行)。
---
## API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | `/api/health` | 服务器健康状态与版本信息 |
| POST | `/api/jobs` | JSON `{url, stems?}` 或 multipart `file + stems``{job_id}` |
| GET | `/api/jobs` | 列出已完成(库中)任务 |
| GET | `/api/jobs/{id}` | 任务状态快照 |
| GET | `/api/jobs/{id}/events` | 任务状态的 SSE 流 |
| POST | `/api/jobs/{id}/cancel` | 终止活动子进程并取消任务 |
| PATCH | `/api/jobs/{id}/sections` | 保存任务的波形区段标记 |
| GET | `/api/jobs/{id}/stems/{name}.wav` | 流式传输单个 stem 的 WAV 文件 |
| GET | `/api/jobs/{id}/stems/{name}.mp3` | 转码并以 MP3 流式传输 stem |
| GET | `/api/jobs/{id}/video.mp4` | 将当前混音与源视频(MP4 上传或 YouTube)封装为 MP4 |
| DELETE | `/api/jobs/{id}` | 从磁盘删除任务目录(仅限已结束任务) |
---
## 故障排除
**`ffmpeg: command not found`** 安装 ffmpeg 并使用 `./run.sh restart` 重启。
**`WARNING: [youtube] No supported JavaScript runtime`** 安装 denomacOS 上为 `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 # the 6 Demucs stems (always present)
├── drums.wav
├── bass.wav
├── guitar.wav
├── piano.wav
├── other.wav
├── original.wav # sum of un-selected stems (subset only)
└── mix.wav # ffmpeg amix of selected stems (subset only)
```
任务状态保存在内存中。重启服务器后任务列表会重置,但文件仍保留在磁盘上。旧目录会自动清理(TTL 24 小时,可配置)。
---
## 免责声明
StemDeck 是一款本地音频 stem 分离工具,供个人学习、研究与实验使用。它不是下载服务,不会存储、缓存或再分发任何音频内容。所有处理均在用户本机运行,不会将音频传输到任何其他地方。
YouTube URL 支持通过 [yt-dlp](https://github.com/yt-dlp/yt-dlp) 提供,仅为便利。自动下载可能违反 YouTube 的服务条款。你(用户)须自行确保对所提交音频拥有处理权利,遵守所下载网站的各项服务条款,并尊重所处理材料的版权。
你还须遵守本项目所依赖底层工具的许可证(yt-dlp、Demucs、FFmpeg、PyTorch 及 `pyproject.toml` 中列出的其他工具)。
StemDeck 作者按“原样”提供本软件,不作任何形式的担保,且不对其使用方式承担任何责任。
---
## 社区
| 平台 | 链接 |
|---|---|
| GitHub | [stemdeckapp/stemdeck](https://github.com/stemdeckapp/stemdeck) |
| Discord | [discord.gg/2MVsWqaPRe](https://discord.gg/2MVsWqaPRe) |
| Reddit | [r/StemDeckApp](https://www.reddit.com/r/StemDeckApp/) |
| Instagram | [@stemdeck](https://www.instagram.com/stemdeck) |
| X | [@StemDeckApp](https://x.com/StemDeckApp) |
| Website | [stemdeck.app](https://stemdeck.app) *(coming soon)* |
---
## 环境变量
以下变量用于开发与测试。正式版构建仅识别标注为“release”的变量。
| 变量 | 平台 | 范围 | 说明 |
|---|---|---|---|
| `STEMDECK_DATA_DIR` | all | release | 覆盖用户数据目录(默认:平台标准位置) |
| `STEMDECK_ROOT` | all | release | 覆盖应用根目录(默认:由可执行文件路径推导) |
| `STEMDECK_PYTHON` | all | **debug builds only** | 覆盖 Python 可执行文件路径 |
| `STEMDECK_FFMPEG_URL` | Windows, macOS | release | 覆盖 FFmpeg 下载 URL |
| `STEMDECK_FFPROBE_URL` | macOS | release | 覆盖 ffprobe 下载 URL |
---
## 贡献
欢迎提交 Issue、功能建议与 Pull Request。可查看开放的 Issue 了解计划中的内容。
---
## Star History
<a href="https://www.star-history.com/?repos=stemdeckapp%2Fstemdeck&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=stemdeckapp/stemdeck&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=stemdeckapp/stemdeck&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=stemdeckapp/stemdeck&type=date&legend=top-left" />
</picture>
</a>