tts_warm: fest-replikkerne forvarmes også uden FEST_VOICE_ID
Fundet i bot-røgtesten med WPP_TTS_LIVE=off: uden FEST_VOICE_ID taler et fest-spil med standardstemmen, men tts_warm lavede kun de faste fest- replikker (fest-velkomst, fest-reglerne, fest-drillerierne), når der var en fest-stemme. Så var de tavse uden live-kald. Nu laves de altid, med fest-stemmen eller standardstemmen som rummet, og uden at gentage dem, der allerede står i "faste replikker" (56 klip, 2657 tegn uden fest-stemme). Med FEST_VOICE_ID sat er intet ændret. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,12 +56,14 @@ class Command(BaseCommand):
|
||||
static += TEASES
|
||||
static += [r["say"] for r in RULES]
|
||||
groups.append(("faste replikker", static, None))
|
||||
if fest:
|
||||
# fest-speakeren siger "<begivenhed>_fest", og den almindelige replik, hvor der ikke er en fest-udgave
|
||||
keys = [k for k in LINES if k.endswith("_fest") or k + "_fest" not in LINES]
|
||||
fest_static = [line for k in keys for line in LINES[k] if not re.search(r"\{\w+\}", line)]
|
||||
fest_static += TEASES_FEST + [r["say"] for r in RULES_FEST]
|
||||
groups.append(("faste fest-replikker", fest_static, fest))
|
||||
# fest-speakeren siger "<begivenhed>_fest", og den almindelige replik, hvor der ikke er en fest-udgave;
|
||||
# uden FEST_VOICE_ID med standardstemmen (som rummet), så fest-spil også har en stemme uden live-kald
|
||||
keys = [k for k in LINES if k.endswith("_fest") or k + "_fest" not in LINES]
|
||||
fest_static = [line for k in keys for line in LINES[k] if not re.search(r"\{\w+\}", line)]
|
||||
fest_static += TEASES_FEST + [r["say"] for r in RULES_FEST]
|
||||
if fest is None: # de almindelige ligger allerede i "faste replikker"
|
||||
fest_static = [t for t in fest_static if t not in set(static)]
|
||||
groups.append(("faste fest-replikker", fest_static, fest))
|
||||
if dry_run:
|
||||
# i budget-køens rækkefølge: intro, generiske (hver med sin stemme), Tegn og Gæt, Fup og Fakta's faste
|
||||
rows = [(name, [(t, voice) for t in texts]) for name, texts, voice in groups]
|
||||
|
||||
@@ -11,10 +11,10 @@ from unittest import mock
|
||||
from django.core.management import call_command
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
|
||||
from fupogfakta.engine import RULES as FOF_RULES
|
||||
from fupogfakta.engine import RULES as FOF_RULES, RULES_FEST
|
||||
from party import games, tts
|
||||
from tegnoggaet.engine import RULES as TEGN_RULES
|
||||
from party.narrator import LINES as FOF_LINES, TEASES, Narrator
|
||||
from party.narrator import LINES as FOF_LINES, TEASES, TEASES_FEST, Narrator
|
||||
from party.tegn import COUNT_LINES, FIXED_LINES, LINES, THEME_LINES, TegnRoom, warm_texts
|
||||
from tegnoggaet.engine import Game
|
||||
from tegnoggaet.themes import load_themes
|
||||
@@ -24,13 +24,22 @@ NAMES = ("Qxa", "Zyb", "Wvc") # spillernavne og -ord, der ikke findes i rep
|
||||
WORDS = ("qqord", "zzgaet")
|
||||
|
||||
|
||||
def fof_static():
|
||||
def fof_normal():
|
||||
"""Fup og Fakta's faste replikker, som tts_warm har lavet dem hidtil."""
|
||||
out = [line for k, variants in FOF_LINES.items() if not k.endswith("_fest")
|
||||
for line in variants if not re.search(r"\{\w+\}", line)]
|
||||
return out + TEASES + [r["say"] for r in FOF_RULES]
|
||||
|
||||
|
||||
def fof_static():
|
||||
"""... og så fest-replikkerne med standardstemmen (FEST_VOICE_ID er tom her), dem der ikke allerede er med."""
|
||||
out = fof_normal()
|
||||
keys = [k for k in FOF_LINES if k.endswith("_fest") or k + "_fest" not in FOF_LINES]
|
||||
fest = [line for k in keys for line in FOF_LINES[k] if not re.search(r"\{\w+\}", line)]
|
||||
fest += TEASES_FEST + [r["say"] for r in RULES_FEST]
|
||||
return out + [t for t in fest if t not in set(out)]
|
||||
|
||||
|
||||
class TegnWarmTextTests(SimpleTestCase):
|
||||
def test_variants_are_exactly_what_line_says(self):
|
||||
n = Narrator(lines=LINES, rng=random.Random(1))
|
||||
@@ -163,7 +172,9 @@ class TtsWarmCommandTests(SimpleTestCase):
|
||||
def test_without_budget_tegn_is_not_made_and_fof_is_as_before(self):
|
||||
calls, voices, out = self.run_cmd()
|
||||
self.assertEqual(calls, fof_static())
|
||||
self.assertIn(f"{len(fof_static())} af {len(fof_static())} faste replikker ligger i cachen.", out)
|
||||
self.assertIn(f"{len(fof_normal())} af {len(fof_normal())} faste replikker ligger i cachen.", out)
|
||||
fest = len(fof_static()) - len(fof_normal())
|
||||
self.assertIn(f"{fest} af {fest} faste fest-replikker ligger i cachen.", out)
|
||||
self.assertIn(f"Tegn og Gæt: {len(warm_texts())} af {len(warm_texts())} replikker mangler; de laves kun med --budget.", out)
|
||||
self.assertIn(f"Menuens intro-replikker: {len(INTROS)} af {len(INTROS)} replikker mangler", out)
|
||||
self.assertIn(f"Generiske replikker: {len(generic())} af {len(generic())} mangler", out)
|
||||
@@ -208,7 +219,7 @@ class TtsWarmCommandTests(SimpleTestCase):
|
||||
self.assertIn(f"generiske replikker: {len(g)} klip, {sum(map(len, g))} tegn", out)
|
||||
calls, _, out = self.run_cmd("--dry-run", "--budget", "500")
|
||||
self.assertEqual(calls, [])
|
||||
self.assertIn(f"faste replikker: {len(fof_static())} klip", out)
|
||||
self.assertIn(f"faste replikker: {len(fof_normal())} klip", out)
|
||||
self.assertIn("tælles ikke i --dry-run", out)
|
||||
|
||||
@override_settings(ELEVENLABS_API_KEY="")
|
||||
|
||||
Reference in New Issue
Block a user