FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Podobné dokumenty
SignEditor 1 - návod k použití

Manuál QPos Pokladna V1.18.1

Manuál QPOS Pokladna V 2.0

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

7 Další. úlohy analýzy řeči i a metody

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Angličtina program k procvičování slovní zásoby

Bc. Martin Majer, AiP Beroun s.r.o.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Popis programu EnicomD

TESTOVÁNÍ UŽIVATELSKÉHO ROZHRANÍ VIDEO PŘEHRÁVAČE VLC

Příprava dat v softwaru Statistica

TÉMATICKÝ OKRUH Softwarové inženýrství

Uživatelský manuál. Format Convert V3.1

Manuál k programu KaraokeEditor

Kapitola 1: Úvod. 1.1 Obsah balení. 1.2 Požadavky na systém. Česky

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

1 Webový server, instalace PHP a MySQL 13

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Multimediální systémy. 08 Zvuk

FORTANNS. 22. února 2010

Po prvním spuštění Chrome Vás prohlížeč vyzve, aby jste zadali své přihlašovací údaje do účtu Google. Proč to udělat? Máte několik výhod:

Webové rozhraní TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ. Funkcionalita


TÉMATICKÝ OKRUH Softwarové inženýrství

financnasprava.sk Portál Technologie Microsoft zjednodušují komunikaci občanů s Finanční správou SR a činí výběr daní transparentnějším.

Nastavení DCOM. Uživatelský manuál

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

4.2. Odhlásit se Šifrování hesla Sepnutí výstupních relé Antipassback Zobrazení všech dat...

IP kamera. Uživatelský manuál

Windows 10 (5. třída)

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

1 Uživatelská dokumentace

ANCA. (Amazing NetCall Application) dokumentace

Systém JSR představuje kompletní řešení pro webové stránky malého a středního rozsahu.

1. Webový server, instalace PHP a MySQL 13

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6

OSNOVA. 1. Definice zvuku a popis jeho šíření. 2. Rozdělení zvukových záznamů (komprese) 3. Vlastnosti jednotlivých formátů

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Úvod do Linuxu SŠSI Tábor 1

MBI - technologická realizace modelu

Vzdělávací obsah předmětu

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Co chcete udělat? Přepis nahrávek. Přepis URL. Korekce přepisů. Vyhodnocení přepisů. Ukládání přepisů. Přidávání slov do slovníku

Popis produktu IDFU. Řešení součinnosti s oprávněnými osobami verze 2. Aegis s.r.o.

VirtualBox desktopová virtualizace. Zdeněk Merta

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

Programátorská příručka

Maturitní otázky z předmětu PROGRAMOVÁNÍ

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Reliance 3 design OBSAH

České vysoké učení technické v Praze. Fakulta Elektrotechniky XD39NUR. Semestrální práce. Ovládání videokonferencí pomocí mobilního telefonu

INSTALACE SOFTWARE PROID+ NA MS WINDOWS

1. Podmínky chodu aplikace

DISCORD. Návod k použití pro IVAO-CZ. Zpracoval: Jan Podlipský

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Elektronické podání žádosti o udělení výjimky pro použití konvenčních osiv v ekologickém zemědělství prostřednictvím Portálu farmáře MZe

Elektronické podání žádosti o udělení výjimky pro použití konvenčních osiv v ekologickém zemědělství prostřednictvím Portálu farmáře MZe

Část 1 - Začínáme. Instalace

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

Jednotlivé hovory lze ukládat nekomprimované ve formátu wav. Dále pak lze ukládat hovory ve formátu mp3 s libovolným bitrate a také jako text.

3D sledování pozice vojáka v zastavěném prostoru a budově

Úloha 1. Úloha 2. Úloha 3. Text úlohy. Text úlohy. Text úlohy

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Kontakty 08/ Obsah

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Základní informace: vysoce komfortnímu prostředí je možné se systémem CP Recorder efektivně pracovat prakticky okamžitě po krátké zaškolení.

A4300BDL. Ref: JC

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Připojení přístroje A4101 k aplikaci DDS2000

Vývoj multiplatformní aplikace v Qt

TACHOTel manuál 2015 AURIS CZ

TELEFONNí LiNKA PREMiUM PRŮVODCE APLIKACí T UC-ONE - PC

Windows Live Movie Maker

Základní popis Toolboxu MPSV nástroje

Wonderware Information Server 4.0 Co je nového

plussystem Příručka k instalaci systému

HELIOS - Zálohování BüroKomplet, s.r.o.

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Příručka pro aplikaci KSnapshot

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

Procesy a vlákna (Processes and Threads)

Podpora skriptování v Audacity

Olga Rudikova 2. ročník APIN

ROZPOZNÁNÍ TITULU GRAMOFONOVÉ DESKY PODLE KRÁTKÉ UKÁZKY

Aplikace pro srovna ní cen povinne ho ruc ení

Modulární monitorovací systém Gradient Digitální systém pro záznam, archivaci a vyhodnocení telefonie.

Pokročilé funkce. Průvodce systémem Moodle ČZU. Pokročilé funkce. Středisko podpory elektronického vzdělávání

PŘÍLOHA C Požadavky na Dokumentaci

EasyLearn PC. Uživatelská příručka. Nakladatelství Fraus, Plzeň

Co je nového 2018 R2

Satori. Uživatelský manuál

SECTRON s.r.o. Výstavní 2510/10, Ostrava - Mariánské Hory , sales@sectron.cz

Analýza a Návrh. Analýza

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA UŽIVATELSKÉ ROZHRANÍ K MULTIMEDIÁLNÍMU SLOV- NÍKU BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR ROMAN DIVÁCKÝ BRNO 2010

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA UŽIVATELSKÉ ROZHRANÍ K MULTIMEDIÁLNÍMU SLOV- NÍKU USER INTERFACE FOR MULTIMEDIA DICTIONARY BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR ROMAN DIVÁCKÝ Ing. FRANTIŠEK GRÉZL, Ph.D. BRNO 2010

