Ir al contenido

phonometry

Medición, análisis y predicción acústica en Python. Cada métrica se implementa a partir del texto de su norma, y CI la comprueba frente a las tablas de tolerancia y los ejemplos resueltos de esa misma norma en cada pull request.
278normas implementadas, en 53 dominios
506figuras, cada una en claro y oscuro, en inglés y español
32fichas PDF normativas que genera .report()

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 np
from phonometry import metrology
fs = 48_000
t = 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)
Espectro en tercios de octava de una señal de dos tonos, con la densidad espectral de potencia bruta al fondoEspectro en tercios de octava de una señal de dos tonos, con la densidad espectral de potencia bruta al fondo
De la guía de introducción: 33 bandas de 12,6 Hz a 20 kHz, con máximos en 100 Hz y 1 kHz.

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)
Informe de ejemplo ISO 717-1 a ruido aéreo (PDF)

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.

Descargar el informe (PDF)

Ficha del índice global a ruido aéreo (WeightedRatingResult.report), Rw (C; Ctr).

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.

ÁreaNormas 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.

  1. 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.

    pip install phonometry[full]
    Opciones de instalación
  2. 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ón
  3. Ve 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

Última actualización: