Nodes/Mage/Mage Seed Audio
ComfyUI Node

Mage Seed Audio

One prompt, and you didn't have to say if it was music or a voice

By mage-space·Created 26 days ago·Updated 26 days ago· 2
Mage Seed Audio
  • image
  • audio
  • url
◄prompt►
◄duration5►
◄seed0►

Audio is the newest, thinnest layer of the ComfyUI stack, and the one place where the tooling still makes you pick a lane before you start. Want a voice? That's Chatterbox or Kokoro. Want a song? That's ACE-Step. Want a door slam? That's MMAudio. Three jobs, three dependency stacks. This node skips the lane question entirely: you write a prompt, you get sound.

Where it fits

The KB's read on this layer is that local caught up on generic speech and instrumental music, while the hosted side still wins production-grade multi-language TTS and best-in-class songs. Seed Audio is the hosted side of that trade, and the node is the door. Reach for it when you want a quick sound effect or a scratch voice without installing anything, when you need a language your local TTS mangles, or when you're already paying for a Mage account and the alternative is another 5GB of weights on disk.

Don't reach for it when you need to clone a specific approved voice, or when the sound is going into a mix you care about - more on that below.

How it works

You give it prompt, duration and seed; the node builds a request, sends it to the Mage API, polls it, and puts the elapsed time and Gems cost on the node's title bar while it waits. When the job lands it downloads an MP3 and decodes it with PyAV into ComfyUI's native AUDIO value - a waveform tensor plus a sample rate - so anything downstream that takes AUDIO is happy.

That MP3 round trip is the catch worth knowing about. The node hands you decoded audio, not a promise: it's a lossy source, fine for foley, dialogue scratch tracks and scoring a short clip, not something to master an album from.

If you connect the optional image, the first frame of it is uploaded to Mage as a reference so the audio has something to match. That's the whole point of the input - score a clip from its opening frame instead of describing the frame in words.

The three inputs

duration is a token list, not a slider: 5, 10, 30, 60, 120 seconds, defaulting to 5. You can't ask for 37 seconds, and the wide range is a hint about what this model is for - a 120-second generation is a music bed or a narration, not a sound effect. Pick the token that matches the job and let the model do the rest.

seed is fixed by default, which is the pack's house style and, here, genuinely nice: re-queue the same prompt and ComfyUI answers from cache instead of charging you to hear the same thing twice.

And prompt carries the whole job. The wording is the mode selector - "a warm male voice narrating over rain" and "90s hip-hop beat with vinyl crackle" are different tasks to the same node, and the tooltip's @handle mentions for saved characters and references apply here the way they do on mage.space.

Outputs: audio, which is the thing you wire into a Save Audio node or a lip-sync/audio-driven video workflow, and url, pointing at Mage's MP3.

Installing it

It's one of four nodes in the same pack, so you install the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/mage-space/ComfyUI-Mage
cd ComfyUI-Mage
pip install -r requirements.txt

Manager users can just search Mage. The only dependency outside ComfyUI's own stack is the mage-space SDK, and PyAV is already bundled with ComfyUI - which matters here, because that's the library decoding your MP3.

Then the key, from mage.space under API → API Keys:

export MAGE_API_KEY="your-key-here"   # before you launch ComfyUI

or cp config.ini.example config.ini and fill in api_key =. The environment variable takes precedence, config.ini is gitignored, and the key is never saved into your workflows. For an API node - the category that already shipped credential-stealing malware once, and the one where a phone-home looks legitimate by design - those are the right defaults.

Where people get tripped up

"No Mage API key." The node fails rather than guessing, with fix instructions attached. Nine times out of ten the variable was set in a terminal that isn't the one ComfyUI is running in. Export it, restart the server.

A model or option you expected isn't in the dropdown. The combos are built from the installed SDK's copy of the API reference at load time, so an old SDK shows an old menu:

pip install -U "mage-space>=0.0.0,<0.1"

Interrupting is not a refund. Stop cancels the Mage request, and the Gems are gone. Long durations are the expensive ones - decide before you queue. What is safe: a duration/option combination the model won't accept, or an account without enough Gems, fails before anything is spent.

You have 30 days. The decoded audio is local, but the url points at Mage's copy, which expires. Save the file if it matters.

It's beta. Version 0.x, inputs may still change.

CategoryMage

Inputs (4)

NameTypeDefaultDescription
promptSTRINGWhat to generate. Mention saved characters and references by @handle.
durationCOMBO5Clip length in seconds, as a token.
seedINT00–2147483647The same seed and inputs reproduce an output. Change it for a new variation.
imageoptIMAGEAn image the audio should match.

Outputs (2)

NameTypeDescription
audioAUDIOThe generated audio.
urlSTRINGWhere Mage stores the MP3 for 30 days.