phonometry
Qué es
phonometry es una biblioteca de Python para medición, análisis y predicción acústica. Le das una señal, un espectro medido o un conjunto de datos geométricos y de materiales, y te devuelve la magnitud que define la norma, con los términos intermedios a la vista.
Cada resultado es un dataclass tipado e inmutable. Conserva los datos de entrada con los que se calculó, dibuja su propia figura con un .plot() de una línea en inglés o en español y, cuando una norma define un formato de informe, genera una ficha PDF de una página con .report().
La escribe y la mantiene una sola persona, se publica con licencia MIT en PyPI, se archiva con DOI en Zenodo y va por la versión 3.2.0. Necesita Python 3.13 con NumPy y SciPy; matplotlib, numba y reportlab son extras opcionales.
Para quién es
- Consultores y laboratorios de ensayo que necesitan el número que define la norma y los términos que hay detrás, en una forma que se pueda llevar a un informe.
- Investigadores que necesitan una implementación de referencia legible y citable en lugar de una caja negra, y ver de qué apartado sale cada fórmula.
- Ingenieros de audio, firmware y producto que necesitan filtros y ponderaciones de clase 1, distorsión, sonoridad y métricas de habla dentro de sus propios bancos de ensayo.
- Estudiantes y docentes, porque cada guía enuncia la norma, la fórmula y las hipótesis antes del código.
Qué no es
- No es un instrumento certificado. El informe de conformidad es la biblioteca comprobando su propia salida frente a valores publicados en las normas, no una calibración acreditada por un tercero. Una medición con validez legal sigue necesitando equipo con aprobación de modelo.
- No es un sistema de adquisición de datos. Procesa los arrays y los archivos que le pases; no habla con tarjetas de sonido, micrófonos ni analizadores.
- No implementa por completo todas las normas que cita. Cada guía indica qué apartados, métodos y anexos cubre y cuáles no.
Cómo se ve en uso
Dos cosas difíciles de afirmar y fáciles de enseñar: el resultado de un análisis se dibuja solo y, cuando una norma prescribe un formato de informe, ese mismo resultado lo genera en PDF.
Un análisis y la figura que dibuja
Niveles por bandas de tercio de octava de una señal de dos tonos, con los límites de banda de IEC 61260-1 y la densidad espectral de potencia bruta al fondo. La figura de abajo es la que está publicada en la documentación, no una maqueta.
import numpy as npfrom phonometry import metrology
fs = 48_000t = np.linspace(0, 1, fs, endpoint=False)signal = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t)
spl, freq = metrology.octave_filter(signal, fs=fs, fraction=3)Un índice global y la ficha que genera
El índice global de aislamiento a ruido aéreo de ISO 717-1 a partir de un espectro medido de 16 bandas, con el formato que usa un informe acreditado: cabecera de metadatos, tabla por bandas, curva medida frente a la curva de referencia desplazada, el resultado de un solo número enmarcado y el veredicto frente al requisito.
from phonometry import building, ReportMetadata
R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]
meta = ReportMetadata( specimen="200 mm reinforced-concrete wall", laboratory="Phonometry Reference Laboratory", report_id="PHN-2026-0042", requirement=42.0, # adds the verdict row)
building.weighted_rating(R).report("Rw_fiche.pdf", metadata=meta)
Ficha de aislamiento a ruido aéreo de una página: cabecera de metadatos, tabla de R en tercios de octava junto al gráfico de la curva medida frente a la de referencia desplazada, el resultado Rw (C; Ctr) enmarcado y el veredicto APTO frente al requisito.
Qué abarca
Nueve áreas, 66 guías y 120 páginas de referencia de la API. Cada fila enlaza al índice del área; las designaciones son las normas realmente implementadas ahí, no una lista de lecturas.
| Área | Normas implementadas |
|---|---|
| Análisis de señalBancos de filtros, ponderaciones, niveles, espectros, calibración e incertidumbre. | IEC 61260-1ANSI S1.11IEC 61672-1ISO 7196IEC 61252ISO 1996-1IEC 60942ISO 18233GUM |
| Audición y percepciónSonoridad, calidad sonora, inteligibilidad del habla, audición y exposición. | ISO 532-1/-2/-3ECMA-418-1/-2ISO 226DIN 45692IEC 60268-16ANSI S3.5ISO 7029ISO 1999ISO 9612 |
| Salas y edificaciónParámetros de sala, ruido de fondo, aislamiento en campo y laboratorio, predicción. | ISO 3382-1/-2/-3ISO 16283-1/-2/-3ISO 10140ISO 717-1/-2EN 12354-1…-6ISO 12999-1ISO 10052ANSI/ASA S12.2 |
| Materiales y superficiesAbsorción, resistencia al flujo de aire, tubo de impedancia, modelos porosos, dispersión. | ISO 354ISO 11654ISO 10534-2ISO 9053ISO 17497-1/-2ISO 13472EN 29052 |
| Vibración y ruido estructuralMovilidad y FRF, aisladores, potencia radiada, uniones, vibración en humanos. | ISO 7626ISO 10846ISO/TS 7849EN 15657EN 12354-5ISO 2631-1/-5ISO 5349ISO 8041 |
| Medio ambiente y transportePropagación en exteriores, barreras, refracción, aeronaves, helicópteros y aerogeneradores. | ISO 9613-1/-2ISO 1996-1/-2ISO/PAS 1996-3NT ACOU 112Anexo 16 OACIIEC 61265SAE ARP 5534Doc 29/32 CEACIEC 61400-11 |
| Acústica submarinaNiveles re 1 µPa, ruido radiado por buques, hincado de pilotes, ruido ambiente, pérdidas por transmisión. | ISO 18405ISO 17208-1/-2ISO 18406JOMOPANS-ECHO |
| Fuentes y dispositivosPotencia acústica, intensidad, declaraciones de emisión, electroacústica, sonoridad de programa. | ISO 3741ISO 3744/3746ISO 3745ISO 9614-1/-2/-3IEC 61043ISO 4871IEC 60268-3/-4/-5ITU-R BS.1770-5EBU R 128 |
| Simulación de ondasUn solver FDTD 2D determinista, validado frente a oráculos analíticos y no frente a una norma. | sin norma aplicable |
Empezar desde cero
Tres pasos, en orden. Los dos primeros son cuestión de minutos; al tercero se vuelve una y otra vez.
Instálala
Python 3.13 o posterior. La instalación básica trae NumPy y SciPy; el extra completo añade las figuras, la ponderación temporal de impulso acelerada y la generación de fichas PDF.
Opciones de instalaciónpip install phonometry[full]Haz un análisis completo
La guía de introducción recorre una vez toda la cadena de proceso, primero con una señal sintética y después con un archivo WAV: calibración, ponderación frecuencial, banco de filtros, ponderación temporal y los niveles que salen.
IntroducciónVe a tu dominio
Cada guía empieza por la norma que implementa, las magnitudes que define y las hipótesis, y sigue con el código y la figura. Cuando necesites la firma exacta, la referencia de la API tiene una página por módulo.
Referencia de la API