March 23, 2003
Jag behöver i ett projekt i skolan ta in ljud från mic-ingången på en dator, få ett värde på intensiteten och eventuellt frekvensen och sen kunna använda den i realtid för att visa grafik.
Först och främst vill jag alltså variera en gråskala efter hur hög ljudnivån är i ett rum.
Undrar om någon har en klass eller vet någon sida där man kan få hjälp ang. detta.
De språk jag "behärskar" är:
Visual basic
Java
Python
February 1, 2003
Den information du får är i någon menings ljudintensitet/tryckskillnad per tidsenhet. Där tidsenheten bestämms av ljudkortets samplingsfrekvens. t.ex. om du spelar in med 44.1kHz samplingsfrekvens så får du en ljudmätning var 22:a mikrosekund. Informationen du får är samplad med ett djup av 8, 16 eller 24 bitar, dvs från naturens/verkighetens kontinuerliga vågform så plockar du ett värde var 22:a mikrosekund, och du har en upplösning på 256, 65536 eller 4294967296 diskreta steg.
Det dessa s.k. samplar talar om är vad tryckskillnaden är vid den tidpunkten. För att ta reda på den genomsnittliga ljudintensiteten så kan du bland annat (och på det enklaste sättet) göra ett medelvärde över ett visst antal samples och säga att detta är "ljudnivån" för tillfället.
För att ta reda på frekvensen så krävs lite mer. Om du kommer ihåg vad jag skrev så är dina mätpunkter en tryckskillnad vid en viss tid. Om du är intresserad av vilka frekvenser som förekommer så måste man göra något listigt, i detta fallet så duger fourier-transform och eftersom vi har diskreta vågformer så är det en diskret fourier transform du ska använda, det finns en väldigt väl genomtänkt metod för att räkna ut detta, och den kallas FFT, fast fourier transform. Detta är inget du bör implementera själv då man måste tänka på en del saker (t.ex. att sample-antalet måste vara en 2-potens m.m.)
Det du dock ska tänka på är alias-effekt eller vikning som uppstår då sample-frekvensen är MINDRE än 2 gånger den högsta tänkta frekvensen som ska observeras (enligt nyquist-kriteriet)
Så där ... lite att börjar med, jag tänker inte posta någon kod, du kan göra detta i valfritt språk så fort du förstått principen bakom det hela.
February 1, 2003
ok, så lite mer information, för Java blir det:
http://java.sun.com/docs/books.....index.html
http://java.sun.com/javase/6/d.....mmary.html
http://www.jsresources.org/faq.....neral.html
http://java.sun.com/products/j.....dia/sound/
1 Guest(s)