Calibración y dBFS
Normas aplicables: IEC 60942AES17IEC 61672Referencias: Bies et al. 2017
Cada nivel que devuelve esta biblioteca 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 front-end analógico calibrado (normalización de sonoridad, pruebas de códecs e interfaces, análisis solo a partir de archivos) 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 sinusoide 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.
Calibrar una grabación de principio a fin
Sección titulada «Calibrar una grabación de principio a fin»Los tres pasos de abajo son todo el flujo de trabajo de SPL físico: una toma del
calibrador, una llamada a sensitivity() y el factor entregado a una función de
nivel. Las dos grabaciones tienen que venir de la misma cadena sin tocar nada
entre medias. El mismo factor funciona en toda la biblioteca: octave_filter y
OctaveFilterBank lo reciben dentro de LevelCalibration(factor=...), y leq,
laeq y ln_levels como calibration_factor=.
import numpy as npfrom phonometry import filters, 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.# Cinco segundos, como pide el procedimiento de acoplamiento de más abajo.calibrator_recording = np.sqrt(2) * np.sin(2 * np.pi * 1000 * np.arange(5 * 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 = filters.octave_filter( recording, fs, calibration=filters.LevelCalibration(factor=calibration_factor))# spl está ahora en dB SPL re 20 µPaprint(f"S = {calibration_factor:.3f} Pa por unidad digital") # 1.002print(f"banda de 1 kHz: {spl[freq.index(1000.0)]:.1f} dB SPL") # 77.0Merece la pena leer los dos números en lugar de saltárselos. La toma sintética del calibrador tiene un valor eficaz de exactamente 1,0 unidades digitales, así que Pa por unidad digital: una unidad digital es un pascal, que es el aspecto de una cadena cuyo fondo de escala queda justo por encima del nivel del calibrador. El registro de medición tiene amplitud 0,2, luego un valor eficaz de 0,141 unidades digitales, luego 0,142 Pa, luego dB SPL, que es la banda de 1 kHz que imprime el fragmento.
De ahí sale la regla de cordura para toda sesión posterior. es la escala de
pascales por unidad de la cadena, así que , el nivel del
calibrador menos el nivel eficaz en dBFS de la toma del calibrador, es el nivel
de presión acústica que llevaría al convertidor a un valor eficaz digital de 1,0.
Si ese número no queda a unos pocos decibelios del nivel más alto para el que se
preparó la cadena, algo va mal en la toma: una grabación recortada o a media
escala, un target_spl dejado en 94,0 para un calibrador de 114 dB, o un cambio
de ganancia entre las dos grabaciones. Un factor equivocado en exactamente 20 dB
es el desenlace habitual del segundo error, y ningún paso posterior lo va a
delatar.
Acoplar el calibrador
Sección titulada «Acoplar el calibrador»El fragmento son tres líneas; el paso que esconde es el que sale mal. El nivel especificado de un calibrador acústico es el nivel en el diafragma del micrófono insertado (IEC 60942:2017, 5.3.1.2), así que el montaje mecánico es parte de la medición y no un preliminar. Seis pasos:
- Fija la ganancia para el nivel más alto que esperes, y bloquéala. solo vale mientras la cadena siga exactamente como se calibró, y un mando de ganancia movido después de la comprobación desplaza todos los niveles en una cantidad que nada aguas abajo puede detectar.
- Desactiva todos los procesos automáticos de la interfaz (control automático de ganancia, limitación, supresión de ruido, realce de «voz») y graba a 24 bits. Cualquiera de ellos vuelve no lineal la cadena, y la toma del calibrador es la única señal en la que eso resulta invisible, porque es un único tono estable.
- Quita la pantalla antiviento y monta el adaptador que viene con el calibrador. Un adaptador es parte integrante del calibrador acústico (5.1.1), y allí donde el manual da los datos de diseño del adaptador da también la distancia de inserción y el diámetro mínimo de micrófono con el que se produce el sellado (6.3 u). Comprueba que tu modelo de micrófono y su configuración, con o sin rejilla protectora, están en la lista del manual (6.3 a): el nivel especificado vale para los modelos y configuraciones que allí se declaren (5.3.1.3), y el manual indica cuánto se mueve el nivel con el volumen de carga efectivo del micrófono insertado (6.3 k), el volumen de aire delimitado por el plano de referencia, el diafragma y la pared de la cápsula (3.13).
- Inserta la cápsula a fondo hasta el plano de referencia, el plano de contacto entre micrófono y calibrador (3.12), sujeta el conjunto quieto y deja que se estabilice. El manual indica dos tiempos de estabilización: el propio del calibrador, que no puede pasar de 30 s (5.1.10), y el que necesita el conjunto micrófono más calibrador una vez acoplados (6.3 e).
- Haz la comprobación lejos de la fuente en marcha. La cavidad no es un
aislante acústico. IEC 60942 lo cuantifica para sus propios ensayos: con el
micrófono acoplado y el calibrador apagado, el nivel que lee el micrófono
tiene que quedar al menos 30 dB por debajo del nivel que se está midiendo para
los ensayos periódicos (B.4.2), y 40 dB por debajo para la evaluación de
modelo (A.5.3). Para un calibrador de 94 dB, eso es un fondo por debajo de
64 dB en la cápsula, un número que se puede grabar y comprobar en diez
segundos, y el que decide si
narrowband=Truees opcional (ver la figura de más abajo). - Graba de 5 a 10 s de tono ya estabilizado, recorta el ruido de
manipulación de los dos extremos y pasa el resto a
sensitivity(ref, fs=fs). La norma mide el nivel generado como un promedio de 20 s a 25 s (A.5.5.1) y la fluctuación a corto plazo a lo largo de 60 s muestreada al menos 30 veces (5.3.3); unos pocos segundos ya estabilizados bastan para que el valor eficaz converja, y la comprobación de estabilidad de más abajo es la que dice si el tono estaba de verdad estabilizado.
Campo de presión en la cavidad, campo libre en la medición. El acoplador excita el diafragma con una excitación de presión: la cavidad es mucho menor que una longitud de onda, así que la presión acústica es uniforme en ella y no hay difracción alrededor de la cápsula. El micrófono que estás calibrando está normalmente caracterizado para campo libre, donde su propio cuerpo y la rejilla elevan la respuesta en alta frecuencia. Las dos caracterizaciones difieren en décimas de decibelio por debajo de unos 2 kHz y en varios decibelios cerca de 10 kHz, que es por lo que IEC 60942 confina la frecuencia principal de un calibrador acústico al margen de 160 Hz a 1250 Hz (5.4.1.1): ahí las sensibilidades de presión y de campo libre de una cápsula de medición coinciden lo bastante como para no aplicar ninguna corrección. También significa que es un anclaje a una sola frecuencia. La forma de la respuesta de la cadena lejos de la frecuencia del calibrador sale de los datos de campo libre del propio micrófono, no de esta comprobación: las tres sensibilidades y dónde se aplica cada una están en Micrófonos. Vuelve a poner la pantalla antiviento antes de medir, y recuerda que tiene su propia pérdida por inserción de unas décimas de decibelio en alta frecuencia, que la calibración no ha visto.
Supuestos del calibrador (IEC 60942)
Sección titulada «Supuestos del calibrador (IEC 60942)»sensitivity supone 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. El apartado 5.3.1.3 exige que el nivel principal sea al menos 90 dB re 20 µPa cuando el calibrador se aplica a los modelos y configuraciones de micrófono que especifica su manual de instrucciones; 94 dB y 114 dB son los valores usuales, y la frecuencia principal tiene que caer entre 160 Hz y 1,25 kHz (5.4.1.1). - La sensibilidad resultante hereda la tolerancia de nivel propia del calibrador, y ese número cuesta un paso conseguirlo. IEC 60942:2017 no imprime a propósito límites de tolerancia: la Tabla 2 da el límite de aceptación del nivel generado (0,25 dB para un calibrador de clase 1 de 160 Hz a 1,25 kHz, 0,40 dB para clase 2, 0,10 dB para clase LS) y la Tabla A.1, la incertidumbre máxima permitida de la medida de laboratorio que lo demuestra (0,15 dB para clase 1 en ese mismo margen); el Anexo D, Figura D.1, sitúa el límite de tolerancia en su suma. ±0,4 dB es, por tanto, la cifra de clase 1 que hay que llevarse a un balance de incertidumbre a 1 kHz, y es una tolerancia, no un error medido. Súmale encima el error de estimación del valor eficaz de tu propia grabación.
- IEC 60942 mide el nivel generado como un promedio de 20 s a 25 s (A.5.5.1): graba unos segundos de tono estable (excluyendo el ruido de manipulación del principio y el final) para que la estimación RMS converja.
- Correcciones ambientales, y qué calibradores las necesitan. El nivel generado se especifica en las condiciones de referencia del apartado 4: 23 °C, 101,325 kPa y 50 % de humedad relativa. La Tabla 2 sigue valiendo sin ninguna corrección en una franja alrededor de ellas (de 97 kPa a 105 kPa, de 20 °C a 26 °C, del 40 % al 65 % de HR, apartado 5.3.2), y fuera de esa franja un calibrador tiene que quedarse dentro de los límites más anchos de las Tablas 5 y 6 en todo su margen de funcionamiento, que para clase 1 es de 65 kPa a 108 kPa, de −10 °C a +50 °C y del 25 % al 90 % de HR (5.5). Solo los pistófonos que necesitan una corrección de presión estática para cumplir su clase llevan la letra M en su designación (clase LS/M, clase 1/M, 5.1.5 y Tabla 1); se suministran con un barómetro, o su manual especifica uno (5.1.8), y el manual indica la corrección y su incertidumbre (6.3 i, 6.3 m). Un pistófono genera un desplazamiento de volumen fijo, así que su salida sigue a la presión estática ambiente: del orden de una décima de decibelio con la meteorología corriente, y en torno a −1 dB a 1000 m sobre el nivel del mar. Cualquier otro calibrador, por 5.1.7, tiene que cumplir su clase sin ninguna corrección ambiental. Cuando la corrección sí haga falta, aplícala al nivel objetivo y no a los resultados:
p_correction_db = 0.0 # del manual del calibrador y la lectura del barómetrocal_corrected = metrology.sensitivity( calibrator_recording, target_spl=94.0 + p_correction_db, fs=fs)La corrección entra directamente en , así que mueve todos los niveles de la sesión en la misma cantidad.
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.
La Tabla 2 da tres filas disjuntas, y no deben leerse como rangos solapados:
| Frecuencia nominal | Límite de clase 1 | |
|---|---|---|
| 160 Hz a 16 kHz | 0,07 dB | la fila estricta, y con la que se juzga un calibrador de 1 kHz |
| por encima de 63 Hz y por debajo de 160 Hz | 0,10 dB | |
| 31,5 Hz a 63 Hz | 0,20 dB | donde la propia ponderación temporal F ondula sobre el tono |
La Tabla 2 abarca de 31,5 Hz a 16 kHz y no especifica nada fuera de ese rango,
así que una frequency por debajo de 31,5 Hz o por encima de 16 kHz recae en
los 0,07 dB estrictos y no en las filas relajadas de baja frecuencia. 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):


