Skip to main content

Transcript refinement

Transcript refinement checks the transcript against the audio and corrects text errors.

Transcript refinement requires an Enterprise license. Contact us via the Pricing page.

Configuration

Set the following parameter in the config object of the POST Request body.

NameTypeDefaultDescription
use_refinementBooleanfalseSet to true to request transcript refinement.

When keywords is set for keyword boosting, the same keywords are also used as hints during transcript refinement. See Keyword boosting for how to configure keywords.

Request example

{
"use_refinement": true
}

POST example: Batch STT sample code

Unified example (presets): Batch STT sample code

Result retrieval flow

After submitting a transcription job, first use the existing Batch STT result API to get the base transcript.

GET https://openapi.vito.ai/v1/transcribe/{TRANSCRIBE_ID}

If transcript refinement was requested, add the result=refined query parameter to get the refined transcript separately from the base transcript.

GET https://openapi.vito.ai/v1/transcribe/{TRANSCRIBE_ID}?result=refined
tip

Transcript refinement runs as a separate post-processing step after the base transcription job completes. The base transcript can become completed first, and the refined result can become available later.

Refined result response example

The result=refined response lets you check both the base transcription status and the refinement status. If the base transcription is still running or has failed, the response returns only the base transcription status. After the base transcription is complete, check refine_status for the refinement status.

Transcript refinement preserves utterance timing and speaker information while correcting text based on the audio. Utterances that do not need correction can be returned unchanged.

Base transcriptRefined transcript
I am calling to check the deliver schedule.I am calling to check the delivery schedule.
I will get back to you at tree PM today.I will get back to you at 3 PM today.
NameDescriptionTypeValue
statusBase transcription statusstringtranscribing, completed, failed
refine_statusRefinement statusstringqueued, processing, completed, failed
refine_error.codeRefinement failure codestringrefiner_enqueue_failed, refiner_input_unavailable, refiner_failed
results.utterancesRefined utterance resultsarray

status: transcribing

The base transcription job is still running.

{
"id": "{TRANSCRIBE_ID}",
"status": "transcribing"
}

status: failed

The base transcription job failed.

{
"id": "{TRANSCRIBE_ID}",
"status": "failed",
"error": {
"code": "{ERROR_CODE}",
"message": "{MESSAGE}"
}
}

refine_status: queued / processing

The base transcription is complete, but refinement is not complete yet. In this case, the response returns the current refinement status without results.

{
"id": "{TRANSCRIBE_ID}",
"status": "completed",
"refine_status": "processing"
}

refine_status: completed

{
"id": "{TRANSCRIBE_ID}",
"status": "completed",
"refine_status": "completed",
"results": {
"utterances": [
{
"start_at": 4737,
"duration": 2360,
"msg": "I am calling to check the delivery schedule.",
"spk": 0,
"lang": "en"
},
{
"start_at": 8197,
"duration": 3280,
"msg": "I will get back to you at 3 PM today.",
"spk": 1,
"lang": "en"
}
]
}
}

refine_status: failed

{
"id": "{TRANSCRIBE_ID}",
"status": "completed",
"refine_status": "failed",
"refine_error": {
"code": "refiner_failed"
}
}

Limitations

  • use_refinement cannot be used with use_multi_channel.
  • Refined results include only utterances.
  • Refined results can become available later than the base transcript.