基于 Audio-Separator 和 BS-RoFormer 的 GPU 人声/伴奏分离服务。服务启动时加载一次模型,后续请求复用模型。
curl http://127.0.0.1:8007/healthcurl --fail-with-body \
-H "X-API-Key: $API_KEY" \
-F "file=@song.mp3" \
-D headers.txt \
-o stems.zip \
http://127.0.0.1:8007/v1/separate响应为 ZIP,包含 vocals.flac 和 instrumental.flac。响应头
X-Processing-Seconds 给出处理耗时,X-Job-ID 给出任务编号。
支持 WAV、FLAC、MP3、OGG、OPUS、M4A、AIFF 和 AC3,默认最大上传 1 GiB。
OpenAPI 文档位于 /docs。
要求:
- NVIDIA GPU,RTX 50 系列需要支持 Blackwell 的驱动
- Docker、Docker Compose 和 NVIDIA Container Toolkit
- FFmpeg(已包含在镜像中)
cp .env.example .env
# 修改 .env 中的 API_KEY
sudo docker compose up -d --build
sudo docker compose logs -f默认配置绑定物理 GPU 6,使用 host 网络监听 8007,并把模型与任务目录分别挂载到:
/data/models/bs-roformer/data/bs-roformer/jobs
修改 compose.yaml 可调整 GPU、端口和目录。模型首次启动时自动下载,后续从挂载目录加载。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
API_KEY |
必填 | 请求鉴权密钥 |
WORKERS |
6 |
独立模型进程数量;RTX 5090 实测推荐值 |
MODEL_FILENAME |
model_bs_roformer_ep_317_sdr_12.9755.ckpt |
Audio-Separator 模型文件名 |
OUTPUT_FORMAT |
FLAC |
输出音频格式 |
USE_AUTOCAST |
1 |
启用 CUDA autocast |
MAX_UPLOAD_BYTES |
1073741824 |
最大上传字节数 |
每个 worker 仅同时执行一个推理任务;默认 6 个 worker 可并行执行 6 个任务, 同一 worker 收到的额外请求会排队。