Nodes/ComfyUI-AudioX/AudioX Images to Audio (VHS)
ComfyUI Node

AudioX Images to Audio (VHS)

Turn a VHS Image Sequence into Foley and Music

By aiimagestudio·Created 6 months ago·Updated 6 months ago· 38
AudioX Images to Audio (VHS)
  • audiox_model
  • images
  • audio
  • duration_seconds
fps24
taskV2M — Video to Music
steps250
cfg_scale7.0
sigma_min0.30
sigma_max500
sampler_typedpmpp-3m-sde
seed-1
custom_prompt

You generated a great silent clip with Wan, Hunyuan, or LTX and it's still silent. That's the itch this node scratches. AudioX Images to Audio (VHS) takes an IMAGE tensor - the exact thing VideoHelperSuite and most video-generation models hand you - and produces a matching AUDIO track: foley, ambience, or background music.

It's the sibling of the pack's AudioXVideoToAudio, and the distinction matters. ComfyUI's native Load Video node outputs a VIDEO type; VHS and image-to-video models output IMAGE frame batches. If your frames came from a generation pass or a VHS load, this is the node you wire up, not the video one. The sample workflow that ships with the pack runs both paths side by side, and it's the honest way to see the difference.

How it works

The mechanism is less magical than the name implies. The node writes your frames out as PNGs, shells out to ffmpeg to assemble them into a temporary H.264 MP4 at whatever fps you give it, then runs the exact same AudioX diffusion pipeline as the video node: the visual encoder (Synchformer on the recommended AudioX-MAF model) reads up to 10 seconds of footage - the models are trained on 10-second clips - and a k-diffusion sampler generates audio conditioned on it. Shorter videos get padded with the last frame, and the output is trimmed back to your actual duration.

So: no ffmpeg, no audio. That's the first thing to check when you get a RuntimeError that says "Ensure ffmpeg is installed and available on the system PATH."

Inputs that actually matter

Most of these you can leave alone. The ones you'll touch:

  • audiox_model - wire in the AUDIOX_MODEL output from the pack's AudioX Model Loader. It's required, and it's a hard requirement, not a suggestion.
  • images - your IMAGE batch from VHS_LoadVideo or any video-model output.
  • fps - default 24. Get this right, or the temp video's timing is wrong. The sample workflow wires it straight from VHS Video Info's source_fps output, which is the pro move.
  • task - V2A (video to audio / sound effects), V2M (video to music), and the text-guided TV2A / TV2M.
  • custom_prompt - empty by default, and required if you pick a TV2* task. The node throws if you leave it blank. "Relaxing piano music" beats "music" by a mile.

Then the sampler knobs you mostly ignore: steps (default 250, range 50–500), cfg_scale (7.0), sigma_min/sigma_max, sampler_type (dpmpp-3m-sde default), and seed (-1 = random). Drop steps to 100–150 for iteration if you're not on a fat card; the difference is speed more than it is night and day.

Outputs

Two of them. audio (AUDIO) is the track - feed it into a Preview Audio node to hear it, or into VHS's audio tools to mux it onto your video. duration_seconds (FLOAT) is the actual clip length, handy for downstream syncing.

Installing it

Same story as every node in this pack. ComfyUI Manager → search "ComfyUI-AudioX", or:

cd ComfyUI/custom_nodes
git clone https://github.com/jinxishe/ComfyUI-AudioX.git
cd ComfyUI-AudioX
pip install -r requirements.txt

That requirements file is worth a glance before you commit: decord, transformers, timm, descript-audio-codec, k-diffusion, and friends. Torch is deliberately excluded because ComfyUI manages it. Then the models, which is the heavy part - under ComfyUI/models/AudioX/:

huggingface-cli download HKUSTAudio/AudioX-MAF \
    --local-dir "ComfyUI/models/AudioX/AudioX-MAF"
huggingface-cli download openai/clip-vit-base-patch32 \
    --local-dir "ComfyUI/models/AudioX/clip-vit-base-patch32"

AudioX-MAF is the recommended model; the base AudioX is untested by the author and you'll want the Synchformer encoder anyway. Plan on roughly 16 GB VRAM - the author tests on an RTX 4060 Ti 16 GB.

Where people get burned

  • ffmpeg missing - see above; the node genuinely needs it on PATH.
  • Dependency conflicts - k-diffusion can pull an old numpy that fights opencv; the fix is pip install "numpy>=2.0.0". And descript-audiotools wants protobuf<3.20, so pip install "protobuf<3.20,>=3.9.2" if pip complains. These are usually safe to ignore if the node runs.
  • CLIP UNEXPECTED key warnings - harmless. The loader pulls just the vision head from a full CLIP checkpoint.
  • Disappointing dialogue - be honest about expectations. AudioX is a foley/music model; one reddit thread that tried it (and MMAudio) for "video to audio" was underwhelmed, and the consensus in the community is still that MMAudio is the foley workhorse and dialogue is a different job entirely. It's a young, 0-impression node wrapping a young model - treat results as "let's see what it gives me," not "this will score my short film."
CategoryAudioX

Inputs (11)

NameTypeDefaultDescription
audiox_modelAUDIOX_MODEL
imagesIMAGE
fpsFLOAT241–60
taskCOMBOV2M — Video to Music4 options: V2A — Video to Audio, V2M — Video to Music, TV2A — Text + Video to Audio, TV2M — Text + Video to Music
stepsINT25050–500
cfg_scaleFLOAT7.01–15
sigma_minFLOAT0.300.01–1
sigma_maxFLOAT500100–1000
sampler_typeCOMBOdpmpp-3m-sde4 options: dpmpp-3m-sde, dpmpp-2m-sde, k-heun, k-dpm-fast
seedINT-1-1–2147483647
custom_promptoptSTRING

Outputs (2)

NameTypeDescription
audioAUDIO
duration_secondsFLOAT