madoo.speech-timing-assessment/v1
Madoo speech timing assessment — Measured speech candidate with deterministic acceptance and natural padding evidence.
| Reference | madoo.speech-timing-assessment/v1 |
| Schema id | urn:madoo:schema:speech-timing-assessment:v1 |
| Version | 1.0.0 |
| Served at | GET /api/v1/json-schemas/madoo.speech-timing-assessment/v1 · MCP get_json_schema |
Where it appears
Section titled “Where it appears”- Produced by:
audio/speech_timing_check→assessment
Fields
Section titled “Fields”| Field | Type | Required | Rules | Description |
|---|---|---|---|---|
schema |
"madoo.speech-timing-assessment/v1" |
yes | ||
candidate |
object | yes | no other fields | |
candidate.planId |
string | yes | pattern “^[a-f0-9]{64}$” | |
candidate.cueId |
string | yes | min length 1; max length 128 | |
candidate.round |
integer | yes | ≥ 1; ≤ 3 | |
candidate.text |
string | yes | min length 1; max length 20000 | |
candidate.audioStorageRef |
string | yes | max length 4096; pattern “^storage://[^?#\s]+$” | |
candidate.audioSha256 |
string | yes | pattern “^[a-f0-9]{64}$” | |
candidate.durationMilliseconds |
integer | yes | ≥ 1; ≤ 21600000 | |
candidate.speakingRate |
number | yes | ≤ 10; > 0 | |
candidate.modelId |
string | yes | min length 1; max length 256 | |
candidate.profileVersion |
string | yes | min length 1; max length 256 | |
candidate.voice |
string | yes | min length 1; max length 512 | |
candidate.hasAudibleSignal |
boolean | yes | ||
candidate.headSilenceMilliseconds |
integer | ≥ 0; ≤ 21600000 | ||
candidate.tailSilenceMilliseconds |
integer | ≥ 0; ≤ 21600000 | ||
candidate.trimStartMilliseconds |
integer | ≥ 0; ≤ 1000 | ||
candidate.trimEndMilliseconds |
integer | ≥ 0; ≤ 1000 | ||
candidate.expectedMilliCredits |
integer | yes | ≥ 0; ≤ 9007199254740991 | |
accepted |
boolean | yes | ||
requiredFitRate |
number | yes | ≥ 1; ≤ 432000 | |
paddingMilliseconds |
integer | yes | ≥ 0; ≤ 21600000 | |
reason |
one of "SPEECH_TIMING_ACCEPTED", "SPEECH_TIMING_REQUIRES_ADAPTATION", "SPEECH_TIMING_NO_AUDIBLE_SIGNAL", "SPEECH_TIMING_REFLOWED", "SPEECH_TIMING_DEGRADED_REFLOW" |
yes | ||
targetDurationMilliseconds |
integer | ≥ 0; ≤ 21600000 |
Example
Section titled “Example”{ "schema": "madoo.speech-timing-assessment/v1", "candidate": { "planId": "df9f0828ea2c188dc4f90ef01e1c53ff04956e4f6f7199e1368bf01d54c18f7f", "cueId": "cue-1", "round": 1, "text": "Ciao", "audioStorageRef": "storage://org/ws/audio.wav", "audioSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "durationMilliseconds": 800, "speakingRate": 1, "modelId": "turbo", "profileVersion": "1", "voice": "Rachel", "expectedMilliCredits": 100, "hasAudibleSignal": true }, "accepted": true, "requiredFitRate": 1, "paddingMilliseconds": 200, "reason": "SPEECH_TIMING_ACCEPTED"}The complete schema
Section titled “The complete schema”madoo.speech-timing-assessment/v1 (JSON Schema)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:madoo:schema:speech-timing-assessment:v1", "title": "Madoo speech timing assessment", "description": "Shape validation only. Correlation, timing policy, tenant authorization and trusted measurement provenance require Application validation.", "$ref": "#/$defs/assessment", "$defs": { "warning": { "type": "object", "additionalProperties": false, "required": [ "code", "message" ], "properties": { "code": { "type": "string", "minLength": 1, "maxLength": 128 }, "message": { "type": "string", "minLength": 1, "maxLength": 20000 } } }, "captionCue": { "type": "object", "additionalProperties": false, "required": [ "id", "start", "end", "text", "speaker", "speaker_scope", "kind", "source_segment_ids" ], "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 128 }, "start": { "type": "number", "minimum": 0, "maximum": 21600 }, "end": { "type": "number", "minimum": 0, "maximum": 21600 }, "text": { "type": "string", "minLength": 1, "maxLength": 20000 }, "speaker": { "type": [ "string", "null" ], "maxLength": 512 }, "speaker_scope": { "type": [ "string", "null" ], "maxLength": 512 }, "kind": { "const": "speech" }, "source_segment_ids": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 256 }, "maxItems": 10000, "minItems": 0 } } }, "captionTrack": { "type": "object", "additionalProperties": false, "required": [ "schema", "track_id", "language", "source_language", "granularity", "cues", "generation", "warnings" ], "properties": { "schema": { "const": "madoo.caption-track/v1" }, "track_id": { "type": "string", "minLength": 1, "maxLength": 512 }, "language": { "type": "string", "minLength": 1, "maxLength": 64 }, "source_language": { "type": [ "string", "null" ], "maxLength": 64 }, "granularity": { "type": "string", "minLength": 1, "maxLength": 64 }, "cues": { "type": "array", "items": { "$ref": "#/$defs/captionCue" }, "maxItems": 10000, "minItems": 1 }, "generation": { "type": "object", "additionalProperties": false, "required": [ "normalizer", "version", "segment_count", "overlap_reconciled" ], "properties": { "normalizer": { "type": "string", "minLength": 1, "maxLength": 256 }, "version": { "type": "string", "minLength": 1, "maxLength": 128 }, "segment_count": { "type": "integer", "minimum": 0, "maximum": 10000 }, "overlap_reconciled": { "type": "boolean" } } }, "warnings": { "type": "array", "items": { "$ref": "#/$defs/warning" }, "maxItems": 10000, "minItems": 0 } } }, "policy": { "type": "object", "additionalProperties": false, "required": [ "maximumRounds", "minimumSpeakingRate", "maximumSpeakingRate", "maximumFitRate", "maximumCombinedRate", "toleranceMilliseconds" ], "properties": { "maximumRounds": { "type": "integer", "minimum": 1, "maximum": 3 }, "minimumSpeakingRate": { "type": "number", "minimum": 0.95, "maximum": 1 }, "maximumSpeakingRate": { "type": "number", "minimum": 1, "maximum": 1.05 }, "maximumFitRate": { "type": "number", "minimum": 1, "maximum": 2 }, "maximumCombinedRate": { "type": "number", "minimum": 1, "maximum": 2 }, "toleranceMilliseconds": { "type": "integer", "minimum": 1, "maximum": 250 } } }, "cue": { "type": "object", "additionalProperties": false, "required": [ "cueId", "originalIndex", "sourceText", "initialTranslation", "speaker", "startMilliseconds", "endMilliseconds", "contextBefore", "contextAfter" ], "properties": { "cueId": { "type": "string", "minLength": 1, "maxLength": 128 }, "originalIndex": { "type": "integer", "minimum": 0, "maximum": 9999 }, "sourceText": { "type": "string", "minLength": 1, "maxLength": 20000 }, "initialTranslation": { "type": "string", "minLength": 1, "maxLength": 20000 }, "speaker": { "type": [ "string", "null" ], "maxLength": 512 }, "startMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "endMilliseconds": { "type": "integer", "minimum": 50, "maximum": 21600000 }, "contextBefore": { "type": [ "string", "null" ], "maxLength": 20000 }, "contextAfter": { "type": [ "string", "null" ], "maxLength": 20000 } } }, "plan": { "type": "object", "additionalProperties": false, "required": [ "schema", "planId", "organizationID", "workspaceID", "durationMilliseconds", "sourceCaptions", "targetCaptions", "policy", "cues" ], "properties": { "schema": { "const": "madoo.speech-timing-plan/v1" }, "planId": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "organizationID": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "workspaceID": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "durationMilliseconds": { "type": "integer", "minimum": 50, "maximum": 21600000 }, "sourceCaptions": { "$ref": "#/$defs/captionTrack" }, "targetCaptions": { "$ref": "#/$defs/captionTrack" }, "policy": { "$ref": "#/$defs/policy" }, "cues": { "type": "array", "items": { "$ref": "#/$defs/cue" }, "maxItems": 10000, "minItems": 1 }, "elasticity": { "$ref": "#/$defs/elasticity" }, "availableWindows": { "$ref": "#/$defs/availableWindows" } } }, "candidate": { "type": "object", "additionalProperties": false, "required": [ "planId", "cueId", "round", "text", "audioStorageRef", "audioSha256", "durationMilliseconds", "speakingRate", "modelId", "profileVersion", "voice", "expectedMilliCredits", "hasAudibleSignal" ], "properties": { "planId": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "cueId": { "type": "string", "minLength": 1, "maxLength": 128 }, "round": { "type": "integer", "minimum": 1, "maximum": 3 }, "text": { "type": "string", "minLength": 1, "maxLength": 20000 }, "audioStorageRef": { "type": "string", "pattern": "^storage://[^?#\\s]+$", "maxLength": 4096 }, "audioSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "durationMilliseconds": { "type": "integer", "minimum": 1, "maximum": 21600000 }, "speakingRate": { "type": "number", "exclusiveMinimum": 0, "maximum": 10 }, "modelId": { "type": "string", "minLength": 1, "maxLength": 256 }, "profileVersion": { "type": "string", "minLength": 1, "maxLength": 256 }, "voice": { "type": "string", "minLength": 1, "maxLength": 512 }, "hasAudibleSignal": { "type": "boolean" }, "headSilenceMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "tailSilenceMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "trimStartMilliseconds": { "type": "integer", "minimum": 0, "maximum": 1000 }, "trimEndMilliseconds": { "type": "integer", "minimum": 0, "maximum": 1000 }, "expectedMilliCredits": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } } }, "assessment": { "type": "object", "additionalProperties": false, "required": [ "schema", "candidate", "accepted", "requiredFitRate", "paddingMilliseconds", "reason" ], "properties": { "schema": { "const": "madoo.speech-timing-assessment/v1" }, "candidate": { "$ref": "#/$defs/candidate" }, "accepted": { "type": "boolean" }, "requiredFitRate": { "type": "number", "minimum": 1, "maximum": 432000 }, "paddingMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "reason": { "enum": [ "SPEECH_TIMING_ACCEPTED", "SPEECH_TIMING_REQUIRES_ADAPTATION", "SPEECH_TIMING_NO_AUDIBLE_SIGNAL", "SPEECH_TIMING_REFLOWED", "SPEECH_TIMING_DEGRADED_REFLOW" ] }, "targetDurationMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 } } }, "state": { "type": "object", "additionalProperties": false, "required": [ "schema", "plan", "completedRounds", "history" ], "properties": { "schema": { "const": "madoo.speech-timing-state/v1" }, "plan": { "$ref": "#/$defs/plan" }, "completedRounds": { "type": "integer", "minimum": 0, "maximum": 3 }, "history": { "type": "array", "items": { "$ref": "#/$defs/assessment" }, "maxItems": 30000, "minItems": 0 } } }, "silenceInterval": { "type": "object", "additionalProperties": false, "required": [ "startMilliseconds", "endMilliseconds" ], "properties": { "startMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "endMilliseconds": { "type": "integer", "minimum": 1, "maximum": 21600000 } } }, "deliveryWindow": { "type": "object", "additionalProperties": false, "required": [ "cueId", "startMilliseconds", "endMilliseconds" ], "properties": { "cueId": { "type": "string", "minLength": 1, "maxLength": 128 }, "startMilliseconds": { "type": "integer", "minimum": 0, "maximum": 21600000 }, "endMilliseconds": { "type": "integer", "minimum": 1, "maximum": 21600000 } } }, "availableWindows": { "type": "object", "additionalProperties": false, "required": [ "maximumEndExtensionMilliseconds", "safetyGapMilliseconds", "windows" ], "properties": { "maximumEndExtensionMilliseconds": { "type": "integer", "minimum": 1, "maximum": 2000 }, "safetyGapMilliseconds": { "type": "integer", "minimum": 20, "maximum": 500 }, "windows": { "type": "array", "maxItems": 10000, "items": { "$ref": "#/$defs/deliveryWindow" } } } }, "elasticity": { "type": "object", "additionalProperties": false, "required": [ "maximumEndExtensionMilliseconds", "evidence", "windows" ], "properties": { "maximumEndExtensionMilliseconds": { "type": "integer", "minimum": 1, "maximum": 250 }, "evidence": { "type": "object", "additionalProperties": false, "required": [ "referenceAudioStorageRef", "referenceAudioSha256", "durationMilliseconds", "silence" ], "properties": { "referenceAudioStorageRef": { "type": "string", "pattern": "^storage://[^?#\\s]+$", "maxLength": 4096 }, "referenceAudioSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "durationMilliseconds": { "type": "integer", "minimum": 50, "maximum": 21600000 }, "silence": { "type": "array", "maxItems": 1026, "items": { "$ref": "#/$defs/silenceInterval" } } } }, "windows": { "type": "array", "maxItems": 10000, "items": { "$ref": "#/$defs/deliveryWindow" } } } } }}