Nodes/ComfyUI-CustomNodePacks/Magnific Voiceover (TTS)
ComfyUI Node

Magnific Voiceover (TTS)

Text-to-speech in your graph, from a paid voice catalog

By Code2CollapseΒ·Created 8 months agoΒ·Updated a day agoΒ· 58
Magnific Voiceover (TTS)
  • folder
  • audio
  • creation_identifier
  • metadata
β—„textβ–Ί
β—„voiceβ–Ύβ–Ί
β—„speed1.00β–Ί

What it is, and where it sits

Type text, pick a voice, get an AUDIO you can wire into the rest of the graph. Under the hood it is Magnific's TTS running on their servers on your account - nothing is downloaded, nothing runs locally, and the voice list is whatever your account can see.

The KB's audio doc is blunt about the shape of this space: audio is a layer that got bolted onto ComfyUI once video got good enough to want a soundtrack, and the tooling lives at the edges in bespoke packs rather than in the middle. Open TTS is genuinely competitive now - Chatterbox is MIT, runs locally, and made open voices feel like paid ones; Kokoro is tiny enough for CPU; F5-TTS is the fast option with zero-shot cloning. So the honest question is why you would pay per line here.

The answers are the usual API answers: you want a voice from a catalog you do not have to install, you are already in the Magnific ecosystem, or you want one line of narration without a 2 GB download and a dependency stack. If you are doing fifty lines of dialogue, the local path wins on cost by a lot.

The inputs

There are only three required fields, which is the nicest thing about this node:

  • text - multiline. Empty text raises rather than sending a blank job.
  • voice - a dropdown built from your account's voice catalog when ComfyUI asks the node for its definitions. If you are not signed in, the only entry is a sentinel that says so: - sign in (Magnific menu) and press R to refresh -. That is not a voice. Pick it and the node raises the sign-in error.
  • speed - 0.7 to 1.2, step 0.05. A deliberately narrow range; this is a pace control, not a pitch toy.

Optional folder comes from a Magnific Save To node, so the line is also filed in the project you are working in. Unconnected, it goes to your Personal project.

The dropdown being rebuilt from the live catalog is the detail that trips people up. After signing in, press R (ComfyUI's node-definition refresh) so the combo repopulates. The author designed it that way on purpose - no custom JavaScript, just the built-in refresh.

Outputs

audio is a ComfyUI AUDIO (waveform plus sample rate) - wire it into a save-audio node, a video combine node, or anything that mixes. creation_identifier is Magnific's ID for the job, and metadata is a JSON string you can unpack with Magnific Metadata (unpack) to get the model, seed and creation link as real sockets.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks.git

Or ComfyUI Manager β†’ search "CustomNodePacks". Restart and confirm [C2C] CustomNodePacks: 142 nodes loaded (...) - 0 failed in the console.

Then sign in: ComfyUI menu β†’ Magnific β†’ Sign in - approve it in your browser, and the token is written to ~/.magnific/comfyui_auth.json. Do not install Magnific's own comfyui-magnific plugin alongside this one; both claim the same fifteen node IDs and whichever loads last wins.

Audio needs a decoder on the ComfyUI side. If the node tells you it cannot handle audio, install one in ComfyUI's Python environment and restart:

pip install av

And as with everything else in this pack, install the shared requirements deliberately instead of blindly overwriting ComfyUI's torch:

pip list | grep -i "opencv\|scipy\|safetensors"
pip install opencv-python>=4.7.0 scipy>=1.10.0 safetensors>=0.4.0

Where people get burned

  • The voice dropdown is empty or full of dashed placeholder text. That is a sign-in or refresh problem, not a broken node. Sign in, press R, and if a real catalog loads you will see actual voice names.
  • A voice that worked yesterday is now unknown. The node maps the label back to a voice ID at run time and raises if it cannot. A catalog change means a refresh; it is not a silent swap to a different voice.
  • Cost. It is a metered API call per line. Narrating a two-minute script line by line adds up faster than people expect - write the paragraph as one text value where you can, since that is one job, not twelve.
  • speed will not give you a different character. 0.7–1.2 is subtle. If you want performance rather than pace, that is a different tool, and probably a local one.
  • Your text leaves your machine. Same bargain as every other vendor node in this pack: read what it sends and to whom before you paste anything confidential into it.
Category🐺 C2C/🧰 Core/Magnific

Inputs (4)

NameTypeDefaultDescription
textSTRINGβ€”
voiceCOMBO1 options: β€” sign in (Magnific menu) and press R to refresh β€”
speedFLOAT1.000.7–1.2β€”
folderoptMAGNIFIC_FOLDEROptional β€” from a Magnific Save To node. Not connected β†’ your Personal project.

Outputs (3)

NameTypeDescription
audioAUDIOβ€”
creation_identifierSTRINGβ€”
metadataSTRINGβ€”