Files
idriz/README.md

57 lines
2.8 KiB
Markdown
Raw Normal View History

# Idriz
Glasovni pomoćnik za djecu, alternativa ekranu. Sluša preko mikrofona, govori na zvučnik, a rezultate štampa na printer.
Radi samo na mašini `idriz` (Debian 13); ovaj repozitorij služi za sigurnosne kopije koda.
## Šta zna (v0.2)
- **Razgovor:** odgovara na pitanja glasom, kratko. Dijete kroz razgovor traži "naprednije" ili "pojednostavi" i Idriz drži taj nivo do kraja razgovora.
- **Sažetak sa Wikipedije:** nađe članak na engleskoj Wikipediji, prevede ga i sažme na bosanski, prilagodi uzrastu i odštampa najviše 2 stranice.
- **Bojanka:** generiše crno-bijelu sliku sa konturama preko cijele A4 stranice i odštampa je.
Razgovor ide preko OpenAI Realtime API-ja (govor u govor). Tišina znači kraj komande. Idriz prije štampanja uvijek pita za potvrdu.
## Struktura
- `idriz/assistant.py` glavna petlja (Realtime sesija, alati, half-duplex audio)
- `idriz/audio.py` mikrofon i zvučnik preko `pacat` (PipeWire), PCM16 24 kHz
- `idriz/wiki.py` pretraga i preuzimanje članka
- `idriz/textgen.py` prevod i sažetak (chat model, JSON)
- `idriz/render.py` HTML → PDF (WeasyPrint), automatsko uklapanje u 2 stranice
- `idriz/coloring.py` generisanje slike i pretvaranje u čiste konture, A4 PDF
- `idriz/printer.py` `lp` na CUPS printer `idriz-printer`
- `systemd/idriz.service` korisnički servis
## Instalacija
```
scripts/install.sh
# upiši OPENAI_API_KEY u ~/.config/idriz/env
systemctl --user start idriz
journalctl --user -u idriz -f
```
## Konfiguracija (okolina)
`OPENAI_API_KEY`, `IDRIZ_REALTIME_MODEL` (gpt-realtime-2.1), `IDRIZ_TEXT_MODEL` (gpt-5.5), `IDRIZ_IMAGE_MODEL` (gpt-image-2),
`IDRIZ_VOICE` (cedar), `IDRIZ_PRINTER` (idriz-printer), `IDRIZ_DRY_RUN=1` (ne štampa), `IDRIZ_MAX_PAGES` (2),
`IDRIZ_VAD_SILENCE_MS` (900), `IDRIZ_MIC_DEVICE`, `IDRIZ_SPEAKER_DEVICE`.
Odštampani PDF-ovi ostaju u `~/.local/share/idriz/out/`.
## Test bez štampanja
```
IDRIZ_DRY_RUN=1 .venv/bin/python scripts/test_summary.py "Volcano" "8 godina"
```
## Igra "Superheroji"
Glasovna igra (bez štampanja). Tok: Idriz pita koliko igrača (1–5) i imena, pa se
igra nekoliko rundi. Svaku rundu svaki igrač kaže jednog izmišljenog lika (bilo koji
medij — Supermen, Mario, La Linea, Mad Max...), a Idriz presudi ko bi pobijedio i
zašto. Pobjednik runde se više ne može birati do kraja partije. Sistem pamti
relativne jačine likova (Elo) u `~/.local/share/idriz/heroes.json` da borbe budu
dosljedne kroz partije. Za prepoznavanje likova koristi se najjači tekstualni model
(`game_model`, default `gpt-5.5`) i njegovo znanje; web search (Responses API) samo
kad model ne zna lika.
- `idriz/gamestore.py` — trajno skladište (heroji, Elo, broj rundi), bez vanjskih zavisnosti.
- `idriz/game.py` — prepoznavanje likova, presuđivanje, tok partije (`Match`).
- Broj rundi i rang-lista heroja se podešavaju u admin panelu (tab "Superheroji").