A transcript is only the start of a usable subtitle file. You still need timing, readable line breaks, quality checks, and a person who can catch mistakes before delivery. I built SRT Subtitle Pipeline to make those steps part of one repeatable audio-to-SRT workflow.

The project is designed for people processing interviews, episodes, lessons, or other spoken audio who want a reviewable SRT rather than a transcript dump.

From audio to a reviewable subtitle

The workflow organizes files into an inbox, processing, review, delivery, and archive folders. It transcribes audio, formats captions to a maximum of two lines, and creates a QC report alongside the SRT. A person checks the result in the review folder, then explicitly approves it for delivery.

That last step matters. Speech recognition can miss names, overlap, quiet words, or punctuation. The tool helps with repetitive formatting and file handling, but it does not treat an automatic transcript as final.

Choose a transcription path

The default path uses faster-whisper for word-timed transcription. With an OpenAI key configured, the pipeline can ask OpenAI to clean up spelling, capitalization, and punctuation. A lexical comparison checks the response; if words were added, removed, changed, or reordered, the original transcript line is kept.

There are also two Gemini modes. hybrid-gemini keeps Whisper's timing structure and asks Gemini to improve the text within those time windows. gemini-only asks Gemini to produce both transcript and timing, with quality and economy presets for different model choices.

Install and run it

The included setup targets Windows with Python 3.11 or newer and FFmpeg on your PATH. Clone the repository, create an environment, and install the listed dependencies:

git clone https://github.com/alesmcgregor/srt-subtitle-pipeline.git
cd srt-subtitle-pipeline
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env

Add the API key for the service and mode you plan to use to .env. For NVIDIA GPU inference, the repository includes a PowerShell setup script and a doctor command; CPU transcription is available too.

Put an audio file in 01_INBOX and run:

python -m srt_pipeline.cli process --input "01_INBOX\example.mp3" --project "SeriesName" --episode "S01E01" --language "en" --device auto --model medium

Results appear in 03_REVIEW. After checking the SRT and its QC report, approve the file with python -m srt_pipeline.cli approve --review-file "03_REVIEW\...srt". Successful inbox files move under 01_INBOX\PROCESSED, so the next batch does not pick them up again.

Know what leaves your machine

The Whisper transcription step runs locally. If OpenAI cleanup is enabled, transcript text is sent to the OpenAI API. Gemini modes send the source audio to Google's Gemini API, and this implementation rejects inline audio files over 20 MB. Choose a mode based on your privacy requirements as well as language quality and cost; provider API usage may incur charges.

The project is most useful when you process spoken-word audio repeatedly and want consistent file naming, short caption lines, QC notes, and a clear human approval point. Explore the code and setup details in the public GitHub repository.