INNER CODE UNIT · Python
_get_kokoro_voice_options
harry0703/MoneyPrinterTurbo · webui/Main.py:542
def _get_kokoro_voice_options(saved_voice_name: str) -> list[str]:
"""会话内短缓存远端目录,断线时保留上次选择,不把故障当成用户改音色。"""
if config.kokoro.get("voices"):
return voice.get_kokoro_voices()
# 仅保留当前服务的一条缓存。更换端点/凭据立即重查,缓存不保存明文 Key;
# 30 秒内的其他 UI 操作不重复阻塞 5 秒等待一个已知离线的服务。
signature = (
(config.kokoro.get("base_url") or "").strip().rstrip("/"),
_credential_signature(config.kokoro.get("api_key", "")),
)
catalog = st.session_state.get("kokoro_voice_catalog", {})
if catalog.get("signature") != signature:
catalog = {"signature": signature, "voices": [], "checked_at": None}
now = time.monotonic()
if catalog["checked_at"] is None or now - catalog["checked_at"] >= 30:
fetched = voice.get_kokoro_voices(fallback=False)
catalog.update(checked_at=now, available=bool(fetched))