El AVAudioRecorder en el iPhone SDK se puede usar para obtener la potencia máxima y media de un canal, en decibelios. El rango está entre 0db y 160db. ¿Cuál es el cálculo utilizado para convertir esto en una escala entre 0 - 10 o algo similar que se puede utilizar para un medidor de nivel de audio?iPhone SDK: medición AVAudioRecorder: cómo cambiar peakPowerForChannel de decibel en porcentaje?
Respuesta
El rango es de -160 dB a 0 dB. Probablemente desee mostrarlo en un medidor que va desde -90 dB a 0 dB. Mostrarlo como decibelios es en realidad más útil que como un nivel de audio lineal, porque los decibelios son una escala logarítmica, lo que significa que se aproxima más a la intensidad con la que percibimos un sonido.
Dicho esto, se puede usar esto para convertir de decibelios a lineal:
linear = pow (10, decibels/20);
y lo contrario:
decibels = log10 (linear) * 20;
El rango para los decibelios por encima es infinito hasta cero, y para lineal es 0.0 a 1.0. Cuando el valor lineal es 0.0, eso es -inf dB; lineal a 1.0 es 0 dB.
Apple también implementó una clase de conversión de amplitud lineal de dB a MeterTable.cpp y MeterTable.h Búsquelo en el ejemplo de la aplicación SpeakHere.
Usted puede utilizar su función en línea que calcula el valor "sobre la marcha"
inline double DbToAmp(double inDb);
O
crear una instancia MeterTable utilizar tabla de búsqueda calculada de antemano. Esto almacena los valores de conversión en la memoria para que su aplicación pueda reducir la cantidad de cálculos.
float ValueAt(float inDecibels);
NOTA: tabla de búsqueda es probablemente necesario si usted tiene una gran cantidad de otros cálculos pasando al mismo tiempo, o si necesita procesamiento muy rápido.
Enlace de ejemplo de la aplicación SpeakHere -> http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html –
Y la función DbToAmp devuelve: ' pow (10., 0.05 * inDb); ' – CharlesA
También https://github.com/warrenburton/MeterTableOC si no desea la ligera molestia de los archivos C++ en su proyecto –
- 1. Medición de velocidad a través del SDK de iPhone
- 2. SDK de iPhone: AVAudioRecorder no grabará después de llamar [AVPlayer play]
- 3. Iphone SDK: suena el sistema de grabación
- 4. Cómo supervisar NSSystemClockDidChangeNotification en iPhone SDK
- 5. Número aleatorio en iphone sdk?
- 6. en navigationbar en iPhone SDK
- 7. AVAudioRecorder arroja errores
- 8. Cómo configurar uitableviewclick en el iphone sdk
- 9. iPhone sdk, excepto MPMediaItemCollection?
- 10. PDF Manipulación en iPhone SDK
- 11. iPhone - "Open In" en SDK?
- 12. GameKit en iPhone SDK 3.0
- 13. Reproducir sonidos en iPhone SDK?
- 14. SDK de iPhone - ¿Cómo serializar ABRecord?
- 15. Xcode iPhone - Base SDK, diferencia Active SDK?
- 16. ¿Cómo serializo un objeto simple en sdk de iPhone?
- 17. Medición de distancia con la cámara del iPhone
- 18. AvAudioRecorder configuración configuración ayuda
- 19. iPhone SDK NSString A NSDate
- 20. UITextField Autocompletar - SDK de iPhone
- 21. UIImage de CALayer - iPhone SDK
- 22. Transmitir transmisión de video en vivo iPhone SDK de iPhone
- 23. ¿Cómo extraer UIBarButtonItem Icons del iPhone SDK?
- 24. Cambiar el nombre y el peso de la fuente en UILabel (SDK de iPhone)
- 25. Obtener iPhone color iOS Sdk
- 26. Problema con iphone sdk 4.2.1
- 27. iPhone 3.1 SDK Camera Access
- 28. Crear botón circular en Iphone SDK
- 29. create sqlite db programmatically en iphone sdk
- 30. AVAudioRecorder averagePowerForChannel siempre devuelve -120.0
¿Qué es exactamente '20' aquí? –
Al medir la intensidad del sonido en el aire, el valor de referencia es por convención una presión sonora de 20 micropascales (μPa), el valor del libro de texto para el sonido promedio más bajo que puede escuchar un ser humano joven y sano (a una frecuencia de 1000 Hz) https: //www.researchgate.net/post/Is_there_any_relationship_between_dB_decibel_and_dBA_how_to_convert_dB_to_dBA –