Merge pull request #147 from Runware/feature-addAvatarGenVSupport

Added support for HeyGen Avatar V
This commit is contained in:
Sirshendu Ganguly
2026-05-21 15:42:13 +05:30
committed by GitHub
4 changed files with 42 additions and 3 deletions
+9
View File
@@ -1431,6 +1431,10 @@ function videoSettingsToggleHandler(settingsNode) {
const occlusionDetectionWidget = settingsNode.widgets.find(w => w && w.name === "occlusionDetection");
const useKeyframeIdWidget = settingsNode.widgets.find(w => w && w.name === "useKeyframeId");
const keyframeIdWidget = settingsNode.widgets.find(w => w && w.name === "keyframeId");
const useFitWidget = settingsNode.widgets.find(w => w && w.name === "useFit");
const fitWidget = settingsNode.widgets.find(w => w && w.name === "fit");
const useCaptionWidget = settingsNode.widgets.find(w => w && w.name === "useCaption");
const captionWidget = settingsNode.widgets.find(w => w && w.name === "caption");
function toggleWidgetState(useWidget, paramWidget, paramName) {
if (!useWidget || !paramWidget) return;
@@ -1468,6 +1472,8 @@ function videoSettingsToggleHandler(settingsNode) {
if (useTemperatureWidget && temperatureWidget) toggleWidgetState(useTemperatureWidget, temperatureWidget, "temperature");
if (useOcclusionDetectionWidget && occlusionDetectionWidget) toggleWidgetState(useOcclusionDetectionWidget, occlusionDetectionWidget, "occlusionDetection");
if (useKeyframeIdWidget && keyframeIdWidget) toggleWidgetState(useKeyframeIdWidget, keyframeIdWidget, "keyframeId");
if (useFitWidget && fitWidget) toggleWidgetState(useFitWidget, fitWidget, "fit");
if (useCaptionWidget && captionWidget) toggleWidgetState(useCaptionWidget, captionWidget, "caption");
}
function videoInferenceSettingsTtsToggleHandler(node) {
@@ -2848,6 +2854,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"HeyGen": [
"heygen:avatar@4 (HeyGen Avatar IV)",
"heygen:video-agent@0 (HeyGen Video Agent)",
"heygen:avatar@5 (HeyGen Avatar V)",
],
"Hunyuan": [
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
@@ -2965,6 +2972,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
"heygen:avatar@4": {"width": 1280, "height": 720},
"heygen:video-agent@0": {"width": 1280, "height": 720},
"heygen:avatar@5": {"width": 1280, "height": 720},
"skywork:skyreels@v4": {"width": 1280, "height": 720},
};
@@ -3063,6 +3071,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"prunaai:p-video@avatar": "720p",
"heygen:avatar@4": "720p",
"heygen:video-agent@0": "720p",
"heygen:avatar@5": "720p",
"skywork:skyreels@v4": "720p",
};
+4 -1
View File
@@ -122,6 +122,7 @@ class videoModelSearch:
"HeyGen": [
"heygen:avatar@4 (HeyGen Avatar IV)",
"heygen:video-agent@0 (HeyGen Video Agent)",
"heygen:avatar@5 (HeyGen Avatar V)",
],
"Hunyuan": [
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
@@ -278,9 +279,10 @@ class videoModelSearch:
"prunaai:p-video@0": {"width": 1280, "height": 720},
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
# HeyGen Models (Model ID: heygen-avatar-iv)
# HeyGen Models (Model ID: heygen-avatar-iv, heygen-avatar-v)
"heygen:avatar@4": {"width": 1280, "height": 720},
"heygen:video-agent@0": {"width": 1280, "height": 720},
"heygen:avatar@5": {"width": 1280, "height": 720},
# SkyReels Models
"skywork:skyreels@v4": {"width": 1280, "height": 720},
@@ -423,6 +425,7 @@ class videoModelSearch:
# HeyGen Models
"heygen:avatar@4": "720p",
"heygen:video-agent@0": "720p",
"heygen:avatar@5": "720p",
# SkyReels Models
"skywork:skyreels@v4": "720p",
+28 -2
View File
@@ -1,6 +1,6 @@
"""
Runware Video Inference Settings Node
Provides settings (draft, audio, voicePrompt, safetyFilter, promptUpsampling, voiceDescription, style, thinking, multiClip, shotType, promptExtend, syncMode, mode, emotion, temperature, occlusionDetection, tts, activeSpeakerDetection, segments, etc.) for Runware Video Inference.
Provides settings (draft, audio, voicePrompt, safetyFilter, promptUpsampling, voiceDescription, style, thinking, multiClip, shotType, promptExtend, syncMode, mode, emotion, temperature, occlusionDetection, fit, caption, tts, activeSpeakerDetection, segments, etc.) for Runware Video Inference.
"""
from typing import Dict, Any
@@ -207,6 +207,24 @@ class RunwareVideoSettings:
"label_on": "true",
"label_off": "false",
}),
"useFit": ("BOOLEAN", {
"tooltip": "Enable to include fit (avatar scaling on output canvas) in video inference settings.",
"default": False,
}),
"fit": (["auto", "cover", "contain"], {
"tooltip": "How the avatar is scaled to the output canvas. cover: scale to fill (may crop edges). contain: scale to fit entirely (may show background). auto: server picks based on source and canvas orientations. Only used when 'Use Fit' is enabled.",
"default": "auto",
}),
"useCaption": ("BOOLEAN", {
"tooltip": "Enable to include caption in video inference settings.",
"default": False,
}),
"caption": ("BOOLEAN", {
"tooltip": "Caption flag. Only used when 'Use Caption' is enabled.",
"default": False,
"label_on": "true",
"label_off": "false",
}),
}
}
@@ -215,7 +233,7 @@ class RunwareVideoSettings:
FUNCTION = "createSettings"
CATEGORY = "Runware"
DESCRIPTION = (
"Configure video inference settings (draft, audio, voicePrompt, safetyFilter, promptUpsampling, voiceDescription, style, thinking, multiClip, shotType, promptExtend, syncMode, mode, emotion, temperature, occlusionDetection, tts, activeSpeakerDetection, segments, etc.) for Runware Video Inference. "
"Configure video inference settings (draft, audio, voicePrompt, safetyFilter, promptUpsampling, voiceDescription, style, thinking, multiClip, shotType, promptExtend, syncMode, mode, emotion, temperature, occlusionDetection, fit, caption, tts, activeSpeakerDetection, segments, etc.) for Runware Video Inference. "
"Connect to Runware Video Inference node."
)
@@ -229,6 +247,10 @@ class RunwareVideoSettings:
voice_prompt = (kwargs.get("voicePrompt") or "").strip()
use_safety_filter = kwargs.get("useSafetyFilter", False)
safety_filter = kwargs.get("safetyFilter", False)
use_fit = kwargs.get("useFit", False)
fit = kwargs.get("fit", "auto")
use_caption = kwargs.get("useCaption", False)
caption = kwargs.get("caption", False)
use_prompt_upsampling = kwargs.get("usePromptUpsampling", False)
prompt_upsampling = kwargs.get("promptUpsampling", False)
use_background_color = kwargs.get("useBackgroundColor", False)
@@ -275,6 +297,10 @@ class RunwareVideoSettings:
settings["voicePrompt"] = voice_prompt
if use_safety_filter:
settings["safetyFilter"] = bool(safety_filter)
if use_fit:
settings["fit"] = str(fit)
if use_caption:
settings["caption"] = bool(caption)
if use_prompt_upsampling:
settings["promptUpsampling"] = bool(prompt_upsampling)
if use_background_color and background_color:
File diff suppressed because one or more lines are too long