istft — ACOUSTICS transform op

Data kinds: tablesignal

Call: import acoustics; acoustics.istft(transform) (or opsacoustics.get("istft"))

Usage

Invert :func:stft by weighted overlap-add — exactly.

Weighted overlap-add divides the synthesised sum by the overlap sum of the

*squared* window, which makes the reconstruction exact for any window and

hop satisfying NOLA, not only for the COLA pairs. :func:stft refuses the

NOLA violation up front, so if the transform was produced by it the inverse

cannot be lossy.

Measured round-trip error, `max |x - istft(stft(x))|` on 4096 samples of

white noise (float64, so 2.2e-16 is one ulp of the largest sample):

=============== ==== ==== ========= =========

window win hop max error nola_min

=============== ==== ==== ========= =========

hann 256 128 1.33e-15 0.5

hann 256 64 1.33e-15 1.5

hann 256 255 2.73e-12 2.27e-08

hamming 256 128 1.33e-15 0.5832

blackman 512 128 1.33e-15 1.206

flattop 256 64 1.33e-15 0.396

boxcar 256 128 8.88e-16 2.0

hann (nfft 512) 256 128 1.33e-15 0.5

=============== ==== ==== ========= =========

Read the third row's two columns together. `hop = 255` on a 256-sample

window overlaps by one sample, which breaks plain (unweighted) overlap-add

completely; weighted overlap-add still inverts it, but only to 2.7e-12

rather than 1.3e-15, because the squared-window overlap sum falls to

2.3e-08 and the reconstruction divides by it. NOLA is satisfied and the

result is four orders of magnitude less accurate than every other row —

which is why `nola_min` is *returned* and not merely checked. A NOLA

minimum that is small but positive is a conditioning warning, and there is

no threshold at which it stops being one, so no threshold is invented here.

Raises `ValueError: a dict missing any key :func:stft` writes, a

`spectra whose shape disagrees with the recorded nfft` / frame count,

or a non-complex `spectra`.

Detailed usage guide

acoustic_condition_monitoring family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

acoustic_condition_monitoringpy -3.11 examples/acoustic_condition_monitoring.py

Ops the type connects to (they accept signal as input)

stft · envelope_spectrum · spectral_kurtosis · cepstrum · angular_resample · order_spectrum · octave_spectrum · weighting_response

Same category (transform)

stft · stft_cola_check


*Provenance: acoustics.py — ACOUSTICS operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.