Written down, so Claude knows what was said.
Study with a Claude that sat through every lecture.
Stenny records your lectures and turns them into clean, timestamped transcripts, right on your Mac. Your Claude project reads every one of them, so its answers come from what was actually said in class, with the lecture and minute to check.
- Free
- Runs on your Mac
- Answers cite the minute
- English · French · German
Last week we fitted the line with least squares. Today we ask how good that line actually is.
R squared compares the variance the model explains with the total variance.
So an R squared of one means every point sits exactly on the line.
And zero means the line explains nothing at all.
Now let's see what happens on the test data…
How it works
One click. The rest follows the lecture.
Nothing to set up per lecture. The finished transcript is ready about twenty minutes after class.
-
10 min before
It knows your timetable
Stenny reads your calendar, for example your university's feed. Before class it offers to record. It never starts by itself.
-
During the lecture
Text appears as they speak
A red dot and the time sit in your menu bar. Within seconds the words show up in Obsidian. Pausing really turns the microphone off.
-
About 20 minutes after
A clean final transcript
Whisper goes over the whole recording again and adds sections, timestamps and a summary. On battery, it waits until you plug in.
-
Exam week
Study with Claude
A Claude project reads your transcripts straight from the vault and answers with the exact lecture and minute.
What you get
Context Claude can actually use.
Clean Markdown in your vault, organised by course. Claude reads it directly and cites the minute.
- course
- Data Analytics
- lecture
- 4
- date
- 2026-10-20
- length
- 2:58:40
Summary · written by AI
- Residuals are the gap between real and predicted values. [0:39:48]
- Squaring keeps them from cancelling out. [0:40:39]
- Least squares picks the line with the smallest sum. [0:41:15]
Residuals slide 11
[0:39:48]Okay, so let's look at the residuals. For every observation we have the real value and the value the line predicts. The residual is just the difference between the two.
[0:40:39]Why do we square them? Because otherwise the positive and the negative ones cancel out.
Least squares slide 12
[0:41:15]And that's the whole idea behind ordinary least squares.
Every lecture
A clean transcript with sections and a timestamp on every paragraph, plus a short summary. Course, lecture number, date and length sit at the top.
Every course
An overview page, all lectures in one file and all summaries in one file, kept up to date for you.
Connected notes
Topic notes link lectures across courses, so Obsidian's graph shows how everything fits together. Each lecture links to the one before and after.
Ready for Claude
One command writes the instructions for a Claude project per course. Claude then reads the transcripts directly, cites the minute, and keeps your glossary up to date.
Nothing is lost
The raw transcript and the compressed audio, about 12 MB per hour, stay in a separate folder outside your vault.
Why it works
Built for real lectures: long, fast, and in more than one language.
Made by a student for their own 2 to 4 hour lectures, and used every day.
Private by default
Whisper large-v3-turbo runs on your Mac. Without Claude, everything works fully offline.
Gets your terms right
Each course has a glossary that fills itself from the slides and repeated terms. “Wrong → right” pairs fix recurring mishearings.
Follows language switches
Set a language per course, or let Stenny check every 25 seconds or so. English quotes in a French lecture stay English.
Never loses audio
A small native recorder writes straight to disk. Use any microphone, even your iPhone near the lecturer, with a backup that fills any gaps.
No invented sentences
Silence, loops and echoes that Whisper sometimes makes up are filtered out of the clean transcript.
Your Mac stays usable
Transcription runs at low priority, and the live transcript can be switched off to save battery.
The AI never rewrites what was said.
Claude Haiku only adds headings, writes the summary and suggests fixes for misheard terms. Every fix is checked against your glossary and slides, and anything that changes the wording is rejected. Use your Claude Code login at no extra cost, or the API for about $0.01 per lecture.
Get Stenny
Download it, or build it yourself.
The download is the quickest way in. Building it yourself needs no Apple developer account.
Build with Claude Code
Let Claude Code do it
Clone the repository and ask Claude Code to follow SETUP.md. It installs everything, builds the menu bar app, sets up permissions and asks about your vault, calendar and courses.
$ git clone <repository> $ cd lecture-transcriber && claude > follow SETUP.md
Build by hand
A few terminal commands
Install Homebrew, then uv and ffmpeg, then build the menu bar app with one script. Your courses go in a settings file.
$ brew install uv ffmpeg $ uv tool install -e . $ LectureBar/build.sh
- Mac
- Apple Silicon (M1 or newer)
- Space
- About 3 GB, plus 1.8 GB for Apple's developer tools if you don't have them. Recordings take about 1 GB per semester.
- Memory
- 2.5 to 3.5 GB free while transcribing
- Optional
- Obsidian, a calendar feed with your lectures, and Claude Code for the AI step
Ask before you record
Many universities, WU Vienna for example, need the lecturer's consent. Ask first, and keep recordings and transcripts to yourself.
Early test version
The repository isn't public yet. Stenny runs every day on one MacBook Air M4 and hasn't been tested on other Macs.
Under the hood
From the microphone to your vault.
Microphone
Any input, including an iPhone through Continuity, plus an optional backup.
Native recorder
Swift and AVAudioEngine write the audio straight to disk.
Whisper
mlx-whisper large-v3-turbo on the graphics chip.
Filter
Removes silence, loops and echoes, and applies the glossary.
Claude Haiku
Optional. Headings, checked term fixes and the summary.
Markdown
Transcripts, summaries and course files in your vault.
A Python command-line tool does the transcription and a Swift app lives in the menu bar. ffmpeg compresses the audio. Everything is set in one settings file.