Presuda je predugo trajala sa gpt-5.5. game_model default je sada gpt-4.1-mini (brz ~1-2s, bez reasoning overheada), kvalitet prepoznavanja i presude i dalje dobar (testirano: Kuromi, La Linea, Goku). Promjenjivo preko IDRIZ_GAME_MODEL. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
40 lines
2.1 KiB
Python
40 lines
2.1 KiB
Python
"""Konfiguracija iz okoline (~/.config/idriz/env se učitava preko systemd EnvironmentFile)."""
|
|
import os
|
|
from dataclasses import dataclass, field
|
|
from pathlib import Path
|
|
|
|
|
|
def _env(name: str, default: str) -> str:
|
|
return os.environ.get(name, default)
|
|
|
|
|
|
@dataclass
|
|
class Config:
|
|
openai_api_key: str = field(default_factory=lambda: _env("OPENAI_API_KEY", ""))
|
|
realtime_model: str = field(default_factory=lambda: _env("IDRIZ_REALTIME_MODEL", "gpt-realtime-2.1"))
|
|
text_model: str = field(default_factory=lambda: _env("IDRIZ_TEXT_MODEL", "gpt-5.5"))
|
|
game_model: str = field(default_factory=lambda: _env("IDRIZ_GAME_MODEL", "gpt-4.1-mini"))
|
|
image_model: str = field(default_factory=lambda: _env("IDRIZ_IMAGE_MODEL", "gpt-image-2"))
|
|
transcription_model: str = field(default_factory=lambda: _env("IDRIZ_TRANSCRIPTION_MODEL", "gpt-4o-mini-transcribe"))
|
|
voice: str = field(default_factory=lambda: _env("IDRIZ_VOICE", "cedar"))
|
|
printer: str = field(default_factory=lambda: _env("IDRIZ_PRINTER", "idriz-printer"))
|
|
mic_device: str = field(default_factory=lambda: _env("IDRIZ_MIC_DEVICE", ""))
|
|
speaker_device: str = field(default_factory=lambda: _env("IDRIZ_SPEAKER_DEVICE", ""))
|
|
out_dir: Path = field(default_factory=lambda: Path(_env("IDRIZ_OUT_DIR", str(Path.home() / ".local/share/idriz/out"))))
|
|
max_pages: int = field(default_factory=lambda: int(_env("IDRIZ_MAX_PAGES", "2")))
|
|
dry_run: bool = field(default_factory=lambda: _env("IDRIZ_DRY_RUN", "0") == "1")
|
|
vad_silence_ms: int = field(default_factory=lambda: int(_env("IDRIZ_VAD_SILENCE_MS", "900")))
|
|
mic_gain: float = field(default_factory=lambda: float(_env("IDRIZ_MIC_GAIN", "3.0")))
|
|
vad_threshold: float = field(default_factory=lambda: float(_env("IDRIZ_VAD_THRESHOLD", "0.5")))
|
|
|
|
def __post_init__(self) -> None:
|
|
self.out_dir.mkdir(parents=True, exist_ok=True)
|
|
# igra koristi brzi mini model (gpt-4.1-mini) da presuda ne traje dugo;
|
|
# promjenjivo preko IDRIZ_GAME_MODEL
|
|
if not self.game_model:
|
|
self.game_model = "gpt-4.1-mini"
|
|
|
|
|
|
def load() -> Config:
|
|
return Config()
|