Abstrakt Tato bakalářská práce popisuje návrh a implementaci uživatelského rozhraní k multimediálnímu slovníku. Cílem této práce je vytvořit aplikaci s podporou hlasového vstupu a otestovat schopnost rozpoznání zadávaných slov. Výsledný slovník umožňuje zadávání slov hlasem, bez nutnosti psaní. Také je zde možnost použít vlastní textovy soubor se slovíčky a jejich překladem. Abstract This bachelor s thesis contains design and implementation of user interface for multimedia dictionary. The goal of this work is to create an application with support for voice input and to test the ability to recognize given words. The resulting dictionary allows to speak the desired word, without the need to type it. There is also a possibility to use your own text file with words and their translations. Klíčová slova C++, BSAPI, Qt, slovník Keywords C++, BSAPI, Qt, dictionary Citace Roman Divácký: Uživatelské rozhraní k multimediálnímu slovníku, bakalářská práce, Brno, FIT VUT v Brně, 2010

Uživatelské rozhraní k multimediálnímu slovníku Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Františka Grézla....................... Roman Divácký 19. května 2010 Poděkování Chtěl bych poděkovat svému vedoucímu, panu Ing. Františku Grézlovi, Ph.D. a panu Ing. Tomášovi Ciprovi za jejich pomoc a rady při tvorbě této bakalářské práce a používání systému BSAPI. c Roman Divácký, 2010. Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.

5

Obsah 1 Úvod 2 2 Analýza problému 3 2.1 Rozpoznávání řeči................................ 3 2.2 Skrytý Markovský model............................. 4 2.3 Adaptace na řečníka............................... 5 2.4 Lexical markup framework............................ 6 2.5 Uživatelské rozhraní............................... 6 2.5.1 Pohled programátora........................... 7 2.5.2 Pohled uživatele............................. 7 3 Návrh aplikace 8 3.1 Implementační prostředky............................ 8 3.1.1 Qt framework............................... 8 3.1.2 Knihovna BSAPI............................. 8 3.1.3 Knihovna irrklang............................ 9 3.2 Návrh vzhledu a funkčnosti aplikace...................... 9 3.2.1 Databáze slov............................... 9 3.2.2 Správa uživatelů............................. 10 3.3 Vzhled aplikace.................................. 10 4 Implementace aplikace 11 4.1 Grafické uživatelské rozhraní.......................... 11 4.2 Práce se slovy................................... 12 4.3 Zvukový vstup a výstup............................. 14 4.4 Rozpoznávání řeči................................ 15 4.5 Adaptace na řečníka............................... 15 4.6 Problémy při implementaci........................... 16 5 Testování 18 5.1 Rozpoznávání češtiny............................... 18 5.2 Rozpoznávání angličtiny............................. 18 5.3 Porovnání verzí BSAPI............................. 20 5.4 Reakce uživatelů................................. 20 6 Závěr 21 A Obsah CD 23 1

Kapitola 1 Úvod Cílem této bakálářské práce je navrhnout a implementovat elektronický multimedíální slovník s vhodným uživatelským rozhraním. V současnosti existuje spousta elektronických slovníku, využívají se převážně webové slovníky, kvůli své rychlosti a jednoduchosti. Dosud jsem se nesetkal s žádným, který by umožňoval požadovaná slova zadávat hlasem. V této práci se chci pokusit o to, aby navržený slovník byl jednoduchý na používání pro každého uživatele a také aby uživatel mohl přidávat a měnit slova, která slovník obsahuje. Idealní by byl univerzální slovník, který by dokázal načítat soubory se slovy a jejich překladem v jakýchkoli jazycích podle potřeb uživatele. V následující kapitole se čtenář dozví základy automatického rozpoznávání řeči a tvorby uživatelského rozhraní. Ve třetí kapitole je popsán návrh, ve čtvrté pak implementace tohoto slovníku. Pátá kapitola se věnuje testování rozpoznávače BSAPI na česká a anglická slova a uživatelským testům aplikace. V závěru práce se nachází zhodnocení vysledků, možnosti dalšího rozvoje aplikace a komentář nedostatků. 2

Kapitola 2 Analýza problému Výsledná aplikace by měla splňovat 3 hlavní požadavky: umožňit česko-anglický, anglicko-český překlad co nejpřesněji rozpoznat mluvené slovo obsahovat přehledné grafické uživatelské rozhraní První bod je samozřejmostí a záleží pouze na kvalitě dostupného překladového materiálu. Druhý bod je hlavní předností tohoto slovníku oproti jiným a jako takový by měl být vysoce přesný. Třetí bod ovlivní použitelnost programu a jeho oblíbenost u uživatelů. 2.1 Rozpoznávání řeči Typický rozpoznávač izolovaných slov je založen na statistickém modelu rozpoznání a jeho cíl je najít nejlepší slovo podle množiny vstupních modelů (pozorování) a modelovacích parametrů. Nechť X = x 1, x 2,..., x N je posloupnost N pozorovacích vektorů, feature vektorů. Nechť W je slovo. Výstupem systému automatického rozpoznávání řeči je takové slovo W, které lze popsat rovnicí: W = arg max P (W X, ) (2.1) W Kde je množina všech modelovacích parametrů. Namísto sestavení obecného modelu P (W X, ), lze toto rozdělit do menších modelů. Nejprve rozdělíme slova na rozlišitelné zvuky. Nejčastěji používané jednotky se nazývají fonémy[9]. Nechť Q = Q 1, Q 2,..., Q K je množina fonému, které popisují slovo W. Pak slovo W v rovnici 2.1 může být nahrazeno všemi možnými posloupnostmi fonémů Q které tvoří slovo W : W = arg max W P (W, Q X, ) (2.2) Q Použitím Bayesova pravidla[1] získáme: P (X W, Q, )P (W, Q ) W = arg max W P (X ) Q (2.3) 3

