Getting Started
Installation
Section titled “Installation”Option 1: From PyPI (Recommended)
pip install phonometryOptional extras:
pip install phonometry[plot] # matplotlib, for filter response plotspip install phonometry[perf] # numba, faster 'impulse' time weightingpip install phonometry[full] # bothOption 2: Cloning and Installing
git clone https://github.com/jmrplens/phonometry.gitcd phonometrypip install .Option 3: Git Submodule
git submodule add https://github.com/jmrplens/phonometry.git# Then install in editable mode to use it from your projectpip install -e ./phonometryThe processing chain at a glance
Section titled “The processing chain at a glance”Every phonometry analysis is some subset of one pipeline — take the raw signal, convert it to physical units, weight it in frequency, split it into standardized bands, smooth it in time and reduce it to metrics:
Each stage is an independent function or class you can use on its own; the guides cover them left to right (Calibration → Frequency Weighting → Filter Banks → Time Weighting → Levels).
Basic Usage: 1/3 Octave Analysis
Section titled “Basic Usage: 1/3 Octave Analysis”Analyze a signal and get the Sound Pressure Level (SPL) per frequency band.
import numpy as npfrom phonometry import octavefilter
fs = 48000t = np.linspace(0, 1, fs, endpoint=False)# Composite signal: 100Hz + 1000Hzsignal = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t)
# Apply 1/3 octave filter bankspl, freq = octavefilter(signal, fs=fs, fraction=3)
print(f"Bands: {freq}")print(f"SPL [dB]: {spl}")

Example of a 1/3 Octave Band spectrum analysis of a complex signal.
Analyzing an audio file
Section titled “Analyzing an audio file”from scipy.io import wavfilefrom phonometry import octavefilter
# Load standard WAV filefs, signal = wavfile.read("measurement.wav")
# Analyze# Note: To obtain real-world SPL values, you must calibrate the input.# See the Calibration guide.spl, freq = octavefilter(signal, fs=fs, fraction=3)Integer audio (e.g. int16 WAV data) is converted to float64 internally, so it is
safe to pass wavfile.read output directly.
Where to go next
Section titled “Where to go next”- Filter Banks — choose an architecture and inspect responses
- Calibration and dBFS — get real-world SPL values
- API Reference — every parameter of every function