Nodes/ComfyUI-SopranoTTS/Soprano TTS Batch
ComfyUI Node

Soprano TTS Batch

Soprano TTS Batch

By jo-nike·Created 8 months ago·Updated 8 months ago· 2
Soprano TTS Batch
  • model
  • audio
textsFirst sentence to speak. Second sentence to speak.
temperature0.30
top_p0.95
repetition_penalty1.20

If you've ever narrated a long text in a TTS model one sentence at a time, you know the pain: a dozen runs, a dozen audio files, and a day of stitching. Soprano TTS Batch is the node that skips all of that. Feed it a wall of text - one line per sentence, paragraph, whatever - and it turns the whole thing into a single audio file in one pass. Soprano's whole design leans into batched inference; the model author demonstrated a 10-hour audiobook generated in under 20 seconds. This node is where that speed actually lands in ComfyUI.

How it works

The node takes your multiline texts input, splits it on newlines, strips and drops empty lines, and hands the whole list to infer_batch on the loaded model. The per-line results get concatenated into one continuous waveform, which comes out the audio output at Soprano's native 32,000 Hz mono. Because Soprano already generates sentence-by-sentence internally and stitches the result, a batch here isn't some hacky approximation - it's the model's intended usage. Long-form text is what it does best.

Worth being honest about one thing: this node returns one audio file, not one per line. The lines are concatenated back-to-back with no silence padding between them, so if you need separate clips per line - for a multi-voice project or per-line cleanup - you're better off running the single Soprano TTS node once per line and saving each. For straight narration, the combined output is exactly what you want to drop straight into a SaveAudio node.

The inputs that matter

  • model - the SOPRANO_MODEL output of the Soprano TTS Loader. Wire the Loader in and this node works.
  • texts - multiline string, the actual content. One line per utterance, newline-separated. The default is a two-line example so you can see the expected shape immediately.
  • temperature (0–2, default 0.3) - low values sound flat but stable; the default is a sensible middle ground. Soprano is trained for natural intonation, so don't crank this thinking you'll get more character - you'll just get more artifacts.
  • top_p (0–1, default 0.95) - nucleus sampling. The default is what the author ships; leave it.
  • repetition_penalty (1–2, default 1.2) - discourages the model looping on a phrase. Long-form narration is where repetition creep shows up, so this is the knob to reach for if a passage starts stuttering.

If the input ends up empty, the node doesn't error - it returns a second of silence, which is a polite way of doing nothing.

Wiring it up

The audio output is standard ComfyUI AUDIO, so it plugs into the usual suspects: SaveAudio, PreviewAudio, or a video node's audio input if you're dubbing a clip. The classic graph is Loader → Batch → SaveAudio, and that's it.

Installing it

Same pack as the Loader. ComfyUI Manager: search "SopranoTTS" and install. Manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/jo-nike/ComfyUI-SopranoTTS.git
cd ComfyUI-SopranoTTS
pip install -r requirements.txt

Then restart ComfyUI. Dependencies are just soprano-tts and torch; the model weights download automatically on first use, no separate download step.

Where people get burned

The classic mistake is assuming the batch node gives you one audio per line. It doesn't - you get one concatenated file. Check that before you build a workflow that depends on per-line outputs. And remember the batch speedup only materializes if your model is loaded once via the Loader; if you re-run with a different backend each time, you pay a reload per run and the "20 seconds for an audiobook" fantasy evaporates. Set the Loader backend for your GPU first (transformers on Blackwell/RTX 50xx, either on 30xx/40xx) and let it cache.

Categoryaudio/tts

Inputs (5)

NameTypeDefaultDescription
modelSOPRANO_MODEL
textsSTRINGFirst sentence to speak. Second sentence to speak.
temperatureFLOAT0.300–2
top_pFLOAT0.950–1
repetition_penaltyFLOAT1.201–2

Outputs (1)

NameTypeDescription
audioAUDIO