Script, then render
Stage 1 returns the full narration script as editable text. Nothing is synthesized — and no synthesis cost is incurred — until you approve the lines and call render.
Make any video accessible in two stages built around a single principle: synthesized narration is
Learn more about Audio DescriptionThe AI writes the full dub + audio-description script as editable text first — nothing is voiced until you approve it.
Dialogue is dubbed into this language and on-screen action is described in it, written into the silences between speech.
0.3/s of video for the script · rendering later 0.5/s + text-to-speech at 4/spoken second. Totals appear once the duration is known.
Make any video accessible in two stages built around a single principle: synthesized narration is expensive and hard to un-hear, so you should be able to read and edit every line before paying to voice it. Stage 1 (script) is an async job that takes only a video URL — transcription and scene captioning run internally — and returns a time-coded script: the dialogue translated into the target language (dub lines) plus descriptions of on-screen action written into the silences between speech (ad lines), budgeted to fit their gaps per the Netflix AD Style Guide and WCAG. You review the lines, edit or disable any of them, then submit Stage 2 (render) which voices each enabled line (dub and description in distinct voices), time-fits the audio to its slot, ducks the original soundtrack and overlays every line at its exact timestamp, returning a presigned URL to the finished video. Both stages run as async jobs (poll /v2/jobs/{id} or attach a webhook) and are billed per second of video; speech synthesis is billed separately as core-tts usage on your own account.
Stage 1 returns the full narration script as editable text. Nothing is synthesized — and no synthesis cost is incurred — until you approve the lines and call render.
Each ad line is budgeted against the silence it fills (3.0 words/sec for English, 2.3 for Turkish). Lines that need more room are flagged extended_ad_suggested so the player can pause.
Speech boundaries come from word-level timestamps, not raw segment spans — leading and trailing silence is reclaimed for description instead of being mistaken for dialogue.
Render voices dub and description lines in distinct voices (configurable gender per type) through core-tts on your own API key, then mixes them over the ducked original track. The render fee itself only covers mixing and orchestration.
Accessibility compliance
Produce WCAG-conformant described versions of training, product and marketing videos without a manual narration workflow.
Localized accessible cuts
One pass yields both a translated dub and descriptions in the target language — an accessible localized version of the original.
Documentary and education catalogs
Batch-generate scripts for a library, have editors review the text, and render only the approved ones.
Broadcast-style AD tracks
Use the script's timing data (start_ms, target_duration_ms, extended_ad_suggested) to drive your own player-side AD implementation instead of rendering a burned-in mix.
input
Script: a video URL (upload via upload-media or any public link) + target_language. Render: the same video URL plus the reviewed segments array from Stage 1, with optional per-line enabled flags and voice options.
output
Script: segments in playback order — dub and ad lines with start_ms, end_ms, text, target_duration_ms, coverage stats. Render: presigned MP4 URL + render stats (lines rendered/failed, output duration).
video_urlrequiredstringPublic URL of the source video. Transcription and scene captioning run upstream, so this is the only input needed.
target_languagerequiredstringLanguage the dub and description lines are written in.
enum: en, tr
languagestringSource language. Detected automatically when omitted.
optionsobjectspeaker (bool) adds advisory speaker labels to dubbed lines; standards_profile selects the description style guide (default netflix).
expected_durationnumberVideo length in seconds. Only affects how many credits are held while the job runs — billing always uses the real duration. Without it a 60-second default is held, which can reject a long video on a thin balance.
Both stages billed per second of video. The script stage is text-only and cheap; render covers mixing and orchestration, while each synthesized line is billed as regular core-tts usage on your account.
| Service | Unit | Price |
|---|---|---|
| Audio Description Script | second | $0.003/sec |
| Audio Description Render | second | $0.005/sec + core-tts |
Async jobs are billed only when they complete successfully.
A one-minute video: script ≈ 18 credits, render ≈ 30 credits + core-tts for the synthesized lines (4 credits per spoken second — typically 60–120 credits).