Por qué phonometry
phonometry es un conjunto de herramientas de medición acústica basado en normas. Su elemento diferenciador no es la lista de funcionalidades, sino cómo están construidas: cada métrica se implementa a partir del texto de la norma que la rige, y los valores de referencia y límites de aceptación de la propia norma se transcriben a la batería de tests y se exigen en CI. Esta página explica ese enfoque con un caso de estudio concreto — la ponderación temporal según IEC 61672-1:2013 — y resume qué está verificado por conformidad hoy. El análisis de la ponderación temporal se publicó originalmente en la incidencia #38.
Filosofía de diseño: un caso de estudio en ponderación temporal
Sección titulada «Filosofía de diseño: un caso de estudio en ponderación temporal»La ponderación temporal estándar se define como una función continua del tiempo mediante la ecuación diferencial
que corresponde a un filtro paso-bajo de primer orden estable con un polo en el semiplano izquierdo ().
| phonometry | python-acoustics | |
|---|---|---|
| Salida | Envolvente continua con ponderación temporal (un valor por muestra) | Salida escalonada (un valor cada τ segundos) |
| Unidades de entrada | Presión sonora cruda (Pa); se eleva al cuadrado internamente | Se espera la magnitud energética (Pa²) como entrada |
| Filtro | Promediado exponencial estable (polo en ) | Diseño teóricamente inestable (polo en el semiplano derecho) estabilizado reiniciando el estado cada τ segundos |
| Comportamiento | Ponderación temporal IEC verdadera | Más cercano a un integrador por bloques () |
Un polo en el eje real negativo corresponde a una respuesta al impulso exponencial decreciente () — exactamente lo que significa “ponderación temporal exponencial”: los eventos pasados se olvidan exponencialmente. Un polo en el eje real positivo crece sin límite; el reinicio por bloques lo oculta, pero cambia la naturaleza de la medición.
Verificación frente a IEC 61672-1 (ráfagas de tono)
Sección titulada «Verificación frente a IEC 61672-1 (ráfagas de tono)»La prueba rigurosa para la ponderación temporal es la respuesta a ráfaga de tono (IEC 61672-1, Tabla 4), usando una ráfaga senoidal de 4 kHz referida al nivel de régimen estacionario.
Resultados de phonometry (FAST):
| Duración de la ráfaga | Objetivo IEC (dB) | phonometry (dB) | Error (dB) | Estado |
|---|---|---|---|---|
| 200 ms | −1.0 | −0.98 | +0.02 | ✅ PASA |
| 50 ms | −4.8 | −4.82 | −0.02 | ✅ PASA |
| 10 ms | −11.1 | −11.14 | −0.04 | ✅ PASA |
| 1 ms | −20.9 | −20.99 | −0.09 | ✅ PASA |
Resultados de python-acoustics (FAST, pasando la señal al cuadrado como requiere esa librería):
| Duración de la ráfaga | Objetivo IEC (dB) | python-acoustics (dB) | Error (dB) | Estado |
|---|---|---|---|---|
| 200 ms | −1.0 | −0.97 | +0.03 | ✅ PASA |
| 50 ms | −4.8 | −3.93 | +0.87 | ⚠️ FALLA |
| 10 ms | −11.1 | −10.90 | +0.20 | ✅ PASA |
| 1 ms | −20.9 | −20.90 | +0.00 | ✅ PASA |
phonometry mantiene alta precisión en todos los casos. El enfoque por bloques se desvía significativamente (más de 0,8 dB) en la ráfaga de 50 ms porque los bloques de 125 ms no pueden resolver con precisión eventos transitorios cortos — el resultado depende de cómo se alinee la ráfaga con los límites de los bloques.