Všiměte si, že výraz ve jmenovateli P (X ) je konstantní pro všechna slova. Čili můžeme tento výraz vynechat při hledání maxima. Dále můžeme rozdělit pravděpodobnost spojení P (W, Q ) a získáme: W = arg max W P (X W, Q, )P (Q W, )P (W ) (2.4) Q Nakonec budeme předpokládat podmíněnou nezávislost pozorovací posloupnosti X na slově Q a necháme ji záviset pouze na sekvenci fonémů Q. Posléze dále rozdělíme množinu parametrů na části. Každá z nich bude mít vliv pouze na výraz ve kterém se nachází: W = arg max W Tři pravděpodobnostní modely v rovnici 2.5 jsou: P (X Q, A M)P (Q W, P M)P (W L M) (2.5) Q Akustický model P (X Q, A M) modeluje pravděpodobnost pozorovací posloupnosti, je-li dána posloupnost fonémů. Výslovnostní model P (Q W, P M) nám oznamuje jak pravděpodobná je posloupnost fonémů v daném slově. Výslovnostní model je také nazýván výslovnostní slovník nebo jen slovník. Jazykový model P (W L M) se nebere do úvahy v rozpoznávání izolovaných slov a je nahrazen jednoduchou paralelní gramatickou sítí. Přímý odhad společné podmíněné pravděpodobnosti P (x 1, x 2,..., x N Q, A M) mluveného slova není praktický. Předpokládá se parametrický model tvorby slova, jako třeba Markovský model. Převzato z [12]. 2.2 Skrytý Markovský model Skrytý Markovský model (Hidden Markov model) je statistický model, ve kterém modelovaný systém je Markovským procesem s neznámým stavem. V klasickém Markovském modelu, současný stav je vždy známy. Skrytý Markovský model neumožňuje přímo zjistit současný stav, pouze výstupy modelů, které závisí na tomto stavu. Přídavné jméno skrýtý se vzdahuje k posloupnosti stavů, kterými model prochází. I přesto, že parametry modelu jsou známé, model je stále skrytý. Více lze zjistit na [4]. Při rozpoznávání řeči založené na skrytém Markovském modelu, se předpokládá, že posloupnost pozorovaných zvukových vektorů, které patří ke každému slovu, je tvořena Markovským modelem (Obrázek 2.1). x stavy y pozorování a pravděpodobnosti změny stavu b pravděpodobnosti výstupu 4

Obrázek 2.1: Markovský model 2.3 Adaptace na řečníka Adaptací se rozumí přizpůsobení rozpoznávače na hlas hovořícího člověka. Jednou z techink, jak tohoto dosáhnout, je normalizace délky vokálního traktu (Vocal tract length normalization). Délka vokálního traktu přímo ovlivňuje frekvenci tónu hlasu, což má vliv na všechny ostatní frekvence. Principem normalizace je posunout tyto frekvence do stejného intervalu. Toho lze dosáhnout násobením frekvencí koeficientem, nazývaném warp faktor. Tento faktor leží v intervalu < 0.8, 1.2 >[12]. Bohužel, správný warp faktor nelze spočítat analyticky. Ke správné hodnotě se musí dojít aproximací, která sestává ze dvou fází. Nejprve se ze zvukových dat posbírají statistiky hlasu unikátní každému mluvčímu. Poté je spočítán optimální warp faktor tak, aby statistiky ovlivněné tímto faktorem byly co nejblíže referenčním distribucím, které lze spočítat pomocí Kullback-Leiblerovy divergence, definované v rovnici 2.6[6]. D(p q) = x χp(x) log p(x) q(x) (2.6) Statistiky mluvčího jsou získány od mluvčího pouze jednou. Následně se aproximují warp faktory a spočítají referenční distribuce jako průměry statistik ovlivněné warp faktorem. Je potřeba provést několik iterací pro dosažení dostatečné přesnosti. Tyto iterace pořebují pouze manipulovat se statistikami mluvčího a ne s vlastními daty[11]. 5

2.4 Lexical markup framework Lexical markup framework (dále jen LMF) je ISO standard pro zpracování přirozeného jazyka a strojově čitelné slovníky. Číslo standardu ISO pro LMF je 24613[8]. Hlavním cílem LMF je jednotný model pro tvorbu a používání elektronických slovníků, řídit výměnu dat mezi slovníky, usnadnit slučování mnoha jednotlivých slovníků do rozsáhlých globálních slovníků. Strukturu LMF tvoří unikátní páry atribut hodnota. Název atributu pochází z Data Category Registry (DCR)[3], hodnotou může být konstanta z DCR nebo řetězec[7]. Záznam v o slově může v LMF vypadat takto: <LexicalResource dtdversion= 15 > <GlobalInformation> <feat att= languagecoding val= ISO 639-3 /> </GlobalInformation> <Lexicon> <feat att= language val= eng /> <LexicalEntry> <feat att= partofspeech val= commonnoun /> <Lemma> <feat att= writtenform val= clergyman /> </Lemma> <WordForm> <feat att= writtenform val= clergyman /> <feat att= grammaticalnumber val= singular /> </WordForm> <WordForm> <feat att= writtenform val= clergymen /> <feat att= grammaticalnumber val= plural /> </WordForm> </LexicalEntry> </Lexicon> </LexicalResource> 2.5 Uživatelské rozhraní Obrazový výstup počítače, následován zvukovým výstupem, je nejdůležitějším komunikačním kanálem mezi počítačem a člověkem. Stejně tak pohyb (hmat) je v současnosti nejpodstatnějším komunikačním kanálem mezi člověkem a počítačem. Grafické uživatelské rozhraní využívají těchto kanálů pro co největší zjednodušení komunikace mezi programem a uživatelem. Komunikace může být buď aktivní, kdy uživatel řídí činnost počítače, nebo pasivní, kdy činnost stroje je známa a uživatel pouze odpovídá na dotazy. Nejvhodnější je tyto způsoby kombinovat a to tak, aby uživatel mohl řídit program, a zároveň aby se program dotazoval uživatele v případě, že je nutné provést důležitou operaci nebo potvrdit výběr[13].náhled na uživatelské rozhraní se také liší v očích programátora a očích uživatele. 6

