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

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni KTE/TEVS - Rychlá Fourierova transformace Pavel Karban Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni 10.11.011 Outline 1 Motivace FT Fourierova transformace

Více

SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY

SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY TEMATICKÉ OKRUHY Signály se spojitým časem Základní signály se spojitým časem (základní spojité signály) Jednotkový skok σ (t), jednotkový impuls (Diracův impuls)

Více

Analýza a zpracování digitálního obrazu

Analýza a zpracování digitálního obrazu Analýza a zpracování digitálního obrazu Úlohy strojového vidění lze přibližně rozdělit do sekvence čtyř funkčních bloků: Předzpracování veškerých obrazových dat pomocí filtrací (tj. transformací obrazové

Více

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

Kepstrální analýza řečového signálu

Kepstrální analýza řečového signálu Semestrální práce Václav Brunnhofer Kepstrální analýza řečového signálu 1. Charakter řečového signálu Lidská řeč je souvislý, časově proměnný proces. Je nositelem určité informace od řečníka k posluchači

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

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3.

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese dat Radim Farana Podklady pro výuku Obsah Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese videa Velký objem přenášených dat Typický televizní signál - běžná evropská norma pracuje

Více

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

Transformace obrazu Josef Pelikán KSVI MFF UK Praha Transformace obrazu 99725 Josef Pelikán KSVI MFF UK Praha email: Josef.Pelikan@mff.cuni.cz WWW: http://cgg.ms.mff.cuni.cz/~pepca/ Transformace 2D obrazu dekorelace dat potlačení závislosti jednotlivých

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

Úvod do teorie informace

Úvod do teorie informace PEF MZLU v Brně 24. září 2007 Úvod Výměna informací s okolím nám umožňuje udržovat vlastní existenci. Proces zpracování informací je trvalý, nepřetržitý, ale ovlivnitelný. Zabezpečení informací je spojeno

Více

Představení a vývoj architektur vektorových procesorů

Představení a vývoj architektur vektorových procesorů Představení a vývoj architektur vektorových procesorů Drong Lukáš Dro098 1 Obsah Úvod 3 Historie, současnost 3 Architektura 4 - pipelining 4 - Operace scatter a gather 4 - vektorové registry 4 - Řetězení

Více

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2 Výpočet transformačních koeficinetů vybraných 2D transformací Jan Ježek červen 2008 Obsah Odvození transformačního klíče vybraných 2D transformací 2 Meto vyrovnání 2 2 Obecné vyjádření lineárních 2D transformací

Více

6 Algebra blokových schémat

6 Algebra blokových schémat 6 Algebra blokových schémat Operátorovým přenosem jsme doposud popisovali chování jednotlivých dynamických členů. Nic nám však nebrání, abychom přenosem popsali dynamické vlastnosti složitějších obvodů,

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

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

STANOVENÍ CHARAKTERU SEGMENTU ŘEČI S VYUŽITÍM REÁLNÉHO KEPSTRA

STANOVENÍ CHARAKTERU SEGMENTU ŘEČI S VYUŽITÍM REÁLNÉHO KEPSTRA STANOVENÍ CHARAKTERU SEGMENTU ŘEČI S VYUŽITÍM REÁLNÉHO KEPSTRA Oldřich Horák Univerzita Pardubice, Fakulta ekonomicko-správní, Ústav systémového inženýrství a informatiky Abstract: The extraction of the

Více

Lineární a adaptivní zpracování dat. 3. SYSTÉMY a jejich popis ve frekvenční oblasti

Lineární a adaptivní zpracování dat. 3. SYSTÉMY a jejich popis ve frekvenční oblasti Lineární a adaptivní zpracování dat 3. SYSTÉMY a jejich popis ve frekvenční oblasti Daniel Schwarz Osnova Opakování: systémy a jejich popis v časové oblasti Fourierovy řady Frekvenční charakteristika systémů

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

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

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

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

Úvod do zpracování signálů

Úvod do zpracování signálů 1 / 25 Úvod do zpracování signálů Karel Horák Rozvrh přednášky: 1. Spojitý a diskrétní signál. 2. Spektrum signálu. 3. Vzorkovací věta. 4. Konvoluce signálů. 5. Korelace signálů. 2 / 25 Úvod do zpracování

Více

A/D převodníky - parametry

A/D převodníky - parametry A/D převodníky - parametry lineární kvantování -(kritériem je jednoduchost kvantovacího obvodu), parametry ADC : statické odstup signálu od kvantizačního šumu SQNR, efektivní počet bitů n ef, dynamický

Více

základní vlastnosti, používané struktury návrhové prostředky MATLAB problém kvantování koeficientů

základní vlastnosti, používané struktury návrhové prostředky MATLAB problém kvantování koeficientů A0M38SPP - Signálové procesory v praxi - přednáška 4 2 Číslicové filtry typu FIR a IIR definice operace filtrace základní rozdělení FIR, IIR základní vlastnosti, používané struktury filtrů návrhové prostředky

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

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

Lineární a adaptivní zpracování dat. 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně

Lineární a adaptivní zpracování dat. 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně Lineární a adaptivní zpracování dat 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně Daniel Schwarz Investice do rozvoje vzdělávání Osnova Opakování: signály a systémy Vlastnosti systémů Systémy

Více

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 CVIČNÝ TEST 15 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST VÝCHOZÍ TEXT K ÚLOZE 1 Je dána čtvercová mřížka, v níž každý čtverec má délku

Více

Lineární a adaptivní zpracování dat. 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně

Lineární a adaptivní zpracování dat. 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně Lineární a adaptivní zpracování dat 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně Daniel Schwarz Investice do rozvoje vzdělávání Osnova Opakování: signály a systémy Vlastnosti systémů Systémy

Více

Číslicové filtry. Honza Černocký, ÚPGM

Číslicové filtry. Honza Černocký, ÚPGM Číslicové filtry Honza Černocký, ÚPGM Aliasy Digitální filtry Diskrétní systémy Systémy s diskrétním časem atd. 2 Na co? Úprava signálů Zdůraznění Potlačení Detekce 3 Zdůraznění basy 4 Zdůraznění výšky

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

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití.

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Metodický list hardware Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Postupuje od výčtu základních prvků, bez kterých se PC

Více

3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU

3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU 3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU V současné době se pro potlačení šumu u řečového signálu používá mnoho různých metod. Jedná se například o metody spektrálního odečítání, Wienerovy filtrace,

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

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

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

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

Číslicová filtrace. FIR filtry IIR filtry. ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Číslicová filtrace. FIR filtry IIR filtry. ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Číslicová filtrace FIR filtry IIR filtry Tyto materiály vznikly za podpory Fondu rozvoje

Více

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

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

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 Mgr. Tomáš Kotler I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Je dán rovinný obrazec, v obrázku vyznačený barevnou výplní, který představuje

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Fz =a z + a z +...+a z +a z =

Fz =a z + a z +...+a z +a z = Polyadické číselné soustavy - převody M-místná skupina prvků se z-stavovou abecedou umožňuje zobrazit z m čísel. Zjistíme, že stačí vhodně zvolit číslo m, abychom mohli zobrazit libovolné číslo menší než

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

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

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

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

Číslicové zpracování signálů a Fourierova analýza.

Číslicové zpracování signálů a Fourierova analýza. Číslicové zpracování signálů a Fourierova analýza www.kme.zcu.cz/kmet/exm 1 Obsah prezentace 1. Úvod a motivace 2. Data v časové a frekvenční oblasti 3. Fourierova analýza teoreticky 4. Fourierova analýza

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

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky Při návrhu elektroakustických soustav, ale i jiných systémů, je vhodné nejprve

Více

Globální matice konstrukce

Globální matice konstrukce Globální matice konstrukce Z matic tuhosti a hmotnosti jednotlivých prvků lze sestavit globální matici tuhosti a globální matici hmotnosti konstrukce, které se využijí v řešení základní rovnice MKP: [m]{

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

Čí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

7. Funkce jedné reálné proměnné, základní pojmy

7. Funkce jedné reálné proměnné, základní pojmy , základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:

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

Funkce komplexní proměnné a integrální transformace

Funkce komplexní proměnné a integrální transformace Funkce komplexní proměnné a integrální transformace Fourierovy řady I. Marek Lampart Text byl vytvořen v rámci realizace projektu Matematika pro inženýry 21. století (reg. č. CZ.1.07/2.2.00/07.0332), na

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

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

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

Spektrální analýza a diskrétní Fourierova transformace. Honza Černocký, ÚPGM

Spektrální analýza a diskrétní Fourierova transformace. Honza Černocký, ÚPGM Spektrální analýza a diskrétní Fourierova transformace Honza Černocký, ÚPGM Povídání o cosinusovce 2 Argument cosinusovky 0 2p a pak každé 2p perioda 3 Cosinusovka s diskrétním časem Úkol č. 1: vyrobit

Více

Náhodné signály. Honza Černocký, ÚPGM

Náhodné signály. Honza Černocký, ÚPGM Náhodné signály Honza Černocký, ÚPGM Signály ve škole a v reálném světě Deterministické Rovnice Obrázek Algoritmus Kus kódu } Můžeme vypočítat Málo informace! Náhodné Nevíme přesně Pokaždé jiné Především

Více

CVIČNÝ TEST 5. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19

CVIČNÝ TEST 5. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19 CVIČNÝ TEST 5 Mgr. Václav Zemek OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19 I. CVIČNÝ TEST 1 Zjednodušte výraz (2x 5) 2 (2x 5) (2x + 5) + 20x. 2 Určete nejmenší trojciferné

Více

Mezipaměti počítače. L2 cache. L3 cache

Mezipaměti počítače. L2 cache. L3 cache Mezipaměti počítače Cache paměť - mezipaměť Hlavní paměť procesoru je typu DRAM a je pomalá. Proto se mezi pomalou hlavní paměť a procesor vkládá menší, ale rychlá vyrovnávací (cache) paměť SRAM. Rychlost

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

Multimediální systémy

Multimediální systémy Multimediální systémy Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI přednášky Získání obsahu Jan Outrata (Univerzita Palackého v Olomouci) Multimediální systémy Olomouc, září prosinec

Více

Gymnázium Jiřího Ortena, Kutná Hora

Gymnázium Jiřího Ortena, Kutná Hora Předmět: Náplň: Třída: Počet hodin: Pomůcky: Cvičení z matematiky algebra (CZMa) Systematizace a prohloubení učiva matematiky: Číselné obory, Algebraické výrazy, Rovnice, Funkce, Posloupnosti, Diferenciální

Více

31ZZS 9. PŘEDNÁŠKA 24. listopadu 2014

31ZZS 9. PŘEDNÁŠKA 24. listopadu 2014 3ZZS 9. PŘEDNÁŠKA 24. listopadu 24 SPEKTRÁLNÍ ANALÝZA Fourierovy řady Diskrétní Fourierovy řady Fourierova transformace Diskrétní Fourierova transformace Spektrální analýza Zobrazení signálu ve frekvenční

Více

5. Umělé neuronové sítě. Neuronové sítě

5. Umělé neuronové sítě. Neuronové sítě Neuronové sítě Přesný algoritmus práce přírodních neuronových systémů není doposud znám. Přesto experimentální výsledky na modelech těchto systémů dávají dnes velmi slibné výsledky. Tyto systémy, včetně

Více

doc. Dr. Ing. Elias TOMEH Elias Tomeh / Snímek 1

doc. Dr. Ing. Elias TOMEH   Elias Tomeh / Snímek 1 doc. Dr. Ing. Elias TOMEH e-mail: elias.tomeh@tul.cz Elias Tomeh / Snímek 1 Frekvenční spektrum Dělení frekvenčního pásma (počet čar) Průměrování Časovou váhovou funkci Elias Tomeh / Snímek 2 Vzorkovací

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Struktura a architektura počítačů (BI-SAP) 11

Struktura a architektura počítačů (BI-SAP) 11 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 11 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

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

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

I. Současná analogová technika

I. Současná analogová technika IAS 2010/11 1 I. Současná analogová technika Analogové obvody v moderních komunikačních systémech. Vývoj informatických technologií v poslední dekádě minulého století digitalizace, zvýšení objemu přenášených

Více

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy... Polynomy Obsah Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1 Základní vlastnosti polynomů 2 1.1 Teorie........................................... 2 1.1.1 Zavedení polynomů................................

Více

Prohledávání do šířky = algoritmus vlny

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

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

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

[1] samoopravné kódy: terminologie, princip

[1] samoopravné kódy: terminologie, princip [1] Úvod do kódování samoopravné kódy: terminologie, princip blokové lineární kódy Hammingův kód Samoopravné kódy, k čemu to je [2] Data jsou uložena (nebo posílána do linky) kodérem podle určitého pravidla

Více

31SCS Speciální číslicové systémy Antialiasing

31SCS Speciální číslicové systémy Antialiasing ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE 2006/2007 31SCS Speciální číslicové systémy Antialiasing Vypracoval: Ivo Vágner Email: Vagnei1@seznam.cz 1/7 Převod analogového signálu na digitální Složité operace,

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

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

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA Rovinné přetvoření Rovinné přetvoření, neboli, jak se také často nazývá, geometrická transformace je vlastně lineární zobrazení v prostoru s nějakou soustavou souřadnic. Jde v něm o přepočet souřadnic

Více

Direct Digital Synthesis (DDS)

Direct Digital Synthesis (DDS) ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Direct Digital Synthesis (DDS) Přímá číslicová syntéza Tyto materiály vznikly za podpory

Více

Při návrhu FIR filtru řešíme obvykle následující problémy:

Při návrhu FIR filtru řešíme obvykle následující problémy: Návrh FIR filtrů Při návrhu FIR filtru řešíme obvykle následující problémy: volba frekvenční odezvy požadovaného filtru; nejčastěji volíme ideální charakteristiku normovanou k Nyquistově frekvenci, popř.

Více

Paměťový podsystém počítače

Paměťový podsystém počítače Paměťový podsystém počítače typy pamětových systémů počítače virtuální paměť stránkování segmentace rychlá vyrovnávací paměť 30.1.2013 O. Novák: CIE6 1 Organizace paměťového systému počítače Paměťová hierarchie...

Více

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Semestrální práce z předmětu Speciální číslicové systémy X31SCS Semestrální práce z předmětu Speciální číslicové systémy X31SCS Katedra obvodů DSP16411 ZPRACOVAL: Roman Holubec Školní rok: 2006/2007 Úvod DSP16411 patří do rodiny DSP16411 rozšiřuje DSP16410 o vyšší

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

C2115 Praktický úvod do superpočítání

C2115 Praktický úvod do superpočítání C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137

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

12 DYNAMIKA SOUSTAVY HMOTNÝCH BODŮ

12 DYNAMIKA SOUSTAVY HMOTNÝCH BODŮ 56 12 DYNAMIKA SOUSTAVY HMOTNÝCH BODŮ Těžiště I. impulsová věta - věta o pohybu těžiště II. impulsová věta Zákony zachování v izolované soustavě hmotných bodů Náhrada pohybu skutečných objektů pohybem

Více

SIGNÁLY A LINEÁRNÍ SYSTÉMY

SIGNÁLY A LINEÁRNÍ SYSTÉMY SIGNÁLY A LINEÁRNÍ SYSTÉMY prof. Ing. Jiří Holčík, CSc. holcik@iba.muni.cziba.muni.cz II. SIGNÁLY ZÁKLADNÍ POJMY SIGNÁL - DEFINICE SIGNÁL - DEFINICE Signál je jev fyzikální, chemické, biologické, ekonomické

Více

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY Jan Krejčí 31. srpna 2006 jkrejci@physics.ujep.cz http://physics.ujep.cz/~jkrejci Obsah 1 Přímé metody řešení soustav lineárních rovnic 3 1.1 Gaussova eliminace...............................

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

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

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

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

Čí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

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více