2. Roboti a my - software

Stejně jako každý počítač, i robot potřebuje instrukce, jak se má chovat. Jak robot rozumí řeči a jak sám dokáže mluvit? Jak robot ví, co má odpovídat na otázky? Co všechno zvládá Pepper?

Úvod tématu
1. Roboti a jejich hardware
3. Umělá inteligence a jazyk

Programování robota

Pokud znáš programování v některém programovacím jazyku, u robotů to většinou bude trochu jinak. Při programování obvykle zadáváš počítači instrukce, co má provádět a v jakém pořadí. Stejně se programují roboti, kteří mají jeden konkrétní úkol (např. průmysloví roboti, o kterých se dočteš v kapitole 5).

Když se tento program spustí, provádí instrukce od první do poslední. Zapamatuje si seznam čísel – na obrázku jsou v něm jen čtyři čísla. Vezme si vstup od uživatele (anglicky „vstup” se řekne input), prochází svým seznamem čísel a hledá, jestli zadané číslo je nebo není v seznamu. Jakmile projde program celý seznam, ví, zda číslo našel nebo nenašel. Slovo „found” znamená „nalezeno”. Podobný program najdeš třeba při přihlašování na herní portál, když musíš zadat ověřovací kód.

Jenže sociální roboti, kteří si mají povídat s lidmi, musí fungovat jinak. Potřebují reagovat na otázky nebo další události kolem nich (o kterých se dozví ze senzorů, víc o nich najdeš v kapitole 1). Je to podobné programu ve Scratchi.

V programovacím jazyce Scratch reagují postavičky na události – například, když uživatel spustí program (zelený praporek). V příkladu jsou tři události – start programu, zprávy „Part le 1” a „Part le 1.5” od jiné postavičky. Podle události, která se stane, se spustí jen určitý blok kódu.


Jak robot rozumí řeči?

Tvým mluveným příkazům rozumí nejen roboti, ale například i telefony nebo hlasoví asistenti (jako Amazon Alexa nebo Siri). Robot si nahrává, co mu povídáš, a většinou počká, až uděláš pomlku. Potom si nahrávku rozdělí na takzvané fonémy nejmenší část slova při mluvení. Ty někdy odpovídají hláskám, někdy slabikám. Protože v každém jazyce se vyslovují slova trochu jinak, i fonémy se liší podle jazyků.

Určitě tě napadlo, že některé hlásky se vyslovují velmi podobně, například m a n nebo d a t – i lidé se někdy přeslechnou! Proto si robot představí všechny možné kombinace, jak jdou poskládat fonémy, které slyšel. Velmi mu pomáhá, když ví, jakým jazykem na něj mluvíš, a když zná všechna slova z tvého jazyka. Podle toho umí odhadnout, které kombinace fonémů dají dohromady správné slovo. Když neví, jakým jazykem mluvíš, snaží se prostě slova co nejlépe uhodnout.

Na konci tohoto postupu má robot do textu přepsaná všechna slova, která slyšel. A zároveň si k tomu poznačí, jak moc si je jistý svým odhadem. Tato jistota souvisí s pravděpodobností, že by někdo takovou větu řekl. Jak pozná smysl věty a odpoví na ni, k tomu se dostaneme za chvíli v části o dialogu.

Nejtěžší úloha pro robota je, když se jazyky míchají. Když například mluvíš o svých oblíbených hercích, hudebnících nebo sportovcích, kteří mají cizí jména, robot musí mít informaci, že má zkusit rozpoznat anglická slova v českém rozhovoru. V takovém případě je lepší dát dopředu robotovi seznam anglických slov, které může člověk použít.

Z kapitoly o hardware víš, že zvuk je vlnění vzduchu. Nahrávka řeči je vlastně informace o délce a výšce těchto vln (což odpovídá výšce zvuku a hlasitosti). Stejné fonémy mají podobný tvar, i když je vyslovují různí lidé. Program pro rozpoznání hlasu hledá fonémy podle této podobnosti.

Příklad rozpoznání věty „Pojďme domů”, kterou vyslovujeme jako „poďmedomú”. Výslovnost některých hlásek, například „m” a „n” nebo „b” a „p”, je velice podobná. Kvůli tomu má rozpoznaná věta několik možností: například „poďnedonú”, „poďmedolú”, „boďmedonú”. Díky znalosti českých slov může program některé možnosti hned zavrhnout. Ty zbývající seřadí podle míry jistoty, takže nakonec robot rozpozná „poďmedomú” a  „poďmedolú” zůstane jako druhá možnost.

Fonologie

Fonologie (hláskosloví) je věda, která spadá pod jazykovědu. Zabývá se tím, jak lidé slova v jazyce vyslovují, jaké hlásky používají a jak tyto hlásky a slabiky utvářejí smysl vyřčených slov.

