Skip to main content

lecturize

Build PyPI License: MIT

I record my lectures and I want them back as notes I can read, not as a two hour audio file. lecturize runs on my machine, transcribes with faster-whisper, picks up where it left off if the run is interrupted, and can translate the result with local models. Nothing leaves the computer except the model downloads.

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

What it does

  • transcribes audio and video files (anything ffmpeg reads) with Whisper models, on CPU or on an NVIDIA GPU;
  • skips silence with voice activity detection, which is what stops Whisper from inventing text during pauses;
  • writes markdown with a chapter every few minutes, plain text, SRT subtitles and Word documents, all from the same timeline;
  • resumes an interrupted run. Utterances are saved as they are produced; the next lecturize run on the same file starts from the last one and ends with the same output a clean run would give. lecturize jobs lists what is pending;
  • translates into about fifty languages with the OPUS-MT models packaged by the Argos Translate project, run through CTranslate2. Pairs that have no direct model go through English. Translation into English uses Whisper itself, in one pass.

Install

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

pipx install lecturize

On an NVIDIA GPU add the CUDA libraries, and the runs get several times faster:

pipx install "lecturize[cuda]"

Models are downloaded on first use into the user cache (lecturize paths shows where): small is 460 MB, large-v3 about 3 GB, a translation package 90 MB. ffmpeg is not required for the common formats, since decoding goes through PyAV, but having it installed does not hurt.

Use

lecturize run talk.mp3                       # small model, language detected, md + srt
lecturize run talk.mp3 -m large-v3 -l it     # a bigger model, Italian spoken
lecturize run talk.mp3 --to en               # English notes, translated by Whisper
lecturize run talk.mp3 --to it -f md,docx    # Italian notes as markdown and Word
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 waiting to resume
lecturize languages                          # translation targets available

Options: -m/--model (tiny, base, small, medium, large-v2, large-v3, large-v3-turbo, distil-large-v3, or a folder with a CTranslate2 model), -l/--language, --to, -f/--format, -o/--out, --device auto|cpu|cuda, --compute-type, --no-vad, --fresh.

On my machine (a laptop CPU and an RTX 4070 Ti SUPER) small runs at about three times real time on the CPU in int8 and ten times on the GPU in float16; large-v3 on the GPU stays above real time. A two hour lecture translated into Italian adds about a minute.

The library is usable from Python as well:

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

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

How it is organised

src/lecturize/
  cli.py          the commands (typer)
  pipeline.py     one recording in, files out; resume logic
  engine.py       faster-whisper, streaming utterances with absolute timestamps
  checkpoint.py   SQLite store of utterances per (file fingerprint, settings)
  translate.py    Argos model packages through ctranslate2 + sentencepiece, pivot via English
  text.py         sentences, paragraphs, chapters
  writers.py      txt, md, srt, docx
  device.py       CPU or CUDA, and the DLL paths the [cuda] extra needs on Windows
tests/            unit tests, a resume test with a scripted engine, two slow tests with the real one

pytest runs the fast tests; pytest -m slow downloads the tiny model and runs the real engine on the 37 second synthetic lecture in tests/data.

Licenses

lecturize is MIT. It downloads and runs third party models: Whisper weights converted by SYSTRAN (MIT), and translation packages from Argos Translate, built on OPUS-MT models, which carry a CC-BY 4.0 attribution to their authors. See THIRD_PARTY.md.

MIT © 2026 David Cohen

Release files for lecturize 1.0.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.0.0
File Size Uploaded
lecturize-1.0.0.tar.gz 16.4 kB Details

Built distribution (wheel)

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

Total release size: 36.0 kB

Release files / lecturize-1.0.0.tar.gz

Download URL lecturize-1.0.0.tar.gz
Size 16.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1d4a9bea21133eba282e0a2e62e6fab81e8307a0817b02e4dbbfee4b7ee0a324
BLAKE2b-256 checksum
How to use checksums
63cc982828d06eac4340abb6f543aed0b7130516f867c99d820f91fdff1a2b17
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 20, 2026.

Transparency log

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

Download URL lecturize-1.0.0-py3-none-any.whl
Size 19.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a1e6e767489181b8c4eab81a2f7944cde670c3e11bedb764b0d6f93ce6625f28
BLAKE2b-256 checksum
How to use checksums
a4778929b04052cf3d4f392b33db55760f6775daa678c1a8505d88c371c85c7e
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 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

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