2010-03-30 12 views
5

Estoy tratando de hacer un medidor de volumen simple para el iPhone. Quiero que el volumen se muestre en dB. Cuando utilizo this turorial, solo obtengo mediciones de hasta 78 dB. He leído que eso se debe a que el espectro dBFS para grabaciones de audio de 16 bits es de solo 96 dB.Cómo obtener una medición de volumen de la grabación de iPhone en dB, con un límite de al menos 120dB

He intentado modificar este pedazo de código en la función init:

dataFormat.mSampleRate = 44100.0f; 
dataFormat.mFormatID = kAudioFormatLinearPCM; 
dataFormat.mFramesPerPacket = 1; 
dataFormat.mChannelsPerFrame = 1; 
dataFormat.mBytesPerFrame = 2; 
dataFormat.mBytesPerPacket = 2; 
dataFormat.mBitsPerChannel = 16; 
dataFormat.mReserved = 0; 

he cambiado el valor de mBitsPerChannel, con la esperanza de aumentar el valor del bit de la grabación.

dataFormat.mBitsPerChannel = 32; 

Con esa variable se establece en 32, la función "mAveragePower" devuelve sólo 0.

Así que, ¿Cómo puedo medir más decibelios? Todo mi código es prácticamente el mismo que en el tutorial que publiqué anteriormente.

Gracias de antemano, Thomas

Respuesta

5

16 bits de audio sólo tiene un rango dinámico de 96 dB, pero sospecho que se puede estar confundido entre dB, que es una medida relativa y dB SPL, que es medición absoluta de nivel de presión acústica. Para medir dB SPL, necesitará calibrar el micrófono y el hardware de audio con algún tipo de referencia. Una vez que haya calibrado su entrada, puede ser que su 96 dB de rango dinámico se traduzca a un rango absoluto de, por ejemplo, 44 ​​dB SPL a 140 dB SPL.

Véase también mi respuesta a una pregunta similar anterior en SO: How can I calculate audio dB level?

Nota: definición de dB SPL es el nivel de presión de sonido en relación con 20 microPa (rms).

+0

Ok, gracias por su respuesta (rápida). Si calibro las medidas a mi micrófono iPhone, ¿las mediciones en otros iPhones también serán correctas? No me importa si está a un par de decibelios, solo quiero dar una indicación del volumen de los sonidos recogidos por el micrófono. – Cyber

+0

Supongo que obtendrá una variación de dB entre los iPhones que son del mismo modelo (por ejemplo, 3G) pero puede haber más variación entre los diferentes modelos. Tenga en cuenta también que la respuesta de frecuencia probablemente no sea plana, por lo que sus medidas serán aproximadas. Otro punto a tener en cuenta es que normalmente usa un filtro de ponderación cuando mide dB SPL (p. Ej. Ponderación A). Ah, y una cosa más: puede haber un circuito AGC en algunos o todos los modelos de iPhone, lo que puede confundir sus mediciones a menos que pueda desactivarlo. –

Cuestiones relacionadas