Nodes/ComfyUI_DICE_Talk/Dice_Talk_Sampler
ComfyUI Node

Dice_Talk_Sampler

The slow, rewarding payoff that renders the talking video

By smthemex·Created about a year ago·Updated about a year ago· 24
Dice_Talk_Sampler
  • model
  • data_dict
  • image
  • fps
seed0
inference_steps25
ref_scale1.0
emo_scale1.0
fps25.0

This is the node that burns your GPU. Dice_Talk_Loader built the model, Dice_Talk_PreData did all the listening and face prep, and this Sampler runs the actual denoising loop that turns your photo plus audio into a video of a face talking. It's the last node in the chain, it's the slowest, and it's the one that produces something you can actually watch.

How it works

The Sampler takes the ready-made MODEL_DICETALK and the DICETALK_PREDATA bundle and pushes both through the DICE pipeline: each frame's pose, audio and emotion conditioning is denoised under guidance scales derived from ref_scale and emo_scale, conditioned on the reference image and the pre-encoded image latents. The VAE decode happens in chunks specifically to dodge OOM. If use_interframe was on in the Loader, the RIFE model then inserts an interpolated frame between every pair of frames, effectively doubling the frame count.

The inputs that matter

  • model, data_dict - wire them from the Loader and PreData respectively. Nothing else will do; these are custom types.
  • inference_steps - 25 default. Drop to 15–18 for quick drafts; this is where your patience budget lives, because every step costs you real seconds.
  • seed - standard. If you hit a great result, hold the seed and vary the emotion or audio for takes.
  • ref_scale - reference/appearance guidance, 1.0 default (maps to the config's appearance scale of 4.0). Raise it if the face drifts from your photo, lower it if the head locks up.
  • emo_scale - audio/emotion guidance, 1.0 default (maps to the config's audio guidance of 7.5). This is the "how hard should it chase the emotion you picked" knob.
  • fps - 25 default. Only sets the reported rate; it doesn't change the actual generation cost.

The outputs and what to do with them

Two outputs: image (an IMAGE tensor where each frame is a batch item - effectively your video) and fps (a FLOAT). Feed both into a VHS_VideoCombine node from VideoHelperSuite - that's exactly what the pack's shipped example workflow does - to get an mp4, and you can mux your source audio back in there so the finished video actually has sound. If you don't have VideoHelperSuite installed, grab it from the Manager; the DICE pack assumes it for the final step.

The gotchas

Manage your expectations on speed. This is the SVD-class backbone that the whole Sonic family runs on, and it is not fast - someone on a 3090 reported around an hour and a half for a short talking clip at 448 resolution from the sibling Sonic pack, and DICE-Talk sits in the same weight class. That's why min_resolution and inference_steps are your real friends: every reduction compounds.

Second, the interframe trap. When use_interframe is on, the output has roughly twice as many frames, but the Sampler still returns the fps you typed in - so if you save at that fps, the video plays back at double speed and the audio won't line up. Either save at 2 × fps when interframe is on, or turn interframe off and keep the audio sync simple. Third, ref_scale and emo_scale interact: cranking both feels like "more talking," but what you usually want is to fix the face first with ref_scale, then dial emotion. Start at 1.0/1.0, change one thing at a time, and give each render the time it demands - this pack rewards patience.

CategoryDice_Talk

Inputs (7)

NameTypeDefaultDescription
modelMODEL_DICETALK
data_dictDICETALK_PREDATA
seedINT00–2147483647
inference_stepsINT251–1024
ref_scaleFLOAT1.00.5–2
emo_scaleFLOAT1.00.5–2
fpsFLOAT25.05–120

Outputs (2)

NameTypeDescription
imageIMAGE
fpsFLOAT