Pro fonology jsou důležité fonémy – hlásky, slabiky nebo části slabik – které rozlišují význam slova podle výslovnosti. Všimni si, jak vyslovuješ slovo nashledanou”, možná říkáš nazhledanou” nebo naschledanou”, v každém případě to znamená stále totéž.

Možná víš, že v angličtině se vyslovují znělé hlásky i na konci slova, proto je něco jiného, když řekneš pik” (pick – sebrat) a pig” (prase).

Řekni si nahlas tato slova a sleduj, co vlastně vyslovuješ:

  • lev – říkáš lef”? To je správně.
  • anděl – možná vyslovuješ n”, ale spíš říkáš aňděl”.
  • trojúhelník – děláš malinkou mezeru před ú”? Možná řekneš trojúhelník”, ale možná troj-úhelník”. Obojí je v pořádku.
  • lžička – třeba vyslovuješ žlička”, žička” nebo dokonce lyžička”? Všechny varianty jsou normální.
  • osm – říkáš osum”? Nejspíš ano.
  • vyslovuješ benzín” nebo ​benzin”? Obojí se může.

Co z toho plyne? Umíme vyslovit víc hlásek, než si uvědomujeme, nepřikládáme jim ale jiný význam. Program pro rozpoznání řeči musí mít víc příkladů výslovnosti, aby jej naše rozdílná výslovnost nezmátla.


Jak robot dokáže mluvit?

Opačný postup k rozeznávání mluvené řeči se nazývá syntéza řeči. Robot si připraví odpověď na otázku jako text. Jednotlivá slova si rozdělí na části, které odpovídají fonémům, a přiřadí k nim správný zvuk. Kdybychom zůstali jen u takového poskládání zvuků, zněl by výsledek spíš jako řeč robotů ze starých filmů. Proto se k řeči doplní intonace – důraz na některé části věty, vyšší nebo nižší tón a podobně. Výsledná řeč pořád nezní úplně lidsky, ale v současné době již zní velmi přirozeně. A samozřejmě se výslovnost opět liší podle jazyka, proto třeba Pepper mluví v různých jazycích trochu jiným hlasem.

I syntéza řeči se řeší pro každý jazyk zvlášť, protože každý jazyk má jiná pravidla výslovnosti. Proto když má Pepper vyslovit cizí jméno v české konverzaci, musí je mít přepsané tak, jak se vyslovuje (foneticky). Například jméno Bruno Maisonnier (zakladatel firmy Aldebaran, která navrhla roboty Pepper) je v programu napsané jako Bryno Mesonié”.

Jestli tě zajímají podrobnosti o rozpoznání a syntéze řeči a rozpoznání obrazu, máme pro tebe video.


Rozhovor s robotem

Nyní už robot umí poznat, co mu říkáš, a odpovědět ti. Jenže jak pochopí, na co se ptáš, a jak ti odpoví? Roboti zatím neumí přemýšlet stejně jako lidé, a proto potřebují dopředu vědět, o čem a jak si s lidmi povídat. Potřebují tedy něco jako filmový nebo divadelní scénář. Nebo spíše scénář počítačové hry, ve které si jako hráč můžeš vybrat z různých možností pokračování. Možná znáš chatboty – to jsou počítačové programy, kterým napíšeš otázku a ony ti napíší odpověď. Dá se říct, že sociální robot je chatbot obalený hardwarem. Princip vytváření rozhovorů je velmi podobný. Více o chatbotech se dočteš v kapitole 3.

Pro každé téma, o kterém si robot má povídat, musí dopředu dostat připravený dialog – soubor s instrukcemi, co kdy říkat. Obvykle jako první začíná člověk, který robota pozdraví nebo přímo položí otázku. Pro každé oslovení nebo otázku má robot zapsanou možnost, jak odpovědět. Když se tě robot na něco zeptá, máš spoustu možností, co mu odpovědět. Robot by měl být připravený na každou z možností nějak zareagovat. A zase na každou reakci robota ty můžeš odpovědět různými způsoby. A tak pořád dokola a dokola…

Bez popisku

Tip: Vyzkoušej si napsat a nakreslit takový scénář s různými možnosti odpovědí pro běžnou situaci dne. Například když se domlouváš s kamarády, kam vyrazíte.

V tomto dialogu je robot připravený na různé odpovědi na otázku „Jak se máš?”, taky vyvíjí vlastní iniciativu, aby rozhovor neváznul.

Lidé se mohou někdy bát robota oslovit, proto je dobré mít připravené i možnosti, kdy rozhovor zahájí robot. Pepper dokáže poznat, když k němu člověk přijde dost blízko nebo když se mu člověk dívá do očí. A jako reakci na to může sám od sebe pozdravit nebo se zeptá, jak se ti dneska daří.

Také je vhodné mít připravenou odpověď roboto pro případ, kdy člověku špatně rozumí. Může položit upřesňující otázku nebo navést rozhovor správným směrem.

