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.
POST /{namespace}/ voices/ cloneBody, as JSON: the inputs. Emits Voice.cloned.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
speaker | Person | required | The person whose voice it is. |
samples | list of File | required | Recordings of the speaker. |
consent | Consent | required | The speaker’s Consent, spoken in the voice being cloned. |
scope | string | required | Who may speak in it. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
voice | Voice | required | The Voice, training until the upstream finishes. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use 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 speaker | refused | Clear what the check names, then call it again. | None. |
Example
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"}'{
"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.
POST /{namespace}/ voices/ {voice}/ retirePath: voice. Body, as JSON: the other inputs. Emits Voice.retired.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
voice | Voice | required | The Voice to retire. |
reason | text | Why, such as Consent withdrawn. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
voice | Voice | required | The Voice, now retired. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ voices/ voice_s6Qb8KW683/ retire \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"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"
}
}