ACOUSTIC-SCRIBE
The chain-of-custody for sound. Every capture is bound to its capture-time, location, and the acoustic fingerprint of the recorder. Keystroke cadence and coil-whine workload class ride as separately-signed predicates. We promise tamper-evident observation — not 95% recovery accuracy.
Phase 9 alpha
In-process JS-layer capture (PCM buffers + WAV files) ships in Phase 9. Live microphone streaming + native audio device enumeration land in Phase 9.5 — same pattern as TRIPWIRE Phase 2 vs 2.5.
Characterize a recording device
pluck bureau acoustic-scribe fingerprint-device ./calibration.wav \
--keys ./keys --out ./device.fp.jsonOne-time per recorder. The 32-bin log-spaced frequency response + noise-floor RMS fold into the canonical fingerprint sha256.
Capture + sign
pluck bureau acoustic-scribe capture ./session.wav \
--keys ./keys --device-fingerprint ./device.fp.json \
--location 40.7128,-74.0060 --device-name lab-mic-1 \
--out ./bundlesRefuses to emit a capture without a device fingerprint. Refuses to notarize to the public Rekor without --accept-public.
Recover keystroke cadence
pluck bureau acoustic-scribe keystroke-scan ./bundles/abc.bundle.json \
--wav ./session.wav --keys ./keys --out ./bundlesResearch-grade detector — short-time spectral flux + adaptive threshold + 30 ms debounce. Operators wire their own per-character classifier via the classifycallback.
Classify coil-whine workload
pluck bureau acoustic-scribe workload-scan ./bundles/abc.bundle.json \
--wav ./session.wav --keys ./keys \
--baseline ./bundles/idle.bundle.json --baseline-wav ./idle.wavSynthetic baseline corpus ships with three classes (idle, gemm, attention). Real-world classification requires operator characterization of their hardware.
Predicate URIs
https://pluck.run/AcousticScribe/v1
https://pluck.run/AcousticScribe.KeystrokeCandidate/v1
https://pluck.run/AcousticScribe.CoilWhineWorkload/v1
https://pluck.run/AcousticScribe.DeviceFingerprint/v1Trust model
Every cassette is signed by the OPERATOR — they record what the operator observed, not what a vendor or downstream analyst claims. Verifiers run cosign verify-attestation offline against the persisted <envelopeHash>.intoto.jsonl; downstream consumers decide whether the cadence + candidate distribution is admissible.