Univerzita Karlova v Praze Matematicko-fyzikální fakulta
BAKALÁŘSKÁ PRÁCE
Jan Schwarz Návrh a implementace systému rozpoznávání druhů kobylek na základě jejich zvukových projevů Ústav formální a aplikované lingvistiky Vedoucí bakalářské práce: Mgr. Nino Peterek, Ph.D.
Studijní program: Informatika Studijní obor: Programování
Praha 2013
Děkuji Mgr. Ninu Peterkovi, Ph.D., za odborné vedení, cenné rady, zapůjčenou literaturu a hlavně čas, jenž mi věnoval. Mé díky patří i panu Danu Bártovi, který dal podnět k vytvoření této práce a poskytl první nahrávky.
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle § 60 odst. 1 autorského zákona.
V .............. dne....................
podpis ..............................
Název práce: Návrh a implementace systému rozpoznávání druhů kobylek na základě jejich zvukových projevů Autor: Jan Schwarz Katedra / Ústav: Ústav formální a aplikované lingvistiky Vedoucí bakalářské práce: Mgr. Nino Peterek, Ph.D., Ústav formální a aplikované lingvistiky Abstrakt: Ze strany biologů vzešel nápad na vytvoření systému na rozpoznávání druhů kobylek podle stridulací nahraných v terénu. V této práci se zabýváme rozlišením prozatím pěti druhů kobylek vyskytujících se na území České republiky za pomoci volně dostupného nástroje na rozpoznávání řeči HTK. Kromě samotného akustického modelu je součástí práce i internetové rozhraní, které pořízenou nahrávku vyhodnotí a výsledek zaznamená pro další zpracování. V současné fázi máme vytvořený model založený na omezeném počtu trénovacích nahrávek, který dává uspokojivé výsledky. Internetové rozhraní nicméně funguje i jako sběrný systém, tudíž cesta k rozšiřování a zlepšování modelu je otevřená. Klíčová slova: rozpoznávač, kobylky, zpracování signálů, identifikace druhů
Title: Design and Implementation of Sound Recognizer of Particular Grasshopper Species Author: Jan Schwarz Department: Institute of Formal and Applied Linguistics Supervisor: Mgr. Nino Peterek, Ph.D., Institute of Formal and Applied Linguistics Abstract: Biologists asked us to create a system that recognizes particular grasshopper species from stridulation records. Currently we recognize five grasshopper species which can be seen in the Czech Republic using a free available toolkit for speech recognition called HTK. In addition to the acoustic model itself we also created web sites, which would analyse a stridulation record and then save the result for subsequent utilization. The current model is based only on a limited amount of training records, but its results are satisfactory. The web sites also serve as a gathering system; consequently, it is possible to further extend and improve the model. Keywords: Recognizer, Grasshoppers, Signal Processing, Identification of Species
Obsah Úvod........................................................................................................................ 1 1.
Analýza............................................................................................................. 3
2.
Stridulace.......................................................................................................... 4
3.
Akustický model ............................................................................................... 6
4.
3.1
HTK........................................................................................................... 6
3.2
Jak fungují skryté Markovovy modely........................................................ 6
3.2.1
Úvod ................................................................................................. 6
3.2.2
Rozpoznávání řeči............................................................................. 7
3.3
Trénování modelu ...................................................................................... 8
3.4
Rozpoznávání nahrávek.............................................................................11
Programová dokumentace ................................................................................13 4.1
Databáze ...................................................................................................13
4.2
Internetové rozhraní ..................................................................................14
4.2.1
Obecné informace ............................................................................14
4.2.2
Uživatelské stránky ..........................................................................15
4.2.3
Rozpoznávání a odesílání nahrávek ..................................................16
4.2.4
Zobrazení výsledků ..........................................................................16
4.3
Rozpoznávání............................................................................................17
5.
Uživatelská dokumentace.................................................................................18
6.
Popis dat a analýza použitelnosti ......................................................................21
Závěr ......................................................................................................................25 Seznam použité literatury........................................................................................26 Seznam tabulek.......................................................................................................28 Seznam obrázků......................................................................................................29
Úvod Často se stává, že biolog zaslechne cvrkot neboli stridulaci kobylky a chce zjistit, o jaký druh se jedná. Pokud se však nejedná o zkušeného odborníka, samotný poslech mu na to většinou nestačí. Odtud vznikl nápad na vytvoření systému na rozpoznávání jednotlivých druhů kobylek podle nahrávek jejich stridulací, do kterého by se zadávaly i zeměpisné souřadnice pořízení nahrávky pro případné zkoumání migrace. Snaha o získání informací z nahrávek automatickým systémem je v dnešní době, kdy se snažíme co nejvíce práce přenechat strojům, celkem rozšířená. Zhu (2011) se například zabývá rozpoznáváním hmyzích škůdců vyskytujících se v domácnosti podle zvuků, které vydávají při pohybu nebo stravování, a stejně jako my k tomu využívá metodu uplatňovanou zejména při rozpoznávání řeči. Dvojice Chesmore a Ohya (2004) se ve své práci potýká prakticky se stejným problémem jako my. Rozpoznává jednotlivé druhy britských kobylek a sarančat z nahrávek pořízených v terénu, ale vyvinula si k tomu své vlastní kódování časové složky a jemu odpovídající neuronovou síť. V našich končinách však něco podobného zatím chybí, i proto zřejmě přišla ze strany biologů žádost o systém, do kterého by mohli vkládat nahrávky pořízené v terénu a nechat je automaticky vyhodnocovat. Cílem této práce je vytvořit odrazový můstek pro nástroj na rozpoznávání prozatím pěti druhů kobylek vyskytujících se na našem území, který by byl později snadno rozšiřitelný o případné další druhy. Zejména však chceme vytvořit sběrný systém, jenž bude všechny nahrávky shromažďovat na datovém serveru, aby mohly sloužit ke zlepšování vlastností stávajícího modelu a případným dalším účelům. Výsledky rozpoznávání budou uloženy v jedné databázi společně se zeměpisnými souřadnicemi pořízení nahrávky, aby systém mohl v budoucnu sloužit i k pozorování migrace kobylek. V první kapitole nejdříve nastíníme několik problémů, na které jsme narazili, a uvedeme, jak jsme je řešili. Dále si krátce představíme bioakustiku kobylek. Zaměříme se na to, proč a jak vůbec kobylky vydávají zvuk. Následuje zběžné seznámení se sadou HTK a myšlenkou skrytých Markovových modelů, společně s podrobnějším popisem trénování a fungování našeho modelu. Poté přijde na řadu
1
kapitola o tom, jak vypadají internetové stránky a databáze pro sběr dat z programátorského hlediska, následovaná stručným uživatelským manuálem. Práce je zakončena popisem dat, která jsme měli k dispozici, a shrnutím, jakých výsledků jsme dosáhli.
2
1. Analýza Ze všeho nejdříve jsme se museli rozhodnout, jestli budeme sami programovat nástroj na rozpoznávání obsahu nahrávek nebo sáhneme již po některém existujícím. Nakonec jsme dospěli k názoru, že využijeme volně dostupné sady HTK. Toto řešení má samozřejmě i své nevýhody, nicméně u nás zvítězil pragmatický přístup. Využití HTK nám ušetřilo obrovské množství práce, nemluvě o tom, že tento projekt má za sebou více než dvacetiletý vývoj, takže je nutně spolehlivější, než by byl jakýkoliv náš nově vytvořený nástroj. V první fázi jsme se museli potýkat s nastavením jednotlivých parametrů. HTK je systém primárně navržený na rozpoznávání řeči, jejíž frekvence se pohybuje v rozmezí 100-8000 Hz (Rossing 2007, s. 674-676), zatímco frekvence cvrkotu kobylek může být od 4 do 120 kHz (Kočárek 2013, s. 24). Nicméně HTK standardně nemá omezenou frekvenci vstupu, takže jsme se zaměřili zejména na délku a periodu okénka, nad kterým se počítají vektory příznaků. Délku jsme nakonec nastavili na 25 ms a periodu na 5 ms, což je polovina oproti standardní hodnotě pro řeč (Young et al. 2009, s. 72). Tyto hodnoty jsou jedny z nejnižších, se kterými je HTK schopno pracovat, a zároveň je při nich už zachována informace o vyšších frekvencích. Dále visel otazník nad trénovacími nahrávkami a topologií modelu. Zkoušeli jsme používat jen krátké nahrávky, na kterých bylo pouze pár kmitů, ale i celé dlouhé soubory, a kombinovali jsme je s třístavovými modely buď bez přeskoků, nebo s přeskoky. Nakonec jsme se na základě nuceného zarovnání modelů na trénovacích nahrávkách rozhodli pro nejlepší z variant a použili jsme celé dlouhé nahrávky a modely s přeskoky, přičemž stridulace u dvou druhů kobylek jsou složeny ze tří modelů. Co se týče systému pro sběr a rozpoznávání dat, zvolili jsme v současnosti patrně nejrozšířenější kombinaci jazyku PHP a databáze MySQL. Zřejmě jediným vážnějším problémem, který jsme museli řešit, byl způsob posílání souborů mezi webovým a interním datovým a databázovým serverem. Vzhledem k řadě uživatelských a bezpečnostních omezení nebylo možné přenos uskutečnit pomocí bezpečného kopírování a veřejných klíčů, proto jsme se rozhodli pro úplně jinou variantu a odesíláme data v binární podobě pomocí PHP funkce přímo do zvláštní databázové tabulky.
3
2. Stridulace Ve vydávání zvuků se hmyz obecně liší od ostatních živočichů, kteří aktivně dýchají a mají v těle buď plíce, nebo jiný vak na vzduch, při jehož vydechování přes soustavu ventilů a klapek vzniká mechanické vlnění. Samozřejmě existuje i několik výjimek jako například noční motýl Acherontia atrapos (Lišaj smrtihlav), který má na těle dutinu, do které dokáže nasát vzduch a při jeho vypuštění přes záklopku vydává krátké zvukové pulsy, nebo cikády, jež mají v oblasti břicha velký vzduchový vak napojený na pružnou žebrovanou chrupavku schopnou vibrace (Rossing 2007, s. 789). Rovnokřídlý hmyz, mezi který patří mimo jiné i kobylky, je charakteristický hlasitým cvrkotem neboli stridulací. Stridulace může probíhat vzájemným třením dvou krytek o sebe, jako u cvrčků a kobylek, třením stridulačního hřebenu na vnitřní straně zadního stehna o vystupující žilky na krytkách nebo o zadeček, jako u sarančí, eventuelně dalšími, méně běžnými mechanismy, jako například kusadly. Stridulace je pro kobylky velice důležitá při komunikaci mezi jedinci a při vyhledávání jedince opačného pohlaví. Samičky si partnera vybírají podle kvality vydávaného signálu, proto samečkové vyhledávají akusticky vhodná místa (Kočárek 2013, s. 24). 0.213
0
-0.2063
0
19.09 Time (s)
Obrázek 2.1 – Tři fráze kobylky Tettigonia cantans
4
0.1636
0
-0.1565
0
0.1113 Time (s)
Obrázek 2.2 – Šest slok z první fráze Obrázku 2.1 Jak píše Kočárek (2013, s. 26): „Charakter stridulace je u většiny skupin druhově specifický a bývá využíván při taxonomickém posuzování sporných druhů s problematickými morfologickými znaky. Stridulace je většinou natolik odlišná, že na jejím základě lze určité druhy spolehlivě determinovat i přímo v terénu.“ Kobylky stridulují s frekvencí přibližně 4-120 kHz, ale i stridulace určitého jedince se mohou lišit. Jsou ovlivněny nejen teplotou okolního vzduchu, ale i tím, jestli chce jedinec přilákat samičku, informovat o své přítomnosti nebo zastrašit konkurenčního samečka. Pokud si prohlédneme stridulace na oscilogramu, nejmenší jednotkou zvukového signálu je impuls, který odpovídá přejetí jednoho zoubku po třecí plošce. Přejetím všech zoubků vzniká slabika. Sloka (Obrázek 2.2) se skládá z několika po sobě jdoucích slabik a bývá druhově charakteristická, tzn. je složená z daného počtu přejetí kompletní sady zoubků. Jednotlivé sloky se pak libovolně řadí za sebe do frází (Obrázek 2.1).
5
3. Akustický model 3.1 HTK HTK (Hidden Markov Model Toolkit) je volně dostupný nástroj na vytváření a upravování skrytých Markovových modelů. Skládá se z několika modulů, které umožňují především analýzu řeči, trénování skrytých Markovových modelů, jejich testování a analýzu výsledku. Původně bylo HTK vyvíjeno na Cambridge University Engineering Department, kam se také po několika letech, kdy měnilo vlastníky licenčních práv, vrátilo (Woodland et al. 2000). HTK je navrženo zejména k vytváření systémů na práci s řečí a k tomuto účelu je také optimalizováno. Nicméně skryté Markovovy modely mohou mít mnohem širší využití a kromě naší aplikace bylo HTK využito například pro sekvenování DNA (Woodland et al. 2000). Jak píší autoři v dokumentaci (Young et al. 2009, s. 2), obecně se HTK zabývá dvěma úkoly: „Za prvé využívá nástrojů pro trénování k odhadnutí parametrů skupiny skrytých Markovových modelů na základě trénovacích nahrávek a jim odpovídajících přepisů. Za druhé s pomocí nástrojů na rozpoznávání vytváří přepis pro neznámé nahrávky.“
3.2 Jak fungují skryté Markovovy modely 3.2.1 Úvod Na začátek je třeba říct, že se jedná o velice hrubý nástin fungování skrytých Markovových modelů, a pro více informací je třeba nahlédnout například do knihy Spoken language processing (Huang et al. 2001). Skryté Markovovy modely se ukázaly být efektivním nástrojem na rozpoznávání řeči. Poprvé byly využity již v sedmdesátých letech, ale větší pozornosti se jim dostalo až v letech osmdesátých, kdy je ve svém projektu použila pracovní skupina pod záštitou IBM (Psutka et al. 2006, s. 200-201). Princip skrytých Markovových modelů vychází z představy, že pokud si zvukový signál rozsekáme na dostatečně malé kousky, můžeme zvukovou vlnu v těchto krátkých časových úsecích považovat za stacionární. Díky tomuto ne zcela pravdivému, ale snesitelnému zjednodušení si spojitou zvukovou vlnu můžeme
6
převést na posloupnost rovnoměrně rozdělených diskrétních vektorů příznaků, které reprezentují spektrální charakter krátkých úseků signálu (Obrázek 3.1).
Obrázek 3.1 – Převedení zvukové vlny na vektory příznaků Dále předpokládáme, že původce signálu má jen omezené množství konfigurací, ve kterých se jeho ústrojí vydávající zvuk může v krátkém časovém úseku nacházet. Proto při rozpoznávání předpokládáme, že v daném diskrétním časovém intervalu se nacházíme v jednom z těchto stavů, a při vstupu do dalšího časového intervalu přecházíme do dalšího stavu na základě odpovídajících pravděpodobností přechodu. 3.2.2 Rozpoznávání řeči Nechť O = {o1o2…oT} je pozorovaný signál, kde ot je vektor příznaků v čase t, a W = {w1w2…wN} je posloupnost slov, kde wi je i-té slovo ve slovníku. Nás zajímá taková posloupnost slov, která maximalizuje pravděpodobnost P(W|O), že signál O představuje posloupnost slov W. Použijeme-li Bayesovu větu, získáme
arg max PW | O arg max W
W
PO | W PW PO
kde P(W) je pravděpodobnost, že nám přijde právě posloupnost slov W, P(O|W) je pravděpodobnost, že při vyslovení posloupnosti slov W vznikne signál O, a P(O) je pravděpodobnost výskytu dané posloupnosti vektorů. Protože maximalizujeme přes W a P(O) není funkcí W, můžeme ji opomenout. Zároveň pravděpodobnost P(W) máme předem spočítanou z trénovacích dat, takže nás zajímá hlavně problém odhadnutí podmíněné pravděpodobnosti P(O|W), který nahradíme jednodušším problémem odhadnutí parametrů Markovova modelu (Obrázek 3.2). „Skrytý Markovův model je model stochastického procesu, na nějž je možné pohlížet jako na pravděpodobnostní konečný automat, který v diskrétních časových okamžicích generuje náhodnou posloupnost pozorování (posloupnost vektorů 7
pozorování) O = {o1o2…oT}. V každém časovém kroku změní model svůj stav si podle souboru předem daných pravděpodobností přechodu aij. Stav sj, do kterého model přejde, generuje příznakový vektor (vektor pozorování) ot, a to podle rozdělení výstupní pravděpodobnosti bj(ot) příslušné k tomuto stavu.“ (Psutka et al. 2006, s. 200-201)
Obrázek 3.2 – Příklad skrytého Markovova modelu Sdruženou pravděpodobnost, že model M vygeneruje pozorování O například posloupností stavů X = 1,2,2,3,4…, vypočítáme jako PO, X | M a12 b2 o1 a22 b2 o2 a23b3 o3 a34 b4 o4 kde posloupnost X je však neznámá, takže naši výslednou pravděpodobnost musíme vypočítat jako sumu přes všechny možné posloupnosti stavů. Přímý výpočet by měl exponenciální časovou náročnost, ale existuje například rekurzivní algoritmus, tzv. algoritmus forward-backward, který zvládne stanovit pravděpodobnost P(O|M) efektivněji. My používáme tzv. Viterbiho algoritmus, jenž je založen na dynamickém programování a počítá i optimální posloupnost stavů při průchodu modelem. Pokud máme modely Mi pro jednotlivá slova wi, dokážeme tedy už vyřešit náš počáteční
problém
maximalizace
pravděpodobnosti
P(W|O)
přes
všechny
posloupnosti slov W, samozřejmě však za předpokladu, že pro všechny modely známe parametry {aij} a {bj(ot)}. Ty dokážeme určit z dostatečného množství trénovacích dat pro každé slovo tzv. Baumovým-Welchovým reestimačním algoritmem.
3.3 Trénování modelu V našem případě se však zabýváme problémem rozpoznávání druhů kobylek, který se nicméně od problému rozpoznávání řeči ve své podstatě příliš neliší. Každý druh kobylky teoreticky má svůj specifický zvukový projev, tedy produkuje 8
specifickou frázi (libovolně dlouhou stridulaci, ohraničenou z obou stran tichem), a naším úkolem je tuto frázi rozpoznat. Ze všeho nejdříve musíme sehnat nahrávky na natrénování modelů. My jsme od biologů získali několik nahrávek stridulace pěti druhů kobylek. K těmto nahrávkám poté musíme vytvořit přepis na úrovni frází, který pro jednu nahrávku vypadá například takto: "Conocephalus_fuscus-confus05.lab" Sil Confus1 Sil Confus1 Sil Confus1 Sil .
Sil představuje model ticha a Confus1 označuje část nahrávky, ve které kobylka druhu Conocephalus fuscus vydává zvuk. Dále si musíme převést zvukovou vlnu na vektory příznaků. K tomu v HTK slouží nástroj HCopy, který převede vstup na vektory podle parametrů v konfiguračním souboru. V našem případě vypadá konfigurační soubor config.hcopy následovně: # Coding parameters TARGETKIND = FBANK_E TARGETRATE = 50000.0 SAVECOMPRESSED = T SAVEWITHCRC = T WINDOWSIZE = 250000.0 USEHAMMING = T #PREEMCOEF = 0.97 NUMCHANS = 26 #CEPLIFTER = 22 #NUMCEPS = 12 ENORMALISE = T SOURCEKIND = WAVEFORM
Za cílový druh vektorů jsme si zvolili logaritmický filterbank i s údajem o energii. Jednotlivé rámečky jsou vzájemně posunuté o 5 ms (parametr TARGETRATE je udáván ve stovkách nanosekund). Výsledek je komprimován, což má za následek pouze to, že nově vytvořený soubor bude mít menší velikost, a obsahuje i kontrolní součet CRC. Velikost jednoho okénka jsme nastavili na 25 ms, filterbank jsme rozdělili na 26 kanálů, používáme normalizaci energie a vstupní soubor musí být ve formátu wav.
9
Nyní už můžeme pokročit k samotnému trénování. Nejdříve je třeba vytvořit prototyp modelu. Konkrétní parametry zatím nejsou důležité, naším cílem je nadefinovat topologii modelu. Pro řeč se obvykle používají třístavové levo-pravé modely bez přeskoků, vyjma modelu ticha, který přeskoky využívá. My pro zvuky kobylek používáme topologii modelu ticha, tedy třístavový model s přeskoky, který je schopný pohltit libovolně dlouhé stridulace. Náš prototyp modelu vypadá takto: ~o
27 ~h "proto" 5 <State> 2 <Mean> 27 0.0 0.0 0.0 … 27 1.0 1.0 1.0 … <State> 3 <Mean> 27 0.0 0.0 0.0 … 27 1.0 1.0 1.0 … <State> 4 <Mean> 27 0.0 0.0 0.0 … 27 1.0 1.0 1.0 … 5 0.0 1.0 0.0 0.0 0.0 0.0 0.3 0.4 0.3 0.0 0.0 0.0 0.6 0.4 0.0 0.0 0.3 0.0 0.4 0.3 0.0 0.0 0.0 0.0 0.0 <EndHMM>
Jednotlivé vektory mají délku 27, protože v konfiguračním souboru jsme si nadefinovali 26 kanálů, plus musíme počítat s údajem o energii. Přestože zde máme celkem pět stavů, skutečně se jedná o třístavový model, protože první stav je pouze vstupní a pátý stav pouze výstupní. V přechodové matici můžeme vidět, že jsme modelu povolili přeskok z druhého stavu do čtvrtého a ze čtvrtého zpět do druhého. Pro inicializaci modelu použijeme nástroje HCompV, který spočítá ze všech trénovacích nahrávek globální střední hodnotu a rozptyl a nastaví je všem stavům. Poté je potřeba vytvořit seznam všech frází a zkopírovat model pro každou z těchto frází. Náš seznam frází v souboru List.hmm vypadá následovně: Confus1 Decver1 Polden1 Rusnit1
10
Rusnit2 Rusnit3 Tetcan1 Tetcan2 Tetcan3 SilC SilR SilT
Zatímco první tři druhy kobylek mají jen jeden model pro frázi, druhé dva druhy mají modely tři, protože se nám tento přístup osvědčil. Model ticha trénujeme jen u tří druhů kobylek, protože nahrávky u zbylých dvou druhů obsahují pouze cvrkot. Pro samotné natrénování modelu máme v HTK nástroj HERest, kterému dáme na vstupu seznam trénovacích nahrávek, frázový přepis, seznam frází a předchozí verzi modelu, napoprvé to bude prototyp zkopírovaný pro každou frázi. Tento proces je potřeba provést několikrát, aby se parametry modelu mohly vytříbit.
3.4 Rozpoznávání nahrávek Před tím, než budeme moci rozpoznat nějakou nahrávku, musíme si ještě vytvořit slovník a gramatiku. Slovník obsahuje všechny segmenty (bezprostředně po sobě následující fráze), které se v nahrávce mohou vyskytnout, společně s jejich frázovým přepisem. V našem případě však jednotlivé fráze představují celé segmenty, takže slovník vypadá takto: Confus1 Confus1 Decver1 Decver1 Polden1 Polden1 Rusnit1 Rusnit1 Rusnit2 Rusnit2 Rusnit3 Rusnit3 Tetcan1 Tetcan1 Tetcan2 Tetcan2 Tetcan3 Tetcan3 Sil SilC Sil SilR Sil SilT
Jedná se tedy v podstatě o zdvojení seznamu frází s jedinou výjimkou u ticha, pro které máme tři modely, ale na výstupu se nám vždy objeví slovo Sil, ať už bude aplikován kterýkoliv z modelů. Poté si ještě musíme vytvořit gramatiku. Jedná se o popis všech posloupností segmentů, které se mohou objevit na vstupu, zaznamenaný ve formátu vhodném pro HTK. My máme gramatiku zcela jednoduchou. Naše posloupnost na nahrávce se
11
může skládat z ticha na začátku a následného cvrkotu prokládaného tichem. Výsledek tedy vypadá následovně: ( [ Sil ] < Confus1 [Sil]> | < Decver1 [Sil]> | < Polden1 [Sil]> | < ( Rusnit1 | Rusnit2 | Rusnit3 ) [Sil]> | < ( Tetcan1 | Tetcan2 | Tetcan3 ) [Sil] > )
Hranaté závorky označují nepovinnou část, úhlové závorky znamenají jedno nebo více opakování, svislá čára představuje logické výlučné nebo a kulaté závorky pouze oddělují samostatné části věty. HTK však požaduje gramatiku ve formě sítě, proto je ještě potřeba použít nástroj HParse, který takto sepsanou gramatiku převede do kýženého tvaru. Nyní už máme vše, co potřebujeme k rozpoznání nahrávky. Stačí spustit nástroj HVite, kterému dáme na vstup natrénovaný model, gramatiku, slovník, seznam frází a samozřejmě nahrávku, kterou chceme rozpoznat. Pak už jen stačí počkat, než Viterbiho algoritmus najde nejpravděpodobnější cestu sítí danou naší gramatikou a slovníkem a na výstupu dostaneme nejpravděpodobnější přepis nahrané věty.
12
4. Programová dokumentace 4.1 Databáze V naší databázi máme čtyři tabulky. Tabulka uzivatele (Tabulka 4.1) slouží k ukládání registrovaných uživatelů, kteří si mohou nechat vyhodnocovat nahrávky. V tabulce zarizeni (Tabulka 4.2) jsou uložena různá zařízení, ze kterých uživatelé posílají nahrávky na server. Prozatím je zde pouze jediná položka web, ale po případném budoucím vývoji mobilní aplikace pro snadnější užívání začne položek přibývat. Do tabulky files (Tabulka 4.3) se ukládají nahrávky poslané na server. Hlavní tabulka zaznam (Tabulka 4.4) uchovává informace o vyhodnocených nahrávkách a nahrávkách se známým obsahem. Název
Typ
NULL
id
int(10) unsigned
ne
jmeno heslo email prava
varchar(255) varchar(255) varchar(255) int(10) unsigned
ne ne ne ne
aktivni
int(10) unsigned
ne
cas
datetime
ne
Klíč
Popis automaticky navyšované primární pořadové číslo unikátní uživatelské jméno heslo v md5 unikátní emailová adresa uživatele rozlišení práv uživatelů pokud je hodnota 0, uživatel se nikdy nepřihlásil datum a čas vytvoření účtu
Tabulka 4.1 – Databázová tabulka uzivatele Název
Typ
NULL
Klíč
id
int(10) unsigned
ne
primární
zarizeni
varchar(255)
ne
unikátní
Popis automaticky navyšované pořadové číslo název zařízení
Tabulka 4.2 – Databázová tabulka zarizeni Název
Typ
NULL
Klíč
id
bigint(20) unsigned
ne
primární
name type size content extension
varchar(255) varchar(15) varchar(45) longblob varchar(10)
ne ne ne ne ne
Tabulka 4.3 – Databázová tabulka files
13
Popis automaticky navyšované pořadové číslo jméno souboru typ souboru velikost souboru binární obsah souboru přípona souboru
Název
Typ
NULL
id
bigint(20) unsigned
ne
cas
datetime
ne
hypoteza
varchar(255)
ano
real_inf
varchar(255)
ano
jmeno
varchar(255)
ne
nl
float
ne
el
float
ne
id_zarizeni
int(10) unsigned
ne
Klíč
Popis automaticky navyšované primární pořadové číslo datum a čas poslání nahrávky na server hypotéza o druhu nahrané kobylky stanovená rozpoznávačem skutečná informace o druhu nahrané kobylky jméno uživatele, který nahrávku poslal na server severní zeměpisná šířka pořízení nahrávky východní zeměpisná délka pořízení nahrávky pořadové číslo odesílajícího zařízení z tabulky zarizeni
Tabulka 4.4 – Databázová tabulka zaznam
4.2 Internetové rozhraní 4.2.1 Obecné informace Internetové rozhraní systému jsme napsali v jazyce PHP, hlavně kvůli jeho rozšířenosti, jednoduchosti a snadné komunikaci s databází MySQL. Vzhled všech stránek jsme ošetřili kaskádovými styly v souboru styly.css, který definuje zobrazení pro všechny internetové prohlížeče vyjma programu Internet Explorer, který má svá specifika, a proto má i svůj vlastní soubor s kaskádovými styly IE.css. Pro všechny stránky je společná hlavička složená z uživatelského panelu, nadpisu a hlavní nabídky. Tuto hlavičku vkládáme na jednotlivé stránky pomocí funkce include ze souborů panel.php, který obsahuje uživatelský panel, a strip.php, který obsahuje nadpis a hlavní nabídku. V souboru panel.php je pouze jednoduchá podmínka. Pokud je přihlášený nějaký uživatel, zobrazuje se jeho jméno a odkazy pro změnu hesla a odhlášení, jinak se vypíší jen odkazy pro přihlášení a registraci. Dále jsme do každé stránky zahrnuli buď soubor config.php, nebo soubor authorization.php. První z nich, jak už z názvu plyne, se stará o konfiguraci. Jsou v něm definice proměnných, potřebných pro připojení k databázi a příkazy, které provádí samotné připojení. Druhý ze souborů konfigurační soubor obsahuje a používáme jej na stránkách, které jsou přístupné pouze po přihlášení. Funkce 14
check_user kontroluje, jestli je přihlášený nějaký uživatel. Pokud ano, porovná ještě z důvodu bezpečnosti přihlašovací údaje s databází. V opačném případě je uživatel přesměrován na stránku pro přihlášení. 4.2.2 Uživatelské stránky Přihlášení i odhlášení uživatele se provádí na stránce login.php. Je zde formulář s dvěma textovými poli na jméno a heslo a s odesílacím tlačítkem. Pokud se stránka zobrazí po odeslání formuláře, proběhne ověřování přihlašovacích údajů. Nejdříve se zadané údaje porovnají s databází. Pokud existuje právě jeden řádek s odpovídajícím jménem a heslem, načtou se údaje do proměnné SESSION, a jestliže se uživatel přihlašuje poprvé, uloží se do databáze informace o tom, že první přihlášení proběhlo. Pokud v databázi řádek s odpovídajícími údaji není, uživatel je přesměrován na stejnou stránku s chybovým kódem. Při odhlašování stránka dostane metodou get informaci o tom, že uživatel chce být odhlášen, a relace se ukončí. Na stránce register.php probíhá registrace nových uživatelů. Opět obsahuje jednoduchý formulář s textovými poli na přihlašovací jméno a emailovou adresu a s odesílacím tlačítkem. Při zobrazení stránky po odeslání formuláře se provádí kontrola registračních údajů. Přihlašovací jméno i emailová adresa se nejdříve porovnají s regulárními výrazy. Poté se zjistí, jestli pod zadanými údaji již není registrován jiný uživatel. Jestliže je vše v pořádku, proběhne vygenerování šestimístného číselného hesla, do databázové tabulky uzivatele se vloží nový záznam a nově registrovanému uživateli se odešle na zadanou emailovou adresu zpráva s přihlašovacími údaji. Nakonec se ještě kontroluje, jestli nemáme v databázi uživatele, který se do deseti dnů od registrace nepřihlásil. Pokud takový uživatel existuje, vymažeme ho. Pokud si chce uživatel změnit heslo, musí navštívit stránku modify.php, která je samozřejmě přístupná až po přihlášení, a zadat staré heslo a dvakrát nové heslo. Po odeslání formuláře se zjišťuje, jestli je nové heslo ve správném tvaru, jestli je napsáno dvakrát stejně, jestli je neprázdné a jestli je staré heslo zadané správně. Pokud je vše splněno, nové heslo je uloženo do databáze. Při zapomenutí přihlašovacích údajů je uživatel přesměrován na stránku forgotten.php, na které stačí vyplnit emailovou adresu. Jestliže v databázi existuje
15
uživatel se zadanou emailovou adresou, je na ni odeslána zpráva s přihlašovacím jménem a nově vygenerovaným heslem. 4.2.3 Rozpoznávání a odesílání nahrávek Rozpoznávání nahrávky probíhá na stránce upload.php, která je přístupná pouze po přihlášení. Formulář na této stránce obsahuje pole pro soubor k rozpoznání a textová pole na severní zeměpisnou šířku a východní zeměpisnou délku. Po odeslání formuláře zkontroluje zadané údaje skript js.js napsaný v jazyce Javascript. Pokud je vše v pořádku (název souboru, severní šířka i východní délka jsou ve správném formátu), je formulář odeslán. Nejdříve se zkontroluje, jestli v datové složce na serveru momentálně neexistuje soubor se stejným názvem. V takovém případě by uživatel musel chvíli počkat, jinak se však soubor do této složky překopíruje. Poté se zjistí údaje o souboru potřebné pro uložení do databáze a jeho obsah se načte do proměnné. Následně se na serveru spustí skript s názvem script.sh, který nahrávku vyhodnotí, a informace, o jaký druh se jedná, se uloží do proměnné hypoteza. Nyní se už jen přepočtou zeměpisné souřadnice do požadovaného tvaru. Pokud nahrávka byla rozpoznána a proměnná hypoteza je tudíž neprázdná, do databázové tabulky zaznam se uloží výsledek a do tabulky files se nahraje samotný vyhodnocený soubor. Stránka upload_new.php slouží pro odeslání nahrávky se známým obsahem. Formulář vypadá stejně jako na stránce pro rozpoznávání, pouze je zde navíc textové pole na informaci o nahraném druhu. Správnost vyplněných údajů tentokrát kontroluje skript js2.js. Po odeslání formuláře se zjistí potřebné atributy souboru, jeho obsah se nahraje do proměnné a zeměpisné souřadnice se přepočtou do požadovaného tvaru. Pak už se jen informace o nahrávce uloží do databázové tabulky zaznam a soubor putuje do tabulky files. 4.2.4 Zobrazení výsledků O zobrazení informací uložených v databázové tabulce zaznam se stará stránka database.php, která se prakticky skládá jen z formuláře a tabulky. V tabulce jsou vypsány záznamy z databáze podle toho, co je navoleno ve formuláři. Formulář obsahuje zaškrtávací políčka, přepínače, odesílací tlačítka a skryté položky. Zaškrtávacích políček je stejně jako sloupců v databázi a pokud je políčko vybrané,
16
zobrazí se daný sloupec i v tabulce. Přepínače pojmenované rad se také jmenují jako jednotlivé sloupce a udávají, podle kterého z nich se mají záznamy řadit. Přepínače order určují, jestli bude řazení vzestupné nebo sestupné. Odesílací tlačítko submit aktualizuje obsah tabulky podle daného výběru. Ostatní odesílací tlačítka přepínají podle svých názvů mezi jednotlivými stránkami tabulky. Skryté položky formuláře slouží k předávání proměnných s celkovým počtem záznamů v databázi a s údajem o pořadovém číslu záznamu, který je v dané chvíli jako první vypsán v tabulce. Při prvním otevření stránky jsou zobrazeny všechny sloupce a záznamy jsou seřazeny vzestupně podle pořadového čísla vložení. Zároveň je třeba z databáze zjistit celkový počet záznamů. Pokud je toto číslo menší nebo rovno než počet záznamů zobrazovaných na jedné stránce, je možné bez dalších zásahů vypsat všechny záznamy do tabulky. V opačném případě jsou od databáze vyžádány jen potřebné záznamy, přičemž údaj, od jakého pořadového čísla tyto záznamy chceme, uložený v proměnné od se dopočítá podle toho, jaké tlačítko bylo před zobrazením stránky stisknuto. Následně už se jen podle proměnné od určí, která z tlačítek pro přeskakování mezi stránkami tabulky mají být dostupná. Po stisknutí odkazu pro stažení příslušné nahrávky se metodou get stránce oznámí pořadové číslo záznamu v databázové tabulce files. Z databáze je vyžádán příslušný záznam a z jednotlivých jeho položek je opět sestaven soubor ke stažení.
4.3 Rozpoznávání Samotný skript na rozpoznání nahrávky nazvaný script.sh je velice jednoduchý. Jako první a jediný argument dostane jméno souboru, který se nejprve převede do formátu wav s požadovanými parametry. Program HCopy následně převede zvukový soubor na soubor s vektory podle konfiguračního souboru config.hcopy. Pak už jen stačí spustit program HVite, který nově vzniklý soubor vyhodnotí podle natrénovaného modelu models.hmm, gramatiky Grammar.lat, slovníku Dict.hmm a seznamu frází List.hmm. Na závěr se původní nahrávka i všechny nově vzniklé soubory vymažou.
17
5. Uživatelská dokumentace Uživatelské rozhraní systému na rozpoznávání kobylek se nachází na internetové adrese http://quest.ms.mff.cuni.cz/NPG/Kobylky. Máme zde na výběr ze čtyř záložek (Obrázek 5.1) – Úvod, Rozpoznávání, Nová nahrávka, Databáze – které můžeme rozdělit do dvou kategorií. Zatímco záložky Úvod a Databáze jsou přístupné pro všechny návštěvníky, pro otevření záložek Rozpoznávání a Nová nahrávka je zapotřebí přihlásit se do svého účtu.
Obrázek 5.1 – Úvodní stránka Registrovat nebo přihlásit se můžeme v pravém horním rohu vrchní lišty. Pro přihlášení nám stačí znát jen přihlašovací jméno a heslo. Pokud se chceme do systému zaregistrovat, musíme si ze všeho nejdřív vymyslet vhodné přihlašovací jméno. Pak už jen stačí zadat emailovou adresu a kliknout na tlačítko Registrovat. Jestliže zadané přihlašovací jméno již někdo používá nebo je pod zadaným emailem již někdo registrován, systém nás na to upozorní. Po odeslání formuláře nám zanedlouho dorazí email se zvoleným přihlašovacím jménem a automaticky vygenerovaným heslem. Automaticky vygenerované heslo si můžeme jednoduše změnit po přihlášení do systému opět v pravém horním rohu vrchní lišty. Stačí kliknout na odkaz Změnit
18
heslo, zadat staré heslo a dvakrát zopakovat heslo nové. Pokud jsme zapomněli přihlašovací údaje, je třeba jít na stránku pro přihlášení a pod ní zvolit odkaz pro případ zapomenutých údajů. Následně už stačí jen vyplnit emailovou adresu, na kterou nám přijde naše přihlašovací jméno a nové automaticky vygenerované heslo. Pokud si chceme prohlédnout záznamy z rozpoznávače, stačí kliknout na záložku Databáze, do které se dostaneme i bez přihlášení (Obrázek 5.2). V databázi se uchovávají jak výsledky z rozpoznávání nahrávek pořízených v terénu, tak položky s vyplněným údajem o skutečně nahraném druhu kobylky. U každého záznamu je uvedené identifikační číslo, datum a čas vložení do systému, hypotéza z rozpoznávače nebo skutečná informace, přihlašovací jméno, pod kterým byl záznam vložen, severní zeměpisná šířka a východní zeměpisná délka pořízení nahrávky a informace o zařízení, ze kterého byla nahrávka do systému vložena. Po kliknutí na modrou šipku úplně vpravo na řádku si můžeme nahrávku stáhnout. Ve vrchní části stránky máme na výběr, které ze sloupců tabulky si chceme nechat zobrazit, podle kterého sloupce se nám záznamy seřadí a zda budou záznamy seřazeny vzestupně nebo sestupně. Po změně výběru je potřeba kliknout na tlačítko Aktualizovat.
Obrázek 5.2 – Ukázka ze záložky Databáze
19
Pod záložkou Rozpoznávání si můžeme nechat rozpoznat pořízenou nahrávku (Obrázek 5.3). Je však zapotřebí přihlásit se do systému. Pak už stačí jen vybrat ve svém zařízení určený soubor ve formátu mp3 nebo wav, zadat zeměpisné souřadnice, na kterých byl pořízen, a kliknout na tlačítko Upload. Po vyhodnocení nahrávky se nám výsledek zobrazí nad formulářem nebo se na něj můžeme podívat do databáze.
Obrázek 5.3 – Záložka Rozpoznávání Vkládání nahrávky se známým obsahem funguje na stejném principu. Stačí kliknout na záložku Nová nahrávka, opět vybrat soubor a zadat zeměpisné souřadnice, pouze je potřeba navíc uvést i jméno nahraného druhu kobylky. Po natažení do databáze se nad formulářem zobrazí informace o úspěšnosti akce.
20
6. Popis dat a analýza použitelnosti Jak jsme se již zmínili, prozatím se snažíme rozpoznávat pět druhů kobylek, které se vyskytují na území České republiky. Konkrétně jsou to druhy Conocephalus fuscus (Obrázek 6.1), Decticus verrucivorus (Obrázek 6.2), Polysarcus denticauda (Obrázek 6.3), Ruspolia nitidula (Obrázek 6.4) a Tettigonia cantans (Obrázek 6.5). Česká jména neuvádíme proto, že české názvosloví hmyzu není jednotné a pro některé druhy existuje více označení. Na následujících obrázcích je ke každému druhu vyobrazeno několik slok na oscilogramu a k nim odpovídající spektrogram.
Conocephalus_fuscus-confus05_ch1
Decticus_verrucivorus-Decver01_ch1
0.3562
0.4755
0
0
-0.2781 3.988
-0.4633 0.2895
4.922 Time (s)
2.678 Time (s)
Frequency (Hz)
2.5·104
Frequency (Hz)
2.5·104
0 3.988
0 0.2895
4.922 Time (s)
2.678 Time (s)
Obrázek 6.1 – Conocephalus fuscus –
Obrázek 6.3 – Decticus verrucivorus –
oscilogram a spektrogram
oscilogram a spektrogram
Polysarcus_denticauda-Polden01_ch1
Ruspolia_nitidula-rusnit01_ch1
0.3487
0.3914
0
0
-0.3708 5.717
-0.3656 0.1655
6.259 Time (s)
0.3233 Time (s)
Frequency (Hz)
2.5·104
Frequency (Hz)
2.5·104
0 5.717
0 0.1655
6.259 Time (s)
0.3233 Time (s)
Obrázek 6.2 – Polysarcus denticauda –
Obrázek 6.4 – Ruspolia nitidula –
oscilogram a spektrogram
oscilogram a spektrogram
21
Tettigonia_cantans-tetcan01_ch1 0.1444
0
-0.1293 19.49
19.68 Time (s)
Frequency (Hz)
2.5·104
0 19.49
19.68 Time (s)
Obrázek 6.5 – Tettigonia cantans – oscilogram a spektrogram Ke každému druhu jsme pro začátek dostali čtyři, resp. pět nahrávek, přičemž jednu nahrávku jsme si vždy museli ponechat jako testovací. Trénovacích dat jsme tedy měli skutečně málo, ale naším cílem bylo vytvořit jen základní model na rozpoznávání kobylek, od kterého bychom se mohli odrazit do budoucna, až nám sběrný systém poskytne větší množství nahrávek. Seznam všech trénovacích a testovacích souborů viz Tabulka 6.1. Název Conocephalus_fuscus-confus05.mp3 Conocephalus_fuscus-confus07.mp3 Conocephalus_fuscus-confus09-filt.mp3 Conocephalus_fuscus-confus10.mp3 Conocephalus_fuscus-confus13.mp3 Decticus_verrucivorus-Decver01.mp3 Decticus_verrucivorus-Decver02.mp3 Decticus_verrucivorus-Decver04.mp3 Decticus_verrucivorus-Decver05.mp3 Polysarcus_denticauda-Polden01.mp3 Polysarcus_denticauda-Polden02.mp3 Polysarcus_denticauda-Polden03.mp3 Polysarcus_denticauda-Polden05.mp3 Polysarcus_denticauda-Polden06.mp3 Ruspolia_nitidula-rusnit01.mp3 Ruspolia_nitidula-rusnit02.mp3 Ruspolia_nitidula-rusnit03.mp3 Ruspolia_nitidula-rusnit04.mp3 Tettigonia_cantans-tetcan01.mp3 Tettigonia_cantans-tetcan02.mp3 Tettigonia_cantans-tetcan03.mp3 Tettigonia_cantans-tetcan04.mp3 Tettigonia_cantans-tetcan05.mp3 Tabulka 6.1 – Seznam trénovacích a testovacích souborů 22
Typ trénovací trénovací trénovací trénovací testovací trénovací trénovací trénovací testovací trénovací trénovací trénovací trénovací testovací trénovací trénovací trénovací testovací trénovací trénovací trénovací trénovací testovací
Náš systém rozpoznává kobylky Decticus verrucivorus, Ruspolia nitidula a Tettigonia cantans, zbylé dva druhy nikoliv (Tabulka 6.2). Úspěšnost je tedy 60%, nicméně o celkové použitelnosti modelu to nevypovídá mnoho. Trénovacích nahrávek jsme měli nedostatek. Navíc nevíme, od kolika jedinců nahrávky pocházejí, takže není vyloučeno, že jsme model natrénovali na jediném zástupci druhu a následně jej testovali na jiném. V takovém případě by byl neúspěch opodstatněný. Z nuceného zarovnání rozpoznávání na trénovacích nahrávkách se však zdá, že modely cvrkotu i ticha jsou natrénovány na správných segmentech, proto se domníváme, že po získání většího množství rozmanitějších dat bude model použitelný. Testovací nahrávka Conocephalus_fuscus-confus13.mp3 Decticus_verrucivorus-Decver05.mp3 Polysarcus_denticauda-Polden06.mp3 Ruspolia_nitidula-rusnit04.mp3 Tettigonia_cantans-tetcan05.mp3 Celkem
Úspěšnost 0% 100% 0% 100% 100% 60%
Tabulka 6.2 – Úspěšnost rozpoznávání – test 1 Abychom otestovali návrh modelu alespoň trochu důkladněji, zkoušeli jsme vyměnit testovací nahrávky za trénovací. Tedy pro každý druh jsme zařadili nahrávku označenou v Tabulce 6.1 jako testovací mezi nahrávky trénovací a jinou, původně trénovací nahrávku jsme z procesu trénování modelu vyřadili a ponechali jsme si ji naopak jako testovací. Nejenže úspěšnost systému se náhle dostala na 100% (Tabulka 6.3, Tabulka 6.4, Tabulka 6.5), ale problematické nahrávky Conocephalus_fuscus-confus13.mp3 a Polysarcus_denticauda-Polden06.mp3, které v tomto případě byly mezi trénovacími daty, systém ani v jednom případě nerozpoznal, což nasvědčuje tomu, že tyto nahrávky nemusejí být zcela v pořádku. Testovací nahrávka Conocephalus_fuscus-confus05.mp3 Decticus_verrucivorus-Decver01.mp3 Polysarcus_denticauda-Polden01.mp3 Ruspolia_nitidula-rusnit01.mp3 Tettigonia_cantans-tetcan01.mp3 Celkem
23
Úspěšnost 100% 100% 100% 100% 100% 100%
Tabulka 6.3 – Úspěšnost rozpoznávání – test 2 Testovací nahrávka Conocephalus_fuscus-confus07.mp3 Decticus_verrucivorus-Decver02.mp3 Polysarcus_denticauda-Polden02.mp3 Ruspolia_nitidula-rusnit02.mp3 Tettigonia_cantans-tetcan02.mp3 Celkem
Úspěšnost 100% 100% 100% 100% 100% 100%
Tabulka 6.4 – Úspěšnost rozpoznávání – test 3 Testovací nahrávka Conocephalus_fuscus-confus09-filt.mp3 Decticus_verrucivorus-Decver04.mp3 Polysarcus_denticauda-Polden03.mp3 Ruspolia_nitidula-rusnit03.mp3 Tettigonia_cantans-tetcan03.mp3 Celkem
Úspěšnost 100% 100% 100% 100% 100% 100%
Tabulka 6.5 – Úspěšnost rozpoznávání – test 4 Celková úspěšnost rozpoznávání je tedy 90% (Tabulka 6.6), nicméně výsledný model, který jsme použili v našem systému, vychází z Tabulky 6.1. Jeho úspěšnost je dle testu pouze 60%, ale jak jsme zjistili, dvě testovací nahrávky jsou zřejmě problematické, proto nemusí být výsledek relevantní. Naopak vynecháním těchto nahrávek z trénovacích dat máme naději, že použitý model je kvalitnější. Test 1 2 3 4 Celkem
Úspěšnost 60% 100% 100% 100% 90%
Tabulka 6.6 – Celková úspěšnost rozpoznávání
24
Závěr Stanovené cíle naše práce splnila. Vytvořili jsme základ akustického modelu a internetové rozhraní na rozpoznávání a sběr nahrávek. Úspěšnost rozpoznávání zatím nemůžeme přesně stanovit, jelikož jsme se mohli odrazit jen od omezeného počtu nahrávek, které jsme vesměs použili na natrénování modelu. Nicméně sběrný systém je plně funkční a sezóna pozorování kobylek začíná, takže bychom postupně měli získávat materiál jak na testování, tak na případné doplňování nebo přetrénování modelu. Je však třeba říct, že námi navržený systém nemůže být stoprocentně úspěšný. Předně kvalita nahrávek nebude nikdy ideální. Vždy se na pozadí vyskytnou různé ruchy, ať už to bude šustění listí ve větru nebo hluk dopravy z nedaleké silnice, což může rozpoznávání ovlivnit. Dále je třeba si uvědomit, že klasické mikrofony jsou schopné zaznamenat zvuk do frekvence 20 kHz, zatímco část signálu řady kobylek se pohybuje vysoko nad touto hranicí, tudíž o kus informace přicházíme. A jistá omezení koneckonců skýtá i využití nástroje HTK optimalizovaného pro rozpoznávání řeči. Kromě vylepšování akustického modelu do budoucna počítáme i s dalšími rozšířeními. V první řadě by se mělo jednat o mobilní aplikaci, která bude usnadňovat komunikaci se systémem přímo z terénu. Následovat by mělo i zpracování informace o poloze pořízení nahrávky, což umožní biologům pozorovat migraci jednotlivých druhů kobylek na našem území.
25
Seznam použité literatury HUANG, Xuedong, ACERO, Alex, HON, Hsiao-Wuen, 2001. Spoken language processing: A guide to theory, algorithm, and system development. Vyd. 1. New Jersey: Prentice-Hall. ISBN 01-302-2616-5 CHESMORE, ED, OHYA E, 2004. Automated identification of field-recorded songs of four British grasshoppers using bioacoustic signal recognition. Bulletin of Entomological Research. Cambridge, UK: Cambridge University Press, roč. 94, č. 4, s. 319-330. DOI 10.1079/BER2004306 KOČÁREK, Petr, 2013. Rovnokřídlí České republiky. Vyd. 1. Praha: Academia, 283 s. Atlas (Academia). ISBN 978-80-200-2173-1 PSUTKA, Josef, MÜLLER, Luděk, MATOUŠEK, Jindřich, RADOVÁ, Vlasta, 2006. Mluvíme s počítačem česky. Vyd. 1. Praha: Academia, 746 s. ISBN 80-2001309-1 RONACHER, B, KRAHE, R, HENNIG, RM, 2000. Effects of signal duration on the recognition of masked communication signals by the grasshopper Chorthippus biguttulus. Journal of Comparative Physiology A. New York: Springer-Verlag, roč. 186, č. 11, s. 1065-1072. ISSN 0340-7594 ROSSING, Thomas D, 2007. Springer handbook of acoustics. New York: Springer, xxiv, 1182 p. ISBN 03-873-3633-8 VON HELVERSEN, Dagmar, VON HELVERSEN, Otto, 1998. Acoustic pattern recognition in a grasshopper: processing in the time or frequency domain?. Biological Cybernetics. New York: Springer-Verlag, roč. 79, č. 6, s. 467-476. ISSN 0340-1200 WOODLAND, Phil, EVERMANN, Gunnar, GALES, Mark, 2000. HTK Web site [online]. 2009 [cit. 2013-05-19]. Dostupné z: http://htk.eng.cam.ac.uk YOUNG, Steve, EVERMANN, Gunnar, GALES, Mark, KERSHAW, Dan, MOORE, Gareth, ODELL, Julian, OLLASON, Dave, POVEY, Dan, VALTCHEV, Valtcho, WOODLAND, Phil, 2009. The HTK book version 3.4 [online]. Cambridge, UK: Cambridge University Engineering Department [cit. 2013-05-19]. Dostupné z: http://htk.eng.cam.ac.uk/ftp/software/htkbook.pdf.zip
26
ZHU, Le-Qing, 2011. Insect Sound Recognition Based on MFCC and PNN. Proceedings: 2011 International Conference on Multimedia and Signal Processing ; CMSP 2011 ; 14-15 May 2011. Guilin, Guangxi, Los Alamitos: IEEE Computer Society, s. 42-46. ISBN 0769543561
27
Seznam tabulek Tabulka 4.1 – Databázová tabulka uzivatele ............................................................13 Tabulka 4.2 – Databázová tabulka zarizeni .............................................................13 Tabulka 4.3 – Databázová tabulka files ...................................................................13 Tabulka 4.4 – Databázová tabulka zaznam ..............................................................14 Tabulka 6.1 – Seznam trénovacích a testovacích souborů........................................22 Tabulka 6.2 – Úspěšnost rozpoznávání – test 1 .......................................................23 Tabulka 6.3 – Úspěšnost rozpoznávání – test 2 .......................................................24 Tabulka 6.4 – Úspěšnost rozpoznávání – test 3 .......................................................24 Tabulka 6.5 – Úspěšnost rozpoznávání – test 4 .......................................................24 Tabulka 6.6 – Celková úspěšnost rozpoznávání.......................................................24
28
Seznam obrázků Obrázek 2.1 – Tři fráze kobylky Tettigonia cantans ................................................. 4 Obrázek 2.2 – Šest slok z první fráze Obrázku 2.1 ................................................... 5 Obrázek 3.1 – Převedení zvukové vlny na vektory příznaků..................................... 7 Obrázek 3.2 – Příklad skrytého Markovova modelu ................................................. 8 Obrázek 5.1 – Úvodní stránka .................................................................................18 Obrázek 5.2 – Ukázka ze záložky Databáze ............................................................19 Obrázek 5.3 – Záložka Rozpoznávání .....................................................................20 Obrázek 6.1 – Conocephalus fuscus – oscilogram a spektrogram ............................21 Obrázek 6.3 – Polysarcus denticauda – oscilogram a spektrogram...........................21 Obrázek 6.2 – Decticus verrucivorus – oscilogram a spektrogram...........................21 Obrázek 6.4 – Ruspolia nitidula – oscilogram a spektrogram ..................................21 Obrázek 6.5 – Tettigonia cantans – oscilogram a spektrogram.................................22
29