2.5.1 Pohled programátora Z pohledu programátora je na návrhu uživatelského rozhraní důležité především pod jakým operačním systémem bude aplikace běžet. Pokud je potřeba zajistit funkčnost pouze na platformě Windows, je možné využít Windows API. Jestliže je požadována funkčnost na více operačních systémech, je třeba se uchýlit buď k jazyku Java, jehož programy běží na virtuálním stroji, nebo ke knihovnám, které zapouzdřují multiplatformní tvorbu uživatelských rozhraní. Tyto knihovny většinou obsahují tzv. designery, kde je možné si vzhled vytvořit graficky a nechat si vygenerovat zdrojový kód. 2.5.2 Pohled uživatele Uživatelé se v tomto aspektu dají rozdělit na 2 skupiny: na běžné uživatele a zkušené uživatele. Běžní uživatelé budou od aplikace očekávat jednoduché a srozumitelné ovládání, zatímco ti zkušení ocení více možností jak aplikaci nastavit, přizpůsobit a také ocení více informací o stavu aplikace, nebo o její činnosti. Jedním způsobem jak pokrýt tuhle různorodost mezi uživateli je implementovat možnost přepínat mezi standardním a pokročilým rozhraním. Druhou variantou je umístit základní funkce na viditelná místa a pokročilou funkcionalitu zařadit do panelu nástrojů. 7

Kapitola 3 Návrh aplikace Tato kapitola se zabývá popisem a výběrem implementačních prostředků, návrhem nestandardních částí aplikace a popisem tvorby uživatelského rozhraní. 3.1 Implementační prostředky Abych předešel komplikacím s užíváním knihovny BSAPI, která je napsána v jazyce C++, realizoval jsem program také v tomto jazyce. Pro jednodušší tvorbu uživatelského rozhraní jsou v C++ k dispozici 2 frameworky: Qt a wxwidgets. Oba jsou nezávislé na operačním systému a dá se s nimi dosáhnout srovnatelných výsledků. 3.1.1 Qt framework Pro tvorbu uživatelského rozhraní v této práci jsem zvolil framework Qt, který je produktem norské firmy Trolltech, ale v současnosti je spravován a dále vyvíjen firmou Nokia[10]. Qt je široce používán zejména pro tvorbu GUI aplikací, avšak poskytuje spoustu dalšich funkcí, jako přístup k SQL databázi, parsování XML, správu vláken atd. Mezi programy, které využívají Qt patří Skype, VLC media player, VirtualBox, Opera a jiné. Ke stažení je k dispozici Qt Source development kit, který obsahuje: Qt Assistant rozhraní pro přístup k online dokumentaci Qt Linguist program pro jednoduchou lokalizaci a překlad projektů Qt Designer zjednodušuje tvorbu GUI pomocí grafického editoru, sám generuje hlavičkové soubory Qt Creator IDE pro tvorbu aplikací v Qt, obsahuje v sobě Qt Designer a Qt Assistant, takže není nutné používat tyto programy zvlášť Tento framework je zcela zdarma a je distribuován také pod licencí GNU Lesser General Public License. Vybral jsem si jej zejména pro jeho skvělou dokumentaci, dostupnou přímo v dodávaném editoru a také jednoduché použití. 3.1.2 Knihovna BSAPI K rozpoznávání lidské řeči mi byla poskytnuta knihovna BSAPI (Brno Speech Application Interface). Tato knihovna představuje rozhraní mezi BSCORE (Brno Speech Core) a da- 8

lšímy programy. BSCORE obsahuje několik stavebních kamenů pro jednoduché a rychlé vytváření prototypů rozpoznávačů řeči. Implementuje širokou škálu algoritmů od čtení souborů s řečí, čtení vstuput z mikrofonu, klasifikace, dekódování, rozpoznávání fonému až po rozpoznávání řeči, chytání klíčových slov, identifikace jazyka, identifikace řečníka[2]. V průběhu tvorby aplikace mi bylo poskytnuto několik verzí této knihovny. Vzhledem k nedostatečné dokumentaci bylo zpočátku těžké ji používat, ale v pozdějších verzích bylo použítí značně zjednodušeno a rychlost také navýšena. Srovnání mezi verzemi se nachází v kapitole 5.3 na straně 20. 3.1.3 Knihovna irrklang Knihovna irrklang je API pro přehrávání 2D a 3D zvuku v multimediálních aplikacích a hrách[5]. Tato knihovna je multiplatformní a je možné ji využít v jazycích C, C# a.net. Lze ji používat zcela zdarma pro nekomerční použití, a podporuje následující formáty: RIFF WAVE (*.wav) Ogg Vorbis (*.ogg) MPEG-1 Audio Layer 3 (*.mp3) Free Lossless Audio Codec (*.flac) Amiga Modules (*.mod) Impulse Tracker (*.it) Scream Tracker 3 (*.s3d) Fast Tracker 2 (*.xm) Pro tuto práci je důležitý pouze formát WAV, ve kterém jsou uloženy nahrávky slov. 3.2 Návrh vzhledu a funkčnosti aplikace Při tvorbě uživatelského rozhraní je potřeba myslet na uživatele, kteří budou aplikaci používat. Snažím se dosáhnout toho, aby ovládání bylo na první pohled jasné a intuitivní, takže slovník bude moci používat každý. Zároveň bych také chtěl docílit i funkčnosti, kterou běžný uživatel nevyužije, nebo si jí ani nevšimne, ale ti zkušenějsí ji budou mít k dispozici. 3.2.1 Databáze slov Mezi takovou funkci patří načtení vlastní databáze slov. Většina elektronických slovníků (vyjma těch webových) umožňuje pouze překlad mezi dvěma jazyky, nebo mezi jedním a množstvím dalších (čeština angličtina, čeština němčina atd.). Pokud by zde člověk požadoval překlad angličtina němčina, musel by nejdříve anglické slovo přeložit do českého jazyka a poté do německého. Přitom by mohl získat uplně jiný význam, z důvodu počtu dostupných variant překladu. Proto by bylo vhodné umožnit uživateli importovat textový soubor se slovy ve 2 libovolných jazycích a načíst je do aplikace. Tento soubor může mít různou podobu, proto při použití této funkce nastaví uživatel parametry souboru: pořadí slov v souboru, oddělovač, jazyky slov apod. Následně bude soubor převeden do formátu, kterému aplikace rozumí a bude uložen spolu s informací o jaké jazyky se jedná. 9

