Added support for Inworld TTS 1.5 and added LTX 2.3 video models

This commit is contained in:
Sirshendu Ganguly
2026-03-09 11:05:23 -04:00
parent 48991bc06b
commit bf6dc1423d
6 changed files with 60 additions and 1 deletions
+18 -1
View File
@@ -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)",
@@ -2420,6 +2427,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},
@@ -2500,6 +2510,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 +2750,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 +4262,4 @@ function syncSegmentToggleHandler(syncSegmentNode) {
if (useAudioEndTimeWidget && audioEndTimeWidget) {
toggleWidgetState(useAudioEndTimeWidget, audioEndTimeWidget, "audioEndTime");
}
}
}
+5
View File
@@ -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
+31
View File
@@ -14,6 +14,17 @@ class RunwareAudioSettings:
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 +65,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",
}),
}
}
@@ -65,6 +86,8 @@ class RunwareAudioSettings:
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 +96,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 +116,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,)
+4
View File
@@ -200,6 +200,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},
@@ -320,6 +322,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