Voice as password
The audio analogue of image-as-password. Speech is harder than images: every recording is noisy in different ways, microphones colour the spectrum differently, and the same speaker varies their delivery from one take to the next. The same coarse-canonicalize-then-hash idea still works — you just normalize on the time-frequency representation instead of the pixel grid. Record two clips below to see what survives.
Explore the pipeline
Two-slot comparison with byte-level deltas. Record or upload two clips to see how a perceptual audio hash treats variation between the takes.
Byte-level deltas
Pipeline visualization
Enroll a reference voice
Record the same fixed phrase you intend to use as your password. The Enroller emits a snippet you can drop into any client page.
Try the gate
VoicePasswordGate is a design-system component. Anything inside renders only after the user records a matching voice clip.
Enroll a reference voice clip. Once you do, this section becomes a real VoicePasswordGate — record again with the same speaker and phrase to unlock.
Pipeline notes + threat model
- Pick a short fixed phrase (~2-3 seconds) you can repeat reliably. Phrases with mid-frequency content (consonants, distinct prosody) hash more reliably than long vowels or whispered speech.
- Enroll on the same microphone and acoustic environment users will unlock from when possible. The pipeline tries to compensate (peak normalize, pre-emphasis, mel-scale) but a built-in laptop mic and a studio condenser produce meaningfully different spectra.
- Default to
tolerance="loose"for a v1. Voice has substantially more take-to-take variation than images, so the thresholds are wider than the image-as-password equivalent. Tighten tostandardafter measuring real attempt distances on your enrolled phrase. - The gate persists an unlock in
sessionStoragekeyed on the storage key plus the expected hash. BumpingstorageKeyinvalidates existing unlocks across the app. - Pass
debugwhile developing — the failure panel surfaces per-hash distance and threshold so near-misses are visible.
- Survives well: re-encoding (Opus/AAC), mild background noise, small amplitude differences, sample-rate conversion.
- Survives sometimes: different microphones, mild emotional variation, slight rate changes (faster/slower delivery).
- Breaks: different speaker, different phrase, heavy reverb/echo, aggressive denoising, time-stretching beyond ~10%.
VoicePasswordGate is a UX gate, not a security control. Expected hashes ship in your client bundle and the matching runs in the browser. A 64-bit perceptual hash is also far weaker than a real speaker-verification model — anyone who can imitate the cadence and timbre passably (or play back a recording of the enrolled clip) can unlock. Don't put real secrets behind it.