{
  "APG": {
    "display_name": "Guidance Adaptatif Projeté",
    "inputs": {
      "eta": {
        "name": "eta",
        "tooltip": "Contrôle l'échelle du vecteur de guidance parallèle. Comportement CFG par défaut avec un réglage de 1."
      },
      "model": {
        "name": "modèle"
      },
      "momentum": {
        "name": "momentum",
        "tooltip": "Contrôle une moyenne mobile de la guidance pendant la diffusion, désactivé avec un réglage de 0."
      },
      "norm_threshold": {
        "name": "seuil_norme",
        "tooltip": "Normalise le vecteur de guidance à cette valeur, la normalisation est désactivée avec un réglage de 0."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ARVideoI2V": {
    "display_name": "ARVideoI2V",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "model": {
        "name": "modèle"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "AddNoise": {
    "display_name": "AjouterBruit",
    "inputs": {
      "latent_image": {
        "name": "image_latente"
      },
      "model": {
        "name": "modèle"
      },
      "noise": {
        "name": "bruit"
      },
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AddTextPrefix": {
    "display_name": "Ajouter un préfixe au texte",
    "inputs": {
      "prefix": {
        "name": "préfixe",
        "tooltip": "Préfixe à ajouter."
      },
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "AddTextSuffix": {
    "display_name": "Ajouter un suffixe au texte",
    "inputs": {
      "suffix": {
        "name": "suffixe",
        "tooltip": "Suffixe à ajouter."
      },
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "AdjustBrightness": {
    "description": "Ajuster la luminosité d'une image.",
    "display_name": "Ajuster la luminosité",
    "inputs": {
      "factor": {
        "name": "facteur",
        "tooltip": "Facteur de luminosité. 1.0 = aucun changement, <1.0 = plus sombre, >1.0 = plus clair."
      },
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "AdjustContrast": {
    "description": "Ajuster le contraste d'une image.",
    "display_name": "Ajuster le contraste",
    "inputs": {
      "factor": {
        "name": "facteur",
        "tooltip": "Facteur de contraste. 1.0 = aucun changement, <1.0 = moins de contraste, >1.0 = plus de contraste."
      },
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "AlignYourStepsScheduler": {
    "display_name": "PlanificateurAlignezVosÉtapes",
    "inputs": {
      "denoise": {
        "name": "débruitage"
      },
      "model_type": {
        "name": "type_de_modèle"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AnimaLLLiteApply": {
    "display_name": "Appliquer Anima LLLite",
    "inputs": {
      "end_percent": {
        "name": "pourcentage de fin"
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "masque"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "correctif du modèle"
      },
      "start_percent": {
        "name": "pourcentage de début"
      },
      "strength": {
        "name": "intensité"
      }
    }
  },
  "AudioAdjustVolume": {
    "description": "Ajuster le volume de l'audio d'une valeur spécifiée en décibels (dB).",
    "display_name": "Ajuster le Volume Audio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "volume": {
        "name": "volume",
        "tooltip": "Ajustement du volume en décibels (dB). 0 = pas de changement, +6 = double, -6 = moitié, etc."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AudioConcat": {
    "description": "Concatène l'audio1 à l'audio2 dans la direction spécifiée.",
    "display_name": "Concaténer Audio",
    "inputs": {
      "audio1": {
        "name": "audio1"
      },
      "audio2": {
        "name": "audio2"
      },
      "direction": {
        "name": "direction",
        "tooltip": "Indique s'il faut ajouter audio2 après ou avant audio1."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AudioEncoderEncode": {
    "display_name": "EncodeurAudioEncoder",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audio_encoder": {
        "name": "encodeur_audio"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AudioEncoderLoader": {
    "display_name": "ChargeurEncodeurAudio",
    "inputs": {
      "audio_encoder_name": {
        "name": "nom_encodeur_audio"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AudioEqualizer3Band": {
    "display_name": "Égaliseur audio (3 bandes)",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "high_freq": {
        "name": "high_freq",
        "tooltip": "Fréquence de coupure pour l'étagère haute"
      },
      "high_gain_dB": {
        "name": "high_gain_dB",
        "tooltip": "Gain pour les hautes fréquences (aigus)"
      },
      "low_freq": {
        "name": "low_freq",
        "tooltip": "Fréquence de coupure pour l'étagère basse"
      },
      "low_gain_dB": {
        "name": "low_gain_dB",
        "tooltip": "Gain pour les basses fréquences (basses)"
      },
      "mid_freq": {
        "name": "mid_freq",
        "tooltip": "Fréquence centrale pour les médiums"
      },
      "mid_gain_dB": {
        "name": "mid_gain_dB",
        "tooltip": "Gain pour les fréquences moyennes"
      },
      "mid_q": {
        "name": "mid_q",
        "tooltip": "Facteur Q (bande passante) pour les médiums"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "AudioMerge": {
    "description": "Combine deux pistes audio en superposant leurs formes d'onde.",
    "display_name": "Fusion Audio",
    "inputs": {
      "audio1": {
        "name": "audio1"
      },
      "audio2": {
        "name": "audio2"
      },
      "merge_method": {
        "name": "méthode_fusion",
        "tooltip": "La méthode utilisée pour combiner les formes d'onde audio."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BasicGuider": {
    "display_name": "GuideBasique",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BasicScheduler": {
    "display_name": "PlanificateurBasique",
    "inputs": {
      "denoise": {
        "name": "débruitage"
      },
      "model": {
        "name": "modèle"
      },
      "scheduler": {
        "name": "planificateur"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BatchImagesNode": {
    "display_name": "Images par lot",
    "inputs": {
      "images": {
        "name": "images"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BatchLatentsNode": {
    "display_name": "Latents par lot",
    "inputs": {
      "latents": {
        "name": "latents"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BatchMasksNode": {
    "display_name": "Masques par lot",
    "inputs": {
      "masks": {
        "name": "masques"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BeebleSwitchXImageEdit": {
    "description": "Modifiez une image unique avec Beeble SwitchX. Modifie tout élément de la scène (arrière-plan, éclairage, costume) tout en préservant les pixels du sujet original. Fournissez une image de référence et/ou une invite textuelle pour décrire le nouveau rendu. Max ~2,77MP.",
    "display_name": "Beeble SwitchX Édition d’Image",
    "inputs": {
      "alpha_mode": {
        "name": "mode alpha",
        "tooltip": "Contrôle la façon dont SwitchX décide quoi conserver ou régénérer. « auto » isole automatiquement le sujet principal. « fill » régénère l’ensemble de l’image tout en préservant la géométrie. « select » propage une image clé de la première image sur tout le clip. « custom » utilise un cache alpha par image que vous fournissez."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "max_resolution": {
        "name": "résolution maximale",
        "tooltip": "Résolution de sortie maximale."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle du résultat souhaité (max 2000 caractères). Au moins l’un des champs « invite » ou « image de référence » est requis."
      },
      "reference_image": {
        "name": "image de référence",
        "tooltip": "Image de référence dont l’apparence (arrière-plan, éclairage, costume) doit être adoptée par le résultat. Au moins l’un des champs « image de référence » ou « invite » est requis."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "image",
        "tooltip": null
      },
      "1": {
        "name": "alpha",
        "tooltip": "Le cache alpha utilisé par Beeble. Vide en mode « fill », qui n’a pas de cache séparé."
      }
    }
  },
  "BeebleSwitchXVideoEdit": {
    "description": "Modifiez une vidéo avec Beeble SwitchX. Modifie tout élément de la scène (arrière-plan, éclairage, costume) tout en préservant les pixels et le mouvement du sujet original. Fournissez une image de référence et/ou une invite textuelle pour décrire le nouveau rendu. Max 240 images, max ~2,77MP par image.",
    "display_name": "Beeble SwitchX Édition Vidéo",
    "inputs": {
      "alpha_mode": {
        "name": "mode alpha",
        "tooltip": "Contrôle la façon dont SwitchX décide quoi conserver ou régénérer. « auto » isole automatiquement le sujet principal. « fill » régénère l’ensemble de l’image tout en préservant la géométrie. « select » propage une image clé de la première image sur tout le clip. « custom » utilise un cache alpha par image que vous fournissez."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "max_resolution": {
        "name": "résolution maximale",
        "tooltip": "Résolution de sortie maximale."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle du résultat souhaité (max 2000 caractères). Au moins l’un des champs « invite » ou « image de référence » est requis."
      },
      "reference_image": {
        "name": "image de référence",
        "tooltip": "Image de référence dont l’apparence (arrière-plan, éclairage, costume) doit être adoptée par le résultat. Au moins l’un des champs « image de référence » ou « invite » est requis."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "name": "vidéo",
        "tooltip": null
      },
      "1": {
        "name": "alpha",
        "tooltip": "Le cache alpha utilisé par Beeble. Vide en mode « fill », qui n’a pas de cache séparé."
      }
    }
  },
  "BerniniConditioning": {
    "description": "Nœud de conditioning pour Bernini pour le conditioning vidéo/image in-context. Il peut être utilisé pour les tâches suivantes : t2v (texte vers vidéo), v2v (vidéo vers vidéo), rv2v (édition vidéo guidée par référence), r2v (référence vers vidéo), ads2v (insertion d'image/vidéo dans une vidéo). Les images de référence injectées comme tokens in-context (r2v, rv2v) sont encodées indépendamment à leur propre ratio d’aspect natif (bord long limité à ref_max_size).",
    "display_name": "Bernini Conditioning",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "ref_max_size": {
        "name": "ref_max_size",
        "tooltip": "Taille maximale pour le bord long de reference_video et reference_images. Redimensionné en conservant le ratio d’aspect et ajusté à 16px."
      },
      "reference_images": {
        "name": "images_de_référence"
      },
      "reference_video": {
        "name": "vidéo_de_référence",
        "tooltip": "Vidéo à insérer dans la vidéo source (ads2v)."
      },
      "source_video": {
        "name": "vidéo_source",
        "tooltip": "Vidéo source à éditer ou restyler (v2v, rv2v). Redimensionnée à la largeur/hauteur et coupée à la longueur."
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "BetaSamplingScheduler": {
    "display_name": "PlanificateurÉchantillonnageBeta",
    "inputs": {
      "alpha": {
        "name": "alpha"
      },
      "beta": {
        "name": "beta"
      },
      "model": {
        "name": "modèle"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BriaImageEditNode": {
    "description": "Modifiez des images en utilisant le dernier modèle Bria",
    "display_name": "Bria Image Edit",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "guidance_scale": {
        "name": "échelle de guidage",
        "tooltip": "Une valeur plus élevée fait suivre l'image à l'invite de façon plus précise."
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "masque",
        "tooltip": "Si omis, la modification s'applique à l'image entière."
      },
      "model": {
        "name": "modèle"
      },
      "moderation": {
        "name": "modération",
        "tooltip": "Paramètres de modération"
      },
      "negative_prompt": {
        "name": "invite négative"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Instruction pour modifier l'image"
      },
      "seed": {
        "name": "graine"
      },
      "steps": {
        "name": "étapes"
      },
      "structured_prompt": {
        "name": "invite structurée",
        "tooltip": "Une chaîne contenant l'invite d'édition structurée au format JSON. Utilisez ceci à la place de l'invite habituelle pour un contrôle précis et programmatique."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "invite structurée",
        "tooltip": null
      }
    }
  },
  "BriaRemoveImageBackground": {
    "description": "Supprimez l’arrière-plan d’une image avec Bria RMBG 2.0.",
    "display_name": "Bria Remove Image Background",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "moderation": {
        "name": "modération",
        "tooltip": "Paramètres de modération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BriaRemoveVideoBackground": {
    "description": "Supprimez l’arrière-plan d’une vidéo avec Bria.",
    "display_name": "Bria Remove Video Background",
    "inputs": {
      "background_color": {
        "name": "couleur d’arrière-plan",
        "tooltip": "Couleur d’arrière-plan pour la vidéo de sortie."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BriaTransparentVideoBackground": {
    "description": "Supprimez l’arrière-plan d’une vidéo avec Bria et obtenez les images détourées ainsi qu’un masque alpha. Connectez-les à un nœud de composition ou transmettez-les à Enregistrer WEBM pour créer une vidéo transparente.",
    "display_name": "Bria Suppression de l’arrière-plan vidéo (Transparent)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      },
      "1": {
        "name": "mask",
        "tooltip": null
      }
    }
  },
  "BriaVideoGreenScreen": {
    "description": "Remplacez l’arrière-plan d’une vidéo par un écran uni de chroma-key à l’aide de Bria.",
    "display_name": "Bria Video Green Screen",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "green_shade": {
        "name": "teinte verte",
        "tooltip": "Teinte unie de chroma-key appliquée derrière le premier plan : broadcast_green (#00B140), chroma_green (#00FF00) ou blue_screen (#0000FF)."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BriaVideoReplaceBackground": {
    "description": "Remplacez l'arrière-plan d'une vidéo par une image ou une vidéo fournie à l'aide de Bria. La sortie conserve la résolution et la fréquence d'images du premier plan ; un arrière-plan avec un autre format d'image sera étiré pour s'adapter, donc faites correspondre le format pour éviter toute déformation.",
    "display_name": "Bria Video Remplacer l'arrière-plan",
    "inputs": {
      "background_image": {
        "name": "image d'arrière-plan",
        "tooltip": "Image d'arrière-plan à placer derrière le premier plan. Fournissez soit une image d'arrière-plan, soit une vidéo d'arrière-plan, mais pas les deux."
      },
      "background_video": {
        "name": "vidéo d'arrière-plan",
        "tooltip": "Vidéo d'arrière-plan à placer derrière le premier plan. Fournissez soit une image d'arrière-plan, soit une vidéo d'arrière-plan, mais pas les deux."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo de premier plan dont l'arrière-plan est remplacé."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "BuildJsonPromptIdeogram": {
    "description": "Génère une invite JSON pour le modèle Ideogram 4.",
    "display_name": "Générer une invite JSON (Ideogram)",
    "inputs": {
      "aesthetics": {
        "name": "esthétique",
        "tooltip": "Mots-clés esthétiques obligatoires (ex : sombre, cinématographique, désaturé)."
      },
      "background": {
        "name": "arrière-plan",
        "tooltip": "Description obligatoire de l’arrière-plan ou de l’environnement de l’image."
      },
      "color_palette": {
        "name": "palette_de_couleurs",
        "tooltip": "Codes couleur hexadécimaux pour orienter les couleurs dominantes de l’image. Jusqu’à 16 entrées."
      },
      "element": {
        "name": "élément",
        "tooltip": "Éléments d'invite provenant du nœud Créer des boîtes englobantes."
      },
      "high_level_description": {
        "name": "description_de_haut_niveau",
        "tooltip": "Description optionnelle de l’image en une ou deux phrases. Fortement recommandé."
      },
      "lighting": {
        "name": "éclairage",
        "tooltip": "Description obligatoire de l’éclairage (ex : heure dorée, contre-jour, ombres dramatiques)."
      },
      "medium": {
        "name": "support",
        "tooltip": "Type de support obligatoire (ex : photographie, illustration, rendu_3d, peinture, conception_graphique). Lorsque style = photo, choisir photographie."
      },
      "style": {
        "name": "style"
      }
    },
    "outputs": {
      "0": {
        "name": "invite",
        "tooltip": null
      }
    }
  },
  "ByteDance2FirstLastFrameNode": {
    "description": "Générez une vidéo avec Seedance 2.0 à partir d'une image de première image et, optionnellement, d'une image de dernière image.",
    "display_name": "ByteDance Seedance 2.0 Première-Dernière-Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "first_frame": {
        "name": "première image",
        "tooltip": "Image de la première image pour la vidéo."
      },
      "first_frame_asset_id": {
        "name": "first_frame_asset_id",
        "tooltip": "ID d’actif Seedance à utiliser comme première image. Mutuellement exclusif avec l’entrée image first_frame."
      },
      "last_frame": {
        "name": "dernière image",
        "tooltip": "Image de la dernière image pour la vidéo."
      },
      "last_frame_asset_id": {
        "name": "last_frame_asset_id",
        "tooltip": "ID d’actif Seedance à utiliser comme dernière image. Mutuellement exclusif avec l’entrée image last_frame."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Seedance 2.0 pour une qualité maximale ; Seedance 2.0 Fast pour une optimisation de la vitesse."
      },
      "model_duration": {
        "name": "durée"
      },
      "model_generate_audio": {
        "name": "générer_audio"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDance2ReferenceNode": {
    "description": "Générez, éditez ou étendez une vidéo avec Seedance 2.0 à l'aide d'images, de vidéos et d'audios de référence. Prend en charge la référence multimodale, l'édition vidéo et l'extension vidéo.",
    "display_name": "ByteDance Seedance 2.0 Référence vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Seedance 2.0 pour une qualité maximale ; Seedance 2.0 Fast pour une optimisation de la vitesse."
      },
      "model_auto_downscale": {
        "name": "auto_downscale"
      },
      "model_auto_upscale": {
        "name": "auto_upscale"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_generate_audio": {
        "name": "générer_audio"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDance2TextToVideoNode": {
    "description": "Générez une vidéo avec les modèles Seedance 2.0 à partir d'un prompt textuel.",
    "display_name": "ByteDance Seedance 2.0 Texte vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Seedance 2.0 pour une qualité maximale ; Seedance 2.0 Fast pour une optimisation de la vitesse."
      },
      "model_duration": {
        "name": "durée"
      },
      "model_generate_audio": {
        "name": "générer_audio"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceCreateImageAsset": {
    "description": "Créez un actif image personnel Seedance 2.0. Télécharge l’image d’entrée et l’enregistre dans le groupe d’actifs indiqué. Si group_id est vide, lance une authentification H5 de personne réelle pour créer un nouveau groupe avant d’ajouter l’actif.",
    "display_name": "ByteDance Créer un Actif Image",
    "inputs": {
      "group_id": {
        "name": "group_id",
        "tooltip": "Réutilisez un ID de groupe d’actifs Seedance existant pour éviter la vérification humaine répétée pour la même personne. Laissez vide pour lancer l’authentification de personne réelle dans le navigateur et créer un nouveau groupe."
      },
      "image": {
        "name": "image",
        "tooltip": "Image à enregistrer comme actif personnel."
      }
    },
    "outputs": {
      "0": {
        "name": "asset_id",
        "tooltip": null
      },
      "1": {
        "name": "group_id",
        "tooltip": null
      }
    }
  },
  "ByteDanceCreateVideoAsset": {
    "description": "Créez un actif vidéo personnel Seedance 2.0. Télécharge la vidéo d’entrée et l’enregistre dans le groupe d’actifs indiqué. Si group_id est vide, lance une authentification H5 de personne réelle pour créer un nouveau groupe avant d’ajouter l’actif.",
    "display_name": "ByteDance Créer un Actif Vidéo",
    "inputs": {
      "group_id": {
        "name": "group_id",
        "tooltip": "Réutilisez un ID de groupe d’actifs Seedance existant pour éviter la vérification humaine répétée pour la même personne. Laissez vide pour lancer l’authentification de personne réelle dans le navigateur et créer un nouveau groupe."
      },
      "video": {
        "name": "video",
        "tooltip": "Vidéo à enregistrer comme actif personnel."
      }
    },
    "outputs": {
      "0": {
        "name": "asset_id",
        "tooltip": null
      },
      "1": {
        "name": "group_id",
        "tooltip": null
      }
    }
  },
  "ByteDanceFirstLastFrameNode": {
    "description": "Générer une vidéo en utilisant l'invite et les première et dernière images.",
    "display_name": "ByteDance Première-Dernière Image vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect",
        "tooltip": "Le ratio d'aspect de la vidéo de sortie."
      },
      "camera_fixed": {
        "name": "camera_fixed",
        "tooltip": "Spécifie si la caméra doit être fixe. L'application ajoute une instruction pour fixer la caméra à votre prompt, mais ne garantit pas l'effet réel."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration": {
        "name": "durée",
        "tooltip": "La durée de la vidéo de sortie en secondes."
      },
      "first_frame": {
        "name": "première_image",
        "tooltip": "Première image à utiliser pour la vidéo."
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Ce paramètre est ignoré pour tout modèle sauf seedance-1-5-pro."
      },
      "last_frame": {
        "name": "dernière_image",
        "tooltip": "Dernière image à utiliser pour la vidéo."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "L'invite textuelle utilisée pour générer la vidéo."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "La résolution de la vidéo de sortie."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "watermark",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceImageNode": {
    "description": "Générer des images en utilisant les modèles ByteDance via l'API basée sur le prompt",
    "display_name": "Image ByteDance",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "guidance_scale": {
        "name": "guidance_scale",
        "tooltip": "Une valeur plus élevée fait que l'image suit plus fidèlement le prompt"
      },
      "height": {
        "name": "height",
        "tooltip": "Hauteur personnalisée pour l'image. La valeur fonctionne uniquement si `size_preset` est défini sur `Personnalisé`"
      },
      "model": {
        "name": "model"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Le prompt texte utilisé pour générer l'image"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "size_preset": {
        "name": "size_preset",
        "tooltip": "Choisir une taille recommandée. Sélectionnez Personnalisé pour utiliser la largeur et la hauteur ci-dessous"
      },
      "watermark": {
        "name": "watermark",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à l'image"
      },
      "width": {
        "name": "width",
        "tooltip": "Largeur personnalisée pour l'image. La valeur fonctionne uniquement si `size_preset` est défini sur `Personnalisé`"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceImageReferenceNode": {
    "description": "Générer une vidéo en utilisant un prompt et des images de référence.",
    "display_name": "ByteDance Images de référence en vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect",
        "tooltip": "Le ratio d'aspect de la vidéo en sortie."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "La durée de la vidéo en sortie en secondes."
      },
      "images": {
        "name": "images",
        "tooltip": "Une à quatre images."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Le prompt textuel utilisé pour générer la vidéo."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "La résolution de la vidéo en sortie."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceImageToVideoNode": {
    "description": "Générer une vidéo en utilisant les modèles ByteDance via l'API basée sur l'image et le prompt",
    "display_name": "ByteDance Image en vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect",
        "tooltip": "Le ratio d'aspect de la vidéo en sortie."
      },
      "camera_fixed": {
        "name": "caméra_fixe",
        "tooltip": "Spécifie s'il faut fixer la caméra. La plateforme ajoute une instruction pour fixer la caméra à votre prompt, mais ne garantit pas l'effet réel."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "La durée de la vidéo en sortie en secondes."
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Ce paramètre est ignoré pour tout modèle sauf seedance-1-5-pro."
      },
      "image": {
        "name": "image",
        "tooltip": "Première image à utiliser pour la vidéo."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Le prompt textuel utilisé pour générer la vidéo."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "La résolution de la vidéo en sortie."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceSeedAudio": {
    "description": "Générez de la parole, de la musique, des effets sonores et des dialogues multi-interlocuteurs à partir d’un seul prompt avec ByteDance Seed Audio 1.0. Décrivez la/les voix, l’émotion, l’ambiance, la musique de fond et les effets sonores dans le prompt, et incluez les répliques à prononcer. Vous pouvez choisir une voix prédéfinie intégrée, cloner jusqu’à 3 voix à partir de clips de référence (étiquetés @Audio1-3 dans le prompt), ou dériver une voix à partir de l’image d’un personnage. Jusqu’à 2 minutes d’audio par génération.",
    "display_name": "ByteDance Seed Audio 1.0",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "loudness_rate": {
        "name": "loudness_rate",
        "tooltip": "Volume. 0 = normal, 100 = 2,0x, -50 = 0,5x."
      },
      "model": {
        "name": "model",
        "tooltip": "seed-audio-1.0-multilingual : 20 langues (anglais, chinois, japonais, coréen, espagnol mexicain et castillan, indonésien, allemand, portugais brésilien, français, thaï, vietnamien, malais, philippin, italien, russe, néerlandais, polonais, turc, suédois) avec contrôle du timing par phrase via des horodatages \"[5.5s:8.0s] ...\". seed-audio-1.0 : anglais et chinois uniquement, sans contrôle du timing."
      },
      "pitch_rate": {
        "name": "pitch_rate",
        "tooltip": "Décalage de hauteur en demi-tons (-12 à 12)."
      },
      "reference_mode": {
        "name": "reference_mode",
        "tooltip": "Comment conditionner la voix : « texte uniquement » (tout décrire dans le prompt), « référence audio » (cloner jusqu’à 3 voix, étiquetées @Audio1-3), « référence image » (dériver une voix à partir de l’image d’un personnage), ou « voix prédéfinie » (choisir une voix intégrée qui lit le prompt)."
      },
      "sample_rate": {
        "name": "sample_rate",
        "tooltip": "Fréquence d’échantillonnage de sortie en Hz."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      },
      "speech_rate": {
        "name": "speech_rate",
        "tooltip": "Vitesse de parole. 0 = normal, 100 = 2,0x, -50 = 0,5x."
      },
      "text_prompt": {
        "name": "text_prompt",
        "tooltip": "Décrivez la/les voix, l’émotion, le rythme, l’ambiance, la musique de fond et les effets sonores, et incluez les répliques à prononcer (nommez les personnages dans le texte pour les dialogues). En mode « référence audio », faites référence aux clips connectés par ordre : @Audio1, @Audio2, @Audio3. Maximum 3000 caractères."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceSeedNode": {
    "description": "Générez des réponses textuelles avec les modèles Seed 2.0 de ByteDance. Fournissez une invite textuelle et, en option, une ou plusieurs images ou vidéos pour un contexte multimodal.",
    "display_name": "ByteDance Seed",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle Seed utilisé pour générer la réponse."
      },
      "model_temperature": {
        "name": "température"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Entrée textuelle pour le modèle."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "system_prompt": {
        "name": "invite système",
        "tooltip": "Instructions fondamentales qui dictent le comportement du modèle."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceSeedreamNode": {
    "description": "Génération unifiée de texte à image et édition précise phrase par phrase jusqu'à une résolution 4K.",
    "display_name": "ByteDance Seedream 4",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "fail_on_partial": {
        "name": "fail_on_partial",
        "tooltip": "Si activé, interrompt l'exécution si des images demandées sont manquantes ou renvoient une erreur."
      },
      "height": {
        "name": "height",
        "tooltip": "Hauteur personnalisée pour l'image. La valeur fonctionne uniquement si `size_preset` est défini sur `Personnalisé`"
      },
      "image": {
        "name": "image",
        "tooltip": "Image(s) d'entrée pour la génération d'image à image. Liste de 1 à 10 images pour une génération à référence unique ou multiple."
      },
      "max_images": {
        "name": "max_images",
        "tooltip": "Nombre maximum d'images à générer lorsque sequential_image_generation='auto'. Le nombre total d'images (entrée + générées) ne peut pas dépasser 15."
      },
      "model": {
        "name": "model"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite de texte pour créer ou modifier une image."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "sequential_image_generation": {
        "name": "sequential_image_generation",
        "tooltip": "Mode de génération d'images groupées. 'désactivé' génère une seule image. 'auto' laisse le modèle décider s'il faut générer plusieurs images liées (par exemple, scènes d'histoire, variations de personnages)."
      },
      "size_preset": {
        "name": "size_preset",
        "tooltip": "Choisissez une taille recommandée. Sélectionnez Personnalisé pour utiliser la largeur et la hauteur ci-dessous."
      },
      "watermark": {
        "name": "watermark",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à l'image."
      },
      "width": {
        "name": "width",
        "tooltip": "Largeur personnalisée pour l'image. La valeur fonctionne uniquement si `size_preset` est défini sur `Personnalisé`"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceSeedreamNodeV2": {
    "description": "Génération d'image à partir de texte unifiée et édition précise d'une seule phrase jusqu'à une résolution 4K.",
    "display_name": "ByteDance Seedream 4.5 & 5.0",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_height": {
        "name": "hauteur"
      },
      "model_size_preset": {
        "name": "préréglage_taille"
      },
      "model_width": {
        "name": "largeur"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour créer ou éditer une image."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "thinking": {
        "name": "thinking",
        "tooltip": "Activez le raisonnement d'optimisation du prompt du modèle (« thinking ») pour une meilleure conformité. Peut augmenter considérablement le temps de génération — notamment sur Seedream 5.0 Pro. Ne peut être désactivé que pour le texte-vers-image (pas lorsque des images de référence sont fournies)."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane « Généré par IA » à l’image."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ByteDanceTextToVideoNode": {
    "description": "Générer une vidéo en utilisant les modèles ByteDance via l'API basée sur l'invite",
    "display_name": "ByteDance Texte vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Le rapport d'aspect de la vidéo de sortie."
      },
      "camera_fixed": {
        "name": "camera_fixed",
        "tooltip": "Spécifie si la caméra doit être fixée. L'application ajoute une instruction pour fixer la caméra à votre prompt, mais ne garantit pas l'effet réel."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "duration",
        "tooltip": "La durée de la vidéo de sortie en secondes."
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Ce paramètre est ignoré pour tout modèle sauf seedance-1-5-pro."
      },
      "model": {
        "name": "model"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "L'invite de texte utilisée pour générer la vidéo."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "La résolution de la vidéo de sortie."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CFGGuider": {
    "display_name": "GuideCFG",
    "inputs": {
      "cfg": {
        "name": "cfg"
      },
      "model": {
        "name": "modèle"
      },
      "negative": {
        "name": "négative"
      },
      "positive": {
        "name": "positive"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CFGNorm": {
    "display_name": "CFGNorm",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "pre_cfg": {
        "name": "pre_cfg",
        "tooltip": "Si activé, rescinde le bruit combiné AVANT la combinaison CFG du sampler, sans limitation (peut amplifier). Correspond au CFG à norme rescalée utilisé par des modèles comme Lens. Par défaut, false conserve le comportement original d’atténuation uniquement dans l’espace x0 après CFG."
      },
      "strength": {
        "name": "intensité"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_patché",
        "tooltip": null
      }
    }
  },
  "CFGOverride": {
    "description": "Remplace le cfg par une valeur fixe sur une tranche de pourcentage [début, fin] des étapes. En cas de remplacements multiples, celui le plus proche du sampler prévaut en cas de chevauchement.",
    "display_name": "Remplacement CFG",
    "inputs": {
      "cfg": {
        "name": "cfg"
      },
      "end_percent": {
        "name": "pourcentage_fin"
      },
      "model": {
        "name": "modèle"
      },
      "start_percent": {
        "name": "pourcentage_début"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CFGZeroStar": {
    "display_name": "CFGZeroStar",
    "inputs": {
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle corrigé",
        "tooltip": null
      }
    }
  },
  "CLIPAttentionMultiply": {
    "display_name": "MultiplierAttentionCLIP",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "k": {
        "name": "k"
      },
      "out": {
        "name": "sortie"
      },
      "q": {
        "name": "q"
      },
      "v": {
        "name": "v"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPLoader": {
    "description": "[Recettes]\n\nstable_diffusion: clip-l\nstable_cascade: clip-g\nsd3: t5 / clip-g / clip-l\nstable_audio: t5\nmochi: t5\ncosmos: old t5 xxl",
    "display_name": "Charger CLIP",
    "inputs": {
      "clip_name": {
        "name": "clip_name"
      },
      "device": {
        "name": "appareil"
      },
      "type": {
        "name": "type"
      }
    }
  },
  "CLIPMergeAdd": {
    "display_name": "CLIPMergeAdd",
    "inputs": {
      "clip1": {
        "name": "clip1"
      },
      "clip2": {
        "name": "clip2"
      }
    }
  },
  "CLIPMergeSimple": {
    "display_name": "CLIPMergeSimple",
    "inputs": {
      "clip1": {
        "name": "clip1"
      },
      "clip2": {
        "name": "clip2"
      },
      "ratio": {
        "name": "ratio"
      }
    }
  },
  "CLIPMergeSubtract": {
    "display_name": "CLIPMergeSubtract",
    "inputs": {
      "clip1": {
        "name": "clip1"
      },
      "clip2": {
        "name": "clip2"
      },
      "multiplier": {
        "name": "multiplier"
      }
    }
  },
  "CLIPSave": {
    "display_name": "CLIPSave",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "filename_prefix": {
        "name": "filename_prefix"
      }
    }
  },
  "CLIPSetLastLayer": {
    "display_name": "CLIP Définir Dernière Couche",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "stop_at_clip_layer": {
        "name": "stop_at_clip_layer"
      }
    }
  },
  "CLIPTextEncode": {
    "description": "Encode une invite de texte à l'aide d'un modèle CLIP en une intégration qui peut être utilisée pour guider le modèle de diffusion vers la génération d'images spécifiques.",
    "display_name": "CLIP Text Encode (Prompt)",
    "inputs": {
      "clip": {
        "name": "clip",
        "tooltip": "Le modèle CLIP utilisé pour encoder le texte."
      },
      "text": {
        "name": "text",
        "tooltip": "Le texte à encoder."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Une condition contenant le texte intégré utilisé pour guider le modèle de diffusion."
      }
    }
  },
  "CLIPTextEncodeControlnet": {
    "display_name": "CLIPTextEncodeControlnet",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "conditioning": {
        "name": "conditioning"
      },
      "text": {
        "name": "text"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeFlux": {
    "display_name": "CLIPTextEncodeFlux",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "clip_l": {
        "name": "clip_l"
      },
      "guidance": {
        "name": "guidance"
      },
      "t5xxl": {
        "name": "t5xxl"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeHiDream": {
    "display_name": "CLIPTextEncodeHiDream",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "clip_g": {
        "name": "clip_g"
      },
      "clip_l": {
        "name": "clip_l"
      },
      "llama": {
        "name": "llama"
      },
      "t5xxl": {
        "name": "t5xxl"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeHunyuanDiT": {
    "display_name": "CLIPTextEncodeHunyuanDiT",
    "inputs": {
      "bert": {
        "name": "bert"
      },
      "clip": {
        "name": "clip"
      },
      "mt5xl": {
        "name": "mt5xl"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeKandinsky5": {
    "display_name": "CLIPTextEncodeKandinsky5",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "clip_l": {
        "name": "clip_l"
      },
      "qwen25_7b": {
        "name": "qwen25_7b"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeLumina2": {
    "description": "Encode une invite système et une invite utilisateur à l'aide d'un modèle CLIP en une intégration qui peut être utilisée pour guider le modèle de diffusion vers la génération d'images spécifiques.",
    "display_name": "CLIP Text Encode pour Lumina2",
    "inputs": {
      "clip": {
        "name": "clip",
        "tooltip": "Le modèle CLIP utilisé pour encoder le texte."
      },
      "system_prompt": {
        "name": "system_prompt",
        "tooltip": "Lumina2 propose deux types d'invites système : Supérieur : Vous êtes un assistant conçu pour générer des images supérieures avec le degré supérieur d'alignement image-texte basé sur des invites textuelles ou des invites utilisateur. Alignement : Vous êtes un assistant conçu pour générer des images de haute qualité avec le plus haut degré d'alignement image-texte basé sur des invites textuelles."
      },
      "user_prompt": {
        "name": "user_prompt",
        "tooltip": "Le texte à encoder."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Une condition contenant le texte intégré utilisé pour guider le modèle de diffusion."
      }
    }
  },
  "CLIPTextEncodePixArtAlpha": {
    "description": "Encode le texte et définit la condition de résolution pour PixArt Alpha. Ne s'applique pas à PixArt Sigma.",
    "display_name": "CLIPTextEncodePixArtAlpha",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "height": {
        "name": "height"
      },
      "text": {
        "name": "text"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeSD3": {
    "display_name": "CLIPTextEncodeSD3",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "clip_g": {
        "name": "clip_g"
      },
      "clip_l": {
        "name": "clip_l"
      },
      "empty_padding": {
        "name": "remplissage_vide"
      },
      "t5xxl": {
        "name": "t5xxl"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeSDXL": {
    "display_name": "CLIPTextEncodeSDXL",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "crop_h": {
        "name": "crop_h"
      },
      "crop_w": {
        "name": "crop_w"
      },
      "height": {
        "name": "hauteur"
      },
      "target_height": {
        "name": "hauteur_cible"
      },
      "target_width": {
        "name": "largeur_cible"
      },
      "text_g": {
        "name": "text_g"
      },
      "text_l": {
        "name": "text_l"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPTextEncodeSDXLRefiner": {
    "display_name": "CLIPTextEncodeSDXLRefiner",
    "inputs": {
      "ascore": {
        "name": "ascore"
      },
      "clip": {
        "name": "clip"
      },
      "height": {
        "name": "hauteur"
      },
      "text": {
        "name": "texte"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CLIPVisionEncode": {
    "display_name": "CLIP Vision Encode",
    "inputs": {
      "clip_vision": {
        "name": "clip_vision"
      },
      "crop": {
        "name": "crop"
      },
      "image": {
        "name": "image"
      }
    }
  },
  "CLIPVisionLoader": {
    "display_name": "Charger CLIP Vision",
    "inputs": {
      "clip_name": {
        "name": "nom_clip"
      }
    }
  },
  "Canny": {
    "display_name": "Canny",
    "inputs": {
      "high_threshold": {
        "name": "seuil_haut"
      },
      "image": {
        "name": "image"
      },
      "low_threshold": {
        "name": "seuil_bas"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CaseConverter": {
    "display_name": "Convertisseur de casse",
    "inputs": {
      "mode": {
        "name": "mode"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CenterCropImages": {
    "description": "Rogner une image au centre selon les dimensions spécifiées.",
    "display_name": "Rogner les images au centre",
    "inputs": {
      "height": {
        "name": "hauteur",
        "tooltip": "Hauteur du rognage."
      },
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      },
      "width": {
        "name": "largeur",
        "tooltip": "Largeur du rognage."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "CheckpointLoader": {
    "display_name": "Charger Point de Contrôle Avec Config (OBSOLÈTE)",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt"
      },
      "config_name": {
        "name": "nom_config"
      }
    }
  },
  "CheckpointLoaderSimple": {
    "description": "Charge un point de contrôle de modèle de diffusion, les modèles de diffusion sont utilisés pour débruiter les latents.",
    "display_name": "Charger Point de Contrôle",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt",
        "tooltip": "Le nom du point de contrôle (modèle) à charger."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle utilisé pour débruiter les latents."
      },
      "1": {
        "tooltip": "Le modèle CLIP utilisé pour encoder les invites de texte."
      },
      "2": {
        "tooltip": "Le modèle VAE utilisé pour encoder et décoder les images en espace latent et vice versa."
      }
    }
  },
  "CheckpointSave": {
    "display_name": "Sauvegarder Point de Contrôle",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier"
      },
      "model": {
        "name": "modèle"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "ChromaRadianceOptions": {
    "description": "Permet de définir des options avancées pour le modèle Chroma Radiance.",
    "display_name": "OptionsChromaRadiance",
    "inputs": {
      "end_sigma": {
        "name": "sigma_fin",
        "tooltip": "Dernier sigma pour lequel ces options seront actives."
      },
      "force_sequential_txt_ids": {
        "name": "force_sequential_txt_ids",
        "tooltip": "Forcer l’utilisation d’identifiants de jetons de texte séquentiels au lieu de zéros. À utiliser pour les checkpoints du 22/05/2026 au 01/06/2026 qui ont été entraînés de cette manière mais ne contiennent pas la clé __sequential__ dans le dictionnaire d’état."
      },
      "model": {
        "name": "modèle"
      },
      "nerf_tile_size": {
        "name": "taille_tuile_nerf",
        "tooltip": "Permet de remplacer la taille de tuile NeRF par défaut. -1 signifie utiliser la valeur par défaut (32). 0 signifie utiliser le mode sans tuilage (peut nécessiter beaucoup de VRAM)."
      },
      "preserve_wrapper": {
        "name": "préserver_wrapper",
        "tooltip": "Lorsqu'activé, délègue à un wrapper de fonction de modèle existant s'il existe. Doit généralement rester activé."
      },
      "start_sigma": {
        "name": "sigma_début",
        "tooltip": "Premier sigma pour lequel ces options seront actives."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ClaudeNode": {
    "description": "Générez des réponses textuelles avec les modèles Claude d'Anthropic. Fournissez une invite textuelle et éventuellement une ou plusieurs images pour un contexte multimodal.",
    "display_name": "Anthropic Claude",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) optionnelle(s) à utiliser comme contexte pour le modèle. Jusqu'à 20 images."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle Claude utilisé pour générer la réponse."
      },
      "model_max_tokens": {
        "name": "max_tokens"
      },
      "model_reasoning_effort": {
        "name": "reasoning_effort"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Entrée textuelle pour le modèle."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "system_prompt": {
        "name": "invite système",
        "tooltip": "Instructions fondamentales qui dictent le comportement du modèle."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ColorToRGBInt": {
    "description": "Convertir une couleur en une valeur entière RGB.",
    "display_name": "Couleur vers RGB Int",
    "inputs": {
      "color": {
        "name": "couleur"
      }
    },
    "outputs": {
      "0": {
        "name": "rgb_int",
        "tooltip": null
      },
      "1": {
        "name": "hex",
        "tooltip": null
      },
      "2": {
        "name": "alpha",
        "tooltip": null
      }
    }
  },
  "ColorTransfer": {
    "description": "Faire correspondre les couleurs d'une image à une autre en utilisant divers algorithmes.",
    "display_name": "ColorTransfer",
    "inputs": {
      "image_ref": {
        "name": "image_ref",
        "tooltip": "Image(s) de référence à laquelle faire correspondre les couleurs. Si non fourni, le traitement est ignoré."
      },
      "image_target": {
        "name": "image_target",
        "tooltip": "Image(s) auxquelles appliquer la transformation de couleur."
      },
      "method": {
        "name": "method"
      },
      "source_stats": {
        "name": "source_stats",
        "tooltip": "per_frame : chaque image est ajustée individuellement à image_ref. uniform : les statistiques de toutes les images sources sont regroupées comme référence, puis ajustées à image_ref. target_frame : une image choisie sert de référence pour la transformation vers image_ref, appliquée uniformément à toutes les images (préserve les différences relatives)."
      },
      "strength": {
        "name": "strength"
      }
    },
    "outputs": {
      "0": {
        "name": "image",
        "tooltip": null
      }
    }
  },
  "CombineHooks2": {
    "display_name": "Combiner Hooks [2]",
    "inputs": {
      "hooks_A": {
        "name": "hooks_A"
      },
      "hooks_B": {
        "name": "hooks_B"
      }
    }
  },
  "CombineHooks4": {
    "display_name": "Combiner Hooks [4]",
    "inputs": {
      "hooks_A": {
        "name": "hooks_A"
      },
      "hooks_B": {
        "name": "hooks_B"
      },
      "hooks_C": {
        "name": "hooks_C"
      },
      "hooks_D": {
        "name": "hooks_D"
      }
    }
  },
  "CombineHooks8": {
    "display_name": "Combiner Hooks [8]",
    "inputs": {
      "hooks_A": {
        "name": "hooks_A"
      },
      "hooks_B": {
        "name": "hooks_B"
      },
      "hooks_C": {
        "name": "hooks_C"
      },
      "hooks_D": {
        "name": "hooks_D"
      },
      "hooks_E": {
        "name": "hooks_E"
      },
      "hooks_F": {
        "name": "hooks_F"
      },
      "hooks_G": {
        "name": "hooks_G"
      },
      "hooks_H": {
        "name": "hooks_H"
      }
    }
  },
  "ComfyAndNode": {
    "description": "Opération logique ET. Renvoie vrai si toutes les valeurs sont vraies. Utilise les règles de vérité de Python.",
    "display_name": "Et",
    "inputs": {
      "values": {
        "name": "valeurs"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ComfyMathExpression": {
    "display_name": "Expression mathématique",
    "inputs": {
      "expression": {
        "name": "expression"
      },
      "values": {
        "name": "valeurs"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      },
      "2": {
        "name": "BOOL",
        "tooltip": null
      }
    }
  },
  "ComfyNotNode": {
    "description": "Opération logique NON. Renvoie vrai si la valeur est fausse. Utilise les règles de vérité de Python.",
    "display_name": "Non",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ComfyNumberConvert": {
    "display_name": "Conversion de nombre",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "ComfyOrNode": {
    "description": "Opération logique OU. Renvoie vrai si l'une des valeurs est vraie. Utilise les règles de vérité de Python.",
    "display_name": "Ou",
    "inputs": {
      "values": {
        "name": "valeurs"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ComfySwitchNode": {
    "display_name": "Commutateur",
    "inputs": {
      "on_false": {
        "name": "faux"
      },
      "on_true": {
        "name": "vrai"
      },
      "switch": {
        "name": "interrupteur"
      }
    },
    "outputs": {
      "0": {
        "name": "sortie",
        "tooltip": null
      }
    }
  },
  "ConditioningAverage": {
    "display_name": "Moyenne de Conditionnement",
    "inputs": {
      "conditioning_from": {
        "name": "conditionnement_de"
      },
      "conditioning_to": {
        "name": "conditionnement_à"
      },
      "conditioning_to_strength": {
        "name": "force_conditionnement_à"
      }
    }
  },
  "ConditioningCombine": {
    "display_name": "Conditionnement (Combiner)",
    "inputs": {
      "conditioning_1": {
        "name": "conditionnement_1"
      },
      "conditioning_2": {
        "name": "conditionnement_2"
      }
    }
  },
  "ConditioningConcat": {
    "display_name": "Conditionnement (Concat)",
    "inputs": {
      "conditioning_from": {
        "name": "conditionnement_de"
      },
      "conditioning_to": {
        "name": "conditionnement_vers"
      }
    }
  },
  "ConditioningMultiply": {
    "display_name": "Conditionnement (Multiplication)",
    "inputs": {
      "conditioning": {
        "name": "conditioning"
      },
      "multiplier": {
        "name": "multiplier"
      }
    }
  },
  "ConditioningSetArea": {
    "display_name": "Conditionnement (Définir Zone)",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "height": {
        "name": "hauteur"
      },
      "strength": {
        "name": "force"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    }
  },
  "ConditioningSetAreaPercentage": {
    "display_name": "Conditionnement (Définir Zone avec Pourcentage)",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "height": {
        "name": "hauteur"
      },
      "strength": {
        "name": "force"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    }
  },
  "ConditioningSetAreaPercentageVideo": {
    "display_name": "Pourcentage de la zone de conditionnement vidéo",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "height": {
        "name": "hauteur"
      },
      "strength": {
        "name": "force"
      },
      "temporal": {
        "name": "temporel"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      },
      "z": {
        "name": "z"
      }
    }
  },
  "ConditioningSetAreaStrength": {
    "display_name": "ConditionnementDéfinirForceZone",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "strength": {
        "name": "force"
      }
    }
  },
  "ConditioningSetDefaultCombine": {
    "display_name": "Cond Définir Combinaison par Défaut",
    "inputs": {
      "cond": {
        "name": "cond"
      },
      "cond_DEFAULT": {
        "name": "cond_DEFAULT"
      },
      "hooks": {
        "name": "hooks"
      }
    }
  },
  "ConditioningSetMask": {
    "display_name": "Conditionnement (Définir Masque)",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "mask": {
        "name": "masque"
      },
      "set_cond_area": {
        "name": "définir_zone_cond"
      },
      "strength": {
        "name": "force"
      }
    }
  },
  "ConditioningSetProperties": {
    "display_name": "Cond Définir Propriétés",
    "inputs": {
      "cond_NEW": {
        "name": "cond_NOUVEAU"
      },
      "hooks": {
        "name": "hooks"
      },
      "mask": {
        "name": "masque"
      },
      "set_cond_area": {
        "name": "définir_zone_cond"
      },
      "strength": {
        "name": "force"
      },
      "timesteps": {
        "name": "pas_de_temps"
      }
    }
  },
  "ConditioningSetPropertiesAndCombine": {
    "display_name": "Cond Définir Propriétés Combinaison",
    "inputs": {
      "cond": {
        "name": "cond"
      },
      "cond_NEW": {
        "name": "cond_NOUVEAU"
      },
      "hooks": {
        "name": "hooks"
      },
      "mask": {
        "name": "masque"
      },
      "set_cond_area": {
        "name": "définir_zone_cond"
      },
      "strength": {
        "name": "force"
      },
      "timesteps": {
        "name": "pas_de_temps"
      }
    }
  },
  "ConditioningSetTimestepRange": {
    "display_name": "ConditionnementDéfinirPlagePasDeTemps",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "end": {
        "name": "fin"
      },
      "start": {
        "name": "début"
      }
    }
  },
  "ConditioningStableAudio": {
    "display_name": "ConditionnementStableAudio",
    "inputs": {
      "negative": {
        "name": "négative"
      },
      "positive": {
        "name": "positive"
      },
      "seconds_start": {
        "name": "secondes_début"
      },
      "seconds_total": {
        "name": "secondes_total"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      }
    }
  },
  "ConditioningTimestepsRange": {
    "display_name": "Plage de pas de temps",
    "inputs": {
      "end_percent": {
        "name": "end_percent"
      },
      "start_percent": {
        "name": "start_percent"
      }
    },
    "outputs": {
      "1": {
        "name": "AVANT_PLAGE"
      },
      "2": {
        "name": "APRÈS_PLAGE"
      }
    }
  },
  "ConditioningZeroOut": {
    "display_name": "ConditioningZeroOut",
    "inputs": {
      "conditioning": {
        "name": "conditioning"
      }
    }
  },
  "ContextWindowsManual": {
    "description": "Définir manuellement les fenêtres de contexte.",
    "display_name": "Fenêtres de contexte (Manuel)",
    "inputs": {
      "causal_window_fix": {
        "name": "causal_window_fix",
        "tooltip": "Ajouter ou non une image de correction causale aux fenêtres de contexte non indexées à 0."
      },
      "closed_loop": {
        "name": "boucle_fermée",
        "tooltip": "Indique s'il faut fermer la boucle de la fenêtre de contexte ; applicable uniquement aux planifications en boucle."
      },
      "cond_retain_index_list": {
        "name": "cond_retain_index_list",
        "tooltip": "Liste des indices latents à conserver dans les tenseurs de conditionnement pour chaque fenêtre ; par exemple, définir cette valeur à '0' utilisera l'image de départ initiale pour chaque fenêtre."
      },
      "context_length": {
        "name": "longueur_contexte",
        "tooltip": "La longueur de la fenêtre de contexte."
      },
      "context_overlap": {
        "name": "chevauchement_contexte",
        "tooltip": "Le chevauchement de la fenêtre de contexte."
      },
      "context_schedule": {
        "name": "planification_contexte",
        "tooltip": "La progression de la fenêtre de contexte."
      },
      "context_stride": {
        "name": "pas_contexte",
        "tooltip": "Le pas de la fenêtre de contexte ; applicable uniquement aux planifications uniformes."
      },
      "dim": {
        "name": "dimension",
        "tooltip": "La dimension à laquelle appliquer les fenêtres de contexte."
      },
      "freenoise": {
        "name": "bruit_libre",
        "tooltip": "Indique s'il faut appliquer le mélange de bruit FreeNoise, améliore la fusion des fenêtres."
      },
      "fuse_method": {
        "name": "méthode_fusion",
        "tooltip": "La méthode à utiliser pour fusionner les fenêtres de contexte."
      },
      "latent_retain_index_list": {
        "name": "latent_retain_index_list",
        "tooltip": "Liste des indices latents à conserver dans le latent de bruit lui-même pour chaque fenêtre. À utiliser pour les workflows où le contenu de référence (par exemple, une image de départ) se trouve directement dans le latent de bruit plutôt que dans des canaux de conditionnement séparés (par exemple, I2V de type inplace comme LTXV, AnimateDiff). Indépendant de cond_retain_index_list."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle auquel appliquer les fenêtres de contexte pendant l'échantillonnage."
      },
      "split_conds_to_windows": {
        "name": "split_conds_to_windows",
        "tooltip": "Indique s'il faut répartir plusieurs conditionnements (créés par ConditionCombine) dans chaque fenêtre selon l'index de région."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle avec des fenêtres contextuelles appliquées pendant l'échantillonnage."
      }
    }
  },
  "ControlNetApply": {
    "display_name": "Appliquer ControlNet (ANCIEN)",
    "inputs": {
      "conditioning": {
        "name": "conditioning"
      },
      "control_net": {
        "name": "control_net"
      },
      "image": {
        "name": "image"
      },
      "strength": {
        "name": "strength"
      }
    }
  },
  "ControlNetApplyAdvanced": {
    "display_name": "Appliquer ControlNet",
    "inputs": {
      "control_net": {
        "name": "control_net"
      },
      "end_percent": {
        "name": "end_percent"
      },
      "image": {
        "name": "image"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "start_percent": {
        "name": "start_percent"
      },
      "strength": {
        "name": "strength"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "negative"
      }
    }
  },
  "ControlNetApplySD3": {
    "display_name": "Appliquer Controlnet avec VAE",
    "inputs": {
      "control_net": {
        "name": "control_net"
      },
      "end_percent": {
        "name": "end_percent"
      },
      "image": {
        "name": "image"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "start_percent": {
        "name": "start_percent"
      },
      "strength": {
        "name": "strength"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "ControlNetInpaintingAliMamaApply": {
    "display_name": "ControlNetInpaintingAliMamaApply",
    "inputs": {
      "control_net": {
        "name": "control_net"
      },
      "end_percent": {
        "name": "end_percent"
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "mask"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "start_percent": {
        "name": "start_percent"
      },
      "strength": {
        "name": "strength"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "ControlNetLoader": {
    "display_name": "Charger le modèle ControlNet",
    "inputs": {
      "control_net_name": {
        "name": "control_net_name"
      }
    }
  },
  "ConvertArrayToString": {
    "display_name": "Convertir un tableau en chaîne",
    "inputs": {
      "array": {
        "name": "tableau"
      },
      "indent": {
        "name": "indentation",
        "tooltip": "Espaces par niveau d’indentation. 0 produit une chaîne compacte sur une seule ligne."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ConvertDictionaryToString": {
    "display_name": "Convertir un dictionnaire en chaîne",
    "inputs": {
      "dictionary": {
        "name": "dictionnaire"
      },
      "indent": {
        "name": "indentation",
        "tooltip": "Espaces par niveau d’indentation. 0 produit une chaîne compacte sur une seule ligne."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CosmosImageToVideoLatent": {
    "display_name": "CosmosImageVersVidéoLatent",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "end_image": {
        "name": "image_de_fin"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CosmosPredict2ImageToVideoLatent": {
    "display_name": "CosmosPredict2ImageToVideoLatent",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "end_image": {
        "name": "image_de_fin"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CreateBoundingBoxes": {
    "description": "Dessinez des boîtes englobantes sur une toile. Génère des éléments d’invite Ideogram, des boîtes englobantes en espace pixel et une image d’aperçu.",
    "display_name": "Créer des boîtes englobantes",
    "inputs": {
      "background": {
        "name": "arrière-plan",
        "tooltip": "Image optionnelle utilisée comme arrière-plan sur la toile et dans l’aperçu."
      },
      "bboxes": {
        "name": "bboxes",
        "tooltip": "Boîtes englobantes, éléments ou une chaîne JSON pour initialiser le canvas. Une nouvelle valeur en amont initialise le canvas ; les modifications effectuées sur le canvas sont prioritaires et conservées jusqu'à ce que la valeur en amont change à nouveau."
      },
      "editor_state": {
        "name": "état_éditeur",
        "tooltip": "Dessinez des boîtes englobantes et définissez pour chaque boîte le type, le texte, la description, la palette de couleurs. Commencez par l’élément d’arrière-plan et terminez par le premier plan."
      },
      "height": {
        "name": "hauteur",
        "tooltip": "Hauteur de la toile et de la grille de pixels pour les boîtes englobantes."
      },
      "last_incoming": {
        "name": "last_incoming",
        "tooltip": "État interne géré par le canvas : la dernière valeur bboxes en amont qui l'a initialisé. Laissez vide pour réinitialiser le canvas à partir de l'entrée bboxes lors de la prochaine exécution."
      },
      "width": {
        "name": "largeur",
        "tooltip": "Largeur de la toile et de la grille de pixels pour les boîtes englobantes."
      }
    },
    "outputs": {
      "0": {
        "name": "aperçu",
        "tooltip": null
      },
      "1": {
        "name": "boîtes_englobantes",
        "tooltip": null
      },
      "2": {
        "name": "éléments",
        "tooltip": null
      }
    }
  },
  "CreateCameraInfo": {
    "description": "Construit une camera_info. Le mode 'orbit' vise avec les angles de lacet/tangage/distance autour de la cible ; 'look_at' place la caméra à une position dans l'espace mondial. Les coordonnées sont dans l'espace mondial du spectateur (main droite, Y vers le haut).",
    "display_name": "Créer des informations de caméra",
    "inputs": {
      "camera_type": {
        "name": "camera_type",
        "tooltip": "Projection utilisée par Render Splat : perspective (raccourcissement) ou orthographique (parallèle)."
      },
      "fov": {
        "name": "fov",
        "tooltip": "Champ de vision vertical en degrés."
      },
      "mode": {
        "name": "mode",
        "tooltip": "Comment définir la caméra : angles d'orbite, position explicite, ou position + quaternion."
      },
      "mode_distance": {
        "name": "distance"
      },
      "mode_pitch": {
        "name": "pitch"
      },
      "mode_yaw": {
        "name": "yaw"
      },
      "roll": {
        "name": "roll",
        "tooltip": "Rotation de la caméra autour de l'axe de vue, en degrés."
      },
      "target_x": {
        "name": "target_x",
        "tooltip": "Point de visée (pivot d'orbite / cible). En mode orbite, le déplacer permet de translater toute la caméra. Ignoré en mode quaternion. Par défaut à l'origine."
      },
      "target_y": {
        "name": "target_y"
      },
      "target_z": {
        "name": "target_z"
      },
      "zoom": {
        "name": "zoom",
        "tooltip": "Zoom numérique (multiplicateur de longueur focale). >1 zoome sans déplacer la caméra."
      }
    },
    "outputs": {
      "0": {
        "name": "camera_info",
        "tooltip": null
      }
    }
  },
  "CreateHookKeyframe": {
    "display_name": "Créer une image clé de crochet",
    "inputs": {
      "prev_hook_kf": {
        "name": "prev_hook_kf"
      },
      "start_percent": {
        "name": "start_percent"
      },
      "strength_mult": {
        "name": "strength_mult"
      }
    },
    "outputs": {
      "0": {
        "name": "HOOK_KF"
      }
    }
  },
  "CreateHookKeyframesFromFloats": {
    "display_name": "Créer des images clés de crochet à partir de flottants",
    "inputs": {
      "end_percent": {
        "name": "pourcentage_fin"
      },
      "floats_strength": {
        "name": "force_flottants"
      },
      "prev_hook_kf": {
        "name": "precedent_crochet_kf"
      },
      "print_keyframes": {
        "name": "imprimer_images_cles"
      },
      "start_percent": {
        "name": "pourcentage_debut"
      }
    },
    "outputs": {
      "0": {
        "name": "CROCHET_KF"
      }
    }
  },
  "CreateHookKeyframesInterpolated": {
    "display_name": "Créer des images clés de crochet interpolées.",
    "inputs": {
      "end_percent": {
        "name": "pourcentage_fin"
      },
      "interpolation": {
        "name": "interpolation"
      },
      "keyframes_count": {
        "name": "compte_images_cles"
      },
      "prev_hook_kf": {
        "name": "precedent_crochet_kf"
      },
      "print_keyframes": {
        "name": "imprimer_images_cles"
      },
      "start_percent": {
        "name": "pourcentage_debut"
      },
      "strength_end": {
        "name": "force_fin"
      },
      "strength_start": {
        "name": "force_debut"
      }
    },
    "outputs": {
      "0": {
        "name": "CROCHET_KF"
      }
    }
  },
  "CreateHookLora": {
    "display_name": "Créer un crochet LoRA",
    "inputs": {
      "lora_name": {
        "name": "nom_lora"
      },
      "prev_hooks": {
        "name": "crochets_precedents"
      },
      "strength_clip": {
        "name": "force_clip"
      },
      "strength_model": {
        "name": "force_modele"
      }
    }
  },
  "CreateHookLoraModelOnly": {
    "display_name": "Créer un crochet LoRA (MO)",
    "inputs": {
      "lora_name": {
        "name": "nom_lora"
      },
      "prev_hooks": {
        "name": "crochets_precedents"
      },
      "strength_model": {
        "name": "force_modele"
      }
    }
  },
  "CreateHookModelAsLora": {
    "display_name": "Créer un modèle de crochet comme LoRA",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt"
      },
      "prev_hooks": {
        "name": "crochets_precedents"
      },
      "strength_clip": {
        "name": "force_clip"
      },
      "strength_model": {
        "name": "force_modele"
      }
    }
  },
  "CreateHookModelAsLoraModelOnly": {
    "display_name": "Créer un modèle de crochet comme LoRA (MO)",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt"
      },
      "prev_hooks": {
        "name": "crochets_precedents"
      },
      "strength_model": {
        "name": "force_modele"
      }
    }
  },
  "CreateList": {
    "display_name": "Créer une liste",
    "inputs": {
      "inputs": {
        "name": "entrées"
      }
    },
    "outputs": {
      "0": {
        "name": "liste",
        "tooltip": null
      }
    }
  },
  "CreateVideo": {
    "description": "Créer une vidéo à partir d’images.",
    "display_name": "Créer une vidéo",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "L’audio à ajouter à la vidéo."
      },
      "bit_depth": {
        "name": "bit_depth",
        "tooltip": "Profondeur de bits de la vidéo créée. Le 10 bits conserve des dégradés plus doux avec moins de bandes, mais certains lecteurs et nœuds en aval peuvent ne pas le prendre en charge."
      },
      "fps": {
        "name": "fps"
      },
      "images": {
        "name": "images",
        "tooltip": "Les images à utiliser pour créer une vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CropByBBoxes": {
    "description": "Rogner et redimensionner des régions du lot d’images d’entrée selon les boîtes englobantes fournies.",
    "display_name": "CropByBBoxes",
    "inputs": {
      "bboxes": {
        "name": "bboxes"
      },
      "image": {
        "name": "image"
      },
      "keep_aspect": {
        "name": "keep_aspect",
        "tooltip": "Déterminer s'il faut étirer le recadrage pour correspondre à la taille de sortie, ou ajouter des pixels noirs pour préserver le ratio d'aspect."
      },
      "output_height": {
        "name": "output_height",
        "tooltip": "Hauteur à laquelle chaque découpe est redimensionnée."
      },
      "output_width": {
        "name": "output_width",
        "tooltip": "Largeur à laquelle chaque découpe est redimensionnée."
      },
      "padding": {
        "name": "padding",
        "tooltip": "Marge supplémentaire en pixels ajoutée de chaque côté de la boîte avant le rognage."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Toutes les découpes empilées dans un seul lot d’images."
      }
    }
  },
  "CropMask": {
    "display_name": "CropMask",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "mask": {
        "name": "masque"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "CurveEditor": {
    "display_name": "Éditeur de courbe",
    "inputs": {
      "curve": {
        "name": "courbe"
      },
      "histogram": {
        "name": "histogramme"
      }
    },
    "outputs": {
      "0": {
        "name": "courbe",
        "tooltip": null
      }
    }
  },
  "CustomCombo": {
    "display_name": "Combo personnalisé",
    "inputs": {
      "choice": {
        "name": "choix"
      },
      "index": {},
      "option1": {}
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "INDEX",
        "tooltip": null
      }
    }
  },
  "DA3GeometryToMesh": {
    "description": "Convertir une carte de profondeur en un maillage 3D triangulé.",
    "display_name": "Convertir la géométrie DA3 en maillage",
    "inputs": {
      "batch_index": {
        "name": "batch_index",
        "tooltip": "Quelle image d’un lot convertir. Le nombre de sommets diffère selon l’image, donc les lots ne peuvent pas être empilés."
      },
      "confidence_threshold": {
        "name": "confidence_threshold",
        "tooltip": "Exclure les pixels dont la confiance normalisée par image est inférieure à cette valeur (0 = garder tous, 1 = ne garder que le pixel le plus fiable). Utilisé lorsque la géométrie possède une carte de confiance (modèles Small/Base)."
      },
      "da3_geometry": {
        "name": "da3_geometry"
      },
      "decimation": {
        "name": "decimation",
        "tooltip": "Pas de sommets. 1 = pleine résolution, 2 = moitié, etc."
      },
      "discontinuity_threshold": {
        "name": "discontinuity_threshold",
        "tooltip": "Supprimer les triangles dont l’étendue de profondeur 3x3 dépasse cette fraction. 0 = désactivé."
      },
      "texture": {
        "name": "texture",
        "tooltip": "Utiliser l’image source comme texture de couleur de base."
      },
      "use_sky_mask": {
        "name": "use_sky_mask",
        "tooltip": "Exclure les pixels avec une probabilité de ciel (sky >= 0,5) du maillage. Utilisé lorsque la géométrie possède une carte du ciel (modèles Mono/Metric)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "DA3Inference": {
    "description": "Exécuter Depth Anything 3 sur une image. En mode multi-vues, chaque image est traitée comme une vue séparée de la même scène.",
    "display_name": "Exécuter Depth Anything 3",
    "inputs": {
      "da3_model": {
        "name": "da3_model"
      },
      "image": {
        "name": "image"
      },
      "mode": {
        "name": "mode",
        "tooltip": "mono : image à vue unique (fonctionne avec toute variante du modèle).\nmultiview : toutes les images sont traitées ensemble pour la cohérence géométrique + pose de la caméra (pour les modèles Small/Base uniquement)."
      },
      "resize_method": {
        "name": "resize_method",
        "tooltip": "upper_bound_resize : mise à l’échelle pour que le côté le plus long = résolution (limite la mémoire, par défaut).\nlower_bound_resize : mise à l’échelle pour que le côté le plus court = résolution (préserve plus de détails sur les images hautes/longues, utilise plus de mémoire)."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Résolution à laquelle le modèle s’exécute (côté le plus long, multiple de 14).\nPlus bas = plus rapide / moins de VRAM.\nPlus haut = plus de détails.\nLa sortie est rééchantillonnée à la taille d’origine."
      }
    },
    "outputs": {
      "0": {
        "name": "da3_geometry",
        "tooltip": "Dictionnaire de tenseurs non normalisés.\nContient toujours les clés : depth, image, mode.\nClés optionnelles : sky (pour Mono/Metric), confidence (pour Small/Base), extrinsics + intrinsics (pour multi-vues)."
      }
    }
  },
  "DA3Render": {
    "description": "Rendre une carte de profondeur, une carte de confiance ou un masque de ciel à partir des données de géométrie Depth Anything 3.",
    "display_name": "Rendu Depth Anything 3",
    "inputs": {
      "da3_geometry": {
        "name": "da3_geometry"
      },
      "output": {
        "name": "output",
        "tooltip": "- depth : image de profondeur normalisée en niveaux de gris.\n- depth_colored : profondeur mappée via la colormap Turbo.\n- sky_mask : probabilité de ciel dans [0, 1] (pour modèles Mono/Metric uniquement).\n- confidence : confiance de profondeur normalisée (pour modèles Small/Base uniquement)."
      },
      "output_apply_sky_clip": {
        "name": "apply_sky_clip"
      },
      "output_normalization": {
        "name": "normalization"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "DiffControlNetLoader": {
    "display_name": "Charger le modèle ControlNet (diff)",
    "inputs": {
      "control_net_name": {
        "name": "nom_control_net"
      },
      "model": {
        "name": "modèle"
      }
    }
  },
  "DifferentialDiffusion": {
    "display_name": "Diffusion différentielle",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "strength": {
        "name": "intensité"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "DiffusersLoader": {
    "display_name": "Chargeur de diffuseurs",
    "inputs": {
      "model_path": {
        "name": "chemin_modèle"
      }
    }
  },
  "DisableNoise": {
    "display_name": "DésactiverBruit",
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "DrawBBoxes": {
    "display_name": "Dessiner les BBoxes",
    "inputs": {
      "bboxes": {
        "name": "bboxes"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "name": "out_image",
        "tooltip": null
      }
    }
  },
  "DualCFGGuider": {
    "display_name": "GuideurDualCFG",
    "inputs": {
      "cfg_cond2_negative": {
        "name": "cfg_cond2_négatif"
      },
      "cfg_conds": {
        "name": "cfg_conds"
      },
      "cond1": {
        "name": "cond1"
      },
      "cond2": {
        "name": "cond2"
      },
      "model": {
        "name": "modèle"
      },
      "negative": {
        "name": "négatif"
      },
      "style": {
        "name": "style"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "DualCLIPLoader": {
    "description": "[Recettes]\n\nsdxl: clip-l, clip-g\nsd3: clip-l, clip-g / clip-l, t5 / clip-g, t5\nflux: clip-l, t5",
    "display_name": "ChargeurDualCLIP",
    "inputs": {
      "clip_name1": {
        "name": "nom_clip1"
      },
      "clip_name2": {
        "name": "nom_clip2"
      },
      "device": {
        "name": "appareil"
      },
      "type": {
        "name": "type"
      }
    }
  },
  "DualModelGuider": {
    "display_name": "Guider CFG Double Modèle",
    "inputs": {
      "cfg": {
        "name": "cfg"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle utilisé pour le passage positif (conditionnel)."
      },
      "model_negative": {
        "name": "modèle_négatif",
        "tooltip": "Modèle utilisé pour le passage négatif (inconditionnel). Utilisez le même modèle pour un CFG ordinaire."
      },
      "negative": {
        "name": "négatif",
        "tooltip": "Conditionnement négatif exécuté sur le modèle négatif. Laissez non connecté pour un passage inconditionnel sans texte (image uniquement)."
      },
      "positive": {
        "name": "positif"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EasyCache": {
    "description": "Implémentation native d'EasyCache.",
    "display_name": "EasyCache",
    "inputs": {
      "end_percent": {
        "name": "pourcentage_de_fin",
        "tooltip": "L'étape d'échantillonnage relative pour terminer l'utilisation d'EasyCache."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle auquel ajouter EasyCache."
      },
      "reuse_threshold": {
        "name": "seuil_de_réutilisation",
        "tooltip": "Le seuil pour réutiliser les étapes mises en cache."
      },
      "start_percent": {
        "name": "pourcentage_de_départ",
        "tooltip": "L'étape d'échantillonnage relative pour commencer l'utilisation d'EasyCache."
      },
      "verbose": {
        "name": "verbeux",
        "tooltip": "Indique s'il faut enregistrer des informations détaillées."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle avec EasyCache."
      }
    }
  },
  "ElevenLabsAudioIsolation": {
    "description": "Supprimez le bruit de fond de l'audio, en isolant les voix ou la parole.",
    "display_name": "ElevenLabs Isolation de Voix",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio à traiter pour la suppression du bruit de fond."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ElevenLabsInstantVoiceClone": {
    "description": "Créez une voix clonée à partir d'échantillons audio. Fournissez 1 à 8 enregistrements audio de la voix à cloner.",
    "display_name": "ElevenLabs Clonage Instantané de Voix",
    "inputs": {
      "files": {
        "name": "fichiers",
        "tooltip": "Enregistrements audio pour le clonage de voix."
      },
      "remove_background_noise": {
        "name": "supprimer_bruit_de_fond",
        "tooltip": "Supprimez le bruit de fond des échantillons de voix à l'aide de l'isolation audio."
      }
    },
    "outputs": {
      "0": {
        "name": "voix",
        "tooltip": null
      }
    }
  },
  "ElevenLabsSpeechToSpeech": {
    "description": "Transformez la parole d'une voix à une autre tout en préservant le contenu et l'émotion d'origine.",
    "display_name": "ElevenLabs Conversion de Voix à Voix",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio source à transformer."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la transformation voix-à-voix."
      },
      "model_similarity_boost": {
        "name": "augmentation_similarité"
      },
      "model_speed": {
        "name": "vitesse"
      },
      "model_style": {
        "name": "style"
      },
      "model_use_speaker_boost": {
        "name": "utiliser_augmentation_parleur"
      },
      "output_format": {
        "name": "format_de_sortie",
        "tooltip": "Format de sortie audio."
      },
      "remove_background_noise": {
        "name": "supprimer_bruit_de_fond",
        "tooltip": "Supprimez le bruit de fond de l'audio d'entrée à l'aide de l'isolation audio."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la reproductibilité."
      },
      "stability": {
        "name": "stabilité",
        "tooltip": "Stabilité de la voix. Des valeurs plus faibles donnent une gamme émotionnelle plus large, des valeurs plus élevées produisent une parole plus cohérente mais potentiellement monotone."
      },
      "voice": {
        "name": "voix",
        "tooltip": "Voix cible pour la transformation. Connectez depuis le Sélecteur de Voix ou le Clonage Instantané de Voix."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ElevenLabsSpeechToText": {
    "description": "Transcrivez l’audio en texte. Prend en charge la détection automatique de la langue, la diarisation des locuteurs et l’étiquetage des événements audio.",
    "display_name": "ElevenLabs Speech to Text",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio à transcrire."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "language_code": {
        "name": "language_code",
        "tooltip": "Code de langue ISO-639-1 ou ISO-639-3 (ex. : 'en', 'es', 'fra'). Laisser vide pour une détection automatique."
      },
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la transcription."
      },
      "model_diarization_threshold": {
        "name": "diarization_threshold"
      },
      "model_diarize": {
        "name": "diarize"
      },
      "model_tag_audio_events": {
        "name": "tag_audio_events"
      },
      "model_temperature": {
        "name": "temperature"
      },
      "model_timestamps_granularity": {
        "name": "timestamps_granularity"
      },
      "num_speakers": {
        "name": "num_speakers",
        "tooltip": "Nombre maximal de locuteurs à prédire. Mettre à 0 pour une détection automatique."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour la reproductibilité (déterminisme non garanti)."
      }
    },
    "outputs": {
      "0": {
        "name": "text",
        "tooltip": null
      },
      "1": {
        "name": "language_code",
        "tooltip": null
      },
      "2": {
        "name": "words_json",
        "tooltip": null
      }
    }
  },
  "ElevenLabsTextToDialogue": {
    "description": "Générez un dialogue multi-locuteurs à partir d’un texte. Chaque entrée de dialogue possède son propre texte et sa propre voix.",
    "display_name": "ElevenLabs Text to Dialogue",
    "inputs": {
      "apply_text_normalization": {
        "name": "apply_text_normalization",
        "tooltip": "Mode de normalisation du texte. 'auto' laisse le système décider, 'on' applique toujours la normalisation, 'off' la désactive."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "inputs": {
        "name": "inputs",
        "tooltip": "Nombre d’entrées de dialogue."
      },
      "inputs_text1": {
        "name": "text1"
      },
      "language_code": {
        "name": "language_code",
        "tooltip": "Code de langue ISO-639-1 ou ISO-639-3 (ex. : 'en', 'es', 'fra'). Laisser vide pour une détection automatique."
      },
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la génération du dialogue."
      },
      "output_format": {
        "name": "output_format",
        "tooltip": "Format de sortie audio."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour la reproductibilité."
      },
      "stability": {
        "name": "stability",
        "tooltip": "Stabilité de la voix. Des valeurs plus faibles donnent une gamme émotionnelle plus large, des valeurs plus élevées produisent une voix plus cohérente mais potentiellement monotone."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ElevenLabsTextToSoundEffects": {
    "description": "Générez des effets sonores à partir de descriptions textuelles.",
    "display_name": "ElevenLabs Text to Sound Effects",
    "inputs": {
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la génération de l’effet sonore."
      },
      "model_duration": {
        "name": "duration"
      },
      "model_loop": {
        "name": "loop"
      },
      "model_prompt_influence": {
        "name": "prompt_influence"
      },
      "output_format": {
        "name": "output_format",
        "tooltip": "Format de sortie audio."
      },
      "text": {
        "name": "text",
        "tooltip": "Description textuelle de l’effet sonore à générer."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ElevenLabsTextToSpeech": {
    "description": "Convertir du texte en parole.",
    "display_name": "ElevenLabs Text to Speech",
    "inputs": {
      "apply_text_normalization": {
        "name": "appliquer la normalisation du texte",
        "tooltip": "Mode de normalisation du texte. 'auto' laisse le système décider, 'on' applique toujours la normalisation, 'off' la désactive."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "language_code": {
        "name": "code langue",
        "tooltip": "Code langue ISO-639-1 ou ISO-639-3 (ex : 'en', 'es', 'fra'). Laisser vide pour une détection automatique."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la synthèse texte-parole."
      },
      "model_similarity_boost": {
        "name": "augmentation de similarité"
      },
      "model_speed": {
        "name": "vitesse"
      },
      "model_style": {
        "name": "style"
      },
      "model_use_speaker_boost": {
        "name": "utiliser le speaker boost"
      },
      "output_format": {
        "name": "format de sortie",
        "tooltip": "Format de sortie audio."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la reproductibilité (déterminisme non garanti)."
      },
      "stability": {
        "name": "stabilité",
        "tooltip": "Stabilité de la voix. Des valeurs plus faibles offrent une gamme émotionnelle plus large, des valeurs plus élevées produisent une voix plus cohérente mais potentiellement monotone."
      },
      "text": {
        "name": "texte",
        "tooltip": "Le texte à convertir en parole."
      },
      "voice": {
        "name": "voix",
        "tooltip": "Voix à utiliser pour la synthèse vocale. Connectez depuis Voice Selector ou Instant Voice Clone."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ElevenLabsVoiceSelector": {
    "description": "Sélectionnez une voix prédéfinie ElevenLabs pour la génération texte-parole.",
    "display_name": "Sélecteur de voix ElevenLabs",
    "inputs": {
      "voice": {
        "name": "voix",
        "tooltip": "Choisissez une voix parmi les voix prédéfinies ElevenLabs."
      }
    },
    "outputs": {
      "0": {
        "name": "voix",
        "tooltip": null
      }
    }
  },
  "EmptyARVideoLatent": {
    "display_name": "EmptyARVideoLatent",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyAceStep1_5LatentAudio": {
    "display_name": "Empty Ace Step 1.5 Latent Audio",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "Le nombre d’images latentes dans le lot."
      },
      "seconds": {
        "name": "secondes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyAceStepLatentAudio": {
    "display_name": "EmptyAceStepLatentAudio",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "Le nombre d'images latentes dans le lot."
      },
      "seconds": {
        "name": "secondes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyAudio": {
    "display_name": "Audio vide",
    "inputs": {
      "channels": {
        "name": "canaux",
        "tooltip": "Nombre de canaux audio (1 pour mono, 2 pour stéréo)."
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée du clip audio vide en secondes"
      },
      "sample_rate": {
        "name": "fréquence_d'échantillonnage",
        "tooltip": "Fréquence d'échantillonnage du clip audio vide."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyChromaRadianceLatentImage": {
    "display_name": "EmptyChromaRadianceLatentImage",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyCosmosLatentVideo": {
    "display_name": "VidéoLatenteCosmosVide",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyFlux2LatentImage": {
    "display_name": "Flux vide vers latent",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyHiDreamO1LatentImage": {
    "description": "Latent d’espace pixel vide pour HiDream-O1-Image. Le modèle a été entraîné à environ 4 mégapixels ; des résolutions plus basses sortent de la distribution et la qualité régresse nettement. Résolutions d’entraînement : 2048x2048, 2304x1728, 1728x2304, 2560x1440, 1440x2560, 2496x1664, 1664x2496, 3104x1312, 1312x3104, 2304x1792, 1792x2304.",
    "display_name": "Image latente HiDream-O1 vide",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyHunyuanImageLatent": {
    "display_name": "EmptyHunyuanImageLatent",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyHunyuanLatentVideo": {
    "display_name": "EmptyHunyuanLatentVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyHunyuanVideo15Latent": {
    "display_name": "HunyuanVideo 1.5 latent vide",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyImage": {
    "display_name": "ImageVide",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "color": {
        "name": "couleur"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    }
  },
  "EmptyLTXVLatentVideo": {
    "display_name": "EmptyLTXVLatentVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyLatentAudio": {
    "display_name": "AudioLatentVide",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "Le nombre d'images latentes dans le lot."
      },
      "seconds": {
        "name": "secondes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyLatentHunyuan3Dv2": {
    "display_name": "EmptyLatentHunyuan3Dv2",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "Le nombre d'images latentes dans le lot."
      },
      "resolution": {
        "name": "résolution"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyLatentImage": {
    "description": "Créez un nouveau lot d'images latentes vides à débruiter via l'échantillonnage.",
    "display_name": "Image Latente Vide",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "Le nombre d'images latentes dans le lot."
      },
      "height": {
        "name": "hauteur",
        "tooltip": "La hauteur des images latentes en pixels."
      },
      "width": {
        "name": "largeur",
        "tooltip": "La largeur des images latentes en pixels."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le lot d'images latentes vides."
      }
    }
  },
  "EmptyMiniMaxH3LatentAV": {
    "description": "Latent vidéo+audio conjoint pour MiniMax H3. La durée s'aligne sur la grille de 17k+5 images du modèle à 24 fps.",
    "display_name": "Latent AV MiniMax H3 Vidéo+Audio Vide",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur",
        "tooltip": "Nombre d’images à 24 fps, arrondi à la grille 17k+5 du modèle (124 = ~5s ; plage d’entraînement ~124-362, plus long non testé)"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyMochiLatentVideo": {
    "display_name": "EmptyMochiLatentVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptyQwenImageLayeredLatentImage": {
    "display_name": "Qwen Image Layered latent vide",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "layers": {
        "name": "couches"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "EmptySD3LatentImage": {
    "display_name": "EmptySD3LatentImage",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Epsilon Scaling": {
    "display_name": "Mise à l'échelle Epsilon",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "scaling_factor": {
        "name": "facteur_d'échelle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ExponentialScheduler": {
    "display_name": "PlanificateurExponentiel",
    "inputs": {
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ExtendIntermediateSigmas": {
    "display_name": "ExtendIntermediateSigmas",
    "inputs": {
      "end_at_sigma": {
        "name": "finir_à_sigma"
      },
      "sigmas": {
        "name": "sigmas"
      },
      "spacing": {
        "name": "espacement"
      },
      "start_at_sigma": {
        "name": "commencer_à_sigma"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FeatherMask": {
    "display_name": "MasquePlume",
    "inputs": {
      "bottom": {
        "name": "bas"
      },
      "left": {
        "name": "gauche"
      },
      "mask": {
        "name": "masque"
      },
      "right": {
        "name": "droite"
      },
      "top": {
        "name": "haut"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "File3DToSplat": {
    "description": "Analyse un fichier 3D splat en un splat gaussien. Inverse de Créer un fichier 3D (à partir de Splat). Formats supportés : PLY, SPLAT, KSPLAT, SPZ. PLY contient les harmoniques sphériques complètes, les autres formats ne contiennent que la couleur de base. Le format est détecté automatiquement à partir du contenu du fichier.",
    "display_name": "Obtenir Splat",
    "inputs": {
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Un fichier 3D splat gaussien"
      }
    },
    "outputs": {
      "0": {
        "name": "splat",
        "tooltip": null
      }
    }
  },
  "FlipSigmas": {
    "display_name": "InverserSigmas",
    "inputs": {
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux2ImageNode": {
    "description": "Générez des images via Flux.2 [pro] ou Flux.2 [max] à partir d’un prompt et d’images de référence optionnelles.",
    "display_name": "Flux.2 Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_height": {
        "name": "hauteur"
      },
      "model_width": {
        "name": "largeur"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération ou l’édition d’image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux2MaxImageNode": {
    "description": "Génère des images de manière synchrone à partir d'une invite et d'une résolution.",
    "display_name": "Flux.2 [max] Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "height": {
        "name": "hauteur"
      },
      "images": {
        "name": "images",
        "tooltip": "Jusqu’à 9 images à utiliser comme références."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite pour la génération ou l’édition d’image"
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage de l'invite",
        "tooltip": "Indique s’il faut effectuer un suréchantillonnage sur l’invite. Si activé, modifie automatiquement l’invite pour une génération plus créative."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux2ProImageNode": {
    "description": "Génère des images de manière synchrone à partir d'une invite et d'une résolution.",
    "display_name": "Flux.2 [pro] Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "height": {
        "name": "hauteur"
      },
      "images": {
        "name": "images",
        "tooltip": "Jusqu’à 9 images à utiliser comme références."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite pour la génération ou l’édition d’image"
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage de l'invite",
        "tooltip": "Indique s’il faut effectuer un suréchantillonnage sur l’invite. Si activé, modifie automatiquement l’invite pour une génération plus créative."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux2Scheduler": {
    "display_name": "Flux2Scheduler",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "steps": {
        "name": "étapes"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux3ImageToVideoNode": {
    "description": "Anime de 1 à 10 images avec FLUX 3. Chaque image devient une image du clip : une image l’ouvre, deux font une morphose de la première à la seconde, et plus sont réparties dans le clip ou fixées à des moments choisis.",
    "display_name": "Flux 3 Image vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Format de sortie. « auto » en choisit un à partir du prompt et des entrées."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration": {
        "name": "duration",
        "tooltip": "Durée du clip en secondes. « auto » adapte la durée au contenu."
      },
      "generate_audio": {
        "name": "generate_audio",
        "tooltip": "Générer un audio synchronisé (ambiances, voix, effets). Désactivé produit une vidéo sans piste audio."
      },
      "keyframes": {
        "name": "keyframes",
        "tooltip": "1 à 10 images, dans l’ordre de lecture. Minimum 256x256 pixels chacune."
      },
      "placement": {
        "name": "placement",
        "tooltip": "« Répartir dans le clip » laisse FLUX 3 placer les images (une ouvre le clip, deux deviennent le début et la fin) ; « à des moments » fixe chaque image à une seconde choisie."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Comment la scène doit bouger et sonner ; le prompt est interprété et enrichi avant la génération."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Résolution de sortie."
      },
      "safety_tolerance": {
        "name": "safety_tolerance",
        "tooltip": "Tolérance de modération, 0 étant la plus stricte. Les requêtes envoyant des images ou vidéos sont limitées à 2, quel que soit votre réglage ici."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; FLUX 3 choisit sa propre graine, donc les résultats réels sont non déterministes, quelle que soit cette valeur."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux3TextToVideoNode": {
    "description": "Génère une vidéo avec audio synchronisé à partir d’un prompt texte via FLUX 3.",
    "display_name": "Flux 3 Texte vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Format de sortie. « auto » en choisit un à partir du prompt et des entrées."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration": {
        "name": "duration",
        "tooltip": "Durée du clip en secondes. « auto » adapte la durée au contenu."
      },
      "generate_audio": {
        "name": "generate_audio",
        "tooltip": "Générer un audio synchronisé (ambiances, voix, effets). Désactivé produit une vidéo sans piste audio."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Ce que vous souhaitez, en langage courant ; le prompt est interprété et enrichi avant la génération. Décrivez séparément l’ambiance sonore, la musique et la voix pour un audio superposé."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Résolution de sortie."
      },
      "safety_tolerance": {
        "name": "safety_tolerance",
        "tooltip": "Tolérance de modération, 0 étant la plus stricte. Les requêtes envoyant des images ou vidéos sont limitées à 2, quel que soit votre réglage ici."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; FLUX 3 choisit sa propre graine, donc les résultats réels sont non déterministes, quelle que soit cette valeur."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Flux3VideoContinuationNode": {
    "description": "Prolonge une vidéo avec FLUX 3 : le nouveau clip continue à partir des dernières images de celui que vous fournissez.",
    "display_name": "Flux 3 Continuation Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect",
        "tooltip": "Rapport d'aspect de sortie. 'auto' en choisit un à partir du prompt et des entrées."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée du clip en secondes. 'auto' adapte la durée au contenu."
      },
      "generate_audio": {
        "name": "générer l'audio",
        "tooltip": "Générer un audio synchronisé (ambiances, voix, effets). Désactivé produit une vidéo sans piste audio."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Ce que la continuation doit montrer ; le prompt est interprété et enrichi avant la génération."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Résolution de sortie."
      },
      "safety_tolerance": {
        "name": "tolérance de sécurité",
        "tooltip": "Tolérance de modération, 0 est la plus stricte. Les requêtes envoyant des images ou vidéos sont limitées à 2, quelle que soit la valeur définie ici."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour déterminer si le node doit être relancé ; FLUX 3 choisit son propre seed, donc les résultats réels sont non déterministes, quelle que soit cette valeur."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Le clip à continuer."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxDisableGuidance": {
    "description": "Ce nœud désactive complètement l'intégration de guidage sur les modèles Flux et similaires à Flux",
    "display_name": "FluxDisableGuidance",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxEraseNode": {
    "description": "Supprime l'objet masqué d'une image et reconstruit l'arrière-plan. Peignez le mask sur ce que vous souhaitez effacer.",
    "display_name": "Flux Effacer l'image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "dilate_pixels": {
        "name": "dilate_pixels",
        "tooltip": "Étend les bords du mask pour garantir une couverture propre des contours de l'objet."
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "mask",
        "tooltip": "Les zones blanches sont supprimées ; les zones noires sont conservées."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxGuidance": {
    "display_name": "GuidageFlux",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "guidance": {
        "name": "guidage"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxKVCache": {
    "description": "Active l’optimisation KV Cache pour les images de référence sur les modèles de la famille Flux.",
    "display_name": "Flux KV Cache",
    "inputs": {
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle sur lequel activer le KV Cache."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle modifié avec le KV Cache activé."
      }
    }
  },
  "FluxKontextImageScale": {
    "description": "Ce nœud redimensionne l'image pour une optimisation avec flux kontext.",
    "display_name": "Échelle d'image FluxKontext",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxKontextMaxImageNode": {
    "description": "Modifie les images en utilisant Flux.1 Kontext [max] via l'API en fonction de l'invite et du rapport d'aspect.",
    "display_name": "Image Flux.1 Kontext [max]",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport_d'aspect",
        "tooltip": "Rapport d'aspect de l'image ; doit être compris entre 1:4 et 4:1."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "guidance": {
        "name": "guidage",
        "tooltip": "Intensité du guidage pour le processus de génération d'image"
      },
      "input_image": {
        "name": "image_d'entrée"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d'image - spécifiez quoi et comment modifier."
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage_d'invite",
        "tooltip": "Indique s'il faut effectuer un suréchantillonnage sur l'invite. Si actif, modifie automatiquement l'invite pour une génération plus créative, mais les résultats sont non déterministes (la même graine ne produira pas exactement le même résultat)."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "steps": {
        "name": "étapes",
        "tooltip": "Nombre d'étapes pour le processus de génération d'image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxKontextMultiReferenceLatentMethod": {
    "display_name": "Méthode latente multi-référence FluxKontext",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "reference_latents_method": {
        "name": "méthode_des_latents_de_référence"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxKontextProImageNode": {
    "description": "Modifie les images en utilisant Flux.1 Kontext [pro] via l'API en fonction de l'invite et du rapport d'aspect.",
    "display_name": "Image Flux.1 Kontext [pro]",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport_d'aspect",
        "tooltip": "Rapport d'aspect de l'image ; doit être compris entre 1:4 et 4:1."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "guidance": {
        "name": "guidage",
        "tooltip": "Intensité du guidage pour le processus de génération d'image"
      },
      "input_image": {
        "name": "image_entrée"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d'image - spécifiez quoi et comment modifier."
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage_prompt",
        "tooltip": "Indique s'il faut effectuer un suréchantillonnage sur le prompt. Si actif, modifie automatiquement le prompt pour une génération plus créative, mais les résultats sont non déterministes (la même graine ne produira pas exactement le même résultat)."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "steps": {
        "name": "étapes",
        "tooltip": "Nombre d'étapes pour le processus de génération d'image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxProExpandNode": {
    "description": "Étend l’image selon le prompt.",
    "display_name": "Flux.1 Élargir l’image",
    "inputs": {
      "bottom": {
        "name": "bas",
        "tooltip": "Nombre de pixels à ajouter en bas de l’image"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "guidance": {
        "name": "guidage",
        "tooltip": "Intensité du guidage pour le processus de génération d’image"
      },
      "image": {
        "name": "image"
      },
      "left": {
        "name": "gauche",
        "tooltip": "Nombre de pixels à ajouter à gauche de l’image"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d’image"
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage du prompt",
        "tooltip": "Indique s’il faut effectuer un suréchantillonnage sur le prompt. Si activé, modifie automatiquement le prompt pour une génération plus créative, mais les résultats sont non déterministes (la même graine ne produira pas exactement le même résultat)."
      },
      "right": {
        "name": "droite",
        "tooltip": "Nombre de pixels à ajouter à droite de l’image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "steps": {
        "name": "étapes",
        "tooltip": "Nombre d’étapes pour le processus de génération d’image"
      },
      "top": {
        "name": "haut",
        "tooltip": "Nombre de pixels à ajouter en haut de l’image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxProFillNode": {
    "description": "Reconstitue l'image en fonction du mask et du prompt.",
    "display_name": "Flux.1 Remplir l'image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "guidance": {
        "name": "guidage",
        "tooltip": "Intensité du guidage pour le processus de génération d'image"
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "mask"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d'image"
      },
      "prompt_upsampling": {
        "name": "suréchantillonnage du prompt",
        "tooltip": "Indique s'il faut effectuer un suréchantillonnage du prompt. Si activé, modifie automatiquement le prompt pour une génération plus créative, mais les résultats sont non déterministes (la même seed ne produira pas exactement le même résultat)."
      },
      "seed": {
        "name": "seed",
        "tooltip": "La seed aléatoire utilisée pour créer le bruit."
      },
      "steps": {
        "name": "étapes",
        "tooltip": "Nombre d'étapes pour le processus de génération d'image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxProUltraImageNode": {
    "description": "Génère des images avec Flux Pro 1.1 Ultra via l'API à partir d'un prompt et d'une résolution.",
    "display_name": "Flux 1.1 [pro] Ultra Image",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Rapport d'aspect de l'image ; doit être compris entre 1:4 et 4:1."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "image_prompt": {
        "name": "image_prompt"
      },
      "image_prompt_strength": {
        "name": "image_prompt_strength",
        "tooltip": "Mélange entre le prompt et le prompt image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d'image"
      },
      "prompt_upsampling": {
        "name": "prompt_upsampling",
        "tooltip": "Indique s'il faut effectuer un upsampling sur le prompt. Si activé, modifie automatiquement le prompt pour une génération plus créative, mais les résultats sont non déterministes (la même graine ne produira pas exactement le même résultat)."
      },
      "raw": {
        "name": "raw",
        "tooltip": "Si vrai, génère des images moins traitées et d'apparence plus naturelle."
      },
      "seed": {
        "name": "seed",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FluxVTONode": {
    "description": "Essayage virtuel : habille la personne avec le vêtement fourni.",
    "display_name": "Flux Essayage Virtuel",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "garment": {
        "name": "garment",
        "tooltip": "Image du vêtement à appliquer."
      },
      "person": {
        "name": "person",
        "tooltip": "Image de la personne à habiller."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Instruction de style optionnelle en langage naturel (ex : comment le vêtement doit être ajusté)."
      },
      "seed": {
        "name": "seed",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FrameInterpolate": {
    "display_name": "Interpolation d’images",
    "inputs": {
      "images": {
        "name": "images"
      },
      "interp_model": {
        "name": "interp_model"
      },
      "multiplier": {
        "name": "multiplicateur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FrameInterpolationModelLoader": {
    "display_name": "Charger un modèle d’interpolation d’images",
    "inputs": {
      "model_name": {
        "name": "nom_du_modèle",
        "tooltip": "Sélectionnez un modèle d’interpolation d’images à charger. Les modèles doivent être placés dans le dossier 'frame_interpolation'."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FreSca": {
    "description": "Applique une mise à l'échelle dépendante de la fréquence au guidage",
    "display_name": "FreSca",
    "inputs": {
      "freq_cutoff": {
        "name": "seuil_fréquence",
        "tooltip": "Nombre d'indices de fréquence autour du centre à considérer comme basses fréquences"
      },
      "model": {
        "name": "modèle"
      },
      "scale_high": {
        "name": "échelle_haute",
        "tooltip": "Facteur d'échelle pour les composantes hautes fréquences"
      },
      "scale_low": {
        "name": "échelle_basse",
        "tooltip": "Facteur d'échelle pour les composantes basses fréquences"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FreeU": {
    "display_name": "FreeU",
    "inputs": {
      "b1": {
        "name": "b1"
      },
      "b2": {
        "name": "b2"
      },
      "model": {
        "name": "modèle"
      },
      "s1": {
        "name": "s1"
      },
      "s2": {
        "name": "s2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "FreeU_V2": {
    "display_name": "FreeU_V2",
    "inputs": {
      "b1": {
        "name": "b1"
      },
      "b2": {
        "name": "b2"
      },
      "model": {
        "name": "modèle"
      },
      "s1": {
        "name": "s1"
      },
      "s2": {
        "name": "s2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GITSScheduler": {
    "display_name": "GITSScheduler",
    "inputs": {
      "coeff": {
        "name": "coeff"
      },
      "denoise": {
        "name": "débruitage"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GLIGENLoader": {
    "display_name": "GLIGENLoader",
    "inputs": {
      "gligen_name": {
        "name": "nom_gligen"
      }
    }
  },
  "GLIGENTextBoxApply": {
    "display_name": "GLIGENTextBoxApply",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "conditioning_to": {
        "name": "conditionnement_à"
      },
      "gligen_textbox_model": {
        "name": "modèle_boîte_texte_gligen"
      },
      "height": {
        "name": "hauteur"
      },
      "text": {
        "name": "texte"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    }
  },
  "GLSLShader": {
    "description": "Appliquez des shaders de fragments GLSL ES aux images. u_resolution (vec2) est toujours disponible.",
    "display_name": "Shader GLSL",
    "inputs": {
      "bools": {
        "name": "booléens",
        "tooltip": "Les booléens sont disponibles sous u_bool0-9 (bool) dans le code du shader"
      },
      "curves": {
        "name": "courbes",
        "tooltip": "Les courbes sont disponibles sous u_curve0-3 (sampler2D, LUT 1D) dans le code du shader. Échantillonnez avec texture(u_curve0, vec2(x, 0.5)).r"
      },
      "floats": {
        "name": "floats",
        "tooltip": "Les flottants sont disponibles sous u_float0-4 dans le code du shader"
      },
      "fragment_shader": {
        "name": "fragment_shader",
        "tooltip": "Code source du shader de fragment GLSL (compatible GLSL ES 3.00 / WebGL 2.0)"
      },
      "images": {
        "name": "images",
        "tooltip": "Les images sont disponibles sous u_image0-4 (sampler2D) dans le code du shader"
      },
      "ints": {
        "name": "ints",
        "tooltip": "Les entiers sont disponibles sous u_int0-4 dans le code du shader"
      },
      "size_mode": {
        "name": "size_mode",
        "tooltip": "Taille de sortie : 'from_input' utilise les dimensions de la première image d'entrée, 'custom' permet de définir la taille manuellement"
      }
    },
    "outputs": {
      "0": {
        "name": "IMAGE0",
        "tooltip": "Disponible via layout(location = 0) out vec4 fragColor0 dans le code du shader"
      },
      "1": {
        "name": "IMAGE1",
        "tooltip": "Disponible via layout(location = 1) out vec4 fragColor1 dans le code du shader"
      },
      "2": {
        "name": "IMAGE2",
        "tooltip": "Disponible via layout(location = 2) out vec4 fragColor2 dans le code du shader"
      },
      "3": {
        "name": "IMAGE3",
        "tooltip": "Disponible via layout(location = 3) out vec4 fragColor3 dans le code du shader"
      }
    }
  },
  "GeminiImage2Node": {
    "description": "Générez ou modifiez des images de manière synchrone via l'API Google Vertex.",
    "display_name": "Nano Banana Pro (Google Gemini Image)",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Si défini sur 'auto', correspond au format d'image de votre entrée ; si aucune image n'est fournie, un carré 16:9 est généralement généré."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "files": {
        "name": "files",
        "tooltip": "Fichier(s) optionnel(s) à utiliser comme contexte pour le modèle. Accepte les entrées du nœud Gemini Generate Content Input Files."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) de référence optionnelle(s). Pour inclure plusieurs images, utilisez le nœud Batch Images (jusqu'à 14)."
      },
      "model": {
        "name": "model"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle décrivant l'image à générer ou les modifications à appliquer. Incluez toutes contraintes, styles ou détails que le modèle doit suivre."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Résolution de sortie cible. Pour 2K/4K, l'upscaler natif Gemini est utilisé."
      },
      "response_modalities": {
        "name": "response_modalities",
        "tooltip": "Choisissez 'IMAGE' pour une sortie image uniquement, ou 'IMAGE+TEXT' pour retourner à la fois l'image générée et une réponse textuelle."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Lorsque la graine est fixée à une valeur spécifique, le modèle s'efforce de fournir la même réponse pour des requêtes répétées. Un résultat déterministe n'est pas garanti. De plus, changer le modèle ou les paramètres, comme la température, peut entraîner des variations de la réponse même avec la même valeur de graine. Par défaut, une graine aléatoire est utilisée."
      },
      "system_prompt": {
        "name": "system_prompt",
        "tooltip": "Instructions fondamentales qui dictent le comportement de l'IA."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "GeminiImageNode": {
    "description": "Modifier les images de manière synchrone via l'API Google.",
    "display_name": "Image Google Gemini",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect",
        "tooltip": "Par défaut, correspond à la taille de l'image de sortie à celle de votre image d'entrée, ou génère sinon des carrés 1:1."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "files": {
        "name": "fichiers",
        "tooltip": "Fichier(s) optionnel(s) à utiliser comme contexte pour le modèle. Accepte les entrées du nœud Fichiers d'entrée de contenu généré Gemini."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) optionnelle(s) à utiliser comme contexte pour le modèle. Pour inclure plusieurs images, vous pouvez utiliser le nœud Images par lot."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle Gemini à utiliser pour générer les réponses."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt texte pour la génération"
      },
      "response_modalities": {
        "name": "response_modalities",
        "tooltip": "Choisissez 'IMAGE' pour une sortie image uniquement, ou 'IMAGE+TEXT' pour retourner à la fois l'image générée et une réponse textuelle."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Lorsque la graine est fixée à une valeur spécifique, le modèle fait de son mieux pour fournir la même réponse pour des requêtes répétées. La sortie déterministe n'est pas garantie. De plus, changer le modèle ou les paramètres, comme la température, peut entraîner des variations dans la réponse même en utilisant la même valeur de graine. Par défaut, une valeur de graine aléatoire est utilisée."
      },
      "system_prompt": {
        "name": "system_prompt",
        "tooltip": "Instructions fondamentales qui dictent le comportement de l'IA."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "GeminiInputFiles": {
    "description": "Charge et prépare les fichiers d'entrée à inclure comme entrées pour les nœuds LLM Gemini. Les fichiers seront lus par le modèle Gemini lors de la génération d'une réponse. Le contenu du fichier texte compte dans la limite de tokens. 🛈 ASTUCE : Peut être chaîné avec d'autres nœuds de fichiers d'entrée Gemini.",
    "display_name": "Fichiers d'entrée Gemini",
    "inputs": {
      "GEMINI_INPUT_FILES": {
        "name": "FICHIERS_ENTRÉE_GEMINI",
        "tooltip": "Un ou plusieurs fichiers supplémentaires optionnels à regrouper avec le fichier chargé depuis ce nœud. Permet d'enchaîner les fichiers d'entrée afin qu'un seul message puisse inclure plusieurs fichiers d'entrée."
      },
      "file": {
        "name": "fichier",
        "tooltip": "Fichiers d'entrée à inclure comme contexte pour le modèle. N'accepte pour le moment que les fichiers texte (.txt) et PDF (.pdf)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GeminiNanoBanana2": {
    "description": "Générez ou modifiez des images de manière synchrone via l’API Google Vertex.",
    "display_name": "Nano Banana 2",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d’aspect",
        "tooltip": "Si défini sur « auto », correspond au rapport d’aspect de votre image d’entrée ; si aucune image n’est fournie, un carré 16:9 est généralement généré."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "files": {
        "name": "fichiers",
        "tooltip": "Fichier(s) optionnel(s) à utiliser comme contexte pour le modèle. Accepte les entrées du nœud Gemini Generate Content Input Files."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) de référence optionnelle(s). Pour inclure plusieurs images, utilisez le nœud Batch Images (jusqu’à 14)."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle décrivant l’image à générer ou les modifications à appliquer. Incluez toutes contraintes, styles ou détails que le modèle doit respecter."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Résolution de sortie cible. Pour le 2K/4K, l’upscaler natif Gemini est utilisé."
      },
      "response_modalities": {
        "name": "modalités de réponse"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Lorsque la graine est fixée à une valeur spécifique, le modèle s’efforce de fournir la même réponse pour des requêtes répétées. Un résultat déterministe n’est pas garanti. De plus, changer le modèle ou les paramètres, comme la température, peut entraîner des variations de la réponse même avec la même valeur de graine. Par défaut, une graine aléatoire est utilisée."
      },
      "system_prompt": {
        "name": "invite système",
        "tooltip": "Instructions fondamentales qui dictent le comportement de l’IA."
      },
      "thinking_level": {
        "name": "niveau de réflexion"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      },
      "2": {
        "name": "thought_image",
        "tooltip": "Première image issue du processus de réflexion du modèle. Disponible uniquement avec le niveau de réflexion ÉLEVÉ et la modalité IMAGE+TEXTE."
      }
    }
  },
  "GeminiNanoBanana2V2": {
    "description": "Générez ou modifiez des images de manière synchrone via l'API Google Vertex.",
    "display_name": "Nano Banana 2",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "model_thinking_level": {
        "name": "niveau de réflexion"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle décrivant l'image à générer ou les modifications à appliquer. Incluez toutes contraintes, styles ou détails que le modèle doit respecter."
      },
      "response_modalities": {
        "name": "modalités de réponse"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Lorsque la graine est fixée à une valeur spécifique, le modèle s'efforce de fournir la même réponse pour des requêtes répétées. Un résultat déterministe n'est pas garanti. De plus, changer le modèle ou les paramètres, comme la température, peut entraîner des variations de la réponse même avec la même valeur de graine. Par défaut, une valeur de graine aléatoire est utilisée."
      },
      "system_prompt": {
        "name": "invite système",
        "tooltip": "Instructions fondamentales qui dictent le comportement de l'IA."
      },
      "temperature": {
        "name": "température",
        "tooltip": "Contrôle l’aléa dans la génération. Plus bas = plus ciblé/déterministe."
      },
      "top_p": {
        "name": "top_p",
        "tooltip": "Seuil d’échantillonnage nucleus. Plus bas = plus ciblé, plus haut = plus diversifié."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      },
      "2": {
        "name": "image de réflexion",
        "tooltip": "Première image issue du processus de réflexion du modèle. Disponible uniquement avec le niveau de réflexion ÉLEVÉ et la modalité IMAGE+TEXTE."
      }
    }
  },
  "GeminiNode": {
    "description": "Génère des réponses textuelles avec le modèle d'IA Gemini de Google. Vous pouvez fournir plusieurs types d'entrées (texte, images, audio, vidéo) comme contexte pour générer des réponses plus pertinentes et significatives.",
    "display_name": "Google Gemini",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio optionnel à utiliser comme contexte pour le modèle."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "files": {
        "name": "fichiers",
        "tooltip": "Fichier(s) optionnel(s) à utiliser comme contexte pour le modèle. Accepte les entrées du nœud Fichiers d'entrée de génération de contenu Gemini."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) optionnelle(s) à utiliser comme contexte pour le modèle. Pour inclure plusieurs images, vous pouvez utiliser le nœud Images par lot."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle Gemini à utiliser pour générer les réponses."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Entrées textuelles pour le modèle, utilisées pour générer une réponse. Vous pouvez inclure des instructions détaillées, des questions ou du contexte pour le modèle."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Lorsque la graine est fixée à une valeur spécifique, le modèle fait de son mieux pour fournir la même réponse pour des requêtes répétées. La sortie déterministe n'est pas garantie. De plus, changer le modèle ou les paramètres, comme la température, peut entraîner des variations dans la réponse même en utilisant la même valeur de graine. Par défaut, une valeur de graine aléatoire est utilisée."
      },
      "system_prompt": {
        "name": "system_prompt",
        "tooltip": "Instructions fondamentales qui dictent le comportement de l'IA."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo optionnelle à utiliser comme contexte pour le modèle."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GeminiNodeV2": {
    "description": "Générez des réponses textuelles avec les modèles Gemini de Google. Fournissez une invite textuelle et, en option, une ou plusieurs images, clips audio, vidéos ou fichiers comme contexte multimodal.",
    "display_name": "Google Gemini",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle Gemini utilisé pour générer la réponse."
      },
      "model_max_output_tokens": {
        "name": "max_output_tokens"
      },
      "model_temperature": {
        "name": "température"
      },
      "model_thinking_level": {
        "name": "niveau de réflexion"
      },
      "model_top_p": {
        "name": "top_p"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Texte d’entrée pour le modèle. Incluez des instructions détaillées, des questions ou du contexte."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour l’échantillonnage. Mettre à 0 pour une graine aléatoire. Le résultat déterministe n’est pas garanti."
      },
      "system_prompt": {
        "name": "invite système",
        "tooltip": "Instructions fondamentales qui dictent le comportement du modèle."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GeminiVideoOmni": {
    "description": "Générez une vidéo avec audio à partir d’un prompt texte en utilisant le modèle Gemini Omni Flash de Google. Vous pouvez fournir des images et/ou vidéos de référence pour guider ou éditer le résultat. Décrivez la durée souhaitée (3-10s) et le format d’image (16:9 ou 9:16) directement dans le prompt.",
    "display_name": "Google Gemini Omni (Vidéo)",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle vidéo Gemini utilisé pour générer la vidéo."
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_temperature": {
        "name": "temperature"
      },
      "model_top_p": {
        "name": "top_p"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "GenerateTracks": {
    "display_name": "GenerateTracks",
    "inputs": {
      "bezier": {
        "name": "bezier",
        "tooltip": "Activer le chemin en courbe de Bézier en utilisant le point central comme point de contrôle."
      },
      "end_x": {
        "name": "fin_x",
        "tooltip": "Coordonnée X normalisée (0-1) pour la position d'arrivée."
      },
      "end_y": {
        "name": "fin_y",
        "tooltip": "Coordonnée Y normalisée (0-1) pour la position d'arrivée."
      },
      "height": {
        "name": "hauteur"
      },
      "interpolation": {
        "name": "interpolation",
        "tooltip": "Contrôle le timing/la vitesse du mouvement le long du chemin."
      },
      "mid_x": {
        "name": "milieu_x",
        "tooltip": "Point de contrôle X normalisé pour la courbe de Bézier. Utilisé uniquement lorsque 'bezier' est activé."
      },
      "mid_y": {
        "name": "milieu_y",
        "tooltip": "Point de contrôle Y normalisé pour la courbe de Bézier. Utilisé uniquement lorsque 'bezier' est activé."
      },
      "num_frames": {
        "name": "nombre_d_images"
      },
      "num_tracks": {
        "name": "nombre_de_pistes"
      },
      "start_x": {
        "name": "départ_x",
        "tooltip": "Coordonnée X normalisée (0-1) pour la position de départ."
      },
      "start_y": {
        "name": "départ_y",
        "tooltip": "Coordonnée Y normalisée (0-1) pour la position de départ."
      },
      "track_mask": {
        "name": "masque_de_piste",
        "tooltip": "Masque optionnel pour indiquer les images visibles."
      },
      "track_spread": {
        "name": "écartement_des_pistes",
        "tooltip": "Distance normalisée entre les pistes. Les pistes sont réparties perpendiculairement à la direction du mouvement."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "longueur_de_piste",
        "tooltip": null
      }
    }
  },
  "GetICLoRAParameters": {
    "description": "Extrait les paramètres IC-LoRA des métadonnées safetensors d’un modèle LoRA chargé et les transmet à LTXVAddGuide (ex. reference_downscale_factor).",
    "display_name": "Obtenir les paramètres IC-LoRA",
    "inputs": {
      "iclora_model": {
        "name": "iclora_model",
        "tooltip": "Sortie directe d’un LoRA Loader pour l’IC-LoRA spécifique dont on souhaite extraire les métadonnées."
      }
    },
    "outputs": {
      "0": {
        "name": "iclora_parameters",
        "tooltip": "Paramètres IC-LoRA extraits des métadonnées LoRA (ex. reference_downscale_factor). Connectez à LTXVAddGuide si le LoRA nécessite un traitement spécial des guides."
      }
    }
  },
  "GetImageSize": {
    "description": "Retourne la largeur et la hauteur de l'image, et la transmet inchangée.",
    "display_name": "Obtenir la taille de l'image",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "name": "largeur",
        "tooltip": null
      },
      "1": {
        "name": "hauteur",
        "tooltip": null
      },
      "2": {
        "name": "taille du lot",
        "tooltip": null
      }
    }
  },
  "GetSplatCount": {
    "description": "Retourne le nombre de splats additionnés à travers le lot.",
    "display_name": "Obtenir le nombre de Splats",
    "inputs": {
      "splat": {
        "name": "splat"
      }
    },
    "outputs": {
      "0": {
        "name": "splat",
        "tooltip": null
      },
      "1": {
        "name": "nombre",
        "tooltip": null
      }
    }
  },
  "GetVideoComponents": {
    "description": "Extrait tous les composants d'une vidéo : images, audio et fréquence d’images.",
    "display_name": "Obtenir les composants vidéo",
    "inputs": {
      "video": {
        "name": "vidéo",
        "tooltip": "La vidéo dont extraire les composants."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      },
      "1": {
        "name": "audio",
        "tooltip": null
      },
      "2": {
        "name": "ips",
        "tooltip": null
      },
      "3": {
        "name": "bit_depth",
        "tooltip": null
      }
    }
  },
  "GrokImageEditNode": {
    "description": "Modifiez une image existante à partir d'une invite textuelle",
    "display_name": "Grok Image Edit",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect",
        "tooltip": "Autorisé uniquement lorsque plusieurs images sont connectées à l'entrée image."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "number_of_images": {
        "name": "nombre d'images",
        "tooltip": "Nombre d'images modifiées à générer"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "L'invite textuelle utilisée pour générer l'image"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokImageEditNodeV2": {
    "description": "Modifiez une image existante à partir d’un prompt textuel",
    "display_name": "Grok Image Edit",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_aspect_ratio": {
        "name": "ratio_d’aspect"
      },
      "model_number_of_images": {
        "name": "nombre_d’images"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Le prompt textuel utilisé pour générer l’image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokImageNode": {
    "description": "Générez des images avec Grok à partir d'une invite textuelle",
    "display_name": "Grok Image",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "number_of_images": {
        "name": "nombre d'images",
        "tooltip": "Nombre d'images à générer"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "L'invite textuelle utilisée pour générer l'image"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokVideoEditNode": {
    "description": "Modifiez une vidéo existante à partir d'une invite textuelle.",
    "display_name": "Grok Video Edit",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de la vidéo souhaitée."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "La durée maximale prise en charge est de 8,7 secondes et la taille du fichier de 50 Mo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokVideoExtendNode": {
    "description": "Prolongez une vidéo existante avec une continuation fluide basée sur une invite textuelle.",
    "display_name": "Extension vidéo Grok",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle à utiliser pour l’extension vidéo."
      },
      "model_duration": {
        "name": "durée"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de ce qui doit se passer ensuite dans la vidéo."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo source à prolonger. Format MP4, 2-15 secondes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokVideoNode": {
    "description": "Générez une vidéo à partir d'une invite ou d'une image",
    "display_name": "Grok Video",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect",
        "tooltip": "Le rapport d'aspect de la vidéo générée."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "La durée de la vidéo générée en secondes."
      },
      "image": {
        "name": "image",
        "tooltip": "Image de départ optionnelle pour grok-imagine-video. Requise pour grok-imagine-video-1.5."
      },
      "model": {
        "name": "modèle",
        "tooltip": "grok-imagine-video-1.5 nécessite actuellement toujours une image d'entrée."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de la vidéo souhaitée."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "La résolution de la vidéo générée."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrokVideoReferenceNode": {
    "description": "Générez une vidéo guidée par des images de référence comme références de style et de contenu.",
    "display_name": "Grok Référence-vers-Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle à utiliser pour la génération vidéo."
      },
      "model_aspect_ratio": {
        "name": "ratio d’aspect"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "model_voice_1": {
        "name": "voix_1"
      },
      "model_voice_2": {
        "name": "voix_2"
      },
      "model_voice_3": {
        "name": "voix_3"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de la vidéo souhaitée."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "GrowMask": {
    "display_name": "GrowMask",
    "inputs": {
      "expand": {
        "name": "agrandir"
      },
      "mask": {
        "name": "masque"
      },
      "tapered_corners": {
        "name": "coins_évasés"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HappyHorseImageToVideoApi": {
    "description": "Générez une vidéo à partir d'une image de première image en utilisant le modèle HappyHorse.",
    "display_name": "HappyHorse Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "first_frame": {
        "name": "première image",
        "tooltip": "Image de la première image. Le format de sortie est dérivé de cette image."
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HappyHorseReferenceVideoApi": {
    "description": "Générez une vidéo mettant en scène une personne ou un objet à partir de matériaux de référence avec le modèle HappyHorse. Prend en charge les performances à un seul personnage et les interactions multi-personnages.",
    "display_name": "HappyHorse Référence vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HappyHorseTextToVideoApi": {
    "description": "Génère une vidéo à partir d'une invite textuelle en utilisant le modèle HappyHorse.",
    "display_name": "HappyHorse Texte vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HappyHorseVideoEditApi": {
    "description": "Modifiez une vidéo à l'aide d'instructions textuelles ou d'images de référence avec le modèle HappyHorse. La durée de sortie est de 3 à 15s et correspond à la vidéo d'entrée ; les entrées de plus de 15s sont tronquées.",
    "display_name": "HappyHorse Édition Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "La vidéo à éditer."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HeyGenAvatarVideoNode": {
    "description": "Générez une vidéo de présentateur parlant à partir d’un avatar HeyGen. Inclut les avatars publics les plus populaires de HeyGen ; tout identifiant de look peut être fourni en remplacement.",
    "display_name": "Vidéo Avatar HeyGen",
    "inputs": {
      "aspect_ratio": {
        "name": "format d’image",
        "tooltip": "Format d’image de sortie. 'auto' suit la source de l’avatar."
      },
      "background_color": {
        "name": "couleur de fond",
        "tooltip": "Couleur de fond unie optionnelle en code hexadécimal (ex : '#00ff00'). Laissez vide pour utiliser le fond de l’avatar."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "custom_avatar_id": {
        "name": "identifiant_avatar_personnalisé",
        "tooltip": "Identifiant de look d’avatar HeyGen optionnel. Lorsqu’il est défini, il remplace l’avatar sélectionné ci-dessus. N’importe lequel des 3000+ looks publics de HeyGen (ou vos avatars privés) peut être utilisé."
      },
      "engine": {
        "name": "moteur",
        "tooltip": "Moteur de rendu ; chaque choix liste uniquement les avatars qui le prennent en charge. 'auto' propose tous les avatars et sélectionne leur meilleur moteur (Avatar IV préféré). Avatar V offre la meilleure fidélité, Avatar III est le plus abordable."
      },
      "engine_avatar": {
        "name": "avatar"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Résolution de la vidéo de sortie."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Non envoyé à HeyGen ; modifiez-le pour forcer une nouvelle génération."
      },
      "speech": {
        "name": "parole",
        "tooltip": "Animez l’avatar avec un script texte (HeyGen texte-à-parole) ou votre propre audio."
      },
      "speech_custom_voice_id": {
        "name": "identifiant_voix_personnalisée"
      },
      "speech_text": {
        "name": "texte"
      },
      "speech_voice": {
        "name": "voix"
      },
      "speech_voice_speed": {
        "name": "vitesse_voix"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HeyGenCreateAvatarNode": {
    "description": "Créez votre propre avatar HeyGen réutilisable à partir d’une photo d’une personne ou d’une invite texte (un personnage généré). Utilisez l’avatar_id résultant dans le champ custom_avatar_id de Vidéo Avatar HeyGen — et sauvegardez l’ID pour réutiliser l’avatar dans de futurs workflows.",
    "display_name": "Créer un Avatar HeyGen",
    "inputs": {
      "source": {
        "name": "source",
        "tooltip": "Générez un nouveau personnage à partir d’une invite texte, ou créez l’avatar à partir d’une photo connectée d’une personne."
      },
      "source_prompt": {
        "name": "invite"
      }
    },
    "outputs": {
      "0": {
        "name": "avatar_id",
        "tooltip": "Identifiant de look d’avatar. Passez-le au champ custom_avatar_id de Vidéo Avatar HeyGen ; sauvegardez-le pour réutiliser l’avatar plus tard."
      },
      "1": {
        "name": "aperçu",
        "tooltip": null
      }
    }
  },
  "HeyGenTalkingPhotoNode": {
    "description": "Animez n'importe quelle image d'une personne en une vidéo parlante synchronisée sur les lèvres (HeyGen Avatar IV). Contrôlez-la avec un script texte ou votre propre audio.",
    "display_name": "HeyGen Talking Photo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Format d'image de sortie. 'auto' suit l'image d'entrée."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "expressiveness": {
        "name": "expressiveness",
        "tooltip": "Degré d'expressivité du visage et des gestes animés."
      },
      "image": {
        "name": "image",
        "tooltip": "Image d'une personne à animer. Redimensionnée automatiquement si supérieure à 2K."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Résolution vidéo de sortie."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Non envoyé à HeyGen ; modifiez-le pour forcer une nouvelle génération."
      },
      "speech": {
        "name": "speech",
        "tooltip": "Animez l'avatar avec un script texte (HeyGen text-to-speech) ou votre propre audio."
      },
      "speech_custom_voice_id": {
        "name": "custom_voice_id"
      },
      "speech_text": {
        "name": "texte"
      },
      "speech_voice": {
        "name": "voix"
      },
      "speech_voice_speed": {
        "name": "vitesse_voix"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HeyGenTextToSpeechNode": {
    "description": "Générez un audio de parole à partir d'un texte grâce au moteur Starfish TTS de HeyGen. Inclut les voix les plus populaires de HeyGen dans 17 langues.",
    "display_name": "HeyGen Texte en Parole",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "custom_voice_id": {
        "name": "custom_voice_id",
        "tooltip": "ID de voix HeyGen optionnel. Si défini, remplace la voix sélectionnée ci-dessus. La voix doit être compatible avec le moteur Starfish."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Non envoyé à HeyGen ; modifiez-le pour forcer une nouvelle génération."
      },
      "speed": {
        "name": "vitesse",
        "tooltip": "Multiplicateur de vitesse de la parole."
      },
      "ssml": {
        "name": "ssml",
        "tooltip": "Traiter le texte comme du balisage SSML (pour les pauses, l'emphase et le contrôle de la prononciation)."
      },
      "text": {
        "name": "texte",
        "tooltip": "Texte à synthétiser (jusqu'à 5000 caractères). La parole générée doit durer au moins 1 seconde."
      },
      "voice": {
        "name": "voix",
        "tooltip": "Voix à utiliser (sélection parmi les voix Starfish les plus populaires de HeyGen)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HeyGenVideoTranslateNode": {
    "description": "Traduisez une vidéo parlée dans une autre langue. Clone la voix originale du locuteur et ré-anime la bouche pour correspondre à la parole traduite.",
    "display_name": "HeyGen Traduction Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "mode": {
        "name": "mode",
        "tooltip": "'speed' est plus rapide ; 'precision' produit une synchronisation labiale de meilleure qualité à un coût doublé."
      },
      "output_language": {
        "name": "langue de sortie",
        "tooltip": "Langue cible pour la vidéo traduite."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Non envoyé à HeyGen ; modifiez-le pour forcer une nouvelle exécution."
      },
      "speaker_count": {
        "name": "nombre de locuteurs",
        "tooltip": "Nombre de locuteurs dans la vidéo. 0 = détection automatique."
      },
      "translate_audio_only": {
        "name": "traduire uniquement l'audio",
        "tooltip": "Remplace uniquement la piste audio, en conservant les mouvements de bouche originaux (pas de synchronisation labiale)."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo avec discours à traduire."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HiDreamO1PatchSeamSmoothing": {
    "description": "Moyenne la sortie du modèle sur plusieurs positions de grille de patch décalées pendant la phase finale de l’échantillonnage. Annule les coutures.",
    "display_name": "Lissage des coutures de patch HiDream-O1",
    "inputs": {
      "blend": {
        "name": "mélange",
        "tooltip": "average : moyenne à poids égal. window : pondération fenêtrée de Hann favorisant chaque passage loin de ses bords de patch. median : médiane par pixel, rejette les passages aberrants."
      },
      "end_percent": {
        "name": "pourcentage_fin",
        "tooltip": "Progression de l’échantillonnage à laquelle le mélange se désactive."
      },
      "model": {
        "name": "modèle"
      },
      "passes": {
        "name": "passes",
        "tooltip": "Nombre de passages par étape contrôlée. 2/4 = fixe. ramp_* : le nombre de passages augmente à mesure que l’échantillonnage approche de la fin (plus de lissage là où les coutures sont les plus visibles)."
      },
      "pattern": {
        "name": "motif",
        "tooltip": "Disposition du décalage. single_shift : un passage sur la grille de patch naturelle + autres décalés. symmetric : tous les passages hors grille, décalages répartis autour de l’origine."
      },
      "start_percent": {
        "name": "pourcentage_début",
        "tooltip": "Progression de l’échantillonnage (0=début, 1=fin) à laquelle le mélange s’active."
      },
      "strength": {
        "name": "force",
        "tooltip": "Interpolation entre la prédiction sur la grille naturelle (0) et le résultat moyenné (1)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HiDreamO1ReferenceImages": {
    "description": "Ajoutez 1 à 10 images de référence au conditionnement, une pour une instruction d’édition ou plusieurs pour une personnalisation orientée sujet.",
    "display_name": "Images de référence HiDream-O1",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Images de référence. 1 image = édition par instruction ; 2-10 images = multi-référence."
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      }
    }
  },
  "HitPawGeneralImageEnhance": {
    "description": "Agrandissez les images basse résolution en super-résolution, éliminez les artefacts et le bruit. Sortie maximale : 32 mégapixels.",
    "display_name": "HitPaw Amélioration Générale d’Image",
    "inputs": {
      "auto_downscale": {
        "name": "réduction_automatique",
        "tooltip": "Réduit automatiquement l’image d’entrée si la sortie dépasse la limite."
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "upscale_factor": {
        "name": "facteur_d’agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HitPawVideoEnhance": {
    "description": "Agrandissez les vidéos basse résolution en haute résolution, éliminez les artefacts et le bruit. Les prix affichés sont par seconde de vidéo.",
    "display_name": "HitPaw Amélioration Vidéo",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Hunyuan3Dv2Conditioning": {
    "display_name": "Hunyuan3Dv2Conditioning",
    "inputs": {
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "Hunyuan3Dv2ConditioningMultiView": {
    "display_name": "Hunyuan3Dv2ConditioningMultiView",
    "inputs": {
      "back": {
        "name": "arrière"
      },
      "front": {
        "name": "avant"
      },
      "left": {
        "name": "gauche"
      },
      "right": {
        "name": "droite"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "HunyuanImageToVideo": {
    "display_name": "HunyuanImageToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "guidance_type": {
        "name": "type_de_guidage"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "positive": {
        "name": "positive"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "HunyuanRefinerLatent": {
    "display_name": "Latent HunyuanRefiner",
    "inputs": {
      "latent": {
        "name": "latent"
      },
      "negative": {
        "name": "négatif"
      },
      "noise_augmentation": {
        "name": "augmentation_du_bruit"
      },
      "positive": {
        "name": "positif"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "HunyuanVideo15ImageToVideo": {
    "display_name": "HunyuanVideo15ImageToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "HunyuanVideo15LatentUpscaleWithModel": {
    "display_name": "Hunyuan Video 15 Latent Upscale With Model",
    "inputs": {
      "crop": {
        "name": "rogner"
      },
      "height": {
        "name": "hauteur"
      },
      "model": {
        "name": "modèle"
      },
      "samples": {
        "name": "échantillons"
      },
      "upscale_method": {
        "name": "méthode_d_agrandissement"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HunyuanVideo15SuperResolution": {
    "display_name": "HunyuanVideo15SuperResolution",
    "inputs": {
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "latent": {
        "name": "latent"
      },
      "negative": {
        "name": "négatif"
      },
      "noise_augmentation": {
        "name": "augmentation_du_bruit"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "HyperTile": {
    "display_name": "HyperTile",
    "inputs": {
      "max_depth": {
        "name": "profondeur_max"
      },
      "model": {
        "name": "modèle"
      },
      "scale_depth": {
        "name": "échelle_profondeur"
      },
      "swap_size": {
        "name": "taille_échange"
      },
      "tile_size": {
        "name": "taille_tuile"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "HypernetworkLoader": {
    "display_name": "HypernetworkLoader",
    "inputs": {
      "hypernetwork_name": {
        "name": "nom_hypernetwork"
      },
      "model": {
        "name": "modèle"
      },
      "strength": {
        "name": "force"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Ideogram4Scheduler": {
    "display_name": "Planificateur Ideogram 4",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "mu": {
        "name": "mu"
      },
      "std": {
        "name": "écart_type"
      },
      "steps": {
        "name": "étapes"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "IdeogramPImage": {
    "description": "Génère des images à l'aide de P-Image, le modèle texte-vers-image rapide d'Ideogram. Excellente typographie et photoréalisme ; prend en charge les légendes JSON structurées Ideogram 4.0 pour un texte, des couleurs et une mise en page exacts.",
    "display_name": "Ideogram P-Image",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Le ratio d'aspect pour la génération d'image."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt textuel. Accepte également une légende JSON structurée Ideogram 4.0 (couleurs exactes en hexadécimal #RRGGBB, chaînes de texte exactes, mise en page par boîte englobante) — réglez prompt_upsampling sur OFF pour l'utiliser tel quel."
      },
      "prompt_upsampling": {
        "name": "prompt_upsampling",
        "tooltip": "Développe les prompts courts en une légende structurée détaillée avant la génération (le prompt réécrit est renvoyé comme final_prompt). Réglez sur OFF lorsque vous fournissez votre propre légende JSON ou un texte exact."
      },
      "quality": {
        "name": "quality",
        "tooltip": "Niveau de vitesse/prix/qualité. MEDIUM est le choix par défaut quotidien ; HIGH pour des prompts complexes, des détails fins et du texte difficile ; VERY_LOW/LOW pour des brouillons à grande échelle. Le texte difficile est mal rendu en dessous de MEDIUM."
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "Classe de taille de sortie (les pixels exacts suivent le ratio d'aspect, par exemple 16:9 donne 1280x720 en 1K et 2560x1440 en 2K). Préférez HIGH + 2K pour une typographie nette."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour une génération reproductible. Avec prompt_upsampling sur OFF, la même graine et les mêmes paramètres donnent la même image ; avec ON/AUTO, la réécriture du prompt varie à chaque exécution — reproduisez un résultat en réutilisant la sortie final_prompt avec prompt_upsampling sur OFF et la même graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "final_prompt",
        "tooltip": "Le prompt à partir duquel l'image a réellement été générée (la légende structurée réécrite si prompt_upsampling a été utilisé, sinon votre prompt). Réutilisez-le avec prompt_upsampling sur OFF et la même graine pour reproduire cette image."
      }
    }
  },
  "IdeogramV3": {
    "description": "Génère des images de façon synchrone avec le modèle Ideogram V3.\n\nPrend en charge la génération d’images à partir de prompts textuels ainsi que l’édition d’images avec mask.\nLes liens des images sont disponibles pour une durée limitée ; si vous souhaitez conserver l’image, vous devez la télécharger.",
    "display_name": "Ideogram V3",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Le ratio d’aspect pour la génération d’image. Ignoré si la résolution n’est pas réglée sur Auto."
      },
      "character_image": {
        "name": "image_du_personnage",
        "tooltip": "Image à utiliser comme référence de personnage."
      },
      "character_mask": {
        "name": "masque_du_personnage",
        "tooltip": "Masque optionnel pour l'image de référence du personnage."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence optionnelle pour l’édition d’image."
      },
      "magic_prompt_option": {
        "name": "magic_prompt_option",
        "tooltip": "Détermine si MagicPrompt doit être utilisé lors de la génération"
      },
      "mask": {
        "name": "mask",
        "tooltip": "Mask optionnel pour l’inpainting (les zones blanches seront remplacées)"
      },
      "num_images": {
        "name": "num_images"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération ou l’édition d’image"
      },
      "rendering_speed": {
        "name": "rendering_speed",
        "tooltip": "Contrôle le compromis entre la vitesse de génération et la qualité"
      },
      "resolution": {
        "name": "resolution",
        "tooltip": "La résolution pour la génération d’image. Si elle n’est pas réglée sur Auto, cela remplace le paramètre aspect_ratio."
      },
      "seed": {
        "name": "seed"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "IdeogramV4": {
    "description": "Génère des images à l’aide du modèle Ideogram 4.0 à partir d’une invite textuelle.",
    "display_name": "Ideogram V4",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite textuelle pour la génération d’image."
      },
      "rendering_speed": {
        "name": "vitesse_de_rendu",
        "tooltip": "Contrôle le compromis entre la vitesse de génération et la qualité."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageAddNoise": {
    "display_name": "Ajout de bruit à l'image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "strength": {
        "name": "intensité"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageBatch": {
    "display_name": "Images en lot",
    "inputs": {
      "image1": {
        "name": "image1"
      },
      "image2": {
        "name": "image2"
      }
    }
  },
  "ImageBlend": {
    "display_name": "Mélange d'images",
    "inputs": {
      "blend_factor": {
        "name": "facteur_mélange"
      },
      "blend_mode": {
        "name": "mode_mélange"
      },
      "image1": {
        "name": "image1"
      },
      "image2": {
        "name": "image2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageBlur": {
    "display_name": "Flou d'image",
    "inputs": {
      "blur_radius": {
        "name": "rayon_flou"
      },
      "image": {
        "name": "image"
      },
      "sigma": {
        "name": "sigma"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageColorToMask": {
    "display_name": "ImageCouleurEnMasque",
    "inputs": {
      "color": {
        "name": "couleur"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageCompare": {
    "description": "Compare deux images côte à côte avec un curseur.",
    "display_name": "Comparaison d’images",
    "inputs": {
      "compare_view": {
        "name": "vue de comparaison"
      },
      "image_a": {
        "name": "image A"
      },
      "image_b": {
        "name": "image B"
      }
    }
  },
  "ImageCompositeMasked": {
    "display_name": "ImageCompositeMasked",
    "inputs": {
      "destination": {
        "name": "destination"
      },
      "mask": {
        "name": "masque"
      },
      "resize_source": {
        "name": "redimensionner_source"
      },
      "source": {
        "name": "source"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageCrop": {
    "display_name": "Rogner l'image",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "image": {
        "name": "image"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageCropV2": {
    "description": "Rogner une image selon les dimensions spécifiées.",
    "display_name": "Rogner l'image",
    "inputs": {
      "crop_region": {
        "name": "crop_region"
      },
      "height": {},
      "image": {
        "name": "image"
      },
      "width": {},
      "x": {},
      "y": {}
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageDeduplication": {
    "description": "Supprimer les images dupliquées ou très similaires d'une liste.",
    "display_name": "Déduplication d'image",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Liste des images à traiter."
      },
      "similarity_threshold": {
        "name": "seuil_de_similarité",
        "tooltip": "Seuil de similarité (0-1). Plus la valeur est élevée, plus les images sont similaires. Les images au-dessus de ce seuil sont considérées comme des doublons."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "ImageFlip": {
    "display_name": "Retournement d'image",
    "inputs": {
      "flip_method": {
        "name": "méthode_de_retournement"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageFromBatch": {
    "display_name": "ImageDeBatch",
    "inputs": {
      "batch_index": {
        "name": "index_de_lot"
      },
      "image": {
        "name": "image"
      },
      "length": {
        "name": "longueur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageGrid": {
    "description": "Organiser plusieurs images dans une disposition en grille.",
    "display_name": "Grille d'images",
    "inputs": {
      "cell_height": {
        "name": "hauteur_de_cellule",
        "tooltip": "Hauteur de chaque cellule dans la grille."
      },
      "cell_width": {
        "name": "largeur_de_cellule",
        "tooltip": "Largeur de chaque cellule dans la grille."
      },
      "columns": {
        "name": "colonnes",
        "tooltip": "Nombre de colonnes dans la grille."
      },
      "images": {
        "name": "images",
        "tooltip": "Liste des images à traiter."
      },
      "padding": {
        "name": "marge",
        "tooltip": "Marge entre les images."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "ImageHistogram": {
    "display_name": "Histogramme d'image",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "name": "rvb",
        "tooltip": null
      },
      "1": {
        "name": "luminance",
        "tooltip": null
      },
      "2": {
        "name": "rouge",
        "tooltip": null
      },
      "3": {
        "name": "vert",
        "tooltip": null
      },
      "4": {
        "name": "bleu",
        "tooltip": null
      }
    }
  },
  "ImageInvert": {
    "display_name": "Inverser l'image",
    "inputs": {
      "image": {
        "name": "image"
      }
    }
  },
  "ImageMergeTileList": {
    "display_name": "Fusionner une liste de tuiles en image",
    "inputs": {
      "final_height": {
        "name": "hauteur_finale"
      },
      "final_width": {
        "name": "largeur_finale"
      },
      "image_list": {
        "name": "liste_d'images"
      },
      "overlap": {
        "name": "chevauchement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageOnlyCheckpointLoader": {
    "display_name": "Chargeur de points de contrôle uniquement pour image (modèle img2vid)",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt"
      }
    }
  },
  "ImageOnlyCheckpointSave": {
    "display_name": "ImageOnlyCheckpointSave",
    "inputs": {
      "clip_vision": {
        "name": "clip_vision"
      },
      "filename_prefix": {
        "name": "préfixe_de_nom_de_fichier"
      },
      "model": {
        "name": "modèle"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "ImagePadForOutpaint": {
    "display_name": "Rembourrage d'image pour la peinture extérieure",
    "inputs": {
      "bottom": {
        "name": "bas"
      },
      "feathering": {
        "name": "adoucissement"
      },
      "image": {
        "name": "image"
      },
      "left": {
        "name": "gauche"
      },
      "right": {
        "name": "droite"
      },
      "top": {
        "name": "haut"
      }
    }
  },
  "ImageQuantize": {
    "display_name": "Quantification d'image",
    "inputs": {
      "colors": {
        "name": "couleurs"
      },
      "dither": {
        "name": "dither"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageRGBToYUV": {
    "display_name": "ImageRGBToYUV",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "name": "Y",
        "tooltip": null
      },
      "1": {
        "name": "U",
        "tooltip": null
      },
      "2": {
        "name": "V",
        "tooltip": null
      }
    }
  },
  "ImageRotate": {
    "display_name": "Rotation d'image",
    "inputs": {
      "image": {
        "name": "image"
      },
      "rotation": {
        "name": "rotation"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageScale": {
    "display_name": "Agrandir l'image",
    "inputs": {
      "crop": {
        "name": "crop"
      },
      "height": {
        "name": "hauteur"
      },
      "image": {
        "name": "image"
      },
      "upscale_method": {
        "name": "méthode_d'agrandissement"
      },
      "width": {
        "name": "largeur"
      }
    }
  },
  "ImageScaleBy": {
    "display_name": "Agrandir l'image par",
    "inputs": {
      "image": {
        "name": "image"
      },
      "scale_by": {
        "name": "agrandir_par"
      },
      "upscale_method": {
        "name": "méthode_d'agrandissement"
      }
    }
  },
  "ImageScaleToMaxDimension": {
    "display_name": "Redimensionner à la dimension maximale",
    "inputs": {
      "image": {
        "name": "image"
      },
      "largest_size": {
        "name": "taille_maximale"
      },
      "upscale_method": {
        "name": "méthode_d'agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageScaleToTotalPixels": {
    "display_name": "Redimensionner l'image en fonction du nombre total de pixels",
    "inputs": {
      "image": {
        "name": "image"
      },
      "megapixels": {
        "name": "mégapixels"
      },
      "resolution_steps": {
        "name": "étapes_de_résolution"
      },
      "upscale_method": {
        "name": "méthode_d'agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageSharpen": {
    "display_name": "Affiner l'image",
    "inputs": {
      "alpha": {
        "name": "alpha"
      },
      "image": {
        "name": "image"
      },
      "sharpen_radius": {
        "name": "rayon_d'affûtage"
      },
      "sigma": {
        "name": "sigma"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageStitch": {
    "description": "\nAssemble image2 à image1 dans la direction spécifiée.\nSi image2 n'est pas fournie, retourne image1 inchangée.\nUn espacement optionnel peut être ajouté entre les images.\n",
    "display_name": "Assemblage d'images",
    "inputs": {
      "direction": {
        "name": "direction"
      },
      "image1": {
        "name": "image1"
      },
      "image2": {
        "name": "image2"
      },
      "match_image_size": {
        "name": "correspondre_taille_image"
      },
      "spacing_color": {
        "name": "espacement_couleur"
      },
      "spacing_width": {
        "name": "espacement_largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageToMask": {
    "display_name": "Convertir Image en Masque",
    "inputs": {
      "channel": {
        "name": "canal"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageUpscaleWithModel": {
    "display_name": "Agrandir l'Image (à l'aide du Modèle)",
    "inputs": {
      "image": {
        "name": "image"
      },
      "upscale_model": {
        "name": "modèle_d'agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ImageYUVToRGB": {
    "display_name": "ImageYUVToRGB",
    "inputs": {
      "U": {
        "name": "U"
      },
      "V": {
        "name": "V"
      },
      "Y": {
        "name": "Y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "InpaintModelConditioning": {
    "display_name": "InpaintModelConditioning",
    "inputs": {
      "mask": {
        "name": "masque"
      },
      "negative": {
        "name": "négatif"
      },
      "noise_mask": {
        "name": "masque_de_bruit",
        "tooltip": "Ajoutez un masque de bruit au latent pour que l'échantillonnage ne se produise que dans le masque. Peut améliorer les résultats ou complètement les détruire en fonction du modèle."
      },
      "pixels": {
        "name": "pixels"
      },
      "positive": {
        "name": "positive"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "négatif"
      },
      "2": {
        "name": "latent"
      }
    }
  },
  "InstructPixToPixConditioning": {
    "display_name": "InstructPixToPixConditioning",
    "inputs": {
      "negative": {
        "name": "négatif"
      },
      "pixels": {
        "name": "pixels"
      },
      "positive": {
        "name": "positive"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "InvertMask": {
    "display_name": "InverserMasque",
    "inputs": {
      "mask": {
        "name": "masque"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "JoinAudioChannels": {
    "description": "Fusionne les canaux audio mono gauche et droit en un audio stéréo.",
    "display_name": "Fusionner les canaux audio",
    "inputs": {
      "audio_left": {
        "name": "audio gauche"
      },
      "audio_right": {
        "name": "audio droit"
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "JoinImageWithAlpha": {
    "display_name": "Joindre Image avec Alpha",
    "inputs": {
      "alpha": {
        "name": "alpha"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "JsonExtractString": {
    "display_name": "Extraire une chaîne du JSON",
    "inputs": {
      "json_string": {
        "name": "json_string"
      },
      "key": {
        "name": "key"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KSampler": {
    "description": "Utilise le modèle fourni, le conditionnement positif et négatif pour débruiter l'image latente.",
    "display_name": "KSampler",
    "inputs": {
      "cfg": {
        "name": "cfg",
        "tooltip": "L'échelle de guidage sans classificateur équilibre la créativité et l'adhérence à l'invite. Des valeurs plus élevées donnent des images correspondant plus étroitement à l'invite, cependant des valeurs trop élevées auront un impact négatif sur la qualité."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "denoise": {
        "name": "denoise",
        "tooltip": "La quantité de débruitage appliquée, des valeurs plus faibles maintiendront la structure de l'image initiale permettant un échantillonnage d'image à image."
      },
      "latent_image": {
        "name": "latent_image",
        "tooltip": "L'image latente à débruiter."
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle utilisé pour débruiter l'entrée latente."
      },
      "negative": {
        "name": "negative",
        "tooltip": "Le conditionnement décrivant les attributs que vous voulez exclure de l'image."
      },
      "positive": {
        "name": "positive",
        "tooltip": "Le conditionnement décrivant les attributs que vous voulez inclure dans l'image."
      },
      "sampler_name": {
        "name": "sampler_name",
        "tooltip": "L'algorithme utilisé lors de l'échantillonnage, cela peut affecter la qualité, la vitesse et le style de la sortie générée."
      },
      "scheduler": {
        "name": "scheduler",
        "tooltip": "Le planificateur contrôle comment le bruit est progressivement éliminé pour former l'image."
      },
      "seed": {
        "name": "seed",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      },
      "steps": {
        "name": "steps",
        "tooltip": "Le nombre d'étapes utilisées dans le processus de débruitage."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le latent débruité."
      }
    }
  },
  "KSamplerAdvanced": {
    "display_name": "KSampler (Avancé)",
    "inputs": {
      "add_noise": {
        "name": "add_noise"
      },
      "cfg": {
        "name": "cfg"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "end_at_step": {
        "name": "end_at_step"
      },
      "latent_image": {
        "name": "latent_image"
      },
      "model": {
        "name": "model"
      },
      "negative": {
        "name": "negative"
      },
      "noise_seed": {
        "name": "noise_seed"
      },
      "positive": {
        "name": "positive"
      },
      "return_with_leftover_noise": {
        "name": "return_with_leftover_noise"
      },
      "sampler_name": {
        "name": "sampler_name"
      },
      "scheduler": {
        "name": "scheduler"
      },
      "start_at_step": {
        "name": "start_at_step"
      },
      "steps": {
        "name": "steps"
      }
    }
  },
  "KSamplerSelect": {
    "display_name": "KSamplerSelect",
    "inputs": {
      "sampler_name": {
        "name": "sampler_name"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Kandinsky5ImageToVideo": {
    "display_name": "Kandinsky5ImageToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": "Latent vidéo vide"
      },
      "3": {
        "name": "cond_latent",
        "tooltip": "Images de départ encodées propres, utilisées pour remplacer le début bruité des latents de sortie du modèle"
      }
    }
  },
  "KarrasScheduler": {
    "display_name": "PlanificateurKarras",
    "inputs": {
      "rho": {
        "name": "rho"
      },
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingAvatarNode": {
    "description": "Générez des vidéos de type diffusion de personnages numériques à partir d'une seule photo et d'un fichier audio.",
    "display_name": "Kling Avatar 2.0",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence de l'avatar. La largeur et la hauteur doivent être d'au moins 300 px. Le rapport d'aspect doit être compris entre 1:2,5 et 2,5:1."
      },
      "mode": {
        "name": "mode"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite optionnelle pour définir les actions, émotions et mouvements de caméra de l'avatar."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      },
      "sound_file": {
        "name": "sound_file",
        "tooltip": "Entrée audio. Doit durer entre 2 et 300 secondes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingFirstLastFrameNode": {
    "description": "Générez des vidéos avec Kling V3 en utilisant la première et la dernière image.",
    "display_name": "Kling 3.0 Première-Dernière-Image en Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "end_frame": {
        "name": "dernière image"
      },
      "first_frame": {
        "name": "première image"
      },
      "generate_audio": {
        "name": "générer l'audio"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Paramètres du modèle et de la génération."
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "prompt"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingImage2VideoNode": {
    "display_name": "Kling Image to Video",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "cfg_scale": {
        "name": "cfg_scale"
      },
      "duration": {
        "name": "duration"
      },
      "mode": {
        "name": "mode"
      },
      "model_name": {
        "name": "model_name"
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite textuelle négative"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle positive"
      },
      "start_frame": {
        "name": "start_frame",
        "tooltip": "Image de référence - URL ou chaîne encodée en Base64, ne doit pas dépasser 10 Mo, résolution d'au moins 300*300px, ratio d'aspect entre 1:2,5 et 2,5:1. Le Base64 ne doit pas inclure le préfixe data:image."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "video_id",
        "tooltip": null
      },
      "2": {
        "name": "duration",
        "tooltip": null
      }
    }
  },
  "KlingImageGenerationNode": {
    "description": "Nœud de génération d'image Kling. Générez une image à partir d'une invite textuelle avec une image de référence optionnelle.",
    "display_name": "Génération d'image Kling",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "human_fidelity": {
        "name": "human_fidelity",
        "tooltip": "Similarité de référence du sujet"
      },
      "image": {
        "name": "image"
      },
      "image_fidelity": {
        "name": "image_fidelity",
        "tooltip": "Intensité de référence pour les images téléchargées par l'utilisateur"
      },
      "image_type": {
        "name": "image_type"
      },
      "model_name": {
        "name": "model_name"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d'images générées"
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite textuelle négative"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle positive"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingImageToVideoWithAudio": {
    "display_name": "Kling Image (première image) vers vidéo avec audio",
    "inputs": {
      "duration": {
        "name": "durée"
      },
      "generate_audio": {
        "name": "générer_audio"
      },
      "mode": {
        "name": "mode"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite textuelle positive."
      },
      "start_frame": {
        "name": "image_de_départ"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingLipSyncAudioToVideoNode": {
    "description": "Nœud de synchronisation labiale Kling. Synchronise les mouvements de la bouche dans un fichier vidéo avec le contenu audio d’un fichier audio.",
    "display_name": "Synchronisation labiale Kling : Vidéo avec audio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "video": {
        "name": "vidéo"
      },
      "voice_language": {
        "name": "langue de la voix"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "id_vidéo",
        "tooltip": null
      },
      "2": {
        "name": "durée",
        "tooltip": null
      }
    }
  },
  "KlingLipSyncTextToVideoNode": {
    "description": "Nœud Kling de synchronisation labiale texte vers vidéo. Synchronise les mouvements de la bouche dans un fichier vidéo avec une invite textuelle.",
    "display_name": "Synchronisation labiale Kling vidéo avec texte",
    "inputs": {
      "text": {
        "name": "texte",
        "tooltip": "Contenu textuel pour la génération de vidéo synchronisée labiale. Requis lorsque le mode est text2video. Longueur maximale : 120 caractères."
      },
      "video": {
        "name": "vidéo"
      },
      "voice": {
        "name": "voix"
      },
      "voice_speed": {
        "name": "vitesse de la voix",
        "tooltip": "Vitesse de la parole. Plage valide : 0,8~2,0, avec une précision d’un chiffre après la virgule."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "id_vidéo",
        "tooltip": null
      },
      "2": {
        "name": "durée",
        "tooltip": null
      }
    }
  },
  "KlingMotionControl": {
    "display_name": "Kling Contrôle du Mouvement",
    "inputs": {
      "character_orientation": {
        "name": "orientation_du_personnage",
        "tooltip": "Contrôle l'origine de l'orientation/position du personnage.\nvidéo : les mouvements, expressions, mouvements de caméra et orientation suivent la vidéo de référence de mouvement (autres détails via l'invite).\nimage : les mouvements et expressions suivent toujours la vidéo de référence de mouvement, mais l'orientation du personnage correspond à l'image de référence (caméra/autres détails via l'invite)."
      },
      "keep_original_sound": {
        "name": "garder_son_original"
      },
      "mode": {
        "name": "mode"
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite"
      },
      "reference_image": {
        "name": "image_de_référence"
      },
      "reference_video": {
        "name": "vidéo_de_référence",
        "tooltip": "Vidéo de référence de mouvement utilisée pour piloter le mouvement/l'expression.\nLes limites de durée dépendent de l'orientation_du_personnage :\n - image : 3–10s (max 10s)\n - vidéo : 3–30s (max 30s)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProEditVideoNode": {
    "description": "Éditez une vidéo existante avec le dernier modèle de Kling.",
    "display_name": "Kling Omni Édition Vidéo (Pro)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "keep_original_sound": {
        "name": "garder_son_original"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Une invite textuelle décrivant le contenu de la vidéo. Cela peut inclure des descriptions positives et négatives."
      },
      "reference_images": {
        "name": "images_de_référence",
        "tooltip": "Jusqu'à 4 images de référence supplémentaires."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo à éditer. La longueur de la vidéo de sortie sera la même."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProFirstLastFrameNode": {
    "description": "Utilisez une image de départ, une image de fin optionnelle ou des images de référence avec le dernier modèle Kling.",
    "display_name": "Kling Omni Première-Dernière-Image vers Vidéo (Pro)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "duration"
      },
      "end_frame": {
        "name": "end_frame",
        "tooltip": "Une image de fin optionnelle pour la vidéo. Cela ne peut pas être utilisé en même temps que 'reference_images'."
      },
      "first_frame": {
        "name": "first_frame"
      },
      "generate_audio": {
        "name": "générer l'audio",
        "tooltip": "Générer l'audio pour la vidéo. Pris en charge uniquement pour kling-v3-omni."
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une invite textuelle décrivant le contenu de la vidéo. Cela peut inclure des descriptions positives et négatives."
      },
      "reference_images": {
        "name": "reference_images",
        "tooltip": "Jusqu'à 6 images de référence supplémentaires."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "storyboards": {
        "name": "storyboards",
        "tooltip": "Générez une série de segments vidéo avec des prompts et des durées individuelles. Pris en charge uniquement pour kling-v3-omni."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProImageNode": {
    "description": "Créez ou modifiez des images avec le dernier modèle de Kling.",
    "display_name": "Kling Omni Image (Pro)",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une invite textuelle décrivant le contenu de l'image. Cela peut inclure des descriptions positives et négatives."
      },
      "reference_images": {
        "name": "reference_images",
        "tooltip": "Jusqu'à 10 images de référence supplémentaires."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "series_amount": {
        "name": "nombre de séries",
        "tooltip": "Générez une série d'images. Non pris en charge pour kling-image-o1."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProImageToVideoNode": {
    "description": "Utilisez jusqu'à 7 images de référence pour générer une vidéo avec le dernier modèle Kling.",
    "display_name": "Kling Omni Image vers Vidéo (Pro)",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "duration"
      },
      "generate_audio": {
        "name": "générer l'audio",
        "tooltip": "Générer l'audio pour la vidéo. Pris en charge uniquement pour kling-v3-omni."
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une invite textuelle décrivant le contenu de la vidéo. Cela peut inclure des descriptions positives et négatives."
      },
      "reference_images": {
        "name": "reference_images",
        "tooltip": "Jusqu'à 7 images de référence."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "storyboards": {
        "name": "storyboards",
        "tooltip": "Générez une série de segments vidéo avec des prompts et des durées individuelles. Pris en charge uniquement pour kling-v3-omni."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProTextToVideoNode": {
    "description": "Utilisez des invites textuelles pour générer des vidéos avec le dernier modèle Kling.",
    "display_name": "Kling Omni Texte vers Vidéo (Pro)",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "duration"
      },
      "generate_audio": {
        "name": "générer l'audio"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une invite textuelle décrivant le contenu de la vidéo. Cela peut inclure des descriptions positives et négatives."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "storyboards": {
        "name": "storyboards",
        "tooltip": "Générez une série de segments vidéo avec des prompts et des durées individuelles. Ignoré pour le modèle o1."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingOmniProVideoToVideoNode": {
    "description": "Utilisez une vidéo et jusqu'à 4 images de référence pour générer une vidéo avec le dernier modèle Kling.",
    "display_name": "Kling Omni Vidéo à Vidéo (Pro)",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "duration"
      },
      "keep_original_sound": {
        "name": "keep_original_sound"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une invite textuelle décrivant le contenu de la vidéo. Cela peut inclure des descriptions positives et négatives."
      },
      "reference_images": {
        "name": "reference_images",
        "tooltip": "Jusqu'à 4 images de référence supplémentaires."
      },
      "reference_video": {
        "name": "reference_video",
        "tooltip": "Vidéo à utiliser comme référence."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingStartEndFrameNode": {
    "description": "Générez une séquence vidéo qui effectue une transition entre les images de début et de fin que vous fournissez. Le nœud crée tous les cadres intermédiaires, produisant une transformation fluide du premier au dernier cadre.",
    "display_name": "Kling Début-Fin Image vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "cfg_scale": {
        "name": "cfg_scale"
      },
      "end_frame": {
        "name": "end_frame",
        "tooltip": "Image de référence - Contrôle de l'image de fin. URL ou chaîne encodée en Base64, ne doit pas dépasser 10 Mo, résolution d'au moins 300*300px. La Base64 ne doit pas inclure le préfixe data:image."
      },
      "mode": {
        "name": "mode",
        "tooltip": "La configuration à utiliser pour la génération vidéo selon le format : mode / durée / nom_du_modèle."
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite textuelle négative"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle positive"
      },
      "start_frame": {
        "name": "start_frame",
        "tooltip": "Image de référence - URL ou chaîne encodée en Base64, ne doit pas dépasser 10 Mo, résolution d'au moins 300*300px, ratio d'aspect entre 1:2.5 et 2.5:1. La Base64 ne doit pas inclure le préfixe data:image."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "video_id",
        "tooltip": null
      },
      "2": {
        "name": "duration",
        "tooltip": null
      }
    }
  },
  "KlingTextToVideoNode": {
    "description": "Nœud Kling Texte en Vidéo",
    "display_name": "Kling Texte en Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "cfg_scale": {
        "name": "cfg_scale"
      },
      "mode": {
        "name": "mode",
        "tooltip": "La configuration à utiliser pour la génération vidéo selon le format : mode / durée / nom_du_modèle."
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite texte négative"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite texte positive"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "video_id",
        "tooltip": null
      },
      "2": {
        "name": "duration",
        "tooltip": null
      }
    }
  },
  "KlingTextToVideoWithAudio": {
    "display_name": "Kling Texte en Vidéo avec Audio",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio"
      },
      "duration": {
        "name": "duration"
      },
      "generate_audio": {
        "name": "generate_audio"
      },
      "mode": {
        "name": "mode"
      },
      "model_name": {
        "name": "model_name"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle positive."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "KlingVideoExtendNode": {
    "description": "Nœud Kling Video Extend. Étend les vidéos créées par d'autres nœuds Kling. Le video_id est créé en utilisant d'autres nœuds Kling.",
    "display_name": "Kling Video Extend",
    "inputs": {
      "cfg_scale": {
        "name": "cfg_scale"
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite textuelle négative pour les éléments à éviter dans la vidéo étendue"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle positive pour guider l’extension de la vidéo"
      },
      "video_id": {
        "name": "video_id",
        "tooltip": "L’ID de la vidéo à étendre. Prend en charge les vidéos générées par texte-vers-vidéo, image-vers-vidéo et les opérations précédentes d’extension de vidéo. La durée totale ne peut pas dépasser 3 minutes après extension."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "video_id",
        "tooltip": null
      },
      "2": {
        "name": "duration",
        "tooltip": null
      }
    }
  },
  "KlingVideoNode": {
    "description": "Générez des vidéos avec Kling V3. Prend en charge le texte-vers-vidéo et l’image-vers-vidéo avec storyboard multi-invite optionnel et génération audio.",
    "display_name": "Kling 3.0 Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "generate_audio": {
        "name": "générer audio",
        "tooltip": "'kling-3.0-turbo' génère toujours de l'audio natif, donc l'option audio est ignorée."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Paramètres du modèle et de la génération."
      },
      "model_aspect_ratio": {
        "name": "ratio d’aspect"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "multi_shot": {
        "name": "multi_shot",
        "tooltip": "Générez une série de segments vidéo avec des invites et des durées individuelles."
      },
      "multi_shot_duration": {
        "name": "durée"
      },
      "multi_shot_negative_prompt": {
        "name": "invite_négative"
      },
      "multi_shot_prompt": {
        "name": "invite"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit le seed."
      },
      "start_frame": {
        "name": "image de départ",
        "tooltip": "Image de départ optionnelle. Lorsqu’elle est connectée, passe en mode image-vers-vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Krea2ImageNode": {
    "description": "Générez des images via Krea 2 — choisissez Medium (illustrations expressives) ou Large (photoréalisme expressif). Prend en charge un moodboard optionnel et jusqu'à 10 références de style d'image en chaîne.",
    "display_name": "Krea 2 Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Krea 2 Medium est idéal pour les illustrations expressives ; Krea 2 Large est idéal pour le photoréalisme expressif."
      },
      "model_aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "model_creativity": {
        "name": "créativité"
      },
      "model_moodboard_id": {
        "name": "moodboard_id"
      },
      "model_moodboard_strength": {
        "name": "force du moodboard"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour l'image."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire pour la reproductibilité."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Krea2StyleReferenceNode": {
    "description": "Ajoutez une référence de style d'image à une génération Krea 2. Chaînez plusieurs nœuds Krea 2 Référence de Style (max 10) et transmettez la sortie finale `style_reference` à Krea 2 Image. Chaque image est téléchargée dans le stockage ComfyAPI et transmise sous forme d'URL.",
    "display_name": "Krea 2 Référence de Style",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "Image de référence dont le style influence la génération."
      },
      "strength": {
        "name": "force",
        "tooltip": "Force de la référence ; des valeurs négatives inversent l'influence du style."
      },
      "style_reference": {
        "name": "style_reference",
        "tooltip": "Chaîne optionnelle de références de style entrantes ; ce nœud en ajoute une de plus."
      }
    },
    "outputs": {
      "0": {
        "name": "style_reference",
        "tooltip": null
      }
    }
  },
  "LTXAVTextEncoderLoader": {
    "description": "[Recettes]\n\nltxav : gemma 3 12B",
    "display_name": "Chargeur d'encodeur texte audio LTXV",
    "inputs": {
      "ckpt_name": {
        "name": "ckpt_name"
      },
      "device": {
        "name": "device"
      },
      "text_encoder": {
        "name": "text_encoder"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LTXVAddGuide": {
    "display_name": "LTXVAddGuide",
    "inputs": {
      "attention_mask": {
        "name": "attention_mask",
        "tooltip": "Masque spatial optionnel dans l’espace pixel. Contrôle l’influence du conditionnement par région via l’auto-attention, multipliée par la force."
      },
      "frame_idx": {
        "name": "indice_de_l'image",
        "tooltip": "Indice de l'image pour commencer le conditionnement. Pour les images uniques ou les vidéos de 1 à 8 images, toute valeur d'indice de l'image est acceptable. Pour les vidéos de 9 images ou plus, l'indice de l'image doit être divisible par 8, sinon il sera arrondi à la baisse au multiple de 8 le plus proche. Les valeurs négatives sont comptées à partir de la fin de la vidéo."
      },
      "iclora_parameters": {
        "name": "iclora_parameters",
        "tooltip": "Paramètres IC-LoRA optionnels provenant d’un nœud Get IC-LoRA Parameters. Utilisé pour ajuster le traitement des guides selon les besoins de certains IC-LoRA (ex. ceux avec un reference_downscale_factor > 1). Lorsqu’ils sont chaînés, chaque LTXVAddGuide utilise uniquement les paramètres qui lui sont connectés."
      },
      "image": {
        "name": "image",
        "tooltip": "Image ou vidéo pour conditionner la vidéo latente. Doit être 8*n + 1 images. Si la vidéo n'est pas 8*n + 1 images, elle sera coupée au plus proche 8*n + 1 images."
      },
      "latent": {
        "name": "latent"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positive"
      },
      "strength": {
        "name": "force"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "LTXVAudioVAEDecode": {
    "display_name": "Décodage Audio VAE LTXV",
    "inputs": {
      "audio_vae": {
        "name": "audio_vae",
        "tooltip": "Le modèle Audio VAE utilisé pour décoder le latent."
      },
      "samples": {
        "name": "samples",
        "tooltip": "Le latent à décoder."
      }
    },
    "outputs": {
      "0": {
        "name": "Audio",
        "tooltip": null
      }
    }
  },
  "LTXVAudioVAEEncode": {
    "display_name": "Encodage Audio VAE LTXV",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "L'audio à encoder."
      },
      "audio_vae": {
        "name": "audio_vae",
        "tooltip": "Le modèle Audio VAE à utiliser pour l'encodage."
      }
    },
    "outputs": {
      "0": {
        "name": "Audio Latent",
        "tooltip": null
      }
    }
  },
  "LTXVAudioVAELoader": {
    "display_name": "Chargeur Audio VAE LTXV",
    "inputs": {
      "ckpt_name": {
        "name": "ckpt_name",
        "tooltip": "Point de contrôle Audio VAE à charger."
      }
    },
    "outputs": {
      "0": {
        "name": "Audio VAE",
        "tooltip": null
      }
    }
  },
  "LTXVConcatAVLatent": {
    "description": "Fusionne un latent vidéo et un latent audio en un latent AV conjoint (tout modèle AV, ex. LTXV ou MiniMax H3).",
    "display_name": "Concaténation AV Latent LTXV",
    "inputs": {
      "audio_latent": {
        "name": "audio_latent"
      },
      "video_latent": {
        "name": "video_latent"
      }
    },
    "outputs": {
      "0": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "LTXVConditioning": {
    "display_name": "LTXVConditioning",
    "inputs": {
      "frame_rate": {
        "name": "frame_rate"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "LTXVContextWindows": {
    "description": "Définir les fenêtres de contexte pour les modèles de type LTXV.",
    "display_name": "Fenêtres de contexte LTXV",
    "inputs": {
      "closed_loop": {
        "name": "closed_loop",
        "tooltip": "Détermine si la boucle de la fenêtre de contexte doit être fermée ; applicable uniquement aux planifications en boucle."
      },
      "context_length": {
        "name": "context_length",
        "tooltip": "La longueur de la fenêtre de contexte en images réelles. Doit être 8*n + 1."
      },
      "context_overlap": {
        "name": "context_overlap",
        "tooltip": "Le recouvrement de la fenêtre de contexte en images réelles."
      },
      "context_schedule": {
        "name": "context_schedule",
        "tooltip": "Algorithme de planification dépendant de l'étape pour les fenêtres de contexte."
      },
      "context_stride": {
        "name": "context_stride",
        "tooltip": "Le pas de la fenêtre de contexte ; applicable uniquement aux planifications uniformes."
      },
      "freenoise": {
        "name": "freenoise",
        "tooltip": "Appliquer ou non le mélange de bruit FreeNoise, améliore la fusion des fenêtres."
      },
      "fuse_method": {
        "name": "fuse_method",
        "tooltip": "La méthode à utiliser pour fusionner les fenêtres de contexte."
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle auquel appliquer les fenêtres de contexte pendant l'échantillonnage."
      },
      "retain_first_frame": {
        "name": "retain_first_frame",
        "tooltip": "Conserver la première frame latente dans chaque fenêtre de contexte (peut aider à garder la référence initiale)."
      },
      "split_conds_to_windows": {
        "name": "split_conds_to_windows",
        "tooltip": "Séparer ou non les multiples conditionnements (créés par ConditionCombine) dans chaque fenêtre selon l'indice de région."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle avec fenêtres de contexte appliquées pendant l'échantillonnage."
      }
    }
  },
  "LTXVCropGuides": {
    "display_name": "LTXVCropGuides",
    "inputs": {
      "latent": {
        "name": "latent"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positive"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "LTXVEmptyLatentAudio": {
    "display_name": "Audio latent vide LTXV",
    "inputs": {
      "audio_vae": {
        "name": "audio_vae",
        "tooltip": "Le modèle Audio VAE dont obtenir la configuration."
      },
      "batch_size": {
        "name": "batch_size",
        "tooltip": "Le nombre d'échantillons audio latents dans le lot."
      },
      "frame_rate": {
        "name": "frame_rate",
        "tooltip": "Nombre d'images par seconde."
      },
      "frames_number": {
        "name": "frames_number",
        "tooltip": "Nombre d'images."
      }
    },
    "outputs": {
      "0": {
        "name": "Latent",
        "tooltip": null
      }
    }
  },
  "LTXVImgToVideo": {
    "display_name": "LTXVImgToVideo",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "height": {
        "name": "height"
      },
      "image": {
        "name": "image"
      },
      "length": {
        "name": "length"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "strength": {
        "name": "force"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "LTXVImgToVideoInplace": {
    "display_name": "LTXVImgToVideoInplace",
    "inputs": {
      "bypass": {
        "name": "contournement",
        "tooltip": "Ignorer le conditionnement."
      },
      "image": {
        "name": "image"
      },
      "latent": {
        "name": "latent"
      },
      "strength": {
        "name": "force"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "LTXVLatentUpsampler": {
    "display_name": "LTXVLatentUpsampler",
    "inputs": {
      "samples": {
        "name": "échantillons"
      },
      "upscale_model": {
        "name": "modèle_d’agrandissement"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LTXVPreprocess": {
    "display_name": "LTXVPreprocess",
    "inputs": {
      "image": {
        "name": "image"
      },
      "img_compression": {
        "name": "compression_d'image",
        "tooltip": "Quantité de compression à appliquer sur l'image."
      }
    },
    "outputs": {
      "0": {
        "name": "image_de_sortie",
        "tooltip": null
      }
    }
  },
  "LTXVReferenceAudio": {
    "description": "Définir un audio de référence pour le transfert d'identité de locuteur ID-LoRA. Encode un clip audio de référence dans le conditionnement et, en option, applique un guidage d'identité au modèle (passe supplémentaire sans référence, amplifiant l'effet d'identité du locuteur).",
    "display_name": "LTXV Reference Audio (ID-LoRA)",
    "inputs": {
      "audio_vae": {
        "name": "audio_vae",
        "tooltip": "LTXV Audio VAE pour l'encodage."
      },
      "end_percent": {
        "name": "pourcentage_fin",
        "tooltip": "Fin de la plage sigma où le guidage d'identité est actif."
      },
      "identity_guidance_scale": {
        "name": "échelle_guidage_identité",
        "tooltip": "Intensité du guidage d'identité. Effectue une passe supplémentaire sans référence à chaque étape pour amplifier l'identité du locuteur. Mettre à 0 pour désactiver (pas de passe supplémentaire)."
      },
      "model": {
        "name": "modèle"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "reference_audio": {
        "name": "audio_de_référence",
        "tooltip": "Clip audio de référence dont l'identité du locuteur sera transférée. ~5 secondes recommandées (durée d'entraînement). Des clips plus courts ou plus longs peuvent dégrader le transfert d'identité vocale."
      },
      "start_percent": {
        "name": "pourcentage_début",
        "tooltip": "Début de la plage sigma où le guidage d'identité est actif."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "positif",
        "tooltip": null
      },
      "2": {
        "name": "négatif",
        "tooltip": null
      }
    }
  },
  "LTXVScheduler": {
    "display_name": "LTXVScheduler",
    "inputs": {
      "base_shift": {
        "name": "décalage_base"
      },
      "latent": {
        "name": "latent"
      },
      "max_shift": {
        "name": "décalage_max"
      },
      "steps": {
        "name": "étapes"
      },
      "stretch": {
        "name": "étirement",
        "tooltip": "Étirez les sigmas pour être dans la plage [terminal, 1]."
      },
      "terminal": {
        "name": "terminal",
        "tooltip": "La valeur terminale des sigmas après étirement."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LTXVSeparateAVLatent": {
    "description": "LTXV Séparer AV Latent",
    "display_name": "LTXVSeparateAVLatent",
    "inputs": {
      "av_latent": {
        "name": "av_latent"
      }
    },
    "outputs": {
      "0": {
        "name": "latent_vidéo",
        "tooltip": null
      },
      "1": {
        "name": "latent_audio",
        "tooltip": null
      }
    }
  },
  "LaplaceScheduler": {
    "display_name": "LaplaceScheduler",
    "inputs": {
      "beta": {
        "name": "beta"
      },
      "mu": {
        "name": "mu"
      },
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      },
      "steps": {
        "name": "steps"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentAdd": {
    "display_name": "LatentAdd",
    "inputs": {
      "samples1": {
        "name": "samples1"
      },
      "samples2": {
        "name": "samples2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentApplyOperation": {
    "display_name": "LatentApplyOperation",
    "inputs": {
      "operation": {
        "name": "operation"
      },
      "samples": {
        "name": "samples"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentApplyOperationCFG": {
    "display_name": "LatentApplyOperationCFG",
    "inputs": {
      "model": {
        "name": "model"
      },
      "operation": {
        "name": "operation"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentBatch": {
    "display_name": "LatentBatch",
    "inputs": {
      "samples1": {
        "name": "échantillons1"
      },
      "samples2": {
        "name": "échantillons2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentBatchSeedBehavior": {
    "display_name": "Comportement de la Graine LatentBatch",
    "inputs": {
      "samples": {
        "name": "échantillons"
      },
      "seed_behavior": {
        "name": "comportement_de_graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentBlend": {
    "display_name": "Mélange Latent",
    "inputs": {
      "blend_factor": {
        "name": "facteur_de_mélange"
      },
      "samples1": {
        "name": "échantillons1"
      },
      "samples2": {
        "name": "échantillons2"
      }
    }
  },
  "LatentComposite": {
    "display_name": "Composite Latent",
    "inputs": {
      "feather": {
        "name": "plume"
      },
      "samples_from": {
        "name": "échantillons_de"
      },
      "samples_to": {
        "name": "échantillons_vers"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    }
  },
  "LatentCompositeMasked": {
    "display_name": "Composite Latent Masqué",
    "inputs": {
      "destination": {
        "name": "destination"
      },
      "mask": {
        "name": "masque"
      },
      "resize_source": {
        "name": "redimensionner_source"
      },
      "source": {
        "name": "source"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentConcat": {
    "display_name": "ConcaténationLatente",
    "inputs": {
      "dim": {
        "name": "dim"
      },
      "samples1": {
        "name": "échantillons1"
      },
      "samples2": {
        "name": "échantillons2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentCrop": {
    "display_name": "Couper Latent",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "samples": {
        "name": "échantillons"
      },
      "width": {
        "name": "largeur"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    }
  },
  "LatentCut": {
    "display_name": "CoupeLatente",
    "inputs": {
      "amount": {
        "name": "quantité"
      },
      "dim": {
        "name": "dim"
      },
      "index": {
        "name": "index"
      },
      "samples": {
        "name": "échantillons"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentCutToBatch": {
    "display_name": "LatentCutToBatch",
    "inputs": {
      "dim": {
        "name": "dim"
      },
      "samples": {
        "name": "samples"
      },
      "slice_size": {
        "name": "slice_size"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentFlip": {
    "display_name": "Retourner Latent",
    "inputs": {
      "flip_method": {
        "name": "méthode_de_retournement"
      },
      "samples": {
        "name": "échantillons"
      }
    }
  },
  "LatentFromBatch": {
    "display_name": "Latent De Batch",
    "inputs": {
      "batch_index": {
        "name": "index_de_batch"
      },
      "length": {
        "name": "longueur"
      },
      "samples": {
        "name": "échantillons"
      }
    }
  },
  "LatentInterpolate": {
    "display_name": "Interpoler Latent",
    "inputs": {
      "ratio": {
        "name": "ratio"
      },
      "samples1": {
        "name": "échantillons1"
      },
      "samples2": {
        "name": "échantillons2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentMultiply": {
    "display_name": "Multiplier Latent",
    "inputs": {
      "multiplier": {
        "name": "multiplicateur"
      },
      "samples": {
        "name": "échantillons"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentOperationSharpen": {
    "display_name": "Opération d'Affûtage Latent",
    "inputs": {
      "alpha": {
        "name": "alpha"
      },
      "sharpen_radius": {
        "name": "rayon_d'affûtage"
      },
      "sigma": {
        "name": "sigma"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentOperationTonemapReinhard": {
    "display_name": "Opération de Mappage de Tons Reinhard Latent",
    "inputs": {
      "multiplier": {
        "name": "multiplicateur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentRotate": {
    "display_name": "Tourner Latent",
    "inputs": {
      "rotation": {
        "name": "rotation"
      },
      "samples": {
        "name": "échantillons"
      }
    }
  },
  "LatentSubtract": {
    "display_name": "Soustraction Latente",
    "inputs": {
      "samples1": {
        "name": "samples1"
      },
      "samples2": {
        "name": "samples2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LatentUpscale": {
    "display_name": "Mise à l'échelle Latente",
    "inputs": {
      "crop": {
        "name": "recadrage"
      },
      "height": {
        "name": "hauteur"
      },
      "samples": {
        "name": "samples"
      },
      "upscale_method": {
        "name": "méthode_de_mise_à_l'échelle"
      },
      "width": {
        "name": "largeur"
      }
    }
  },
  "LatentUpscaleBy": {
    "display_name": "Mise à l'échelle Latente Par",
    "inputs": {
      "samples": {
        "name": "samples"
      },
      "scale_by": {
        "name": "mise_à_l'échelle_par"
      },
      "upscale_method": {
        "name": "méthode_de_mise_à_l'échelle"
      }
    }
  },
  "LatentUpscaleModelLoader": {
    "display_name": "Charger le Modèle d'Agrandissement Latent",
    "inputs": {
      "model_name": {
        "name": "model_name"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LazyCache": {
    "description": "Une version maison d'EasyCache - une version encore 'plus facile' d'EasyCache à implémenter. Fonctionne globalement moins bien qu'EasyCache, mais mieux dans certains cas rares ET une compatibilité universelle avec tout dans ComfyUI.",
    "display_name": "CacheParesseux",
    "inputs": {
      "end_percent": {
        "name": "pourcentage_fin",
        "tooltip": "L'étape d'échantillonnage relative pour terminer l'utilisation de CacheParesseux."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle auquel ajouter CacheParesseux."
      },
      "reuse_threshold": {
        "name": "seuil_réutilisation",
        "tooltip": "Le seuil pour réutiliser les étapes mises en cache."
      },
      "start_percent": {
        "name": "pourcentage_début",
        "tooltip": "L'étape d'échantillonnage relative pour commencer l'utilisation de CacheParesseux."
      },
      "verbose": {
        "name": "verbeux",
        "tooltip": "Indique s'il faut enregistrer des informations détaillées."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle avec CacheParesseux."
      }
    }
  },
  "Load3D": {
    "display_name": "Charger 3D",
    "inputs": {
      "clear": {},
      "height": {
        "name": "hauteur"
      },
      "image": {
        "name": "image"
      },
      "model_file": {
        "name": "fichier_modèle"
      },
      "upload 3d model": {},
      "upload extra resources": {},
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "image",
        "tooltip": null
      },
      "1": {
        "name": "mask",
        "tooltip": null
      },
      "2": {
        "name": "mesh_path",
        "tooltip": null
      },
      "3": {
        "name": "normal",
        "tooltip": null
      },
      "4": {
        "name": "camera_info",
        "tooltip": null
      },
      "5": {
        "name": "recording_video",
        "tooltip": null
      },
      "6": {
        "name": "model_3d",
        "tooltip": null
      },
      "7": {
        "name": "model_3d_info",
        "tooltip": null
      }
    }
  },
  "Load3DAdvanced": {
    "display_name": "Charger 3D (Avancé)",
    "inputs": {
      "height": {
        "name": "height"
      },
      "model_file": {
        "name": "model_file"
      },
      "viewport_state": {
        "name": "viewport_state"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "model_3d",
        "tooltip": null
      },
      "1": {
        "name": "model_3d_info",
        "tooltip": null
      },
      "2": {
        "name": "camera_info",
        "tooltip": null
      },
      "3": {
        "name": "width",
        "tooltip": null
      },
      "4": {
        "name": "height",
        "tooltip": null
      }
    }
  },
  "LoadAudio": {
    "display_name": "ChargerAudio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audioUI": {
        "name": "audioUI"
      },
      "upload": {
        "name": "choisissez le fichier à télécharger"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LoadBackgroundRemovalModel": {
    "display_name": "Charger le modèle de suppression d’arrière-plan",
    "inputs": {
      "bg_removal_name": {
        "name": "nom_du_modèle_de_suppression_arrière-plan",
        "tooltip": "Le modèle utilisé pour supprimer les arrière-plans des images"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_bg",
        "tooltip": null
      }
    }
  },
  "LoadDA3Model": {
    "display_name": "Charger Depth Anything 3",
    "inputs": {
      "model_name": {
        "name": "model_name"
      },
      "weight_dtype": {
        "name": "weight_dtype"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LoadImage": {
    "display_name": "Charger Image",
    "inputs": {
      "image": {
        "name": "image"
      },
      "upload": {
        "name": "choisissez le fichier à télécharger"
      }
    }
  },
  "LoadImageDataSetFromFolder": {
    "description": "Charger un jeu de données d'images à partir d'un dossier spécifié et retourner une liste d'images. Formats pris en charge : PNG, JPG, JPEG, WEBP.",
    "display_name": "Charger un Jeu de Données d'Images depuis un Dossier",
    "inputs": {
      "folder": {
        "name": "folder",
        "tooltip": "Le dossier depuis lequel charger les images."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Liste des images chargées"
      }
    }
  },
  "LoadImageMask": {
    "display_name": "Charger Image (comme Masque)",
    "inputs": {
      "channel": {
        "name": "canal"
      },
      "image": {
        "name": "image"
      },
      "upload": {
        "name": "choisissez le fichier à télécharger"
      }
    }
  },
  "LoadImageOutput": {
    "description": "Chargez une image à partir du dossier de sortie. Lorsque le bouton de rafraîchissement est cliqué, le nœud mettra à jour la liste des images et sélectionnera automatiquement la première image, permettant une itération facile.",
    "display_name": "Charger l'image (à partir des sorties)",
    "inputs": {
      "Auto-refresh after generation": {},
      "image": {
        "name": "image"
      },
      "refresh": {},
      "upload": {
        "name": "choisissez le fichier à télécharger"
      }
    }
  },
  "LoadImageTextDataSetFromFolder": {
    "description": "Charger un jeu de données de paires images et légendes textuelles à partir d'un dossier spécifié et les retourner sous forme de liste. Formats pris en charge : PNG, JPG, JPEG, WEBP.",
    "display_name": "Charger un Jeu de Données Images et Textes depuis un Dossier",
    "inputs": {
      "folder": {
        "name": "folder",
        "tooltip": "Le dossier depuis lequel charger les images."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Liste des images chargées"
      },
      "1": {
        "name": "texts",
        "tooltip": "Liste des légendes textuelles"
      }
    }
  },
  "LoadLatent": {
    "display_name": "ChargerLatent",
    "inputs": {
      "latent": {
        "name": "latent"
      }
    }
  },
  "LoadMediaPipeFaceLandmarker": {
    "display_name": "Charger MediaPipe Face Landmarker",
    "inputs": {
      "model_name": {
        "name": "model_name",
        "tooltip": "Face Landmarker safetensors depuis models/mediapipe/."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LoadMoGeModel": {
    "display_name": "Charger le modèle MoGe",
    "inputs": {
      "model_name": {
        "name": "model_name"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LoadTrainingDataset": {
    "description": "Charger un jeu de données d'entraînement encodé (latents + conditionnements) depuis le disque pour l'utiliser lors de l'entraînement.",
    "display_name": "Charger le jeu de données d'entraînement",
    "inputs": {
      "folder_name": {
        "name": "folder_name",
        "tooltip": "Nom du dossier contenant le jeu de données sauvegardé (dans le répertoire de sortie)."
      }
    },
    "outputs": {
      "0": {
        "name": "latents",
        "tooltip": "Liste de dictionnaires latents"
      },
      "1": {
        "name": "conditioning",
        "tooltip": "Liste de listes de conditionnement"
      }
    }
  },
  "LoadVideo": {
    "display_name": "Charger une vidéo",
    "inputs": {
      "file": {
        "name": "fichier"
      },
      "upload": {
        "name": "choisir un fichier à télécharger"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LoadVideoDataSetFromFolder": {
    "description": "Chargez un ensemble de vidéos à partir d’un dossier spécifié et renvoie une liste de vidéos. Formats pris en charge : MP4, AVI, MOV, WEBM, MKV, FLV.",
    "display_name": "Charger Vidéo (depuis dossier)",
    "inputs": {
      "folder": {
        "name": "dossier",
        "tooltip": "Le dossier contenant les fichiers vidéo."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéos",
        "tooltip": "Références vidéo paresseuses ; les images sont décodées uniquement lorsque nécessaire en aval."
      }
    }
  },
  "LoadVideoTextDataSetFromFolder": {
    "description": "Chargez un ensemble de paires vidéos et légendes textuelles à partir d’un dossier spécifié et les retourne sous forme de liste. Formats pris en charge : MP4, AVI, MOV, WEBM, MKV, FLV.",
    "display_name": "Charger Vidéo-Texte (depuis dossier)",
    "inputs": {
      "folder": {
        "name": "dossier",
        "tooltip": "Le dossier contenant les fichiers vidéo et les légendes .txt."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéos",
        "tooltip": "Références vidéo paresseuses ; les images sont décodées uniquement lorsque nécessaire en aval."
      },
      "1": {
        "name": "textes",
        "tooltip": "Liste des légendes textuelles."
      }
    }
  },
  "LoraLoader": {
    "description": "Les LoRAs sont utilisés pour modifier les modèles de diffusion et CLIP, modifiant la manière dont les latents sont débruités comme l'application de styles. Plusieurs nœuds LoRA peuvent être liés ensemble.",
    "display_name": "Charger LoRA",
    "inputs": {
      "clip": {
        "name": "clip",
        "tooltip": "Le modèle CLIP auquel le LoRA sera appliqué."
      },
      "lora_name": {
        "name": "lora_name",
        "tooltip": "Le nom du LoRA."
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle de diffusion auquel le LoRA sera appliqué."
      },
      "strength_clip": {
        "name": "strength_clip",
        "tooltip": "À quel point modifier le modèle CLIP. Cette valeur peut être négative."
      },
      "strength_model": {
        "name": "strength_model",
        "tooltip": "À quel point modifier le modèle de diffusion. Cette valeur peut être négative."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle de diffusion modifié."
      },
      "1": {
        "tooltip": "Le modèle CLIP modifié."
      }
    }
  },
  "LoraLoaderBypass": {
    "description": "Appliquer LoRA en mode bypass. Contrairement à LoRA classique, cela ne modifie pas les poids du modèle - à la place, le calcul LoRA est injecté lors du passage avant. Utile pour les scénarios d'entraînement.",
    "display_name": "Charger LoRA (Bypass) (Pour le débogage)",
    "inputs": {
      "clip": {
        "name": "clip",
        "tooltip": "Le modèle CLIP auquel le LoRA sera appliqué."
      },
      "lora_name": {
        "name": "lora_name",
        "tooltip": "Le nom du LoRA."
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle de diffusion auquel le LoRA sera appliqué."
      },
      "strength_clip": {
        "name": "strength_clip",
        "tooltip": "Intensité de modification du modèle CLIP. Cette valeur peut être négative."
      },
      "strength_model": {
        "name": "strength_model",
        "tooltip": "Intensité de modification du modèle de diffusion. Cette valeur peut être négative."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle de diffusion modifié."
      },
      "1": {
        "tooltip": "Le modèle CLIP modifié."
      }
    }
  },
  "LoraLoaderBypassModelOnly": {
    "description": "Appliquer LoRA en mode bypass. Contrairement à LoRA classique, cela ne modifie pas les poids du modèle - à la place, le calcul LoRA est injecté lors du passage avant. Utile pour les scénarios d'entraînement.",
    "display_name": "Charger LoRA (Bypass, Modèle Seulement) (pour le débogage)",
    "inputs": {
      "lora_name": {
        "name": "lora_name"
      },
      "model": {
        "name": "model"
      },
      "strength_model": {
        "name": "strength_model"
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle de diffusion modifié."
      }
    }
  },
  "LoraLoaderModelOnly": {
    "description": "Les LoRAs sont utilisés pour modifier les modèles de diffusion et CLIP, modifiant la manière dont les latents sont débruités comme l'application de styles. Plusieurs nœuds LoRA peuvent être liés ensemble.",
    "display_name": "LoraLoaderModelOnly",
    "inputs": {
      "lora_name": {
        "name": "lora_name"
      },
      "model": {
        "name": "model"
      },
      "strength_model": {
        "name": "strength_model"
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle de diffusion modifié."
      }
    }
  },
  "LoraModelLoader": {
    "display_name": "Charger le modèle LoRA",
    "inputs": {
      "bypass": {
        "name": "bypass",
        "tooltip": "Lorsqu'il est activé, applique LoRA en mode bypass sans modifier les poids du modèle de base. Utile pour l'entraînement et lorsque les poids du modèle sont déchargés."
      },
      "lora": {
        "name": "lora",
        "tooltip": "Le modèle LoRA à appliquer au modèle de diffusion."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle de diffusion auquel le LoRA sera appliqué."
      },
      "strength_model": {
        "name": "intensité_modèle",
        "tooltip": "Intensité de modification du modèle de diffusion. Cette valeur peut être négative."
      }
    },
    "outputs": {
      "0": {
        "name": "model",
        "tooltip": "Le modèle de diffusion modifié."
      }
    }
  },
  "LoraSave": {
    "display_name": "Extraire et Sauvegarder Lora",
    "inputs": {
      "bias_diff": {
        "name": "bias_diff"
      },
      "filename_prefix": {
        "name": "filename_prefix"
      },
      "lora_type": {
        "name": "lora_type"
      },
      "model_diff": {
        "name": "model_diff",
        "tooltip": "La sortie ModelSubtract à convertir en lora."
      },
      "rank": {
        "name": "rank"
      },
      "text_encoder_diff": {
        "name": "text_encoder_diff",
        "tooltip": "La sortie CLIPSubtract à convertir en lora."
      }
    }
  },
  "LossGraphNode": {
    "display_name": "Tracer le graphique de perte",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_nom_fichier",
        "tooltip": "Préfixe pour l'image du graphique de perte sauvegardée."
      },
      "loss": {
        "name": "perte",
        "tooltip": "Carte de perte provenant du nœud d'entraînement."
      }
    }
  },
  "LotusConditioning": {
    "display_name": "LotusConditioning",
    "outputs": {
      "0": {
        "name": "conditionnement",
        "tooltip": null
      }
    }
  },
  "LtxvApiImageToVideo": {
    "description": "Vidéos de qualité professionnelle avec durée et résolution personnalisables basées sur l'image de départ.",
    "display_name": "LTXV Image vers Vidéo",
    "inputs": {
      "duration": {
        "name": "durée"
      },
      "fps": {
        "name": "ips"
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Lorsque activé, la vidéo générée inclura un audio généré par IA correspondant à la scène."
      },
      "image": {
        "name": "image",
        "tooltip": "Première image à utiliser pour la vidéo."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt"
      },
      "resolution": {
        "name": "résolution"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LtxvApiTextToVideo": {
    "description": "Vidéos de qualité professionnelle avec durée et résolution personnalisables.",
    "display_name": "LTXV Texte vers Vidéo",
    "inputs": {
      "duration": {
        "name": "durée"
      },
      "fps": {
        "name": "ips"
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Lorsque activé, la vidéo générée inclura un audio généré par IA correspondant à la scène."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt"
      },
      "resolution": {
        "name": "résolution"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaConceptsNode": {
    "description": "Contient un ou plusieurs Concepts de Caméra à utiliser avec les nœuds Luma Text to Video et Luma Image to Video.",
    "display_name": "Luma Concepts",
    "inputs": {
      "concept1": {
        "name": "concept1"
      },
      "concept2": {
        "name": "concept2"
      },
      "concept3": {
        "name": "concept3"
      },
      "concept4": {
        "name": "concept4"
      },
      "luma_concepts": {
        "name": "luma_concepts",
        "tooltip": "Concepts de Caméra optionnels à ajouter à ceux sélectionnés ici."
      }
    },
    "outputs": {
      "0": {
        "name": "luma_concepts",
        "tooltip": null
      }
    }
  },
  "LumaImageEditNode2": {
    "description": "Modifiez une image existante avec une invite textuelle en utilisant le modèle Luma UNI-1.",
    "display_name": "Luma UNI-1 Image Edit",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la modification."
      },
      "model_style": {
        "name": "style"
      },
      "model_web_search": {
        "name": "recherche_web"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description de la modification souhaitée. 1 à 6000 caractères."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "source": {
        "name": "source",
        "tooltip": "Image source à modifier."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaImageModifyNode": {
    "description": "Modifie les images de manière synchrone en fonction du prompt et du format d'image.",
    "display_name": "Luma Image vers Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "image_weight": {
        "name": "poids de l'image",
        "tooltip": "Poids de l'image ; plus la valeur est proche de 1.0, moins l'image sera modifiée."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d'image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaImageNode": {
    "description": "Génère des images de manière synchrone à partir d'une invite et d'un ratio d'aspect.",
    "display_name": "Luma Texte vers Image",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect"
      },
      "character_image": {
        "name": "image_de_personnage",
        "tooltip": "Images de référence de personnage ; peut être un lot de plusieurs, jusqu'à 4 images peuvent être prises en compte."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image_luma_ref": {
        "name": "référence_image_luma",
        "tooltip": "Connexion au nœud de référence Luma pour influencer la génération avec des images d'entrée ; jusqu'à 4 images peuvent être prises en compte."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d'image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes, quelle que soit la graine."
      },
      "style_image": {
        "name": "image_de_style",
        "tooltip": "Image de référence de style ; seule 1 image sera utilisée."
      },
      "style_image_weight": {
        "name": "poids_image_de_style",
        "tooltip": "Poids de l'image de style. Ignoré si aucune image de style n'est fournie."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaImageNode2": {
    "description": "Générez des images à partir de texte en utilisant le modèle Luma UNI-1.",
    "display_name": "Luma UNI-1 Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération."
      },
      "model_aspect_ratio": {
        "name": "rapport_d’aspect"
      },
      "model_style": {
        "name": "style"
      },
      "model_web_search": {
        "name": "recherche_web"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de l’image souhaitée. 1 à 6000 caractères."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaImageToVideoNode": {
    "description": "Génère des vidéos de manière synchrone à partir d'un prompt, d'images d'entrée et de la taille de sortie.",
    "display_name": "Luma Image to Video",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "first_image": {
        "name": "première_image",
        "tooltip": "Première image de la vidéo générée."
      },
      "last_image": {
        "name": "dernière_image",
        "tooltip": "Dernière image de la vidéo générée."
      },
      "loop": {
        "name": "boucle"
      },
      "luma_concepts": {
        "name": "luma_concepts",
        "tooltip": "Concepts de caméra optionnels pour dicter le mouvement de la caméra via le nœud Luma Concepts."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération de la vidéo"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "LumaRay32ExtendVideoNode": {
    "description": "Prolongez une génération Ray 3.2 précédente vers l’avant (continuer après) ou vers l’arrière (ajouter avant). Connectez la sortie generation_id d’un nœud Luma Ray 3.2 précédent. Les extensions durent toujours 5 secondes.",
    "display_name": "Luma Ray 3.2 Extension Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "direction": {
        "name": "direction",
        "tooltip": "Avant continue après le clip précédent ; arrière est ajouté avant celui-ci."
      },
      "direction_loop": {
        "name": "boucle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour le nouveau contenu."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "source_generation_id": {
        "name": "source_generation_id",
        "tooltip": "generation_id de la vidéo Ray 3.2 précédente à prolonger. Connectez la sortie generation_id d’un autre nœud Luma Ray 3.2."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "generation_id",
        "tooltip": null
      }
    }
  },
  "LumaRay32ImageToVideoNode": {
    "description": "Générez une vidéo à partir d’une image de début et/ou de fin en utilisant le modèle Ray 3.2 de Luma. Les générations ancrées sur une image durent toujours 5 secondes.",
    "display_name": "Luma Ray 3.2 Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "end_frame": {
        "name": "end_frame",
        "tooltip": "Dernière image de la vidéo générée."
      },
      "loop": {
        "name": "boucle",
        "tooltip": "Rendez la vidéo en boucle parfaite. Non disponible si une end_frame est définie."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour la génération vidéo."
      },
      "resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "start_frame": {
        "name": "start_frame",
        "tooltip": "Première image de la vidéo générée."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "generation_id",
        "tooltip": null
      }
    }
  },
  "LumaRay32KeyframeNode": {
    "description": "Ancrez une image guide à une position sur la timeline de la vidéo générée par Ray 3.2. Connectez ce nœud à l’entrée 'keyframes' du nœud Luma Ray 3.2 Images Clés vers Vidéo ; enchaînez-en plusieurs via l’entrée optionnelle 'keyframes' ci-dessous.",
    "display_name": "Luma Ray 3.2 Image Clé",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "Image guide à placer au moment choisi sur la vidéo générée."
      },
      "keyframes": {
        "name": "keyframes",
        "tooltip": "Images clés précédentes optionnelles à enchaîner avec celle-ci."
      },
      "position": {
        "name": "position",
        "tooltip": "Comment placer cette image sur la timeline de la vidéo générée."
      },
      "position_fraction": {
        "name": "fraction"
      }
    },
    "outputs": {
      "0": {
        "name": "keyframes",
        "tooltip": null
      }
    }
  },
  "LumaRay32KeyframesToVideoNode": {
    "description": "Générez une vidéo qui interpole une séquence d’images guides, chacune étant ancrée à une position sur la timeline, en utilisant Luma Ray 3.2. Construisez la séquence avec des nœuds d’images clés Luma Ray 3.2 (au moins 2).",
    "display_name": "Luma Ray 3.2 : Images clés en vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "keyframes": {
        "name": "images clés",
        "tooltip": "Séquence d’images clés provenant des nœuds d’images clés Luma Ray 3.2 (au moins 2)."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour la génération de la vidéo."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "identifiant_génération",
        "tooltip": null
      }
    }
  },
  "LumaRay32TextToVideoNode": {
    "description": "Générez une vidéo à partir d’une invite textuelle en utilisant le modèle Ray 3.2 de Luma.",
    "display_name": "Luma Ray 3.2 : Texte en vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio d’aspect"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "loop": {
        "name": "boucle",
        "tooltip": "Rend la vidéo en boucle parfaite. Disponible uniquement pour une durée de 5s."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour la génération de la vidéo."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "identifiant_génération",
        "tooltip": null
      }
    }
  },
  "LumaRay32VideoEditNode": {
    "description": "Re-générez une vidéo existante avec une nouvelle invite en utilisant Luma Ray 3.2 (restyliser, rééclairer, ajouter ou supprimer des éléments) tout en conservant le mouvement original. Vidéo source jusqu’à 18 secondes ; la vidéo éditée conserve la durée de la source.",
    "display_name": "Luma Ray 3.2 : Édition vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Décrit la modification souhaitée."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      },
      "strength": {
        "name": "intensité",
        "tooltip": "Degré de préservation ou de réinvention de la source. 'auto' laisse Ray 3.2 choisir ; adhere_* préserve au maximum, flex_* est équilibré, reimagine_* modifie le plus."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo source à éditer. Jusqu’à 18 secondes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "identifiant_génération",
        "tooltip": null
      }
    }
  },
  "LumaRay32VideoReframeNode": {
    "description": "Modifiez le format d'image d'une vidéo existante, en utilisant Luma Ray 3.2 pour remplir les nouvelles zones exposées de la toile. Vidéo source jusqu'à 30 secondes. Facturation à la seconde de sortie.",
    "display_name": "Luma Ray 3.2 Recadrage Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Décrit comment les nouvelles zones exposées de la toile doivent être remplies."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo source à recadrer. Jusqu'à 30 secondes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "identifiant_génération",
        "tooltip": null
      }
    }
  },
  "LumaReferenceNode": {
    "description": "Contient une image et un poids à utiliser avec le nœud Luma Générer Image.",
    "display_name": "Référence Luma",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "Image à utiliser comme référence."
      },
      "luma_ref": {
        "name": "luma_ref"
      },
      "weight": {
        "name": "poids",
        "tooltip": "Poids de la référence d'image."
      }
    },
    "outputs": {
      "0": {
        "name": "luma_ref",
        "tooltip": null
      }
    }
  },
  "LumaVideoNode": {
    "description": "Génère des vidéos de manière synchrone à partir du prompt et de la taille de sortie.",
    "display_name": "Luma Texte vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "loop": {
        "name": "boucle"
      },
      "luma_concepts": {
        "name": "luma_concepts",
        "tooltip": "Concepts de caméra optionnels pour dicter le mouvement de la caméra via le nœud Luma Concepts."
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération de la vidéo"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MagnificImageRelightNode": {
    "description": "Reluminez une image avec des ajustements de lumière et un transfert de lumière basé sur une référence en option.",
    "display_name": "Magnific Relumination d’Image",
    "inputs": {
      "advanced_settings": {
        "name": "advanced_settings",
        "tooltip": "Options de réglage fin pour un contrôle avancé de l’éclairage."
      },
      "change_background": {
        "name": "change_background",
        "tooltip": "Modifie l’arrière-plan selon le prompt/la référence."
      },
      "image": {
        "name": "image",
        "tooltip": "L’image à reluminer."
      },
      "interpolate_from_original": {
        "name": "interpolate_from_original",
        "tooltip": "Restreint la liberté de génération pour correspondre davantage à l’original."
      },
      "light_transfer_strength": {
        "name": "light_transfer_strength",
        "tooltip": "Intensité de l’application du transfert de lumière."
      },
      "preserve_details": {
        "name": "preserve_details",
        "tooltip": "Préserve la texture et les détails fins de l’original."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Instructions descriptives pour l’éclairage. Prend en charge la notation d’emphase (1-1.4)."
      },
      "reference_image": {
        "name": "reference_image",
        "tooltip": "Image de référence optionnelle pour transférer la lumière."
      },
      "style": {
        "name": "style",
        "tooltip": "Préférence stylistique de sortie."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MagnificImageSkinEnhancerNode": {
    "description": "Amélioration de la peau pour les portraits avec plusieurs modes de traitement.",
    "display_name": "Magnific Améliorateur de Peau d’Image",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "Le portrait à améliorer."
      },
      "mode": {
        "name": "mode",
        "tooltip": "Mode de traitement : créatif pour une amélioration artistique, fidèle pour préserver l’apparence originale, flexible pour une optimisation ciblée."
      },
      "sharpen": {
        "name": "sharpen",
        "tooltip": "Niveau d’intensité de la netteté."
      },
      "smart_grain": {
        "name": "smart_grain",
        "tooltip": "Niveau d’intensité du grain intelligent."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MagnificImageStyleTransferNode": {
    "description": "Transférez le style d'une image de référence vers votre image d'entrée.",
    "display_name": "Transfert de style d'image Magnific",
    "inputs": {
      "engine": {
        "name": "engine",
        "tooltip": "Sélection du moteur de traitement."
      },
      "fixed_generation": {
        "name": "fixed_generation",
        "tooltip": "Lorsque désactivé, chaque génération introduit un certain degré d'aléatoire, produisant des résultats plus variés."
      },
      "flavor": {
        "name": "flavor",
        "tooltip": "Type de transfert de style."
      },
      "image": {
        "name": "image",
        "tooltip": "L'image à laquelle appliquer le transfert de style."
      },
      "portrait_mode": {
        "name": "portrait_mode",
        "tooltip": "Activer le mode portrait pour les améliorations du visage."
      },
      "prompt": {
        "name": "prompt"
      },
      "reference_image": {
        "name": "reference_image",
        "tooltip": "L'image de référence dont extraire le style."
      },
      "structure_strength": {
        "name": "structure_strength",
        "tooltip": "Préserve la structure de l'image originale."
      },
      "style_strength": {
        "name": "style_strength",
        "tooltip": "Pourcentage d'intensité du style."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MagnificImageUpscalerCreativeNode": {
    "description": "Amélioration guidée par prompt, stylisation et agrandissement 2x/4x/8x/16x. Sortie maximale : 25,3 mégapixels.",
    "display_name": "Magnific Image Upscale (Creative)",
    "inputs": {
      "auto_downscale": {
        "name": "réduction automatique",
        "tooltip": "Réduit automatiquement l’image d’entrée si la sortie dépasse la limite maximale de pixels."
      },
      "creativity": {
        "name": "créativité"
      },
      "engine": {
        "name": "moteur"
      },
      "fractality": {
        "name": "fractalité",
        "tooltip": "La force du prompt et la complexité par pixel carré."
      },
      "hdr": {
        "name": "hdr",
        "tooltip": "Le niveau de définition et de détail."
      },
      "image": {
        "name": "image"
      },
      "optimized_for": {
        "name": "optimisé pour"
      },
      "prompt": {
        "name": "prompt"
      },
      "resemblance": {
        "name": "ressemblance",
        "tooltip": "Le niveau de ressemblance avec l’image originale."
      },
      "scale_factor": {
        "name": "facteur d’agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MagnificImageUpscalerPreciseV2Node": {
    "description": "Agrandissement haute fidélité avec contrôle précis de la netteté, du grain et des détails. Sortie maximale : 10060×10060 pixels.",
    "display_name": "Magnific Image Upscale (Precise V2)",
    "inputs": {
      "auto_downscale": {
        "name": "réduction automatique",
        "tooltip": "Réduit automatiquement l’image d’entrée si la sortie dépasse la résolution maximale."
      },
      "flavor": {
        "name": "style",
        "tooltip": "Style de traitement : sublime pour un usage général, photo pour les photographies, photo_denoiser pour les photos bruitées."
      },
      "image": {
        "name": "image"
      },
      "scale_factor": {
        "name": "facteur d’agrandissement"
      },
      "sharpen": {
        "name": "netteté",
        "tooltip": "Intensité de la netteté de l’image. Des valeurs plus élevées augmentent la définition des contours et la clarté."
      },
      "smart_grain": {
        "name": "grain intelligent",
        "tooltip": "Amélioration intelligente du grain/de la texture pour éviter que l’image ne paraisse trop lisse ou artificielle."
      },
      "ultra_detail": {
        "name": "ultra-détail",
        "tooltip": "Contrôle les détails fins, les textures et les micro-détails ajoutés lors de l’agrandissement."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Mahiro": {
    "description": "Modifiez le guidage pour qu'il se concentre davantage sur la 'direction' de l'invite positive plutôt que sur la différence avec l'invite négative.",
    "display_name": "Mahiro est si mignonne qu'elle mérite une meilleure fonction de guidage!! (。・ω・。)",
    "inputs": {
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_modifié",
        "tooltip": null
      }
    }
  },
  "MakeTrainingDataset": {
    "description": "Encoder les images avec VAE et les textes avec CLIP pour créer un jeu de données d'entraînement de latents et de conditionnements.",
    "display_name": "Créer un jeu de données d’entraînement",
    "inputs": {
      "clip": {
        "name": "clip",
        "tooltip": "Modèle CLIP pour encoder le texte en conditionnement."
      },
      "images": {
        "name": "images",
        "tooltip": "Liste d’images à encoder."
      },
      "texts": {
        "name": "textes",
        "tooltip": "Liste de légendes textuelles. Peut être de longueur n (correspondant aux images), 1 (répété pour tous), ou omis (utilise une chaîne vide)."
      },
      "vae": {
        "name": "vae",
        "tooltip": "Modèle VAE pour encoder les images en latents."
      }
    },
    "outputs": {
      "0": {
        "name": "latents",
        "tooltip": "Liste de dictionnaires latents"
      },
      "1": {
        "name": "conditionnement",
        "tooltip": "Liste de listes de conditionnement"
      }
    }
  },
  "ManualSigmas": {
    "display_name": "Sigmas manuels",
    "inputs": {
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MaskComposite": {
    "display_name": "MaskComposite",
    "inputs": {
      "destination": {
        "name": "destination"
      },
      "operation": {
        "name": "opération"
      },
      "source": {
        "name": "source"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MaskPreview": {
    "description": "Enregistre les images d'entrée dans votre répertoire de sortie ComfyUI.",
    "display_name": "MaskPreview",
    "inputs": {
      "mask": {
        "name": "mask"
      }
    },
    "outputs": {
      "0": {
        "name": "mask",
        "tooltip": null
      }
    }
  },
  "MaskToImage": {
    "display_name": "Convertir le masque en image",
    "inputs": {
      "mask": {
        "name": "masque"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MediaPipeFaceLandmarker": {
    "description": "Détecte les points de repère du visage à l'aide du modèle MediaPipe.",
    "display_name": "MediaPipe Face Landmarker",
    "inputs": {
      "detector_variant": {
        "name": "detector_variant",
        "tooltip": "Plage du détecteur de visage. 'short' est optimisé pour les visages en gros plan (à moins de ~2 m de la caméra) ; 'full' couvre des visages plus éloignés/petits (jusqu'à ~5 m) mais est plus lent. 'both' exécute les deux détecteurs et conserve celui qui a trouvé le plus de visages par image (coût de détection ~2×)."
      },
      "face_detection_model": {
        "name": "face_detection_model"
      },
      "image": {
        "name": "image"
      },
      "min_confidence": {
        "name": "min_confidence",
        "tooltip": "Seuil de score BlazeFace. Diminuez pour détecter les petits visages ou ceux partiellement cachés."
      },
      "missing_frame_fallback": {
        "name": "missing_frame_fallback",
        "tooltip": "Comportement par image lorsque la détection échoue dans un lot. 'empty' laisse l'image sans visage. 'previous' copie la dernière détection réussie. 'interpolate' interpole les points de repère/boîte englobante/blendshapes entre les images réussies encadrantes. Multi-visage : associe les visages entre les images par appariement glouton du centre de la boîte englobante."
      },
      "num_faces": {
        "name": "num_faces",
        "tooltip": "Nombre maximal de visages à retourner par image. 0 = pas de limite (retourne tous les visages détectés)."
      }
    },
    "outputs": {
      "0": {
        "name": "face_landmarks",
        "tooltip": null
      },
      "1": {
        "name": "bboxes",
        "tooltip": null
      }
    }
  },
  "MediaPipeFaceMask": {
    "description": "Dessine un masque à partir des points de repère du visage.",
    "display_name": "MediaPipe Face Mask",
    "inputs": {
      "face_landmarks": {
        "name": "face_landmarks"
      },
      "regions": {
        "name": "regions",
        "tooltip": "'all' = union de face_oval+lips+eyes+irises (qui se réduit à face_oval car il englobe le reste). 'custom' = activez chaque région individuellement pour des combinaisons comme lips+eyes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MediaPipeFaceMeshVisualize": {
    "description": "Dessine le maillage des points de repère du visage sur l'image d'entrée.",
    "display_name": "Visualisation du maillage facial MediaPipe",
    "inputs": {
      "color": {
        "name": "color"
      },
      "connections": {
        "name": "connections",
        "tooltip": "'all' = oval+eyes+brows+lips+irises+nose. 'fill' = polygone face_oval plein (masque de silhouette). 'custom' = activez chaque caractéristique individuellement (y compris 'tesselation', le fil de fer complet de 2547 arêtes)."
      },
      "face_landmarks": {
        "name": "face_landmarks"
      },
      "image": {
        "name": "image",
        "tooltip": "Si non connecté, une toile noire sera utilisée."
      },
      "point_size": {
        "name": "point_size",
        "tooltip": "Rayon des points de repère en pixels. 0 désactive le tracé des points."
      },
      "thickness": {
        "name": "thickness",
        "tooltip": "Épaisseur des lignes de contour en pixels. 0 désactive le tracé des contours."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MergeImageLists": {
    "description": "Concaténer plusieurs listes d'images en une seule.",
    "display_name": "Fusionner les listes d’images",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Liste d’images à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "MergeSplat": {
    "description": "Concatène n'importe quel nombre de splats gaussiens en un seul. L'union de plusieurs décodages du même latent avec différentes graines densifie la surface, ce qui peut améliorer la qualité de la surface lors du maillage.",
    "display_name": "Fusionner les Splats",
    "inputs": {
      "splats": {
        "name": "splats"
      }
    },
    "outputs": {
      "0": {
        "name": "splat",
        "tooltip": null
      }
    }
  },
  "MergeTextLists": {
    "display_name": "Fusionner les listes de textes",
    "inputs": {
      "texts": {
        "name": "textes",
        "tooltip": "Liste de textes à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "MeshyAnimateModelNode": {
    "description": "Appliquez une action d’animation spécifique à un personnage déjà riggé.",
    "display_name": "Meshy : Animer le modèle",
    "inputs": {
      "action_id": {
        "name": "action_id",
        "tooltip": "Visitez https://docs.meshy.ai/en/api/animation-library pour la liste des valeurs disponibles."
      },
      "rig_task_id": {
        "name": "rig_task_id"
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      },
      "2": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyImageToModelNode": {
    "display_name": "Meshy : Image vers modèle",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "model"
      },
      "pose_mode": {
        "name": "pose_mode",
        "tooltip": "Spécifiez le mode de pose pour le modèle généré."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      },
      "should_remesh": {
        "name": "should_remesh",
        "tooltip": "Si défini sur faux, retourne un maillage triangulaire non traité."
      },
      "should_remesh_target_polycount": {
        "name": "target_polycount"
      },
      "should_remesh_topology": {
        "name": "topology"
      },
      "should_texture": {
        "name": "should_texture",
        "tooltip": "Détermine si des textures sont générées. Si défini sur faux, la phase de texturage est ignorée et un maillage sans textures est retourné."
      },
      "should_texture_enable_pbr": {
        "name": "enable_pbr"
      },
      "should_texture_texture_prompt": {
        "name": "texture_prompt"
      },
      "symmetry_mode": {
        "name": "symmetry_mode"
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "meshy_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyMultiImageToModelNode": {
    "display_name": "Meshy : Multi-image vers modèle",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "images": {
        "name": "images"
      },
      "model": {
        "name": "model"
      },
      "pose_mode": {
        "name": "pose_mode",
        "tooltip": "Spécifiez le mode de pose pour le modèle généré."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      },
      "should_remesh": {
        "name": "should_remesh",
        "tooltip": "Si défini sur faux, retourne un maillage triangulaire non traité."
      },
      "should_remesh_target_polycount": {
        "name": "target_polycount"
      },
      "should_remesh_topology": {
        "name": "topology"
      },
      "should_texture": {
        "name": "should_texture",
        "tooltip": "Détermine si des textures sont générées. Si défini sur faux, la phase de texturage est ignorée et un maillage sans textures est retourné."
      },
      "should_texture_enable_pbr": {
        "name": "enable_pbr"
      },
      "should_texture_texture_prompt": {
        "name": "texture_prompt"
      },
      "symmetry_mode": {
        "name": "symmetry_mode"
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "meshy_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyRefineNode": {
    "description": "Affinez un modèle brouillon précédemment créé.",
    "display_name": "Meshy : Affiner le modèle brouillon",
    "inputs": {
      "enable_pbr": {
        "name": "activer_pbr",
        "tooltip": "Générer des cartes PBR (métallique, rugosité, normale) en plus de la couleur de base. Remarque : cela doit être désactivé lors de l’utilisation du style Sculpture, car le style Sculpture génère ses propres cartes PBR."
      },
      "meshy_task_id": {
        "name": "meshy_task_id"
      },
      "model": {
        "name": "modèle"
      },
      "texture_image": {
        "name": "image_texture",
        "tooltip": "Seul l’un de 'texture_image' ou 'texture_prompt' peut être utilisé à la fois."
      },
      "texture_prompt": {
        "name": "invite_texture",
        "tooltip": "Fournissez une invite textuelle pour guider le processus de texturage. Maximum 600 caractères. Ne peut pas être utilisé en même temps que 'texture_image'."
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "meshy_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyRigModelNode": {
    "description": "Fournit un personnage riggé dans des formats standards. L’auto-rigging n’est actuellement pas adapté aux maillages non texturés, aux assets non humanoïdes ou aux assets humanoïdes avec une structure de membres et de corps peu claire.",
    "display_name": "Meshy : Rig du modèle",
    "inputs": {
      "height_meters": {
        "name": "hauteur_mètres",
        "tooltip": "La hauteur approximative du modèle de personnage en mètres. Cela aide à l’échelle et à la précision du rigging."
      },
      "meshy_task_id": {
        "name": "meshy_task_id"
      },
      "texture_image": {
        "name": "image_texture",
        "tooltip": "L’image de texture couleur de base UV-dépliée du modèle."
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "rig_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyTextToModelNode": {
    "display_name": "Meshy : Texte vers modèle",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "pose_mode": {
        "name": "mode_pose",
        "tooltip": "Spécifiez le mode de pose pour le modèle généré."
      },
      "prompt": {
        "name": "invite"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "should_remesh": {
        "name": "doit_remesher",
        "tooltip": "Si désactivé, retourne un maillage triangulaire non traité."
      },
      "should_remesh_target_polycount": {
        "name": "cible_polygones"
      },
      "should_remesh_topology": {
        "name": "topologie"
      },
      "style": {
        "name": "style"
      },
      "symmetry_mode": {
        "name": "mode_symétrie"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "meshy_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MeshyTextureNode": {
    "display_name": "Meshy : Modèle de texture",
    "inputs": {
      "enable_original_uv": {
        "name": "activer_uv_original",
        "tooltip": "Utiliser l’UV original du modèle au lieu de générer de nouveaux UV. Lorsque cette option est activée, Meshy préserve les textures existantes du modèle importé. Si le modèle ne possède pas d’UV original, la qualité du résultat peut être moins bonne."
      },
      "image_style": {
        "name": "style_image",
        "tooltip": "Une image 2D pour guider le processus de texturisation. Ne peut pas être utilisée en même temps que « text_style_prompt »."
      },
      "meshy_task_id": {
        "name": "meshy_task_id"
      },
      "model": {
        "name": "modèle"
      },
      "pbr": {
        "name": "pbr"
      },
      "text_style_prompt": {
        "name": "invite_style_texte",
        "tooltip": "Décrivez le style de texture souhaité pour l’objet en utilisant du texte. 600 caractères maximum. Ne peut pas être utilisé en même temps que « image_style »."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "meshy_task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      },
      "3": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "MiniMaxH3ImageToVideo": {
    "display_name": "MiniMax H3 Image vers Vidéo",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "first_frame": {
        "name": "première_image"
      },
      "height": {
        "name": "hauteur"
      },
      "last_frame": {
        "name": "dernière_image"
      },
      "length": {
        "name": "longueur",
        "tooltip": "Nombre d’images à 24 fps, arrondi à la grille 17k+5 du modèle (124 = ~5s ; plage d’entraînement ~124-362, plus long non testé)"
      },
      "prompt": {
        "name": "invite"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "MiniMaxH3ReferenceToVideo": {
    "description": "Conditionnement de référence <Image i> / <Vidéo k> / <Audio j> pour MiniMax H3. Utilisez les mêmes tags lors de la génération.",
    "display_name": "MiniMax H3 Référence vers Vidéo",
    "inputs": {
      "audio_vae": {
        "name": "audio_vae"
      },
      "clip": {
        "name": "clip"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur",
        "tooltip": "Nombre d’images à 24 fps (124 = ~5s, plage d’entraînement ~124-362)"
      },
      "prompt": {
        "name": "invite"
      },
      "ref_audios": {
        "name": "audios_de_référence"
      },
      "ref_image_size": {
        "name": "taille_image_référence",
        "tooltip": "Redimensionnement de l’image de référence. 'match' adapte chaque référence (réduction uniquement, en gardant le ratio) à la surface en pixels de la génération ; 'max' utilise le bord court de 2048px du pipeline de référence pour une meilleure fidélité d'identité. Les tokens de référence sont utilisés à chaque étape d’échantillonnage, donc 'max' peut être plusieurs fois plus lent."
      },
      "ref_images": {
        "name": "images_de_référence"
      },
      "ref_video_audios": {
        "name": "audios_vidéo_de_référence"
      },
      "ref_videos": {
        "name": "vidéos_de_référence"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "MiniMaxH3SigmaShift": {
    "description": "Définir les décalages du flux vidéo/audio.",
    "display_name": "MiniMax H3 Sigma Shift",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "shift_audio": {
        "name": "décalage audio"
      },
      "shift_video": {
        "name": "décalage vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxHailuo03FirstLastFrameNode": {
    "description": "Générez une vidéo à partir d'une image de première image et, éventuellement, d'une image de dernière image à l'aide du modèle MiniMax H3. Le ratio d'aspect de la vidéo suit celui des images fournies.",
    "display_name": "MiniMax H3 Première-Dernière-Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "first_frame": {
        "name": "first_frame",
        "tooltip": "Image de la première image pour la vidéo."
      },
      "last_frame": {
        "name": "last_frame",
        "tooltip": "Image de la dernière image pour la vidéo (optionnelle)."
      },
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la génération vidéo."
      },
      "model_duration": {
        "name": "duration"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_resolution": {
        "name": "resolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine aléatoire. La même requête avec la même graine donne des résultats similaires, mais pas garantis identiques."
      },
      "watermark": {
        "name": "watermark",
        "tooltip": "Ajouter ou non un filigrane AIGC à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxHailuo03ReferenceNode": {
    "description": "Générez une vidéo à partir d’images, de vidéos et d’audio de référence en utilisant le modèle MiniMax H3. Référez-vous aux références dans le prompt selon leur ordre : « Image 1 », « Image 2 », « Vidéo 1 », « Audio 1 », etc.",
    "display_name": "MiniMax H3 Référence vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération vidéo."
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire. La même requête avec la même graine donne des résultats similaires, mais pas garantis identiques."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane AIGC à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxHailuo03TextToVideoNode": {
    "description": "Générez une vidéo à partir d’un prompt texte en utilisant le modèle MiniMax H3.",
    "display_name": "MiniMax H3 Texte vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération vidéo."
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire. La même requête avec la même graine donne des résultats similaires, mais pas garantis identiques."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane AIGC à la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxHailuoVideoNode": {
    "description": "Génère des vidéos à partir d'un prompt, avec option d'image de départ utilisant le nouveau modèle MiniMax Hailuo-02.",
    "display_name": "MiniMax Hailuo Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "La longueur de la vidéo de sortie en secondes."
      },
      "first_frame_image": {
        "name": "image_premiere_frame",
        "tooltip": "Image optionnelle à utiliser comme première frame pour générer une vidéo."
      },
      "prompt_optimizer": {
        "name": "optimiseur_prompt",
        "tooltip": "Optimiser le prompt pour améliorer la qualité de génération si nécessaire."
      },
      "prompt_text": {
        "name": "texte_prompt",
        "tooltip": "Invite textuelle pour guider la génération de la vidéo."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Les dimensions de l'affichage vidéo. 1080p correspond à 1920x1080, 768p à 1366x768."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxImageToVideoNode": {
    "description": "Génère des vidéos à partir d'une image et d'invites en utilisant l'API de MiniMax",
    "display_name": "MiniMax Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Image à utiliser comme première image pour la génération de vidéo"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération de vidéo"
      },
      "prompt_text": {
        "name": "texte d'invite",
        "tooltip": "Texte d'invite pour guider la génération de la vidéo"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MinimaxTextToVideoNode": {
    "description": "Génère des vidéos à partir d'invites en utilisant l'API de MiniMax",
    "display_name": "MiniMax Texte en Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération de vidéo"
      },
      "prompt_text": {
        "name": "texte d'invite",
        "tooltip": "Texte d'invite pour guider la génération de la vidéo"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine aléatoire utilisée pour créer le bruit."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MoGeInference": {
    "description": "Exécuter MoGe sur une seule image pour estimer la profondeur et la géométrie.",
    "display_name": "Inférence MoGe",
    "inputs": {
      "apply_mask": {
        "name": "apply_mask",
        "tooltip": "Définit les pixels masqués (ciel / invalides) à inf dans les points et la profondeur pour que le maillage les ignore. Désactivez pour conserver la géométrie prédite brute partout ; le masque est tout de même renvoyé séparément."
      },
      "batch_size": {
        "name": "batch_size",
        "tooltip": "Images par appel d’inférence. Diminuez si vous manquez de mémoire sur une longue vidéo ou un grand ensemble d’images."
      },
      "force_projection": {
        "name": "force_projection"
      },
      "fov_x_degrees": {
        "name": "fov_x_degrees",
        "tooltip": "Champ de vision horizontal de la caméra source. Définit la longueur focale utilisée pour déprojetter la carte de profondeur en 3D. 0 = récupération automatique à partir des points prédits."
      },
      "image": {
        "name": "image"
      },
      "moge_model": {
        "name": "moge_model"
      },
      "resolution_level": {
        "name": "resolution_level",
        "tooltip": "0 = plus rapide, 9 = plus de détails."
      }
    },
    "outputs": {
      "0": {
        "name": "moge_geometry",
        "tooltip": null
      }
    }
  },
  "MoGePanoramaInference": {
    "description": "Exécuter MoGe sur un panorama équirectangulaire en le divisant en 12 vues en perspective, en effectuant l'inférence sur chacune, puis en fusionnant les résultats en une seule carte de profondeur.",
    "display_name": "Inférence panorama MoGe",
    "inputs": {
      "batch_size": {
        "name": "batch_size",
        "tooltip": "Vues par lot d’inférence (12 découpes au total)."
      },
      "image": {
        "name": "image",
        "tooltip": "Panorama équirectangulaire (n’importe quel format d’image)."
      },
      "merge_resolution": {
        "name": "merge_resolution",
        "tooltip": "Résolution du côté long de la carte de distances fusionnée."
      },
      "moge_model": {
        "name": "moge_model"
      },
      "resolution_level": {
        "name": "resolution_level",
        "tooltip": "Détail par vue (0 = plus rapide, 9 = plus détaillé)."
      },
      "split_resolution": {
        "name": "split_resolution",
        "tooltip": "Résolution de chaque découpe perspective."
      }
    },
    "outputs": {
      "0": {
        "name": "moge_geometry",
        "tooltip": null
      }
    }
  },
  "MoGePointMapToMesh": {
    "description": "Convertir une carte de points MoGe en un maillage 3D.",
    "display_name": "MoGe Point Map vers Mesh",
    "inputs": {
      "batch_index": {
        "name": "batch_index",
        "tooltip": "Quelle image de la géométrie MoGe groupée convertir en mesh. Le nombre de sommets diffère selon l’image, donc les lots ne peuvent pas être fusionnés en un seul MESH."
      },
      "decimation": {
        "name": "décimation",
        "tooltip": "Pas de sommets ; 1 = résolution complète."
      },
      "discontinuity_threshold": {
        "name": "seuil_de_discontinuité",
        "tooltip": "Supprimer les pixels dont l’étendue de profondeur 3x3 dépasse cette fraction. 0 = désactivé."
      },
      "moge_geometry": {
        "name": "moge_geometry"
      },
      "texture": {
        "name": "texture",
        "tooltip": "Transmettre l’image source comme texture baseColor."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MoGeRender": {
    "description": "Rendre une carte de profondeur ou une carte de normales à partir des données de géométrie",
    "display_name": "MoGe Render",
    "inputs": {
      "moge_geometry": {
        "name": "moge_geometry"
      },
      "output": {
        "name": "sortie",
        "tooltip": "DirectX vs OpenGL contrôle la convention du canal vert de la normal map. DirectX : vert = -Y vers le bas (Unreal). OpenGL : vert = +Y vers le haut (Blender, Substance, Unity, glTF)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ModelComputeDtype": {
    "display_name": "ModelComputeDtype",
    "inputs": {
      "dtype": {
        "name": "dtype"
      },
      "model": {
        "name": "modèle"
      }
    }
  },
  "ModelMergeAdd": {
    "display_name": "ModelMergeAdd",
    "inputs": {
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      }
    }
  },
  "ModelMergeAuraflow": {
    "display_name": "ModelMergeAuraflow",
    "inputs": {
      "cond_seq_linear_": {
        "name": "cond_seq_linear."
      },
      "double_layers_0_": {
        "name": "double_layers.0."
      },
      "double_layers_1_": {
        "name": "double_layers.1."
      },
      "double_layers_2_": {
        "name": "double_layers.2."
      },
      "double_layers_3_": {
        "name": "double_layers.3."
      },
      "final_linear_": {
        "name": "final_linear."
      },
      "init_x_linear_": {
        "name": "init_x_linear."
      },
      "modF_": {
        "name": "modF."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "positional_encoding": {
        "name": "codage_positionnel"
      },
      "register_tokens": {
        "name": "enregistrer_tokens"
      },
      "single_layers_0_": {
        "name": "single_layers.0."
      },
      "single_layers_10_": {
        "name": "single_layers.10."
      },
      "single_layers_11_": {
        "name": "single_layers.11."
      },
      "single_layers_12_": {
        "name": "single_layers.12."
      },
      "single_layers_13_": {
        "name": "single_layers.13."
      },
      "single_layers_14_": {
        "name": "single_layers.14."
      },
      "single_layers_15_": {
        "name": "single_layers.15."
      },
      "single_layers_16_": {
        "name": "single_layers.16."
      },
      "single_layers_17_": {
        "name": "single_layers.17."
      },
      "single_layers_18_": {
        "name": "single_layers.18."
      },
      "single_layers_19_": {
        "name": "single_layers.19."
      },
      "single_layers_1_": {
        "name": "single_layers.1."
      },
      "single_layers_20_": {
        "name": "single_layers.20."
      },
      "single_layers_21_": {
        "name": "single_layers.21."
      },
      "single_layers_22_": {
        "name": "single_layers.22."
      },
      "single_layers_23_": {
        "name": "single_layers.23."
      },
      "single_layers_24_": {
        "name": "single_layers.24."
      },
      "single_layers_25_": {
        "name": "single_layers.25."
      },
      "single_layers_26_": {
        "name": "single_layers.26."
      },
      "single_layers_27_": {
        "name": "single_layers.27."
      },
      "single_layers_28_": {
        "name": "single_layers.28."
      },
      "single_layers_29_": {
        "name": "single_layers.29."
      },
      "single_layers_2_": {
        "name": "single_layers.2."
      },
      "single_layers_30_": {
        "name": "single_layers.30."
      },
      "single_layers_31_": {
        "name": "single_layers.31."
      },
      "single_layers_3_": {
        "name": "single_layers.3."
      },
      "single_layers_4_": {
        "name": "single_layers.4."
      },
      "single_layers_5_": {
        "name": "single_layers.5."
      },
      "single_layers_6_": {
        "name": "single_layers.6."
      },
      "single_layers_7_": {
        "name": "single_layers.7."
      },
      "single_layers_8_": {
        "name": "single_layers.8."
      },
      "single_layers_9_": {
        "name": "single_layers.9."
      },
      "t_embedder_": {
        "name": "t_embedder."
      }
    }
  },
  "ModelMergeBlocks": {
    "display_name": "ModelMergeBlocks",
    "inputs": {
      "input": {
        "name": "entrée"
      },
      "middle": {
        "name": "milieu"
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "out": {
        "name": "sortie"
      }
    }
  },
  "ModelMergeCosmos14B": {
    "display_name": "ModelMergeCosmos14B",
    "inputs": {
      "affline_norm_": {
        "name": "affline_norm."
      },
      "blocks_block0_": {
        "name": "blocks.block0."
      },
      "blocks_block10_": {
        "name": "blocks.block10."
      },
      "blocks_block11_": {
        "name": "blocks.block11."
      },
      "blocks_block12_": {
        "name": "blocks.block12."
      },
      "blocks_block13_": {
        "name": "blocks.block13."
      },
      "blocks_block14_": {
        "name": "blocks.block14."
      },
      "blocks_block15_": {
        "name": "blocks.block15."
      },
      "blocks_block16_": {
        "name": "blocks.block16."
      },
      "blocks_block17_": {
        "name": "blocks.block17."
      },
      "blocks_block18_": {
        "name": "blocks.block18."
      },
      "blocks_block19_": {
        "name": "blocks.block19."
      },
      "blocks_block1_": {
        "name": "blocks.block1."
      },
      "blocks_block20_": {
        "name": "blocks.block20."
      },
      "blocks_block21_": {
        "name": "blocks.block21."
      },
      "blocks_block22_": {
        "name": "blocks.block22."
      },
      "blocks_block23_": {
        "name": "blocks.block23."
      },
      "blocks_block24_": {
        "name": "blocks.block24."
      },
      "blocks_block25_": {
        "name": "blocks.block25."
      },
      "blocks_block26_": {
        "name": "blocks.block26."
      },
      "blocks_block27_": {
        "name": "blocks.block27."
      },
      "blocks_block28_": {
        "name": "blocks.block28."
      },
      "blocks_block29_": {
        "name": "blocks.block29."
      },
      "blocks_block2_": {
        "name": "blocks.block2."
      },
      "blocks_block30_": {
        "name": "blocks.block30."
      },
      "blocks_block31_": {
        "name": "blocks.block31."
      },
      "blocks_block32_": {
        "name": "blocks.block32."
      },
      "blocks_block33_": {
        "name": "blocks.block33."
      },
      "blocks_block34_": {
        "name": "blocks.block34."
      },
      "blocks_block35_": {
        "name": "blocks.block35."
      },
      "blocks_block3_": {
        "name": "blocks.block3."
      },
      "blocks_block4_": {
        "name": "blocks.block4."
      },
      "blocks_block5_": {
        "name": "blocks.block5."
      },
      "blocks_block6_": {
        "name": "blocks.block6."
      },
      "blocks_block7_": {
        "name": "blocks.block7."
      },
      "blocks_block8_": {
        "name": "blocks.block8."
      },
      "blocks_block9_": {
        "name": "blocks.block9."
      },
      "extra_pos_embedder_": {
        "name": "extra_pos_embedder."
      },
      "final_layer_": {
        "name": "couche_finale."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_embedder_": {
        "name": "pos_embedder."
      },
      "t_embedder_": {
        "name": "t_embedder."
      },
      "x_embedder_": {
        "name": "x_embedder."
      }
    }
  },
  "ModelMergeCosmos7B": {
    "display_name": "ModelMergeCosmos7B",
    "inputs": {
      "affline_norm_": {
        "name": "affline_norm."
      },
      "blocks_block0_": {
        "name": "blocks.block0."
      },
      "blocks_block10_": {
        "name": "blocks.block10."
      },
      "blocks_block11_": {
        "name": "blocks.block11."
      },
      "blocks_block12_": {
        "name": "blocks.block12."
      },
      "blocks_block13_": {
        "name": "blocks.block13."
      },
      "blocks_block14_": {
        "name": "blocks.block14."
      },
      "blocks_block15_": {
        "name": "blocks.block15."
      },
      "blocks_block16_": {
        "name": "blocks.block16."
      },
      "blocks_block17_": {
        "name": "blocks.block17."
      },
      "blocks_block18_": {
        "name": "blocks.block18."
      },
      "blocks_block19_": {
        "name": "blocks.block19."
      },
      "blocks_block1_": {
        "name": "blocks.block1."
      },
      "blocks_block20_": {
        "name": "blocks.block20."
      },
      "blocks_block21_": {
        "name": "blocks.block21."
      },
      "blocks_block22_": {
        "name": "blocks.block22."
      },
      "blocks_block23_": {
        "name": "blocks.block23."
      },
      "blocks_block24_": {
        "name": "blocks.block24."
      },
      "blocks_block25_": {
        "name": "blocks.block25."
      },
      "blocks_block26_": {
        "name": "blocks.block26."
      },
      "blocks_block27_": {
        "name": "blocks.block27."
      },
      "blocks_block2_": {
        "name": "blocks.block2."
      },
      "blocks_block3_": {
        "name": "blocks.block3."
      },
      "blocks_block4_": {
        "name": "blocks.block4."
      },
      "blocks_block5_": {
        "name": "blocks.block5."
      },
      "blocks_block6_": {
        "name": "blocks.block6."
      },
      "blocks_block7_": {
        "name": "blocks.block7."
      },
      "blocks_block8_": {
        "name": "blocks.block8."
      },
      "blocks_block9_": {
        "name": "blocks.block9."
      },
      "extra_pos_embedder_": {
        "name": "extra_pos_embedder."
      },
      "final_layer_": {
        "name": "final_layer."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "pos_embedder_": {
        "name": "pos_embedder."
      },
      "t_embedder_": {
        "name": "t_embedder."
      },
      "x_embedder_": {
        "name": "x_embedder."
      }
    }
  },
  "ModelMergeCosmosPredict2_14B": {
    "display_name": "ModelMergeCosmosPredict2_14B",
    "inputs": {
      "blocks_0_": {
        "name": "blocs.0."
      },
      "blocks_10_": {
        "name": "blocs.10."
      },
      "blocks_11_": {
        "name": "blocs.11."
      },
      "blocks_12_": {
        "name": "blocs.12."
      },
      "blocks_13_": {
        "name": "blocs.13."
      },
      "blocks_14_": {
        "name": "blocs.14."
      },
      "blocks_15_": {
        "name": "blocs.15."
      },
      "blocks_16_": {
        "name": "blocs.16."
      },
      "blocks_17_": {
        "name": "blocs.17."
      },
      "blocks_18_": {
        "name": "blocs.18."
      },
      "blocks_19_": {
        "name": "blocs.19."
      },
      "blocks_1_": {
        "name": "blocs.1."
      },
      "blocks_20_": {
        "name": "blocs.20."
      },
      "blocks_21_": {
        "name": "blocs.21."
      },
      "blocks_22_": {
        "name": "blocs.22."
      },
      "blocks_23_": {
        "name": "blocs.23."
      },
      "blocks_24_": {
        "name": "blocs.24."
      },
      "blocks_25_": {
        "name": "blocs.25."
      },
      "blocks_26_": {
        "name": "blocs.26."
      },
      "blocks_27_": {
        "name": "blocs.27."
      },
      "blocks_28_": {
        "name": "blocs.28."
      },
      "blocks_29_": {
        "name": "blocs.29."
      },
      "blocks_2_": {
        "name": "blocs.2."
      },
      "blocks_30_": {
        "name": "blocs.30."
      },
      "blocks_31_": {
        "name": "blocs.31."
      },
      "blocks_32_": {
        "name": "blocs.32."
      },
      "blocks_33_": {
        "name": "blocs.33."
      },
      "blocks_34_": {
        "name": "blocs.34."
      },
      "blocks_35_": {
        "name": "blocs.35."
      },
      "blocks_3_": {
        "name": "blocs.3."
      },
      "blocks_4_": {
        "name": "blocs.4."
      },
      "blocks_5_": {
        "name": "blocs.5."
      },
      "blocks_6_": {
        "name": "blocs.6."
      },
      "blocks_7_": {
        "name": "blocs.7."
      },
      "blocks_8_": {
        "name": "blocs.8."
      },
      "blocks_9_": {
        "name": "blocs.9."
      },
      "final_layer_": {
        "name": "couche_finale."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_embedder_": {
        "name": "pos_embedder."
      },
      "t_embedder_": {
        "name": "t_embedder."
      },
      "t_embedding_norm_": {
        "name": "t_embedding_norm."
      },
      "x_embedder_": {
        "name": "x_embedder."
      }
    }
  },
  "ModelMergeCosmosPredict2_2B": {
    "display_name": "FusionModèleCosmosPredict2_2B",
    "inputs": {
      "blocks_0_": {
        "name": "blocs.0."
      },
      "blocks_10_": {
        "name": "blocs.10."
      },
      "blocks_11_": {
        "name": "blocs.11."
      },
      "blocks_12_": {
        "name": "blocs.12."
      },
      "blocks_13_": {
        "name": "blocs.13."
      },
      "blocks_14_": {
        "name": "blocs.14."
      },
      "blocks_15_": {
        "name": "blocs.15."
      },
      "blocks_16_": {
        "name": "blocs.16."
      },
      "blocks_17_": {
        "name": "blocs.17."
      },
      "blocks_18_": {
        "name": "blocs.18."
      },
      "blocks_19_": {
        "name": "blocs.19."
      },
      "blocks_1_": {
        "name": "blocs.1."
      },
      "blocks_20_": {
        "name": "blocs.20."
      },
      "blocks_21_": {
        "name": "blocs.21."
      },
      "blocks_22_": {
        "name": "blocs.22."
      },
      "blocks_23_": {
        "name": "blocs.23."
      },
      "blocks_24_": {
        "name": "blocs.24."
      },
      "blocks_25_": {
        "name": "blocs.25."
      },
      "blocks_26_": {
        "name": "blocs.26."
      },
      "blocks_27_": {
        "name": "blocs.27."
      },
      "blocks_2_": {
        "name": "blocs.2."
      },
      "blocks_3_": {
        "name": "blocs.3."
      },
      "blocks_4_": {
        "name": "blocs.4."
      },
      "blocks_5_": {
        "name": "blocs.5."
      },
      "blocks_6_": {
        "name": "blocs.6."
      },
      "blocks_7_": {
        "name": "blocs.7."
      },
      "blocks_8_": {
        "name": "blocs.8."
      },
      "blocks_9_": {
        "name": "blocs.9."
      },
      "final_layer_": {
        "name": "couche_finale."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_embedder_": {
        "name": "intégrateur_pos."
      },
      "t_embedder_": {
        "name": "intégrateur_t."
      },
      "t_embedding_norm_": {
        "name": "normalisation_intégration_t."
      },
      "x_embedder_": {
        "name": "intégrateur_x."
      }
    }
  },
  "ModelMergeFlux1": {
    "display_name": "ModelMergeFlux1",
    "inputs": {
      "double_blocks_0_": {
        "name": "double_blocks.0."
      },
      "double_blocks_10_": {
        "name": "double_blocks.10."
      },
      "double_blocks_11_": {
        "name": "double_blocks.11."
      },
      "double_blocks_12_": {
        "name": "double_blocks.12."
      },
      "double_blocks_13_": {
        "name": "double_blocks.13."
      },
      "double_blocks_14_": {
        "name": "double_blocks.14."
      },
      "double_blocks_15_": {
        "name": "double_blocks.15."
      },
      "double_blocks_16_": {
        "name": "double_blocks.16."
      },
      "double_blocks_17_": {
        "name": "double_blocks.17."
      },
      "double_blocks_18_": {
        "name": "double_blocks.18."
      },
      "double_blocks_1_": {
        "name": "double_blocks.1."
      },
      "double_blocks_2_": {
        "name": "double_blocks.2."
      },
      "double_blocks_3_": {
        "name": "double_blocks.3."
      },
      "double_blocks_4_": {
        "name": "double_blocks.4."
      },
      "double_blocks_5_": {
        "name": "double_blocks.5."
      },
      "double_blocks_6_": {
        "name": "double_blocks.6."
      },
      "double_blocks_7_": {
        "name": "double_blocks.7."
      },
      "double_blocks_8_": {
        "name": "double_blocks.8."
      },
      "double_blocks_9_": {
        "name": "double_blocks.9."
      },
      "final_layer_": {
        "name": "final_layer."
      },
      "guidance_in": {
        "name": "guidance_in"
      },
      "img_in_": {
        "name": "img_in."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "single_blocks_0_": {
        "name": "single_blocks.0."
      },
      "single_blocks_10_": {
        "name": "single_blocks.10."
      },
      "single_blocks_11_": {
        "name": "single_blocks.11."
      },
      "single_blocks_12_": {
        "name": "single_blocks.12."
      },
      "single_blocks_13_": {
        "name": "single_blocks.13."
      },
      "single_blocks_14_": {
        "name": "single_blocks.14."
      },
      "single_blocks_15_": {
        "name": "single_blocks.15."
      },
      "single_blocks_16_": {
        "name": "single_blocks.16."
      },
      "single_blocks_17_": {
        "name": "single_blocks.17."
      },
      "single_blocks_18_": {
        "name": "single_blocks.18."
      },
      "single_blocks_19_": {
        "name": "single_blocks.19."
      },
      "single_blocks_1_": {
        "name": "single_blocks.1."
      },
      "single_blocks_20_": {
        "name": "single_blocks.20."
      },
      "single_blocks_21_": {
        "name": "single_blocks.21."
      },
      "single_blocks_22_": {
        "name": "single_blocks.22."
      },
      "single_blocks_23_": {
        "name": "single_blocks.23."
      },
      "single_blocks_24_": {
        "name": "single_blocks.24."
      },
      "single_blocks_25_": {
        "name": "single_blocks.25."
      },
      "single_blocks_26_": {
        "name": "single_blocks.26."
      },
      "single_blocks_27_": {
        "name": "single_blocks.27."
      },
      "single_blocks_28_": {
        "name": "single_blocks.28."
      },
      "single_blocks_29_": {
        "name": "single_blocks.29."
      },
      "single_blocks_2_": {
        "name": "single_blocks.2."
      },
      "single_blocks_30_": {
        "name": "single_blocks.30."
      },
      "single_blocks_31_": {
        "name": "single_blocks.31."
      },
      "single_blocks_32_": {
        "name": "single_blocks.32."
      },
      "single_blocks_33_": {
        "name": "single_blocks.33."
      },
      "single_blocks_34_": {
        "name": "single_blocks.34."
      },
      "single_blocks_35_": {
        "name": "single_blocks.35."
      },
      "single_blocks_36_": {
        "name": "single_blocks.36."
      },
      "single_blocks_37_": {
        "name": "single_blocks.37."
      },
      "single_blocks_3_": {
        "name": "single_blocks.3."
      },
      "single_blocks_4_": {
        "name": "single_blocks.4."
      },
      "single_blocks_5_": {
        "name": "single_blocks.5."
      },
      "single_blocks_6_": {
        "name": "single_blocks.6."
      },
      "single_blocks_7_": {
        "name": "single_blocks.7."
      },
      "single_blocks_8_": {
        "name": "single_blocks.8."
      },
      "single_blocks_9_": {
        "name": "single_blocks.9."
      },
      "time_in_": {
        "name": "time_in."
      },
      "txt_in_": {
        "name": "txt_in."
      },
      "vector_in_": {
        "name": "vector_in."
      }
    }
  },
  "ModelMergeKrea2": {
    "display_name": "ModelMergeKrea2",
    "inputs": {
      "blocks_0_": {
        "name": "blocs.0."
      },
      "blocks_10_": {
        "name": "blocs.10."
      },
      "blocks_11_": {
        "name": "blocs.11."
      },
      "blocks_12_": {
        "name": "blocs.12."
      },
      "blocks_13_": {
        "name": "blocs.13."
      },
      "blocks_14_": {
        "name": "blocs.14."
      },
      "blocks_15_": {
        "name": "blocs.15."
      },
      "blocks_16_": {
        "name": "blocs.16."
      },
      "blocks_17_": {
        "name": "blocs.17."
      },
      "blocks_18_": {
        "name": "blocs.18."
      },
      "blocks_19_": {
        "name": "blocs.19."
      },
      "blocks_1_": {
        "name": "blocs.1."
      },
      "blocks_20_": {
        "name": "blocs.20."
      },
      "blocks_21_": {
        "name": "blocs.21."
      },
      "blocks_22_": {
        "name": "blocs.22."
      },
      "blocks_23_": {
        "name": "blocs.23."
      },
      "blocks_24_": {
        "name": "blocs.24."
      },
      "blocks_25_": {
        "name": "blocs.25."
      },
      "blocks_26_": {
        "name": "blocs.26."
      },
      "blocks_27_": {
        "name": "blocs.27."
      },
      "blocks_2_": {
        "name": "blocs.2."
      },
      "blocks_3_": {
        "name": "blocs.3."
      },
      "blocks_4_": {
        "name": "blocs.4."
      },
      "blocks_5_": {
        "name": "blocs.5."
      },
      "blocks_6_": {
        "name": "blocs.6."
      },
      "blocks_7_": {
        "name": "blocs.7."
      },
      "blocks_8_": {
        "name": "blocs.8."
      },
      "blocks_9_": {
        "name": "blocs.9."
      },
      "first_": {
        "name": "premier."
      },
      "last_": {
        "name": "dernier."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "tmlp_": {
        "name": "tmlp."
      },
      "tproj_": {
        "name": "tproj."
      },
      "txtfusion_layerwise_blocks_0_": {
        "name": "txtfusion.layerwise_blocks.0."
      },
      "txtfusion_layerwise_blocks_1_": {
        "name": "txtfusion.layerwise_blocks.1."
      },
      "txtfusion_projector_": {
        "name": "txtfusion.projector."
      },
      "txtfusion_refiner_blocks_0_": {
        "name": "txtfusion.refiner_blocks.0."
      },
      "txtfusion_refiner_blocks_1_": {
        "name": "txtfusion.refiner_blocks.1."
      },
      "txtmlp_": {
        "name": "txtmlp."
      }
    }
  },
  "ModelMergeLTXV": {
    "display_name": "ModelMergeLTXV",
    "inputs": {
      "adaln_single_": {
        "name": "adaln_single."
      },
      "caption_projection_": {
        "name": "projection_de_légende."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "patchify_proj_": {
        "name": "patchify_proj."
      },
      "proj_out_": {
        "name": "proj_out."
      },
      "scale_shift_table": {
        "name": "table_de_décalage_d'échelle"
      },
      "transformer_blocks_0_": {
        "name": "blocs_transformateurs.0."
      },
      "transformer_blocks_10_": {
        "name": "blocs_transformateurs.10."
      },
      "transformer_blocks_11_": {
        "name": "blocs_transformateurs.11."
      },
      "transformer_blocks_12_": {
        "name": "blocs_transformateurs.12."
      },
      "transformer_blocks_13_": {
        "name": "blocs_transformateurs.13."
      },
      "transformer_blocks_14_": {
        "name": "blocs_transformateurs.14."
      },
      "transformer_blocks_15_": {
        "name": "blocs_transformateurs.15."
      },
      "transformer_blocks_16_": {
        "name": "blocs_transformateurs.16."
      },
      "transformer_blocks_17_": {
        "name": "blocs_transformateurs.17."
      },
      "transformer_blocks_18_": {
        "name": "blocs_transformateurs.18."
      },
      "transformer_blocks_19_": {
        "name": "blocs_transformateurs.19."
      },
      "transformer_blocks_1_": {
        "name": "blocs_transformateurs.1."
      },
      "transformer_blocks_20_": {
        "name": "blocs_transformateurs.20."
      },
      "transformer_blocks_21_": {
        "name": "blocs_transformateurs.21."
      },
      "transformer_blocks_22_": {
        "name": "blocs_transformateurs.22."
      },
      "transformer_blocks_23_": {
        "name": "blocs_transformateurs.23."
      },
      "transformer_blocks_24_": {
        "name": "blocs_transformateurs.24."
      },
      "transformer_blocks_25_": {
        "name": "blocs_transformateurs.25."
      },
      "transformer_blocks_26_": {
        "name": "blocs_transformateurs.26."
      },
      "transformer_blocks_27_": {
        "name": "blocs_transformateurs.27."
      },
      "transformer_blocks_2_": {
        "name": "blocs_transformateurs.2."
      },
      "transformer_blocks_3_": {
        "name": "blocs_transformateurs.3."
      },
      "transformer_blocks_4_": {
        "name": "blocs_transformateurs.4."
      },
      "transformer_blocks_5_": {
        "name": "blocs_transformateurs.5."
      },
      "transformer_blocks_6_": {
        "name": "blocs_transformateurs.6."
      },
      "transformer_blocks_7_": {
        "name": "blocs_transformateurs.7."
      },
      "transformer_blocks_8_": {
        "name": "blocs_transformateurs.8."
      },
      "transformer_blocks_9_": {
        "name": "blocs_transformateurs.9."
      }
    }
  },
  "ModelMergeMochiPreview": {
    "display_name": "Aperçu de la Fusion de Modèles Mochi",
    "inputs": {
      "blocks_0_": {
        "name": "blocs.0."
      },
      "blocks_10_": {
        "name": "blocs.10."
      },
      "blocks_11_": {
        "name": "blocs.11."
      },
      "blocks_12_": {
        "name": "blocs.12."
      },
      "blocks_13_": {
        "name": "blocs.13."
      },
      "blocks_14_": {
        "name": "blocs.14."
      },
      "blocks_15_": {
        "name": "blocs.15."
      },
      "blocks_16_": {
        "name": "blocs.16."
      },
      "blocks_17_": {
        "name": "blocs.17."
      },
      "blocks_18_": {
        "name": "blocs.18."
      },
      "blocks_19_": {
        "name": "blocs.19."
      },
      "blocks_1_": {
        "name": "blocs.1."
      },
      "blocks_20_": {
        "name": "blocs.20."
      },
      "blocks_21_": {
        "name": "blocs.21."
      },
      "blocks_22_": {
        "name": "blocs.22."
      },
      "blocks_23_": {
        "name": "blocs.23."
      },
      "blocks_24_": {
        "name": "blocs.24."
      },
      "blocks_25_": {
        "name": "blocs.25."
      },
      "blocks_26_": {
        "name": "blocs.26."
      },
      "blocks_27_": {
        "name": "blocs.27."
      },
      "blocks_28_": {
        "name": "blocs.28."
      },
      "blocks_29_": {
        "name": "blocs.29."
      },
      "blocks_2_": {
        "name": "blocs.2."
      },
      "blocks_30_": {
        "name": "blocs.30."
      },
      "blocks_31_": {
        "name": "blocs.31."
      },
      "blocks_32_": {
        "name": "blocs.32."
      },
      "blocks_33_": {
        "name": "blocs.33."
      },
      "blocks_34_": {
        "name": "blocs.34."
      },
      "blocks_35_": {
        "name": "blocs.35."
      },
      "blocks_36_": {
        "name": "blocs.36."
      },
      "blocks_37_": {
        "name": "blocs.37."
      },
      "blocks_38_": {
        "name": "blocs.38."
      },
      "blocks_39_": {
        "name": "blocs.39."
      },
      "blocks_3_": {
        "name": "blocs.3."
      },
      "blocks_40_": {
        "name": "blocs.40."
      },
      "blocks_41_": {
        "name": "blocs.41."
      },
      "blocks_42_": {
        "name": "blocs.42."
      },
      "blocks_43_": {
        "name": "blocs.43."
      },
      "blocks_44_": {
        "name": "blocs.44."
      },
      "blocks_45_": {
        "name": "blocs.45."
      },
      "blocks_46_": {
        "name": "blocs.46."
      },
      "blocks_47_": {
        "name": "blocs.47."
      },
      "blocks_4_": {
        "name": "blocs.4."
      },
      "blocks_5_": {
        "name": "blocs.5."
      },
      "blocks_6_": {
        "name": "blocs.6."
      },
      "blocks_7_": {
        "name": "blocs.7."
      },
      "blocks_8_": {
        "name": "blocs.8."
      },
      "blocks_9_": {
        "name": "blocs.9."
      },
      "final_layer_": {
        "name": "couche_finale."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_frequencies_": {
        "name": "pos_frequences."
      },
      "t5_y_embedder_": {
        "name": "t5_y_embedder."
      },
      "t5_yproj_": {
        "name": "t5_yproj."
      },
      "t_embedder_": {
        "name": "t_embedder."
      }
    }
  },
  "ModelMergeQwenImage": {
    "display_name": "FusionModèleQwenImage",
    "inputs": {
      "img_in_": {
        "name": "img_entrée."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_embeds_": {
        "name": "incrust_pos."
      },
      "proj_out_": {
        "name": "proj_out."
      },
      "time_text_embed_": {
        "name": "incrust_texte_temps."
      },
      "transformer_blocks_0_": {
        "name": "blocs_transformateurs.0."
      },
      "transformer_blocks_10_": {
        "name": "blocs_transformateurs.10."
      },
      "transformer_blocks_11_": {
        "name": "blocs_transformateurs.11."
      },
      "transformer_blocks_12_": {
        "name": "blocs_transformateurs.12."
      },
      "transformer_blocks_13_": {
        "name": "blocs_transformateurs.13."
      },
      "transformer_blocks_14_": {
        "name": "blocs_transformateurs.14."
      },
      "transformer_blocks_15_": {
        "name": "blocs_transformateurs.15."
      },
      "transformer_blocks_16_": {
        "name": "blocs_transformateurs.16."
      },
      "transformer_blocks_17_": {
        "name": "blocs_transformateurs.17."
      },
      "transformer_blocks_18_": {
        "name": "blocs_transformateurs.18."
      },
      "transformer_blocks_19_": {
        "name": "blocs_transformateurs.19."
      },
      "transformer_blocks_1_": {
        "name": "blocs_transformateurs.1."
      },
      "transformer_blocks_20_": {
        "name": "blocs_transformateurs.20."
      },
      "transformer_blocks_21_": {
        "name": "blocs_transformateurs.21."
      },
      "transformer_blocks_22_": {
        "name": "blocs_transformateurs.22."
      },
      "transformer_blocks_23_": {
        "name": "blocs_transformateurs.23."
      },
      "transformer_blocks_24_": {
        "name": "blocs_transformateurs.24."
      },
      "transformer_blocks_25_": {
        "name": "blocs_transformateurs.25."
      },
      "transformer_blocks_26_": {
        "name": "blocs_transformateurs.26."
      },
      "transformer_blocks_27_": {
        "name": "blocs_transformateurs.27."
      },
      "transformer_blocks_28_": {
        "name": "blocs_transformateurs.28."
      },
      "transformer_blocks_29_": {
        "name": "blocs_transformateurs.29."
      },
      "transformer_blocks_2_": {
        "name": "blocs_transformateurs.2."
      },
      "transformer_blocks_30_": {
        "name": "blocs_transformateurs.30."
      },
      "transformer_blocks_31_": {
        "name": "blocs_transformateurs.31."
      },
      "transformer_blocks_32_": {
        "name": "blocs_transformateurs.32."
      },
      "transformer_blocks_33_": {
        "name": "blocs_transformateurs.33."
      },
      "transformer_blocks_34_": {
        "name": "blocs_transformateurs.34."
      },
      "transformer_blocks_35_": {
        "name": "blocs_transformateurs.35."
      },
      "transformer_blocks_36_": {
        "name": "blocs_transformateurs.36."
      },
      "transformer_blocks_37_": {
        "name": "blocs_transformateurs.37."
      },
      "transformer_blocks_38_": {
        "name": "blocs_transformateurs.38."
      },
      "transformer_blocks_39_": {
        "name": "blocs_transformateurs.39."
      },
      "transformer_blocks_3_": {
        "name": "blocs_transformateurs.3."
      },
      "transformer_blocks_40_": {
        "name": "blocs_transformateurs.40."
      },
      "transformer_blocks_41_": {
        "name": "blocs_transformateurs.41."
      },
      "transformer_blocks_42_": {
        "name": "blocs_transformateurs.42."
      },
      "transformer_blocks_43_": {
        "name": "blocs_transformateurs.43."
      },
      "transformer_blocks_44_": {
        "name": "blocs_transformateurs.44."
      },
      "transformer_blocks_45_": {
        "name": "blocs_transformateurs.45."
      },
      "transformer_blocks_46_": {
        "name": "blocs_transformateurs.46."
      },
      "transformer_blocks_47_": {
        "name": "blocs_transformateurs.47."
      },
      "transformer_blocks_48_": {
        "name": "blocs_transformateurs.48."
      },
      "transformer_blocks_49_": {
        "name": "blocs_transformateurs.49."
      },
      "transformer_blocks_4_": {
        "name": "blocs_transformateurs.4."
      },
      "transformer_blocks_50_": {
        "name": "blocs_transformateurs.50."
      },
      "transformer_blocks_51_": {
        "name": "blocs_transformateurs.51."
      },
      "transformer_blocks_52_": {
        "name": "blocs_transformateurs.52."
      },
      "transformer_blocks_53_": {
        "name": "blocs_transformateurs.53."
      },
      "transformer_blocks_54_": {
        "name": "blocs_transformateurs.54."
      },
      "transformer_blocks_55_": {
        "name": "blocs_transformateurs.55."
      },
      "transformer_blocks_56_": {
        "name": "blocs_transformateurs.56."
      },
      "transformer_blocks_57_": {
        "name": "blocs_transformateurs.57."
      },
      "transformer_blocks_58_": {
        "name": "blocs_transformateurs.58."
      },
      "transformer_blocks_59_": {
        "name": "blocs_transformateurs.59."
      },
      "transformer_blocks_5_": {
        "name": "blocs_transformateurs.5."
      },
      "transformer_blocks_6_": {
        "name": "blocs_transformateurs.6."
      },
      "transformer_blocks_7_": {
        "name": "blocs_transformateurs.7."
      },
      "transformer_blocks_8_": {
        "name": "blocs_transformateurs.8."
      },
      "transformer_blocks_9_": {
        "name": "blocs_transformateurs.9."
      },
      "txt_in_": {
        "name": "txt_entrée."
      },
      "txt_norm_": {
        "name": "txt_norm."
      }
    }
  },
  "ModelMergeSD1": {
    "display_name": "ModelMergeSD1",
    "inputs": {
      "input_blocks_0_": {
        "name": "input_blocks.0."
      },
      "input_blocks_10_": {
        "name": "input_blocks.10."
      },
      "input_blocks_11_": {
        "name": "input_blocks.11."
      },
      "input_blocks_1_": {
        "name": "input_blocks.1."
      },
      "input_blocks_2_": {
        "name": "input_blocks.2."
      },
      "input_blocks_3_": {
        "name": "input_blocks.3."
      },
      "input_blocks_4_": {
        "name": "input_blocks.4."
      },
      "input_blocks_5_": {
        "name": "input_blocks.5."
      },
      "input_blocks_6_": {
        "name": "input_blocks.6."
      },
      "input_blocks_7_": {
        "name": "input_blocks.7."
      },
      "input_blocks_8_": {
        "name": "input_blocks.8."
      },
      "input_blocks_9_": {
        "name": "input_blocks.9."
      },
      "label_emb_": {
        "name": "label_emb."
      },
      "middle_block_0_": {
        "name": "middle_block.0."
      },
      "middle_block_1_": {
        "name": "middle_block.1."
      },
      "middle_block_2_": {
        "name": "middle_block.2."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "out_": {
        "name": "out."
      },
      "output_blocks_0_": {
        "name": "output_blocks.0."
      },
      "output_blocks_10_": {
        "name": "output_blocks.10."
      },
      "output_blocks_11_": {
        "name": "output_blocks.11."
      },
      "output_blocks_1_": {
        "name": "output_blocks.1."
      },
      "output_blocks_2_": {
        "name": "output_blocks.2."
      },
      "output_blocks_3_": {
        "name": "output_blocks.3."
      },
      "output_blocks_4_": {
        "name": "output_blocks.4."
      },
      "output_blocks_5_": {
        "name": "output_blocks.5."
      },
      "output_blocks_6_": {
        "name": "output_blocks.6."
      },
      "output_blocks_7_": {
        "name": "output_blocks.7."
      },
      "output_blocks_8_": {
        "name": "output_blocks.8."
      },
      "output_blocks_9_": {
        "name": "output_blocks.9."
      },
      "time_embed_": {
        "name": "time_embed."
      }
    }
  },
  "ModelMergeSD2": {
    "display_name": "ModelMergeSD2",
    "inputs": {
      "input_blocks_0_": {
        "name": "input_blocks.0."
      },
      "input_blocks_10_": {
        "name": "input_blocks.10."
      },
      "input_blocks_11_": {
        "name": "input_blocks.11."
      },
      "input_blocks_1_": {
        "name": "input_blocks.1."
      },
      "input_blocks_2_": {
        "name": "input_blocks.2."
      },
      "input_blocks_3_": {
        "name": "input_blocks.3."
      },
      "input_blocks_4_": {
        "name": "input_blocks.4."
      },
      "input_blocks_5_": {
        "name": "input_blocks.5."
      },
      "input_blocks_6_": {
        "name": "input_blocks.6."
      },
      "input_blocks_7_": {
        "name": "input_blocks.7."
      },
      "input_blocks_8_": {
        "name": "input_blocks.8."
      },
      "input_blocks_9_": {
        "name": "input_blocks.9."
      },
      "label_emb_": {
        "name": "label_emb."
      },
      "middle_block_0_": {
        "name": "middle_block.0."
      },
      "middle_block_1_": {
        "name": "middle_block.1."
      },
      "middle_block_2_": {
        "name": "middle_block.2."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "out_": {
        "name": "out."
      },
      "output_blocks_0_": {
        "name": "output_blocks.0."
      },
      "output_blocks_10_": {
        "name": "output_blocks.10."
      },
      "output_blocks_11_": {
        "name": "output_blocks.11."
      },
      "output_blocks_1_": {
        "name": "output_blocks.1."
      },
      "output_blocks_2_": {
        "name": "output_blocks.2."
      },
      "output_blocks_3_": {
        "name": "output_blocks.3."
      },
      "output_blocks_4_": {
        "name": "output_blocks.4."
      },
      "output_blocks_5_": {
        "name": "output_blocks.5."
      },
      "output_blocks_6_": {
        "name": "output_blocks.6."
      },
      "output_blocks_7_": {
        "name": "output_blocks.7."
      },
      "output_blocks_8_": {
        "name": "output_blocks.8."
      },
      "output_blocks_9_": {
        "name": "output_blocks.9."
      },
      "time_embed_": {
        "name": "time_embed."
      }
    }
  },
  "ModelMergeSD35_Large": {
    "display_name": "ModelMergeSD35_Large",
    "inputs": {
      "context_embedder_": {
        "name": "context_embedder."
      },
      "final_layer_": {
        "name": "final_layer."
      },
      "joint_blocks_0_": {
        "name": "joint_blocks.0."
      },
      "joint_blocks_10_": {
        "name": "joint_blocks.10."
      },
      "joint_blocks_11_": {
        "name": "joint_blocks.11."
      },
      "joint_blocks_12_": {
        "name": "joint_blocks.12."
      },
      "joint_blocks_13_": {
        "name": "joint_blocks.13."
      },
      "joint_blocks_14_": {
        "name": "joint_blocks.14."
      },
      "joint_blocks_15_": {
        "name": "joint_blocks.15."
      },
      "joint_blocks_16_": {
        "name": "joint_blocks.16."
      },
      "joint_blocks_17_": {
        "name": "joint_blocks.17."
      },
      "joint_blocks_18_": {
        "name": "joint_blocks.18."
      },
      "joint_blocks_19_": {
        "name": "joint_blocks.19."
      },
      "joint_blocks_1_": {
        "name": "joint_blocks.1."
      },
      "joint_blocks_20_": {
        "name": "joint_blocks.20."
      },
      "joint_blocks_21_": {
        "name": "joint_blocks.21."
      },
      "joint_blocks_22_": {
        "name": "joint_blocks.22."
      },
      "joint_blocks_23_": {
        "name": "joint_blocks.23."
      },
      "joint_blocks_24_": {
        "name": "joint_blocks.24."
      },
      "joint_blocks_25_": {
        "name": "joint_blocks.25."
      },
      "joint_blocks_26_": {
        "name": "joint_blocks.26."
      },
      "joint_blocks_27_": {
        "name": "joint_blocks.27."
      },
      "joint_blocks_28_": {
        "name": "joint_blocks.28."
      },
      "joint_blocks_29_": {
        "name": "joint_blocks.29."
      },
      "joint_blocks_2_": {
        "name": "joint_blocks.2."
      },
      "joint_blocks_30_": {
        "name": "joint_blocks.30."
      },
      "joint_blocks_31_": {
        "name": "joint_blocks.31."
      },
      "joint_blocks_32_": {
        "name": "joint_blocks.32."
      },
      "joint_blocks_33_": {
        "name": "joint_blocks.33."
      },
      "joint_blocks_34_": {
        "name": "joint_blocks.34."
      },
      "joint_blocks_35_": {
        "name": "joint_blocks.35."
      },
      "joint_blocks_36_": {
        "name": "joint_blocks.36."
      },
      "joint_blocks_37_": {
        "name": "joint_blocks.37."
      },
      "joint_blocks_3_": {
        "name": "joint_blocks.3."
      },
      "joint_blocks_4_": {
        "name": "joint_blocks.4."
      },
      "joint_blocks_5_": {
        "name": "joint_blocks.5."
      },
      "joint_blocks_6_": {
        "name": "joint_blocks.6."
      },
      "joint_blocks_7_": {
        "name": "joint_blocks.7."
      },
      "joint_blocks_8_": {
        "name": "joint_blocks.8."
      },
      "joint_blocks_9_": {
        "name": "joint_blocks.9."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "pos_embed_": {
        "name": "pos_embed."
      },
      "t_embedder_": {
        "name": "t_embedder."
      },
      "x_embedder_": {
        "name": "x_embedder."
      },
      "y_embedder_": {
        "name": "y_embedder."
      }
    }
  },
  "ModelMergeSD3_2B": {
    "display_name": "ModelMergeSD3_2B",
    "inputs": {
      "context_embedder_": {
        "name": "context_embedder."
      },
      "final_layer_": {
        "name": "couche_finale."
      },
      "joint_blocks_0_": {
        "name": "joint_blocks.0."
      },
      "joint_blocks_10_": {
        "name": "joint_blocks.10."
      },
      "joint_blocks_11_": {
        "name": "joint_blocks.11."
      },
      "joint_blocks_12_": {
        "name": "joint_blocks.12."
      },
      "joint_blocks_13_": {
        "name": "joint_blocks.13."
      },
      "joint_blocks_14_": {
        "name": "joint_blocks.14."
      },
      "joint_blocks_15_": {
        "name": "joint_blocks.15."
      },
      "joint_blocks_16_": {
        "name": "joint_blocks.16."
      },
      "joint_blocks_17_": {
        "name": "joint_blocks.17."
      },
      "joint_blocks_18_": {
        "name": "joint_blocks.18."
      },
      "joint_blocks_19_": {
        "name": "joint_blocks.19."
      },
      "joint_blocks_1_": {
        "name": "joint_blocks.1."
      },
      "joint_blocks_20_": {
        "name": "joint_blocks.20."
      },
      "joint_blocks_21_": {
        "name": "joint_blocks.21."
      },
      "joint_blocks_22_": {
        "name": "joint_blocks.22."
      },
      "joint_blocks_23_": {
        "name": "joint_blocks.23."
      },
      "joint_blocks_2_": {
        "name": "joint_blocks.2."
      },
      "joint_blocks_3_": {
        "name": "joint_blocks.3."
      },
      "joint_blocks_4_": {
        "name": "joint_blocks.4."
      },
      "joint_blocks_5_": {
        "name": "joint_blocks.5."
      },
      "joint_blocks_6_": {
        "name": "joint_blocks.6."
      },
      "joint_blocks_7_": {
        "name": "joint_blocks.7."
      },
      "joint_blocks_8_": {
        "name": "joint_blocks.8."
      },
      "joint_blocks_9_": {
        "name": "joint_blocks.9."
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "pos_embed_": {
        "name": "pos_embed."
      },
      "t_embedder_": {
        "name": "t_embedder."
      },
      "x_embedder_": {
        "name": "x_embedder."
      },
      "y_embedder_": {
        "name": "y_embedder."
      }
    }
  },
  "ModelMergeSDXL": {
    "display_name": "ModelMergeSDXL",
    "inputs": {
      "input_blocks_0": {
        "name": "input_blocks.0"
      },
      "input_blocks_1": {
        "name": "input_blocks.1"
      },
      "input_blocks_2": {
        "name": "input_blocks.2"
      },
      "input_blocks_3": {
        "name": "input_blocks.3"
      },
      "input_blocks_4": {
        "name": "input_blocks.4"
      },
      "input_blocks_5": {
        "name": "input_blocks.5"
      },
      "input_blocks_6": {
        "name": "input_blocks.6"
      },
      "input_blocks_7": {
        "name": "input_blocks.7"
      },
      "input_blocks_8": {
        "name": "input_blocks.8"
      },
      "label_emb_": {
        "name": "label_emb."
      },
      "middle_block_0": {
        "name": "middle_block.0"
      },
      "middle_block_1": {
        "name": "middle_block.1"
      },
      "middle_block_2": {
        "name": "middle_block.2"
      },
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "out_": {
        "name": "out."
      },
      "output_blocks_0": {
        "name": "output_blocks.0"
      },
      "output_blocks_1": {
        "name": "output_blocks.1"
      },
      "output_blocks_2": {
        "name": "output_blocks.2"
      },
      "output_blocks_3": {
        "name": "output_blocks.3"
      },
      "output_blocks_4": {
        "name": "output_blocks.4"
      },
      "output_blocks_5": {
        "name": "output_blocks.5"
      },
      "output_blocks_6": {
        "name": "output_blocks.6"
      },
      "output_blocks_7": {
        "name": "output_blocks.7"
      },
      "output_blocks_8": {
        "name": "output_blocks.8"
      },
      "time_embed_": {
        "name": "time_embed."
      }
    }
  },
  "ModelMergeSimple": {
    "display_name": "ModelMergeSimple",
    "inputs": {
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "ratio": {
        "name": "ratio"
      }
    }
  },
  "ModelMergeSubtract": {
    "display_name": "ModelMergeSubtract",
    "inputs": {
      "model1": {
        "name": "modèle1"
      },
      "model2": {
        "name": "modèle2"
      },
      "multiplier": {
        "name": "multiplicateur"
      }
    }
  },
  "ModelMergeWAN2_1": {
    "description": "Le modèle 1,3B possède 30 blocs, le modèle 14B en possède 40. Le modèle image vers vidéo dispose de l'embedding supplémentaire img_emb.",
    "display_name": "ModelMergeWAN2_1",
    "inputs": {
      "blocks_0_": {
        "name": "blocks.0."
      },
      "blocks_10_": {
        "name": "blocks.10."
      },
      "blocks_11_": {
        "name": "blocks.11."
      },
      "blocks_12_": {
        "name": "blocks.12."
      },
      "blocks_13_": {
        "name": "blocks.13."
      },
      "blocks_14_": {
        "name": "blocks.14."
      },
      "blocks_15_": {
        "name": "blocks.15."
      },
      "blocks_16_": {
        "name": "blocks.16."
      },
      "blocks_17_": {
        "name": "blocks.17."
      },
      "blocks_18_": {
        "name": "blocks.18."
      },
      "blocks_19_": {
        "name": "blocks.19."
      },
      "blocks_1_": {
        "name": "blocks.1."
      },
      "blocks_20_": {
        "name": "blocks.20."
      },
      "blocks_21_": {
        "name": "blocks.21."
      },
      "blocks_22_": {
        "name": "blocks.22."
      },
      "blocks_23_": {
        "name": "blocks.23."
      },
      "blocks_24_": {
        "name": "blocks.24."
      },
      "blocks_25_": {
        "name": "blocks.25."
      },
      "blocks_26_": {
        "name": "blocks.26."
      },
      "blocks_27_": {
        "name": "blocks.27."
      },
      "blocks_28_": {
        "name": "blocks.28."
      },
      "blocks_29_": {
        "name": "blocks.29."
      },
      "blocks_2_": {
        "name": "blocks.2."
      },
      "blocks_30_": {
        "name": "blocks.30."
      },
      "blocks_31_": {
        "name": "blocks.31."
      },
      "blocks_32_": {
        "name": "blocks.32."
      },
      "blocks_33_": {
        "name": "blocks.33."
      },
      "blocks_34_": {
        "name": "blocks.34."
      },
      "blocks_35_": {
        "name": "blocks.35."
      },
      "blocks_36_": {
        "name": "blocks.36."
      },
      "blocks_37_": {
        "name": "blocks.37."
      },
      "blocks_38_": {
        "name": "blocks.38."
      },
      "blocks_39_": {
        "name": "blocks.39."
      },
      "blocks_3_": {
        "name": "blocks.3."
      },
      "blocks_4_": {
        "name": "blocks.4."
      },
      "blocks_5_": {
        "name": "blocks.5."
      },
      "blocks_6_": {
        "name": "blocks.6."
      },
      "blocks_7_": {
        "name": "blocks.7."
      },
      "blocks_8_": {
        "name": "blocks.8."
      },
      "blocks_9_": {
        "name": "blocks.9."
      },
      "head_": {
        "name": "head."
      },
      "img_emb_": {
        "name": "img_emb."
      },
      "model1": {
        "name": "model1"
      },
      "model2": {
        "name": "model2"
      },
      "patch_embedding_": {
        "name": "patch_embedding."
      },
      "text_embedding_": {
        "name": "text_embedding."
      },
      "time_embedding_": {
        "name": "time_embedding."
      },
      "time_projection_": {
        "name": "time_projection."
      }
    }
  },
  "ModelNoiseScale": {
    "display_name": "Échelle de bruit du modèle",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "noise_scale": {
        "name": "échelle_bruit",
        "tooltip": "Échelle absolue du bruit d’entraînement. Par exemple HiDream-O1 base : 8.0, dev : 7.5."
      }
    }
  },
  "ModelPatchLoader": {
    "display_name": "ModelPatchLoader",
    "inputs": {
      "name": {
        "name": "nom"
      }
    }
  },
  "ModelSamplingAuraFlow": {
    "display_name": "ModelSamplingAuraFlow",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "shift": {
        "name": "décalage"
      }
    }
  },
  "ModelSamplingContinuousEDM": {
    "display_name": "ModelSamplingContinuousEDM",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "sampling": {
        "name": "échantillonnage"
      },
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      }
    }
  },
  "ModelSamplingContinuousV": {
    "display_name": "ModelSamplingContinuousV",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "sampling": {
        "name": "échantillonnage"
      },
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      }
    }
  },
  "ModelSamplingDiscrete": {
    "display_name": "ModèleÉchantillonnageDiscret",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "sampling": {
        "name": "échantillonnage"
      },
      "zsnr": {
        "name": "zsnr"
      }
    }
  },
  "ModelSamplingFlux": {
    "display_name": "ModèleÉchantillonnageFlux",
    "inputs": {
      "base_shift": {
        "name": "décalage_base"
      },
      "height": {
        "name": "hauteur"
      },
      "max_shift": {
        "name": "décalage_max"
      },
      "model": {
        "name": "modèle"
      },
      "width": {
        "name": "largeur"
      }
    }
  },
  "ModelSamplingLTXV": {
    "display_name": "ModèleÉchantillonnageLTXV",
    "inputs": {
      "base_shift": {
        "name": "décalage_base"
      },
      "latent": {
        "name": "latent"
      },
      "max_shift": {
        "name": "décalage_max"
      },
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ModelSamplingSD3": {
    "display_name": "ModèleÉchantillonnageSD3",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "shift": {
        "name": "décalage"
      }
    }
  },
  "ModelSamplingStableCascade": {
    "display_name": "ModèleÉchantillonnageStableCascade",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "shift": {
        "name": "décalage"
      }
    }
  },
  "ModelSave": {
    "display_name": "ModèleEnregistrer",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_fichier"
      },
      "model": {
        "name": "modèle"
      }
    }
  },
  "Morphology": {
    "display_name": "ImageMorphologie",
    "inputs": {
      "image": {
        "name": "image"
      },
      "kernel_size": {
        "name": "taille_noyau"
      },
      "operation": {
        "name": "opération"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "MultiGPU_WorkUnits": {
    "description": "Prépare le modèle pour accélérer l’échantillonnage via la division des unités de travail.\n\nDoit être placé après les nœuds qui modifient l’objet modèle lui-même, comme les nœuds de compilation ou de changement d’attention.\n\nÀ l’exception de ces cas, ce nœud peut être placé dans n’importe quel ordre.",
    "display_name": "Division CFG MultiGPU",
    "inputs": {
      "max_gpus": {
        "name": "max_gpus"
      },
      "model": {
        "name": "model"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "NAGuidance": {
    "description": "Applique le Guidage d’Attention Normalisée aux modèles, permettant l’utilisation de prompts négatifs sur les modèles distilled/schnell.",
    "display_name": "Guidage d’Attention Normalisée",
    "inputs": {
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle auquel appliquer NAG."
      },
      "nag_alpha": {
        "name": "alpha_nag",
        "tooltip": "Facteur de fusion pour l’attention normalisée. 1,0 correspond à un remplacement total, 0,0 à aucun effet."
      },
      "nag_scale": {
        "name": "facteur_nag",
        "tooltip": "Le facteur d’échelle du guidage. Des valeurs plus élevées éloignent davantage du prompt négatif."
      },
      "nag_tau": {
        "name": "tau_nag"
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle modifié avec NAG activé."
      }
    }
  },
  "NormalizeImages": {
    "description": "Normaliser les images en utilisant la moyenne et l'écart type.",
    "display_name": "Normaliser les images",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      },
      "mean": {
        "name": "moyenne",
        "tooltip": "Valeur moyenne pour la normalisation."
      },
      "std": {
        "name": "écart_type",
        "tooltip": "Écart type pour la normalisation."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "NormalizeVideoLatentStart": {
    "description": "Normalise les images initiales d’un latent vidéo pour faire correspondre leur moyenne et leur écart type à ceux des images de référence suivantes. Permet de réduire les différences entre les premières images et le reste de la vidéo.",
    "display_name": "NormalizeVideoLatentStart",
    "inputs": {
      "latent": {
        "name": "latent"
      },
      "reference_frame_count": {
        "name": "reference_frame_count",
        "tooltip": "Nombre d’images latentes après les images de départ à utiliser comme référence"
      },
      "start_frame_count": {
        "name": "start_frame_count",
        "tooltip": "Nombre d’images latentes à normaliser, à partir du début"
      }
    },
    "outputs": {
      "0": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "OpenAIChatConfig": {
    "description": "Permet de spécifier des options de configuration avancées pour les nœuds de chat OpenAI.",
    "display_name": "Options avancées OpenAI ChatGPT",
    "inputs": {
      "instructions": {
        "name": "instructions",
        "tooltip": "Instructions pour le modèle sur la façon de générer la réponse"
      },
      "max_output_tokens": {
        "name": "jetons_sortie_max",
        "tooltip": "Une limite supérieure pour le nombre de jetons pouvant être générés pour une réponse, incluant les jetons de sortie visibles"
      },
      "truncation": {
        "name": "troncature",
        "tooltip": "La stratégie de troncature à utiliser pour la réponse du modèle. auto : Si le contexte de cette réponse et des précédentes dépasse la taille de la fenêtre de contexte du modèle, le modèle tronquera la réponse pour s'adapter à la fenêtre de contexte en supprimant des éléments d'entrée au milieu de la conversation. désactivé : Si une réponse du modèle dépasse la taille de la fenêtre de contexte pour un modèle, la requête échouera avec une erreur 400"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIChatNode": {
    "description": "Générer des réponses textuelles à partir d'un modèle OpenAI.",
    "display_name": "OpenAI ChatGPT",
    "inputs": {
      "advanced_options": {
        "name": "options_avancées",
        "tooltip": "Configuration optionnelle pour le modèle. Accepte les entrées du nœud Options avancées de chat OpenAI."
      },
      "files": {
        "name": "fichiers",
        "tooltip": "Fichier(s) optionnel(s) à utiliser comme contexte pour le modèle. Accepte les entrées du nœud Fichiers d'entrée de chat OpenAI."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) optionnelle(s) à utiliser comme contexte pour le modèle. Pour inclure plusieurs images, vous pouvez utiliser le nœud Images par lot."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle utilisé pour générer la réponse"
      },
      "persist_context": {
        "name": "conserver_contexte",
        "tooltip": "Ce paramètre est obsolète et n'a aucun effet."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Entrées textuelles pour le modèle, utilisées pour générer une réponse."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIDalle2": {
    "description": "Génère des images de façon synchrone via l’endpoint DALL·E 2 d’OpenAI.",
    "display_name": "OpenAI DALL·E 2",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence optionnelle pour l’édition d’image."
      },
      "mask": {
        "name": "mask",
        "tooltip": "Masque optionnel pour l’inpainting (les zones blanches seront remplacées)"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d’images à générer"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour DALL·E"
      },
      "seed": {
        "name": "seed",
        "tooltip": "pas encore implémenté côté backend"
      },
      "size": {
        "name": "taille",
        "tooltip": "Taille de l’image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIDalle3": {
    "description": "Génère des images de manière synchrone via l’endpoint DALL·E 3 d’OpenAI.",
    "display_name": "OpenAI DALL·E 3",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour DALL·E"
      },
      "quality": {
        "name": "qualité",
        "tooltip": "Qualité de l’image"
      },
      "seed": {
        "name": "seed",
        "tooltip": "pas encore implémenté côté backend"
      },
      "size": {
        "name": "taille",
        "tooltip": "Taille de l’image"
      },
      "style": {
        "name": "style",
        "tooltip": "Vivid pousse le modèle à générer des images hyper-réalistes et dramatiques. Natural fait produire au modèle des images plus naturelles, moins hyper-réalistes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIGPTImage1": {
    "description": "Génère des images de manière synchrone via l'endpoint GPT Image 2 d'OpenAI.",
    "display_name": "OpenAI GPT Image 2",
    "inputs": {
      "background": {
        "name": "arrière-plan",
        "tooltip": "Retourner l'image avec ou sans arrière-plan"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "custom_height": {
        "name": "hauteur_personnalisée",
        "tooltip": "Utilisé uniquement lorsque `size` est défini sur « Personnalisé ». Doit être un multiple de 16 (GPT Image 2 uniquement)."
      },
      "custom_width": {
        "name": "largeur_personnalisée",
        "tooltip": "Utilisé uniquement lorsque `size` est défini sur « Personnalisé ». Doit être un multiple de 16 (GPT Image 2 uniquement)."
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence optionnelle pour l'édition d'image."
      },
      "mask": {
        "name": "mask",
        "tooltip": "Masque optionnel pour l'inpainting (les zones blanches seront remplacées)"
      },
      "model": {
        "name": "model"
      },
      "n": {
        "name": "n",
        "tooltip": "Combien d'images générer"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour GPT Image 2"
      },
      "quality": {
        "name": "qualité",
        "tooltip": "Qualité de l'image, affecte le coût et le temps de génération."
      },
      "seed": {
        "name": "seed",
        "tooltip": "pas encore implémenté côté backend"
      },
      "size": {
        "name": "taille",
        "tooltip": "Taille de l'image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIGPTImageNodeV2": {
    "description": "Génère des images via l’API GPT Image d’OpenAI.",
    "display_name": "OpenAI GPT Image 2",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_background": {
        "name": "arrière-plan"
      },
      "model_custom_height": {
        "name": "hauteur_personnalisée"
      },
      "model_custom_width": {
        "name": "largeur_personnalisée"
      },
      "model_quality": {
        "name": "qualité"
      },
      "model_size": {
        "name": "taille"
      },
      "n": {
        "name": "n",
        "tooltip": "Combien d’images générer"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt textuel pour GPT Image"
      },
      "seed": {
        "name": "graine",
        "tooltip": "non implémenté côté serveur pour le moment"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIInputFiles": {
    "description": "Charge et prépare les fichiers d'entrée (texte, pdf, etc.) à inclure comme entrées pour le nœud de chat OpenAI. Les fichiers seront lus par le modèle OpenAI lors de la génération d'une réponse. 🛈 ASTUCE : Peut être chaîné avec d'autres nœuds de fichiers d'entrée OpenAI.",
    "display_name": "Fichiers d'entrée OpenAI ChatGPT",
    "inputs": {
      "OPENAI_INPUT_FILES": {
        "name": "FICHIERS_ENTRÉE_OPENAI",
        "tooltip": "Un ou plusieurs fichiers supplémentaires optionnels à regrouper avec le fichier chargé depuis ce nœud. Permet d'enchaîner les fichiers d'entrée afin qu'un seul message puisse inclure plusieurs fichiers d'entrée."
      },
      "file": {
        "name": "fichier",
        "tooltip": "Fichiers d'entrée à inclure comme contexte pour le modèle. N'accepte pour l'instant que les fichiers texte (.txt) et PDF (.pdf)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenAIVideoSora2": {
    "description": "Génération de vidéo et audio OpenAI.",
    "display_name": "OpenAI Sora - Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Texte guide ; peut être vide si une image d'entrée est présente."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être réexécuté ; les résultats réels sont non déterministes quelle que soit la graine."
      },
      "size": {
        "name": "taille"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpenRouterLLMNode": {
    "description": "Générer des réponses textuelles via OpenRouter. Redirige vers un ensemble sélectionné de modèles populaires de xAI, DeepSeek, Qwen, Mistral, Z.AI (GLM), Moonshot (Kimi) et Perplexity Sonar.",
    "display_name": "OpenRouter LLM",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "model": {
        "name": "model",
        "tooltip": "Le modèle OpenRouter utilisé pour générer la réponse."
      },
      "model_reasoning_effort": {
        "name": "reasoning_effort"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Entrée textuelle pour le modèle."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour l'échantillonnage. Mettre à 0 pour omettre. La plupart des modèles considèrent ceci comme une indication seulement."
      },
      "system_prompt": {
        "name": "system_prompt",
        "tooltip": "Instructions fondamentales qui dictent le comportement du modèle."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OpticalFlowLoader": {
    "display_name": "Charger le modèle de flux optique",
    "inputs": {
      "model_name": {
        "name": "model_name",
        "tooltip": "Modèle de flux optique à charger. Les fichiers doivent être placés dans le dossier 'optical_flow'. Actuellement, seul raft_large.pth de torchvision est pris en charge."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "OptimalStepsScheduler": {
    "display_name": "OptimalStepsScheduler",
    "inputs": {
      "denoise": {
        "name": "réduction du bruit"
      },
      "model_type": {
        "name": "model_type"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Painter": {
    "display_name": "Peintre",
    "inputs": {
      "bg_color": {
        "name": "couleur de fond"
      },
      "height": {
        "name": "hauteur"
      },
      "image": {
        "name": "image",
        "tooltip": "Image de base optionnelle sur laquelle peindre"
      },
      "mask": {
        "name": "mask"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "PairConditioningCombine": {
    "display_name": "Cond Pair Combiner",
    "inputs": {
      "negative_A": {
        "name": "negative_A"
      },
      "negative_B": {
        "name": "negative_B"
      },
      "positive_A": {
        "name": "positive_A"
      },
      "positive_B": {
        "name": "positive_B"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "negative"
      }
    }
  },
  "PairConditioningSetDefaultCombine": {
    "display_name": "Cond Pair Définir Combiner par Défaut",
    "inputs": {
      "hooks": {
        "name": "hooks"
      },
      "negative": {
        "name": "negative"
      },
      "negative_DEFAULT": {
        "name": "negative_DEFAULT"
      },
      "positive": {
        "name": "positive"
      },
      "positive_DEFAULT": {
        "name": "positive_DEFAULT"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "negative"
      }
    }
  },
  "PairConditioningSetProperties": {
    "display_name": "Cond Pair Définir Propriétés",
    "inputs": {
      "hooks": {
        "name": "hooks"
      },
      "mask": {
        "name": "masque"
      },
      "negative_NEW": {
        "name": "negative_NEW"
      },
      "positive_NEW": {
        "name": "positive_NEW"
      },
      "set_cond_area": {
        "name": "définir_zone_cond"
      },
      "strength": {
        "name": "force"
      },
      "timesteps": {
        "name": "pas_de_temps"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "negative"
      }
    }
  },
  "PairConditioningSetPropertiesAndCombine": {
    "display_name": "Cond Pair Set Props Combine",
    "inputs": {
      "hooks": {
        "name": "crochets"
      },
      "mask": {
        "name": "masque"
      },
      "negative": {
        "name": "negative"
      },
      "negative_NEW": {
        "name": "negative_NEW"
      },
      "positive": {
        "name": "positive"
      },
      "positive_NEW": {
        "name": "positive_NEW"
      },
      "set_cond_area": {
        "name": "set_cond_area"
      },
      "strength": {
        "name": "force"
      },
      "timesteps": {
        "name": "pas de temps"
      }
    },
    "outputs": {
      "0": {
        "name": "positive"
      },
      "1": {
        "name": "negative"
      }
    }
  },
  "PatchModelAddDownscale": {
    "display_name": "PatchModelAddDownscale (Kohya Deep Shrink)",
    "inputs": {
      "block_number": {
        "name": "numéro de bloc"
      },
      "downscale_after_skip": {
        "name": "réduction après saut"
      },
      "downscale_factor": {
        "name": "facteur de réduction"
      },
      "downscale_method": {
        "name": "méthode de réduction"
      },
      "end_percent": {
        "name": "pourcentage de fin"
      },
      "model": {
        "name": "modèle"
      },
      "start_percent": {
        "name": "pourcentage de départ"
      },
      "upscale_method": {
        "name": "méthode d'agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PerpNeg": {
    "display_name": "Perp-Neg (OBSOLÈTE par PerpNegGuider)",
    "inputs": {
      "empty_conditioning": {
        "name": "conditionnement vide"
      },
      "model": {
        "name": "modèle"
      },
      "neg_scale": {
        "name": "échelle nég"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PerpNegGuider": {
    "display_name": "PerpNegGuider",
    "inputs": {
      "cfg": {
        "name": "cfg"
      },
      "empty_conditioning": {
        "name": "conditionnement vide"
      },
      "model": {
        "name": "modèle"
      },
      "neg_scale": {
        "name": "échelle nég"
      },
      "negative": {
        "name": "négative"
      },
      "positive": {
        "name": "positive"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PerturbedAttentionGuidance": {
    "display_name": "PerturbedAttentionGuidance",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "scale": {
        "name": "échelle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PhotoMakerEncode": {
    "display_name": "PhotoMakerEncode",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "image": {
        "name": "image"
      },
      "photomaker": {
        "name": "photomaker"
      },
      "text": {
        "name": "texte"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PhotoMakerLoader": {
    "display_name": "PhotoMakerLoader",
    "inputs": {
      "photomaker_model_name": {
        "name": "nom_du_modèle_photomaker"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PiDConditioning": {
    "description": "Associe un latent et un scalaire degrade_sigma à un CONDITIONING pour le décodage/agrandissement PiD",
    "display_name": "PiD Conditionnement",
    "inputs": {
      "degrade_sigma": {
        "name": "degrade_sigma",
        "tooltip": "0 = latent propre. Augmentez pour débruiter les sorties latentes corrompues."
      },
      "latent": {
        "name": "latent",
        "tooltip": "latent (depuis VAEEncode ou un KSampler)."
      },
      "latent_format": {
        "name": "format latent",
        "tooltip": "Les latents Flux1 et Flux2 sont détectés automatiquement à partir de la dimension du canal, sd3 doit être sélectionné manuellement."
      },
      "positive": {
        "name": "positif"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PixverseImageToVideoNode": {
    "description": "Génère des vidéos de manière synchrone à partir du prompt et de la taille de sortie.",
    "display_name": "PixVerse Image vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration_seconds": {
        "name": "durée_secondes"
      },
      "image": {
        "name": "image"
      },
      "motion_mode": {
        "name": "mode_mouvement"
      },
      "negative_prompt": {
        "name": "prompt_négatif",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "pixverse_template": {
        "name": "modèle_pixverse",
        "tooltip": "Un modèle optionnel pour influencer le style de génération, créé par le nœud PixVerse Template."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération de la vidéo"
      },
      "quality": {
        "name": "qualité"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération de la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PixverseTemplateNode": {
    "display_name": "Modèle PixVerse",
    "inputs": {
      "template": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_pixverse",
        "tooltip": null
      }
    }
  },
  "PixverseTextToVideoNode": {
    "description": "Génère des vidéos de manière synchrone à partir d'un prompt et d'une taille de sortie.",
    "display_name": "PixVerse Texte en Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration_seconds": {
        "name": "durée (secondes)"
      },
      "motion_mode": {
        "name": "mode de mouvement"
      },
      "negative_prompt": {
        "name": "prompt négatif",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "pixverse_template": {
        "name": "modèle PixVerse",
        "tooltip": "Un modèle optionnel pour influencer le style de génération, créé par le nœud Modèle PixVerse."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération de la vidéo"
      },
      "quality": {
        "name": "qualité"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération de la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PixverseTransitionVideoNode": {
    "description": "Génère des vidéos de manière synchrone selon le prompt et la taille de sortie.",
    "display_name": "PixVerse Transition Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration_seconds": {
        "name": "durée (secondes)"
      },
      "first_frame": {
        "name": "première image"
      },
      "last_frame": {
        "name": "dernière image"
      },
      "motion_mode": {
        "name": "mode de mouvement"
      },
      "negative_prompt": {
        "name": "prompt négatif",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération de la vidéo"
      },
      "quality": {
        "name": "qualité"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour la génération de la vidéo."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PolyexponentialScheduler": {
    "display_name": "PolyexponentialScheduler",
    "inputs": {
      "rho": {
        "name": "rho"
      },
      "sigma_max": {
        "name": "sigma_max"
      },
      "sigma_min": {
        "name": "sigma_min"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PorterDuffImageComposite": {
    "display_name": "Composite d'image Porter-Duff",
    "inputs": {
      "destination": {
        "name": "destination"
      },
      "destination_alpha": {
        "name": "alpha_destination"
      },
      "mode": {
        "name": "mode"
      },
      "source": {
        "name": "source"
      },
      "source_alpha": {
        "name": "alpha_source"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "Preview3D": {
    "description": "Prévisualisez un fichier de modèle 3D sans l'enregistrer dans le répertoire de sortie ComfyUI.",
    "display_name": "Aperçu 3D",
    "inputs": {
      "bg_image": {
        "name": "bg_image"
      },
      "camera_info": {
        "name": "informations_de_camera"
      },
      "image": {
        "name": "image"
      },
      "model_file": {
        "name": "fichier_modèle",
        "tooltip": "Fichier modèle 3D ou chemin d’accès"
      }
    }
  },
  "Preview3DAdvanced": {
    "description": "Prévisualisez un fichier de modèle 3D sans l'enregistrer dans le répertoire de sortie ComfyUI.",
    "display_name": "Aperçu 3D (Avancé)",
    "inputs": {
      "camera_info": {
        "name": "infos_caméra"
      },
      "height": {
        "name": "hauteur"
      },
      "model_3d": {
        "name": "modèle 3D",
        "tooltip": "Fichier de modèle 3D provenant d’un nœud 3D en amont."
      },
      "model_3d_info": {
        "name": "infos_modèle_3d"
      },
      "viewport_state": {
        "name": "état de la vue"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "infos_caméra",
        "tooltip": null
      },
      "2": {
        "name": "infos_modèle_3d",
        "tooltip": null
      },
      "3": {
        "name": "largeur",
        "tooltip": null
      },
      "4": {
        "name": "hauteur",
        "tooltip": null
      }
    }
  },
  "PreviewAny": {
    "description": "Prévisualisez n'importe quelle valeur d'entrée sous forme de texte.",
    "display_name": "Aperçu de n'importe quel",
    "inputs": {
      "preview_mode": {},
      "preview_text": {},
      "source": {
        "name": "source"
      }
    }
  },
  "PreviewAudio": {
    "description": "Prévisualisez l'audio sans l'enregistrer dans le répertoire de sortie ComfyUI.",
    "display_name": "AperçuAudio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audioUI": {
        "name": "audioUI"
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "PreviewGaussianSplat": {
    "description": "Prévisualisez un fichier 3D gaussian splat sans l'enregistrer dans le répertoire de sortie ComfyUI.",
    "display_name": "Aperçu Splat",
    "inputs": {
      "camera_info": {
        "name": "info_caméra"
      },
      "height": {
        "name": "hauteur"
      },
      "model_3d": {
        "name": "modèle_3d",
        "tooltip": "Un fichier 3D gaussian splat."
      },
      "model_3d_info": {
        "name": "info_modèle_3d"
      },
      "viewport_state": {
        "name": "état_vue"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_3d",
        "tooltip": null
      },
      "1": {
        "name": "info_modèle_3d",
        "tooltip": null
      },
      "2": {
        "name": "info_caméra",
        "tooltip": null
      },
      "3": {
        "name": "largeur",
        "tooltip": null
      },
      "4": {
        "name": "hauteur",
        "tooltip": null
      }
    }
  },
  "PreviewImage": {
    "description": "Enregistre les images d'entrée dans votre répertoire de sortie ComfyUI.",
    "display_name": "Aperçu Image",
    "inputs": {
      "images": {
        "name": "images"
      }
    },
    "outputs": {
      "0": {
        "name": "images"
      }
    }
  },
  "PreviewPointCloud": {
    "description": "Prévisualisez un fichier 3D de nuage de points sans l'enregistrer dans le répertoire de sortie ComfyUI.",
    "display_name": "Aperçu Nuage de Points",
    "inputs": {
      "camera_info": {
        "name": "info_caméra"
      },
      "height": {
        "name": "hauteur"
      },
      "model_3d": {
        "name": "modèle_3d",
        "tooltip": "Fichier nuage de points (.ply)"
      },
      "model_3d_info": {
        "name": "info_modèle_3d"
      },
      "viewport_state": {
        "name": "état_vue"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_3d",
        "tooltip": null
      },
      "1": {
        "name": "info_modèle_3d",
        "tooltip": null
      },
      "2": {
        "name": "info_caméra",
        "tooltip": null
      },
      "3": {
        "name": "largeur",
        "tooltip": null
      },
      "4": {
        "name": "hauteur",
        "tooltip": null
      }
    }
  },
  "PrimitiveBoolean": {
    "display_name": "Booléen",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PrimitiveBoundingBox": {
    "display_name": "Boîte englobante",
    "inputs": {
      "height": {
        "name": "height"
      },
      "width": {
        "name": "width"
      },
      "x": {
        "name": "x"
      },
      "y": {
        "name": "y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PrimitiveFloat": {
    "display_name": "Flottant",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PrimitiveInt": {
    "display_name": "Int",
    "inputs": {
      "fixed": {
        "name": "contrôle après génération"
      },
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PrimitiveString": {
    "display_name": "Chaîne",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "PrimitiveStringMultiline": {
    "display_name": "Chaîne (multiligne)",
    "inputs": {
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "QuadrupleCLIPLoader": {
    "description": "[Recettes]\n\nhidream : long clip-l, long clip-g, t5xxl, llama_8b_3.1_instruct",
    "display_name": "QuadrupleCLIPLoader",
    "inputs": {
      "clip_name1": {
        "name": "clip_name1"
      },
      "clip_name2": {
        "name": "clip_name2"
      },
      "clip_name3": {
        "name": "clip_name3"
      },
      "clip_name4": {
        "name": "clip_name4"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "QuiverImageToSVGNode": {
    "description": "Vectorisez une image matricielle en SVG à l'aide de Quiver AI.",
    "display_name": "Quiver Image vers SVG",
    "inputs": {
      "auto_crop": {
        "name": "auto_crop",
        "tooltip": "Rogner automatiquement sur le sujet principal."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "image": {
        "name": "image",
        "tooltip": "Image d'entrée à vectoriser."
      },
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la vectorisation SVG."
      },
      "model_presence_penalty": {
        "name": "presence_penalty"
      },
      "model_target_size": {
        "name": "target_size"
      },
      "model_temperature": {
        "name": "temperature"
      },
      "model_top_p": {
        "name": "top_p"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "QuiverTextToSVGNode": {
    "description": "Générez un SVG à partir d'une invite textuelle avec Quiver AI.",
    "display_name": "Quiver Texte vers SVG",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "instructions": {
        "name": "instructions",
        "tooltip": "Conseils supplémentaires de style ou de mise en forme."
      },
      "model": {
        "name": "model",
        "tooltip": "Modèle à utiliser pour la génération du SVG."
      },
      "model_presence_penalty": {
        "name": "presence_penalty"
      },
      "model_temperature": {
        "name": "temperature"
      },
      "model_top_p": {
        "name": "top_p"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Description textuelle du SVG souhaité."
      },
      "reference_images": {
        "name": "reference_images",
        "tooltip": "Jusqu'à 4 images de référence pour guider la génération."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "QwenImageDiffsynthControlnet": {
    "display_name": "QwenImageDiffsynthControlnet",
    "inputs": {
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "masque"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "correctif_modèle"
      },
      "strength": {
        "name": "intensité"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "RTDETR_detect": {
    "display_name": "Détection RT-DETR",
    "inputs": {
      "class_name": {
        "name": "class_name",
        "tooltip": "Filtrer les détections par classe. Définir sur 'all' pour désactiver le filtrage."
      },
      "image": {
        "name": "image"
      },
      "max_detections": {
        "name": "max_detections",
        "tooltip": "Nombre maximal de détections à retourner par image. Par ordre décroissant du score de confiance."
      },
      "model": {
        "name": "model"
      },
      "threshold": {
        "name": "threshold"
      }
    },
    "outputs": {
      "0": {
        "name": "bboxes",
        "tooltip": null
      }
    }
  },
  "RandomCropImages": {
    "description": "Rogner aléatoirement une image selon les dimensions spécifiées.",
    "display_name": "Rogner aléatoirement des images",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "height": {
        "name": "height",
        "tooltip": "Hauteur du rognage."
      },
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine aléatoire."
      },
      "width": {
        "name": "width",
        "tooltip": "Largeur du rognage."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "RandomNoise": {
    "display_name": "BruitAléatoire",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "noise_seed": {
        "name": "graine_de_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RebatchImages": {
    "display_name": "Rebatch Images",
    "inputs": {
      "batch_size": {
        "name": "taille_de_lot"
      },
      "images": {
        "name": "images"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RebatchLatents": {
    "display_name": "Rebatch Latents",
    "inputs": {
      "batch_size": {
        "name": "taille_de_lot"
      },
      "latents": {
        "name": "latents"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecordAudio": {
    "display_name": "Enregistrer l'audio",
    "inputs": {
      "audio": {
        "name": "audio"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftColorRGB": {
    "description": "Créez une couleur Recraft en choisissant des valeurs RGB spécifiques.",
    "display_name": "Recraft Couleur RGB",
    "inputs": {
      "b": {
        "name": "b",
        "tooltip": "Valeur bleue de la couleur."
      },
      "g": {
        "name": "g",
        "tooltip": "Valeur verte de la couleur."
      },
      "r": {
        "name": "r",
        "tooltip": "Valeur rouge de la couleur."
      },
      "recraft_color": {
        "name": "recraft_color"
      }
    },
    "outputs": {
      "0": {
        "name": "recraft_color",
        "tooltip": null
      }
    }
  },
  "RecraftControls": {
    "description": "Créez des contrôles Recraft pour personnaliser la génération Recraft.",
    "display_name": "Contrôles Recraft",
    "inputs": {
      "background_color": {
        "name": "couleur_de_fond"
      },
      "colors": {
        "name": "couleurs"
      }
    },
    "outputs": {
      "0": {
        "name": "contrôles_recraft",
        "tooltip": null
      }
    }
  },
  "RecraftCreateStyleNode": {
    "description": "Créez un style personnalisé à partir d’images de référence. Téléchargez 1 à 5 images à utiliser comme références de style. La taille totale de toutes les images est limitée à 5 Mo.",
    "display_name": "Créer un style Recraft",
    "inputs": {
      "images": {
        "name": "images"
      },
      "style": {
        "name": "style",
        "tooltip": "Le style de base des images générées."
      }
    },
    "outputs": {
      "0": {
        "name": "style_id",
        "tooltip": null
      }
    }
  },
  "RecraftCreativeUpscaleNode": {
    "description": "Agrandit l'image de manière synchrone.\nAméliore une image matricielle donnée à l'aide de l'outil « creative upscale », augmentant la résolution avec un accent sur l'affinement des petits détails et des visages.",
    "display_name": "Recraft Creative Upscale Image",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftCrispUpscaleNode": {
    "description": "Agrandit l’image de façon synchrone.\nAméliore une image matricielle donnée à l’aide de l’outil « crisp upscale », en augmentant la résolution et en rendant l’image plus nette et plus propre.",
    "display_name": "Recraft Crisp Upscale Image",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftImageInpaintingNode": {
    "description": "Modifiez l’image selon l’invite et le mask.",
    "display_name": "Recraft Image Inpainting",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "mask"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d’images à générer."
      },
      "negative_prompt": {
        "name": "invite négative",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d’image."
      },
      "recraft_style": {
        "name": "recraft_style"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftImageToImageNode": {
    "description": "Modifiez l'image en fonction de l'invite et de l'intensité.",
    "display_name": "Recraft Image vers Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d'images à générer."
      },
      "negative_prompt": {
        "name": "invite_négative",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d'image."
      },
      "recraft_controls": {
        "name": "recraft_controls",
        "tooltip": "Contrôles supplémentaires optionnels sur la génération via le nœud Recraft Controls."
      },
      "recraft_style": {
        "name": "recraft_style"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      },
      "strength": {
        "name": "intensité",
        "tooltip": "Définit la différence avec l'image originale, doit être comprise entre [0, 1], où 0 signifie presque identique et 1 signifie une similarité très faible."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftRemoveBackgroundNode": {
    "description": "Supprime l'arrière-plan de l'image et retourne l'image traitée ainsi que le masque.",
    "display_name": "Recraft Remove Background",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "RecraftReplaceBackgroundNode": {
    "description": "Remplace l’arrière-plan d’une image, selon l’invite fournie.",
    "display_name": "Recraft Remplacer l’arrière-plan",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d’images à générer."
      },
      "negative_prompt": {
        "name": "invite négative",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite pour la génération d’image."
      },
      "recraft_style": {
        "name": "recraft_style"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes, quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftStyleV3DigitalIllustration": {
    "description": "Sélectionnez le style realistic_image et un sous-style optionnel.",
    "display_name": "Style Recraft - Illustration numérique",
    "inputs": {
      "substyle": {
        "name": "sous-style"
      }
    },
    "outputs": {
      "0": {
        "name": "recraft_style",
        "tooltip": null
      }
    }
  },
  "RecraftStyleV3InfiniteStyleLibrary": {
    "description": "Sélectionnez un style basé sur l'UUID préexistant de la Infinite Style Library de Recraft.",
    "display_name": "Recraft Style - Infinite Style Library",
    "inputs": {
      "style_id": {
        "name": "style_id",
        "tooltip": "UUID du style provenant de la Infinite Style Library."
      }
    },
    "outputs": {
      "0": {
        "name": "recraft_style",
        "tooltip": null
      }
    }
  },
  "RecraftStyleV3LogoRaster": {
    "description": "Sélectionnez le style realistic_image et un sous-style optionnel.",
    "display_name": "Recraft Style - Logo Raster",
    "inputs": {
      "substyle": {
        "name": "sous-style"
      }
    },
    "outputs": {
      "0": {
        "name": "recraft_style",
        "tooltip": null
      }
    }
  },
  "RecraftStyleV3RealisticImage": {
    "description": "Sélectionnez le style realistic_image et un sous-style optionnel.",
    "display_name": "Recraft Style - Image réaliste",
    "inputs": {
      "substyle": {
        "name": "sous-style"
      }
    },
    "outputs": {
      "0": {
        "name": "recraft_style",
        "tooltip": null
      }
    }
  },
  "RecraftTextToImageNode": {
    "description": "Génère des images de manière synchrone à partir d'une invite et d'une résolution.",
    "display_name": "Recraft Texte en Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "n": {
        "name": "n",
        "tooltip": "Le nombre d'images à générer."
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite pour la génération d'image."
      },
      "recraft_controls": {
        "name": "recraft_controls",
        "tooltip": "Contrôles supplémentaires optionnels sur la génération via le nœud Recraft Controls."
      },
      "recraft_style": {
        "name": "recraft_style"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes, quelle que soit la graine."
      },
      "size": {
        "name": "taille",
        "tooltip": "La taille de l'image générée."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftTextToVectorNode": {
    "description": "Génère un SVG de manière synchrone à partir du prompt et de la résolution.",
    "display_name": "Recraft Texte vers Vecteur",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "n": {
        "name": "n",
        "tooltip": "Le nombre d'images à générer."
      },
      "negative_prompt": {
        "name": "prompt négatif",
        "tooltip": "Une description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d'image."
      },
      "recraft_controls": {
        "name": "recraft_controls",
        "tooltip": "Contrôles supplémentaires optionnels sur la génération via le nœud Recraft Controls."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour déterminer si le nœud doit être relancé ; les résultats réels sont non déterministes quel que soit le seed."
      },
      "size": {
        "name": "taille",
        "tooltip": "La taille de l'image générée."
      },
      "substyle": {
        "name": "sous-style"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftV4TextToImageNode": {
    "description": "Génère des images à l’aide des modèles Recraft V4 ou V4 Pro.",
    "display_name": "Recraft V4 Texte vers Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle à utiliser pour la génération."
      },
      "model_size": {
        "name": "taille"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d’images à générer."
      },
      "negative_prompt": {
        "name": "prompt_négatif",
        "tooltip": "Description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d’image. Maximum 10 000 caractères."
      },
      "recraft_controls": {
        "name": "recraft_controls",
        "tooltip": "Contrôles supplémentaires optionnels sur la génération via le nœud Recraft Controls."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftV4TextToVectorNode": {
    "description": "Génère des SVG à l’aide des modèles Recraft V4 ou V4 Pro.",
    "display_name": "Recraft V4 Texte vers Vectoriel",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle à utiliser pour la génération."
      },
      "model_size": {
        "name": "taille"
      },
      "n": {
        "name": "n",
        "tooltip": "Nombre d’images à générer."
      },
      "negative_prompt": {
        "name": "prompt_négatif",
        "tooltip": "Description textuelle optionnelle des éléments indésirables sur une image."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt pour la génération d’image. Maximum 10 000 caractères."
      },
      "recraft_controls": {
        "name": "recraft_controls",
        "tooltip": "Contrôles supplémentaires optionnels sur la génération via le nœud Recraft Controls."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour déterminer si le nœud doit être relancé ; les résultats réels restent non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RecraftVectorizeImageNode": {
    "description": "Génère un SVG de manière synchrone à partir d'une image d'entrée.",
    "display_name": "Vectoriser une image avec Recraft",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ReferenceLatent": {
    "description": "Ce nœud définit le latent de guidage pour un modèle d'édition. Si le modèle le prend en charge, vous pouvez en chaîner plusieurs pour définir plusieurs images de référence.",
    "display_name": "LatentDeRéférence",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "latent": {
        "name": "latent"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ReferenceTimbreAudio": {
    "description": "Ce nœud définit l’audio de référence pour le timbre (pour ace step 1.5)",
    "display_name": "ReferenceTimbreAudio",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "latent": {
        "name": "latent"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RegexExtract": {
    "display_name": "Extraire par Regex",
    "inputs": {
      "case_insensitive": {
        "name": "insensible_à_la_casse"
      },
      "dotall": {
        "name": "dotall"
      },
      "group_index": {
        "name": "index_groupe"
      },
      "mode": {
        "name": "mode"
      },
      "multiline": {
        "name": "multiligne"
      },
      "regex_pattern": {
        "name": "motif_regex"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RegexMatch": {
    "display_name": "Correspondance Regex",
    "inputs": {
      "case_insensitive": {
        "name": "insensible_à_la_casse"
      },
      "dotall": {
        "name": "dotall"
      },
      "multiline": {
        "name": "multiligne"
      },
      "regex_pattern": {
        "name": "motif_regex"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "name": "correspondances",
        "tooltip": null
      }
    }
  },
  "RegexReplace": {
    "description": "Rechercher et remplacer du texte à l'aide de motifs regex.",
    "display_name": "Remplacer par Regex",
    "inputs": {
      "case_insensitive": {
        "name": "insensible à la casse"
      },
      "count": {
        "name": "nombre",
        "tooltip": "Nombre maximum de remplacements à effectuer. Réglez sur 0 pour remplacer toutes les occurrences (par défaut). Réglez sur 1 pour remplacer uniquement la première correspondance, 2 pour les deux premières correspondances, etc."
      },
      "dotall": {
        "name": "dotall",
        "tooltip": "Lorsqu'activé, le point (.) correspondra à n'importe quel caractère y compris les caractères de nouvelle ligne. Lorsque désactivé, les points ne correspondront pas aux nouvelles lignes."
      },
      "multiline": {
        "name": "multiligne"
      },
      "regex_pattern": {
        "name": "motif_regex"
      },
      "replace": {
        "name": "remplacer"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RemoveBackground": {
    "description": "Génère un masque de premier plan pour supprimer l'arrière-plan d'une image à l'aide d'un modèle de suppression d'arrière-plan.",
    "display_name": "Supprimer l’arrière-plan",
    "inputs": {
      "bg_removal_model": {
        "name": "modèle_de_suppression_arrière-plan",
        "tooltip": "Modèle de suppression d’arrière-plan utilisé pour générer le masque"
      },
      "image": {
        "name": "image",
        "tooltip": "Image d’entrée dont l’arrière-plan doit être supprimé"
      }
    },
    "outputs": {
      "0": {
        "name": "masque",
        "tooltip": "Masque de premier plan généré"
      }
    }
  },
  "RenderSplat": {
    "description": "Rendez une projection gaussienne sous forme d’image avec un rasteriseur EWA anisotrope (splats elliptiques orientés, anti-aliasés, triés en profondeur de l’avant vers l’arrière). La caméra provient d’une entrée camera_info (Load / Preview 3D, ou un nœud Create Camera Info) ; laissez vide pour cadrer automatiquement le splat. Définissez frames supérieur à 1 pour générer une séquence d’images (tour de plateau) à utiliser dans un nœud Vidéo.",
    "display_name": "Render Splat",
    "inputs": {
      "background": {
        "name": "arrière-plan"
      },
      "bg_image": {
        "name": "image_fond",
        "tooltip": "Image de fond optionnelle composée derrière le splat (remplace la couleur d’arrière-plan unie). Redimensionnée à la taille du rendu ; une séquence est utilisée par image, une seule image pour toutes. Uniquement pour color/argile."
      },
      "camera_info": {
        "name": "camera_info",
        "tooltip": "Caméra à utiliser pour le rendu – une caméra Load3D / Preview3D ou un nœud Create Camera Info. Si vide, le splat est cadré automatiquement depuis une vue 3/4 par défaut."
      },
      "frames": {
        "name": "images",
        "tooltip": "-1, 0, 1 = image fixe unique ; >1 = tour de plateau, la caméra effectue une orbite complète à 360° (fonctionne avec n’importe quel camera_info). Une valeur négative fait tourner dans l’autre sens."
      },
      "headlight_shading": {
        "name": "ombrage_phare",
        "tooltip": "Ombrage diffus depuis une lumière placée à la caméra (phare), utilisant les normales surfel du splat : assombrit les surfaces qui s’éloignent du point de vue pour révéler la forme/la courbure. 0 = albédo uniforme, 1 = ombrage maximal."
      },
      "height": {
        "name": "hauteur"
      },
      "opacity_threshold": {
        "name": "seuil_opacité",
        "tooltip": "Élimine les gaussiennes dont l’opacité est inférieure à ce seuil (supprime les éléments flottants faibles)."
      },
      "render_style": {
        "name": "style_rendu",
        "tooltip": "Ce que l’image produite affiche : couleur, argile (ombrage neutre-albédo), profondeur (proche=clair), normal (carte de normales OpenGL)."
      },
      "sharpen": {
        "name": "accentuer",
        "tooltip": "Accentue les splats qui se chevauchent : 1,0 = mélange physiquement correct ; une valeur plus élevée accentue chaque pixel vers son splat dominant (le plus proche) pour une texture plus nette, sans réduire la taille des splats ni créer d’espaces. Non physique au-dessus de 1."
      },
      "splat": {
        "name": "splat"
      },
      "splat_scale": {
        "name": "échelle_splat",
        "tooltip": "Multiplicateur sur l’empreinte projetée de chaque splat (plus bas = points plus nets, plus haut = surface plus douce/pleine)."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "image",
        "tooltip": null
      },
      "1": {
        "name": "mask",
        "tooltip": null
      }
    }
  },
  "RenormCFG": {
    "display_name": "RenormCFG",
    "inputs": {
      "cfg_trunc": {
        "name": "cfg_trunc"
      },
      "model": {
        "name": "modèle"
      },
      "renorm_cfg": {
        "name": "renorm_cfg"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RepeatImageBatch": {
    "display_name": "RépéterLotImage",
    "inputs": {
      "amount": {
        "name": "quantité"
      },
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RepeatLatentBatch": {
    "display_name": "Répéter Lot Latent",
    "inputs": {
      "amount": {
        "name": "quantité"
      },
      "samples": {
        "name": "échantillons"
      }
    }
  },
  "ReplaceText": {
    "display_name": "Remplacer le texte",
    "inputs": {
      "find": {
        "name": "find",
        "tooltip": "Texte à rechercher."
      },
      "replace": {
        "name": "replace",
        "tooltip": "Texte de remplacement."
      },
      "texts": {
        "name": "texts",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "texts",
        "tooltip": "Textes traités"
      }
    }
  },
  "ReplaceVideoLatentFrames": {
    "display_name": "Remplacer les images latentes vidéo",
    "inputs": {
      "destination": {
        "name": "destination",
        "tooltip": "Le latent de destination où les images seront remplacées."
      },
      "index": {
        "name": "index",
        "tooltip": "L’index de la première image latente dans le latent de destination où les images du latent source seront placées. Les valeurs négatives comptent à partir de la fin."
      },
      "source": {
        "name": "source",
        "tooltip": "Le latent source fournissant les images à insérer dans le latent de destination. Si non fourni, le latent de destination est retourné inchangé."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RescaleCFG": {
    "display_name": "RescaleCFG",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "multiplier": {
        "name": "multiplicateur"
      }
    }
  },
  "ResizeAndPadImage": {
    "display_name": "RedimensionnerEtRembourrerImage",
    "inputs": {
      "image": {
        "name": "image"
      },
      "interpolation": {
        "name": "interpolation"
      },
      "padding_color": {
        "name": "couleur_rembourrage"
      },
      "target_height": {
        "name": "hauteur_cible"
      },
      "target_width": {
        "name": "largeur_cible"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ResizeImageMaskNode": {
    "description": "Redimensionner une image ou un mask en utilisant différentes méthodes de mise à l'échelle.",
    "display_name": "Redimensionner image/masque",
    "inputs": {
      "input": {
        "name": "input"
      },
      "resize_type": {
        "name": "resize_type",
        "tooltip": "Sélectionnez la méthode de redimensionnement : par dimensions exactes, facteur d'échelle, correspondance avec une autre image, etc."
      },
      "resize_type_crop": {
        "name": "rogner"
      },
      "resize_type_height": {
        "name": "hauteur"
      },
      "resize_type_width": {
        "name": "largeur"
      },
      "scale_method": {
        "name": "scale_method",
        "tooltip": "Algorithme d'interpolation. 'area' est optimal pour la réduction, 'lanczos' pour l'agrandissement, 'nearest-exact' pour le pixel art."
      }
    },
    "outputs": {
      "0": {
        "name": "resized",
        "tooltip": null
      }
    }
  },
  "ResizeImagesByLongerEdge": {
    "description": "Redimensionner les images pour que le côté le plus long corresponde à la dimension spécifiée tout en préservant le ratio d'aspect.",
    "display_name": "Redimensionner les images par le bord le plus long",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      },
      "longer_edge": {
        "name": "longer_edge",
        "tooltip": "Longueur cible pour le bord le plus long."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "ResizeImagesByShorterEdge": {
    "description": "Redimensionner les images afin que le bord le plus court corresponde à la dimension spécifiée tout en préservant le rapport d'aspect.",
    "display_name": "Redimensionner les images par le bord le plus court",
    "inputs": {
      "images": {
        "name": "images",
        "tooltip": "Image à traiter."
      },
      "shorter_edge": {
        "name": "shorter_edge",
        "tooltip": "Longueur cible pour le bord le plus court."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "ResolutionBucket": {
    "description": "Regrouper les latents et les conditionnements en ensembles",
    "display_name": "Regroupement par résolution",
    "inputs": {
      "conditioning": {
        "name": "conditioning",
        "tooltip": "Liste de listes de conditionnement (doit correspondre à la longueur des latents)."
      },
      "latents": {
        "name": "latents",
        "tooltip": "Liste de dictionnaires de latent à regrouper par résolution."
      }
    },
    "outputs": {
      "0": {
        "name": "latents",
        "tooltip": "Liste de dictionnaires de latent groupés, un par regroupement de résolution."
      },
      "1": {
        "name": "conditioning",
        "tooltip": "Liste de listes de conditions, une par regroupement de résolution."
      }
    }
  },
  "ResolutionSelector": {
    "description": "Calcule la largeur et la hauteur à partir du ratio d'aspect et de la cible en mégapixels. Utile pour définir les dimensions d'une image latente vide.",
    "display_name": "Sélecteur de résolution",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio d'aspect",
        "tooltip": "Le ratio d'aspect pour les dimensions de sortie."
      },
      "megapixels": {
        "name": "mégapixels",
        "tooltip": "Nombre total de mégapixels visé. 1,0 MP ≈ 1024×1024 pour un carré."
      },
      "multiple": {
        "name": "multiple",
        "tooltip": "Multiplicateur le plus proche du résultat pour définir la résolution sélectionnée."
      }
    },
    "outputs": {
      "0": {
        "name": "largeur",
        "tooltip": "Largeur calculée en pixels (multiple de 8)."
      },
      "1": {
        "name": "hauteur",
        "tooltip": "Hauteur calculée en pixels (multiple de 8)."
      }
    }
  },
  "ReveImageCreateNode": {
    "description": "Générez des images à partir de descriptions textuelles avec Reve.",
    "display_name": "Reve Création d’Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Version du modèle à utiliser pour la génération."
      },
      "model_aspect_ratio": {
        "name": "rapport d’aspect"
      },
      "model_test_time_scaling": {
        "name": "mise à l’échelle à l’exécution"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Description textuelle de l’image souhaitée. Maximum 2560 caractères."
      },
      "remove_background": {
        "name": "supprimer l’arrière-plan",
        "tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "upscale": {
        "name": "agrandir",
        "tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ReveImageEditNode": {
    "description": "Modifiez des images à l’aide d’instructions en langage naturel avec Reve.",
    "display_name": "Reve Édition d’Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "edit_instruction": {
        "name": "instruction d’édition",
        "tooltip": "Description textuelle de la modification à apporter à l’image. Maximum 2560 caractères."
      },
      "image": {
        "name": "image",
        "tooltip": "L’image à modifier."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Version du modèle à utiliser pour l’édition."
      },
      "model_aspect_ratio": {
        "name": "rapport d’aspect"
      },
      "model_test_time_scaling": {
        "name": "mise à l’échelle à l’exécution"
      },
      "remove_background": {
        "name": "supprimer l’arrière-plan",
        "tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "upscale": {
        "name": "agrandir",
        "tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ReveImageRemixNode": {
    "description": "Combinez des images de référence avec des prompts textuels pour créer de nouvelles images avec Reve.",
    "display_name": "Reve Remix d’Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Version du modèle à utiliser pour le remix."
      },
      "model_aspect_ratio": {
        "name": "rapport d’aspect"
      },
      "model_test_time_scaling": {
        "name": "mise à l’échelle à l’exécution"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Description textuelle de l’image souhaitée. Peut inclure des balises XML img pour référencer des images spécifiques par index, par exemple <img>0</img>, <img>1</img>, etc."
      },
      "reference_images": {
        "name": "images de référence"
      },
      "remove_background": {
        "name": "supprimer l’arrière-plan",
        "tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      },
      "upscale": {
        "name": "agrandir",
        "tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Rodin3D_Detail": {
    "description": "Générer des actifs 3D en utilisant l'API Rodin",
    "display_name": "Rodin 3D Générer - Générer Détails",
    "inputs": {
      "Images": {
        "name": "Images"
      },
      "Material_Type": {
        "name": "Type_Matériau"
      },
      "Polygon_count": {
        "name": "Nombre_Polygones"
      },
      "Seed": {
        "name": "Graine"
      }
    },
    "outputs": {
      "0": {
        "name": "Chemin du modèle 3D",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Gen2": {
    "description": "Générer des actifs 3D en utilisant l'API Rodin",
    "display_name": "Rodin 3D Générer - Génération Gen-2",
    "inputs": {
      "Images": {
        "name": "Images"
      },
      "Material_Type": {
        "name": "Type_Matériau"
      },
      "Polygon_count": {
        "name": "Nombre_Polygones"
      },
      "Seed": {
        "name": "Graine"
      },
      "TAPose": {
        "name": "PoseTAP"
      }
    },
    "outputs": {
      "0": {
        "name": "Chemin du modèle 3D",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Gen25_Image": {
    "description": "Générez un modèle 3D à partir de 1 à 5 images de référence via Rodin Gen-2.5. Choisissez un mode (Rapide / Régulier / Extrême-Haute) pour ajuster la qualité par rapport au coût.",
    "display_name": "Rodin 3D Gen-2.5 - Image vers 3D",
    "inputs": {
      "TAPose": {
        "name": "TAPose",
        "tooltip": "Pose T/A pour les modèles humanoïdes."
      },
      "addon_highpack": {
        "name": "addon_highpack",
        "tooltip": "Addon HighPack : textures 4K et ~16x plus de faces en mode Quad."
      },
      "bbox_height": {
        "name": "hauteur_boîte",
        "tooltip": "Hauteur de la boîte englobante (axe Z)."
      },
      "bbox_length": {
        "name": "longueur_boîte",
        "tooltip": "Longueur de la boîte englobante (axe X)."
      },
      "bbox_width": {
        "name": "largeur_boîte",
        "tooltip": "Largeur de la boîte englobante (axe Y). Mettre à 0 avec les autres pour ignorer la boîte."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "geometry_file_format": {
        "name": "format_fichier_géométrie"
      },
      "hd_texture": {
        "name": "texture_hd",
        "tooltip": "Amélioration de la texture haute qualité."
      },
      "height_cm": {
        "name": "hauteur_cm",
        "tooltip": "Hauteur approximative du modèle en centimètres (0 pour ignorer)."
      },
      "images": {
        "name": "images",
        "tooltip": "1 à 5 images. La première image est utilisée pour les matériaux en mode multi-vues."
      },
      "material": {
        "name": "matériau"
      },
      "mode": {
        "name": "mode",
        "tooltip": "Mode de génération. Régulier = équilibré. Rapide = 1K-20K faces pour le prototypage rapide. Extrême-Haute = 20K-2M faces avec micro-détails optionnels."
      },
      "mode_creative": {
        "name": "créatif"
      },
      "mode_polygon_count": {
        "name": "nombre_de_polygones"
      },
      "mode_tier": {
        "name": "niveau"
      },
      "seed": {
        "name": "graine"
      },
      "texture_delight": {
        "name": "texture_delight",
        "tooltip": "Supprimer l'éclairage intégré des textures."
      },
      "texture_mode": {
        "name": "mode_texture",
        "tooltip": "Préréglage de qualité de texture. 'Défaut' utilise la valeur par défaut du serveur pour le niveau sélectionné."
      },
      "use_original_alpha": {
        "name": "utiliser_alpha_original",
        "tooltip": "Préserver la transparence de l'image."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Gen25_Text": {
    "description": "Générez un modèle 3D à partir d'une invite textuelle via Rodin Gen-2.5. Choisissez un mode (Rapide / Standard / Extrême-Haute) pour ajuster la qualité par rapport au coût.",
    "display_name": "Rodin 3D Gen-2.5 - Texte vers 3D",
    "inputs": {
      "TAPose": {
        "name": "TAPose",
        "tooltip": "Pose T/A pour les modèles humanoïdes."
      },
      "addon_highpack": {
        "name": "addon_highpack",
        "tooltip": "Add-on HighPack : textures 4K et ~16x plus de faces en mode Quad."
      },
      "bbox_height": {
        "name": "bbox_height",
        "tooltip": "Hauteur de la boîte englobante (axe Z)."
      },
      "bbox_length": {
        "name": "bbox_length",
        "tooltip": "Longueur de la boîte englobante (axe X)."
      },
      "bbox_width": {
        "name": "bbox_width",
        "tooltip": "Largeur de la boîte englobante (axe Y). Mettre à 0 avec les autres pour ignorer la boîte."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "geometry_file_format": {
        "name": "geometry_file_format"
      },
      "hd_texture": {
        "name": "hd_texture",
        "tooltip": "Amélioration de la texture en haute qualité."
      },
      "height_cm": {
        "name": "height_cm",
        "tooltip": "Hauteur approximative du modèle en centimètres (0 pour ignorer)."
      },
      "material": {
        "name": "material"
      },
      "mode": {
        "name": "mode",
        "tooltip": "Mode de génération. Standard = équilibré. Rapide = 1K-20K faces pour le prototypage rapide. Extrême-Haute = 20K-2M faces avec micro-détails optionnels."
      },
      "mode_creative": {
        "name": "créatif"
      },
      "mode_polygon_count": {
        "name": "nombre de polygones"
      },
      "mode_tier": {
        "name": "niveau"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle pour le modèle 3D."
      },
      "seed": {
        "name": "seed"
      },
      "texture_delight": {
        "name": "texture_delight",
        "tooltip": "Supprimer l'éclairage intégré des textures."
      },
      "texture_mode": {
        "name": "texture_mode",
        "tooltip": "Préréglage de qualité de texture. 'Défaut' utilise la valeur par défaut du serveur pour le niveau sélectionné."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Regular": {
    "description": "Générer des actifs 3D en utilisant l'API Rodin",
    "display_name": "Rodin 3D Générer - Génération Régulière",
    "inputs": {
      "Images": {
        "name": "Images"
      },
      "Material_Type": {
        "name": "Type_Matériau"
      },
      "Polygon_count": {
        "name": "Nombre_Polygones"
      },
      "Seed": {
        "name": "Graine"
      }
    },
    "outputs": {
      "0": {
        "name": "Chemin du modèle 3D",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Sketch": {
    "description": "Générer des actifs 3D en utilisant l'API Rodin",
    "display_name": "Rodin 3D Générer - Génération Esquisse",
    "inputs": {
      "Images": {
        "name": "Images"
      },
      "Seed": {
        "name": "Graine"
      }
    },
    "outputs": {
      "0": {
        "name": "Chemin du modèle 3D",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "Rodin3D_Smooth": {
    "description": "Générer des ressources 3D avec l'API Rodin",
    "display_name": "Rodin 3D Générer - Génération Lisse",
    "inputs": {
      "Images": {
        "name": "Images"
      },
      "Material_Type": {
        "name": "Type de matériau"
      },
      "Polygon_count": {
        "name": "Nombre de polygones"
      },
      "Seed": {
        "name": "Graine"
      }
    },
    "outputs": {
      "0": {
        "name": "Chemin du modèle 3D",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "RunwayAleph2KeyframeNode": {
    "description": "Ancrez une image de guidage à un moment de la vidéo d'entrée (source), afin qu'Aleph2 oriente l'édition à ce moment précis de votre séquence. Connectez ce nœud à l'entrée 'keyframes' du nœud Runway Aleph2 Vidéo vers Vidéo ; enchaînez-en plusieurs (jusqu'à 5) via l'entrée optionnelle 'keyframes' ci-dessous.",
    "display_name": "Runway Aleph2 Image-clé",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "L'image de guidage à appliquer au moment choisi de la vidéo d'entrée."
      },
      "keyframes": {
        "name": "images-clés",
        "tooltip": "Images-clés précédentes optionnelles à enchaîner avec celle-ci."
      },
      "timing": {
        "name": "synchronisation",
        "tooltip": "Comment placer cette image sur la timeline de la vidéo d'entrée."
      },
      "timing_seconds": {
        "name": "secondes"
      }
    },
    "outputs": {
      "0": {
        "name": "images-clés",
        "tooltip": null
      }
    }
  },
  "RunwayAleph2PromptImageNode": {
    "description": "Ancrez une image de guidage à un moment de la vidéo de sortie (résultat), pour guider l'apparence de la vidéo éditée à ce moment. Connectez ce nœud à l'entrée 'prompt_images' du nœud Runway Aleph2 Vidéo vers Vidéo ; enchaînez-en plusieurs (jusqu'à 5) via l'entrée optionnelle 'prompt_images' ci-dessous.",
    "display_name": "Runway Aleph2 Image de prompt",
    "inputs": {
      "image": {
        "name": "image",
        "tooltip": "L'image de guidage à placer au moment choisi de la vidéo de sortie."
      },
      "position": {
        "name": "position",
        "tooltip": "Comment placer cette image sur la timeline de la vidéo de sortie."
      },
      "position_seconds": {
        "name": "secondes"
      },
      "prompt_images": {
        "name": "images de prompt",
        "tooltip": "Images de prompt précédentes optionnelles à enchaîner avec celle-ci."
      }
    },
    "outputs": {
      "0": {
        "name": "images de prompt",
        "tooltip": null
      }
    }
  },
  "RunwayAleph2VideoToVideoNode": {
    "description": "Modifiez une vidéo à l’aide d’une invite textuelle avec le modèle Aleph2 de Runway. Aleph2 transforme votre séquence (restylisation, rééclairage, ajout ou suppression d’éléments, changement de point de vue) tout en conservant le mouvement et le timing d’origine ; la résolution de sortie correspond à celle de la vidéo d’entrée, qui doit durer entre 2 et 30 secondes à 30 ips ou moins. Vous pouvez orienter la modification à l’aide de keyframes (ancrées à la vidéo d’entrée) ou d’images d’invite (ancrées à la vidéo de sortie) – utilisez l’un ou l’autre, pas les deux.",
    "display_name": "Runway Aleph2 Vidéo vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "keyframes": {
        "name": "keyframes",
        "tooltip": "Images de guidage ancrées à la vidéo d’entrée, provenant des nœuds Aleph2 Keyframe (jusqu’à 5). Utilisez les keyframes ou les images d’invite, pas les deux."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Décrit ce qui doit apparaître dans la sortie (1 à 1000 caractères)."
      },
      "prompt_images": {
        "name": "images d’invite",
        "tooltip": "Images de guidage ancrées à la vidéo de sortie, provenant des nœuds Aleph2 Prompt Image (jusqu’à 5). Utilisez les keyframes ou les images d’invite, pas les deux."
      },
      "public_figure_threshold": {
        "name": "seuil de figure publique",
        "tooltip": "Modération de contenu pour les figures publiques reconnaissables."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire pour la génération"
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo d’entrée à modifier. Doit durer entre 2 et 30 secondes à 30 ips ou moins."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RunwayFirstLastFrameNode": {
    "description": "Téléchargez les premières et dernières images clés, rédigez un prompt et générez une vidéo. Les transitions plus complexes, comme lorsque la dernière image est complètement différente de la première, peuvent bénéficier de la durée plus longue de 10s. Cela donnerait à la génération plus de temps pour effectuer une transition fluide entre les deux entrées. Avant de commencer, consultez ces bonnes pratiques pour vous assurer que vos sélections d'entrée permettront à votre génération de réussir : https://help.runwayml.com/hc/en-us/articles/34170748696595-Creating-with-Keyframes-on-Gen-3.",
    "display_name": "Runway Première-Dernière image vers vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "end_frame": {
        "name": "image_fin",
        "tooltip": "Image de fin à utiliser pour la vidéo. Pris en charge pour gen3a_turbo uniquement."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt texte pour la génération"
      },
      "ratio": {
        "name": "ratio"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire pour la génération"
      },
      "start_frame": {
        "name": "image_début",
        "tooltip": "Image de départ à utiliser pour la vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RunwayImageToVideoNodeGen3a": {
    "description": "Générer une vidéo à partir d'une seule image de départ en utilisant le modèle Gen3a Turbo. Avant de commencer, consultez ces bonnes pratiques pour vous assurer que vos sélections d'entrée permettront à votre génération de réussir : https://help.runwayml.com/hc/en-us/articles/33927968552339-Creating-with-Act-One-on-Gen-3-Alpha-and-Turbo.",
    "display_name": "Runway Image vers Vidéo (Gen3a Turbo)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt texte pour la génération"
      },
      "ratio": {
        "name": "ratio"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire pour la génération"
      },
      "start_frame": {
        "name": "image_début",
        "tooltip": "Image de départ à utiliser pour la vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RunwayImageToVideoNodeGen4": {
    "description": "Générer une vidéo à partir d'une seule image de départ en utilisant le modèle Gen4 Turbo. Avant de commencer, consultez ces bonnes pratiques pour vous assurer que vos sélections d'entrée permettront à votre génération de réussir : https://help.runwayml.com/hc/en-us/articles/37327109429011-Creating-with-Gen-4-Video.",
    "display_name": "Runway Image vers Vidéo (Gen4 Turbo)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Prompt texte pour la génération"
      },
      "ratio": {
        "name": "ratio"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire pour la génération"
      },
      "start_frame": {
        "name": "image_début",
        "tooltip": "Image de départ à utiliser pour la vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "RunwayTextToImageNode": {
    "description": "Générer une image à partir d'une invite texte en utilisant le modèle Gen 4 de Runway. Vous pouvez également inclure une image de référence pour guider la génération.",
    "display_name": "Runway Texte vers Image",
    "inputs": {
      "prompt": {
        "name": "invite",
        "tooltip": "Invite texte pour la génération"
      },
      "ratio": {
        "name": "ratio"
      },
      "reference_image": {
        "name": "image_référence",
        "tooltip": "Image de référence optionnelle pour guider la génération"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SAM3_Detect": {
    "display_name": "SAM3 Détection",
    "inputs": {
      "bboxes": {
        "name": "boîtes_englobantes",
        "tooltip": "Boîtes englobantes à segmenter"
      },
      "conditioning": {
        "name": "conditionnement",
        "tooltip": "Conditionnement texte depuis CLIPTextEncode"
      },
      "image": {
        "name": "image"
      },
      "individual_masks": {
        "name": "masques_individuels",
        "tooltip": "Sortir des masques par objet au lieu de l’union"
      },
      "model": {
        "name": "modèle"
      },
      "negative_coords": {
        "name": "coords_négatives",
        "tooltip": "Points négatifs comme JSON [{\"x\": int, \"y\": int}, ...] (coordonnées pixels)"
      },
      "positive_coords": {
        "name": "coords_positives",
        "tooltip": "Points positifs comme JSON [{\"x\": int, \"y\": int}, ...] (coordonnées pixels)"
      },
      "refine_iterations": {
        "name": "itérations_affinage",
        "tooltip": "Passes d’affinage du décodeur SAM (0 = utiliser les masques bruts du détecteur)"
      },
      "threshold": {
        "name": "seuil"
      }
    },
    "outputs": {
      "0": {
        "name": "masques",
        "tooltip": null
      },
      "1": {
        "name": "boîtes_englobantes",
        "tooltip": null
      }
    }
  },
  "SAM3_TrackPreview": {
    "display_name": "Aperçu du suivi SAM3",
    "inputs": {
      "fps": {
        "name": "ips"
      },
      "images": {
        "name": "images"
      },
      "opacity": {
        "name": "opacité"
      },
      "track_data": {
        "name": "données_suivi"
      }
    }
  },
  "SAM3_TrackToMask": {
    "display_name": "SAM3 Suivi vers Masque",
    "inputs": {
      "object_indices": {
        "name": "indices_objets",
        "tooltip": "Indices d’objets séparés par des virgules à inclure (ex : '0,2,3'). Vide = tous les objets."
      },
      "track_data": {
        "name": "données_suivi"
      }
    },
    "outputs": {
      "0": {
        "name": "masques",
        "tooltip": null
      }
    }
  },
  "SAM3_VideoTrack": {
    "display_name": "SAM3 Suivi Vidéo",
    "inputs": {
      "conditioning": {
        "name": "conditionnement",
        "tooltip": "Conditionnement texte pour détecter de nouveaux objets pendant le suivi"
      },
      "detect_interval": {
        "name": "intervalle_de_détection",
        "tooltip": "Détecter tous les N frames (1 = chaque frame). Plus élevé = économie de calcul."
      },
      "detection_threshold": {
        "name": "seuil_de_détection",
        "tooltip": "Seuil de score pour la détection par texte"
      },
      "images": {
        "name": "images",
        "tooltip": "Images des frames vidéo en lot"
      },
      "initial_mask": {
        "name": "masque_initial",
        "tooltip": "Masque(s) pour la première frame à suivre (un par objet)"
      },
      "max_objects": {
        "name": "objets_max",
        "tooltip": "Nombre maximal d’objets suivis (0 = illimité). Les masques initiaux comptent dans cette limite."
      },
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "name": "données_suivi",
        "tooltip": null
      }
    }
  },
  "SCAIL2ColoredMask": {
    "display_name": "Créer un masque coloré SCAIL-2",
    "inputs": {
      "driving_track_data": {
        "name": "données_de_suivi_conduite",
        "tooltip": "Piste SAM3 de la vidéo de pose de conduite. Sera rendue dans la sortie pose_video_mask."
      },
      "object_indices": {
        "name": "indices_objets",
        "tooltip": "Liste séparée par des virgules des indices de personnes à inclure (ex : '0,2,3'). Appliqué aux masques vidéo de référence et de pose. Vide = tous."
      },
      "ref_track_data": {
        "name": "données_de_suivi_référence",
        "tooltip": "Piste SAM3 de l’image de référence."
      },
      "replacement_mode": {
        "name": "mode_remplacement",
        "tooltip": "Faux = mask_video a un fond noir (Mode Animation). Vrai = fond blanc (Mode Remplacement). Définir le même mode_remplacement sur WanSCAILToVideo. reference_image_mask est toujours sur fond noir."
      },
      "sort_by": {
        "name": "trier_par",
        "tooltip": "Ordre dans lequel les couleurs de la palette sont attribuées aux objets suivis (appliqué aux vidéos de référence et de pose pour que chaque identité garde la même couleur). left_to_right = l’objet le plus à gauche (par centroïde de la première image) reçoit la première couleur ; area = le plus grand objet (par aire du masque de la première image) reçoit la première couleur ; none = garder l’ordre de SAM3."
      }
    },
    "outputs": {
      "0": {
        "name": "pose_video_mask",
        "tooltip": null
      },
      "1": {
        "name": "reference_image_mask",
        "tooltip": null
      }
    }
  },
  "SDPoseDrawKeypoints": {
    "display_name": "SDPoseDrawKeypoints",
    "inputs": {
      "draw_body": {
        "name": "draw_body"
      },
      "draw_face": {
        "name": "draw_face"
      },
      "draw_feet": {
        "name": "draw_feet"
      },
      "draw_hands": {
        "name": "draw_hands"
      },
      "draw_head": {
        "name": "dessiner_tête"
      },
      "face_point_size": {
        "name": "face_point_size"
      },
      "keypoints": {
        "name": "keypoints"
      },
      "score_threshold": {
        "name": "score_threshold"
      },
      "stick_width": {
        "name": "stick_width"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SDPoseFaceBBoxes": {
    "display_name": "SDPoseFaceBBoxes",
    "inputs": {
      "force_square": {
        "name": "force_square",
        "tooltip": "Agrandir l’axe le plus court de la boîte pour que la région découpée soit toujours carrée."
      },
      "keypoints": {
        "name": "keypoints"
      },
      "scale": {
        "name": "scale",
        "tooltip": "Multiplicateur pour la zone de la boîte englobante autour de chaque visage détecté."
      }
    },
    "outputs": {
      "0": {
        "name": "bboxes",
        "tooltip": "Boîtes englobantes des visages par image, compatibles avec l’entrée bboxes de SDPoseKeypointExtractor."
      }
    }
  },
  "SDPoseKeypointExtractor": {
    "description": "Extraire les points clés de pose à partir d’images en utilisant le modèle SDPose : https://huggingface.co/Comfy-Org/SDPose/tree/main/checkpoints",
    "display_name": "SDPoseKeypointExtractor",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "bboxes": {
        "name": "bboxes",
        "tooltip": "Boîtes englobantes optionnelles pour des détections plus précises. Requis pour la détection multi-personnes."
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "model"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "keypoints",
        "tooltip": "Points clés au format OpenPose (canvas_width, canvas_height, people)"
      }
    }
  },
  "SDTurboScheduler": {
    "display_name": "SDTurboScheduler",
    "inputs": {
      "denoise": {
        "name": "débruitage"
      },
      "model": {
        "name": "modèle"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SD_4XUpscale_Conditioning": {
    "display_name": "SD_4XUpscale_Conditioning",
    "inputs": {
      "images": {
        "name": "images"
      },
      "negative": {
        "name": "négatif"
      },
      "noise_augmentation": {
        "name": "augmentation_du_bruit"
      },
      "positive": {
        "name": "positive"
      },
      "scale_ratio": {
        "name": "ratio_d'échelle"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "SUPIRApply": {
    "display_name": "SUPIRApply",
    "inputs": {
      "image": {
        "name": "image"
      },
      "model": {
        "name": "model"
      },
      "model_patch": {
        "name": "model_patch"
      },
      "restore_cfg": {
        "name": "restore_cfg",
        "tooltip": "Ramène la sortie débruitée vers le latent d'entrée. Plus la valeur est élevée, plus la fidélité à l'entrée est forte. 0 pour désactiver."
      },
      "restore_cfg_s_tmin": {
        "name": "restore_cfg_s_tmin",
        "tooltip": "Seuil sigma en dessous duquel restore_cfg est désactivé."
      },
      "strength_end": {
        "name": "strength_end",
        "tooltip": "Contrôle la force à la fin de l'échantillonnage (sigma faible). Interpolé linéairement depuis le début."
      },
      "strength_start": {
        "name": "strength_start",
        "tooltip": "Contrôle la force au début de l'échantillonnage (sigma élevé)."
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SV3D_Conditioning": {
    "display_name": "SV3D_Conditioning",
    "inputs": {
      "clip_vision": {
        "name": "clip_vision"
      },
      "elevation": {
        "name": "élévation"
      },
      "height": {
        "name": "hauteur"
      },
      "init_image": {
        "name": "init_image"
      },
      "vae": {
        "name": "vae"
      },
      "video_frames": {
        "name": "cadres_vidéo"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "SVD_img2vid_Conditioning": {
    "display_name": "SVD_img2vid_Conditioning",
    "inputs": {
      "augmentation_level": {
        "name": "niveau_d'augmentation"
      },
      "clip_vision": {
        "name": "clip_vision"
      },
      "fps": {
        "name": "fps"
      },
      "height": {
        "name": "hauteur"
      },
      "init_image": {
        "name": "init_image"
      },
      "motion_bucket_id": {
        "name": "id_seau_de_mouvement"
      },
      "vae": {
        "name": "vae"
      },
      "video_frames": {
        "name": "cadres_vidéo"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif"
      },
      "1": {
        "name": "négatif"
      },
      "2": {
        "name": "latent"
      }
    }
  },
  "SamplerARVideo": {
    "display_name": "Sampler AR Video",
    "inputs": {
      "num_frame_per_block": {
        "name": "nombre_d’images_par_bloc",
        "tooltip": "Images par bloc autorégressif. 1 = image par image, 3 = par lot. Doit correspondre au mode d’entraînement du checkpoint."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerCustom": {
    "display_name": "ÉchantillonneurPersonnalisé",
    "inputs": {
      "add_noise": {
        "name": "ajouter_bruit"
      },
      "cfg": {
        "name": "cfg"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "latent_image": {
        "name": "image_latente"
      },
      "model": {
        "name": "modèle"
      },
      "negative": {
        "name": "négative"
      },
      "noise_seed": {
        "name": "graine_de_bruit"
      },
      "positive": {
        "name": "positive"
      },
      "sampler": {
        "name": "échantillonneur"
      },
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "name": "sortie",
        "tooltip": null
      },
      "1": {
        "name": "sortie_débruitée",
        "tooltip": null
      }
    }
  },
  "SamplerCustomAdvanced": {
    "display_name": "ÉchantillonneurPersonnaliséAvancé",
    "inputs": {
      "guider": {
        "name": "guide"
      },
      "latent_image": {
        "name": "image_latente"
      },
      "noise": {
        "name": "bruit"
      },
      "sampler": {
        "name": "échantillonneur"
      },
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "name": "sortie",
        "tooltip": null
      },
      "1": {
        "name": "sortie_débruitée",
        "tooltip": null
      }
    }
  },
  "SamplerDPMAdaptative": {
    "display_name": "SamplerDPMAdaptative",
    "inputs": {
      "accept_safety": {
        "name": "accept_safety"
      },
      "atol": {
        "name": "atol"
      },
      "dcoeff": {
        "name": "dcoeff"
      },
      "eta": {
        "name": "eta"
      },
      "h_init": {
        "name": "h_init"
      },
      "icoeff": {
        "name": "icoeff"
      },
      "order": {
        "name": "ordre"
      },
      "pcoeff": {
        "name": "pcoeff"
      },
      "rtol": {
        "name": "rtol"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerDPMPP_2M_SDE": {
    "display_name": "SamplerDPMPP_2M_SDE",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "noise_device": {
        "name": "appareil_bruit"
      },
      "s_noise": {
        "name": "s_bruit"
      },
      "solver_type": {
        "name": "type_solveur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerDPMPP_2S_Ancestral": {
    "display_name": "SamplerDPMPP_2S_Ancestral",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerDPMPP_3M_SDE": {
    "display_name": "SamplerDPMPP_3M_SDE",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "noise_device": {
        "name": "appareil_bruit"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerDPMPP_SDE": {
    "display_name": "SamplerDPMPP_SDE",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "noise_device": {
        "name": "appareil_bruit"
      },
      "r": {
        "name": "r"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerER_SDE": {
    "display_name": "ÉchantillonneurER_SDE",
    "inputs": {
      "eta": {
        "name": "eta",
        "tooltip": "Force stochastique de l'EDS en temps inverse.\nLorsque eta=0, cela se réduit à une EDO déterministe. Ce paramètre ne s'applique pas au type de solveur ER-SDE."
      },
      "max_stage": {
        "name": "étape_max"
      },
      "s_noise": {
        "name": "s_bruit"
      },
      "solver_type": {
        "name": "type_solveur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerEulerAncestral": {
    "display_name": "SamplerEulerAncestral",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerEulerAncestralCFGPP": {
    "display_name": "SamplerEulerAncestralCFG++",
    "inputs": {
      "eta": {
        "name": "eta"
      },
      "s_noise": {
        "name": "s_bruit"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerEulerCFGpp": {
    "display_name": "SamplerEulerCFG++",
    "inputs": {
      "version": {
        "name": "version"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerLCM": {
    "description": "Échantillonneur LCM avec bruit ajustable à chaque étape. s_noise est un multiplicateur de l'échelle de bruit d'entraînement du modèle.",
    "display_name": "SamplerLCM",
    "inputs": {
      "noise_clip_std": {
        "name": "noise_clip_std",
        "tooltip": "Limite le bruit par étape à +/- N*écart-type. 0 pour désactiver."
      },
      "s_noise": {
        "name": "s_noise",
        "tooltip": "Multiplicateur de bruit par étape à la première étape (1.0 = correspond à l'entraînement)."
      },
      "s_noise_end": {
        "name": "s_noise_end",
        "tooltip": "Multiplicateur de bruit par étape à la dernière étape. Identique à s_noise pour un planning constant."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerLCMUpscale": {
    "display_name": "SamplerLCMUpscale",
    "inputs": {
      "scale_ratio": {
        "name": "ratio_échelle"
      },
      "scale_steps": {
        "name": "étapes_échelle"
      },
      "upscale_method": {
        "name": "méthode_agrandissement"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerLMS": {
    "display_name": "SamplerLMS",
    "inputs": {
      "order": {
        "name": "ordre"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerSASolver": {
    "display_name": "ÉchantillonneurSASolveur",
    "inputs": {
      "corrector_order": {
        "name": "ordre_correcteur"
      },
      "eta": {
        "name": "eta"
      },
      "model": {
        "name": "modèle"
      },
      "predictor_order": {
        "name": "ordre_prédicteur"
      },
      "s_noise": {
        "name": "s_bruit"
      },
      "sde_end_percent": {
        "name": "pourcent_fin_sde"
      },
      "sde_start_percent": {
        "name": "pourcent_début_sde"
      },
      "simple_order_2": {
        "name": "ordre_simple_2"
      },
      "use_pece": {
        "name": "utiliser_pece"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplerSEEDS2": {
    "description": "Ce nœud d'échantillonnage peut représenter plusieurs échantillonneurs :\n\nseeds_2\n- paramètre par défaut\n\nexp_heun_2_x0\n- solver_type=phi_2, r=1.0, eta=0.0\n\nexp_heun_2_x0_sde\n- solver_type=phi_2, r=1.0, eta=1.0, s_noise=1.0",
    "display_name": "SamplerSEEDS2",
    "inputs": {
      "eta": {
        "name": "eta",
        "tooltip": "Intensité stochastique"
      },
      "r": {
        "name": "r",
        "tooltip": "Taille relative de l'étape pour l'étape intermédiaire (nœud c2)"
      },
      "s_noise": {
        "name": "s_noise",
        "tooltip": "Multiplicateur de bruit SDE"
      },
      "solver_type": {
        "name": "solver_type"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SamplingPercentToSigma": {
    "display_name": "PourcentageÉchantillonnageVersSigma",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "return_actual_sigma": {
        "name": "retourner_sigma_réel",
        "tooltip": "Retourner la valeur sigma réelle au lieu de la valeur utilisée pour les vérifications d'intervalle.\nCela n'affecte que les résultats à 0.0 et 1.0."
      },
      "sampling_percent": {
        "name": "pourcent_échantillonnage"
      }
    },
    "outputs": {
      "0": {
        "name": "valeur_sigma",
        "tooltip": null
      }
    }
  },
  "Save3DAdvanced": {
    "display_name": "Enregistrer 3D (Avancé)",
    "inputs": {
      "camera_info": {
        "name": "camera_info"
      },
      "filename_prefix": {
        "name": "filename_prefix"
      },
      "height": {
        "name": "height"
      },
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Fichier de modèle 3D provenant d'un nœud 3D en amont."
      },
      "model_3d_info": {
        "name": "model_3d_info"
      },
      "viewport_state": {
        "name": "viewport_state"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "model_3d",
        "tooltip": null
      },
      "1": {
        "name": "model_3d_info",
        "tooltip": null
      },
      "2": {
        "name": "camera_info",
        "tooltip": null
      },
      "3": {
        "name": "width",
        "tooltip": null
      },
      "4": {
        "name": "height",
        "tooltip": null
      }
    }
  },
  "SaveAnimatedPNG": {
    "display_name": "EnregistrerPNGAnimé",
    "inputs": {
      "compress_level": {
        "name": "niveau_compression"
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier"
      },
      "fps": {
        "name": "fps"
      },
      "images": {
        "name": "images"
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      }
    }
  },
  "SaveAnimatedWEBP": {
    "display_name": "EnregistrerWEBPAnimé",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_du_nom_de_fichier"
      },
      "fps": {
        "name": "fps"
      },
      "images": {
        "name": "images"
      },
      "lossless": {
        "name": "sans_perte"
      },
      "method": {
        "name": "méthode"
      },
      "quality": {
        "name": "qualité"
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      }
    }
  },
  "SaveAudio": {
    "display_name": "EnregistrerAudio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audioUI": {
        "name": "audioUI"
      },
      "filename_prefix": {
        "name": "préfixe_du_nom_de_fichier"
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "SaveAudioAdvanced": {
    "description": "Enregistre l’audio d’entrée dans le dossier de sortie ComfyUI.",
    "display_name": "Enregistrer l’Audio (Avancé)",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "L’audio à enregistrer."
      },
      "audioUI": {
        "name": "audioUI"
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier",
        "tooltip": "Le préfixe du fichier à enregistrer. Peut inclure des jetons de formatage comme %date:yyyy-MM-dd%."
      },
      "format": {
        "name": "format",
        "tooltip": "Le format de fichier dans lequel enregistrer l’audio."
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "SaveAudioMP3": {
    "display_name": "Enregistrer Audio (MP3)",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audioUI": {
        "name": "interface_audio"
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier"
      },
      "quality": {
        "name": "qualité"
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "SaveAudioOpus": {
    "display_name": "Enregistrer Audio (Opus)",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audioUI": {
        "name": "interface_audio"
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier"
      },
      "quality": {
        "name": "qualité"
      }
    },
    "outputs": {
      "0": {
        "name": "audio",
        "tooltip": null
      }
    }
  },
  "SaveGLB": {
    "display_name": "SaveGLB",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_du_nom_de_fichier"
      },
      "image": {
        "name": "image"
      },
      "mesh": {
        "name": "maillage",
        "tooltip": "Maillage ou fichier GLB à enregistrer"
      }
    }
  },
  "SaveGaussianSplat": {
    "display_name": "Enregistrer Splat",
    "inputs": {
      "camera_info": {
        "name": "camera_info"
      },
      "filename_prefix": {
        "name": "filename_prefix"
      },
      "height": {
        "name": "height"
      },
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Un fichier 3D gaussian splat."
      },
      "model_3d_info": {
        "name": "model_3d_info"
      },
      "viewport_state": {
        "name": "viewport_state"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "model_3d",
        "tooltip": null
      },
      "1": {
        "name": "model_3d_info",
        "tooltip": null
      },
      "2": {
        "name": "camera_info",
        "tooltip": null
      },
      "3": {
        "name": "width",
        "tooltip": null
      },
      "4": {
        "name": "height",
        "tooltip": null
      }
    }
  },
  "SaveImage": {
    "description": "Enregistre les images d'entrée dans votre répertoire de sortie ComfyUI.",
    "display_name": "Enregistrer Image",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_du_nom_de_fichier",
        "tooltip": "Le préfixe pour le fichier à enregistrer. Cela peut inclure des informations de formatage telles que %date:yyyy-MM-dd% ou %Empty Latent Image.width% pour inclure des valeurs à partir de nœuds."
      },
      "images": {
        "name": "images",
        "tooltip": "Les images à enregistrer."
      }
    },
    "outputs": {
      "0": {
        "name": "images"
      }
    }
  },
  "SaveImageAdvanced": {
    "description": "Enregistre les images d’entrée dans votre dossier de sortie ComfyUI.",
    "display_name": "Enregistrer l’image (Avancé)",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_nom_fichier",
        "tooltip": "Le préfixe du fichier à enregistrer. Peut inclure des jetons de formatage comme %date:yyyy-MM-dd% ou %Empty Latent Image.width%."
      },
      "format": {
        "name": "format",
        "tooltip": "Le format de fichier dans lequel enregistrer l’image."
      },
      "format_bit_depth": {
        "name": "profondeur_bits"
      },
      "format_input_color_space": {
        "name": "espace_couleur_entrée"
      },
      "images": {
        "name": "images",
        "tooltip": "Les images à enregistrer."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      }
    }
  },
  "SaveImageDataSetToFolder": {
    "description": "Enregistrer un ensemble d'images dans un dossier spécifié. Formats pris en charge : PNG.",
    "display_name": "Enregistrer l'ensemble d'images dans un dossier",
    "inputs": {
      "filename_prefix": {
        "name": "filename_prefix",
        "tooltip": "Préfixe pour les noms de fichiers des images enregistrées."
      },
      "folder_name": {
        "name": "folder_name",
        "tooltip": "Nom du dossier dans lequel enregistrer les images (dans le répertoire de sortie)."
      },
      "images": {
        "name": "images",
        "tooltip": "Liste des images à enregistrer."
      },
      "mode": {
        "name": "mode",
        "tooltip": "Déterminer s'il faut écraser les fichiers existants ou incrémenter les noms de fichiers pour éviter l'écrasement."
      }
    }
  },
  "SaveImageTextDataSetToFolder": {
    "description": "Enregistrer un ensemble de paires image-texte dans un dossier spécifié. Les images sont enregistrées au format PNG et les légendes au format TXT avec le même préfixe de nom de fichier.",
    "display_name": "Enregistrer l'ensemble d'images et de textes dans un dossier",
    "inputs": {
      "filename_prefix": {
        "name": "filename_prefix",
        "tooltip": "Préfixe pour les noms de fichiers des images enregistrées."
      },
      "folder_name": {
        "name": "folder_name",
        "tooltip": "Nom du dossier dans lequel enregistrer les images (dans le répertoire de sortie)."
      },
      "images": {
        "name": "images",
        "tooltip": "Liste des images à enregistrer."
      },
      "mode": {
        "name": "mode",
        "tooltip": "Déterminer s'il faut écraser les fichiers existants ou incrémenter les noms de fichiers pour éviter l'écrasement."
      },
      "texts": {
        "name": "texts",
        "tooltip": "Liste des légendes textuelles à enregistrer."
      }
    }
  },
  "SaveImageWebsocket": {
    "display_name": "EnregistrerImageWebsocket",
    "inputs": {
      "images": {
        "name": "images"
      }
    }
  },
  "SaveLatent": {
    "display_name": "EnregistrerLatent",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_du_nom_de_fichier"
      },
      "samples": {
        "name": "échantillons"
      }
    },
    "outputs": {
      "0": {
        "name": "échantillons"
      }
    }
  },
  "SaveLoRA": {
    "display_name": "Enregistrer les poids LoRA",
    "inputs": {
      "lora": {
        "name": "lora",
        "tooltip": "Le modèle LoRA à enregistrer. N'utilisez pas le modèle avec des couches LoRA."
      },
      "prefix": {
        "name": "prefix",
        "tooltip": "Le préfixe à utiliser pour le fichier LoRA enregistré."
      },
      "steps": {
        "name": "steps",
        "tooltip": "Optionnel : Le nombre d'étapes pour lesquelles LoRA a été entraîné, utilisé pour nommer le fichier enregistré."
      }
    }
  },
  "SavePointCloud": {
    "display_name": "Enregistrer le nuage de points",
    "inputs": {
      "camera_info": {
        "name": "camera_info"
      },
      "filename_prefix": {
        "name": "filename_prefix"
      },
      "height": {
        "name": "height"
      },
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Fichier nuage de points (.ply)"
      },
      "model_3d_info": {
        "name": "model_3d_info"
      },
      "viewport_state": {
        "name": "viewport_state"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "model_3d",
        "tooltip": null
      },
      "1": {
        "name": "model_3d_info",
        "tooltip": null
      },
      "2": {
        "name": "camera_info",
        "tooltip": null
      },
      "3": {
        "name": "width",
        "tooltip": null
      },
      "4": {
        "name": "height",
        "tooltip": null
      }
    }
  },
  "SaveSVGNode": {
    "description": "Enregistrer les fichiers SVG sur le disque.",
    "display_name": "NoeudEnregistrerSVG",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_nom_fichier",
        "tooltip": "Le préfixe pour le fichier à enregistrer. Peut inclure des informations de formatage telles que %date:yyyy-MM-dd% ou %Empty Latent Image.width% pour inclure des valeurs des nœuds."
      },
      "svg": {
        "name": "svg"
      }
    },
    "outputs": {
      "0": {
        "name": "svg",
        "tooltip": null
      }
    }
  },
  "SaveText": {
    "description": "Enregistrer le contenu texte dans un fichier du répertoire de sortie.",
    "display_name": "Enregistrer le texte",
    "inputs": {
      "filename_prefix": {
        "name": "filename_prefix"
      },
      "format": {
        "name": "format"
      },
      "preview_mode": {},
      "preview_text": {},
      "text": {
        "name": "text"
      }
    },
    "outputs": {
      "0": {
        "name": "text",
        "tooltip": null
      }
    }
  },
  "SaveTrainingDataset": {
    "description": "Enregistrer l'ensemble d'entraînement encodé (latents + conditionnement) sur le disque pour un chargement efficace pendant l'entraînement.",
    "display_name": "Enregistrer l'ensemble d'entraînement",
    "inputs": {
      "conditioning": {
        "name": "conditioning",
        "tooltip": "Liste de listes de conditionnement provenant de MakeTrainingDataset."
      },
      "folder_name": {
        "name": "folder_name",
        "tooltip": "Nom du dossier dans lequel enregistrer l'ensemble de données (dans le répertoire de sortie)."
      },
      "latents": {
        "name": "latents",
        "tooltip": "Liste de dictionnaires latents provenant de MakeTrainingDataset."
      },
      "shard_size": {
        "name": "shard_size",
        "tooltip": "Nombre d'échantillons par fichier fragment."
      }
    }
  },
  "SaveVideo": {
    "description": "Enregistre les images d'entrée dans votre répertoire de sortie ComfyUI.",
    "display_name": "Enregistrer la vidéo",
    "inputs": {
      "codec": {
        "name": "codec",
        "tooltip": "Le codec à utiliser pour la vidéo."
      },
      "filename_prefix": {
        "name": "préfixe_nom_fichier",
        "tooltip": "Le préfixe du fichier à enregistrer. Cela peut inclure des informations de formatage telles que %date:yyyy-MM-dd% ou %Empty Latent Image.width% pour inclure des valeurs provenant des nœuds."
      },
      "format": {
        "name": "format",
        "tooltip": "Le format sous lequel enregistrer la vidéo."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "La vidéo à enregistrer."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéo",
        "tooltip": null
      }
    }
  },
  "SaveWEBM": {
    "display_name": "EnregistrerWEBM",
    "inputs": {
      "codec": {
        "name": "codec"
      },
      "crf": {
        "name": "crf",
        "tooltip": "Un crf plus élevé signifie une qualité inférieure avec une taille de fichier plus petite, un crf plus bas signifie une qualité supérieure avec une taille de fichier plus grande."
      },
      "filename_prefix": {
        "name": "préfixe_de_nom_de_fichier"
      },
      "fps": {
        "name": "fps"
      },
      "images": {
        "name": "images",
        "tooltip": "Les images RGBA sont enregistrées avec leur canal alpha comme transparence (codec vp9 uniquement)."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      }
    }
  },
  "ScaleROPE": {
    "description": "Mettre à l'échelle et décaler le ROPE du modèle.",
    "display_name": "ÉchelleROPE",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "scale_t": {
        "name": "échelle_t"
      },
      "scale_x": {
        "name": "échelle_x"
      },
      "scale_y": {
        "name": "échelle_y"
      },
      "shift_t": {
        "name": "décalage_t"
      },
      "shift_x": {
        "name": "décalage_x"
      },
      "shift_y": {
        "name": "décalage_y"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SeedNode": {
    "display_name": "Graine",
    "inputs": {
      "fixed": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "name": "graine",
        "tooltip": null
      }
    }
  },
  "SeedVR2Conditioning": {
    "description": "Générer le conditionnement positif/négatif SeedVR2 à partir d'un latent VAE.",
    "display_name": "Appliquer le conditionnement SeedVR2",
    "inputs": {
      "model": {
        "name": "model",
        "tooltip": "Le modèle SeedVR2."
      },
      "vae_conditioning": {
        "name": "vae_conditioning"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": "Le conditionnement positif pour l'échantillonnage."
      },
      "1": {
        "name": "negative",
        "tooltip": "Le conditionnement négatif pour l'échantillonnage."
      }
    }
  },
  "SeedVR2PostProcessing": {
    "description": "Aligne l’image générée avec l’image redimensionnée d’origine et applique une correction des couleurs.",
    "display_name": "Post-traitement de la sortie SeedVR2",
    "inputs": {
      "color_correction_method": {
        "name": "color_correction_method",
        "tooltip": "Méthode pour faire correspondre les couleurs de l’image générée à l’image d’origine. lab : transfert de couleur dans l’espace CIELAB, préservant les détails (le plus fidèle). wavelet : transfert des couleurs basses fréquences, en conservant les détails haute fréquence suréchantillonnés. adain : correspondance moyenne/écart-type par canal (le plus rapide, teinte globale). none : pas de transfert de couleur (alignement géométrique uniquement)."
      },
      "images": {
        "name": "images",
        "tooltip": "L’image générée à traiter."
      },
      "original_resized_images": {
        "name": "original_resized_images",
        "tooltip": "L’image redimensionnée d’origine avant prétraitement, utilisée comme référence."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "L’image alignée et corrigée en couleur."
      }
    }
  },
  "SeedVR2Preprocess": {
    "description": "Ajoute un remplissage à une image redimensionnée pour le modèle SeedVR2. Le canal alpha est supprimé. Le nœud Post-traitement SeedVR2 réapplique le canal alpha à partir de l’image redimensionnée d’origine.",
    "display_name": "Prétraitement de l’entrée SeedVR2",
    "inputs": {
      "resized_images": {
        "name": "resized_images",
        "tooltip": "L’image redimensionnée à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "L’image rembourrée pour l’encodage VAE."
      }
    }
  },
  "SeedVR2TemporalChunk": {
    "description": "Découpe un latent vidéo SeedVR2 en segments temporels qui se chevauchent, suffisamment petits pour être traités un à un dans la VRAM. Les sorties latentes sont connectées à la fois à Appliquer le conditionnement SeedVR2 et à l’entrée latente du sampler, avant de les recombiner avec Fusionner les latents SeedVR2.",
    "display_name": "Découper le latent SeedVR2",
    "inputs": {
      "chunking_mode": {
        "name": "chunking_mode",
        "tooltip": "manual = utilise exactement frames_per_chunk ; auto = prédit le plus grand segment possible selon la VRAM disponible."
      },
      "latent": {
        "name": "latent",
        "tooltip": "Le latent SeedVR2 encodé par VAE à découper."
      },
      "temporal_overlap": {
        "name": "temporal_overlap",
        "tooltip": "Images latentes partagées entre segments adjacents et fondues lors de la fusion ; 0 = pas de chevauchement."
      }
    },
    "outputs": {
      "0": {
        "name": "latents",
        "tooltip": "Les segments temporels dans l’ordre de la séquence."
      },
      "1": {
        "name": "temporal_overlap",
        "tooltip": "Le chevauchement effectif d’images latentes entre segments adjacents, pour Fusionner les latents SeedVR2."
      }
    }
  },
  "SeedVR2TemporalMerge": {
    "description": "Recombine les segments temporels latents SeedVR2 échantillonnés en un seul latent, en fondant chaque chevauchement avec une fenêtre de Hann dimensionnée par le temporal_overlap issu de Découper le latent SeedVR2.",
    "display_name": "Fusionner les latents SeedVR2",
    "inputs": {
      "latents": {
        "name": "latents",
        "tooltip": "Les segments temporels échantillonnés dans l’ordre de la séquence."
      },
      "temporal_overlap": {
        "name": "temporal_overlap",
        "tooltip": "La sortie temporal_overlap de Découper le latent SeedVR2. 0 = simple concaténation."
      }
    },
    "outputs": {
      "0": {
        "name": "latent",
        "tooltip": "Le latent recombiné sur toute la durée."
      }
    }
  },
  "SelectCLIPDevice": {
    "description": "Place l’encodeur de texte CLIP sur un périphérique spécifique (default / cpu / gpu:N).\n\n- « default » restaure le périphérique assigné par le chargeur.\n- « cpu » force le chargement et le déchargement sur le CPU.\n- « gpu:N » force le chargement sur le N-ième GPU disponible.\n\nLorsque le périphérique sélectionné n’existe pas sur la machine actuelle\n(par exemple, un workflow créé sur une machine à 2 GPU ouvert sur une machine à 1 GPU),\nle nœud transmet le CLIP inchangé et enregistre un message\nau lieu d’échouer.",
    "display_name": "Sélectionner le périphérique CLIP",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "device": {
        "name": "device"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SelectModelDevice": {
    "description": "Place le modèle de diffusion sur un périphérique spécifique (default / cpu / gpu:N).\n\n- « default » restaure le périphérique assigné par le chargeur (même après un appel précédent à Sélectionner le périphérique du modèle).\n- « cpu » force le chargement et le déchargement sur le CPU.\n- « gpu:N » force le chargement sur le N-ième GPU disponible ; le périphérique de déchargement est restauré au choix original du chargeur.\n\nLorsque le périphérique demandé diffère de celui sur lequel le modèle d’entrée est déjà, un nouveau modèle est généré via la fabrique de rechargement du chargeur (cached_patcher_init) afin que le nouveau patcher possède des poids indépendants sur le nouveau périphérique. Les chargeurs qui ne supportent pas le multigpu (pas de fabrique) feront passer le nœud inchangé avec un avertissement.\n\nSi le workflow a déjà appliqué la Division CFG MultiGPU et que le GPU choisi entre en collision avec l’un des clones multigpu existants, ce clone est supprimé pour éviter que deux patchers ne soient liés au même périphérique.\n\nLorsque le périphérique sélectionné n’existe pas sur la machine actuelle\n(par exemple, un workflow créé sur une machine à 2 GPU ouvert sur une machine à 1 GPU),\nle nœud transmet le modèle inchangé et enregistre un message\nau lieu d’échouer.\n\nREMARQUE : Placer Sélectionner le périphérique du modèle APRÈS un nœud ayant déjà consommé le même modèle (par exemple, un KSampler ayant fonctionné sur ce modèle sur le périphérique original) n’est pas recommandé — tout état modifié par le consommateur précédent sur le modèle original sera observé lorsque le périphérique sélectionné correspond à l’original (chemin rapide). Placez Sélectionner le périphérique du modèle avant tout consommateur du modèle.",
    "display_name": "Sélectionner le périphérique du modèle",
    "inputs": {
      "device": {
        "name": "device"
      },
      "model": {
        "name": "model"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SelectVAEDevice": {
    "description": "Placez le VAE sur un périphérique spécifique (par défaut / gpu:N).\n\n- « default » restaure le périphérique assigné par le chargeur.\n- « gpu:N » fixe le périphérique de chargement au N-ième GPU disponible ; le périphérique de déchargement\n  est défini sur le périphérique de déchargement VAE standard.\n\nLe CPU n'est volontairement pas proposé dans l'interface pour le VAE ; si un workflow\nfournit tout de même « cpu » (par exemple, ouvert depuis une autre machine), la demande\nest ignorée avec un message dans le journal et le VAE est transmis sans modification.\n\nLorsque le périphérique sélectionné n'existe pas sur la machine actuelle\n(par exemple, un workflow créé sur une machine à 2 GPU ouvert sur une machine à 1 GPU),\nle nœud transmet le VAE sans modification et consigne un message dans le journal\nau lieu d'échouer.",
    "display_name": "Sélectionner le périphérique VAE",
    "inputs": {
      "device": {
        "name": "périphérique"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SelfAttentionGuidance": {
    "display_name": "Guidance d'Auto-Attention",
    "inputs": {
      "blur_sigma": {
        "name": "blur_sigma"
      },
      "model": {
        "name": "modèle"
      },
      "scale": {
        "name": "échelle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SetClipHooks": {
    "display_name": "Définir les Crochets CLIP",
    "inputs": {
      "apply_to_conds": {
        "name": "appliquer_à_conds"
      },
      "clip": {
        "name": "clip"
      },
      "hooks": {
        "name": "crochets"
      },
      "schedule_clip": {
        "name": "programmer_clip"
      }
    }
  },
  "SetFirstSigma": {
    "display_name": "DéfinirPremierSigma",
    "inputs": {
      "sigma": {
        "name": "sigma"
      },
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SetHookKeyframes": {
    "display_name": "Définir les Images Clés de Crochet",
    "inputs": {
      "hook_kf": {
        "name": "crochet_kf"
      },
      "hooks": {
        "name": "crochets"
      }
    }
  },
  "SetLatentNoiseMask": {
    "display_name": "Définir le Masque de Bruit Latent",
    "inputs": {
      "mask": {
        "name": "masque"
      },
      "samples": {
        "name": "échantillons"
      }
    }
  },
  "SetUnionControlNetType": {
    "display_name": "Définir le Type de Réseau de Contrôle d'Union",
    "inputs": {
      "control_net": {
        "name": "réseau_de_contrôle"
      },
      "type": {
        "name": "type"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ShuffleDataset": {
    "description": "Mélanger aléatoirement l'ordre des images dans une liste.",
    "display_name": "Mélanger l'ensemble d'images",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "images": {
        "name": "images",
        "tooltip": "Liste des images à traiter."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine aléatoire."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images traitées"
      }
    }
  },
  "ShuffleImageTextDataset": {
    "description": "Mélanger aléatoirement l'ordre des paires image-texte dans une liste.",
    "display_name": "Mélanger l'ensemble image-texte",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "images": {
        "name": "images",
        "tooltip": "Liste des images à mélanger."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine aléatoire."
      },
      "texts": {
        "name": "texts",
        "tooltip": "Liste des textes à mélanger."
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": "Images mélangées"
      },
      "1": {
        "name": "texts",
        "tooltip": "Textes mélangés"
      }
    }
  },
  "ShuffleVideoDataset": {
    "description": "Mélangez aléatoirement l’ordre des vidéos dans une liste.",
    "display_name": "Mélanger la liste de vidéos",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire."
      },
      "videos": {
        "name": "vidéos",
        "tooltip": "Liste des vidéos à mélanger."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéos",
        "tooltip": "Vidéos mélangées"
      }
    }
  },
  "ShuffleVideoTextDataset": {
    "description": "Mélangez aléatoirement l’ordre des paires vidéo-texte dans une liste.",
    "display_name": "Mélanger les paires Vidéo-Texte",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire."
      },
      "texts": {
        "name": "textes",
        "tooltip": "Liste des textes à mélanger."
      },
      "videos": {
        "name": "vidéos",
        "tooltip": "Liste des vidéos à mélanger."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéos",
        "tooltip": "Vidéos mélangées"
      },
      "1": {
        "name": "textes",
        "tooltip": "Textes mélangés"
      }
    }
  },
  "SkipLayerGuidanceDiT": {
    "description": "Version générique du nœud SkipLayerGuidance qui peut être utilisée sur chaque modèle DiT.",
    "display_name": "SkipLayerGuidanceDiT",
    "inputs": {
      "double_layers": {
        "name": "double_couches"
      },
      "end_percent": {
        "name": "pourcentage_de_fin"
      },
      "model": {
        "name": "modèle"
      },
      "rescaling_scale": {
        "name": "échelle_de_redimensionnement"
      },
      "scale": {
        "name": "échelle"
      },
      "single_layers": {
        "name": "couches_simples"
      },
      "start_percent": {
        "name": "pourcentage_de_départ"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SkipLayerGuidanceDiTSimple": {
    "description": "Version simple du nœud GuidanceSautCoucheDiT qui modifie uniquement la passe sans condition.",
    "display_name": "GuidanceSautCoucheDiTSimple",
    "inputs": {
      "double_layers": {
        "name": "couches_doubles"
      },
      "end_percent": {
        "name": "pourcentage_fin"
      },
      "model": {
        "name": "modèle"
      },
      "single_layers": {
        "name": "couches_simples"
      },
      "start_percent": {
        "name": "pourcentage_début"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SkipLayerGuidanceSD3": {
    "description": "Version générique du nœud SkipLayerGuidance qui peut être utilisée sur chaque modèle DiT.",
    "display_name": "SkipLayerGuidanceSD3",
    "inputs": {
      "end_percent": {
        "name": "pourcentage_de_fin"
      },
      "layers": {
        "name": "couches"
      },
      "model": {
        "name": "modèle"
      },
      "scale": {
        "name": "échelle"
      },
      "start_percent": {
        "name": "pourcentage_de_départ"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SolidMask": {
    "display_name": "SolidMask",
    "inputs": {
      "height": {
        "name": "hauteur"
      },
      "value": {
        "name": "valeur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SoniloTextToMusic": {
    "description": "Générez de la musique à partir d'une invite textuelle en utilisant le modèle IA de Sonilo. Laissez la durée à 0 pour que le modèle l'infère à partir de l'invite.",
    "display_name": "Sonilo Texte en Musique",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration": {
        "name": "duration",
        "tooltip": "Durée cible en secondes. Mettez 0 pour laisser le modèle inférer la durée à partir de l'invite. Maximum : 6 minutes."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle décrivant la musique à générer."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour la reproductibilité. Actuellement ignorée par le service Sonilo mais conservée pour la cohérence du graphe."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SoniloVideoToMusic": {
    "description": "Générez de la musique à partir d'un contenu vidéo en utilisant le modèle IA de Sonilo. Analyse la vidéo et crée une musique correspondante.",
    "display_name": "Sonilo Vidéo en Musique",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Invite textuelle optionnelle pour guider la génération musicale. Laissez vide pour une qualité optimale - le modèle analysera entièrement le contenu vidéo."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour la reproductibilité. Actuellement ignorée par le service Sonilo mais conservée pour la cohérence du graphe."
      },
      "video": {
        "name": "video",
        "tooltip": "Vidéo d'entrée à partir de laquelle générer la musique. Durée maximale : 6 minutes."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SplatToFile3D": {
    "description": "Sérialise un splat gaussien dans un objet File3D pour les nœuds Save / Preview 3D. Prend en charge un seul élément par lot.",
    "display_name": "Créer un fichier 3D (à partir d’un Splat)",
    "inputs": {
      "format": {
        "name": "format",
        "tooltip": "ply : Splat gaussien 3D standard avec harmoniques sphériques complètes. ksplat : SplatBuffer mkkellogg (niveau 0, non compressé), couleur de base uniquement. spz : Niantic gzip-compressé (~10x plus petit), couleur de base uniquement."
      },
      "splat": {
        "name": "splat"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_3d",
        "tooltip": null
      }
    }
  },
  "SplatToMesh": {
    "description": "Extrait un maillage coloré à partir d’un splat gaussien.",
    "display_name": "Extraire un maillage depuis un Splat",
    "inputs": {
      "color_sharpen": {
        "name": "accentuation_couleur",
        "tooltip": "Affûte la texture des sommets : 1.0 = mélange physiquement correct ; plus élevé rapproche la couleur de chaque voxel de sa gaussienne dominante au lieu de faire la moyenne des voisines (désembue la texture). Couleur uniquement – la géométrie ne change pas."
      },
      "kernel": {
        "name": "noyau",
        "tooltip": "Largeur maximale du demi-splat en voxels. Chaque gaussienne est rasterisée sur une fenêtre dimensionnée à son propre 3-sigma, plafonnée ici – les petits surfels restent peu coûteux, les grands ne sont pas tronqués. Augmentez si les splats clairsemés laissent des trous."
      },
      "level": {
        "name": "niveau",
        "tooltip": "Niveau d’iso-surface. Choisi automatiquement par Otsu ; ceci le biaise (1.0 = auto, plus bas = surface plus épaisse/connectée, plus haut = plus fine/serrée)."
      },
      "min_component": {
        "name": "composant_min",
        "tooltip": "Supprime les composants connectés plus petits que ce nombre de sommets (0 = tout garder). Élimine les blobs flottants détachés et la coque interne du double mur."
      },
      "min_opacity": {
        "name": "opacité_min",
        "tooltip": "Ignore les gaussiennes plus faibles que cette valeur avant la création du maillage."
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Résolution de la grille de densité le long de l’axe le plus long. Plus élevé = surface plus fine, plus de VRAM/temps (augmente avec résolution^3)."
      },
      "smooth": {
        "name": "lissage",
        "tooltip": "Itérations de lissage de maillage Taubin. Lisse la surface sans la rétrécir (préserve le volume), contrairement au flou de densité. 0 = surface brute."
      },
      "splat": {
        "name": "splat"
      }
    },
    "outputs": {
      "0": {
        "name": "maillage",
        "tooltip": null
      }
    }
  },
  "SplitAudioChannels": {
    "description": "Sépare l'audio en canaux gauche et droit.",
    "display_name": "Séparer les canaux audio",
    "inputs": {
      "audio": {
        "name": "audio"
      }
    },
    "outputs": {
      "0": {
        "name": "gauche",
        "tooltip": null
      },
      "1": {
        "name": "droite",
        "tooltip": null
      }
    }
  },
  "SplitImageToTileList": {
    "description": "Divise une image en une liste groupée de tuiles avec un chevauchement spécifié.",
    "display_name": "Diviser l'image en liste de tuiles",
    "inputs": {
      "image": {
        "name": "image"
      },
      "overlap": {
        "name": "chevauchement"
      },
      "tile_height": {
        "name": "hauteur_tuile"
      },
      "tile_width": {
        "name": "largeur_tuile"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SplitImageWithAlpha": {
    "display_name": "Diviser l'image avec Alpha",
    "inputs": {
      "image": {
        "name": "image"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "tooltip": null
      }
    }
  },
  "SplitSigmas": {
    "display_name": "SplitSigmas",
    "inputs": {
      "sigmas": {
        "name": "sigmas"
      },
      "step": {
        "name": "étape"
      }
    },
    "outputs": {
      "0": {
        "name": "sigmas_hauts",
        "tooltip": null
      },
      "1": {
        "name": "sigmas_bas",
        "tooltip": null
      }
    }
  },
  "SplitSigmasDenoise": {
    "display_name": "SplitSigmasDenoise",
    "inputs": {
      "denoise": {
        "name": "réduction_du_bruit"
      },
      "sigmas": {
        "name": "sigmas"
      }
    },
    "outputs": {
      "0": {
        "name": "sigmas_hauts",
        "tooltip": null
      },
      "1": {
        "name": "sigmas_bas",
        "tooltip": null
      }
    }
  },
  "StableCascade_EmptyLatentImage": {
    "display_name": "StableCascade_EmptyLatentImage",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "compression": {
        "name": "compression"
      },
      "height": {
        "name": "hauteur"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "stage_c",
        "tooltip": null
      },
      "1": {
        "name": "stage_b",
        "tooltip": null
      }
    }
  },
  "StableCascade_StageB_Conditioning": {
    "display_name": "StableCascade_StageB_Conditioning",
    "inputs": {
      "conditioning": {
        "name": "conditionnement"
      },
      "stage_c": {
        "name": "stage_c"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StableCascade_StageC_VAEEncode": {
    "display_name": "StableCascade_StageC_VAEEncode",
    "inputs": {
      "compression": {
        "name": "compression"
      },
      "image": {
        "name": "image"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "stage_c",
        "tooltip": null
      },
      "1": {
        "name": "stage_b",
        "tooltip": null
      }
    }
  },
  "StableCascade_SuperResolutionControlnet": {
    "display_name": "StableCascade_SuperResolutionControlnet",
    "inputs": {
      "image": {
        "name": "image"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "entrée_controlnet",
        "tooltip": null
      },
      "1": {
        "name": "étape_c",
        "tooltip": null
      },
      "2": {
        "name": "étape_b",
        "tooltip": null
      }
    }
  },
  "StableZero123_Conditioning": {
    "display_name": "StableZero123_Conditioning",
    "inputs": {
      "azimuth": {
        "name": "azimut"
      },
      "batch_size": {
        "name": "taille_lot"
      },
      "clip_vision": {
        "name": "clip_vision"
      },
      "elevation": {
        "name": "élévation"
      },
      "height": {
        "name": "hauteur"
      },
      "init_image": {
        "name": "init_image"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "StableZero123_Conditioning_Batched": {
    "display_name": "StableZero123_Conditioning_Batched",
    "inputs": {
      "azimuth": {
        "name": "azimut"
      },
      "azimuth_batch_increment": {
        "name": "incrément_lot_azimut"
      },
      "batch_size": {
        "name": "taille_lot"
      },
      "clip_vision": {
        "name": "clip_vision"
      },
      "elevation": {
        "name": "élévation"
      },
      "elevation_batch_increment": {
        "name": "incrément_lot_élévation"
      },
      "height": {
        "name": "hauteur"
      },
      "init_image": {
        "name": "init_image"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "StringCompare": {
    "display_name": "Comparer",
    "inputs": {
      "case_sensitive": {
        "name": "sensible_casse"
      },
      "mode": {
        "name": "mode"
      },
      "string_a": {
        "name": "chaîne_a"
      },
      "string_b": {
        "name": "chaîne_b"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StringConcatenate": {
    "display_name": "Concaténer",
    "inputs": {
      "delimiter": {
        "name": "délimiteur"
      },
      "string_a": {
        "name": "string_a"
      },
      "string_b": {
        "name": "string_b"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StringContains": {
    "display_name": "Contient",
    "inputs": {
      "case_sensitive": {
        "name": "sensible_à_la_casse"
      },
      "string": {
        "name": "chaîne"
      },
      "substring": {
        "name": "sous-chaîne"
      }
    },
    "outputs": {
      "0": {
        "name": "contient",
        "tooltip": null
      }
    }
  },
  "StringFormat": {
    "description": "Identique à la méthode de formatage de chaîne de Python. Prend en charge toutes les options et fonctionnalités de formatage de Python.",
    "display_name": "Formater le texte",
    "inputs": {
      "f_string": {
        "name": "f_string"
      },
      "values": {
        "name": "values"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StringLength": {
    "display_name": "Longueur",
    "inputs": {
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "name": "longueur",
        "tooltip": null
      }
    }
  },
  "StringReplace": {
    "display_name": "Remplacer",
    "inputs": {
      "find": {
        "name": "rechercher"
      },
      "replace": {
        "name": "remplacer"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StringSubstring": {
    "display_name": "Sous-chaîne",
    "inputs": {
      "end": {
        "name": "fin"
      },
      "start": {
        "name": "début"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StringTrim": {
    "display_name": "Tronquer",
    "inputs": {
      "mode": {
        "name": "mode"
      },
      "string": {
        "name": "chaîne"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "StripWhitespace": {
    "display_name": "Supprimer les espaces",
    "inputs": {
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "StyleModelApply": {
    "display_name": "Appliquer le modèle de style",
    "inputs": {
      "clip_vision_output": {
        "name": "sortie_clip_vision"
      },
      "conditioning": {
        "name": "conditionnement"
      },
      "strength": {
        "name": "force"
      },
      "strength_type": {
        "name": "type_de_force"
      },
      "style_model": {
        "name": "modèle_de_style"
      }
    }
  },
  "StyleModelLoader": {
    "display_name": "Charger le modèle de style",
    "inputs": {
      "style_model_name": {
        "name": "nom_du_modèle_de_style"
      }
    }
  },
  "SyncLipSyncNode": {
    "description": "Re-synchronisez le mouvement de la bouche dans une vidéo avec un nouvel audio de parole grâce à sync.so. Gère automatiquement les gros plans, les profils et les obstructions tout en préservant l'expression du locuteur. Le coût dépend de la durée de la sortie.",
    "display_name": "sync.so Lip Sync",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio de parole auquel synchroniser la bouche."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle de génération sync.so."
      },
      "model_speaker_frame": {
        "name": "image_locuteur"
      },
      "model_speaker_selection": {
        "name": "sélection_locuteur"
      },
      "model_speaker_x": {
        "name": "locuteur_x"
      },
      "model_speaker_y": {
        "name": "locuteur_y"
      },
      "model_sync_mode": {
        "name": "mode_sync"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Séquence du locuteur à resynchroniser. Jusqu'à 4K (4096x2160) ; un taux d'images constant de 24/25/30 fps est optimal."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "SyncTalkingImageNode": {
    "description": "Animez un portrait fixe en une vidéo parlante pilotée par un audio de parole, grâce au modèle sync-3 de sync.so. La durée de sortie correspond à celle de l'audio. Le coût dépend de la durée de la sortie.",
    "display_name": "sync.so Talking Image",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio de parole pilotant la vidéo parlante ; la durée de sortie correspond à celle-ci. Chaînez ici n'importe quel nœud TTS pour animer à partir d'un texte."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Une seule image avec un visage clairement visible, jusqu'à 4K (4096x2160)."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle de génération sync.so. L'entrée image est exclusive à sync-3."
      },
      "model_auto_downscale": {
        "name": "auto_redimensionnement"
      },
      "model_speaker_selection": {
        "name": "sélection_locuteur"
      },
      "model_speaker_x": {
        "name": "locuteur_x"
      },
      "model_speaker_y": {
        "name": "locuteur_y"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Indication optionnelle sur la façon dont le portrait prend vie, par exemple « faire sourire le sujet et regarder la caméra ». Laissez vide pour un mouvement naturel de la parole."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "T5TokenizerOptions": {
    "display_name": "T5TokenizerOptions",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "min_length": {
        "name": "longueur_min"
      },
      "min_padding": {
        "name": "remplissage_min"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TCFG": {
    "description": "TCFG – Amortissement tangentiel CFG (2503.18137)\n\nAffine le uncond (négatif) pour l'aligner avec le cond (positif) afin d'améliorer la qualité.",
    "display_name": "Amortissement tangentiel CFG",
    "inputs": {
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_corrigé",
        "tooltip": null
      }
    }
  },
  "TemporalScoreRescaling": {
    "description": "[Fonction post-CFG]\nTSR - Rééchelonnage temporel des scores (2510.01184)\n\nRééchelonne le score ou le bruit du modèle pour orienter la diversité de l'échantillonnage.",
    "display_name": "TSR - Rééchelonnage temporel des scores",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "tsr_k": {
        "name": "tsr_k",
        "tooltip": "Contrôle la force de rééchelonnage.\nUn k plus faible produit des résultats plus détaillés ; un k plus élevé produit des résultats plus lisses dans la génération d'images. Régler k = 1 désactive le rééchelonnage."
      },
      "tsr_sigma": {
        "name": "tsr_sigma",
        "tooltip": "Contrôle à quel moment le rééchelonnage prend effet.\nDes valeurs plus grandes prennent effet plus tôt."
      }
    },
    "outputs": {
      "0": {
        "name": "modèle_corrigé",
        "tooltip": null
      }
    }
  },
  "Tencent3DPartNode": {
    "description": "Identifie et génère automatiquement des composants en fonction de la structure du modèle.",
    "display_name": "Hunyuan3D : Partie 3D",
    "inputs": {
      "control_after_generate": {
        "name": "contrôler après génération"
      },
      "model_3d": {
        "name": "modèle_3d",
        "tooltip": "Modèle 3D au format FBX. Le modèle doit comporter moins de 30 000 faces."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "FBX",
        "tooltip": null
      }
    }
  },
  "Tencent3DTextureEditNode": {
    "description": "Après avoir importé le modèle 3D, effectuez la retouche de la texture du modèle 3D.",
    "display_name": "Hunyuan3D : Édition de texture 3D",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Modèle 3D au format FBX. Le modèle doit comporter moins de 100 000 faces."
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Décrit l’édition de la texture. Prend en charge jusqu’à 1024 caractères UTF-8."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Le seed contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit le seed."
      }
    },
    "outputs": {
      "0": {
        "name": "GLB",
        "tooltip": null
      },
      "1": {
        "name": "OBJ",
        "tooltip": null
      },
      "2": {
        "name": "texture_image",
        "tooltip": null
      }
    }
  },
  "TencentImageToModelNode": {
    "display_name": "Hunyuan3D : Image(s) vers Modèle (Pro)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "face_count": {
        "name": "nombre de faces"
      },
      "generate_type": {
        "name": "type de génération"
      },
      "generate_type_pbr": {
        "name": "pbr"
      },
      "image": {
        "name": "image"
      },
      "image_back": {
        "name": "image arrière"
      },
      "image_left": {
        "name": "image gauche"
      },
      "image_right": {
        "name": "image droite"
      },
      "model": {
        "name": "modèle",
        "tooltip": "L’option LowPoly n’est pas disponible pour le modèle `3.1`."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      },
      "2": {
        "name": "OBJ",
        "tooltip": null
      },
      "3": {
        "name": "texture_image",
        "tooltip": null
      },
      "4": {
        "name": "optionnel_metallic",
        "tooltip": null
      },
      "5": {
        "name": "optionnel_normal",
        "tooltip": null
      },
      "6": {
        "name": "optionnel_roughness",
        "tooltip": null
      }
    }
  },
  "TencentModelTo3DUVNode": {
    "description": "Effectue le dépliage UV d’un modèle 3D pour générer une texture UV. Le modèle d’entrée doit comporter moins de 30 000 faces.",
    "display_name": "Hunyuan3D : Modèle vers UV",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model_3d": {
        "name": "modèle_3d",
        "tooltip": "Modèle 3D en entrée (GLB, OBJ ou FBX)"
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "OBJ",
        "tooltip": null
      },
      "1": {
        "name": "FBX",
        "tooltip": null
      },
      "2": {
        "name": "uv_image",
        "tooltip": null
      }
    }
  },
  "TencentSmartTopologyNode": {
    "description": "Effectue une retopologie intelligente sur un modèle 3D. Prend en charge les formats GLB/OBJ ; 200 Mo max ; recommandé pour les modèles haute résolution.",
    "display_name": "Hunyuan3D : Topologie intelligente",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "face_level": {
        "name": "niveau_de_faces",
        "tooltip": "Niveau de réduction des polygones."
      },
      "model_3d": {
        "name": "modèle_3d",
        "tooltip": "Modèle 3D en entrée (GLB ou OBJ)"
      },
      "polygon_type": {
        "name": "type_polygone",
        "tooltip": "Type de composition de surface."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats sont non déterministes quel que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "OBJ",
        "tooltip": null
      }
    }
  },
  "TencentTextToModelNode": {
    "display_name": "Hunyuan3D : Texte vers Modèle (Pro)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "face_count": {
        "name": "nombre de faces"
      },
      "generate_type": {
        "name": "type de génération"
      },
      "generate_type_pbr": {
        "name": "pbr"
      },
      "model": {
        "name": "modèle",
        "tooltip": "L’option LowPoly n’est pas disponible pour le modèle `3.1`."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Jusqu’à 1024 caractères pris en charge."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quelle que soit la graine."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "GLB",
        "tooltip": null
      },
      "2": {
        "name": "OBJ",
        "tooltip": null
      },
      "3": {
        "name": "texture_image",
        "tooltip": null
      }
    }
  },
  "TextEncodeAceStepAudio": {
    "display_name": "TextEncodeAceStepAudio",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "lyrics": {
        "name": "paroles"
      },
      "lyrics_strength": {
        "name": "force_des_paroles"
      },
      "tags": {
        "name": "balises"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeAceStepAudio1_5": {
    "display_name": "TextEncodeAceStepAudio1.5",
    "inputs": {
      "bpm": {
        "name": "bpm"
      },
      "cfg_scale": {
        "name": "cfg_scale"
      },
      "clip": {
        "name": "clip"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "generate_audio_codes": {
        "name": "générer des codes audio",
        "tooltip": "Activez le LLM qui génère des codes audio. Cela peut être lent mais augmentera la qualité de l’audio généré. Désactivez cette option si vous fournissez une référence audio au modèle."
      },
      "keyscale": {
        "name": "tonalité"
      },
      "language": {
        "name": "langue"
      },
      "lyrics": {
        "name": "paroles"
      },
      "min_p": {
        "name": "min_p"
      },
      "seed": {
        "name": "graine"
      },
      "tags": {
        "name": "tags"
      },
      "temperature": {
        "name": "température"
      },
      "timesignature": {
        "name": "signature rythmique"
      },
      "top_k": {
        "name": "top_k"
      },
      "top_p": {
        "name": "top_p"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeBooguEdit": {
    "display_name": "TextEncodeBooguEdit",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) de référence à éditer. Boogu se concentre sur une référence par échantillon ; plusieurs sont autorisées."
      },
      "negative_prompt": {
        "name": "negative_prompt"
      },
      "prompt": {
        "name": "prompt"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      }
    }
  },
  "TextEncodeHunyuanVideo_ImageToVideo": {
    "display_name": "TextEncodeHunyuanVideo_ImageToVideo",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      },
      "image_interleave": {
        "name": "entrelacement_image",
        "tooltip": "À quel point l'image influence les choses par rapport à l'invite de texte. Un nombre plus élevé signifie plus d'influence de l'invite de texte."
      },
      "prompt": {
        "name": "invite"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeJoyImageEdit": {
    "display_name": "TextEncodeJoyImageEdit",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "images": {
        "name": "images"
      },
      "prompt": {
        "name": "prompt"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeMageFlowEdit": {
    "description": "Encode une instruction d’édition avec une ou plusieurs images de référence pour Mage-Flow-Edit. Les latents de référence sont redimensionnés à la résolution de sortie (largeur/hauteur, ou à la taille de la première image si 0). Utilisez la sortie latent pour l’échantillonnage afin que les tailles correspondent toujours.",
    "display_name": "TextEncodeMageFlowEdit",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "clip": {
        "name": "clip"
      },
      "height": {
        "name": "height",
        "tooltip": "Hauteur de sortie. 0 = utiliser la taille de la première image de référence."
      },
      "images": {
        "name": "images",
        "tooltip": "Image(s) de référence à éditer. Toutes les références sont redimensionnées à la résolution de sortie avant l’encodage."
      },
      "negative_prompt": {
        "name": "negative_prompt"
      },
      "prompt": {
        "name": "prompt"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "width",
        "tooltip": "Largeur de sortie. 0 = utiliser la taille de la première image de référence."
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "TextEncodeQwenImageEdit": {
    "display_name": "TextEncodeQwenImageEdit",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "image": {
        "name": "image"
      },
      "prompt": {
        "name": "invite"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeQwenImageEditPlus": {
    "display_name": "TextEncodeQwenImageEditPlus",
    "inputs": {
      "clip": {
        "name": "clip"
      },
      "image1": {
        "name": "image1"
      },
      "image2": {
        "name": "image2"
      },
      "image3": {
        "name": "image3"
      },
      "prompt": {
        "name": "invite"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextEncodeZImageOmni": {
    "display_name": "TextEncodeZImageOmni",
    "inputs": {
      "auto_resize_images": {
        "name": "redimensionnement automatique des images"
      },
      "clip": {
        "name": "clip"
      },
      "image1": {
        "name": "image1"
      },
      "image2": {
        "name": "image2"
      },
      "image3": {
        "name": "image3"
      },
      "image_encoder": {
        "name": "encodeur d'image"
      },
      "prompt": {
        "name": "invite"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TextGenerate": {
    "display_name": "TextGenerate",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "clip": {
        "name": "clip"
      },
      "image": {
        "name": "image"
      },
      "max_length": {
        "name": "longueur_max"
      },
      "prompt": {
        "name": "invite"
      },
      "sampling_mode": {
        "name": "mode_d'échantillonnage"
      },
      "sampling_mode_min_p": {
        "name": "min_p"
      },
      "sampling_mode_presence_penalty": {
        "name": "pénalité_de_presence"
      },
      "sampling_mode_repetition_penalty": {
        "name": "pénalité_de_répétition"
      },
      "sampling_mode_seed": {
        "name": "graine"
      },
      "sampling_mode_temperature": {
        "name": "température"
      },
      "sampling_mode_top_k": {
        "name": "top_k"
      },
      "sampling_mode_top_p": {
        "name": "top_p"
      },
      "thinking": {
        "name": "réflexion",
        "tooltip": "Fonctionner en mode réflexion si le modèle le permet."
      },
      "use_default_template": {
        "name": "utiliser le modèle par défaut",
        "tooltip": "Utiliser l'invite/le modèle système intégré si le modèle en possède un."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Images extraites de la vidéo en lot. Supposé à 24 FPS ; sous-échantillonné à 1 FPS en interne."
      }
    },
    "outputs": {
      "0": {
        "name": "texte_généré",
        "tooltip": null
      }
    }
  },
  "TextGenerateLTX2Prompt": {
    "display_name": "TextGenerateLTX2Prompt",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "clip": {
        "name": "clip"
      },
      "image": {
        "name": "image"
      },
      "max_length": {
        "name": "longueur_maximale"
      },
      "prompt": {
        "name": "invite"
      },
      "sampling_mode": {
        "name": "mode_d'échantillonnage"
      },
      "sampling_mode_min_p": {
        "name": "min_p"
      },
      "sampling_mode_presence_penalty": {
        "name": "pénalité_de_presence"
      },
      "sampling_mode_repetition_penalty": {
        "name": "pénalité_de_répétition"
      },
      "sampling_mode_seed": {
        "name": "graine"
      },
      "sampling_mode_temperature": {
        "name": "température"
      },
      "sampling_mode_top_k": {
        "name": "top_k"
      },
      "sampling_mode_top_p": {
        "name": "top_p"
      },
      "thinking": {
        "name": "réflexion",
        "tooltip": "Fonctionner en mode réflexion si le modèle le permet."
      },
      "use_default_template": {
        "name": "utiliser le modèle par défaut",
        "tooltip": "Utiliser l'invite/le modèle système intégré si le modèle en possède un."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Images extraites de la vidéo en lot. Supposé à 24 FPS ; sous-échantillonné à 1 FPS en interne."
      }
    },
    "outputs": {
      "0": {
        "name": "texte_généré",
        "tooltip": null
      }
    }
  },
  "TextOverlay": {
    "description": "Superposez du texte sur une image ou un lot d’images.",
    "display_name": "Superposer du texte",
    "inputs": {
      "align": {
        "name": "alignement"
      },
      "color": {
        "name": "couleur",
        "tooltip": "Couleur du texte."
      },
      "font_size": {
        "name": "taille_de_police",
        "tooltip": "Taille de la police en pourcentage de la hauteur de l’image."
      },
      "images": {
        "name": "images"
      },
      "outline": {
        "name": "contour",
        "tooltip": "Dessiner un contour noir autour du texte."
      },
      "position": {
        "name": "position"
      },
      "text": {
        "name": "texte"
      }
    },
    "outputs": {
      "0": {
        "name": "images",
        "tooltip": null
      }
    }
  },
  "TextToLowercase": {
    "display_name": "Texte en minuscules",
    "inputs": {
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "TextToUppercase": {
    "display_name": "Texte en majuscules",
    "inputs": {
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "ThresholdMask": {
    "display_name": "SeuilMasque",
    "inputs": {
      "mask": {
        "name": "masque"
      },
      "value": {
        "name": "valeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TomePatchModel": {
    "display_name": "ModèlePatchTome",
    "inputs": {
      "model": {
        "name": "modèle"
      },
      "ratio": {
        "name": "ratio"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TopazImageEnhance": {
    "description": "Agrandissement et amélioration d'image de référence dans l'industrie.",
    "display_name": "Topaz Amélioration d'image",
    "inputs": {
      "color_preservation": {
        "name": "préservation des couleurs",
        "tooltip": "Préserver les couleurs d'origine."
      },
      "creativity": {
        "name": "créativité"
      },
      "crop_to_fill": {
        "name": "rogner pour remplir",
        "tooltip": "Par défaut, l'image est encadrée si le format de sortie diffère. Activez pour rogner l'image afin de remplir les dimensions de sortie."
      },
      "face_enhancement": {
        "name": "amélioration du visage",
        "tooltip": "Améliorer les visages (si présents) lors du traitement."
      },
      "face_enhancement_creativity": {
        "name": "créativité de l'amélioration du visage",
        "tooltip": "Définir le niveau de créativité pour l'amélioration du visage."
      },
      "face_enhancement_strength": {
        "name": "intensité de l'amélioration du visage",
        "tooltip": "Contrôle la netteté des visages améliorés par rapport à l'arrière-plan."
      },
      "face_preservation": {
        "name": "préservation du visage",
        "tooltip": "Préserver l'identité faciale des sujets."
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "output_height": {
        "name": "hauteur de sortie",
        "tooltip": "Une valeur de zéro signifie conserver la hauteur d'origine ou la largeur de sortie."
      },
      "output_width": {
        "name": "largeur de sortie",
        "tooltip": "Une valeur de zéro signifie calcul automatique (généralement la taille d'origine ou la hauteur de sortie si spécifiée)."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite textuelle optionnelle pour guider l'agrandissement créatif."
      },
      "subject_detection": {
        "name": "détection du sujet"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TopazImageEnhanceV2": {
    "description": "Agrandissement et amélioration d’image de référence dans l’industrie.",
    "display_name": "Topaz Amélioration d’Image",
    "inputs": {
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "model_color_preservation": {
        "name": "préservation des couleurs"
      },
      "model_creativity": {
        "name": "créativité"
      },
      "model_crop_to_fill": {
        "name": "recadrer pour remplir"
      },
      "model_face_enhancement": {
        "name": "amélioration du visage"
      },
      "model_face_enhancement_creativity": {
        "name": "créativité de l’amélioration du visage"
      },
      "model_face_enhancement_strength": {
        "name": "intensité de l’amélioration du visage"
      },
      "model_face_preservation": {
        "name": "préservation du visage"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_subject_detection": {
        "name": "détection du sujet"
      },
      "output_height": {
        "name": "hauteur de sortie",
        "tooltip": "Une valeur zéro signifie une sortie à la même hauteur que l’original ou proportionnelle à output_width si spécifié. Wonder 3.5 prend en charge des facteurs d’agrandissement de 1x à 6x uniquement. Bloom 2 et Wonder 3.5 conservent le rapport d’aspect d’entrée et considèrent la taille demandée comme une cible."
      },
      "output_width": {
        "name": "largeur de sortie",
        "tooltip": "Une valeur zéro signifie un calcul automatique (généralement la taille d’origine ou proportionnelle à output_height si spécifié). Wonder 3.5 prend en charge des facteurs d’agrandissement de 1x à 6x uniquement. Bloom 2 et Wonder 3.5 conservent le rapport d’aspect d’entrée et considèrent la taille demandée comme une cible."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TopazVideoEnhance": {
    "description": "Redonnez vie à vos vidéos grâce à une technologie puissante d’upscaling et de restauration.",
    "display_name": "Topaz Video Enhance",
    "inputs": {
      "dynamic_compression_level": {
        "name": "dynamic_compression_level",
        "tooltip": "Niveau CQP."
      },
      "interpolation_duplicate": {
        "name": "interpolation_duplicate",
        "tooltip": "Analyse la vidéo d’entrée pour détecter et supprimer les images dupliquées."
      },
      "interpolation_duplicate_threshold": {
        "name": "interpolation_duplicate_threshold",
        "tooltip": "Sensibilité de détection des images dupliquées."
      },
      "interpolation_enabled": {
        "name": "interpolation_enabled"
      },
      "interpolation_frame_rate": {
        "name": "interpolation_frame_rate",
        "tooltip": "Fréquence d’images de sortie."
      },
      "interpolation_model": {
        "name": "interpolation_model"
      },
      "interpolation_slowmo": {
        "name": "interpolation_slowmo",
        "tooltip": "Facteur de ralenti appliqué à la vidéo d’entrée. Par exemple, 2 rend la sortie deux fois plus lente et double la durée."
      },
      "upscaler_creativity": {
        "name": "upscaler_creativity",
        "tooltip": "Niveau de créativité (s’applique uniquement à Starlight (Astra) Creative)."
      },
      "upscaler_enabled": {
        "name": "upscaler_enabled"
      },
      "upscaler_model": {
        "name": "upscaler_model"
      },
      "upscaler_resolution": {
        "name": "upscaler_resolution"
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TopazVideoEnhanceV2": {
    "description": "Redonnez vie à vos vidéos grâce à une technologie puissante d’agrandissement et de restauration.",
    "display_name": "Topaz Video Enhance",
    "inputs": {
      "dynamic_compression_level": {
        "name": "niveau de compression dynamique",
        "tooltip": "Niveau CQP."
      },
      "interpolation_model": {
        "name": "modèle d’interpolation"
      },
      "upscaler_model": {
        "name": "modèle d’agrandissement"
      },
      "upscaler_model_creativity": {
        "name": "créativité"
      },
      "upscaler_model_prompt": {
        "name": "invite"
      },
      "upscaler_model_realism": {
        "name": "réalisme"
      },
      "upscaler_model_sharp": {
        "name": "netteté"
      },
      "upscaler_model_upscaler_resolution": {
        "name": "résolution d’agrandissement"
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TorchCompileModel": {
    "display_name": "ModèleCompilationTorch",
    "inputs": {
      "backend": {
        "name": "backend"
      },
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TrainLoraNode": {
    "display_name": "Entraîner LoRA",
    "inputs": {
      "algorithm": {
        "name": "algorithme",
        "tooltip": "L'algorithme à utiliser pour l'entraînement."
      },
      "batch_size": {
        "name": "taille_du_lot",
        "tooltip": "La taille du lot à utiliser pour l'entraînement."
      },
      "bucket_mode": {
        "name": "bucket_mode",
        "tooltip": "Activer le mode de résolution par compartiments. Lorsqu’il est activé, attend des latents pré-triés depuis le nœud ResolutionBucket."
      },
      "bypass_mode": {
        "name": "bypass_mode",
        "tooltip": "Activer le mode bypass pour l'entraînement. Lorsqu'il est activé, les adaptateurs sont appliqués via des hooks forward au lieu de la modification des poids. Utile pour les modèles quantifiés dont les poids ne peuvent pas être modifiés directement."
      },
      "checkpoint_depth": {
        "name": "checkpoint_depth",
        "tooltip": "Niveau de profondeur pour le gradient checkpointing."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "existing_lora": {
        "name": "lora_existant",
        "tooltip": "Le LoRA existant à ajouter. Définir sur Aucun pour un nouveau LoRA."
      },
      "grad_accumulation_steps": {
        "name": "étapes_accumulation_gradient",
        "tooltip": "Le nombre d'étapes d'accumulation de gradient à utiliser pour l'entraînement."
      },
      "gradient_checkpointing": {
        "name": "point de contrôle de gradient",
        "tooltip": "Utiliser le point de contrôle de gradient pour l'entraînement."
      },
      "latents": {
        "name": "latents",
        "tooltip": "Les latents à utiliser pour l'entraînement, servent de jeu de données/entrée du modèle."
      },
      "learning_rate": {
        "name": "taux_apprentissage",
        "tooltip": "Le taux d'apprentissage à utiliser pour l'entraînement."
      },
      "lora_dtype": {
        "name": "type_données_lora",
        "tooltip": "Le type de données à utiliser pour le LoRA."
      },
      "loss_function": {
        "name": "fonction_perte",
        "tooltip": "La fonction de perte à utiliser pour l'entraînement."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle sur lequel entraîner le LoRA."
      },
      "offloading": {
        "name": "offloading",
        "tooltip": "Niveau de profondeur pour le gradient checkpointing."
      },
      "optimizer": {
        "name": "optimiseur",
        "tooltip": "L'optimiseur à utiliser pour l'entraînement."
      },
      "positive": {
        "name": "positif",
        "tooltip": "Le conditionnement positif à utiliser pour l'entraînement."
      },
      "quantized_backward": {
        "name": "quantized_backward",
        "tooltip": "Lorsque le paramètre training_dtype est défini sur 'none' et que l'entraînement se fait sur un modèle quantifié, effectue la rétropropagation avec une multiplication matricielle quantifiée si activé."
      },
      "rank": {
        "name": "rang",
        "tooltip": "Le rang des couches LoRA."
      },
      "seed": {
        "name": "graine",
        "tooltip": "La graine à utiliser pour l'entraînement (utilisée dans le générateur pour l'initialisation des poids LoRA et l'échantillonnage du bruit)."
      },
      "steps": {
        "name": "étapes",
        "tooltip": "Le nombre d'étapes pour entraîner le LoRA."
      },
      "training_dtype": {
        "name": "type_données_entraînement",
        "tooltip": "Le type de données à utiliser pour l'entraînement."
      }
    },
    "outputs": {
      "0": {
        "name": "lora",
        "tooltip": "Modèle avec LoRA appliqué"
      },
      "1": {
        "name": "carte_de_perte",
        "tooltip": "Poids LoRA"
      },
      "2": {
        "name": "étapes",
        "tooltip": "Historique de la perte"
      }
    }
  },
  "TransformSplat": {
    "description": "Déplace, fait pivoter et met à l’échelle un splat gaussien. L’échelle non uniforme modifie aussi la forme de chaque splat individuel, processus plus lent.",
    "display_name": "Transformer Splat",
    "inputs": {
      "rotate_x": {
        "name": "rotation_x"
      },
      "rotate_y": {
        "name": "rotation_y"
      },
      "rotate_z": {
        "name": "rotation_z"
      },
      "scale_x": {
        "name": "échelle_x"
      },
      "scale_y": {
        "name": "échelle_y"
      },
      "scale_z": {
        "name": "échelle_z"
      },
      "splat": {
        "name": "splat"
      },
      "translate_x": {
        "name": "translation_x"
      },
      "translate_y": {
        "name": "translation_y"
      },
      "translate_z": {
        "name": "translation_z"
      }
    },
    "outputs": {
      "0": {
        "name": "splat",
        "tooltip": null
      }
    }
  },
  "TrimAudioDuration": {
    "description": "Tronquer le tenseur audio dans la plage de temps choisie.",
    "display_name": "Régler la Durée Audio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée en secondes"
      },
      "start_index": {
        "name": "index_début",
        "tooltip": "Heure de début en secondes, peut être négative pour compter depuis la fin (prend en charge les sous-secondes)."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TrimVideoLatent": {
    "display_name": "TrimVideoLatent",
    "inputs": {
      "samples": {
        "name": "échantillons"
      },
      "trim_amount": {
        "name": "quantité de découpe"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TripleCLIPLoader": {
    "description": "[Recettes]\n\nsd3: clip-l, clip-g, t5",
    "display_name": "ChargeurTripleCLIP",
    "inputs": {
      "clip_name1": {
        "name": "nom_clip1"
      },
      "clip_name2": {
        "name": "nom_clip2"
      },
      "clip_name3": {
        "name": "nom_clip3"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TripoConversionNode": {
    "display_name": "Tripo : Convertir le modèle",
    "inputs": {
      "animate_in_place": {
        "name": "animate_in_place"
      },
      "bake": {
        "name": "bake"
      },
      "export_orientation": {
        "name": "export_orientation"
      },
      "export_vertex_colors": {
        "name": "export_vertex_colors"
      },
      "face_limit": {
        "name": "limite_faces"
      },
      "fbx_preset": {
        "name": "fbx_preset"
      },
      "flatten_bottom": {
        "name": "flatten_bottom"
      },
      "flatten_bottom_threshold": {
        "name": "flatten_bottom_threshold"
      },
      "force_symmetry": {
        "name": "force_symmetry"
      },
      "format": {
        "name": "format"
      },
      "original_model_task_id": {
        "name": "id_tâche_modèle_original"
      },
      "pack_uv": {
        "name": "pack_uv"
      },
      "part_names": {
        "name": "part_names"
      },
      "pivot_to_center_bottom": {
        "name": "pivot_to_center_bottom"
      },
      "quad": {
        "name": "quad"
      },
      "scale_factor": {
        "name": "scale_factor"
      },
      "texture_format": {
        "name": "format_texture"
      },
      "texture_size": {
        "name": "taille_texture"
      },
      "with_animation": {
        "name": "with_animation"
      }
    }
  },
  "TripoImageToModelNode": {
    "display_name": "Tripo : Image vers Modèle",
    "inputs": {
      "face_limit": {
        "name": "limite_faces"
      },
      "geometry_quality": {
        "name": "geometry_quality"
      },
      "image": {
        "name": "image"
      },
      "model_seed": {
        "name": "graine_modèle"
      },
      "model_version": {
        "name": "version_modèle",
        "tooltip": "La version du modèle à utiliser pour la génération"
      },
      "orientation": {
        "name": "orientation"
      },
      "pbr": {
        "name": "pbr"
      },
      "quad": {
        "name": "quad"
      },
      "style": {
        "name": "style"
      },
      "texture": {
        "name": "texture"
      },
      "texture_alignment": {
        "name": "alignement_texture"
      },
      "texture_quality": {
        "name": "qualité_texture"
      },
      "texture_seed": {
        "name": "graine_texture"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "modèle task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoImportModelNode": {
    "description": "Importez un modèle 3D externe (par exemple depuis Rodin, Hunyuan3D ou un fichier local) dans Tripo pour l'utiliser avec les nœuds de post-traitement de Tripo : Texture, Rig, Convert. GLB est recommandé : les textures ne sont conservées à l'import que si elles sont intégrées dans le fichier. Notez que le texturage d'un modèle importé nécessite une invite de texture.",
    "display_name": "Tripo : Importer un modèle",
    "inputs": {
      "model_3d": {
        "name": "model_3d",
        "tooltip": "Modèle 3D à importer (GLB / FBX / OBJ / STL, jusqu'à 150 Mo). Les fichiers OBJ et STL ne contiennent pas de textures intégrées."
      }
    },
    "outputs": {
      "0": {
        "name": "model task_id",
        "tooltip": null
      }
    }
  },
  "TripoMultiviewToModelNode": {
    "display_name": "Tripo : Multivue vers Modèle",
    "inputs": {
      "face_limit": {
        "name": "limite_visage"
      },
      "geometry_quality": {
        "name": "geometry_quality"
      },
      "image": {
        "name": "image"
      },
      "image_back": {
        "name": "image_arrière"
      },
      "image_left": {
        "name": "image_gauche"
      },
      "image_right": {
        "name": "image_droite"
      },
      "model_seed": {
        "name": "graine_modèle"
      },
      "model_version": {
        "name": "version_modèle",
        "tooltip": "La version du modèle à utiliser pour la génération"
      },
      "orientation": {
        "name": "orientation"
      },
      "pbr": {
        "name": "pbr"
      },
      "quad": {
        "name": "quad",
        "tooltip": "Ce paramètre est obsolète et n'a aucun effet."
      },
      "texture": {
        "name": "texture"
      },
      "texture_alignment": {
        "name": "alignement_texture"
      },
      "texture_quality": {
        "name": "qualité_texture"
      },
      "texture_seed": {
        "name": "graine_texture"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "modèle task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoP1ImageToModelNode": {
    "description": "Tripo P1 image-vers-3D. Optimisé pour des maillages low-poly, prêts pour les jeux.",
    "display_name": "Tripo P1 : Image vers Modèle",
    "inputs": {
      "auto_size": {
        "name": "auto_size",
        "tooltip": "Met à l'échelle la sortie pour correspondre à des mètres réels approximatifs."
      },
      "compress_geometry": {
        "name": "compress_geometry",
        "tooltip": "Applique une compression basée sur la géométrie. Décompressez avant l'édition."
      },
      "enable_image_autofix": {
        "name": "enable_image_autofix",
        "tooltip": "Prétraite l'image d'entrée pour une meilleure qualité de génération."
      },
      "export_uv": {
        "name": "export_uv",
        "tooltip": "Dépliage UV pendant la génération. Désactivez pour des exécutions plus rapides en géométrie uniquement."
      },
      "face_limit": {
        "name": "face_limit",
        "tooltip": "Nombre de faces cible, 48-20000. -1 laisse Tripo choisir de façon adaptative."
      },
      "image": {
        "name": "image"
      },
      "model_seed": {
        "name": "model_seed"
      },
      "output_mode": {
        "name": "output_mode",
        "tooltip": "\"Géométrie uniquement\" retourne un maillage sans texture. \"Texturé\" ajoute des cartes couleur/PBR."
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "model task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoP1MultiviewToModelNode": {
    "description": "Tripo P1 multivues-vers-3D à partir de 2 à 4 images de référence dans l'ordre [avant, gauche, arrière, droite]. L'avant est requis ; toute combinaison des trois autres peut être omise.",
    "display_name": "Tripo P1 : Multivues vers Modèle",
    "inputs": {
      "auto_size": {
        "name": "auto_size",
        "tooltip": "Met à l'échelle la sortie pour correspondre à des mètres réels approximatifs."
      },
      "compress_geometry": {
        "name": "compress_geometry",
        "tooltip": "Applique une compression basée sur la géométrie. Décompressez avant l'édition."
      },
      "export_uv": {
        "name": "export_uv",
        "tooltip": "Dépliage UV pendant la génération. Désactivez pour des exécutions plus rapides en géométrie uniquement."
      },
      "face_limit": {
        "name": "face_limit",
        "tooltip": "Nombre de faces cible, 48-20000. -1 laisse Tripo choisir de façon adaptative."
      },
      "image": {
        "name": "image",
        "tooltip": "Vue avant (0°). Requise."
      },
      "image_back": {
        "name": "image_back",
        "tooltip": "Vue arrière (180°)."
      },
      "image_left": {
        "name": "image_left",
        "tooltip": "Vue gauche (90°), c'est-à-dire le côté gauche du sujet."
      },
      "image_right": {
        "name": "image_right",
        "tooltip": "Vue droite (270°), c'est-à-dire le côté droit du sujet."
      },
      "model_seed": {
        "name": "model_seed"
      },
      "output_mode": {
        "name": "output_mode",
        "tooltip": "\"Géométrie uniquement\" retourne un maillage sans texture. \"Texturé\" ajoute des cartes couleur/PBR."
      }
    },
    "outputs": {
      "0": {
        "name": "model_file",
        "tooltip": null
      },
      "1": {
        "name": "model task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoP1TextToModelNode": {
    "description": "Tripo P1 texte-vers-3D. Optimisé pour des maillages low-poly, prêts pour le jeu, avec une topologie stable.",
    "display_name": "Tripo P1 : Texte vers Modèle",
    "inputs": {
      "auto_size": {
        "name": "taille automatique",
        "tooltip": "Mettre à l'échelle la sortie pour approximer des mètres réels."
      },
      "compress_geometry": {
        "name": "compresser la géométrie",
        "tooltip": "Appliquer une compression basée sur la géométrie. Décompressez avant l'édition."
      },
      "export_uv": {
        "name": "exporter UV",
        "tooltip": "Déplier les UV pendant la génération. Désactivez pour des exécutions géométrie uniquement plus rapides."
      },
      "face_limit": {
        "name": "limite de faces",
        "tooltip": "Nombre de faces cible, 48-20000. -1 laisse Tripo choisir de façon adaptative."
      },
      "image_seed": {
        "name": "graine d'image"
      },
      "model_seed": {
        "name": "graine du modèle"
      },
      "negative_prompt": {
        "name": "invite négative",
        "tooltip": "Jusqu'à 255 caractères."
      },
      "output_mode": {
        "name": "mode de sortie",
        "tooltip": "\"Géométrie uniquement\" retourne un maillage sans texture. \"Texturé\" ajoute des cartes de couleur/PBR."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Jusqu'à 1024 caractères."
      }
    },
    "outputs": {
      "0": {
        "name": "fichier modèle",
        "tooltip": null
      },
      "1": {
        "name": "ID de tâche modèle",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoRefineNode": {
    "description": "Affinez un modèle d'ébauche créé uniquement par les modèles Tripo v1.4.",
    "display_name": "Tripo : Modèle de raffinement d'ébauche",
    "inputs": {
      "model_task_id": {
        "name": "ID_tâche_modèle",
        "tooltip": "Doit être un modèle Tripo v1.4"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "modèle task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoRetargetNode": {
    "display_name": "Tripo : Modèle squeletté redirigé",
    "inputs": {
      "animation": {
        "name": "animation"
      },
      "original_model_task_id": {
        "name": "ID_tâche_modèle_original"
      }
    },
    "outputs": {
      "0": {
        "name": "retarget task_id",
        "tooltip": null
      },
      "1": {
        "name": "retarget task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoRigNode": {
    "display_name": "Tripo : Modèle squeletté",
    "inputs": {
      "original_model_task_id": {
        "name": "ID_tâche_modèle_original"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "rig task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoSplatConditioning": {
    "description": "Encode l’image avec DINOv3 et le Flux2 VAE en conditionnement positif/négatif TripoSplat, et crée la cible de bruit de taille fixe (latent + caméra) pour le KSampler",
    "display_name": "Conditionnement TripoSplat",
    "inputs": {
      "clip_vision": {
        "name": "clip_vision",
        "tooltip": "Encodeur d’image DINOv3 ViT-H/16+"
      },
      "image": {
        "name": "image"
      },
      "vae": {
        "name": "vae",
        "tooltip": "Flux2 VAE"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": "La cible de bruit de taille fixe (latent + caméra)."
      }
    }
  },
  "TripoSplatPreprocessImage": {
    "description": "Recadre le centre de chaque image sur une toile carrée avec un fond noir et ajoute une marge.",
    "display_name": "Prétraitement d'image TripoSplat",
    "inputs": {
      "erode_radius": {
        "name": "erode_radius",
        "tooltip": "Érode le masque alpha de ce rayon en pixels avant le recadrage (évite les débordements de bordure)."
      },
      "image": {
        "name": "image"
      },
      "mask": {
        "name": "mask"
      },
      "size": {
        "name": "size",
        "tooltip": "Taille de l'image carrée. Le modèle est entraîné à 1024 ; d'autres tailles fonctionnent mais sont hors distribution."
      }
    },
    "outputs": {
      "0": {
        "name": "image",
        "tooltip": null
      }
    }
  },
  "TripoSplatSamplingPreview": {
    "description": "Modifie le modèle TripoSplat pour le nœud Ksampler standard afin d'afficher un aperçu en direct du gaussian splat décodé à chaque étape.",
    "display_name": "Aperçu d'échantillonnage TripoSplat",
    "inputs": {
      "model": {
        "name": "model"
      },
      "num_gaussians": {
        "name": "num_gaussians",
        "tooltip": "Nombre de gaussiennes à générer pour l'aperçu (arrondi à un multiple de 32)."
      },
      "octree_level": {
        "name": "octree_level",
        "tooltip": "Profondeur de l'octree pour le décodage de l'aperçu (plus bas = moins coûteux/plus grossier)."
      },
      "pitch": {
        "name": "pitch",
        "tooltip": "Inclinaison verticale de la caméra d'aperçu en degrés."
      },
      "point_size": {
        "name": "point_size",
        "tooltip": "Rayon maximal du splat en pixels. Chaque gaussienne est dimensionnée selon son échelle et limitée ici ; plus bas = plus fin/pointu, plus haut = plus massif."
      },
      "vae": {
        "name": "vae",
        "tooltip": "Décodeur VAE TripoSplat"
      },
      "yaw": {
        "name": "yaw",
        "tooltip": "Inclinaison horizontale de la caméra d'aperçu en degrés."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "TripoTextToModelNode": {
    "display_name": "Tripo : Texte vers Modèle",
    "inputs": {
      "face_limit": {
        "name": "limite_visage"
      },
      "geometry_quality": {
        "name": "geometry_quality"
      },
      "image_seed": {
        "name": "graine_image"
      },
      "model_seed": {
        "name": "modèle_graine"
      },
      "model_version": {
        "name": "version_modèle"
      },
      "negative_prompt": {
        "name": "invite_négative"
      },
      "pbr": {
        "name": "pbr"
      },
      "prompt": {
        "name": "invite"
      },
      "quad": {
        "name": "quad"
      },
      "style": {
        "name": "style"
      },
      "texture": {
        "name": "texture"
      },
      "texture_quality": {
        "name": "qualité_texture"
      },
      "texture_seed": {
        "name": "texture_graine"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "modèle task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TripoTextureNode": {
    "display_name": "Tripo : Modèle de texture",
    "inputs": {
      "model_task_id": {
        "name": "modèle_id_tâche"
      },
      "pbr": {
        "name": "pbr"
      },
      "texture": {
        "name": "texture"
      },
      "texture_alignment": {
        "name": "alignement_texture"
      },
      "texture_prompt": {
        "name": "texture_prompt",
        "tooltip": "Guidage textuel optionnel pour le texturage. Requis en pratique pour les modèles importés (Tripo : Importer un modèle), qui ne contiennent pas d'image source pour déduire les couleurs."
      },
      "texture_quality": {
        "name": "qualité_texture"
      },
      "texture_seed": {
        "name": "texture_graine"
      }
    },
    "outputs": {
      "0": {
        "name": "fichier_modèle",
        "tooltip": null
      },
      "1": {
        "name": "modèle task_id",
        "tooltip": null
      },
      "2": {
        "name": "GLB",
        "tooltip": null
      }
    }
  },
  "TruncateText": {
    "display_name": "Tronquer le texte",
    "inputs": {
      "max_length": {
        "name": "longueur_maximale",
        "tooltip": "Longueur maximale du texte."
      },
      "texts": {
        "name": "textes",
        "tooltip": "Texte à traiter."
      }
    },
    "outputs": {
      "0": {
        "name": "textes",
        "tooltip": "Textes traités"
      }
    }
  },
  "UNETLoader": {
    "display_name": "Charger Modèle Diffusion",
    "inputs": {
      "unet_name": {
        "name": "nom_unet"
      },
      "weight_dtype": {
        "name": "dtype_poids"
      }
    }
  },
  "UNetCrossAttentionMultiply": {
    "display_name": "UNetMultiplicationAttentionCroisée",
    "inputs": {
      "k": {
        "name": "k"
      },
      "model": {
        "name": "modèle"
      },
      "out": {
        "name": "sortie"
      },
      "q": {
        "name": "q"
      },
      "v": {
        "name": "v"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "UNetSelfAttentionMultiply": {
    "display_name": "UNetMultiplicationAutoAttention",
    "inputs": {
      "k": {
        "name": "k"
      },
      "model": {
        "name": "modèle"
      },
      "out": {
        "name": "sortie"
      },
      "q": {
        "name": "q"
      },
      "v": {
        "name": "v"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "UNetTemporalAttentionMultiply": {
    "display_name": "UNetTemporalAttentionMultiply",
    "inputs": {
      "cross_structural": {
        "name": "cross_structural"
      },
      "cross_temporal": {
        "name": "cross_temporal"
      },
      "model": {
        "name": "modèle"
      },
      "self_structural": {
        "name": "self_structural"
      },
      "self_temporal": {
        "name": "self_temporal"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "USOStyleReference": {
    "display_name": "USOStyleReference",
    "inputs": {
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "correctif_modèle"
      }
    }
  },
  "UpscaleModelLoader": {
    "display_name": "Charger le modèle de mise à l'échelle",
    "inputs": {
      "model_name": {
        "name": "nom_du_modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VAEDecode": {
    "description": "Décode les images latentes en images d'espace de pixels.",
    "display_name": "VAE Decode",
    "inputs": {
      "samples": {
        "name": "échantillons",
        "tooltip": "Le latent à décoder."
      },
      "vae": {
        "name": "vae",
        "tooltip": "Le modèle VAE utilisé pour le décodage du latent."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "L'image décodée."
      }
    }
  },
  "VAEDecodeAudio": {
    "display_name": "VAEDecodeAudio",
    "inputs": {
      "samples": {
        "name": "échantillons"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VAEDecodeAudioTiled": {
    "display_name": "Décoder Audio VAE (par tuiles)",
    "inputs": {
      "overlap": {
        "name": "chevauchement"
      },
      "samples": {
        "name": "échantillons"
      },
      "tile_size": {
        "name": "taille de tuile"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VAEDecodeHunyuan3D": {
    "display_name": "VAEDecodeHunyuan3D",
    "inputs": {
      "num_chunks": {
        "name": "nombre_de_morceaux"
      },
      "octree_resolution": {
        "name": "résolution_octree"
      },
      "samples": {
        "name": "échantillons"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VAEDecodeTiled": {
    "display_name": "VAE Decode (Tiled)",
    "inputs": {
      "overlap": {
        "name": "chevauchement"
      },
      "samples": {
        "name": "échantillons"
      },
      "temporal_overlap": {
        "name": "chevauchement_temporel",
        "tooltip": "Uniquement utilisé pour les VAE vidéo : Nombre de trames à chevaucher."
      },
      "temporal_size": {
        "name": "taille_temporelle",
        "tooltip": "Uniquement utilisé pour les VAE vidéo : Nombre de trames à décoder à la fois."
      },
      "tile_size": {
        "name": "taille_de_tuile"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "VAEDecodeTripoSplat": {
    "description": "Décode le latent TripoSplat échantillonné en un gaussian splat 3D. Modifiez le nombre de gaussiennes pour faire varier la densité.",
    "display_name": "Décodage TripoSplat",
    "inputs": {
      "control_after_generate": {
        "name": "control after generate"
      },
      "num_gaussians": {
        "name": "num_gaussians",
        "tooltip": "Nombre de gaussiennes à générer (arrondi à un multiple de 32). 262144 correspond à la densité de points de l'octree ; plus élevé suréchantillonne les mêmes points (plus dense, mais pas de nouveau détail) et coûte proportionnellement plus de VRAM/temps."
      },
      "samples": {
        "name": "samples"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Définit la graine du générateur de points de l'octree (RNG global) pour des décodages déterministes."
      },
      "vae": {
        "name": "vae",
        "tooltip": "Décodeur VAE TripoSplat"
      }
    },
    "outputs": {
      "0": {
        "name": "splat",
        "tooltip": null
      }
    }
  },
  "VAEEncode": {
    "display_name": "VAE Encode",
    "inputs": {
      "pixels": {
        "name": "pixels"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "VAEEncodeAudio": {
    "display_name": "VAEEncodeAudio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "vae": {
        "name": "vae"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VAEEncodeForInpaint": {
    "display_name": "VAE Encode (pour Inpainting)",
    "inputs": {
      "grow_mask_by": {
        "name": "agrandir_masque_par"
      },
      "mask": {
        "name": "masque"
      },
      "pixels": {
        "name": "pixels"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "VAEEncodeTiled": {
    "display_name": "VAE Encode (Tiled)",
    "inputs": {
      "overlap": {
        "name": "chevauchement"
      },
      "pixels": {
        "name": "pixels"
      },
      "temporal_overlap": {
        "name": "chevauchement_temporel",
        "tooltip": "Uniquement utilisé pour les VAE vidéo : Nombre de trames à chevaucher."
      },
      "temporal_size": {
        "name": "taille_temporelle",
        "tooltip": "Uniquement utilisé pour les VAE vidéo : Nombre de trames à encoder à la fois."
      },
      "tile_size": {
        "name": "taille_de_tuile"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "VAELoader": {
    "display_name": "Charger VAE",
    "inputs": {
      "vae_name": {
        "name": "nom_vae"
      }
    }
  },
  "VAESave": {
    "display_name": "VAESauvegarder",
    "inputs": {
      "filename_prefix": {
        "name": "préfixe_de_fichier"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "VOIDInpaintConditioning": {
    "display_name": "VOIDInpaintConditioning",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "height": {
        "name": "height"
      },
      "length": {
        "name": "length",
        "tooltip": "Nombre d’images pixels à traiter. Pour CogVideoX-Fun-V1.5 (patch_size_t=2), latent_t doit être pair — les longueurs produisant un latent_t impair sont arrondies à l’inférieur (ex. 49 → 45)."
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "quadmask": {
        "name": "quadmask",
        "tooltip": "Quadmask prétraité depuis VOIDQuadmaskPreprocess [T, H, L]"
      },
      "vae": {
        "name": "vae"
      },
      "video": {
        "name": "video",
        "tooltip": "Images vidéo source [T, H, L, 3]"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "VOIDQuadmaskPreprocess": {
    "display_name": "VOIDQuadmaskPreprocess",
    "inputs": {
      "dilate_width": {
        "name": "dilate_width",
        "tooltip": "Rayon de dilatation pour la région principale du masque (0 = pas de dilatation)"
      },
      "mask": {
        "name": "mask"
      }
    },
    "outputs": {
      "0": {
        "name": "quadmask",
        "tooltip": null
      }
    }
  },
  "VOIDSampler": {
    "display_name": "VOIDSampler",
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VOIDWarpedNoise": {
    "display_name": "VOIDWarpedNoise",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "height": {
        "name": "height"
      },
      "length": {
        "name": "length",
        "tooltip": "Nombre d’images pixels. Arrondi à l’inférieur pour rendre latent_t pair (exigence patch_size_t=2), ex. 49 → 45."
      },
      "optical_flow": {
        "name": "optical_flow",
        "tooltip": "Modèle de flux optique depuis OpticalFlowLoader (RAFT-large)."
      },
      "video": {
        "name": "video",
        "tooltip": "Images vidéo de sortie du passage 1 [T, H, L, 3]"
      },
      "width": {
        "name": "width"
      }
    },
    "outputs": {
      "0": {
        "name": "warped_noise",
        "tooltip": null
      }
    }
  },
  "VOIDWarpedNoiseSource": {
    "display_name": "VOIDWarpedNoiseSource",
    "inputs": {
      "warped_noise": {
        "name": "warped_noise",
        "tooltip": "Latent de bruit déformé depuis VOIDWarpedNoise"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VPScheduler": {
    "display_name": "PlanificateurVP",
    "inputs": {
      "beta_d": {
        "name": "beta_d"
      },
      "beta_min": {
        "name": "beta_min"
      },
      "eps_s": {
        "name": "eps_s"
      },
      "steps": {
        "name": "étapes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Veo3FirstLastFrameNode": {
    "description": "Générer une vidéo à l'aide d'un prompt et des images de début et de fin.",
    "display_name": "Google Veo 3 Première-Dernière-Image vers Vidéo",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect",
        "tooltip": "Rapport d'aspect de la vidéo générée"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée de la vidéo générée en secondes"
      },
      "first_frame": {
        "name": "première image",
        "tooltip": "Image de début"
      },
      "generate_audio": {
        "name": "générer audio",
        "tooltip": "Générer l'audio pour la vidéo."
      },
      "last_frame": {
        "name": "dernière image",
        "tooltip": "Image de fin"
      },
      "model": {
        "name": "modèle"
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Prompt négatif pour guider ce qu'il faut éviter dans la vidéo"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Description textuelle de la vidéo"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Seed pour la génération de la vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Veo3VideoGenerationNode": {
    "description": "Génère des vidéos à partir de descriptions textuelles en utilisant l'API Google Veo 3",
    "display_name": "Génération vidéo Google Veo 3",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_d'aspect",
        "tooltip": "Ratio d'aspect de la vidéo en sortie"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration_seconds": {
        "name": "durée_secondes",
        "tooltip": "Durée de la vidéo en sortie en secondes (Veo 3 ne prend en charge que 8 secondes)"
      },
      "enhance_prompt": {
        "name": "améliorer_invite",
        "tooltip": "Indique s'il faut améliorer l'invite avec une assistance IA"
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "Générer l'audio pour la vidéo. Pris en charge par tous les modèles Veo 3."
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence optionnelle pour guider la génération vidéo"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle Veo 3 à utiliser pour la génération vidéo"
      },
      "negative_prompt": {
        "name": "invite_négative",
        "tooltip": "Invite textuelle négative pour guider ce qu'il faut éviter dans la vidéo"
      },
      "person_generation": {
        "name": "génération_personnes",
        "tooltip": "Indique s'il faut autoriser la génération de personnes dans la vidéo"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle de la vidéo"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Résolution vidéo de sortie. La 4K n’est pas disponible pour les modèles veo-3.1-lite et veo-3.0."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VeoVideoGenerationNode": {
    "description": "Génère des vidéos à partir de prompts textuels en utilisant l'API Veo de Google",
    "display_name": "Génération de vidéo Google Veo2",
    "inputs": {
      "aspect_ratio": {
        "name": "aspect_ratio",
        "tooltip": "Format d'image de la vidéo générée"
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration_seconds": {
        "name": "duration_seconds",
        "tooltip": "Durée de la vidéo générée en secondes"
      },
      "enhance_prompt": {
        "name": "enhance_prompt",
        "tooltip": "Améliorer le prompt avec l'aide de l'IA"
      },
      "image": {
        "name": "image",
        "tooltip": "Image de référence optionnelle pour guider la génération vidéo"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle Veo 2 à utiliser pour la génération vidéo"
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Prompt négatif pour indiquer ce qu'il faut éviter dans la vidéo"
      },
      "person_generation": {
        "name": "person_generation",
        "tooltip": "Autoriser la génération de personnes dans la vidéo"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Description textuelle de la vidéo"
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Video Slice": {
    "display_name": "Découpage Vidéo",
    "inputs": {
      "duration": {
        "name": "durée",
        "tooltip": "Durée en secondes, ou 0 pour une durée illimitée"
      },
      "start_time": {
        "name": "heure_de_début",
        "tooltip": "Heure de début en secondes"
      },
      "strict_duration": {
        "name": "durée_stricte",
        "tooltip": "Si vrai, lorsqu’il n’est pas possible de respecter la durée spécifiée, une erreur sera générée."
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VideoFrameSample": {
    "description": "Échantillonnez un nombre fixe d’images d’une vidéo en utilisant différentes stratégies.",
    "display_name": "Échantillonner une image vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "num_frames": {
        "name": "nombre d’images",
        "tooltip": "Nombre d’images à échantillonner."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire (utilisée uniquement avec la stratégie 'random')."
      },
      "strategy": {
        "name": "stratégie",
        "tooltip": "uniform: espacement régulier, head: premiers N, tail: derniers N, random: aléatoire trié."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo d’entrée."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéo",
        "tooltip": "Vidéo échantillonnée."
      }
    }
  },
  "VideoLinearCFGGuidance": {
    "display_name": "Guidance VideoLinearCFG",
    "inputs": {
      "min_cfg": {
        "name": "min_cfg"
      },
      "model": {
        "name": "modèle"
      }
    }
  },
  "VideoRandomTemporalCrop": {
    "description": "Rogne aléatoirement une plage continue d’images d’une vidéo.",
    "display_name": "Rogner la vidéo (aléatoire temporel)",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "length": {
        "name": "longueur",
        "tooltip": "Nombre d’images à conserver."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine aléatoire."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo d’entrée."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéo",
        "tooltip": "Vidéo rognée (paresseux)."
      }
    }
  },
  "VideoTemporalCrop": {
    "description": "Rogne une plage continue d’images d’une vidéo.",
    "display_name": "Rogner la vidéo (temporel)",
    "inputs": {
      "length": {
        "name": "longueur",
        "tooltip": "Nombre d’images à conserver."
      },
      "start_frame": {
        "name": "image de départ",
        "tooltip": "Indice de l’image de départ."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "Vidéo d’entrée."
      }
    },
    "outputs": {
      "0": {
        "name": "vidéo",
        "tooltip": "Vidéo rognée (paresseux)."
      }
    }
  },
  "VideoTriangleCFGGuidance": {
    "display_name": "Guidance VideoTriangleCFG",
    "inputs": {
      "min_cfg": {
        "name": "min_cfg"
      },
      "model": {
        "name": "modèle"
      }
    }
  },
  "Vidu2ImageToVideoNode": {
    "description": "Génère une vidéo à partir d’une image et d’une invite optionnelle.",
    "display_name": "Génération d’image vers vidéo Vidu2",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "image": {
        "name": "image",
        "tooltip": "Une image à utiliser comme première image de la vidéo générée."
      },
      "model": {
        "name": "modèle"
      },
      "movement_amplitude": {
        "name": "amplitude du mouvement",
        "tooltip": "L’amplitude du mouvement des objets dans l’image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Une invite textuelle optionnelle pour la génération vidéo (max 2000 caractères)."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu2ReferenceVideoNode": {
    "description": "Génère une vidéo à partir de plusieurs images de référence et d’une invite.",
    "display_name": "Génération de vidéo à partir de références Vidu2",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d’aspect"
      },
      "audio": {
        "name": "audio",
        "tooltip": "Si activé, la vidéo contiendra une voix générée et une musique de fond basée sur l’invite."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "model": {
        "name": "modèle"
      },
      "movement_amplitude": {
        "name": "amplitude du mouvement",
        "tooltip": "L’amplitude du mouvement des objets dans l’image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Si activé, la vidéo inclura une voix générée et une musique de fond basée sur l’invite."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      },
      "subjects": {
        "name": "sujets",
        "tooltip": "Pour chaque sujet, fournissez jusqu’à 3 images de référence (7 images au total pour tous les sujets). Référencez-les dans les invites via @subject{subject_id}."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu2StartEndToVideoNode": {
    "description": "Générez une vidéo à partir d'une image de départ, d'une image de fin et d'une invite.",
    "display_name": "Génération vidéo Vidu2 à partir d'une image de début/fin",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "end_frame": {
        "name": "image de fin"
      },
      "first_frame": {
        "name": "image de début"
      },
      "model": {
        "name": "modèle"
      },
      "movement_amplitude": {
        "name": "amplitude du mouvement",
        "tooltip": "L'amplitude du mouvement des objets dans l'image."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description de l'invite (2000 caractères maximum)."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu2TextToVideoNode": {
    "description": "Générez une vidéo à partir d'une invite textuelle",
    "display_name": "Génération vidéo Vidu2 à partir d'un texte",
    "inputs": {
      "aspect_ratio": {
        "name": "rapport d'aspect"
      },
      "background_music": {
        "name": "musique de fond",
        "tooltip": "Ajouter ou non une musique de fond à la vidéo générée."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée"
      },
      "model": {
        "name": "modèle"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Une description textuelle pour la génération vidéo, longueur maximale de 2000 caractères."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu3ImageToVideoNode": {
    "description": "Générez une vidéo à partir d’une image et d’une invite optionnelle.",
    "display_name": "Génération d’image en vidéo Vidu Q3",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Une image à utiliser comme première image de la vidéo générée."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération de vidéo."
      },
      "model_audio": {
        "name": "audio"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Une invite textuelle optionnelle pour la génération de vidéo (max. 2000 caractères)."
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu3StartEndToVideoNode": {
    "description": "Générez une vidéo à partir d'une image de début, d'une image de fin et d'une invite.",
    "display_name": "Génération vidéo Vidu Q3 à partir d'une image de début/fin",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "end_frame": {
        "name": "image de fin"
      },
      "first_frame": {
        "name": "image de début"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération vidéo."
      },
      "model_audio": {
        "name": "audio"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description de l'invite (2000 caractères max)."
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Vidu3TextToVideoNode": {
    "description": "Générez une vidéo à partir d’une invite textuelle.",
    "display_name": "Génération de vidéo à partir de texte Vidu Q3",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour la génération de vidéo."
      },
      "model_aspect_ratio": {
        "name": "rapport d’aspect"
      },
      "model_audio": {
        "name": "audio"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Description textuelle pour la génération de vidéo, longueur maximale de 2000 caractères."
      },
      "seed": {
        "name": "graine"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduExtendVideoNode": {
    "description": "Prolongez une vidéo existante en générant des images supplémentaires.",
    "display_name": "Extension de vidéo Vidu",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "end_frame": {
        "name": "image_finale"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser pour l’extension de la vidéo."
      },
      "model_duration": {
        "name": "durée"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Une invite textuelle optionnelle pour la vidéo étendue (max. 2000 caractères)."
      },
      "seed": {
        "name": "graine"
      },
      "video": {
        "name": "vidéo",
        "tooltip": "La vidéo source à prolonger."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduImageToVideoNode": {
    "description": "Générer une vidéo à partir d'une image et d'un éventuel prompt",
    "display_name": "Génération vidéo Vidu à partir d'image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée de la vidéo de sortie en secondes"
      },
      "image": {
        "name": "image",
        "tooltip": "Une image à utiliser comme image de départ pour la vidéo générée"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Nom du modèle"
      },
      "movement_amplitude": {
        "name": "amplitude_mouvement",
        "tooltip": "L'amplitude de mouvement des objets dans le cadre"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une description textuelle pour la génération vidéo"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Les valeurs prises en charge peuvent varier selon le modèle et la durée"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduMultiFrameVideoNode": {
    "description": "Générez une vidéo avec plusieurs transitions d’images clés.",
    "display_name": "Génération de vidéo multi-images Vidu",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "frames": {
        "name": "images",
        "tooltip": "Nombre de transitions d’images clés (2-9)."
      },
      "frames_duration1": {
        "name": "durée1"
      },
      "frames_duration2": {
        "name": "durée2"
      },
      "frames_prompt1": {
        "name": "invite1"
      },
      "frames_prompt2": {
        "name": "invite2"
      },
      "model": {
        "name": "modèle"
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine"
      },
      "start_image": {
        "name": "image_de_départ",
        "tooltip": "L’image de départ. Le rapport d’aspect doit être compris entre 1:4 et 4:1."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduReferenceVideoNode": {
    "description": "Générer une vidéo à partir de plusieurs images et d'un prompt",
    "display_name": "Génération vidéo Vidu à partir de référence",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_aspect",
        "tooltip": "Le ratio d'aspect de la vidéo de sortie"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée de la vidéo de sortie en secondes"
      },
      "images": {
        "name": "images",
        "tooltip": "Images à utiliser comme références pour générer une vidéo avec des sujets cohérents (max 7 images)."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Nom du modèle"
      },
      "movement_amplitude": {
        "name": "amplitude_mouvement",
        "tooltip": "L'amplitude de mouvement des objets dans le cadre"
      },
      "prompt": {
        "name": "prompt",
        "tooltip": "Une description textuelle pour la génération vidéo"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Les valeurs prises en charge peuvent varier selon le modèle et la durée"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduStartEndToVideoNode": {
    "description": "Générer une vidéo à partir d'images de début et de fin et d'une description",
    "display_name": "Génération vidéo Vidu de début à fin",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée de la vidéo de sortie en secondes"
      },
      "end_frame": {
        "name": "image_fin",
        "tooltip": "Image de fin"
      },
      "first_frame": {
        "name": "première_image",
        "tooltip": "Image de début"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Nom du modèle"
      },
      "movement_amplitude": {
        "name": "amplitude_mouvement",
        "tooltip": "L'amplitude du mouvement des objets dans l'image"
      },
      "prompt": {
        "name": "description",
        "tooltip": "Description textuelle pour la génération vidéo"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Les valeurs prises en charge peuvent varier selon le modèle et la durée"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "ViduTextToVideoNode": {
    "description": "Générer une vidéo à partir d'une description textuelle",
    "display_name": "Génération vidéo Vidu à partir de texte",
    "inputs": {
      "aspect_ratio": {
        "name": "ratio_aspect",
        "tooltip": "Le ratio d'aspect de la vidéo de sortie"
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durée de la vidéo de sortie en secondes"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Nom du modèle"
      },
      "movement_amplitude": {
        "name": "amplitude_mouvement",
        "tooltip": "L'amplitude du mouvement des objets dans l'image"
      },
      "prompt": {
        "name": "description",
        "tooltip": "Description textuelle pour la génération vidéo"
      },
      "resolution": {
        "name": "résolution",
        "tooltip": "Les valeurs prises en charge peuvent varier selon le modèle et la durée"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine pour la génération vidéo (0 pour aléatoire)"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VoxelToMesh": {
    "description": "Convertit une grille de voxels en maillage.",
    "display_name": "VoxelToMesh",
    "inputs": {
      "algorithm": {
        "name": "algorithme"
      },
      "threshold": {
        "name": "seuil"
      },
      "voxel": {
        "name": "voxel"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "VoxelToMeshBasic": {
    "description": "Convertit une grille de voxels en maillage.",
    "display_name": "VoxelToMeshBasic",
    "inputs": {
      "threshold": {
        "name": "seuil"
      },
      "voxel": {
        "name": "voxel"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan22FunControlToVideo": {
    "display_name": "Wan22FunControlToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "control_video": {
        "name": "vidéo_de_contrôle"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "ref_image": {
        "name": "image_de_référence"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "Wan22ImageToVideoLatent": {
    "display_name": "Wan22ImageToVideoLatent",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan2ImageToVideoApi": {
    "description": "Générez une vidéo à partir d'une image de première image, avec une image de dernière image et un audio optionnels.",
    "display_name": "Wan 2.7 Image vers Vidéo",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio pour guider la génération vidéo (ex : synchronisation labiale, mouvement sur le rythme). Durée : 2s-30s. Si non fourni, le modèle génère automatiquement une musique de fond ou des effets sonores adaptés."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "first_frame": {
        "name": "première image",
        "tooltip": "Image de la première image. Le format de sortie est dérivé de cette image."
      },
      "last_frame": {
        "name": "dernière image",
        "tooltip": "Image de la dernière image. Le modèle génère une vidéo passant de la première à la dernière image."
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_negative_prompt": {
        "name": "prompt négatif"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt_extend": {
        "name": "extension de prompt",
        "tooltip": "Permet d'améliorer le prompt avec l'aide de l'IA."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan2ReferenceVideoApi": {
    "description": "Générez une vidéo mettant en scène une personne ou un objet à partir de références. Prend en charge les performances à un personnage et les interactions multi-personnages.",
    "display_name": "Wan 2.7 Référence vers Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_negative_prompt": {
        "name": "prompt négatif"
      },
      "model_prompt": {
        "name": "prompt"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter ou non un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan2TextToVideoApi": {
    "description": "Génère une vidéo à partir d'une invite textuelle en utilisant le modèle Wan 2.7.",
    "display_name": "Wan 2.7 Texte en Vidéo",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio pour guider la génération vidéo (ex : synchronisation labiale, mouvement sur le rythme). Durée : 3s-30s. Si non fourni, le modèle génère automatiquement une musique de fond ou des effets sonores adaptés."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_negative_prompt": {
        "name": "invite négative"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt_extend": {
        "name": "extension d'invite",
        "tooltip": "Améliorer l'invite avec l'assistance de l'IA."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan2VideoContinuationApi": {
    "description": "Continue une vidéo à partir de l'endroit où elle s'est arrêtée, avec un contrôle optionnel de la dernière image.",
    "display_name": "Wan 2.7 Continuation Vidéo",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "first_clip": {
        "name": "premier clip",
        "tooltip": "Vidéo d'entrée à continuer. Durée : 2s-10s. Le ratio de sortie est dérivé de cette vidéo."
      },
      "last_frame": {
        "name": "dernière image",
        "tooltip": "Image de la dernière frame. La continuation effectuera une transition vers cette image."
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_negative_prompt": {
        "name": "invite négative"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "prompt_extend": {
        "name": "extension d'invite",
        "tooltip": "Améliorer l'invite avec l'assistance de l'IA."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "Wan2VideoEditApi": {
    "description": "Éditez une vidéo à l'aide d'instructions textuelles, d'images de référence ou de transfert de style.",
    "display_name": "Wan 2.7 Édition Vidéo",
    "inputs": {
      "audio_setting": {
        "name": "paramètre audio",
        "tooltip": "'auto' : le modèle décide de régénérer ou non l'audio selon l'invite. 'origin' : préserve l'audio original de la vidéo d'entrée."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "model": {
        "name": "modèle"
      },
      "model_duration": {
        "name": "durée"
      },
      "model_prompt": {
        "name": "invite"
      },
      "model_ratio": {
        "name": "ratio"
      },
      "model_resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "video": {
        "name": "vidéo",
        "tooltip": "La vidéo à éditer."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Ajouter un filigrane généré par IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanAnimate2Cache": {
    "description": "Met en cache les activations par bloc de la vidéo de pose afin qu'elles ne soient calculées qu'une seule fois au lieu de chaque étape d'échantillonnage. Réduit environ de moitié le temps de génération. Le compromis est une utilisation d'environ 12,5 Go de RAM système pour 480x832/81 images en bf16 (cela varie selon la résolution et la durée). Avec les fenêtres de contexte, chaque fenêtre est mise en cache séparément, donc la RAM utilisée augmente avec le nombre de fenêtres ; utilisez le planning static_standard, car les plannings uniformes déplacent les fenêtres à chaque étape et rien ne revient jamais pour utiliser le cache.",
    "display_name": "WanAnimate2Cache",
    "inputs": {
      "device": {
        "name": "appareil",
        "tooltip": "Où stocker le cache. cpu (RAM) est le choix le plus sûr, le cache ne tiendra pas dans la VRAM avec le modèle aux tailles habituelles. gpu (VRAM) peut être plus rapide si le cache tient."
      },
      "dtype": {
        "name": "dtype",
        "tooltip": "Précision de stockage. Par défaut, les activations sont stockées dans le dtype de calcul du modèle. int8 divise la taille du cache par deux, int4 par quatre, convrot est utilisé pour conserver la précision."
      },
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanAnimate2ToVideo": {
    "description": "Animez un personnage dans une image de référence à l'aide d'une vidéo, en reproduisant efficacement l'animation faciale, les mouvements du corps et les gestes des mains de la vidéo.",
    "display_name": "WanAnimate2ToVideo",
    "inputs": {
      "batch_size": {
        "name": "batch_size",
        "tooltip": "Nombre de vidéos à générer simultanément."
      },
      "clip_vision_output": {
        "name": "clip_vision_output",
        "tooltip": "CLIP vision de l’image de référence."
      },
      "clip_vision_output_pose": {
        "name": "clip_vision_output_pose",
        "tooltip": "CLIP vision de la première image de la vidéo de pose. Par défaut, utilise clip_vision_output."
      },
      "continue_motion": {
        "name": "continue_motion",
        "tooltip": "Séquence de mouvement précédente à poursuivre pour assurer la cohérence temporelle."
      },
      "height": {
        "name": "height",
        "tooltip": "Hauteur de la vidéo de sortie en pixels."
      },
      "length": {
        "name": "length",
        "tooltip": "Nombre d’images à générer."
      },
      "negative": {
        "name": "negative"
      },
      "pose_end_percent": {
        "name": "pose_end_percent",
        "tooltip": "Pourcentage d’échantillonnage auquel l’influence de la pose se termine. Le mouvement est principalement établi tôt, donc par exemple 0.7 peut relâcher les détails fins tout en conservant la chorégraphie."
      },
      "pose_start_percent": {
        "name": "pose_start_percent",
        "tooltip": "Pourcentage d’échantillonnage auquel l’influence de la pose commence. En dehors de cette fenêtre, la branche de pose est totalement ignorée, ce qui accélère aussi ces étapes."
      },
      "pose_strength": {
        "name": "pose_strength",
        "tooltip": "Ajuste l’influence de la vidéo de pose sur le mouvement. 1.0 correspond au comportement entraîné ; en dessous, l’adhérence est réduite, au-dessus, elle est amplifiée. 0.0 la coupe mais ne la supprime pas totalement."
      },
      "pose_video": {
        "name": "pose_video",
        "tooltip": "La vidéo dont le mouvement est transféré au personnage de référence."
      },
      "positive": {
        "name": "positive"
      },
      "positive_pose": {
        "name": "positive_pose",
        "tooltip": "Prompt pour la branche vidéo de pose, décrivant le mouvement plutôt que le personnage. Par défaut, utilise positive. Utilisé pour les passes cond et uncond."
      },
      "reference_image": {
        "name": "reference_image",
        "tooltip": "Le personnage à animer."
      },
      "reference_image_strength": {
        "name": "reference_image_strength",
        "tooltip": "Ajuste la force avec laquelle les images générées se réfèrent à la frame latente de l’image de référence. En dessous de 1.0, l’adhérence à l’identité/l’apparence est relâchée (par exemple pour permettre au prompt de restyler), au-dessus elle est renforcée pour éviter la dérive."
      },
      "vae": {
        "name": "vae"
      },
      "video_frame_offset": {
        "name": "video_frame_offset",
        "tooltip": "Nombre d’images à avancer dans la vidéo de pose. Connectez à la sortie video_frame_offset du nœud précédent lors de l’extension."
      },
      "width": {
        "name": "width",
        "tooltip": "Largeur de la vidéo de sortie en pixels."
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      },
      "3": {
        "name": "trim_latent",
        "tooltip": "Nombre de frames latentes à supprimer avant le décodage."
      },
      "4": {
        "name": "trim_image",
        "tooltip": "Nombre d’images qui se chevauchent lors de l’extension d’une vidéo."
      },
      "5": {
        "name": "video_frame_offset",
        "tooltip": "Nombre d’images à avancer dans la vidéo de pose."
      }
    }
  },
  "WanAnimateToVideo": {
    "display_name": "WanAnimateToVideo",
    "inputs": {
      "background_video": {
        "name": "vidéo_arrière_plan"
      },
      "batch_size": {
        "name": "taille_du_lot"
      },
      "character_mask": {
        "name": "masque_personnage"
      },
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      },
      "continue_motion": {
        "name": "poursuite_mouvement"
      },
      "continue_motion_max_frames": {
        "name": "images_max_poursuite_mouvement"
      },
      "face_video": {
        "name": "vidéo_visage"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "pose_video": {
        "name": "vidéo_pose"
      },
      "positive": {
        "name": "positif"
      },
      "reference_image": {
        "name": "image_de_référence"
      },
      "vae": {
        "name": "vae"
      },
      "video_frame_offset": {
        "name": "décalage_image_vidéo",
        "tooltip": "Le nombre d'images à avancer dans toutes les vidéos d'entrée. Utilisé pour générer des vidéos plus longues par segments. Connectez à la sortie video_frame_offset du nœud précédent pour étendre une vidéo."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      },
      "3": {
        "name": "latent_rogné",
        "tooltip": null
      },
      "4": {
        "name": "image_rognée",
        "tooltip": null
      },
      "5": {
        "name": "décalage de trame vidéo",
        "tooltip": null
      }
    }
  },
  "WanCameraEmbedding": {
    "display_name": "Intégration de caméra Wan",
    "inputs": {
      "camera_pose": {
        "name": "pose de caméra"
      },
      "cx": {
        "name": "cx"
      },
      "cy": {
        "name": "cy"
      },
      "fx": {
        "name": "fx"
      },
      "fy": {
        "name": "fy"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "speed": {
        "name": "vitesse"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "intégration de caméra",
        "tooltip": null
      },
      "1": {
        "name": "largeur",
        "tooltip": null
      },
      "2": {
        "name": "hauteur",
        "tooltip": null
      },
      "3": {
        "name": "longueur",
        "tooltip": null
      }
    }
  },
  "WanCameraImageToVideo": {
    "display_name": "Image vers vidéo WanCamera",
    "inputs": {
      "batch_size": {
        "name": "taille du lot"
      },
      "camera_conditions": {
        "name": "conditions de caméra"
      },
      "clip_vision_output": {
        "name": "sortie de vision de clip"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image de départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanContextWindowsManual": {
    "description": "Définir manuellement les fenêtres de contexte pour les modèles de type WAN (dim=2).",
    "display_name": "Fenêtres de contexte WAN (Manuel)",
    "inputs": {
      "closed_loop": {
        "name": "boucle_fermée",
        "tooltip": "Indique si la boucle de la fenêtre contextuelle doit être fermée ; applicable uniquement aux échéanciers en boucle."
      },
      "context_length": {
        "name": "longueur de contexte",
        "tooltip": "La longueur de la fenêtre de contexte."
      },
      "context_overlap": {
        "name": "chevauchement de contexte",
        "tooltip": "Le chevauchement de la fenêtre de contexte."
      },
      "context_schedule": {
        "name": "planification de contexte",
        "tooltip": "Le pas de la fenêtre de contexte."
      },
      "context_stride": {
        "name": "pas de contexte",
        "tooltip": "La progression de la fenêtre contextuelle ; applicable uniquement aux échéanciers uniformes."
      },
      "freenoise": {
        "name": "freenoise",
        "tooltip": "Appliquer ou non le mélange de bruit FreeNoise, améliore la fusion des fenêtres."
      },
      "fuse_method": {
        "name": "méthode_de_fusion",
        "tooltip": "La méthode à utiliser pour fusionner les fenêtres contextuelles."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Le modèle auquel appliquer les fenêtres de contexte pendant l'échantillonnage."
      },
      "retain_first_frame": {
        "name": "conserver_première_image",
        "tooltip": "Conserver la première image I2V dans chaque fenêtre de contexte (peut aider à garder la référence initiale)."
      },
      "split_conds_to_windows": {
        "name": "diviser_conditions_fenêtres",
        "tooltip": "Indique s'il faut répartir plusieurs conditionnements (créés par ConditionCombine) dans chaque fenêtre selon l'index de région."
      }
    },
    "outputs": {
      "0": {
        "tooltip": "Le modèle avec fenêtres contextuelles appliquées pendant l'échantillonnage."
      }
    }
  },
  "WanDancerEncodeAudio": {
    "display_name": "WanDancerEncodeAudio",
    "inputs": {
      "audio": {
        "name": "audio"
      },
      "audio_inject_scale": {
        "name": "audio_inject_scale",
        "tooltip": "L'échelle des caractéristiques audio lors de leur injection dans le modèle vidéo."
      },
      "video_frames": {
        "name": "video_frames"
      }
    },
    "outputs": {
      "0": {
        "name": "audio_encoder_output",
        "tooltip": null
      },
      "1": {
        "name": "fps_string",
        "tooltip": "Le nombre d'images par seconde calculé en fonction de la durée de l'audio et du nombre d'images vidéo. Utilisé dans l'invite."
      }
    }
  },
  "WanDancerPadKeyframes": {
    "display_name": "WanDancerPadKeyframes",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio pour calculer le nombre total d'images de sortie et extraire l'audio du segment."
      },
      "images": {
        "name": "images"
      },
      "segment_index": {
        "name": "segment_index",
        "tooltip": "Quel segment est-ce (0 pour le premier, 1 pour le second, etc.)"
      },
      "segment_length": {
        "name": "segment_length",
        "tooltip": "Longueur de ce segment (généralement 149 images)"
      }
    },
    "outputs": {
      "0": {
        "name": "keyframes_sequence",
        "tooltip": "Séquence de keyframes complétée"
      },
      "1": {
        "name": "keyframes_mask",
        "tooltip": "Masque indiquant les images valides"
      },
      "2": {
        "name": "audio_segment",
        "tooltip": "Segment audio pour ce segment vidéo"
      }
    }
  },
  "WanDancerPadKeyframesList": {
    "display_name": "WanDancerPadKeyframesList",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "Audio à découper pour chaque segment émis."
      },
      "images": {
        "name": "images"
      },
      "num_segments": {
        "name": "num_segments",
        "tooltip": "Combien de segments complétés à émettre sous forme de listes."
      },
      "segment_length": {
        "name": "segment_length",
        "tooltip": "Longueur de chaque segment (généralement 149 images)"
      }
    },
    "outputs": {
      "0": {
        "name": "keyframes_sequence",
        "tooltip": "Séquences de keyframes complétées"
      },
      "1": {
        "name": "keyframes_mask",
        "tooltip": "Masques indiquant les images valides"
      },
      "2": {
        "name": "audio_segment",
        "tooltip": "Segment audio pour chaque segment vidéo"
      }
    }
  },
  "WanDancerVideo": {
    "display_name": "WanDancerVideo",
    "inputs": {
      "audio_encoder_output": {
        "name": "audio_encoder_output"
      },
      "clip_vision_output": {
        "name": "clip_vision_output",
        "tooltip": "Les embeddings CLIP vision pour la première image."
      },
      "clip_vision_output_ref": {
        "name": "clip_vision_output_ref",
        "tooltip": "Les embeddings CLIP vision pour l’image de référence."
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur",
        "tooltip": "Le nombre d’images dans la vidéo générée. Doit rester à 149 pour WanDancer."
      },
      "mask": {
        "name": "masque",
        "tooltip": "Masque de conditionnement d’image pour l’image ou les images de départ. Le blanc est conservé, le noir est généré. Utilisé pour les générations locales."
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ",
        "tooltip": "L’image ou les images initiales à encoder, peut contenir n’importe quel nombre d’images."
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": "Latent vide."
      }
    }
  },
  "WanFirstLastFrameToVideo": {
    "display_name": "WanFirstLastFrameToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_end_image": {
        "name": "clip_vision_image_de_fin"
      },
      "clip_vision_start_image": {
        "name": "clip_vision_image_de_départ"
      },
      "end_image": {
        "name": "image_de_fin"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanFunControlToVideo": {
    "display_name": "WanFunControlToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "control_video": {
        "name": "contrôler_la_vidéo"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanFunInpaintToVideo": {
    "display_name": "WanFunInpaintToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "end_image": {
        "name": "image_de_fin"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanHuMoImageToVideo": {
    "display_name": "WanHuMoImageToVideo",
    "inputs": {
      "audio_encoder_output": {
        "name": "sortie_encodeur_audio"
      },
      "batch_size": {
        "name": "taille_du_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "ref_image": {
        "name": "image_référence"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanImageToImageApi": {
    "description": "Génère une image à partir d'une ou deux images d'entrée et d'une invite texte. L'image de sortie est actuellement fixée à 1,6 MP ; son rapport d'aspect correspond à l'image/aux images d'entrée.",
    "display_name": "Wan Image vers Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "image": {
        "name": "image",
        "tooltip": "Édition d'image unique ou fusion d'images multiples, maximum 2 images."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser."
      },
      "negative_prompt": {
        "name": "invite_négative",
        "tooltip": "Invite texte négative pour guider ce qu'il faut éviter."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite utilisée pour décrire les éléments et caractéristiques visuelles, prend en charge l'anglais/le chinois."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanImageToVideo": {
    "display_name": "WanImageVersVidéo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positive"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanImageToVideoApi": {
    "description": "Génère une vidéo basée sur la première image et l'invite texte.",
    "display_name": "Wan Image vers Vidéo",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "L'audio doit contenir une voix claire et forte, sans bruit parasite ni musique de fond."
      },
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durées disponibles : 5 et 10 secondes"
      },
      "generate_audio": {
        "name": "générer_audio",
        "tooltip": "S'il n'y a pas d'entrée audio, générer automatiquement l'audio."
      },
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser."
      },
      "negative_prompt": {
        "name": "invite_négative",
        "tooltip": "Invite textuelle négative pour guider ce qu'il faut éviter."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite utilisée pour décrire les éléments et les caractéristiques visuelles, prend en charge l'anglais/le chinois."
      },
      "prompt_extend": {
        "name": "extension_invite",
        "tooltip": "S'il faut améliorer l'invite avec l'assistance de l'IA."
      },
      "resolution": {
        "name": "résolution"
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "shot_type": {
        "name": "type de plan",
        "tooltip": "Spécifie le type de plan pour la vidéo générée, c'est-à-dire si la vidéo est un plan continu unique ou plusieurs plans avec coupures. Ce paramètre n'est effectif que lorsque prompt_extend est True."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "S'il faut ajouter un filigrane \"Généré par IA\" au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanInfiniteTalkToVideo": {
    "display_name": "WanInfiniteTalkToVideo",
    "inputs": {
      "audio_encoder_output_1": {
        "name": "sortie encodeur audio 1"
      },
      "audio_scale": {
        "name": "échelle audio"
      },
      "clip_vision_output": {
        "name": "sortie vision clip"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "mode": {
        "name": "mode"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "correctif du modèle"
      },
      "motion_frame_count": {
        "name": "nombre d’images de mouvement",
        "tooltip": "Nombre d’images précédentes à utiliser comme contexte de mouvement."
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "previous_frames": {
        "name": "images précédentes"
      },
      "start_image": {
        "name": "image de départ"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "modèle",
        "tooltip": null
      },
      "1": {
        "name": "positif",
        "tooltip": null
      },
      "2": {
        "name": "négatif",
        "tooltip": null
      },
      "3": {
        "name": "latent",
        "tooltip": null
      },
      "4": {
        "name": "image rognée",
        "tooltip": null
      }
    }
  },
  "WanMoveConcatTrack": {
    "display_name": "WanMoveConcatTrack",
    "inputs": {
      "tracks_1": {
        "name": "pistes_1"
      },
      "tracks_2": {
        "name": "pistes_2"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanMoveTrackToVideo": {
    "display_name": "WanMoveTrackToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "start_image": {
        "name": "image_de_départ"
      },
      "strength": {
        "name": "force",
        "tooltip": "Intensité du conditionnement de la piste."
      },
      "tracks": {
        "name": "pistes"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanMoveTracksFromCoords": {
    "display_name": "WanMoveTracksFromCoords",
    "inputs": {
      "track_coords": {
        "name": "coordonnées_piste"
      },
      "track_mask": {
        "name": "masque_piste"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      },
      "1": {
        "name": "longueur_piste",
        "tooltip": null
      }
    }
  },
  "WanMoveVisualizeTracks": {
    "display_name": "WanMoveVisualizeTracks",
    "inputs": {
      "circle_size": {
        "name": "taille_du_cercle"
      },
      "images": {
        "name": "images"
      },
      "line_resolution": {
        "name": "résolution_de_ligne"
      },
      "line_width": {
        "name": "largeur_de_ligne"
      },
      "opacity": {
        "name": "opacité"
      },
      "tracks": {
        "name": "pistes"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanPhantomSubjectToVideo": {
    "display_name": "WanPhantomSubjectToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "height": {
        "name": "hauteur"
      },
      "images": {
        "name": "images"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "texte_négatif",
        "tooltip": null
      },
      "2": {
        "name": "texte_img_négative",
        "tooltip": null
      },
      "3": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanReferenceVideoApi": {
    "description": "Utilisez le personnage et la voix des vidéos d'entrée, combinés à une invite, pour générer une nouvelle vidéo qui maintient la cohérence du personnage.",
    "display_name": "Wan Reference to Video",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle_après_génération"
      },
      "duration": {
        "name": "durée"
      },
      "model": {
        "name": "modèle"
      },
      "negative_prompt": {
        "name": "invite_négative",
        "tooltip": "Invite négative décrivant ce qu'il faut éviter."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite décrivant les éléments et les caractéristiques visuelles. Prend en charge l'anglais et le chinois. Utilisez des identifiants tels que `character1` et `character2` pour faire référence aux personnages de référence."
      },
      "reference_videos": {
        "name": "vidéos_de_référence"
      },
      "seed": {
        "name": "graine"
      },
      "shot_type": {
        "name": "type_de_plan",
        "tooltip": "Spécifie le type de plan pour la vidéo générée, c'est-à-dire si la vidéo est un plan continu unique ou plusieurs plans avec coupures."
      },
      "size": {
        "name": "taille"
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane généré par l'IA au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanSCAILToVideo": {
    "display_name": "WanSCAILToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_du_lot"
      },
      "clip_vision_output": {
        "name": "clip_vision_output",
        "tooltip": "Caractéristiques visuelles CLIP pour le conditionnement. Le modèle est entraîné avec un redimensionnement étiré au ratio d’aspect."
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "pose_end": {
        "name": "fin_de_pose",
        "tooltip": "Étape de fin pour utiliser le conditionnement de pose."
      },
      "pose_start": {
        "name": "début_de_pose",
        "tooltip": "Étape de début pour utiliser le conditionnement de pose."
      },
      "pose_strength": {
        "name": "force_de_pose",
        "tooltip": "Force du latent de pose."
      },
      "pose_video": {
        "name": "vidéo_de_pose",
        "tooltip": "Vidéo utilisée pour le conditionnement de pose. Sera réduite à la moitié de la résolution de la vidéo principale."
      },
      "pose_video_mask": {
        "name": "pose_video_mask",
        "tooltip": "SCAIL-2 uniquement. Vidéo de masque SAM3 colorée par identité à la même résolution que pose_video."
      },
      "positive": {
        "name": "positif"
      },
      "previous_frame_count": {
        "name": "previous_frame_count",
        "tooltip": "Images de fin de previous_frames à utiliser comme ancrage. SCAIL-2 a été entraîné avec 5 (segments de 81 images, pas de 76 images)."
      },
      "previous_frames": {
        "name": "previous_frames",
        "tooltip": "SCAIL-2 uniquement. Sortie décodée complète du segment précédent. Seuls les derniers previous_frame_count sont utilisés comme ancrage d’extension."
      },
      "reference_image": {
        "name": "image_de_référence",
        "tooltip": "Image de référence, pour plusieurs références, composez-les toutes sur une seule image."
      },
      "reference_image_mask": {
        "name": "reference_image_mask",
        "tooltip": "SCAIL-2 uniquement. Masque de référence coloré à la même résolution que reference_image."
      },
      "replacement_mode": {
        "name": "replacement_mode",
        "tooltip": "SCAIL-2 uniquement. Faux = Mode Animation (pose_video_mask doit avoir un fond noir). Vrai = Mode Remplacement (pose_video_mask doit avoir un fond blanc)."
      },
      "vae": {
        "name": "vae"
      },
      "video_frame_offset": {
        "name": "video_frame_offset",
        "tooltip": "Image de sortie cumulative à partir de laquelle commence ce segment. Connectez à la sortie video_frame_offset du segment précédent."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": "Latent vide de la taille de génération."
      },
      "3": {
        "name": "video_frame_offset",
        "tooltip": "Décalage ajusté + longueur. À connecter au segment suivant."
      }
    }
  },
  "WanSoundImageToVideo": {
    "display_name": "WanSoundImageToVideo",
    "inputs": {
      "audio_encoder_output": {
        "name": "sortie_encodeur_audio"
      },
      "batch_size": {
        "name": "taille_lot"
      },
      "control_video": {
        "name": "vidéo de contrôle"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "ref_image": {
        "name": "image_référence"
      },
      "ref_motion": {
        "name": "mouvement de référence"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanSoundImageToVideoExtend": {
    "display_name": "Extension WanSoundImageToVideo",
    "inputs": {
      "audio_encoder_output": {
        "name": "sortie de l'encodeur audio"
      },
      "control_video": {
        "name": "vidéo de contrôle"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "ref_image": {
        "name": "image de référence"
      },
      "vae": {
        "name": "vae"
      },
      "video_latent": {
        "name": "latent vidéo"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanTextToImageApi": {
    "description": "Génère une image basée sur une invite textuelle.",
    "display_name": "Wan Texte vers Image",
    "inputs": {
      "control_after_generate": {
        "name": "contrôle après génération"
      },
      "height": {
        "name": "hauteur"
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser."
      },
      "negative_prompt": {
        "name": "invite négative",
        "tooltip": "Invite textuelle négative pour guider ce qu'il faut éviter."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite utilisée pour décrire les éléments et caractéristiques visuelles, prend en charge l'anglais/le chinois."
      },
      "prompt_extend": {
        "name": "extension d'invite",
        "tooltip": "Indique s'il faut améliorer l'invite avec une assistance IA."
      },
      "seed": {
        "name": "graine",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "watermark": {
        "name": "filigrane",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" au résultat."
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanTextToVideoApi": {
    "description": "Génère une vidéo basée sur une invite textuelle.",
    "display_name": "Wan Texte vers Vidéo",
    "inputs": {
      "audio": {
        "name": "audio",
        "tooltip": "L'audio doit contenir une voix claire et forte, sans bruit parasite ni musique de fond."
      },
      "control_after_generate": {
        "name": "control after generate"
      },
      "duration": {
        "name": "durée",
        "tooltip": "Durées disponibles : 5 et 10 secondes"
      },
      "generate_audio": {
        "name": "generate_audio",
        "tooltip": "S'il n'y a pas d'entrée audio, générer automatiquement l'audio."
      },
      "model": {
        "name": "modèle",
        "tooltip": "Modèle à utiliser."
      },
      "negative_prompt": {
        "name": "negative_prompt",
        "tooltip": "Invite de texte négative pour guider ce qu'il faut éviter."
      },
      "prompt": {
        "name": "invite",
        "tooltip": "Invite utilisée pour décrire les éléments et caractéristiques visuelles, prend en charge l'anglais/le chinois."
      },
      "prompt_extend": {
        "name": "prompt_extend",
        "tooltip": "Indique s'il faut améliorer l'invite avec l'assistance de l'IA."
      },
      "seed": {
        "name": "seed",
        "tooltip": "Graine à utiliser pour la génération."
      },
      "shot_type": {
        "name": "type_de_plan",
        "tooltip": "Spécifie le type de plan pour la vidéo générée, c'est-à-dire si la vidéo est un plan continu unique ou plusieurs plans avec coupures. Ce paramètre prend effet uniquement lorsque prompt_extend est True."
      },
      "size": {
        "name": "taille"
      },
      "watermark": {
        "name": "watermark",
        "tooltip": "Indique s'il faut ajouter un filigrane \"Généré par IA\" au résultat."
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WanTrackToVideo": {
    "display_name": "WanTrackToVideo",
    "inputs": {
      "batch_size": {
        "name": "batch_size"
      },
      "clip_vision_output": {
        "name": "clip_vision_output"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "negative"
      },
      "positive": {
        "name": "positive"
      },
      "start_image": {
        "name": "start_image"
      },
      "temperature": {
        "name": "température"
      },
      "topk": {
        "name": "topk"
      },
      "tracks": {
        "name": "tracks"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positive",
        "tooltip": null
      },
      "1": {
        "name": "negative",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      }
    }
  },
  "WanUni3CControlnetApply": {
    "display_name": "Appliquer Wan Uni3C ControlNet",
    "inputs": {
      "end_percent": {
        "name": "pourcentage de fin"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "correctif du modèle"
      },
      "render_video": {
        "name": "vidéo de rendu",
        "tooltip": "La vidéo de guidage rendue à partir de la trajectoire de la caméra, le plus souvent des rendus de nuages de points déformés de l’image d’entrée."
      },
      "start_percent": {
        "name": "pourcentage de début"
      },
      "strength": {
        "name": "force"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "WanVaceToVideo": {
    "display_name": "WanVaceToVideo",
    "inputs": {
      "batch_size": {
        "name": "taille_lot"
      },
      "control_masks": {
        "name": "masques_de_contrôle"
      },
      "control_video": {
        "name": "contrôle_vidéo"
      },
      "height": {
        "name": "hauteur"
      },
      "length": {
        "name": "longueur"
      },
      "negative": {
        "name": "négatif"
      },
      "positive": {
        "name": "positif"
      },
      "reference_image": {
        "name": "image_de_référence"
      },
      "strength": {
        "name": "intensité"
      },
      "vae": {
        "name": "vae"
      },
      "width": {
        "name": "largeur"
      }
    },
    "outputs": {
      "0": {
        "name": "positif",
        "tooltip": null
      },
      "1": {
        "name": "négatif",
        "tooltip": null
      },
      "2": {
        "name": "latent",
        "tooltip": null
      },
      "3": {
        "name": "latent_coupé",
        "tooltip": null
      }
    }
  },
  "WavespeedFlashVSRNode": {
    "description": "Upscaler vidéo rapide et de haute qualité qui augmente la résolution et restaure la clarté des séquences basse résolution ou floues.",
    "display_name": "FlashVSR Upscale Vidéo",
    "inputs": {
      "target_resolution": {
        "name": "résolution cible"
      },
      "video": {
        "name": "vidéo"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WavespeedImageUpscaleNode": {
    "description": "Augmentez la résolution et la qualité de l'image, en upscalant les photos en 4K ou 8K pour des résultats nets et détaillés.",
    "display_name": "WaveSpeed Upscale Image",
    "inputs": {
      "image": {
        "name": "image"
      },
      "model": {
        "name": "modèle"
      },
      "target_resolution": {
        "name": "résolution cible"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  },
  "WebcamCapture": {
    "display_name": "Capture Webcam",
    "inputs": {
      "capture_on_queue": {
        "name": "capture_en_file_d'attente"
      },
      "height": {
        "name": "hauteur"
      },
      "image": {
        "name": "image"
      },
      "waiting for camera___": {},
      "width": {
        "name": "largeur"
      }
    }
  },
  "ZImageFunControlnet": {
    "display_name": "ZImageFunControlnet",
    "inputs": {
      "image": {
        "name": "image"
      },
      "inpaint_image": {
        "name": "image_de_repeinture"
      },
      "mask": {
        "name": "mask"
      },
      "model": {
        "name": "modèle"
      },
      "model_patch": {
        "name": "modèle_patch"
      },
      "strength": {
        "name": "force"
      },
      "vae": {
        "name": "vae"
      }
    }
  },
  "unCLIPCheckpointLoader": {
    "display_name": "ChargeurPointContrôleunCLIP",
    "inputs": {
      "ckpt_name": {
        "name": "nom_ckpt"
      }
    }
  },
  "unCLIPConditioning": {
    "display_name": "ConditionnementunCLIP",
    "inputs": {
      "clip_vision_output": {
        "name": "sortie_vision_clip"
      },
      "conditioning": {
        "name": "conditionnement"
      },
      "noise_augmentation": {
        "name": "augmentation_bruit"
      },
      "strength": {
        "name": "force"
      }
    }
  },
  "wanBlockSwap": {
    "description": "NOP",
    "display_name": "wanBlockSwap",
    "inputs": {
      "model": {
        "name": "modèle"
      }
    },
    "outputs": {
      "0": {
        "tooltip": null
      }
    }
  }
}
