Ir al contenido

Ponderación frecuencial (A, C, Z)

Normas aplicables: ISO 226IEC 61672Referencias: Fletcher y Munson 1933

Las curvas de ponderación frecuencial simulan la sensibilidad del oído humano. Esta guía cubre A, C y Z, las curvas especificadas en IEC 61672-1:2013: de dónde vienen, cómo aplicarlas, el diseño high_accuracy y la verificación de clase frente a la Tabla 3. El resto de la familia, la curva G de infrasonido, las históricas B y D y la curva AU, es Ponderaciones especiales.

Curvas de ponderación A, C y Z de IEC 61672-1 con zoom de la región positiva de la curva A (+1,27 dB a 2,5 kHz)Curvas de ponderación A, C y Z de IEC 61672-1 con zoom de la región positiva de la curva A (+1,27 dB a 2,5 kHz)

Las tres curvas de IEC 61672-1, medidas con los filtros de la propia biblioteca a 48 kHz: A, que descarta los graves; C, que los conserva; y Z, que no pondera nada. El recuadro amplía la pequeña región positiva de A en torno a 2,5 kHz. Las curvas especiales B, D y AU tienen su propia gráfica en Ponderaciones especiales, junto con la curva G de infrasonido.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import filters
# Medimos la respuesta de cada curva: ponderamos un impulso unitario
# centrado y tomamos su espectro (búfer de 1 s -> resolución de 1 Hz).
fs = 48000
impulse = np.zeros(fs)
impulse[fs // 2] = 1.0
freqs = np.fft.rfftfreq(fs, 1 / fs)
fig, ax = plt.subplots(figsize=(9, 5))
for curve in ("A", "C", "Z"):
spectrum = np.fft.rfft(filters.weighting_filter(impulse, fs, curve=curve))
ax.semilogx(freqs[1:], 20 * np.log10(np.abs(spectrum[1:]) + np.finfo(float).eps),
label=curve)
ax.set(xlim=(10, 22000), ylim=(-72, 15),
xlabel="Frecuencia [Hz]", ylabel="Respuesta [dB]")
ax.grid(True, which="both", alpha=0.3)
ax.legend()
plt.show()
  • Ponderación A (A): estándar para ruido ambiental (IEC 61672-1).
  • Ponderación C (C): para presión acústica de pico y ruido de alto nivel.
  • Ponderación Z (Z): plana por especificación, no por omisión. IEC 61672-1 define Z como una respuesta nominalmente plana de 10 Hz a 20 kHz con las mismas tolerancias de la Tabla 3 que A y C, y por eso verify_weighting_class puede llegar a calificarla. La biblioteca la implementa como un paso directo, así que el ancho de banda efectivo de un nivel ponderado Z es el que entregue tu cadena de captura: elimina la componente continua (detrend) y filtra tú el ruido de viento con un paso alto si la grabación baja de 10 Hz.

El argumento curve acepta además las cuatro ponderaciones especiales, con gráfica y documentación en Ponderaciones especiales: 'G' para infrasonido (ISO 7196), las históricas 'B' (ANSI S1.4-1983) y 'D' (IEC 537), y 'AU' para sonido audible en presencia de ultrasonidos (IEC 61012).

La respuesta en una línea es filters.weighting_filter(recording, fs, curve='A'). El apartado 2 lo enseña sobre una señal ejecutable, el 5 explica por qué el diseño por defecto sobremuestrea internamente y el 6 demuestra que el resultado cumple la clase 1.

Las curvas A y C son líneas isofónicas invertidas, congeladas en filtros: A aproxima la inversa de la histórica línea isofónica de 40 fonios (niveles bajos, donde el oído descarta los graves con más agresividad) y C la más plana de ~100 fonios (niveles altos). IEC 61672-1:2013 (Anexo E) define ambas analíticamente a partir de cuatro frecuencias de esquina:

C es un paso banda con polos dobles en y (2 ceros en el origen); A añade los polos y (4 ceros), y por eso sigue cayendo en los medios-graves. Ambas se normalizan a exactamente 0 dB a 1 kHz. Z no aplica ningún conformado dentro de la banda especificada; su objetivo de diseño es 0 dB en todo el rango de 10 Hz a 20 kHz. La derivación completa de polos y ceros está en la página de Teoría.

Líneas isofónicas según ISO 226 a la izquierda, con la línea isofónica de 40 fonios resaltada; a la derecha la curva de ponderación A superpuesta a la línea isofónica de 40 fonios invertida, mostrando que A es la línea isofónica volteada congelada en un filtro realizableLíneas isofónicas según ISO 226 a la izquierda, con la línea isofónica de 40 fonios resaltada; a la derecha la curva de ponderación A superpuesta a la línea isofónica de 40 fonios invertida, mostrando que A es la línea isofónica volteada congelada en un filtro realizable

La cadena va de las mediciones de igual sonoridad de Fletcher y Munson en 1933 a la primera norma estadounidense de sonómetros (1936), que dio a los instrumentos respuestas conmutables para que la lectura aproximara la sonoridad a distintos niveles: A de la línea isofónica de 40 fonios para sonidos débiles, B de la de ~70 fonios para los moderados y una respuesta plana para los fuertes (la curva C propiamente dicha, reflejo de la línea isofónica más plana de ~100 fonios, llegó con la revisión de 1944). Conmutar curvas según el nivel murió en la práctica (las lecturas saltaban en los puntos de cambio y las mediciones de campo dejaban de ser comparables), pero A sobrevivió sola: décadas de datos de daño auditivo y de molestia comunitaria se habían recogido con ella, y correlaciona con ambos casi tan bien como métricas mucho más elaboradas. IEC 61672-1 (primera edición, 2002) remató la limpieza: B se eliminó, A y C se conservaron con tolerancias más estrictas y Z se introdujo para sustituir el «lineal» mal especificado de los sonómetros antiguos, que variaba según el fabricante. La curva B (y la curva D de ruido de aeronaves, que corrió la misma suerte) sigue disponible para datos históricos; véase Ponderaciones especiales.

Como A descarta los graves y C los conserva, la diferencia es un indicador de un solo número del contenido en baja frecuencia:

  • Por debajo de unos 10 dB: espectro de banda ancha ordinario; el nivel ponderado A lo valora con justicia.
  • En torno a 15 a 20 dB o más: la energía se concentra en las bajas frecuencias (retumbo de climatización, compresores, graves de música a través de una pared). El nivel ponderado A entonces subestima el problema; mira el espectro de octavas y, por debajo de 20 Hz, pasa a la curva G.
  • La selección de protectores auditivos: el método HML de ISO 4869-2 se apoya exactamente en esta diferencia C menos A para decidir cuánta atenuación en baja frecuencia debe aportar el protector (el método SNR, más simple, la esquiva trabajando directamente con el nivel ponderado C).
import numpy as np
from phonometry import filters, signals
# Un retumbo de 50 Hz bajo un siseo ligero: débil en A, fuerte en C.
fs = 48000
t = np.arange(10 * fs) / fs
rng = np.random.default_rng(1)
x = 0.2 * np.sin(2 * np.pi * 50 * t) + 0.01 * rng.standard_normal(t.size)
la = signals.leq(filters.weighting_filter(x, fs, curve="A"))
lc = signals.leq(filters.weighting_filter(x, fs, curve="C"))
print(f"LAeq = {la:.1f} dB LCeq = {lc:.1f} dB C - A = {lc - la:.1f} dB")
# LAeq = 52.4 dB LCeq = 75.7 dB C - A = 23.2 dB
# C - A por encima de 20 dB: el número ponderado A ocultaría el retumbo.
Niveles en tercios de octava de dos señales, cada una dibujada sin ponderar, con ponderación A y con ponderación C. A la izquierda, un retumbo de 50 Hz bajo un siseo ligero: las curvas sin ponderar y ponderada C coinciden en un pico de 77 dB en la banda de 50 Hz, mientras que la curva ponderada A recorta esa misma banda hasta 47 dB, y el recuadro indica LAeq 52,4 dB, LCeq 75,7 dB y C menos A 23,2 dB. A la derecha, ruido rosa de banda ancha: las tres curvas quedan a un par de decibelios unas de otras desde 1 kHz hacia arriba y la curva A cae por debajo de esa frecuencia, y el recuadro indica LAeq 54,6 dB, LCeq 56,4 dB y C menos A 1,8 dBNiveles en tercios de octava de dos señales, cada una dibujada sin ponderar, con ponderación A y con ponderación C. A la izquierda, un retumbo de 50 Hz bajo un siseo ligero: las curvas sin ponderar y ponderada C coinciden en un pico de 77 dB en la banda de 50 Hz, mientras que la curva ponderada A recorta esa misma banda hasta 47 dB, y el recuadro indica LAeq 52,4 dB, LCeq 75,7 dB y C menos A 23,2 dB. A la derecha, ruido rosa de banda ancha: las tres curvas quedan a un par de decibelios unas de otras desde 1 kHz hacia arriba y la curva A cae por debajo de esa frecuencia, y el recuadro indica LAeq 54,6 dB, LCeq 56,4 dB y C menos A 1,8 dB

Los mismos tres niveles de banda para dos señales. Una fuente concentrada en baja frecuencia (izquierda) pone casi toda su energía justo donde A recorta con más fuerza, así que C − A llega a 23 dB y el nivel ponderado A por sí solo no dice nada de ella. El ruido rosa de banda ancha (derecha) da C − A = 1,8 dB, que es el régimen que describe la primera viñeta.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(9, 4.5))
for curve, style in (("Z", "-"), ("C", "--"), ("A", ":")):
band_levels, centres = filters.octave_filter(
filters.weighting_filter(x, fs, curve=curve), fs, fraction=3)
ax.semilogx(centres, band_levels, style, label=f"Bandas ponderadas {curve}")
ax.set(xlabel="Frecuencia central de banda [Hz]", ylabel="Nivel de banda [dB]")
ax.legend()
plt.show()

