Speaker: forvarmede generiske replikker, når stemmen ikke kan laves live

WPP_TTS_LIVE (settings.TTS_LIVE): auto (standard) eller off.

Én søm i BaseRoom._synth: kan en replik hverken findes i cachen eller laves
live, og kender den en generisk afløser (narrator.Line), siges en af de
generiske, der ligger i cachen. Rummets kø, afsløringens og oplæsningens
tidslinjer og drillerierne går alle igennem den, og storskærmen (og
telefonens drilleri) viser det, der faktisk siges. Et nyt spil får det ved
at bruge Narrator med sin egen generic.json.

tts:
- enabled() = der er en stemme (cachede klip kan spilles uden nøgle);
  can_fetch() = nøgle og stemme (tts_warm og nye klip).
- off: kun cachen, aldrig et kald.
- auto: efter 401, 402, 429 eller timeout holdes der pause med live-kald i
  fem minutter; saldoen tjekkes højst hvert femte minut i baggrunden, og
  under LIVE_MIN_CREDITS laves intet live. Et spil venter aldrig på det.

Hjernen: dens replikker caches aldrig. Kan de ikke siges, siges den faste
replik, hjernen erstattede (hvis den er cachet), ellers dens generiske
udgave; drillerier falder tilbage til de faste drillerier. Hjernen selv
kaldes som før. Tegn og Gæt: afsløringens intro plus første kæde har en
generisk afløser med samme intro.

Tavse, når de ikke er forvarmet: oplæsningen af spørgsmålet og dets note,
oplæsningen af spillernes svar og hjernens slutanmeldelse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
agw
2026-10-20 21:59:18 +02:00
co-authored by Claude Opus 5.5
parent 9ebbdfdc4d
commit cf6d484422
9 changed files with 321 additions and 16 deletions
+3
View File
@@ -7,6 +7,9 @@ DB_PATH=/path/to/db.sqlite3
STATIC_ROOT=/path/to/static
# Valgfrit: oplæsning
ELEVENLABS_API_KEY=
# auto (standard): replikker laves live, og fejler ElevenLabs (ingen nøgle, 401/402/429, timeout, lav saldo),
# siges en forvarmet generisk replik i stedet. off: kun forvarmede klip (manage.py tts_warm), aldrig live.
# WPP_TTS_LIVE=auto
# Spillets "hjerne" (valgfri; uden den bruges faste replikker). Se party/brain/providers.py.
# BRAIN_PROVIDER=anthropic