Další podrobnosti o přípravě a možnostech rozhovorů se dozvíš ve videu.


Nejen slova: něco navíc

Při rozhovoru mezi lidmi jsou důležitá nejen slova, ale také gesta a výrazy tváře. Pokud má být rozhovor s robotem pro lidi příjemný, měl by robot napodobovat lidská gesta. Pepper má už od výroby připravených několik stovek pohybů. Od jednoduchých jako zamávání, přikývnutí nebo úklona po složité tanečky. A samozřejmě si můžeš přidat vlastní pohyby, které se ti právě hodí. U Peppera můžeš ovládat pozice všech kloubů, končetin, hlavy i naklonění celého těla.

Pepper má naprogramován celý soubor pohybů, které používá při konverzaci, říká se jim nezávislý život (autonomous life). Když Pepper s někým mluví, dívá se na něj, ale když se kolem něj děje něco dalšího, otočí za tím hlavu. Pepper při konverzaci bezděčně pohybuje rukama, mrká” očima, rozevírá dlaně nebo otáčí celý trup. Nezávislý život je program, který dělá z Peppera roztomilého robůtka, kterému většina lidí s úsměvem odpustí, když jim nerozumí. Vědci prokázali, že když lidé mluví s robotem, který napodobuje toto bezděčné lidské chování, chovají se přívětivěji, přestože dobře ví, že před nimi stojí jen stroj z kovu a plastu.

Pepper má také možnost využít svůj tablet k promítání obrázků nebo videí. Tím může celý rozhovor oživit, ale také doplnit užitečné informace. Například při hledání v jízdních řádech se na tabletu zobrazí mapa cesty. Robotův program má možnost získat informace z internetu a robot je může přečíst” hlasem nebo zobrazit na tabletu.


Jak programovat Peppera

Když chceš naprogramovat nový úkol pro Peppera nebo rozšířit jeho zásobu rozhovorů, máš k tomu víc možností. Pokud se už vyznáš v programování pomocí jazyka Python, můžeš pomocí něj ovládat všechno, co Pepper dokáže provést.

Pokud chceš jednodušší a přehlednější možnost, můžeš použít program Choregraphe, který dodává výrobce Peppera. V něm máš přístup k většině funkcí robota. Každá funkce, například přečtení textu, výběr odpovědi, pohyb, je schovaná v jednom boxíku. Takže jen potřebuješ vybrat správné boxíky a propojit, jak mají následovat za sebou. Dokonce si můžeš svůj program vyzkoušet na virtuálním robotovi, pokud nemáš po ruce skutečného Peppera.

Pokud chceš programovat samotný rozhovor (dialog), může být přehlednější použít skriptovací jazyk QiChat. Dialog se skládá z replik. Replika je věta a odpověď na ni. Je dobré připravit Peppera na víc možností, které může člověk říct, ty se v QiChatu zapisují do hranatých závorek. Je také dobré, aby měl Pepper víc možností odpovědi. Když v rozhovoru dojde na tu stejnou repliku, Pepper může odpovědět pokaždé jinak. V replice QiChatu můžeme programovat i Pepperův pohyb nebo rychlost a intonaci jeho řeči. Pohyb se tak stává součástí rozhovoru, podobně jako když ve filmovém scénáři čteš:

Octopus (drží Spider–Mana): Už mi lezeš na nervy! (naštvaně)
Spider-Man: Lezení, to je moje. (sarkastickým tónem)
Octopus: Už jsi dolezl! (zlý úsměv)

(scénka z filmu SpiderMan)

Příklad repliky v QiChatu. Všimni si, že anglická jména jsou napsána s českou výslovností, aby je Pepper vyslovil správně.

Nejpokročilejší možnost, jak Peppera programovat, je propojit všechno dohromady. Podívej se na videa, která jsme s Pepperem natočili.

Ve videu Jak se jmenuješ” uvidíš běžnou konverzaci, které se někdy říká small talk”. Jak přirozená ti připadá a díky čemu?
Ve videu o umění slyšíš, jak jsme naprogramovali různou délku hlásek a intonaci tak, aby Pepper zpíval”.

Ve videu s jízdními řády vidíš, jak se Pepper připojí k webové stránce Integrovaného dopravního systému Jihomoravského kraje a získá z ní informace o odjezdu trolejbusu. Kromě toho uvidíš, jak to vypadá, když někdo vypráví vtipy s kamennou tváří”, nebo naopak, jak může být robot naprogramovaný, aby byl lechtivý. Navíc si poslechni, jak Pepper změní hlas, když se přepne do angličtiny.

Pepper zpívá

Pepper říká, jak se jmenuje

Pepper hlásí odjezdy MHD

Používáte starou verzi internetového prohlížeče. Doporučujeme aktualizovat Váš prohlížeč na nejnovější verzi.

Další info