Universal Translator

In this topic, you will learn how to utilize the Brightcove Universal translator.

Introduction

The Universal Translator allows for caption translations in over 150 languages and dubbing in over 70 languages. It can be accessed through three main entry points in the VideoCloud UI, enabling customers to select which languages they would like their captions or audio tracks translated to.

Interacting with the Universal Translator during Ingestion

To select the target languages for captions translation and dubbing in the ingestion process, follow the next steps:

  1. Click Upload
  2. Choose the target languages for both Captions Translations and Dubbing Languages.

  3. (Optional) You can enable the review checkbox to pause dubbing until after you review your translated captions.

  4. Complete the upload. Auto-captions are generated, and then translated into the languages you selected.
  5. If review is enabled, confirm caption quality either in the VideoCloud Captions Editor or by downloading, editing, and re-uploading caption tracks.
  6. After review, explicitly trigger dubbing. Brightcove generates dubbed audio tracks for all selected languages once the prerequisites are satisfied.

Editing a text track

You may want to edit a text track to review automatically generated content before creating a new audio track. To do this, follow the next steps:

  1. Select your video and navigate to the Languages section.
  2. Click the Edit text track pencil icon next to your desired language.
  3. Add your changes and click Publish text track or Generate audio to generate your audio directly.

Using Video Details

In the Languages section of the Video Details page, you can manage captions and dubbing for each video. This includes adding new caption tracks, triggering dubbing, and retriggering dubbing after making edits.

  1. Navigate to the Video Details page and locate the Languages section of your video.
  2. Click New to add text and audio tracks in one or more target languages.

  3. When generating captions, you can optionally enable Use Translation Glossary and/or Use Custom Instructions in the translation dialog to apply your configured account-level Translation Glossaries and Custom Translation Instructions to this translation job.

    Translate to New Languages dialog showing the Use Translation Glossary and Use Custom Instructions options
  4. To create an additional audio track in another language, click Generate audio on the desired language or click New next to Audio Tracks and select Translate audio.

  5. If you edit captions later, you can retrigger dubbing. Retriggering overwrites the existing dubbed audio tracks with new ones based on the updated captions.

Translating transcripts

In the Languages section of the Video Details page, you can translate existing transcripts into additional languages.

  1. Navigate to the Video Details page and open the Languages section.
  2. Switch the title dropdown to Transcripts.
  3. Open the New menu and select Translate Transcripts.

    Translate Transcripts option in the New menu
  4. Select the target languages and click Generate.

    Translate Transcripts dialog with target language selection

Adding new languages in bulk

Use the Media module to add captions and generate translations for multiple videos at once. Follow the next steps:

  1. In the Media module, select the videos you want to update.
  2. Click ... and choose Captions and Audio.

  3. Set your preferences and click Generate to start processing.

  4. After processing is complete, review the generated tracks and publish as needed.

Admin Module Settings

Upload Settings

You can set your default preferences for the universal translator following the next process:

  1. Navigate to the Admin menu.
  2. Select Upload Settings and scroll down to Captions and Languages.
  3. Add the default Caption Translation Languages and Dubbing Languages by clicking Add in each section.

  4. Enter your languages and click Add.

  5. Click Save in the Upload Settings page.

Captions and Audio

In the Captions and Audio admin section, you can set the default published / draft status for the captions and translations you generate at upload or directly from the Media module.
To do this, follow the next process:

  1. Navigate to the Admin menu.
  2. Select Captions and Audio and scroll down to the Default Track Status section.
  3. Select your default Auto-Caption Tracks and Caption Translations Tracks status.

AI Transparency Labels

You can toggle AI transparency labels on and customize the suffix that is appended to generated track labels, such as (Auto Generated). The suffix helps viewers identify AI generated content in the player.

  1. Navigate to the Admin menu.
  2. Select Captions and Audio and scroll down to AI Transparency Labels.
  3. Turn on the labels you want to apply and change the suffix in the corresponding text fields if needed. For Universal Translator workflows, use:
    • Caption Translation - Adds the label to translated caption tracks.
    • Dubbing - Adds the label to generated dubbed audio tracks.

    Admin Captions and Audio page showing AI Transparency Labels settings
  4. After generation, you can still edit the track label manually from the track details dialog if needed.

    Text Track Details dialog showing the label field with an AI transparency label
  5. The label is visible to viewers in the player track menu.

    Player captions menu showing an auto-generated AI transparency label

