Point your microphone at anything. Earsdrop tells you what it hears — and is honest about what it can't (yet).
Records a 12-second window, extracts the constellation fingerprint locally, and sends it to AudD for cloud lookup. Free tier: 10 IDs/day. After that Bill needs to drop a key in config.js.
Enroll your voice with 3 short (~3 second) clips. We store a 13-dim MFCC centroid in public.voice_profiles and match live audio by cosine similarity. This is a demo-grade model — production voice-ID needs a proper x-vector network.
Uses @tensorflow-models/speech-commands (18 built-in labels: unknown, background_noise, and 16 spoken digits/words) as the MVP classifier. YAMNet (521 AudioSet classes: dog, cat, glass_break, engine, etc.) is a follow-up — noted in the README.
Planned integration: local SDR daemon POSTs observations to:
POST /api/em-observation
Content-Type: application/json
{
"freq_hz": 915000000, // center frequency
"snr_db": 18.4, // signal-to-noise ratio
"bandwidth_hz": 200000, // occupied bandwidth
"iq_samples_url": "s3://.../iq.bin", // optional raw IQ dump
"modulation": "FSK", // guessed modulation
"captured_at": "2026-08-02T17:00:00Z",
"device_id": "rtl-sdr-01"
}
Future work: WebSerial adapter for RTL-SDR dongles, waterfall visualization, and known-signal ontology (LoRa 915 MHz, ADS-B 1090 MHz, ISM bands).
What actually works vs. what's stubbed.