Skip to content

Commit b8b9cfb

Browse files
authored
Merge pull request #147 from Runware/feature-addAvatarGenVSupport
Added support for HeyGen Avatar V
2 parents c23f37f + 1cdaae3 commit b8b9cfb

4 files changed

Lines changed: 42 additions & 3 deletions

File tree

clientlibs/utils.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,10 @@ function videoSettingsToggleHandler(settingsNode) {
14311431
const occlusionDetectionWidget = settingsNode.widgets.find(w => w && w.name === "occlusionDetection");
14321432
const useKeyframeIdWidget = settingsNode.widgets.find(w => w && w.name === "useKeyframeId");
14331433
const keyframeIdWidget = settingsNode.widgets.find(w => w && w.name === "keyframeId");
1434+
const useFitWidget = settingsNode.widgets.find(w => w && w.name === "useFit");
1435+
const fitWidget = settingsNode.widgets.find(w => w && w.name === "fit");
1436+
const useCaptionWidget = settingsNode.widgets.find(w => w && w.name === "useCaption");
1437+
const captionWidget = settingsNode.widgets.find(w => w && w.name === "caption");
14341438

14351439
function toggleWidgetState(useWidget, paramWidget, paramName) {
14361440
if (!useWidget || !paramWidget) return;
@@ -1468,6 +1472,8 @@ function videoSettingsToggleHandler(settingsNode) {
14681472
if (useTemperatureWidget && temperatureWidget) toggleWidgetState(useTemperatureWidget, temperatureWidget, "temperature");
14691473
if (useOcclusionDetectionWidget && occlusionDetectionWidget) toggleWidgetState(useOcclusionDetectionWidget, occlusionDetectionWidget, "occlusionDetection");
14701474
if (useKeyframeIdWidget && keyframeIdWidget) toggleWidgetState(useKeyframeIdWidget, keyframeIdWidget, "keyframeId");
1475+
if (useFitWidget && fitWidget) toggleWidgetState(useFitWidget, fitWidget, "fit");
1476+
if (useCaptionWidget && captionWidget) toggleWidgetState(useCaptionWidget, captionWidget, "caption");
14711477
}
14721478

14731479
function videoInferenceSettingsTtsToggleHandler(node) {
@@ -2848,6 +2854,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
28482854
"HeyGen": [
28492855
"heygen:avatar@4 (HeyGen Avatar IV)",
28502856
"heygen:video-agent@0 (HeyGen Video Agent)",
2857+
"heygen:avatar@5 (HeyGen Avatar V)",
28512858
],
28522859
"Hunyuan": [
28532860
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
@@ -2965,6 +2972,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
29652972
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
29662973
"heygen:avatar@4": {"width": 1280, "height": 720},
29672974
"heygen:video-agent@0": {"width": 1280, "height": 720},
2975+
"heygen:avatar@5": {"width": 1280, "height": 720},
29682976
"skywork:skyreels@v4": {"width": 1280, "height": 720},
29692977
};
29702978

@@ -3063,6 +3071,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
30633071
"prunaai:p-video@avatar": "720p",
30643072
"heygen:avatar@4": "720p",
30653073
"heygen:video-agent@0": "720p",
3074+
"heygen:avatar@5": "720p",
30663075
"skywork:skyreels@v4": "720p",
30673076
};
30683077

modules/videoModelSearch.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ class videoModelSearch:
122122
"HeyGen": [
123123
"heygen:avatar@4 (HeyGen Avatar IV)",
124124
"heygen:video-agent@0 (HeyGen Video Agent)",
125+
"heygen:avatar@5 (HeyGen Avatar V)",
125126
],
126127
"Hunyuan": [
127128
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
@@ -278,9 +279,10 @@ class videoModelSearch:
278279
"prunaai:p-video@0": {"width": 1280, "height": 720},
279280
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
280281

281-
# HeyGen Models (Model ID: heygen-avatar-iv)
282+
# HeyGen Models (Model ID: heygen-avatar-iv, heygen-avatar-v)
282283
"heygen:avatar@4": {"width": 1280, "height": 720},
283284
"heygen:video-agent@0": {"width": 1280, "height": 720},
285+
"heygen:avatar@5": {"width": 1280, "height": 720},
284286

285287
# SkyReels Models
286288
"skywork:skyreels@v4": {"width": 1280, "height": 720},
@@ -423,6 +425,7 @@ class videoModelSearch:
423425
# HeyGen Models
424426
"heygen:avatar@4": "720p",
425427
"heygen:video-agent@0": "720p",
428+
"heygen:avatar@5": "720p",
426429

427430
# SkyReels Models
428431
"skywork:skyreels@v4": "720p",

modules/videoSettings.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""
22
Runware Video Inference Settings Node
3-
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.
3+
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.
44
"""
55

66
from typing import Dict, Any
@@ -207,6 +207,24 @@ def INPUT_TYPES(cls):
207207
"label_on": "true",
208208
"label_off": "false",
209209
}),
210+
"useFit": ("BOOLEAN", {
211+
"tooltip": "Enable to include fit (avatar scaling on output canvas) in video inference settings.",
212+
"default": False,
213+
}),
214+
"fit": (["auto", "cover", "contain"], {
215+
"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.",
216+
"default": "auto",
217+
}),
218+
"useCaption": ("BOOLEAN", {
219+
"tooltip": "Enable to include caption in video inference settings.",
220+
"default": False,
221+
}),
222+
"caption": ("BOOLEAN", {
223+
"tooltip": "Caption flag. Only used when 'Use Caption' is enabled.",
224+
"default": False,
225+
"label_on": "true",
226+
"label_off": "false",
227+
}),
210228
}
211229
}
212230

@@ -215,7 +233,7 @@ def INPUT_TYPES(cls):
215233
FUNCTION = "createSettings"
216234
CATEGORY = "Runware"
217235
DESCRIPTION = (
218-
"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. "
236+
"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. "
219237
"Connect to Runware Video Inference node."
220238
)
221239

@@ -229,6 +247,10 @@ def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]:
229247
voice_prompt = (kwargs.get("voicePrompt") or "").strip()
230248
use_safety_filter = kwargs.get("useSafetyFilter", False)
231249
safety_filter = kwargs.get("safetyFilter", False)
250+
use_fit = kwargs.get("useFit", False)
251+
fit = kwargs.get("fit", "auto")
252+
use_caption = kwargs.get("useCaption", False)
253+
caption = kwargs.get("caption", False)
232254
use_prompt_upsampling = kwargs.get("usePromptUpsampling", False)
233255
prompt_upsampling = kwargs.get("promptUpsampling", False)
234256
use_background_color = kwargs.get("useBackgroundColor", False)
@@ -275,6 +297,10 @@ def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]:
275297
settings["voicePrompt"] = voice_prompt
276298
if use_safety_filter:
277299
settings["safetyFilter"] = bool(safety_filter)
300+
if use_fit:
301+
settings["fit"] = str(fit)
302+
if use_caption:
303+
settings["caption"] = bool(caption)
278304
if use_prompt_upsampling:
279305
settings["promptUpsampling"] = bool(prompt_upsampling)
280306
if use_background_color and background_color:

0 commit comments

Comments
 (0)