A es un filtro fijo deducido de datos de igual sonoridad con tonos puros a un único nivel de sonoridad, y se aplica a espectros complejos a cualquier nivel. De ahí salen tres supuestos, y cada uno se rompe de una forma que merece nombrarse. No dice nada de cómo se combinan las bandas, porque las líneas isofónicas se midieron con tonos aislados; está congelada en la línea de 40 fonios, así que el sonido grave de nivel alto queda sistemáticamente infravalorado a medida que las líneas reales se aplanan con el nivel; y no tiene ninguna estructura temporal, así que un impulso y un sonido estacionario de la misma energía reciben idéntico trato.

Cada uno de esos tres tiene su instrumento propio. Para la sonoridad percibida, usa los modelos de ISO 532 de Sonoridad en vez de otra curva de ponderación. Para el contenido por debajo de 20 Hz, usa la curva G de ISO 7196 (Ponderaciones especiales). Para el carácter tonal o impulsivo, usa las correcciones de ISO 1996-1 (Niveles ambientales). Nada de esto hace que usar A esté mal: los niveles ponderados A son la magnitud en la que están escritos los límites, así que un informe da el nivel ponderado A y añade las demás métricas como prueba de apoyo, nunca como sustituto.

import numpy as np
from phonometry import filters
# recording: una captura de micrófono calibrada (Pa) — grabada con tu cadena de medición. Sintetizada aquí para que la guía funcione por sí sola.
fs = 48000
recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
# Aplicar ponderación A a la señal en bruto
weighted_signal = filters.weighting_filter(recording, fs, curve='A')
# Aplicar ponderación C para análisis de picos
c_weighted_signal = filters.weighting_filter(recording, fs, curve='C')

