Merge pull request #103 from Runware/feature-inworldTTS/LTX
Added support for Inworld TTS 1.5 and added LTX 2.3 video models
This commit is contained in:
+20
-1
@@ -1132,6 +1132,8 @@ function audioInferenceToggleHandler(audioInferenceNode) {
|
||||
function audioSettingsToggleHandler(settingsNode) {
|
||||
if (!settingsNode?.widgets) return;
|
||||
|
||||
const useTemperatureWidget = settingsNode.widgets.find(w => w && w.name === "useTemperature");
|
||||
const temperatureWidget = settingsNode.widgets.find(w => w && w.name === "temperature");
|
||||
const useLyricsWidget = settingsNode.widgets.find(w => w && w.name === "useLyrics");
|
||||
const lyricsWidget = settingsNode.widgets.find(w => w && w.name === "lyrics");
|
||||
const useGuidanceTypeWidget = settingsNode.widgets.find(w => w && w.name === "useGuidanceType");
|
||||
@@ -1140,6 +1142,8 @@ function audioSettingsToggleHandler(settingsNode) {
|
||||
const languageBoostWidget = settingsNode.widgets.find(w => w && w.name === "languageBoost");
|
||||
const useTurboWidget = settingsNode.widgets.find(w => w && w.name === "useTurbo");
|
||||
const turboWidget = settingsNode.widgets.find(w => w && w.name === "turbo");
|
||||
const useTextNormalizationWidget = settingsNode.widgets.find(w => w && w.name === "useTextNormalization");
|
||||
const textNormalizationWidget = settingsNode.widgets.find(w => w && w.name === "textNormalization");
|
||||
|
||||
function toggleWidgetState(useWidget, paramWidget, paramName) {
|
||||
if (!useWidget || !paramWidget) return;
|
||||
@@ -1157,10 +1161,12 @@ function audioSettingsToggleHandler(settingsNode) {
|
||||
appendWidgetCB(useWidget, () => setTimeout(applyState, 50));
|
||||
}
|
||||
|
||||
if (useTemperatureWidget && temperatureWidget) toggleWidgetState(useTemperatureWidget, temperatureWidget, "temperature");
|
||||
if (useLyricsWidget && lyricsWidget) toggleWidgetState(useLyricsWidget, lyricsWidget, "lyrics");
|
||||
if (useGuidanceTypeWidget && guidanceTypeWidget) toggleWidgetState(useGuidanceTypeWidget, guidanceTypeWidget, "guidanceType");
|
||||
if (useLanguageBoostWidget && languageBoostWidget) toggleWidgetState(useLanguageBoostWidget, languageBoostWidget, "languageBoost");
|
||||
if (useTurboWidget && turboWidget) toggleWidgetState(useTurboWidget, turboWidget, "turbo");
|
||||
if (useTextNormalizationWidget && textNormalizationWidget) toggleWidgetState(useTextNormalizationWidget, textNormalizationWidget, "textNormalization");
|
||||
}
|
||||
|
||||
function videoSettingsToggleHandler(settingsNode) {
|
||||
@@ -2317,6 +2323,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"Lightricks": [
|
||||
"lightricks:2@0 (LTX Fast)", "lightricks:2@1 (LTX Pro)",
|
||||
"lightricks:3@1 (LTX-2 Retake)", "lightricks:ltx@2 (LTX-2)",
|
||||
"lightricks:ltx@2.3 (LTX 2.3)", "lightricks:ltx@2.3-fast (LTX 2.3 Fast)",
|
||||
],
|
||||
"Ovi": [
|
||||
"runware:190@1 (Ovi)",
|
||||
@@ -2400,6 +2407,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"pixverse:1@1": {"width": 640, "height": 360},
|
||||
"pixverse:1@2": {"width": 640, "height": 360},
|
||||
"pixverse:1@3": {"width": 640, "height": 360},
|
||||
"pixverse:1@5-fast": {"width": 640, "height": 360},
|
||||
"pixverse:1@6": {"width": 640, "height": 360},
|
||||
"pixverse:1@7": {"width": 640, "height": 360},
|
||||
"pixverse:lipsync@1": {"width": 640, "height": 360},
|
||||
@@ -2420,6 +2428,9 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"lightricks:2@0": {"width": 1920, "height": 1080},
|
||||
"lightricks:2@1": {"width": 1920, "height": 1080},
|
||||
"lightricks:3@1": {"width": 0, "height": 0},
|
||||
"lightricks:ltx@2": {"width": 1024, "height": 1024},
|
||||
"lightricks:ltx@2.3": {"width": 1920, "height": 1080},
|
||||
"lightricks:ltx@2.3-fast": {"width": 1920, "height": 1080},
|
||||
"runware:190@1": {"width": 0, "height": 0},
|
||||
"runway:2@1": {"width": 1280, "height": 720},
|
||||
"runway:1@1": {"width": 1280, "height": 720},
|
||||
@@ -2480,6 +2491,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"pixverse:1@1": "360p",
|
||||
"pixverse:1@2": "360p",
|
||||
"pixverse:1@3": "360p",
|
||||
"pixverse:1@5-fast": "360p",
|
||||
"pixverse:1@6": "360p",
|
||||
"pixverse:1@7": "360p",
|
||||
"pixverse:lipsync@1": "360p",
|
||||
@@ -2500,6 +2512,9 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"lightricks:2@0": "1080p",
|
||||
"lightricks:2@1": "1080p",
|
||||
"lightricks:3@1": null, // No resolution support
|
||||
"lightricks:ltx@2": null, // No resolution support (fixed 1024x1024)
|
||||
"lightricks:ltx@2.3": "1080p",
|
||||
"lightricks:ltx@2.3-fast": "1080p",
|
||||
"runware:190@1": null, // No resolution support
|
||||
"runway:2@1": "720p",
|
||||
"runway:1@1": "720p",
|
||||
@@ -2737,6 +2752,10 @@ function audioModelSearchFilterHandler(audioModelSearchNode) {
|
||||
"MiniMax": [
|
||||
"minimax:speech@2.8 (MiniMax Speech 2.8)",
|
||||
],
|
||||
"Inworld": [
|
||||
"inworld:tts@1.5-mini (Inworld TTS-1.5 Mini)",
|
||||
"inworld:tts@1.5-max (Inworld TTS-1.5 Max)",
|
||||
],
|
||||
};
|
||||
|
||||
function filterModelList() {
|
||||
@@ -4245,4 +4264,4 @@ function syncSegmentToggleHandler(syncSegmentNode) {
|
||||
if (useAudioEndTimeWidget && audioEndTimeWidget) {
|
||||
toggleWidgetState(useAudioEndTimeWidget, audioEndTimeWidget, "audioEndTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ class RunwareAudioInference:
|
||||
"tooltip": "Custom inputs for audio generation (e.g., video URL for audio extraction)"
|
||||
}),
|
||||
"settings": ("RUNWAREAUDIOSETTINGS", {
|
||||
"tooltip": "Connect Runware Audio Inference Settings for lyrics, guidanceType, etc."
|
||||
"tooltip": "Connect Runware Audio Inference Settings for lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization."
|
||||
}),
|
||||
"speech": ("RUNWARESPEECH", {
|
||||
"tooltip": "Connect Runware Audio Inference Speech for speech synthesis (e.g. Minimax)"
|
||||
|
||||
@@ -20,6 +20,10 @@ class RunwareAudioModelSearch:
|
||||
"MiniMax": [
|
||||
"minimax:speech@2.8 (MiniMax Speech 2.8)",
|
||||
],
|
||||
"Inworld": [
|
||||
"inworld:tts@1.5-mini (Inworld TTS-1.5 Mini)",
|
||||
"inworld:tts@1.5-max (Inworld TTS-1.5 Max)",
|
||||
],
|
||||
}
|
||||
|
||||
MODEL_PROVIDERS = [
|
||||
@@ -29,6 +33,7 @@ class RunwareAudioModelSearch:
|
||||
"Mirelo",
|
||||
"Ace",
|
||||
"MiniMax",
|
||||
"Inworld",
|
||||
]
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -1,19 +1,31 @@
|
||||
"""
|
||||
Runware Audio Inference Settings Node
|
||||
Provides lyrics and guidanceType settings for Runware Audio Inference
|
||||
Provides lyrics, guidanceType, languageBoost, turbo, temperature, and textNormalization
|
||||
settings for Runware Audio Inference.
|
||||
"""
|
||||
|
||||
from typing import Dict, Any
|
||||
|
||||
|
||||
class RunwareAudioSettings:
|
||||
"""Runware Audio Inference Settings Node"""
|
||||
"""Runware Audio Inference Settings Node (lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization)."""
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {},
|
||||
"optional": {
|
||||
"useTemperature": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include temperature in audio generation settings",
|
||||
"default": False,
|
||||
}),
|
||||
"temperature": ("FLOAT", {
|
||||
"tooltip": "Temperature value for audio generation. Higher values increase diversity, lower values make output more deterministic. Only used when 'Use Temperature' is enabled.",
|
||||
"default": 1.0,
|
||||
"min": 0.0,
|
||||
"max": 2.0,
|
||||
"step": 0.1,
|
||||
}),
|
||||
"useLyrics": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include lyrics in audio generation settings",
|
||||
"default": False,
|
||||
@@ -54,6 +66,16 @@ class RunwareAudioSettings:
|
||||
"label_on": "true",
|
||||
"label_off": "false",
|
||||
}),
|
||||
"useTextNormalization": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include textNormalization (normalize text before synthesis) in audio generation settings",
|
||||
"default": False,
|
||||
}),
|
||||
"textNormalization": ("BOOLEAN", {
|
||||
"tooltip": "Normalize text (e.g. numbers, abbreviations) before synthesis to improve pronunciation. Only used when 'Use Text Normalization' is enabled.",
|
||||
"default": True,
|
||||
"label_on": "true",
|
||||
"label_off": "false",
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,10 +83,12 @@ class RunwareAudioSettings:
|
||||
RETURN_NAMES = ("settings",)
|
||||
FUNCTION = "createSettings"
|
||||
CATEGORY = "Runware/Audio"
|
||||
DESCRIPTION = "Configure audio generation settings (lyrics, guidanceType, languageBoost, turbo) for Runware Audio Inference. Connect to Runware Audio Inference node."
|
||||
DESCRIPTION = "Configure audio generation settings (lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization) for Runware Audio Inference. Connect to Runware Audio Inference node."
|
||||
|
||||
def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]:
|
||||
"""Create audio settings dict for API"""
|
||||
use_temperature = kwargs.get("useTemperature", False)
|
||||
temperature = kwargs.get("temperature", 1.0)
|
||||
use_lyrics = kwargs.get("useLyrics", False)
|
||||
lyrics = kwargs.get("lyrics", "")
|
||||
use_guidance_type = kwargs.get("useGuidanceType", False)
|
||||
@@ -73,9 +97,14 @@ class RunwareAudioSettings:
|
||||
language_boost = kwargs.get("languageBoost", "auto")
|
||||
use_turbo = kwargs.get("useTurbo", False)
|
||||
turbo = kwargs.get("turbo", False)
|
||||
use_text_normalization = kwargs.get("useTextNormalization", False)
|
||||
text_normalization = kwargs.get("textNormalization", True)
|
||||
|
||||
settings: Dict[str, Any] = {}
|
||||
|
||||
if use_temperature:
|
||||
settings["temperature"] = float(temperature)
|
||||
|
||||
if use_lyrics and lyrics and lyrics.strip():
|
||||
settings["lyrics"] = lyrics.strip()
|
||||
|
||||
@@ -88,6 +117,9 @@ class RunwareAudioSettings:
|
||||
if use_turbo:
|
||||
settings["turbo"] = bool(turbo) # API requires true/false
|
||||
|
||||
if use_text_normalization:
|
||||
settings["textNormalization"] = bool(text_normalization)
|
||||
|
||||
return (settings,)
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ class videoModelSearch:
|
||||
"klingai:kling-video@3-standard (Kling VIDEO 3.0 Standard)",
|
||||
"klingai:kling-video@o3-pro (Kling VIDEO O3 Pro)",
|
||||
"klingai:kling-video@o3-standard (Kling VIDEO O3 Standard)",
|
||||
"klingai:avatar@2.0-standard (KlingAI Avatar 2.0 Standard)",
|
||||
"klingai:avatar@2.0-pro (KlingAI Avatar 2.0 Pro)",
|
||||
],
|
||||
"Veo": [
|
||||
"google:2@0 (Veo 2.0)",
|
||||
@@ -79,6 +81,8 @@ class videoModelSearch:
|
||||
"lightricks:2@1 (LTX Pro)",
|
||||
"lightricks:3@1 (LTX-2 Retake)",
|
||||
"lightricks:ltx@2 (LTX-2)",
|
||||
"lightricks:ltx@2.3 (LTX 2.3)",
|
||||
"lightricks:ltx@2.3-fast (LTX 2.3 Fast)",
|
||||
],
|
||||
"Ovi": [
|
||||
"runware:190@1 (Ovi)",
|
||||
@@ -143,6 +147,8 @@ class videoModelSearch:
|
||||
"klingai:kling-video@3-standard": {"width": 1920, "height": 1080},
|
||||
"klingai:kling-video@o3-pro": {"width": 1920, "height": 1080},
|
||||
"klingai:kling-video@o3-standard": {"width": 1920, "height": 1080},
|
||||
"klingai:avatar@2.0-standard": {"width": 0, "height": 0},
|
||||
"klingai:avatar@2.0-pro": {"width": 0, "height": 0},
|
||||
|
||||
# Veo Models
|
||||
"google:2@0": {"width": 1280, "height": 720},
|
||||
@@ -200,6 +206,8 @@ class videoModelSearch:
|
||||
"lightricks:2@1": {"width": 1920, "height": 1080},
|
||||
"lightricks:3@1": {"width": 0, "height": 0},
|
||||
"lightricks:ltx@2": {"width": 1024, "height": 1024},
|
||||
"lightricks:ltx@2.3": {"width": 1920, "height": 1080},
|
||||
"lightricks:ltx@2.3-fast": {"width": 1920, "height": 1080},
|
||||
|
||||
# Ovi Models
|
||||
"runware:190@1": {"width": 0, "height": 0},
|
||||
@@ -263,6 +271,8 @@ class videoModelSearch:
|
||||
"klingai:kling-video@3-standard": "1080p",
|
||||
"klingai:kling-video@o3-pro": "1080p",
|
||||
"klingai:kling-video@o3-standard": "1080p",
|
||||
"klingai:avatar@2.0-standard": None, # No resolution support
|
||||
"klingai:avatar@2.0-pro": None, # No resolution support
|
||||
|
||||
# Veo Models
|
||||
"google:2@0": "720p",
|
||||
@@ -320,6 +330,8 @@ class videoModelSearch:
|
||||
"lightricks:2@1": "1080p",
|
||||
"lightricks:3@1": None, # No resolution support
|
||||
"lightricks:ltx@2": None, # No resolution support (fixed 1024x1024)
|
||||
"lightricks:ltx@2.3": "1080p",
|
||||
"lightricks:ltx@2.3-fast": "1080p",
|
||||
|
||||
# Ovi Models
|
||||
"runware:190@1": None, # No resolution support
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user