Conclave Docs

Voiceprints

CAM++ 512-d voice embeddings, sealed and deterministic.

A voiceprint is how VFTE recognizes a speaker across meetings without ever storing their audio or their words.

What it is

  • A CAM++ 512-dimension voice embedding, computed by a pure-numpy fbank front-end feeding a CAM++ ONNX model (CPU — no GPU, no torch in production).
  • A voiceprint holds ≤ 20 exemplars with eviction, a recomputed centroid, k-means sub-centroids, and a quality score. Its id is deterministic.
  • Stored AES-256-CBC + HMAC-SHA256 sealed at rest (MAGIC + IV + HMAC blob; HKDF-derived enc/mac keys; master key TEE-sealed via dstack).

VFTE holds voiceprints and consent edges — never audio, never transcript content.

Enrollment → identification

  • Enroll (POST /v1/enroll) — labeled audio + identity (email) + workspace → embedding → create-or-strengthen the voiceprint. Gated by consent (enroll_allowed) and a quality threshold.
  • Identify (POST /v1/identify-spans, the flagship) — pre-diarized spans are matched, votes are locked across the session, and spans are retro-relabeled. Decision tiers: MATCH (≥ 0.45) · AMBIGUOUS (top-2 within 0.10) · LOW · UNKNOWN, with sigmoid-calibrated confidence. live mode is read-only; offline mode may write.

The first meeting enrolls a new voice; later meetings recognize it — so the voiceprint count does not grow as the same people keep meeting.

You own it

Because the id is deterministic and the store is portable, a voiceprint is a thing a person can actually control:

  • Forget / erasure — hard-delete, leaving only an append-only ledger row + a signed receipt.
  • Deletion proof — an Ed25519-signed, offline-verifiable receipt (#1, merged in VFTE).
  • Export / import — signed export of the exemplars and re-import elsewhere (#4, merged), cross-model blocked.

See the consent plane for who is allowed to be recognized, and VFTE features for the full surface.

Source: FEATURE-SPEC.md §4.1–4.8.

On this page