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

Supported languages for dubbing:

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

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.