Dubbing Voice Type

Choose how dubbed audio tracks are created.

  • Voice Cloning (default) - Generates dubbing using voices that closely match the original audio track.
  • Synthetic Voice - Generates dubbing using a natural-sounding AI voice that does not replicate the original speaker.

To configure follow the next steps:

  1. Navigate to the Admin module.
  2. Select Captions and Audio and scroll down to the Translations & Dubbing section.
  3. Select Voice Cloning or Synthetic Voice.

Creating Language Groups

With language groups, you can organize sets of languages into reusable groups for captions and audio translations.

  1. In the Language Groups section, click Add.

  2. Enter your information and click Add.

Translation Glossaries and Custom Translation Instructions

Translation Glossaries and Custom Translation Instructions help you control how the Universal Translator translates your captions. Both are configured from the Admin menu, in the Captions and Audio page's Translations & Dubbing section.

Translation Glossaries

Translation Glossaries let you enforce specific translations for individual terms within a given language pair, so names and key terms (such as product names) stay consistent or remain untranslated. Each glossary applies to one source language → target language pair, and you can create multiple glossaries for different language pairs.

Translations and Dubbing section showing the Translation Glossaries and Custom Translation Instructions options

To create a Translation Glossary, follow the next steps:

  1. Next to Translation Glossaries, click New Glossary.
  2. In the New Language-pair Glossary dialog, select the Source Language and Target Language, then click Create Glossary.

    New Language-pair Glossary dialog with Source Language and Target Language selectors
  3. Click Add Term to add terms manually, or Upload CSV to add terms in bulk.

    Empty Translation Glossary for a language pair with Upload CSV and Add Term options
  4. Enter the Source term and its corresponding Translation. Click Add new to add more term pairs, then click Save.

    Edit translation glossary dialog with a source term and its translation

If you have created glossaries for more than one language pair, use the dropdown above the glossary to switch between them, or create another one.

Dropdown for switching between Translation Glossaries for different language pairs

Custom Translation Instructions

Custom Translation Instructions let you provide a single free-text prompt that is applied globally, across all languages, to every caption translation for your account. Use it to specify terms that should never be translated, or to guide tone and formality.

To set up Custom Translation Instructions, follow the next steps:

  1. In the Custom Translation Instructions field, enter your instructions (up to 4,000 characters).
  2. Click Save.

    Custom Translation Instructions field filled in with example instructions and the Save button

Ingestion Configurations API

Manage UI-only ingestion preferences for captions and translations. These settings prefill fields in Video Cloud UI only; API clients can still send any values they need.

Endpoint

GET, PUT https://ingest.api.brightcove.com/v1/accounts/{account_id}/ingestion-configurations

Auth scopes: Same scopes used by the Dictionary feature's GET/PUT endpoints.

GET response object

Ingestion configurations (fields returned by GET)
Key Type Description Example
languageGroups object<string, string[]> Map of group name → list of caption translation language codes. Shown in UI dropdowns. {"Europe":["fr-FR","de-DE","es-ES"]}
publishByDefault object Initial publish state for auto-generated tracks. Allowed keys: autoCaptions, captionTranslations (true=published, false=draft). {"autoCaptions":true,"captionTranslations":false}
autoCaptionsLanguage string Language code (BCP-47, e.g., en-US), or auto (detect), or off (disabled). "en-US"
autoCaptionsLabel string Label shown for the auto-captions language. "English (Auto)"
useDictionary boolean Use the auto-captions dictionary to improve accuracy. true
captionsTranslations object<string, string> Map of language code → label for caption translations. {"en-US":"English","es-ES":"Spanish"}
lockCaptionTranslations boolean If true, UI cannot change default caption translation languages. false
audioTranslations string[] List of supported audio translation languages (UI prefill only). ["en-US","es-ES"]
lockAudioTranslations boolean If true, UI cannot change default audio translation languages. false
disableVoiceCloning boolean If true, use synthetic voice instead of voice cloning by default for new dubbing runs. Can be overridden per request. false

PUT updates (partial)

Send only fields to change; unspecified fields remain untouched.

PUT /v1/accounts/{account_id}/ingestion-configurations
{
  "languageGroups": { "Europe": ["fr-FR","de-DE","es-ES"] }
}

Ingest Endpoint Update

