diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 5aa5563..6de9389 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -1396,6 +1396,8 @@ function videoSettingsToggleHandler(settingsNode) { const draftWidget = settingsNode.widgets.find(w => w && w.name === "draft"); const useAudioWidget = settingsNode.widgets.find(w => w && w.name === "useAudio"); const audioWidget = settingsNode.widgets.find(w => w && w.name === "audio"); + const usePreserveAudioWidget = settingsNode.widgets.find(w => w && w.name === "usePreserveAudio"); + const preserveAudioWidget = settingsNode.widgets.find(w => w && w.name === "preserveAudio"); const useVoicePromptWidget = settingsNode.widgets.find(w => w && w.name === "useVoicePrompt"); const voicePromptWidget = settingsNode.widgets.find(w => w && w.name === "voicePrompt"); const useSafetyFilterWidget = settingsNode.widgets.find(w => w && w.name === "useSafetyFilter"); @@ -1455,6 +1457,7 @@ function videoSettingsToggleHandler(settingsNode) { if (useDraftWidget && draftWidget) toggleWidgetState(useDraftWidget, draftWidget, "draft"); if (useAudioWidget && audioWidget) toggleWidgetState(useAudioWidget, audioWidget, "audio"); + if (usePreserveAudioWidget && preserveAudioWidget) toggleWidgetState(usePreserveAudioWidget, preserveAudioWidget, "preserveAudio"); if (useVoicePromptWidget && voicePromptWidget) toggleWidgetState(useVoicePromptWidget, voicePromptWidget, "voicePrompt"); if (useSafetyFilterWidget && safetyFilterWidget) toggleWidgetState(useSafetyFilterWidget, safetyFilterWidget, "safetyFilter"); if (usePromptUpsamplingWidget && promptUpsamplingWidget) toggleWidgetState(usePromptUpsamplingWidget, promptUpsamplingWidget, "promptUpsampling"); @@ -2879,6 +2882,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "Pruna": [ "prunaai:p-video@0 (P-Video)", "prunaai:p-video@avatar (P-Video Avatar)", + "prunaai:p-video@animate (P-Video Animate)", ], "SkyReels": [ "skywork:skyreels@v4 (SkyReels V4)", @@ -2978,6 +2982,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "veed:fabric@1.0": {"width": 1280, "height": 720}, "prunaai:p-video@0": {"width": 1280, "height": 720}, "prunaai:p-video@avatar": {"width": 1280, "height": 720}, + "prunaai:p-video@animate": {"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}, @@ -3077,6 +3082,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "veed:fabric@1.0": "720p", "prunaai:p-video@0": "720p", "prunaai:p-video@avatar": "720p", + "prunaai:p-video@animate": "720p", "heygen:avatar@4": "720p", "heygen:video-agent@0": "720p", "heygen:avatar@5": "720p", diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py index 5606bc5..d401c10 100644 --- a/modules/videoModelSearch.py +++ b/modules/videoModelSearch.py @@ -139,6 +139,7 @@ class videoModelSearch: "Pruna": [ "prunaai:p-video@0 (P-Video)", "prunaai:p-video@avatar (P-Video Avatar)", + "prunaai:p-video@animate (P-Video Animate)", ], "SkyReels": [ "skywork:skyreels@v4 (SkyReels V4)", @@ -278,6 +279,7 @@ class videoModelSearch: # Pruna Models (720p) "prunaai:p-video@0": {"width": 1280, "height": 720}, "prunaai:p-video@avatar": {"width": 1280, "height": 720}, + "prunaai:p-video@animate": {"width": 1280, "height": 720}, # HeyGen Models (Model ID: heygen-avatar-iv, heygen-avatar-v) "heygen:avatar@4": {"width": 1280, "height": 720}, @@ -421,6 +423,7 @@ class videoModelSearch: # Pruna Models "prunaai:p-video@0": "720p", "prunaai:p-video@avatar": "720p", + "prunaai:p-video@animate": "720p", # HeyGen Models "heygen:avatar@4": "720p", diff --git a/modules/videoSettings.py b/modules/videoSettings.py index 7308768..e22dd14 100644 --- a/modules/videoSettings.py +++ b/modules/videoSettings.py @@ -225,6 +225,16 @@ class RunwareVideoSettings: "label_on": "true", "label_off": "false", }), + "usePreserveAudio": ("BOOLEAN", { + "tooltip": "Enable to include preserveAudio in video inference settings.", + "default": False, + }), + "preserveAudio": ("BOOLEAN", { + "tooltip": "Preserve source audio in output video. Only used when 'Use Preserve Audio' is enabled.", + "default": True, + "label_on": "Enabled", + "label_off": "Disabled", + }), } } @@ -243,6 +253,8 @@ class RunwareVideoSettings: draft = kwargs.get("draft", False) use_audio = kwargs.get("useAudio", False) audio = kwargs.get("audio", False) + use_preserve_audio = kwargs.get("usePreserveAudio", False) + preserve_audio = kwargs.get("preserveAudio", True) use_voice_prompt = kwargs.get("useVoicePrompt", False) voice_prompt = (kwargs.get("voicePrompt") or "").strip() use_safety_filter = kwargs.get("useSafetyFilter", False) @@ -293,6 +305,8 @@ class RunwareVideoSettings: settings["draft"] = bool(draft) if use_audio: settings["audio"] = bool(audio) + if use_preserve_audio: + settings["preserveAudio"] = bool(preserve_audio) if use_voice_prompt and voice_prompt: settings["voicePrompt"] = voice_prompt if use_safety_filter: