Anthrophony
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, which is the
strongest model-free speech cue. anthrophony 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.anthrophony_index: the three combined, in [0, 1].
Usage
ambiscape analyze <session> # anthro_* keys appear in the summary
ambiscape anthrophony <session> # detail: writes anthrophony.json
from ambiscape import anthrophony, features
F = features.load_features(sorted((out / "features").glob("*.npz")))
anthrophony.summarize_anthrophony(F)
Caveats
Proxies, not detection. Music, radio, and TV also fill the voice band and
modulate syllabically, so a radio left on in an empty room reads much like a
conversation. 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.