Ir al contenido

Tonos discretos prominentes (ECMA-418-1)

Normas aplicables: ECMA-418

Los componentes tonales del ruido de maquinaria molestan mucho más de lo que sugiere su nivel. ECMA-418-1:2024 (referenciada por el Anexo D de ECMA-74) define dos métodos FFT para decidir si un tono discreto es prominente: tone_to_noise_ratio() compara el nivel del tono con el ruido enmascarante de su banda crítica (apartado 11) y prominence_ratio() compara la banda crítica centrada en el tono con las dos bandas contiguas (apartado 12). Ambos devuelven un veredicto estructurado frente a los criterios de prominencia dependientes de la frecuencia.

1. Relación tono-ruido y relación de prominencia

Sección titulada «1. Relación tono-ruido y relación de prominencia»
import numpy as np
from phonometry import psychoacoustics
fs = 48000
rng = np.random.default_rng(0)
t = np.arange(fs) / fs
x = np.sin(2 * np.pi * 1000 * t) + 0.05 * rng.standard_normal(fs) # tono de 1 kHz en ruido
tnr = psychoacoustics.tone_to_noise_ratio(x, fs) # pico más alto, o tone_freq=...
pr = psychoacoustics.prominence_ratio(x, fs, tone_freq=1000.0)
print(round(tnr.ratio_db, 1), round(tnr.criterion_db, 1), tnr.prominent) # 45.6 8.0 True
print(round(pr.ratio_db, 1), round(pr.criterion_db, 1), pr.prominent) # 45.7 9.0 True
tnr.plot() # el tono frente a su criterio de prominencia (necesita matplotlib)

Tres números, en ese orden: la relación es cuántos decibelios supera el tono al ruido que lo enmascara, el criterio es la línea dependiente de la frecuencia que tiene que superar, y prominent es la comparación de ambos. Da el resultado como «TNR = 45,6 dB frente a un criterio de 8,0 dB a 1 kHz, prominente por 37,6 dB», nunca como un booleano pelado: el margen es lo que le dice a quien revisa si el veredicto sobrevive a la incertidumbre de medida. (Este tono sintético es absurdamente prominente; el tono de ventilador de 250 Hz de más abajo supera su criterio por 2,1 dB, que es el caso interesante.)

Los métodos se apoyan en la banda crítica, el ancho de banda de análisis del oído, Hz (162 Hz a 1 kHz): a un tono solo lo enmascara el ruido que hay dentro de su banda crítica, así que ambos métodos se centran en esa banda y no en todo el espectro, pero la usan de forma distinta. La relación tono-ruido trabaja dentro de la banda, separando sus líneas espectrales en tono y ruido y restando sus niveles (apartado 11, Fórmulas 9–11); la relación de prominencia, en cambio, compara la banda completa centrada en el tono con la media de sus dos bandas críticas contiguas (apartado 12, Fórmula 23):

donde es el nivel del tono (la suma en energía de las líneas tonales por encima de la línea de base entre los bordes de la banda, Fórmula 9), el nivel del ruido enmascarante que queda en la banda crítica, reescalado al ancho de banda crítico completo (Fórmulas 10–11), y , , las potencias de las bandas críticas central, inferior y superior (por debajo de Hz la banda inferior truncada se reescala a un ancho de banda de 100 Hz, Fórmula 24).

Espectro promediado de un tono en ruido con la banda crítica sombreada y la relación tono-ruido anotada frente a su criterio de prominenciaEspectro promediado de un tono en ruido con la banda crítica sombreada y la relación tono-ruido anotada frente a su criterio de prominencia
Mostrar el código de esta figura
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import welch
from phonometry import psychoacoustics
fs = 48000
rng = np.random.default_rng(21)
t = np.arange(30 * fs) / fs
x = (np.sqrt(2) * 0.1 * np.sin(2 * np.pi * 1000 * t)
+ 0.05 * rng.standard_normal(t.size))
res = psychoacoustics.tone_to_noise_ratio(x, fs)
# Espectro Hann promediado a 1 Hz (el front-end del apartado 11.1) y la banda
# crítica en torno al tono detectado (bordes aproximados como +/- dfc/2):
f, p = welch(x, fs, window="hann", nperseg=fs, scaling="spectrum")
dfc = 25 + 75 * (1 + 1.4 * (res.frequency / 1000) ** 2) ** 0.69
sel = (f > 700) & (f < 1400)
plt.plot(f[sel], 10 * np.log10(p[sel]))
plt.axvspan(res.frequency - dfc / 2, res.frequency + dfc / 2, alpha=0.15)
plt.title(f"TNR = {res.ratio_db:.1f} dB (criterio {res.criterion_db:.1f} dB)")
plt.xlabel("Frecuencia [Hz]"); plt.ylabel("Potencia por bin [dB]")
plt.show()

