Sonoridad avanzada (ISO 532-2/-3, ECMA-418-2)
Normas aplicables: ISO 532ECMA-418Referencias: Moore 2013
El método de Zwicker de ISO 532-1 es la vía de referencia hacia la sonoridad en sonios y está en Sonoridad, junto con las líneas isofónicas de ISO 226. Esta página cubre las familias de modelos más nuevas que phonometry incluye a su lado: la sonoridad de Moore-Glasberg de ISO 532-2/532-3 y la sonoridad del modelo de Sottek de ECMA-418-2:2025, cuyo front-end auditivo compartido también impulsa la tonalidad y la aspereza de Métricas de calidad sonora.
La página empieza por la elección: qué modelo encaja con qué medición, y por qué los valores en sonios de los cuatro métodos coinciden en el ancla de 1 kHz / 40 dB pero no son intercambiables dígito a dígito. Después, cada modelo tiene su propia sección con un ejemplo resuelto, su figura y su tabla de parámetros.
Elegir un modelo de sonoridad
Sección titulada «Elegir un modelo de sonoridad»| Modelo | Norma | Estacionario / variable en el tiempo | Salida | Cuándo usarlo |
|---|---|---|---|---|
| Zwicker | ISO 532-1:2017 | ambos | sonios | Método de referencia; entrada en tercios de octava; rápido y muy citado |
| Moore-Glasberg | ISO 532-2:2017 | estacionario | sonios | Patrón de excitación roex; mejor para tonos y con suma binaural explícita |
| Moore-Glasberg-Schlittenlacher | ISO 532-3:2023 | variable en el tiempo | sonios (STL/LTL) | Sonoridad variable en el tiempo con trazas de corto/largo plazo y el pico |
| Sottek (modelo auditivo) | ECMA-418-2:2025 | variable en el tiempo | sone_HMS | Comparte un único front-end auditivo con las métricas de tonalidad y aspereza de ECMA |
Los cuatro métodos están anclados de modo que un tono de 1 kHz a 40 dB SPL es ≈ 1 sonio; los valores no son intercambiables dígito a dígito porque los modelos difieren en sus filtros auditivos y en su suma de sonoridad.
Los tres modelos pasan por aproximadamente 1 sonio en el ancla de 40 dB (el front-end de Sottek devuelve ahí 0,9845 sone_HMS) y divergen con el nivel: Zwicker duplica el valor en sonios cada +10 fonios, mientras que el modelo de Sottek crece más lentamente (alrededor de 1,65× por cada 10 dB), una diferencia intrínseca entre las sumas auditivas, no un error de calibración.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import psychoacoustics
# Tono de 1 kHz, 20..80 dB SPL: los tres modelos pasan cerca de 1 sonio a 40 dBfs = 48000t = np.arange(fs) / fslevels = np.arange(20.0, 81.0, 10.0)zw, mg, ec = [], [], []for spl in levels: x = np.sqrt(2) * 2e-5 * 10 ** (spl / 20) * np.sin(2 * np.pi * 1000 * t) zw.append(psychoacoustics.loudness_zwicker(x, fs, stationary=True).loudness) mg.append( psychoacoustics.loudness_moore_glasberg_from_spectrum([(1000.0, float(spl))]).loudness ) ec.append(psychoacoustics.loudness_ecma(x, fs).loudness)
fig, ax = plt.subplots()ax.plot(levels, zw, "o-", label="Zwicker (ISO 532-1)")ax.plot(levels, mg, "s--", label="Moore-Glasberg (ISO 532-2)")ax.plot(levels, ec, "^-.", label="Sottek (ECMA-418-2)")ax.plot(40.0, 1.0, "o", color="k", markerfacecolor="none", markersize=10) # el ancla compartidaax.set(xlabel="Nivel de presión acústica [dB SPL]", ylabel="Sonoridad total N [sonios]")ax.legend()plt.show()La escala ERBN y el eje Cam
Sección titulada «La escala ERBN y el eje Cam»Todos los modelos de esta página salvo el de Zwicker se escriben sobre el eje del número ERBN, así que conviene tener a mano la escala misma. La cóclea se comporta como un banco de filtros auditivos paso banda solapados; la anchura del filtro centrado en una frecuencia dada se resume con su ancho de banda rectangular equivalente, el del filtro rectangular que dejaría pasar la misma potencia con la misma respuesta de pico. Ajustando datos de ruido con muesca de oyentes jóvenes a niveles moderados, Glasberg y Moore (1990) lo convierten en una recta en frecuencia (Moore, An Introduction to the Psychology of Hearing 6.ª ed., p. 76):
Integrar convierte eso en una escala de frecuencia en la que un paso es una anchura de filtro auditivo. La escala es el número ERBN y su unidad es el Cam, por Cambridge:
from phonometry import psychoacoustics
cam = psychoacoustics.cam_from_frequency(1000.0)print(round(psychoacoustics.erb_bandwidth(1000.0), 1)) # 132.4 Hzprint(round(cam, 2)) # 15.59 Camprint(round(psychoacoustics.frequency_from_cam(cam), 1)) # 1000.0 HzLa biblioteca expresa el mismo ajuste con una cifra significativa más,
y
, la precisión que emplea la implementación
de ISO 532-2; ambas formas concuerdan dentro del 0,2 % en todo el margen
audible, y esas cifras de más son las que hacen de frequency_from_cam una
inversa exacta. No son auxiliares privados del modelo de sonoridad:
loudness_moore_glasberg llama a esas mismas tres funciones, de modo que una
rejilla MooreGlasbergLoudness.erb_number y un eje Cam construido por ti no
pueden separarse.
El filtro del oído no es una fracción constante de la frecuencia. Por debajo de unos 500 Hz es bastante más estrecho que un tercio de octava, y por eso la función de banda crítica «antigua», plana en baja frecuencia, ajusta tan mal ahí las medidas directas; por encima es más ancho. El eje superior cuenta la misma curva en Cam, de modo que pasos iguales sobre él son números iguales de filtros auditivos.
Ver el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import psychoacoustics
f = np.geomspace(50.0, 16000.0, 400)erb = psychoacoustics.erb_bandwidth(f)third_octave = f * (2 ** (1 / 6) - 2 ** (-1 / 6)) # 23 % de f, como referencia
fig, ax = plt.subplots()ax.loglog(f, erb, label="ERB$_N$ (Glasberg y Moore, 1990)")ax.loglog(f, third_octave, "--", label="Tercio de octava (23 % de f)")ax.set(xlabel="Frecuencia central [Hz]", ylabel="Ancho de banda rectangular equivalente ERB$_N$ [Hz]")ax.legend()
# El eje Cam arriba: marcas donde caen números ERB_N enteros.cam_ticks = np.arange(5.0, 40.0, 5.0)ax2 = ax.twiny()ax2.set_xscale("log")ax2.set_xlim(ax.get_xlim())ax2.set_xticks(psychoacoustics.frequency_from_cam(cam_ticks))ax2.set_xticklabels([f"{c:.0f}" for c in cam_ticks])ax2.set_xlabel("Número ERB$_N$ [Cam]")plt.show()Parámetros de erb_bandwidth(), cam_from_frequency() y frequency_from_cam()
Sección titulada «Parámetros de erb_bandwidth(), cam_from_frequency() y frequency_from_cam()»| Parámetro | Tipo | Unidades | Rango / defecto | Notas |
|---|---|---|---|---|
frequency | float o array | Hz | ≥ 0 | erb_bandwidth, cam_from_frequency |
cam | float o array | Cam | ≥ 0 | frequency_from_cam |
Cada una devuelve un float con entrada escalar y un array en caso contrario.
Las tres constantes se exportan como ERB_C1, ERB_C2 y CAM_C.
Sonoridad de Moore-Glasberg (ISO 532-2)
Sección titulada «Sonoridad de Moore-Glasberg (ISO 532-2)»Qué grabación corresponde a qué argumentos
Sección titulada «Qué grabación corresponde a qué argumentos»field y presentation no son preferencias: son descripciones de cómo llegó
el sonido a quien escucha, y equivocarlos cuesta más que cualquier diferencia
entre los modelos de esta página. El apartado 7.2 de ISO 532-2 lista las
situaciones de escucha y la función de transferencia que necesita cada una, y
el apartado 8.1 fija qué hacen con el resultado los dos oídos.
| Cómo se captó el sonido | field= | Por qué |
|---|---|---|
| Un micrófono en el centro de la posición que ocuparía la cabeza de quien escucha, ausente, con una única fuente frontal | 'free' | Columna 2 de la Tabla 1, la transferencia de campo libre hasta la membrana timpánica |
| El mismo micrófono en una sala reverberante o in situ | 'diffuse' | Columna 3 de la Tabla 1, la transferencia de campo difuso; también es la opción correcta para auriculares de campo difuso |
| Un micrófono de sonda a menos de 10 mm del tímpano (5 mm cuando hay componentes fuertes por encima de 3 kHz) | 'eardrum' | Apartado 7.2.4: el espectro ya está en la membrana, así que no se aplica ninguna función de transferencia |
| Un simulador de cabeza y torso | 'eardrum', pero solo si el simulador es un modelo acústico fiel de un adulto medio | Apartado 7.2.5; si no, necesita su propio fichero de corrección, que esta API no sabe expresar — ecualiza antes la grabación a campo libre o a campo difuso y usa la opción que corresponda |
Las cuatro situaciones del apartado 7.2, con la geometría que las decide. Las distancias de la escena 3 son las de la propia norma: 10 mm desde la membrana timpánica, 5 mm cuando el sonido tiene componentes fuertes por encima de 3 kHz.
El modo de fallo es silencioso y grande. Aplicar una transferencia de campo
libre a una señal que ya contiene la resonancia del canal auditivo cuenta dos
veces una ganancia de unos 15 dB cerca de 3 kHz: un tono de 3 kHz a 70 dB da
13,8 sonios (78,0 fonios) con field="free" y 5,0 sonios (62,7 fonios) con
field="eardrum", y nada en el resultado dice cuál de las dos era la
apropiada. En el otro sentido, una grabación de campo libre analizada como
'eardrum' se queda corta en la misma medida.
presentation es el otro factor dos. monaural calcula un oído con el
otro en silencio, diotic presenta la señal idéntica a los dos oídos — que es
lo que representa la grabación de un único micrófono en campo libre, ya que
ambos oídos escuchan el mismo campo — y binaural combina dos señales de oído
independientes a través de la etapa de inhibición de la norma. El tono
definitorio de 1 kHz a 40 dB es 1,000 sonios diótico y 0,667 sonios monoaural,
la razón 1,5 que enuncia el apartado 8.1, y la inhibición es la razón de que
dos oídos den alrededor de vez y media lo de un solo oído en vez de exactamente
el doble. Con una entrada de un solo espectro, binaural y diotic coinciden,
así que la distinción solo tiene efecto con la entrada de dos canales de
loudness_moore_glasberg_time. Ojo además con que loudness_ecma() solo
ofrece 'free' y 'diffuse', así que el material referido al tímpano hay que
corregirlo antes de que llegue al modelo de ECMA-418-2.
Donde Zwicker usa bandas críticas fijas sobre la escala Bark, Moore-Glasberg construye un patrón de excitación con filtros auditivos exponenciales redondeados (roex) dependientes del nivel sobre la escala del número ERB («Cam»), y luego aplica una transformación compresiva de excitación → sonoridad específica con (ISO 532-2:2017, Fórmula 7) y una etapa de inhibición binaural. Reproduce los casos de tono y de banda ancha del Anexo B con un uno o dos por ciento de error y, a diferencia de ISO 532-1, modela la suma binaural explícitamente.
import numpy as npfrom phonometry import psychoacoustics
# El ancla definitoria: una componente sinusoidal de 1 kHz a 40 dB SPL,# campo libre, binaural -> 1 sonio / 40 fonios por construcción del sonio.res = psychoacoustics.loudness_moore_glasberg_from_spectrum([(1000.0, 40.0)], field="free")print(f"N = {res.loudness:.3f} sonios ({res.loudness_level:.1f} fonios)") # 1.000 sonios (40.0 fonios)
# Desde una grabación calibrada: se forma el espectro de líneas de banda# estrecha (FFT, normalización que preserva la potencia) y se alimenta al# método exacto de componentes sinusoidales (ISO 532-2 apartados 5.2/5.4).fs = 48000x = np.sqrt(2) * 2e-5 * 10 ** (40 / 20) * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)res = psychoacoustics.loudness_moore_glasberg(x, fs, field="free", presentation="binaural")
res.plot() # sonoridad específica N'(i) sobre la escala del número ERB (Cam)El patrón de ISO 532-2 del ancla definitoria de 1 sonio. El pico no es una línea espectral sino la excitación que producen los filtros roex alrededor del tono, así que su anchura es la del filtro auditivo, no la de la resolución de análisis.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import psychoacoustics
# Desde una grabación calibrada: se forma el espectro de líneas de banda# estrecha (FFT, normalización que preserva la potencia) y se alimenta al# método exacto de componentes sinusoidales (ISO 532-2 apartados 5.2/5.4).fs = 48000x = np.sqrt(2) * 2e-5 * 10 ** (40 / 20) * np.sin(2 * np.pi * 1000 * np.arange(fs) / fs)res = psychoacoustics.loudness_moore_glasberg(x, fs, field="free", presentation="binaural")
# En una línea — el patrón de sonoridad específica N'(i) directo del resultado:res.plot(language="es")plt.show()
# O dibújalo a mano desde la rejilla del número ERB que ya lleva el resultado:fig, ax = plt.subplots()ax.fill_between(res.erb_number, res.specific, alpha=0.3)ax.plot(res.erb_number, res.specific)ax.set_xlabel("Número ERB [Cam]")ax.set_ylabel("Sonoridad específica N' [sonios/Cam]")plt.show()Desde un espectro de tercio de octava (apartado 5.5)
Sección titulada «Desde un espectro de tercio de octava (apartado 5.5)»El método exacto quiere componentes sinusoidales, pero el apartado 5.5 define la entrada que un sonómetro entrega de verdad: los niveles de las 29 bandas de tercio de octava contiguas de 25 Hz a 16 kHz sobre los centros nominales de IEC 61260-1:2014. Cada banda se supone plana y se expande internamente en un conjunto equivalente de componentes antes de que corra el método exacto. Hay dos restricciones que conviene decir sin rodeos: exactamente 29 valores y una rejilla fija — un sonómetro que registre de 20 Hz a 20 kHz hay que recortarlo a ella, y uno que se detenga en 8 kHz no sirve en absoluto.
# `psychoacoustics` lo importan los fragmentos de arriba.# Un espectro de ventilación tal como lo registra un sonómetro: 29 bandas de# tercio de octava, de 25 Hz a 16 kHz, en dB SPL.band_levels = [42.0, 45.0, 48.0, 51.0, 54.0, 56.0, 57.0, 57.0, 56.0, 55.0, 54.0, 53.0, 52.0, 51.0, 50.0, 49.0, 48.0, 47.0, 46.0, 45.0, 43.0, 41.0, 39.0, 37.0, 34.0, 31.0, 28.0, 25.0, 22.0]
n_mg = psychoacoustics.loudness_moore_glasberg_from_third_octave( band_levels, field="diffuse")print(f"{n_mg.loudness:.1f} sonios ({n_mg.loudness_level:.1f} fonios)") # 17.4 sonios (81.3 fonios)
# La misma medición pasada por ISO 532-1, que se detiene una banda antes:n_zw = psychoacoustics.loudness_zwicker_from_spectrum( band_levels[:28], field="diffuse")print(f"{n_zw.loudness:.1f} sonios ({n_zw.loudness_level:.1f} fonios)") # 13.8 sonios (77.9 fonios)Las dos normas ni siquiera coinciden en dónde termina el espectro: ISO 532-2
toma 29 bandas hasta 16 kHz e ISO 532-1 toma 28 hasta 12,5 kHz, que es la razón
del recorte. El resto de la diferencia son los modelos: excitación roex y suma
binaural explícita frente a la sonoridad de núcleo de ISO 532-1. Usa
field="diffuse" para una medición en sala hecha con un sonómetro corregido a
campo libre — el argumento de campo es donde más se equivoca quien entra por
niveles de banda.
loudness_moore_glasberg() y sus variantes _from_spectrum / _from_third_octave
Sección titulada «loudness_moore_glasberg() y sus variantes _from_spectrum / _from_third_octave»Los tres puntos de entrada solo se diferencian en cómo se aporta el espectro, y
comparten field y presentation.
| Parámetro | Se aplica a | Tipo | Unidades | Rango / valor por defecto | Notas |
|---|---|---|---|---|---|
x | loudness_moore_glasberg | array 1D | Pa | no vacío | Señal de presión calibrada |
fs | loudness_moore_glasberg | int | Hz | > 0 | |
components | _from_spectrum | lista de (f, L) | Hz, dB SPL | — | Componentes sinusoidales discretas |
band_levels | _from_third_octave | vector de 29 | dB SPL | 25 Hz .. 16 kHz | Centros nominales de IEC 61260-1; exactamente 29 |
field | las tres | str | — | 'free' (por defecto) / 'diffuse' / 'eardrum' | Transferencia del oído externo (apartado 7.2) |
presentation | las tres | str | — | 'binaural' (por defecto) / 'diotic' / 'monaural' | Suma binaural (apartado 8.1) |
Devuelve un MooreGlasbergLoudness: loudness (, sonios), loudness_level
(fonios), specific (, 372 bins de 0,1 Cam), erb_number,
centre_frequencies, field, presentation.
Sonoridad variable en el tiempo (ISO 532-3)
Sección titulada «Sonoridad variable en el tiempo (ISO 532-3)»ISO 532-3 envuelve el mismo modelo de excitación / sonoridad específica en un análisis espectral multirresolución deslizante (seis FFT paralelas, actualizadas cada 1 ms) y dos integradores temporales en cascada: la sonoridad de corto plazo , rápida, y la sonoridad de largo plazo , más lenta. La sonoridad de largo plazo de pico predice la sonoridad de sonidos de hasta unos 5 s.
import numpy as npfrom phonometry import psychoacoustics
fs = 32000t = np.arange(int(1.3 * fs)) / fsx = np.sqrt(2) * 2e-5 * 10 ** (40 / 20) * np.sin(2 * np.pi * 1000 * t)
res = psychoacoustics.loudness_moore_glasberg_time(x, fs, field="free")print(f"N_max = {res.n_max:.3f} sonios ({res.loudness_level_max:.0f} fonios)") # 1.000 sonios (40 fonios)print(f"sonoridad de largo plazo superada el 5% del tiempo: {res.percentiles[5.0]:.3f} sonios") # 0.999 sonios
res.plot() # sonoridad de corto plazo S'(t) y de largo plazo S''(t) frente al tiempoLa sonoridad de corto plazo sube en unas pocas decenas de milisegundos y cae despacio, imitando la sensibilidad rápida del oído al ataque y su recuperación más lenta; la de largo plazo vuelve a integrar esa traza con una constante de tiempo mucho mayor, así que apenas reacciona a una sílaba suelta y sigue en cambio el nivel global de un suceso. El máximo de esa traza lenta, , es el predictor que la norma da para la sonoridad de un sonido breve, y su validez se acaba hacia los 5 s porque más allá el oyente deja de juzgar el sonido como un único suceso. Por eso mismo los percentiles van a su lado: para un sonido que fluctúa sin una estructura clara de sucesos, un percentil de la sonoridad de largo plazo (típicamente el valor al 5 %) es el estadístico estable, mientras que lo fijaría el único peor instante.
Un pulso de 200 ms a 1 kHz y 60 dB SPL: la sonoridad de corto plazo alcanza 4,8 sonios en unas pocas decenas de milisegundos y se relaja deprisa, mientras la de largo plazo integra hasta 3,6 sonios y decae lentamente tras el final del pulso; el par de constantes de tiempo que definen los apartados 7.8/7.9 de ISO 532-3.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import psychoacoustics
# La figura es un pulso, no un tono estacionario: 1 kHz a 60 dB SPL, abierto# entre los 200 y los 400 ms de un registro de 0,8 s.fs = 48000t = np.arange(int(0.8 * fs)) / fssig = np.zeros_like(t)on = (t >= 0.2) & (t < 0.4)sig[on] = np.sqrt(2) * 2e-5 * 10 ** (60 / 20) * np.sin(2 * np.pi * 1000 * t[on])burst = psychoacoustics.loudness_moore_glasberg_time(sig, fs)print(round(float(burst.short_term_loudness.max()), 1), round(float(burst.long_term_loudness.max()), 1)) # 4.8 3.6
# El resultado lleva ambas trazas sobre un eje temporal de 1 ms:burst.plot(language="es")plt.show()Parámetros de loudness_moore_glasberg_time()
Sección titulada «Parámetros de loudness_moore_glasberg_time()»| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
|---|---|---|---|---|
signal | array 1D o (n, 2) | Pa | no vacío | Mono = diótico; dos columnas = oídos izquierdo/derecho |
fs | int | Hz | > 0 | |
field | str | — | 'free' (por defecto) / 'diffuse' / 'eardrum' | Transferencia del oído externo |
presentation | str | — | 'binaural' (por defecto) / 'diotic' / 'monaural' | Suma binaural |
percentiles | secuencia | porcentaje | por defecto (1, 5, 10, 50, 90, 95) | Niveles de sonoridad de largo plazo excedidos |
Devuelve un MooreGlasbergTimeVaryingLoudness: time (rejilla de 1 ms),
short_term_loudness / long_term_loudness (sonios), sus _level en fonios,
n_max, loudness_level_max, un dict percentiles, field, presentation.
Sonoridad del modelo de Sottek (ECMA-418-2)
Sección titulada «Sonoridad del modelo de Sottek (ECMA-418-2)»ECMA-418-2:2025 especifica un único front-end auditivo (filtrado del oído
externo/medio, un banco de 53 filtros de tipo gammatone sobre la escala Bark_HMS
con , rectificación de media onda, RMS de bloque y una no
linealidad compresiva, Fórmula 23) que comparten sus métricas de
sonoridad, tonalidad y aspereza. La sonoridad se expresa en sone_HMS, y
la misma ancla de 1 kHz/40 dB calibra el front-end. La implementación de sala
limpia devuelve 0,9845 sone_HMS para esa ancla en lugar de exactamente 1: el
residuo del 1,55 % viene del promediado de bandas que impone el apartado 6.2.3
sobre las bandas que caen en la frontera entre tamaños de bloque y que excita
el flanco inferior del tono, cerca de 800 a 900 Hz — sin ningún promediado de
bandas la cadena da 0,955; con el promediado restringido a las vecinas del
mismo tamaño de bloque, 0,996; y con el recálculo completo entre grupos que
exige la norma, 0,9845. La constante de calibración se conserva en su
valor tabulado literal en vez de reajustarse, que es la razón de que la
desviación se vea siquiera; la
referencia de la API de psychoacoustics.loudness.ecma
lleva la explicación completa.
import numpy as npfrom phonometry import psychoacoustics
fs = 48000t = np.arange(int(1.2 * fs)) / fsx = np.sqrt(2) * 2e-5 * 10 ** (40 / 20) * np.sin(2 * np.pi * 1000 * t)
res = psychoacoustics.loudness_ecma(x, fs, field="free")print(f"N = {res.loudness:.4f} sone_HMS") # 0.9845 sone_HMSprint(res.specific_loudness.shape) # (53,) sonoridad específica media N'(z)
res.plot() # sonoridad específica media N'(z) + N(l) dependiente del tiempo a 187.5 HzEl tono de 1 kHz a 60 dB SPL, N = 2,8 sone_HMS: un tono más sonoro que el ancla de 40 dB del fragmento de arriba, que da 0,98 sone_HMS. La sonoridad es el área bajo , así que un sonido de banda ancha que reparta un patrón bajo sobre muchas bandas puede pesar más que este pico único.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import psychoacoustics
# La figura es el tono de 60 dB, no el ancla de 40 dB del fragmento de arriba.fs = 48000t = np.arange(int(1.2 * fs)) / fsx = np.sqrt(2) * 2e-5 * 10 ** (60 / 20) * np.sin(2 * np.pi * 1000 * t)res = psychoacoustics.loudness_ecma(x, fs, field="free")print(f"N = {res.loudness:.1f} sone_HMS") # 2.8 sone_HMS
# El resultado lleva la sonoridad específica media sobre las 53 bandas Bark_HMS:res.plot(language="es")plt.show()
# O dibuja N'(z) a mano frente a la escala de razón de banda crítica:fig, ax = plt.subplots()ax.fill_between(res.bark, res.specific_loudness, alpha=0.3)ax.plot(res.bark, res.specific_loudness)ax.set_xlabel("Razón de banda crítica z [Bark_HMS]")ax.set_ylabel("Sonoridad específica N' [sone_HMS/Bark_HMS]")plt.show()Parámetros de loudness_ecma()
Sección titulada «Parámetros de loudness_ecma()»| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
|---|---|---|---|---|
signal_in | array 1D | Pa | no vacío | Señal de presión calibrada |
fs | float | Hz | > 0 | Se remuestrea a 48 kHz internamente si es necesario (apartado 5.1.1) |
field | str | — | 'free' (por defecto) / 'diffuse' | Filtro del oído externo/medio (apartado 5.1.3) |
Devuelve un EcmaLoudness: loudness (, sone_HMS), specific_loudness
(, 53 bandas), bark, centre_frequencies, time, loudness_vs_time
( a 187,5 Hz), field.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
El ancho de banda ERBN y la escala Cam de Glasberg y Moore (1990) de Moore 6.ª ed. pp. 76-77, mediante
erb_bandwidth(),cam_from_frequency()yfrequency_from_cam(). ISO 532-2:2017 (Moore-Glasberg): el patrón de excitación roex del apartado 7 y la inhibición binaural del apartado 8, medianteloudness_moore_glasberg()y sus variantes_from_spectrum/_from_third_octave. ISO 532-3:2023 (Moore-Glasberg-Schlittenlacher): la sonoridad de corto plazo del apartado 7.8, la de largo plazo del apartado 7.9 y su pico , medianteloudness_moore_glasberg_time(). ECMA-418-2:2025 (modelo de Sottek): el ensamblaje de sonoridad del apartado 8, medianteloudness_ecma().No cubierto
La combinación binaural de ECMA-418-2 (Fórmula 118, apartado 8.1.5) no está implementada:
loudness_ecma()es monaural, así que analiza cada canal por separado. El apartado 5 de ISO 532-3 exige remuestrear la entrada a 32 kHz antes del análisis FFT deslizante. Esta implementación procesa en cambio a la frecuencia de muestreo nativa, una desviación documentada que se mantiene dentro de la incertidumbre expandida de la norma. Remuestrea a 32 kHz primero si te importa la conformidad estricta apartado a apartado.
Véase también
Sección titulada «Véase también»- Sonoridad: el método de referencia de Zwicker (ISO 532-1), su ficha acreditada y las líneas isofónicas de ISO 226.
- Métricas de calidad sonora: la tonalidad, la aspereza y la intensidad de fluctuación construidas sobre el mismo front-end de ECMA-418-2.
- Teoría: las ecuaciones que sustentan los modelos de sonoridad.
- Referencia de la API:
psychoacoustics.loudness.moore_glasberg,psychoacoustics.loudness.moore_glasberg_timeypsychoacoustics.loudness.ecma. - Teoría: Modelos avanzados de sonoridad y calidad sonora: qué cambian los modelos de Moore-Glasberg y de Sottek respecto al de Zwicker, y por qué los tres discrepan donde lo hacen.
Respuestas rápidas
Sección titulada «Respuestas rápidas»¿Qué modelo de sonoridad elijo: Zwicker, Moore-Glasberg o Sottek?
Sección titulada «¿Qué modelo de sonoridad elijo: Zwicker, Moore-Glasberg o Sottek?»El método de Zwicker (ISO 532-1:2017) es el de referencia: estacionario y variable en el tiempo, entrada en tercios de octava, rápido y muy citado. Moore-Glasberg (ISO 532-2:2017) es estacionario, construye patrones de excitación roex y modela la suma binaural explícitamente; ISO 532-3:2023 añade la sonoridad variable en el tiempo de corto y largo plazo con el pico . El modelo de Sottek (ECMA-418-2:2025) se expresa en sone_HMS y comparte su front-end auditivo con las métricas de tonalidad y aspereza de ECMA.
Referencias
Sección titulada «Referencias»- Ecma International. (2025). Psychoacoustic metrics for ITT equipment — Part 2 (methods for describing human perception based on the Sottek Hearing Model) (ECMA-418-2, 4.ª ed.). La sonoridad del modelo de Sottek (sone_HMS).
- International Organization for Standardization. (2017). Acoustics — Methods for calculating loudness — Part 2: Moore-Glasberg method (ISO 532-2:2017). Sonoridad estacionaria a partir de patrones de excitación roex sobre la escala del número ERB, con suma binaural explícita.
- International Organization for Standardization. (2023). Acoustics — Methods for calculating loudness — Part 3: Moore-Glasberg-Schlittenlacher method (ISO 532-3:2023). Sonoridad variable en el tiempo de corto y largo plazo y el pico N_max.
- Moore, B. C. J. (2013). An introduction to the psychology of hearing (6.ª ed.). Brill. https://doi.org/10.1163/9789004252424El ancho de banda del filtro auditivo ERB_N y la escala Cam (número ERB_N) de Glasberg y Moore (1990), pp. 76-77.