Rozpoznávač hlasu na procesoru Cell. Pavel Bazika

Rozměr: px
Začít zobrazení ze stránky:

Download "Rozpoznávač hlasu na procesoru Cell. Pavel Bazika"

Transkript

1 České vysoké učení technické v Praze Fakulta elektrotechnická ČVUT FEL katedra počítačů Diplomová práce Rozpoznávač hlasu na procesoru Cell Pavel Bazika Vedoucí práce: Ing. Miroslav Skrbek, Ph.D. Studijní program: Elektrotechnika a informatika, dobíhající, Magisterský Obor: Výpočetní technika leden 2008

2 ii

3 Poděkování Na tomto místě bych rád poděkoval ing. Miroslavu Skrbkovi za jeho úspěšnou snahu zpřístupnit architekturu procesoru Cell mě i ostatním studentům. Rovněž děkuji ing. Bořivoji Tydlitátovi, zaměstnanci firmy IBM ČR a.s., který mi poskytl mnohé dobré rady, jak psát optimalizovaný kód pro procesor Cell. iii

4 iv

5 Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). VPrazedne v

6 vi

7 Abstract The work contains analysis and implementation of speech recognition frontend on Cell BE architecture. Developed frontend, optimized for one Cell SPU, is 2,5x faster than frontend running on common Pentium 4 processor. 66,5 million samples of input speech signal per second can be processed on one SPU. These results imply, that Cell is suitable for processing large amount of speech data, more than one speaker can produce. Abstrakt Práce se zabývá rozborem a implementací frontendu ropoznávače řeči na procesoru Cell broadband engine. Výsledný optimalizovaný frontend běžící na jednom jádru SPU je až 2,5x rychlejší, než frontend běžící na běžně rozšířeném procesoru Pentium 4. Jedno jádro SPU je schopné zpracovat až 66,5 milionu vzorků vstupního řečového signálu za sekundu. Takový výkon předurčuje Cell spíše ke zpracování velkého množství různých řečových záznamů, než k rozpoznávání řeči jednotlivce. vii

8 viii

9 Obsah Seznam obrázků Seznam tabulek xii xiii 1 Úvod Významstrojovéhorozpoznávánířeči Cílpráce Algoritmy rozpoznávače řeči Lidskářečajejístrojovérozpoznávání Strukturalidskéřeči Principklasickéhorozpoznávačeřeči Frontendrozpoznávačeřeči Zpracovánívčasovéoblasti Zpracovánívefrekvenčníoblasti Vnitřnístrukturafrontendurozpoznávačeřeči Návrh řešení na procesoru Cell ProgramováníCellBroadbandEngine Architekturaprocesoru SpecifikaprogramováníSPU Návrhvnitřníreprezentacedat Návrhalgoritmů VýpočetDFT VýpočetreálnéFFTprostřednictvímkomplexníFFT VýpočetDCTpomocíFFT Implementace na procesoru Cell Filtrovánístředníhodnoty Statickézpracování Dynamickézpracování Dynamickézpracováníspolustranspozicí Odečtenístředníhodnoty Preemfáze Váhovánírámcůokénkem Funkceprogenerováníokének Funkceprookénkovývýběr Středníkrátkodobáenergie Početprůchodůsignálunulou RychláFourierovatransformace Generovánítwiddlefaktorů JednoduchákomplexníFourierovatransformace VýpočetreálnéFFTpomocíjednoduchékomplexníFFT DvojitákomplexníFourierovatransformace Sudo-lichádekompozice Výkonovéspektrum Logaritmus Filtracetrojúhelníkovýmifiltry ix

10 4.9 Diskrétníkosinovátransformace VýpočetDCTzdefinice VýpočetDCTprokládanýchposloupností VýpočetDCTpomocíFFT DalšífunkceproDCT Testování Principytestování Testysprávnostialgoritmů Výkonnostnítesty Výsledkytestů Vlivrozvíjenícyklůnavýkon Porovnánívýkonualgoritmůnarůznýchplatformách Celkovývýkon Závěr 52 7 Literatura 53 A Přiložené CD 55 A.1 ObsahpřiloženéhoCD A.2 Instalačnípříručka x

11 Seznam obrázků 2.1 Strukturaklasickéhorozpoznávačeřeči Průběhzvukusykavky,konkrétněpísmeneS Průběhzvukusamohlásky,konkrétněA PrůběhzvukuzněléhláskyB PrůběhzvukunezněléhláskyP Bankalogaritmickyumístěnýchtrojúhelníkovýchfiltrů Částfrontenduprovádějícípředzpracování Zpracováníaextrakcepříznakůzrámce Detailvýpočetníhořetězcekepstra ArchitekturaprocesoruCell,převzatoz[1] StavypipelinepřinačítánískalárníchdatpomocíSPU Zpracovávání dat po jednotlivých rámcích s černě označeným vektorem Zpracováváníčtyřrámcůnajednousčerněoznačenýmvektorem Motýlek-základníoperaceFFT Průběhtwiddlefaktorů,reálnásložkamodře,imaginárníčerveně OdezvaFFTnajednotkovýskokvreálnéoblasti(zdroj[8]) OdezvaFFTnajednotkovýskokvimaginárníoblasti(zdroj[8]) OperacemeziprvkypřistandardníFFT DvojitáFFT,nezávisládatajsouodsebebarevněodlišena Paralelníredukcesčítánísložekvektoru Hammingovookénko Vykonávánífunkcecivwinself Dvěkomplexníčíslauloženáprokládaněvjednomvektoru VýběrvektorůzevstupníchpolípřiprvnímkrokuFFT Bit-reversingaplikovanýnajednotlivákomplexníčísla VýběrvektorůzevstupníhopolepřidruhéiteraciprvnífázeFFT Výběrtwiddlefaktorůpromotýlkyšestnáctic FormátvstupníhopoleprodvojitoukomplexníFFT Vektoryvybíranéprosudo-lichoudekompozici Bankalogaritmickyumístěnýchtrojúhelníkovýchfiltrů Vlivrozvinutícyklůnaalgoritmusvýpočtustředníhodnoty Vlivrozvinutícyklůnaalgoritmuspreemfáze Algoritmusvýpočtustředníhodnotypole Algoritmusvýpočtukrátkodobéenergie Algoritmuspřičítáníkonstantykprvkůmpole Algoritmusokénkovéhovýběru Výpočetstředníhodnotydynamicky Algoritmuspropreemfázi Diskrétníkosinovátransformaceskoeficientypočítanýmizaběhu Diskrétníkosinovátransformacepočítanámaticovýmnásobením AlgoritmusdctscrambleužívanýprovýpočetDCTpomocíFFT Algoritmusvýpočtulogaritmu Algoritmusvýpočtupočtuprůchodůsignálunulou Filtrovánítrojúhelníkovýmifiltry,závislostnapočtufiltrů PorovnánívýkonuplatforempřiFFT Srovnánírychlostivýpočtukepstra xi

12 xii

13 Seznam tabulek 3.1 Tabulkatrvánírámcůpřidanýchvzorkovacíchfrekvencích Tabulkanutnýchvzorkovacíchfrekvencíprorámectrvající25ms xiii

14 xiv

15 KAPITOLA 1. ÚVOD 1 1 Úvod 1.1 Význam strojového rozpoznávání řeči S postupujícím nasazováním informačních systémů do stále většího množství různorodých oblastí se klasické ovládání pomocí tlačítek, případně také pomocí myši, může stát nepohodlným či zcela nepoužitelným. Jednou z takových oblastí může být například použití řidičem ovládanýchinformačníchsystémůvautě.řidičnemávolnéruceapředevšímanizrak,abymohlse systémem komunikovat tradičními způsoby. Systémy implementující rozpoznávání řeči proto velice často obsahují i hlasový syntezátor, který slouží pro odpovědi na uživatelské dotazy. Se vzrůstajícím výkonem výpočetní techniky již rozpoznávání řeči nepředstavuje tolik obtížný problém, jako tomu bylo dříve. Při vývoji kvalitního rozpoznávače řeči nejsme už tolik limitováni vlastní výpočetní technikou, ale spíše našimi omezenými znalostmi. Současným úkolem je tedy spíše navrhnout algoritmus zahrnující dostatečné množství informací pro co nejkvalitnější rozpoznávání, než pokusit se přimět nepříliš výkonnou techniku k realizaci složitých matematických postupů. Dalším možným využitím současných procesorů je paralelní zpracování, což je pro procesor Cell, který obsahuje devět jader, obzvláště důležité téma. Můžeme se snažit zpracovávat více řečníků v reálném čase a nabídnout jim tak zajímavou možnost interakce. Nebo můžeme zavést jakési hlasové OCR a zpracovávat nahrávky uložené na médiích zabírajících velký prostor. Ať už jde o staré magnetofonové pásky, nebo dnešní terabytová datová úložiště. 1.2 Cíl práce Cílem této diplomové práce je zvážit možnosti implementace rozpoznávače řeči na procesoru Cell a následně alespoň část z těchto algoritmů implementovat. Tyto algoritmy je poté třeba optimalizovat pro Cell a srovnat s klasickým řešením na jiných platformách. Po podrobnějším průzkumu principu rozpoznávače jsme stanovili, že cílem implementační části bude tzv. frontend rozpoznávače. Podrobněji o rozpoznávačích a algoritmech v nich používaných pojednává kapitola 2. Kapitola 3 se zabývá specifikami platformy procesoru Cell. Nejprve obecně a pak konkrétně vzhledem k některým složitějším algoritmům v rozpoznávači používaných. Popis výsledné implementace optimalizovaných algoritmů čtenář najde v kapitole 4. V závěrečné kapitole 5 jsou uvedeny výsledky výkonnostních a srovnávacích testů s jinými platformami a rozbory naměřeného chování.

16 2 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI 2 Algoritmy rozpoznávače řeči 2.1 Lidská řeč a její strojové rozpoznávání Komunikace mezi lidmi nespočívá ve výměně slov s jednoznačným významem. Člověk nekomunikuje pouze řečí, ale také pomocí mimiky obličeje, gest rukou, postoje ap. Naopak strojové zpracování řeči vyžaduje pokud možno jednoznačný význam sdělení. Omezíme-li tedy komunikaci se strojem pouze na řeč, je třeba určitých ústupků ze strany člověka. Například v současné době není dost dobře možné zpracovávat delší promluvy, protože stroj nedokáže určit a udržet kontext. Pokud neznáme kontext sdělení, nelze často určit ani jeho význam. Řeč však obsahuje i nadbytečné informace. Většinou jde o subjektivní vlastnosti určitého řečníka, jako je například výška jeho hlasu, intonace, rytmus řeči a vady řeči. Některé z těchto informací mohou dokonce zhoršit rozpoznávací schopnost stroje. Rozpoznávač tedy musí umět tyto nepodstatné informace nějakým způsobem odfiltrovat, aby získal pouze relevantní část sdělení. 2.2 Struktura lidské řeči Lidská řeč je z pohledu člověka tvořena slabikami, ze kterých jsou složená slova. Výslovnost slabik je do jisté míry individuálně podmíněná, avšak lidský mozek je schopen tyto nuance potlačit a porozumění mateřskému jazyku mu tak nečiní problémy. Dokonce je schopen porozumět i cizinci se značným přízvukem, pokud rozezná jednotlivé složky slova. Rozpoznávač řeči musí být schopen podobného úkolu. Pro úspěšné rozpoznávání je třeba pracovat s jednotkami menšími než jsou celá slova. Na rozdíl od člověka je stroj schopen mnohem detailnější analýzy krátkých časových úseků. Výhodné je pracovat s tak krátkým úsekem řeči, aby během něj nedocházelo ke změně stavu artikulačního traktu. Optimální délka takového úseku je cca 25 ms, což odpovídá rezonanční frekvenci artikulačního traktu. Z fonologických výzkumů plyne, že člověk je schopen svými artikulačními orgány modifikovat 12 různých tzv. příznaků, parametrů stavu artikulačního traktu. Tyto příznaky se uplatňují současně a jejich kombinací tak dostáváme tzv. fonémy, které jsou základní stavební jednotkou lidské řeči. Různé světové jazyky používají různý počet a druh fonémů. Například čeština používá 36 fonémů a angličtina 42. Počet fonémů se napříč světovými jazyky pohybuje od 12 do60(viz[7]). Jednotlivé fonémy se dále spojují do slabik, kterých je v češtině Jedná se o slabiky z fonetického hlediska, kdy se stejně psaná slabika může vyslovovat různě v závislosti na okolních slabikách. Vyslovováním kombinací slabik dostáváme jednotlivá slova, kterých je v češtině asi Kromě víceméně statického stavu artikulačního traktu v rámci fonémů přináší analýza na takto nízkéúrovnidalšívýhody předevšímto,žefonémujenarozdílodslovmáloajsouplatné celosvětově pro všechny jazyky, protože vyplývají z fyziologie člověka. 2.3 Princip klasického rozpoznávače řeči Rozpoznávače řeči nejsou prozatím uzavřenou kapitolou výzkumu, stále je zde relativně velký prostor pro zlepšování. My se zde budeme věnovat rozpoznávači dnes již klasické struktury. Na obrázku 2.1 můžeme sledovat základní bloky rozpoznávače řeči. Blokem na levé straně je takzvaný frontend. Vstupem frontendu je řečový signál reprezentovaný vzorky PCM původního signálu akustického. Hlavním úkolem frontendu je odfiltrovat ze signálu neužitečné informace a ruchy a naopak získat informace reflektující řeč na vstupu. Získané informace by měly být pokud možno maximálně nezávislé na konkrétním řečníkovi. Jedná se

