Make diarized transcription duration and task optional
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 1.5k
- Forks
- 264
- Avg merge
- 9h 46m
- Merged PRs (30d)
- 96
Description
Update: July 30, 2026
I ran the same reproduction again today, and the API response now includes both duration and task:
{
"text": "And so, my fellow Americans, ask not what your country can do for you, ask what you can do for your country.",
"task": "transcribe",
"duration": 11.0,
"segments": [
{
"type": "transcript.text.segment",
"text": " And so, my fellow Americans,",
"speaker": "A",
"start": 0.0,
"end": 2.0999999999999996,
"id": "seg_0"
},
{
"type": "transcript.text.segment",
"text": " ask not what your country can do for you, ask what you can do for your country.",
"speaker": "A",
"start": 2.3,
"end": 10.3,
"id": "seg_1"
}
],
"usage": {
"type": "tokens",
"total_tokens": 432,
"input_tokens": 110,
"input_token_details": {
"text_tokens": 0,
"audio_tokens": 110
},
"output_tokens": 322
}
}
Original report: July 18, 2026
Bug
TranscriptionDiarized models both duration and task as required, but the diarized_json transcription response can omit both fields.
A direct response from the OpenAI API contained text, segments, and usage, but no duration or task properties.
This causes two problems:
TranscriptionDiarized.duration()throwsOpenAIInvalidDataException:durationis not set.TranscriptionDiarized.validate()fails because an absenttaskdoes not match the expectedtranscribevalue.
Reproduction
Audio file: https://github.com/openai/whisper/blob/main/tests/jfk.flac
A direct request to the OpenAI audio transcriptions endpoint with response_format=diarized_json returned:
{
"text": "And so my fellow Americans, ask not what your country can do for you, ask what you can do for your country.",
"segments": [
{
"type": "transcript.text.segment",
"text": " And so my fellow Americans, ask not what your country can do for you,",
"speaker": "A",
"start": 0.0,
"end": 7.499999999999999,
"id": "seg_0"
},
{
"type": "transcript.text.segment",
"text": " ask what you can do for your country.",
"speaker": "A",
"start": 8.15,
"end": 10.3,
"id": "seg_1"
}
],
"usage": {
"type": "tokens",
"total_tokens": 431,
"input_tokens": 110,
"input_token_details": {
"text_tokens": 0,
"audio_tokens": 110
},
"output_tokens": 321
}
}
The response contains no duration nor task property.
I opened a issue on openai/openapi to track the schema correction.
Expected behavior
duration and task should be optional in TranscriptionDiarized, since it can be absent from a valid API response.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the TranscriptionDiarized model and inspect how its duration and task fields are parsed and validated. Use the diarized_json response shown in the issue as the reproduction, then verify that responses omitting both fields are accepted while responses containing them still work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kotlin
- Domain
- api
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100