Technical Method For Producing 3D Audio Sammanfattning Denna aktivitet har förenat tre företag i Umeå, A2 (del i Orcab AB), Oryx Prototyping AB och Dohi Sweden AB, i en gemensam undersökning av hur man kan använda 3D-ljud inom simulations- och den mobila underhållningsindustrin.
Bakgrund Den initiala tanken väcktes när A2 hade konstruerat ett så kallat Binaural Head (konsthuvud) och funderade hur det praktiskt skulle kunna användas till annat än artistiska och audiofila musikinspelningar. Tillsammans med den teknik som nu finns för att simulera binauralt ljud gjorde att detta borde vara intressant för såväl den mobila underhållnings- som industrisimulatorindustrin, som har det gemensamt att en användare i praktiken spelar ett spel, som i många fall ska vara så realistiskt som möjligt. Oryx Prototyping, som är världsledande inom maskinsimulering samt Dohi Sweden, utvecklare inom bland annat mobilspel, hade båda redan utifrån sin horisont stött på och funderat kring användning av 3D-ljud, men ville undersöka detta vidare i gemensamt syfte. Förutsättningar 3D-ljud brukar definieras som antingen en ljudmiljö där ljud omsluter lyssnaren från alla håll, eller möjligheten att kunna positionsbestämma ett punktljud enbart utifrån två ljudkällor i såväl X- och Y- som Z-led. Båda definitionerna är aktuella för denna aktivitet och således värda att undersöka vidare. Människans nedärvda förmåga att uppleva 3D-ljud kommer genom att jämföra ljudet som det kommer fram till det ena örat, med ljudet som kommer fram till det andra. Denna skillnad bestäms av flera yttre faktorer. De mest signifikanta är: Tidsdifferens den skillnad i tid det tar för ett ljud att nå fram till det ena respektive det andra örat. Ljudstyrkedifferens den skillnad i ljudstyrka som blir när ett ljud når ena örat och till exempel måste resa genom huvudet eller andra hinder för att nå det andra örat. Frekvensdifferens ytterörats form gör att människan upplever ett ljuds frekvensinnehåll olika beroende på hur vi är vända i förhållande till ljudet. Det finns tre sätt att tillverka 3D-ljud: Inspelning Realtidsberäknad dataprocessing Icke realtidsberäknad dataprocessing (även kallat offline ) Inspelning Binaural Head har funnits länge, som en erkänd stereoinspelningsteknik (stereo i detta fall innebär inspelning med enbart två mikrofoner), men har levt en tämligen undanskymd tillvaro. Den främsta orsaken till det, förutom att tekniken varit dyr och svårtillgänglig, är att dess fulla kapacitet bara kan upplevas via
lyssning med hörlurar. Fördelarna med binaural head är att det är den överlägset mest närvarorealistiska stereoinspelningstekniken, då den tar hänsyn till alla människans fysiska egenskaper att ta upp ljud, nämligen ytteröra, hörselgång, huvud och ibland kropp. Därav har tekniken givits namnet konsthuvud, eller dummy head på engelska. Ett konsthuvud är således helt enkelt ett konstgjort huvud med mikrofoner i öronen. Denna metod ger ett naturtroget ljud både i fallet 3D-ljud som omslutande ljudmiljö, och punktljud, men har sin stora nackdel i att det är helt statiskt och således inte på enkelt sätt kan användas i applikationer där miljön, eller användaren, förflyttar sig kontinuerligt. Realtidsberäknad dataprocessing Binauralt ljud handlar om att exakt kontrollera ljudet som når respektive öra. Viktigast är direktljudet från en ljudkälla, som träffar örat först, eftersom det bestämmer den upplevda riktningen till ljudkällan. Därefter kommer efterklangen, då ljudet studsar runt med avtagande energi och slutligen når örat indirekt. Detta ger en känsla av rummets form och beskaffenhet. HRTF (head related transfer function) används för att få ljudet att låta som att det kommer från en given riktning (genom att simulera hur örat och kroppen påverkar inkommande ljud). Förutom direktljudet kan även indirekta studsar filtreras med HRTF, förutsatt att ljudets spridning i rummet har beräknats så att alla riktningar är kända. För att kunna hantera detta finns det metoder för att summera den totala ljudbilden i två eller tre dimensioner, ett sådant är Ambisonics B-format. Ljudets akustiska spridning i rummet kan beskrivas med ett impulssvar. Det är något förenklat ett knäppljud (idealiskt en dirac-puls) vars efterklang spelas in. Även HRTF kan beskrivas med impulssvar. När ett impulssvar appliceras på ett (torrt) ljud som simuleras görs detta genom faltning. Det är en metod där varje sampling multipliceras med impulssvaret och adderas till resultatet. För att det ska bli effektivt gör man i regel beräkningarna med FFT (faltning motsvaras av multiplikation i frekvensdomänen). Denna metod simulerar punktljud i ett virtuellt tredimensionellt rum och kan i högsta grad användas i realtid för rörliga ljudkällor och/eller rörliga användare. Däremot är samplingsprocessen avancerad och kräver för bästa resultat en helt ekofri ljudlab-miljö. Offline dataprocessing Det finns binaurala och 3D-ljudplugin som används i ljudsequencerprogram. Dessa använder ovan beskrivna metod för att kunna placera in ett ljud i en fiktiv 3D-ljudmiljö. Denna metod går att jämställa med realtidsmetoden på alla punkter utom att den just inte kan styras i realtid.
Undersökningen Det vi ville undersöka i denna aktivitet var: 1) Vilka (om någon) metoder finns idag för 3D-ljud i realtidssystem? 2) Vilken metod, inspelad eller processad, ger den lättast positionerbara och mest naturtrogna ljudåtergivningen? 3) Hur kan man som tre företag med olika kompetenser hitta samarbetsmöjligheter och dra nytta av varandra för att nå fram till målet? Dohi Sweden och Oryx Prototyping undersökte vad som idag är gjort på programmeringsområdet och om det kanske finns något system som är färdigt att använda i programmeringsmiljöer. Befintliga system/utvecklingsmiljöer som använder HRTF, samt kort subjektiv kommentar: OpenAL Inte så bra HRTF metod. Svårt att höra skillnad på fram/bak och under/over. Väldigt analytisk metod för binauralt ljud, verkar förlita sig på enkla matematiska ekvationer för att ändra nivåer på ljudet (ingen fasförskjutning eller dylikt). PapaEngine http://papaengine.com Försökte få tillgång till en licens för att kunna testa men fick ej tillgång till koden. Däremot verkar spelet PapaSangre (som är baserat på papaengine) ha ungefär samma problem som OpenAL. Ghost Dynamic Binaural Audio http://www.actionreactionlabs.com/ghost.php Kontaktade utvecklarna om att få tag på koden för utvärdering men fick ej svar. Verkar dåligt underhållet. FMOD http://www.garagegames.com/community/blogs/view/16489 http://www.fmod.org FMOD uppger att det finns en HRTF-baserat upplevelse-läge. Men vid test av verktygen för detta så verkar det vara mer fokus på surround-ljud än binauralt. Enligt utsagor på forum så saknar de fortfarande ett bra system för binauralt ljud. Skall däremot finnas möjlighet att placera ut occluders (objekt) som blockerar ljud, vilket kan öka rumskänslan. CLAM / Blender Game Engine http://lac.linuxaudio.org/2009/cdm/thursday/05_arumi/27.pdf http://clam-project.org CLAM är ett system för att experimentera med ljud. Det finns inget inbyggt stöd för binauralt ljud i CLAM, utan Blender Game Engine använder det för att implementera sin egen variant. Finns några filmer på nätet, men ingen som övertygar.
A2 genomförde ett antal inspelningar, processade ljud samt genomförde ett lyssningstest med en grupp människor i syfte att hitta en metod som var bättre än de andra i termer av positioneringsbarhet samt naturtrogenhet. Inspelningarna skedde på två sätt. Den första utomhus i urban skogsmiljö, där konsthuvudstereo och vanlig stereo spelade in omgivningen. Den andra inspelningen skedde i studiomiljö där ett surroundsystem fick agera kontrollerad ljudmiljö. Där spelades punktljud upp från de fem olika högtalarna och spelades in av såväl konsthuvud, dels binaurala mikrofoner instoppade i öronen på en medarbetare, dels referensinspelning i stereo. Till detta processades originalljuden med binaurala plugin för att uppnå samma effekt. Ett lyssningstest skapades för ändamålet där försöksgruppen utifrån sina hörlurar skulle spela upp de inspelade/processade ljuden och dra dem till den högtalare från vilken de misstänkte att de spelats upp. De data som framkom sammanställdes till ett läsbart resultat. (Då ljudkällan i testet var ett vanligt 5.1-system är det i ordets egentliga bemärkelse inte 3D-ljud, då Y-led (upp/ner) är exkluderat, men i detta fall är det Z-led (fram/bak) som är det mest intressanta.) Resultat HRTF I de korta testerna som utfördes av befintliga utvecklingsmiljöer, fanns inget system som hanterar binauralt ljud riktigt bra. Upplevelsen var att det saknades en känsla för rummet, vilket gjorde det svårt att få riktning genom att bara ändra volymen på de olika kanalerna i ljudet. Det verkar inte göras så mycket med frekvensinnehåll och fasskiftning på ljudet för att öka positioneringen. Lyssningstest I det ena lyssningstestet jämfördes punktljud via fyra olika inspelnings- /mixmetoder: * Binaural Head 1 (Dummy head, with ear canal) * Binaural Head 2 (Jonas head, mics in-ear without ear canal) * Binaural Mix (Logic Binaural Mix Plugin) * Wide Stereo (X/Y 120 angle) Här fick lyssnaren gissa/bestämma varifrån ett ljud eminerade i ett tvådimensionellt rum. Datat visade att bäst allmän riktningsupplevelse gavs av Binaural Mix, följt av Jonas Head, Binaural Head och Stereo.
Om vi koncentrerar oss på de ljud som spelades upp bakom lyssnaren, vilka också är de som bör vara allra svårast att återge på ett riktningsnaturligt sätt, föll resultatet lite annorlunda: Bäst var fortfarande Binaural Mix med 73%, men denna gång följt av Binaural Head och Jonas Head. Stereo var fortfarande "sämst". Det andra lyssningstestet gjordes med en annan grupp människor som fick tre versioner av en ljudmiljö (skogsmiljö) uppspelade för sig. Här var uppgiften att rangordna dem efter parametern "naturlighet", dvs vilken miljö som kändes mest verklig och där man fick störst närvarokänsla. Här testades: * Binaural Head * Wide Stereo * Binaural Mix Binaural Head fick högst betyg av 100% av rösterna, följt av Wide stereo. Binaural Mix fick klart sämst betyg. Diskussion Resultatet är till stora delar inte särskilt överraskande, men vad som var överraskande var att skillnaden i upplevelse inte var lika stor som jag trott. Alla höll sig i ett spann från 69-44%. (Procenttalet är helt enkelt antal rätta svar från testdeltagarna.) För att konkludera detta, säger undersökningen att bäst för punktljud är ljud mixade med Binaural Mix-processen i Logic Pro. Detta är dock den enda metod som inte är påverkad av det omgivande rummet, så vi kan inte veta hur utgången blivit i ett ekofritt rum. Detta är dock inte fallet när det gäller en 3D-ljudmiljö. Här är det absolut bästa att spela in med Binaural Head. Det är inte konstigt att Binaural Mix fick klart sämst betyg, då det är ett verktyg för att placera ett ljud i ett befintligt rum, snarare än att bygga rummet självt. Det bearbetade ljudet hade alldeles för många artefakter för att upplevas naturligt. Följaktligen borde det stå bortom all rimlig tvivel att det mest naturliga resultatet uppnås genom att blanda Binaural Head-inspelade miljöljud med HRTFbearbetade punktljud. Det känns som att testen gav det resultat vi gissade/önskade. Resultatet hade förmodligen blivit än mer övertygande om inspelningen hade skett i ett ekofritt rum. Hur kan binauralt ljud förbättra upplevelsen i en simulator? En simulator återger inte en exakt bild av verkligheten, utan bara en approximation. Därför får man inte samma närvarokänsla och det är ofta lite svårare att uppfatta vad som sker. Positionerat ljud skulle bidra till att förbättra upplevelsen och ge en tydligare bild av omgivningen. Eftersom simulatorn har
begränsningar kan det även vara önskvärt att förstärka återgivningen av den information som faktiskt finns. För detta lämpar sig positionerat ljud utmärkt. När man kör en hjullastare i simulatorn kan exempelvis en tydlig riktning på ett ljud från omgivningen öka närvarokänslan, även om det i verkligheten skulle vara svårt att höra riktningen då hytten är ljudisolerad. I en simulator kan vi tänka oss tre olika metoder för att realisera binauralt ljud: 1. Genom vanliga hörlurar, vilket är det enklaste 2. Högtalare i nackstödet på varje sida nära öronen 3. Vanliga stereohögtalare med cross-talk cancellation Det kan nämnas att dolby surround och liknande tekniker hamnar utanför denna studie eftersom de inte är binaurala (och därför heller aldrig kan ge samma närvarokänsla). Oavsett teknik måste man känna till huvudets orientering för att kunna generera rätt ljud. För att cross-talk cancellation ska fungera behöver man dessutom känna till huvudets position (så att de exakta avstånden mellan högtalare och öron kan beräknas). Fortsättning A2 Detta är ett stort område och denna aktivitet enbart en liten skrapning på ytan. Vi har sammanställt ett antal punkter vilka skulle vara av värde för en fortsatt undersökning. * Undersöka metoder för binaural uppspelning med högtalare. * Genomföra ändamålsenliga live-test i en demonstrator, simulator och/eller spel. * Undersöka användning av head-tracking-system för ljud. Oryx Hur ska vi då utöka vår befintliga simulator med binauralt ljud? Det ljud vi har i dagsläget är pinsamt dåligt. Det enda som är bra är att vi faktiskt använder OpenAL för syntetiseringen, vilket möjliggör ganska enkel integration. Ett skiss på upplägg skulle kunna se ut så här: Steg 1 Uppgradera till senaste versionen av OpenAL Soft, som har stöd för HRTF (från och med version 1.14). Kör med hörlurar och Occuls Rift för att spåra huvudrörelser.
Steg 2 Välj ett lämpligt scenario och se över hur ljudkällor etc är uppsatta. Eftersom kraven varit väldigt lågt ställda tidigare krävs förmodligen en del pillande för att få det riktigt bra. Steg 3 Utvärdera alternativa lösningar för att spåra huvudrörelser så att vi slipper HMD. Steg 4 När ljudet är bra i hörlurar kan vi testa och utvärdera olika högtalarlösningar. Dohi Sweden Projektet har varit väldigt lärorikt för oss, och vi har haft möjlighet att lära känna framtida samarbetspartners på ett bra sätt. Vi har lärt oss hur effektfullt det kan vara att använda sig av binauralt ljud för att förhöja spelupplevelsen och närvarokänslan. Däremot har det varit svårt att, utan visuellt stöd, kunna generera ljud som användaren upplever komma från en viss position. Mycket av dessa problem är implementations- och hårdvaruberoende. Vi har till exempel upptäckt att stödet för binauralt ljud på iphone är begränsat, där stödet för samma implementation fungerar mycket bättre på en dator. I slutändan kommer vi att vilja använda binauralt ljud i framtiden, men då tillsammans med visuella intryck för att förstärka upplevelsen. Vi kommer också vilja titta på möjligheter till egna eller externa programmeringslösningar som skulle kunna ha mer funktionalitet än t.ex. OpenAL, som är standard i flera system (därav iphone och OS X). Vi ser ett behov av ett fortsatt arbete tillsammans med A2 och Oryx för att ta detta vidare till nästa nivå, och på samma gång dela på bördan att uppfinna hjulet själva.
Bilaga 1 (Bilder) Skärmdump Lyssningstest, sida 1 Skärmdump, Lyssningstest, sida 2
Konsthuvudet Samuel i skogen Samuel i studion
Zoom H4n som stereomikrofon