Pluck Studio / Bureau

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.json

One-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 ./bundles

Refuses 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 ./bundles

Research-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.wav

Synthetic 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/v1

Trust 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.