Generate or align SRT subtitles from audio using this repository. Use when the user asks for subtitle generation, transcript-to-audio alignment, timing clean...
Design & media
Video to SRT
Try itGenerate timecoded SRT subtitles from local video or audio files. Use when a user wants a local low-cost subtitle workflow, asks to transcribe local media in...
What it does
Generate timecoded SRT subtitles from local video or audio files. Use when a user wants a local low-cost subtitle workflow, asks to transcribe local media in...
The skill document
Video to SRT
Workflow
- Create a new top-level task folder for the request in the workspace.
- Locate the user's local media file and confirm the language choice only if it is unclear.
- Run
scripts/run_local_subtitles.shfrom this skill folder. - Default to
--language zhand--model small. Switch to--language autofor mixed language audio. Switch to--model mediumonly when the user wants better accuracy and accepts slower runtime. - Inspect the generated
.srtfile by checking the first and last few cues before handing it off. - Return the subtitle path and mention that editors which accept
SRT, including Jianying desktop, can import it.
Stable Defaults
- Keep dependency installation inside a local virtual environment created by
scripts/run_local_subtitles.sh. - Keep caches local to the skill folder. This avoids macOS cache permission issues.
- Keep
HF_HUB_DISABLE_XET=1enabled. This avoids a common Hugging Face Xet download failure. - Prefer
SRT. It is the simplest subtitle format for broad editor compatibility. - Override
VENV_DIR,HF_HOME, orXDG_CACHE_HOMEonly when reusing an existing environment or model cache is helpful.
Commands
Use the wrapper script for the normal path:
scripts/run_local_subtitles.sh "/absolute/path/to/video.mp4" --output-dir "/absolute/path/to/task/output" --copy-next-to-input
Use these common variants:
scripts/run_local_subtitles.sh "/absolute/path/to/video.mp4" --language auto --output-dir "/absolute/path/to/task/output" --copy-next-to-input
scripts/run_local_subtitles.sh "/absolute/path/to/video.mp4" --model medium --output-dir "/absolute/path/to/task/output" --copy-next-to-input
Validation
- If the wrapper needs to install packages or download a model, request permission when required by the environment.
- Confirm that the final
.srtexists. - Preview the first and last cues with
sed -n '1,24p'andtail -n 24. - If the user wants a faster import workflow, keep a copy beside the source media with
--copy-next-to-input.
Resources
scripts/run_local_subtitles.sh: create or reuse a local virtual environment, install dependencies, configure stable cache paths, and run transcription.scripts/transcribe_to_srt.py: transcribe media and write timecoded SRT output.scripts/requirements.txt: minimal dependency list for the workflow.
Related skills
Transcribe audio and video with the transcribe.so CLI. Turns YouTube videos, podcasts (Apple Podcasts, Spotify, SoundCloud, Vimeo, Twitch, Loom), direct media URLs, and local audio or video files into speaker-labelled transcripts with timestamped segments, chapters, sections, cited Q&A, and subtitle files (SRT, VTT, karaoke VTT). Use when the user wants a transcript, show notes, chapters, subtitles, quotes, or answers grounded in a recording. 52 languages and dialects.
For transcript or subtitle requests involving podcast URLs, public audio URLs/files, or raw transcript cleanup. Generates audio + SRT + TXT artifacts and can...
Fetch and use transcripts from public and local media
Download a foreign-language movie/video (or take a local file), transcribe and translate it to English with WhisperX, and recreate the video with English subtitles. Use on requests like "get English subs for this", "translate this movie", "subtitle this YouTube film". Fully local: yt-dlp → WhisperX → ffmpeg.
Transcribe audio and video with the DaDaScribe AI service (YouTube URLs, direct links, or local files). Supports 100+ languages, speaker diarization with named speakers, translation to up to 5 languages, and returns .txt transcripts plus .srt subtitles. Use whenever the user asks to transcribe, capt