Las ponderaciones especiales usan el mismo argumento curve; cada una está documentada, con su propia gráfica de respuesta, en Ponderaciones especiales.

La tarea de escritorio más común no es ponderar una grabación, sino ponderar A una tabla de niveles de banda en tercios de octava, y hay dos vías que no dan la misma respuesta. La exacta es la que hace un sonómetro: ponderar la forma de onda y luego filtrar por bandas.

band_source = signals.noise_signal(fs, 20.0, color="pink", rms=0.05, seed=3)
weighted_bands, centres = filters.octave_filter(
filters.weighting_filter(band_source, fs, curve="A"), fs, fraction=3)
print(f"suma energética de las bandas ponderadas A "
f"{10 * np.log10(np.sum(10 ** (weighted_bands / 10))):.2f} dB")
print(f"LAeq de la misma señal "
f"{signals.laeq(band_source, fs):.2f} dB")
# suma energética de las bandas ponderadas A 62.84 dB
# LAeq de la misma señal 62.79 dB

La vía de la tabla es a la que te ves obligado cuando los datos llegan ya como niveles de banda: sumar el tabulado a cada nivel de banda. Es una aproximación, porque A sube con mucha pendiente en las bandas graves, así que su media ponderada por energía dentro de una banda no es su valor en la frecuencia central. Medido frente a la vía exacta sobre ese mismo ruido rosa: las dos coinciden mejor que 0,1 dB de 100 Hz a 8 kHz, la vía de la tabla queda hasta 0,7 dB baja en las bandas más graves (donde A sube unos 12 dB por octava) y hasta 1 dB alta en la banda más aguda a 48 kHz (donde A cae con fuerza y la banda queda recortada por Nyquist), mientras que los totales coinciden en unas centésimas. Así que el error no es unilateral: sigue el signo de la curvatura de la ponderación a lo largo de la banda.

