File size: 2,497 Bytes
b9301f1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | """Speech-lock repairs: no unigram broadcast, soup not re-ingested."""
from __future__ import annotations
import inspect
import unittest
import torch
from src.atom_native import AtomNativeModel, AtomSurfaceHead
from src.io.atomizer import Atomizer
from src.speech_lock import format_dialogue_prompt, speech_ok
class SpeechLockUnitTests(unittest.TestCase):
def test_dialogue_wrap(self) -> None:
self.assertEqual(
format_dialogue_prompt("Bonjour"),
"Utilisateur: Bonjour\nAssistant:",
)
self.assertIn("Assistant:", format_dialogue_prompt("Utilisateur: Hi\nAssistant:"))
def test_speech_ok_rejects_attractor_soup(self) -> None:
self.assertFalse(speech_ok(b""))
self.assertFalse(speech_ok(b"auiseateu : aernun e"))
self.assertFalse(speech_ok(b"asssuatiur:i derouin"))
self.assertTrue(speech_ok(b"Salut"))
self.assertTrue(speech_ok(b"Je suis la."))
def test_payload_copy_is_position_aligned_not_broadcast(self) -> None:
torch.manual_seed(0)
head = AtomSurfaceHead(d_model=8, max_payload_bytes=8, n_modes=8)
a_only = torch.ones(16)
a_hat = a_only / a_only.norm().clamp_min(1e-8)
byte_logits, _ = head.payload_produce(
[b"abc"],
a_hat,
a_only,
atom_energies=[1.0],
)
aligned = "No unigram broadcast" in inspect.getsource(head.payload_produce)
if not aligned:
self.skipTest("run python3 scripts/apply_speech_lock.py")
self.assertGreater(
float(byte_logits[0, ord("a")]),
float(byte_logits[3, ord("a")]),
)
class SpeechGenerateTests(unittest.TestCase):
def test_generate_does_not_commit_soup(self) -> None:
sig = inspect.signature(AtomNativeModel.generate_packets)
if "speech_gate" not in sig.parameters:
self.skipTest("run python3 scripts/apply_speech_lock.py")
model = AtomNativeModel(
d_model=8,
n_modes=8,
n_atoms_max=32,
max_payload_bytes=8,
atomizer=Atomizer(max_span_bytes=8),
)
model.eval()
raw = model.generate_packets(
"Bonjour",
max_packets=4,
deterministic=True,
payload_copy=False,
dialogue_wrap=True,
speech_gate=True,
)
self.assertNotIn(b"auiseateu", raw)
if __name__ == "__main__":
unittest.main()
|