Nodes/ComfyUI-FLOAT_Optimized/FLOAT Sample Motion Sequence rd (Ad)
ComfyUI Node

FLOAT Sample Motion Sequence rd (Ad)

The heart of the talking head

By set-soft·Created about a year ago·Updated 12 months ago· 33
FLOAT Sample Motion Sequence rd (Ad)
  • r_s_latent
  • wa_latent
  • we_latent
  • float_pipe
  • r_d_latents
  • float_pipe
audio_num_frames
a_cfg_scale2.0
e_cfg_scale1.0
seed62064758300528

This is the node where the talking head actually gets made. Everything upstream - the encoded image, the audio latent, the emotion latent - exists to feed FLOAT Sample Motion Sequence rd (Ad). What it does: takes the identity reference r_s_latent, the audio conditioning wa_latent, the emotion conditioning we_latent, and generates the full sequence of driven motion latents (r_d_latents) that will become every frame of the video.

The mechanism is flow matching, and it's worth understanding in one sentence because it changes what the knobs mean: FLOAT doesn't add noise and denoise like diffusion. It starts from random noise and follows a velocity field - learned by the Flow Matching Transformer (FMT) - that carries the motion from "garbage" to "plausible motion for this person, this audio, this emotion." That integration is done by an ODE solver, and this node exposes the solver's main dials directly.

The inputs that matter

  • r_s_latent, wa_latent, we_latent - from FLOAT Get Identity Reference, FLOAT Encode Audio to latent wa, and FLOAT Encode Emotion to latent we respectively. All three are required, and this is where wiring mistakes surface: every latent must come from the matching upstream node.
  • audio_num_frames - the frame count the audio maps to (from the audio encoder). This is a link-only input; you connect it, not type it. It tells the sampler exactly how many motion latents to produce so the video matches the audio length.
  • a_cfg_scale (default 2) - audio guidance. Above 1, the sampler runs extra forward passes with audio dropped and extrapolates toward "more strictly following the audio." This is your lip-sync tightness dial.
  • e_cfg_scale (default 1) - emotion guidance. Crank it to push the chosen/predicted emotion harder.
  • seed - the noise the ODE starts from. Fixed seed = reproducible motion. If you rerun and the movement is different, the seed's the reason.

Outputs: r_d_latents (feeds FLOAT Decode Latents to Images) and the float_pipe passthrough.

Where the Advanced options come in

This node pulls its ODE settings from the pipe - which is where FLOAT Advanced Options earns its keep. The advanced_options dict you built there (nfe, torchdiffeq_ode_method, atol/rtol, the dropout probabilities) lands on the float_pipe via Load FLOAT Models (Opt), and this sampler runs on those values. Want more quality? Raise nfe in the Options node - this node has no nfe field of its own, which surprises people coming from the VA sampler that does. Same ODE, different dial placement.

Notes

Every video frame you see comes out of this node as one latent in the r_d sequence, so it's also your VRAM hotspot: longer audio = more frames = bigger tensors here. Keep audio reasonable unless you've got swap to burn (the author runs 12 GB VRAM + 32 GB swap). Install is the pack standard - Manager search "ComfyUI-FLOAT_Optimized", or clone into custom_nodes and pip install -r requirements.txt, restart, first-run 2.4 GiB download. FLOAT itself is CC BY-NC-SA 4.0, so keep it out of commercial work.

CategoryFLOAT/Advanced

Inputs (8)

NameTypeDefaultDescription
r_s_latentTORCH_TENSOR
wa_latentTORCH_TENSOR
audio_num_framesINT
we_latentTORCH_TENSOR
float_pipeFLOAT_PIPE
a_cfg_scaleFLOAT2.00–10
e_cfg_scaleFLOAT1.00–10
seedINT620647583005280–18446744073709550000

Outputs (2)

NameTypeDescription
r_d_latentsTORCH_TENSOR
float_pipeFLOAT_PIPE