From 2d4492399dcdae4c967707fe3f8313fe3b32a0e7 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 20 Apr 2026 15:15:04 +0530 Subject: [PATCH 1/3] Added support for voices in audioInference --- runware/types.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/runware/types.py b/runware/types.py index 3f1dc14..15c9390 100644 --- a/runware/types.py +++ b/runware/types.py @@ -1813,10 +1813,17 @@ def request_key(self) -> str: return "inputs" +@dataclass +class IAudioVoice(SerializableMixin): + speaker: str + voice: str + + @dataclass class IAudioSpeech(SerializableMixin): text: Optional[str] = None voice: Optional[str] = None + voices: Optional[List[Union[IAudioVoice, Dict[str, Any]]]] = None language: Optional[str] = None speed: Optional[float] = None volume: Optional[int] = None @@ -1824,6 +1831,13 @@ class IAudioSpeech(SerializableMixin): emotion: Optional[str] = None tone: Optional[List[str]] = None + def __post_init__(self): + if self.voices is not None: + self.voices = [ + IAudioVoice(**v) if isinstance(v, dict) else v + for v in self.voices + ] + @property def request_key(self) -> str: return "speech" From e3ff029b3055915fb514a214c364f8d2fca046a1 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 20 Apr 2026 15:26:39 +0530 Subject: [PATCH 2/3] Fixed post_init --- runware/types.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/runware/types.py b/runware/types.py index 15c9390..db45361 100644 --- a/runware/types.py +++ b/runware/types.py @@ -1833,10 +1833,14 @@ class IAudioSpeech(SerializableMixin): def __post_init__(self): if self.voices is not None: - self.voices = [ - IAudioVoice(**v) if isinstance(v, dict) else v - for v in self.voices - ] + normalized_voices = [] + for v in self.voices: + if isinstance(v, dict): + normalized_voices.append(IAudioVoice(**v)) + else: + normalized_voices.append(v) + + self.voices = normalized_voices @property def request_key(self) -> str: From 92a943fbd037f6af197c39730415d417396e401c Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 20 Apr 2026 15:39:57 +0530 Subject: [PATCH 3/3] Fixed validations --- runware/types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runware/types.py b/runware/types.py index db45361..80517d9 100644 --- a/runware/types.py +++ b/runware/types.py @@ -1832,7 +1832,7 @@ class IAudioSpeech(SerializableMixin): tone: Optional[List[str]] = None def __post_init__(self): - if self.voices is not None: + if self.voices is not None and isinstance(self.voices, (list, tuple)): normalized_voices = [] for v in self.voices: if isinstance(v, dict):