Voice.trained
The upstream finished training a cloned or designed Voice, so speech renders in it.
Payload
Each delivery is an Event record. data holds the Voice as it stands, and previous holds the state it left.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | Voice.trained. |
at | datetime | required | When it happened. |
seq | integer | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. | |
data | json | required | The Thing as the Action left it. |
data.voice | Voice | required | The Voice as the change left it. |
data.voice.origin | string | required | cloned from a real speaker’s recordings, or designed from a description and sounding like no real person. |
data.voice.speaker | Person | The real person a cloned Voice sounds like. | |
data.voice.consent | Consent | The speaker’s Consent, recorded in that voice, naming the Startup and the uses allowed; required for a cloned Voice. | |
data.voice.scope | string | required | Who may speak in it: every sibling, one Startup, or one Customer. |
data.voice.samples | list of File | The recordings it was trained from, kept forever. | |
data.voice.status | string | required | training until the upstream finishes, ready for speech, retired once its trained copy is deleted. |
data.previous.status | string | required | The status before this Event: training. |
Example
{
"$id": "https: //api.sb/ leaseline.app/ events/ evt_4JMEHS1dfG",
"$type": "Event",
"name": "Voice.trained",
"at": "2026-10-22T12: 00: 00Z",
"data": {
"voice": {
"$id": "https: //api.sb/ leaseline.app/ voices/ voice_s6Qb8KW683",
"$type": "Voice",
"origin": "cloned",
"speaker": "person_sLqbXbW683",
"consent": "consent_lMkrg7nUGY",
"scope": "studio",
"samples": [
"file_V1AuhyCTsH"
],
"status": "ready"
},
"previous": {
"status": "training"
}
},
"seq": 2552
}