Audio Path 🎥AniPortrait
Load the Audio That Drives the Face — and Keep It Handy for the Final Mux
- audio_path
- audio
AniPortrait's audio-driven mode is exactly what it sounds like: give it a voice recording and a photo, and it makes the photo talk. AniPortrait_Audio_Path is the node that hands that recording to the generator - and, usefully, it also hands you back the audio in a form VHS Video Combine can mux onto the finished video.
What it does
You give it a path to a .wav (or .mp3), it validates the file exists, and it returns the path twice over in two different flavors: an Audio_Path for the AniPortrait generator's audio_path input, and a VHS_AUDIO output that carries the extracted audio bytes for the Video Helper Suite nodes downstream. That second output is the quiet killer feature - it means the audio you drove the animation with is the same audio you can paste back onto the rendered clip, in one graph, without a separate extraction step.
It also has one optional input worth knowing: seek_seconds (FLOAT, default 0). Set it to skip past silence or lead-in when you start animating - handy when the audio file has a few dead seconds at the front and you don't want the face mouthing nothing.
How it works
Internally it uses the pack's ffmpeg wrapper to extract the audio to raw WAV bytes (the extraction is lazy - it's a callable returned in the VHS_AUDIO output, so it only runs when something actually consumes it). It re-evaluates when the audio file changes on disk, which is convenient while you're iterating on a take.
The one real dependency: the VHS_AUDIO output assumes ComfyUI Video Helper Suite is installed, since that's the type system it plugs into. If you don't have VHS, the output still exists but there's nothing to connect it to - and honestly, VHS is a dependency you want anyway, since this pack's own workflows are built around it.
Using it in the audio-driven workflow
The pack's audio2video_workflow.json wires it like this:
Load Image→ reference photo →AniPortrait_Audio2Video'sref_imageAniPortrait_Audio_Path→audio_path→AniPortrait_Audio2Video'saudio_pathAniPortrait_Audio2Video→images→VHS Video CombineAniPortrait_Audio_Path→audio→VHS Video Combine's audio input
That last connection is what puts the sound back on the video. Skip it and you get a silent clip.
Install
It ships with the pack, so one install gets you here:
cd ComfyUI/custom_nodes
git clone https://github.com/frankchieng/ComfyUI_Aniportrait
cd ComfyUI_Aniportrait && pip install -r requirements.txt
or find "ComfyUI_Aniportrait" in ComfyUI Manager and restart. Note this node is only the input side - the actual talking-head generation happens in AniPortrait_Audio2Video, which needs the full stack of model weights (SD 1.5, VAE, wav2vec2, the audio2mesh/audio2pose checkpoints, and more) to do anything. The Audio Path node is the easy part; the models are the project.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_path | STRING | X://insert/path/audio.wav | — |
| seek_secondsopt | FLOAT | 0.00 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio_path | Audio_Path | — |
| audio | VHS_AUDIO | — |