GitHub

subtitle.lol

Subtitles made from a video's own audio, in its language or yours.

For when Plex can't find subtitles, or the English subtitles don't match the English dub. Each episode takes 1–2 minutes, and 95–100% of lines come out right.

Transcribe the speech with
using
Keys stay in this tab, go only to their own service, and are forgotten when you close it.
How to check

The security policy at the top of this page's source only allows connections to ElevenLabs and Google, and your browser enforces it. Keys are used only in core/speech/elevenlabs.js and core/translation/gemini.js. To limit a leaked key, give the ElevenLabs key only Speech to Text access with a credit limit, and restrict the Gemini key to the Generative Language API in the Google Cloud console.

Only the audio track is uploaded. Save the .srt next to the video with the same name, and Plex, VLC and IINA load it.

How it works

  1. Speech to text. The audio goes to ElevenLabs Scribe, which gives the time of every word. An hour of audio takes under a minute and about 1,200 credits ($0.22 on the Creator plan).
  2. Lines. Each subtitle has 1–2 lines, breaks at pauses and full stops, and appears 0.2 s before the voice, as professional subtitles do. Japanese, Chinese and Thai break between phrases found by Google's BudouX.
  3. Glossary, when translating. Names are where translation fails most visibly, so Gemini first lists every name, place and term in the episode, looks up the official spellings online, and flags names that were misheard.
  4. Translation. Gemini translates the lines in batches, each with the glossary and the lines before it, and must return every line.