# Remotion Rule: Transcribe Captions > Remotion skill rule: Transcribing audio to generate captions in Remotion. Part of the official Remotion Agent Skill for programmatic video in React. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash npx skills add remotion-dev/skills ``` This rule activates automatically when working with transcribe captions in a Remotion project. --- ## Intro Transcribing audio to generate captions in Remotion. Part of the [Remotion AI Skill](https://tokrepo.com/en/workflows/57997ead-c8fa-409c-916f-28bbc0adc8d9) — the official Agent Skill for programmatic video creation in React. **Best for**: Developers using Remotion for transcribe captions **Works with**: Claude Code, OpenAI Codex, Cursor --- ## Rule Content # Transcribing audio To transcribe audio to generate captions in Remotion, you can use the [`transcribe()`](https://www.remotion.dev/docs/install-whisper-cpp/transcribe) function from the [`@remotion/install-whisper-cpp`](https://www.remotion.dev/docs/install-whisper-cpp) package. ## Prerequisites First, the @remotion/install-whisper-cpp package needs to be installed. If it is not installed, use the following command: ```bash npx remotion add @remotion/install-whisper-cpp ``` ## Transcribing Make a Node.js script to download Whisper.cpp and a model, and transcribe the audio. ```ts import path from "path"; import { downloadWhisperModel, installWhisperCpp, transcribe, toCaptions, } from "@remotion/install-whisper-cpp"; import fs from "fs"; const to = path.join(process.cwd(), "whisper.cpp"); await installWhisperCpp({ to, version: "1.5.5", }); await downloadWhisperModel({ model: "medium.en", folder: to, }); // Convert the audio to a 16KHz wav file first if needed: // import {execSync} from 'child_process'; // execSync('ffmpeg -i /path/to/audio.mp4 -ar 16000 /path/to/audio.wav -y'); const whisperCppOutput = await transcribe({ model: "medium.en", whisperPath: to, whisperCppVersion: "1.5.5", inputPath: "/path/to/audio123.wav", tokenLevelTimestamps: true, }); // Optional: Apply our recommended postprocessing const { captions } = toCaptions({ whisperCppOutput, }); // Write it to the public/ folder so it can be fetched from Remotion fs.writeFileSync("captions123.json", JSON.stringify(captions, null, 2)); ``` Transcribe each clip individually and create multiple JSON files. See [Displaying captions](display-captions.md) for how to display the captions in Remotion. --- ## Source & Thanks > Created by [Remotion](https://github.com/remotion-dev). Licensed under MIT. > [remotion-dev/skills](https://github.com/remotion-dev/skills) — Rule: `transcribe-captions` Part of the [Remotion AI Skill](https://tokrepo.com/en/workflows/57997ead-c8fa-409c-916f-28bbc0adc8d9) collection on TokRepo. --- Source: https://tokrepo.com/en/workflows/957e8918-a9ce-4b3e-97e1-6493d6ed75db Author: Skill Factory