3.2.2 Správa uživatelů Registrace a přihlašování uživatelů není typickou vlastností v elektronických slovnících, avšak pro účely optimálního rozpoznání mluveného slova je takřka stěžejní. Každý člověk ma unikátní hlas. Jinou výšku, barvu zvuku, rychlost řeči a přízvuk. Z tohoto důvodu je potřeba, aby program znal hlas uživatele, který hovoří a podle toho přizpůsobil rozpoznávání. Více k této problematice je uvedeno v kapitole 4. Možnost vytvoření více účtů je nejpřirozenějším způsobem jak zajistit tuto vlastnost. Uživatel se po spuštění aplikace přihlásí na svůj účet a může hovořit. Protože se neukládají žádné informace, které by šly zneužít cizí osobou, a také pro co nejvyšší rychlost a komfort uživatele, účty nejsou chráněny heslem. 3.3 Vzhled aplikace Při návrhu vzhledu jsem vycházel z designu typického pro slovníky. Základním prvkem je oblast se slovy, která se dá po jednom procházet, ačkoli tato vlastnost není kvůli množství slov nikdy hojně využívána. Pro jednodušší navigaci jsem přidal komponentu s písmeny abecedy pro přesun na první slovo začinající zvoleným písmenem. Oblast pro vyhledávání se nachází v horní části okna. Všechny ostatní funkce, kromě přehrání slova a hledání slova zadaného hlasem, které patří spolu s vyhledáváním pomoci textu mezi nejčastěji používané funkce, jsou umístěny v panelu nástrojů, aby nenarušovaly přehlednost. Veškeré informace, které je třeba sdělit uživateli, jsou zobrazovány ve stavovém řádku. 10

Kapitola 4 Implementace aplikace Tato kapitola se zabývá implementačními detaily významných částí programu. Na obrázku 4.1 je znázorněn diagram třídní závislosti. Zeleně jsou znázorněny třídy, které v sobě zapouzdřují část uživatelského rozhraní. 4.1 Grafické uživatelské rozhraní Grafické uživatelské rozhraní hlavního okna se nachází ve třídě VDic. Toto je hlavní třída aplikace, řídí se odsud veškeré dění a zpracovávájí se zde akce uživatele. Instance této třídy představuje hlavní okno. Na obrázku 4.2 je vidět finální podoba aplikace. Komunikace mezi jednotlivými komponentami v Qt probíhá na základě tzv. signálů a slotů. Signál je globálně vyslán, je-li provedena nějaká akce (stisknuto tlačítko, změněna hodnota v textovém panelu atd.) a slot je obslužná funkce, která se vykoná jako reakce na daný signál. Protože signály jsou vysílány globálně, je třeba propojit určité signály s určitými sloty. To je zařízeno funkcí connect, jejíž syntax vypadá následovně: connect(zdroj signálu, typ signálu, příjemce, slot) Zdrojem signálu bývá nejčastěji komponenta, například tlačítko. Typ signálu určuje konkrétní signál, třeba tlačítko může vysílat signály clicked,pressed,released. Příjemce označuje třídu, ve které se nachází obslužný slot, ale může to být také další komponenta. Využít to lze chceme-li například, aby se při pohybu posuvníku měnila číselná hodnota v textovém panelu. Slot označuje konkrétní metodu, která bude vykonána. Při startu programu je žádána třída User o seznam všech vytvořených uživatelů a zjišťuje se, zda je dostupné uložené nastavení z předchozí relace. Pokud ne, jako přihlášený uživatel se nastaví první v seznamu. Podobně je žádána i třída Dbs o seznam dostupných databází slov. Použití určité databáze je realizováno stejně jako nastavení uživatele. Po zvolení přihlášeného uživatele je inicializován rozpoznávač hlasu ve třídě Speaker. V případě jakéhokoli problému s inicializací (např. vypršela licence) je uživateli odepřena možnost zadávat slova hlasem. Jakmile je známa, která databáze slov bude použita, přicházi na řadu třída Wordlist, která obstarává načtení slovíček do paměti, seřazení dle abecedy v obou jazycích a jejich správné zobrazení v tabulce slov. 11

