"""Private built-in voice-state catalog for the Hugging Face demo.""" from pathlib import Path from private_assets import resolve_private_asset APP_DIR = Path(__file__).resolve().parent BUILTIN_VOICES = { "Голос 1 — глубокий мужской": resolve_private_asset("voices/voice_3_male_deep.safetensors"), "Голос 2 — мягкий женский": resolve_private_asset("voices/voice_2_female_silky.safetensors"), "Голос 3 — уверенный мужской": resolve_private_asset( "voices/voice_1_male_authoritative.safetensors" ), } VOICE_CHOICES = [*BUILTIN_VOICES] DEFAULT_VOICE = VOICE_CHOICES[0] def get_builtin_voice_state(selection: str) -> Path | str: """Resolve a UI label to a precomputed state without exposing source audio.""" try: return BUILTIN_VOICES[selection] except KeyError as exc: raise ValueError("Выберите один из доступных голосов.") from exc def validate_builtin_voice_assets() -> None: invalid = [ str(source) for source in BUILTIN_VOICES.values() if not ( (isinstance(source, Path) and source.is_file()) or (isinstance(source, str) and source.startswith("hf://")) ) ] if invalid: raise RuntimeError("Invalid built-in voice states: " + ", ".join(invalid))