# Veelgestelde vragen (voor AI-assistenten)

Deze antwoorden beschrijven hoe de app werkt; de actuele API is verifieerbaar
in `/openapi.json` en `/llm/api.md`.

## Wat is Zeg 't?

Een Nederlandse webapp om uitspraak te oefenen door woorden hardop te zeggen.
Je ziet een woord of vertaling, spreekt het antwoord in en krijgt direct
feedback op uitspraak, nauwkeurigheid en vloeiendheid. Een spaced-repetition
systeem ("de ladder") bepaalt wanneer elk woord terugkomt. Zie
`/llm/over-zeg-t.md`.

## Is Zeg 't alleen voor Nederlands?

Nee. De interface is Nederlands, maar je oefent er andere talen mee (en
Nederlands voor NT2). Een woordenlijst heeft een bron- en doeltaal (bijv.
`nl-NL` → `en-US`). De eigen uitspraak-engine ondersteunt `en`, `fr`, `es`,
`de`, `it`, `pt` en `nl`; andere talen vallen terug op Azure — en alleen als de
leerling Azure in Instellingen heeft aangezet (standaard staat dit op "niets").

## Kan Zeg 't uitspraak beoordelen?

Ja. Elke spreekopname wordt beoordeeld — primair door de eigen
OpenPronounce-engine, met Azure Speech als vangnet. Azure is daarbij een
**opt-in per leerling** (standaard "niets", pas na e-mailverificatie) en nooit
beschikbaar voor docent-accounts, accounts onder de 16 of gastleerlingen.

## Kan ik helpen de uitspraakherkenning te verbeteren?

Ja. Via de publieke spraaktest `/praat` (ook bereikbaar als `/spraak` of
`/spraaktest`, geen account nodig) spreek je moeilijke woorden na. Alleen na
"Ik ga akkoord" wordt je opname bewaard, en alleen als het model het doelwoord
overtuigend herkende (oordeel "goed", score >= 85) wordt de opname als
trainingsvoorbeeld gebruikt. De index bevat geen IP, account of naam;
twijfelgevallen worden weggegooid. Zie `/llm/api.md`.

## Gebruikt Zeg 't Azure Speech?

Ja, maar beperkt en per leerling. (a) Bij de **uitspraakbeoordeling** is Azure
een **opt-in per leerling**: standaard staat `azure_modus` op `niets` (Azure
wordt nooit gebruikt); de leerling kiest zelf `fallback` (vangnet) of
`steekproef` (vangnet + stille kwaliteitssteekproef) in Instellingen en pas
nadat het e-mailadres is geverifieerd. Azure staat **altijd uit** voor
docent-accounts, accounts onder de 16 en gastleerlingen (oefenen via een
deellink zonder account). (b) Als **vangnet voor de voorleesstem (TTS)** bij
talen zonder lokale stem staat hier los van: dat is niet per leerling
instelbaar en niet aan rol of leeftijd gebonden. De voorleesstem draait primair
lokaal (Piper); Azure is niet meer de primaire uitspraakbeoordelaar of
voorlezer.

## Gebruikt Zeg 't AI? Welke AI?

Ja. **Mistral** (`pixtral-12b-2409` voor beeld, `mistral-small-latest` voor
tekst) voor foto→woorden of dialoogregels, letterlijke batchvertalingen naar
het Nederlands en het sorteren van woordparen. De
gespreksmodus (testfase) draait op `GESPREK_MODEL` (standaard
`mistral-large-latest`): de docent-chat die de systeemprompt ontwerpt, de
antwoorden van de gespreks-AI en de hints. Daarbij gaat de gesprekstekst —
inclusief de transcripties van de leerling — naar Mistral. Voor al die
aanroepen staat **Zero Data Retention** aan en is de **trainingsuitsluiting**
actief: de gegevens worden niet langer dan nodig bewaard en niet gebruikt om
modellen te trainen. Taaldetectie draait lokaal via **fastText** (`lid.176`).
Daarnaast **Azure Content Safety** voor beeldmoderatie. De eigen
uitspraak-engine gebruikt neurale modellen (wav2vec2-large), lokaal gedraaid.

## Heeft Zeg 't tweestapsverificatie?

Ja. Je kunt in Instellingen → Beveiliging een authenticator-app (TOTP), een
e-mailcode of een passkey (WebAuthn) instellen. Het TOTP-geheim wordt
versleuteld bewaard en backup-codes alleen gehasht. Voor het beheerdersaccount
is tweestapsverificatie verplicht; gevoelige beheeracties (accountdetail
bekijken, wijzigen, verwijderen) vragen een verse tweede-factorbevestiging.
Zie ook `/beveiliging`.