Obrázek 4.1: Diagram závislosti tříd 4.2 Práce se slovy Třída Wordlist obsahuje všechny informace o slovech z momentálně používané databáze. Pro uložení je použita datová struktura seznam. Každá položka je tvořena strukturou wordpair. Tato struktura vypadá následovně: QString QString bool QString QString QString czech english sndavailable pospeech desc percentage Proměnná czech obsahuje slovo v prvním (standardně v českém jazyce), english pak v druhém (anglickém). To, zda je dostupná nahrávka slova pro přehrání indikuje sndavailable. Slovní druh je uložen v proměnné pospeech, popis slova v proměnné desc. percentage pak udává dosažené skóre slova, jakožto pravděpodobnost, že právě toto slovo bylo vysloveno. Načtení obstarává metoda load. Z daného souboru jsou postupně načítány řádky, které jsou parsovány podle informací zadaných při vytvoření databáze. Momentálně je aplikace schopná uchovávat slovo v prvním a druhém jazyce, slovní druh, popis nebo vysvětlení. Poté jsou slova seřazena podle abecedy algoritmem heap sort v obou jazycích. 12

Obrázek 4.2: Hlavní okno programu Za účelem dosažení co nejvyšší úrovně optimalizace je tabulka, zobrazující slova, nastavena pevně na osm řádků. Při jakékoli změně řádku je volána metoda refill s číslem nového řádku, která přepíše stávající obsah tabulky. Tento způsob zobrazení je velice efektivní, protože není potřeba vytvářet velkou tabulku. Tato upravená tabulka má předefinovanou metodu wheelevent aby bylo možno se v tabulce pohybovat pomocí kolečka myši. Přidání vlastní databáze Obrázek 4.2 na straně 17 ilustruje funkci přidání vlastní databáze slov. Uživatel si zvolí název databáze, pod kterým bude uložena v programu, a soubor, který chce importovat. Předpokládá se že soubor obsahuje překlad mezi dvěma jazyky. Dále je třeba zadat názvy těchto jazyků spolu s jejich zkratkami, pro správné zobrazení informace o aktualním směru překladu. Dále se předpokládá, že každý záznam je na jednom řádku. Mimo slov může záznam obsahovat ještě slovní druh a popis. Uživatel zvolí pořadí těchto prvků, tak jak jsou uspořá- 13

dány na řádku a nakonec vybere oddělovač, který jednotlivé položky odděluje. Poté si v řádku náhledu může zkontrolovat, zda soubor který hodlá importovat má řádky ve stejném formátu jako v tomto poli. Po stisku tlačítka OK se spustí konverze. Položky slovní druh a popis nejsou povinné a můžou ve zdrojovém souboru chybět. Jestliže chybí překlad, je řádek ignorován. Pro novou databázi se vytvoří zvláštní adresář se dvěma soubory. Soubor info obsahuje informace o jazycích v databázi a soubor db obsahuje vlastní databázi, která je uložena ve formátu: Slovo v jazyce 1--Slovo v jazyce 2--Slovní druh--popis Příklad takto vytvořené databáze: Soubor info lang1=english lang2=czech shrt1=en shrt2=cz Soubor db car--auto--n:--dopravní prostředek cow--kráva--n:--savec work--pracovat--v:-- Nakonec je možné k této databázi připojit dodatečné informace o slovech ve formátu LMF. Toto rozšíření umožní zobrazení například čísla, rodu nebo pádu v informacích o slově. 4.3 Zvukový vstup a výstup Záznam zvuku je nedílnou součástí aplikace. Pro tyto účely existuje třída Speaker, jež v sobě zapouzdřuje hlavní funkcionalitu knihovny BSAPI. Při inicializaci třídy Speaker je ověřena licence a vytvořen objekt rozpoznávače. Pokud je u současného uživatele k dispozici konfigurační soubor pro rozpoznání řeči, je provedena adaptace. Pro záznam zvuku je použita metoda capture, která podle parametru spouští či ukončuje záznam. Pro samotné nahrávání se využívá třidy knihovny BSAPI, umožňující optimalizované a platformově nezávislé řešení. Přehrávání slov je vyřešeno ve třídě Player. Pro tento účel je použita knihovna irrklang. Je možné přehrávat zvukové soubory různých formátů, momentálně jsou však k dispozici pouze nahrávky ve formátu WAV. Více informací o formátu WAV se nachází v následující části. WAV soubor WAV je jeden z typů souborů, které se ukládají ve formátu RIFF (Resource Interchange File Format). V tomto formátu se například ukládájí i AVI soubory. Jedná se o formát, kde jsou data a metadata uloženy ve specialních částech (angl. chunk) a podčástech (angl. subchunk). 14