Deja constancia de qué vía produjo un espectro ponderado. Los totales coincidirán; los niveles de banda, no, y una comparación banda a banda entre el espectro ponderado A de un sonómetro y otro corregido por tabla mostrará décimas de decibelio que son método, no medida. El mismo argumento vale sin cambios para C y para G.

3. Parámetros de weighting_filter() / WeightingFilter

Sección titulada «3. Parámetros de weighting_filter() / WeightingFilter»
ParámetroTipoUnidadesRango / por defectoNotas
xarray 1D o 2Dcualquierano vacío2D es [channels, samples]
fsintHz> 0
curvestr'A' (por defecto), 'B', 'C', 'D', 'G', 'AU', 'Z''G' según ISO 7196 (infrasonido), 'B'/'D' históricas y 'AU' según IEC 61012 se tratan en Ponderaciones especiales; 'Z' se implementa como un paso directo de una respuesta que la norma especifica plana
high_accuracyboolpor defecto True (función); en la clase, None se resuelve a not statefulSobremuestreo interno que mantiene A/C en clase 1 hasta 16 kHz; detalles en el §5
statefulbool (solo clase)por defecto FalseConserva el estado del filtro entre bloques (streaming)
steady_icbool (solo clase)por defecto FalseCondiciones iniciales estacionarias (sin transitorio de arranque)

Si ponderas muchas señales con los mismos parámetros, diseña el filtro una sola vez:

import numpy as np
from phonometry import filters
# recording: una captura de micrófono calibrada (Pa) — grabada con tu cadena de medición. Sintetizada aquí para que la guía funcione por sí sola.
fs = 48000
recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
wf = filters.WeightingFilter(fs, "A")
batch = [recording] # tu lote de grabaciones
for recording in batch:
weighted = wf.filter(recording)

5. Precisión en alta frecuencia (high_accuracy)

Sección titulada «5. Precisión en alta frecuencia (high_accuracy)»

Un diseño con transformación bilineal simple comprime la respuesta cerca de Nyquist: a kHz el error de la curva A a 12,5 kHz alcanza −2,7 dB, fuera de la tolerancia clase 1 de IEC 61672-1 (+2,0/−2,5 dB).

