Nodes/Miso TTS/Miso TTS - Generate
ComfyUI Node

Miso TTS - Generate

The 8B TTS node that turns a prompt into a 24kHz voice file

By Saganaki22·Created 3 months ago·Updated 3 months ago· 7
Miso TTS - Generate
  • miso_model
  • reference_audio
  • audio
textHello! This is Miso TTS running inside ComfyUI.
reference_text
speaker0
max_audio_length_seconds10.0
longform_chunkingfalse
words_per_chunk80
temperature0.90
top_k50
seed0

This is the node that actually makes the audio. Everything else in MisoTTS-ComfyUI exists to feed this one: the Load Model node hands it weights, the Whisper node hands it a transcript, and what comes out the other end is a real ComfyUI AUDIO object you can save to disk, splice into a video, or run through lip-sync. If you've been living on Chatterbox and Kokoro, this is a different flavor: an 8-billion-parameter, Sesame-CSM-style speech model, local and free, wrapped for the graph.

How it works. Miso TTS is autoregressive over Mimi audio codes, not diffusion. It chews text into tokens, then emits one code frame every ~80 ms at 24 kHz - think of it as an LLM that "types" in sound instead of words. There's no steps slider and there's no prompt-the-vocoder quality dial, which surprises people coming from image diffusion. What you get instead are sampling controls: temperature (0 is greedy, 0.9 is the official default) and top_k (over a 2051-token audio vocabulary, default 50). The seed does what it always does; 0 picks a random one, and longform chunks deliberately reuse it to keep the voice from drifting between chunks.

The inputs you'll actually touch. miso_model is the required output from the Load Model node - nothing runs without it. text is the script. reference_text and reference_audio are the optional pair: if you connect reference audio, the node requires a transcript to go with it, and it errors loudly if you skip it - that's what the Whisper node is for. speaker is a prompt tag ([0] by default); leave it at 0 unless you're deliberately building multi-speaker context, it is not a voice preset. For anything longer than a sentence or two, flip on longform_chunking and let words_per_chunk (80 by default) split the text at sentence boundaries - the model's context window is finite, and this keeps you under it. max_audio_length_seconds caps each chunk; the model can stop early on its own if it hits an end-of-sequence token.

The honest caveat the README leads with: reference audio is conditioning, not guaranteed voice cloning. The upstream code routes it through conversational context segments, so the voice can follow a clean reference - or drift mid-sentence. Don't build a product on it expecting speaker-lock.

Output. One audio output, a standard ComfyUI AUDIO tensor at 24 kHz mono. Wire it into ComfyUI's save-audio node (or VHS) to get a file.

Getting it installed. This pack ships with all three nodes together, so install once:

cd ComfyUI/custom_nodes
git clone https://github.com/saganaki22/MisoTTS-ComfyUI.git
cd MisoTTS-ComfyUI
python install.py

On Windows portable, use ..\..\python_embeded\python.exe install.py. ComfyUI Manager also finds it under "Miso TTS" / "MisoTTS-ComfyUI". Note the requirements.txt is deliberately inert - the real installer is install.py, which pulls torchtune and moshi with --no-deps so it doesn't fight ComfyUI's own torch stack. That's the audio-node-pack tax, and it's a sane one.

Where people get burned. Garbled, crackly output → make sure attention on the Load Model node is auto or sdpa; the official backend needs mask-aware SDPA and the fancy attention kernels can corrupt the audio. Weird hallucinated words on odd input → that's the model, not you; the June 2026 launch reception was genuinely mixed, with complaints about stray noises at clip boundaries, no pause after punctuation, and hallucination on formal/uppercase text. Keep your script clean, sentence-cased prose and it behaves noticeably better. OOM on a consumer card → you want the BF16 model preset, not the fp32 default. If the voice drifts on long reads, that's the reference-conditioning caveat above - keep the reference clip short and its transcript exact.

CategoryMiso TTS

Inputs (11)

NameTypeDefaultDescription
miso_modelMISO_MODELOutput from Miso TTS - Load Model.
textSTRINGHello! This is Miso TTS running inside ComfyUI.Text to synthesize.
reference_textSTRINGTranscript for reference_audio. Connect Miso TTS - Whisper Transcribe here.
speakerINT00–99Speaker tag used in the prompt, e.g. [0]. Leave 0 for normal single-speaker use; change only for multi-speaker context.
max_audio_length_secondsFLOAT10.00.08–120Maximum generated audio per chunk in seconds.
longform_chunkingBOOLEANfalseSplit long text at sentence boundaries. Each chunk reuses the original reference audio if connected.
words_per_chunkINT800–500Target words per longform chunk. Longform may lower this to fit max_audio_length_seconds. 0 disables text splitting.
temperatureFLOAT0.900–2Sampling temperature. 0 is greedy.
top_kINT501–2051Top-k sampling over the 2051 audio vocabulary.
seedINT00–2147483647Random seed. 0 picks a random seed.
reference_audiooptAUDIOOptional prompt audio for voice/reference context. This is not guaranteed speaker matching.

Outputs (1)

NameTypeDescription
audioAUDIO