Skip to content
OATSCHEMA

Docs / Schemas / audio-transcription / 0.7.0

Audio Transcription 0.7.0

Store text transcribed from an audio source. Supports timed segments, speaker identification, and non-verbal events.

This is an older version of audio-transcription.

The latest version is 0.8.0.

$id
https://oatschema.org/0.7.0/audio-transcription
Latest
https://oatschema.org/audio-transcription
Versions
Source
v0.7.0 on GitHub

Schema

audio-transcription.json Raw
{    "x-license": {        "id": "Apache-2.0",        "notice": "Copyright 2025-2026 Dorsal Hub LTD",        "url": "https://github.com/oatschema/oats/blob/main/LICENSE"    },    "$schema": "https://json-schema.org/draft/2020-12/schema",    "$id": "https://oatschema.org/0.7.0/audio-transcription",    "title": "Audio Transcription",    "version": "0.7.0",    "description": "Store text transcribed from an audio source. Supports timed segments, speaker identification, and non-verbal events.",    "type": "object",    "properties": {        "track_id": {            "type": "string",            "description": "(Optional) Identifier for the specific audio track or channel in the source file. Numeric identifiers are written as strings (e.g., '0').",            "maxLength": 128        },        "producer": {            "type": "string",            "description": "The creator (model, tool or author) of this transcription (e.g., 'Whisper-v3', 'Manual Review').",            "maxLength": 1024        },        "language": {            "type": "string",            "description": "The 3-letter ISO-639-3 language code of the transcription (e.g., 'eng', 'fra').",            "pattern": "^[a-z]{3}$",            "maxLength": 3        },        "duration": {            "type": "number",            "description": "The total duration of the source media in seconds.",            "minimum": 0        },        "score_explanation": {            "type": "string",            "description": "Defines the meaning of the 'score' field.",            "maxLength": 256        },        "text": {            "type": "string",            "description": "The full, concatenated transcribed text. Optional if detailed segments are provided.",            "maxLength": 524288        },        "segments": {            "type": "array",            "description": "An array of timed text segments. Can be used for phrases, sentences, or individual words.",            "maxItems": 100000,            "minItems": 1,            "items": {                "type": "object",                "properties": {                    "text": {                        "type": "string",                        "description": "The text for this segment.",                        "maxLength": 4096                    },                    "start_time": {                        "type": "number",                        "description": "Segment start time in seconds.",                        "minimum": 0                    },                    "end_time": {                        "type": "number",                        "description": "Segment end time in seconds. Must not be earlier than start_time.",                        "minimum": 0                    },                    "language": {                        "type": "string",                        "description": "The 3-letter ISO-639-3 language code of this particular segment (e.g., 'eng', 'fra').",                        "pattern": "^[a-z]{3}$",                        "maxLength": 3                    },                    "speaker": {                        "type": "object",                        "description": "The speaker of this segment.",                        "properties": {                            "id": {                                "type": "string",                                "description": "Identifier for the speaker. Numeric identifiers, such as diarization cluster numbers, are written as strings (e.g., '0').",                                "maxLength": 128                            },                            "name": {                                "type": "string",                                "maxLength": 128,                                "description": "Name of the speaker."                            },                            "score": {                                "type": "number",                                "description": "Confidence that this segment belongs to this speaker (0 to 1).",                                "minimum": 0,                                "maximum": 1                            }                        },                        "required": [                            "id"                        ],                        "additionalProperties": false                    },                    "events": {                        "type": "array",                        "description": "Array of strings describing non-verbal sounds or events within the segment (e.g., '[music]', '(laughter)').",                        "items": {                            "type": "string",                            "maxLength": 128                        },                        "maxItems": 64                    },                    "score": {                        "type": "number",                        "description": "The confidence score for this segment's transcription, ranging from 0.0 (uncertain) to 1.0 (certain).",                        "minimum": 0,                        "maximum": 1                    },                    "attributes": {                        "type": "object",                        "description": "Arbitrary metadata relevant to this segment.",                        "maxProperties": 16,                        "propertyNames": {                            "maxLength": 128                        },                        "additionalProperties": {                            "anyOf": [                                {                                    "type": "string",                                    "maxLength": 1024                                },                                {                                    "type": "number"                                },                                {                                    "type": "boolean"                                },                                {                                    "type": "null"                                }                            ]                        }                    }                },                "required": [                    "text",                    "start_time",                    "end_time"                ],                "additionalProperties": false            }        },        "attributes": {            "type": "object",            "description": "Arbitrary metadata relevant to this transcription.",            "maxProperties": 16,            "propertyNames": {                "maxLength": 128            },            "additionalProperties": {                "anyOf": [                    {                        "type": "string",                        "maxLength": 1024                    },                    {                        "type": "number"                    },                    {                        "type": "boolean"                    },                    {                        "type": "null"                    }                ]            }        }    },    "anyOf": [        {            "required": [                "text"            ]        },        {            "required": [                "segments"            ]        }    ],    "additionalProperties": false}

