FLOAT Audio Feature Extract (VA)
The VA graph's audio front-end
- audio
- wav2vec_pipe
- wav2vec_features
- audio_num_frames
- processed_audio_features
- wav2vec_pipe_out
- audio
- fps
The Very Advanced graph splits the audio path into two explicit stages, and this is the first one. FLOAT Audio Feature Extract (VA) takes raw audio, runs it through the Wav2Vec model loaded by Load Wav2Vec Model, and interpolates the resulting features up to your target FPS so they line up with video frames. The output is what the projection layer - the next node in the audio branch - will compress down into the wa_latent that drives the lips.
Note the difference from the Advanced path: here you're expected to hand over audio that's already mono and at the sample rate the Wav2Vec pipe expects. The Advanced node quietly resamples for you; this one doesn't. Feed it stereo or wrong-rate audio and you'll get silence or garbage features, not an error message.
Inputs and outputs
- audio - the raw ComfyUI
AUDIOinput. Must be mono, correct sample rate. - wav2vec_pipe - from Load Wav2Vec Model; carries the model, feature extractor, and effective options.
- target_fps (default 25) - the frame rate the features get interpolated to. This is how the output video length and frame count get fixed.
- only_last_features (default
false) - a real quality/speed lever.falseconcatenates features from all transformer layers, which is a much larger feature dimension (better fidelity, heavier);trueuses only the last layer's features (smaller, faster). If you're experimenting with VRAM, this is a good first thing to flip.
Outputs: wav2vec_features (the interpolated features, ready for Float Apply Audio Projection), audio_num_frames (total video frames - the sampler needs this to know how long the motion sequence is), processed_audio_features (features before the main Wav2Vec model - these feed the emotion branch), plus passthroughs of wav2vec_pipe, audio, and fps so the VA graph can keep its bus flowing.
That processed_audio_features output is the quiet workhorse: the emotion path (Float Extract Emotion with Custom Model) consumes it, keeping the emotion prediction derived from the same audio the motion was conditioned on.
The practical stuff
Install is the pack standard: Manager search "ComfyUI-FLOAT_Optimized", or cd ComfyUI/custom_nodes && git clone https://github.com/set-soft/ComfyUI-FLOAT_Optimized && pip install -r requirements.txt, restart. First run, the loader pulls or extracts the Wav2Vec 2.0 weights - the base model is a separate download from the unified FLOAT checkpoint, so expect it to fetch wav2vec2-base-960h into models/audio/. Audio quality is still king: clean mono speech beats music-laden tracks, and the emotion half of this pipeline was trained on English. FLOAT itself is CC BY-NC-SA 4.0 - non-commercial.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | The raw ComfyUI audio input. Must be mono and have the correct sample rate required by the Wav2Vec pipe. | |
| wav2vec_pipe | WAV2VEC_PIPE | The loaded Wav2Vec pipe, containing the model, feature extractor, and options. | |
| target_fps | FLOAT | 25.0 | The target video frames-per-second. Used to calculate the final number of feature frames. |
| only_last_features | BOOLEAN | false | If True, use only the features from the last transformer layer. If False, concatenate features from all transformer layers, resulting in a much larger feature dimension. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| wav2vec_features | TORCH_TENSOR | — |
| audio_num_frames | INT | — |
| processed_audio_features | TORCH_TENSOR | — |
| wav2vec_pipe_out | WAV2VEC_PIPE | — |
| audio | AUDIO | — |
| fps | FLOAT | — |