DBS Loader
Two dropdowns, and the reason your separation is crawling
- model
DBS Loader looks like the least interesting node in the graph. It has two dropdowns, one output, and it doesn't touch your audio at all. It's also the node that decides whether the next three minutes of your life get spent separating a soundtrack or waiting on a CPU that never had a chance.
It belongs to ComfyUI-DBS, an unofficial pack wrapping the Dynamic Band Splitting models - recent source-separation research (Bingzhe Zhang, Kai Li, Xiaolin Hu, Apache-2.0) that splits audio into three stems: music, sound effects, speech. You know the shape of ComfyUI's audio corner by now: everything is generation, TTS here, music there, foley bolted onto a Wan render. Search the big subs for source separation and you get a few dozen threads total, most about Demucs for songs. So this is a narrow tool for a narrow job, and the loader is its front door.
What it actually does
You point it at one of two model folders under ComfyUI/models/dbs/ and hit queue. Under the hood it reads that folder's config.json, builds the right class, loads model.safetensors with strict key checking, and sanity-checks that it's a 44.1 kHz model with exactly three stems. If a file is missing or truncated, it fails here - not fifteen seconds into a separation pass. That's deliberate, and it's the kind of politeness you only notice when it's gone.
The output isn't audio. It's a DBS_MODEL bundle carrying the folder path, the model name and the resolved device, wired into DBS Separate (music / sfx / speech) - one wire instead of three. The loaded model is cached per folder/name/device, one model at a time, so extra loaders on other branches are a dictionary lookup, not another load. Point two of them at different models and they'll reload on every pass.
The two fields worth caring about
model defaults to DBS-TIGER-DnR (1.0M parameters) and the alternative is DBS-BSRNN-DnR (4.7M). TIGER is the better separator on the author's own numbers: the tooltip's "10.1 dB SI-SDR" vs "9.1 dB" averages the three stems (the README lists them per stem - 7.78 / 6.70 / 15.90 for TIGER against 6.48 / 5.73 / 15.01). Those are the model cards' scores, not measurements of the pack. What decides it in practice is speed, and the gap is brutal: on CPU with 24 threads the README measures TIGER at about 0.5x real time - twice the length of your audio - against 1.8x for BSRNN. On an RTX 5090 it's 16x and 22x, so on GPU just take TIGER.
device only offers auto and cpu. No "cuda" option, because auto already means "ComfyUI's torch device if it's a CUDA one, otherwise the CPU." That's convenient right up until you're on ROCm or a Mac wondering why a 30-second clip takes a minute: those land on CPU silently by design, and the README says AMD and Apple GPUs went untested.
Installing it
Manager users: search for the pack title, DBS Soundtrack Separation for ComfyUI (repo hiroki-abe-58/ComfyUI-DBS). Otherwise:
cd ComfyUI/custom_nodes
git clone https://github.com/hiroki-abe-58/ComfyUI-DBS
python -m pip install -r ComfyUI-DBS/requirements.txt
The requirements are einops and safetensors - ComfyUI already ships both, so in a normal install this step is a no-op. The models are the actual step, and no node does it for you:
python custom_nodes/ComfyUI-DBS/tools/download_model.py --models-dir models/dbs
That pulls both models (23 MB total) from pinned Hugging Face revisions and verifies every SHA-256. You end up with models/dbs/DBS-TIGER-DnR/ and models/dbs/DBS-BSRNN-DnR/, each holding config.json, model.safetensors and the model card. Models on another drive? Add them under the key dbs in extra_model_paths.yaml. Then restart.
Where people get burned
The nodes don't show up at all. The pack is written against ComfyUI's V3 backend node API and imports from comfy_api.latest import ComfyExtension, io. On anything older than ComfyUI v0.38.0 that import fails and __init__.py logs a single [DBS] not loaded: ... line and registers nothing. If you grep the source, find NODE_CLASS_MAPPINGS and see an empty dict, that's not breakage - a modern V3 pack has no mapping dicts, it has a comfy_entrypoint(). Update ComfyUI, restart, read the console line rather than the canvas.
"models/dbs/DBS-TIGER-DnR/ does not hold config.json, model.safetensors." That's the loader being honest. Folder names are hardcoded and the dropdown lists only those two, so dbs-tiger, DBS-TIGER-DnR-v2 or a nested models/dbs/DBS-TIGER-DnR/DBS-TIGER-DnR/ all fail identically. Let the download script create the layout.
Everything is slow and you have a GPU. The report from the separation node prints the device it ran on. If ComfyUI is on CPU-only torch, auto has nothing better to offer.
It's a boring node. That's the whole point - it makes the boring failures happen early and out loud.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | DBS-TIGER-DnR | DBS-TIGER-DnR (1.0M parameters, better: 10.1 dB SI-SDR on DnR v2) or DBS-BSRNN-DnR (4.7M, 9.1 dB, faster on CPU) |
| device | COMBO | auto | auto: ComfyUI's GPU when it is a CUDA device, otherwise the CPU |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | DBS_MODEL | — |