Por defecto (high_accuracy=True), phonometry diseña y ejecuta el filtro de ponderación a una frecuencia interna sobremuestreada (hasta 8×, alcanzando ≥ 144 kHz a frecuencias de audio habituales; una entrada de 96 kHz funciona a ×2) y diezma de vuelta, manteniendo la respuesta dentro de las tolerancias de clase 1 hasta 16 kHz (error ≈ −0,5 dB a 12,5 kHz para kHz).

Precisión en alta frecuencia de la ponderación A a 48 kHz: curva analítica frente a bilineal simple y diseño sobremuestreado, con errorPrecisión en alta frecuencia de la ponderación A a 48 kHz: curva analítica frente a bilineal simple y diseño sobremuestreado, con error

El diseño bilineal simple (rojo) cruza la tolerancia de clase 1 cerca de 12,5 kHz; el diseño sobremuestreado (azul) se mantiene junto a la curva analítica.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import filters
# Respuesta medida de ambos diseños a fs = 48 kHz: ponderamos un impulso
# unitario centrado y tomamos su espectro...
fs = 48000
impulse = np.zeros(fs)
impulse[fs // 2] = 1.0
freqs = np.fft.rfftfreq(fs, 1 / fs)[1:]
# ...frente a la curva A analítica de IEC 61672-1 construida con las
# cuatro frecuencias de esquina de la sección 1, normalizada a 0 dB a 1 kHz.
f1, f2, f3, f4 = 20.599, 107.653, 737.862, 12194.217
gain = (f4**2 * freqs**4) / ((freqs**2 + f1**2)
* np.sqrt((freqs**2 + f2**2) * (freqs**2 + f3**2))
* (freqs**2 + f4**2))
analytic = 20 * np.log10(gain / gain[np.argmin(np.abs(freqs - 1000))])
fig, ax = plt.subplots(figsize=(9, 5))
ax.semilogx(freqs, analytic, "k--", label="Analítica (IEC 61672-1)")
for high_accuracy, label in ((False, "Bilineal simple"),
(True, "Sobremuestreado (por defecto)")):
weighted = filters.weighting_filter(impulse, fs, curve="A",
high_accuracy=high_accuracy)
response = 20 * np.log10(np.abs(np.fft.rfft(weighted))
+ np.finfo(float).eps)[1:]
ax.semilogx(freqs, response, label=label)
ax.set(xlim=(1000, 20000), ylim=(-12, 3),
xlabel="Frecuencia [Hz]", ylabel="Respuesta de la ponderación A [dB]")
ax.grid(True, which="both", alpha=0.3)
ax.legend()
plt.show()
  • high_accuracy=False restaura el comportamiento bilineal clásico.
  • Con 'G' el indicador funciona como en las demás: el diseño por defecto se sobremuestrea hacia 48 kHz, que es lo que mantiene exactas las tasas de infrasonido; high_accuracy=False ejecuta el diseño simple a la tasa de entrada, que cuesta en torno a un decibelio en 315 Hz a fs = 2000 y nada en la referencia de 10 Hz.
  • El procesado por bloques (stateful) usa siempre el diseño clásico: el remuestreo FIR interno es incompatible con la continuidad entre bloques. Pasar high_accuracy=True junto con stateful=True lanza un ValueError.
import numpy as np
from phonometry import filters
# recording: una captura de micrófono calibrada (Pa) — grabada con tu cadena de medición. Sintetizada aquí para que la guía funcione por sí sola.
fs = 48000
recording = 0.2 * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)
# Comportamiento clásico explícito
y = filters.weighting_filter(recording, fs, curve="A", high_accuracy=False)
# Procesado por bloques con estado (diseño clásico, estado entre bloques)
wf = filters.WeightingFilter(fs, "A", stateful=True)
blocks = [recording] # tu secuencia de bloques de señal
for block in blocks:
weighted = wf.filter(block)

Consulta Procesado por bloques para el flujo en streaming y Teoría para las definiciones analíticas de las curvas.

