Ir al contenido

Primeros pasos

Opción 1: Desde PyPI (recomendada)

Ventana de terminal
pip install phonometry

Extras opcionales:

Ventana de terminal
pip install phonometry[plot] # matplotlib, para las gráficas de respuesta
pip install phonometry[perf] # numba, ponderación temporal 'impulse' más rápida
pip install phonometry[full] # ambos

Opción 2: Clonar e instalar

Ventana de terminal
git clone https://github.com/jmrplens/phonometry.git
cd phonometry
pip install .

Opción 3: Submódulo de git

Ventana de terminal
git submodule add https://github.com/jmrplens/phonometry.git
# Después, instálalo en modo editable para usarlo desde tu proyecto
pip install -e ./phonometry

Todo análisis con phonometry es un subconjunto de una misma cadena: tomar la señal cruda, convertirla a unidades físicas, ponderarla en frecuencia, dividirla en bandas normalizadas, suavizarla en el tiempo y reducirla a métricas:

Cadena de procesado de phonometry: señal, calibración, ponderación frecuencial, banco de filtros de octava, ponderación temporal y métricas, con la norma verificada en cada etapaCadena de procesado de phonometry: señal, calibración, ponderación frecuencial, banco de filtros de octava, ponderación temporal y métricas, con la norma verificada en cada etapa

Cada etapa es una función o clase independiente que puedes usar por separado; las guías las recorren de izquierda a derecha (CalibraciónPonderación frecuencialBancos de filtrosPonderación temporalNiveles).

Analiza una señal y obtén el nivel de presión sonora (SPL) por banda de frecuencia.

import numpy as np
from phonometry import octavefilter
fs = 48000
t = np.linspace(0, 1, fs, endpoint=False)
# Señal compuesta: 100 Hz + 1000 Hz
signal = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t)
# Aplicar el banco de filtros de 1/3 de octava
spl, freq = octavefilter(signal, fs=fs, fraction=3)
print(f"Bandas: {freq}")
print(f"SPL [dB]: {spl}")

Análisis en tercios de octava de una señal multitono con la PSD cruda de fondoAnálisis en tercios de octava de una señal multitono con la PSD cruda de fondo

Ejemplo de análisis espectral en tercios de octava de una señal compleja.

from scipy.io import wavfile
from phonometry import octavefilter
# Cargar un archivo WAV estándar
fs, signal = wavfile.read("measurement.wav")
# Analizar
# Nota: para obtener valores SPL reales debes calibrar la entrada.
# Consulta la guía de calibración.
spl, freq = octavefilter(signal, fs=fs, fraction=3)

El audio entero (por ejemplo, datos int16 de un WAV) se convierte internamente a float64, así que es seguro pasar directamente la salida de wavfile.read.

Creado y mantenido por· GitHub· PyPI