/v1/accounts/{account_id}/videos/{video_id}/ingest-requests — within transcriptions, you can specify translation_languages (array of objects with srclang (BCP-47, required), and optional label, status (draft|published), dubbing, disable_voice_cloning (boolean), ai_transparency_label (string, for translated captions when supported), and ai_transparency_label_dubbing (string, for generated dubbed audio when supported)). If dubbing is true, audio is generated as well. If disable_voice_cloning is true, a synthetic voice is used instead of voice cloning for dubbing.

{
  "transcriptions": [{
    "srclang": "en-US",
    "label": "English",
    "status": "published",
    "translation_languages": [
      { "srclang": "es-ES", "label": "Spanish", "status": "draft", "dubbing": true, "disable_voice_cloning": true, "ai_transparency_label": "AI-generated captions", "ai_transparency_label_dubbing": "AI-generated audio" },
      { "srclang": "fr-FR", "label": "French", "status": "draft" }
    ]
  }]
}

AI Translation Endpoints

Create a translation job

POST /v1/accounts/{account_id}/videos/{video_id}/ai/translation

Body includes target_languages: array of objects with srclang (BCP-47, required), optional label, optional status (draft|published), optional dubbing (boolean), optional disable_voice_cloning (boolean) to force a synthetic voice instead of voice cloning, optional ai_transparency_label (string, for translated captions when supported), and optional ai_transparency_label_dubbing (string, for dubbed audio when supported).

{
  "target_languages": [
    { "srclang": "es-ES", "label": "Spanish", "status": "draft", "dubbing": true, "disable_voice_cloning": true, "ai_transparency_label": "AI-generated captions", "ai_transparency_label_dubbing": "AI-generated audio" },
    { "srclang": "de-DE", "label": "German", "status": "draft" }
  ]
}

List translation jobs

GET /v1/accounts/{account_id}/videos/{video_id}/ai/translation/jobs

Returns an object with a jobs array. input is the original request serialized as an escaped JSON string; error is omitted unless present.

{
  "jobs": [
    {
      "job_id": "job_123",
      "status": "processing",
      "creation_date": "2025-08-20T14:03:22Z",
      "input": "{\"target_languages\":[{\"srclang\":\"es-ES\",\"dubbing\":true}]}"
    }
  ]
}

Supported languages

Supported languages for translation:

