diff --git a/runware/types.py b/runware/types.py index 3f1dc14..80517d9 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,17 @@ class IAudioSpeech(SerializableMixin): emotion: Optional[str] = None tone: Optional[List[str]] = None + def __post_init__(self): + if self.voices is not None and isinstance(self.voices, (list, tuple)): + 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: return "speech"