Subtitle Generator - SRT/VTT (Whisper, bilingual, CJK-aware) avatar

Subtitle Generator - SRT/VTT (Whisper, bilingual, CJK-aware)

Deprecated

Pricing

from $15.00 / 1,000 transcribed minutes

Go to Apify Store
Subtitle Generator - SRT/VTT (Whisper, bilingual, CJK-aware)

Subtitle Generator - SRT/VTT (Whisper, bilingual, CJK-aware)

Deprecated

Turn audio or video files into clean SRT/VTT subtitles with Whisper on CPU. Readable cue splitting (line length, CJK-aware), word timestamps, English translation and bilingual subtitles. No API key needed.

Pricing

from $15.00 / 1,000 transcribed minutes

Rating

0.0

(0)

Developer

Aoi

Aoi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Subtitle Generator - SRT / VTT from audio & video (Whisper)

Turn any audio or video file into clean, readable subtitles with OpenAI's Whisper running on CPU inside Apify. No API key, no sign-up with a third party, no file ever leaves the Apify platform.

What makes this one different from a plain transcriber:

  • Broadcast-style cues. Subtitles are rebuilt from word timestamps into cues that respect a maximum line length, a maximum number of lines and a maximum duration, and break at sentence ends and pauses, instead of dumping Whisper's raw segments.
  • CJK-aware. Japanese, Chinese and Korean have no spaces; wide characters are counted properly, lines break after punctuation, and cues follow Whisper's phrase boundaries. maxCharsPerLine: 32 gives tidy 16-character Japanese lines for vertical video.
  • Bilingual subtitles. One click adds an English translation under every original line - for language learning content, travel vlogs and interviews.
  • Word-level timestamps on request, for karaoke-style or word-highlight captions.
  • Whisper large-v3-turbo on the Accurate tier: near large-v3 accuracy at a fraction of its cost. Japanese narration comes out with correct proper nouns and punctuation (a punctuation prompt is applied automatically for Japanese).
  • Three quality levels (small greedy / small / large-v3-turbo) so you can trade speed for accuracy per job.

Input

FieldTypeDefaultDescription
mediaUrlsarray-Direct links to mp3, wav, m4a, ogg, flac, mp4, mov, webm, mkv... (anything FFmpeg decodes). YouTube / TikTok page links are not supported; pass a direct file URL.
languagestringautoISO 639-1 code (en, ja, es...). Empty = auto-detect.
qualityenumbalancedfast (small, greedy), balanced (small, default), accurate (large-v3-turbo, ~3x slower, best for Japanese/Chinese/accents).
translateToEnglishbooleanfalseAdds English transcript + English SRT/VTT (second pass).
bilingualSubtitlesbooleanfalseExtra SRT with original line + English line in every cue.
maxCharsPerLineinteger42Wide (CJK) characters count double. 32 for mobile/vertical.
maxLinesPerCueinteger2
maxCueDurationSecinteger6
wordTimestampsbooleanfalseAdds a words array per file.
vocabularyHintstring-Names and jargon, comma separated.
vadFilterbooleantrueSkip silence; avoids hallucinated text.
saveFilesToKeyValueStorebooleantrueStore .srt, .vtt, .txt files and return their URLs.
maxDurationMinutes / maxFileSizeMb / downloadTimeoutSecinteger180 / 500 / 120Safety limits; rejected files are not charged.

Example

{
"mediaUrls": ["https://example.com/interview.mp4"],
"language": "ja",
"quality": "accurate",
"bilingualSubtitles": true,
"maxCharsPerLine": 32
}

Output

One dataset record per file:

FieldDescription
url, fileName, ok, errorSource and status. Failed files get ok: false and an error message.
language, languageProbabilityDetected language.
durationSeconds, tookMsMedia length and processing time.
textFull transcript.
segmentsWhisper's raw segments (start, end, text).
cuesThe subtitle cues after re-flow (start, end, text).
srt, vttSubtitle files as text.
srtUrl, vttUrl, txtUrlDownload links (key-value store).
wordsWord-level timestamps (when wordTimestamps is on).
translationText, translationSrt, translationVtt, translationSrtUrlEnglish translation (when requested).
bilingualSrt, bilingualSrtUrlOriginal + English cues (when requested).

Pricing

You pay per started minute of audio that was transcribed successfully. accurate quality costs more per minute, and translation / bilingual output adds a second per-minute charge. Downloads that fail, files above the size or duration limits and undecodable inputs are not charged. Platform usage is included.

Speed and limits

  • fast runs at roughly 3x realtime on the default 4 GB memory (a 30-minute podcast in about 10 minutes); balanced about 1.5x; accurate about 1x realtime. Give long files more memory (8 GB = 2 CPUs) to finish sooner at the same price.
  • English translation uses Whisper medium (large-v3-turbo cannot translate), so translated runs take about twice as long.
  • Timestamps are word-level for Latin scripts and character-level for CJK scripts.
  • No speaker diarization. Overlapping speech and heavily compressed phone audio reduce accuracy.
  • Links must be public. Signed URLs that expire in seconds may fail to download.

Tips

  • For vertical videos (Shorts, Reels, TikTok) use maxCharsPerLine: 32 and maxLinesPerCue: 2.
  • Put proper nouns in vocabularyHint; Whisper spells them far better with a hint.
  • For Japanese use quality: "accurate", set language: "ja" explicitly and put names in vocabularyHint.
  • Chain this Actor with a video downloader Actor if your source is a YouTube or TikTok page.

Support

Open an issue on the Issues tab with the media URL (or its format and length) and the input you used.