Envolventes Fast medidas (azul) coincidiendo con los valores de referencia de la Tabla 4 (discontinua) dentro de 0,1 dB para ráfagas de 200/50/10 ms.
Qué significa esto en la práctica
Sección titulada «Qué significa esto en la práctica»- Si necesitas envolventes Fast/Slow/Impulse conformes con la norma
(comportamiento de sonómetro, un nivel por muestra), usa
time_weightingde phonometry. - Si necesitas un Leq promediado por bloques por intervalo, esa es una
métrica distinta e igualmente válida — puedes calcularla con
leqsobre segmentos consecutivos. - Ambos enfoques son útiles; simplemente responden preguntas distintas. La discrepancia reportada en la incidencia #38 proviene de comparar una envolvente continua con un integrador por bloques, no de un error de implementación.
Verificación por conformidad en toda la librería
Sección titulada «Verificación por conformidad en toda la librería»El caso de las ráfagas de tono de arriba no es una comprobación aislada. Para cada norma que la librería implementa, los valores de referencia y los límites de aceptación se transcriben del texto oficial a la batería de tests, de modo que cualquier regresión hace fallar la CI:
| Norma | Qué se verifica | Archivo de test |
|---|---|---|
| IEC 61672-1:2013 Tabla 3 | Ponderación A/C/Z en las 34 frecuencias nominales, límites de clase 1, a 48 y 96 kHz | tests/test_iec_weighting_table3.py |
| IEC 61672-1:2013 Tabla 4 | Respuestas F/S a ráfagas de tono (de 1 s a 1 ms) y la columna LAE para sel() | tests/test_iec_compliance.py |
| IEC 61672-1:2013 Tabla 5 | Respuestas de pico de un ciclo/medio ciclo de lc_peak(), límites de clase 1 | tests/test_levels.py |
| IEC 61260-1:2014 Tabla 1 | Límites de aceptación de clase 1/2 del banco de filtros mediante verify_filter_class() | tests/test_compliance.py |
| ISO 7196:1995 Tabla 2 | Ponderación G (infrasonidos) en todos los valores nominales de respuesta, 0,25–315 Hz | tests/test_g_weighting.py |
| ISO 226:2023 Anexo B | Líneas isofónicas, niveles de sonoridad y umbral de audición frente a las tablas del Anexo B | tests/test_equal_loudness.py |
| ECMA-418-1:2024 | Prominencia tonal TNR/PR: anchos de banda críticos, separación de proximidad y criterios de prominencia frente a los ejemplos resueltos de los apartados 10–12 | tests/test_tonality.py |
| ISO 1996-1:2016 | lden(), ldn() y composite_rating_level() frente a valores de las fórmulas calculados a mano | tests/test_environmental.py |
| IEC 60942:2017 Tabla 2 | Límites de estabilidad a corto plazo del calibrador (dependientes de la frecuencia, clase 1) en calculate_sensitivity() | tests/test_calibration_validation.py |
Más allá de la dosis de ruido al estilo IEC 61252 (sound_exposure(),
lex_8h()), la misma mentalidad de “primero la norma” se refleja en la parte
numérica: los bancos de filtros sitúan sus puntos de −3 dB en los bordes de
banda de ANSI S1.11 / IEC 61260-1 para todas las arquitecturas (incluidos
Chebyshev II y Bessel, donde la parametrización cruda de scipy no lo haría), y
la ponderación A/C se mantiene dentro de las tolerancias de clase 1 hasta
16 kHz a las frecuencias de muestreo habituales gracias al sobremuestreo
interno (consulta
Ponderación frecuencial).
Dónde encaja phonometry en el ecosistema Python
Sección titulada «Dónde encaja phonometry en el ecosistema Python»- python-acoustics se archivó en febrero de 2024 y ya no se mantiene. Su comparación de arriba refleja el último código publicado.
- acoustic-toolbox, el sucesor comunitario de python-acoustics, depende de phonometry para sus cálculos de niveles ponderados en lugar de reimplementarlos.
- MoSQITo se centra en métricas psicoacústicas de calidad sonora (sonoridad, agudeza, aspereza). Complementa a phonometry en lugar de solaparse con ella: no cubre la metrología de niveles sonoros (filtros de ponderación, ponderación temporal, Leq/SEL/Lden, calibración) y no declara verificación por conformidad frente a las tablas de tolerancias de las normas.
Si tu trabajo necesita números que puedas defender frente a la tabla de tolerancias de una norma — informes de medición, evaluaciones ambientales, contrastes con instrumentos — esa capa de verificación es la razón de ser de phonometry.