SurfSense/surfsense_backend/app/podcasts/voices/data/azure.py

32 lines
1,006 B
Python

"""Azure TTS voices, routed through the OpenAI-compatible voice names.
The deployment fronts Azure with OpenAI-style voice names (matching the legacy
podcaster), so these mirror the OpenAI roster and, like it, speak any requested
language.
"""
from __future__ import annotations
from ..provider import TtsProvider
from ..voice import ANY_LANGUAGE, CatalogVoice, VoiceGender
def _voice(name: str, display: str, gender: VoiceGender) -> CatalogVoice:
return CatalogVoice(
voice_id=f"azure:{name}",
provider=TtsProvider.AZURE,
language=ANY_LANGUAGE,
display_name=display,
gender=gender,
native_ref=name,
)
AZURE_VOICES: tuple[CatalogVoice, ...] = (
_voice("alloy", "Alloy", VoiceGender.NEUTRAL),
_voice("echo", "Echo", VoiceGender.MALE),
_voice("fable", "Fable", VoiceGender.NEUTRAL),
_voice("onyx", "Onyx", VoiceGender.MALE),
_voice("nova", "Nova", VoiceGender.FEMALE),
_voice("shimmer", "Shimmer", VoiceGender.FEMALE),
)