Examples

Records that pass validation against this schema.

audio-transcription-1
audio-transcription-1.json
{    "track_id": "1",    "language": "eng",    "text": "Welcome back! Today, my guest is the renowned chef, Jean-Pierre. Thank you, it's a pleasure. You know, the secret is simple, c'est une question de respect pour le produit. It's all about respecting the product.",    "segments": [        {            "text": "Welcome back! Today, my guest is the renowned chef, Jean-Pierre.",            "start_time": 0.5,            "end_time": 4.75,            "speaker": {                "id": "host_maria",                "name": "Maria"            },            "events": [                "music"            ],            "score": 0.98        },        {            "text": "Thank you, it's a pleasure. You know, the secret is simple,",            "start_time": 5.1,            "end_time": 8.25,            "speaker": {                "id": "2",                "name": "Jean-Pierre"            },            "score": 0.95        },        {            "text": "c'est une question de respect pour le produit.",            "start_time": 8.25,            "end_time": 10.9,            "language": "fra",            "speaker": {                "id": "2",                "name": "Jean-Pierre"            },            "score": 0.92        },        {            "text": "[laughter]",            "start_time": 11.0,            "end_time": 11.8,            "speaker": {                "id": "host_maria",                "name": "Maria"            },            "events": [                "laughter"            ]        },        {            "text": "It's all about respecting the product.",            "start_time": 12.0,            "end_time": 14.5,            "speaker": {                "id": "2",                "name": "Jean-Pierre"            },            "score": 0.96        }    ]}

Fields

  • track_id string

    (Optional) Identifier for the specific audio track or channel in the source file. Numeric identifiers are written as strings (e.g., '0').

    • at most 128 characters
  • producer string

    The creator (model, tool or author) of this transcription (e.g., 'Whisper-v3', 'Manual Review').

    • at most 1024 characters
  • language string

    The 3-letter ISO-639-3 language code of the transcription (e.g., 'eng', 'fra').

    • at most 3 characters
    • matches ^[a-z]{3}$
  • duration number

    The total duration of the source media in seconds.

    • ≥ 0
  • score_explanation string

    Defines the meaning of the 'score' field.

    • at most 256 characters
  • text string

    The full, concatenated transcribed text. Optional if detailed segments are provided.

    • at most 524288 characters
  • segments array of object

    An array of timed text segments. Can be used for phrases, sentences, or individual words.

    • 1 to 100000 items
    • text string required

      The text for this segment.

      • at most 4096 characters
    • start_time number required

      Segment start time in seconds.

      • ≥ 0
    • end_time number required

      Segment end time in seconds. Must not be earlier than start_time.

      • ≥ 0
    • language string

      The 3-letter ISO-639-3 language code of this particular segment (e.g., 'eng', 'fra').

      • at most 3 characters
      • matches ^[a-z]{3}$
    • speaker object

      The speaker of this segment.

      • id string required

        Identifier for the speaker. Numeric identifiers, such as diarization cluster numbers, are written as strings (e.g., '0').

        • at most 128 characters
      • name string

        Name of the speaker.

        • at most 128 characters
      • score number

        Confidence that this segment belongs to this speaker (0 to 1).

        • 0 to 1
    • events array of string

      Array of strings describing non-verbal sounds or events within the segment (e.g., '[music]', '(laughter)').

      • at most 64 items
      • each at most 128 characters
    • score number

      The confidence score for this segment's transcription, ranging from 0.0 (uncertain) to 1.0 (certain).

      • 0 to 1
    • attributes object

      Arbitrary metadata relevant to this segment.

      • at most 16 properties
      • keys at most 128 characters
      • * string | number | boolean | null

        Any other key.

        • string: at most 1024 characters
  • attributes object

    Arbitrary metadata relevant to this transcription.

    • at most 16 properties
    • keys at most 128 characters
    • * string | number | boolean | null

      Any other key.

      • string: at most 1024 characters

Rules:

  • At least one of text, segments must be present.
    Show the JSON Schema
    {  "anyOf": [    {      "required": [        "text"      ]    },    {      "required": [        "segments"      ]    }  ]}

Copyright 2025-2026 Dorsal Hub LTD. Licensed under Apache-2.0.