Skip to content

Voice routes: clone, retire

The Voice Verbs clone, retire as api.sb routes, with inputs, result, refusals and an example.

Reference for Voice, one group of Voice routes.

Voice.clone

Clone trains a Voice from a real speaker’s recordings after the speaker records Consent in that same voice. Verb page.

Text
POST /{namespace}/voices/clone

Body, as JSON: the inputs. Emits Voice.cloned.

Inputs

InputTypeRequiredDescription
speakerPersonrequiredThe person whose voice it is.
sampleslist of FilerequiredRecordings of the speaker.
consentConsentrequiredThe speaker’s Consent, spoken in the voice being cloned.
scopestringrequiredWho may speak in it.

Returns

OutputTypeRequiredDescription
voiceVoicerequiredThe Voice, training until the upstream finishes.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
The Consent is missing, withdrawn, or not spoken by the speakerrefusedClear what the check names, then call it again.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/voices/clone \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"speaker":"person_sLqbXbW683","samples":["file_V1AuhyCTsH"],"consent":"consent_lMkrg7nUGY","scope":"studio"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "voice": {
    "$id": "https://api.sb/leaseline.app/voices/voice_s6Qb8KW683",
    "$type": "Voice",
    "origin": "cloned",
    "scope": "studio",
    "status": "training"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Voice.clone",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Voice.retire

Retire deletes a Voice’s trained copy at the upstream and refuses new speech in it, keeping the record and every File made. Verb page.

Text
POST /{namespace}/voices/{voice}/retire

Path: voice. Body, as JSON: the other inputs. Emits Voice.retired.

Inputs

InputTypeRequiredDescription
voiceVoicerequiredThe Voice to retire.
reasontextWhy, such as Consent withdrawn.

Returns

OutputTypeRequiredDescription
voiceVoicerequiredThe Voice, now retired.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/voices/voice_s6Qb8KW683/retire \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "voice": {
    "$id": "https://api.sb/leaseline.app/voices/voice_s6Qb8KW683",
    "$type": "Voice",
    "origin": "cloned",
    "scope": "studio",
    "status": "training"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Voice.retire",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}