La comprobación es una decisión, y la figura enseña lo lejos que queda de ser apurada. El tono estable oscila entre +0,003 y −0,004 dB alrededor de su media, la vigésima parte del límite de clase 1 de 0,07 dB de la Tabla 2. Un 3 % de modulación de amplitud (un acoplador que no acaba de asentar, una mano sobre el micrófono) lo lleva a +0,142 y −0,143 dB, el doble del límite, mientras suena igual y da el mismo nivel medio. La media es lo que usa la sensibilidad; solo la fluctuación dice si se puede confiar en ella.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import filters
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 = filters.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()Ruido de banda ancha en la toma, y lo que cuesta
Sección titulada «Ruido de banda ancha en la toma, y lo que cuesta»El valor eficaz de la grabación del calibrador es el denominador de , así que
todo lo que haya en la toma que no sea el tono lo infla y encoge el factor, y
todos los niveles derivados de ese factor se leen entonces de menos, en
, con SNR la relación de potencias entre el
tono y el ruido de la grabación. Pasar narrowband=True sustituye el valor
eficaz de banda completa por un detector coherente de Goertzel enganchado al
tono, que rechaza la parte incoherente:
Error de sensibilidad frente a la relación señal-ruido de la toma del
calibrador, medido llamando a sensitivity() sobre un tono de 1 kHz más ruido de
banda ancha. El estimador del valor eficaz de banda completa cae exactamente
sobre la forma cerrada; cuesta 0,41 dB con 10 dB de SNR, 0,05 dB con 20 dB y se
gasta entero el límite de aceptación de clase 1 de 0,25 dB por debajo de 12,3 dB
de SNR. El estimador de Goertzel se queda dentro de 0,02 dB en todo el margen. El
margen de fondo de 30 dB que pide el procedimiento de acoplamiento (B.4.2) deja
por tanto al estimador del valor eficaz simple en 0,004 dB, que es por lo que
narrowband=False es un valor por defecto sensato y narrowband=True es el
remedio para una toma que no se pudo hacer lo bastante silenciosa.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as np
# metrology viene del primer fragmento de esta página.fs = 48000t = np.arange(int(fs * 6.0)) / fstone = np.sqrt(2) * np.sin(2 * np.pi * 1000 * t) # 1 Pa RMS sobre 1,0 digitals_true = 2e-5 * 10 ** (94 / 20)noise = np.random.default_rng(7).standard_normal(t.size)noise /= np.sqrt(np.mean(noise ** 2))
snr_db = np.arange(0.0, 40.5, 1.0)rms, goertzel = [], []for snr in snr_db: x = tone + noise * 10 ** (-snr / 20) # validate=False: las tomas ruidosas suspenden a propósito la comprobación # de estabilidad, que es una segunda razón independiente para no aceptarlas. rms.append( 20 * np.log10(metrology.sensitivity(x, fs=fs, validate=False) / s_true)) goertzel.append(20 * np.log10( metrology.sensitivity(x, fs=fs, narrowband=True, validate=False) / s_true))
plt.figure(figsize=(9, 5))plt.axhspan(-0.25, 0.25, alpha=0.15)plt.plot(snr_db, rms, label="narrowband=False")plt.plot(snr_db, -10 * np.log10(1 + 10 ** (-snr_db / 10)), "k:", label="forma cerrada")plt.plot(snr_db, goertzel, label="narrowband=True")plt.xlabel("Relación señal-ruido en el acoplador [dB]")plt.ylabel("Error de sensibilidad [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 ; 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,41 dB a 10 dB de SNR, −0,04 dB a 20 dB; ver la figura de arriba). Actívalo para grabaciones de acoplador ruidosas |
Devuelve el factor de sensibilidad (float) para pasarlo como
calibration_factor= a leq, laeq, ln_levels, lc_peak, sel y las
funciones de dosis, y como calibration=LevelCalibration(factor=...) a
octave_filter.
Lo que el factor dice además: el margen medible
Sección titulada «Lo que el factor dice además: el margen medible»no es solo una conversión, es la escala de la cadena, y de ella salen directamente los dos extremos del margen medible.
El techo. Una señal cuyo valor eficaz digital llega a 1,0 corresponde a dB, que es también el nivel del calibrador menos el nivel en dBFS de la toma del calibrador. Una sinusoide a fondo de escala tiene un valor eficaz de , así que se lee 3,01 dB por debajo: . Ese es el nivel sinusoidal más alto que el convertidor puede llevar sin recortar; contrástalo con el nivel de presión acústica de sobrecarga del propio micrófono, que es una propiedad de la cápsula y del preamplificador y no del convertidor (ver Micrófonos), y mantén el menor de los dos al menos 10 dB por encima del suceso más fuerte que esperes. Un suceso recortado no se anuncia: se lee de menos, y de forma verosímil.
El suelo. Graba 30 s con la cápsula en un recinto silencioso (la cavidad cerrada del calibrador con la excitación apagada sirve muy bien, y es la misma toma que ya pide el paso de acoplamiento) y pásala por el mismo factor. Ese nivel es el ruido propio de la cadena: micrófono más preamplificador más convertidor. Un nivel medido que quede a menos de 3 dB de él no es una medida de la fuente; uno a menos de 10 dB necesita la corrección por ruido de fondo que aplican las guías de emisión y de ruido ambiental.
# Sigue del primer fragmento: calibration_factor y fs ya están definidos.ceiling = 20 * np.log10(calibration_factor / (np.sqrt(2) * 2e-5))quiet = 1e-4 * np.random.default_rng(0).standard_normal(30 * fs) # tu toma de 30 sfloor = 20 * np.log10(np.sqrt(np.mean((quiet * calibration_factor) ** 2)) / 2e-5)print(f"sinusoide a fondo de escala {ceiling:.1f} dB SPL, suelo de ruido {floor:.1f} dB SPL")Sin calibrador: a partir de la sensibilidad nominal
Sección titulada «Sin calibrador: a partir de la sensibilidad nominal»Un calibrador es la única vía hacia un nivel normativo, pero no es la única vía hacia un número. Si la hoja de características del micrófono declara una sensibilidad y la de la interfaz una tensión de entrada de fondo de escala, la ganancia de la cadena es el producto de tres números que se pueden leer, y se puede montar aritméticamente:
donde es la sensibilidad de campo libre en voltios por pascal nominal de la cápsula a la frecuencia de referencia, la ganancia lineal de tensión del preamplificador más la interfaz, y la amplitud de tensión de entrada que lleva al convertidor a . Ojo con la trampa de esta última: la hoja de características de una interfaz suele declarar su nivel máximo de entrada como el valor eficaz de la sinusoide que justo alcanza el fondo de escala, así que veces esa cifra.
Desarrollado para una cápsula de media pulgada de 12,5 mV/Pa, +20 dB de ganancia y una entrada cuyo nivel máximo es 1,0 V eficaces: V/Pa, , V, así que Pa por unidad digital. Un pascal (94 dB) cae entonces en unidades digitales eficaces, es decir, −21,1 dBFS, y el techo deducido arriba es dB SPL. Los dos números se pueden contrastar con la cadena en unos segundos, que es de lo que va esta vía.
Cuidado con la palabra sensibilidad: significa cosas recíprocas en las dos
páginas. Aquí son pascales por unidad digital; en la página de
Micrófonos, son
voltios por pascal, expuesta como sensitivity_mv_per_pa, y las
caracterizaciones de campo libre, de presión y de incidencia aleatoria son tres
números distintos para la misma cápsula: usa la de campo libre a la frecuencia de
referencia.
Lo que cuesta esta vía: hereda la desviación individual de la cápsula respecto de su valor nominal (unas décimas de decibelio en un micrófono de laboratorio con carta de calibración individual, pero una cifra nominal en una cápsula barata puede equivocarse en un par de decibelios), la repetibilidad del ajuste de ganancia y la tolerancia de fondo de escala de la propia interfaz. Cuenta en el balance con en torno a un decibelio, frente a las pocas décimas de una comprobación con calibrador, y ten en cuenta lo que no puede hacer en absoluto: no puede detectar una cápsula dañada, un preamplificador con fugas ni un cambio de ganancia, porque nada en ella está medido. Úsala para trabajo cercano al dBFS, para dar un repaso de cordura al resultado de un calibrador, y nunca para un nivel que se enfrente a un límite. Y una vez leídos los números, la ganancia tiene que quedarse exactamente donde estaba.
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 obtén 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 balance 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 solo vale mientras la cadena permanece exactamente como se calibró.
Qué tiene que registrar una calibración para poder declararse
Sección titulada «Qué tiene que registrar una calibración para poder declararse»La pareja antes/después y la tolerancia de clase del calibrador son las dos entradas de Tipo B que consume el balance de incertidumbre de un nivel. Una comprobación que no se escribió no se puede propagar, así que anota, en el momento de la comprobación:
- marca, modelo, número de serie, designación de clase (incluida la letra M si la lleva) y fecha de la última verificación de laboratorio del calibrador;
- modelo y número de serie del micrófono y del preamplificador, y la configuración de micrófono usada (con o sin rejilla protectora);
- el adaptador montado, si lo hubo;
- la sensibilidad obtenida antes de la serie, la obtenida al terminarla y su diferencia, que es la cota de deriva;
- frecuencia de muestreo, profundidad de bits y el ajuste de ganancia, tal cual quedó bloqueado;
- temperatura del aire, presión estática y humedad relativa, más cualquier
corrección de presión estática aplicada a
target_sply de dónde salió; - el nivel de fondo que leyó la cápsula acoplada con el calibrador apagado;
- el factor resultante y la tolerancia que se le supone.
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 .
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).
- El factor de calibración no se aplica (dBFS es relativo al fondo de escala digital).
- Útil para analizar el margen hasta fondo de escala, el mastering digital o las señales normalizadas.
import numpy as npfrom phonometry import filters
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 = filters.octave_filter( recording, fs, calibration=filters.LevelCalibration(dbfs=True))# Los resultados serán negativos (p. ej. -20 dBFS)El convenio difiere del de AES17 en 3,01 dB
Sección titulada «El convenio difiere del de AES17 en 3,01 dB»Este es el convenio referido al valor eficaz: una señal cuyo valor eficaz es
1,0 se lee como 0 dBFS, así que una sinusoide a fondo de escala, cuyo valor
eficaz es 0,707, se lee como −3,01 dBFS en mode='rms'. AES17, y los medidores,
DAW y herramientas de sonoridad que lo siguen, normalizan en cambio a 0 dBFS la
sinusoide de fondo de escala, así que el mismo archivo medido por dos
herramientas difiere en exactamente 3,01 dB sin que ninguna de las dos se
equivoque. Fíjate en que mode='peak' con dbfs=True lee 0 dBFS para esa misma
sinusoide, porque su pico es 1,0: la elección entre valor eficaz y pico de más
abajo y la cuestión del convenio son la misma pregunta hecha dos veces. Cualquier
número en dBFS que se cite fuera de la biblioteca debería llevar su convenio
consigo.
Qué sobrevive a la pérdida de una referencia física
Sección titulada «Qué sobrevive a la pérdida de una referencia física»La mitad de lo que calcula esta biblioteca es indiferente al marco en que esté, y la otra mitad carece de sentido en silencio sin . La línea divisoria es si la magnitud está construida a partir de una razón o de una forma (invariante) o a partir de un valor absoluto (no).
Invariantes al marco (el mismo número en dBFS que en dB SPL): tiempos de
reverberación y pendientes de caída, funciones de transferencia y coherencia,
correlación y retardo, pendientes y formas espectrales, diferencias entre bandas,
y cualquier diferencia A menos C o C menos Z. Estas son las magnitudes que
legítimamente se pueden sacar de una grabación sin calibrar, y aquí vive casi
todo signals/spectra.
Dependientes del marco (verosímiles, equivocadas y silenciosas sin calibración): el frente a un límite, el SEL, la dosis y la exposición al ruido, los niveles percentiles , toda magnitud psicoacústica anclada a 20 µPa (la sonoridad en sonios, la agudeza, la cadena de ECMA-418-2), los criterios de pico de la normativa de conservación de la audición, y todos los veredictos de conformidad de la biblioteca. Ninguna de esas funciones rechaza muestras sin calibrar (no pueden saberlo), así que el marco es una decisión que el analista tiene que anotar junto al resultado.
Izquierda: un registro, dos marcos. El espectro en dBFS es el espectro en dB SPL
desplazado una constante, aquí 106,04 dB, que es exactamente el nivel del
calibrador menos el nivel en dBFS de la toma del calibrador; el marco dBFS cambia
el origen y nada más, que es por lo que todas las magnitudes basadas en formas de
arriba lo sobreviven. Derecha: el ataque de una ráfaga tonal de 1 kHz después del
filtro de octava, con amplitud de excitación 0,5. La señal de banda sobrepasa
hasta 0,582 antes de asentarse, así que mode='peak' lee 1,32 dB por encima del
tono estacionario.
RMS frente a niveles de pico
Sección titulada «RMS frente a niveles de pico»Los niveles se pueden leer de dos maneras, y las dos se usan en los analizadores comerciales:
- RMS (
mode='rms') integra energía sobre la trama, que es sobre lo que está definido todo nivel normalizado (, , ). - Pico (
mode='peak') retiene el mayor valor instantáneo de la trama, que es contra lo que se comprueban los criterios de impacto y de límite de pico como . Ojo: el pico de banda que se devuelve aquí está limitado en banda y sin ponderar, así que no es en sí mismo .
import numpy as npfrom phonometry import filters
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 = filters.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. La conversión
es un cambio de dtype, no un reescalado: una muestra int16 de +32767 entra como
32767.0, no como 1.0. Eso es inofensivo mientras la grabación del calibrador y
la medición estén en el mismo formato, porque entonces sensitivity devuelve
un factor 32768 veces menor y los dos se cancelan exactamente: un tono que marca
87,958 dB desde arrays float marca 87,958 dB desde los arrays int16 de las
mismas grabaciones. No es inofensivo en el caso contrario: el mismo tono leído
sin calibrar da 87,94 dB como float y 172,14 dB como int16, una desviación de
dB, y aplicar una sensibilidad derivada de float a
una medición leída como entero (o al revés) arrastra esa desviación al resultado
sin ningún síntoma. O se mantienen las dos grabaciones en un solo formato, o se
dividen las dos por el valor de fondo de escala (x / 32768.0 para int16) antes
de nada.
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 supone
target_spl, las tolerancias de clase de la Tabla 2 y la Tabla A.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, quesensitivity(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_splya 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() supone 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?»Obtén 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 balance 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, el límite de tolerancia de clase 1 es de ±0,4 dB entre 160 Hz y 1,25 kHz: los 0,25 dB de límite de aceptación de la Tabla 2 de IEC 60942:2017 más los 0,15 dB de incertidumbre máxima permitida de medida de la Tabla A.1, combinados como describe el Anexo D.
Referencias
Sección titulada «Referencias»- Audio Engineering Society. (2020). AES standard method for digital audio engineering — Measurement of digital audio equipment (AES17-2020). El convenio dBFS referido a la sinusoide de fondo de escala, que difiere en 3,01 dB del convenio referido al valor eficaz de esta página.
- Bies, D. A., Hansen, C. H. y Howard, C. Q. (2017). Engineering noise control (5.ª 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 del apartado 5.3.1.3, los límites de aceptación de la Tabla 2 con las incertidumbres máximas permitidas de la Tabla A.1 con las que se combinan según el Anexo D) 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).