Video Transcripts
Every video and audio asset uploaded to Freedam is automatically transcribed. The resulting transcript becomes a subtitle track on the player, gets indexed for full-text search so the asset is findable by spoken content, and can be edited cue-by-cue or translated into any active workspace language.
This feature is designed for content editors, librarians, and accessibility teams who need their video corpus to be searchable, captioned, and re-usable across languages without reaching for an external transcription tool.

Page Overview
- Purpose: To make spoken content searchable, accessible, and translatable without leaving the asset detail page.
- When to use it: After uploading a video or audio file, when reviewing or correcting an auto-generated transcript, or when distributing the same content to audiences in multiple languages.
- What you can do here:
- Watch a video with auto-generated captions in the player.
- Edit the transcript cue-by-cue, with timestamp-synced playback.
- Download the transcript as
.vtt,.srt, or.txt. - Queue a DeepL translation into any active workspace language.
- Find the asset by typing a phrase that's spoken in it.
How automatic transcription works
Every uploaded video or audio asset is queued for transcription as part of the standard ingestion pipeline. The job extracts a 16-kHz mono audio track and sends it to the local transcriber sidecar (faster-whisper running whisper-large-v3-turbo), which returns acoustic-aligned segment timestamps. The result is stored as a subtitle track attached to the asset. Because transcription runs on your own infrastructure, the audio never leaves the cluster.
| Mime type | Behaviour |
|---|---|
video/* (≤ 2 hours) |
Audio extracted with ffmpeg, transcribed |
audio/* (≤ 2 hours) |
Sent directly to the sidecar |
video/* or audio/* (> 2 hours) |
Skipped. Single-call queue-safety cap. Upload an SRT or VTT track manually instead. |
image/*, application/pdf, others |
Not transcribable — no track is generated |
Detected language is stored on the track. When the model can't identify a language, the track is saved as und (undetermined) — you can fix this from the editor.
The asset doesn't need to be open in your browser while transcription runs. You'll see the new track on your next visit, or sooner if you stay on the page (see Status banners below).
Page Layout
The transcript surface is reached from the asset detail page of any video or audio asset:
- Player — Renders the video with subtitle tracks attached as native
<track>elements. The default track auto-enables; viewers can switch via the player's CC menu. - Manage subtitles button — Opens the subtitle dialog where every track (auto, uploaded, translated) is listed with badges and per-row actions.
- Edit transcript dialog — Opens from the pencil icon on an
Auto-source row. Two-pane layout: video player on the left, scrollable cue list on the right.

Main Features
Status banners
When you open the subtitle dialog right after uploading a video, one of the following banners may be shown above the track list. Each one is dismissed automatically when the underlying state changes — you don't have to refresh the page.
- Transcribing in progress (blue) — The job is queued or running. The page partial-reloads every few seconds; the auto track will appear here as soon as it's ready.
- Skipped (too long) (amber) — The asset exceeds the 2-hour cap. Upload an SRT/VTT track manually if you need captions.
- Failed (red) — Transcription retried several times and gave up. An admin can re-run it via the command line; see Re-running a failed transcription.
If no banner is shown, the asset either wasn't transcribable to begin with (e.g., an image) or the transcript is already done — look for the Auto row in the track list.
Transcript editor
- What it's for: Cleaning up automatic transcripts cue-by-cue and saving the result back to the same track.
- Typical use: Click the pencil icon next to an
Autorow in the subtitle dialog. - Result: A wide dialog opens with the player on the left and an editable cue list on the right. The current cue is highlighted as the player progresses; clicking a timestamp seeks the player to that cue.

How to use it:
- Click Manage subtitles on the asset detail page.
- Click the pencil icon next to the
Autotrack you want to edit. - (Optional) Hit Play in the embedded player. The cue list scrolls and highlights the active cue automatically.
- Click any cue's timestamp button to seek the player to that moment.
- Edit the text area for the cue. Repeat for as many cues as you need.
- Click Save transcript. The track file is rewritten in place, and the asset's search document is re-indexed automatically.
If you try to close the dialog with unsaved changes — Esc, X, or click-outside — Freedam asks you to confirm before discarding. Closing the browser tab while editing also fires the browser's "Leave site?" prompt.
Multi-format download
Three download buttons live under the player in the editor.
| Button | What you get | When to use it |
|---|---|---|
| Download .vtt | The exact file the player consumes | Re-uploading to another tool that expects WebVTT |
| Download .srt | SubRip-format conversion (timestamps with comma decimals) | Older video editors and most stock-footage marketplaces |
| Download .txt | Plain-text transcript with no timestamps or markup | Pasting into a content-management system, archive search, or compliance review. This is the same text that gets indexed for search. |
Downloads always reflect the latest saved state — including any cuts you just made in the editor.
Translation to other languages
Once you have a transcript, you can ask Freedam to translate it into any other language that's active in your workspace. The translated version becomes a new subtitle track tagged Translated — your original track is untouched.

How to use it:
- Open the transcript editor on the source track.
- In the Translate to card under the player, pick a target language from the dropdown. The list excludes the current track's language and any languages that aren't active in your workspace.
- Click Queue translation. A toast confirms the request is queued; a "Waiting on: <Language>" pill appears.
- The editor polls in the background. When DeepL finishes, the new translated track lands automatically and a second toast announces it. The waiting pill disappears.
- Close the editor and re-open the subtitle dialog to see the new
Translatedrow.
If DeepL isn't configured for your workspace, the translate card is hidden. Translation cost depends on character volume and is billed by DeepL — see your DeepL account dashboard for usage.
Search by spoken content
Auto and uploaded transcripts are folded into the per-language search document used by gallery search. There's nothing to configure — the moment a transcript is saved, the asset becomes findable by typing a phrase that appears in it.
- Type "quarterly earnings" in the gallery search bar — any video that says "quarterly earnings" surfaces in the results.
- Translated tracks are indexed in their own language. A French translation makes the asset findable in French search even if the original was in English.
Detailed Feature Documentation
Subtitle source badges
Every track in the subtitle list carries one of three badges so you know where it came from:
- Auto — Generated by the speech-to-text pipeline. Editable from the pencil icon.
- Uploaded — A user uploaded an
.srtor.vttfile. The transcript editor isn't currently exposed for these (re-upload to replace). - Translated — Produced by translating another track. Editable from the pencil icon if you want to fix translation hiccups.
Default track
The first track stored on a video is marked default and is the one the player auto-enables. Uploading a new SRT/VTT track with the "Set as default" checkbox demotes whatever was previously default. Auto-generated tracks become default only when no other track exists.
Re-running a failed transcription
If the Failed banner appears, an admin can re-run the transcription from the command line:
bin/dc artisan transcripts:rerun {gaid}
This deletes the existing auto track (if any), resets the asset's status to pending, and dispatches a fresh transcription job. The same banner flow applies — refresh the asset detail page to watch progress.
Custom vocabulary (admin)
Brand names, product names, and internal jargon often get mis-spelled in automatic transcripts. Workspace admins can teach the model those spellings via the Transcription Vocabulary admin page (Admin → System → Transcription Vocabulary). Terms added there are passed to the model as a glossary prefix on every future transcription.
The vocabulary applies only to future transcriptions — to refresh existing transcripts after adding terms, run transcripts:rerun {gaid} for the affected assets.
Limitations
- 2-hour single-call cap. A queue-safety duration cap keeps any single transcription within the worker's 30-minute timeout budget. Longer assets are skipped with an amber banner. Long-form chunking is on the roadmap.
- Single mechanism for vocabulary. Custom vocabulary is passed to the model as a prompt prefix only — there's no post-processing word-substitution pass, which avoids partial-word collisions but means very rare terms may still slip through.
- One translation pass. Re-translating an already-translated track will translate from the translation, not from the original. Always start translations from the source
AutoorUploadedtrack for best quality. - No timestamp editing in the editor. You can edit cue text and save back; cue timing is fixed unless you edit the
.vttexternally and re-upload. - Editor isn't yet available for
Uploadedtracks. Replace them via the upload form for now.
Related pages
- Asset Detail — the page where the subtitle manager and editor live.
- AI Settings — provider configuration and usage analytics, including transcription costs.