Private Caption Workflow Guide

Privacy-focused local subtitle generation with Whisper

A local subtitle workflow keeps audio, transcripts, timings, and exports on your machine. Whisper makes high-quality on-device transcription practical, but transcription is only one stage. Reliable subtitles also need voice detection, timing alignment, optional speaker diarization, readable segmentation, human review, styling, and a deliberate export format.

Published July 19, 2026. Updated August 2, 2026. Reviewed by Glide Video Tools product team.

Quick answer

For private local subtitles, download models deliberately, run speech recognition on-device, keep temporary audio and transcripts in known folders, and review every name, number, line break, and cue boundary. Whisper can transcribe and translate, but base Whisper is not a speaker-diarization system. Add alignment and diarization only when needed, then verify their model downloads, telemetry, and hardware requirements.

Transcription is not the final subtitle

Speech recognition produces words. Timing, speaker labels, line lengths, reading speed, punctuation, and styling still need a caption pass.

CPU-only is a real option

whisper.cpp and quantized runtimes support local CPU inference; a supported GPU improves throughput but does not define privacy.

Diarization is separate

Whisper does not identify speakers by itself. WhisperX and pyannote can add alignment and speaker segmentation as extra stages.

Define the privacy boundary before choosing a tool

Local subtitle generation should mean the media, extracted audio, model inference, transcript, timing data, and final files remain on the computer you control. Some desktop interfaces are only front ends for remote APIs, so an installed app is not proof of on-device processing.

Model files commonly need one initial download. That differs from uploading source media for every job. For air-gapped use, download and verify the model and dependencies ahead of time, then test with the network disabled. Decide whether optional telemetry, crash reports, and model hubs are allowed.

  • Know the folders used for temporary WAV files, model caches, transcripts, and rendered captions.
  • Confirm whether the app sends audio, text, prompts, or usage data anywhere.
  • Use encrypted storage and appropriate access control for sensitive projects.
  • Delete intermediates according to the project retention policy, not only the final export.

The local transcription-to-subtitle pipeline

  1. Extract clean audio. Decode the source into the sample rate and channels expected by the model.
  2. Detect speech. Voice activity detection can skip silence and reduce spurious text.
  3. Transcribe. Run a local Whisper implementation with an appropriate model, language, and compute mode.
  4. Align. Refine word or phrase timestamps when precise highlighting or speaker assignment matters.
  5. Diarize. Segment speakers as Speaker 1, Speaker 2, and so on; naming remains a human task.
  6. Segment captions. Create readable cues based on timing, length, grammar, and shot changes.
  7. Review and export. Correct content, timing, line breaks, style, safe area, and format.
ffmpeg -i interview.mp4 -ar 16000 -ac 1 -c:a pcm_s16le interview.wav

This command creates a 16 kHz mono PCM file, a common input shape for local ASR. Keep the original unchanged and write extracted audio to a controlled working directory.

Whisper, faster-whisper, and whisper.cpp

RuntimeStrengthPlanning note
OpenAI WhisperReference implementation; multilingual recognition, translation, language identificationPython and PyTorch; selects CUDA when available or CPU otherwise
faster-whisperCTranslate2 inference, batching, 8-bit compute optionsUseful for throughput; test model and compute type on your hardware
whisper.cppPortable C/C++, quantization, CPU-only, CUDA, Vulkan, other backendsStrong fit for desktop and air-gapped use without a Python stack

Model choice trades speed, memory, and accuracy. Larger is not automatically better for every recording. Clean speech, the correct language, a useful initial prompt for names, and disciplined review can matter more than moving up one model size.

Use a representative sample containing accents, names, numbers, noise, and overlapping speech. Record processing time and corrections before selecting a default model for a batch.

Alignment and diarization solve different problems

Alignment refines when words occur. It helps karaoke highlighting, tightly timed captions, and matching transcript words to speaker turns. Diarization answers who spoke when by clustering voice segments. It usually produces anonymous labels, not verified names.

WhisperX combines a faster-whisper backend with forced alignment and optional pyannote diarization. Its maintainers note that native Whisper timestamps are at the utterance level, while alignment can provide word-level timing. pyannote.audio supplies separate diarization pipelines.

Extra stages add models, memory use, setup, and failure modes. Cross-talk, short interjections, similar voices, music, and poor microphones can confuse diarization. Skip it for a single-speaker tutorial. For a panel, use it as a draft and manually verify every handoff.

Choose SRT, VTT, ASS, or burned-in captions

OutputUse it forLimitation
SRTBroad platform uploads and simple editable captionsVery limited styling
WebVTTWeb players, cue settings, browser deliveryPlatform styling varies
ASS/SSAPrecise type, colour, position, effectsNot accepted everywhere
Burned-in videoShort feeds and identical presentationText cannot be disabled, searched, or corrected separately
JSON/TSVAutomation, review, downstream processingNot a viewer-ready deliverable

OpenAI Whisper's command-line output supports TXT, VTT, SRT, TSV, and JSON. Styling is a later rendering stage. Keep an editable sidecar master even when the delivery copy burns captions into pixels.

Human review checkpoints for usable subtitles

  • Correct names, brands, technical terms, dates, amounts, measurements, and negations.
  • Split cues at natural phrase boundaries instead of filling every line to a fixed count.
  • Keep reading speed appropriate and leave enough display time for short cues.
  • Do not cover faces, lower thirds, product controls, or platform interface elements.
  • Listen for speech omitted because of overlap, music, or a quiet microphone.
  • Check the first and last cue, speaker changes, and every correction after a timing shift.

Automatic accuracy metrics do not replace editorial review. One wrong medication, price, legal term, or name can matter more than dozens of correctly transcribed filler words.

Where GlideCaps and Studio fit

GlideCaps focuses on the draft-edit-export caption pass: generate local captions, review wording and timing, then create sidecar or burned-in output. GlideVideo Studio places that pass beside prep, clipping, audio, enhancement, joining, and conversion.

Do not assume every research feature in this guide is a GlideCaps feature. Alignment models, speaker diarization, translation, and CLI automation are separate capabilities that should be verified on the current product page or in the chosen runtime.

The practical decision is whether you want a focused caption interface or a configurable technical pipeline. A GUI reduces setup and repetitive command work; open-source runtimes offer deeper model and backend control.

Frequently asked questions

Can Whisper generate subtitles without uploading audio?

Yes. OpenAI Whisper and local runtimes such as whisper.cpp and faster-whisper can run on your computer after models and dependencies are installed.

Does Whisper identify different speakers?

Not by itself. Speaker diarization is a separate stage commonly added with pyannote.audio or WhisperX, and its labels need human verification.

Can local transcription run on CPU only?

Yes. CPU inference is supported by multiple runtimes, especially quantized whisper.cpp builds. A supported GPU can improve throughput.

Which subtitle format should I keep as the master?

Keep an editable sidecar such as SRT or VTT plus richer project data. Treat burned-in video as a delivery copy, not the only caption source.

Primary sources

  • OpenAI Whisper: Reference implementation and documentation for multilingual transcription, translation, and output formats.
  • whisper.cpp: Primary documentation for portable CPU, CUDA, Vulkan, quantized, and air-gapped Whisper inference.
  • WhisperX: Maintainer documentation for word-level alignment, batched inference, VAD, and optional diarization.
  • pyannote.audio: Primary project for speaker diarization pipelines and local or offline model operation.