Skip to content

Commit e30554c

Browse files
committed
fix: preserve ElevenLabs 0.2 voice listing
1 parent cdfb124 commit e30554c

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

manim_voiceover/services/elevenlabs.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ class ElevenLabsService(SpeechService):
4545

4646
@staticmethod
4747
def _available_voices() -> Iterable["Voice"]:
48-
available_voices = voices().voices
48+
voices_response = voices()
49+
available_voices = getattr(voices_response, "voices", voices_response)
4950
if not isinstance(available_voices, IterableABC):
5051
raise TypeError("ElevenLabs voices response must be iterable")
5152
return available_voices

tests/test_service_contracts.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,15 @@ def test_elevenlabs_select_voice_warning_and_empty_voice_list(monkeypatch):
621621
service._select_voice("missing", None)
622622

623623

624+
def test_elevenlabs_available_voices_accepts_pinned_sdk_list_response(monkeypatch):
625+
import manim_voiceover.services.elevenlabs as eleven
626+
627+
fake_voice = SimpleNamespace(name="Default", voice_id="voice-id")
628+
monkeypatch.setattr("manim_voiceover.services.elevenlabs.voices", lambda: [fake_voice])
629+
630+
assert list(eleven.ElevenLabsService._available_voices()) == [fake_voice]
631+
632+
624633
def test_elevenlabs_dotenv_contract(monkeypatch):
625634
import manim_voiceover.services.elevenlabs as eleven
626635

0 commit comments

Comments
 (0)