Translate audio & video
There are two ways to take a media file into another language, usable together on the same file:
- Translate the text inside it — speech in audio, dialogue and on-screen text in video, words in an image. kapi recognizes the text, translates it, and writes a subtitle file or a translated caption.
- Replace the whole file — when the file itself is the deliverable, supply a translated version per language and kapi carries it through as that language's asset (no text-to-speech, no re-encoding — you provide the file).
Recognition runs on your machine; try it with no install in the in-browser labs. The translating model is the one you already configured — see Choose a translation model.
- Desktop
- Agent (Claude)
- CLI
- Install the engines. In Plugins, install what you need:
asr(speech),av(video),vision(text in images and frames). The replace-the-file path needs none of them. - Run the flow. The media flows appear alongside the others once their plugin is installed — pick the flow, the file, and a target language, and run with live progress.
- Whole-file assets ride the project: put the translated file beside the source on the language path (for example
assets/fr/promo.mp4) and kapi picks it up as that language's asset, as-is.
Ask for the deliverable:
Give me French subtitles for
talk.m4a, and check the terminology against our approved terms.
The assistant runs the recognition flow, translates the cues through kapi (so the terms store applies), and runs the checks on the subtitle file like any other content. When recognition is uncertain, it can have a multimodal model re-read the unclear lines (media-refine) before translating.
Install the engines once, then each job is one flow run — the subtitle format follows the extension you give:
kapi plugin install asr # speech; also: av (video), vision (image text)
kapi run audio-to-subtitles -i talk.m4a -o talk.fr.vtt --target-lang fr
kapi run video-to-subtitles -i clip.mp4 -o clip.fr.srt --target-lang fr
kapi run image-ocr-translate -i banner.png --target-lang fr # → banner.alt.txt
In a project, the flows run without -i across the declared content, and outputs follow the language path instead of -o. Every flow and flag is in the command reference.
Next
- In-browser labs — the same recognition, client-side, nothing to install.
- Keep terms consistent — terminology enforcement on subtitle output.