Wrocław, 05.06.2007
Metody i algorytmy sztucznej inteligencji
Wykrywanie gatunku muzycznego utworu
Raport z wykonania duzego zadania
Mariusz Nowak, Politechnika Wroclawska 2007
Spis treści
- Wstęp
- Metoda wykonania zadania
- Realizacja systemu
- Cechy utworu muzycznego
- Budowanie zbioru uczącego i uzyskiwane wyniki
- Podsumowanie i komentarz do uzyskanych wyników
- Dodatki
1. Wstęp
Celem projektu było stworzenie systemu, który na podstawie podanego utworu muzycznego rozpoznawałby gatunek muzyki tego utworu. Zaznaczyć trzeba, że celem nie było stworzenie w pełni funkcjonalnego systemu do zastosowań produkcyjnych, a jedynie demonstracja, że taka maszynowa klasyfikacja jest możliwa.
O ile przeprowadzono sporo badań odnośnie komputerowego rozpoznawania obrazów, o tyle znalezienie przekrojowych materiałów na temat rozpoznawania muzyki (nie mówimy tutaj o rozpoznawaniu mowy) jest dość trudne. Korzystając z doświadczenia opartego na próbach rozpoznawania obrazów, analogicznie dla dźwięku należałoby za pomocą filtrów wyodrębnić zestaw cech różniących się znacznie w zależności od klasy obiektu i zastosować je jako wektor wejściowy dla wybranego mechanizmu decyzyjnego.
2. Metoda wykonania zadania
Jak wspomniano w punkcie powyżej, głównym problemem było wyodrębnienie takich cech definiujących utwór muzyczny, by ich wartość różniła się znacznie w zależności od testowanego gatunku muzycznego. Dość oczywistym rozwiązaniem wydaje się analiza sygnału w dziedzinie czasu oraz częstotliwości (a więc obwiednia i widmo dźwięku). Jako mechanizm decyzyjny zdecydowano się zastosować trzywarstwową sieć neuronową.
3. Realizacja systemu
Działanie systemu przedstawia poniższy schemat blokowy:
Rys 1. Schemat blokowy systemu
3.1. Konwersja audio na PCM
Konwersja pliku audio na PCM wykonywana jest przy pomocy programu mplayer, za pomocą polecenia:
mplayer in.mp3 -ao pcm:nowaveheader:fast:file=out.pcm -af pan=1:0.5:0.5 -vo null -vc null
Podczas konwersji kanały stereo są miksowane do jednego kanału mono.
3.2. Budowanie wektora wejściowego DSP
Po dokonaniu konwersji audio, dane PCM przekazywane są do bloku odpowiedzialnego za wyizolowanie z utworu pożądanych cech. Cały utwór dzielony jest na porcje danych o wielkości 131072, z których obliczana jest szybka transformata Fouriera. Aby ułatwić obliczenie transformaty, wybrana wielkość 131072 odpowiada 217. Dla częstotliwości próbkowania 44.1 kHz fragment o takim rozmiarze zawiera 2972 ms muzyki.
Każda transformata obliczona z kolejnych porcji danych przekazywana jest do wszystkich funkcji DSP, które obliczają kolejne wartości w serii danych każdej cechy. Szczegóły odnośnie wspomnianych funkcji podane są w dalszej części dokumentu.
Po obliczeniu wartości wyjściowych DSP dla wszystkich trzysekundowych 'okien' utworu, wyciągana jest średnia ze wszystkich wartości w serii danej cechy. Jako że brzmienie utworu może znacznie zmieniać się podczas jego trwania, należałoby także brać pod uwagę to zjawisko. Aby je sformalizować, zdecydowano się na obliczanie nie tylko średniej, ale także odchylenia standardowego dla każdej serii wartości danej cechy.
Tak więc dla każdej cechy izolowanej z charakterystyki w dziedzinie częstotliwości utworu otrzymujemy dwie wartości: wartość średnią tej cechy z trzysekundowych 'okien' wewnątrz utworu oraz odchylenie standardowe.
Oprócz analizy w dziedzinie częstotliwości równolegle prowadzona jest także analiza utworu w dziedzinie czasu. Dokładny opis sposobu analizy w dziedzinie czasu przedstawiony zostanie w dalszej części dokumentu.
Powyższe funkcje zostały zaimplementowane samodzielnie (przy wykorzystaniu biblioteki numpy) za pomocą języka Python.
3.3. Sieć neuronowa i prezentacja wyników
Po obliczeniu wektora DSP dla danego utworu, przekazywany jest on do mechanizmu wnioskowania opartego na trzywarstwowej sieci neuronowej. Sieć uczona jest metodą wstecznej propagacji błędów, funkcje aktywacji neuronów to funkcje sigmoidalne bipolarne.
Po otrzymaniu wyniku z sieci neuronowej, wynik jest przetwarzany tak, aby był przyjazny dla użytkownika, a następnie wyświetlany na ekranie.
Ta część systemu także została zaimplementowana w języku Python.
4. Cechy utworu muzycznego
4.1. Szerokość pasma
Oczywistym jest, że różne instrumenty generują dźwięki o różnych zakresach częstotliwości. Kontrabas grający z orkiestrą symfoniczną nigdy nie zagra tak nisko, jak wygenerowany elektronicznie bas użyty w utworze hip-hopowym. Tak samo skrzypce nie zagrają tak wysoko, jak wysoko potrafi zagrać elektroniczny gwizdek użyty w techno. Te obserwacje pozwalają nam założyć, że szerokość pasma użytego w różnych gatunkach muzycznych znacznie się różni.
Cecha liczona była w następujący sposób: znajdowane były górna i dolna częstotliwość graniczna fg oraz fd, dla których amplituda przekraczała 25% wartości maksymalnej amplitudy w wyliczonym widmie. Nastepnie cecha wyliczana była ze wzoru cbw = log(fg) - log(fd)
Rys 2. Szerokości pasma różnych gatunków muzycznych
Na pierwszy rzut oka wygląda na to, że szerokości pasma nie różnią się znacznie. Jednak dwa dźwięki o relatywnie małej różnicy częstotliwości odbierane są przez ucho ludzkie jako dwa bardzo różne tony. Porównując na przykład dwie częstotliwości: 20 Hz i 40Hz, różnica słyszana przez ucho jest znaczna. Jednak zakresy np. 20-15000Hz a 40-15000Hz różnią się jedynie o ułamek procenta. Jeśli chodzi o odchylenie standardowe, to jest to dobra cecha odróżniająca gatunek techno od pozostałych gatunków.
4.2. Częstotliwość dominująca
Różne gatunki muzyki używają różnorodnych instrumentów, które wydają dźwięki w różnych przedziałach częstotliwości. W hip-hopie duży nacisk położony jest na mocny bas nadający rytm utworowi, z kolei w muzyce klasycznej głośna jest sekcja smyczkowa odpowiadająca za linię melodyczną utworu.
Rys 3. Częstotliwości dominujące różnych gatunków muzycznych
Dla tej cechy (zarówno wartości średniej jak i odchylenia standardowego) widać już znaczne różnice pomiędzy gatunkami (zwłaszcza pomiędzy hip-hopem a techno), co pozwala założyć, że ta cecha będzie dobrym elementem wektora wejściowego sieci neuronowej.
Dla porównania, dwa przykładowe widma utworów:
Rys 4. Widmo fragmentu utworu Akon - Smack That (feat. Eminem)
z zaznaczoną częstotliwością dominującą
Rys 5. Widmo fragmentu utworu Franz Schubert - Impromptu Es-Dur op.90 Nr.2
z zaznaczoną częstotliwością dominującą
4.3. Moc sygnału
Wartość tej cechy to suma wszystkich amplitud w widmie. Amplitudy przeskalowane są tak, że maksymalna amplituda w widmie równa się 1, wartości pozostałych amplitud znajdują się w przedziale <0, 1>. Powyższe można opisać wzorem:
Gdzie:
- f(x) - obliczona, znormalizowana transformata Fouriera dla danego okna
- n - połowa ilości próbek, z których liczona była transformata (w tym wypadku n = 8192)
Otrzymano następujące wyniki:
Rys 6. Całkowita moc utworów w zależności od gatunku
Jak widać na wykresie, hip-hop jest najbardziej "głośnym" gatunkiem, najmniej głośna jest muzyka klasyczna. Wydaje się też, że techno powinno być głośnym gatunkiem, jednak okazuje się, że w utworach techno można wyróżnić kilka częstotliwości o dużej amplitudzie, inaczej niż w hip-hopie, gdzie takich częstotliwości jest więcej.
Oto przykład:
Rys. 6. Widmo fragmentu utworu 2Pac - Against All Odds
Rys. 7. Widmo fragmentu utworu Franz Schubert - Scherzo. Presto
4.4. Stałość obwiedniej
Zadaniem tej cechy było wyodrębnienie "gładkości utworu", tzn. sprawdzenie, czy utwór posiada wyraziste wyodrębnienie taktu (tzw. "beat"). Analiza utworu pod kątem tej cechy prowadzona jest w dziedzinie czasu a nie, jak w powyższych punktach, częstotliwości. Utwór dzielony jest na "okna" po 512 próbek, a następnie z każdego takiego okna wyciągana jest średnia (aby lekko 'wygładzić' obwiednią). Cecha obliczana jest według wzoru:
Gdzie:
- pk - wartość obliczonej średniej z 'okna' k
- n - ilość próbek
Im wyższa wartość css, tym wyraźniejszy 'beat' występuje w utworze.
Rys. 8. Wartości css dla róznych gatunków muzycznych
Przykład o niskiej wartości cechy css:
Rys. 9. Obwiednia fragmentu utworu Franz Schubert - Impromptu Es-Dur Op.90 Nr.2
Przykład o wysokiej wartości cechy css:
Rys. 10. Obwiednia fragmentu utworu Akon - Smack That (feat. Eminem)
5. Budowanie zbioru uczącego i uzyskiwane wyniki
Podczas testów okazało się, że obecność niektórych cech nie wpływa pozytywnie na wynik uzyskiwany po nauczeniu sieci neuronowej. W istocie procesorów DSP zaimplementowano więcej (np. ilość znaczących składowych lub 'gładkość' widma w czasie), jednak uzyskiwane wyniki nie różniły się w zależności od gatunku muzyki, dlatego zostały pominięte. Ostatecznie pozostano przy wektorze składającym się z 8 elementów, jednak wciąż skuteczność klasyfikacji oscylowała w granicach 30% - 50%. Zauważono jednak, iż eliminacja niektórych składowych wektora poprawia wyniki. Zastosowano heurystyczną metodę doboru składowych wektora i okazało się, że sieć najlepiej rozpoznaje utwory, jeśli wektorem wejściowym będą jedynie: średnia szerokość pasma w utworze, odchylenie standardowe szerokości pasma w utworze oraz iloraz wartości średniej częstotliwości dominującej przez odchylenie standardowe tej wartości. Dla takiego wektora wejściowego uzyskano skuteczność około 79%.
Gatunek | Poprawne odpowiedzi | Ogółem wektorów | Skuteczność [%] |
Klasyczna | 8 | 11 | 72.7 |
Jazz | 17 | 17 | 100.0 |
Hip-Hop | 13 | 15 | 86.6 |
Techno | 8 | 15 | 53.3 |
Ogółem | 46 | 58 | 79.3 |
Tab 1. Wyniki na zbiorze uczącym jako zbiorze testowym
Gatunek | Poprawne odpowiedzi | Ogółem wektorów | Skuteczność [%] |
Klasyczna | 4 | 7 | 57.1 |
Jazz | 6 | 9 | 66.6 |
Hip-Hop | 4 | 9 | 44.4 |
Techno | 5 | 7 | 71.4 |
Ogółem | 19 | 32 | 59.3 |
Tab. 2. Wyniki na zbiorze testowym
6. Podsumowanie i komentarz do uzyskanych wyników
Osiągnięta skuteczność systemu jest dość zadowalająca, ale na pewno pozostawia pole do dalszych eksperymentów przy dobieraniu cech wchodzących w skład wektora wejściowego. Dziwi fakt, że najlepsze wyniki uzyskuje się tylko przy trzyelementowym wektorze wejściowym (zwłaszcza biorąc pod uwagę fakt, że system w założeniu rozróżnia aż 4 gatunki muzyczne.
Skuteczność prawdopodobnie podniosłoby zwiększenie ilości utworów w zbiorze uczącym, jednak ograniczony dostęp do zasobów muzycznych nie pozwolił na to.
Jakość osiągniętych wyników nie pozwala na zastosowanie systemu w zastosowaniach produkcyjnych, jednak celem projektu była demonstracja tzw. 'proof of concept'. Uzyskiwane wyniki są na tyle dobre, iż można uznać, że sposób podejścia do tematu był słuszny i wart jest dalszych badań.
Zastosowanie sieci neuronowych pozwala nam w łatwy sposób modyfikować sposób interpretacji wyników. Odpowiednio dobierając wektory wyjściowe do wejściowych możemy zamiast wykrywania gatunków muzycznych wykrywać np. utwory, które nam osobiście się po prostu podobają, lub też stworzyć narzędzie dla koncernów muzycznych, które sprawdzałoby, czy mający wejść na rynek nowy utwór ma potencjał stania się hitem.
Dodatek 1. Utwory wejściowe do nauki sieci
- Muzyka klasyczna
- Richard Wagner - Festmarch aus "Die Meistersinger von Nurnberg"
- Richard Wagner - Akt 3 opery "Lohengrin"
- Wolfgang Amadeus Mozart - Symfonia "Jowiszowa" C-Dur
- Wolfgang Amadeus Mozart - Symfonia A-Dur (Finale)
- Wolfgang Amadeus Mozart - Cosi Fan Tutte
- Joseph Haydn - Credo z Nelson Mass
- Ludwig van Beethoven - Romans na wiolonczelę i orkiestrę G-Dur, op.40
- Ludwig van Beethoven - Finał Symfonii D-Dur, Nr.2
- Franz Schubert - Scherzo. Presto
- Jazz
- Bill Bruford's Earthworks - A Part, And Yet Apart
- Bill Bruford's Earthworks - Footloose and Fancy Free
- Bill Bruford's Earthworks - Curiouser And Curiouser
- Bill Bruford's Earthworks - The Emperor's New Clothes
- Bill Bruford's Earthworks - Eyes On The Horizon
- Bill Bruford's Earthworks - Dewey-Eyed, Then Dancing
- John Scofield & Pat Metheny - No Matter What
- John Scofield & Pat Metheny - One Way To Be
- John Scofield & Pat Metheny - No Way Jose
- John Scofield & Pat Metheny - Sco
- John Scofield & Pat Metheny - You Speak My Language
- Arturo Sandoval - Caravan
- Arturo Sandoval - Cherokee
- Arturo Sandoval - I Get Kick Out Of You
- Arturo Sandoval - I Left This Space For You
- Arturo Sandoval - I Remember Clifford
- Arturo Sandoval - Jordu
- Arturo Sandoval - Pansian
- Arturo Sandoval - Sandu
- Hip-Hop
- 2Pac - To Live & Die In L.A.
- 2Pac - Blasphemy
- 2Pac - Hold Ya Head
- 2Pac - Against All Odds
- 2Pac - When Death Becomes You
- 2Pac - Don't Need No Help
- 2Pac - Fake Love
- 2Pac - Window Shopper
- 2Pac - Born Alone, Die Alone
- 2Pac - You A Shooter
- 2Pac - Just A Little Bit
- Dmx - School Street
- Dmx - Trina Moe
- Dr. Dre - The Watcher
- Nate Dogg - Backdoor
- Nate Dogg - Oh No
- Techno
- Clubbase - T-Kay Edit
- Clubbase - Time To Progress
- Clubbase - Extended Edit
- Clubbase - In Attack Sound Players Remix
- Clubbase vs. DJ Noiserr - In Attack Emergency Broadcast Sys
- DJ Team - /bez nazwy/
- DJ Matys - Orgasm
- DJ Matys - The Flight
- DJ Noiserr - Luvstruck 2002
- DJ Noiserr - Tidy Bumpin Girlz Pink Mammasitaz Mix
- Dj Noiserr vs. DJ Matush - Troo Latino Laif Cold Elbow Edit
- DJ Quicksilver - Escape To Paradise Video Mix
- DJ Quicksilver - New Life
- DJ Tomcraft - Versus
- DJ Tomeck - Bingo Bongo
- DJ Tomi R - Betix In Space
- DJ Wunde - Clubbase
- Love Parade 2002 - Hackin
- Sylver - Why Worry
Dodatek 2. Utwory wejściowe do testowania sieci
- Muzyka klasyczna
- Antonio Vivaldi - Koncert na dwa flety
- Antonio Vivaldi - Koncert na dwa oboje cz.1
- Antonio Vivaldi - Koncert na dwa oboje cz.2
- Ludwig van Beethoven - Dla Elizy
- Ludwig van Beethoven - Symfonia Nr.5 A-dur
- Ludwig van Beethoven - Sonata księżycowa (Adagio sostenuto)
- Antonio Vivaldi - Zima (Cztery pory roku) II (Largo)
- Jazz
- Pat Metheny Group - We Live Here
- Chic Corea & Gary Burton - Summertime
- David Bowie & Pat Metheny - This Is Not America
- Herbie Hancock - The Essence
- Pat Metheny - Our Spanish Love Song
- Pat Metheny - Travels
- Pat Metheny & Jaco Pastorius - Bright Size Life
- Pat Metheny - Love Theme
- Pat Metheny - Slip Away
- Hip-Hop
- Snoop Dogg - Smokin Smokin Weed
- Snoop Dogg - Keep Bouncin feat. Too Short
- Akon - You Don't Want It
- Snoop Dogg - Get Rich
- Snoop Dogg - Which One Of U
- Akon - Ride Out feat. Tru-Life
- Snoop Dogg - Get 2 Know Ya
- Snoop Dogg - Come Wit Me
- Snoop Dogg - I Wanna Fuck You
- Techno
- Essential DJ-Team - Bad Boys
- MBrother - Trebles, Trebles
- C-Bool - House X Baby
- Darude - Laa La La E Oo Eoo
- Darude - 1st 909
- Kate Ryan - Mon Coeur Resiste Encore
- Marc Et Claude - Loving You 2003
Dodatek 3. Literatura
- http://www.stanford.edu/class/ee373a/musicclassification.pdf
- http://ismir2001.ismir.net/pdf/tzanetakis.pdf
- http://cnx.org/content/m11681/latest/