Skip to content

Anthropophony

Beyond the privacy VAD gate (Machine listening), a soundscape wants a descriptor of human presence. Speech and conversation carry two signatures the cached features already hold: energy in the voice band (~250–2000 Hz) and, above all, amplitude modulation at the 3–8 Hz syllabic rate — the strongest model-free speech cue. anthropophony reads the features (no audio pass, no ML) and its descriptors ride in the analyze summary.

What it measures

  • anthro_voiceband_fraction — share of octave energy in 250–2000 Hz.
  • anthro_syllabic_mod — share of the 50 Hz-envelope modulation energy in 3–8 Hz (conversation / announcement cadence).
  • anthro_activity_fraction — seconds where the voice band rises above its own running background.
  • anthropophony_index — the three combined, in [0, 1].

Usage

ambiscape analyze <session>        # anthro_* keys appear in the summary
ambiscape anthropophony <session>  # detail: writes anthropophony.json
from ambiscape import anthropophony, features
F = features.load_features(sorted((out / "features").glob("*.npz")))
anthropophony.summarize_anthropophony(F)

Caveats

Proxies, not detection. Music, radio, and TV also fill the voice band and modulate syllabically; confirm actual speech with ambiscape.ml.speech_fraction (silero-VAD, [ml] extra) before treating this as human talk. The privacy stance is the deposit module's: publish features, not audio.