Proč
Seniorů přibývá, pečovatelů ne, a stát chce péči přesouvat do domácností (Národní strategie rozvoje sociálních služeb 2026–2030). Tam ale lidé bývají často sami.
Chci postavit asistenta, který pomůže těm, kdo to mají s technikou nejtěžší. Proto se první verze zaměřuje na seniory.
Cíle
- Porozumění záměru, ne příkazům. Lexie nemá pevnou sadu povelů, musí pochopit, co člověk myslí.
- Data zůstávají doma. Vše o uživateli se zpracovává a ukládá lokálně, nic neodchází do cloudu.
- Internet jen tehdy, když je potřeba. Přístup ven se otevírá jen na nezbytně dlouhou dobu a jen podle pevných pravidel.
- Trénink kognitivních schopností. Hry a aktivity pro udržení paměti a pozornosti.
- Pomoc, když se něco stane. Upozornění rodině nebo dispečinku.
- Bezpečné spojení s fyzickým světem. Lexie není jen chat. Má komunikovat s hardwarem a ovládat domácnost tak, aby byla pro seniora bezpečná.
Hlavní problém: porozumění volné řeči
Největší výzvou celého projektu je porozumění volné řeči a nedokonalostem řeči této skupiny lidí. Všechno ostatní (3D svět, hlas, hardware) je řemeslo. Tohle je otevřený problém, na kterém teď pracuji nejvíc.
Senioři nemluví v příkazech. Neřeknou „zapni rádio", řeknou „dneska je mi nějak smutno, pustila bys mi něco?". Mluví pomaleji, hovorově, někdy nezřetelně nebo nářečím. Lexie proto musí:
- poznat, kdy přepis řeči není spolehlivý, a radši se zeptat znovu, než si něco domyslet,
- rozlišit záměr od povídání, tedy jestli člověk něco chce, nebo si jen povídá,
- zvládnout češtinu (skloňování, hovorová řeč) na malém lokálním modelu, který se vejde do omezeného HW.
Přepis řeči
- Silero VAD před Whisperem, aby se do přepisu vůbec nedostal šum, dech nebo mumlání, ze kterých si Whisper umí „vymyslet" větu.
- Víc signálů než jen confidence: pravděpodobnost ticha (no-speech), průměrný logprob tokenů a detekce opakování, protože pomalá řeč s pauzami vede k zacyklení.
- Whisper bez gramatiky. whisper.cpp sice umí omezit přepis gramatikou na povolené fráze, ale u volné řeči seniorů by to bylo nebezpečné: věta, která v gramatice není, se nepřepíše jako nesrozumitelná, ale natlačí se do nejbližšího povoleného příkazu. Whisper má být jen ucho, porozumění patří až intent modelu.
Dva druhy nejistoty
Rozlišuji je, protože člověk na ně má reagovat jinak:
- Nejistota přepisu se řeší ještě před intent modelem. Lexie řekne „Promiň, nerozuměla jsem" a senior má větu zopakovat.
- Nejistota záměru (
UNCERTAIN) přichází z intent modelu. Slova jsou jasná, ale záměr ne. Nic se nespustí a Lexie se doptá: „Mám ti pustit rádio, nebo si o tom chceš jen popovídat?"
Záměr vs. povídání
Strukturovaný výstup intent modelu jde přes GBNF gramatiku (llama.cpp) — model vrací jen platný JSON, a to pole záměrů s typem COMMAND, CHAT nebo UNCERTAIN. Prompt určuje význam, gramatika tvar. Víc záměrů v jedné větě („rozsviť světla a zavři okna") je pak jen změna jednoho řádku gramatiky — C++ každý záměr validuje zvlášť, provádí zleva doprava a rizikové akce (okna, dveře, topení) potvrzuje.
Když věta spojuje emoci a požadavek („je mi smutno, pusť něco"), Lexie nejdřív reaguje na emoci, pak na akci. Klíčová slova v C++ slouží jen jako rychlá zkratka pro jednoznačné případy, ne jako náhrada porozumění.
Čeština, paměť a latence
Porovnávám, jak si s hovorovou češtinou a skloňováním poradí různé malé modely v kvantizaci (Llama 3.2, Qwen 2.5, Granite), s ohledem na licenci pro komerční použití. Protože načtení modelu z NVMe trvá vteřiny — a to je mezi „hey Lexie" a odpovědí moc — modely drží trvale v paměti. Na 8GB verzi to znamená jeden jazykový model pro záměr i konverzaci: váhy se načtou jednou a nad nimi běží dva kontexty, krátký pro intent s gramatikou a delší pro konverzaci.
Jak to funguje
Celý řetězec běží lokálně, je napsaný v C++ a Qt:
- Vše trvale v paměti, bez přenačítání modelů.
- Rozpoznání mluvčího: ECAPA-TDNN, aby Lexie věděla, kdo s ní mluví.
- Hry: stav a pravidla řídí deterministický engine, LLM generuje jen komentáře a reakce — tím se drží halucinace na uzdě.
- Data: SQLite lokálně, šifrovaně.
Víc než chat: fyzický svět
Většina digitálních společníků pro seniory umí povídat, připomínat a volat. Lexie má navíc komunikovat s fyzickým světem: ovládat světla, topení, okna, dveře a spotřebiče a hlídat, aby domácnost zůstala bezpečná. Pro seniora je byt místem, kde se nejčastěji něco stane: zapomenutý sporák, otevřené dveře v noci, vychladlý byt.
Tady je princip „model navrhuje, C++ rozhoduje" nejdůležitější:
- Model nikdy nemluví s hardwarem přímo. Každý záměr prochází C++ handlerem s pevným seznamem povolených akcí a rozsahů.
- Rizikové akce se potvrzují. Okna, dveře, topení a spotřebiče Lexie nejdřív ověří otázkou.
- Bezpečnost nezávisí na modelu. Bezpečnostní pravidla jsou deterministická a platí, i když jazykový model selže nebo neběží — stejná logika jako u staničního zabezpečovacího zařízení.
- Napojení na zařízení přes otevřené Gate API s ovladači pro KNX, Zigbee a Shelly. Jádro, které rozhoduje, zůstává uzavřené a pod kontrolou.
Paměť Lexie
Lexie si potřebuje pamatovat dvě různé věci: rozhovor (aby věděla, že „a ztlum to" se týká rádia, které pustila před minutou) a člověka (aby ho postupně poznávala — kdo jsou jeho blízcí, co má rád, jaké má zvyky).
„Učit se" tu neznamená dotrénovávat model — fine-tuning na zařízení je nepraktický a hlavně nevratný. Učení je extrakce faktů do databáze a jejich vyvolání ve správnou chvíli: model v noci navrhne z rozhovorů kandidáty na fakta, C++ je zvaliduje a zapíše. Paměť má tři vrstvy: surové přepisy (jen krátce), shrnutí jednotlivých dnů a profil s fakty. Ukládá se jen to, co člověk sám řekl, nikoli domněnky modelu.
- Rozpory a demence. Senior může jednou říct, že má dva syny, a jindy tři. Lexie ho nesmí opravovat, fakta se proto ukládají s datem a starší verze se nemažou.
- Citlivá fakta (úmrtí blízkých, nemoci) Lexie nikdy nezmíní sama, odpovídá na ně jen tehdy, když o nich začne mluvit člověk.
Rozhraní
Rozhraní je v QML s C++ backendem, na velké obrazovce (42" a víc) s IR dotykovým rámem. Nemá klasické menu s tlačítky.
Ústřední postavou je Lexie, černá fríská klisna jednorožec, která uživatele provází celým systémem. Žije ve vlastním 3D světě a ten svět je napojený na skutečný: mění se podle počasí, denní doby a ročního období.
Svět zároveň slouží jako stavový automat. Podle místa, kde Lexie ve scéně zrovna je, člověk pozná, jestli odpočívá, přemýšlí, nebo poslouchá, a nemusí přitom nic číst — senioři čtou prostorový kontext instinktivně. Součástí světa jsou i vzpomínky (fotografie, rodina), které se neotevírají z menu, ale objevují se v prostředí samy — navazuje to na principy reminiscenční terapie.
Soukromí a přístup ven
- Internet: přístup řídí upravený router s pravidly, která spravuje C++ vrstva, nikoli jazykový model. Spojení se otevírá jen na nezbytnou dobu a pak se zavře.
- Kamera: vyhodnocuje pouze lokálně na zařízení, bez záznamu a bez cloudu. Při události se uloží lokální záznam a na vyžádání se otevře stream, který existuje jen po dobu, kdy ho někdo sleduje.
- Rozhovory: zůstávají jen mezi seniorem a Lexie. Rodina ani dispečink k nim nemají přístup, dispečink vidí jen upozornění. Když senior řekne „zapomeň to", smaže se to ze všech vrstev paměti.
- Rodina získá přístup jen tehdy, když ho senior sám udělí.
Hardware
Lexie Nexus Standard
- NVIDIA Jetson Orin Nano 8 GB
- Obrazovka 42″ a větší s IR dotykovým rámem
- Mikrofon, reproduktory, upravený router
Lexie Nexus Premium
- Výkonnější modul s 16 GB paměti
- Navíc přehrávání filmů
- Modely i chování stejné jako u Standard
Demo zatím poběží na MacBooku M3 s monitorem a IR dotykovým rámem — nejdřív chci ověřit zájem, než investuju do finálního HW. Do budoucna počítám pro domovy s více pokoji s centrálním serverem (dva Jetson AGX Orin v režimu aktivní/záložní) a tenkými panely na wake word, obraz a zvuk.
Multimédia
- internetová rádia
- videa a streamy
- filmy (verze Premium)
- fotogalerie a vzpomínky
Stav a plán
Systém je ve vývoji. Jednotlivé části (wake word, přepis řeči, LLM, hlas) fungují samostatně a teď je skládám dohromady.
Funkční demo
V Domovech Na Třešňovce.
Vizuálně dotažený svět Lexie
3D svět a jeho propojení s reálným prostředím.
První piloty v domácnostech seniorů
Plné ovládání domácnosti a rozšíření pro lidi s postižením přijde později, ne teď — je to součást architektury od začátku, ale do lednového dema se zatím nedostane.
Proč to dělám
Programuji přes 20 let, od assembleru přes C++ po C#. Pracoval jsem se systémy Správy železnic, kde technika řídí celou stanici a nesmí selhat. Tenhle přístup chci dát do něčeho, co má smysl.
Chci, aby senior doma nebyl sám, a aby přitom nikdo cizí neslyšel, co si povídá.
