BLUEBOT HOME · FTP · JAVASCRIPT · SQLITE
Stačí říct.
Domácí hlasový pomocník s osobní pamětí, připomínkami a mužským hlasem. Připraveno pro soukromou nekomerční domácnost.
Instalace na FTP hosting
Potřebuješ HTTPS, PHP 8.2+, PDO SQLite 3.27+ a SQLite FTS5. FTP přenáší soubory; samotný statický hosting tuto sdílenou SQLite verzi nespustí. Na hostingu není potřeba Node.js, Python ani placené hlasové API. JavaScript v prohlížeči zajišťuje logiku, rozpoznávání, překlad a hlas. Malá PHP vrstva zajišťuje přihlášení a zápis do SQLite.
- Rozbal ZIP. Jeho obsah nahraj přes FTP například do
public_html/bluebot/. Nahraj i soubory.htaccess. ZIP nemá obalovou složku. - V místní kopii otevři
server/setup-key.php. Zkopíruj klíč mezi jednoduchými uvozovkami zareturn. - Otevři
https://tvoje-domena.cz/bluebot/install.php. Vlož klíč a vytvoř heslo domácnosti alespoň 12 znaků dlouhé. - Instalátor zkopíruje znalosti do soukromé SQLite, doplní tabulky a odstraní sám sebe i klíč. Existující osobní databázi nepřepíše.
- Otevři adresu aplikace a přihlas se. Stejné heslo použijí další zařízení domácnosti.
Při instalaci musí být zapisovatelná složka server/. SQLite a session soubory leží mimo veřejný kořen webu. Pokud tam instalátor nemůže složku vytvořit, připrav ji správcem souborů a absolutní cestu nastav v server/storage-path.php. Hosting ji musí povolit v open_basedir a uživatel PHP do ní musí smět zapisovat. Nedávej osobní databázi do veřejné složky. Apache musí povolit přiložené direktivy .htaccess; u jiného serveru nastav stejnou ochranu složek a MIME typy v jeho konfiguraci.
První spuštění a modely
Po přihlášení stiskni „Stáhnout a ověřit modely“. Stažení má přibližně 1,56 GB; každý soubor se ověří SHA-256 a uloží po menších částech. Další pokus naváže na hotové soubory. Doporučený je aktuální Chrome nebo Edge, běžné okno, alespoň 8 GB RAM a přibližně 1,9 GB volného úložiště prohlížeče. Na slabších zařízeních může zpracování trvat déle. Modely se instalují do každého prohlížeče zvlášť.
Zvuk, rozpoznávání, překlady a syntéza pak běží v zařízení. Osobní paměť je na tvém hostingu, proto spojení s hostingem zůstává nutné. Smazání dat webu odstraní lokálně stažené modely, nikoli serverovou osobní paměť. Odpovědi používají znalosti z SQLite; bot při běžném rozhovoru nehledá na živém webu.
Hlasová bublina
Klepni na bublinu a povol mikrofon. Po dokončení věty nech přibližně 1,45 sekundy ticha. Bot odpoví hlasem a začne znovu poslouchat. Během přehrávání odpovědi je vstup pozastaven, aby neposlouchal sám sebe. Klepnutí nebo hlasový povel „Pauza“ vypne mikrofon. Přepis lze zapnout pouze pro čtení; textové zadávání dotazů tu není. Psaní hesla je potřeba jen při instalaci a přihlášení.
- „Zapamatuj si, že klíče jsou v předsíni.“ → „Kde mám klíče?“
- „Připomeň mi zítra v devět zalít květiny.“
- „Připomeň mi každý den v osm zalít květiny.“
- „Přidej mléko na nákupní seznam.“ → „Co mám koupit?“
- “What is photosynthesis?”
- „Jmenuji se Jana.“ přepne pojmenovaný profil.
Časy se počítají v pásmu Europe/Prague a ukládají v UTC. Pravidelné připomínky respektují změny letního času. Připomínky potřebují otevřenou stránku, aktivní bublinu a bdící zařízení. „Udržet vzhůru“ požádá prohlížeč o zamezení uspání obrazovky. Zavřená stránka ani uspané zařízení hlasem nemluví; zmeškanou připomínku bot nabídne po návratu. Potvrzení doručení se zapisuje až po dokončeném přehrání; přerušené přehrávání se později nabídne znovu.
31 jazyků a mužský hlas
Arabština, bulharština, chorvatština, čeština, dánština, nizozemština, angličtina, estonština, finština, francouzština, němčina, řečtina, hindština, maďarština, indonéština, italština, japonština, korejština, lotyština, litevština, polština, portugalština, rumunština, ruština, slovenština, slovinština, španělština, švédština, turečtina, ukrajinština a vietnamština.
Whisper Small určuje jazyk ze skutečných pravděpodobností jazykových tokenů zvuku napříč všemi svými jazyky. ELD výsledek kontroluje podle přepisu. Při rozporu či nízké jistotě se bot doptá a osobní požadavek neprovede. Krátké „ano/ne“ může převzít předchozí ověřený jazyk. Nabídka dovoluje i výslovnou volbu. U krátkých vět, podobných jazyků, přízvuků a smíšené řeči nelze slíbit stoprocentní přesnost.
NLLB-200 překládá dotaz do češtiny pro logiku a vyhledávání a odpověď zpět. Překlady mohou chybovat. Proto se u připomínek zachovává původní přepis uživatelova zadání a jeho jazyk. Datum a čas se čtou z uložené hodnoty pomocí Intl.DateTimeFormat, nepřekládají se generativně. U jiného jazyka než češtiny bot přečte původní zadání a přesný termín a uloží připomínku až po hlasovém „ano“. „Ne“ ji zahodí; nový požadavek nahradí rozpracované potvrzení. Potvrzení vyprší po třech minutách. Při chybě v termínu řekni ne a zadání zopakuj.
Při doručení bot oznámí, že je právě čas připomínky, a přečte původní zadání v původním jazyce. Tím se zachová požadovaná činnost i při nepřesném překladu. Ostatní odpovědi podléhají běžným omezením strojového překladu. Supertonic 3 používá ve všech podporovaných jazycích stejný mužský profil M1 při 44,1 kHz. Jde o přirozeně znějící syntetický hlas. Ukázka je v ukazka-hlasu.wav.
Paměť a soukromí
SQLite uchovává profily, osobní poznámky a změny, rozhovory, původní přepisy a jejich jazyk, připomínky, doručení, nákupy a importované články se zdroji. Zvuk se neukládá. „Učení“ znamená ukládání znalostí a poznámek do databáze; modely se samy nepřetrénovávají. Bot si neodvozuje a neukládá automaticky každý domnělý osobní fakt.
„Soukromý režim“ vypne ukládání nových přepisů a osobních poznámek. Výslovné připomínky a nákupy se ukládají dál. „Vypni soukromý režim“ paměť zapne. „Zapomeň na klíče“ odstraní odpovídající poznámky, jejich verze a související přepisy. „Zapomeň všechno“ po potvrzení odstraní poznámky a přepisy aktuálního profilu; připomínky a nákupy zůstanou. Profily sdílejí přihlášení domácnosti, nejsou oddělenými bezpečnostními účty.
Přihlášení používá heslový hash, bezpečnou session cookie, CSRF token a kontrolu původu požadavků. Zálohu lze stáhnout tlačítkem „Stáhnout paměť“ jako SQLite bez přihlašovacích záznamů. Zálohuj i soukromou složku na hostingu. Veřejný vstupní seed nemá osobní data.
Wikipedia a všechny tabulky
Balíček obsahuje 6 899 článků Wikipedie a 8 návodných článků, celkem 46 207 úseků. Není to celá Wikipedie. Odpovědi jsou výňatky z místní databáze; u zapnutého přepisu mají zdroj a odkaz na konkrétní revizi. Aktuální počasí, ceny ani zprávy bot nezná.
Tabulky a indexy jsou v server/schema-all.sql; původní část ve server/schema.sql, webové tabulky v server/web-schema.sql. Prohlížeč používá malou dočasnou SQLite kopii osobních tabulek v paměti, autoritativní data jsou na serveru. Zápisy probíhají atomicky přes pevný registr příkazů, chráněný verzí databáze a identifikátorem požadavku, aby se neopakovaly připomínky.
Pro větší import před prvním nasazením je v _source/tools/import-wiki.js nástroj pro Node.js 24+. Ve složce _source spusť místně npm ci --ignore-scripts, pak například node tools/import-wiki.js --full --lang cs nebo node tools/import-wiki.js --dump /cesta/cswiki.xml.bz2. Umí pokračovat a kontroluje SQLite. Celý dump potřebuje výrazně více místa a času. Po importu nahraj rozšířený knowledge/seed.sqlite3 přes FTP před instalací.
Již nainstalovanou osobní databázi nikdy nepřepisuj veřejným seedem. Aktualizace znalostí živé domácnosti vyžaduje samostatný řízený import a zálohu. Na hostingu se kvůli běžnému provozu žádné příkazy ani kompilace nespouštějí.
Modely a licence
Veškeré modely jsou připnuté na revize a kontrolní součty v model-manifest.json. Závislosti a licence jsou v licenses/. Texty Wikipedie zachovávají uvedení autorů, zdrojové revize a vlastní licence.
- Supertonic: helper MIT, hlasový model Supertonic 3: BigScience Open RAIL-M, úplné podmínky v
models/tts/LICENSE. - Whisper Small ONNX: původní OpenAI Whisper, MIT.
- NLLB-200 distilled 600M ONNX: Meta, CC BY-NC 4.0, nekomerční použití. Podmínky a model card jsou přiložené v
licenses/. Výzkumný model, překlady nejsou certifikované. - Transformers.js, ONNX Runtime, sql.js, ELD.
Rozsah skutečně provedených testů uvádí OVERENI.json. Nejde o test všech přízvuků a jazyků ani konkrétního cílového hostingu. Zdrojový kód je v _source/.