Jak je vidět na obrázku 4.3 na straně 15, hlavní část obsahuje pouze specifikaci metatypu RIFF a typu WAVE. Počet použitých podčástí a jejich formát se liší podle typu. Tento typ je určen v sekci format. Každá podčást jakéhokoliv typu souboru zapouzdřeného ve formátu RIFF obsahuje povinně 2 položky: SubChunkxID (název) a SubchunkxSize (velikost nezapočítává tyto 2 položky), kde x označuje číslo podčásti. Typ WAV obsahuje 2 podčásti. První je označená fmt a obsahuje informace o zvukové stopě. Druhá podčást je označená data a obsahuje pouze vlastní data. Offset Název Velikost Popis (bytů) (bytů) 0 ChunkID 4 Obsahuje písmena R I F F 4 ChunkSize 4 Velikost zbytku souboru 8 Format 4 Obsahuje písmena W A V E 12 SubChunk1ID 4 Obsahuje písmena f m t 16 SubChunk1Size 4 Velikost zbytku této části 20 AudioFormat 2 Indikuje kompresi 22 NumChannels 2 Mono, Stereo, atd. 24 SampleRate 4 Vzorkovací frekvence 28 ByteRate 4 Počet bytů za sekundu 32 BlockAlign 2 Zarovnání 34 BitsPerSample 2 Počet bitů na vzorek 36 SubChunk2ID 4 Obsahuje písmena d a t a 40 SubChunk2Size 4 Velikost zbytku této části 44 data n Vlastní data Tabulka 4.1: Formát WAV souboru 4.4 Rozpoznávání řeči Jak již bylo popsáno v sekci 4.3, rozpoznávání je zapouzdřeno v objektu třídy Speaker. Jelikož je tento objekt v daný okamžik vždy optimalizován na jednoho mluvčího a jeden jazyk, je nutné zajistit, aby při každé změně jazyka nebo uživatele byla provedena metoda setcfg, která použije nový konfigurační soubor a přizpůsobí rozpoznávač na jiného člověka. Veškerý proces rozpoznání se děje uvnitř knihovny BSAPI a mimo mou režii. Poté se uživateli zobrazí možná slova spolu s jejich pravděpodobností, která se nachází v rozmezí < 0, 1 >. 4.5 Adaptace na řečníka Při adaptaci na řečníka se mimo jiné využívá metoda VTLN, jejíž princip je nastíněn v kapitole 2.3 na straně 5. Protože v každém jazyce jsou slova tvořena jinými fonémy, je adaptace unikátní jak na mluvčího, tak na zvolený jazyk. Uživatel si může vybrat mezi češtinou a angličtinou, přitom nejlepších výsledků dosáhne pouze tehdy, bude-li hovořit v jazyce na který adaptuje svůj hlas. Z důvodů popsaných v části 5.1, musí každý nový uživatel naučit rozpoznávač svůj hlas, než bude moci použít vyhledávání slov zadaných hlasem. 15

4.6 Problémy při implementaci Jako závažný problém se ze začátku ukázalo zpracování a používání zvuku v aplikaci, protože této problematice jsem se v průběhu studia nevěnoval. Při prvotním řešení přehrávání zvuku mi výrazně napomohly zkušenosti z tvoření a rozebírání TCP paketů. Přímé přehrávání zvuku pomocí systémového souboru /dev/dsp se ale ukázalo neoptimální a omezené na platformu linux. Nakonec jsem tento problém vyřešil použitím knihovny irrklang (viz 3.1.3). Dalším problémem byla efektivita uživatelského rozhraní. Většina úloh trvá nezanedbatelnou dobu, proto je nutné implementovat vlákna, aby uživatel nenabyl pocitu, že program zamrzl. K vyřešení tohoto problému mi velice napomohl framework Qt, se svou nadstavbou nad vlákny. Jako poslední překážku bych zde uvedl přenositelnost. Všechny etapy vývoje byly prováděny na operačním systému linux. Ačkoliv jsem se nedopustil žádných programových konstrukcí, které by byly specifické pouze pro jednu platformu, správný překlad a spuštění aplikace na systému windows nebylo jednoduché. Klíčem k řešení bylo správně nastavit systémové proměnné, aby systém dokázal nalézt knihovny BSAPI a irrklang za běhu aplikace. 16

Obrázek 4.3: Konfigurace vytvoření databáze 17

Kapitola 5 Testování Tato kapitola se věnuje testování aplikace. Obsahuje porovnání úspěšnosti rozpoznávače na anglická a česká slova, rychlost rozpoznávání nové verze oproti starší a také uživatelské testy. 5.1 Rozpoznávání češtiny Testování rozpoznávání českého jazyka bylo provedeno na 8 lidech. Bylo testováno vždy 15 stejných slov nejdříve bez adaptace, poté s adaptací pomocí slov bez kontextu a nakonec s adaptací pomocí přirozené mluvy. Testy probíhaly v co možná nejklidnějším prostředí, vzorkovací frekvence nahrávek je 8000 Hz. Zkoušená slova byla tato: Auto Prase Počítač Lavice Teď Zastávka Okno Silnice Koupelna Škola Batoh Ponožka Dveře Jídlo Transformace V tabulce 5.2 se nachází získané výsledky. Z tabulky je vidět, že pro dosažení nejlepších výsledků v rozpoznávání izolovaných slov, je potřeba použít adaptaci také pomocí izolovaných slov. I když použití adaptace zvýší úspěšnost pouze nepatrně, rozhodl jsem se na základě těchto testů neumožnit rozpoznávání řeči dříve, než uživatel provede adaptaci na svůj hlas. 5.2 Rozpoznávání angličtiny Pro test rozpoznávače na anglický jazyk mi bylo poskytnuto 13 sad slov, každá sada obsahuje 1000 slov, od 12 mluvčích. Tato slova jsem zkoušel testovat nejprve bez adaptace, a posléze s adaptací na několik slov spojených programem sox. Testováno bylo náhodně vybraných 50 slov. Jelikož tyto nahrávky mají 16 khz vzorkovací frekvenci, bylo třeba je transformovat na 8 khz frekveni pomocí příkazu sox -t wav -r 16000 -s $infile -r 8000 -s -t wav $outfile V některých případech bylo nutné zvýšit hlasitost, protože hlas byl příliš slaby. Pro zvýšení hlasitosti 3x jsem použil příkaz 18

