Server a platforma
← Kapitola 10: Technické požadavky
PHP backend je lehký – rozhoduje volba webového serveru. Zabezpečení configu a kiosku: samostatná kapitola.
| Platforma | Vhodnost | Poznámka |
|---|---|---|
| Windows + IIS + PHP | Výchozí / ověřené | Současné nasazení; nastavení serveru chrání konfigurační soubory |
| Linux + nginx + php-fpm | Výborná pro produkci | Stejný PHP kód; chraňte konfigurační soubory pravidlem serveru |
| Raspberry Pi 4 (4 GB) | Ano, s rezervou | PHP backend lehký; kiosk potřebuje plynulý Chromium a kvalitní USB audio |
| Raspberry Pi 5 | Lepší volba na Pi | Plynulejší animace (Rive), pohodlnější celodenní provoz |
Detailní sestavy kiosku podle OS: hardware Windows / Linux / Pi.
MySQL (volitelná znalostní báze)
Katalog exponátů v MySQL vyžaduje dostupný MySQL/MariaDB server ze stejné sítě jako PHP (typicky localhost nebo interní host). Rozšíření PHP pdo_mysql musí být zapnuté – bez něj test připojení v adminu selže. Připojení, vytvoření tabulky a naplnění katalogu popisuje Znalostní báze exponátů. Bez MySQL kiosk funguje dál; chat jen nevyhledává váš vlastní seznam exponátů.
IIS + PHP: hromadný náhled generování AI textů v katalogu posílá data po jednom řádku (krátké JSON odpovědi), aby průběh byl vidět i když IIS přes CGI bufferuje dlouhé odpovědi. Pro běžný provoz kiosku to není překážka; detail v návodu – náhled generování.
Kontrolní seznam před spuštěním
Před otevřením exponátu veřejnosti projděte body níže na stejném hardware a v podobném hluku, jako bude v provozu. Většina problémů v terénu (mikrofon, ozvěna, síť) se v tiché kanceláři neprojeví. Pořadí odpovídá logice nasazení: nejdřív server, pak kiosk, nakonec zvuk a volitelná D-ID varianta.
| Krok | Co ověřit | Kde / jak |
|---|---|---|
| 1. Server | "ready": true v diagnostice |
check v prohlížeči nebo z adminu |
| 1b. Config | Config 404 v prohlížeči (/config, cesta ve skryté složce); PHP jen čtení |
Vlastní název, ne ke stažení, kontrolní seznam |
| 2. Kiosk | Chrome/Edge, kiosk režim, HTTPS, mikrofon | Hardware – autostart |
| 3. Hlas a AI | TTS v adminu + reálná otázka na exponátu | Administrace → Hlas; základní nebo Rive URL |
| 4. Hlasitost | Slyšitelné z ~2 m, bez ozvěny do mic | Mikrofon a zvuk |
| 5. Barge-in | V hluku vypnout, pokud mic „slyší“ TTS | Administrace → Hlas → barge_in |
| 6. D-ID (jen video varianta) | Síť k api.d-id.com, výkon PC, plynulé video |
Varianty avatara, náklady D-ID |
1. Diagnostika serveru – ready: true
Aplikace volá cloudová API (Gemini, OpenAI, případně D-ID). PHP server musí umět bezpečné HTTPS požadavky
a číst konfiguraci. Vestavěná diagnostika je v souboru check v kořeni instalace –
otevřete v prohlížeči na stejném hostu jako exponát, např.
https://kiosk.vase-domena.cz/check.
Síťový test odchozího HTTPS (bez API klíče): check?probe=1.
Očekávaná odpověď (JSON, zkrácená ukázka):
JSON check – ukázka
{
"php_version_ok": true,
"https": true,
"pdo_mysql": true,
"data_dir_writable": true,
"ready": true,
"config_storage_mode": "data",
"config_active_pointer": "provoz-xx7/.ukazatel-cfg",
"config_file_exists": true,
"config_active_pointer_writable": true,
"config_readable": true,
"config_writable": false,
"config": { "api_key_set": true, "test_mode": false },
"mysql": { "connection_ok": true },
"exhibit_ready": true,
"warnings": []
}
Hlavní pole a co znamenají:
ready– server připraven (PHP 8.1+, cURL/fopen, OpenSSL, mbstring, config, SSL balíček). Neověřuje platnost API klíčů.exhibit_ready– navíc klíč aktivního providera, vypnutýtest_mode, změněné heslo admina.warnings– textová upozornění (chybí klíč, HTTPS, MySQL, výchozí heslo…).config_storage_mode– kde leží aktivní config:"data"(vlastní soubor ve skryté složce přes ukazatel) nebo"legacy"(výchozíconfigv kořeni). Diagnostika neuvádí skutečný název souboru.config_active_pointer– cesta k ukazateli aktivního souboru (fiktivní příklad:provoz-xx7/.ukazatel-cfg).config_file_exists– zda JSON na disku existuje. Viz vlastní název configu.config– stav bez tajemství:api_key_set, provider, tier,mysql_enabled.mysql– při nakonfigurované DB jenconnection_oka obecná zpráva (bez hostitele a názvu databáze).https– zda je diagnostika přes HTTPS (důležité pro mikrofon na kiosku).data_dir_writable– zápis statistik API do provozní složky.network_probe– s?probe=1: test odchozího HTTPS na Google a Gemini API.ca_bundle,http_client_ok,config_readable– viz dřívější návod; přica_bundle: falsečastoconnection_error– viz Hlášení a texty.
Platnost API klíčů (quota, billing) ověřte v administraci – Využití API, test hlasu.
Viz Nastavení Gemini.
check po nasazení chraňte – neukládá klíče, ale prozradí např. že chybí nebo je zapnutý test_mode.
2. Prohlížeč na kiosku – Chrome nebo Edge, celá obrazovka, mikrofon
Hlasový vstup (STT) běží v prohlížeči, ne na serveru. Firefox nemá spolehlivé české rozpoznávání – pro veřejný kiosk používejte Google Chrome nebo Microsoft Edge.
- Kiosk režim – spouštění s
--kiosk(ne jen F11). Po restartu PC musí exponát naběhnout sám; postup v Hardware – autostart a Doporučený provoz. - HTTPS – URL exponátu musí být
https://…(nebolocalhostpři lokálním testu). Bez HTTPS prohlížeč na síťové adrese často zablokuje mikrofon – návštěvník klepne Start, ale systém „neslyší“ otázku. - Povolení mikrofonu – jednorázově povolte pro danou doménu (ikona zámku v liště při prvním testu). Nepoužívejte anonymní režim – povolení se neukládá. Při více kioscích lze nastavit firemní politiku Chrome/Edge.
- Skrytí plochy Windows (volitelně) –
taskkill explorer.exev autostart bat souboru, aby návštěvník neviděl hlavní panel. Viz Bezpečnost – explorer.exe.
3. Test hlasu v administraci + reálná otázka na exponátu
Ověřte celý řetězec: server → AI → TTS → reproduktory → mikrofon → další otázka. Nestačí jen zelená diagnostika – musí fungovat i zvuk a rozpoznávání v provozním prostředí.
- Administrace → Hlas – tlačítko testu TTS (ukázková věta). Uslyšíte-li robotický nebo přerušovaný hlas,
zkontrolujte
tts_engine(cloud Gemini/OpenAI TTS je srozumitelnější než hlas prohlížeče – viz Mikrofon a zvuk). - Exponát na kiosku – klepněte Start, položte krátkou otázku česky (nebo jazykem zvolené vlajky).
Ověřte: rozpoznání → krátké „Přemýšlím…“ → slyšitelná odpověď. Zkuste to na URL varianty, kterou nasadíte:
základní SVG (
index) nebo Rive (rive) – obě sdílejí stejnou konfiguraci, liší se jen vizuál. - Druhá otázka za sebou – ověří
continuous_listena případně barge-in. Pokud první odpověď ještě hraje a systém „přepíše“ sám sebe, řešte hlasitost nebo vypnětebarge_in(bod 5). - Vlajky jazyků – pokud očekáváte cizince, přepněte CS/EN/DE/PL/SK a jednu otázku zopakujte – viz Jazyk exponátu.
4. Hlasitost – slyšitelné z 2 m, bez řvání
Cíl: návštěvník u stánku (typicky 1,5–2 m od reproduktoru) pohodlně rozumí odpovědi, ale mikrofon nezachytává ozvěnu vlastního TTS ze zdi nebo skla.
- Nastavte hlasitost ve Windows (nebo Linuxu) na střední úroveň – raději externí repro/soundbar než tenké repro v monitoru.
- Mikrofon umístěte mimo přímou osu reproduktorů (30–80 cm od úst návštěvníka).
- V hlučném vestibulu zvažte USB směrový mikrofon – vestavěný mic v monitoru v provozu často selže.
- Pokud asistent po odpovědi „slyší sám sebe“ a rozpozná nesmysl, snižte hlasitost nebo přidejte absorpční panel za kiosk (textilie, ne skleněná komora).
Podrobné srovnání hardware a TTS: Mikrofon a zvuk, Doporučený provoz.
5. Hlučný prostor – barge_in (přerušení odpovědi mluvením)
Volba barge_in v administraci (sekce Hlas) umožní návštěvníkovi mluvit přes probíhající odpověď –
jako u živého průvodce. Ve frontě u kiosku nebo v hlučné hale je to přirozené; v tichém muzeu může být rušivé.
- Nechte zapnuto, pokud mikrofon kvalitní, hlasitost rozumná a návštěvníci často skáčou do řeči.
- Vypněte, pokud mikrofon zachytává TTS z reproduktorů – systém pak „přeruší sám sebe“, STT rozpozná fragment odpovědi jako novou otázku a vznikne zacyklení. Typický příznak: exponát mluví, sám se přeruší a odpovídá na vlastní slova.
- Při vypnutém barge-in čeká exponát, až domluví – pod stavem mikrofonu je text typu „Počkejte na konec odpovědi“ (překládá se s vlajkami). Viz Hlášení a texty, Administrace – Hlas.
6. Varianta D-ID (video avatar) – navíc oproti základní / Rive
Pokud nasazujete fotorealistické video (did), platí vše výše a navíc:
- Síť – server i kiosk musí mít stabilní odchozí HTTPS k
api.d-id.com(firewall, proxy, DNS). Pomalá nebo kolísající linka = trhané video a delší čekání po otázce. - API klíč D-ID – v administraci; bez kreditů nebo s vyčerpaným limitem se zobrazí setup obrazovka místo avatara. Odhad nákladů: Náklady D-ID.
- Výkon PC – dekódování videa v prohlížeči je náročnější než Rive/SVG. Doporučeno mini PC s 4+ jádry a 8 GB RAM; na Raspberry Pi 4 počítejte s rezervou, Pi 5 je pohodlnější.
- Test na místě – jedna delší odpověď (20–30 s videa) při současném přehrávání TTS; ověřte plynulost bez sekání a že mikrofon stále funguje po skončení videa.
Srovnání všech variant: Možnosti avatara.
7. Varianta Kinect (kin1.php / kin2.php) – navíc oproti základní / Rive
Pokud nasazujete Kinect Xbox 360, platí vše výše a navíc celý postup z Kinect 360 – příprava PC (Windows 11):
- Windows 11 na stejném PC jako prohlížeč – Kinect SDK 1.8 a bridge na Linuxu/Pi nejsou podporované.
- Kinect360Bridge.exe běží na pozadí (autostart) dříve než Chrome kiosk.
- Demo režim v adminu vypnutý v produkci; WebSocket
ws://127.0.0.1:8765odpovídá portu bridge. - Prostor – návštěvník v záběru 1,5–2,5 m; ověřte pohyb kostry (kin1) nebo bodů (kin2).
ready: true + zabezpečení configu a kiosku
+ HTTPS s povoleným mikrofonem + test TTS v adminu + reálná otázka na místě + správná hlasitost.
D-ID a barge_in ověřte zvlášť, pokud je používáte.