Load Audio Model
One loader for the two models nobody else in ComfyUI wants to load
- model
You opened a workflow from a music pack, you found a node called Load Audio Model with a single widget that looks like two dropdowns glued together, and you have no idea what it wants. Fair. It's the smallest node in the Plenio Music Production System and it's the one standing between you and two optional stages.
What it is and why it exists
Plenio is Johannes Plenio's music-production pack for ComfyUI: a Song Brief, a local writer model, YuE2 or MiniMax Music 3 renders the song, then mastering and export. Two optional stages sit between the render and the master - Refine (48 kHz) (audio super-resolution) and Separate Stems (plus Sung Pitch, which reuses the same separation model). Each of those needs a model file that ComfyUI's own loaders don't know about, because they aren't checkpoints, diffusion models or audio encoders.
So Plenio registers two folders with ComfyUI and gives you one loader that reaches into either. That's the whole job. If you're not using Refine, Stems or Sung Pitch, you can ignore this node forever.
How it works
The kind input is a dynamic combo - you pick the kind first, and the second dropdown fills with the files found in that kind's folder:
super-resolution→ComfyUI/models/audio_sr(what Refine's model engine wants)separation→ComfyUI/models/audio_separation(what Separate Stems and Sung Pitch want)
The file list is a directory scan for .safetensors, .bin and .ckpt, and the weights are read with weights_only=True - which is why a .bin file like UniverSR's works here at all. Architectures are checked when the model is used, not guessed at: hand a super-resolution file to Separate Stems and you get a message saying the model isn't a separation model, instead of a shape-mismatch traceback twenty seconds into the run.
Inputs and outputs
- kind (required) - the nested choice described above: kind, then
model, the file inside that folder. - model (output, type
PLENIO_AUDIO_MODEL) - wire it into Refine (48 kHz)'smodelinput, or Separate Stems'modelinput (which is required there).
That's it. One widget in, one wire out.
Installing it
You need the pack, and you need the model files - Plenio ships no weights, ever.
ComfyUI Manager: Custom Nodes Manager → search Plenio Music Production System → install → restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/Plenio-Music-Production-System
Heads up on the version: Plenio needs ComfyUI 0.37.0 or newer, because it builds on ComfyUI's native YuE2, SheetSage2, MiniMax Music 3 and text-generation nodes rather than reimplementing them. That's also why the pack's requirements.txt says nothing extra is needed - dependencies = [] in its pyproject.toml. In a hobby where every audio pack seems to drag a conflicting transformers pin behind it, a node pack that installs zero Python packages is worth knowing about.
Then the two files this node actually reads:
| File | Folder (ComfyUI/models/…) | Size |
|---|---|---|
| pytorch_model.bin (UniverSR, for Refine) | audio_sr | 229 MB |
| model_bs_roformer_ep_17_sdr_9.6568.ckpt (BS-RoFormer, for Stems / Sung Pitch) | audio_separation | 527 MB |
Create the folders if they don't exist. ComfyUI's missing models dialog will offer the downloads when you open a template that needs them, and Plenio's own 0 · System Check template tells you which files of which template you already have. Keep the filenames as released - templates resolve them by name.
Common issues
The second dropdown is empty or missing your file. The folder doesn't exist, is empty, or the file has a suffix outside .safetensors / .bin / .ckpt. Make the folder, drop the file in, then refresh the ComfyUI frontend (the folder listing is cached).
The <kind> model X is not in models/<folder>. The node's own message, and its hint is the fix: download it with the missing-model dialog, or put it in that folder and refresh.
"A file of another architecture is refused." You picked a super-resolution file under separation or vice versa. Both models live in different folders on purpose; keep them there.
You don't need this node at all if Refine is set to resample only - that engine is pure math and no file. This is also the reason Plenio's Refine has no silent fallback: the engine is a visible choice, and if you set model without wiring this node's output, the run stops and tells you.
One licence footnote, since these get swallowed into a song's release record: UniverSR's weights are CC BY 4.0 with MIT inference code, BS-RoFormer's checkpoint is MIT-adjacent but trained on MUSDB18-HQ, whose dataset terms are research-oriented. The pack writes the licences of whatever you used into the .plenio.json next to your export. If you ever ship a song commercially, that's the file to read - non-commercial model terms have a long history of quietly killing projects, and it's better to check before the release than after.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| kind | COMBO | super-resolution: for HQ 2 · Regenerate Highs and Refine (48 kHz); separation: for Separate Stems. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | PLENIO_AUDIO_MODEL | The loaded model, for HQ 2 and Refine (super-resolution) or Separate Stems. |