2026-09-02 18:37:39 +02:00
# Idriz
2026-09-02 16:53:26 +02:00
2026-09-02 18:37:39 +02:00
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.
2026-09-02 19:30:58 +02:00
## Š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.
2026-09-02 18:37:39 +02:00
- **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)
2026-09-02 19:27:29 +02:00
`OPENAI_API_KEY` , `IDRIZ_REALTIME_MODEL` (gpt-realtime-2.1), `IDRIZ_TEXT_MODEL` (gpt-5.5), `IDRIZ_IMAGE_MODEL` (gpt-image-2),
2026-09-02 18:37:39 +02:00
`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"
```
Dodaj igru Superheroji (glasovna) + admin tab
Igra: 1-5 igrača, nekoliko rundi (konfigurabilno). Svaku rundu svaki igrač
kaže izmišljenog lika (širok pojam — bilo koji medij), Idriz presudi ko bi
pobijedio i zašto. Pobjednik runde se banuje do kraja partije. Redoslijed se
rotira svaku rundu (zadnji ima prednost). Najviše pobjeda runda = pobjednik partije.
- idriz/gamestore.py: trajno skladište (heroji, Elo rejting, broj rundi), bez
vanjskih zavisnosti (i admin ga uvozi). clear_favorite() drži borbe dosljedne
kroz partije (jači heroj ne gubi od znatno slabijeg).
- idriz/game.py: resolve_hero (najjači LLM gpt-5.5 + web search fallback samo kad
ne zna lika), adjudicate (presuda + obrazloženje na bosanskom), Match (tok partije).
- assistant.py: 4 realtime alata (nova_partija, izbor, presudi, kraj) + upute;
igra ide odmah nazad modelu, ne kroz pozadinski posao.
- config.py: game_model (default = text_model).
- admin: tab "Superheroji" (broj rundi + rang-lista + reset pamćenja).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
2026-09-04 11:57:43 +02:00
## 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").