Prominencia de sonidos impulsivos (NT ACOU 112)
Normas aplicables: NT ACOU 112ISO 1996ISO/PAS 1996
El ruido con impulsos prominentes (martilleo, remachado, hinca de pilotes) es más molesto que un sonido estacionario del mismo nivel equivalente. NT ACOU 112:2002 (un método Nordtest) cuantifica cuán prominente es un impulso y lo convierte en un ajuste graduado que se suma al medido. La prominencia se lee de dos propiedades del arranque de cada impulso en el historial de nivel ponderado A con ponderación temporal F: la rapidez con que crece (la tasa de crecimiento) y cuánto crece (la diferencia de nivel).
1. Prominencia prevista (apartado 7)
Sección titulada «1. Prominencia prevista (apartado 7)»Para cada impulso candidato, la prominencia prevista combina la tasa de crecimiento (en dB/s) y la diferencia de nivel (en dB) en escala logarítmica (Fórmula 1):
Los coeficientes se ajustaron a partir de ensayos de escucha y está diseñada
para alcanzar unos 15 en impulsos muy súbitos e intensos. El impulso con la
más alta en un periodo de 30 minutos es el determinante. Una subida de
nivel solo cualifica como impulso cuando su tasa de crecimiento supera 10 dB/s
(apartado 4.5; el apartado 8 aplica el ajuste únicamente «para sonidos con
tasas de crecimiento mayores de 10 dB/s»): impulse_prominence marca los eventos
no cualificados en su máscara qualifies, avisa de ellos y nunca les permite
fijar la prominencia determinante ni un (el ajuste es 0 dB cuando ningún
evento cualifica).
Una lupa recorre el historial de nivel ponderado A con ponderación temporal F L_AF; donde el nivel sube más deprisa de 10 dB/s se resalta el tramo de arranque, y las casillas de tasa de crecimiento (200 dB/s), diferencia de nivel (30 dB), prominencia P y ajuste KI se van iluminando por turnos.
Una lupa recorre el historial de nivel ponderado A con ponderación temporal F L_AF; donde el nivel sube más deprisa de 10 dB/s se resalta el tramo de arranque, y las casillas de tasa de crecimiento (200 dB/s), diferencia de nivel (30 dB), prominencia P y ajuste KI se van iluminando por turnos.
from phonometry import environment
# Tres impulsos candidatos: (tasa de crecimiento dB/s, diferencia de nivel dB).result = environment.impulse_prominence([1200.0, 300.0, 60.0], [32.0, 18.0, 11.0])print(result.per_impulse.round(2)) # [12.25 9.94 7.42]print(round(result.prominence, 2)) # 12.25 (el impulso determinante)print(round(result.adjustment, 2)) # 13.05 dB
result.plot() # la curva KI(P) de la sección 2 con estos impulsos marcadosUn solo impulso se evalúa directamente con predicted_prominence:
from phonometry import environment
# P = 3*lg(1000) + 2*lg(30) = 9 + 2.95 = 11.95.print(round(environment.predicted_prominence(1000.0, 30.0), 4)) # 11.95422. Ajuste al LAeq (apartado 8)
Sección titulada «2. Ajuste al LAeq (apartado 8)»Por debajo de una prominencia de 5 el impulso no es lo bastante audible como para importar; por encima, el ajuste crece linealmente (Fórmula 2):
from phonometry import environment
print(float(environment.impulse_adjustment(10.0))) # 9.0 dBprint(float(environment.impulse_adjustment(5.0))) # 0.0 dB (en el umbral)El ajuste se aplica al del evento con la prominencia más alta. El nivel de evaluación sobre un tiempo de referencia mayor combina los niveles equivalentes ajustados por impulso de los subintervalos (apartado 8, Nota 1):
from phonometry import environment
# Dos periodos de 30 min: uno impulsivo (KI = 7.6 dB), otro tranquilo.print(round(environment.rating_level([72.0, 66.0], [7.6, 0.0], [30.0, 30.0], 60.0), 2))# 76.78 dBEl ImpulseProminenceResult lleva las prominencias per_impulse, la prominence
determinante y su adjustment, y su .plot() dibuja la curva con los
impulsos marcados. El método es un complemento a la medida de ruido ambiental de
ISO 1996-2.
Las dos entradas importan, pero no por igual: a tasa de crecimiento fija, pasar de una diferencia de nivel de 5 dB a una de 30 dB mueve la prominencia mucho menos de lo que la mueve un orden de magnitud de tasa de crecimiento. Por debajo de P = 5 el ajuste es idénticamente cero, así que un impulso que no se cualifica no cuesta nada en absoluto, y por eso el ensayo de cualificación es la parte del método que hay que acertar.
Mostrar el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom phonometry import environment
# Una línea para la curva de ajuste con los impulsos marcados:environment.impulse_prominence([1200.0, 300.0, 60.0], [32.0, 18.0, 11.0]).plot(language="es")plt.show()
# A mano, el panel izquierdo — P frente a la tasa de crecimiento para tres LD:orate = np.logspace(1, 4, 200)for ld in (5.0, 15.0, 30.0): plt.plot(orate, environment.predicted_prominence(orate, np.full_like(orate, ld)), label=f"LD = {ld:g} dB")plt.xscale("log"); plt.legend(); plt.show()3. Medida objetiva a partir de una señal (ISO/PAS 1996-3)
Sección titulada «3. Medida objetiva a partir de una señal (ISO/PAS 1996-3)»La NT ACOU 112 toma la tasa de crecimiento y la diferencia de nivel como
entradas. La ISO/PAS 1996-3:2022 conserva las mismas fórmulas de
prominencia y ajuste, pero añade la cadena de medida objetiva que lee esas
magnitudes directamente de una grabación calibrada. impulsive_sound_adjustment
pondera la señal en A, aplica la ponderación temporal F
(),
muestrea el historial de nivel cada 10-25 ms, detecta cada arranque (el
tramo contiguo cuyo gradiente supera 10 dB/s, fusionando eventos separados menos
de 50 ms), mide su diferencia de nivel y su tasa de crecimiento
por mínimos cuadrados, y devuelve el ajuste determinante con la
categoría de fuente del apartado 7: no impulsiva (), impulsiva
regular () o altamente impulsiva ().
La detección de arranques puede ejecutarse directamente sobre un historial de
nivel con detect_onsets, cómodo para sonómetros que ya registran :
import numpy as npfrom phonometry import environment
# Historial LpAF muestreado cada 20 ms: silencio, subida de 30 dB a 0,30 s, estable.dt = 0.02levels = np.concatenate([ np.full(10, 40.0), 40.0 + 30.0 * np.arange(1, 16) / 15, # arranque recto de 100 dB/s hasta 70 dB np.full(15, 70.0),])onset = environment.detect_onsets(levels, dt)[0]print(round(onset.onset_rate), round(onset.level_difference)) # 100 30print(round(onset.prominence, 2)) # 8.95Qué tiene que ser la grabación. La cadena lee un historial de nivel, así que
las condiciones que hacen válido uno son las condiciones de todo el método: una
cadena de medida de clase 1 calibrada antes y después de la sesión, y una señal
en pascales, porque aunque el ajuste en sí es insensible a la calibración (se
construye con diferencias de nivel), el declarado y el ajustado no lo
son. El historial de nivel tiene que muestrearse lo bastante rápido como para
resolver la subida (el método trabaja sobre una rejilla de 10 ms a 25 ms, que es
el argumento dt de abajo) y el impulso determinante es el de mayor dentro
de un periodo de evaluación de 30 minutos. Tres cosas invalidan un periodo en
vez de bajarle la puntuación: que no se cualifique ningún arranque con el
gradiente de 10 dB/s (el ajuste es entonces 0 dB y el periodo no dice nada de la
fuente), que los eventos se solapen de modo que un impulso arranque sobre la cola
de decaimiento del anterior, y un historial de nivel que se saturara o recortara
en cualquiera de los dos extremos del rango.
Desde una señal temporal calibrada (en pascales) la cadena completa se ejecuta de principio a fin:
result = environment.impulsive_sound_adjustment(signal, fs)print(result.category) # p. ej. 'highly impulsive'print(round(result.adjustment, 1)) # KI en dB (de 0,0 a unos 9 dB en casos típicos)print(round(result.adjusted_laeq, 1)) # LAeq + KI
result.plot() # el historial de LpAF con los arranques detectados (necesita matplotlib)Tres argumentos con nombre de esa llamada deciden si el número es defendible, y ninguno es opcional en la práctica:
| Argumento | Por defecto | Qué hace |
|---|---|---|
dt | 0.02 s | El intervalo de registro del historial de nivel. El método necesita de 10 ms a 25 ms; una rejilla más gruesa aplana la tasa de crecimiento ajustada y subestima , que es la advertencia de dos párrafos más abajo hecha configurable |
calibration_offset | 0.0 dB | Se suma al historial de nivel para tender un puente entre una escala digital y una calibrada: la diferencia entre el nivel conocido del calibrador y el nivel que este mismo procesado declara para la grabación de calibración. Mueve el y el ajustado, y deja en paz |
laeq | None | Pasa el medido sobre el periodo de evaluación en vez de dejar que se calcule a partir del extracto, que es lo que hace un informe real |
reference_pressure | 2e-05 Pa | Solo se cambia para un medio distinto del aire |
onset_rate_method | 'least_squares' | El ajuste sobre la subida detectada |
environment.sound_pressure_level_history(signal, fs, *, dt=..., calibration_offset=...)
es ese mismo paso del apartado 4 por separado (ponderación A, ponderación
temporal F y remuestreo a la rejilla de 10-25 ms) para quien quiera el historial
sin el ajuste. Arranca en caliente el integrador de F con el valor cuadrático
medio de la primera ventana, para que el comienzo de un registro no se detecte
como un arranque del propio procesado.
Los tres golpes están deliberadamente bien separados, 1,6 s entre ellos frente a un decaimiento de 0,08 s, para que cada arranque parta del mismo fondo y cada ajuste tenga toda la subida para sí. Ese es el caso fácil: los dos errores de campo que se describen más abajo se manifiestan los dos como una recta ajustada más tendida sobre un flanco visiblemente empinado.
Mostrar el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom phonometry import environment
# Tres golpes de martillo sobre un fondo de 55 dB(A), 6 s a 48 kHz.fs = 48000rng = np.random.default_rng(7)t = np.arange(int(6.0 * fs)) / fsbackground = rng.standard_normal(t.size)background *= 2e-5 * 10 ** (55 / 20) / np.sqrt(np.mean(background ** 2))signal = background.copy()for onset_time in (1.0, 2.6, 4.2): decay = np.exp(-(t - onset_time) / 0.08) * (t >= onset_time) strike = decay * rng.standard_normal(t.size) window = (t >= onset_time) & (t < onset_time + 0.1) strike *= 2e-5 * 10 ** (95 / 20) / np.sqrt(np.mean(strike[window] ** 2)) signal += strike
res = environment.impulsive_sound_adjustment(signal, fs)print(res.category, round(res.prominence, 2), round(res.adjustment, 2))# highly impulsive 11.34 11.42
# En una línea: el historial de nivel con los arranques, las rectas ajustadas y# la diferencia de nivel determinante.res.plot(language="es")plt.show()De la figura conviene leer dos cosas. Las rectas de arranque son ajustes por mínimos cuadrados sobre el crecimiento detectado, así que un ajuste tendido sobre un flanco visiblemente abrupto indica que el historial de nivel se registró con demasiada poca resolución. Y la diferencia de nivel se mide desde el nivel justo antes del arranque, no desde el fondo a largo plazo, por lo que un segundo golpe que llega sobre la cola del anterior puntúa un menor del que aparenta merecer.
Como la tasa de crecimiento y la diferencia de nivel son diferencias de
nivel, el ajuste es insensible a la calibración absoluta del sonómetro
(apartado 8); solo el declarado y el ajustado dependen de ella. El
alcance del documento indica que el ajuste suele quedar entre 0,0 dB y 9,0 dB;
la propia fórmula no está acotada, así que un impulso muy súbito e intenso puede
superar ese rango. ImpulsiveSoundResult.plot() dibuja el historial con
los arranques detectados, las rectas de arranque por mínimos cuadrados y la
diferencia de nivel determinante marcadas.
4. Dónde encaja el método entre las normas
Sección titulada «4. Dónde encaja el método entre las normas»Las normas de evaluación tratan tradicionalmente la impulsividad por categorías, no por medición. La ISO 1996-1:2016 (Tabla A.1) suma 5 dB fijos cuando la fuente es impulsiva regular y 12 dB cuando es altamente impulsiva, y deja la elección de categoría al juicio del evaluador. La NT ACOU 112 sustituye ese juicio por una medida: la tasa de crecimiento y la diferencia de nivel de los impulsos reales producen un graduado que va de 0 dB para arranques apenas perceptibles a unos 18 dB para los más repentinos y ruidosos, cruzando por el camino las dos cifras convencionales. El enfoque resultó duradero: la misma prominencia basada en el arranque pasó después a la ISO/PAS 1996-3:2022, que la usa para decidir objetivamente si una fuente cuenta como impulsiva regular o altamente impulsiva en la evaluación de la ISO 1996-1.
Dos advertencias prácticas al aplicarlo. El arranque se lee del historial de nivel ponderado A con ponderación temporal F, y la propia constante de tiempo de 125 ms de la ponderación F limita la velocidad a la que puede subir un nivel registrado: los impulsos muy cortos llegan ya suavizados, así que la historial de nivel debe registrarse a la cadencia máxima del sonómetro (no en intervalos gruesos); de lo contrario, la tasa de crecimiento, y con ella , se subestima. Y el método evalúa la prominencia de los impulsos, no su energía: se añade sobre el medido en el nivel de evaluación, nunca lo sustituye.
5. Informe de evaluación (.report())
Sección titulada «5. Informe de evaluación (.report())»Un informe de evaluación tiene que llevar más de lo que la ficha calcula. Hay que
declarar la norma aplicada y su edición; la fuente y la situación; la posición de
medida y el periodo de evaluación; el impulso determinante con su tasa de
crecimiento y su diferencia de nivel; la prominencia y el ajuste ; la
categoría de fuente en la que el resultado sitúa a la fuente; y el
sobre el que cabalga el ajuste, con la instrumentación y la calibración que hay
detrás. La ficha de abajo rellena sola la mitad calculada (la tabla por impulso,
la determinante, y la categoría) y toma el resto de ReportMetadata,
y por eso el bloque de metadatos no es decoración: sin él la hoja documenta un
resultado aritmético y no una medición.
ImpulseProminenceResult.report(path) genera una ficha PDF de una página con el
formato de un informe de evaluación de sonidos impulsivos de un laboratorio de
ruido ambiental, siguiendo la NT ACOU 112:2002 (recogida en la
ISO/PAS 1996-3:2022): la línea de base normativa, un bloque de metadatos
opcional (fuente/situación, cliente, posición de medición, instrumentación y
fecha, con el periodo de evaluación de 30 minutos siempre visible), una tabla a
todo ancho por impulso (tasa de crecimiento, diferencia de nivel, prominencia
prevista y si el arranque se cualifica como impulso) sobre el gráfico de la
curva de ajuste con los impulsos candidatos marcados, la
prominencia rectora enmarcada junto con el ajuste de
derivado (Fórmula 2), una fila de veredicto CUMPLE/NO CUMPLE opcional
y una nota de categoría de prominencia, y un pie con el descargo fijo.
Usa el mismo contenedor ReportMetadata y el mismo motor de renderizado que la
ficha de sonoridad ISO
532-1;
un requirement indicado se interpreta como la prominencia rectora máxima
admisible (un impulso menos destacado cumple). El renderizado necesita
reportlab y, para la figura que incrusta la ficha, matplotlib (pip install "phonometry[report,plot]"); solo se admite engine="reportlab". La ficha se
genera en inglés por defecto; pasa language="es" para una ficha en español
(cadenas fijas traducidas y separador decimal de coma), p. ej.
res.report("impulse_fiche_es.pdf", language="es").
from phonometry import environment, ReportMetadata
# El conjunto de tres impulsos de hinca del §1 (tasa de crecimiento dB/s, LD dB).res = environment.impulse_prominence([1200.0, 300.0, 60.0], [32.0, 18.0, 11.0])res.report( "impulse_fiche.pdf", metadata=ReportMetadata( specimen="Obra de hinca de pilotes, martilleo intermitente", measurement_standard="ISO 1996-2", laboratory="Laboratorio de referencia Phonometry", requirement=10.0, # prominencia rectora P máxima admisible ), language="es", # ficha en español (separador decimal de coma)) # P rectora y el ajuste de LAeq KI (dB)La ficha de ejemplo se regenera con make reports y se mantiene renderizada en
el repositorio; pulsa la vista previa para abrir el PDF.

