Nodes/ComfyUI-FLOAT_Optimized/Load Emotion Recognition Model (VA)
ComfyUI Node

Load Emotion Recognition Model (VA)

The FLOAT pack's built-in mood reader

By set-soft·Created about a year ago·Updated 12 months ago· 33
Load Emotion Recognition Model (VA)
    • emotion_model_pipe
    • dim_e
    model_folder
    target_devicecpu

    FLOAT's emotion conditioning doesn't come out of nowhere - it's read from the voice by a dedicated Speech Emotion Recognition (SER) model, and in the Very Advanced graph Load Emotion Recognition Model (VA) is where that model gets loaded. It's a Wav2Vec 2.0 fine-tune for emotion classification, the same family as the one FLOAT was trained with, and it outputs the model pipe plus dim_e, the number of emotion classes. Downstream, the emotion-extraction nodes use it to turn audio (or your explicit choice) into the we_latent that colors the motion.

    This is one of the pack's two audio-model loaders, and they're easy to mix up, so the distinction is worth stating plainly:

    • Load Wav2Vec Model → the general speech-encoding model (wav2vec2-base-960h) that produces the motion-driving wa_latent.
    • Load Emotion Recognition Model → the emotion classifier (wav2vec-english-speech-emotion-recognition) that produces the feeling, we_latent.

    Different models, different folders in models/audio/, different jobs.

    Inputs and outputs

    • model_folder - dropdown of folders in ComfyUI/models/audio/. Shipped default: wav2vec-english-speech-emotion-recognition.
    • target_device - CPU or CUDA.

    Outputs:

    • emotion_model_pipe - the loaded model, feature extractor, and config bundled together. This is what Float Extract Emotion with Custom Model and Float Extract Emotion (Dynamic) consume.
    • dim_e - the number of emotion classes the model predicts (8 in the shipped one: angry, disgust, fear, happy, neutral, sad, surprise, plus "none"). The FMT sampler needs a we dimension that matches this, so it's worth keeping an eye on if you swap in a different SER model.

    Loading & install

    The loader pulls the weights from the model folder, auto-extracting from the unified FLOAT.safetensors (under the emotion_encoder.wav2vec2_for_emotion prefix) when the split model isn't present, or downloading the original pytorch_model.bin from the r-f/wav2vec-english-speech-emotion-recognition repo as a fallback. It's Apache 2.0-licensed itself, but the FLOAT wrapper around it is the pack's CC BY-NC-SA 4.0, so the whole thing stays non-commercial.

    Install is the pack routine: 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. One honest limitation to plan around: the emotion model is English-trained, so its reading of non-English speech is a guess at best - if you're working with another language, forcing the emotion dropdown is usually more reliable than trusting the classifier.

    CategoryFLOAT/Very Advanced/Loaders

    Inputs (2)

    NameTypeDefaultDescription
    model_folderCOMBOName of the speech emotion recognition model folder in ComfyUI/models/audio/
    target_deviceCOMBOcpuThe device (CPU or CUDA) to which the emotion model will be assigned for computation.

    Outputs (2)

    NameTypeDescription
    emotion_model_pipeEMOTION_MODEL_PIPE
    dim_eINT