Un TNR igual o superior a dB por debajo de 1 kHz (8 dB constantes para kHz) clasifica el tono como prominente; el criterio del PR es dB por debajo de 1 kHz y 9 dB a partir de ahí, aplicado igualmente con . Las frecuencias bajas reciben umbrales más altos porque unas bandas relativamente más anchas enmascaran más.

ToneAssessment.plot() sitúa el veredicto en su contexto: dibuja el criterio del método que lo ha producido en todo el rango de interés de 89,1 Hz a 11,2 kHz y marca el tono evaluado en su propia frecuencia, de modo que el margen que decide el veredicto se ve en lugar de deducirse.

Relación tono-ruido de un tono de ventilador de 250 Hz frente al criterio de prominencia de ECMA-418-1: el criterio baja desde unos 17 dB a 89 Hz hasta 8 dB constantes por encima de 1 kHz, y el tono evaluado se sitúa en 15,1 dB, 2,1 dB por encima del criterio de 13,0 dB a 250 Hz, luego es prominenteRelación tono-ruido de un tono de ventilador de 250 Hz frente al criterio de prominencia de ECMA-418-1: el criterio baja desde unos 17 dB a 89 Hz hasta 8 dB constantes por encima de 1 kHz, y el tono evaluado se sitúa en 15,1 dB, 2,1 dB por encima del criterio de 13,0 dB a 250 Hz, luego es prominente
Mostrar el código de esta figura
import numpy as np
import matplotlib.pyplot as plt
from phonometry import psychoacoustics
# Un tono de ventilador de 250 Hz en ruido de maquinaria, 10 s a 48 kHz.
fs = 48000
rng = np.random.default_rng(4)
t = np.arange(10 * fs) / fs
x = (np.sqrt(2) * 0.011 * np.sin(2 * np.pi * 250.0 * t)
+ 0.03 * rng.standard_normal(t.size))
res = psychoacoustics.tone_to_noise_ratio(x, fs)
print(round(res.ratio_db, 1), round(res.criterion_db, 1), res.prominent)
# 15.1 13.0 True
# En una línea: el tono frente a la curva de criterio de su propio método.
res.plot(language="es")
plt.show()
# A mano, reproduciendo lo que dibuja ToneAssessment.plot():
f = np.logspace(np.log10(89.1), np.log10(11200.0), 400)
criterio = np.where(f < 1000.0, 8.0 + 8.33 * np.log10(1000.0 / f), 8.0)
fig, ax = plt.subplots()
ax.semilogx(f, criterio, color="#d62728", label="criterio de prominencia")
ax.plot([res.frequency], [res.ratio_db], "o", label="tono evaluado")
ax.plot([res.frequency] * 2, [res.criterion_db, res.ratio_db], ":", color="0.6")
ax.set_xlabel("Frecuencia [Hz]")
ax.set_ylabel("Relación tono-ruido TNR [dB]")
ax.legend()
plt.show()

Cuando las dos relaciones discrepan. Cerca de los criterios los veredictos pueden diferir, porque cada una es frágil en una situación distinta. El TNR tiene que separar primero las líneas de la banda crítica en tonales y de ruido, así que se degrada cuando esa separación es ambigua: un tono montado sobre una pendiente abrupta de ruido, o componentes muy juntos cuyas faldas se solapan. El PR no necesita separación alguna, lo que lo convierte en la opción robusta y automatizable cuando varios tonos comparten la banda crítica (todos caen en ); a cambio se queda corto cuando una banda vecina también lleva un tono (las bandas laterales dejan de ser ruido) y se sesga en espectros de pendiente pronunciada, donde las dos bandas laterales ya no estiman el enmascaramiento en el tono. En la práctica: prefiere el TNR para un tono limpio y aislado, el PR para complejos multitono que comparten banda, y presenta ambos cuando ronden sus criterios.