6. Verificación frente a las tablas de tolerancias (IEC 61672-1)

Sección titulada «6. Verificación frente a las tablas de tolerancias (IEC 61672-1)»

verify_weighting_class comprueba un filtro de ponderación frente a los límites de aceptación de IEC 61672-1:2013 (Tabla 3). Evalúa la respuesta relativa del filtro en la frecuencia exacta en base 10 que hay detrás de cada etiqueta nominal por debajo de Nyquist (los objetivos de diseño de la Tabla 3 se calculan en , p. ej. 15 848,9 Hz para «16 kHz»; la IEC 61672-3 ensaya en esas mismas frecuencias), resta la ponderación objetivo de diseño e informa de la clase de prestaciones por frecuencia con su margen en dB. Un barrido logarítmico denso impone además el apartado 5.5.7 entre las frecuencias nominales (la desviación respecto al objetivo analítico del anexo E debe mantenerse dentro del mayor de los dos límites adyacentes, de modo que una resonancia o un notch entre nominales no puede pasar) y, cuando filas de la Tabla 3 con límite inferior finito quedan por encima de Nyquist, el veredicto se marca range_limited (atestigua solo las frecuencias comprobadas, no la conformidad completa de 10 Hz a 20 kHz):

from phonometry import filters
result = filters.verify_weighting_class(filters.WeightingFilter(48000, "A"))
print(result["overall_class"]) # 1
print(result["range_limited"]) # False
print(result["between_nominals"]) # {'worst_freq': ..., 'margin_class1_db': ...}
print(result["bands"][20])
# {'freq': 1000.0, 'class': 1, 'deviation_db': 0.0, 'margin_class1_db': 0.7, 'margin_class2_db': 1.0}

La máscara de aceptación de la Tabla 3 también es pública: weighting_class_limits(1) devuelve las 34 frecuencias nominales con los límites de desviación inferior/superior (un límite inferior de -inf significa que solo se aplica el superior). Los límites cualifican la desviación respecto al objetivo de diseño, por lo que son idénticos para A, C y Z.

Desviaciones de las ponderaciones A y C a 48 kHz dentro del corredor de aceptación de clase 1 de la Tabla 3 de IEC 61672-1, con los límites más amplios de clase 2 punteadosDesviaciones de las ponderaciones A y C a 48 kHz dentro del corredor de aceptación de clase 1 de la Tabla 3 de IEC 61672-1, con los límites más amplios de clase 2 punteados

Los diseños sobremuestreados A y C (azul, morado) se mantienen cerca de desviación cero, holgadamente dentro del corredor de clase 1 (sombreado); los límites más amplios de clase 2 se muestran punteados. El corredor se ensancha en los extremos de banda donde solo se aplica un límite unilateral.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import filters
freqs, lower1, upper1 = filters.weighting_class_limits(1)
_, lower2, upper2 = filters.weighting_class_limits(2)
lo1, lo2 = np.clip(lower1, -7, 7), np.clip(lower2, -7, 7)
fig, ax = plt.subplots(figsize=(10, 6.5))
ax.fill_between(freqs, lo1, upper1, step="mid", alpha=0.10,
label="Región de aceptación de clase 1")
ax.plot(freqs, upper1, drawstyle="steps-mid", label="Límite superior/inferior de clase 1")
ax.plot(freqs, lo1, drawstyle="steps-mid", color="C1")
ax.plot(freqs, upper2, ":", drawstyle="steps-mid", label="Límite superior/inferior de clase 2")
ax.plot(freqs, lo2, ":", drawstyle="steps-mid", color="C2")
for curve, marker in (("A", "o"), ("C", "s")):
bands = filters.verify_weighting_class(filters.WeightingFilter(48000, curve))["bands"]
f = [b["freq"] for b in bands]
dev = [b["deviation_db"] for b in bands]
ax.plot(f, dev, marker=marker, label=f"Desviación de la ponderación {curve} (48 kHz)")
ax.set(xscale="log", xlim=(10, 20000), ylim=(-7, 7),
xlabel="Frecuencia [Hz]", ylabel="Desviación del objetivo de diseño [dB]")
ax.legend(fontsize=8, ncol=2)
plt.show()
  • Cubierto

    IEC 61672-1:2013 para las curvas A, C y Z: la definición analítica del Anexo E a partir de cuatro frecuencias de esquina, el diseño high_accuracy que mantiene las tolerancias de clase 1 hasta 16 kHz, y los límites de aceptación de clase 1/clase 2 de la Tabla 3 que comprueba verify_weighting_class.

  • No cubierto

    Las curvas especiales, la G de infrasonido de ISO 7196, las históricas B (ANSI S1.4-1983) y D (IEC 537) y la AU de IEC 61012, junto con la verificación de B y AU frente a sus tablas de tolerancias, tienen su propia guía: Ponderaciones especiales.