Supported languages and codes (Part 1)
Language Code
Afrikaans (South Africa)af-ZA
Akanak
Arabic (Standard)ar
Arabic (UAE)ar-AE
Arabic (Egypt)ar-EG
Arabic (Qatar)ar-QA
Arabic (Saudi Arabia)ar-SA
Assamese (India)as-IN
Aymaraay
Azerbaijani (Azerbaijan)az-AZ
Bashkirba
Belarusian (Belarus)be-BY
Bulgarian (Bulgaria)bg-BG
Bhojpuribho
Bambarabm
Bengali (Bangladesh)bn-BD
Tibetanbo
Bodobrx
Bosnian (Bosnia & Herzegovina)bs-BA
Catalan (Spain)ca-ES
Cebuanoceb
Central Kurdishckb
Corsicanco
Czech (Czechia)cs-CZ
Welsh (UK)cy-GB
Danish (Denmark)da-DK
German (Switzerland)de-CH
German (Germany)de-DE
Dogridoi
Lower Sorbiandsb
Divehidv
Eweee
Greek (Greece)el-GR
English (UK)en-GB
English (US)en-US
Esperantoeo
Spanish (Latin America)es-419
Spanish (Spain)es-ES
Spanish (US)es-US
Estonian (Estonia)et-EE
Basqueeu
Persian (Iran)fa-IR
Finnish (Finland)fi-FI
Fijianfj
Faroesefo
French (Canada)fr-CA
French (France)fr-FR
Western Frisianfy
Irish (Ireland)ga-IE
Scottish Gaelic (UK)gd-GB
Galician (Spain)gl-ES
Guaranign
Konkanigom
Gujarati (India)gu-IN
Hausa (Niger)ha-NE
Hawaiianhaw
Hebrew (Israel)he-IL
Hindi (India)hi-IN
Hmonghmn
Croatian (Croatia)hr-HR
Upper Sorbianhsb
Haitian Creoleht
Hungarian (Hungary)hu-HU
Armenian (Armenia)hy-AM
Indonesian (Indonesia)id-ID
Western Canadian Inuktitutikt
Ilokoilo
Icelandic (Iceland)is-IS
Italian (Italy)it-IT
Inuktitutiu
Inuktitut (Latin)iu-Latn
Japanese (Japan)ja-JP
Javanese (Indonesia)jv-ID
Georgian (Georgia)ka-GE
Kazakh (Kazakhstan)kk-KZ
Kurdish (Northern)kmr
Kannada (India)kn-IN
Supported languages and codes (Part 2)
Language Code
Korean (Korea)ko-KR
Kriokri
Kashmiriks
Kyrgyz (Kyrgyzstan)ky-KG
Latinla
Luxembourgish (Luxembourg)lb-LU
Lingala (DR Congo)ln-CD
Lithuanian (Lithuania)lt-LT
Mizolus
Latvian (Latvia)lv-LV
Literary Chineselzh
Maithilimai
Malagasymg
Māorimi
Macedonian (North Macedonia)mk-MK
Malayalam (India)ml-IN
Mongolianmn
Mongolian (Traditional)mn-Mong
Manipuri (Meitei Mayek)mni-Mtei
Marathi (India)mr-IN
Malay (Malaysia)ms-MY
Maltesemt
Burmesemy
Nepali (Nepal)ne-NP
Dutch (Netherlands)nl-NL
Norwegian (Norway)no-NO
Chichewa (Malawi)ny-MW
Oromoom
Odiaor
Querétaro Otomiotq
Punjabi (India)pa-IN
Polish (Poland)pl-PL
Pashto (Afghanistan)ps-AF
Portuguese (Brazil)pt-BR
Portuguese (Portugal)pt-PT
Quechuaqu
Romanian (Romania)ro-RO
Russian (Russia)ru-RU
Rundirun
Kinyarwandarw
Sanskritsa
Sindhi (Pakistan)sd-PK
Sinhalasi
Slovak (Slovakia)sk-SK
Slovenian (Slovenia)sl-SI
Samoansm
Somali (Somalia)so-SO
Albaniansq
Serbian (Serbia)sr-RS
Southern Sothost
Sundanesesu
Swedish (Sweden)sv-SE
Swahilisw
Tamil (India)ta-IN
Telugu (India)te-IN
Tajiktg
Thai (Thailand)th-TH
Tigrinyati
Turkmentk
Tagalog (Philippines)tl-PH
Klingontlh
Tswanatn
Tonganto
Turkish (Turkey)tr-TR
Tsongats
Tatartt
Tahitianty
Uyghurug
Ukrainian (Ukraine)uk-UA
Urdu (India)ur-IN
Uzbekuz
Vietnamese (Vietnam)vi-VN
Yiddishyi
Yucatec Mayayua
Chinese (Simplified)zh-CN
Chinese (Traditional)zh-TW
Chinese (Cantonese)zh-yue

Supported languages for dubbing:

Supported languages and codes for dubbing (Part 1)
Language Code
Afrikaansaf
Arabicar
Assameseas
Azerbaijaniaz
Belarusianbe
Bulgarianbg
Bengalibn
Bosnianbs
Catalanca
Czechcs
Welshcy
Danishda
Germande
Greekel
Englishen
Spanishes
Estonianet
Persianfa
Finnishfi
Frenchfr
Irishga
Scottish Gaelicgd
Galiciangl
Gujaratigu
Hausaha
Hebrewhe
Hindihi
Croatianhr
Hungarianhu
Armenianhy
Indonesianid
Icelandicis
Italianit
Japaneseja
Javanesejv
Georgianka
Kazakhkk
Supported languages and codes for dubbing (Part 2)
Language Code
Kannadakn
Koreanko
Kyrgyzky
Luxembourgishlb
Lingalaln
Lithuanianlt
Latvianlv
Maorimi
Macedonianmk
Malayalamml
Marathimr
Malayms
Nepaline
Dutchnl
Norwegianno
Nyanjany
Punjabipa
Polishpl
Pashtops
Portuguesept
Romanianro
Russianru
Sindhisd
Slovaksk
Sloveniansl
Somaliso
Serbiansr
Swedishsv
Swahilisw
Tamilta
Telugute
Thaith
Tagalogtl
Turkishtr
Ukrainianuk
Urduur
Vietnamesevi
Chinesezh

FAQs

  • Processing Time: Can take several minutes. When ready, captions and audio tracks will appear in the video details page.
  • Credit Consumption: Based on minutes of video processed. Contact your account team for more details.