pystoi
Computes Short Term Objective Intelligibility measure
What it is and what it does
pystoi is a Python implementation of the classical and extended Short Term Objective Intelligibility (STOI) measures, which quantify how intelligible a degraded speech signal is relative to a clean reference. It takes two audio signals—one clean and one degraded by noise, processing, or vocoding—and returns a score correlating with perceived intelligibility. The package wraps numpy and scipy to perform the time-frequency analysis underlying the STOI algorithm.
The measure is intrusive (requires both signals) and serves as an alternative to speech intelligibility index (SII) or speech transmission index (STI), particularly useful when evaluating nonlinear processing like noise reduction or binary masking. It was ported from Cees Taal's original Matlab implementation and includes both classical and extended variants.
Use it for:
- Evaluate speech quality after noise reduction or denoising algorithms to quantify intelligibility improvement.
- Assess vocoded speech quality in cochlear implant (CI) simulations or other speech coding scenarios.
- Compare intelligibility across different audio processing pipelines or parameter settings.
- Validate speech enhancement systems by measuring intelligibility gain on degraded signals.
- Research speech processing effects on intelligibility in academic or industrial audio labs.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Computes Short Term Objective Intelligibility (STOI) measures for speech signals, quantifying how intelligible degraded audio is compared to a clean reference.
Yes, if you need an intrusive intelligibility metric for speech signals and can accept dormant maintenance. The package is stable, has low install friction, carries no security vulnerabilities, and is MIT-licensed. However, verify compatibility with your Python version and confirm the codebase meets your performance needs, since the last release was 959 days ago.
Install
pystoi on PyPI
pip
pip install pystoiuv
uv add pystoipoetry
poetry add pystoiInstalling pystoi
Before you install
Low friction installation with only numpy and scipy as dependencies. Dormant maintenance status—last release was 959 days ago, though the repository remains active and unarchived with 360 stars.
License in practice
MIT license permits commercial and private use with minimal restrictions; attribution required but no copyleft obligations.
Quickstart
pip install pystoi
from pystoi import stoi
import numpy as np
# clean and degraded are 1D numpy arrays, fs is sample rate
score = stoi(clean, degraded, fs, extended=False)
Input signals must be 1D arrays of equal length; STOI is intrusive (requires both clean reference and degraded signal).
Verify before relying
- Whether the package works reliably with modern Python 3.x versions (classifiers list both Python 2.7 and 3, but maintenance is dormant).
- Current performance characteristics and whether the 4x speed-up mentioned in the description has been merged into the main branch.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — numpy, scipy |
| Maintenance | dormant — 959 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 921,980/month — #4,716 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pystoi-0.4.1-py2.py3-none-any.whl
Tags
More Information Analysis packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
networkxNetworkX provides data structures and…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
snowflake-snowpark-pythonSnowpark Python provides APIs to query and…
permissive · top 1,000 on PyPI
torch-stoiComputes Short Term Objective Intelligibility…
permissive · top 15,000 on PyPI
pyloudnormMeasures and normalizes audio loudness…
permissive · top 5,000 on PyPI
pyrnnoisePython bindings for RNNoise that perform…
unclear · top 15,000 on PyPI
noisereduceReduces noise in audio and time-domain signals…
permissive · top 15,000 on PyPI
deepfilternetDeepFilterNet removes background noise from…
permissive · top 15,000 on PyPI
mlx-audioMLX-Audio provides text-to-speech,…
permissive · top 15,000 on PyPI
livekit-plugins-ai-cousticsA LiveKit plugin that applies Ai-coustics audio…
unclear · top 15,000 on PyPI
silero-vadSilero VAD detects speech activity in audio…
permissive · top 5,000 on PyPI
praat-parselmouthParselmouth provides a Pythonic interface to…
copyleft · top 15,000 on PyPI
GammatoneApplies banks of gammatone filters to audio…
unclear · top 15,000 on PyPI