madoo.speaker-voices/v1
Madoo speaker voices — The voice every speaker of a recording is voiced with.
| Reference | madoo.speaker-voices/v1 |
| Schema id | urn:madoo:schema:speaker-voices:v1 |
| Version | 1.0.0 |
| Served at | GET /api/v1/json-schemas/madoo.speaker-voices/v1 · MCP get_json_schema |
Where it appears
Section titled “Where it appears”- Produced by:
utility/speaker_voices→speaker_voices - Read by:
ai/text_to_speech→speaker_voices
Fields
Section titled “Fields”| Field | Type | Required | Rules | Description |
|---|---|---|---|---|
schema |
"madoo.speaker-voices/v1" |
yes | ||
default_voice |
string | yes | min length 1; max length 200 | The voice of a line whose speaker is not in the table: the voice of the speaker who speaks most. |
voices |
object | yes | Speaker label (speaker_0, speaker_1…) → voice name of the Text to Speech model. | |
speakers |
array of objects | yes | max items 64 | |
speakers[].speaker |
string | yes | max length 200 | Empty for a recording whose lines carry no speaker. |
speakers[].voice |
string | yes | min length 1; max length 200 | |
speakers[].source |
one of "fixed", "voice_type", "distinct" |
yes | fixed: set by the workflow; voice_type: chosen from the list of the speaker’s kind of voice; distinct: a voice no other speaker has. | |
speakers[].voice_type |
one of "feminine", "masculine", null |
yes | ||
speakers[].line_count |
integer | yes | ≥ 1 | |
speakers[].speech_seconds |
number | yes | ≥ 0 | |
warnings |
array of string | yes | max items 64 |
Example
Section titled “Example”{ "schema": "madoo.speaker-voices/v1", "default_voice": "Chris", "voices": { "speaker_0": "Chris", "speaker_1": "Sarah", "speaker_2": "George" }, "speakers": [ { "speaker": "speaker_0", "voice": "Chris", "source": "voice_type", "voice_type": "masculine", "line_count": 41, "speech_seconds": 96.4 }, { "speaker": "speaker_1", "voice": "Sarah", "source": "voice_type", "voice_type": "feminine", "line_count": 5, "speech_seconds": 10.9 }, { "speaker": "speaker_2", "voice": "George", "source": "voice_type", "voice_type": "masculine", "line_count": 11, "speech_seconds": 33.1 } ], "warnings": []}The complete schema
Section titled “The complete schema”madoo.speaker-voices/v1 (JSON Schema)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:madoo:schema:speaker-voices:v1", "title": "Madoo speaker voices", "description": "The voice every speaker of a recording is voiced with, as Assign Speaker Voices chose it. Text to Speech reads it with the speaker of each line.", "type": "object", "additionalProperties": false, "required": [ "schema", "default_voice", "voices", "speakers", "warnings" ], "properties": { "schema": { "const": "madoo.speaker-voices/v1" }, "default_voice": { "type": "string", "minLength": 1, "maxLength": 200, "description": "The voice of a line whose speaker is not in the table: the voice of the speaker who speaks most." }, "voices": { "type": "object", "description": "Speaker label (speaker_0, speaker_1…) → voice name of the Text to Speech model.", "maxProperties": 64, "additionalProperties": { "type": "string", "minLength": 1, "maxLength": 200 } }, "speakers": { "type": "array", "maxItems": 64, "items": { "type": "object", "additionalProperties": false, "required": [ "speaker", "voice", "source", "voice_type", "line_count", "speech_seconds" ], "properties": { "speaker": { "type": "string", "maxLength": 200, "description": "Empty for a recording whose lines carry no speaker." }, "voice": { "type": "string", "minLength": 1, "maxLength": 200 }, "source": { "enum": [ "fixed", "voice_type", "distinct" ], "description": "fixed: set by the workflow; voice_type: chosen from the list of the speaker's kind of voice; distinct: a voice no other speaker has." }, "voice_type": { "enum": [ "feminine", "masculine", null ] }, "line_count": { "type": "integer", "minimum": 1 }, "speech_seconds": { "type": "number", "minimum": 0 } } } }, "warnings": { "type": "array", "maxItems": 64, "items": { "type": "string", "maxLength": 500 } } }}