""" Runware Speech Input Node Creates a speech input configuration with TTS provider settings """ from typing import Dict, Any class RunwareSpeechInput: """Runware Speech Input Node""" @classmethod def INPUT_TYPES(cls): return { "required": { "provider": ("STRING", { "tooltip": "TTS provider name. Currently supports: elevenlabs", "default": "elevenlabs", }), "voiceId": ("STRING", { "tooltip": "ElevenLabs voice ID for text-to-speech generation", "default": "", }), "text": ("STRING", { "multiline": True, "tooltip": "The text script to be spoken", "default": "", }), }, "optional": { "useId": ("BOOLEAN", { "tooltip": "Enable to include reference ID for mapping speech input. Required when using segments array.", "default": False, }), "id": ("STRING", { "tooltip": "Reference ID used to map speech input. Required when using segments array.", "default": "", }), } } RETURN_TYPES = ("RUNWARESPEECHINPUT",) RETURN_NAMES = ("Speech Input",) FUNCTION = "createSpeechInput" CATEGORY = "Runware" DESCRIPTION = "Create a speech input configuration with TTS provider settings for video generation." def createSpeechInput(self, **kwargs) -> tuple[Dict[str, Any]]: """Create speech input configuration""" useId = kwargs.get("useId", False) speech_id = kwargs.get("id", "").strip() provider = kwargs.get("provider", "elevenlabs").strip() voiceId = kwargs.get("voiceId", "").strip() text = kwargs.get("text", "").strip() if not provider or not voiceId or not text: return ({},) speechInput: Dict[str, Any] = { "provider": provider, "voiceId": voiceId, "text": text, } # Only include id if useId is enabled and id is provided if useId and speech_id: speechInput["id"] = speech_id return (speechInput,) # Node class mappings NODE_CLASS_MAPPINGS = { "RunwareSpeechInput": RunwareSpeechInput, } NODE_DISPLAY_NAME_MAPPINGS = { "RunwareSpeechInput": "Runware Video Speech Input", }