A la izquierda, los criterios de tono-ruido y de prominencia de ECMA-418-1 sobre el rango de interés de 89,1 Hz a 11,2 kHz, con el tono de ventilador de 250 Hz marcado en 15,1 dB por encima de su criterio TNR de 13,0 dB y en 14,9 dB justo por debajo de su criterio PR de 15,0 dB. A la derecha, la relación tono-ruido y la relación de prominencia de un tono de 1 kHz mientras crece un segundo tono en la banda crítica inmediatamente superior, con el TNR plano en unos 9,2 dB mientras el PR cae desde 9,9 dB, atraviesa su criterio de 9 dB y baja por debajo de menos 8 dBA la izquierda, los criterios de tono-ruido y de prominencia de ECMA-418-1 sobre el rango de interés de 89,1 Hz a 11,2 kHz, con el tono de ventilador de 250 Hz marcado en 15,1 dB por encima de su criterio TNR de 13,0 dB y en 14,9 dB justo por debajo de su criterio PR de 15,0 dB. A la derecha, la relación tono-ruido y la relación de prominencia de un tono de 1 kHz mientras crece un segundo tono en la banda crítica inmediatamente superior, con el TNR plano en unos 9,2 dB mientras el PR cae desde 9,9 dB, atraviesa su criterio de 9 dB y baja por debajo de menos 8 dB

Dos criterios, dos modos de fallo. A la izquierda: el criterio del PR queda entre 1 y 2 dB por encima del criterio del TNR por debajo de 1 kHz, lo bastante para que el mismo tono de ventilador de 250 Hz sea prominente por TNR (15,1 dB frente a 13,0 dB) y no prominente por PR (14,9 dB frente a 15,0 dB). A la derecha: un tono en la banda crítica vecina deja el TNR intacto y destroza el PR, porque las bandas laterales que este trata como ruido han dejado de ser ruido.

Mostrar el código de esta figura
import numpy as np
# `psychoacoustics` lo importan los fragmentos de arriba.
fs = 48000
rng = np.random.default_rng(7)
t = np.arange(8 * fs) / fs
# Un tono de 1 kHz en ruido de banda ancha, más un segundo tono a 1160 Hz:
# fuera de la banda crítica de 162 Hz en torno a 1 kHz, o sea dentro de la
# banda contigua superior que la relación de prominencia usa como estimación
# del ruido.
primary = np.sqrt(2) * 0.012 * np.sin(2 * np.pi * 1000.0 * t)
noise = 0.05 * rng.standard_normal(t.size)
for relative_db in (-24.0, -12.0, 0.0, 12.0):
second = np.sqrt(2) * 0.012 * 10 ** (relative_db / 20)
y = primary + second * np.sin(2 * np.pi * 1160.0 * t) + noise
tnr_y = psychoacoustics.tone_to_noise_ratio(y, fs, tone_freq=1000.0)
pr_y = psychoacoustics.prominence_ratio(y, fs, tone_freq=1000.0)
print(relative_db, round(tnr_y.ratio_db, 1), round(pr_y.ratio_db, 1))
# -24.0 9.2 9.8
# -12.0 9.2 8.7
# 0.0 9.2 2.5
# 12.0 9.2 -8.6

Un tono que no se está quieto. Los dos métodos suponen que el tono se mantiene en una frecuencia durante todo el promedio. Un ventilador o una bomba cuya velocidad deriva emborrona el tono entre muchos bins: la banda del tono se ensancha, parte del tono se cuenta como ruido enmascarante y el TNR se queda corto, mientras que al PR le afecta menos, pero sigue viendo una banda emborronada. El apartado 11.2 da el diagnóstico en lugar de dejarlo al criterio de cada cual: si la banda del tono es más ancha que el 15 % del ancho de banda crítico, se repite el análisis con una resolución más fina, y una banda de tono que sigue siendo más ancha que ese 15 % tras esa iteración indica un tono de frecuencia variable en el tiempo u otro fenómeno. Llegados ahí, la evaluación no es que sea incierta: es inválida. Los remedios están aguas arriba: estabilizar el punto de funcionamiento del equipo en ensayo, acortar cada promedio y promediar las relaciones en vez de los espectros, o hacer seguimiento de órdenes de la fuente giratoria. Los complejos armónicos merecen el mismo cuidado componente a componente con tone_freq=, ya que la deriva de un fundamental se multiplica proporcionalmente en cada armónico.

2. Dónde medir (ECMA-74), y qué necesitan las relaciones

Sección titulada «2. Dónde medir (ECMA-74), y qué necesitan las relaciones»

ECMA-74 es la norma de emisión que delega su evaluación de tonos en ECMA-418-1, y también fija dónde va el micrófono alrededor de un equipo: una posición de operador y cuatro de observador. phonometry implementa las evaluaciones de ECMA-418-1, no el procedimiento de medida de ECMA-74, así que el diagrama de abajo es contexto para leer una declaración de emisión, no algo que haga la biblioteca.

Posiciones de medida de emisión ECMA-74: micrófono del operador sentado a 0,25 m y 1,20 m, y las cuatro posiciones de observador a 1 mPosiciones de medida de emisión ECMA-74: micrófono del operador sentado a 0,25 m y 1,20 m, y las cuatro posiciones de observador a 1 m

