1 Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra kybernetiky Diplomová práce Implementace animace tváře v prostředí projektu ArtiSynt...
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra kybernetiky
Diplomová práce Implementace animace tváře v prostředí projektu ArtiSynth
Plzeň, 2007
Jakub Vondrák
Prohlášení Předkládám tímto k posouzení a obhajobě diplomovou práci zpracovanou na závěr studia na Fakultě aplikovaných věd Západočeské univerzity v Plzni. Prohlašuji, že jsem předloženou diplomovou práci vypracoval samostatně s použitím odborné literatury a pramenů, jejichž úplný seznam je její součástí.
V Plzni dne . . . . . . . . . . . .
................. podpis diplomanta
Poděkování Rád bych touto cestou poděkoval panu Zdeňku Krňoulovi za konzultace a cenné rady. Dále členům vývojového týmu ArtiSynth za ochotnou pomoc na emailové konferenci tuna-developer [at] ece.ubc.ca a také svým blízkým za jejich podporu.
Abstrakt Cílem diplomové práce bylo prostudovat projekt ArtiSynth a navrhnout a implementovat metodu animace tváře. ArtiSynth je framework naprogramovaný v jazyce Java a vyvíjený na University of British Columbia. První část práce presentuje význam a výhody vizuální syntézy řeči a dále stručné shrnutí technik a přístupů, které se v této oblasti používají. Mezi tyto techniky patří MPEG-4, X3D, FACS, SMIL, FML, ArtiSynth framework a další. Druhá část práce potom obsahuje detaily týkající se analýzy a vlastní implementace mluvící hlavy. Implementace vychází z již vyzkoušených konceptů na oddělení umělé inteligence Západočeské univerzity v Plzni, které v mnohých aspektech vylepšuje a rozšiřuje. Implementace je provedena modulárně za použití rozhraní a továren. Mezi použité technologie patří X3D, XML, PCA, interpolace kubickými splajny a další. Key words: animace tváře, ArtiSynth, koartikulace, PCA, OpenGL, JOGL, Java, X3D
Abstract The goal of this diploma thesis is study of ArtiSynth framework, developed on University of British Columbia and implementation of talking head in framework environment. First part of work presents motivation and theoretical aspects for face visualization and related techniques. Such techniques are MPEG-4, X3D, FACS, SMIL, FML, ArtiSynth framework and others. Second part explains details of analysis and implementation of talking head. Talking head is based on proven concepts from Artificial section department on University of West Bohemia and is enhanced in numerous aspects. Implementation is done in modular way using interfaces and factories. Configuration of model was done using XML and X3D for geometry data. Other used techniques involve PCA for state space reduction and spline interpolation. Key words: face animation, ArtiSynth, coarticulation, PCA, OpenGL, JOGL, Java, X3D
Úvod Oddělení umělé inteligence při katedře kybernetiky se již dlouhou dobu zabývá syntézou i rozpoznáváním řeči. Do této problematiky spadá i vizuální syntéza řeči v podobě mluvící hlavy. Cílem této diplomové práce je navázat na dosavadní poznatky v problematice vizuální syntézy řeči a provést vlastní implementaci mluvící hlavy v prostředí frameworku ArtiSynth, naprogramovaného v Jave a vyvíjeného na kanadské univerzitě University of British Columbia (UBC). Důvod pro výběr ArtiSynthu jako základny pro novou implementaci bylo navázat užší spolupráci s UBC, prezentovat koncepci dosavadního přístupu a vyzkoušet schopnosti ArtiSynthu. Pro splnění tohoto cíle bylo nutné, seznámit se s obecnými principy vizuální syntézy promluvy, naučení se základům počítačové grafiky, konkrétně OpenGL a seznámit se s dosavadními výsledky pracoviště umělé inteligence. Dále nastudovat principy a fungování ArtiSynthu a ve spolupráci s vývojovým týmem domluvit koncepci jeho rozšíření. Konečným a nejnáročnějším bodem byla samotná implementace modelu a numerických algoritmů. Implementace si kladla za cíl využít poznatků z objektově orientovaného programování, návrhových vzorů a osvědčených postupů, aby byl výsledný model dobře dekomponován a připraven pro případné další rozšíření nebo zkoušení nových přístupů. Samotná implementace bude vycházet z koncepce parametrického modelu mluvící hlavy, již fungujícího a implementovaného v jazyku C++ na oddělení umělé inteligence. Analýza bude ale probíhat nezávisle na stávajícím řešení a snahou bude nalézt a odstranit případné nedostatky. Dále budou do modelu zahrnuta některá vylepšení, která stávající implementace neobsahuje. Všechny výše uvedené body se v implementaci podařilo dodržet a mluvící hlava, jako jeden ze simulačních modelů, se stala součástí ArtiSynthu. Implementace probíhala ve vlastním balíku, ale části kódu, které se jevily použitelné i pro jiné modely, byly integrovány přímo do příslušných částí ArtiSynthu a tak zpřístupněny dalším vývojářům. Konkrétně se jednalo o řešení, umožňující načítat geometrická data a jeho implementace pro formát X3D. Dále implementace numerické metody prostorových splinů a nakonec úprava a přidání souborů pro umožnění sestavovat projekt pomocí sestavovacího systému Apache Ant.
3
Kapitola 2
Vizuální syntéza tváře 2.1
Význam tváře v komunikaci
Výraz tváře je velmi bohatý zdroj informací. Lidský mozek je přizpůsoben informace z tváře vnímat a integrovat s okolním kontextem a získávat tak další vodítka, užitečná nejen pro porozumění promluvy, ale i pro získání úplně nových informací. Každý člověk, byť si to možná neuvědomuje, vnímá tvář mluvícího člověka, což mu pomáhá porozumět promluvě. Konkrétně se jedná o pozici rtů, jazyka, zubů, tváří a dalších artikulačních orgánů. Vizuální informace zvyšuje úspěšnost rozpoznání řeči, pokud je zvukový signál špatně zřetelný. Vizuální řeč také umožňuje porozumět mluvené řeči neslyšícím. Schopnosti odezírání ze rtů, je ale třeba se naučit a její spolehlivost závisí na velkém množství faktorů. Ve zvukové složce je při promluvě obsaženo mnohem více informací a tak velkou úlohu při odezírání hraje kontext promluvy, umožňující si chybějící informace domyslet. Je mnoho rozdílů vnímaných ve zvukové složce, které ve vizuální není možné postřehnout. Některé artikulační orgány, jakým je například jazyk nebo měkké patro jsou totiž odezírajícímu skryty (Strnadova, 2001). Provázanost zpracování slyšitelné a viditelné složky promluvy lidským mozkem, lze potvrdit pomocí McGurk efektu (McGurk – MacDonald, 1976). Ten spočívá ve vnímání rozdílné promluvy ve vizuální a audio složce, což způsobí unikátní interpretaci prezentovaných informací. Pokud přehrajeme zvukovou stopu s promluvou „baÿ a vizuální stopu se záznamem „gaÿ, bude většina lidí vnímat „daÿ. Náš mozek tedy integruje sluchovou a zrakovou informaci a vytvoří úplně novou slabiku. Existují i další možnosti kombinací, při kterých převáží zraková nebo sluchová část. Nalezneme i další důkazy důležitosti vizuální informace při promluvě. Například B. Goff a kolektiv (Goff et al., 1994) ukázali závislost porozumění promluvě na stupni okolního šumu. Rozdíl v úspěšnosti, kdy měl testovaný subjekt k dispozici vizuální složku k zašuměné promluvě, byl značný. Při odstupu užitečného signálu od šumu (Sound to Noise Ratio – SNR) o velikosti kolem -16 (dB) ve zvukové složce, byla už úspěšnost porozumění bimodální informaci téměř dvojnásobná. Úspěšnost porozumění bimodálnímu vnímání, není prostým součtem úspěšností vizuální a zvukové složky, ale je vyšší (Goff et al., 1994, s. 3). Z grafu na obrázku 2.1 lze vidět závislost porozumění promluvě na množství a kvalitě
4
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
vnímaných informací. Se zvyšující se úrovní šumu se úplně ztratila možnost porozumění pouze audio signálu, zatímco při bimodálním vnímání vizuální řeči, byla úspěšnost mnohem vyšší.
Obrázek 2.1: Úspěšnost porozumění v závislosti na šumu při různě dostupných informacích (Goff et al., 1994, s. 3)
2.2
Neřečové informace
Kromě vnímání vizuální řeči, lze z tváře získat množství neřečových informací, které nám mohou říci v jaké je člověk náladě, jestli mluví pravdu, atp. Výraz tváře nelze ale vnímat samostatně vytržený z kontextu. Například z fotografie nelze poznat, co přesně výraz znamená. Kontext, který souvisí s výrazem tváře může být například řeč, čas, místo, osobnost řečníka a další souvislosti. Ekman vysvětluje výraz tváře pouze jako externí manifestaci interního stavu z různých domén (Ekman, 1997). Stejný výraz tváře tedy slouží pro vyjádření různých informací podle toho, z jaké pochází domény. Ekman specifikuje sedm domén, které se mohou manifestovat v podobě výrazu tváře a tedy existuje sedm interpretací každého výrazu. Domény, z kterých může pocházet výraz tváře: 1. Bezprostřední události 2. Myšlenky, vzpomínky, očekávání, plány 3. Fyzický stav 4. Metafora 5. Co hodlá udělat v následující chvíli 6. Co chce, aby příjemce výrazu udělal 7. Emoce
5
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Uvedeme zde příklad, který je převzat taktéž z (Ekman, 1997). Představte si, že se na vás dívá člověk s hlavou vystrčenou mírně dopředu, sníženým obočím, které je stlačeno mírně k sobě a rty přitisknutými k sobě. Bez dalších informací si lze tento výraz vysvětlit mnoha různými způsoby: • Osobu někdo urazil nebo vyprovokoval • Plánuje zaútočit na osobu, která jí toto způsobila • Vzpomíná, jak ji naposledy někdo vyprovokoval • Cítí se napjatě • Zuří • Někoho v nejbližší chvíli napadne • Chce, aby osoba, která ji provokuje přestala Pro správné zařazení stavu k příslušné doméně je tedy nutné znát kontext. Ekman dále zavádí rozdělení výrazů tváře na volní (vědomě řízené) a mimovolní (nelze ovládat vědomím), přičemž výraz obličeje vyjadřující emoci zařazuje do mimovolních (Ekman, 1997, s. 5). Obličejové svaly jsou tedy ovládány jak volně, tak mimovolně. Mimovolní výrazy lze sice potlačit, ale skoro nikdy úplně, čehož lze využít např. při rozpoznávání lží. Ekman při svém výzkumu nalezl jedince, kteří jsou schopni lež odhalit téměř vždy (Gladwell, 2002). Při tomto výzkumu narazil na fenomén, který pojmenoval mikrovýrazy. Jedná se o konfiguraci obličejových svalů, která trvá pouze desetiny sekundy a které nelze vůlí potlačit. Z výše uvedeného je vidět, že význam vizuální informace v komunikaci je značný. Lze jej využít nejenom k lepšímu porozumění vyslovované promluvy, ale i získat mnohem hlubší informace o skutečných záměrech řečníka.
2.3
Využití vizuální syntézy tváře
Většina lidí vnímá vizuální syntézu tváře jen jako doplněk syntézy řečové v zábavním průmyslu. Vizualizace výrazů tváře nebo vizualizace promluvy, má ale mnohem širší využití. Například je možné s detailním modelem, postaveným na reálných datech, zkoumat produkci řeči u člověka a lépe tak pochopit její skutečné fungování. Tímto se zabývá mnoho pracovišť, vyvíjejících anatomicky přesné modely, založené na fyzikálních zákonech, které se ale pro svoji složitost nehodí k použití v reálném čase. Několik modelů vyvinutých ve frameworku ArtiSynth je takovým příkladem. Další využití nachází mluvící hlava jako doplňek pro znakující postavu, která může zajišťovat automatické znakování k jakémukoli zvukovému výstupu. Tak lze odstraňovat bariéry pro neslyšící nebo sluchově postižené. Typicky se může jednat o televizní vysílání nebo rádio přijímané pomocí počítače. Výukové programy jsou další doménou pro nasazení mluvící hlavy. Uživatel programu se bude výslovnosti učit mnohem lépe, pokud skutečně uvidí správnou artikulaci. Takový program byl zkonstruován například týmem (Massaro – Light, 2004).
6
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Pravděpodobně uvidíme mluvící hlavy také v mobilních telefonech. Například pomocí dříve uložených obrazových a geometrických dat a s použitím koartikulačního modelu, lze vizualizovat virtuální hlavu, která přečte přijatou SMS (Short Message Service) zprávu. Již dnes se ale používá telekonferencing, při kterém je přenášena hlava mluvící osoby i na linkách s nízkou propustností. To je možné při použití pokročilých kompresních algoritmů, jakým je například MPEG-4, který má speciální podporu pro kompresi videa mluvící hlavy. Technologie je v tomto ohledu napřed před možnostmi hardwaru. Největší problém dělá zřejmě nízká životnost baterií, která brzdí zrychlování procesorů i velikost operační paměti (Nystedt – Zhang, 2005). Nemalé využití nacházejí systémy vizualizace obličeje a jeho výrazů v zábavním průmyslu. Ať už se jedná o filmy nebo hry. Lze říci, že toto odvětví jde zvláště v posledních letech, se zvyšujícím se výkonem počítačů, rychle dopředu. Hry se narozdíl od filmů vyznačují vizualizací v reálném čase, což ale také znamená, že nemůžou dosáhnout kvalit offline zpracování, kdy je na výpočet libovolné množství času. Vizualizovaná lidská hlava bude s rostoucím výkonem počítačů nacházet uplatnění také jako běžná součást programového vybavení. Bude nám dělat průvodce i rádce. Zvyšující se interaktivita je neustálý trend, který bude dále pokračovat. Mnoho velkých firem vyvinulo nebo vyvíjí technologie pro vizualizaci nebo vytvoření virtuální postavy. Například výzkumné oddělení společnosti Microsoft vyvinulo software, který je schopný sestavit 3D virtuální model hlavy z videosekvence obyčejné webové kamery (Zhang, 2001).
2.4
Historie počítačové syntézy tváře
Člověk se o výrazy a obličej začal zajímat nejprve z biologického a psychologického hlediska. Za počátek moderního pohledu na vnímání výrazu tváře lze považovat Darwinovu knihu The Expression of the Emotions in Men and Animals, vydanou v roce 1872. Dalším velkým krokem v poznání informační hodnoty tváře, bylo navržení komplexního klasifikačního systému pro člověkem rozpoznatelné elementární výrazy, nazvaného Facial Action Coding System (FACS), za kterým stojí Paul Ekman a Wallace Friesen. Tento systém byl poprvé publikován v roce 1976 a jeho poslední verze pochází z roku 20021 . Za první 3D počítačovou animaci tváře je považována práce Parkeho z roku 1972. V roce 1974 navrhnul Frederick I. Parke parametrizovaný 3D model tváře. Parametrizovaný model umožnil měnit výrazy tváře pouze za pomoci malého množství parametrů a nevyžadoval ruční změny celé geometrie. Počátkem let 1980 byl vyvinut první model založený na fyzikálním modelu svalů, který vytvořil Platt. Další model, který vyvinul Brennan, umožňoval simulovat karikatury tváře. Roku 1985 byl vytvořen krátký animovaný film „Tony de Peltrieÿ2 , produkovaný Lachapellem, který se stal milníkem v animaci tváře. Poprvé byl totiž příběh založen na výrazu tváře animované postavy, kterou lze vidět na obrázku 2.2. Na obrázku lze pro srovnání vidět také výstup z komerčního softwaru Face Robot firmy SoftImage, určeného pro animaci tváře v 3D programech. Verze 1.5 tohoto softwaru byla vydána v roce 2006. 1 http://face-and-emotion.com/dataface/facs/new_version.jsp 2 http://www.fondation-langlois.org/flash/f/index.php?NumPage=292
7
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Obrázek 2.2: Vlevo: Ukázka z krátkého filmu Tony de Peltrie (1972); Vpravo: Výstup z animačního programu Face Robot firmy SoftImage (2006) Koncem 80. let vytvořil Keith Waters nový fyzikální model založený na dynamické simulaci deformovatelné tkáně, obsahující svaly přichycené k lebce a oddělenou čelist. Ve stejné době probíhal výzkum v oblasti synchronizace řeči, vedený Lewisem a Hillem. V průběhu 90. let začal rozmach animačních metod a technik zabývající se tváří. V University of Californie, Santa Cruz Perceptual Science Laboratory, vyvinul Cohen a Massaro vizuální řečový syntetizátor, který zajišťoval i koartikulaci. V polovině 90. let se stala počítačově založená syntéza tváře běžnou součástí filmů a byly na ni založeny celé příběhy. Prvním filmem, kde mimika hlavní postavy byla kompletně vytvořena počítačovou animací, byl Casper z roku 1995. V roce 2005 bylo uvedeno nové zpracování King Konga, které využívá FACS systém, implementovaný Markem Sagarem, na kterém budou založeny zřejmě i další filmy. V roce 1998 byl vydán MPEG-4 standard, který obsahuje část věnovanou čistě animaci tváře. Tato patentovaná technologie by mohla nahradit v současné době používaná nestandardní řešení, často vytvořená pro jeden daný účel a tudíž příliš nerozšiřitelná. Tyto historické informace byly čerpány z Wikipedia (2007a); Eptamedia (2000).
2.5
Přístupy k audiovizuálnímu zpracování řeči
Audiovizuální, neboli bimodální syntéza řeči zajišťuje zprostředkování jak zvukové, tak obrazové složky řeči. Tato práce se orientuje hlavně na obrazovou animaci řeči, a proto bude audio syntéze věnována jen krátká část shrnující základní přístupy a dosavadní výsledky.
2.5.1
Audio syntéza řeči
Cílem audio syntézy řeči, je produkovat řeč v kvalitě nerozlišitelné od lidského řečníka. Přístupy k audio syntéze řeči lze rozdělit do tří kategorií. • Formantová syntéza • Konkatenační syntéza 8
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
• Artikulační syntéza Formantová syntéza modeluje zjednodušeným způsobem hlasový trakt a simuluje tak způsob vytváření řeči člověkem. Ve formantové syntéze se řeč vytváří pomocí průchodu buzení soustavou filtrů, které představují hlasový trakt. Buzení dělíme na znělé a neznělé. Znělé představuje zvuk generovaný hlasivkami a neznělé buzení pak zvuky vznikající u frikativních fonémů. Základní tón hlasového traktu se označuje jako nultý formant F0 . Formantová syntéza nedosahuje velké přirozenosti. Konkatenační syntéza funguje na principu řetězení předzaznamenaných jednotek řeči. Program analyzuje vstupní text s prozodií, a podle toho vybírá z databáze řečové jednotky, které minimalizují určité kritérium. Délka řečových jednotek závisí na použití. Například pro syntézu celého možného spektra slov se často používají tzv. trifóny nebo difóny. Například trifón je foném, s určitým pravým a levým kontextem, tvořeným jinými fonémy. Konkatenační syntéza je dnes nejpoužívanější a dosahuje vysoké přirozenosti. Nevýhodou ale zůstává kolísající kvalita, která je způsobená řetězením nevhodných jednotek. Artikulační syntéza vytváří řeč pomocí přesného matematicko-fyzikálního modelu hlasového traktu. Tento přístup klade velké nároky jak na dobrou anatomickou znalost hlasového traktu, tak i na výpočetní výkon. Mnoho parametrů hlasového traktu se prozatím nedaří dobře měřit a ani výkon běžných počítačů není dostačující pro artikulační syntézu v reálném čase. Artikulační syntéza tak zůstává možnou syntézou budoucnosti.
2.5.2
Vizuální syntéza řeči
Vizuální syntézu můžeme rozdělit podle přístupu na video a 3D syntézu. 3D syntézu lze dále rozdělit na parametrickou a fyzikálně orientovanou. Těmto přístupům se budeme věnovat v samostatných kapitolách níže. Dalším možným rozdělením vizuální syntézy by mohlo být na realtime a offline. Realtime syntéza nachází použití ve výukových aplikacích nebo ve hrách. Offline syntéza je používáná pro filmy a vyznačuje se vyšší obrazovou kvalitou, které je možné dosáhnout pokročilými renderovacími technikami.
2.5.3
Video syntéza
Video syntéza je založena na podobném principu jako konkatenační přístup v audio syntéze. V databázi je uloženo množství předzaznamenaných video sekvencí, které program vybírá a řetězí podle potřeby. Uplatňují se zde techniky morfování, ale i z části 3D přístup. Video lze totiž mapovat na 3D tvář a tak zvýšit dojem prostorovosti. Video syntézy mohou dosáhnout vysoké realističnosti.
2.5.4
3D model – parametrický
Prostorový 3D model je založen na počítačové vizualizaci geometrických dat, která jsou řízena množinou časově proměnných parametrů. Prostorová vizualizace je řešena buď pomocí realtime renderovacích technik, jakými je například OpenGL nebo DirectX nebo pomocí náročných offline renderovacích technik, dávající realističtější výsledky.
9
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Množství a funkce parametrů modelu se různí. Buď můžeme využít existující přístupy jako jsou MPEG-4 FAPs nebo FACS, a nebo si navrhnout vlastní. Jednou z možností je aplikovat postupy pro redukci parametrů, jako je například metoda označovaná jako analýza hlavních komponent, dále jen PCA (Principal Component Analysis) a redukovat tak množství parametrů potřebných pro řízení. Parametry modelu mohou řídit hustou 3D síť přímo, nebo nepřímo. Při nepřímé aplikaci je parametry ovlivňována kanonická, jednodušší síť, která následně ovlivňuje konečnou hustou síť. Tento přístup má výhodu ve snažší manipulaci s jednoduchou sítí (ušetření výpočetního času) a zároveň umožňuje měnit konkrétní viditelnou 3D síť. Například lze vyměnit obličej řečníka nebo použít různě hustou síť v závislosti na výkonu počítače.
2.5.5
3D model – fyziologický
Fyziologický model se od parametrického liší způsobem modifikace geometrie 3D sítě. Fyziologický model bere v potaz anatomickou podstatu lidské tváře, jako jsou svaly, kůže a další části, které mají být simulovány. V případě svalů se tedy většinou jedná o dynamický systém popsaný diferenciálními rovnicemi. Fyziologický model se skládá většinou ze tří částí. Z modelu lebky, ke které jsou příchyceny svaly, ze svalů a z vrstvy kůže. Kůže může mít navíc několik vrstev, které z různou intenzitou přenášejí deformace na poslední viditelnou vnější vrstvu. Z popisu fungování je zřejmé, že fyziologický model je výpočetně velice náročný a běžnými PC v reálném čase nerealizovatelný. Dalším problémem fyziologického modelu je většinou nedostatečná znalost přesné anatomie a dynamiky. Ta často nejde dobře změřit kvůli nedostupnosti daného místa měřícím prostředkům. Jedná se například o jazyk nebo hlasivky. V případě, že by ale tyto problémy byly vyřešeny, dával by fyziologický model realistické výsledky.
2.6 2.6.1
Technologie pro animaci tváře SMIL
Synchronized Multimedia Integration Language (SMIL) je technologie, za kterou stojí World Wide Web Consorcium a první verze se stala doporučením už v roce 1998. Technologie umožňuje tvorbu multimediálních prezentací ve standardizovaném formátu. Autorovi umožňuje časování, pozicování, animaci, přechody, vkládání médií a další. SMIL je implementován převážně na mobilních zařízeních, ale je možné jej přehrát i na PC pomocí Apple QuickTime Player3 . Podmnožina SMIL funkcí je dnes známa pod názvem Multimedia Messaging Service (MMS). Ve SMIL je možné reprezentovat 3D scény a protože v MPEG-4 XMT formátu je možné SMIL použít, je uveden i zde. SMIL dokument je strukturálně podobný běžnému HTML. Obsahuje části a . V hlavičce jsou obsaženy informace o rozvržení (layout) a v těle jsou obsaženy časovací informace. Ty lze rozdělit do dvou skupin na paralelní <par> a sekvenční <seq>. Multimediální objekty jsou z těla odkazovány pomocí URL (Wikipedia, 2007e). 3 http://www.apple.com/quicktime
10
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Momentální platná specifikace, verze 2.1, se skládá z několika modulů. Každý modul pokrývá určitou oblast použití. Například animace, rozložení, linkování, časování atp. SMIL obsahuje tři varianty s různě velkým „slovníkemÿ. Jedná se o plnou formu, formu pro mobilní zařízení a rozšířenou formu pro mobilní zařízení. Tyto tři formy jsou specifikované svým DTD schématem. (W3C, 2005). Ukázka SMIL4 <smil> <par> <seq> Příklad v ukázce zobrazí dva obrázky objekt.png za jednu sekundu po spuštění a další obrázek v sedmé sekundě.
2.6.2
VRML a X3D
Virtual Reality Modeling Language (VRML) a jeho nástupce Extensible 3D (X3D) je standardní formát pro uložení virtuálních světů. Standard podporuje animaci, interaktivitu s uživatelem a specifikuje i formát uložení dat do souboru. Informace o standardu byly čerpány z (Zara et al., 2004, s. 530). Virtuální svět ve VRML se skládá ze scény, která je tvořena hierarchickou – stromovou strukturou objektů. To zajišťuje skládání transformací a vytváření objektů, respektive jejich podstromů. Tělesa jsou popsána pomocí vrcholů a hran, tvořících plošky, na které lze mapovat statické nebo pohyblivé textury. Scéna může obsahovat běžné prvky jako jsou zdroje světla, předdefinované polohy a charakteristiky kamer. VRML sám o sobě není programovací jazyk, ale za pomocí JavaScriptu nebo Javy, lze měnit parametry objektů ve scéně obsažených. VRML bylo navrženo pro použití v síti, a tak lze části výsledné VRML scény získat z různých souborů. Interakce s uživatelem zajišťují tzv. senzory, 4 Ukázka
SMIL formátu převzata z http://www.tvorba-webu.cz/xml/smil.php
11
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
které mohou reagovat na vstupní zařízení, jakým je např. myš. Interakce lze použít pro synchronizaci událostí. Nástupce VRML, standard X3D, reaguje na požadavky, které v průběhu používání VRML vznikly. X3D umí nově využívat křivky a plochy typu NURBS a modelovat pomocí FFD. Dále obsahuje speciální podporu pro geografická data, jakou je například neortogonální soustava souřadnic. X3D je rozděleno na několik tzv. komponent, které se dělí podle rozsahu, jaký lze pomocí nich reprezantovat. Například existuje komponenta pro mobilní zařízení, která neklade vysoké nároky na hardware. Napříč komponentami existují tzv. profily, které definují další omezení na prvky scény, jako např. maximální rozměr textur nebo počet vrcholů ve scéně. Soubory X3D mohou být ukládány do různých formátů jako např. binární, textový nebo XML.
2.6.3
MPEG-4
MPEG-4 je standard určený pro kompresi digitálních, interaktivních multimediálních dat. Standard vytvořila v roce 1998 skupina Moving Picture Expert Group (MPEG) a byl označen jako ISO/IEC 14496. Jeho předchůdci byly MPEG-1 (1991), který umožňil zprostředkovat VHS kvalitu obrazu a MPEG-2 (1994), který našel uplatnění v DVD. MPEG-4 standard je určen pro použití v široké škále přehrávačů – od počítačů po mobilní zařízení. Narozdíl od MPEG-1 a MPEG-2 je tedy velice mnohostranný a pokrývá širokou škálu kvality i formátů obrazu. Standard MPEG-4 se skládá celkem z 23 částí (parts), která se každá věnuje specifické problematice a některé části podléhají patentům. MPEG-4 definuje vlastní kontejner nazývaný MP4 (ISO 14496-14), který může obsahovat rozličné druhy médií. Kromě audio a video objektů také tzv. bohatý obsah (Advanced Content – Rich Media). Bohatý obsah může obsahovat taktéž audiovizuální objekty, ale navíc i syntetické scény (3D scény založené na VRML/X3D), textová data, obrazová data a data pro správu práv, duševního vlastnictví a licenčních informací (DMR). Všechny tyto objekty mohou být obsaženy v datovém MPEG-4 proudu a mohou interagovat mezi sebou nebo i s uživatelem. Soubor těchto objektů v datovém proudu se nazývá scéna (scene graph) a lze jej reprezentovat pomocí binárního formátu BIFS (Binary Format for Scenes) nebo vznikajícího textového formátu XMT (Extensible MPEG-4 Textual Format). Jednotlivým datovým objektům, či proudům se říká elementární proudy (Elementary Streams) a jejich datová reprezentace je definována pomocí Object Descriptor Framework (OD). Ten popisuje již výše zmíněné umístění objektu ve scéně a jeho interakce. OD Framework taktéž definuje proud pro MPEG-J, což jsou Java programy nazývané MPEGlets, a správce pro ochranu duševního vlastnictví (Property Management and Protection DCMI) (Kim – Wood, 2006; Wikipedia, 2007d). Dále se budeme zabývat pouze částí MPEG-4 specifikace, kterou je 3D scéna, konkrétně animace tváře, která má ve standardu samostatnou podporu.
2.6.4
Animace tváře s prostředky v MPEG-4
I když se rychlost počítačových sítí stále zvyšuje, existuje potřeba pro standard, který by zajistil plynulou animaci tváře i v sítích s nízkou propustností, jako
Ovlivňuje vizémy a výrazy čelist, bradu, vnitřní ret, koutky a střed rtů oční bulvy, zornice, výčka obočí tváře jazyk rotaci hlavy vnější ret nos uši
Tabulka 2.1: Skupiny a příslušný počet FAP jsou například mobilní telefony. Tento problém řeší MPEG-4 a nabízí nástroje k animaci tváře a efektivní kompresi pro proud dat. Technologie funguje tak, že nejprve přenese data potřebná pro konstrukci trojrozměrného obrazu a poté už jen posílá vektor modifikací známých parametrů. Prostorový obraz je definovaný za pomocí Facial Definition Parameters (FDP) a obsahuje geometrii lidské hlavy, texturu (obvykle fotku z čelního a bočního pohledu) a výchozí stav. Následuje vytvoření 3D scény, při které se mapují textury a nastavuje výchozí stav. Po tomto kroku již stačí posílat pouze Facial Animation Parameters (FAP) – parametry, které modifikují vytvořený model v čase. Konečný obraz hlavy se tedy vizualizuje za pomoci klientského zařízení a parametrů, což výrazně šetří přenosovým pásmem. Datový tok animačních parametrů (FAP), lze navíc ještě komprimovat pomocí DCT a huffmanova kódování a tím zajistit další úsporu v přenesených datech. Aby bylo možné pomocí časových značek s tváří pohybovat, musí být na tváři známé kontrolní body (Feature Points), ty lze vidět na obrázku 2.3. Těchto kontrolních bodů je celkem 84 a byly vybrány tak, aby pomocí nich bylo možné co nejlépe reprezentovat jakýkoli výraz.
13
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Kontrolních bodů je využíváno ve FAP, které stojí nad kontrolními body a umožňují provádět různé animační akce. Každý FAP tedy specifikuje množinu kontrolních bodů a jakým směrem se mají posunout vzhledem k neutrálnímu výrazu. Konstrukce množiny možných FAP akcí byla zkonstruována na základě studia výrazů, které lze rozpoznat a úzce se tedy vztahují k akcím svalů. FAP se dělí do následujících skupin. Hodnoty ve FAP nejsou specifikovány absolutně, ale jako poměr k určité části obličeje. To přináší možnost aplikovat stejné FAP na různé obličeje se stejným efektem. Tato relativní jednotka je nazvána FAPU (Face Action Parameter Unit) a standard jich specifikuje celkem šest.
Obrázek 2.4: MPEG-4 FAPU Identifikátor IRISD ES ENS MNS MW AU
Název průměr duhovky (iris diemeter) vzdálenost očí (eye separation) vzdálenost špičky nosu od roviny očí (eye – nose separation) vzdálenost špičky nosu od roviny úst (mouth – nose separation) šířka úst (mouth width) úhlová jednotka
Základní j. IRISD0/1024 ES0/1024 ENS0/1024 ENS0/1024 MNS0/1024 10−5 rad
Tabulka 2.2: MPEG-4 FAPU Obdobný princip existuje i pro animaci lidského těla. Definiční parametry se zde ale nazývají Body Definition Parameters (BDP) a animační parametry Body Animation Parameters (BAP). Informace o MPEG-4 byly čerpány z (Tekalp – Ostermann; [email protected]; Bitto).
2.6.5
MPEG-4 XMT formát
Extensible MPEG-4 Textual format (XMT) je specifikace umožňující textovou reprezentaci scény formátu MPEG-4. Takto připravenou scénu lze přeložit do různých formátů, jak je vidět na obrázku 2.5. Standardně je scéna popsaná v MPEG-4, uložena v BIFS (Binary Format for Scenes), který je určen pro 14
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Obrázek 2.5: XMT návaznost na ostatní technologie distribuci již hotového obsahu. Binární formát přináší řadu nevýhod, jako nemožnost scénu jednoduše editovat, spolupracovat na scéně s více autory nebo modifikovat už jednou vytvořenou scénu. Tyto všechny problémy odstraňuje textový formát pro popis scény – XMT. Má zajistit integraci FDP a FAP na SMIL nebo X3D/VRML. XMT je založený na XML a může mít dvě podoby: XMT-A a XMT-Ω (XMT-O). Formát XMT-A se snaží co nejblíže přiblížit BIFS a nabízí tedy prostředky pro textovou reprezentaci všech vlastností a objektů, z kterých se BIFS skládá. Popis scény pomocí BIFS má velmi blízko k X3D, a proto nástroje pracující s X3D umí zpracovat i XMT. Formát XMT-Ω je zaměřen hlavně na snadné použití autory a popisuje objekty a proudy na vyšší úrovni než XMT-A. Tento formát se snaží reprezentovat scénu takovým způsobem, aby byl její zápis kompatibilní se SMIL. Informace čerpány z (Kim – Wood, 2006).
2.6.6
Facial Action Coding System (FACS)
Facial Action Coding System (FACS) je ucelený přehled všech vizuálně rozpoznatelných pohybů tváře, založený na anatomickém zkoumání. FACS byl publikovaný roku 1978 a navazuje na svého předchůdce Facial Affect Scoring Technique (FAST) (Ekman et al., 1971) a jeho hlavním cílem je dát k dispozici prostředky pro popis výrazů tváře souvisejících s emocemi. Nicméně FACS je vhodný i jako nástroj pro další odvětví vyžadující systém pro popis výrazů tváře. Narozdíl od mnoha dalších pracovišť, která vyvíjela metody popisující pouze určitou část výrazů, vztahujících se k jejich konkrétnímu výzkumu, se FACS snaží být univerzální a je vybudován nezávisle na jekékoli interprataci významu akčních jednotek (Ekman et al., 2002). Za vývojem FACS stojí psychologové Paul Ekman a Wallace Friesen. FACS se skládá z 64 tzv. Action Units (AU), což je nejzákladnější pohyb popsatelný FACS, vyvolaný kontrakcí nebo relaxací jednoho nebo více svalů. Kombinací těchto základních pohybů lze simulovat všechny pozorovatelné výrazy tváře. Na pohyby tváře připadá 46 AU a ostatní jsou věnovány pohybům hlavy nebo očí. Vybrané AU lze vidět v tabulce 2.3 a 2.4. Přehled AU převzat z (Wikipedia, 2007b). Pomocí FACS lze tedy zaznamenat jakýkoli výraz tváře přiřazením intenzit
název Outer Brow Raiser Upper Lid Raiser Lid Tightener Upper Lip Raiser Lip Corner Puller Dimpler Lower Lip Depressor Lip Puckerer Lip stretcher Lip Funneler Lip Pressor Jaw Drop Lip Suck Jaw Sideways Lip Bite Cheek Puff Tongue Bulge Nostril Dilator Lid droop Eyes Closed Blink
Tabulka 2.3: Přehled vybraných AU, používajících obličejové svaly (Wikipedia, 2007b; Ekman et al., 2002) Č. AU 51 53 55 57 61 63 65
název Head turn left Head up Head tilt left Head forward Eyes turn left Eyes up Walleye
Č. AU 52 54 56 58 62 64 66
název Head turn right Head down Head tilt right Head back Eyes turn right Eyes down Cross-eye
Tabulka 2.4: Ostatní AU (Wikipedia, 2007b; Ekman et al., 2002) k všem rozpoznaným, aktivním AU. Intenzity jsou obvykle označovány písmeny od A, které znamená pouze náznak, až po E, které značí absolutní proveditelné maximum. Akční jednotky označují pouze ustálenou podobu (apex), nikoli náběh (onset) nebo návrat do původní pozice (offset). Dále může být u akční jednotky ještě rozlišováno, zda se jedná o její pravou (R), levou (L) nebo obojí (Bi) realizaci. U dětí je situace trošku jiná, protože ještě nemají dostatečně vyvinuté některé obličejové svaly jako dospělí. Některé AU tedy nedokáží realizovat (Corel Corp., 2005?). FACS je používán pro svojí ucelenost, která umožňuje zaznamenat téměř 16
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
jakýkoli výraz. Systém byl nedávno implementován ve filmovém průmyslu a byl použit například ve filmu King Kong z roku 2005 (Wikipedia, 2007a).
2.6.7
Formáty pro uložení výrazu tváře
Většina formátů pro uložení výrazu tváře využívá XML. Je to dáno jeho rozšířením, které zajišťuje dostupnost parserů a také samopisnými vlastnostmi XML formátu, zajišťující srozumitelnost. Virtual Human Markup Language (VHML) Virtual Human Markup Language si klade za cíl umožnit přirozenou interakci mluvící hlavy nebo celé postavy, skrze webové stránky nebo aplikaci, s člověkem. Návrh poslední specifikace jazyka pochází z roku 2001 a snaží se stavět na stávajících standardech. Specifikace se skládá z následujících částí: • EML Emotion Markup Language • GML Gesture Markup Language • SML Speech Markup Language (založeno na W3C SSML5 ) • FAML Facial Animation Markup Language • BAML Body Animation Markup Language • XHTML eXtensible HyperText Markup Language • DMML Dialogue Manager Markup Language (založeno na W3C Dialogue Manager6 nebo AIML7 )
Obrázek 2.6: Struktura jazyka VHML z jeho dílčích částí Jak je vidět z přehledu VHML částí a z obrázku 2.6, je rozsah použití VHML značně široký. Lze v něm zaznamenat emoce, gesta, prozodii a vysokoúrovňové akce tváře a těla. Informace čerpány z (Gustavsson et al., 2001). Ukázka VHML: 5 Speech
First I~speak with an angry voice and look very angry, <surprised intensity="50"> but suddenly I~change to look more surprised. Ukázka SML: <sml>
Detectives investigating the brutal <emph_GST 2 4 1000/> murder of Sarah Payne, have received <nod 2 3 800/> two hundred fresh calls from <emph_GST 2 7 900/> the public. This comes after <2b 2 9 700/> an appeal to locate a lorry driver, who <nod 2 4 800/> might have seen Sarah’s <nod 2 4 800/> killer.
Face Modeling Language (FML) Specifikace FML vznikla za přispění University of British Columbia a Simon Fraser University. Jedná se o XML formát, který má postavit vysokoúrovňovou abstrakci nad MPEG-4 Face Animation parameters (FAP). Ty jsou rozděleny do následujících tří kategorií (což lze ověřit v tabulce 3.1): • vizémy • výrazy • nízkoúrovňové pohyby V FML jsou jsou vizémy zpřistupněny skrze element. FML procesor konvertuje vstupní text na fonémy a vizémy kompatibilní s MPEG-4 standardem. FML výrazy tváře jsou opět nadefinovány tak, aby byly plně kompatibilní s MPEG-4. Pro ostatní animační parametry tváře může být použit nízkoúrovňový FAP element. Vzhledem k této kompatibilitě mohou být FML dokumenty snadno převedeny do MPEG-4 proudu dat, což dělá z FML kandidáta pro použití s MPEG-4 Textual Format (XMT) frameworkem. 18
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Ukázka FML: <model> <model-info-item> <story> <move-item> <...> <...> <...> Základní myšlenky FML jsou: • Reprezentovat animaci tváře hierarchickým způsobem • Definovat časové okamžiky interakcí mezi akcí tváře a vnějšími událostmi • Definovat možnosti a vzory chování • Zachovat kompatibilitu s MPEG-4 XMT a FAP • Zachovat kompatibilitu s XML a souvisejícími webovými technologiemi Informace o FML byly čerpány z (iMediaTek, 2005).
19
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
2.7
ArtiSynth
ArtiSynth je framework vyvíjený na kanadské univerzitě UBC sloužící primárně pro vývoj a testování přístupů související s artikulační syntézou. Jeho dlouhodobým cílem je umožnit vývoj artikulačního syntetizéru, který by produkoval přirozeně znějící řeč. ArtiSynth framework by měl posloužit výzkumným pracovištím sdílet a testovat své modely bez přílišné námahy na vývoj vlastní kostry aplikací (Fels et al., 2005). ArtiSynth je živý projekt, který vznikl zřejmě v roce 2005 a na kterém v současnosti pracuje kolem sedmi hlavních vývojářů a dále množství pracovišť z celého světa, které jej využívají jako platformu pro testování vlastních přístupů. ArtiSynth umožňuje nejen zvukový výstup a prostorovou vizualizaci, ale dává vývojářům k dispozici poměrně širokou paletu již hotových numerických metod potřebných pro simulaci dynamických modelů a dalších používaných výpočtů. Vývojář se tedy může více soustředit na svůj problém a nemusí se zabývat implementací základní funkcionality.
Obrázek 2.7: ArtiSynth Grafické uživatelské rozhraní ArtiSynthu je vytvořeno ve Swingu a o 3D výstup se stará OpenGL, ke kterému je z Javy přistupováno pomocí knihovny JOGL, využívající Java Native Interface (JNI). ArtiSynth dále obsahuje nativní knihovny pro numerické a maticové výpočty a možnost spouštět Python skripty za pomocí Python implementace Jython. Na obrázku 2.7 můžeme vidět základní strukturu uspořádání komponent ArtiSynthu. Jádro, na které jsou navázány všechny ostatní komponenty je tvořeno simulátorem – plánovačem, o kterém bude řeč v samostatné kapitole. Blok „Numericsÿ představuje hotové třídy a nativní knihovny, které lze z prostředí ArtiSynthu používat pro numerické výpočty. Blok „Resultsÿ znázorňuje možnost exportu výsledků do souboru. Bloky „Audioÿ, „Render Audioÿ a „Render Graphicsÿ představují zvukové, respektive grafické výstupy. Zvukový výstup využívá knihovnu JASS8 a grafický knihovnu JOGL, o které ještě bude řeč. Část obrázku označená jako „Workspace/GUIÿ představuje grafické uživatelské rozhraní a o něm bude také řeč dále. Další informace o ArtiSynthu lze nalézt na stránkách www.artisynth.org. 8 Java
ArtiSynth je napsaný v jazyce Java. Jedná se o objektový jazyk vyvíjený firmou Sun Microsystems. Dnes patří k velice populárním jazykům hlavně v serverových aplikacích, ale čím dál více se začíná objevovat i v desktopových RCP aplikacích. Svou syntaxí je podobný jazyku C++ s několika zjednodušeními. Mezi hlavní přednosti Javy patří její přenositelnost, robustnost, obsáhlá knihovna předpřipravených tříd pojmenovaná Java Foundation Classes (JFC), bezpečnost a multithreading. Přenositelnost Javy znamená, že je možné jednou zkompilovaný program spouštět na všech počítačích a operačních systémech, které obsahují běhové prostředí Javy, tzv. Java Runtime (JRE). To je zajištěno kompilací ne přímo do nativního kódu dané platformy, ale do pseudokódu nazvaného Java byte code, který je určen pro spouštění v JRE. Tento fakt má krom pozitiv také negativum způsobené sníženou výkonností. Ta je dnes představována hlavně časem potřebným pro spuštění běhového prostředí (JRE). Samotný vykonávaný kód je již posléze ve většině běhových prostředí zkompilován Just in Time compilerem do nativní podoby a běží tedy stejně rychle jako nativní aplikace. Princip je tedy stejný jako u platformy .NET. Jinou otázku je grafické uživatelské rozhraní vytvořené pomocí Swingu nebo AWT. Tyto technologie jsou velmi propracované a součástí Javy, ale protože grafické objekty Javy (widgets) nepoužívají systémové grafické objekty, jsou pomalejší. Pokud je z nějakého důvodu potřeba volat nativní funkce nebo knihovny z Javy, je to možné za použití technologie Java Native Interface (JNI). Předpřipravené třídy Javy (JFC), které jsou k dispozici ve všech běhových prostředích, jsou rozděleny do mnoha balíků a obsahují implementaci téměř všech základních algoritmů, které programátor běžně využívá. Jedná se o přístup k I/O rozhraním, k síti, třídy potřebné pro práci s kolekcemi, kryptografické nástroje, databázová rozhraní, XML parsery, třídy pro práci s textem, obrázky, zvukem, různé pomocné třídy a balíky pro tvorbu GUI – Swing a AWT. Kromě standardních JFC je možné získat další rozšíření většinou určené pro konkrétní použití. Například J2EE pro vývoj Java Enterprise aplikací, J2ME pro vývoj mobilních aplikací a mnohá další. Java se snažila vždy řešit i problém nasazení (deploy) aplikací a proto obsahuje technologie jako Java Archive (JAR), který umožňuje zabalit celou Java aplikaci do jediného souboru s příponou .jar a ten dále distribuovat. Další technologií usnadňující nasazení aplikací jsou, dříve velice oblíbené, Java applety. Jednoduchost tohoto nasazení se měla rovnat nasazení webových stránek, ale situaci komplikovaly různé verze Javy na počítačích uživatelů. Java applety byly taktéž omezené co do přístupu k systémovým prostředkům počítače. Běhové prostředí pro Java applety je proto označováno jako sandbox. Nejnovější technologií pro nasazování aplikací je Java Web Start (JWS), které řeší všechny nevýhody appletů a umožňuje pomocí jednoho kliknutí spustit plnohodnotnou Java aplikaci. Dalším specifickým rysem Javy je její automatická zpráva paměti. Java tedy obsahuje stejně jako většina dnešních objektově orientovaných jazyků tzv. garbage collector, který z paměti automaticky odstraňuje objekty, na které neexistují reference. Tato procedura je výpočetně náročná a proto nevhodná konfigurace garbe collectoru může aplikaci zbytečně brzdit.
21
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
2.7.2
Simulační jádro
ArtiSynth jako program umožňující simulaci dynamických modelů, které mezi sebou mohou navzájem interagovat, obsahuje simulační jádro tvořené plánovačem. Ten může obsluhovat řadu modelů, které spolu mohou komunikovat a vytvářet závislosti. Model je třída implementující specifické rozhraní, s kterým může následně pracovat plánovač. Pro usnadnění práce jsou tato rozhraní již implementována abstraktní třídou, kterou stačí oddědit a překrýt jen potřebné metody. Pro standardní model je vhodné oddědit třídu ModelBase.
Obrázek 2.8: UML diagram s rozhraními modelů V modelu je třeba překrýt metodu advance(), kterou volá plánovač a pokud chceme realizovat nějaký grafický výstup, tak potom taktéž metodu render(). Třída dědící od ModelBase ale není samostatně spustitelná jako hlavní model v plánovači. Aby bylo možné model či skupinu modelů spustit a simulovat, je nutné vytvořit ještě jeden zastřešující model, do kterého vložíme ostatní modely a který je následně celý spuštěn simulačním jádrem. Taková třída musí dědit od abstraktní třídy RootModel. Na třídě dědící od RootModelu je možné nastavit omezení mezi jednotlivými modely simulace. Dále je možné překrýt metody attach() a detach() a zobrazit uživateli vlastní grafické ovládání modelu.
2.7.3
Java API for OpenGL binding (JOGL)
Knihovna JOGL tvoří nedílnou součást ArtiSynthu a zajišťuje hardwarově akcelerované vykreslování 3D grafiky. Knihovna je vyvíjena a udržována Game Technology Group, která spadá pod Sun Microsystems. Knihovna implementuje JSR-231 (Java Community Request) se jménem Java Bindings for OpenGL API. To je tvořeno obálkou nad nativními OpenGL knihovnami, ke kterým lze s použitím této knihovny přímo přistupovat. Od verze Java SE 6.0, je možné používat JOGL spolu s Java2D a využít možnosti 3D v jakékoli Swing kom-
22
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
ponentě. Vývojář zvyklý pracovat s OpenGL se bude hned orientovat, protože veškeré pojmenování zůstalo a zůstal i procedurální koncept. V ArtiSynthu byla použita verze JOGL 1.0.0. Distribuce obsahovala i nativní knihovny pro různé operační systémy. Alternativu k JOGL tvoří Lightweight Java Game Library (LWJG). Narozdíl od JOGL, zahrnuje LWJG podporu také pro zvuk (OpenAL) a herní zařízení.
2.7.4
Probes
Probes, nebo-li sondy, je mechanismus ArtiSynthu pro čtení a zápis proudu dat, kterými je model řízen, respektive které model produkuje. Sondy tedy umožňují buď číst nebo zapisovat časově závislá data. Tato data (samply, uzly – knots) ale nejsou spojitá a z toho důvodu sonda zajišťuje jejich interpolaci. Typ interpolace lze vybrat ze tří již připravených – skokovou, lineární a kubickou. Sondy lze vizualizovat v uživatelském rozhraní, což uživateli umožní interaktivně měnit její parametry.
Obrázek 2.9: UML diagram sond Údaje ze sondy se vizualizují v okně s časovou osou, jak lze vidět na obrázku 2.10 vpravo. Každá sonda je aktivní jen ve specifickém časovém úseku a údaj začátku a konce je tedy jedním z jejich základních parametrů. Při vizualizaci se zobrazí jednotlivé uzly čtverečkem a tenkou čárou mezi nimi je znázorněna interpolace. Aby sonda mohla data zobrazovat, je nutné navázat ji na konkrétní parametr určitého modelu. Tímto navázáním řekneme, že chceme, aby byl sondou parametr modelu řízen nebo čten. Jedna sonda může řídit nebo číst jeden nebo více parametrů. Na obrázku 2.9 lze vidět hierarchii sond a využití dědičnosti Nejdůležitější třídy jsou NumericInputProbe a NumericOutputProbe, které se dají použít pro zobrazení vstupních, respektive výstupních numerických dat z modelu. Další informace lze najít v dokumentaci ve verzovacím systému ArtiSynthu.
2.7.5
Uživatelské rozhraní
Uživatelské rozhraní ArtiSynthu se skládá ze dvou částí. Jednou je okno zobrazující pohled na 3D scénu a druhou částí je časová osa. Kromě těchto dvou oken, lze zobrazit u každého modelu navíc okno vlastní, o jehož vzhled se stará tvůrce modelu a může pomocí něj poskytnout speciální ovládácí prvky. 23
KAPITOLA 2. VIZUÁLNÍ SYNTÉZA TVÁŘE
Okno s OpenGL výstupem představuje hlavní ovládací prvek, který po zavření ukončí celý program. V tomto okně, které lze vidět na obrázku 2.10, lze provádět základní operace jako je načtení modelu nebo dat a dále lze se zobrazeným modelem interaktivně manipulovat. Otáčet, zvětšovat, případně pokud to model podporuje, tak přímo měnit jeho specifické vlatnosti, po kliknutí na nějakou jeho aktivní část. Okno s časovou osou obsahuje ovládací prvky, pomocí kterých lze spustit nebo zastavit simulaci a dále obsahuje seznam stop (tracks), které představují sondy (probes) v modelu. Sona může zobrazovat buď vstupní data, která za běhu mění parametry modelu, nebo výstupní data, která model za běhu generuje. Oba dva případy lze vidět na obrázku 2.10 vpravo.
Obrázek 2.10: ArtiSynth GUI; vlevo OpenGL výstup; vpravo: časová osa se zobrazenou vstupní (nahoře) a výstupní sondou
24
Kapitola 3
Realizace mluvící hlavy 3.1 3.1.1
Použité algoritmy Modelování koartikulace
Velká část systémů pro vizuální syntézu mluvené řeči se musí potýkat s problémem, jak do sebe prolnout jednotlivé stavy, které reprezentují daný foném nebo vizém v jeho konečné podobě. Vizémem (z anglického „vizemeÿ) označujeme jednotlivé rozlišitelné unikátní nastavení artikulačních orgánů tváře. Vizém je tedy viditelná jednotka řeči, stejně jako je foném slyšitelná jednotka řeči. Koartikulace je vzájemné ovlivňování hlásek v jejich spojité promluvě. Hlásky se mohou ovlivňovat až tak, že některé zaniknou. V promluvě se tak děje často u souhlásek, které jsou výrazně ovlivněny nebo úplně potlačeny samohláskami. Koartikulace je složitý proces, který se algoritmicky těžko postihuje. Záleží totiž na mnoha faktorech, jakým je např. pravý a levý kontext, který může ovlivňovat cílovou hlásku i několik hlásek nazpět nebo naopak dopředu. Dále na jazyku, do které promluva spadá. Každý jazyk má své specifické charakteristiky, kterými se odlišuje od ostatních. V některých jazycích se například projevuje výrazněji pravý nebo naopak levý kontext (Cohen – Massaro, 1993, s. 4). Dalším problémem je, že neexistuje univerzální návod pro správnou koartikulaci. Záleží také velice na rychlosti promluvy. Dále bude popsána metoda výpočtu koartikulace, kterou vyvinuli Cohen – Massaro (1993). Metoda spočívá v dopočítání průběhu cílového nastavení daného fonému v závislosti na čase, pravém a levém kontextu a na několika parametrech, které musí být správně natrénovány. Cílovým stavem (target) se myslí poloha bodu nebo bodů tváře v prostoru, který může být dán například fonémem uloženým v databázi. Metoda s použitím parametrů α, Θ+ a Θ− potom dopočítá tzv. dominanci, což je vlastně číslo, které říká, jak moc se cílový stav projeví. Grafický průběh lze vidět na obrázku 3.1. V našem případě modelu mluvící hlavy, je cílový stav (target) představován násobičem hlavních komponent (bude vysvětleno později). Pro každý násobič v každé sekci je tedy tedy spočítána dominance. Pokud stav představuje foném, musí tedy obsahovat navíc u každé hlavní komponenty všechny parametry potřebné pro výpočet. Těmito parametry jsou Θ− , Θ+ , které udávají ovlivnění dominance zpětnými, respektive dopřednými hláskami, a parametr α, který udává velikost ovlivnění. 25
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.1: Ukázka výstupu při změně parametru Θ. Na horním grafu je vidět průběh dominance pro dvě realizace cíle, které jsou vidět na dolním grafu. Obrázek převzat z (Cohen – Massaro, 1993) Vzorce pro výpočet dominance, převzaté z (Cohen – Massaro, 1993, s. 2). Vzorec pro výpočet dominance pro τ ≥ 0 Dsp = αsp e−Θsp− |τ | Vzorec pro výpočet dominance pro τ < 0 Dsp = αsp e−Θsp+ |τ | Vzorec pro výpočet τ τ = tc
sp
+ t0
sp
−t
t označuje čas, t0 sp je offset vzhledem ke středu segmentu s, který má mít maximální dominanci. Vzorec pro výpočet tc sp , označující střed segmentu durations (3.1) 2 Vzorec pro výpočet výsledného stavu pomocí váženého průměru přes všechny parametry tc
sp
= tstart s +
PN Fp (t) =
3.1.2
s=1 (Dsp (t) × Tsp ) PN s=1 Dsp (t)
(3.2)
Stav modelu a analýza hlavních komponent
Stav tváře byl navržen tak, aby se dal reprezentovat co nejmenším objemem informací a přitom byla zachována možnost dobře aproximovat všechny možné výrazy. Pro tento účel byla tvář rozdělena na jednotlivé části nazvané sekce. Na každou sekci poté byla aplikována analýza hlavních komponent1 (PCA). Tímto 1 Úvod
do PCA lze nelézt v (Lindsay – Smith, 2002)
26
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
způsobem bylo dosaženo plně nezávislého pohybu různých částí tváře. Redukované hodnoty stavu dále budeme nazývat jako násobiče hlavních komponent (PC násobiče). Označení pochází z anglického „PC multipliersÿ. Každá sekce byla reprezentována množinou bodů v prostoru, které byly vybrány tak, aby pomocí nich bylo možné simulovat co největší škálu pohybů (Krnoul – Zelezny, 2004). Tyto odpovídaly svým umístěním některému místu na povrchu tváře. Na hlavě byly zvoleny následující sekce: rty, brada, jazyk, oči a obočí. Pro každou sekci byl vybrán z PCA různý počet hlavních komponent.
Obrázek 3.2: Přehled kontrolních bodů modelu a obrázek 3D sítě. Sekce lips
Tabulka 3.1: Přehled sekcí, jejich bodů a počet hlavních komponent (PC) V tomto návrhu odpovídaly body z každé sekce jednomu splinu. Není to ale podmínkou a je možné vytvořit sekce se sdílenými body atp. Všechny spliny, které interpolují body z dané sekce lze vidět na obrázku 3.2. Data a provedená PCA analýza, byla získána z oddělení umělé inteligence na katedře kybernetiky. PCA redukuje naměřená data takovým způsobem, aby
27
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
zachovala jen složky s největší variancí. Pro dobré fungování metody je tedy třeba mít dostatečné množství kvalitních dat.
3.1.3
Interpolační algoritmus
Pro realističtější ovlivnění husté 3D sítě, bylo nutné kontrolní body interpolovat křivkou, která by poté sama zajišťovala ovlivnění geometrie. Interpolaci kontrolních bodů je možné vidět na obrázku 3.2. Bylo nutné vybrat takovou metodu, která by procházela zadanými body a dávala pěkné výsledky. Těmto kritériím odpovídá kubický spline, který zajišťuje plynulost C 2 . To znamená, že první dvě derivace této křivky jsou spojité funkce. Kromě kubického splinu existuje množství dalších modifikací. Například b-spline, který ovšem neprochází zadanými body a místo toho je využívá jako řídící body. Podobně fungují i NURBS křivky, které se dnes v počítačové grafice hojně používají. Spline je křivka, skládající se z množiny polynomů třetího stupně. Pro nalezení koeficientů těchto polynomů, je třeba řešit soustavu lineárních rovnic, jejíž předpis je ve vzorci 3.5. Obecný předpis polynumu lze vidět ve vzorci 3.6. V případě kubického splinu leží polynom vždy mezi dvěma interpolovanými body. V těchto bodech začíná a končí a první a druhé derivace končícího a začínajícího polynomu si je rovna. Zde uvedený postup výpočtu je založen na algoritmu, popsaném v (Prykryl – Brandner, 2000, s. 45). Další informace o spline křivkách lze najít například v (Zara et al., 2004, s. 193). Vstup do algoritmu tvoří jednotlivé body f (xi ), i = 0, . . . , N , které chceme interpolovat a které mohou být vektory obecně v n-dimenzionálním prostoru. Prvním krokem je spočítání vektoru vzdáleností všech bodů v prostoru – tedy euklidovy vzdáleností mezi sousedními body. Euklidova vzdálenost sousedících bodů:
hi =
q
0
(f (xi+1 ) − f (xi )) × (f (xi+1 ) − f (xi )) ,
i = 0, 1, . . . N
(3.3)
Dále spočítáme vzdálenosti od prvního bodu. Tyto vzdálenosti tvoří jakousi imaginární osu x. Můžeme tedy psát f (xi ) = f (bi ), protože xi neznáme. Označení písmenem b, pochází z anglického breaks.
b0 = 0 bi = bi−1 + hi−1 ,
i = 1, 2, . . . N
Spočtení parametrů pro soustavu rovnic 3.5 hi−1 hi−1 + hi = 1 − λi−1
λi−1 = µi−1
gi−1 =
6 hi−1 + hi
f (xi+1 ) − f (xi ) f (xi ) − f (xi−1 ) − hi hi−1
28
,
i = 1, . . . , N − 1
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Dále je nutné nastavit počáteční podmínky podle toho, zda je spline uzavřený nebo otevřený. Pokud je otevřený, položíme druhé derivace rovné nule a dostáváme přirozený spline. Pokud je uzavřený, musíme zajistit, aby byl přechod plynulý a upravit příslušné koeficient M0 , M1 a g1 , gN −1 . Přechod bude plynulý, pokud si budou odpovídat druhé diference v počátečním a koncovém bodě. Druhou diferenci lze spočítat podle (Prykryl – Brandner, 2000, s. 122). f (x + h) − 2f (x) + f (x − h) h2 A určíme počáteční podmínky f 00 (x) =
A vyřešíme soustavu rovnic. Lze ji řešit optimalizovaným algoritmem, protože se jedná o pásovou matici. Pomocí získaných M0 , . . . MN vypočítáme koeficienty pro polynomy, které jsou ve tvaru ϕi (x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3
(3.6)
ai = f (xi ) f (xi+1 ) − f (xi ) 2Mi + Mi+1 hi − hi 6 ci = 0.5Mi Mi+1 − Mi di = 6hi bi =
Nyní máme, pro každý úsek mezi vstupními body, k dispozcici jeden polynom se známými parametry a je možné interpolovat požadovaná data. Pro interpolovaný bod je jen nutné najít vhodný polynom. K tomu lze užít vektor b, kde jsou uloženy vzdálenosti kontrolních bodů. Vybereme takový polynom, do jehož intervalu interpolovaný bod patří.
29
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
3.2
Provedená vylepšení ArtiSynthu
Kromě drobných oprav chyb, bylo do ArtiSynthu při práci na modelu přidáno několik nových částí. Jednalo se vždy o obecnější záležitosti, ze kterých mohou těžit ostatní vývojáři. Konkrétně se jedná o integraci sestavovacího systému Ant, implementaci numerického algoritmu pro výpočet n-dimenzionálních splinů a vytvoření balíčku pro čtení a zápis prostorových dat.
3.2.1
Sestavovací systém Apache Ant
ArtiSynth si klade za cíl být multiplatformní nástroj, ale přesto využíval k sestavování projektu pouze příkazu make, který je běžně dostupný jen na operačním systému GNU/Linux. Kromě toho nebylo možné pomocí make vytvořit standardní balík pro distribuci v Java archive (.jar) formátu. To mělo zase za následek, že bylo spuštění hotového programu na novém počítači zdlouhavější a nebylo možné použít technologie jako Java Web Start, jejíž použití se již plánuje. Apache Ant je standardní a uznávaný sestavovací nástroj pro Javu, který je volně šiřitelný a spravovaný Apache Software Foundation. Samotný Apache Ant je napsaný v Jave a je tudíž přenositelný na všechny platformy, pro které existuje běhové prostředí Javy. Ant je také možné dále rozšiřovat o vlastní funkcionalitu. Pro integraci Antu do ArtiSynthu bylo zapotřebí napsat soubor, popisující požadovaný sestavovací proces, který je standardně nazýván build.xml. Soubor se skládá z jednotlivých cílů (targets), které lze z vnějšku spouštět. Pro účely ArtiSynthu bylo vytvořeno šest standardních cílů: clean, compile, distrib, help, jar a javadoc. Nejkomplexnější cíl distrib v sobě zahrnuje všechny ostatní kroky. Nejdříve se vyčistí všechny soubory, které mohly zůstat z minulého sestavování, následně se celý ArtiSynth zkompiluje a zabalí do Java archivu a vygeneruje se dokumentace s pomocí Javadocu. Nakonec se .jar soubor i dokumentace zabalí do zip souboru a distribuce je tím připravena. Další vlastností Antu, je možnost konfigurovat průběh sestavování pomocí nastavení, uvedených ve zvláštním souboru. Těch může být několik, ale základní se standardně nazývá build.properties. Soubor je ve standardním formátu, jaký je používán pro ResourceBundly2 . Každý řádek tedy obsahuje vlastnost a její hodnotu. Tímto způsobem lze například jednoduše změnit verzi nebo používané knihovny a není třeba procházet mnohem delší a složitější build.xml. Výhoda těchto „propertiesÿ souborů spočívá také v jejich možnosti překrývání, respektive spíše nepřekrývání. Vlastnost, která je jednou nadefinovaná, si udrží svojí hodnotu, i kdyby existovala v dalších konfiguračních souborech. Toho bylo využito pro definici cesty ke knihovnám. Ve verzovacím systému byl vytvořen obecný „propertiesÿ soubor s hodnotami jako verze, název programu a dalšími. Pokud chce vývojář testovat chování při změně těchto výchozích parametrů, měl by si vytvořit soubor build-dev.properties. V něm může překrýt jakoukoli vlastnost z build.properties a tato se projeví při sestavování, protože v build.xml je soubor s konfigurací vývojáře načítán jako první. Pro správnou funkci sestavování by si každý vývojář měl překrýt proměnnou libraries a zadefinovat do ní správně cestu ke všem potřebným knihovnám. 2 ResourceBundle je označení standardního souboru s lokalizací. Více na http://java.sun. com/docs/books/tutorial/i18n/resbundle/propfile.html
30
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
3.2.2
Implementace algoritmu pro výpočet splajnu
Protože ArtiSynth neobsahoval numerický algoritmus pro výpočet interpolace pomocí n-dimenzionálního splajnu, byl tento algoritmus implementován do balíčku artisynth.core.numerics. Požadavkem na implementaci byla rychlost a obecná použitelnost v celém ArtiSynthu. UML diagram třídy s veřejnými metodami, lze vidět na obrázku 3.3.
Obrázek 3.3: UML diagram třídy řešící výpočet n-dimenzionálního splinu Objekt, který realizuje výpočet splinu je třeba nejdříve naplnit daty, které se mají interpolovat. K tomu lze použít přetížené metody setInputData(). Data mohou být n-dimenzionální a zadávají se standardně jako pole polí, kde první index značí index pole, které obsahuje souřadnice bodu. Data jsou tedy tvořena jednotlivými body (knots), přes které se má interpolovat. Po nastavení vstupních dat je nutné provést výpočet parametrů rovnic pro interpolaci pomocí metody recompute(). Tento výpočet stačí provést jednou pro zadaná data a poté je možné interpolovat jakékoli množství bodů pomocí interpolate() metod.
3.2.3
Balíček pro čtení a zápis prostorových dat
Při tvorbě modelu hlavy bylo nutné načítat geometrická data z X3D formátu. Datová struktura, do které měla být načtená geometrická data nahrána byla součástí ArtiSynthu, a proto bylo vhodné vytvořit jeho rozšíření, které by geometrickou datovou strukturu bylo schopné naplnit z jakéhokoli datového formátu. Po diskuzi vznikl balíček maspack.geometry.io, který funkcionalitu zajišťuje pomocí rozhraní. Ty lze vidět na obázku 3.4. Návrh logiky fungování byl proveden tak, aby byl jednoduchý a snadno rozšiřitelný o další formáty. Při konstrukci byl využit vzor továrna (Bloch, 2002; Wikipedia, 2007c). Balíček se skládá z výčtu formátů, které jsou podporovány (GeometryFileFormat), dále z rozhraní specifikující metody pro načítání (PolygonalMeshReader) a ukládání (PolygonalMeshWriter) a nakonec z továren (PolygonalMeshWriterFactory, PolygonalMeshReaderFactory), která vytváří instance rozhraní (čtečku nebo zapisovač) pro daný formát. Pro účely modelu hlavy byla provedena implementace jen pro čtení formátu X3D s omezenou funkčností. Formát X3D je totiž poměrně komplikovaný a im31
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.4: UML diagram tříd pro balíček maspack.geometry.io plementovat všechny jeho vlastnosti by si vyžádalo mnoho času. Změny by totiž bylo nutné provést i v používaných a sdílených částech ArtiSynthu, na kterých jsou závislé ostatní modely. Jedná se hlavně o možnost reprezentovat hierarchickou geometrii. Úpravy ArtiSynthu, které by toto měly zajistit se plánují do budoucna.
3.3
Konfigurační soubory a vstupní data
Vstupní data pro model mluvící hlavy jsou tvořeny pěti soubory. Jedná se o geometrii modelu hlavy ve formátu X3D a o další čtyři XML soubory s konfigurací kontrolních bodů, PCA, kontrolních objektů a stavů. Vrstva starající se o konfiguraci mluvící hlavy byla navržena tak, aby se při změně konfiguračních souborů, nemuselo zasahovat do samotné logiky mluvící hlavy. Pro tento účel byl vytvořen objekt Context (kontext), který využívá návrhový vzor jedináček (singleton) (Bloch, 2002) a funguje jako prostředník mezi objekty s aplikační logikou mluvící hlavy a konfiguračními soubory. Jako úložný formát pro konfigurační soubory byl zvolen XML a to ze dvou důvodů. Jednak kvůli své samopopisné schopnosti a jednak kvůli univerzálnosti. V budoucnu se tedy mohou stejné konfigurační soubory použít bez problémů v jiné aplikaci. Při navrhování struktury souborů jsem se snažil udělat soubory dostatečně obecné a vyhnout se tak nutným úpravám v budoucnu. Soubory z části odpovídají datovým strukturám v programu, ale to je jen souhra náhod a ne záměr. Při jejich načítání se neplní datové struktury přímo, ale procházejí konfigurační vrstvou, kde jsou z konfiguračních dat tyto objekty sestavovány. Pro všechny vlastní konfigurační soubory byla vytvořena XSD schémata3 pro zajištění konzistence a před samotným načtením dat se provádí nejprve jejich 3 XSD (XML Schema Definition) je instance XML Schematu, definujícího omezení na strukturu a data ukládaná do XML. Jazyk XML Schema je specifikovaný World Wide Web Consorciem a disponuje silnějšími možnostmi, než starší DTD (Document Type Definition). Další informace lze najít na http://www.w3.org/XML/Schema
32
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.5: UML diagram tříd znázorňující konfigurační logiku validace. XSD soubory jsou obsaženy ve zdrojových kódech ArtiSynthu.
3.3.1
3D model
Pro uložení prostorových dat modelu hlavy byl zvolen formát X3D. Zejména kvůli své otevřenosti a tedy snadné dostupnosti. X3D je standard pro ukládání 3D modelů vyvíjený Web3d konsorciem. X3D je nástupcem známého VRML97 a pro uložení dat lze mimo jiné použít XML. Web3d konsorcium doporučuje používat X3D namísto VRML97. Ve starší verzi mluvící hlavy byl model uložen ve VRML97 a tak bylo nutné provést konverzi. Ta byla provedena pomocí konvertoru Vrml97ToX3dNist4 , vyvinutého v NIST. 3D model uložený v XML souboru ve formátu X3D musí obsahovat šest prostorových objektů a dále informace o mapování textur. Objekty musí být pojmenovány podle předem dohodnutých pravidel, aby na ně z programu bylo možné přistupovat a dále s nimi pracovat. Geometrie objektu je ve formátu X3D uložena za pomocí dvou struktur. Pole vrcholů – 3D bodů a pole trojůhelníků, které jsou z těchto vrcholů tvořeny. Každý trojúhelník v poli obsahuje tři indexy do pole 3D bodů, které tvoří jeho vrcholy. Každý X3D objekt má navíc přiřazen materiál, který udává vlastnosti jako barvu odraženého světla, intenzitu nesměrového globálního osvětlení, intenzitu a barvu odlesku a průhlednost. Kromě vlastností materiálu může definice objektu obsahovat informace o textuře a jejího UV mapování. Mapovací informace přiřazují každému vrcholu objektu určitý bod na 2D obrázku. Textura pro použití v OpenGL musí být čtvercová a délka její strany v pixelech musí být mocni4 http://ovrt.nist.gov/v2_x3d.html
33
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Název tvář levé oko pravé oko jazyk dolní patro zubů horní patro zubů
označení face lefteye righteye tongue lowerteeth upperteeth
Tabulka 3.2: Přehled nutných objektů v X3D nou dvou. Pro určení pozice bodu při UV mapování se nepoužívá souřadnice vyjádřená v pixelech, ale hrana textury se vždy normuje na délku jedna. Tímto způsobem se dají jednoduše vyměňovat různě detailní textury a mapování zůstane zachováno.
3.3.2
Kontrolní body
Nejjednodušším konfiguračním souborem je soubor s množinou kontrolních bodů. Kontrolní body jsou prostorové souřadnice, ke kterým je přiřazen název. Na tento název se pak odkazuji v ostatních konfiguračních souborech. Každý kontrolní bod koresponduje s konkrétním místem na povrchu modelu hlavy. Pro mluvící hlavu bylo nadefinováno 28 kontrolních bodů, umístěných na přesně určených místech modelu hlavy. Z 28mi bodů připadá 8 na rty, 3 na bradu, 3 na jazyk, 4 na každé oko a 3 na každé obočí. Přehled lze vidět v tabulce 3.1. Ukázka ze souboru kontrolních bodů control-points.xml: <point name="lipsCornerLeft">-0.02513 -0.005987 0.1064 <point name="lipsCornerRight">0.02286 -0.005619 0.1063
3.3.3
PCA
Konfigurační soubor pro PCA obsahuje transformační matice pro všechny sekce, na které byla PCA použita. Navíc obsahuje informaci o mapování výsledků transformace na konkrétní kontrolní body. Každá sekce odpovídá určité množině kontrolních bodů, na které bylo rozumné PCA aplikovat. Ukázka ze souboru mapování PCA pca-mapping.xml: <section name="tongue"> 0.22 0.33 0.835; 0.47 0.85 -0.37; . . . 34
Soubor s definicí kontrolních objektů definuje pro každý kontrolní objekt sadu parametrů, která se v modelu využívá. Těmito parametry jsou název a typ objektu, zóna ovlivnění, zóna exkluzivního ovlivnění, počet interpolačních bodů, 3D objekty které se mají ovlivňovat a seznam kontrolních bodů, kterými je objekt řízen. Každý bod v seznamu kontrolních bodů může mít nastavenou svou vlastní oblast ovlivnění i exkluzivního ovlivnění. Mezi různými hodnotami ovlivnění se poté provede lineární interpolace. Ukázka ze souboru kontrolních objektů control-objects.xml:
3.3.5
Stavy
Stavy tváře, představující fonémy nebo výrazy jsou uloženy v samostatném souboru. Informace o stavu obsahuje název stavu, typ stavu a seznam sekcí. Každá sekce potom obsahuje příslušné násobiče hlavních komponent. Stav může být dvojího typu. Buď foném nebo výraz. Rozdělení na tyto dva typy bylo dáno potřebou ukládat pro foném doplňkové informace, které jsou později využity pro výpočet koartikulačních jevů. Ukázka ze souboru stavů states.xml: <states> <section name="lips" 35
Obrázek 3.6: Znázornění interakcí mezi modelem, uživatelem a ArtiSynthem Implementace celého modelu je značně rozsáhlá a čítá přes 60 tříd. Proto zde uvedu jen základní principy, podstatné pro pochopení fungování modelu. Detaily lze dohledat na přiloženém CD, které obsahuje Javadoc dokumentaci. Model mluvící hlavy nazvaný „Musslap Headÿ je na ArtiSynth pevně navázán ve dvou bodech. Jednak využívá objekt pro reprezentaci a renderování 3D dat a jednak musí být navázaný na plánovač simulačního jádra třídou modelu. Na obrázku 3.6 je znázorněno navázání na ArtiSynth a interakce s uživatelem. Jak model mluvící hlavy, tak ArtiSynth dává uživateli k dispozici ovládací grafické prvky. 36
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
3.4.1
Stav – parametrizace
Obrázek 3.7: UML diagram tříd představující stav modelu; čárkovaná čára odděluje rozhraní od implementace Stav tváře, nebo-li polohy bodů trojrozměrné sítě tvořící model, je plně dán hodnotou násobičů hlavních komponent (PC násobičů) všech definovaných sekcí tváře. Tento stav je obsažen v aplikační třídě PCState, který je znázorněn na obrázku 3.7. Kromě samotného pole sekcí s příslušnými hodnotami PC násobičů, obsahuje ještě pojmenování stavu a dvě metody pro ulehčení výběru konkrétní sekce. Tento základní stav je dále specializován pomocí rozhraní na dva základní typy: výraz a foném. Rozhraní výrazu Expression zde slouží jen jako tzv. marker, pro označení, že daný stav je výraz a ne foném. Foném, kterému odpovídá třída Phoneme na rozdíl od výrazu obsahuje několik dalších informací a specializací. Ta se týkájí překrytí metod pro výběr sekcí, které vrací sekce i s informací o koartikulaci. Foném taktéž obsahuje informaci potřebnou pro jeho mapování na běžný text. Tuto informaci využívá preprocesor, který převádí běžný český text na sekvenci fonémů. Stavy jsou implementovány ve třídách StateImpl a PhonemeImpl. Po spuštění modelu jsou k dispozici všechny dostupné stavy z konfiguračních souborů prostřednictvím továrny na stavy StateFactory. Tu lze získat z kontextu a kdekoli s ní pracovat. Prostřednictvím továrny lze získat buď všechny dostupné stavy nebo si vyžádat pouze konkrétní stav k zadanému jménu. Kromě stavů lze z továrny získat také počáteční offset pro multiplikátory hlavních komponent, který je třeba pro výpočet konkrétních poloh bodů 3D sítě. Implementace továrny je zde provedena pro použití s XML konfiguračním souborem, ale vzhledem k použití rozhraní a kontextu je možné implementaci v případě potřeby zaměnit třeba za továrnu, která bude stavy vybírat z databáze nebo je získávat úplně jiným způsobem.
37
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
3.4.2
Plánovač
Plánovač na svém vstupu přiřazuje čas stavům (výrazům nebo fonémům) a na svém výstupu vrací pro konkrétní čas hodnotu všech PC násobičů. Stavem je myšlen buď výraz nebo foném, kterému odpovídá množina PC násobičů. Plánovač je specifikovaný svým rozhraním.
Obrázek 3.8: UML diagram plánovače; čárkovaná čára odděluje rozhraní od implementace Plánovač se skládá ze dvou stop, které má za úkol „mixovatÿ. Jedna stopa je určena pro výrazy a druhá pro fonémy. Plánovač je taktéž místem, které se integruje na GUI za pomocí sond a umožňuje uživateli měnit časově proměnné parametry tváře (PC násobiče). Sonda je obsažena v každé stopě pro každou sekci, takže uživatel vidí dvojnásobné množství stop, než je definováno sekcí. Data ve stopách lze uživatelsky příjemným způsobem editovat. Obě stopy jsou taktéž specifikovány svým rozhraním. Tvar určitého fonému je závislý na vyjadřované emoci a z tohoto důvodu musí být stopě plánující fonémy stopa s výrazy zpřístupněna. Uživatel plánovače nemá na stopy přímý přístup, ale může použít metody plánovače pro přidání výrazu nebo fonému, který se postará o umístění do korektní stopy. Hodnotu PC násobičů lze z plánovače získat v podobě reference na pole. Řádky pole obsahují jednotlivé sekce a sloupce jednotlivé PC násobiče příslušné sekce. Kontrakt, který specifikuje rozhraní pro metodu vracející pole PC násobičů předepisuje, že řádky s jednotlivými sekcemi musí být seřazeny podle jména sekce. Seřazením si udržujeme informace o umístění sekce, aniž by to bylo v sekci samotné explicitně řečeno. To nám umožní použít jednoduchá pole. Implementace stopy pro výrazy je prostá. Pouze skládá jednotlivé výrazy za sebe a pomocí sondy jsou tyto výrazy interpolovány.
38
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Koartikulace Jednotlivé stavy, z kterých se v modelu skládá promluva jsou diskrétní v čase. Pro plynulost a srozumitelnost, je zapotřebí provést buď interpolaci nebo použít jinou metodu, lépe aproximující skutečné chování řečníka – koartikulaci. Její průběh záleží na levém i pravém kontextu, který musí být uvažován často až za hranice slova.
Obrázek 3.9: Ukázka časové osy v GUI modelu mluvící hlavy, která zobrazuje průběh PC násobičů rtů, při použití kubické interpolace (nahoře) a nebo koartikulace Implementace stopy pro fonémy zajišťuje výpočet koartikulace pomocí Cohen a Massaro přístupu, který byl vysvětlen v kapitole 3.1.1. Implementace pracuje tak, že spočítá průběh stavu pro zadanou promluvu a jeho průběh naplánuje s malým krokem do zvláštní stopy. Tento průběh je pak navíc za pomoci sondy lineárně interpolován. Zobrazení průběhu PC násobiču při použití koartikulace a nebo kubické interpolace je možné vidět na obrázku 3.9.
3.4.3
Dekodér hlavních komponent
Obrázek 3.10: Průběh zpracování dat v jednom cyklu vykreslovací smyčky Dekodér hlavních komponent ze vstupu, v podobě hodnot multiplikátorů hlavních komponent, spočítá výslednou absolutní pozici kontrolních bodů. Vstupem dekodéru jsou hodnoty multiplikátorů všech sekcí. Tyto hodnoty jsou ale relativní, to znamená, že představují pouze pohyb bodu, tedy rozdíl mezi jeho klidovým – počátačním stavem a novým stavem. Dekodér si tedy musí pamatovat počáteční pozice kontrolních bodů, ke kterým přičítá pohyb. Dekodér navíc obsahuje korekci počáteční pozice v podobě offsetu, který se přičítá ke každé vypočtené poloze. Toho lze využít k jemnému doladění počáteční pozice. 39
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Pohyb je zde myšlen ve smylu rozdílu mezi počátečním stavem a novým stavem. Pokud je tedy vstup v podobě PC násobičů nulový, je i výstup nulový a kontrolní body jsou ve výchozí pozici. Dekodér je stejně jako všechny hlavní komponenty mluvící hlavy specifikován svým rozhraním. Implementace dekodéru zajišťuje průměrování kontrolních bodů, pokud je bod ovlivňován více sekcemi. Kontrolní body jsou vráceny jako reference na pole. Každý řadek odpovídá jednomu bodu a každý rádek tedy obsahuje hodnoty pro x, y a z souřadnici v prostoru. Řádky jsou seřazeny takovým způsobem, aby názvy příslušných kontrolních bodů v řádcích, odpovídaly abecednímu pořadí názvů kontrolních bodů. Pro samotné dekódování sekcí používá dekodér pomocný objekt, představující PCA na dané sekci, který provede transformaci souřadnic. Jeden kontrolní bod tedy může být bez problémů řízen více sekcemi. Typicky se to ale nestane, protože jedna PCA sekce odpovídá jednomu řídícímu objektu a řídící objekty nesdílejí kontrolní body. Tento případ by mohl například nastat, pokud by dva řídící objekty na sebe v některém bodě navazovaly.
3.4.4
Kontrolní objekty
Kontrolní objekty společně se správcem kontrolních objektů ovlivňují samotný vzhled. Kontrolní objekt má velice obecné rozhraní (ControlObject), se kterým umí pracovat správce kontrolních objektů. Svou funkcí odpovídá kontrolní objekt svalu nebo kosti, která působí na pokožku tváře. Kontrolní objekty mohou mít různé druhy vstupů i výstupů, tedy různý způsob fungování. Každý kontrolní objekt si vytváří kopii vrcholů 3D sítě (ObjectControlledVertex) a do nich si ukládá informace o síle jeho ovlivnění. Správce kontrolních bodů poté kombinuje dílčí pohyby od všech kontrolních objektů ovlivňujících daný vrchol a přičte je ke klidové hodnotě vrcholu. V programu byl implementován kontrolní objekt SplineControlObject, který na svém vstupu dostane množinu kontrolních bodů, které interpoluje kupickým splinem. Po spuštění se poté spline pohybuje podle kontrolních bodů a ovlivňuje své blízké okolí svým vlivem, který se vzdáleností klesá. Při spuštění programu proběhne nejprve inicializace kontrolního objektu, která se skládá ze dvou kroků. Nejprve se spline „otiskneÿ do 3D sítě. Otisk musí splňovat dvě podmínky. Otisk musí na síti tvořit spojitou cestu a musí být splinu co nejblíže. Pro splnění těchto požadavků, byl využit algoritmus Dijkstra pro nalezení nejkratší cesty v síti (Holenda – Ryjacek, 2000). Po otisknutí se prochází všechny vrcholy cesty a z každého se do jeho okolí zanese informace o síle ovlivnění aktuálním vrcholem cesty. Síla ovlivnění klesá se zvyšující se vzdáleností po hranách 3D sítě podle následujícího vzorce. cos((x/z)π) + 1 2 Proměnná z udává oblast ovlivnění od kontrolního bodu a proměnná x vzdálenost po síti. Proměnná w je výsledná váha v bodě. Oblast ovlivnění lze u každého kontrolního bodu zadat samostatně. Pokud síla ovlivnění klesne pod určitou mez, přestane se z daného vrcholu informace o ovlivnění šířit. Protože se ovlivnění šíří ze všech bodů otisknuté cesty, ovlivňuje každý bod v okolí cesty několik řídících bodů. Implementace w=
40
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.11: UML diagram zjednodušeně zachycující rozhraní a třídy balíku kontrolních objektů rozhraní ObjectControlledVertex nazvaná BaseObjectControlledVertex pracuje tak, že si setřídí sílu ovlivnění od největší po nejmenší a podle nastavené kvality bere při výpočtu v potaz jenom N nejdůležitějších řídících bodů. Počet bodů, které bere objekt v potaz lze nastavit metodou setSmoothness(). Výsledná poloha se potom spočítá jako vážený průměr ovlivnění z uvažovaných kontrolních bodů. P (b · wi ) b= P (3.7) (wi ) Proměnná b značí vrchol – bod sítě a w váhy od jednotlivých bodů kontrolního objektu.
3.4.5
Ovlivnění geometrie
Ovlivnění 3D sítě modelu hlavy je posledním krokem k vizuální změně modelu. Tuto činnost zajišťuje manažer kontrolních objektů (ControlObjectsManager), který řeší jejich interakce, spravuje všechny kontrolní objekty a zastřešuje jejich funkce. Před samotnou prací manažeru kontrolních objektů probíhá inicializace, která může řešit kolize kontrolních objektů. Řešení kolizí lze řešit pomocí parametru exkluzivního ovlivnění, který je uváděn společně s běžným ovlivněním v konfiguračním souboru. Stejně jako běžné ovlivnění, může být i exkluzivní ovlivnění nastaveno pro každý kontrolní bod kontrolního objektu samostatně. Exkluzivní zóna představuje přichycení pokožky ke svalu nebo kosti. V takovém 41
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.12: UML diagram s třídou správce kontrolních objektů místě je pokožka řízena pouze daným svalem respektive kostí a další objekty by na ní neměly mít vliv. Navíc by tato oblast neměla být prostupná pro šíření vlivu z jiného kontrolního objektu. Po inicializaci už může probíhat samotné ovlivňování od kontrolních bodů. Nejprve se tedy přečte hodnota PC násobičů z plánovače, ty vstupují do dekodéru, výstup dekodéru jde do kontrolních objektů, ty ovlivní své virtuální 3D sítě a následně je z virtuálních 3D sítí spočten vážený průměr a přičten ke klidové hodnotě 3D sítě modelu hlavy.
3.4.6
Předzpracování textového vstupu
Obrázek 3.13: UML diagram tříd: textový preprocesor Program umožňuje uživateli zadat vstupní text, který hlava následně „řekneÿ. Pro správné fungování bylo třeba vyřešit předzpracování vstupního textu, o kterém se předpokládá, že je v českém jazyce. Problematika předzpracování textu, ať už pro hlasovou nebo vizuální syntézu, je poměrně rozsáhlá. Je potřeba vzít v potaz například konverzi čísel, dat, jednotek, zkratek a cizích slov na fonémy. Základní funkcí textového preprocesoru je tedy převést posloupnost písmen na posloupnost fonémů. Pro zajištění funkcionality textového preprocesoru bylo navrženo rozhraní, které lze vidět na obrázku 3.13. Cílem této práce ale nebyl sofistikovaný textový preprocesor, a proto implementace tohoto rozhraní řeší jen základní případy. Například nahrazení mezery, zohlednění začátku a konce věty a nahrazení jednoho nebo skupiny písmen jeho příslušným fonémem. O instancializaci rozhraní se stará kontext, jak je vidět na obrázku 3.5, a proto není problém napsat novou, pokročilou implementaci a jednoduše ji začlenit do programu.
3.4.7
Uživatelské rozhraní a možnosti ovládání
Po spuštění samotného ArtiSynthu, lze model mluvící hlavy Musslap Head spustit po kliknutí na menu „Modelsÿ a vybrat model „Musslap Headÿ. Pro ovládání
42
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
modelu mluvící hlavy bylo naprogramováno vlastní ovládací okno, zpřístupňující veškeré funkce modelu, jak je vidět na obrázku 3.14 vpravo. Pomocí ovládacího panelu lze ovlinit parametry renderování a zapínat nebo vypínat jednotlivé objekty nebo vlastnosti. Příklad zapnutí zobrazení interpolačních křivek a kontrolních objektů lze vidět na obrázku 3.2. Dále lze pomocí táhel nastavovat ručně hodnoty PC násobičů a sledovat jak se změny projevují na modelu. Ručního nastavení je poté možné využít např. pro úpravy uložených fonémů. V záložce „Statesÿ jsou uloženy všechny dostupné stavy modelu (fonémy a výrazy). Nastavené hodnoty PC násobičů i předzaznamenané stavy lze jednoduše plánovat do časové osy, která je na obrázku 3.2 vidět vlevo dole. Poslední záložka nazvaná „Text inputÿ umožňuje uživateli zadat textový vstup z klávesnice a nechat si jej automaticky zaplánovat a syntetizovat. Časová osa „Timelineÿ modelu obsahuje celkem devět stop. Každá stopa odpovídá jedné sondě. První čtyři stopy jsou svázány se stopou výrazů v plánovači. Následující čtyři stopy jsou pak navázány na stopu řeči, z čehož první dvě ukazují pouhou kubickou interpolaci stavů, zatímco spodní dvě zobrazují průběh stavu po aplikaci koartikulační metody. Porovnání obou stop je lépe vidět z obrázku 3.9. Která z těchto dvou stop bude skutečně ovlivňovat stav tváře lze volit přepínačem v ovládacím panelu.
43
KAPITOLA 3. REALIZACE MLUVÍCÍ HLAVY
Obrázek 3.14: GUI modelu mluvící hlavy; vpravo je vlastní ovládání modelu mluvící hlavy
44
Kapitola 4
Shrnutí 4.1
Zhodnocení programu
Program, který je představován modelem mluvící hlavy v prostředí ArtiSynthu se skládá z více jak 60ti rozhraní a tříd. Byl navržen modulárně, a proto lze jeho jednotlivé části jednoduše přepracovat nebo vylepšit. Zdrojové kódy dodržují domluvené konvence ArtiSynthu a je odstraněna většina varování, která hlásí překladač. Kód a hlavně rozhraní jsou bohatě dokumentovaná v anglickém jazyce. Při programování byly dodržovány doporučené postupy pro vývoj Java programů a byly využity programové návrhové vzory. Pro logování byl použit Java Logging. Náročnost programu nijak nevybočuje za rámec výkonu, který nabízejí dnešní počítače PC. Program byl testován a vyvíjen na počítači s procesorem Intel Pentium M 1.7 GHz, 1 GB RAM a grafickou kartou ATI Mobility 9700, který měl dostačující výkon. Protože se jedná o Java aplikaci, jsou standardně vyšší nároky paměťové nároky a minimálně je třeba mít 512 MB RAM. Geometrická data mluvící hlavy byla převzata z oddělení umělé inteligence a byla převedana z VRML97 do X3D formátu. Pro ostatní konfigurační data byly navrženy XML soubory a jejich validace byla zajištěna pomocí XML Schema. Pro automatizovanou konverzi dat byl napsán konvertor také v jazyce Java. Pro chod programu bylo třeba implementovat algoritmus pro výpočet kubického splinu a algoritmus Dijkstra pro výpočet nejkratší cesty v grafu. První uvedený byl proveden na obecné úrovni mimo balíček modelu. Program uživateli umožňuje v reálném čase měnit všechny parametry modelu a ty poté plánovat na časovou osu. Pro plánování je možné také využít soubor předzaznamenaných stavů, jejichž parametry lze ručně editovat. Fonémy a výrazy s jejich aktuálním nastavením lze uložit do souboru. Uživateli je dále umožněno přepínat mezi syntézou řeči pomocí implementované koartikulační techniky nebo syntézou realizovanou jen pomocí prosté interpolace stavů fonémů. Uživatel má dále úplnou kontrolu nad časovým průběhem stavu tváře, kterou může z časové osy jednoduše měnit.
45
KAPITOLA 4. SHRNUTÍ
4.2
Možná vylepšení
Větší výrazový prostor Stávající model trpí malou artikulační schopností. Nelze například vytvořit příliš věrohodný úsměv nebo stáhnout koutky úst dolů. Taktéž některé hlavní komponenty nereagují s řídícími body symetricky jak by měly. Tento problém byl zřejmě způsoben zašuměnými daty, které vstupovaly do PCA. Zlepšení by bylo možné dosáhnout naměřením nových, přesnějších dat nebo ruční opravou dat stávajících. Malý výrazový prostor modelu by bylo možné vylepšit použitím více hlavních komponent z PCA. Pokud by toto nestačilo, bylo by vhodné přidat další kontrolní body. Vhodným kandidátem na umístění nového bodu jsou například tváře, které by zachytily chybějící pohyb a nafukování. Vyjadřování emocí V návrhu modelu se počítá s vyjadřováním emocí, ale to je velice omezené. Hlava artikuluje pomocí posunu kontrolních bodů od absolutní pozice. Pokud tuto pozici přemístíme, rty se nemusí dovírat nebo naopak nastane kolize geometrické sítě. Je tedy možné ručně nastavit například úsměv a nechat hlavu artikulovat promluvu, ale výsledek nebude ideální. Je zřejmé, že vizuální tvar fonému by měl záviset na aktuální emoci, kterou tvář vyjadřuje. Tento fakt je podchycen v návrhu modelu a v rozhraních. Prozatím ale nejsou k dispozici naměřená data, která by obsahovala tvary fonémů pro předem známé emoce. Taktéž není k dispozici souhrnný výčet emocí, které lze vyjádřit. Pokud by tyto dva body byly vyřešeny, je možné provést novou implementaci. Přenositelnost artikulačních dat Artikulační data, tj. pozice kontrolních bodů pro jednotlivé fonémy nejsou jednoduše přenositelné na jinak tvarované tváře. Tento nedostatek by mohl být odstraněn, zavadením relativních jednotek vzhledem k parametrům tváře. Tedy použítím stejného přístupu, který používají hodnoty FAP v MPEG-4. Věrnější koartikulace Věrnější koartikulace by bylo možné dosáhnout skutečně daty řízenou koartikulací. Tvar fonému by se mohl vybírat v závislosti na jeho okolí z nějaké databáze. Tento přístup by mohl být použit i pro řešení problému s vyjadřováním emocí. Bylo by jen třeba naměřit mnohem více dat. Podpora pro audio syntézu Stávající model nepodporuje synchronizaci s audio syntézou, což ale ani nebylo cílem práce. Nicméně je tento bod důležitý pro reálné nasazení mluvící hlavy. Do rozhraní plánovače by tedy měl být zahrnut způsob předání časování pro jednotlivé fonémy. Časování by mělo být pravděpodobně na jemnější úrovni, než jen začátek a konec fonému. Například pro explozivní fonémy by bylo vhodné mít obraz i zvuk dobře synchronní v místě exploze, protože zde je nesoulad dobře vnímatelný.
46
KAPITOLA 4. SHRNUTÍ
Detailnější grafické zpracování Pro reálněji vypadající výsledky by bylo vhodné použít detailnější geometrickou síť a to zvláště v kritických místech jako jsou rty nebo oči. Taktéž detailnější textura by modelu přidala na věrnosti. Kvalita geometrické sítě i ostatních použitých dat, je ovlivněna hlavně dostupností vhodných snímacích a měřících zařízeních. Spolupráce s jinými modely Vzhledem k modularitě ArtiSynthu, je možné implementovaný model mluvící hlavy propojit s jinými modely a tak zajistit jejich spolupráci. Model lze tedy použít například jako doplněk pro jiný model, který by řešil znakující postavu nebo audio syntézu řeči. Propojení lze zajistit nejenom prostředky ArtiSynthu, ale i použitím vysokoúrovňového rozhraní mluvící hlavy, které pro tento účel v modelu existuje. Rozhraní lze rozšířit o metody, které hlavě budou dávat příkazy typu „otoč se vlevoÿ, „řekni větuÿ, atp.
4.3
Závěr
V diplomové práci byla provedena implementace mluvící hlavy v prostředí ArtiSynth, jejíž koncept vycházel z ověřeného přístupu, používaného na oddělení umělé inteligence, Západočeské univerzity v Plzni. Tento přístup byl ale rozšířen a vylepšen. Byla například použita redukce parametrů pomocí analýzy hlavních komponent. Data byla převedena do přehlednějších struktur v XML formátu a také přístup k ovlivňování bodu kontrolním objektem se liší. Pro ovládání bylo vytvořeno GUI, umožňující ovládat téměř všechny aspekty modelu. Největším přínosem je ale modularizace a zprůhlednění celého modelu. Při realizaci bylo využito návrhových vzorů a doporučení pro vývoj v objektově orientovaných jazycích. Taktéž byla zohledněna specifika frameworku ArtiSynth, který byl v některých ohledech rozšířen. Byl nasazen sestavovací systém Apache Ant, navržen balíček pro načítání geometrických dat a implementována numerická metoda pro řešení kubické interpolace. ArtiSynth i zdrojové kódy modelu jsou dostupné ve verzovacím systému na University of British Columbia. Kromě úspěšné implementace modelu mluvící hlavy, byly nastítěny body pro její další rozšiřování. Model je také možné využít ve spolupráci s jiným modelem, jakým by mohla být například znakující postava nebo audio syntéza řeči.
47
Seznam obrázků 2.1
Úspěšnost porozumění v závislosti na šumu při různě dostupných informacích (Goff et al., 1994, s. 3) . . . . . . . . . . . . . . . . . 2.2 Vlevo: Ukázka z krátkého filmu Tony de Peltrie (1972); Vpravo: Výstup z animačního programu Face Robot firmy SoftImage (2006) 2.3 MPEG-4 feature points . . . . . . . . . . . . . . . . . . . . . . . 2.4 MPEG-4 FAPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 XMT návaznost na ostatní technologie . . . . . . . . . . . . . . . 2.6 Struktura jazyka VHML z jeho dílčích částí . . . . . . . . . . . . 2.7 ArtiSynth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 UML diagram s rozhraními modelů . . . . . . . . . . . . . . . . . 2.9 UML diagram sond . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10 ArtiSynth GUI; vlevo OpenGL výstup; vpravo: časová osa se zobrazenou vstupní (nahoře) a výstupní sondou . . . . . . . . . . . . 3.1
3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9
3.10 3.11 3.12 3.13 3.14
Ukázka výstupu při změně parametru Θ. Na horním grafu je vidět průběh dominance pro dvě realizace cíle, které jsou vidět na dolním grafu. Obrázek převzat z (Cohen – Massaro, 1993) . . . . Přehled kontrolních bodů modelu a obrázek 3D sítě. . . . . . . . UML diagram třídy řešící výpočet n-dimenzionálního splinu . . . UML diagram tříd pro balíček maspack.geometry.io . . . . . . . . UML diagram tříd znázorňující konfigurační logiku . . . . . . . . Znázornění interakcí mezi modelem, uživatelem a ArtiSynthem . UML diagram tříd představující stav modelu; čárkovaná čára odděluje rozhraní od implementace . . . . . . . . . . . . . . . . . . UML diagram plánovače; čárkovaná čára odděluje rozhraní od implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka časové osy v GUI modelu mluvící hlavy, která zobrazuje průběh PC násobičů rtů, při použití kubické interpolace (nahoře) a nebo koartikulace . . . . . . . . . . . . . . . . . . . . . . . . . . Průběh zpracování dat v jednom cyklu vykreslovací smyčky . . . UML diagram zjednodušeně zachycující rozhraní a třídy balíku kontrolních objektů . . . . . . . . . . . . . . . . . . . . . . . . . . UML diagram s třídou správce kontrolních objektů . . . . . . . . UML diagram tříd: textový preprocesor . . . . . . . . . . . . . . GUI modelu mluvící hlavy; vpravo je vlastní ovládání modelu mluvící hlavy . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5 8 13 14 15 17 20 22 23 24
26 27 31 32 33 36 37 38
39 39 41 42 42 44
Literatura BITTO, L. Zpracování videa - MPEG-4 [online]. [cit. 15. 4. 2007]. Dostupné z: http://www.cgg.cvut.cz/~apg/apg-tutorials03/ch03s90.html. BLOCH, J. Java efektivně: 57 zásad softwarového experta. Vyd. 1. Praha : Grada, 2002. Přeložil Karel Voráček z orig. Effective Java – Programming Language Guide. ISBN 80-247-0416-1. COHEN, M. – MASSARO, D. Modeling coarticulation in synthetic visual speech, 1993. Dostupné z: http://mambo.ucsc.edu/psl/geneva.ps. Corel Corp. Description of Facial Action Coding System (FACS) [online]. 2005? [cit. 3. 11. 2006]. Dostupné z: http://face-and-emotion.com/dataface/ facs/description.jsp. EKMAN, P. – FRIESEN, W. V. – TOMKINS, S. S. Facial affect scoring technique (FAST): A first validity study. 1971. Dostupné z: http: //face-and-emotion.com/dataface/facs/guide/FACSIV1.html. 37-58. EKMAN, P. Should We Call it Expression or Communication? Innovations in Social Science Research. 1997, Vol. 10, No. 4, s. 333–344. Dostupné z: http://www.paulekman.com/pdfs/should_we_call_it_exp.pdf. EKMAN, P. – FRIESEN, W. V. – HAGER, J. C. FACS Investigator’s Guide: Chapter 1. 2002. Dostupné z: http://face-and-emotion.com/dataface/ facs/guide/FACSIV1.html. ISBN 0-931835-01-1. Eptamedia. Facial Animation Backround [online]. 2000. [cit. 23. 4. 2007]. Dostupné z: http://www.eptamedia.com/faceanim/en-doc/ en-faceanim-c-background.htm. FELS, S. et al. ArtiSynth: An extensible, cross-platform 3d articulatory speech synthesizer. 2005. Dostupné z: http://hct.ece.ubc.ca/publications/ pdf/fels-etal-AVSP2005.pdf. GLADWELL, M. The Naked Face: Can you read peoples thoughts just by looking at them? [online]. 2002. [cit. 2. 11. 2006]. Dostupné z: http://www.fondation-langlois.org/flash/e/index.php?NumObjet= 15571&NumPage=694. GOFF, B. et al. Real-time analysis-synthesis and intelligibility of talking faces, 1994. Dostupné z: http://citeseer.ist.psu.edu/31887.html.
49
LITERATURA
GUSTAVSSON, C. et al. VHML: working draft v0.3 [online]. 2001. [cit. 3. 4. 2007]. Dostupné z: http://www.vhml.org/downloads/VHML/vhml. pdf. HOLENDA, J. – RYJACEK, Z. Lineární algebra II. Úvod do diskrétní matematiky. ZČU, 2000. ISBN 80-7082-638-X. iMediaTek. Face Modeling Language (FML) [online]. 2005. [cit. 4. 3. 2007]. Dostupné z: http://ivizlab.sfu.ca/research/iface/fml.html. KIM, M. – WOOD, S. XMT: MPEG-4 Textual Format for Cross-Standard Interoperability [online]. 2006. [cit. 7. 2. 2007]. Dostupné z: http://www. research.ibm.com/mpeg4/Projects/XMTInterop.htm. KRNOUL, Z. – ZELEZNY, M. Realistic Face Animation for a Czech Talking Head. In Conference on TEXT, SPEECH and DIALOGUE, TSD 2004, Brno, Czech republic, 2004. LINDSAY – SMITH. A tutorial on Principal Components Analysis [online]. 2002. [cit. 10. 2. 2007]. Dostupné z: http://csnet.otago.ac.nz/cosc453/ student_tutorials/principal_components.pdf. MASSARO, D. – LIGHT, J. Improving the vocabulary of children with hearing loss, 2004. Dostupné z: http://mambo.ucsc.edu/pdf/hearingloss.pdf. MCGURK, H. – MACDONALD, J. Hearing lips and seeing voices. Nature. 1976, Vol. 264, s. 746 – 748. Dostupné z: http://www.faculty.ucr.edu/ ~rosenblu/VSMcGurk.html. NYSTEDT, D. – ZHANG, Y.-Q. Interview: Microsoft’s Ya-Qin Zhang seeks power [online]. 2005. [cit. 3. 2. 2007]. Dostupné z: http://www.infoworld. com/article/05/06/27/HNinterviewzhang_1.html. PRYKRYL, P. – BRANDNER, M. Numerické metody II. Vyd. 1. Plzeň : Západočeská univerzita v Plzni, 2000. ISBN 80-7082-699-1. SHAPIRO, L. G. – STOCKMAN, G. C. Computer Vision. Prentice-Hall, 2001. ISBN 0-13-030796-3. [email protected]. FAP Generation Page [online]. [cit. 16. 4. 2007]. Dostupné z: http://www.cs.technion.ac.il/~gip/ projects/s2002/Dmitry_Vadim_MPEG4/FAPGeneration.htm. STRNADOVA, V. Hádej co řıikám. Vyd. 2. [s.l.] : ASNEP, 2001. ISBN 80-903035-0-1. Sun Microsystems. JavaTM 2 Platform Standard Edition 5.0: API Specification [online]. c2004. [cit. 30. 11. 2006]. Dostupné z: http://java.sun.com/j2se/ 1.5.0/docs/api/. TEKALP, M. – OSTERMANN, J. Face and 2-D Mesh Animation in MPEG-4 [online]. [cit. 15. 4. 2007]. Dostupné z: http://www.chiariglione.org/mpeg/tutorials/papers/icj-mpeg4-si/ 08-SNHC_visual_paper/8-SNHC_visual_paper.htm.