17 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI 3 Obrázek 2.1: Struktura klasického rozpoznávače řeči tedy opravdu o jakousi extrakci významové informace z řeči. Protože se tímto blokem zabývá zbytek práce, je podrobněji vysvětlen v kapitole 2.4. Blok na pravé straně reprezentuje slovník slov, případně jejich částí a skupin. Ve slovníku jsou uloženy informace, které poskytuje frontend, případně přizpůsobené pro porovnávač. Na rozdíl od výstupu frontendu jsou však tyto informace trvalé, předem připravené nějakým jiným řečníkem. Porovnávač je mostem mezi frontendem a slovníkem. Jeho úkolem je najít ve slovníku co nejpodobnější informaci s informací získanou z frontendu. Protože se frontendu nepodaří zcela odfiltrovat veškeré subjektivní vlivy řečníka, je třeba, aby porovnávač neporovnával absolutně, ale umožňoval určitou míru nepřesnosti. Výstupem porovnávače je pak pravděpodobnost, že řečník řekl to které slovo. Porovnávače byly v minulosti řešeny algoritmem DTW, případně DDTW, česky zvaného borcení časové osy. Jde o porovnávání dvou nestejně dlouhých posloupností, které mělo reflektovat různou rychlost promluvy řečníka a promluvy uložené ve slovníku. Ukázalo se, že takový algoritmus není zcela dostačující, a proto se dnes více používají skryté Markovské modely(hmm). Jedná se o konečné automaty, které mají skryté a pozorovatelné stavy. Skutečný stav automatu je skrytý, ale určitým způsobem ovlivňuje stav pozorovatelný. Přechod mezi dvěma skrytými stavy je dán určitou pravděpodobností při daných vstupech. Při porovnávání dvou řečových vzorků přivedeme na vstupy modelu výstup frontendu a pozorované změny pozorovatelných stavů pak porovnáváme se slovníkem. 2.4 Frontend rozpoznávače řeči Následující odstavce se zabývají algoritmy frontendu rozpoznávače řeči. Po probrání jednotlivých algoritmů je vysvětlena jejich vzájemná návaznost v rámci frontendu Zpracování v časové oblasti Stejnosměrná složka Stejnosměrná složka je pro rozpoznávání řeči nepotřebná, a proto je vhodné se ji pro další výpočty odfiltrovat. Stejnosměrnou složku můžeme buď odfiltrovat zvlášť pro každý rámec (staticky), nebo použít dynamickou metodu postupného průměrování. Střední hodnotu z pevně dané oblasti délky N vypočteme dle vzorce: s= 1 N N s[i] i=0

