Skip to main content

lecturize

Build PyPI License: MIT

I record two hour lectures and I want them back as notes, not as audio. lecturize transcribes them on my machine with faster-whisper, continues from the last sentence if the run is interrupted, writes markdown chapters, SRT and Word files, and can translate them into fifty languages with local models. No PyTorch, no server, no API key.

pipx install lecturize
lecturize run lecture.mp4 --to it

That writes lecture.md, lecture.srt, lecture.it.md and lecture.it.srt next to the recording.

lecturize transcribing and translating a recording

Three things I could not find together anywhere else:

  • Resumable by design. Every utterance is saved as soon as it is produced. Kill the process, reboot, run the same command: it continues from the last one and ends with the same output a clean run would give. lecturize jobs shows what is pending;
  • Notes, not subtitles. Markdown with a chapter every few minutes cut at the pauses, paragraphs of whole sentences, plus SRT and docx from the same timeline. No language model involved;
  • Small and local. One pipx install, about 300 MB, no PyTorch. Translation with the OPUS-MT models packaged by Argos Translate, run on CTranslate2: 90 MB per language pair, about a minute for a two hour lecture.

Install

Python 3.10 or newer. pipx keeps it out of your other environments:

pipx install lecturize            # CPU
pipx install "lecturize[cuda]"    # NVIDIA GPU: adds the CUDA libraries, about 2 GB more

Models are downloaded on first use (lecturize paths shows where): small is 460 MB, large-v3 about 3 GB, a translation package 90 MB. Every thirty days the list of translation packages is refreshed from GitHub. Nothing else leaves the computer. ffmpeg is not needed: decoding goes through PyAV.

Use

lecturize run talk.mp3                       # small model, language checked, md + srt
lecturize run talk.mp3 -l it                 # say the language when you know it
lecturize run talk.mp3 -m large-v3           # a bigger model
lecturize run talk.mp3 --to it -f md,docx    # Italian notes as markdown and Word
lecturize run talk.mp3 --to en               # English only, translated by Whisper itself
lecturize run *.mp4 -o notes/                # many files, outputs in one folder
lecturize run talk.mp3 --fresh               # ignore the checkpoint, start over
lecturize jobs                               # interrupted runs; --clear forgets them
lecturize languages                          # translation targets available

When you do not pass -l, the first minute is decoded in the most likely languages and the one the model finds easiest to explain wins; the result is printed with the first words, so you can see at once if it went wrong. Whisper's own detector is confidently wrong on accented speakers (it called an English lecture Slovenian at 95%), which is why the check exists and why -l is still the safest option when you know the language.

Options: -m/--model (tiny, base, small, medium, large-v2, large-v3, large-v3-turbo, distil-large-v3, a folder or a Hugging Face id), -l/--language, --to, -f/--format (txt, md, srt, docx), -o/--out, --device auto|cpu|cuda, --compute-type, --no-vad, --fresh, --overwrite.

Measured on a laptop with an RTX 3080 Ti: small runs at about seven times real time on the CPU (int8) and twenty times on the GPU (float16); medium at three and nineteen. A two hour lecture is about 17 minutes on the CPU with small, 6 minutes on the GPU. Memory stays around 1 GB whatever the length, because the audio is decoded in ten minute blocks.

From Python:

from pathlib import Path
from lecturize import device
from lecturize.engine import Engine
from lecturize.pipeline import Job, run

dev = device.pick("auto")
run(Job(Path("talk.mp3"), model="small", to="it"), Engine("small", dev))

What it does not do

  • no speaker diarization, no word level timestamps in the output, no VTT: for those use whisperX (PyTorch, NVIDIA);
  • no GUI, no live microphone, no Apple Silicon or AMD GPU: use Buzz or Vibe (whisper.cpp, Metal and Vulkan). On a Mac lecturize runs on the CPU;
  • no server: Speaches gives you an OpenAI compatible API in Docker;
  • if you want a plain drop-in for the whisper command without PyTorch, whisper-ctranslate2 is that. lecturize is that plus the checkpoint, the notes and the translation.

Known problems

  • changing -m, -l or --to en starts a new job: the checkpoint is keyed by those settings;
  • with --to en only the English files are written, because Whisper translates while it transcribes;
  • SRT cues follow Whisper's segments and can run long (up to 30 s on fast speakers); they are not re-split for subtitle editors;
  • translation quality is OPUS-MT quality: good enough for notes, not for publishing;
  • the language check costs up to thirty seconds on a slow CPU. Pass -l to skip it.

Development

git clone https://github.com/davidcohenDC/lecturize.git && cd lecturize
python -m venv .venv && . .venv/bin/activate     # .venv\Scripts\activate on Windows
pip install -e ".[dev]"
ruff check src tests && mypy src && pytest        # pytest -m slow runs the real engine on tests/data

Issues and pull requests are welcome; conventional commit titles (fix:, feat:) drive the version number. Keep the package free of PyTorch.

Licenses

MIT. At run time it downloads Whisper models converted by SYSTRAN (MIT) and translation packages from Argos Translate built on OPUS-MT models (CC-BY 4.0: keep the attribution if you redistribute their output). The Silero VAD model inside faster-whisper is MIT, PyAV bundles FFmpeg under the LGPL. The sample recording in tests/data is synthetic speech from a text I wrote.

© 2026 David Cohen

Metadata

Release files for lecturize 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lecturize 1.1.0
File Size Uploaded
lecturize-1.1.0.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lecturize 1.1.0
File Interpreter ABI Platform
lecturize-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 47.2 kB

Release files / lecturize-1.1.0.tar.gz

Download URL lecturize-1.1.0.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
646fe816a2940792f257df5f8271b50bacc7a452f61aa09387eb28c22d3316b3
BLAKE2b-256 checksum
How to use checksums
9b9b9711f37e368af88436f50f713479b23ba2548b64d1cb2bb00a2c884221c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / lecturize-1.1.0-py3-none-any.whl

Download URL lecturize-1.1.0-py3-none-any.whl
Size 26.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6759529c2a0352336ae83b10072a72e179bab01219afd8eb5c17caadfa874504
BLAKE2b-256 checksum
How to use checksums
238a15231ffac5c69b0028374aa7c85ebe5d01139343d7606ec3c626e68c51c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page