Rozpoznáno č. Pohlaví Bez adaptace S adaptací S adaptací pomocí slov pomocí vět 1 muž 9 9 11 2 muž 6 9 10 3 muž 11 9 9 4 muž 7 11 7 5 žena 8 13 7 6 muž 11 10 9 4 muž 7 8 12 5 žena 12 12 11 Průměr 8,875 10,125 9,5 Procent 59 % 67,5 % 63,3 % Tabulka 5.1: Úspěšnost rozpoznávání českého jazyka sox -v 3 $infile $outfile Rozpoznáno č. Pohlaví Bez adaptace S adaptací S adaptací S adaptací na 5 slov na 10 slov na 20 slov 01a žena 10 8 8 8 03a žena 0 1 0 0 04a žena 13 15 14 14 06a žena 4 2 2 3 09a muž 0 1 3 4 10a muž 14 15 14 13 12a muž 2 0 0 1 Průměr 6,14 6 5,85 6,14 Procent 12,28 % 12 % 11,7 % 12,28 % Tabulka 5.2: Úspěšnost rozpoznávání anglického jazyka Výsledky jsou v tabulce 5.2. Správně rozpoznat se zdařilo velmi nízké procento vzorků. Oproti rozpoznávání českého jazyka je úspěšnost až o 50 % nižsí. Jednou z příčin je úroveň rozpoznávače angličtiny, která není tak vysoká jako uroveň rozpoznávače češtiny. Důležitým faktorem je také kvalita nahrávek. Anglické nahrávky obsahují mnoho rušivých elementů a někdy se hlas blíží svou hlasitostí k šumu v pozadí. Také fakt, že nahrávky byly redukovány na frekvenci 8 khz softwarově, zatímco česká slova byla nahrána přímo s touto frekvencí, přispěl k nízké úspěšnosti rozpoznání. 19

5.3 Porovnání verzí BSAPI V průběhu tvorby práce mi byly poskytnuty 2 verze knihovny BSAPI. Jsou to verze 1.0.19 a 1.0.24. Porovnání rychlosti rozpoznávaní je uvedeno v tabulce 5.3. Verze Čas potřebný Čas potřebný Celkový k inicializaci k rozpoznání čas 1.0.19 32.801 s 4.872 s 37.673 s 1.0.24 1.790 s 0.568 s 2.358 s Tabulka 5.3: Rychlost rozpoznávání verzí BSAPI Jak je vidět, časové rozdíly jsou hodně dramatické. Toto může být způsobeno tím, že ve verzi 1.0.19 nebyl k dispozici rozpoznávač izolovaných slov, ale pouze rozpoznávač souvislé řeči, který musí při inicializaci používat složitý Jazykový model (viz 2.1). 5.4 Reakce uživatelů Při testování aplikace u uživatelů jsem se zaměřil na rychlost pochopení funkčnosti slovníku bez návodu, pouze s informací, že se jedná o elektronický slovník. Takřka 100 % uživatlů bylo schopno ihned zadat požadované slovo a vyhledat ho. 55 % uživatelů mělo problémy se zjišťováním směru překladu. To, že se jedná o slovník, na který je možné hovořit, zjistilo samo pouze 15 % lidí. Zbytku byla dodána informace, že lze slova zadávat i vyslovením a z tohoto počtu přibližně 30 % zjistilo jak tuto funkci správně používat. Po zhodnocení těchto výsledků nemohu s určitostí říct, že bylo dosaženo maximální intuitivnosti ovládání. Vylepšení uživatelského rozhraní je jedna z věcí, která by mohla v budoucnu tuto aplikaci vylepšit. 20

Kapitola 6 Závěr Výsledkem mé práce je kompaktní elektronický slovník s podporou hlasového vstupu. Bylo dosaženo všech cílů uvedených v zadání, aplikace byla otestována a je funkční na operačních systémech Linux (distribuce Ubuntu 9.10) a Windows XP. Při tvorbě této práce jsem si zdokonalil jazyk C++, schopnost navrhovat komplexní uživatelská rozhraní a tvorbu rozsáhlého multiplatformního programu. Za zajimavou část považuji schopnost aplikace využít jakýkoliv textový slovníkový soubor a použít jej. V budoucnu, za předpokladu existence globální lexikální databáze ve formátu LMF, by tahle funkce mohla automaticky stahovat jazyky na žádost uživatele. Dalším rozšířením by mohl být běh slovníku na pozadí s konstantně zapnutým zachytáváním řeči z okolí s filtrováním ticha. Toto by našlo využití zejména ve společnostech zabývajících se překladem knih a textů. Mým hlavním úkolem v této práci bylo vytvořit vhodné uživatelské rozhraní a zakomponovat do něj možnosti knihovny BSAPI. Myslím, že tento požadavek byl z větší části splňen. Díky této práci jsem také nahlédl do problematiky zpracování zvuku a hlasu a standardů pro vytváření a ukládání slovníků. 21

Literatura [1] Bayes rule[online]. http://www.cs.ubc.ca/ murphyk/bayes/bayesrule.html. [2] BSAPI Brno Speech Application Interface Documentation[online]. http://www.phonexia.com/docs/bsapi/. [3] Data Category Registry[online]. http://www.isocat.org. [4] Hidden Markov model[online]. http://en.wikipedia.org/wiki/hidden Markov Model. [5] irrklang an audio library for C++, C# and.net and high level 3D and 2D sound engine[online]. http://www.ambiera.com/irrklang/index.html. [6] Kullback-Leibler divergence[online]. http://en.wikipedia.org/wiki/kullback-leibler divergence. [7] Language resource management Lexical markup framework[online]. http://www.tagmatica.fr/lmf/iso tc37 sc4 n453 rev16 FDIS 24613 LMF.pdf. [8] Lexical markup framework[online]. http://www.lexicalmarkupframework.org/. [9] Phoneme[online]. http://en.wikipedia.org/wiki/phoneme. [10] Qt A cross-platform application and UI framework[online]. http://qt.nokia.com/. [11] Pylkönnen, J.: Estimating VTLN Warping Factors by Distribution Matching. Technická zpráva, Adaptive Informatics Research Center, Helsinki University of Technology, Finland. [12] Veselý, K.: Hybridní rozpoznávač izolovaných slov. FIT VUT v Brně, 2007, bakalářská práce. [13] Zemčík, P.: Tvorba uživatelských rozhraní. 2006, studijní opora. 22

Dodatek A Obsah CD Přiložené CD obsahuje: Zdrojové texty Binární soubory pro systém Windows Binární soubory pro systém Linux Tuto technickou zprávu Manuál ve formátu html 23