Calibración y dBFS
Normas aplicables: IEC 60942IEC 61672Referencias: Bies et al. 2017
Cada nivel que devuelve esta librería es tan fiable como el número que produce esta página: el factor de sensibilidad que convierte unidades digitales en pascales. La página cubre los dos marcos de referencia en los que se puede analizar una grabación: el dB SPL físico, obtenido calibrando la cadena contra un calibrador acústico IEC 60942, y el dBFS digital, niveles relativos al fondo de escala sin pretensión física alguna.
Elegir entre ellos es una pregunta sobre tu cadena de medición, no una preferencia. Trabaja en dB SPL siempre que el resultado se enfrente a un criterio físico (un límite de ruido, un umbral de exposición, cualquier norma de acústica); eso exige una grabación del calibrador hecha con la misma cadena, sin tocar, que la medición. Trabaja en dBFS cuando la señal nunca tuvo un frontal analógico calibrado (normalización de sonoridad, pruebas de códecs e interfaces, análisis de solo archivo) o cuando no existe tono de calibración, en cuyo caso las afirmaciones absolutas de SPL quedan sencillamente fuera de alcance.
El flujo alrededor del factor importa tanto como la fórmula: derívalo antes y vuelve a comprobarlo después de cada sesión, verifica sonómetro y calibrador periódicamente en laboratorio (IEC 61672-3 e IEC 60942; Bies, Hansen y Howard 2017, §3.4) y trata la diferencia pre/post como tu cota de deriva. La sección de campo, laboratorio y deriva de más abajo convierte eso en reglas concretas, y el recorrido Construye un sonómetro empieza exactamente en este paso antes de calcular ningún nivel.
¿Por qué calibrar? La teoría
Sección titulada «¿Por qué calibrar? La teoría»Una grabación digital solo conoce números: una senoide a fondo de escala es ±1,0 tanto si era un susurro como un motor a reacción. Para expresar niveles de presión acústica físicos, la cadena micrófono → preamplificador → ADC debe caracterizarse con un único número, el factor de sensibilidad , que convierte unidades digitales en pascales:
donde es el nivel del calibrador (típicamente 94 dB, es decir,
1 Pa), y es el RMS
del tono de calibración grabado, en unidades digitales.
sensitivity() es exactamente esa ecuación. El factor vale mientras
nada cambie en la cadena: si tocas la ganancia, recalibra.
Calibración física (sonómetro)
Sección titulada «Calibración física (sonómetro)»Para obtener mediciones SPL precisas a partir de una grabación digital, primero debes calcular la sensibilidad de tu cadena de medición usando un tono de referencia (p. ej. 94 dB @ 1 kHz).
flowchart LR
A["Tono del calibrador\n94 dB @ 1 kHz\n(IEC 60942)"] --> B["Grabación\ncalibrator_recording"]
B --> C["sensitivity()"]
C --> D["calibration_factor\n(unidades digitales → Pa)"]
D --> E["octave_filter / leq / laeq / ln_levels"]
F["Grabación de\nmedición"] --> E
E --> G["Niveles en dB SPL\n(re 20 µPa)"]
import numpy as npfrom phonometry import metrology
# 1. Graba la señal de tu calibrador de 94 dB (1 kHz, 1 Pa RMS = 94 dB SPL)fs = 48000# calibrator_recording: tu tono de calibrador de 1 kHz grabado (1 Pa RMS = 94 dB SPL).# Sintetizado aquí para que la guía funcione; en una medición real graba tu calibrador.calibrator_recording = np.sqrt(2) * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)# recording: la captura de micrófono que quieres calibrar, misma cadena de entrada (Pa tras calibrar).# Sintetizada aquí; en una medición real es tu señal grabada.recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
# 2. Calcula el factor de sensibilidadcalibration_factor = metrology.sensitivity(calibrator_recording, target_spl=94.0, fs=fs)
# 3. Aplica la calibración a tus medicionesspl, freq = metrology.octave_filter(recording, fs, calibration_factor=calibration_factor)# ¡Ahora los valores de 'spl' son dB SPL reales!El mismo calibration_factor funciona en toda la librería: octave_filter,
OctaveFilterBank, leq, laeq y ln_levels.
Supuestos del calibrador (IEC 60942)
Sección titulada «Supuestos del calibrador (IEC 60942)»sensitivity asume que la grabación de referencia procede de un
calibrador acústico según IEC 60942 (clases LS, 1 y 2):
- El
target_spl=94.0por defecto corresponde a la salida habitual de 94 dB @ 1 kHz (la norma exige que el nivel principal sea al menos 90 dB re 20 µPa; 94 dB y 114 dB son los valores usuales). - La sensibilidad resultante hereda la tolerancia de clase del calibrador (p. ej. ±0,4 dB para clase 1 entre 160 Hz y 1,25 kHz, IEC 60942 Tabla 1) más el error de estimación RMS de tu grabación.
- IEC 60942 especifica el nivel generado como promedio de 20 s: graba unos segundos de tono estable (excluyendo el ruido de manipulación del principio y el final) para que la estimación RMS converja.
Validación automática de estabilidad
Sección titulada «Validación automática de estabilidad»Si pasas la frecuencia de muestreo (y validate=True, el valor por defecto),
sensitivity(ref, fs=fs) comprueba la grabación igual que la
IEC 60942:2017 comprueba el calibrador (5.3.3): la fluctuación de nivel a
corto plazo, el valor absoluto de la diferencia entre cada uno de los niveles
máximo y mínimo con ponderación temporal F y el nivel medio, no debe superar
el límite de clase 1 de la Tabla 2 para la frecuencia nominal del calibrador
(0,07 dB desde 160 Hz, relajado a 0,10 dB por debajo de 160 Hz y a 0,20 dB por
debajo de 63 Hz, donde la propia ponderación F ondula). Pasa frequency= para
seleccionar la fila correcta en calibradores que no sean de 1 kHz. Un
CalibrationWarning delata micrófonos mal acoplados o ruido de manipulación
antes de que corrompan silenciosamente todos los niveles calibrados. La
grabación debe durar al menos 2 s (1 s para que el integrador F se asiente más
1 s de envolvente estable); con grabaciones más cortas se avisa en lugar de dar
un veredicto poco fiable. Sin fs la comprobación se omite. Sobrescribe el
límite con max_fluctuation_db o desactiva con validate=False.
La comprobación caza justo lo que arruina las calibraciones de campo (un acoplador flojo, viento, ruido de manipulación):

Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import metrology
fs = 48000t = np.arange(int(fs * 6.0)) / fsstable = 0.5 * np.sin(2 * np.pi * 1000 * t)# Modulación de amplitud del 3 % a 2 Hz: ~0,14 dB de oscilación, fuera de límiteunstable = stable * (1 + 0.03 * np.sin(2 * np.pi * 2.0 * t))
plt.figure(figsize=(9, 5))skip = fs # descartamos el ataque del integrador F (~8 tau)for x, label in ((stable, "Tono estable (buen acoplamiento)"), (unstable, "Tono con AM del 3% (acoplamiento flojo)")): env = metrology.time_weighting(x, fs, mode="fast")[skip:] level = 10 * np.log10(np.maximum(env, np.finfo(float).eps)) plt.plot(t[skip:], level - level.mean(), label=label)for lim in (0.07, -0.07): plt.axhline(lim, linestyle="--", color="gray")plt.xlabel("Tiempo [s]")plt.ylabel("Nivel F respecto a la media [dB]")plt.legend()plt.show()Parámetros de sensitivity()
Sección titulada «Parámetros de sensitivity()»| Parámetro | Tipo / forma | Unidades | Rango / defecto | Notas |
|---|---|---|---|---|
ref_signal | array 1D/2D | unidades digitales | no vacío, no silencio | Grabación solo del tono de calibración (recorta el ruido de manipulación) |
target_spl | float | dB re 20 µPa | defecto 94.0 | Nivel nominal del calibrador (calibradores de 114 dB: pasa 114.0) |
ref_pressure | float | Pa | defecto 2e-5 | Presión de referencia p₀; rara vez se cambia |
fs | int, opcional | Hz | > 0; defecto None | Necesario para la validación de estabilidad; omítelo para saltarla |
validate | bool | — | defecto True | Emite CalibrationWarning con grabaciones inestables/cortas |
max_fluctuation_db | float, opcional | dB | defecto None → Tabla 2 clase 1 | Sobrescritura explícita del límite de estabilidad |
frequency | float | Hz | defecto 1000.0 | Frecuencia nominal del calibrador; elige la fila de la Tabla 2 de IEC 60942 |
narrowband | bool | — | defecto False | Estima el tono con un detector coherente (Goertzel) cerca de frequency (requiere fs) en lugar del RMS de banda completa; rechaza el zumbido/ruido de banda ancha que si no infla el RMS y reduce todos los niveles posteriores (~−0,44 dB a 20 dB de SNR). Actívalo para grabaciones de acoplador ruidosas |
Devuelve el factor de sensibilidad (float) para pasarlo como
calibration_factor= a octave_filter, leq, laeq, ln_levels, lc_peak,
sel y las funciones de dosis.
Comprobaciones de campo, verificación de laboratorio y deriva
Sección titulada «Comprobaciones de campo, verificación de laboratorio y deriva»La calibración vive en tres escalas de tiempo:
- En cada sesión: la comprobación de campo. Acopla el calibrador y deriva la sensibilidad antes de cada serie de mediciones, y compruébala de nuevo al terminar. Los métodos normativos hacen obligatoria la segunda comprobación y usan la diferencia antes/después como criterio de validez (uno habitual invalida la serie cuando ambas difieren en más de 0,5 dB). Sea cual sea el umbral, esa diferencia es tu cota de deriva para todo lo capturado entre medias; llévala al presupuesto de incertidumbre en lugar de suponerla cero.
- Periódicamente: verificación de laboratorio. Una comprobación de campo solo compara la cadena con el calibrador; no puede ver un error que calibrador y medidor compartan, y no dice nada de la respuesta lejos de 1 kHz. IEC 61672-3 define los ensayos periódicos del sonómetro (ponderaciones, linealidad de nivel y balística contrastadas con los límites de clase) e IEC 60942 los ensayos correspondientes del propio calibrador; los intervalos de laboratorio típicos son de uno a dos años.
- Entre comprobaciones: la deriva. La sensibilidad del micrófono se mueve con la temperatura, la humedad y el envejecimiento de la cápsula; la electrónica, con la tensión de la batería. Una cadena de clase 1 sana deriva unas centésimas de dB en una sesión, y por eso una diferencia antes/después de medio decibelio señala un daño y no el clima. La mayor “deriva” de todas es un mando de ganancia tocado: el factor S solo vale mientras la cadena permanece exactamente como se calibró.
Una sutileza más sobre clases: las tolerancias se encadenan. Una medición de clase 1 exige un calibrador de clase 1 (o LS) y un sonómetro de clase 1; calibrar una cadena de clase 1 con un calibrador de clase 2 degrada en silencio todos los niveles derivados a exactitud de clase 2, porque la tolerancia de nivel más ancha del calibrador entra directamente en S.
Análisis digital (dBFS)
Sección titulada «Análisis digital (dBFS)»Si trabajas con archivos de audio digital (WAV, FLAC…) y quieres analizar
niveles relativos al fondo de escala en lugar de presión física, usa el
parámetro dbfs=True.
En este modo:
- 0 dBFS corresponde a un nivel numérico de señal de 1,0 (RMS o pico).
calibration_factorno aplica (dBFS es relativo al fondo de escala digital).- Útil para analizar headroom, mastering digital o señales normalizadas.
import numpy as npfrom phonometry import metrology
fs = 48000# recording: la captura de micrófono que quieres calibrar, misma cadena de entrada (Pa tras calibrar).# Sintetizada aquí; en una medición real es tu señal grabada.recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
# Suponiendo que 'recording' está normalizada entre -1.0 y 1.0spl_dbfs, freq = metrology.octave_filter(recording, fs, dbfs=True)# Los resultados serán negativos (p. ej. -20 dBFS)RMS vs niveles de pico
Sección titulada «RMS vs niveles de pico»phonometry admite dos modos de medición, alineados con software profesional como BK:
- RMS (
mode='rms'): nivel energético (estándar). - Pico (
mode='peak'): máximo absoluto alcanzado en el frame (peak-holding).
import numpy as npfrom phonometry import metrology
fs = 48000# recording: la captura de micrófono que quieres calibrar, misma cadena de entrada (Pa tras calibrar).# Sintetizada aquí; en una medición real es tu señal grabada.recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
# Medir niveles de pico para análisis de impactosspl_peak, freq = metrology.octave_filter(recording, fs, mode='peak')Entrada de audio entero
Sección titulada «Entrada de audio entero»Las señales enteras (p. ej. int16 de scipy.io.wavfile.read) se convierten
internamente a float64 antes de cualquier elevación al cuadrado, así que la
calibración y los niveles son idénticos tanto si pasas el array entero crudo
como una conversión a float.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto. La IEC 60942:2017 en lo que condiciona el factor de
sensibilidad: el nivel principal del calibrador que asume target_spl, las
tolerancias de clase de la Tabla 1 citadas arriba en la discusión de
incertidumbre y la comprobación de fluctuación de nivel a corto plazo del
apartado 5.3.3 frente a los límites de clase 1 de la Tabla 2, que
sensitivity(ref, fs=fs) ejecuta sobre la grabación de referencia.
No cubierto. Los ensayos de conformidad del propio calibrador (nivel
generado, frecuencia, distorsión y las correcciones ambientales por presión
estática y temperatura) no están implementados, así que pasa un target_spl ya
corregido cuando el manual del calibrador lo pida. Los ensayos periódicos de la
IEC 61672-3 se citan como práctica de laboratorio, no se ejecutan: aquí nada
verifica un sonómetro ni le asigna una clase. La parte de dBFS de esta página
queda fuera de cualquier norma y no hace ninguna afirmación física.
Véase también
Sección titulada «Véase también»- Construye un sonómetro: el recorrido que empieza en este paso de calibración y termina en un instrumento verificado por clase.
- Niveles: todas las métricas que consumen el
calibration_factorderivado aquí. - Multicanal y rendimiento: una sensibilidad por canal cuando los canales difieren.
- Incertidumbre de medida (GUM y Monte Carlo): propagar la tolerancia del calibrador y la cota de deriva a la incertidumbre de un nivel.
- Referencia de la API:
metrology.calibrationyphonometry.
Respuestas rápidas
Sección titulada «Respuestas rápidas»¿Qué nivel de calibrador debo usar para calibrar mi cadena de medición?
Sección titulada «¿Qué nivel de calibrador debo usar para calibrar mi cadena de medición?»La elección habitual es 94 dB SPL a 1 kHz (1 Pa RMS), que es lo que sensitivity() asume con su target_spl=94.0 por defecto; para un calibrador de 114 dB pasa 114.0. IEC 60942 exige que el nivel principal sea al menos 90 dB re 20 µPa. Graba unos segundos de tono estable, porque la norma especifica el nivel generado como promedio de 20 s.
¿Cuánta deriva entre las comprobaciones de calibración previa y posterior es aceptable?
Sección titulada «¿Cuánta deriva entre las comprobaciones de calibración previa y posterior es aceptable?»Deriva la sensibilidad antes de cada serie de mediciones y compruébala de nuevo al terminar: un criterio habitual invalida la serie cuando ambas difieren en más de 0,5 dB. Una cadena de clase 1 sana deriva unas centésimas de dB en una sesión, así que una diferencia antes/después de medio decibelio señala un daño y no el clima. Sea cual sea el umbral, lleva la diferencia al presupuesto de incertidumbre en lugar de suponerla cero.
¿Puedo calibrar una cadena de clase 1 con un calibrador de clase 2?
Sección titulada «¿Puedo calibrar una cadena de clase 1 con un calibrador de clase 2?»Puedes, pero las tolerancias se encadenan: una medición de clase 1 exige un calibrador de clase 1 (o LS) según IEC 60942 y un sonómetro de clase 1, así que un calibrador de clase 2 degrada en silencio todos los niveles derivados a exactitud de clase 2, porque su tolerancia de nivel más ancha entra directamente en el factor de sensibilidad . Como referencia, la tolerancia de clase 1 es de ±0,4 dB entre 160 Hz y 1,25 kHz (IEC 60942, Tabla 1).
Referencias
Sección titulada «Referencias»- Bies, D. A., Hansen, C. H. y Howard, C. Q. (2017). Engineering noise control (5th ed.). CRC Press. https://doi.org/10.1201/9781351228152Las secciones 3.1.5 y 3.4 (efectos de campo del micrófono y calibración del sonómetro: la práctica de calibración eléctrica y acústica que sigue el flujo de esta página). ISBN 978-1-4987-2405-0.
- International Electrotechnical Commission. (2013). Electroacoustics — Sound level meters — Part 3: Periodic tests (IEC 61672-3:2013). El procedimiento de verificación de laboratorio que sustenta las comprobaciones periódicas recomendadas.
- International Electrotechnical Commission. (2017). Electroacoustics — Sound calibrators (IEC 60942:2017). Los supuestos de nivel y clase del calibrador en sensitivity() (el nivel principal de 94 dB y las tolerancias de clase de la Tabla 1) y la comprobación de estabilidad por fluctuación de nivel a corto plazo de la grabación de referencia (apartado 5.3.3, límites de clase 1 de la Tabla 2 según la frecuencia nominal).