Nodes/ComfyUI Custom Dia/Dia text to speech
ComfyUI Node

Dia text to speech

Write a Script, Get a Podcast

By nobrainX2·Created about a year ago·Updated about a year ago· 14
Dia text to speech
  • input_audio
  • audio
model_pathmodels/Dia/dia-v0_1.pth
seed12345
save_audio_filetrue
filename_prefixaudio/dia
speech[S1] Dia is an open weights text to dialogue model. [S2] You get full control over scripts and voices. [S1] Wow. Amazing. (laughs) [S2] Try it now on Git hub or Hugging Face.
cfg_scale3.00
temperature1.30
top_p0.95
use_cfg_filtertrue
use_torch_compilefalse
cfg_filter_top_k35
input_audio_transcript
available_tags(laughs), (clears throat), (sighs), (gasps), (coughs), (singing), (sings), (mumbles), (beep), (groans), (sniffs), (claps), (screams), (inhales), (exhales), (applause), (burps), (humming), (sneezes), (chuckle), (whistles)

This is the whole reason the pack exists. Dia is an open-weights text-to-dialogue model from nari-labs - not a typical text-to-speech assistant that reads one voice at you, but a model that takes a script and produces a full multi-speaker conversation with laughter, sighs, and different voices per character. ComfyUI Custom Dia wraps that model so it runs entirely locally, inside your node graph, no API, no key. Want to generate a voiceover for a video, a podcast-style debate for a storyboard, or dialogue for an animated scene? This is the node. The one caveat everyone who tries it learns fast: don't expect assistant-style TTS. It's built for dialogue, and it shines there.

How it works

Write your script in the speech field using [S1], [S2], etc. to mark speakers, and add tags like (laughs) or (sighs) - the full tag list ships in the inactive available_tags field. The node loads the model from disk via model_path, runs it, and returns an audio tensor at 44.1kHz that any AUDIO-compatible node can take. Under the hood it's the Dia architecture with a Descript audio codec for encoding reference audio, and the generation is controlled by the familiar trio of cfg_scale, temperature, and top_p - plus use_cfg_filter with cfg_filter_top_k, Dia's trick for taming CFG artifacts. Blast past the defaults and you'll hear it in the output, so treat 3 / 1.3 / 0.95 as a sensible starting point.

The knobs you'll actually touch:

  • speech - your dialogue script. The one thing you'll edit constantly.
  • model_path - defaults to models/Dia/dia-v0_1.pth. You must download the model yourself (see below); the node does not fetch it.
  • seed - reproduction. Same script + same seed = same audio.
  • save_audio_file with filename_prefix - on by default, saves an .mp3 into ComfyUI's output folder (audio/dia/...). This node is an output node, so with this on you can queue it standalone with no wiring at all.

For voice cloning, plug an AUDIO tensor into the optional input_audio input. The node encodes it as a reference voice, and you should also fill input_audio_transcript with what's actually being said in that reference clip - it meaningfully improves how well the model follows your script. Fair warning from the community: Dia keeps the same gender across speakers, so you're cloning a voice and getting variations of it, not four distinct voices from one clip.

Installing it

Via ComfyUI Manager, search "ComfyUI Custom Dia" and install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/nobrainX2/comfyUI-customDia

Then restart ComfyUI. The pack's requirements.txt pulls in descript-audio-codec and soundfile - heavy-ish, and Manager installs them for you. The model is the real download: grab the .pth and .json files from nari-labs/Dia-1.6B on Hugging Face and drop them anywhere under /models/. The default path expects models/Dia/dia-v0_1.pth with config.json sitting right next to it - the node locates the config by looking beside the checkpoint, so keep the two files together. Budget ~10GB of VRAM for inference, which is very doable on a mid-range card.

Common issues

The famous one: installing descript-audio-codec can drag your protobuf down to 3.19.6, which makes other nodes crash on startup for no apparent reason. If unrelated nodes start failing right after installing this pack, fix it from the ComfyUI terminal:

pip install protobuf --upgrade

Second, a missing model shows up as a load error, not a friendly message - check that your model_path actually points at a downloaded .pth. Third, if you're running an older GPU or CPU-only, generation is slow (30–45 seconds per clip on modest hardware is normal for this model), and the optional use_torch_compile toggle can shave that down - but only if your PyTorch build supports it, which is why it's off by default. Leave it off unless you're chasing speed; it's not worth the compile headaches on a first setup.

Categoryaudio/dia

Inputs (14)

NameTypeDefaultDescription
model_pathSTRINGmodels/Dia/dia-v0_1.pth
seedINT123450–2147483647
save_audio_fileBOOLEANtrue
filename_prefixSTRINGaudio/dia
speechSTRING[S1] Dia is an open weights text to dialogue model. [S2] You get full control over scripts and voices. [S1] Wow. Amazing. (laughs) [S2] Try it now on Git hub or Hugging Face.
cfg_scaleFLOAT3.000–10
temperatureFLOAT1.300–10
top_pFLOAT0.950–10
use_cfg_filterBOOLEANtrue
use_torch_compileBOOLEANfalse
cfg_filter_top_kINT350–100
input_audiooptAUDIO
input_audio_transcriptoptSTRING
available_tagsoptSTRING(laughs), (clears throat), (sighs), (gasps), (coughs), (singing), (sings), (mumbles), (beep), (groans), (sniffs), (claps), (screams), (inhales), (exhales), (applause), (burps), (humming), (sneezes), (chuckle), (whistles)

Outputs (1)

NameTypeDescription
audioAUDIO