De qué posición se informan los números. El apartado 6 de ECMA-418-1 es explícito. Si el equipo tiene posición de operador, se mide ahí, y en la más sonora de ellas cuando hay más de una, juzgada por el nivel ponderado A. Si no tiene ninguna, se mide en la posición de observador con el nivel ponderado A más alto y en todas las demás posiciones de observador que queden dentro de 0,5 dB de ella. La geometría viene del apartado 8.6 de ECMA-74:2025: el micrófono de operador a 0,25 m ± 0,03 m en horizontal desde la caja de referencia y a 1,20 m ± 0,03 m sentado o 1,50 m ± 0,03 m de pie (0,50 m para equipos de sobremesa ensayados sin su teclado desmontable, y 0,125 m a 1,0 m para equipos de mano); al menos cuatro posiciones de observador a 1,00 m ± 0,03 m de los lados de la caja de referencia y a 1,50 m ± 0,03 m sobre el suelo, añadiendo más a intervalos de 1,0 m cuando un lado supera los 2,0 m. Cuando se miden varias posiciones, el apartado 6 exige informar del TNR y el PR más altos junto con la posición de la que sale cada uno.

Con qué. Una cadena de micrófono de clase 1 según IEC 61672-1 hacia un analizador FFT con promediado RMS lineal (no exponencial) y ventana de Hanning, calibrado directamente en dB re 20 µPa; el micrófono orientado de modo que el ángulo de incidencia sea aquel para el que su respuesta es más plana, que el apartado 8.6.4 de ECMA-74 toma como 30° o 45° por debajo de la horizontal en la mayoría de los casos prácticos. El intervalo de medición debe cubrir al menos tres ciclos de funcionamiento, o la secuencia completa en equipos que recorren una secuencia de ciclos variables (apartado 7.7.2 de ECMA-74 a través del 8.7.2), y el ruido de fondo se corrige como exige el grado de exactitud 2 de ISO 11201.

La resolución, en términos prácticos. El apartado 7 pide una resolución FFT por debajo del 1 % de la frecuencia del tono, y recomienda un 0,25 % o mejor para la relación tono-ruido, porque la experiencia ha demostrado que el 1 % a veces no resuelve el tono. A 250 Hz eso son 0,63 Hz, o sea registros de un segundo o más por promedio; el valor por defecto de 1 Hz de la biblioteca cumple por tanto la recomendación solo por encima de unos 400 Hz y es demasiado grueso por debajo. El apartado 11.2 añade la comprobación que importa en ese extremo: la banda del tono no debe superar el 15 % del ancho de banda crítico y, si lo supera, el análisis se repite más fino.

La trampa de la ponderación. El apartado 7 prohíbe cualquier ponderación frecuencial a la entrada del analizador, la A incluida. Las dos relaciones comparan niveles dentro de bandas críticas y entre ellas, así que una curva de ponderación inclina la comparación: inofensivo para un TNR a 1 kHz, y varias décimas de decibelio para un PR en baja frecuencia, donde la curva A cae con fuerza a lo largo de tres bandas críticas consecutivas. Las relaciones son indiferentes a la calibración absoluta, pero no a la forma espectral, que es la razón de que «la calibración se cancela» sea solo media verdad: el analizador debería estar calibrado en absoluto de todos modos, porque el filtro de umbral de los apartados 8 y 9 que viene después necesita niveles de presión acústica reales.

Los tonos secundarios próximos en la misma banda crítica se combinan según el apartado 11.6; para complejos armónicos evalúa cada componente (tone_freq=). Ambos métodos trabajan sobre espectros promediados RMS con ventana Hann y no necesitan calibración absoluta para la relación en sí (ambas relaciones son diferencias de nivel).

Parámetros de tone_to_noise_ratio() / prominence_ratio()

Sección titulada «Parámetros de tone_to_noise_ratio() / prominence_ratio()»
ParámetroTipoUnidadesRango / valor por defectoNotas
xarray 1Dcualquiera (vale sin calibrar)fs/resolution_hz muestrasLas relaciones son diferencias de nivel: la calibración se cancela
fsintHz> 0
tone_freqfloat, opcionalHz89,1–11 200; por defecto NoneNone evalúa el pico más alto del rango de interés
resolution_hzfloatHz> 0; por defecto 1.0La banda del tono debe quedar dentro del 15 % de la banda crítica (apartado 11.2)

Ambos devuelven un ToneAssessment(frequency, ratio_db, criterion_db, prominent).

