xEARSDROPx v0.1

Live audio recognition. Music. Voice. Environment.

Point your microphone at anything. Earsdrop tells you what it hears — and is honest about what it can't (yet).

idle

Waveform

Spectrogram

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.

No match yet. Start listening and hit Identify.

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.

0 / 3 samples
Live match will appear here while listening.

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.

Top-3 predictions will show here.
SDR not connected. Electromagnetic detection requires a Software-Defined Radio receiver (e.g. RTL-SDR, ~$30). A browser microphone cannot detect radio frequencies — the physics doesn't work. This tab is a placeholder until we wire an SDR via WebSerial or a local HTTP proxy.

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.