VSIP

03 / Identity

Enroll a voice once. Recognise it forever.

A REST API for persistent voiceprints. Enroll from a few seconds of speech, then verify 1:1 or identify 1:N — and carry that identity straight into a live stream.

01

Three calls

profiles.py
from vsip import ProfilesClient

profiles = ProfilesClient(api_key="vsip_...")

# 1. Enroll — a few seconds of clean speech is enough
p = await profiles.enroll(audio, label="ada@acme.com", consent_obtained=True)

# 2. Verify — is this the same person? (1:1)
v = await profiles.verify(p["id"], audio)
print(v["match"], v["score"])          # True 0.91

# 3. Identify — who is this, out of my roster? (1:N)
who = await profiles.identify(audio)
print(who["best_match"])               # {"label": "ada@acme.com", ...}

02

A voiceprint is not a recording

What gets stored is a 192-number embedding — a mathematical fingerprint of a voice. The audio you send is processed in memory and discarded. The embedding cannot be played back, and it cannot be turned back into speech.

Quality gates run before anything is stored: audio that is too short, too quiet, or classified as noise rather than speech is rejected at enrollment with a clear reason, so you never build a profile on a bad sample.

03

Built for regulated teams

Voiceprints are biometric data, and the API treats them that way. Every profile carries an explicit consent_obtained flag and an optional retention_days window, after which it is deleted automatically by a background janitor — not by you remembering to.

You can also set a per-request threshold to tune how strict a match must be, trading false accepts against false rejects for your own risk appetite.

04

What you get back

Returning-caller recognition

The caller is known before they finish their first sentence — no account number, no “can you confirm your date of birth”.

Voice as a second factor

Pair a verification score with your existing auth to raise confidence on sensitive actions, without adding a step for the user.

Household & shared devices

Identify which family member is at the kiosk or speaker, and personalise from the first word.

Agent hand-off continuity

The same voiceprint follows the customer across sessions, channels and products.

Roster matching

Identify against a list of enrolled voices (1:N) and get the best match with a score — or nothing, if no one clears the bar.

Live-stream seeding

Open a stream with ?profile_id= and the session locks to that person from the first word — no in-session enrollment.

05

Specs

Embedding192-dimension speaker vector (CAM++)
Enrollment audio≥3s of speech; wav, mp3, or μ-law 8k telephony audio
ThresholdPer-request, clamped to 0.5–0.95 (default tuned for balanced error)
AuthAPI key (vsip_…) or a dashboard session — both work
RetentionPer-profile window in days, enforced by an automatic purge
Stream integrationGET /v1/stream?profile_id=… locks the session to that voice

Recognise your customers.