¿Cómo aplico la ponderación A a una señal con Python?

Sección titulada «¿Cómo aplico la ponderación A a una señal con Python?»

Llama a filters.weighting_filter(recording, fs, curve='A') sobre una señal calibrada. Devuelve la señal temporal ponderada A, filtrada con el diseño de polos y ceros de IEC 61672-1:2013 dentro de las tolerancias de clase 1, así que signals.leq() sobre la salida es el . La misma función aplica las ponderaciones C, Z, B, D, AU y la G de infrasonido mediante curve.

¿Cuándo debo usar la ponderación C en lugar de la ponderación A?

Sección titulada «¿Cuándo debo usar la ponderación C en lugar de la ponderación A?»

Usa la ponderación C para presión acústica de pico y ruido de alto nivel, y usa la diferencia como indicador del contenido en baja frecuencia: por debajo de unos 10 dB el nivel ponderado A valora el espectro con justicia, mientras que en torno a 15 a 20 dB o más la energía se concentra en las bajas frecuencias y el nivel ponderado A subestima el problema. El método HML de ISO 4869-2 se apoya exactamente en esta diferencia C menos A para la selección de protectores auditivos.

¿Es precisa la ponderación A cerca de 16 kHz con una frecuencia de muestreo de 48 kHz?

Sección titulada «¿Es precisa la ponderación A cerca de 16 kHz con una frecuencia de muestreo de 48 kHz?»

No con un diseño bilineal simple: a kHz el error de la curva A alcanza −2,7 dB a 12,5 kHz, fuera de la tolerancia de clase 1 de IEC 61672-1 (+2,0/−2,5 dB). El high_accuracy=True por defecto sobremuestrea internamente (hasta 8×, alcanzando 144 kHz o más a frecuencias de audio habituales) y mantiene la respuesta dentro de las tolerancias de clase 1 hasta 16 kHz, con un error de aproximadamente −0,5 dB a 12,5 kHz.

  • Fletcher, H. y Munson, W. A. (1933). Loudness, its definition, measurement and calculation. The Journal of the Acoustical Society of America, 5(2), 82-108. https://doi.org/10.1121/1.1915637Las mediciones originales de igual sonoridad; la curva A invierte su línea isofónica de 40 fonios (sección 1).
  • International Electrotechnical Commission. (2013). Electroacoustics — Sound level meters — Part 1: Specifications (IEC 61672-1:2013). Las curvas de ponderación frecuencial A, C y Z normativas (la definición analítica del Anexo E a partir de cuatro frecuencias de esquina, normalizadas a 0 dB a 1 kHz), las tolerancias de clase 1 que el diseño high_accuracy mantiene hasta 16 kHz y los límites de aceptación de clase 1 y clase 2 de la Tabla 3 que comprueba verify_weighting_class en la sección 6.
  • International Organization for Standardization. (2023). Acoustics — Normal equal-loudness-level contours (ISO 226:2023). Las sucesoras modernas de las curvas de Fletcher y Munson, dibujadas en el diagrama de la sección 1.