FAKULTA INFORMATIKY MASARYKOVY UNIVERZITY
Spektrální analýza hudební skladby Diplomová práce Bc. Lukáš Holčík
Brno, podzim 2009
ii
Prohlášení: Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo ze kterých jsem čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. V Brně dne 10. ledna 2010 Lukáš Holčík Vedoucí práce: MgA. Rudolf Růžička
iii
Poděkování: Za cenné rady a připomínky k této diplomové práci bych rád poděkoval zejména tátovi prof. Ing. Jiřímu Holčíkovi CSc., který mi umožnil získat hlubší vzhled do problematiky spektrální analýzy a signálů vůbec, a dále vedoucímu práce MgA. Rudolfu Růžičkovi.
iv
Shrnutí: Cílem této práce je realizace programu sloužícího k analýze hudebních skladeb, vizualizaci jejich obsahu ve smyslu transkripce melodie monofonních a polyfonních skladeb. U monofonních skladeb (sólový zpěv, hra na house, flétnu,…) je kladen důraz na preciznost provedené analýzy a detekci jemných nuancí jako vibrato na tónu, nástupy a přechody mezi tóny. U polyfonní analýzy se autor zaměřil na analýzu sólových hudebních skladeb hraných na klavír, kytaru, případně na vícehlasé pěvecké kompozice. V textu práce autor popisuje teoretické pozadí problematiky, základní principy použitých algoritmů, implementaci algoritmů, vlastní přínos a přikládá výsledky analýzy několika hudebních skladeb jako ukázky.
Klíčová slova: spektrální analýza, hudba, signály, Fourierova transformace, Fourier, monofonní, jednohlasá, polyfonní, vícehlasá, autokorelace, FFT, DFT, STFT, Constant Q transform, pattern matching, direct cancellation, joint estimation, Java, Swing, GUI
v
Obsah 1 2
3 4
5
6
7
Úvod ................................................................................................................................................. 1 Charakteristika signálů ..................................................................................................................... 3 2.1 Fyzikální vlastnosti zvuku .......................................................................................................... 3 2.2 Hudební signály ......................................................................................................................... 4 2.2.1 Vlastnosti hudebních signálů ........................................................................................... 4 2.2.2 Ladění .............................................................................................................................. 4 2.2.3 Jev chybějící fundamentální frekvence ........................................................................... 7 Úvod do transkripce hudby .............................................................................................................. 8 Spektrální analýza ............................................................................................................................ 9 4.1 Úvod do Fourierovy analýzy...................................................................................................... 9 4.2 Fourierova analýza s lineárním frekvenčním rozlišením......................................................... 10 4.2.1 Diskrétní Fourierova transformace ............................................................................... 10 4.2.1.1 Značení a formát DFT reálného signálu ..................................................................... 11 4.2.1.2 Bázové funkce............................................................................................................ 13 4.2.1.3 Výpočet DFT – „analýza“ ........................................................................................... 13 4.2.1.3.1 DFT pomocí soustavy lineárních rovnic ................................................................ 13 4.2.1.3.2 DFT pomocí korelace ............................................................................................ 14 4.2.1.3.3 Rychlá Fourierova transformace (FFT) .................................................................. 14 4.2.1.4 Polární značení .......................................................................................................... 15 4.2.2 Krátkodobá Fourierova transformace (STFT) ................................................................ 16 4.2.2.1 Funkce datového okna .............................................................................................. 16 4.2.2.1.1 Obdélníkové okno ................................................................................................. 17 4.2.2.1.2 Hammingovo okno................................................................................................ 17 4.3 Fourierova transformace s logaritmickým frekvenčním rozlišením ....................................... 18 4.4 Constant Q transform (CQT) ................................................................................................... 20 4.4.1 Výpočet CQT .................................................................................................................. 21 4.4.2 Optimalizace použitím half-band filtru a podvzorkováním ........................................... 22 4.4.3 Optimalizace CQT pomocí transformace FFT ................................................................ 23 Monofonní analýza (MA) ............................................................................................................... 26 5.1 Zúžená autokorelační funkce (ACF) ........................................................................................ 26 5.1.1 Výpočet ACF................................................................................................................... 26 5.1.2 Výpočet frekvence z výsledků ACF ................................................................................ 28 5.1.3 Implementace................................................................................................................ 28 5.2 Invertovaná autokorelační funkce (IACF) ............................................................................... 28 5.2.1 Implementace................................................................................................................ 29 5.3 Porovnávání se vzorem (pattern matching) ........................................................................... 29 5.3.1 Implementace................................................................................................................ 30 5.4 Pomocná metoda prokládání paraboly (quadratic fit) ........................................................... 30 5.5 Pomocná metoda vyhlazení melodie...................................................................................... 31 Polyfonní analýza (PA).................................................................................................................... 32 6.1 Detekce počtu současně znějících tónů .................................................................................. 32 6.2 Metody polyfonní analýzy....................................................................................................... 32 6.2.1 Iterativní odhad ............................................................................................................. 32 6.2.1.1 Celkové vyrušení ........................................................................................................ 32 6.2.1.2 Implementace............................................................................................................ 32 6.2.2 Spojitý odhad (joint estimation) .................................................................................... 33 6.2.2.1 Implementace............................................................................................................ 33 6.2.3 Vztah korelace harmonického vzoru a spektra ............................................................. 34 Program AUDIOTAPE...................................................................................................................... 35 7.1 Spuštění programu a konfigurace prostředí ........................................................................... 35 vi
7.2 Analýza zvukového souboru ................................................................................................... 36 7.2.1 Otevření souboru .......................................................................................................... 36 7.2.2 Konfigurace.................................................................................................................... 36 7.2.3 Výsledky analýzy ............................................................................................................ 36 7.2.4 Uložení výsledků ............................................................................................................ 36 7.3 Nahrávání ................................................................................................................................ 37 8 Ukázky ............................................................................................................................................ 38 9 Závěr............................................................................................................................................... 41 10 Bibliografie ..................................................................................................................................... 42
vii
1 Úvod Počítačová analýza hudby je téma, na které bylo napsáno již mnoho knih, a mnozí lidé mu zasvěcují svoji vědeckou kariéru. Moderní metody hudební analýzy jsou na velice vysoké úrovni, nicméně stále ještě jakýkoliv počítačový algoritmus schopnosti trénovaného lidského ucha nenahradí. Přesto pokud člověk s hudbou začíná a nemá ještě vypracovaný hudební sluch, může mu být softwarový nástroj dobrým pomocníkem na cestě hudebního rozvoje. K dispozici jsou různé softwarové nástroje, které se pokouší převést předložený zvukový soubor přímo do formátu MIDI. Výsledky, které jsem z takových programů obdržel, nebyly zrovna uspokojující a rozpoznat ve vygenerovaném notovém zápisu původní skladbu dalo často více práce než rozpoznat ji v původním zvukovém znění. Programům není co vyčítat, neboť problematika automatické transkripce hudby je opravdu příliš komplexní na to, než aby přímý přepis ze zvukového souboru do not dával vždy uspokojující výsledky. Tato transformace je výsledkem posloupnosti několika kroků, z nichž každý do výsledku zanáší vlastní chybový faktor. Proces začíná od spektrální analýzy zvuku, která detekuje jeho frekvenční složky. Ze spektra signálu se vybranou metodou získají jednotlivé noty, které signál tvoří, a ty se v závěrečné fázi spojují do celistvých časových celků, které jsou zaneseny do notové partitury. Tato diplomová práce nemá za cíl vytvořit dokonalý automatický transkripční systém, který by ze skladeb generoval hotový notový zápis. Soustředil jsem se zejména na první dva zmíněné kroky, tj. spektrální analýzu a rozpoznávání not. Generování notového zápisu ve formátu MIDI není v programu zahrnuto, neboť si osobně myslím, že to není příliš praktické. Pokud člověk chce skladbu zapsat, stejně nepoužije vygenerovanou skladbu jako základ, a bude radši skladbu psát na čistý papír. Generování MIDI do procesu vnáší jen další problémový prvek, navíc se při tomto kroku ztratí hodně cenných informací. Cílovým výstupem mého programu je grafické znázornění průběhu skladby, u kterého si může uživatel skladbu přehrát, a zároveň tak skladbu slyšet i vidět. Tuto funkci neměl žádný z volně dostupných programů, které jsem vyzkoušel. Další témata hudební transkripce jako detekce tempa a rozpoznávání hudebních nástrojů jsem zanechal nedotčena, neboť praktický dopad těchto témat pro studenta hudby není příliš významný. Soustředil jsem se především na to, abych dokázal ve skladbě rozpoznat jednotlivé noty a výsledek této analýzy předložil k posouzení uživateli. Z praxe totiž vím, že v některých pasážích, které počítač nedokáže přesně rozpoznat, lidské ucho nemá potíže, zatímco v jiných, kde člověk nestačí, tam zase nemá problém počítač. Člověk může na rozdíl od počítače využít doplňujících znalostí o skladbě (např. předpoklad o opakování různých pasáží), z kterých špatně rozeznatelné tóny odvodí. Jednodušší variantou analýzy hudební skladby je analýza melodie v jednohlasé (monofonní) skladbě. V tomto případě není příliš převratné pokoušet se o transkripci melodie, nicméně snažil jsem se využít přesné metody detekce frekvence k tomu, abych znázornil jemné nuance průběhu melodie, jako jsou vibrato a přechody mezi tóny, které mohou studentovi hudby napovědět o způsobu tvoření a průběhu tónu. Zejména může sloužit pro lepší uvědomění si vlastního zpěvu a jeho kvalit. Osobně si také myslím, že detailní analýza průběhu melodie je celkem zajímavá věc, která může člověku představit nový pohled na věc. Práce začíná úvodem do problematiky počítačových signálů v kapitole 2. Kapitola 3 obsahuje krátký popis problematiky transkripce a historii vývoje transkripčních systémů. Kapitola 4 popisuje hlouběji metody spektrální analýzy použité při implementaci algoritmů, které jsou podrobně rozebrány 1
v kapitolách 5 a 6. Kapitola 7 popisuje samotný program Audiotape, který je výsledkem implementace principů popsaných v této diplomové práci. Na závěr jsou v kapitole 8 přiloženy ukázky výsledků analýz hudebních skladeb.
2
2 Charakteristika signálů Obecně je signál jevem fyzikální, chemické, biologické, ekonomické či jiné materiální povahy, nesoucí informaci o stavu systému, který jej generuje. Většinou se signál chápe jako kvantita proměnlivá v čase.
Obrázek 2.1 Ukázka periodického signálu - jedna sekunda lidského EEG
Obrázek 2.2 Ukázka neperiodického signálu - jeden rok vývoje akciového indexu NASDAQ (zdroj Yahoo! Finance)
Existují periodické a neperiodické signály. Periodické signály jsou charakteristické opakováním určitého vzoru, který je popsán frekvencí a odpovídající vlnovou délkou. Hudební signály jsou obvykle alespoň v omezeném časovém rámci periodické a právě tato periodičnost nám umožňuje zkoumat jejich vlastnosti.
2.1 Fyzikální vlastnosti zvuku Zvuk je specifickou variantou signálu, jehož podstatou je oscilace tlaku v kapalném, plynném, nebo pevném prostředí vzduchu. Vlastnosti zvuku jsou shodné s vlastnostmi obecného vlnění, jsou jimi (1): frekvence, vlnová délka, amplituda, intenzita, rychlost a směr. Vlastností specifickou pro příčné vlnění je polarizace. Člověk je schopen vnímat zvuk o frekvencích v rozsahu zhruba 20Hz – 20kHz, nicméně tyto hranice nejsou definitivní. Z horní hranice lidské slyšitelnosti (mj.) vychází frekvence, s jakou jsou vzorkovány hudební stopy na zvukových CD – tj. 44100Hz. Dle Nyquistova teorému lze se vzorkovací frekvencí zaznamenat signál s maximální frekvencí 22050Hz, což je horní limit lidského ucha s malou rezervou.
3
2.2 Hudební signály Než se dostaneme k problematice transkripce, bude potřeba uvést základní terminologii týkající se sluchového vnímání a hudby. Abychom se mohli bavit o hudebních zvukových signálech, musíme popsat důležité slyšitelné atributy, kterými jsou zvuky charakterizovány.
2.2.1 Vlastnosti hudebních signálů Existují 4 subjektivní atributy, které jsou při charakterizaci hudebních signálů obzvláště užitečné. Jsou jimi: výška, hlasitost, délka a témbr (2): Výška je charakteristika, která umožňuje seřazení zvuků na frekvenční stupnici zespodu nahoru. Přesněji je výška definovaná jako frekvence sinusové křivky, která je přiřazena zdrojovému zvuku lidským posluchačem. Odpovídajícím fyzikálním termínem je fundamentální frekvence (F0), která je definována pouze pro periodické a téměř periodické zvuky. Pro tyto druhy zvuků je F0 definována jako inverze vlnové délky a je úzce spjata s výškou. Vnímaná hlasitost akustického signálu má netriviální vztah k jeho fyzikálním vlastnostem a výpočetní model vnímání hlasitosti tvoří základ psychoakustiky (věda zabývající se vnímáním zvuků. V psychoakustickém experimentu se sledují vztahy mezi akustickými jevy a jejich subjektivně vnímanou podobou předkládáním různých úkolů lidským posluchačům). V počítačovém zpracování hudby se ovšem mnohem běžnější vyjádření hlasitosti jako druhá mocnina střední kvadratické hodnoty převedená do logaritmické stupnice (decibely), díky které se vyrovnáme s širokým dynamickým rozpětím zvuku. V případě, kdy lze toto jednoznačně rozlišit, má délka zvuku přímý vztah s jeho fyzickým trváním. Témbr se často označuje jako barva zvuku a je úzce spjatý s rozpoznáváním zdrojů zvuku. Např. zvuky houslí a flétny mohou být identické co do výšky, hlasitosti a délky, ale přesto jsou snadno rozeznatelné díky své barvě. Koncept této vlastnosti se nedá jednoduše vyjádřit nějakou fyzikální vlastností zvuku, ale spíše souvisí s rozložením spektrální energie a její distribucí v čase. Zatímco výška, hlasitost a délka zvuku mohou být jednoduše zaznamenány skalární hodnotou, barva je vícerozměrný koncept a je typicky reprezentována vektorem charakteristik. S barvou zvuku velice úzce souvisí tzv. vyšší harmonické frekvence (alikvotní tony), které nástroje generují. Blíže se k nim dostaneme při popisu spektrální analýzy zvuku.
2.2.2 Ladění Jako záchytný bod při ladění hudebních nástrojů se po několika historických změnách ustálil tón A o frekvenci 440Hz – tzv. komorní A. Americký hudební průmysl k tomuto ladění došel neformální cestou jako ke kompromisu a od roku 1926 bylo toto ladění používáno při výrobě hudebních nástrojů. Jako mezinárodní standard byl přijat organizací ISO v roce 1955 (potvrzen v roce 1975) jako ISO 16. Lidské vnímání hudby je přibližně logaritmické: vzdálenost, kterou člověk vnímá mezi notami A110 a A220 je stejná jako mezi A220 a A440. Frekvence vyššího tónu v intervalu oktávy nad nižším tónem je vždy dvojnásobná. Existuje několik předpisů, jak noty v rozmezí oktávy ladit. Nejrozšířenější je rovnoměrně temperované ladění, které je typické konstantním poměrem mezi dvěma sousedními notami. Z toho vyplývá, že u rovnoměrně temperovaného ladění jsou všechny intervaly stejného druhu (kvinty, kvarty, tercie atd.) přesně stejně velké. Ostatní ladění jsou většinou založena na vztahu 4
alikvotní frekvence základního tónu a tónu některého intervalu. Přesný vztah pro výpočet frekvence tónu rovnoměrně temperovaného ladění podle indexu MIDI je (Rovnice 2.1). Obrácený vztah pro výpočet MIDI indexu noty dle frekvence je uveden v následující rovnici (Rovnice 2.2).
Rovnice 2.1 Frekvence noty podle MIDI indexu
Rovnice 2.2 MIDI index noty podle frekvence
Konstanty vyskytující se v definičních vztazích mají následující významy: - 69 – MIDI index komorního A - 440 – frekvence komorního A - 12 – oktáva je tvořena z 12 půltónů Následující referenční tabulka obsahuje přehled tónů v rozsahu standardní 88 tónové klaviatury. Uvedl jsem dva způsoby značení oktáv, se kterými jsem se setkal. V závislosti na způsobu značení oktáv můžeme narazit na dva způsoby značení komorního A, a to A0 a A4.
5
Vlnová délka *sek+
Vlnová délka při 44100Hz [vzorky]
27,50 29,14 30,87 32,70 34,65 36,71 38,89 41,20 43,65 46,25 49,00 51,91 55,00 58,27 61,74
0,0364 0,0343 0,0324 0,0306 0,0289 0,0272 0,0257 0,0243 0,0229 0,0216 0,0204 0,0193 0,0182 0,0172 0,0162
1603,64 1513,63 1428,68 1348,49 1272,81 1201,37 1133,94 1070,30 1010,23 953,53 900,01 849,50 801,82 756,82 714,34
130,81 138,59 146,83 155,56 164,81 174,61 185,00 196,00 207,65 220,00 233,08 246,94 261,63 277,18 293,66 311,13 329,63 349,23 369,99 392,00 415,30 440,00 466,16 493,88 523,25 554,37 587,33 622,25 659,26 698,46 739,99 783,99 830,61 880,00 932,33 987,77
0,0076 0,0072 0,0068 0,0064 0,0061 0,0057 0,0054 0,0051 0,0048 0,0045 0,0043 0,0040 0,0038 0,0036 0,0034 0,0032 0,0030 0,0029 0,0027 0,0026 0,0024 0,0023 0,0021 0,0020 0,0019 0,0018 0,0017 0,0016 0,0015 0,0014 0,0014 0,0013 0,0012 0,0011 0,0011 0,0010
337,12 318,20 300,34 283,49 267,57 252,56 238,38 225,00 212,37 200,45 189,20 178,58 168,56 159,10 150,17 141,74 133,79 126,28 119,19 112,50 106,19 100,23 94,60 89,29 84,28 79,55 75,09 70,87 66,89 63,14 59,60 56,25 53,09 50,11 47,30 44,65
2093,00 2217,46 2349,32 2489,02 2637,02 2793,83 2959,96 3135,96 3322,44 3520,00 3729,31 3951,07 4186,01
0,0005 0,0005 0,0004 0,0004 0,0004 0,0004 0,0003 0,0003 0,0003 0,0003 0,0003 0,0003 0,0002
21,07 19,89 18,77 17,72 16,72 15,78 14,90 14,06 13,27 12,53 11,83 11,16 10,54
Oktáva #1
Oktáva #2
MIDI index
Jméno noty
Frekvence [Hz]
1 1 1 2 2 2 2 2 2 2 2 2 2 2 2
-4 -4 -4 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
A A#/Bb B C C#/Db D D#/Eb E F # F /Gb G G#/Ab A A#/Bb B
3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
C C /Db D D#/Eb E F # F /Gb G G#/Ab A A#/Bb B C C#/Db D D#/Eb E F # F /Gb G G#/Ab A A#/Bb B C # C /Db D D#/Eb E F # F /Gb G G#/Ab A A#/Bb B
7 7 7 7 7 7 7 7 7 7 7 7 8
3 3 3 3 3 3 3 3 3 3 3 3 4
96 97 98 99 100 101 102 103 104 105 106 107 108
C C /Db D D#/Eb E F # F /Gb G G#/Ab A A#/Bb B C
… #
… #
Tabulka 2.1 Vybrané tóny z rozsahu klaviatury piana s uvedenou frekvencí, vlnovou délkou a vlnovou délkou ve vzorcích u diskrétního signálu se vzorkovací frekvencí 44100Hz
6
2.2.3 Jev chybějící fundamentální frekvence Pokud poměr frekvencí vyšších harmonických zvuku nasvědčuje umístění základní frekvence, ale zvuková složka na dané frekvenci ve zvuku neexistuje, potom tento jev označujeme jako chybějící fundamentální (základní) frekvence. I přesto, že tato složka ve zvuku nemusí být přítomna, mozek si díky poměru alikvotních frekvencí tuto složku domyslí a posluchači se zdá, jakoby tu frekvenci slyšel. Fundamentální frekvence nemusí rovnou ve zvuku chybět, ale určitě nemusí být nejsilnější frekvenční složkou. Pokud máme např. tón o frekvenci 100Hz, bude se skládat frekvenčních složek, které jsou přibližně celými násobky tohoto čísla (100Hz, 200Hz, 300Hz, 400Hz, 500Hz, …). Nicméně pokud si takový zvuk pustíme na slabých reproduktorech, které tuto frekvenci nedokážou reprodukovat, bude složka o frekvenci 100Hz v přehrávaném zvuku chybět. Přesto však lidský posluchač uslyší tón odpovídající frekvenci 100Hz. Při monofonní analýze tento jev způsobuje nemalou komplikaci, neboť nestačí pouze nalézt nejsilnější frekvenční komponentu k tomu, abychom zjistili, jaký tón momentálně v signálu zní. Metody schopné tento jev obelstít si ukážeme v kapitole 5.
Obrázek 2.3 Ukázka spektrogramu melodie se slabou základní frekvencí
7
3 Úvod do transkripce hudby Transkripce hudby představuje analýzu akustického signálu sloužící k odvození informací o každém oddělitelném zvuku, který se v něm vyskytuje - především výšku, čas nástupu, délku trvání, hlasitost a zdroj. Západní tradice využívá k popisu těchto parametrů notové značky zaznamenané v notové osnově. Čas v notové osnově plyne zleva doprava a výška not je dána vertikálním umístěním v notové osnově. V případě perkusních nástrojů označuje vertikální pozice v osnově druh zvuku (použití specifického perkusního nástroje). Hlasitost není zpravidla v notové osnově specifikována pro každou notu zvlášť, nýbrž pouze pro větší celky. Kromě běžného notového zápisu může i transkripce nabývat různých podob. Například pro kytaristu může být vhodnější číst akordové značky označující kombinace tónů určující obecnější rámec daného hudebního díla. V případě algoritmických transkripčních systémů se jeví jako nejvhodnější formát MIDI, který je standardem mezi protokoly pro výměnu informací mezi elektronickými hudebními zařízeními. Všechny tyto reprezentace mají společné to, že zachycují hudebně smysluplnou formou hudební dílo, které může být na jejich základě předvedeno či rekonstruováno. Z tohoto pohledu se může hudební transkripce jevit jako zpětné vydedukování „zdrojového kódu“ hudebního signálu. Kompletní transkripce hudební předlohy by znamenala, že bude rozpoznána výška, hlasitost a načasování veškerých zvuků obsažených v signálu. Vzhledem k tomu, že toto může být velice složité a v některých případech i teoreticky nemožné, naším cílem bude zaznamenat co nejvíce tónů, kolik jen bude možné. První pokusy o automatickou transkripci prováděl v 70. letech 20. století J.A. Moorer, který navrh systém pro rozpoznávání dvouhlasých skladeb. Jeho dílo následovali Chafe, Piszczalski a Maher v 80. letech. Ve všech těchto systémech byl počet hlasů omezen na dva a vzdálenosti mezi výškami tónů byly různými způsoby omezené. Od počátku 90. let začal zájem o transkripci hudby rapidně narůstat a není zde možné zahrnout veškeré portfolio vědeckých prací na toto téma. Přesto můžeme identifikovat obecné trendy a úspěšné druhy přístupů. Jedním z nich bylo použití statistických metod pro rozpoznávání výšek tónů v polyfonní hudbě, dalším trendem bylo vylepšování výpočetních modelů napodobujících princip fungování lidského sluchového systému. Přesto se nejmodernější rozpoznávací systémy se v přesnosti a flexibilitě stále nemohou rovnat trénovaným muzikantům. Spolehlivý obecný systém pro transkripci polyfonní hudby v současné době neexistuje, nicméně jistá míra úspěchu byla dosažena v analýze polyfonní hudby omezené složitosti. Omezení se zpravidla týkají počtu současně znějících tónů, případně je předpokládán pouze určitý druh hudebního nástroje. Hudební transkripce se obecně zabývá i pokročilejšími tématy, jako jsou detekce rytmu, rozeznání bicích nástrojů a klasifikace hudebních nástrojů. Tato témata v této práci vynechám a budu se soustředit pouze na rozpoznávání tónů, jejich výšku a načasování.
8
4 Spektrální analýza Běžné signály jsou tvořeny směsí signálů o různých frekvencích. K tomu, abychom získali důkladnější vzhled do složení takového signálu, potřebujeme separovat jeho frekvenční složky. K tomu slouží spektrální analýza. Je to metoda, která převede signál z časové domény (signál vzorkovaný v čase) do frekvenční domény (informace o přítomnosti vybraných frekvencí v signálu). Algoritmy, které slouží k výpočtu frekvenčního spektra, jsou označovány jako Fourierova analýza. Jedná se o důležité algoritmy, které nám umožní vytvořit grafickou reprezentaci zvuku.
4.1 Úvod do Fourierovy analýzy Fourierova analýza je souhrnné označení pro rodinu matematických technik určených k rozkladu signálu na sinusoidy. Nese jméno Jeana Baptisty Josefa Fouriera (1768-1830), francouzského matematika a fyzika, který má zásluhy za matematické objevy a vhled do praktické použitelnosti této techniky. Fourier, který se v té době zabýval šířením tepla, prezentoval francouzskému vědeckému institutu v roce 1807 svůj dokument o reprezentaci tepelných variací pomocí sinusových vln. Dokument obsahoval kontroverzní tvrzení, že spojitý periodický signál může být reprezentován součtem správně zvolených sinusových vln. S ohledem na to, že zvolených sinusových vln může být nekonečně mnoho, už dnes o jeho závěrech nikdo nepochybuje. Obecný pojem "Fourierova transformace" je možné rozdělit do čtyř kategorií v závislosti na čtyřech základních typech signálů, na které můžeme narazit. 1. neperiodický spojitý - Tato skupina zahrnuje signály, které sahají v čase od záporného do kladného nekonečna, aniž se v nich opakují periodické vzory (např. exponenciální křivky, Gaussova křivka). Fourierova transformace tohoto druhu signálu se jmenuje obecně Fourierova transformace (Fourier transform). 2. periodický spojitý - Do této skupiny spadají sinusové vlny, čtvercové vlny a jakékoliv jiné vlny, které se opakují od záporného do kladného nekonečna. Tato varianta Fourierovy transformace se nazývá Fourierova řada (Fourier series). 3. neperiodický diskrétní - Tyto signály jsou definované pouze na diskrétních bodech mezi záporným a kladným nekonečnem a neopakují se v periodických vzorech. Tento typ Fourierovy transformace se nazývá Fourierova transformace s diskrétním časem (Discrete Time Fourier Transform - DTFT). 4. periodický diskrétní - Signály definované na diskrétních bodech v čase spadající do této skupiny se v čase periodicky opakují. Tato kategorie Fourierových transformací se někdy označuje jako Diskrétní Fourierova řada, nicméně častěji se nazývá jako Diskrétní Fourierova transformace (DFT). Názvy transformací rozdělené do těchto kategorií nejsou příliš výstižně pojmenované, což je způsobeno tím, že spíše nahodile vyvíjely v průběhu posledních 200 let. Všechny tyto 4 kategorie vyžadují signály nekonečné v čase, ale co když mám pouze omezený počet vzorků uložený v počítači, který chci analyzovat? Varianta Fourierovy transformace, která by uměla pracovat s konečným signálem, neexistuje. Funkce sinus a kosinus jsou definovány na definičním oboru od záporného do kladného nekonečna, tím pádem nemůžeme syntetizovat konečný signál ze skupiny signálů, které jsou v princi9
pu nekonečné. Trik spočívá v tom, že konečný signál přetvoříme tak, aby se tvářil jako nekonečný. První způsob, jak tohoto můžeme dosáhnout, je obklopení signálu nekonečným nulovým signálem z obou stran až do nekonečna. Tímto se z něj stává diskrétní a neperiodický signál a spadá do kategorie Fourierovy transformace v diskrétním čase (DTFT). Alternativním přístupem je obklopit signál duplikáty sebe sama. Důsledkem toho se z něj stane diskrétní a periodický signál, z čehož vyplývá použití Diskrétní Fourierovy transformace (DFT). K syntéze nekonečného neperiodického signálu potřebujeme nekonečné množství sinusových vln, což metodu Fourierovy transformace v diskrétním čase činí neimplementovatelnou pomocí počítačového algoritmu. Vylučovacím principem dojdeme k tomu, že jediná metoda použitelná ke zpracování signálů v počítačovém prostředí je DFT. Jinak řečeno, digitální systémy mohou pracovat pouze s informací, která je diskrétní a konečná v čase. Na první tři druhy transformací narazíme, jedině pokud se zabýváme teoretickými problémy, ale pokud usedneme k počítači, potom je DFT jediná použitelná varianta, na kterou se dále zaměříme. Každá ze čtyř kategorií Fourierových transformací se dá rozdělit na varianty pracující s reálným a komplexním signálem. Reálná varianta je nejjednodušší. Používá reálných čísel a reálné algebry pro syntézu a dekompozici. Komplexní varianty jsou značně složitější a pro naše účely je nebudeme potřebovat.
4.2 Fourierova analýza s lineárním frekvenčním rozlišením S ohledem na podstatu zkoumaných signálu si následující popis algoritmů pro počítačovou spektrální analýzu rozdělíme na dvě sekce. V první sekci si popíšeme standardní algoritmy používané pro analýzu signálů, u kterých nepotřebujeme zkoumat strukturu závislou na hudební stupnici. Tyto algoritmy mají lineární frekvenční rozlišení, tj. po provedení transformace získáme spektrum, které má na frekvenční ose vyneseny hodnoty, které odpovídají zkoumané frekvenci a jejím celočíselným násobkům (blíže si to popíšeme v této kapitole). Pro hudební signály budeme ovšem vzhledem k logaritmické povaze ladění tonů potřebovat algoritmy, které tuto vlastnost respektují. Ty si popíšeme v kapitole následující.
4.2.1 Diskrétní Fourierova transformace Algoritmus pro výpočet DFT vychází z výpočtu Fourierovy řady a je následující:
Rovnice 4.1 Algoritmus pro výpočet DFT
Výpočet DFT je koncipován tak, že v signálu detekuje přítomnost základní frekvence (resp. základní vlnové délky dané délkou okna N) a jejích vyšších harmonických frekvencí dle indexu k. Důležitým principem tohoto výpočtu je to, že okno délky N obsahuje právě m celých period k-té harmonické a m+1 celých period (k+1)-ní harmonické, tj. rozdíl v počtu period mezi dvěma sousedními frekvenčními složkami je minimálně (v tomto případě přesně) 1. Tento fakt ještě zdůrazníme u algoritmu CQT v kapitole 4.4, který tento princip ctí také.
10
sin(2πkn/N): N=50 1 a m p l i 0 t u d a -1
k=1 k=2 1
11
21
31
41
k=3 k=4
n Obrázek 4.1 Ukázka vyšších harmonických frekvencí pro N=50 a k=1,2,3,4
Ještě než si konkrétněji popíšeme způsoby výpočtu DFT, zmíním, že základní tvar algoritmu lze převést dle Eulerova vztahu (Rovnice 4.2) na tvar obsahující místo exponenciály součet funkcí sinus a kosinus. Rovnice 4.2 Eulerův vztah
Obrázek 4.2 Grafické znázornění Eulerova vztahu (3)
Rovnice 4.3 Algoritmus pro výpočet DFT převedený dle Eulerova vztahu
4.2.1.1 Značení a formát DFT reálného signálu Jak vidíme na obrázku (Obrázek 4.3), DFT přemění vstupní signál o N vzorcích na dva signály o délce N/2 + 1. Vstupní data obsahují signál, který chceme dekomponovat, zatímco výstupní signály obsahují amplitudy složek sinusových a kosinových vln. Vstupní signál se označuje jako signál v časové doméně. Je tomu tak proto, že běžný signál vstupující do DFT je tvořen vzorky, které zachycují spojitý signál 11
v diskrétních časových intervalech. Pochopitelně však můžeme DFT aplikovat na jakýkoliv signál nezávisle na tom, kde jsme ho získali. Výstupní signály jsou charakteristikou ve frekvenční doméně. Frekvenční doména obsahuje stejný objem informací jako časová doména, jen v jiné formě. Pokud známe jednu doménu, můžeme z ní odvodit druhou. Pokud známe časovou doménu signálu, proces výpočtu frekvenční domény se nazývá dekompozice, analýza nebo prostě DFT. Pokud známe frekvenční doménu, potom výpočet časové domény se nazývá syntéza neboli inverzní DFT.
Obrázek 4.3 Terminologie DFT. DFT transformuje signál z časové domény do frekvenční, zatímco inverzní DFT z frekvenční do časové
Běžná notace používá malých písmen k označení signálů v časové doméně (x*n+, y[n],...) a odpovídající velká písmena k označení frekvenční domény (X*n+, Y*n+,...). Pro ilustraci předpokládejme, že v signálu x je obsažen signál o délce N. Signál ve frekvenční doméně je značen X a je tvořen ze dvou částí, obě mají délku N/2+1 vzorků. Jsou jimi reálná část X (ReX) a imaginární část X (ImX). ReX obsahuje informaci o amplitudách kosinových vln, zatímco ImX obsahuje amplitudy vln sinusových. Označení složek frekvenční domény pochází z DFT komplexních signálů, ale v tomto případě se vždy jedná o reálná čísla. Horizontální osa výsledku frekvenční analýzy, tj. frekvenční domény, může být značena čtyřmi způsoby (4). 1) Prvním způsobem značení jsou celočíselné násobky základní frekvence ,0, …, N/2-. Výhodou tohoto značení je, že se k odkazování na jednotlivé frekvence používá celočíselných indexů. Díky tomu se hojně používá při implementaci algoritmu na počítači. 2) Druhou možností je značit horizontální osu poměrem frekvence a vzorkovací frekvenci. Hodnoty jsou diskrétní z intervalu <0; 0,5> rovnoměrně rozděleného na N/2+1 částí. Tento způsob se vyskytuje zejména v literatuře. 3) Další variantou značení je kruhová frekvence ω v jednotkách radiánech, kterou získáme z druhé varianty vynásobením 2. Hodnoty definičního oboru se transformují na <0; π>. Podobně jako v předchozím případě je tento interval popsán pomocí N/2 + 1 diskrétních hodnot. 4) Posledním způsobem je značení skutečnou frekvencí odpovídající konkrétní aplikaci. Pokud například analyzujeme signál vzorkovaný s frekvencí 10kHz, potom jeho frekvenční osa bude značena jako interval <0; 5> kHz. Výhodou této metody je znázornění frekvenčních dat s 12
ohledem na reálnou aplikaci, nicméně toto značení se neobjevuje příliš často tam, kde se navrhují obecné algoritmy, např. digitální filtry.
4.2.1.2 Bázové funkce Funkce sinus a cosinus, kterých si můžeme všimnout v definičním vzorci pro výpočet DFT (Rovnice 4.3), označujeme jako bázové funkce Fourierovy transformace. Pro lepší porozumění metod výpočtů, které si uvedeme za chvíli, si tyto funkce důkladněji prozkoumáme. Vyjdeme z výpočtu délky periody trigonometrických funkcí, která je např. u funkce sinus definována jako:
Rovnice 4.4 Perioda funkce sinus
Při výpočtu DFT máme ve vzorci funkci sinus ve tvaru (Rovnice 4.5), jejíž perioda je délky (Rovnice 4.6), na čemž je zřetelně vidět fakt, který už zazněl, že k-tá vyšší harmonická frekvence obsahuje právě k celých period signálu.
Rovnice 4.5 Funkce sinus ve tvaru použitém při výpočtu DFT
Rovnice 4.6 Výpočet periody
Jak už víme, při výpočtu DFT se používají dvě goniometrické funkce: sinus a cosinus. Jediný rozdíl mezi těmito funkcemi spočívá v jejich vzájemném fázovém posunu o π/2. To má svůj význam právě při výpočtu fáze zkoumané frekvence. Způsob výpočtu této fáze si ukážeme později.
4.2.1.3 Výpočet DFT – „analýza“ DFT můžeme vypočítat třemi různými způsoby. Podle prvního z nich je k problému přistupováno jako k soustavě rovnic. Tato metoda je užitečná v případě, že se snažíme porozumět DFT, ale je příliš neefektivní pro praktické použití. Druhá metoda využívá korelace a je založena na výpočtu korelačního koeficientu se známou funkcí. Třetí metoda, zvaná FFT (Fast Fourier Transform – rychlá Fourierova transformace), je algoritmus, který rozkládá DFT délky N na N DFT o délce 1. FFT je obvykle řádově 100násobně rychlejší než ostatní metody. Důležité je, že všechny tyto metody dávají identický výstup. V praxi se nejčastěji používá FFT, ale pro DFT úseku kratšího než 32 bodů je výhodnější použít korelaci. 4.2.1.3.1 DFT pomocí soustavy lineárních rovnic Pokud se nad DFT zamyslíme, máme N hodnot v časové doméně a potřebujeme vypočítat N hodnot ve frekvenční doméně. Podle základních principů algebry potřebujeme k vypočítání N neznámých soustavu N lineárně nezávislých rovnic. Abychom toto dokázali, vezmeme první vzorky ze všech sinusoid a jejich hodnoty zvážené koeficienty z frekvenční domény (neznámé v rovnici) sečteme je dohromady. Součet musí být roven prvnímu vzorku v časové doméně. Stejným způsobem dostaneme i ostatní rovnice. Řešení nalezneme pomocí známých metod pro výpočet soustav lineárních rovnic jako třeba Gaussovy eliminace. Tato metoda naneštěstí potřebuje ohromné množství výpočetních opera-
13
cí, což z ní činí v praxi nevyužitelnou. Přesto je tato metoda užitečná, neboť dokazuje, že je možné signál rozložit na sinusoidy, kolik je jich potřeba, a že bázové funkce musí být lineárně nezávislé. 4.2.1.3.2 DFT pomocí korelace Standardním způsobem výpočtu DFT je korelace. Původně je korelace definovaná jako funkce, která vypovídá o vztahu dvou funkcí v závislosti na posunutí v čase. Jde tedy o funkci posunutí (pro spojité funkce):
Rovnice 4.7 Definice korelace dvou spojitých funkcí
Symbol f* symbolizuje komplexně sdruženou funkci, která však v oboru reálných čísel nemá vliv. V našem případě posunutí neuvažujeme a z obecného tvaru korelační funkce získáváme definici pro výpočet korelačního koeficientu:
Rovnice 4.8 Definice korelačního koeficientu dvou spojitých funkcí
Hodnota korelačního koeficientu udává míru podobnosti obou funkcí (bez měřítka). Nabývá maximálních hodnot, pokud jsou funkce f a g totožné. V případě diskrétního signálu je výpočet korelačního koeficientu definován jako:
Rovnice 4.9 Definice korelačního koeficientu dvou diskrétních signálů délky N
Ze vzorce vyplývá, že vzájemně násobíme hodnoty obou signálů délky N a součiny sečteme. Při pohledu na vztah pro výpočet DFT (Rovnice 4.1) odvozený ze vzorce pro Fourierovu transformaci, který dále převedeme pomocí Eulerova vztahu pro výpočet exponenciály (Rovnice 4.2), si všimneme, že v obou sčítancích počítáme korelační koeficient signálu a příslušné bázové funkce (Rovnice 4.3). Jako výsledek tedy získáme na jedné ose (reálná složka) podobnost s danou funkcí kosinus, na druhé ose (imaginární složka) podobnost s funkcí sinus. Jak už jsme zmínili, jedná se o stejné funkce s rozdílnou fází, což nám při převodu na polární souřadnice umožní získat informaci o fázi příslušné sinusoidy. 4.2.1.3.3 Rychlá Fourierova transformace (FFT) Nejefektivnější metodou výpočtu DFT je algoritmus zvaný rychlá Fourierova transformace (FFT). Na rozdíl od předchozích variant, které počítají s goniometrickými funkcemi, je tato založena na postupném rozdělování vstupní posloupnosti na poloviny až k dílkům o délce 1. Z toho vyplývá, že nejoptimálnější výkon podává tento algoritmus na vstupní posloupnosti o délce, která je rovna některé mocnině dvojky (256, 512, 1024, 2048, …). Pokud datové okno splňuje toto kritérium, složitost výpočtu spektra pro N/2 složek je N*log2N, neboť spektrum je symetrické kolem poloviny. Ve srovnání s DFT, které má složitost N2/2 je toto obvykle výhodnější varianta, nicméně pokud nás zajímá pouze jedna spektrální složka (např. základní frekvence), potom je pracnost výpočtu při použití DFT rovna N,
14
což je určitě výhodnější než při použití FFT. Při výpočtu FFT je totiž odvození všech spektrálních komponent vzájemně provázáno a nelze tudíž s jeho pomocí vypočítat jen vybranou spektrální složku. Nevýhoda FFT vyplývající ze zmíněného faktu o délce datového okna je ta, že pomocí FFT lze detekovat jen frekvence vyplývající z poměru vzorkovací frekvence a zvolené délky okna (o délce zvolené mocniny 2), což znemožňuje jeho použití při detekci frekvencí odpovídajících konkrétním tónům hudební stupnice.
4.2.1.4 Polární značení Jak jsme si už popsali dříve, frekvenční doména je skupina amplitud kosinových a sinusových vln. Tento druh značení se nazývá pravoúhlé (kartézské) souřadnice (ReX*+, ImX*+). Podle dalšího druhu značení, které se nazývá polární, je tatáž informace vyjádřena pomocí jiných dvou souřadnic, a to délky (MagX*+) a fáze (PhaseX*+). Tyto souřadnice jsou mezi sebou oboustranně převoditelné a jeden pár souřadnic ReX*0+, ImX*0+ odpovídá jednomu páru souřadnic MagX*0+, PhaseX*0+. Pro porozumění konverzi je třeba zvážit, co se stane, pokud obě funkce (sinus, kosinus) sečteme. Výsledkem je funkce kosinus s pozměněnou amplitudou a fází. Důležité je, že se při tomto procesu neztratí žádná informace. Rovnice 4.10 Vztah mezi polárním a pravoúhlým značením
Obrázek 4.4 Grafický význam polárního systému souřadnic
Stejného výsledku jako pomocí goniometrických funkcí lze dosáhnout I s použitím vektorů. Běžně používané vztahy pro konverzi těchto souřadnicových systémů vyplývají z grafického významu znázorněného na (Obrázek 4.4). Jejich definice vypadá následovně:
Rovnice 4.11 Vztahy pro převod z pravoúhlého do polárního sytému souřadnic
Rovnice 4.12 Vztahy pro převod z polárního systému souřadnic do pravoúhlého
15
4.2.2 Krátkodobá Fourierova transformace (STFT) Krátkodobá Fourierova transformace (Short-time Fourier transform – STFT) slouží k detekci spektrálních složek krátkých úseků signálu, který se v průběhu času mění. Jedná se pouze o odlišný způsob využití DFT, tj. základní algoritmus zůstává stále stejný. Z teoretického hlediska se zpracovávaný signál násobí funkcí datového okna, která je nenulová pouze pro krátký časový okamžik. Tento krátký časový okamžik se poté posouvá v čase směrem kupředu. V praxi se postupuje tak, že se vzorkovaný signál rozdělí na úseky, které se mohou v čase překrývat, aby se zabránilo vzniku nepřesností na jejich hranicích. Každý úsek se zvlášť zpracuje pomocí Fourierovy transformace a získané výsledky se ukládají do matice. Grafické znázornění vývoje spektra v čase se nazývá spektrogram.
Obrázek 4.5 Ukázka spektrogramu (5)
4.2.2.1 Funkce datového okna Funkce datového okna je často využívána v oboru zpracování signálů a jedná se o funkci, která je má nenulové hodnoty pouze na krátkém časovém úseku. Kromě toho, že okenní funkce ovlivňuje zpracovávaný signál, má vliv i na výsledné spektrum. Aplikací datového okna na jednoduchou periodickou funkci jako sin( t) vzniknou ve spektru nenulové hodnoty I na jiných frekvencích než jen ω. Tento jev se nazývá „spektrální prolínání“ a nejvíce se projevuje na frekvencích blízkých ω. Pokud signál obsahuje dvě frekvenčně blízké sinusoidy, vlivem prolínání spektra může dojít k jejich zamaskování a ztrátě schopnosti mezi nimi rozlišit. K témuž jevu může dojít v případě velkých rozdílů v amplitudách signálů. Správnou volbou funkce datového okna můžeme těmto jevům předcházet, nicméně není obecně patrné, která konkrétní funkce by byla výhodná pro daný účel. To záleží spíše na konkrétních případech a experimentálních závěrech. V (6) je uvedeno mnoho typů datových oken. Popíšeme si ze především ty, které využijeme v této práci. Pro lepší představu vidíme na obrázku praktickou aplikaci různých druhů datových oken na signál.
16
Obrázek 4.6 Ukázka aplikace datových oken na signál
4.2.2.1.1 Obdélníkové okno Jedná se o nejjednodušší funkci datového okna, která je na určeném intervalu rovna 1, čímž ponechává signál v původním stavu. Obdélníkové okno podává výborné výsledky při rozlišování signálů srovnatelné síly, nicméně není tak vhodný pro signály s velkými rozdíly v amplitudách. Tato vlastnost je označována jako slabý dynamický rozsah. Rovnice 4.13 Obdélníkové okno
Obrázek 4.7 Grafické znázornění obdélníkového okna a jeho spektrální charakteristiky
4.2.2.1.2 Hammingovo okno Ve srovnání s obdélníkovým oknem má výhodnější charakteristiku při rozpoznávání blízkých frekvencí a amplitudově rozdílných signálů. Definice (Rovnice 4.14) je parametrizována několika hodnotami a to: 1. α – parametr definující strmost Hammingova okna nabývá hodnot <0,5; 1>. Pro hodnotu 0,5 průběh funkce začíná a končí na 0, pro hodnotu 1 je funkce shodná s obdélníkovým oknem. 17
2. N – délka okna 3. n – proměnná funkce nabývá hodnot {0, …, N-1}
Rovnice 4.14 Hammingovo okno
Obrázek 4.8 Grafické znázornění Hammingova okna jeho spektrální charakteristiky
Hammingovo okno na druhou stranu snižuje rozlišovací schopnost rozšířením spektrálního vrcholu, jak je vidět na obrázku (Obrázek 4.8). Okenní funkce obecně poskytují kompromis mezi rozlišením (šířka vrcholu) a spektrálním prolínáním (amplitudami okolních frekvencí).
4.3 Fourierova transformace s logaritmickým frekvenčním rozlišením Pokud frekvenční složky harmonického zvukového signálu naneseme na logaritmickou osu, je jejich relativní vzdálenost jsou vždy stejná nezávisle na fundamentální frekvenci. Příklad této vlastnosti můžeme vidět na následujícím obrázku (Obrázek 4.9), který je příkladem spektra hypotetického signálu s harmonickými frekvenčními složkami f, 2f, 3f, … Vzdálenost mezi prvními dvěma složkami je log(2), mezi dalšími dvěma log(3/2), atd.. Vidíme tedy, že absolutní vzdálenosti mezi frekvenčními složkami závisí na fundamentální frekvenci, zatímco relativní vzdálenosti jsou konstantní. Tyto spektrální složky vytváří frekvenční vzor, který je stejný pro všechny zvuky dané zvukové barvy. Pochopitelně narazíme na rozdíly v amplitudách harmonických složek tónů různé výšky produkovaných stejným nástrojem, to je způsobeno rozdíly ve způsobu generování tónu (jiné tloušťky strun, velikosti píšťal, apod.).
18
Obrázek 4.9 Výsledek Fourierovy transformace harmonických složek signálu znázorněný na logaritmické frekvenční ose
Standardní lineární rozdělení frekvenčního spektra získané diskrétní Fourierovou transformací rozděluje harmonické složky signálu do frekvenčních pásem o konstantní šířce. Poměr vzdáleností a celkové umístění vzoru na frekvenční ose závisí na fundamentální frekvenci signálu, což způsobuje obtížnější práci se signálem a pracnější sledování atributů signálu jako jsou barva, rychlost nástupu a rychlost útlumu. Naopak logaritmická reprezentace spektra umožňuje konzistentní práci se signály tím, že generuje konstantní vzory pro spektrální složky signálu a problém identifikace fundamentální frekvence a případně identifikace nástroje už spočívá pouze v rozeznání předem naučeného vzoru. Abychom získali logaritmickou reprezentaci spektra pro zvukový signál, mohli bychom použít standardní Fourierovu transformaci a její výsledek nanést na logaritmickou osu. V tomto případě by však nastal problém, že v nízkých frekvencích bychom z Fourierovy transformace získali příliš málo informací a ve vysokých zase příliš mnoho. Tóny nízkých frekvencí mají mezi sebou velice malé vzdálenosti na frekvenční ose, takže by docházelo k tomu, že několik tónů by padlo do některého z frekvenčních pásem Fourierovy transformace, zatímco u vysokých tónů by zbytečně mnoho frekvenčních pásem detekovalo tentýž tón a jeho okolí. Diskrétní Fourierova Short-Time transformace (STFT) má rozlišení dané vzorkovací frekvencí S a velikostí okna N následovně:
Rovnice 4.15
Pokud uvažujeme signál se vzorkovací frekvencí 44100 Hz a vstupní datové okno o velikosti 1024 vzorků, získáme rozlišení přibližně 43,1 Hz. Spodní hranicí tónového rozsahu houslí je G3 o frekvenci 196 Hz, takže rozlišení je 21% této frekvence. To je o hodně víc než 6%, což je rozdíl mezi dvěma sousedícími půltóny:
Rovnice 4.16
Horní hranicí standardní klaviatury piana je tón C8 o frekvenci 4186 Hz a rozlišení 43,1 Hz je rovno 1% této frekvence, tudíž v tomto případě počítáme se mnohem více vzorky, než potřebujeme. Je tak jasné, že pro hudební aplikace je použití standardní Fourierovy transformace neefektivní. 19
První můj pokus o algoritmus s logaritmickou frekvenční osou vycházel ze stanovení délky DFT v závislosti na frekvenci, která mě zajímá. Pokud si takto stanovím velikost okna, potom počítám spektrum pouze pro základní frekvenci, kterou následně normalizuji délkou tohoto okna, abychom získali srovnatelné výsledky. Délka okna pro tento algoritmus byla definována podle (Rovnice 4.17):
Rovnice 4.17 Dynamická délka okna pro DFT
Z toho vyplývá, že okno obsahovalo právě jednu kompletní periodu základní frekvence, což se později ukázalo jako nedostatek, který vyřešil až níže popsaný algoritmus CQT. Původní verze algoritmu vycházela z toho, že budu počítat pouze frekvence, které odpovídají jednotlivým tónům hudební škály podle předem zadaného rozsahu. S 12 půltóny na oktávu vypadal vztah pro výpočet frekvence jako:
Rovnice 4.18 Vztah pro výpočet frekvence
Nejjednodušší varianta tohoto algoritmu využívající logaritmickou velikost okna vypadala tedy následovně:
Největším problémem tohoto algoritmu byla nedostatečná rozlišovací schopnost
4.4 Constant Q transform (CQT) Upravená varianta předchozího algoritmu, kterou popisuje Judith Brown v (7), řeší nedostatky s rozlišovací schopností, které nastávaly u předchozího algoritmu. Algoritmus zavádí frekvenční rozlišení geometricky závislé na frekvenci s rozlišením 3%, abychom dokázali rozlišit mezi sousedícími půltóny (6%). Počítá tedy s rozlišením na čtvrttóny, nikoliv půltony, což je první rozdíl. Číslo 3% vychází z rozdílu dvou sousedních frekvencí, jež je roven (21/24 – 1) ≈ 0,03 násobku frekvence. Z toho vyplývá konstantní poměr frekvence a rozlišení (Rovnice 4.19).
Rovnice 4.19
Odtud vyplývá název Constant Q Transform neboli transformace s konstantním faktorem rozlišení Q. V našem případě je hodnota Q dána jako:
Rovnice 4.20
Druhým rozdílem je, že délka okna pro detekci základní frekvence je Q-násobkem základní vlnové délky, což vede k faktu, že okno obsahuje celočíselný podíl počtu celých period dvou sousedních frekvenčních složek (zhruba 34/33). Tato metoda, podrobně popsaná v následující sekci, má dvě příjemné vlastnosti. První je její jednoduchost. Druhá je to, že je počítána pro frekvence, které jsou exponenciálně rozložené s dvěma frekvenčními složkami na každou hudební notu. Toto poskytuje přesně tolik informace, kolik potřebujeme, abychom dokázali rozlišit mezi dvěma sousedícími tóny. Navíc nám 20
zpracování zvuků s harmonickými frekvenčními složkami poskytne konstantní vzor na logaritmické frekvenční ose.
4.4.1 Výpočet CQT Pro hudební analýzu bychom chtěli počítat frekvenční složky s rozlišením jednoho čtvrttónu rovnoměrně temperované hudební stupnice. Frekvence k-té frekvenční složky je tudíž dána jako:
Rovnice 4.21
Kde fk spadá do rozsahu mezi fmin a Nyquistovou frekvencí (polovina vzorkovací frekvence). Minimální frekvence může být zvolena podle zkoumaného signálu těsně pod dolním hranicí rozsahu sledovaného nástroje. Jak již bylo zmíněno, šířka pásma δf diskrétní Fourierovy transformace je rovna podílu vzorkovací frekvence a velikosti okna (počtu vzorků analyzovaných na časové ose). Aby mohl být podíl konstantní, musí se velikost okna měnit nepřímo úměrně frekvenci. Konkrétněji s vzorkovací frekvencí fs = 1/T, kde T je vzorkovací perioda, je velikost okna pro frekvenci fk dána jako:
Rovnice 4.22
Vzhledem k tomu, že perioda frekvence fk ve vzorcích je dána jako S/fk, vyplývá z toho, že okno obsahuje přesně Q period této frekvence, což umožňuje při transformaci lepší rozlišení mezi sousedícími frekvenčními složkami. Pro k-tou složku frekvenčního spektra pro transformaci s konstantním Q vyplývá vztah:
Rovnice 4.23
Zde xn je n-tý vzorek zpracovaného signálu, 2πQ/Nk je frekvence a Wk,n je funkce, která vyjadřuje tvar datového okna. Ta bude probrána podrobněji dále. Má stejný tvar pro každou frekvenční složku, ale její délka je dána Nk, takže je funkcí k stejně jako n. Musíme ale normalizovat výsledek vydělením součtu Nk, neboť počet sčítanců se s k mění. Dostaneme tedy nový tvar rovnice:
Rovnice 4.24
Pokud je funkce datového okna dána jako Wk,n = 1 na celém intervalu *0, .., Nk – 1], pak tato funkce odpovídá obdélníkovému oknu. Toto okno má však pro nás dle (8) nevhodné vlastnosti vzhledem k maximálním přesahům frekvencí do sousedních frekvenčních pásem. Využijeme proto Hammingovu funkci, která je definována jako:
21
Rovnice 4.25
kde α = 25/46 a n = 0 .. Nk – 1. Výpočet rovnice (Rovnice 4.24) se dá optimalizovat předpočítáním hodnot výrazů:
Rovnice 4.26
pro hodnoty k = 1 .. (k odpovídající maximální zkoumané frekvenci) a n = 1 .. Nk. Tyto výrazy jsou shodné v každém vyhodnocení CQT pro celé spektrum odpovídajícímu jednomu časovému posunu v signálu a dají se použít pro všechny signály s danou vzorkovací frekvencí, ze které vychází příslušné délky oken. Pro lepší představu o vlastnostech CQT přikládám srovnávací tabulku CQT a DFT: Constant Q transform
DFT
(21/24)k * fmin
k* f
exponenciální dle k
lineární dle k
Délka datového okna
Variabilní = Nk = S/fk*Q
Konstantní = N
Rozlišení f
Variabilní = fk/Q
Konstantní = S/N
fk/ fk
Konstantní = Q
Variabilní = k
Počet cyklů v okně
Konstantní = Q
Variabilní = k
Frekvence
Tabulka 4.1 Srovnání vlastností CQT a DFT
4.4.2 Optimalizace použitím half-band filtru a podvzorkováním Pokud je výpočetní čas důležitým faktorem, můžeme použít výpočetní optimalizaci navrženou v (7). Používáme-li proměnnou délku vstupního datového okna, je zřejmé, že pro hluboké tóny s nízkou frekvencí potřebujeme zpracovávat více vzorků než pro vysoké tóny. Tato varianta optimalizace staví na tom, že po zpracování nejvrchnější oktávy ze zkoumaného rozsahu podvzorkujeme signál na poloviční frekvenci tím, že zahodíme každý druhý vzorek tohoto signálu. Tím se frekvence signálu zdvojnásobí a z hudebního hlediska se celý signál zvýší o oktávu. Abychom však zabránili porušení Shannonova vzorkovacího teorému, musíme před podvzorkováním odfiltrovat ze signálu frekvence větší než ½ Nyquistovy frekvence, aby podvzorkovaný signál neobsahoval frekvence větší než je Nyquistova. Jev, ke kterému dochází, když se frekvence vyšší než Nyquistova promítají zpět do spektra, se nazývá "roztřepení". Tento jev je znázorněn na obrázku (Obrázek 4.10) a je podobný např. pohybu kol u auta ve starších filmech. Dokud se kola pohybovala pomalu, kamera neměla problém se snímáním jejich pohybu, nicméně jakmile se kola zrychlila, jejich pohyb se začal zdánlivě zpomalovat. V určitém bodě 22
se zastavila a pak se dokonce začala pohybovat opačným směrem. Tento zpětný pohyb kol je analogií roztřepení, ke kterému dochází ve vzorkovaných zvukových signálech.
Obrázek 4.10 Roztřepení signálu (9)
Např. pokud máme signál navzorkovaný s frekvencí 44100 Hz a Nyquistovou frekvencí 22050 Hz, tak před podvzorkováním na 22050 Hz musíme aplikovat filtr na frekvence nad 11025 Hz, abychom zabránili tomu, že signál bude obsahovat frekvence vyšší než nově stanovená Nyquistova frekvence 11025 Hz. Vzhledem ke vlastnostem filtrů se nám toto nikdy nepodaří úplně dokonale, zejména pokud je cílem tohoto kroku optimalizace rychlosti výpočtu a kvalita filtru je přímo úměrná jeho výpočetní náročnosti. Využil jsem implementaci FIR filtru optimalizovanou pro filtrování poloviny pásma (half-band filter) uvedenou v (10).
4.4.3 Optimalizace CQT pomocí transformace FFT Další varianta optimalizace nepříliš rychlého algoritmu CQT je uvedena v (11). Vychází z transformace výsledku DFT z lineární do logaritmické osy. DFT je vyhodnocena rychlým algoritmem FFT a celá operace trvá jen o trochu déle, neboť celá transformace do logaritmické osy vyžaduje pouze malé množství výpočetních operací. Transformace vychází ze vztahu pro výpočet CQT (Rovnice 4.27).
Rovnice 4.27 CQT
Vzhledem k tomu, že přímé vyhodnocení je výpočetně neefektivní, můžeme s využitím Parsevalova vztahu odvodit rovnost platnou pro dva diskrétní signály x*n+, y*n+, kde X*n+, Y*n+ jsou diskrétní Fourierovy transformace signálů x*n+, y*n+, a Y**n+ je komplexně sdružená funkce Y*n+.
Rovnice 4.28 Parsevalův vztah
Rovnice 4.29 Substituce za časové jádro transformace
Pokud do vztahu (Rovnice 4.27) dosadíme substituci dle (Rovnice 4.29), dostaneme rovnici, kterou upravíme dle Parsevalova vztahu (Rovnice 4.28) do výsledného tvaru (Rovnice 4.30). Symbol 23
K označuje spektrální jádro (spectral kernel) transformace, tj. diskrétní Fourierovu transformaci jehož definice je uvedena v (Rovnice 4.31).
,
Rovnice 4.30 Vztah pro efektivní výpočet CQT
Rovnice 4.31 Výpočet spektrálního jádra transformace
Symbol X[k] v rovnici (Rovnice 4.30), který představuje DFT signálu, se vypočítá efektivním algoritmem FFT, jehož výsledek se, jak vyplývá z rovnice, násobí předem připravenými hodnotami v matici K*. Obrázek (Obrázek 4.11) znázorňuje reálnou složku časových jader transformace definovanou v (Rovnice 4.29) pro prvních 30 not. Vertikální osa je označena číslem jádra kcq, které koresponduje s jeho frekvencí definovanou dle (Rovnice 4.21). Horizontální osa reprezentuje číslo vzorku n dle (Rovnice 4.29). Hodnoty jader jsou normalizovány délkou okna odpovídající kcq-té složce CQT, aby transformace pro všechny noty měla stejné amplitudy a nerostla s délkou okna.
Obrázek 4.11 Časová jádra transformace
Další obrázek (Obrázek 4.12) znázorňuje mapování pásem FFT na jednotlivé noty. Vztah pro výpočet sice obsahuje sumu přes všechny hodnoty FFT, nicméně z obrázku je patrné, že hodnot v řádcích je nulových. Na tom se dá ušetřit hodně času tím, že nulové hodnoty (případně hodnoty menší než hodnota daná parametrem) přeskočíme. V praxi to na každý řádek obnáší cca 1-5 operací násobení.
24
Obrázek 4.12 Mapování frekvencí FFT na logaritmickou osu CQT
25
5 Monofonní analýza (MA) Algoritmy monofonní analýzy předpokládají, že v analyzovaném signálu může v jednom časovém okamžiku znít pouze jeden tón. Monofonní metody se generalizují do dvou skupin: první skupina pracuje se signálem v časové doméně, druhá ve frekvenční. Dvě autokorelační metody, které si uvedeme v následujících kapitolách, spadají do první skupiny, zatímco metoda porovnávání se vzorem do skupiny druhé.
5.1 Zúžená autokorelační funkce (ACF) Autokorelace je korelace signálu se sebou samým. Jedná se o nástroj, který slouží k hledání opakujících se vzorů v signálu. Tato metoda je obzvláště slibná při zpracování monofonních hudebních signálů vzhledem k tomu, že veškeré vyšší harmonické frekvence zvuku jsou násobky fundamentální frekvence, čímž tuto frekvenci při autokorelaci ještě zvýrazní. Dokonce je možné touto metodou detekovat i chybějící fundamentální frekvenci. Použití ACF je vhodné pro signály, jejichž délka je několikanásobná ve srovnání s periodou fundamentální frekvence, což hudební signály většinou splňují. V následující kapitole si popíšeme výpočet zúžené varianty ACF, která je zajímavá obzvláště pro hudební signály, neboť identifikace hlavního vrcholu odpovídajícího fundamentální frekvenci může být znemožněna šumem i se srovnatelně nízkými amplitudami. Zúžení vrcholků ACF pomáhá tento šum lépe oddělit od signálu. Zúžení vrcholků autokorelační funkce je dosaženo zvýšením počtu analyzovaných vzorků signálu, což má za důsledek nižší časovou přesnost.
5.1.1 Výpočet ACF Autokorelační funkce pro spojité funkce je definována vztahem (Rovnice 5.1), nicméně výhodné je počítat ji vztahem (Rovnice 5.2), kde křížový součin obou sčítanců představuje autokorelaci.
Rovnice 5.1 Autokorelační funkce
Rovnice 5.2 Výhodný tvar autokorelační funkce
Pokud namísto toho použijeme vztah (Rovnice 5.3), potom jeho druhá mocnina (Rovnice 5.4) obsahuje součin všech obsažených dvojic sčítanců. Součiny členů f(t)*f(t + 2τ),f(t)*f(t + 3 τ),… pomáhají zúžit vrcholy autokorelační funkce. Pro N = 2 získáme vztah pro jednoduchou autokorelaci zvýšenou o konstantu.
Rovnice 5.3 Vztah pro zúženou autokorelaci
Rovnice 5.4 Druhá mocnina vztahu pro zúženou autokorelaci
26
Rovnice 5.5 Konečný tvar zúžené autokorelační funkce
Pro diskrétní případ vzorkovaného signálu získáme sumou přes okno signálu konečný tvar zúžené autokorelační funkce (Rovnice 5.4). Hodnota W je délka okna pro autokorelační funkci. Řídicí proměnná funkce τ nabývá hodnot od 0 do T, kde hodnota T omezuje nejdelší zkoumanou vlnovou délku. Např. pokud T nabývá hodnoty 441, potom při vzorkovací frekvenci 44100Hz je teoreticky nehlubší možná zkoumaná frekvence 100Hz, což zhruba odpovídá velkému G.
Rovnice 5.6 Ukázka průběhu autokorelační funkce pro N=2, N=5 a N=10 pro signály s periodami 97 a 81 vzorků s poměrem amplitud 4:1 (12)
Tvar rovnice (Rovnice 5.5) můžeme normalizovat hodnotou SN2(τ) pro τ = 0, kde je její hodnota teoreticky nejvyšší, čímž průběh autokorelace omezíme do intervalu <0, 1>. Výsledek korelace můžeme vidět na obrázku (Obrázek 5.1), který představuje stoupající klavírní stupnici C dur. Na obrázku je pěkně vidět, jak se vlnové délky tónů zkracují a korelace vytváří stále bližší vrcholy.
Obrázek 5.1 Ukázka normalizované autokorelační funkce (N = 3) pro stupnici C dur zahranou na klavíru – data pro zobrazení byla vygenerována programem Audiotape
27
Důležitou vlastností hudebních signálů je, že většinou obsahují vyšší harmonické frekvence. Při použití autokorelační funkce dochází k tomu, že jeden z vrcholů vyšších harmonických frekvencí se vždy překrývá s fundamentální frekvencí. Např. druhá vyšší harmonická má vlnovou délku rovnou polovině vlnové délky fundamentální frekvence (T/2). Důsledkem toho na autokorelační funkci vytváří vrcholy na vzdálenostech T/2, 2(T/2), 3(T/2), … druhý vrchol druhé harmonické se tudíž překrývá s prvním vrcholem fundamentální frekvence. V podobném duchu to funguje i pro další harmonické složky. Z toho vyplývá, že průnik všech vyšších harmonických složek signálu nastává právě na vlnové délce fundamentální frekvence, kde vzniká nejvyšší vrchol, a to i v případě, že fundamentální frekvence v signálu chybí.
5.1.2 Výpočet frekvence z výsledků ACF Určení fundamentální frekvence ze znázorněných grafů spočívá v nalezení vrcholu, který odpovídá jedné vlnové délce fundamentální frekvence. Tento problém je komplikován faktem, že při výpočtu diskrétní autokorelace na vzorkovaném signálu nemusí být odpovídající vzorek umístěn přesně na pozici dané vlnové délky. Důsledkem toho dochází k tomu, že očekávaný vrchol nemusí být nutně nejvyšší. Abychom vyřešili tento problém, zavedeme další parametr výpočtu δ, který označuje minimální poměr předchozího a nově nalezeného vrcholu, aby byl nový vrchol uznán za platný.
Obrázek 5.2 ACF klavírní stupnice (δ=1,0)
Obrázek 5.3 ACF klavírní stupnice (δ=1,5)
Z povahy problému vyplývá, že k chybám bude docházet určením špatného vrcholu autokorelační funkce, tudíž nejčastěji detekcí tónu ve špatné oktávě.
5.1.3 Implementace Vzhledem k tomu, že autokorelace pracuje se signálem v časové doméně, není kvůli jejímu výpočtu potřeba provádět spektrální analýzu. Parametry pro výpočet autokorelace jsou následující: 1. Úroveň autokorelace – pro výpočet zúžené autokorelace ,2, …, 52. Délka autokorelačního okna (lag) – tímto parametrem se mimo jiné určuje nejhlubší frekvence, kterou lze autokorelací zachytit ,100, …, 10003. δ – parametr určující poměr vrcholů při hledání maxima <1; 2>
5.2 Invertovaná autokorelační funkce (IACF) Invertovaná autokorelační funkce je další variantou autokorelace signálu, která vychází ze vztahu původního signálu a korelace se signálem posunutým v čase. Zatímco v první variantě jsme zkoumali
28
pouze autokorelaci signálu, tentokrát je výsledkem funkce rozdíl hodnoty signálu a autokorelační funkce definované dle vztahu (Rovnice 5.7).
Rovnice 5.7
Dle (12) bylo dokázáno, že (Rovnice 5.7) nejlépe vystihuje periodický signál f(t) na intervalu Nτ z hlediska střední kvadratické chyby. Výraz (Rovnice 5.8) dosahuje minimálních hodnot pro násobky vlnové délky základní frekvence signálu.
Rovnice 5.8 Invertovaná autokorelační funkce
Princip nalezení fundamentální frekvence signálu je podobný jako v případě předchozí varianty ACF s jediným rozdílem, že místo prvního vrcholu hledáme první dno funkce odpovídající jedné vlnové délce základní frekvence.
5.2.1 Implementace Invertovaná autokorelace je parametrizovaná stejně jako předchozí varianta.
5.3 Porovnávání se vzorem (pattern matching) Na rozdíl od dvou autokorelací, které jsme si právě uvedli, počítá většina metod zabývajících se hledáním fundamentální frekvence ve frekvenční doméně. Jednou z prvních, která přistupovala k problému podobně jako ta, kterou si za chvíli ukážeme, byla metoda Schröderova metoda histogramu (13). Po výpočtu FFT (lineární frekvenční osa) byla pro každou frekvenční složku a příslušné frekvence, jejichž vyšší harmonická by to mohla být, vypočtena hodnota, která byla následně uložena do tabulky. Hodnoty byly následně zváženy a na základě kritérií jako počet harmonických složek a jejich vah byla určena fundamentální frekvence F0. V principu se jednalo o metodu nalezení největšího společného dělitele harmonických složek obsažených ve spektru. V kapitole 4.2.2 jsme si ukázali metodu výpočtu Fourierovy transformace s konstantním faktorem rozlišení Q – Constant Q Transform. Tato metoda má tu výhodu, že zachovává konstantní poměr mezi harmonickými složkami zvuku pro různé fundamentální frekvence, což se nám bude zrovna velice hodit. Díky tomu můžeme vytvořit konstantní vzor pro hledání harmonických tónů s jedničkami na pozicích vyšších harmonických frekvencí a nulami na pozicích zbývajících. Případně vytvořit tabulku těchto hodnot, abychom zbytečně neprocházeli nulové hodnoty. Takový vzor může vypadat následovně (rozlišení je zde dáno jako 24 čtvrttónů na jednu oktávu):
29
Obrázek 5.4 Jednoduchý harmonický vzor
Pro tento vzor a spektrální výsledek CQT můžeme vypočítat korelaci, která přidělí váhy jednotlivým frekvencím. Každá vyšší harmonická složka signálu připadne na příslušnou složku harmonickém vzoru. Tudíž místo násobení, dělení, vážení, ukládání výsledků do tabulky a vybírání správných kritérií dostáváme jedno číslo pro každou frekvenci, které představuje součet frekvenčních složek zvuku, které jsou ve správné pozici tak aby byly násobky fundamentální frekvence (vyšší harmonické). Možnou variantou tohoto přístupu je nastavit harmonický vzor tak, že na základní pozici má hodnotu 1, zatímco na ostatních hodnoty nižší (např. 0,5), neboť při použití vzoru se samými jedničkami dochází často k identifikaci tónu v nižších oktávách.
5.3.1 Implementace První krok je výpočet spektrální analýzy pomocí CQT. Na výstup CQT se aplikuje algoritmus s následujícími parametry: 1. Harmonický vzor – vybraný harmonický vzor, se kterým se koreluje spektrum. Může se použít vzor odpovídající konkrétnímu nástroji, ale stačí i obecný vzor uvedený v minulé kapitole. 2. Vyhlazení pomocí prokládání paraboly – parametr určující, zda má být na vítězné pozici vrcholu provedeno zpřesnění metodou popsanou v další kapitole
5.4 Pomocná metoda prokládání paraboly (quadratic fit) Mezi pomocné metody, které můžeme při monofonní analýze použít, patří metoda prokládání paraboly. Není to metoda sama o sobě, ale může nám pomoci zpřesnit výsledky zmíněných metod. Její využití se nabízí v případě, kdy máme vzorkovanou funkci y(x) definovanou pouze pro celočíselné hodnoty x a hledáme její lokální maxima. Dá se totiž předpokládat, že v takovém případě maximum nepadne přesně na jeden z bodů z definičního oboru. Metoda prokládání paraboly spočívá ve vedení paraboly bodem, který se jeví jako maximum, a dvěma sousedními. Pokud maximální diskrétní hodnotu umístíme na x = 0 a y(0) = y0, potom předpokládáme, že tři body označené jako (-1, y-1), (0, y0) a (1, y+1) leží na parabole. Po odvození z rovnice paraboly dostaneme vztah (Rovnice 5.9), kterým vypočítáme posun souřadnice k maximu na x-ové ose.
Rovnice 5.9 Vztah pro výpočet maxima metodou prokládání paraboly
Metoda pochopitelně není úplně přesná, neboť nic neříká, že signál procházející třemi body musí mít tvar paraboly, nicméně stále se jedná o šikovnou metodu, která nám skutečnou polohu maxima dokáže alespoň přiblížit. Další nespornou výhodou je její výpočetní nenáročnost. 30
Obrázek 5.5 Grafické znázornění prokládání paraboly (14) – čárkovaná čára znázorňuje skutečný průběh signálu, plná čára prokládanou parabolu
5.5 Pomocná metoda vyhlazení melodie Vzhledem k tomu, že výsledky metod detekce F0 nemusí být vždy přesné, vyplatí se na melodický výstup aplikovat dodatečnou heuristiku, která melodii upraví do uhlazenější podoby. Často se stává, že několik vzorků je detekováno správně, ale třeba jeden až dva jsou umístěny docela mimo očekávanou linii. Smyslem takovéto heuristiky je takové skupiny vzorků s jednou převažující frekvencí najít a vzorky, které byly špatně detekovány, přemístit na převažující frekvenci. Výstupy získané i takovou jednoduchou metodou jsou velice přijatelné a hodně dodávají celkovému dojmu z výsledku.
31
6 Polyfonní analýza (PA) Problematika detekce více fundamentálních frekvencí v rámci hudebního signálu je daleko komplexnější než monofonní analýza. Algoritmy pro polyfonní analýzu sice obecně předpokládají, že může být více než jeden harmonický zdroj (hudební nástroj) s rozličnými spektrálními charakteristikami, ale pro zjednodušení budeme v této práce předpokládat jenom jeden druh nástroje. Algoritmy pro MA nejsou pro PA příliš použitelné, nicméně využívají podobných principů nebo jsou na nich založeny.
6.1 Detekce počtu současně znějících tónů Podstatným problémem způsobeným komplexností polyfonních signálů je detekce počtu současně znějících tónů. Důsledkem překrývání alikvotních frekvencí jednotlivých tónů se informace o frekvencích, amplitudách a fázích zkresluje. V rovnoměrně temperovaném ladění existuje velká pravděpodobnost, že alikvotní a základní frekvence dvou tónů budou překrývat. Pokud jsou základní frekvence dvou tónů v celočíselném poměru (např. v oktávě), potom dochází k úplnému překrytí fundamentální frekvence vyššího tónu s vyšší harmonickou nižšího. Následkem tohoto může dojít ke špatnému odhadu a považováním fundamentální frekvence vyššího tónu za alikvotní bude počet odhadnutých tónů nižší než skutečný. K opačnému problému dojde, pokud se jeden tón detekuje jako součet několika hypotetických tónů. Navíc pokud rušivé vlivy jako ozvěna (dozvuk, akustika) a šum naruší periodickou složku zvuku, výsledek detekce počtu současně znějících tónů to ještě více zkreslí.
6.2 Metody polyfonní analýzy 6.2.1 Iterativní odhad Iterativní odhad iteruje přes předem odhadnuté kandidáty na fundamentální frekvence a postupně vyrušuje všechny její alikvotní složky, až dojde ke splnění konečné podmínky. Iterativní přístup předpokládá, že v každém cyklu iterace existuje dominantní zdroj, který lze ve spektru zřetelně rozlišit tak, že extrakce odpovídající fundamentální frekvence je spolehlivá, i když jsou vázané alikvotní frekvence zanedbatelné.
6.2.1.1 Celkové vyrušení Algoritmus celkového vyrušení nalezne libovolnou spektrální monofonní metodou fundamentální frekvenci a následně ze spektra odstraní všechny alikvotní frekvence. Tento přístup předpokládá, že kompletní odstranění dominantní frekvence nenaruší následný průběh výpočtu. „Celkové“ vyrušení tu znamená, že interakce jednotlivých tónů jako překrývání alikvotních frekvencí se neuvažuje. Alternativou k celkovému vyrušení je metoda založená na stejném principu využívající spektrálních charakteristik konkrétních hudebních nástrojů, které jsou odečítány ze spektra.
6.2.1.2 Implementace Při implementaci jsem k odhadu fundamentální frekvence zvolil monofonní metodu porovnávání se vzorem popsanou v kapitole 5.3. Prvním krokem je tedy nalezení F0 pomocí této metody následovaný odečtením vzoru ze spektra. Parametry jsou shodné s monofonní metodou s jediným parametrem navíc, a to: - harmonický vzor – harmonický vzor pro výpočet korelace a k odečítání ze spektra
32
6.2.2 Spojitý odhad (joint estimation) Tato metoda se na rozdíl od iterativního přístupu pokouší vyhodnocovat možné hypotézy o kombinaci tónů bez rušení. Přestože signál není zkreslován postupným vymazáváním složek, stále není detekce spojitých složek jednoduchou záležitostí. Dle studií, které jsou uvedeny v (15), se spojitý odhad vyznačuje lepšími výsledky než iterativní metody, neboť jedno selhání v detekci fundamentální frekvence u iterativní metody znehodnocuje celý následující průběh výpočtu.
6.2.2.1 Implementace Důležitým principem při analýze polyfonního signálu je to, že hlubší tóny svými alikvotními frekvencemi zasahují do vyšších, ale naopak ne, proto je výhodné začít s odečítáním od nižších tónů, čímž se ze spektra odstraní zavádějící alikvotní tóny. Svoji metodu jsem založil na korelaci spektrálního vzoru (Obrázek 6.1) se spektrem signálu (Obrázek 6.2).
Spektrální model klavírního tónu 1,0 0,8 0,6 0,4 0,2 0,0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 Obrázek 6.1 Spektrální charakteristika klavírního tónu použitá při analýze
CQT signálu 2500 2000 1500 1000 500
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117
0
Obrázek 6.2 CQT části signálu obsahující klavírní akord C moll – šipky označují reálné pozice tónů
Výsledkem korelace těchto dvou vektorů je další vektor (Obrázek 6.3), z kterého je možné pomocí statistického percentilu určit množinu kandidátů na fundamentální frekvence. Při průchodu této množiny od nejnižšího tónu a odečítáním jejich spektrálních vzorů od spektra signálu dospějeme ke 33
konečné skupině tónů včetně jejich relativních amplitud. Je jisté, že se mezi tóny objeví i nepravé, nicméně jejich amplitudy budou (tedy v závislosti na tom, jak použitý harmonický vzor odpovídá barvě tónů v signálu) relativně nízké.
Volba kandidátů na F0 3000 2500 2000 1500
percentil
1000 500
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117
0
Obrázek 6.3 Korelace spektra a harmonického vzoru + volba kandidátů
6.2.3 Vztah korelace harmonického vzoru a spektra Další metoda, kterou jsem zkusil experimentálně implementovat, spočívá v jednoduchém principu, a to vyhodnocením vztahu mezi korelační funkcí spektra a harmonického vzoru a spektrem signálu. Základní myšlenka je taková, že na základě korelace zvýrazňuji nebo případně potlačuji jednotlivé složky spektra. Pokud má tón ve spektru slabou přítomnost, ale korelace je vysoká, pak se vynásobením upraví jeho váha ve výsledném spektru. Touto metodou lze tak upravit váhy jednotlivých složek ve spektru tak, aby blíže odpovídaly skutečnosti. Jedná se spíše o jednoduchou doplňkovou metodu, kterou lze využít v případě nespokojenosti s výsledky předchozích metod, případně pro porovnání. V praxi často dochází ke zvýraznění oktáv, jak lze vidět na analýze Měsíční sonáty od Beethovena v sekci ukázek.
34
7 Program AUDIOTAPE Program Audiotape je výsledek implementace všech uvedených algoritmů sloužících k analýze zvukových souborů. Hlavními rysy programu je analýza existujících souborů ve formátech WAV, MP3 a OGG a průběžná analýza a zobrazení dat nahrávaných ze vstupu nakonfigurovaného systému – může se jednat o mikrofon, hudební nástroj připojený kabelem k počítači nebo takto nahrávat i momentálně přehrávanou skladbu v softwarovém přehrávači na počítači. Program podporuje analýzu zvukový dat se vzorkovací frekvencí 44100Hz s rozlišením 16bit. Kromě toho, že se jedná o standard pro zvukové stopy hudebních CD, je to také nejrozšířenější konfigurace, co se týče šíření hudby vůbec. Program je k dispozici ve dvou jazykových variantách – v češtině a angličtině. Jazyk programu se volí automaticky podle prostředí operačního sytému nebo manuálně volbou spouštěcího skriptu. Nástroj je implementován v jazyce Java, díky čemuž jej lze provozovat na různých operačních systémech, nicméně má na provoz vyšší hardwarové nároky než by tomu bylo při implementaci pomocí jiných programovacích jazyků.
Obrázek 7.1 Ukázka programu Audiotape
7.1 Spuštění programu a konfigurace prostředí Program vyžaduje nainstalované provozní prostředí JRE (Java Runtime Environment) verze 5 a vyšší. V případě jeho absence v systému na to spouštěcí skript upozorní chybovým hlášením. Program je možné spustit pomocí skriptů určených pro operační systémy windows (s příponou bat) a linux (s příponou sh): - audiotape.sh/bat (windows) – automatická detekce jazykového prostředí - audiotape_cz.sh/bat, audiotape_en.sh/bat – spustí konkrétní jazykovou variantu aplikace 35
7.2 Analýza zvukového souboru 7.2.1 Otevření souboru Zvukový soubor lze otevřít dvěma způsoby – položkou v hlavním menu „Otevřít soubor“ nebo přetažením soubor na aplikaci. Pokud formát souboru nevyhovuje parametrům aplikace, zobrazí se chybová hláška. Povolené jsou formáty WAV, MP3, OGG se vzorkovací frekvencí 44100Hz, hloubkou vzorku 16bitů s jedním nebo dvěma kanály (mono i stereo). Po úspěšném otevření souboru se v hlavním panelu aplikace vytvoří nová záložka s názvem souboru obsahující kromě nápisu, že ještě nebyla provedena žádná analýza, kombo box, ve kterém se budou později objevovat odkazy na výstupy provedených analýz.
7.2.2 Konfigurace Veškerá konfigurace se před provedením analýzy odehrává na levém panelu. Záhlaví panelu obsahuje základní rozcestník pro analytické metody, jehož nastavení určuje zobrazení dalších panelů souvisejících se zvolenými algoritmy. Uživatel tak vždy vidí pouze parametry týkající se algoritmů, které se budou během analýzy provádět. Pokud již uživatel otevřel soubor, je aktivní tlačítko „Spustit analýzu“, jehož stiskem se na zvolený soubor (soubor se zvolí otevřením příslušné záložky). Stiskem tohoto tlačítka se spustí analýza, jejíž průběh je znázorňován v nově zobrazeném panelu ukazujícím procentuální plnění. Provádění analýzy lze zrušit stiskem tlačítka „Zastavit“. Pokud ještě nebyl otevřen žádný soubor, je přesto aktivní tlačítko „Spustit nahrávání“, které zahájí nahrávání ze vstupu, který byl v operačním systému nastaven jako nahrávací vstup. V závislosti na konfiguraci se může jednat o mikrofonní vstup počítače, případně linkový vstup (line in) nebo u pokročilejších zvukových karet s více vstupy o kterýkoliv vybraný nahrávací kanál. Stejně tak se může nastavit jako vstup i zmixovaný výstup, který putuje do reproduktorů, pomocí kterého se dají zachytit vybrané části skladby, která je momentálně přehrávaná nějakým přehrávačem.
7.2.3 Výsledky analýzy Po provedení analýzy se ve velkém hlavním panelu zobrazí grafický výstup. Tento výstup má dvě vrstvy: spektrum a melodie. Oboje vrstvy se dají zapínat a vypínat stejnojmennými přepínacími tlačítky v horním panelu. V případě, že byla daná analýza založena na spektrální analýze, potom je k dispozici její výsledek, pokud ne, pak lze zobrazit pouze melodii (např. u autokorelačních metod). Intenzita tónů je u spektrální analýzy znázorněna barevně s paletou bílá-černá-červená a bílým pozadím. Střední hodnota pro výpočet barvy odpovídající dané amplitudě je získána percentilem z celého spektra/polyfonie.
7.2.4 Uložení výsledků Grafický výstup analýzy tak jak je momentálně nastaven (týká se to konfigurace zobrazení melodie a spektra) lze uložit na disk do souboru ve formátu PNG. To je možné provést jednak přes kontextové menu na grafickém panelu volbou položky „Uložit analýzu jako obrázek“ nebo stejnojmennou položkou v hlavním menu.
36
7.3 Nahrávání Další funkcí programu je nahrávání a analýza ze systémového nahrávacího vstupu. Lze jej použít na libovolnou metodu využívající spektrální analýzu. Při analýze za běhu je patrné určité zpoždění, jednak je to tím, že některé metody potřebují mít při analýze rezervu signálu, aby mohly vyhodnotit data pro jedno časové okno, a další důvod je výpočetní složitost analytických algoritmů. Po ukončení nahrávání stejným tlačítkem jako pro spuštění se nahraná data analyzují ještě jednou, neboť pro některé funkce zobrazení je potřeba mít informace o celém signálu (zejména výpočet střední amplitudy spektra a signálu pro rozumné určení měřítka zobrazení).
37
8 Ukázky
Obrázek 8.1 Stupnice C dur hraná na housle (MIDI) - Autokorelační funkce
Detekce za pomocí autokorelacích funkcí ukázaly být v rozporu s očekáváním nepříliš přesná. Nejspíše vlivem ruchů v signálu dochází k odchylkám v detekci základní frekvence až o 50 centů (1 čtvrttón), což je u metody, u které jsem očekával přesnost vlnových délek v řádech jednotek naprosto nemyslitelná. Oproti tomu skvělé výsledky vykázala metoda porovnávání se vzorem, zejména v kombinaci s pomocnými technikami prokládání parabolou a vyhlazení melodie. Výsledek analýzy téhož souboru jako horní ukázka je na následujícím obrázku (Obrázek 8.2), ze kterého je patrné, že noty stupnice jsou hrané naprosto čistě (což se dá z předlohy patternu MIDI předpokládat).
Obrázek 8.2 Stupnice C dur hraná na housle (MIDI) - Porovnávání se vzorem
Další pěkná ukázka aplikace metody porovnávání se vzorem je na další straně, kde je umístěna analýza úvodu skladby Le Moulin od Yanna Tiersena. V přiložené spektrální analýze je vidět, že u znějícího nástroje často vyšší harmonické složky převyšují základní frekvenci, přesto tato metoda podává excelentní výsledky ve správném rozpoznání tohoto jevu. V kombinaci s prokládáním parabolou navíc pěkně detekuje jemné nuance tónů jako vibrato.
38
Obrázek 8.3 Le Moulin (Yann Tiersen) - CQT spektrum
Obrázek 8.4 Le Moulin (Yann Tiersen) - monofonní analýza metodou "pattern matching"
39
Obrázek 8.5 Měsíční sonáta (Beethoven) - Polyfonní analýza metodou spojitého odhady
Obrázek 8.6 Měsíční sonáta (Beethoven) klavír - Polyfonní analýza metodou korelace spektra a vzoru
Na této stránce vidíme výsledky analýzy úvodu klavírní skladby „Měsíční sonáta“ od Beethovena. Polyfonní analýza je očividně značně komplexnější a je proto dobré využít vícero metod k analýze jedné skladby. Nejčastějším problémem, který se v analýze vyskytuje, je detekce tónu na pozici druhé vyšší harmonické, tj. oktávy. Je to zjevné zejména v pravé ukázce.
40
9 Závěr V této práci jsem se pokusil o průzkum základních metod pro analýzu hudebních skladeb. Nejlepší výsledky se mi podařilo získat pomocí metody monofonní analýzy „srovnání se vzorem“, obzvláště pak v kombinaci s prokládáním parabolou a konečným vyhlazením melodie. Naopak s výsledky některých funkci (zejména autokorelačních) jsem nebyl příliš spokojen, nicméně pokud lze pro daný účel použít alternativu a problém vyřešit jinou cestou, potom toto nepředstavuje velký problém. Co se týče polyfonních metod, potom je patrné, že přesnost detekce závisí na odpovídajícím harmonickém vzoru, který pro analýzu použijeme. Potíž je v tom, že např. u klavíru se barva tónu hodně mění v závislosti na jeho dynamice a výšce, tzn. pokud bychom chtěli opravdu přesnou analýzu s použitím zmíněných metod, museli bychom mít pro daný nástroj knihovnu vzorků pro všechny tóny klaviatury a pro různé úrovně dynamiky. Samozřejmě také záleží na kvalitě pořízení vzorků a akustice prostředí. Musím ovšem podotknout, že i tak už mi polyfonní algoritmy implementované v programu pomohly s transkripcí jedné skladby, se kterou jsem si předtím nevěděl rady. Téma, kterému jsem se věnoval ve svojí diplomové práci, je tak rozsáhlé, že mu mnozí lidé zasvěcují celý svůj život. Metod pro hudební analýzu je samozřejmě víc a mohou být mnohem komplikovanější než ty, které jsem ve své práci zmínil. Zejména metody týkající se polyfonní analýzy, neboť to je odvětví, které se v současné době rychle vyvíjí. Metody, na které jsem při studiu narazil, často zmiňují statistické heuristiky o pravděpodobnosti současného výskytu určitých tónů nebo využití skrytých Markovových modelů, což už představuje úplně jinou sféru výzkumu vyžadující solidní zázemí. Mým záměrem bylo vzít základní funkční algoritmy a implementovat je do užitečné aplikace, která bude sloužit ať už mně nebo komukoliv jinému na cestě hudebníka, a pomáhat mu k tomu, aby na hudební nahrávky získal nový pohled. Pokud bych se dále zabýval skloubením možností informatiky a hudby, určitě bych se zaměřil na algoritmy sloužící ke zpomalení skladby se zachováním její výšky. Implementace takových algoritmů (obsažená zejména v dražších komerčních programech) by určitě našla praktické uplatnění mezi muzikanty, kteří by si mohli zpomalit komplikované pasáže skladby a jednodušeji tak rozpoznávat hrané tóny.
41
10 Bibliografie 1. Wikipedia. Sound. Wikipedia. [Online] http://en.wikipedia.org/wiki/Sound. 2. Klapuri, A. Signal Processing Methods for Music Transcription. New York : Vydavatelství Springer, 2006. 3. Wikipedia. Euler's Formula - obrázek. Wikipedia. [Online] http://en.wikipedia.org/wiki/Euler%27s_formula. 4. Smith, Steven W. Ph.D. The Scientist and Engineer's Guide to Digital Signal Processing. 1997-2006. 5. Wikipedia. Spectrogram - obrázek. Wikipedia. [Online] http://en.wikipedia.org/wiki/Spectrogram. 6. —. Window function - obrázky. Wikipedia. [Online] http://en.wikipedia.org/wiki/Window_function. 7. Brown, Judith C. Calculation of a Constant Q spectral transform. 1990. http://www.wellesley.edu/Physics/brown/pubs/cq1stPaper.pdf. 8. Harris, F. J. On the use of windows for harmonic analysis with the discrete Fourier transform. 1978. 9. David, Courtney. Introduction to Spectrum Analysis. [Online] 2009. http://chandrakantha.com/articles/spectrum/spectrum.html. 10. Design of optimal halfband FIR filters with minimum phase. Lutovac, Miroslav a Milid, Ljiljana. 2003, Zbornik radova XLVII Konf za ETRAN, Herceg Novi, 8-13 juna 2003, Sv. 1. 11. Brown, Judith C. a Puckette, Miller S. An efficient algorithm for calculation of constant Q transform. 1992. 12. —. Calculation of a "narrowed" autocorrelation function. 1987. 13. Schröder, M.R. Period Histogram and Product Spectrum: New Methods for FundamentalFrequency Measurements. 1968. 14. Smith, J.O. a Serra, X. An analysis/synthesis program for non-harmonics sounds based on a sinusoidal representation. San Francisco : Int. Computer Music Assoc., 1987. stránky 290-297. 15. YEH, Chunghsin. Multiple fundamental frequency estimation of polyphonic recordings (disertační práce). 2008. 16. Wikipedia. Short-time Fourier transform. Wikipedia. [Online] http://en.wikipedia.org/wiki/Shorttime_Fourier_transform. 17. Smith, Julius O. III. Spectral Audio Signal Processing. 2009. 18. Brown, Judith C. a Zhang, Bin. Musical frequency tracking using the methods of conventional and "narrowed" autocorrelation. 1990. http://www.wellesley.edu/Physics/brown/pubs/acptrv89P2346P2354.pdf. 19. Brown, Judith C. Musical Fundamental Frequency Tracking using a Pattern Recognition Method. 1992. http://www.wellesley.edu/Physics/brown/pubs/cqptrv92P1394-P1402.pdf.
42