reference_voiceprint=<id>. Without a
reference, speaker_lock, voice_isolation and diarize take the first voice they hear as S1; with one, S1
is the stored person from the start, so a call where someone else speaks first, or a background voice that is louder
at the start, is still locked to the right person.
Create: POST /v1/voiceprints
- The voiceprint covers both channels: it is computed from the recording as sent and from the same speech through a simulated telephone line, so a voice recorded on a microphone or app is also recognised on a phone call.
- Only the speaker embedding (a list of numbers from which the audio cannot be rebuilt) is stored, with the name and the consent record. The recording is not kept: it is deleted as soon as the voiceprint is computed. Voiceprints are stored on the server that answers the API.
- Errors:
400missing consent / name, longer than 120 s;422less than 3 s of speech, or more than one voice in the recording;409limit of 1 000 voiceprints per account reached. - A voiceprint belongs to your account (API key’s tenant); other accounts get
404.
List, read, delete
DELETE removes the voiceprint for good (use it when the person withdraws consent); requests that still name it get
404. The embedding itself is never returned. Voiceprint calls are not billed.
Use: reference_voiceprint
- Works on files (sync and asynchronous; also in
extra_bodywith OpenAI model names),/v1/stream(query) and/v1/realtime(query or session fieldreference_voiceprint). - Needs
voice_isolation,speaker_lockordiarize(else400). Unknown or deleted id →404(live: close4400). voice_isolation+ reference: the isolation model follows the stored person from the first second; it still switches on only when another voice is heard.diarize+ reference:S1= the stored person, othersS2,S3, ….- After an update of the voice model a voiceprint may answer
409(“create it again”); this is announced in the changelog.
Not stored: store=false
With store=false nothing is kept on our side. The answer carries a token instead of an id: the voiceprint,
encrypted and authenticated with a server key (AES-256-GCM) and bound to your account. You keep it (e.g. in your CRM
next to the customer) and send it wherever an id is accepted: reference_voiceprint=<token> and
POST /v1/voiceprints/verify with voiceprint=<token>.
- The token cannot be read or changed by anyone (a changed token, or one of another account →
404). It is still a derivative of a person’s voice: store it like other personal data, delete it when consent is withdrawn (that is the deletion — there is nothing on our side). - It does not show in
GET /v1/voiceprintsand does not count against the 1 000 limit. It stays valid until the voice model changes (then409, create it again; announced in the changelog).