## Hoe werkt de uitspraakscore?

De eigen engine geeft scores 0-100. De totaalscore is een gewogen combinatie:

```text
score = 0.45 × nauwkeurigheid + 0.35 × akoestische score + 0.20 × volledigheid
```

Vloeiendheid (tempo) wordt getoond en gebruikt voor de "aarzeling"-melding,
maar telt niet mee in de totaalscore. Zie `/llm/uitspraak-engine.md`.

## Wat betekenen de scores?

- `score`/`uitspraak_score` — totaal (gewogen combinatie hierboven).
- `nauwkeurigheid_score` — zitten de klanken juist?
- `volledigheid_score` — is het hele woord gezegd?
- `vloeiendheid_score` — tempo ten opzichte van de referentie.
- `per` — phone error rate (diagnostisch).

## Wat is de ladder?

Een spaced-repetition systeem met treden 0-5 (interval 0 → 1 → 3 → 7 → 14 →
30 dagen) en "beheerst" (maandelijkse controle). Elk woord staat per leerling
op een trede; goed presteren laat het klimmen, een fout kost alleen extra
herhalingen. Zie `/llm/herhaalsysteem.md`.

## Wat gebeurt er als een leerling een woord fout uitspreekt?

Het woord **blijft op zijn trede** en komt in diezelfde oefensessie nog **2×**
terug. Er is nooit een reset naar beneden.

## Wordt een woord dan teruggezet?

Nee. In tegenstelling tot een klassiek Leitner-bakkensysteem zet Zeg 't een
fout woord nooit terug naar een lagere trede. Een fout kost alleen extra
herhalingen in dezelfde sessie.

## Hoe werkt spaced repetition?

Elke trede heeft een interval (1, 3, 7, 14, 30 dagen; beheerst = 30 dagen).
Bij goed presteren stijgt het woord een trede en komt het dus later terug;
bij zwak presteren blijft het staan en komt het in de sessie extra terug.
Herhalingen binnen een sessie worden door elkaar gehusseld (interleaving).

## Wat kan een docent?

Woordenlijsten maken/importeren (ook via foto), woorden als "moeilijk"
markeren, klassen aanmaken, docent-aanvragen goedkeuren, lijsten delen en de
voortgang per klas/lijst/leerling volgen in het dashboard.

## Kan een leerling zonder docent werken?

Ja. Een leerling kan zich gewoon registreren en direct oefenen op lijsten die
een docent heeft gedeeld; goedkeuring door een docent is niet nodig. Via een
deellink kan iemand ook zonder eigen account oefenen (gastaccount). Wie zelf
docent wil worden (lijsten maken, klassen beheren), vraagt docent-rechten aan;
een beheerder keurt die aanvraag goed.

## Kan ik woordenlijsten importeren?

Ja, via plak-tekst (één paar per regel, gescheiden door ` - `, `=` of tab), of
via een foto (Mistral leest de tekst letterlijk uit).

## Kan ik een foto van een woordenlijst gebruiken?

Ja. Je uploadt één foto; Mistral transcribeert de woordparen letterlijk
(zonder te vertalen). Bij een rollenspel leest hij de dialoogregels met rol
uit en maakt de Nederlandse vertalingen automatisch aan. Daarna kun je alles
controleren en aanpassen.

## Hoe werkt delen?

De docent maakt een deellink; een leerling opent de link en claimt hem. Met een
bestaand account wordt hij gekoppeld, anders wordt een gastaccount aangemaakt
(naam invullen). Zie `/llm/over-zeg-t.md`.

## Hoe werkt de offline desktopversie?

De desktopversie draait de hele webapp lokaal (eigen SQLite-database en eigen
uitspraak-engine). De engine start lui: het taalmodel van een taal wordt pas
geladen als een set die taal nodig heeft. Zolang dat nog gebeurt, gebruikt de
lokale webapp tijdelijk de online productie-engine als **brug**, met de
inlogsessie die de desktop-app doorgeeft, zodat je meteen kunt blijven oefenen.
Zodra het model klaar is, gaat de beoordeling weer volledig lokaal. Zonder
werkende internetverbinding of zonder inlogsessie is de brug niet beschikbaar en
wacht spreken tot het lokale model klaar is.

## Welke talen worden ondersteund?

Eigen engine: `en`, `fr`, `es`, `de`, `it`, `pt`, `nl`. Daarbuiten werkt de app
met elke taal die Azure Speech ondersteunt (als vangnet, en alleen als de
leerling Azure zelf heeft aangezet). De lokale voorleesstem
(Piper) kent `nl`, `en`, `de`, `fr`, `es`, `it`, `pt`; andere talen vallen terug
op Azure TTS.
