Live Captions
Live Captions are enabled for all organizations. You can verify the feature status by navigating to dashboard.nanostream.cloud/organisation in your dashboard, under the Enabled Packages section.

For questions about available plans or advanced configuration, feel free to reach out via nanocosmos.net/contact.
Live captions work with both secure and non-secure playback streams. For secure streams, a valid JWT playback token is required for both video playback and caption delivery. For non-secure streams, no token is needed.
To learn more about secure playback, visit the dedicated article Secure Playback (H5Live).
Overview
Live Captions convert spoken audio into readable text in real time. This AI-driven feature enhances accessibility and content comprehension across a wide range of live-streaming, especially for:
- Events with spoken content
- Viewers in sound-off environments
- Users who are hard of hearing
- Corporate, educational, or public-facing broadcasts
This provides dynamic, accurate, and easy-to-follow text output that helps viewers stay engaged even without audio. Live captions start automatically as soon as the stream becomes active. The first caption lines typically appear within 5–7 seconds, depending on the selected ASR engine. Captions stop automatically when the stream ends.
To ensure low-latency and reliable delivery, all captions are produced and transmitted through a dedicated real-time output channel, separate from the video stream.
Live Captions and translations are based on a separate text stream separate to the audio/video track. This enables a flexible way to handle the text display anywhere in your workflow and web page. To allow viewers to enable, disable, or style captions, your playback environment must integrate caption handling by either using a nanoPlayer IFRAME embed code, or subscribing to the text stream messages directly. For implementation guidance or UI integration examples, please checkout our sample implementation in our builder hub, see our separate documentation or contact our support team via nanocosmos.net/support
How It Works
During an active stream, the audio is forwarded to the selected Automatic Speech Recognition (ASR) engine. The engine converts speech into text and outputs a continuous caption stream. The H5Live Player synchronizes to this caption feed and displays it to viewers in real-time.
Separate to our standard self-configurations we can enable additional speech services. For further information please contact our support at nanocosmos.net/support.
ASR Engines And Langauges
As already explained earlier, Live Captions rely on Automatic Speech Recognition (ASR) engines to convert spoken audio into real-time text. This section explains which ASR providers are available, how they differ, and which languages they support. You will also learn the difference between source and target languages and how they are applied during live caption generation.
Supported ASR Engines
- Deepgram
- Other (upon request)
Deepgram is an enterprise-grade ASR engine designed for high accuracy and very low latency in real-time captioning. It uses neural-network models optimized for live audio and supports multiple languages for both transcription and live translation.
Additional ASR engines can be enabled upon request. Please contact our support at nanocosmos.net/support to discuss options for your use case.
Supported Languages
The source language is the spoken language of the incoming audio. This language is used by the ASR engine to interpret the speech and generate text. The target language defines the output language of the captions. Only engines that support translation can provide multiple output languages.
Some ASR engines offer region-specific language codes (e.g. es-419 for Latin American Spanish). Use these variants when your target audience is primarily from a specific region and you want improved recognition of regional accents, vocabulary, and spelling conventions.
If you do not require a regional focus, the generic language code (e.g. es) is typically sufficient.
| Language | ID | Source | Target | Supported Engines |
|---|---|---|---|---|
| Bulgarian | bg | ✓ | ✓ | Deepgram |
| Catalan | ca | ✓ | ✓ | Deepgram |
| Czech | cs | ✓ | ✓ | Deepgram |
| Danish | da | ✓ | ✓ | Deepgram |
| Danish (Denmark) | da-DK | ✓ | ✓ | Deepgram |
| Dutch | nl | ✓ | ✓ | Deepgram |
| Flemish (Belgium) | nl-BE | ✓ | ✓ | Deepgram |
| English (Generic) | en | ✓ | ✓ | Deepgram |
| English (United States) | en-US | ✓ | ✓ | Deepgram |
| English (Australia) | en-AU | ✓ | ✓ | Deepgram |
| English (United Kingdom) | en-GB | ✓ | ✓ | Deepgram |
| English (India) | en-IN | ✓ | ✓ | Deepgram |
| English (New Zealand) | en-NZ | ✓ | ✓ | Deepgram |
| Estonian | et | ✓ | ✓ | Deepgram |
| Finnish | fi | ✓ | ✓ | Deepgram |
| French (Generic) | fr | ✓ | ✓ | Deepgram |
| French (Canada) | fr-CA | ✓ | ✓ | Deepgram |
| German (Generic) | de | ✓ | ✓ | Deepgram |
| German (Switzerland) | de-CH | ✓ | ✓ | Deepgram |
| Greek | el | ✓ | ✓ | Deepgram |
| Hindi | hi | ✓ | ✓ | Deepgram |
| Hungarian | hu | ✓ | ✓ | Deepgram |
| Indonesian | id | ✓ | ✓ | Deepgram |
| Italian | it | ✓ | ✓ | Deepgram |
| Japanese | ja | ✓ | ✓ | Deepgram |
| Korean (Generic) | ko | ✓ | ✓ | Deepgram |
| Korean (South Korea) | ko-KR | ✓ | ✓ | Deepgram |
| Latvian | lv | ✓ | ✓ | Deepgram |
| Lithuanian | lt | ✓ | ✓ | Deepgram |
| Malay | ms | ✓ | ✓ | Deepgram |
| Norwegian | no | ✓ | ✓ | Deepgram |
| Polish | pl | ✓ | ✓ | Deepgram |
| Portuguese (Generic) | pt | ✓ | ✓ | Deepgram |
| Portuguese (Brazil) | pt-BR | ✓ | ✓ | Deepgram |
| Portuguese (Portugal) | pt-PT | ✓ | ✓ | Deepgram |
| Romanian | ro | ✓ | ✓ | Deepgram |
| Russian | ru | ✓ | ✓ | Deepgram |
| Slovak | sk | ✓ | ✓ | Deepgram |
| Spanish (Generic) | es | ✓ | ✓ | Deepgram |
| Spanish (Latin America) | es-419 | ✓ | ✓ | Deepgram |
| Swedish (Generic) | sv | ✓ | ✓ | Deepgram |
| Swedish (Sweden) | sv-SE | ✓ | ✓ | Deepgram |
| Turkish | tr | ✓ | ✓ | Deepgram |
| Ukrainian | uk | ✓ | ✓ | Deepgram |
| Vietnamese | vi | ✓ | ✓ | Deepgram |
Because Deepgram supports translation, any source language listed above can be combined with any target language.
If your desired language is not listed, please get in touch with us via nanocosmos.net/contact or by email at sales(at)nanocosmos.net.
We can evaluate your use case, discuss engine support, and, where possible, include you in upcoming beta programs for additional languages.
Managing Live Captions
There are two different ways to integrate live captions into streams: via the nanoStream Cloud Dashboard or directly via the bintu API.
To use captions, you must first create a stream. See the stream creation guides:
Dashboard Integration
Live Captions can be configured directly through the nanoStream Dashboard.
The workflow during the Stream Creation in the UI is designed to be simple and intuitive:
- Select the Live Captions engine.
- Choose a source language (speech input).
- Choose one or more target languages (caption output).
- Save your configuration.
Screenshot: Adding live captions during stream creation
A detailed guide with screenshots on how to manage streams with live captions is available in the Live Captions in the Dashboard documentation.
The Live Captions configuration can be created, edited, or removed in multiple dashboard locations:
- During stream creation: dashboard.nanostream.cloud/stream/create
- Later via the Stream Overview tab Live Captions tab, which can be found:
- Stream Overview: dashboard.nanostream.cloud/stream/YOUR-STREAM-ID/live-captions
- Playout Overview: dashboard.nanostream.cloud/playout/YOUR-STREAM-ID/live-captions
- Webcaster Overview: dashboard.nanostream.cloud/webcaster/YOUR-STREAM-ID
You can modify live captions settings at any time. However, it’s important to note that the stream must be re-ingested for the changes to take effect.
API Integration
Live Captions are controlled via Stream Options, managed through the bintu API.
You can access the requests with the following permission level:
| nanoAdmin | nanoUser | nanoReadOnly |
|---|---|---|
| ✓ | ✓ | ✗ |
Supported API actions
POST→ Add live captions to a streamGET→ Retrieve current caption settingsPUT→ Update existing settingsDELETE→ Remove live captions settings
Parameters
YOUR_STREAM_ID: the unique ID of your stream in nanoStream CloudX-BINTU-APIKEY: your API key for authentication
To find your API key, please sign in to your nanoStream Cloud/Bintu account and copy your API key here.
Body
NAME: must always be set to"captions"to enable Live Captions for the stream.OPTIONS: Contains all configuration options for the caption engine, this includes:engine,sourceLanguage,targetLanguage(optional)
curl --request POST \
--url https://bintu.nanocosmos.de/stream/%7Bid%7D/options \
--header 'X-BINTU-APIKEY: REPLACE_WITH_YOUR_API_KEY' \
--header 'content-type: application/json' \
--data '{"name":"captions","options":{"engine":"deepgram","sourceLanguage":"en"}}'
For a complete end-to-end API walkthrough (including authentication, stream creation, caption option configuration, live monitoring, and CDN transcript downloads), see the Live Captions API Guide.
For additional languages, advanced configuration options, and complete request/response schemas, please refer to the official bintu API documentation: doc.pages.nanocosmos.de/bintuapi-docs.
Need assistance?
We're here to support you throughout your Live Captions integration. If you would like to discuss your Live Captions requirements, pricing, or custom solutions, feel free to contact our sales team via nanocosmos.net/contact or by email at sales(at)nanocosmos.net.
If you require technical help or want to report an issue, simply use our official support form.
We're happy to assist you in finding the best configuration for your workflow.