Ficha de evaluación de sonidos impulsivos de una página: un encabezado de metadatos, una tabla por impulso con la tasa de crecimiento, la diferencia de nivel y la prominencia prevista P, el gráfico de la curva de ajuste KI(P) con los impulsos candidatos marcados, la prominencia rectora P = 12,25 enmarcada con el ajuste de LAeq KI = 13,0 dB (NT ACOU 112:2002 Fórmula 2) y un veredicto NO CUMPLE frente a una prominencia rectora máxima de 10.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
NT ACOU 112:2002: la definición de arranque (apartados 4.5 a 4.7), la prominencia prevista (apartado 7, Fórmula 1), el ajuste graduado (apartado 8, Fórmula 2) y el nivel de evaluación sobre un tiempo de referencia (apartado 8, Nota 1), a través de
impulse_prominence,predicted_prominence,impulse_adjustmentyrating_level. La ISO/PAS 1996-3:2022 está cubierta en la cadena de medida objetiva construida sobre la misma fórmula de prominencia: el muestreo de , la detección y fusión de arranques, y la tasa de crecimiento y diferencia de nivel por mínimos cuadrados, a través deimpulsive_sound_adjustmentydetect_onsets.No cubierto
La Nota 4 (apartado 7) de la NT ACOU 112 recoge una directriz nórdica anterior: un ajuste plano de 5 dB basado en el juicio subjetivo, recomendado cuando para ruido característico de operaciones de trabajo, ofrecido como alternativa cuando el método graduado no se puede aplicar. Solo está implementado el graduado de la Fórmula 2; la alternativa plana de 5 dB no lo está. Los ajustes por categoría de la Tabla A.1 de la ISO 1996-1 (5 dB regular, 12 dB altamente impulsiva) están cubiertos solo como la base de juicio del evaluador que sustituye esta medición, no como una función propia.
Véase también
Sección titulada «Véase también»- Referencia de la API:
environment.assessment.impulsive_sound. - Teoría: Prominencia de sonidos impulsivos (NT ACOU 112): la derivación de la prominencia de NT ACOU 112 y el criterio de arranque en que se apoya.
Referencias
Sección titulada «Referencias»- International Organization for Standardization. (2016). Acoustics — Description, measurement and assessment of environmental noise — Part 1: Basic quantities and assessment procedures (ISO 1996-1:2016). El marco de evaluación y los ajustes por categoría de la Tabla A.1 (5 dB regular, 12 dB altamente impulsiva) frente a los que se calibra la prominencia medida.
- International Organization for Standardization. (2022). Acoustics — Description, measurement and assessment of environmental noise — Part 3: Objective method for the measurement of prominence of impulsive sounds and for adjustment of LAeq (ISO/PAS 1996-3:2022). El sucesor ISO construido sobre la prominencia por tasa de crecimiento de la NT ACOU 112.
- Nordtest. (2002). Acoustics: Prominence of impulsive sounds and for adjustment of LAeq (NT ACOU 112:2002). El método implementado, descargable gratis del archivo Nordtest: la prominencia prevista (apartado 7, Fórmula 1), el ajuste al LAeq (apartado 8, Fórmula 2) y el nivel de evaluación (apartado 8, Nota 1), con el arranque definido en los apartados 4.5-4.7.