Master’s Thesis Human Beatboxing: generering af trommespor og automatisk effektprocessering Mikkel Gravgaard Nielsen (20043246) Vejleder: Ole Caprani September 2010 Datalogisk Institut Aarhus Universitet Indhold Forord 4 Resume 5 English abstract 6 1 Indledning 1.1 Motivation . . . . . . . . . . . . 1.2 Teknisk motivation . . . . . . . 1.3 Lignende værktøjer og projekter 1.4 Metoder . . . . . . . . . . . . . 1.5 Resultat . . . . . . . . . . . . . 2 Brugsscenarier 2.1 Involvering af brugere . . . . 2.2 Skitse til trommespor . . . . 2.3 Musikalsk samtale . . . . . . 2.4 Live-beatboxer . . . . . . . 2.5 Beatboxing Hero . . . . . . 2.6 Realisering af brugsscenarier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Analyse af human beatboxing 3.1 Afgrænsning af lydmateriale . . . . . . . . . . 3.2 Overordnet struktur af systemet . . . . . . . . 3.3 Indsamling af testdata . . . . . . . . . . . . . 3.4 Segmentering . . . . . . . . . . . . . . . . . . 3.4.1 Kobling mellem onsets og lydsegmenter 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 9 10 10 . . . . . . 12 12 13 14 14 16 18 . . . . . 19 19 21 22 23 24 3.5 3.6 3.7 Klassificering . . . . . . . . . . . . . . . . . 3.5.1 Træning med Perceptron-algoritmen 3.5.2 Flere end to klasser . . . . . . . . . . 3.5.3 Præprocessering . . . . . . . . . . . . 3.5.4 Valg af features . . . . . . . . . . . . 3.5.5 Reduktion af dimensionalitet . . . . . 3.5.6 Klassificeringsalgoritme . . . . . . . . Testmetode og resultater . . . . . . . . . . . 3.6.1 Overfitting . . . . . . . . . . . . . . . 3.6.2 Resultater . . . . . . . . . . . . . . . Test og virkelighed . . . . . . . . . . . . . . 4 Design af prototype 4.1 Umiddelbar og forsinket respons . . . . . . 4.2 Audioprocessering med umiddelbar respons 4.2.1 Sammenkobling af signalvektorer . 4.2.2 Ydeevne . . . . . . . . . . . . . . . 4.3 Implementering af prototypen . . . . . . . 4.3.1 Onset-detection og segmentering . . 4.3.2 Præprocessering og klassificering . 4.3.3 Kobling til brugsscenarier . . . . . 4.3.4 Brugerflade . . . . . . . . . . . . . 4.4 Afrunding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27 28 28 30 33 34 36 36 36 38 . . . . . . . . . . 39 40 40 41 42 44 44 45 47 48 49 5 Brugertests 50 5.1 Sammenfattende brugerrespons . . . . . . . . . . . . . . . . . 52 6 Konklusion 53 7 Fremtidige udvidelsesmuligheder 7.1 Forbedring af klassificering . . . 7.2 Hurtigere processering . . . . . 7.3 Lignende trommelyde . . . . . . 7.4 Understøttelse af groove . . . . 7.5 Plugin til lydprogram . . . . . . 56 56 56 57 57 58 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Litteratur 59 A Vedlagt cd A.1 Lydmateriale . A.2 Kildekode . . . A.3 Prototype . . . A.4 Videooptagelser 61 61 61 62 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B Onset-detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3 Forord Da jeg i dette speciale udover datalogiske discipliner vil beskæftige mig med musikproduktion og lydprocessering, vil jeg indledningsvist redegøre for min musikalske baggrund og erfaring, samt for mine forudsætninger indenfor signalbehandling og lydbearbejdelse. Jeg har sideløbende med min gymnasieuddannelse taget den treårige uddannelse Musikalsk Grundkursus1 på Århus Musikskole. I dette forløb har jeg fået undervisning i bl.a. sammenspil, musikteori, komposition samt instrumentalundervisning. Uddannelsen har givet mig et musikalsk fundament samt givet mig mulighed for, både dengang som nu, at arbejde sammen med mange forskellige musikere. I forbindelse med min datalogiuddannelse har jeg haft fagpakken Multimedieproduktion på Ingeniørhøjskolen i Århus. Her har jeg arbejdet med teorien bag signalbehandling samt konkretiseret teorien ved at implementere lydeffekter og andet lydprocessering. De nævnte forløb har i sammenhæng med datalogiuddannelsen givet inspiration til ideen bag specialearbejdet. Forløbene har hjulpet mig til at vurdere projektets musikalske perspektiv, samt gjort mig i stand til at anskue de tekniske implikationer for projektarbejdet. Stor tak til Martin Albrekt og Kristoffer Thorning for at have stillet deres human beatboxing-evner til rådighed, og for deres kreative input til projektet. Mikkel Gravgaard Nielsen, Århus, 1. september 2010. 1 http://www.aarhuskommune.dk/sitecore/content/Subsites/ aarhusmusikskole/Home/MGK.aspx 4 Resume Vi undersøger i dette speciale muligheden for at benytte human beatboxing til generering af trommespor, samt til at automatisere effektprocessering af human beatboxing afhængigt af trommetypen. Motivationen er et ønske om at understøtte tilvejebringelsen af musik med human beatboxing som redskab, både ved musikkomposition og live-fremførelser. Til formålet opstiller vi konceptuelle og konkrete brugsscenarier. Ud fra disse fastsætter vi en række krav, som danner grundlag for en analyse af human beatboxing samt en prototype. I analysen arbejder vi med inddeling af human beatboxing-optagelser i enkelte trommelyde, hvorefter vi eksperimenterer med forskellige teknikker indenfor signalbehandling til at udtrække meningsfulde kendetegn for lydene. Vi træner data ved hjælp af perceptronalgoritmen samt principal component analysis, og vi benytter lineær klassificering samt nearest-neighbour-klassificering til at genkende tre forskellige typer trommelyde: storetromme, lilletromme og hi-hat. Resultaterne fra analysen benytter vi til at implementere en prototype, som kan anvendes af musikere i praksis. Efterfølgende har vi afprøvet prototypen i begrænset omfang med en række brugere. Gennem kvalitative interviews med brugerne har vi undersøgt, hvorvidt prototypen opfylder forventningerne om at understøtte musikalsk tilvejebringelse. Vi finder, at selvom prototypen ikke understøtter brugernes endelige behov, belyser projektet potentialet med at bruge human beatboxing som et musikalsk redskab, og vi mener at vores resultater kan understøtte udviklingen af lignende værktøjer, som benytter human beatboxing. 5 English abstract In this thesis, we examine the possibility of using human beatboxing for generating drum tracks, and to automate the effects processing of human beatboxing, depending on the type of drum. The motivation is a desire to support the creation of music with human beatboxing as a tool, both in the case of music composition and live performances. For this purpose, we outline conceptual and concrete scenarios. Based on these scenarios, we establish requirements that form the basis of an analysis of human beatboxing and a prototype. In the analysis, we work with segmentation of human beatboxing sound recordings into individual drum sounds. Afterwards, we experiment with different signal processing techniques, in order to extract meaningful characteristics of the sounds. We train the data using the perceptron algorithm and principal component analysis, and we use linear classification and nearest-neighbour classification for recognizing three different types of drum sounds: bass drum, snare drum and hi-hat. The results from the analysis lead to the implemention of a prototype, which can be used by musicians in practice. Subsequently, we do limited testing of the prototype together with a group of users. Through qualitative interviews with the users, we examine whether the prototype fulfills the expectations of supporting the creation of music. We find that although the prototype does not fully support the requirements of the users, the project illustrates the potential of using human beatboxing as a musical tool, and we believe that our results can support the development of similar tools that utilise human beatboxing. 6 Kapitel 1 Indledning En musiker kan benytte sin stemme til at udtrykke en umiddelbar, musikalsk ide. Musikeren kan med stemmen understøtte det musikalske udtryk, således at en melodisk strofe for eksempel synges med diskant stemmeleje og vibrerende toner, som om den frembringes af en guitar, eller et tungt bas-groove frembringes med dyb stemme og stød på de enkelte toner for at markere den rytmiske fornemmelse. Ved at bruge stemmens klanglige nuancer kan musikeren altså formidle sin ide til andre eller lydliggøre ideen for sig selv, også selvom han ikke har instrumentet ved hånden. På samme måde kan en trommerytme også udtrykkes med stemmen. Her er fokus på de rytmiske detaljer samt frembringelsen af trommernes individuelle klang. At frembringe en trommerytme med stemmen betegnes også som human beatboxing1 , en diciplin som ikke blot benyttes til at frembringe en midlertidig skitse, men også som endeligt musikalsk materiale, enten solo eller i sammenspilssammenhæng. Derved er human beatboxing en anderkendt form for musik-udøvelse. 1.1 Motivation En primær motivationsfaktor i dette speciale er netop human beatboxings hyppige anvendelse i forskellige musikalske sammenhænge, koblet med behovet for at mindske afstanden mellem den musikalske ide og en konkret skitse til et tromme-lydspor. Ønsker en musiker på sin computer at komponere et trommebeat ud fra en ide, han så at sige har i hovedet, kan det forstyrre 1 http://en.wikipedia.org/wiki/Beatboxing, besøgt 9/8 2010 7 Figur 1.1: Beatboxeren D.R.E.S. under en performance i Atlanta. det kreative flow, hvis han er nødt til først til at finde de ønskede lyde til de enkelte trommer for derefter at plotte dem ind med tromme-pads eller musen afhængigt af, hvad der er tilgængeligt. Tanken er, at computerens analyse og fortolkning af human beatboxing kan mindske denne kløft mellem musikerens egen rytmiske og klanglige fornemmelse af trommesporet og den endelige skitse. På denne måde kan en musiker bruge human beatboxing som et musikalsk værktøj. Samtaler og afprøvninger af projektet med andre musikere har yderligere bidraget til motivationen samt medvirket til at udvide anvendelsesmuligheder samt konkretisere og specificere brugssammenhænge. 1.2 Teknisk motivation Den tekniske realisering af projektet er motiveret af eget forhåndskendskab og erfaringer inden for områderne musikkomposition og produktion, signalpro- 8 Figur 1.2: Voice Band til iPhone fra WaveMachine Labs, Inc. cessering og mønstergenkendelse. Derpå er inddraget artikler som konkret beskæftiger sig med segmentering af trommelydspor samt klassificering af trommelyde. Artiklerne har dannet teoretisk udgangspunkt for valg af metoder, og disse metoder er efterfølgende implementeret og efterprøvet i praksis med indspillet lydmateriale af erfarne beatboxere. 1.3 Lignende værktøjer og projekter Der findes eksisterende værktøjer, som lader en musiker benytte sin stemme som en form for digital trommestik: Programmet Voice Band2 til iPhone imødekommer behovet for at kunne komponere musik i realtid uden at skulle interagere med touch-skærm ved at lade musikeren hovedsageligt bruge sin stemme for at lave den musiske notation. I Voice Band optages trommerne to ad gangen. Således kan man i ét take indspille hhv. store-/lille tromme eller lukket/åben hi-hat ved at lave svage og kraftige lyde med den ønskede rytme. BillaBoop3 er et plugin til musikprogrammer som laver klassificering af trommetypen på baggrund af de første millisekunder af hver enkelt slag i et 2 3 http://www.wavemachinelabs.com/voiceband/ http://www.iua.upf.edu/~ahazan/BillaBoop/ 9 human beatbox-lydspor. Fælles for Voice Band og BillaBoop er, at de laver klassificering af de enkelte stemmefrembragte lyde. Programmerne forsøger altså at automatisere notationen af det rytmiske udtryk, specifikt hvornår de enkelte slag optræder, og hvilken type tromme det er (storetromme, lilletromme ...). De to programmer adskiller sig ved den brugssammenhæng de er tænkt til. Ud fra demonstrationsvideoen til Voice Band, fremgår det at programmet er tænkt til skitsering af et musiknummer med hel instrumentbesætning i form af trommer, bas og guitar. Fokus er ikke så meget på detaljerne i indspilningen af de enkelte instrumenter, som på at sammensætte de forskellige instrumenter i et arrangement. BillaBoop er beskrevet i [Hazan, 2005a] som et generisk plugin til musikprogrammer. Specifikke brugsscenarier nævnes ikke, men der lægges vægt på responstid, så mekanismen kan bruges i realtidssammenhænge. Samtidigt omhandler artiklen også expressiveness som en vigtig parameter, således at BillaBoop i højere grad end for eksempel Voice Band giver mulighed for at detaljere trommeindspilningen. 1.4 Metoder For at få undersøge, hvorvidt vi kan understøtte de musikalske ideer og brugsmæssige behov, som har været motiverende for projektet, vil vi benytte os af følgende metoder: • Udformning af en række brugsscenarier. • Specificering af krav som udgangspunkt for en prototype på baggrund af brugsscenarierne. • Analyse af human beatboxing-materiale samt eksperimenter med segmentering og klassificering. • Implementering af en prototype, som har en praktisk anvendelighed. • Afprøvning af prototypen sammen med brugere for at undersøge, om de musikalske ideer og brugsmæssige behov bliver understøttet. 1.5 Resultat Specialearbejdet har resulteret i en implementation af en prototype, som er i stand til at segmentere og klassificere indsungene human beatbox-optagelser i 10 tre overordnede trommetyper: storetromme, lilletromme og hi-hat. Klassificeringen sker på baggrund af udtrækning af relevante kendetegn for lydene. Vi har undersøgt prototypens anvendelsesmuligheder inden for to overordnede brugsscenarier: • Omdannelse af indspillede human beatboxing-optagelser til trommenotation • Automatisk effektprocessering af human beatboxing ved live-fremførelse Prototypen er i begrænset omfang testet af brugere. Igennem kvalitative interviews med disse brugere har vi undersøgt, om prototypen opfylder de indledende ambitioner for projektet om at understøtte musikalsk tilvejebringelse ved hjælp af human beatboxing. Endelig er overvejelser om fremtidige udvidelsesmuligheder medtaget. Det benyttede audiomateriale, kildekode til prototypen samt køreklare versioner af prototypen kan findes på den cd, som er omtalt i bilag A samt på specialets hjemmeside, http://cs.au.dk/~grav/speciale. 11 Kapitel 2 Brugsscenarier 2.1 Involvering af brugere Den oprindelige udgangspunkt med at udpege og erstatte trommelyde i human beatboxing er blevet forelagt en række musikere for at få respons samt ideer til videreudvikling. Freelance-producer Martin Albrekt, som ofte laver musik med trommespor som udgangspunkt, kunne genkende beskrivelsen af kløften mellem at have en umiddelbar idé til et trommespor og få nedfældet en skitse. Da Martin selv beatboxer, var han positivt indstillet overfor ideen med at fremføre en skitse med human beatboxing. Martin lagde desuden vægt på at computerens tolkning af et human beatboxing-optagelser skal understøtte groovet i den oprindelige fremførelse, således at amplituden samt varigheden af de enkelte anslag medtages. En samtale med sanger og beatboxer Kristoffer Thorning gav anledning til en anden vinkel på projektet. Kristoffer er som beatboxer ikke som udgangspunkt interesseret i at frembringe musik ved at bruge computeren som instrument. Efter at være blevet bekendt med muligheden for at få en computer til at genkende de enkelte lyde i et human breakbeat, så Kristoffer i stedet teknologien som en potentiel måde at understøtte og fremhæve detaljer i livefremførelse af beatboxing. Han nævner konkret, at det ved live-opførelse med en enkelt mikrofon kan være svært at indstille lydniveauerne, så “bunden”, dvs. basfrekvenserne, fremhæves bedst muligt i storetrommen, samtidigt med at lilletromme- og hi-hat-lydene fremhæves i mellem- og top-frekvenserne. For at gøre elementerne i den oprindelige ide samt forslagene fra de to musikere mere eksplicitte, og samtidigt undersøge muligheden for teknisk set at realisere forslagene, har vi konstrueret en række brugsscenarier. Brugssce12 Figur 2.1: Efter at musikeren har indspillet sin beatboxing på computeren (trin 1), analyseres og omsættes lyden til musik-notation, f.eks. trommenoder (trin 2). Omsætningen skal ikke nødvendig vis være umiddelbar, da kompositionen typisk vil foregå skridt for skridt. narierne kan karakteriseres som en blanding mellem konceptuelle og konrete scenarier, som de defineres i [Benyon et al., 2005]. Hvert scenarie indledes med en konceptuel beskrivelse af systemet og brugssituationen for at få en forståelse af kravene til systemet. Herefter følges op med en række mere konkrete overvejelser om den tekniske realisering. 2.2 Skitse til trommespor En musiker er i færd med at komponere eller producere et stykke musik foran sin computer. Musikeren har en ide til et trommespor i tankerne, som han gerne vil have omsat til en skitse på computeren. Musikeren beat-boxer en sekvens ind i en mikrofon. Sekvensen omsættes til musik-notation, som musikeren herefter har mulighed for at arbejde videre med i sit vante musikprogram. Hvis musikeren ønsker det, kan han også få forslag til rigtige trommelyde, som “minder om” dem, musikeren har frembragt med munden. 13 Realisering Den optagede sekvens deles op i enkelte lyde, hvorefter disse lyde klassificeres. Herefter omsættes sekvensen til en form for musik-notation (MIDI) inkluderende tromme-type, tidspunkt og eventuelt anslagskraft for hvert enkelt anslag. Hvis musik-notationen skal omsættes til en sekvens med nye lyde, kan klassificeringen benyttes i sammenhæng med et bibliotek af trommelyde, således at de enkelte dele af lydoptagelsen erstattes med det bedste match i lydbiblioteket, baseret på forskellige parametre. 2.3 Musikalsk samtale En bruger forsøger at lave en “musikalsk samtale” med computeren. Brugeren beat-boxer en strofe mens computeren lytter, og holder derefter en pause. Computeren svarer nu brugeren med et forsøg på at imitere strofen ved at gengive den med lyde der “ligner”. Det kan være rigtige trommelyde eller blot en sekvens der har samme klangmæssige og rytmiske fornemmelse. Herefter er det brugerens tur igen, og på den måde opstår en slags improvisationssituation, som når bassisten og trommeslageren i et jazz-orkester laver en chase. Realisering Brugerens beatboxing skal opdeles og klassificeres. Denne analyse resulterer muligvis i en pause, før computeren svarer, hvilket måske kan minde om betænkningstid og få samtalen til at virke mere realistisk. Resultatet af klassificeringen kan kobles til andet end blot trommelyde, og der kan indføres en grad af tilfældighed for at give mere afveksling. 2.4 Live-beatboxer En musiker ønsker under en koncert at lave et underliggende groove med human beatboxing. Groovet skal være et rytmespor, som skal gentages under nummeret for at understøtte de andre musikalske elementer i fremførelsen. Musikeren starter ud med at markere sekvensens begyndelse med et tryk på en pedal. Herefter beat-boxer han sit groove ind i computeren og markerer til sidst sekvensens afslutning med pedalen. 14 Figur 2.2: I “den musikalske samtale” skiftes brugeren og computeren til at ytre sig musikalsk. Brugeren indleder, og computeren svarer efter lidt betænkningstid. Groovet afspilles nu gentagende, men “bunden” i storetrommen er forstærket og komprimeret, så den fremstår mere “punchy”, hi-hat’en er mere distinkt, og lilletrommen har fået tilsat rumklang, så den klinger mere og længere. Således er flere aspekter forstærket og fremhævet, så human beatboxing-groovet i sin helhed fremstår mere som et “rigtigt” trommespor og derved bærer resten af nummeret. Realisering For at kunne understøtte dette scenarie, skal den optagede sekvens inddeles i de enkelte trommeslag, så de kan klassificeres. Herefter indsættes hvert enkelt trommeslag til den oprindelige tid i et nyt spor alt efter klassificering. Sporene effektprocesseres enkeltvist, mixes sammen og afspilles gentagende. 15 Figur 2.3: Live-beatboxerens trommelyde bliver hver for sig processeret så lydene bedre kommer ud over scenekanten. Umiddelbart efter at beatboxeren har afsluttet sin strofe, skal computeren overtage afspilning med effektprocessering. Afspilningen af sekvensen med effekter skal påbegyndes umiddelbart efter at beatboxeren er færdig med sin strofe. 2.5 Beatboxing Hero Inspireret af spillet Guitar Hero1 skal spilleren i dette scenarie lave et underliggende trommespor til et rap-nummer ved at beatboxe. Spilleren kan høre bas- og rap-spor samt observere en symbolsk repræsentation af trommesporet køre forbi på skærmen. Spilleren forsøger at beatboxe trommesporet, og computeren registrerer lydene, afspiller eventuelt nogle rigtige trommer eller professionelle beatboxing-trommer og bedømmer, hvor godt spilleren rammer den rigtige tromme på det rette tidspunkt. 1 http://www.guitarhero.com 16 Figur 2.4: Skitse til skærmbillede fra “Beatboxing Hero”. De tre instrumentspor nederst viser, hvornår hvilke trommer skal beatboxes. Figuren øverst spiller rigtigt, hvis spilleren beatboxer godt nok. Realisering Spilleren benytter sin stemme som spilcontroller i stedet for f.eks. en guitar med knapper som i Guitar Hero. Hvis spilleren skal have omgående respons på sin præstation, både grafisk og lydmæssigt, er det essentielt at klassificeringen også foregår omgående. 17 2.6 Realisering af brugsscenarier Muligheden for at genkende forskellige typer trommer i human beatboxing er den tekniske fællesnævner for brugsscenarier. I det følgende afsnit vil vi derfor beskæftige os med at opsplitte human beatboxing-optagelserne og derefter klassificere de enkelte trommelyde. Der er forskel på, hvor hurtigt denne klassificering skal foregå. Den ene yderlighed er det første scenarie, hvor komposition af musik er en trinvis proces som tillader pauser, mens computeren bearbejder musikerens indspilning. Den anden yderlighed er computerspillet, hvor spilleren hele tiden er “på” for at vinde spillet og omvendt også forventer hurtig respons på sine handlinger. Vi vil diskutere realiseringen af brugsscenarierne ud fra denne vinkel i kapitel 4.1. 18 Kapitel 3 Analyse af human beatboxing I dette kapitel vil vi analysere human beatboxing og eksperimentere med i første omgang at opdele en lydoptagelse i de enkelte dele, en proces vi vil benævne segmentering, [Bello, 2005]. Dernæst skal de enkelte segmenter klassificeres. Målet med analysen er at få overblik over, hvorvidt de tekniske enkeltdele af systemet kan hænge sammen og udgøre et funktionsmæssigt grundlag for brugsscenarierne. Det benyttede testmateriale til analysen er begrænset i omfang, og dermed hverken formår eller ønsker vi at lave en udtømmende analyse af human beatboxing eller en generel metode til klassificering. Eksperimenterne med segmentering og klassificering er foregået i en iterativ proces med afprøvning af forskellige parametre, dernæst test af resultaterne og tilsidst justering af parametrene. Matlab1 har i denne sammenhæng været et meget anvendeligt værktøj til hurtigt at implementere processeringen og dernæst teste resultaterne ved visualisering, afspilning samt kvantitativ vurdering. I afsnit 3.6 beskrives de testmetoder, som løbende er benyttet til den kvantitative vurdering af resultaterne. 3.1 Afgrænsning af lydmateriale Først vil vi afgrænse den type lydmateriale, som systemet skal kunne behandle. Da en musiker, som fremfører human beatboxing benytter munden, er human beatboxing ligesom sang oftest monofonisk, således at kun én lyd fremføres af musikeren ad gangen. I forhold til rigtige trommespor, hvor flere 1 http://www.mathworks.com/products/matlab/ 19 Figur 3.1: Human beatboxer. trommer kan slås an på samme tid, kan vi derfor nøjes med at separere et beatboxing-spor i tidsdimensionen, under antagelse af, at vores lyddata er monofonisk. Som ved et rigtigt trommespor dannes den grundlæggende rytme af storetrommen, lilletrommen samt hi-hatten. Selvom der inden for human beatboxing ofte eksperimenteres med efterligning af vidt forskellige lydeffekter, vil vil vi nøjes med at betragte disse tre trommeklasser for at simplificere genkendelsen. Vi forsøger her at beskrive fællesnævnere for, hvordan beatboxere ofte frembringer lydene: • Storetromme: Lavfrekvent lyd, kommende fra beatboxerens bryst og hals. Ofte stød af luft gennem læberne for at give fornemmelse af anslag. Andre gange uden stød for at understrege de dybe frekvenser. • Lilletromme: Stød af luft gennem tænder og læber, brug af mere luft end ved storetrommen for at gøre lyden mere højfrekvent. 20 • Hi-hat: “TS”-agtig lyd, tungen sættes mod mundens “loft” og luft stødes gennem tænderne. Mere højfrekvent end lilletrommen. Ud fra disse beskrivelse har alle lydene en vis klangmæssig adskillelse. Denne adskillelse vil grundet de fysiske rammer for den menneskelige stemme være mindre end ved rigtige trommer. Samtidigt er det naturligvis subjektivt, hvorledes en beatboxer frembringer de nævnte trommer, og der vil i realiteten være overlap mellem typerne. Beatboxerens intention vil dog i forbindelse med dette projekt være at opnå genkendelse af deres beatboxing, og derfor vil vi tage det positive udgangspunkt, at beatboxerne ved fremførelsen forsøger at differentiere de forskellige typer trommer. Hvis vi således insisterer på, at de forskellige trommetyper adskiller sig klangmæssigt, kan vi nøjes med at klassificere lydene på baggrund af deres klang og ignorere deres tidsmæssige placering. 3.2 Overordnet struktur af systemet Hermed har vi indrammet den type lyddata vi ønsker at bearbejde, nemlig optagelser af human beatboxing, bestående af lyde som er tidsmæssigt afgrænsede, og som ud fra trommetypen adskiller sig klangmæssigt. Ud fra denne ramme kan en model af det ønskede systems overordnede struktur konstrueres. Indledningsvist skal lyddata opsplittes i segmenter, således at hvert segment kun indeholder den enkelte trommelyd, vi ønsker at klassificere. For at finde de enkelte anslag i lyddata kan en teknik kaldet onset-detection, [Bello, 2005], benyttes. I den sammenhæng tages afsæt i et tidligere projekt omkring onset-detection i human beatboxing, baseret på [Bello, 2005]. Rapporten fra dette tidligere projekt findes som bilag B. Efter segmentering kan trommetypen for et enkelt lydsegment bestemmes ved hjælp af en klassificeringsalgoritme. Et vigtigt aspekt i denne sammenhæng er, hvilke kendetegn for lydsegmentet vi som udgangspunkt for klassificeringen vælger i præprocesseringsfasen, også kaldet feature extraction. I [Herrera et al., 2002] og [Herrera et al., 2003] eksperimenteres med feature extraction på rigtige trommelyde, og resultaterne herfra vil vi benytte som basis for præprocessering i dette projekt. Afhængigt af brugsscenariet kan vi herefter benytte segmenteringen og klassificeringen til at processere den optagede lyddata eller generere ny lyd. Et diagram over systemets struktur kan ses i figur 3.2. 21 Lydoptagelse Onsetdetection Segmentering Præprocessering Klassificering Storetromme Lilletromme Hi-hat Brugsscenarie Figur 3.2: Systemets overordnede struktur. Human beatboxing-optagelsen processeres trinvist, og det endelige resultat af klassificeringen benyttes i brugsscenariet. 3.3 Indsamling af testdata De nævnte artikler, som i dette projekt benyttes som grundlag for onsetdetection og klassificering, er skrevet ud fra empiriske undersøgelser med forskellige typer lyddata som f.eks. rigtige trommeoptagelser. Artiklerne er altså ikke specifikt orienteret mod human beatboxing, og det er således nødvendigt at indsamle human beatboxing-testdata, så implementationen af algoritmerne kan målrettes human beatboxing. Indsamlingen af testdata har konkret bestået i at optage human beatboxere lave en række selvvalgte fremførelser af human beatboxing. Her ses en oversigt over de optage-sessioner, som er benyttet til analysen: • “martin”: optagelser af Martin Albrekt. Optaget i dæmpet kælderrum, post-processeret med equalization og compression for at fremhæve især de dybe frekvenser. • “session1”: optagelser af Mikkel Gravgaard med laptop og indbygget mikrofon i et 10 kvm. værelse. 22 • “session2”: optagelser af Mikkel Gravgaard i et dæmpet rum med Røde NT1-mikrofon, ingen post-processering. • “stoffer”: optagelser af Kristoffer Thorning i et dæmpet rum med Røde NT1-mikrofon, ingen post-processering. Optagelserne kan findes på den vedlagte cd, omtalt i bilag A samt på specialets hjemmeside, http://cs.au.dk/~grav/speciale. Lydforhold og optageudstyr er medtaget i listen ovenfor. Der vil i realiteten være forskel på omstændighederne med hensyn til optageudstyr, rum og processering afhængigt af brugssituationen. En musiker siddende isoleret i et lydstudie har større kontrol over lydforholdene end en live-musiker på en scene. Disse forskelle vil bidrage til kompleksiteten af den videre processering, og de viste optagelser afspejler i nogen grad de skiftende omstændigheder forskellige brugssituationer måtte byde på. De musikere, som indspillede lydoptagelserne, blev som nævnt bedt om at fremføre human beatboxing. En sådan fremførelse har en varighed på et helt antal takter, som i princippet kan gentages vilkårligt og på den måde fungere som underlægning til et musiknummer. Dermed har hensigten været at få lydoptagelserne til at svare til, hvad man ville forvente i forbindelse med scenarierne, til forskel fra isolerede beats (trommeslag). Da human beatboxing som beskrevet i afsnit 3.1 oftest er monofonisk, er det forventeligt at de enkelte trommeslag frembragt i sammenhæng med en hel optagelse vil være anderledes begrænset i den klangmæssige udfoldelse og tidsmæssige varighed, end hvis de blev fremført enkeltvist. Et eksempel på en optagelse af human beatboxing ses i figur 3.3. 3.4 Segmentering For at opsplitte en human beatboxing-optagelse i de enkelte lyde, vil vi starte med at identificere anslagene i optagelsen ved hjælp af onset-detection. Til dette formål tages udgangspunkt i et tidligere projekt til onset-detection i human beatboxing. Rapporten til dette projekt kan findes som bilag B. “Onset”, som kan oversættes med “anslag”, er i [Bello, 2005] defineret som det tidspunkt, hvor det såkaldte attack for en lyd begynder. Attack’et er den tidsmæssige periode, hvor energien i lyden stiger indtil den er på sit højeste. I trommelyde er dette attack forholdsvist kort, da det maksimale udsving på et trommeskin sker ved sammenstødet mellem trommestikken og trommen. Ved human beatboxing er attack’et typisk er længere, da beatboxeren lægger 23 Recording "stoffer01.wav" 1 0.8 0.6 Amplitude 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 0 2 4 6 Time (seconds) 8 10 12 Figur 3.3: Human beatboxing-optagelse, fremført af Kristoffer Thorning. De enkelte beats er tydeligt adskilt i tid, hvormed lyden kan betegnes som monofonisk. an til lyden, og i projektet arbejdedes derfor mere med at finde tidspunktet for det rytmiske anslag, dvs. det punkt, hvor attack’et slutter. I dette projekt vil vi karakterisere dette punkt som et onset. Fordelen ved denne definition i forbindelse med dette projekt er, at vi i flere af de nævnte brugsscenarier ønsker at detektere tiden for det rytmiske anslag. Derudover vil det vise sig at vi, givet det rytmiske anslag, forholdsvist nemt kan finde tidspunktet for attack’ets begyndelse. 3.4.1 Kobling mellem onsets og lydsegmenter Forudsat at vores algoritme til onset-detection fungerer, kan vi gå ud fra, at antallet af onsets svarer til antal af lydsegmenter i human beatboxingoptagelserne. Lad os derfor starte med at definere en simpel form for seg- 24 Onset Detection with HFC signal detection thresholding onsets envelope 0.5 0.4 Amplitude (normalized) 0.3 0.2 0.1 0 −0.1 −0.2 −0.3 −0.4 80 100 120 140 160 180 Position (sample) 200 220 240 260 280 Figur 3.4: Illustration af onset-detection med HFC-algoritmen. Det oprindelige signal (gul) processeres trinvist, således at de enkelte onsets (stiplet rød) fremkommer. mentering af vores lydoptagelse, hvor segment0i varer fra det tidspunkt, hvor onseti blev detekteret, til det tidspunkt, hvor onseti+1 blev detekteret Denne simple metode medfører dog flere problemer: de detekterede onsets svarer som beskrevet ovenfor til det tidspunkt, hvor de forskellige anslag i rytmen ligger, f.eks. det tidspunkt hvor en trommestik rammer trommeskindet. I human beatboxing er der typisk et længere, hørbart attack, hvor beatboxeren lægger an til lyden. Da det er ønskeligt at medtage de enkelte lydes helhed til videre behandling, skal segmenteringen gerne medtage dette attack. Der er ofte en hørbar pause mellem én lyds slutning og en andens begyndelse. Denne pause består af data der i bedste fald ikke er relevant for klassificeringen, så det er også væsentligt kun at medtage selve trommelyden og ikke pausen i et segment. For at imødekomme disse problemer, kan vi fastsætte tærskler for, hvornår energien er tilpas høj til at lydsegmentet begynder, og tilpas lav til at segmentet ophører. Vi vil benytte energy envelope, [Peeters, 2004], som er en indhyldningskurve for energien af et signal. Energy envelope beregnes ved hjælp af root mean square (rms) på frames (øjebliksbilleder) af et signal. Givet et udsnit af et signal, x = (x1 , x2 , . . . , xn ), beregnes rms således: 25 r xrms = x21 + x22 + ... + x2n . n Vi kan nu konstruere en energy envelope for et segment ved at sammensætte rms-værdier, beregnet på alle frames i segmentet. En frame-størrelse kan eksempelvis være på 100 ms, hvilket svarer til at lavpas-filtrere med en cut-off-frekvens på 5 Hz, [Peeters, 2004, p. 3]. Givet et lydsegment, segment0i , fastsætter vi nu en tærskel α1 på eksempelvis 5% af den maksimale værdi for segmentets energy envelope. Herefter vælger vi stopi til at være det første tidspunkt efter onseti , hvor segmentets energy envelope er lavere end α1 . Herefter kan vi, igen på baggrund af den maksimale værdi for energy envelope af segment0i , fastsætte endnu en tærskel α2 for, hvornår segmentets energy envelope er høj nok til, at et lydsegment begynder. Vi betragter nu energy envelope for den del af signalet, der ligger mellem stopi−1 og onseti , og definerer starti til at være det seneste tidspunkt, hvor energy envelope ligger under tærsklen α2 . Det endelige lydsegment, segmenti lader vi nu starte ved tidspunkt starti og slutte ved tidspunkt stopi . Med denne fremgangsmåde har vi opnået, at vores lydsegment både medtager en trommelyds attack, hvilket har betydning for lydens klang, samtidigt med at vi også bevarer information om lydens rytmiske anslag. Fremgangsmåden er illustreret i figur 3.5. 3.5 Klassificering Som nævnt i afsnit 2.6 ønsker vi at give brugeren et indtryk af, at de enkelte trommelyde i hans human beatboxing bliver genkendt, da genkendelsen er et centralt element i brugsscenarierne. Til dette formål vil vi benytte klassificering. Klassificering er en applikation af machine learning, hvor målet er at placere input-data i én ud af et endeligt antal diskrete klasser. I [Bishop, 2006] udtrykkes machine learning-algoritmer som en funktion eller model, som “formes” i en træningsfase ved hjælp af et træningssæt af data. Den resulterende funktion eller model skal herefter kunne kategorisere ny data korrekt, vel og mærket data som ikke er indeholdt i træningssættet. Målet er dermed en generalisering af modellen, så den kan benyttes til data, der ikke er set før. Ved supervised learning, [Rojas, 1996, p. 78], er træningsdata på 26 Segments onsets signal rms Energy segment i alfa2 alfa1 onset i−1 stop i−1 start i onset i stop i onset i+1 Position Figur 3.5: Illustration af, hvordan et lydsegment defineres ud fra onsets og energy envelope. forhånd manuelt klassificeret. I træningsfasen justeres modellen afhængigt af, om et nyt input klassificeres korrekt af modellen. Lineær klassificering kan benyttes, hvis klasserne er lineært separable, således at en lineær diskriminantfunktion kan adskille klasserne. Klassificering med en lineær diskriminantfunktion og to klasser er defineret som: y(x, w) = wT x, hvor x er en input-vektor, og w er en vægt-vektor, som er ortogonal med diskriminantfunktionen y. w justeres ved træningsfasen, så diskriminantfunktioen bedst muligt inddeler træningsdata i to klasser, således at x tilhører klasse C1 hvis y(x, w) ≥ 0 og klasse C2 ellers. 3.5.1 Træning med Perceptron-algoritmen Et eksempel på en metode til træning er Perceptron learning, hvor alle datapunkter inddeles i to mængder, P og N . Et punkt x ∈ P hvis vektorproduktet w · x > 0, og x ∈ N ellers. Træningsfasen går nu ud på at justere w, således at alle punkter i P tilhører klasse C1 , og alle punkter i N tilhører klasse C2 . Algoritmen er som følger: Vægtvektoren w1 inialiseres tilfældigt. 27 Ved iteration i vælges et punkt x tilfældigt. Hvis x ∈ P men tilhører klasse C2 , sættes wi+1 til wi + x. Hvis x ∈ N , men tilhører klasse C1 , sættes wi+1 til wi − x. Intuitionen er, at vægtvektoren på denne måde roteres væk fra et datapunkt, hvis punktet “fejlagtigt” ligger i P , hvormed punktet i næste iteration er mindre tilbøjeligt til at ligge i P . Omvendt nærmes vægtvektoren et datapunkt, hvis det “fejlagtigt” ligger i N , hvorefter det i næste iteration er mere tilbøjeligt til at ligge i P . Hvis træningsdata er lineært separable, vil w konvergere med ovenstående algoritme, hvilket bevises i [Rojas, 1996]. I vores tilfælde nøjes vi dog med at finde en løsning, der er “god nok” til formålet. Dette kan vi gøre ved ind imellem at stoppe algoritmen midlertidigt og teste den resulterende vægtvektor. Vi berører testmetoder i afsnit 3.6. 3.5.2 Flere end to klasser Hvis vi ønsker at skelne mellem flere end to klasser, kan en Decision Directed Acyclic Graph (DDAG), beskrevet i [Platt et al., 2000], benyttes. Med N forskellige klasser indeholder denne graf N (N − 1)/2 såkaldte 1-versus-1 classifiers. Disse classifiers skelner hver mellem to klasser, og kan eksempelvis være diskriminantfunktioner, trænet ved hjælp af perceptron-algoritmen. I vores tilfælde med tre klasser, storetromme (BD), lilletromme (SD) og hihat (HH), ser DDAG’en ud som vist i figur 3.6. 3.5.3 Præprocessering For at opnå lineært separable klasser kan vi præprocessere vores input ved ved hjælp af en mængde af basisfunktioner, her benævnt φ: y(x, w) = wT φ(x). Ønsker vi eksempelvis at klassificere et lydsignal x = (x0 , x1 , ...xN −1 ), kan vi præprocessere signalet med et sæt af basisfunktioner φ = (φ1 , φ2 , ..., φK ), som tilsammen danner en K-punkts diskret fourier-transformation (DFT): φk (x) = N −1 X n xn e−i2πfk N , n=0 hvor fk betegner frekvensen for den k’te koefficient. Således kan vi lave klassificering på baggrund af vores lyddatas frekvensspektrum i stedet for de spatiale egenskaber. Denne præprocessering kaldes 28 BD vs HH Ikke HH Ikke BD SD vs HH BD vs SD Ikke SD BD Ikke BD Ikke HH SD SD Ikke SD HH Figur 3.6: Klassificering med tre klasser ved hjælp af en Decision Directed Acyclic Graph. Hver cirkel repræsenterer en lineær diskriminantfunktion, trænet med perceptron-algoritmen. også feature-extraction, da applikationen af φ resulterer i et sæt af features. Præprocesseringen kan vælges eksperimentelt ud fra viden om, hvilken form for input-data vi forventer. I [Herrera et al., 2002] og [Herrera et al., 2003] eksperimenteres på baggrund af viden inden for signalbehandling med forskellige sæt af features til klassificering af trommelyde. Erfaringerne fra disse artikler er benyttet i dette projekt til at udvælge enkelte features. Anvendeligheden i forhold til human beatboxing-lyde er efterprøvet med tests. Problemet med at benytte en metode baseret på eksperimenter er, at vores præprocessering ikke bliver så generel, at vi uden problemer kan benytte den i andre sammenhænge. Ønsker vi eksempelvis senere at kunne genkende flere typer trommer end de tre, vi valgte som udgangspunkt i afsnit 3.1, vil den præprocessering, vi eksperimenterer os frem til, sikkert ikke være tilstrækkelig til at adskille hver klasse af data tilstrækkeligt, fordi variationen i vores data er forøget. Vi er derfor nødt til at starte forfra med eksperimenterne. I tilfældet med dette projekt er målet for klassificeringen hovedsageligt at understøtte brugsscenarierne. Sammenholdt med, at den tilgængelige mængde testdata er forholdsvis begrænset til at understøtte mere generelle metoder, 29 har vi derfor valgt at eksperimentere os frem med præprocessering og valg af features. 3.5.4 Valg af features Mel Frequency Cepstrum-koefficienter Mel Frequency Cepstrum-koefficienter (MFC-koefficienter eller MFCC) er typisk blevet benyttet inden for talegenkendelse, men anvendeligheden inden for musik er demonstreret af blandt andet [Logan, 2000]. MFC benyttes til bidder af lyd (frames), hvor frekvensspektret er forholdsvist statisk, og tager udgangspunkt i en diskret fourier-transformation (DFT). Derudover tilføjes elementer, som er fordelagtige ved analyse af lyddata. MFC opererer med logaritmen af frekvensspektrets amplitude, da mennesker opfatter lydstyrken af et signal omtrendt logaritmisk. Desuden ignoreres signalets fase ud fra en betragtning af vigtigheden af denne inden for lyd. Da den menneskelige hørelse også opfatter pitch (tonehøjde) ikke-lineært2 , benyttes mel-skalaen, som oprindeligt er lavet ud fra eksperimenter med folks opfattelse af tonehøjde. En populær approksimation, [Sigurdsson et al., 2006], som konverterer f hertz til mel mel er: mel = 2595 log10 ( f + 1). 700 Hvis fremkvensområder i lydbilledet med lige stor afstand i mel-skalaen analyseres, tages derved hensyn til, at de enkeltvise dybe frekvenser er perceptuelt vigtigere end de enkeltvise høje for den menneskelige hørelse. Amplituden af signalets frekvensspektrum transformeres også om til det såkaldte cepstrum. Denne transformation tjener som en dekorrelering, og typisk beregnes indledningsvist 40 koefficienter af signalets spektrum ved hjælp af DFT, hvorefter 13 koefficienter beholdes ved transformation til signalets cepstrum. Til dekorrelering benyttes ofte diskret cosinus-transformation (DCT) ud fra en antagelse om at det er en god approksimering til en optimal dekorrelering inden for lyd. Da vi i dette projekt benytter flere features end blot MFC, har vi dog valgt at lave dekorrelering efter komplet feature-extraction (omtalt i afsnit 3.5.5), hvorfor vi ikke transformerer til mel-cepstrum. Vi har i projektet benyttet ISP-implementationen fra [Sigurdsson et al., 2006] af MFC til skalering af tonehøjde, som beror på en såkaldt Mel-filterbank. 2 Ekspempelvis defineres addering af tolv halv-toner (et oktav-spring) til at være en fordobling af frekvensen. 30 Filterbanken kan opfattes som en funktion H(k, m), som angiver, i hvor høj grad den m’te mel-komponent korresponderer til den k’te komponent i frekvensspektrets amplitude. Vi har i projektet haft de bedste resultater med en frame-størrelse på 128 samples. Vi benytter en sample-rate på 44100 samples pr. sekund, som svarer til cd-kvalitet og er mindstemålet inden for musikproduktion. Dermed kan den dybeste frekvens, vi kan repræsentere, beregnes som: 44100 samples/sek = 345 Hz. 128 samples At lige netop en frame-størrelse på 128 giver de bedste resultater kan altså hænge sammen med at lydindspilningerne fra vores træningsdata ikke går dybere end 345 Hz. Frame-størrelsen på 128 samples resulterer i en øvre grænse på 64 komponenter grundet Nyquist-frekvensen. Antallet af mel-komponenter er sat til 13, som er den typisk benyttede værdi, [Herrera et al., 2003]. Givet disse parametre er vores filterbank afbilledet i figur 3.7. For at finde mel-spektret for den m’te mel-koefficient X 0 (m) ud fra frekvensspektrets amplitude |X(k)| benyttes følgende formel: ! K−1 X 0 X (m) = ln |X(k)| · H(k, m) , k=0 hvor K er antallet af komponenter i vores frekvensspektrum. Ved hermed at benytte Mel-filterbanken samt logaritmen af amplitude, tages der hensyn til den ikke-lineære opfattelse af tonehøjde og lydstyrke. MFC-koefficienterne for et segment bestående af L frames beregnes slutteligt ved hjælp af midling over alle frames: L 1X 0 X (m), M F Cm = L l=1 l hvor Xl0 (m) er den m’te mel-koefficient for den l’te frame. I [Herrera et al., 2002] benyttes endvidere også den empiriske varians for MFC-koefficienterne som features, hvilket vi også har eksperimenteret med i projektet: N 1 X 0 2 (Xn (m) − M F Cm ) . V arm = N − 1 n=1 Med 13 mel-komponenter opnår vi derved i alt 26 features for MFC. I figur 3.8 er de enkelte dele af processen til generering af MFC-koefficienterne opsummeret. 31 Mel Filter Bank H(k,m) 60 0.9 0.8 50 Frequency bin (k) 0.7 40 0.6 0.5 30 0.4 0.3 20 0.2 10 0.1 2 4 6 8 10 12 0 Mel bin (m) Figur 3.7: Plot af filterbanken H(k, m), som angiver, hvor meget den m’te melkomponent korresponderer til den k’te komponent i frekvensspektrets amplitude. Banken består af et antal triangulære filtre, hvor filtrene for de højere mel-bins er “bredere” og derved medtager flere frekvenskomponenter, svarende til den menneskelige opfattelse af tonehøjde. Spektrets form En række features, som vedrører den geometriske form af frekvensspektrets amplitude, benyttes ofte til genkendelse af trommetyper. I dette projekt har vi med held benyttet spectral centroid. Denne feature beskriver spektrets massemidtpunkt og beregnes ud fra amplituden af signalets frekvensspektrum som et gennemsnit, vægtet med frekvensen af komponenterne i amplituden, fk : P k fk · |X(k)| Sc = P . k |X(k)| 32 Lydsegment Inddeling i frames DFT-analyse Logaritmen af amplitudespektret Mel-skalering og beregning af koefficienter Gennemsnit og varians over alle frames MFC-koefficienter Figur 3.8: Beregning af MFC-koefficienter, dog endnu uden dekorrelation ved transformation til cepstrum. Som ved MFC-koefficienterne er spectral centroid beregnet per frame, og både midling og den empiriske varians er medtaget. 3.5.5 Reduktion af dimensionalitet Vi har således et udvalg af i alt 28 features, omfattende middelværdi og varians for både MFC og spectral centroid, og vi ønsker at beregne dem for hvert segment. Disse features bestemmer som udgangspunkt dimensionaliteten vores data, men som vi antydede i afsnit 3.5.4, vil der være en grad af korrelation imellem de forskellige koefficienter i vores data. Dermed kan vi nedbringe dimensionaliteten gennem dekorrelation, hvilket er ønskeligt, da dimensionaliteten typisk vil være en gældende faktor i udførselstiden af vores klassificeringsalgoritme. I [Logan, 2000] benyttes en diskret cosinus-transformation til dekorrelering af MFC-koefficienterne med henvisning til dens popularitet inden for talegenkendelse. DCT er dog kun en approksimering til en teoretisk set optimale dekorrelation. Vi har i dette projekt benyttet en sådan i form af Principal Component Analysis (PCA). PCA kan defineres som en ortogonal projektion 33 af data til et nyt vektorrum af mindre dimensionalitet, således at variansen af de projicerede data maksimeres. Det vil altså sige, at uanset hvor få dimensioner D vi vælger for det nye vektorrum genereret ud fra PCA, vil vores data have størst mulig varians for det givne D. Dette giver os mulighed for, på enkel vis at eksperimentere med at mindske antallet af features. Til dette projekt har vi benyttet Matlabs indbyggede funktion til beregning af PCA. En implementation af Oja’s algorithm til at finde principal components, samt et bevis for algoritmens korrekthed kan findes i [Rojas, 1996, p. 116]. 3.5.6 Klassificeringsalgoritme Da PCA ordner vores nye basis efter graden af varians, kan vi også udnytte dette til at danne et geometrisk førstehåndsindtryk af data ved at lave en visualisering af de “vigtigste” komponenter. I figur 3.9 er projektionen af vores test-data på de tre første principal components illustreret parvist. Som det fremgår, er der en grad af sammenklumpning, således at to typer af trommer generelt er adskilt i enten den ene, den anden eller den tredje dimension. Men som det fremgår, er der især blandt store- og lilletrommelydene en grad af sammenblanding, og der er ikke tale om en lineær adskillelse mellem disse klasser. Selvom dette førstehåndsindtryk kun er baseret på de tre første principal components, har vi på baggrund af denne visualisering i første omgang fravalgt lineær klassificering. Klassificering med nearest-neighbour I stedet for lineær klassificering har vi benyttet K-nearest-neighbour-algoritmen, [Bishop, 2006, p. 124]. Denne algoritme er valgt ud fra den implementationsmæssige enkelthed samt den intuitive virkemåde. Hvert datapunkt fortolkes som et punkt i et M -dimensionelt euklidisk rum. Når klassen for et nyt datapunkt, x skal bestemmes, beregnes afstanden (L2-normen) til alle andre punkter t i træningsdatasættet: v uM uX dist(x, t) := t (xm − tm )2 . m=1 For K-nearest-neighbour udvælges de K nærmeste punkter fra træningssættet, hvorefter x’s klasse afgøres ved votering blandt de udvalgte punkter. Som det beskrives i [Bishop, 2006], bestemmer K graden af smoothing, således at lavere værdier af K giver flere, mindre regioner af samme klasse. Ved 34 Features: x=1, y=2 Features: x=1, y=3 4 3 2 2 y y 1 0 0 −2 −4 −4 −1 −2 0 2 x Features: x=2, y=3 −2 −4 4 −2 0 x 2 4 3 2 Bassdrum Snaredrum Hihat y 1 0 −1 −2 −4 −2 0 x 2 4 Figur 3.9: De tre første principal components plottet parvist viser sammenblanding mellem store- og lilletrommelydene (de røde og grønne punkter) og problematiserer derved lineær klassificering. K = 1 (blot kaldet nearest-neighbour) vælges et nyt punkts klasse simpelthen ud fra det nærmeste punkt. I dette projekt har K = 1 givet de bedste resultater - muligvis på grund af den førnævnte grad af sammenblanding. K-nearest-neighbour adskiller sig fra lineær klassificering ved ikke at lave en generel model for klassificeringen. I stedet er den instansbaseret og således afhængig af, at alt træningsdata er tilstede i modellen, hvorved hukommelsesforbruget for modellen samt udførselstiden for klassificeringen stiger med størrelsen af træningsdata. Ved den naive implementation af K-nearestneighbour er udførselstid og hukommelsesforbrug derved O(nm), hvor n er instanser i træningsdatasættet, og m er antallet af features. 35 1. 2. 3. 4. Figur 3.10: 4-fold cross-validation med skiftende valg af testdata, markeret med grå. 3.6 3.6.1 Testmetode og resultater Overfitting Ved supervised learning, hvor der på forhånd eksisterer en korrekt klassificering, kan “overfitting”, [Rojas, 1996, p. 145], være et problem. Gøres modellen for kompleks, for eksempel ved at vælge for mange features, kan resultatet være, at modellen kan klassificere netop træningsdata korrekt men ikke er i stand til at generalisere. Ved en instansbaseret algoritme som nearest-neighbour vil vi ligefrem konsekvent få 100% hitrate, hvis vi tester på vores træningsdata, da hver testinstans naturligvis vil være et perfekt match på sig selv. En metode til at verificere, at der ikke forekommer overfitting er at benytte “cross-validation”. Ved k-fold cross-validation benyttes (k − 1)/k af den tilgængelige data til træningsdata, hvorefter de resterende 1/k dele benyttes til test. Data deles indledningsvist op i k lige store mængder, og testen gentages for alle k valg af testdata. Et eksempel er angivet i figur 3.10. 3.6.2 Resultater For at teste klassificeringen har vi kombineret de i afsnit 3.3 nævnte datasæt. Alle optagelser fra datasættene er blevet segmenteret med metoderne beskrevet i afsnit 3.4, hvilket har tilsammen har resulteret i 798 segmenter. Herefter er de udvalgte features fra afsnit 3.5.4 blevet beregnet for hvert enkelt segment og transformeret til det rum, som dannes ved hjælp af deres principal components, som beskrevet i afsnit 3.5.5. Endelig er hvert enkelt segment 36 Classification using 1−Nearest Neighbour 0.9 0.85 Correct classification (hitrate) 0.8 0.75 0.7 0.65 0.6 0.55 0.5 0.45 0.4 1 5 10 15 Number of features 20 25 28 Figur 3.11: Allerede ved 4 principal components opnås en hitrate på over 80% og stabiliseres på omkring 87% efter de første 7 principal components. ved aflytning manuelt klassificeret som enten storetromme, lilletromme eller hi-hat. Vi kan nu teste, hvor godt vores klassificering fungerer ved forskellige valg af antallet af principal components. Ved at blande træningsdata og lave 10-fold cross-validation får vi et tal for graden af korrekt klassificering, også benævnt hitrate. Dette er gjort 10 gange for alle valg af dimensionalitet (1, 2, . . . , 28), hvorefter gennemsnittet er beregnet. Resultatet er vist i figur 3.11. Som det fremgår af figur 3.11, opnår vi ingen væsentlig forbedring ved at bruge mere end en fjerdedel af de tilgængelige features. Dette kan forklares med en høj grad af korrelation mellem de enkelte MFC-koefficienter. Men omvendt viste senere tests, at en reduktion af antallet af MFC-koefficienter gav et noget dårligere resultat. En anden forklaring på, at flere dimensioner ikke 37 forbedrer klassificeringen væsentligt er den såkaldte curse of dimensionality, som i [Bishop, 2006] intuitivt forklares ved, at i et rum af høj dimensionalitet vil det langt størstedelen af en kugles volume ligge i en tynd skal nær kuglens overflade. Ved klassificering med nearest-neighbour betyder dette, at mængden af træningsdata for vores instansbaserede model skal stige kraftigt med antallet af dimensioner, hvis vi skal undgå “tomme huller” i vores søgerum, som ellers vil udvande grupperingen af data inden for samme klasse. 3.7 Test og virkelighed Det er værd at overveje, hvordan vores isolerede tests af klassificeringen forholder sig til de virkelige brugsscenarier. Selvom vi med cross-validation har forsøgt at undgå overfitting, har vi alligevel en begrænset mængde data til rådighed, som er optaget under fire forskellige forhold med tre forskellige beatboxere. Hermed har vores testdata en vis grad af ensartethed, som vi ikke har ved reelt brug. Til de valgte brugsscenarier vil vi dog under alle omstændigheder betegne en hitrate på over 80% opfylder vores ambition om at give brugeren en fornemmelse af, at hans human beatboxing rent faktisk bliver genkendt. 38 Kapitel 4 Design af prototype I forrige kapitel opbyggede vi et teknisk fundament for realiseringen af brugsscenarierne. Vi ønsker nu at inddrage brugere for at undersøge, hvorvidt systemet er praktisk anvendeligt i de tiltænkte brugssituationer. Vi har udvalgt to af brugsscenarierne som grundlag for prototypen, “Skitse til trommespor” samt “Live-beat boxer”. Begge beskæftiger sig med samme ide, som var motiverende for projektet, nemlig human beatboxing som musikalsk værktøj. Som beskrevet i afsnit 2.1 er disse to udvalgte brugsscenarier samtidig tilblevet under samtaler med musikere. Da vi gerne vil fastholde brugerinvolveringen, vil vi implementere en hi-fi-prototype, [Benyon et al., 2005, p. 254]. En hi-fiprototype er til forskel fra lo-fi-prototyper en reel software-implementation, og dermed vil den ofte også give brugeren et indtryk af, at den afspejler det endelige system, og at et sådant system rent faktisk kan implementeres. Vi har derfor opstillet følgende krav til prototypen: • Musikeren skal få et indtryk af, at systemet rent faktisk virker, ved at hans human beatboxing bliver genkendt, og giver et resultat som beskrevet i brugsscenariet. • Brugeren skal kunne påvirke parametre for systemet gennem en let tilgængelig brugerflade og få hurtig respons på resultatet. • Brugerfladen er ikke det primære i systemet. Den skal derfor kunne strikkes forholdsvist hurtigt sammen og være så simpel, at den i mindre grad virker som det endelige produkt. Til implementation af prototypen har vi ud fra ovenstående krav valgt det grafiske programmeringsmiljø Max/MSP1 . Max/MSP indeholder et standardbibliotek til signalbehandling, samt et programmeringsinterface til Java, 1 http://cycling74.com/products/maxmspjitter/ 39 kaldet Java Externals. Og gennem Java kan vi i princippet bruge den eksisterende implementation af human beatboxing-analysen i Matlab. Max/MSP giver mulighed for at koble grafiske brugerflade-komponenter såsom drejeknapper og fadere til signalbehandlingsobjekterne, hvormed brugeren af programmet let kan ændre på parametre og eksperimentere med programmet. Da Max/MSP arbejder med små bidder af lyd ad gangen, får brugeren forholdsvis hurtig respons på de parametreændringer, han laver. Denne metode til processering af lyd har betydning for, hvordan vi implementerer analysen. Vi vil i det følgende afsnit kigge nærmere på systemer til audioprogrammering, som tillader hurtig respons, samt redegøre for de tekniske udfordringer ved at koble analysen af human beatboxing sammen med et sådant system. 4.1 Umiddelbar og forsinket respons I eksperimenterne med segmentering og klassificering i forrige kapitel har vi som nævnt benyttet Matlab til at afprøve parametre, lytte og måle på resultatet og dernæst justere parametrene. Med denne arbejdsmetode påbegyndes processeringen først, når den komplette human beatbox-optagelse er tilstede, og omvendt får vi også først respons på processeringen, dvs. resultat af klassificeringen, når analysen af hele human beatbox-optagelsen afsluttet. Denne form for processering vil vi benævne som forsinket respons. Som vi diskuterede i afsnit 2.6, er det forskelligt, hvilken type respons de forskellige scenarier kræver. I scenariet “Skitse til trommespor” vil det som nævnt ikke bekymre brugeren, hvis der optræder en mindre pause, inden han får den færdige skitse. I andre scenarier er det derimod nødvendigt, at brugeren ikke skal vente for længe på respons. Eksempelvis kræver brugeren i “Live-beat boxer”, at afspilningen af den processerede human beatboxingoptagelse begynder, så snart han er færdig med at indspille den. Denne form for processering vil vi benævne som umiddelbar respons. 4.2 Audioprocessering med umiddelbar respons Systemer til audioprocessering med umiddelbar respons, såsom Max/MSP, modtager og behandler løbende audio-buffere, som hver består af en række samples. I Max/MSP kaldes denne audio-buffer en signalvektor, og den kan efter behov varieres i størrelse og dermed tidslængde. En musiker vil typisk være interesseret i en så lille buffer som muligt ved live-brug, da størrelsen 40 har indvirkning på, hvor hurtigt han får respons på sine handlinger, så som at spille toner eller ændre på effekt-parametre. Typisk ligger en tolerabel responstid på maksimalt 10 millisekunder2 , hvilket giver en bufferstørrelse 10 sek = 410 samples. på 44100 samples/sek · 1000 I praksis har vi altså en “bid” lyd til rådighed ad gangen i form af en signalvektor. Dette giver os udfordringer på flere fronter. Hvis vi ønsker at benytte vores analyse af human beatboxing, er vi først og fremmest nødt til at kunne abstrahere væk fra de enkelte signalvektorer. Derudover skal ydeevnen for vores processering være tilpas hurtig til, at vi løbende kan modtage og processere nye signalvektorer. 4.2.1 Sammenkobling af signalvektorer For at finde en passende måde at abstrahere væk fra signalvektorer vil vi prøve at anskue det materiale, som vi ønsker at processere, ud fra en niveauinddeling: På øverste niveau har vi en human beatboxing-optagelse, som er defineret ud fra et helt antal takter. Efterfølgende har vi de enkelte segmenter, eller beats, som er defineret ud fra onsets. Når et segment analyseres, inddeles det i frames, hvor længden af en frame definerer den laveste frekvens (dvs. længste periode), vi kan måle. De signalvektorer, som vi arbejder med, er muligvis længere end de frames, vi ønsker at processere i eksempelvis beregningen af MFC-koefficienter. Men når vi modtager en signalvektor, ved vi endnu ikke, om den givne signalvektor indeholder en frame, som igen er en del af det næste niveau, et segment. Derudover har vi ikke decideret “travlt” med at processere, da vi ikke kan outputte noget meningsfuldt, før vi har analyseret et helt segment. Vi vælger derfor at sammensætte de enkelte signalvektorer til et helt segment, hvilket er illustreret i figur 4.1. Metoden, vi vil benytte til at samle indholdet af en række signalvektorer til et segment, kan beskrives således: de optagede signalvektorer samles i en buffer og analyseres samtidigt ved hjælp af onset-detection. Når et onset registreres, sendes det til segment-bufferen, som på baggrund af metoden beskrevet i afsnit 3.4.1 beregner hvornår et helt segment er modtaget. Derpå kan vi fortsætte med den videre processering på samme måde som beskrevet i afsnit 3.2. Metoden er illustreret i figur 4.2. 2 http://en.wikipedia.org/wiki/Latency_(audio), besøgt 9/8 2010 41 Varighed Human beatboxing-loop Buffering til analyse Segmenter Frames Buffering i audio-programmer Signalvektorer Figur 4.1: Niveau-inddeling af audiodata. For at abstrahere væk fra de enkelte signalvektorer benytter vi en buffer til at opsample et helt segment. Lydinput (signalvektorer) Segment-buffer Onset-detection Videre processering Figur 4.2: De optagede signalvektorer samles i en buffer, og kombineres derpå til et lydsegment på baggrund af onset-detection. 4.2.2 Ydeevne Hvis processeringen i et system med umiddelbar respons ikke går tilpas hurtigt, vil systemet ikke være klar til at modtage en ny signalvektor, da den forrige stadig behandles. Denne situation resulterer i, at den nye signalvektor smides væk, hvilket manifesterer sig i skarpe “klik” i den lyd, som sendes ud af højttaleren, da lydsignalet afbrydes og genoptages abrupt. Ved lydoptagelse i realtid, som når en musiker beatboxer ind i mikrofonen, vil dele af lyden svarende til de ignorerede signalvektorer mangle. En lydoptagelse vil 42 amplitude a) Oprindeligt signal b) Optagelse c) Afspilning 1 1 1 0.8 0.8 0.8 0.6 0.6 0.6 0.4 0.4 0.4 0.2 0.2 0.2 0 0 0 −0.2 −0.2 −0.2 −0.4 −0.4 −0.4 −0.6 −0.6 −0.6 −0.8 −0.8 −0.8 −1 0 1 2 samples x 104 −1 0 1 2 samples x 104 −1 0 1 2 samples x 104 Figur 4.3: Problemer med ydeevne og manglende signalvektorer. I a) ses det oprindelige signal. Hvis signalet optages, udelades stumper af lyden (markeret med rødt i a) i det optagede signal, som vist i b), hvorved lyden forkortes. Ved afspilning af det oprindelige signal opstår abrupte pauser og hørbare “klik” som i c). altså blive forkortet, hvorved lyden forvrænges og den rytmiske fornemmelse ændres. En illustration af problemerne ved optagelse og afspilning ses i figur 4.3. Vores analyse i form af onset-detection, segmentering, præprocessering og klassificering skal altså køre tilpas hurtigt, for at resultatet bliver korrekt. Størrelsen på signalvektorne har stor betydning for systemets ydeevne, da der er et betydeligt overhead for processeringen af hver signalvektor. Da små signalvektorer samtidigt er en fordel for den responstid, musikeren oplever, skal vi finde en balance mellem en signalvektor, der er lang nok til at mindske overhead’et tilpas meget, og kort nok til at resultere i en tilpas lav responstid. 43 4.3 Implementering af prototypen Vi stødte under forløbet med implementeringen af prototypen på forskellige udfordringer, relateret til processering med umiddelbar respons. Vi vil i dette afsnit beskrive disse udfordringer samt redegøre for, hvordan vi fik løst problemerne. 4.3.1 Onset-detection og segmentering Implementering af segmentbuffer I prototypen har vi indledningsvist implementeret segmentbufferen for derved at kunne abstrahere væk fra de enkelte signalvektorer. Til dette vil vi benytte Max/MSP’s Java Externals. Konkret foregår dette ved at indsætte objektet mxj∼ i et Max/MSP-program. Dette objekt fungerer som en bro mellem Max/MSP’s vanlige C-API og en Java-klasse, som nedarver fra MSPPerformer-klassen, en del af Max/MSP’s Java-API. Når mxj∼-objektet modtager en signalvektor, kaldes den nedarvende klasses perform-metode med vektoren. I vores implementation af segmentbufferen føjer vi i denne metode den indkommende signalvektorer til en buffer. Samme signalvektor er samtidigt undergået onset-detection, som delvist er implementeret med objekter fra Max/MSP’s standardbibliotek, og delvist med Java Externals. Resultatet af denne onset-detection sendes også videre til segmentbufferen, og når vi har modtaget både et onset for det aktuelle segment, samt et onset for det næste, kan vi indramme hele segmentet ved at bruge analysen fra afsnit 3.4, og dernæst sende segmentet videre til præprocessering og klassificering. Downsampling ved onset-detection Implementation af onset-detection afstedkom problemer med ydelsen. Specifikt var Java-implementationen af median-funktionen for langsom for systemet. Vi benytter median-funktionen til at udglatte et udsnit af signalet, og adaptivt udregne en tærskel for onset-detection på dette udsnit. For hver beregning flyttes udsnittet af signalet et sample, hvorved vi i den nuværende implementation bruger tid O(n), hvor n er sample-længden på vinduet, til at placere det nye sample korrekt for at kunne beregne medianen på ny. Muligvis er denne lineære faktor årsagen til ydelsesproblemerne. Løsningen var umiddelbart at reducere opløsningen, og dermed sample-længden på vinduet, for det signal, som undergår onset-detection ved at downsample signalet. Vi 44 kan tillade os dette, da vi først lavpas-filtrerer signalet, men en downsampling kan muligvis have indflydelse på præcisionen af onset-detection. En mulig optimering af median-beregningen involverer brug af et selfbalancing binary search tree til opbevaring af det sorterede udsnit af signalet. Ved hver node i træet angives antallet af descendants. Når vi skal søge efter medianen, vælger vi stien ned igennem træet alt efter hvor mange descendants vi afskærer. Denne traversal er O(log n). Opdatering af træet, inklusiv rebalancering er også O(log n) ved eksempelvis AVL-træer. Herved kan vi opnå sublineær udførselstid for beregning af medianen.3 4.3.2 Præprocessering og klassificering Sammenkobling med Matlab I første omgang benyttede vi til præprocessering og klassificering den eksisterende implementation i Matlab for på den måde at kunne afprøve segmentering og onset-detection. Matlab kan kommunikere med sin egen Java virtuelle maskine (JVM), mens Max/MSP’s Java externals kører i en separat JVM. Kommunikation mellem to JVM’er kan ikke foregå direkte, men ved hjælp af API’en matlabcontrol4 kan man over TCP udveksle data mellem et mxj∼-objekt og Matlab. Med denne løsning bliver den benyttede toolchain som vist i figur 4.4. Løsningen indebærer samlet set et anseeligt overhead, både ved mxj∼-bridge’en, ved serialiseringen over TCP, samt ved Matlabs eget Java-interface. Det var derfor ikke uventet, at løsningen ikke kunne processere lydindspilninger direkte. I dette tilfælde kom den faktiske optagelse til at mangle stumper af lyden, som vi så det illustreret i figur 4.3 b. I stedet blev prototypen sat til at processere forhåndsindspillede beatboxing-optagelser. Dette imødekommer problemet med at stumper udelades, men under processeringen opleves pauser i lyden, som illustreret i figur 4.3 c. Selvom denne første implementation altså ikke havde nogen egentlig anvendelighed over den første implementation i Matlab, fungerede den som en slags “proof of concept” for, at segmentbufferen virker som tiltænkt. Optimering af præprocessering og klassificering Næste etape af prototypen indebar implementering af præprocessering og klassificering i Java. Selvom de hastighedsproblemer, som vi oplevede med implementationen i Matlab fra forrige afsnit, var knapt så tydelige, måtte 3 4 http://en.wikipedia.org/wiki/Selection_algorithm, besøgt 9/8 2010 http://code.google.com/p/matlabcontrol/ 45 Matlab Java Matlab Interface JVM TCP matlabcontrol JVM mxj~ bridge Max/MSP Figur 4.4: Toolchain ved første implementation af prototypen. Max/MSP står delvist for onset-detection, mens segmentering sker med Java externals via en mxj∼bridge. Med API’en matlabcontrol overføres segmenterne via TCP til en Java virtuel maskine (JVM) som kører sideløbende med Matlab, hvorefter datastrukturen konverteres til Matlab-typer ved hjælp af Java Matlab Interface. Matlab Java Præprocessering Nearest-Neighbour 26.5 2.6 8.0 0.2 Lineær klassificering 0.2 Tabel 4.1: Udførselstid i sekunder for de enkelte dele af analysen. De to klassificeringsalgoritmer er i praksis lige hurtige for vores datasæt, mens præprocesseringen står for langt størstedelen af udførselstiden. Implementationen af præprocessering og klassificering i Java medfører væsentlig reduktion i tidsforbruget i forhold til Matlab-implementationen. vi dog stadig benytte bufferstørrelser på mere end de maksimale 10 millisekunder, som vi beskrev i afsnit 4.1. Vi forsøgte også med implementation af lineær klassificering, som beskrevet i afsnit 3.5 i håb om at forbedre ydeevnen, hvorved kompleksitet som nævnt ikke afhænger af mængden af træningsdata. Dette havde dog ingen praktisk betydning for udførselstiden, hvilket også viste sig ved isolerede hastighedstests af de enkelte dele af human beatboxinganalysen. I tabel 4.1 vises udførselstiden for henholdsvis præprocessering og klassificering af det samlede datasæt på 798 instanser i både Matlab og Java. 46 Flertrådet implementering Den endelige løsning blev at køre præprocessering og klassificering i sin egen tråd. Når vi i den enkelt-trådede version registrerer et helt lydsegment, blokeres perform-metoden i mxj∼-objektet, mens vi processerer segmentet. Da vi langt fra registrerer et segment for hver enkelt signalvektor, giver det derfor god mening at lade denne processering foregå i sin egen tråd. Med udgangspunkt i scenariet “Live-beatboxer” ønsker vi først at benyttet resultatet af analysen af et segment, når vi igen skal til at afspille segmentet, hvilket giver os rigeligt med tid til at færdiggøre analysen. Med denne flertrådede løsning var det muligt at optage human beatboxing mens processeringen foregår, uden at vi oplever de førnævnte problemer med udeladte stumper af lyden. 4.3.3 Kobling til brugsscenarier Analysen kører dermed tilfredsstillende med umiddelbar respons, og vi kan nu sætte resultatet af klassificeringen ind i de tænkte brugssammenhænge. Vi har valgt at koble de to brugsscenarier sammen, således at prototypen både kan benyttes til at generere et nyt trommespor som i “Skitse til trommespor” og effektprocessere en human beatboxing-optagelse som i “Live-beatboxer”. Skitse til trommespor Til en skitse kan lydene til store-, lilletromme og hi-hat defineres af brugeren. Når en optagelse er færdiggjort bliver disse lyde på rette tidspunkt afspillet gentagende ved hjælp af Max/MSPs sfplay∼-objekt. Som et forsøg kan prototypen også automatisk udvælge lyde, der minder om dem, brugeren har beatboxet. Dette er implementeret ved at behandle et lydbibliotek med præprocesseringen fra afsnit 3.5.3. Når et nyt segment detekteres, præprocesseres det, og ved hjælp af nearest-neighbour-algoritmen erstattes segmentet efterfølgende af den lyd fra lydbiblioteket, der ligger nærmest. Live-beatboxer Når beatboxing-optagelsen er afsluttet, afspilles den gentagende. Ud fra klassificeringen af de enkelte segmenter, routes optagelsen ved hjælp af Max/MSP’s gate∼-objekt skiftevis ud af tre lydudgange, en til storetromme, lilletromme og hi-hat. Brugeren kan nu route disse udgange videre til andre lydeffekter i Max/MSP og dermed effektprocessere som han ønsker det. 47 Figur 4.5: Brugerflade til prototypen. Brugeren kan vælge en forudindspillet human beatboxing-optagelse eller lave en ny optagelse. Brugeren har mulighed for at slå rigtige trommelyde til og fra (sample vol), effektprocessere human beatboxingoptagelsen (delay og reverb), samt afspille lignende trommelyde (similar sounds). 4.3.4 Brugerflade Prototypens brugerflade er lavet i Max/MSP’s grafiske designmiljø. Et Max/MSPprogram er i sig selv en grafisk brugerflade, men den såkaldte presentation mode giver mulighed for at gemme programstruktur væk og derved skjule kompleksitet. Vi har valgt at benytte presentation mode, således at brugeren lettere kan benytte systemet uden at skulle assisteres af os som udviklere, hvilket vi formodede ville blive nødvendigt ved brugertests på grund af geografiske omstændigheder. For at brugeren skal kunne benytte prototypen direkte, er der i forvejen koblet effekter til hi-hatten og lilletrommen, ligesom lydene til trommespors-skitsen er foruddefinerede. Brugerfladen er holdt simpel med et enkelt vindue, for at give brugeren mulighed for at kunne overskue og tilgå alle funktioner på en gang. Et skærmbillede af brugerfladen ses i figur 4.5. 48 4.4 Afrunding Hermed har vi bygget en prototype, som vi mener kan understøtte brugsscenarierne. Brugeren kan få en oplevelse af den grundlæggende funktionalitet til klassificering, og han har mulighed for at udnytte resultatet af klassificeringen og arbejde videre med lyden på enkel vis. Med den flertrådede implementering har vi opfyldt kravet om umiddelbar respons, således at brugeren også kan benytte prototypen i en live-situation, hvor det musikalske flow skal bevares. 49 Kapitel 5 Brugertests Vi har lavet brugertests med et tre brugere. To af brugerne, Kristoffer Thorning og Martin Albrekt, har haft brugerscenarierne som som udgangspunkt, da de som beskrevet i afsnit 2.1 har været involveret i den indledende ideudvikling. Den sidste bruger, Bo Magnussen, har fået forelagt prototypen uden en bestemt kontekst, så han kunne udforske den på eget initiativ. Vi har lavet en række kvalitative interviews for at få brugernes umiddelbare reaktioner. Desuden har en bruger, Kristoffer, lavet skærmoptagelser, hvor han benytter prototypen. Disse optagelser kan findes på den cd, som er omtalt i bilag A samt på specialets hjemmeside, http://cs.au.dk/~grav/ speciale. Kristoffer Thorning Kristoffer optræder med human beatboxing i koncertsituationer. Han er derigennem vandt til at arbejde og eksperimentere med software som skal fungere i en live-sammenhæng. Kristoffer har benyttet prototypen til at loope en human beatboxing-optagelse med nye lyde og lydeffekter, lige efter at han har indspillet den, som beskrevet i brugsscenariet “Live-beatboxer”. Kristoffer har problemer med at få optagelsen til at loope tilfredsstillende. Han ønsker at bruge systemet i live-situationer, så det er vigtigt at det musikalske flow ikke forstyrres. I video 1 får han efter nogle forsøg et tilfredsstillende resultat, men han foreslår selv at systemet bør kunne detektere rytmefornemmelsen og automatisk skære optagelsen til. Kristoffer har benyttet en dynamisk Beta 58-mikrofon samt den indbyggede mikrofon på hans bærbare computer. Han vurderede at have bedre held med genkendelse af lilletrommerne, når han benyttede den indbyggede mikrofon. Når han benyttede Beta 58-mikrofonen, forveksledes lilletrommerne 50 ofte med storetrommer. Han mente selv dette kunne skyldes at Beta 58mikrofonen vægter de dybe frekvenser højere end den indbyggede mikrofon. Han kunne kompensere for dette ved at bruge mere højfrekvent “s”-lyd på lilletrommerne. Video 2 viser problemerne med korrekt klassificering, hvor lilletrommer og storetrommer ofte forveksles. Video 3 viser en smule problemer med ydeevnen, hvilket resulterer i at lyden “hakker”. I sidste ende lykkes det at få ydeevnen og loopet til at fungere, hvorefter Kristoffer kan eksperimentere med de forskellige parametre. Kristoffer finder, at prototypen har et potentiale og fungerer nogenlunde. Dog mangler han interoperabilitet med sine nuværende værktøjer, og han efterspørger en form for plugin, således at programmet kan indgå i andre sammenhænge. Martin Albrekt Martin oplever, at han skal prøve sig frem, før genkendelsen af hans human beatboxing fungerer tilfredsstillende. Han skal give sin lilletromme en bestemt klang, som han mener mere svarer til et kantslag1 , hvormed han således er nødt til at arbejde på prototypens præmisser. Han ser ikke dette som et direkte problem, når der kun skelnes mellem de tre trommetyper, det kræver blot at han øver sig inden brug. Martin savner også mulighed for at lave en såkaldt “lagkageoptagelse”, hvor man kan lægge flere lag af trommelyde oven i hinanden. I prototypens nuværende udformning mangler Martin flere muligheder for at arbejde videre med lyden. En så simpel funktion som at kunne gemme resultatet som en lydfil ville gøre det muligt at rette resultatet til rytmisk i et andet program og bruge det i sammenhæng med noget andet musik. Martin har i øvrigt prøvet funktionen til at finde “lignende lyde”, som han fandt underholdende og inspirerende. Han fik dog de bedste resultater når han selv frembragte underlige, rytmiske lyde, som ikke han ikke vil karakterisere direkte som human beatboxing. Bo Magnussen Bo finder at programmet er sjovt og en “tidsstjæler”. Han har som Kristoffer problemer med at få alle sine lilletrommer genkendt som lilletrommer, men hvis programmet havde muligheden for at gemme et resultat, ville han godt 1 Ved et kantslag rammes lilletrommen på metalkanten i stedet for på trommeskindet, hvilket giver en skarpere, mere metalisk klang. 51 kunne bruge det til at lave musik. Bo foreslår i øvrigt, at programmet får en metronom eller på anden vis hjælper brugeren på vej med den rytmiske fornemmelse ved indikation af tempo. 5.1 Sammenfattende brugerrespons Samlet set giver prototypen brugerne et indtryk af, at genkendelsen af deres human beatboxing virker, men at der er plads til forbedringer. Brugerne ser et perspektiv i prototypens nuværende funktionalitet, men prototypen er i sin nuværende udformning umiddelbart ikke noget, brugerne kan bruge til et endeligt musikalsk resultat. 52 Kapitel 6 Konklusion Opsummering Vi har i dette speciale arbejdet med human beatboxing som en form for musikalsk værktøj. Vi har som udgangspunkt set human beatboxing som en enkel og umiddelbar musikalsk udtryksform, og vi har brugt dette som inspiration til et redskab, som kan hjælpe musikere med at mindske kløften mellem en musikalsk ide og den endelige fremførelse. For at konkretisere vores ideer, har vi konstueret brugsscenarier, som både beskriver brugssituationen som et koncept, og samtidigt er tilpas konkrete til at vi kan udlede specifikke, tekniske krav til realisering. Ud fra disse brugsscenarier fandt vi, at brugsscenarierne som fællesnævner havde kravet om opsplitning af hele human beatboxing-optagelser i de enkelte trommelyde samt klassificering af disse. Derudover noterede vi os, at de forskellige brugsscenarier havde forskellige krav til, hvor hurtigt responsen og dermed klassificeringen skulle foregå. I vores analyse af human beatboxing har vi eksperimenteret med segmentering af human beatbox-optagelser og klassificering af trommelyde for at danne os et indtryk af, hvorvidt de tekniske enkeltdele af systemet kan hænge sammen og udgøre et grundlag for en funktionel prototype. Indledningsvist arbejdede vi med lineær klassificering, men visualisering af træningsdata pegede ikke umiddelbart retning af, at denne metode til klassificering ville være fyldestgørende. I stedet forsøgte vi os med nearest-neighbour-klassificering, hvilket i vores eksperimenter gav en hitrate på vel over 80%. Trods det umiddelbart gode resultat holdt vi os for øje, at vores eksperiment blev udført med en begrænset mængde testdata, som har en vis grad af ensartethed, og at vi ikke nødvendigvis kan regne med samme resultater i en rigtig brugssituation. Dog fandt vi resultatet godt nok til en funktionel prototype, som kan 53 give testbrugere et indtryk af, at hans human beatboxing bliver genkendt og påvirker resultatet på en musikalsk vis. Vi har implementeret en prototype, som benytter resultaterne fra analysen, samtidigt med at vi også har opfyldt kravet om umiddelbar respons, således at prototypen potentielt set understøtter de udvalgte brugsscenarier. Gennem brugertest af prototypen har vi undersøgt, om prototypen kan fungere som et værktøj, der gavner brugernes musikalske proces og understøtter deres behov. Igennem kvalitative interviews har vi fået brugernes umiddelbare reaktioner. Samlet set er brugerne positivt indstillet overfor resultatet, og selvom de ikke kan benytte prototypen direkte i deres musikalske proces, ser de et musikalsk potentiale i prototypen, og deres umiddelbare reaktioner bærer præg af engagement en lyst til at arbejde videre med projektet. Overvejelser omkring prototyper Generelt savner brugerne interoperabilitet med deres eksisterende værktøjer, men de er engagerede i forhold til videreudvikling og kommer gerne med ideer til, hvordan koblingen med deres eksisterende værktøjer kunne foregå. I sammenhæng med at prototypens tekniske funktionalitet til en vis grad er på plads, vil det i en fremtidige udviklingsproces være fornuftigt i endnu højere grad at rette opmærksomheden mere mod den kontekst, som programmet indgår i. En metode til at designe mere på brugernes præmisser er participatory design, [Benyon et al., 2005], hvor brugerne er med til at tage beslutninger omkring et design. Dette foregår blandt andet gennem lo-fi-prototyper, [Benyon et al., 2005, p. 255], som kan produceres hurtigt i samarbejde med brugeren, samt use-cases, [Benyon et al., 2005, p. 198], som beskriver den konkrete interaktion mellem brugeren og systemet. Man kan argumentere for, at vi tidligere i projektet skulle have lagt mere vægt på brugerinvolvering igennem metoder som ovenfor frem for at have implementeret en hifi-prototype. Under designet af prototypen gjorde vi eksempelvis nogle teknologiske valg, som krævede, at vi måtte reimplementere store dele af analysen fra kapitel 3, og en fremtidig funktionel prototype kan gøre endnu en reimplementation nødvendig. Havde vi istedet lagt vægten på brugerinvolverende design med lo-fi-prototyper, var vi måske tidlige blevet beviste om, at brugerne gennemgående have et krav om kobling med deres nuværende værktøjer, og vi kunne have udskudt og baseret teknologivalgene på dette resultat. Omvendt har den nuværende prototype ladet os eksperimentere med at understøtte umiddelbar respons, som ikke blev berørt i analysen. Og på trods af at brugerne på ikke mener, de kan benytte den nuværende prototype i deres endelige, musikalske arbejde, finder vi at både 54 interviews samt videooptagelserne afspejler en glæde hos brugerne over de musikalske resultater, de dog er istand til på egen hånd at frembringe med prototypen. Vi mener derved ikke, at prototypen står i vejen for musikaliteten, men nærmere understøtter den. Dermed finder vi, at vi igennem dette projekt har belyst mulighederne for at bruge human beatboxing som et musikalsk redskab, og vi mener at resultaterne fra dette projekt kan understøtte udviklingen af lignende værktøjer, som benytter human beatboxing. 55 Kapitel 7 Fremtidige udvidelsesmuligheder 7.1 Forbedring af klassificering Selvom en hitrate på over 80% er fyldestgørende i tilfældet med prototypen, afspejler dette succeskriterie ikke virkelig brug, som omtalt i afsnit 3.6. En alternativ tilgang til klassificering benyttes til programmet BoomClap1 , som er en kommerciel opfølgning til BillaBoop, [Hazan, 2005a]. Her trænes systemet umiddelbart inden det skal benyttes af brugeren selv, hvorved klassificeringen målrettes den konkrete brugssituation. Denne metode giver altså mulighed for større præcision, men kræver dog, at brugeren gennemgår en træningsfase før brug. Endelig kunne man også forestille sig en kontekstafhænig analyse af sekvenser af trommer. I [Gillet and Richard, 2004] benyttes Hidden Markov Models (HMM) til transkription af trommespor. HMM bruges her til at finde typiske sekvenser af trommer. Da storetrommen eksempelvis ofte optræder på et- og tre-slaget i en 4/4-takt, og lilletrommen på to- og fire-slaget, vil en analyse med HMM af hele takter af trommespor formodentligt afspejle dette, og derved understøtte korrekt klassificering. 7.2 Hurtigere processering Vores brugerscenarier tillod os at udskyde klassificeringen til vi i det mindste havde modtaget et helt segment. Hvis vi ønsker endnu hurtigere respons, eksempelvis i forbindelse med brugsscenariet “Beatboxing Hero”, beskrevet i afsnit 2.5, er vi nødt til at kunne klassificere endnu hurtigere. I [Hazan, 2005b] 1 http://billaboop.com/en/boomclap 56 benyttes kun den første frame, fundet ved onset-detection, til klassificering for at holde responstiden nede. Den benyttede frame-størrelse er 11 ms, hvilket potentielt set kan give langt hurtigere respons end vores system, men omvendt kan den begrænsede mængde data til rådighed for præprocesseringen muligvis også være problematisk for klassificeringen. 7.3 Lignende trommelyde Den indledende, forsøgsvise funktion til at finde rigtige trommelyde, som ligner dem, beatboxeren har indspillet, kan forbedres på flere måder. Den nuværende implementation beregner som nævnt det samme sæt af features for både beatbox-lydene og de rigtige trommelyde. Problemet med denne fremgangsmåde kan dog være, at de klangmæssige kendetegn for eksempelvis en human beatboxing-storetromme ikke nødvendigvis er de samme som for en rigtig storetromme. I afsnit 3.5.4 fandt vi, at vores testdatas frekvensspektrum naturligt var begrænset af den menneskelige stemme, hvilket ikke er tilfældet for rigtige trommelyde. En mulig løsning kunne være at vægte de ekstreme frekvensområder i human beatbox-lydene højere i erkendelse af den menneskelige stemmes begrænsninger i forhold til rigtige trommer. Man kunne også forestille sig, indledende at klassificere de rigtige trommelyde, og derpå medtage klassificeringen som en ekstra feature, således at en human beatbox-storetromme oftere ville matche en rigtig storetromme ved brug af nearest-neighbour-algoritmen. I [Hazan, 2005b] benyttes resultatet af præprocesseringen af human beatboxlyde til at parametrisere effektprocessering af de rigtige trommelyde. Eksempelvis benyttes spectral centroid, som vi omtalte i afsnit 3.5.4, til at styre cutoff-frekvensen på lilletrommen. Tanken må således være, at en “mørk” human beatbox-lilletromme gør den rigtige trommelyd tilsvarende mørk. 7.4 Understøttelse af groove Som nævnt i afsnit 2.1 foreslog en af de involverede brugere, Martin Albrekt, indledningsvist at systemet skulle understøtte groovet i beatboxingoptagelsen, således at amplituden samt varigheden af de enkelte anslag medtages, når det rigtige trommespor genereres. En ide til at understøtte dette kunne være at vægte lydstyrken af de rigtige trommelyde med forholdet mellem energien for den optagede human beatbox-lyd og den gennemsnitlige energi for den relevante klasse af human beatbox-trommer. På samme må57 de kunne længden af de rigtige trommelyde varieres afhængigt af forholdet mellem den optagede human beatbox-lyd og gennemsnitslængden for den relevante klasse af trommer. 7.5 Plugin til lydprogram Den nuværende prototype består af et køreklart program, som giver brugeren for, umiddelbart at få et indtryk af systemets funktionalitet. I faktiske brugssituationer vil et generisk plugin, det vil sige en programstump som skal fungere i sammenhæng med et større lydbehandlingsprogram, være mere relevant. Plugin’et kunne for eksempel generere MIDI eller audio som output, som kunne viderebehandles i lydbehandlingsprogrammet. MIDI-data kunne frembringe en trommelyd, og audio-data kan routes ud i effekter, begge dele afhængigt af klassificering. Et plugin ville dermed være mere fleksibelt, og ville kunne tilpasses bedre til brugssituationen. Eksempelvis kunne man som bruger gøre brug af quantization, hvor der rettes op på rytmefornemmelsen ved at justere den enkelte anslag ind efter et skelet, en funktion de fleste programmer til musikkomposition allerede har. 58 Litteratur Juan Pablo Bello. A tutorial on onset detection in music signals. IEEE Transactions on Speech and Audio Processing, 13(5):1035–1047, 2005. David Benyon, Phil Turner, and Susan Turner. Designing Interactive Systems - People, Activities, Contexts, Technologies. Addison-Wesley, 2005. Christopher M. Bishop. Pattern Recognition and Machine Learning (Information Science and Statistics). Springer-Verlag New York, Inc., Secaucus, NJ, USA, 2006. ISBN 0387310738. Olivier Gillet and Gaël Richard. Automatic transcription of drum loops. In IEEE International Conference on Acoustics, Speech, and Signal Processing, 5 2004. Amaury Hazan. BillaBoop: Real-time voice-driven drum generator. In Audio Engineering Society Convention 118, 5 2005a. Amaury Hazan. Performing expressive rhythms with Billaboop voicedriven drum generator. In 8th Int. Conference on Digital Audio Effects (DAFx’05), 2005b. Perfecto Herrera, Alexandre Yeterian, Re Yeterian, and Fabien Gouyon. Automatic classification of drum sounds: A comparison of feature selection and classification techniques. In Proceedings of 2nd International Conference on Music and Artificial Intelligence, pages 69–80. Springer, 2002. Perfecto Herrera, Amaury Dehamel, and Fabien Gouyon. Automatic labeling of unpitched percussion sounds. In Proceedings of the Audio Engineering Society, 114th Convention, 2003. B. Logan. Mel frequency cepstral coefficients for music modeling. In Int. Symposium on Music Information Retrieval, 2000. 59 Geoffroy Peeters. A large set of audio features for sound description (similarity and classification) in the CUIDADO project. Technical report, Ircam, Analysis/Synthesis Team, 2004. John C. Platt, Nello Cristianini, and John Shawe-taylor. Large margin DAGs for multiclass classification. In Advances in Neural Information Processing Systems, pages 547–553. MIT Press, 2000. Raúl Rojas. Neural Networks - A Systematic Introduction. Springer-Verlag, 1996. Sigurdur Sigurdsson, Kaare Brandt Petersen, and Tue Lehn-Schiøler. Mel frequency cepstral coefficients: An evaluation of robustness of mp3 encoded music. In Proceedings of the International Symposium on Music Information Retrieval, 2006. 60 Bilag A Vedlagt cd Den vedlagte cd indeholder det beatboxing-lydmateriale som er blevet benyttet til analysen såvel som kildekoden til Matlab-, Max/MSP- og Javaimplementationerne. Desuden findes også køreklare versioner af prototypen til Mac og Windows. Materialet fra cd’en kan også findes på specialets hjemmeside, http://cs.au.dk/~grav/speciale. A.1 Lydmateriale De benyttede datasæt i form af lydfiler findes i mapperne sound/martin (Martin Albrekt), sound/stoffer (Kristoffer Thorning), sound/session1 og sound/session2 (Mikkel Gravgaard). Alle lydfiler er i WAV-format, mono, 16 bit, 44100 samples/sek. A.2 Kildekode Den indledende analyse er implementeret i Matlab. Kildekoden hertil findes i mappen matlab. Prototypen er implementeret i Max/MSP 5.1 samt Java 1.5. Max-patchen findes i mappen maxmsp. Java-kildekoden findes i mappen java. For at kunne afvikle prototypen i Max/MSP, skal stien til de kompilerede Java-klasser tilføjes til filen max.java.config.txt, som ligger sammen med Max/MSP-programmet. Derudover er Java-klasserne afhængige af Jama-biblioteket til matrice-beregninger. Dette bibliotek findes som JARarkiv i mappen javalib og skal også tilføjes til max.java.config.txt. 61 A.3 Prototype Prototypen findes i en køreklar version til Mac og Windows. Mac-versionen er testet på OS X 10.5 (Leopard). Windows-versionen er testet på Windows XP SP 3 med Java 1.6. Programmerne findes i hhv. prototype/mac og prototype/windows og kan køres direkte fra cd’en. A.4 Videooptagelser Videoklip, som viser en brugssituation med prototypen, kan findes i mappen video. 62 Bilag B Onset-detection Følgende bilag er en rapport fra et tidligere projekt omkring onset-detection i human beatboxing-optagelser. 63 1 Project Report: Onset Detection Mikkel Gravgaard Nielsen - 20043246 June 15, 2010 Contents 1 Introduction 2 2 About Onset Detection 2.1 Definition of onsets . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Audio material . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Choice of parameters . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 3 Time-based onset detection 3.1 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 4 High Frequency Content method 4.1 Short-Time Frequency Transformation . . . . . . . . . . . . . 4.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 7 5 Post-processing and 5.1 Low-pass filtering 5.2 Thresholding . . 5.3 Peak-picking . . 9 9 9 9 Peak-picking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction This project report deals with the work of a studies group under Ole Caprani regarding onset detection algorithms. The domain of the project is the implementation and analysis of algorithms for onset detection in audio signals. More specifically, the audio signals are recordings of so-called human beatboxing, which can be descibed as human imitations of drumbeats using the voice. The article “A Tutorial on Onset Detection in Music Signals”[1] is used as a basis for the project. This article lists different methods for onset detection, and two of these methods are implemented in this project. One method deals solely with the temporal features of the signal. The choice of this method is motivated in the concluding section of [1]: “If the signal is very percussive (e.g., drums), then time-domain methods are usually adequate.” The other method, High Frequency Content, is motivated by its description in [1] as being “successful at emphasizing the percussiveness of the signal”. The different methods of onset detection have various parameters. The argumentation for the choice of parameters is given, and the results of the different methods are compared to a manual detection and evaluated. It seems that distinctive approaches for low-pitched and high-pitched sounds are required, which is what the HFC method does very well. However, the time-based method of onset detection might work better, if the signal was first filtered into seperate band and then processed with different threshold values. The tool used for implementation of the algorithm is mainly the development environment Matlab. The idioms of Matlab encourage processing of entire vectors for each programming statement. This limits its use for real-time processing of audio, but has been useful for rapid prototyping and tweaking of the applied algorithms in the project. The sound material used in the project and the Matlab source code for the implementation can be found on the homepage, http://daimi.au.dk/~grav/onset. 6 Quality measurement 10 6.1 Quality measures . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 7 Conclusion 13 1 2 2 2.1 About Onset Detection Definition of onsets It is of course appropriate to define onsets in order to detect them. In [1], an onset is defined as the moment the amplitude of a note starts to increase (the attack). The concept of transients is also informally described in [1] as “short intervals during which the signal evolves quickly in some nontrivial or relatively unpredictable way”. In the context of this project, a note is a single “mouth beat”, eg. the imitation of a single hi-hat or bass-drum beat. Such percussive sounds tend to have a short attack, so its onset will coincide with the start of the transient. 2.2 Choice of parameters The detection methods can be parameterized in several ways, eg. time and amplitude thresholds, cut-off frequencies etc. The choice of the different parameter values comes from experimenting and doing ad hoc listening tests with different human beats. To finally determine the success of the implementation, the two detection algorithms are used for finding the onsets of the different human beats, with the same parameters being used for all beats. The result of the automated detection will be compared to the result of a manual detection process. Of couse, as with automated fitting of parameters, there is the problem of overfitting, when using the same material for training and testing, and the result would of course be better in general with access to more and seperate testing and training data. 3 Time-based onset detection For the time-based method for finding onsets in sound, the general idea is to look at increments in rectified amplitude or energy (squared amplitude) as seen in [1] eq. 1 and 2, and simply recognize onsets as values above a certain threshold. However, the “beat” of a note in music consists of several small peaks in energy, so a kind of averaging is needed. In [1], subsampling (which can be consideret a crude kind of averaging) is mentioned without detailing the ratio, together with smoothing which consists of cross-correlating with a windowing function. This result in a low-pass filtering, since, if a symmetric window is used, cross-correlation is mathematically the same as convolution, ie. filtering in the time-domain. 3.1 Audio material The audio material being used is recordings by Martin Albrekt. The material has been processed using dynamic range compression in order to accentuate the quiet sounds. 2.3 3 Implementation For the time-based method, the signal was downsampled 4 times. The resulting samplerate of 11025 Hz should allow reasonably high-pitched sounds such as hi-hats to be represented. The simplest low-pass filter is a square of height 1/N , where N is the length of the filter. A better solution is to use a windowing function, eg. hamming, since this will reduce the ripples created by the filter. Naturally, the larger the window, the more averaging is going on, resulting effectively in a lower cut-off frequency of the low-pass filter. No window type or size is mentioned in [1]. A hamming-window was selected, since it is very standard, and a window-size of 150 ms was chosen by experimenting. The time-based method was at first implemented using only averaging. In the listening tests, it seemed that the detected onsets were “late” compared to the conceived onsets. This is illustrated in figure 1. The energy of a note might still be slowly increasing even after the attacktime. This means that the peak of energy might not correlate with what is conceived as the onset. If the derivative of the energy is analyzed, we are effectively considering the change of energy, and a sudden change will have a higher value, better corresponding to the conceived onset. Using the derival of the signal (ie. the difference between samples in the discrete case), the onset detection sounded more accurate. As mentioned in [1] p. 1038, sound is thought to be perceived logarithmically. In the experiments, it did seem easier to choose a good threshold for several different signals when considering the logarithm of the different sound signals. As a side note, it is in practice important to post-process the signal before taking the logarithm, since any 0-valued samples will yield -Inf, resulting in NaN-values when differentiating. Additionally, the logarithm of small positive values yield large negative values. Therefore, a constant of 1 is added to the signal before taking the logarithm in order to avoid NaN-values 4 Time−based detection Original recording Detecion function Thresholding Onsets 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 −0.1 −0.2 0 2000 4000 6000 8000 10000 12000 14000 16000 Figure 1: Delayed onsets using time-based method and loss of precision. 3.2 Figure 2: Spectrogram of an entire human beat Evaluation The use of the logarithmic, differentiated signal gives good results in the listening tests. However, from the listening tests, the time-based method yields a dilemma with avoiding too many onsets in the low notes (ie. bass drums) and still detecting the high notes (ie. hi-hats). If the threshold is set such that the onset of high-picthed notes are detected, a single low note often results in several falsely detected, consecutive onsets. Even though a good threshold may be obtainable for one signal, the same threshold might not work for another signal. 4 High Frequency Content method As mentioned in the previous chapter, considering only the time domain of a signal yields a dilemma between getting correct detection of low-pitched and high-pitched notes. A simple method is suggested in [1] that considers the frequency domain called High Frequenct Content (HFC), which gives greater weight to the higher frequencies. 4.1 Short-Time Frequency Transformation To get spectral information of the signal as a basis for HFC, a Short-Time Frequency Transformation (STFT) is used in [1]. This process time-slices a signal and calculates the frequency spectrum for each slice. The energy of frequency vs. time is often visualized with a spectrogram. The recording ’human4.wav’ is visualized with a spectrogram in figure 2. 4.2 Implementation Choosing a window-size for the time-slices of N samples yields N/2 useful coefficients or frequency bins. If the window-size is increased in order to increase the number of coefficients, timing information is lost. Therefore, 5 6 it is important to choose a window-size that is small enough to distinguish between the different onsets of notes and large enough for the frequency weighing to be useful. As a basis for choosing the window-size and hop-size, the assumption in [1] is that the human ear cannot distinguish between two transients less than 10 ms apart. A window-size of 512 samples, which equals approx. 12 ms was chosen for the project together with an overlap of 8 ms. This should allow for enough timing accuracy in the detected onsets. In [1] eq. 3, the STFT is parametrized by the window-size (N ) and the hop-size (h). Matlab’s function spectrogram uses a parameter, noverlap, which defines the number of samples that are overlapped from one window to the next. This parameter is calculated from the hop-size as simply: noverlap = windowsize − hopsize (1) In [3], the two lowest frequency bins are discarded to “avoid unwanted bias from the DC component” which can occur if the analysis window is shorter than the lowest frequency. In this project, only the first bin was discarded, since a window-size of 12 ms allows for frequencies around 80 Hz, which is well below what the human voice can produce. In [1] eq. 4, the sum of a linear weighing of the frequency bins (ie. bin k getting weight k) is used as detection function for HFC. However [3] goes further and defines in eq. 5.3 the detection function as: M oTr = HF Cr HF Cr ∗ HF Cr−1 Er Figure 3: Bass drum using the throat having little high-frequency energy (2) 1 4.3 Evaluation The HFC method does seem to solve the problem with choosing a good threshold for both high and low frequenced notes. One problem that was found with the implementaion method in [1] was however that so-called “throat” drums, eg. bass drums made with the throat went undetected. The explanation might be that these drum sounds lack the hard attack (high frequenced transient) of sounds made with the lips, which the HFC method favours. Spectrogram of the two types of bass drums are visualized in figure 3 and 4. Motivated by the detection function in [3] and the results of the timebased method, the results regarding “throat” drums were improved by using the differentiated HFC, ie. the distance between each frame of the summed frequency bins. 7 0.9 Normalized Frequency (×π rad/sample) where r is the frame number. In this way, the ratio between each frame of the HFC is considered. In the project, the difference between frames is used, motivated by the results of the time-based method. 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 500 1000 1500 2000 Time Figure 4: Bass drum using the lips having more energy in the higher frequencies 8 5 Post-processing and Peak-picking The process of determinating the onsets is not yet just a matter of finding local maxima of the detection function. [1] argues that noise can still be masking the onsets, and that some peaks are nonevent-related. To solve the noise-issue, smoothing is yet again applied, following a thresholding process to remove certain peaks. 5.1 Thresholding To eliminate nonevent-related peaks, [1] suggests using both a constant and an adaptive threshold. The adaptive thresholding is in a sense yet another low-pass filter, but [1] suggests using a median filter, which prohibits very large peaks from masking small peaks. This feature of the median filter is also exploited in image processing to remove so-called salt-and-pepper noise without blurring the image too much [2]. The median was calculated for a window of 100 ms as suggested in [1]. In [1], several values of constant threshold were tested, however in this project one constant value was chosen for each method. The reasoning is that the performer, the recording equipment and the processing of the drum beats is the same for all beats, so the listening tests should yield a good overall value for this constant threshold parameter. 5.3 Quality measurement 6.1 Peak-picking After post-processing, if the result is adequately smoothed, then the determination of onsets, or peak-picking, is reduced to finding the local maxima of the resulting signal. 9 Quality measures In order to get a quality estimate of the algorithm, the following measures are used: • True Positive: A detected onset that is within tolerance of a real onset. • False Positive: A detected onset that is not within threshold of any real onset. Low-pass filtering The chosen 2nd order low-pass filter is implemented according to [4], table 2.2. The lowpass-filtering following the detection function especially seems to make sense when using differentiation in connection with the detection function, as has been the case for the two methods used, since differentiation amplifies the high frequencies, giving birth to many local maxima. For the non-differentiated, time-based detection function, a cut-off frequency of 4000 Hz seemed to yield the best results in the listening tests. With the differentiated signal, a cut-off frequency of 500 Hz seemed to do the trick. 500 Hz can seem very low, considering the frequency range of instruments, but it is important to remember that the signal processed is far away from the original and has little to do with eg. hi-hats and bass drums at this stage. For the differentiating HFC method, a low-pass frequency of 8000 Hz was used.. 5.2 6 • False Negative: All undetected, real onsets. • True Negative: This factor is not considered, since it is in a sense always infinite. A value for each measure is given by dividing the measure with the number of real onset. As threshold, a distance of 50 ms to both side is used in [1], with the argument “to allow for the inaccuracy of the hand labeling process”. If a more accurate hand-labeling could be achieved, it should give a good idea of the accuracy of the automatic detection. In the case of this project, the sound files to be hand-labeled were limited to 8, all with percussive material. Therefore, the manual detection of onsets is easier than with a broad range of sound material as in [1], so it should be possible to do a more precise hand-labeling. A tool constructed for the purpose of aiding the labeling was used1 . 6.2 Results In table 1, the hit-rates of two detection method using different values of distance tolerance is presented. The differentiating version of both methods was used. At 30 ms the rate of true positives for the time-based method is quite low. As seen in figure 5, the rate increases with the threshold, suggesting that the onsets are simply detected “late”, even when using the differentiated version of the algorithm. Even with a large ratio of true positives at threshold 80 ms, the number of false positives is rather high (0.43). This might have to do with the problem described in section 3.2 that low-pitched notes may result in several falsely detected, consecutive onsets. Also, if the signal is not smooth enough, several small valleys will result in several very close onsets. This problem is evident in figure 1, where the 9th and 13th are actually several consecutive onsets. The problem could be avoided with some kind of “grace” period where no detection is done. 1 manualonset.m and removemanual.m 10 Threshold 30 ms 40 ms 50 ms 60 ms 70 ms 80 ms Method Time-based HFC Time-based HFC Time-based HFC Time-based HFC Time-based HFC Time-based HFC True Positives 0.13 0.69 0.21 0.83 0.38 0.91 0.61 0.92 0.75 0.93 0.83 0.93 False Positives 1.13 0.27 1.04 0.14 0.87 0.06 0.64 0.05 0.50 0.04 0.43 0.04 False Negatives 0.87 0.31 0.79 0.17 0.62 0.09 0.39 0.08 0.25 0.07 0.17 0.07 Onset Detection Accuracy 1 0.9 Table 1: Method Measures True Positives Rate The HFC method performs somewhat better. At thresholds from 50 ms and beyond, the rate is reasonably stable, as seen in figure 5, which points towards correlation with the manual detection. 0.8 0.7 0.6 Time−based HFC 0.5 0.4 0.3 0.2 0.1 0.2 0.3 0.4 0.5 0.6 Distance Threshold 0.7 Figure 5: Onset Detection Accuracy 11 12 0.8 0.9 7 Conclusion References Consideration of the frequency domain seems appropriate, even with fairly homogeneous and narrow-banded material, as used in the project. In that way, the HFC method works well. The time-based method might work better, if the source signal was first split up in a few seperate frequency bands. In this way a different threshold could be selected for each band. Matlab has shown to be a good tool for prototyping the algorithms, when the idioms of processing whole vectors of data are understood and used. Also, a lot of the procedures and algorithms needed, such as creating spectrograms and finding local maxima, are included in Matlab, and their implementation details fairly well documented. [1] Juan Pablo Bello. A tutorial on onset detection in music signals. IEEE Transactions on Speech and Audio Processing, 13(5):1035–1047, 2005. 13 14 [2] Gonzalez and Wood. Digital Image Processing. Prentice Hall, 2008. [3] Paul Masri. Computer Modelling of Sound for Transformation and Synthesis of Musical Signals. PhD thesis, University of Bristol, 1996. [4] Udo Z¨ olzer, editor. DAFX - Digital Audio Effects. Johnny Wiley & Sons, 2002.
© Copyright 2024