ComfyUI Node

Condition

Condition is where AudioX fuses video, text, and audio into one prompt

By Yuan-ManX·Created about a year ago·Updated about a year ago· 12
Condition
  • video_tensor
  • audio_tensor
  • conditioning
text_prompt
seconds_start0
seconds_total10

In image-land, you'd call this node the text encoder. It takes everything you want the model to listen to - a video, a text prompt, an audio reference - and bundles them into a single CONDITIONING object that Generate can use. The interesting bit is that this pack's Condition doesn't do any encoding itself. It just assembles the raw ingredients into a dictionary and hands the whole thing to the model, which has its own trained encoders for each modality.

That's the AudioX design in a nutshell. The model (HKUST's ICLR 2026 "anything-to-audio" diffusion transformer) carries three separate conditioners: a CLIP encoder for the video frames, a T5 encoder for text, and an audio autoencoder for reference audio. A multimodal adaptive fusion module then mixes those embeddings so the diffusion sampler is steered by all of them at once. That's why this one node can describe text-to-audio, video-to-audio (foley), audio-to-audio style transfer, or any combination - the fusion is trained in, not bolted on.

Inputs - all five are required

  • video_tensor (TENSOR) - from LoadAudioXVideo. The video condition.
  • text_prompt (STRING) - from AudioXPrompt. What the sound should be.
  • audio_tensor (TENSOR) - from LoadAudioXAudio. Reference audio for the audio condition.
  • seconds_start (INT, default 0) and seconds_total (INT, default 10) - the time window, used by the model's time-conditioning to know where in the generation you're pointing.

The single output, conditioning (CONDITIONING), wires straight into Generate. That's the whole graph at this stage: three loaders plus a prompt box all feeding one funnel.

Installing AudioX

Install via ComfyUI Manager (search "ComfyUI-AudioX") or cd ComfyUI/custom_nodes && git clone https://github.com/Yuan-ManX/ComfyUI-AudioX.git, then pip install -r requirements.txt and conda install -c conda-forge ffmpeg libsndfile, then restart. The dependency list is heavy - the pack vendors AudioX's full stack (pinned pandas==2.0.2, descript-audio-codec, laion-clap, wandb) - so a managed ComfyUI environment may need its own venv. The model downloads itself from Hugging Face on first LoadAudioXModel run.

The thing nobody tells you

All three conditions are required, and that's a limitation, not a feature. The paper's model supports flexible subsets - text-only, video-only, whatever - but this wrapper hardcodes the requirement. You cannot build a text-to-audio workflow with this node as shipped, because there's no way to skip video_tensor. On top of that, the audio leg is currently broken: LoadAudioXAudio ships with a line that throws away your file and emits silence (delete the audio_path = None line in nodes.py to fix it). So every stock workflow is really running video + text + silence, which biases the result in ways you can't see from the graph.

If you're here for video-to-foley, none of this will stop you - that's the combination that works. Just know that the node is doing less (and more rigid) work than its name implies. When things come out wrong, the fix isn't to fiddle with seconds_total; it's to check what's actually flowing into each of the three inputs.

CategoryAudioX

Inputs (5)

NameTypeDefaultDescription
video_tensorTENSOR
text_promptSTRING
audio_tensorTENSOR
seconds_startINT0
seconds_totalINT10

Outputs (1)

NameTypeDescription
conditioningCONDITIONING