18 4 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI Střední hodnotu můžeme též určovat průběžně užitím vztahu pro digitální derivační článek: s[n]=γ s[n 1]+(1 γ)s[n],kde γ 1 Filtrování pro každý rámec zvlášť je nevýhodné, pokud se rámce překrývají- pak počítáme s každým vzorkem několikrát. Nevýhoda dynamické metody je, že je na počátku nepřesná, protože ještě není ustálená. Dalším krokem po zjištění střední hodnoty je její odečtení. Pokud střední hodnotu počítáme dynamicky, je třeba nějakým způsobem ošetřit počáteční nepřesnost. Možností je nanečisto načíst několik vzorků před vlastním začátkem zpracovávání, z těchto vzorků spočítat střední hodnotu staticky a následně použít spočtenou hodnotu jako inicializační pro dynamickou metodu Preemfáze Vlastností artikulačního traktu člověka je, že vyšší frekvence jsou produkovány s nižší energií. To poněkud ztěžuje zpracování, kdy by vyšší frekvence nemohly dosahovat rovnocenných amplitud s frekvencemi nižšími. Pro zvýšení úspěšnosti rozpoznávače se vyplatí tyto frekvence posílit. To sedáprovéstfirfiltrem1.řádu: H(s[n])=s[n] κs[n 1]kde κ <0,9;1 > Řečové rámce Nejkratší časový úsek ve vstupním signálu nesoucí nějakou informaci se odvíjí od rezonanční frekvence artikulačního ústrojí člověka. Dle[14] jde o časový úsek dlouhý přibližně 25ms. Takový úsek budeme dále nazývat rámcem. Vzhledem k zachování kontextu řeči je vhodné, aby se rámce překrývaly, tedy aby byl jeden úsek řeči součástí několika rámců. Doporučený překryv je cca 15ms. Rámce ze vstupního signálu vybíráme pomocí tzv. okna, které je definováno jako funkce f(x), kterásplňuje x ( ;0) (l ram 1; ):f(x)=0.hodnotamifunkcevintervalu <0;l ram 1 > je dán typ okna. Vstupní signál se při výběru oknem násobí hodnotami odpovídajícími této funkci. Existuje hodně různých typů oken(mnoho typů lze nalézt na[13]), dva v rozpoznávačích řeči používané typy jsou okno pravoúhlé, které je definováno jako a okno Hammingovo w rect (x)={1,x <0;l ram 1 > (2.1) 0, jinak (2.2) w rect (x)={ cos 2πn l ram 1,x <0;l ram 1 > (2.3) 0, jinak (2.4) Výběr pravoúhlým oknem tedy spočívá ve zkopírování daného úseku vstupního signálu do rámce, zatímco při výběru Hammingovým oknem je signál na počátku a konci rámce utlumen. Hammingovo okno přináší výhodu, pokud rámec následně převádíme z časové do frekvenční oblasti prostřednictvím Fourierovy transformace v jeho spektru se neobjeví šum vzniklý vyříznutím rámce z původního souvislého signálu. Výběr Hammingovým oknem představuje však krok navíc, protože každý vzorek je ještě třeba vynásobit funkcí Hammingova okna.

19 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI Počet průchodů nulou Na základě počtu průchodů signálu v rámci nulou lze určit přibližnou frekvenci tónu v rámci. Tím je možné odlišit jednak sykavky(obr. 2.2) od ostatních hlásek(např. obr. 2.3), protože mají vysokou frekvenci. Dále tento parametr indikuje, zda jde o znělou či neznělou hlásku. Neznělé hlásky se více podobají šumu a proto vykazují vyšší počet průchodů signálu nulou. Pro určení tohoto parametru je třeba vyhodnocovat změny znaménka dvou po sobě následujících vzorků v rámci. Nevýhodou této charakteristiky je, že počet průchodů signálu nulou je značně náchylný našum,jetedyproblémodlišitpomlkuvřečiodneznělýchhlásekasykavek.dálejetento algoritmus závislý na odfiltrování stejnosměrné složky. Jako pomocný parametr je však užitečný. Obrázek 2.2: Průběh zvuku sykavky, konkrétně písmene S Obrázek 2.3: Průběh zvuku samohlásky, konkrétně A Je výhodné počet průchodů nulou vyhodnotit po určitých úsecích ještě před rozdělením do rámců. Délku úseků volíme soudělnou s délkou rámců, každý rámec pak bude obsahovat určitý počet celých úseků. Celkový počet průchodů signálu nulou v rámci můžeme spočítat jako součet průchodů signálu nulou v obsažených úsecích Střední krátkodobá energie Střední krátkodobá energie slouží k podobným účelům jako počet průchodů signálu nuloutedy rozlišení znělé(obr. 2.4) a neznělé(obr. 2.5) hlásky. Principem je, že znělé hlásky vykazují vyšší energii, protože se jejich vyslovování účastní hlasivky, působící v artikulačním traktu coby buzení. Neznělé hlásky jsou vyslovovány bez účasti hlasivek, pouze pomocí artikulace a proto jsou více podobné náhodnému šumu. Dále je pomocí tohoto parametru možno realizovat jednoduchou detekci řečové aktivity. Střední krátkodobá energie je definovaná jako E= 1 l ram 1 (s[n]) 2 l ram n=0 tedy součet druhých mocnin vzorků v jednom rámci.

20 6 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI Obrázek 2.4: Průběh zvuku znělé hlásky B Obrázek 2.5: Průběh zvuku neznělé hlásky P Derivace vstupního signálu Užitečnou informací pro rozpoznávač je také první, druhá a třetí derivace vstupního signálu. První derivace je někdy nazývána delta koeficienty a druhá akcelerační koeficienty. Derivace můžeme počítat podle jednoduchého vztahu d t = c t+w c t W 2W kde W je šířka tzv. delta okna, která závisí na uživateli. Druhou(respektive třetí) derivaci obdržíme jednoduše dosazením delta(respektive akceleračních) koeficientů(tedy derivace první) do předešlého vztahu. Delta koeficienty lze také počítat složitějším vztahem Ww=1 w(c t+w c t w ) d t = 2 W w=1 w 2 postup pro výpočet dalších derivací je obdobný jako u jednoduchého případu. Výběr použitého vztahu závisí na vstupním řečovém signálu. Algoritmy derivací řečového signálu jsme neimplementovali, proto se o nich nadále nebudeme zmiňovat Zpracování ve frekvenční oblasti Operace v časové oblasti slouží spíše pro předzpracování signálu. Příznaky této oblasti získané poskytují pouze základní obrázek o vstupním signálu. Abychom ze signálu odfiltrovali informace závislé na řečníkovi(především výšku jeho hlasu) a získali pokud možno co nejčistší obsaženou informaci, musíme signál převést do frekvenční oblasti a zde ho dále zpracovávat Převod do frekvenční oblasti Převod do frekvenční oblasti provádíme vzhledem k povaze vstupu pomocí Diskrétní Fourierovy transformace(dft), která je definována vztahem X(k)= nk N 1 n=0 x(n)e j2π N,pro K <0,N 1 >

21 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI 7 DFT je definovaná jako operace s komplexními čísly. To pro nás není nejvhodnější, protože transformujeme vzorky signálu, tedy čísla reálná. Můžeme samozřejmě za imaginární složky doplnit nuly, to však není efektivní. Existují však postupy, zmíněné v kapitole 4.6.3, které umožňují využít komplexní DFT pro transformaci reálných posloupností efektivně. Algoritmuspřímovyplývajícízdefinicebymělčasovousložitost O(n 2 ).Pomocítechnikyrozděl a panuj lze dosáhnout časové složitosti O(n log n). Algoritmy využívající tuto techniku souhrnně nazýváme FFT algoritmy Spektrální výkonová hustota Užívá se při zpracování náhodných signálů. Vypočte se jako druhá mocnina amplitudového spektra, tedy G(ω)= F(ω) Oddělení buzení od modifikace Řečovýsignálseskládázedvouzákladníchsložek-zbuzeníamodifikace.Buzeníjedáno základním kmitočtem hlasivek, zatímco modifikaci ovlivňuje artikulační trakt. Pro úspěšné rozpoznávání řeči je vhodné odfiltrovat složku buzení, protože samotná výška hlasu nemá na informační hodnotu slova vliv. V časové oblasti je řečový signál dán konvolucí těchto složek s(t)=g(t) h(t)= g(τ)h(t τ)dτ kde g(t) představuje složku buzení a h(t) složku modifikace. Převodem do frekvenční oblasti získáváme z konvoluce součin(díky vlastnostem DFT) S(f)=G(f)H(f) Složky buzení jsou bohužel rozesety po celém spektru lidský hlas není jednoduchý sinus, ale skládám se z mnoha harmonických udávajících právě barvu hlasu. Nemůžeme je tedy jednoduše odfiltrovat. Pro oddělení využíváme kepstrální(kepstrum = spektrum spektra) koeficienty c(n), které převádějí tento součin na součet. Kepstrum je definováno jako ln G(f)= c(n)e j2πfn n= Suma v rovnici je vlastně definice DFT, můžeme tedy kepstrální koeficienty c(n) vyjádřit jako c(n)=f 1 (ln G(f)) G(f) odpovídá spektrální hustotě výkonu, kterou lze získat z DFT umocněním na druhou. Po dosazení máme c(n)=f 1 (ln F(s[n]) 2 ) Na kvefrenční ose(ose kepstrálních koeficientů) je buzení umístěno na nižších hodnotách, zatímco modifikace na vyšších. Můžeme tedy jednoduchým hornopropustným filtrem(případně nepoužitím některých koeficientů s nižšími indexy) odstranit složku buzení.

22 8 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI Zohlednění frekvenční charakteristiky lidského ucha DFT nezohledňuje fakt, že lidské ucho má na nižších frekvencích vyšší rozlišení než na frekvencích vyšších. Protože přizpůsobení rozpoznávače vlastnostem lidských orgánů zvyšuje úspěšnost rozpoznávání, je vhodné nějak zvýšit rozlišení na nižších frekvencích. To lze provést aplikací logaritmicky rozmístěných integračních filtrů. Každý filtr zabírá určitou část spektra a nasčítává hodnoty spektrálních čar, které pod něj spadají. Filtry mohou mít různý tvar, nejčastěji jsou používány filtry trojúhelníkové, které se se zvyšující se frekvencí rozšiřují. Tvar filtrů udává součinitel, kterým jsou násobeny sčítané spektrální čáry. Spektrální čáry na krajích trojúhelníku jsou násobeny malým reálným číslem, takže se neuplatní tolik, jako spektrální čáry pod vrcholem trojúhelníku. Příklad trojúhelníkových filtrů uvádí obrázek 2.6 Obrázek 2.6: Banka logaritmicky umístěných trojúhelníkových filtrů Filtry jiných tvarů se používají v rozpoznávačích pro speciální aplikace, viz např. kapitola Pro nelineární rozmístění filtrů v souladu s logaritmickým charakterem lidského ucha můžeme využít konverzi frekvenční osy z Hertzů na Mely(viz[14]) podle vztahu F Mel =2959log 10 (1+ F Hz 700 ) Tím získáme logaritmickou osu, nad kterou následně zkonstruujeme banku trojúhelníkových filtrů, ze kterých získáváme energii jednotlivých frekvenčních pásem namísto DFT. Protože je osa logaritmická, budou filtry na nižších frekvencích početnější a užší, což odpovídá vyšší citlivosti lidského ucha v této oblasti Mel-frekvenční kepstrální koeficienty Úvahy z kapitol a můžeme spojit v jeden algoritmus, tedy postup, kdy určíme kepstrální koeficienty ze signálu přizpůsobenému charakteristikám lidského ucha s vyšším rozlišením v hloubkách. Nejprve potřebujeme získat amplitudy jednotlivých frekvencí po uplatnění trojúhelníkových filtrů. Na výsledné amplitudy uplatníme diskrétní cosinovou transformaci (DCT), která zde zastupuje inverzní DFT[15] dle vztahu: c i = N 1 j=0 m j cos( πi N (j+1 2 ))

23 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI 9 Jedná se tedy o standardní DCT-II, často zvanou pouze DCT Relativizace vstupního signálu V případě dlouhé promluvy mohou absolutní hodnoty signálu, odstup signálu od šumu apod. značně kolísat, což lidskému uchu nevadí, protože pracuje s relativními hodnotami, nikoliv s absolutními. Na hodnoty vypočtených kepstrálních koeficientů však absolutní hodnota signálu vliv má. Proto je vhodné před DCT zařadit relativní spektrální filtr(rasta). RASTA spočívá ve třech krocích: 1. Spektrální složky jsou zkomprimovány nelineárním kompresním filtrem(např. logaritmem) 2. Na každou zkomprimovanou složku je uplatněn vyhlazovací filtr. 3. Na upravené složky je aplikován expanzní filtr, inverzní ke kompresnímu. Definice kompresních a expanzních filtrů je možné najít v literatuře[4]. Aby byla relativizace účinná, je zapotřebí relativně složitých filtrů. Protože jsme tyto filtry neimplementovali, nebudeme se zde dále relativizací zabývat Normování délky artikulačního traktu Z důvodů různých délek artikulačních traktů u různých lidí může být výhodné přizpůsobit měřítko Melovské frekvenční osy před aplikací trojúhelníkových filtrů. Jak plyne z[5], postačí lineárnízměnaskoeficientem α <0,8;1,2 >.Hodnotuparametru αjetřebastanovitexperimentálně pro každého řečníka. Změny tohoto parametru provádíme automaticky zpětnovazebně podle úspěšnosti rozpoznávání Lombardův efekt Lombardův efekt nastává, pokud se mluvčí nachází v hlučném prostředí, kde je šum tak silný, že ho lze stěží překonat. Mluvčí se snaží, aby byla řeč výkonově efektivnější, čímž značně změní charakteristiky své řeči. U mužů je tato změna charakteristik odlišná od žen. Úspěšnost rozpoznávání v případě Lombardova efektu může poklesnout až o 70%. Tomuto poklesu je možné zabránit a přitom v podstatě zachovat vnitřní strukturu frontendu vhodnou modifikací uvedených algoritmů. První takovou změnou je dle[6] použití banky obdélníkových filtrů namísto banky filtrů trojúhelníkových(viz ). Další účinnou změnou je použití LPC(linear predictive coding, viz[14]) místo DCT v konečném stupni výpočtu Mel-frekvenčních kepstrálních koeficientů. Úspěšnost upraveného rozpoznávače při Lombardově efektu je pak asi o 20% horší, než úspěšnost běžného rozpoznávače v tichém prostředí. Jde o velké zlepšení, které má však i své stinné stránky. Zhoršuje se totiž úspěšnost rozpoznávání řeči bez Lombardova efektu(v řádech jednotek procent). Proto je vhodné umět zařazovat tyto změny do předzpracovávacího řetězce dynamicky. Algoritmus LPC není součástí implementované části. Lze jej však případně snadno zařadit na místo bloku DCT Vnitřní struktura frontendu rozpoznávače řeči Algoritmy popsané v předcházejících odstavcích je třeba uspořádat do zpracovávajícího řetězce frontendu rozpoznávače řeči tak, aby efektivně plnily svůj účel. Kvůli překryvu dat v rámcích, do kterých je signál dělen, je vhodné provést nejprve operace, které dělení do rámců nevyžadují.

24 10 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI Jde o střední hodnotu a preemfázi. Pokud bychom zpracovávali jednotlivé rámce, aplikovali bychom tyto algoritmy několikrát na stejná data se stejným výsledkem, což je zbytečné plýtvání výpočetním výkonem. Frontend tedy začíná svoji práci filtrováním střední hodnoty(viz obr. 2.7). Toto filtrování je možné provádět staticky či dynamicky, to záleží na volbě implementátora. Následuje preemfáze, která posílí vyšší frekvence v audio signálu. Po preemfázi provádíme dělení dorámcůdlouhýchcca25msspřekryvemcca15ms. Obrázek 2.7: Část frontendu provádějící předzpracování Po rozdělení signálu do jednotlivých rámců zpracováváme již samostatně tyto rámce(viz obr. 2.8). Cílem je extrahovat z rámců koeficienty reprezentující foném v daném rámci. K této extrakci slouží celkem tři algoritmy- vyhodnocení počtu průchodů signálu nulou, krátkodobá energie a kepstrum. Obrázek 2.8: Zpracování a extrakce příznaků z rámce Princip výpočtu kepstra je naznačen na obrázku 2.9. Nejprve provedeme okénkový výběr, čímž zpřesníme výsledky Fourierovy transformace, která následuje. Použité okénko je typicky Hammingovo. Protože se rámce překrývají, nepřicházíme o podstatné informace, které utlumíme na okrajích rámce jsou totiž obsaženy v sousedních rámcích. Po Fourierově transformaci následuje logaritmus v souladu s kapitolou o oddělování složky buzení a modifikace signálu. Po zlogaritmování provedeme filtraci bankou trojúhelníkových logaritmicky rozmístěných integračních filtrů, čímž reflektujeme vyšší citlivost lidského ucha na nižší frekvence. Závěrečnou operací je diskrétní kosinová transformace, v případě eliminování Lombardova efektu nahrazovaná transformací LPC(viz kapitola ).

25 KAPITOLA 2. ALGORITMY ROZPOZNÁVAČE ŘEČI 11 Obrázek 2.9: Detail výpočetního řetězce kepstra

26 12 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 3 Návrh řešení na procesoru Cell 3.1 Programování Cell Broadband Engine Architektura procesoru Procesor Cell Broadband Engine(dále jen Cell) vyvinuly firmy IBM a Sony v letech Procesor sestává z devíti procesorových jader, z čehož jedno jádro je tzv. jednotka PPU(PowerPC processor unit) a ostatní jádra SPU(Synergic processor unit). Cell je také možno dodávat s omezeným počtem jader SPU. Celý procesor je taktován na 3,2 GHz. Schema architektury procesoru Cell je na obrázku 3.1 Obrázek 3.1: Architektura procesoru Cell, převzato z[1] Narozdíl od jednotky PPU nemají jednotky SPU přímý přístup k hlavní(externí) paměti systému. Programový kód, který vykonávají, i data, nad kterými pracují, je uložen v tzv. Local store(ls), 256 kb velké paměti, která je vlastní každému SPU. Přenosy mezi hlavní pamětí a LS jsou realizovány prostřednictvím DMA. Přenos dat tedy řídí řadič DMA, zatímco jednotky mohou provádět výpočet nad daty, která se už přenesla. Díky tomu je možné využívat princip double bufferingu, kdy jednotka vždy provádí výpočet nad jedním ze dvou bufferů, zatímco druhý buffer je přes DMA plněn novými daty pro další zpracování. Po dokončení výpočtu a přenosu se úloha bufferů vymění. Jádro PPU je plnohodnotným superskalárním PowerPC procesorem včetně sady vektorových instrukcí AltiVec. Je vhodné jej využít pro řízení výpočtu(rozdělování úloh mezi SPU), běh operačního systému(jde o standardní PowerPC) či pro výpočty, které lze jen těžko vektorizovat (paralel na úrovni instrukcí) a na SPU by, díky jeho vlastnostem, nebyly efektivní. Naopak jednotky SPU mají čistě vektorovou architekturu. Délka vektoru je 128 bitů, tedy 16 bytů. Jednotka SPU má k dispozici 128 šestnáctibytových registrů, které používá jak pro celočíselné operace, tak pro operace s plovoucí desetinnou čárkou. Registr tedy může obsahovat vektoryrůznýchdatovýchtypů,ato16nezávislýchcelýchčíselošířcejednohobytuažpo4

27 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 13 čtyřbytové celočíselné hodnoty. Pro operace s desetinnými čísly jsou k dispozici datové typy o čtyřech číslech typu float či dvou číslech typu double. Kódování těchto čísel je v souladu s normou IEEE 754, viz[11]. Veškeré matematické operace probíhají nad celým vektorem. Výpočty se samostatnými skalárními čísly se provádějí nepřímo pomocí vektoru s jedinou platnou položkou. Přístup do paměti také podléhá vektorové architektuře jádra. Nejmenší objem dat, který lze mezi registrem a pamětí přenášet je 16 bytů(tedy délka registru). Data navíc musí být zarovnána na adresu dělitelnou šestnácti Specifika programování SPU Při programování jednotek SPU je třeba zohlednit některé speciální vlastnosti této architektury, které je odlišují od ostatních procesorů. Především jde o vektorovou povahu procesoru. Nemá význam provádět na SPU skalární výpočty, k tomu slouží PPU. Prováděním skalárních algoritmůnaspuztrácímevýkonpředevšímpřioperacíchspamětí SPUumínačístzLS pouze celý vektor, který následně musí transformovat na skalární číslo pomocí instrukce rotace. Skalární čísla jsou reprezentována jako vektory s hodnotou na pozici nula. Činnost SPU při takovéto operaci je vyobrazena na obrázku 3.2. Celé čtení trvalo 10 taktů. Přitom při správné optimalizaci a vytíženosti pipeline může zabrat prakticky jen jeden takt. Obrázek 3.2: Stavy pipeline při načítání skalárních dat pomocí SPU Operace SPU jsou vykonávány pomocí dvou pipeline. Každá pipeline může mít rozpracováno několik instrukcí. Pokud však mezi instrukcemi existují datové závislosti(některá instrukce potřebuje výsledky instrukce předchozí) musí pipeline nejprve dokončit instrukci, na které ostatní závisí a až pak může pokračovat vykonáváním instrukcí ostatních. Tento jev je samozřejmě nežádoucí, není při něm plně využita výpočetní kapacita SPU. Pipeline SPU rozlišujeme jako sudou a lichou pipeline, což souvisí s adresami instrukcí v paměti, které ta která pipeline vykonává. Každá pipeline je však dedikována jen pro určité operace. Lichá pipeline provádí instrukce pro práci s pamětí, skoky, rotace, posuvy a instrukce pro přeuspořádávání bytů v rámci registrů(instrukce shuffle), zatímco sudá pipeline provádí logické a aritmetické operace jak celočíselné, tak s čísly v plovoucí řádové čárce. Protože vykonání instrukce trvá určitý počet taktů a SPU může díky pipeline zpracovávat

28 14 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL několik instrukcí současně, je třeba udržovat dostatečnou míru datové nezávislosti mezi po sobě následujícími instrukcemi. Tedy pokud mezi dvěma operacemi existují datové závislosti, pak je vhodné mezi tyto dvě závislé operace vložit operaci další, nezávislou. V případě jednodušších algoritmů může být problém takovou nezávislou operaci najít. Experimenty ukazují, že výkon SPU značně trpí krátkými cykly. Je to způsobeno především tím, že krátké cykly neumožní dostatečně využít hlubokou pipeline SPU. Cykly v algoritmech je pro zvýšení efektivity třeba nějakým způsobem prodloužit, aby docházelo k menšímu počtu vyhodnocování podmínky a skoků. Jednoduchým principem je rozvíjení cyklů(loop unrolling), kdy tělo cyklu vykonáme několikrát za sebou, než testujeme podmínku. V programu tedy umístíme tělo cyklu několikrát pod sebe. Rozvíjení cyklů je možné dále využít pro zvýšení datové nezávislosti po sobě následujících instrukcí. V typickém případě, kdy tělo cyklu tvoří operace načtení hodnoty z paměti, výpočet s touto hodnotou a uložení výsledku, má rozvíjení cyklů vliv pouze na méně časté vyhodnocování podmínky a skok. Díky rozvinutí cyklu však lze pracovat s více sadami registrů, typicky se dvěma. Zatímco nad jednou sadou provádíme výpočet, druhou sadu plníme daty z paměti. Díky dvěma pipeline SPU je možné tyto operace provádět zároveň. Po dokončení začneme provádět výpočet nad druhou sadou, zatímco první sada přechází na práci s pamětí. Sady registrů střídáme v kruhové frontě, pokud využíváme pouze dvě, jedná se o jakýsi registrový double-buffering. Konkrétní realizace může vypadat například takto: Při startu algoritmu načteme z paměti parametry potřebné pro první dvě iterace cyklu. V rámci cyklu spustíme požadovanou aritmetickou operaci nad první skupinou parametrů a ihned poté začneme načítat třetí sadu parametrů. Poté naplánujeme uložení výsledku, které optimalizující překladač umístí na vhodné místo po dokončení výpočtu. Pokračujeme zpracováním druhé sady parametrů a načítáním čtvrté. Třetí sada je již v tuto chvíli připravena pro další iteraci. Další informace o programování SPU lze nalézt v literatuře[1]. 3.2 Návrh vnitřní reprezentace dat Až na malé výjimky disponuje SPU pouze takzvanými SIMD instrukcemi. SIMD instrukce vykonává určitou operaci nad větším počtem datových prvků najednou. Například existuje SIMD instrukce, která provede součet dvou čtveřic čísel typu float. Taková čtyři čísla nazýváme vektorem. Instrukce, která by provedla součet dvou skalárních čísel na SPU není k dispozici. Mají-li algoritmy plně využít možností SPU, je třeba navrhnout vnitřní reprezentaci zpracovávaných dat vhodnou pro tyto instrukce. K datům můžeme přistupovat v zásadě dvojím způsobem. První možností je zpracovávat čtyři položky běžného pole s daty(viz obr. 3.3), druhým způsobem pak zpracovávat vždy jednu položku čtyř nezávislých polí(viz obr. 3.4). Výhodou prvního způsobu je především návaznost datových struktur na referenční verze algoritmů. Celý systém můžeme nejprve implementovat skalárně a jednotlivé funkce pak SIM- Dizovat. Další výhodou je, že jde o přirozený formát vstupních dat digitální vzorky signálu tvoří souvislé posloupnosti. Nevýhody, které tento způsob zpracování přináší se projeví, pokud je třeba pracovat s jednotkou menší, než je jeden vektor. Pak je třeba vektory transformovat pomocí shuffle instrukcí apod. Mezi algoritmy, kterých se tento problém týká patří dynamický výpočet střední hodnoty(viz kapitolu ), preemfáze(kapitola ) či sudo-lichá dekompozice. Druhý způsob naopak pracuje se čtyřmi zcela nezávislými čísly typu float. Pokud existují nějaké blízké závislosti mezi skaláry v jednom poli, vyskytují se zde v podobě závislostí mezi jednotlivými vektory. Není proto třeba aplikovat na vektory instrukci shuffle a získávat z nich jednotlivá čísla typu float. Oproti předchozímu přístupu zde však musíme z paměti načíst více vektorů, zatímco v předešlém případě jsme obdrželi čtyři čísla najednou. Tato nevýhoda je však

29 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 15 Obrázek 3.3: Zpracovávání dat po jednotlivých rámcích s černě označeným vektorem Obrázek 3.4: Zpracovávání čtyř rámců najednou s černě označeným vektorem snáze řešitelná prostřednictvím použití většího počtu registrů, zatímco problém v předešlém algoritmu není prakticky řešitelný vůbec je dán povahou algoritmu. Další nevýhodou druhého způsobu je nutnost transformovat data na vstupu. V rámci vektoru jsou totiž uloženy vzorky ze čtyř různých posloupností. Tato transformace spočívá pouze v operacích čtení z paměti, ukládání do paměti a operace shuffle. Všechny tyto operace jsou vykonávány lichou pipeline, zatímco sudá pipeline je zcela nevytížená. Je tedy vhodné kromě samostatné funkce implementovat také funkci provádějící dvě operace transformaci a ještě jednu další, aritmetickou. Ideálním kandidátem je dynamický výpočet střední hodnoty, která je umístěná na počátku zpracovacího řetězce a kde v sudé pipeline existují datové závislosti. Přidání kódu pro transformaci samostatných vstupních posloupností na prokládané tedy tuto funkci příliš nezpomalí. Na základě úvah a experimentů jsme se rozhodli implementovat především druhý způsob reprezentace dat tedy data zpracováváme jako čtyři nezávislé proudy. V rámci experimentování však vznikly i méně výkonné funkce podléhající prvnímu způsobu zpracování dat. Může je upotřebit ten uživatel, který nebude zpracovávat větší množství promluv najednou. Pro jednotlivé promluvy mohou být tyto funkce rychlejší, než kdybychom zpracovávali jednu promluvu opravdovou a k tomu navíc tři prázdné na doplnění nezbytného počtu. 3.3 Návrh algoritmů V následujících odstavcích rozebereme možnosti implementace některých obtížnějších algoritmů potřebných pro frontend rozpoznávače řeči. Pro návrh implementace jednodušších algoritmů jsme využili postupy výše zmíněné rozvíjení cyklů, zpracování čtyř rámců prokládaně, snahu o datovou nezávislost po sobě následujících instrukcí a využití pokud možno obou pipeline SPU

30 16 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL Vzorků v rámci Vzorkovací frekvence Trvání rámce khz 32 ms khz 32 ms khz 32 ms khz 32 ms khz 32 ms Tabulka 3.1: Tabulka trvání rámců při daných vzorkovacích frekvencích Vzorků v rámci Vzorkovací frekvence 64 2,56 khz 128 5,12 khz ,24 khz ,48 khz ,96 khz ,92 khz Tabulka 3.2: Tabulka nutných vzorkovacích frekvencí pro rámec trvající 25 ms naráz Výpočet DFT Pro výpočet diskrétní Fourierovy transformace využijeme algoritmus FFT. Jde o algoritmus pracující na principu rozděl a panuj. Jeho složitost je logaritmická, na rozdíl od složitosti DFT plynoucí z definice, která je kvadratická. Algoritmů počítajících DFT v logaritmickém čase existuje několik. Výběr správného algoritmu je třeba učinit na základě dat, která zpracováváme. Především záleží na počtu prvků transformované posloupnosti. Existují algoritmy, které vyžadují, aby byl počet prvků mocninou dvou, jiné algoritmy pracují například pouze s prvočíselným počtem prvků. V našem případě jsme se rozhodli pro nejstarší známý algoritmus FFT, takzvaný Cooley-Tukey algoritmus. Důvody byly pragmatické tento algoritmus je implementován v Cell SDK. Algoritmus vyžaduje, aby délka transformované posloupnosti byla mocninou dvou. Toto omezení lze splnit vhodnou délkou rámce pro danou vzorkovací frekvenci, viz tabulky 3.1 a 3.2. Algoritmus implementovaný v rámci Cell SDK transformuje komplexní posloupnost. V našem případě však potřebujeme transformovat reálnou posloupnost, proto jsme původní algoritmus upravili. Dále jsme algoritmus přizpůsobili zpracování čtyř prokládaných rámců najednou. V definici Fourierovy transformace se vyskytují goniometrické koeficienty. Ty se v FFT objevují jakožto twiddle faktory a značí se zpravidla W. Jde o komplexní čísla. Základní operací FFT je tzv. motýlek, kdy spolu interagují dva prvky, přičemž jeden z nich(označovaný q) je před interakcí násoben určitým twiddle faktorem(viz obr. 3.5). Twiddle faktory lze získat vyhodnocením výrazů: Re[W i ]=cos( 2πi N ) Im[W i ]= sin( 2πi N ) pro i <0; N 2 >.Početpotřebnýchkoeficientůjetedyrovenpoloviněvelikostitransformované posloupnosti.

31 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 17 Obrázek 3.5: Motýlek- základní operace FFT Twiddle faktory je vhodné během inicializační fáze předpočítat a uložit do tabulky pro pozdější využití. Protože se jedná o goniometrické funkce, je výpočet twiddle faktorů poměrně náročný. Twiddle faktory však vykazují určitou symetrii(viz obr. 3.6). Toho lze využít pro ušetření výpočetního času i paměti. Platí následující vztahy: Re[W i+ N 4 Im[W i+ N 4 = Im[W i ] = Re[W i ] Im[W N 4 i]= Re[W i] Re[W 0 ]=1 Im[W 0 ]=0 Obrázek 3.6: Průběh twiddle faktorů, reálná složka modře, imaginární červeně Vztahy je možné odvodit z průběhu twiddle faktorů. Vyplývá z nich, že je možné všechny twiddlefaktorypředpočítatspoužitím N 4 volánígoniometrickéfunkcekosinus Výpočet reálné FFT prostřednictvím komplexní FFT Rámce transformované prostřednictvím FFT v rozpoznávači řeči obsahují vzorky vstupního signálu, tedy reálná čísla. DCT je však definována pro čísla komplexní a i transformace reálné

32 18 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL posloupnosti má komplexní výsledek. Nejjednodušší metodou výpočtu reálné FFT je naplnit imaginární složky vstupu nulami a spustit komplexní transformaci. Existuje však efektivnější způsob[10], který umožňuje provést reálnou FFT transformaci délky Npomocíkomplexnítransformacedélky N 2 následovanépomocnýmalgoritmem sudo-lichou dekompozicí(viz kapitolu ). ProtožesložitostFFTje O(Nlog N)asložitost sudo-lichédekompozice O(N),jevýsledná složitost O(Nlog N)+O(N)=O(Nlog N) Princip algoritmu vychází z možnosti výpočtu dvou reálných FFT pomocí jedné komplexní FFT stejné délky. Pokud bychom transformovali jednotkový skok v reálné oblasti, zatímco imaginární oblast bychom ponechali nulovou, získáme průběhy viditelné v pravé části obrázku 3.7.Jevidět,ževýsledkemjesudáfunkcevreálnéčástispektraalicháfunkcevimaginárníčásti. Když budeme transformovat jednotkový skok v imaginární části vstupní posloupnosti(obr. 3.8), dostáváme lichou funkci v reálné části výsledku a sudou funkci v imaginární. Liché funkce jsou navzájem opačné. Protože pro FFT platí princip superpozice, můžeme oba jednotkové skoky transformovat zároveň. Výsledkem budou součty dosavadních výsledků. Nyní je zapotřebí tyto výsledky od sebe nějak oddělit. Získaný výsledek je v reálné i imaginární části součtem sudé a liché funkce. Rozklad libovolné funkce na funkci sudou a lichou lze provést pomocí sudo-liché dekompozice(viz ). O výsledku platí: Sudá složka reálné části výsledku je reálná část spektra první posloupnosti. Lichá složka reálné části výsledku je imaginární část spektra druhé posloupnosti s opačným znaménkem. Sudá složka imaginární části výsledku je reálná část spektra druhé posloupnosti. Lichá složka imaginární části výsledku je imaginární část spektra první posloupnosti. Tatotvrzeníplynoupřímozobrázků3.7a3.8. Pro výpočet dvou reálných posloupností pomocí jedné komplexní tedy vytvoříme komplexní posloupnost, jejíž reálné složky prvků budou odpovídat prvkům první posloupnosti a imaginární složky prvkům druhé posloupnosti. Tuto komplexní posloupnost následně transformujeme pomocí FFT. Výsledek oddělíme sudo-lichou dekompozicí. Chceme-li vypočítat pouze jednu reálnou FFT, opět vytvoříme komplexní posloupnost, jejíž reálné složky naplníme složkami se sudými indexy(počítáno od nuly) reálné posloupnosti a imaginární složkami s lichými indexy. Vzniklou komplexní posloupnost podrobíme FFT. Výsledek dekomponujeme sudo-lichou dekompozicí. Po dekompozici zbývá ještě jeden krok FFT, tentokrát již velikosti reálné posloupnosti. Tímto postupem nesnižujeme počet kroků FFT, ten je nezbytně roven dvojkovému logaritmu velikosti FFT, avšak počítáme s FFT poloviční velikosti, čímž šetříme polovinu operací v každém kroku. Požadavek na uložení prvků reálné posloupnosti střídavě do reálných a imaginárních složek komplexní posloupnosti, kterou poté FFT transformuje, pro nás nemusí být omezující. Budeme-li komplexní čísla reprezentovat jako posloupnost reálných čísel, kdy čísla na sudých indexech jsou reálné složky a čísla na lichých indexech složky imaginární(tedy složky jsou uloženy prokládaně), postačí transformovanou reálnou posloupnost pouze přetypovat a ihned máme správný vstupní formát.

33 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 19 Obrázek 3.7: Odezva FFT na jednotkový skok v reálné oblasti(zdroj[8]) Sudo-lichá dekompozice Každou posloupnost lze rozložit na sudou a lichou složku, jejichž sečtením získáváme posloupnost původní. Rozklad je možno realizovat podle vzorců: x[i]+x[n i] x E [i]= 2 x[i] x[n i] x O [i]= 2 kde Njepočetprvkůposloupnostiai <0;N/2 >.Výslednáposloupnost x E obsahujesudou složkupůvodníposloupnostiax O paklichou. Protože se jedná o přeuspořádání prvků pole během jednoho průchodu, je složitost sudo-liché dekompozice O(N), tedy lineární Výpočet čtyř reálných FFT Vzhledem k navržené vnitřní reprezentaci dat, kdy pracujeme se čtyřmi nezávislými posloupnostmi najednou je třeba navrhnout FFT, která bude transformovat tyto čtyři posloupnosti. V kapitole je popsán způsob, jak provést transformaci dvou reálných FFT pomocí jedné komplexní FFT stejné délky. Chceme-li spočítat čtyři FFT, můžeme buď použít tento algoritmus dvakrát nebo implementovat algoritmus vyhodnocující dvě komplexní FFT najednou následovaný sudo-lichou dekompozicí pro dvě komplexní posloupnosti. Druhá možnost je pro nás výhodná, protože nám napomáhá snížit datové závislosti mezi po sobě jdoucími operacemi. Implementace sudo-liché dekompozice pro dvě komplexní posloupnosti je triviální. Protože jsou vstupní posloupnosti i výsledné funkce na sobě zcela nezávislé,

34 20 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL Obrázek 3.8: Odezva FFT na jednotkový skok v imaginární oblasti(zdroj[8]) jedná se o jednoduché zdvojení implementace pro jednu posloupnost. Pro výpočet FFT dvou komplexních posloupností je možné přímo využít stávající implementaci FFT jedné komplexní posloupnosti s drobnou úpravou- vypuštěním prvního kroku. Obrázek 3.9: Operace mezi prvky při standardní FFT Na obrázku 3.10 můžeme sledovat co se stane, pokud neprovedeme první krok FFT. Oproti standardní FFT(obrázek 3.9) nedojde k operaci mezi sousedícími prvky. Přivedeme-li tedy na vstup FFT bez prvního kroku dvě komplexní FFT uložené prokládaně, nedojde k jejich interakci. Abychom obdrželi správný výsledek, je ještě třeba upravit násobící koeficienty(twiddle faktory). Každý koeficient je oproti standardní FFT použit pro dva sousedící prvky. Lze tedy využít koeficientů předpočítaných pro jednoduchou FFT s tím, že zavedeme jinou formu inde-

35 KAPITOLA 3. NÁVRH ŘEŠENÍ NA PROCESORU CELL 21 Obrázek 3.10: Dvojitá FFT, nezávislá data jsou od sebe barevně odlišena xování, nebo koeficienty uložíme do předpočítaného pole duplicitně. Pro naše účely jsme zvolili první možnost, protože nedojde k výraznému snížení výkonu a ušetříme tím paměť. Vstup požadující prokládání komplexních posloupností navíc ve formátu střídajících se reálných a imaginárních složek přímo odpovídá formátu čtyř prokládaných reálných posloupností, které budeme touto FFT transformovat Výpočet DCT pomocí FFT VýpočetDCTvedezdefinicenaalgoritmussložitosti O(N 2 ).Tatotransformacejevšakvelice podobná DFT, proto se nabízí myšlenka, zda je možno DCT počítat podobným algoritmem jakofft,jehožsložitostje O(Nlog N).Dle[2]seukazuje,žeDCTjemožnopočítatpřímo pomocí algoritmu FFT, přičemž je zapotřebí několika pomocných výpočtů, jejichž složitost je všaklineární.výslednáčasovásložitostjetedy O(Nlog N)+O(N)=O(Nlog N). Výpočet sestává ze tří kroků 1. Ze vstupní posloupnosti x vygenerujeme posloupnost y podle předpisu y[i]=x[2i] y[n 1 i]=x[2i+1] přičemžnjedélkaposloupnosti,kterásemátransformovatai <0; N 2 1 >. Výsledkem je, že položky na sudých indexech jsou uspořádány na začátku pole a položky na lichých indexech v opačném pořadí od konce pole. Obě posloupnosti jsou reálné, protože DCT nepracuje s komplexními čísly. 2. Provedeme reálnou FFT nad získanou posloupností y. Získáváme posloupnost obrazů Y. 3. Z posloupnosti Y získáme posloupnost X, která odpovídá výsledné DCT, operací X[i]=Re(Y[i] (cos( iπ iπ ) jsin( 2N 2N )) kdenjedélkatransformovanéposloupnostiai <0;N 1 >. Z komplexního výsledku FFT dostáváme reálnou posloupnost.

36 22 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL 4 Implementace na procesoru Cell Následující odstavce se vztahují přímo k implementovaným verzím algoritmů dostupných na přiloženém CD. Doporučujeme čtenáři, aby měl při čtení následujícího textu vždy patřičný algoritmus připraven k nahlédnutí, usnadní se tím orientace v textu. 4.1 Filtrování střední hodnoty K odfiltrování střední hodnoty potřebujeme znát její hodnotu. Tu lze určovat buď staticky na určitém bloku dat nebo též dynamicky pomocí digitálního derivačního článku Statické zpracování Statické zpracování implementuje funkce civ mean static, která je k dipozici ve třech variantách: civ mean static je skalární implementace, která očekává na vstupu ukazatel na pole vzorkůtypufloatavelikosttohotopoleavracíjednuhodnotutypufloat,kteráodpovídá vypočtené střední hodnotě. Funkce nejprve sečte hodnoty v poli a pak je vydělí počtem vzorků. Spočte tedy aritmetický průměr. Povolíme-li určitou míru rozvinutí cyklů, musí být velikost pole s touto mírou celočíselně dělitelná. Funkce pak v rámci cyklu přičítá k celkové sumě vždy několik položek pole. Jedná se o referenční verzi funkce, která není nijak optimalizovaná. civmeanstaticf4narozdílodcivmeanstaticpožadujenavstupupoletypuvector float. Funkce sčítá vektory vzorků, čímž nakonec obdrží čtyři součty, první je výsledek prvních položek v rámci vektorů, druhý druhých atd. Díky asociativitě součtu nyní postačí sečíst tato čísla. Provedeme tedy paralelní redukci(viz obr. 4.1), kdy pomocí posunu sečteme liché položky vektorů se sudými a následně tyto dva součty. Obrázek 4.1: Paralelní redukce sčítání složek vektoru Povolíme-li rozvinutí cyklů, jsou průběžné součty ukládány do více registrů. Počet těchto registrů je roven stupni rozbalení cyklu. Po průchodu vstupním polem tedy musíme provést paralelní redukci registrů a také paralelní redukci položek těchto registrů. Pořadí těchto operací je libovolné můžeme nejprve sečíst položky v jednotlivých registrech a pak sečíst tato čísla, nebo nejprve sečíst registry a pak sečíst položky v jednom registru.

37 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL 23 Součet samostatných čísel a vektorů se od sebe co do náročnosti provedení nijak neliší. Rozhodnutí je třeba učinit na základě algoritmu s rozvinutými cykly, v případě používání jednoho registru ztrácí tato úvaha smysl. První způsob nám poskytuje větší nezávislost mezi daty po sobě následujících operací součtu, druhý způsob vyžaduje méně operací součtu, avšak více závislých. Výběr tedy záleží na době zpracování instrukce součtu. Ukazujese,žedruhýzpůsob,kdyjesoučtůménějevýhodnější přimaximálníúrovni rozbalení cyklů zabere cca 25 taktů, zatímco první způsob 35(jedná se o výsledky získané statickou analýzou). Na závěr je výsledný součet vydělen počtem vzorků v poli, což se provede vynásobením vektoru převrácenou hodnotou tohoto počtu. Výpočet převrácené hodnoty není nijak závislý na zbytku algoritmu, můžeme jej tedy provést kdekoliv tak, aby byla hodnota pro násobení včas připravena. Protože funkce vrací pouze jednu hodnotu, musíme ji z výsledného vektoru vyextrahovat. Zde využijeme znalosti reprezentace skalárních čísel na SPU skalární číslo typu float je uloženo v první položce vektoru. Paralelní redukci tedy uspořádáme tak, aby finální součet a následně i podíl byl v této položce. Extrakci pak není třeba provádět. Rozvineme-li cykly, musí být počet vzorků ve vstupním poli soudělný se čtyřnásobkem úrovně rozvinutí. Úzkým hrdlem algoritmu je závěrečná paralelní redukce, která při plném rozvinutícyklůzabere25+20=45taktů.prosrovnáníuvádíme,žejedencyklusosmi vektorových součtů trvá 15 taktů hodin. civ mean static f4s slouží pro výpočet čtyř středních hodnot čtyř polí najednou. Na vstupu je očekáváno pole typu vector float. Každý vektor v poli reprezentuje čtyři položky čtyř nezávislých polí. Výpočet probíhá obdobně funkci civ mean static f4. Rozdíl jevtom,žesenevykonávázávěrečnáparalelníredukcepopoložkách,čímžjevýpočeto20 taktů kratší Dynamické zpracování Dynamické určení střední hodnoty je založeno na digitálním derivačním článku. Funkce civ mean dynamic, která tento článek implementuje požaduje na vstupu pole vzorků, které má zpracovat, předchozí střední hodnotu a parametr gamma. Funkce provádí výpočet výrazu: f(x)=γ s n 1 +(1 γ) s n (4.1) Funkce umí zpracovat i více vzorků. Návratovou hodnotou je pak střední hodnota po dynamickém zpracování posledního z nich. Protože se předpokládá, že tato funkce bude volána často, je pro urychlení výpočtu kromě parametru gamma vstupem také parametr mgamma, který odpovídá hodnotě 1 γ. Výpočet dynamické střední hodnoty je implementován ve dvou verzích funkcí civmeandynamicacivmeandynamicf4s. civ mean dynamic je skalární implementací vztahu 4.1. Vstupními parametry je pole vzorků typu float. Dalšími parametry jsou počet položek v tomto poli, gamma a mgamma a předchozí vypočtená střední hodnota. Funkce navrací dynamicky odhadnutou střední hodnotu po zpracování předaných vzorků. Zvýšením stupně rozvinutí cyklu je v rámci jednoho cyklu zpracován počet vzorků shodný se stupněm rozvinutí. Pole vzorků pak musí být soudělné s úrovní rozvinutí cyklů. Protože jde pouze o referenční verzi výpočtu, má rozvinutí vliv jen na počet skoků v rámci výpočtu, další optimalizace zde nejsou provedeny. civ mean dynamic f4s dynamicky vyhodnocuje střední hodnotu několika posloupností vzorků najednou. Vstupem je jednak pole vektorů typu vector float, kde každý vektor

38 24 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL reprezentuje čtyři položky čtyř nezávislých polí. Dalším parametrem je počet vektorů v poli vektorů, který je shodný s počtem položek v každé posloupnosti. Vektory vec gamma avecmgammaobsahujíčíslo γresp.1 γvkaždésvépoložce,čímžsešetříčas,kterýbybyl spotřebován na výpočet 1 γ a na rozkopírování jedné složky vektoru do všech ostatních. Posledním parametrem je vektor udávající poslední doposud vypočtenou střední hodnotu pro každou vstupní posloupnost. Pokud nevyužijeme možnost rozvinutí cyklů, probíhá výpočet obdobně, jako u funkce civ mean dynamic. To není příliš výhodné, protože je zde velká závislost mezi daty. Při míře rozvinutí cyklů 2 a více je možno využít registrový double buffering(viz kapitolu 3.1.2), který tuto závislost mezi daty snižuje. Výpočetní vzorec nelze vyhodnotit pomocí jedinéinstrukceaobsahuječástnapředchozímvýpočtuzávislou(γ s n 1 )anezávislou ((1 γ) s n ).Můžemetedypospuštěnífunkcespočítatdvěnezávisléčásti ((1 γ) s 1 ) ((1 γ) s 2 ) Potépokračujemevýpočtem s 1 =(γ s 0 )+((1 γ) s 1 ),spustímevýpočet((1 γ) s 3 ), spočítáme s 2 =(γ s 1 )+((1 γ) s 2 )atd.tentopostupvedenaurčitézrychlení,avšak pro SPU jsou datové závislosti stále příliš těsné. Problém nastává především ve výpočetní, sudé pipeline, zatímco lichá pipeline je nevytížená Dynamické zpracování spolu s transpozicí Pokud zpracováváme čtyři rámce najednou, je třeba je na vstupu převést do prokládaného formátu, tedy takového, kdy vektor čtyř čísel obsahuje vždy jeden vzorek z každého rámce. Běžným formátem vstupu budou totiž spíše oddělené rámce. Protože transformace dat z jednoho formátu do jiného je prací především pro lichou pipeline, je možné ji spojit s jinou operací do jedné funkce. Vhodnou funkcí se jeví dynamické vyhodnocování střední hodnoty. V této funkci panují značné datové závislosti mezi instrukcemi vyhodnocovanými sudou pipeline. Přiměřená zátěž liché pipeline tak nezpůsobí příliš velké zpomalení. Navíc je tato funkce používána hned na začátku zpracovávajícího řetězce frontendu, což je pro konverzi formátu nezbytné. Transpozice vstupních dat spolu s výpočtem střední hodnoty je implementována funkcí civ mean dynamic and transp f4s. Vstupem funkce jsou čtyři rámce. Výstupem je spočtená střední hodnota a proud dat prokládaných rámců. Funkce ještě nebyla důkladně testována, proto je zmiňována pouze zde, jako doplňková možnost Odečtení střední hodnoty Poté, co střední hodnotu získáme, je třeba ji odečíst od původního signálu. K tomu slouží funkce civ addconst a civ addconst f4s. Úkolem obou funkcí je přičíst k zadanému poli zadanou hodnotu. Chceme-li odečíst střední hodnotu, zadáme ji jako parametr pro sčítání s opačným znaménkem. civ addconst je referenční verzí funkce psanou ve standardním C. K poli čísel typu float přičítá jiné číslo typu float. Počet součtů, který je vykonán v rámci jedné iterace algoritmu je rovný úrovni rozvinutí cyklů. Proto musí být délka pole s touto úrovní soudělná.

39 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL 25 civ addconst f4s je optimalizovaná verze pracující se čtyřmi prokládanými proudy dat. Přičítanou hodnotou je vektor, jehož položky nemusí být stejné každá položka je přičítána k jednomu proudu dat. Počet funkcí používaných registrů je roven úrovni rozvinutí cyklů. Funkce nejprve načte hodnoty do všech registrů, provede sečtení všech registrů s danou hodnotou a následuje uložení. Načtení a uložení vytěžuje lichou pipeline, zatímco součet sudou. Proto při rozvinutí cyklů začíná sčítání prvního registru ještě během načítání registrů dalších. Stejně tak ukládání výsledků probíhá paralelně se sčítáním. Přesné seřazení instrukcí ponecháváme na optimalizujícím překladači. 4.2 Preemfáze Preemfáze slouží k zesílení amplitud vyšších frekvencí v řečovém signálu. Je implementována vedvouverzíchfunkcemicivpreempacivpreempf4s. civ preemp je referenční, skalární, nepříliš optimalizovaná funkce pro posílení vyšších amplitud. Jsou-li rozvinuty cykly, pak algoritmus vykoná tolik kroků během jedné iterace, kolik je úroveň rozvinutí. civ preemp f4s slouží pro kalkulaci preemfáze čtyř prokládaně uložených datových proudů. Na vstupu očekává kromě pole pro zpracování a jeho velikosti také vektorový parametr kappa, který udává míru preemfáze. Tento parametr se běžně pohybuje v rozpětí 0,95 0,99. V rámci optimalizace jsme tento parametr učinili vektorovým, přičemž je očekáván vektor, jehož položky jsou všechny rovny κ. Vzhledem k tomu, že funkce potřebuje k výpočtu dvě hodnoty z pole(současnou a předcházející), využili jsme optimalizace typu registrový double buffering pro výpočet jsou používány dvě sady registrů, přičemž s jednou je počítáno, zatímco s druhou se provádí operace s pamětí. Úlohy registrových sad se poté vymění(viz kapitolu 3.1.2). 4.3 Váhování rámců okénkem Funkce pro práci s okénky lze rozdělit do dvou základních kategorií funkce, které okénka generují a funkce, které vygenerovaná okénka aplikují na signál Funkce pro generování okének Implementovány jsou funkce pro vygenerování dvou různých okének pro obdélníkové a pro Hammingovo. civ win get rect generuje obdélníkové okénko, tedy násobení jedničkou v zadaném rozsahu. Parametry je alokované pole v paměti, kam se mají násobící koeficienty uložit a velikost požadovaného pole. Jedná se o neoptimalizovanou referenční verzi algoritmu. Pokud nastavíme určitou úroveň rozvíjení cyklů, musí být požadovaná délka okénka s touto úrovní soudělná. V rámci jednoho cyklu algoritmu se bude generovat tolik násobících koeficientů, kolik je úroveň rozvinutí cyklů. civ win get rect s slouží k vygenerování okna pro okénkování prokládaných posloupností vzorků. Pracuje na stejném principu, jako funkce civ win get rect. Výsledek je ukládán do pole typu vector float. civ win get hamming generuje Hammingovo okénko(viz obr. 4.2) do pole typu float. Jedná se o základní skalární verzi. Rozvinutím cyklů získáme výpočet několika koeficientů v jednom cyklu algoritmu, což obnáší podmínku soudělnosti požadované délky okna s úrovní rozvinutí cyklů.

40 26 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL Obrázek 4.2: Hammingovo okénko civ win get hamming s generuje Hammingovo okno pro váhování prokládaných posloupností. Jeho funkce je totožná s civ win get hamming, pouze výsledek výpočtu není ukládán do jedné proměnné typu float, ale do proměnné typu vector float, přičemž všechny položky mají stejnou hodnotu. Tato a předešlá funkce nejsou nijak optimalizovány. Předpokládá se, že budou využity jen jednou, při inicializaci aplikace. Statická analýza provedená nad pokusnou optimalizovanou verzí ukázala, že zdaleka nejefektivnější, jak pro čas programátora, tak pro čas výpočetní, bude výpočet Hammingova okna na nevektorovém PPU a jeho následný přenos do lokální paměti SPU Funkce pro okénkový výběr Okénko na signál aplikujeme pomocí operace násobení. Násobíme signál(o délce jednoho rámce) s vygenerovaným okénkem. Formáty vygenerovaného okénka jsou dva pro jeden rámec a pro čtyři prokládané rámce. První z nich generují funkce bez přípony, druhé z nich funkce s příponou s. Okénkový výběr zajišťují funkce rodiny civ win sel: civ win sel je referenční verze pracující s jednou posloupností(jedním rámcem). Není optimalizovaná a je napsána prostřednictvím standardního jazyka C. Vstupní pole, výstupní pole i předgenerované okénko tato funkce očekává ve formě ukazatele na typ float. Parametr size udává počet čísel ve zpracovávaném rámci. Provedeme-li rozvinutí cyklu, je v rámci jednoho cyklu vynásobeno okénkovou funkcí více vzorků v rámci. Délka okénka, vstupu i výstupu musí být soudělná s úrovní rozvinutí cyklu. Datové závislosti mezi operacemi zde nejsou nijak řešeny. civ win sel f4 provádí obdobnou činnost jako civ win sel, avšak jeho vstupními parametry jsou ukazatele typu vector float. Funkce zpracovává vstupní data po vektorech o velikosti čtyř vzorků. Pokud je stupeň rozvinutí cyklů alespoň dva(tedy cykly jsou alespoň minimálně rozvinuty), využívá se registrový double buffering(viz kapitolu 3.1.2). Po několika úvodních krocích implementace využívá dvou pipeline SPU tak, že zatímco je sudou pipeline násoben z paměti načtený koeficient okénka s načteným vzorkem, pracuje lichá pipeline na uložení předchozího výsledku a načtení dalšího vzorku a koeficientu okénka. Logicky je tak lichá pipeline více vytížená. Instrukce uložení a načtení však trvá stejný počet taktů, jako násobení reálným číslem(konkrétně 6 taktů). Protože jsou instrukce ukládání a načítání nezávislé, jsou všechny tři dokončeny během osmi taktů.

41 KAPITOLA 4. IMPLEMENTACE NA PROCESORU CELL 27 Optimalizující překladač seřadí instrukce tak, že se ihned načítají další hodnoty z paměti, prodlevy tedy pak vznikají naopak čekáním na operaci násobení. Obrázek 4.3: Vykonávání funkce civ win sel f4 Na obrázku 4.3 je část statické analýzy vykonávání okénkového výběru. Práce s jednotlivými vektory je barevně odlišena. Je vidět, že zatímco je sudou pipeline násoben fialový vektor, je lichou pipeline načítán vektor zelený. Po dokončení načítání je sudou pipeline násoben zelený vektor, zatímco lichá pipeline ukládá výsledek fialového výpočtu a následně načítá další vzorek a koeficient okénka ve schématu označen modře. Dobrým rozvržením operací tak dochází k využití obou pipeline. Použitím ještě většího počtu registrů při rozvíjení cyklu by bylo možno výpočet ještě urychlit. Vzhledem k vytíženosti liché pipeline by však zrychlení bylo zanedbatelné proti složitosti kódu. civ win sel f4s implementuje okénkový výběr nad čtyřmi prokládanými rámci. Operace jezcelastejnáscivwinself4,pouzeokénkojeočekávánovjinémformátu.parametr size má význam počtu vzorků v jednom ze stejně dlouhých prokládaných rámců, což je rovno počtu vektorů ve čtyřnásobně dlouhém jednoduchém rámci. Lze tedy přímo využít funkcicivwinself Střední krátkodobá energie Implementace výpočtu střední krátkodobé energie rámce je do značné míry podobná implementaci výpočtu střední hodnoty statickou metodou(viz 4.1.1). Návrh struktury výpočtu je totiž stejný, liší se pouze vyhodnocovaný výraz, jde v podstatě o střední hodnotu druhých mocnin vzorků. K dispozici jsou, stejně jako u střední hodnoty, tři funkce: civ energy je referenční skalární verze. Rozvinutí cyklů zajistí součet několika druhých mocnin vzorků v rámci jednoho cyklu algoritmu najednou. Délka vstupních dat musí být

Signál v čase a jeho spektrum

Signál v čase a jeho spektrum Signál v čase a jeho spektrum Signály v časovém průběhu (tak jak je vidíme na osciloskopu) můžeme dělit na periodické a neperiodické. V obou případech je lze popsat spektrálně určit jaké kmitočty v sobě

Více

ANALÝZA LIDSKÉHO HLASU

ANALÝZA LIDSKÉHO HLASU ANALÝZA LIDSKÉHO HLASU Pomůcky mikrofon MCA-BTA, LabQuest, program LoggerPro (nebo LoggerLite), tabulkový editor Excel, program Mathematica Postup Z každodenní zkušenosti víme, že každý lidský hlas je

Více

Rozpoznávání izolovaných slov (malý slovník, např. číslovky, povely).

Rozpoznávání izolovaných slov (malý slovník, např. číslovky, povely). Rozpoznávání řeči Každý člověk má originální hlasové ústrojí a odlišný způsob artikulace, to se projevuje rozdílnou barvou hlasu, přízvukem, rychlostí řeči atd. I hlas jednoho řečníka je variabilní a závislý

Více

Architektura Intel Atom

Architektura Intel Atom Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí

Více

ADA Semestrální práce. Harmonické modelování signálů

ADA Semestrální práce. Harmonické modelování signálů České vysoké učení technické v Praze ADA Semestrální práce Harmonické modelování signálů Jiří Kořínek 31.12.2005 1. Zadání Proveďte rozklad signálu do harmonických komponent (řeč, hudba). Syntetizujte

Více

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů Kapitola 1 Signály a systémy 1.1 Klasifikace signálů Signál představuje fyzikální vyjádření informace, obvykle ve formě okamžitých hodnot určité fyzikální veličiny, která je funkcí jedné nebo více nezávisle

Více

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící

Více

VY_32_INOVACE_E 15 03

VY_32_INOVACE_E 15 03 Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory

Více

Klasifikace hudebních stylů

Klasifikace hudebních stylů Klasifikace hudebních stylů Martin Šimonovský (mys7@seznam.cz) Rozpoznávání hudby úloha z oblasti DSP klasifikace dle hudebních stylů

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011 Automatická detekce anomálií při geofyzikálním průzkumu Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011 Cíle doktorandské práce Seminář 10. 11. 2010 Najít, implementovat, ověřit a do praxe

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Jak do počítače. aneb. Co je vlastně uvnitř

Jak do počítače. aneb. Co je vlastně uvnitř Jak do počítače aneb Co je vlastně uvnitř Po odkrytí svrchních desek uvidíme... Von Neumannovo schéma Řadič ALU Vstupně/výstupní zař. Operační paměť Počítač je zařízení, které vstupní údaje transformuje

Více

" Furierova transformace"

 Furierova transformace UNIVERZITA JANA EVANGELISTY PURKYNĚ V ÚSTÍ NAD LABEM FAKULTA ŽIVOTNÍHO PROSTŘEDÍ " Furierova transformace" Seminární práce z předmětu Dálkový průzkum Země Marcela Bartošová, Veronika Bláhová OŽP, 3.ročník

Více

Disková pole (RAID) 1

Disková pole (RAID) 1 Disková pole (RAID) 1 Architektury RAID Základní myšlenka: snaha o zpracování dat paralelně. Pozice diskové paměti v klasickém personálním počítači vyhovuje pro aplikace s jedním uživatelem. Řešení: data

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

Cvičné texty ke státní maturitě z matematiky

Cvičné texty ke státní maturitě z matematiky Cvičné texty ke státní maturitě z matematiky Pracovní listy s postupy řešení Brno 2010 RNDr. Rudolf Schwarz, CSc. Státní maturita z matematiky Obsah Obsah NIŽŠÍ úroveň obtížnosti 4 MAGZD10C0K01 říjen 2010..........................

Více

UŽITÍ KOHERENČNÍ FUNKCE PRO DISTRIBUOVANOU

UŽITÍ KOHERENČNÍ FUNKCE PRO DISTRIBUOVANOU UŽITÍ KOHERENČNÍ FUNKCE PRO DISTRIBUOVANOU ANALÝZU VÍCEKANÁLOVÝCH SIGNÁLŮ Robert Háva, Aleš Procházka Vysoká škola chemicko-technologická, Abstrakt Ústav počítačové a řídicí techniky Analýza vícekanálových

Více

Základní vzorce a funkce v tabulkovém procesoru

Základní vzorce a funkce v tabulkovém procesoru Základní vzorce a funkce v tabulkovém procesoru Na tabulkovém programu je asi nejzajímavější práce se vzorci a funkcemi. Když jednou nastavíte, jak se mají dané údaje zpracovávat (některé buňky sečíst,

Více

Obr. P1.1 Zadání úlohy v MS Excel

Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel. Výpočet budeme demonstrovat

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

MATURITNÍ TÉMATA Z MATEMATIKY

MATURITNÍ TÉMATA Z MATEMATIKY MATURITNÍ TÉMATA Z MATEMATIKY 1. Základní poznatky z logiky a teorie množin Pojem konstanty a proměnné. Obor proměnné. Pojem výroku a jeho pravdivostní hodnota. Operace s výroky, složené výroky, logické

Více

FOURIEROVA ANAL YZA 2D TER ENN ICH DAT Karel Segeth

FOURIEROVA ANAL YZA 2D TER ENN ICH DAT Karel Segeth FOURIEROVA ANALÝZA 2D TERÉNNÍCH DAT Karel Segeth Motto: The faster the computer, the more important the speed of algorithms. přírodní jev fyzikální model matematický model numerický model řešení numerického

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Zvuková karta. Zvuk a zvuková zařízení. Vývoj, typy, vlastnosti

Zvuková karta. Zvuk a zvuková zařízení. Vývoj, typy, vlastnosti Zvuk a zvuková zařízení. Vývoj, typy, vlastnosti Zvuková karta Počítač řady PC je ve své standardní konfiguraci vybaven malým reproduktorem označovaným jako PC speaker. Tento reproduktor je součástí skříně

Více

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2) Procesor Intel Pentium (1) 32-bitová vnitřní architektura s 64-bitovou datovou sběrnicí Superskalární procesor: obsahuje více než jednu (dvě) frontu pro zřetězené zpracování instrukcí (značeny u, v) poskytuje

Více

Základní pojmy o signálech

Základní pojmy o signálech Základní pojmy o signálech klasifikace signálů transformace časové osy energie a výkon periodické signály harmonický signál jednotkový skok a impuls Jan Černocký ÚPGM FIT VUT Brno, cernocky@fit.vutbr.cz

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 4 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

12 Metody snižování barevného prostoru

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

Návrh frekvenčního filtru

Návrh frekvenčního filtru Návrh frekvenčního filtru Vypracoval: Martin Dlouhý, Petr Salajka 25. 9 2010 1 1 Zadání 1. Navrhněte co nejjednodušší přenosovou funkci frekvenčního pásmového filtru Dolní propusti typu Bessel, která bude

Více

Disková pole (RAID) 1

Disková pole (RAID) 1 Disková pole (RAID) 1 Architektury RAID Důvod zavedení RAID: reakce na zvyšující se rychlost procesoru. Pozice diskové paměti v klasickém personálním počítači vyhovuje pro aplikace s jedním uživatelem.

Více

1 Mnohočleny a algebraické rovnice

1 Mnohočleny a algebraické rovnice 1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem

Více

Fázorové diagramy pro ideální rezistor, skutečná cívka, ideální cívka, skutečný kondenzátor, ideální kondenzátor.

Fázorové diagramy pro ideální rezistor, skutečná cívka, ideální cívka, skutečný kondenzátor, ideální kondenzátor. FREKVENČNĚ ZÁVISLÉ OBVODY Základní pojmy: IMPEDANCE Z (Ω)- charakterizuje vlastnosti prvku pro střídavý proud. Impedance je základní vlastností, kterou potřebujeme znát pro analýzu střídavých elektrických

Více

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2. Kapitola 2 Přímková a rovinná soustava sil 2.1 Přímková soustava sil Soustava sil ležící ve společném paprsku se nazývá přímková soustava sil [2]. Působiště všech sil m i lze posunout do společného bodu

Více

Popisná statistika kvantitativní veličiny

Popisná statistika kvantitativní veličiny StatSoft Popisná statistika kvantitativní veličiny Protože nám surová data obvykle žádnou smysluplnou informaci neposkytnou, je žádoucí vyjádřit tyto ve zhuštěnější formě. V předchozím dílu jsme začali

Více

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy

Více

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Jednoduché cykly Tento oddíl obsahuje úlohy na první procvičení práce s cykly. Při řešení každé ze zde uvedených úloh stačí použít vedle podmíněných příkazů jen jediný cyklus. Nepotřebujeme používat ani

Více

Kódováni dat. Kódy používané pro strojové operace

Kódováni dat. Kódy používané pro strojové operace Kódováni dat Před zpracováním dat například v počítači je třeba znaky převést do tvaru, kterému počítač rozumí, tj. přiřadit jim určité kombinace bitů. Tomuto převodu se říká kódování. Kód je předpis pro

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení 2 Zpracování naměřených dat Důležitou součástí každé experimentální práce je statistické zpracování naměřených dat. V této krátké kapitole se budeme věnovat určení intervalů spolehlivosti získaných výsledků

Více

Projektč.3dopředmětuIZP. Maticové operace

Projektč.3dopředmětuIZP. Maticové operace Projektč.3dopředmětuIZP Maticové operace 17. prosince 2006 Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta informačních technologií Vysoké Učení Technické v Brně Obsah 1 Úvod 1 2 Analýza problému 1 2.1

Více

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel 2007. Výpočet budeme demonstrovat

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Jana Kubcová Název

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv

Více

Využití algoritmu DTW pro vyhodnocování vad řeči dětí postižených Landau-Kleffnerovým syndromem (LKS)

Využití algoritmu DTW pro vyhodnocování vad řeči dětí postižených Landau-Kleffnerovým syndromem (LKS) Využití algoritmu DTW pro vyhodnocování vad řeči dětí postižených Landau-Kleffnerovým syndromem (LKS) Petr Zlatník České vysoké učení technické v Praze, Fakulta elektrotechnická zlatnip@fel.cvut.cz Abstrakt:

Více

ROZPOZNÁVÁNÍ AKUSTICKÉHO SIGNÁLU ŘEČI S PODPOROU VIZUÁLNÍ INFORMACE

ROZPOZNÁVÁNÍ AKUSTICKÉHO SIGNÁLU ŘEČI S PODPOROU VIZUÁLNÍ INFORMACE TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky a mezioborových inženýrských studií ROZPOZNÁVÁNÍ AKUSTICKÉHO SIGNÁLU ŘEČI S PODPOROU VIZUÁLNÍ INFORMACE AUTOREFERÁT DISERTAČNÍ PRÁCE 2005 JOSEF CHALOUPKA

Více

Architektura procesorů PC shrnutí pojmů

Architektura procesorů PC shrnutí pojmů Architektura procesorů PC shrnutí pojmů 1 Co je to superskalární architektura? Minimálně dvě fronty instrukcí. Provádění instrukcí je možné iniciovat současně, instrukce se pak provádějí paralelně. Realizovatelné

Více

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast CZ.1.07/1.5.00/34.0963 IV/2 Inovace a zkvalitnění výuky směřující k rozvoji matematické gramotnosti

Více

Matematika. ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání:

Matematika. ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání: Studijní obor: Aplikovaná chemie Učební osnova předmětu Matematika Zaměření: ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání: denní Celkový počet vyučovacích hodin za

Více

StatSoft Jak vyzrát na datum

StatSoft Jak vyzrát na datum StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek

Více

Analogové modulace. Podpora kvality výuky informačních a telekomunikačních technologií ITTEL CZ.2.17/3.1.00/36206

Analogové modulace. Podpora kvality výuky informačních a telekomunikačních technologií ITTEL CZ.2.17/3.1.00/36206 EVROPSKÝ SOCIÁLNÍ FOND Analogové modulace PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Podpora kvality výuky informačních a telekomunikačních technologií ITTEL CZ.2.17/3.1.00/36206 Modulace Co je to modulace?

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

1. Základy teorie přenosu informací

1. Základy teorie přenosu informací 1. Základy teorie přenosu informací Úvodem citát o pojmu informace Informace je název pro obsah toho, co se vymění s vnějším světem, když se mu přizpůsobujeme a působíme na něj svým přizpůsobováním. N.

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

SOLVER UŽIVATELSKÁ PŘÍRUČKA. Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404

SOLVER UŽIVATELSKÁ PŘÍRUČKA. Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404 SOLVER UŽIVATELSKÁ PŘÍRUČKA Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404 1. Solver Program Solver slouží pro vyhodnocení experimentálně naměřených dat. Základem

Více

Úloha D - Signál a šum v RFID

Úloha D - Signál a šum v RFID 1. Zadání: Úloha D - Signál a šum v RFID Změřte úrovně užitečného signálu a šumu v přenosovém řetězci systému RFID v závislosti na čtecí vzdálenosti. Zjistěte maximální čtecí vzdálenost daného RFID transpondéru.

Více

3. Kmitočtové charakteristiky

3. Kmitočtové charakteristiky 3. Kmitočtové charakteristiky Po základním seznámení s programem ATP a jeho preprocesorem ATPDraw následuje využití jednotlivých prvků v jednoduchých obvodech. Jednotlivé příklady obvodů jsou uzpůsobeny

Více

0.0001 0.001 0.01 0.1 1 10 100 1000 10000. Čas (s) Model časového průběhu sorpce vyplývá z 2. Fickova zákona a je popsán následující rovnicí

0.0001 0.001 0.01 0.1 1 10 100 1000 10000. Čas (s) Model časového průběhu sorpce vyplývá z 2. Fickova zákona a je popsán následující rovnicí Program Sorpce1.m psaný v prostředí Matlabu slouží k vyhlazování naměřených sorpčních křivek a výpočtu difuzních koeficientů. Kromě standardního Matlabu vyžaduje ještě Matlab Signal Processing Toolbox

Více

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010 Přednášky o výpočetní technice Hardware teoreticky Adam Dominec 2010 Rozvržení Historie Procesor Paměť Základní deska přednášky o výpočetní technice Počítací stroje Mechanické počítačky se rozvíjely už

Více

Matematické modelování dopravního proudu

Matematické modelování dopravního proudu Matematické modelování dopravního proudu Ondřej Lanč, Alena Girglová, Kateřina Papežová, Lucie Obšilová Gymnázium Otokara Březiny a SOŠ Telč lancondrej@centrum.cz Abstrakt: Cílem projektu bylo seznámení

Více

Kompenzovaný vstupní dělič Analogový nízkofrekvenční milivoltmetr

Kompenzovaný vstupní dělič Analogový nízkofrekvenční milivoltmetr Kompenzovaný vstupní dělič Analogový nízkofrekvenční milivoltmetr. Zadání: A. Na předloženém kompenzovaném vstupní děliči k nf milivoltmetru se vstupní impedancí Z vst = MΩ 25 pf, pro dělící poměry :2,

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

JAK DEFINOVAT PRAVIDLO PRO VÍCE BUNĚK NARÁZ

JAK DEFINOVAT PRAVIDLO PRO VÍCE BUNĚK NARÁZ Podmíněné formátování s pomocí vzorce je tématem pro pokročilejší uživatele. Zatímco začátky necháváme na průvodcích, jako je Zvýraznit pravidla buněk a další nástroje (pruhy, škály, ikony), komplikovanější

Více

OPS Paralelní systémy, seznam pojmů, klasifikace

OPS Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus

Více

Cykly a pole 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116.

Cykly a pole 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. Cykly a pole Tato část sbírky je tvořena dalšími úlohami na práci s cykly. Na rozdíl od předchozího oddílu se zde již v řešeních úloh objevuje více cyklů, ať už prováděných po sobě nebo vnořených do sebe.

Více

1 Strukturované programování

1 Strukturované programování Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,

Více

Quantization of acoustic low level signals. David Bursík, Miroslav Lukeš

Quantization of acoustic low level signals. David Bursík, Miroslav Lukeš KVANTOVÁNÍ ZVUKOVÝCH SIGNÁLŮ NÍZKÉ ÚROVNĚ Abstrakt Quantization of acoustic low level signals David Bursík, Miroslav Lukeš Při testování kvality A/D převodníků se používají nejrůznější testovací signály.

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Číselné soustavy a převody mezi nimi

Číselné soustavy a převody mezi nimi Číselné soustavy a převody mezi nimi Základní požadavek na počítač je schopnost zobrazovat a pamatovat si čísla a provádět operace s těmito čísly. Čísla mohou být zobrazena v různých číselných soustavách.

Více

1 Modelování systémů 2. řádu

1 Modelování systémů 2. řádu OBSAH Obsah 1 Modelování systémů 2. řádu 1 2 Řešení diferenciální rovnice 3 3 Ukázka řešení č. 1 9 4 Ukázka řešení č. 2 11 5 Ukázka řešení č. 3 12 6 Ukázka řešení č. 4 14 7 Ukázka řešení č. 5 16 8 Ukázka

Více

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ KOMPLEXNÍ ČÍSLA Gymnázium Jiřího Wolkera v Prostějově Výukové materiály z matematiky pro vyšší gymnázia Autoři projektu Student na prahu 21. století - využití ICT ve vyučování matematiky na gymnáziu INVESTICE

Více

Spojité regulátory Zhotoveno ve školním roce: 2011/2012. Spojité regulátory. Jednoduché regulátory

Spojité regulátory Zhotoveno ve školním roce: 2011/2012. Spojité regulátory. Jednoduché regulátory Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory

Více

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy, Komplexní čísla Množinu všech uspořádaných dvojic (x, y) reálných čísel x, y nazýváme množinou komplexních čísel C, jestliže pro každé dvě takové dvojice (x, y ), (x 2, y 2 ) je definována rovnost, sčítání

Více

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Modul Řešitel (v anglické verzi Solver) je určen pro řešení lineárních i nelineárních úloh matematického programování. Pro ilustraci

Více

Základní jednotky používané ve výpočetní technice

Základní jednotky používané ve výpočetní technice Základní jednotky používané ve výpočetní technice Nejmenší jednotkou informace je bit [b], který může nabývat pouze dvou hodnot 1/0 (ano/ne, true/false). Tato jednotka není dostatečná pro praktické použití,

Více

Mikroprocesorová technika (BMPT)

Mikroprocesorová technika (BMPT) Mikroprocesorová technika (BMPT) Přednáška č. 10 Číselné soustavy v mikroprocesorové technice Ing. Tomáš Frýza, Ph.D. Obsah přednášky Číselné soustavy v mikroprocesorové technice Dekadická, binární, hexadecimální

Více

Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM. Praktikum z pevných látek (F6390)

Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM. Praktikum z pevných látek (F6390) Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM Praktikum z pevných látek (F6390) Zpracoval: Michal Truhlář Naměřeno: 13. března 2007 Obor: Fyzika Ročník: III Semestr:

Více

František Batysta batysfra@fjfi.cvut.cz 19. listopadu 2009. Abstrakt

František Batysta batysfra@fjfi.cvut.cz 19. listopadu 2009. Abstrakt Automatický výpočet chyby nepřímého měření František Batysta batysfra@fjfi.cvut.cz 19. listopadu 2009 Abstrakt Pro správné vyhodnocení naměřených dat je třeba také vypočítat chybu měření. Pokud je neznámá

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

filtry FIR zpracování signálů FIR & IIR Tomáš Novák

filtry FIR zpracování signálů FIR & IIR Tomáš Novák filtry FIR 1) Maximální překývnutí amplitudové frekvenční charakteristiky dolní propusti FIR řádu 100 je podle obr. 1 na frekvenci f=50hz o velikosti 0,15 tedy 1,1dB; přechodové pásmo je v rozsahu frekvencí

Více

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící, výpočetní a regulační technice. Má napěťové zesílení alespoň A u

Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící, výpočetní a regulační technice. Má napěťové zesílení alespoň A u Fyzikální praktikum č.: 7 Datum: 7.4.2005 Vypracoval: Tomáš Henych Název: Operační zesilovač, jeho vlastnosti a využití Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící,

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

Obr. 141: První tři Bernsteinovy iontové módy. Na vodorovné ose je bezrozměrný vlnový vektor a na svislé ose reálná část bezrozměrné frekvence.

Obr. 141: První tři Bernsteinovy iontové módy. Na vodorovné ose je bezrozměrný vlnový vektor a na svislé ose reálná část bezrozměrné frekvence. Mikronestability 33 m Re( ) ( m1) m1,,3, (5.18) ci Imaginární část frekvence, která je zodpovědná za útlum, razantně roste, pokud se vlny nešíří kolmo na magnetické pole. Útlum také roste s číslem módu

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Úlohy nad rastrovými daty Daniela

Více

Měření součinitele smykového tření dynamickou metodou

Měření součinitele smykového tření dynamickou metodou Měření součinitele smykového tření dynamickou metodou Online: http://www.sclpx.eu/lab1r.php?exp=6 Měření smykového tření na nakloněné rovině pomocí zvukové karty řešil např. Sedláček [76]. Jeho konstrukce

Více

Moderní multimediální elektronika (U3V)

Moderní multimediální elektronika (U3V) Moderní multimediální elektronika (U3V) Prezentace č. 13 Moderní kompresní formáty pro přenosné digitální audio Ing. Tomáš Kratochvíl, Ph.D. Ústav radioelektroniky, FEKT VUT v Brně Program prezentace Princip

Více

Přidělování paměti II Mgr. Josef Horálek

Přidělování paměti II Mgr. Josef Horálek Přidělování paměti II Mgr. Josef Horálek Techniky přidělování paměti = Přidělování jediné souvislé oblasti paměti = Přidělování paměti po sekcích = Dynamické přemisťování sekcí = Stránkování = Stránkování

Více

Úvod do architektur personálních počítačů

Úvod do architektur personálních počítačů Úvod do architektur personálních počítačů 1 Cíl přednášky Popsat principy proudového zpracování informace. Popsat principy zřetězeného zpracování instrukcí. Zabývat se způsoby uplatnění tohoto principu

Více

VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing.

VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing. Číslo projektu Číslo materiálu Název školy Autor Tematická oblast Ročník CZ.1.07/1.5.00/34.0581 VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné

Více

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT) MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT) 1. Číselné obory 1.1 Přirozená čísla provádět aritmetické operace s přirozenými čísly rozlišit prvočíslo

Více

Praha & EU: investujeme do vaší budoucnosti. Daniel Turzík, Miroslava Dubcová,

Praha & EU: investujeme do vaší budoucnosti. Daniel Turzík, Miroslava Dubcová, E-sbírka příkladů Seminář z matematiky Evropský sociální fond Praha & EU: investujeme do vaší budoucnosti Daniel Turzík, Miroslava Dubcová, Pavla Pavlíková Obsah 1 Úpravy výrazů................................................................

Více

Zkoušení velkých výkovků a digitální ultrazvukové přístroje

Zkoušení velkých výkovků a digitální ultrazvukové přístroje - 1 - Zkoušení velkých výkovků a digitální ultrazvukové přístroje Ultrazvuková kontrola Ing. Jaroslav Smejkal, Testima, spol. s r.o. zpracováno dle materiálů GE IT Krautkramer Zkoušení výkovků není jednoduchou

Více

PB002 Základy informačních technologií

PB002 Základy informačních technologií Operační systémy 25. září 2012 Struktura přednašky 1 Číselné soustavy 2 Reprezentace čísel 3 Operační systémy historie 4 OS - základní složky 5 Procesy Číselné soustavy 1 Dle základu: dvojková, osmičková,

Více

Sekvenční logické obvody

Sekvenční logické obvody Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory

Více

9. PRINCIPY VÍCENÁSOBNÉHO VYUŽITÍ PŘENOSOVÝCH CEST

9. PRINCIPY VÍCENÁSOBNÉHO VYUŽITÍ PŘENOSOVÝCH CEST 9. PRINCIPY VÍCENÁSOBNÉHO VYUŽITÍ PŘENOSOVÝCH CEST Modulace tvoří základ bezdrátového přenosu informací na velkou vzdálenost. V minulosti se ji využívalo v telekomunikacích při vícenásobném využití přenosových

Více

Matematika - 6. ročník Vzdělávací obsah

Matematika - 6. ročník Vzdělávací obsah Matematika - 6. ročník Září Opakování učiva Obor přirozených čísel do 1000, početní operace v daném oboru Čte, píše, porovnává čísla v oboru do 1000, orientuje se na číselné ose Rozlišuje sudá a lichá

Více