3. Qué métrica de tonalidad usar y cuándo

Sección titulada «3. Qué métrica de tonalidad usar y cuándo»

La biblioteca implementa cuatro evaluaciones de tonalidad, y no son intercambiables: cada una pertenece a una norma distinta, con su propio objetivo, su entrada y su salida.

TNR / PRAudibilidad tonal Tonalidad psicoacústica TAudibilidad tonal de aerogeneradores
NormaECMA-418-1:2024, apartados 11 y 12ISO/PAS 20065:2016, adoptada por el Anexo J de ISO 1996-2:2017ECMA-418-2:2025, apartado 6IEC 61400-11:2012, apartado 9.5
Pregunta que responde¿Es prominente este tono discreto en la emisión de un equipo?¿Es audible el tono por encima del ruido que lo enmascara, y en cuánto?¿Cuán tonal se percibe el sonido?¿Es audible el tono del aerogenerador en la posición de referencia, bin de viento a bin de viento?
EntradaUn espectro FFT, sin necesidad de calibraciónEspectros de banda estrecha con la separación entre líneas declaradaLa señal de presión calibrada, a través del modelo auditivo de SottekEspectros de banda estrecha por bin de velocidad de viento, con la distancia de referencia
SalidaUna relación en dB frente a un criterio dependiente de la frecuencia, más un veredicto prominente / no prominenteUna audibilidad en dB, cuyos valores decisivo y medio alimentan el ajuste tonal KtUna tonalidad en tu_HMS, una magnitud perceptiva sin criterio asociadoUna audibilidad en dB por bin, informada junto a la potencia acústica del aerogenerador
Se usa paraDeclarar la emisión de equipos TIC (Anexo D de ECMA-74)Evaluación de ruido ambiental: justificar, o descartar, una penalización tonalCalidad sonora: comparar diseños, no superar un límiteEnsayos de tipo y aceptación de aerogeneradores

La tabla se lee como una decisión: la métrica la elige el objetivo del informe, no la comodidad de la entrada. La declaración de emisión de un equipo es un veredicto de prominencia de ECMA-418-1; una queja por un tono de una instalación es una evaluación según ISO 1996-2, así que necesita la audibilidad que se traduce en Kt (la guía de audibilidad tonal); una comparación de productos en la que nadie va a ser sancionado es donde la tonalidad de ECMA-418-2 se gana su sitio, porque es una magnitud y no un ensayo de umbral (la guía de calidad sonora); y un aerogenerador es un régimen propio, con un procedimiento de medida en IEC 61400-11 que fija la geometría y los bins de viento (la guía de aerogeneradores).

Dos consecuencias que conviene tener presentes. Primera, los números no se convierten: un TNR de 12 dB no es una audibilidad de 12 dB, porque el modelo de enmascaramiento, la definición de banda y la referencia son distintos. Segunda, las métricas pueden discrepar sobre el mismo sonido, y con razón. Un tono puede ser prominente según ECMA-418-1 en el campo próximo de la máquina y resultar inaudible en la vivienda donde se hace la evaluación de ISO 1996-2, mientras la tonalidad del modelo auditivo se mantiene moderada en ambos casos porque valora el sonido completo y no una línea espectral. Informa la métrica que exija la evaluación y cita cualquier otra solo como evidencia de apoyo.

  • Cubierto

    ECMA-418-1:2024 (3.ª edición): los métodos de relación tono-ruido (apartado 11, Fórmulas 9 a 12) y relación de prominencia (apartado 12, Fórmulas 23 a 26) sobre espectros promediados RMS con ventana Hann, el modelo de banda crítica del apartado 10, los criterios de prominencia dependientes de la frecuencia y la combinación de tonos secundarios que comparten banda del apartado 11.6, todo a través de tone_to_noise_ratio() y prominence_ratio(). Las posiciones de micrófono del apartado 6 y los requisitos de instrumentación del apartado 7 están documentados en el §2 como las condiciones bajo las que quedan definidas las dos relaciones.

  • No cubierto

    El veredicto prominent que devuelven estas funciones es solo el criterio numérico. La norma exige además que un tono prominente se confirme por examen auditivo (apartados 11.8/12.8) y que supere el filtro del umbral inferior de audición de los apartados 8/9, que necesita niveles absolutos calibrados: ambas comprobaciones quedan a cargo de quien llama. ECMA-74:2025 está cubierta solo como la norma que delega su evaluación tonal en ECMA-418-1; su propio procedimiento de medida del Anexo D y las posiciones de operador/observador (mostradas arriba solo como contexto) no están implementados aquí.