Michael Castelein
← All projects

Live Transcription

Talk, and see your words half a second later. Nothing leaves the machine.

Runs locally
  • Speech
  • Local AI
  • Python

I wanted a transcript of my own speech that appeared while I was still talking, and I did not want the audio going to a cloud service to get it. So this runs entirely on my own machine. You press start, you talk, and the words land on a browser page about half a second later.

The interesting part is what happens to a sentence before it settles. Finished text is black. The working draft is grey with a blinking cursor, and it keeps rewriting itself as more words arrive. A real example from a test run:

I want to create a new project
I want to create a lot of things
I want to create a live trans-
I want to create a live transcriber using a local model, and later
  turn it into a new model
I want to create a live transcriber using a local model, and later
  turn it into a live translator.        <- committed

A sentence turns black once you pause for about 0.7 seconds. Every committed line is written to a timestamped session file straight away, so a crash, a closed tab or a three hour conversation can never lose the text. The page only holds the last 400 lines on screen. The file keeps everything.

It translates too

The second column is a live translation. English in, Chinese out, or the other way around, and it handles a conversation where both languages are being spoken at once. Translation arrives 300 to 500 ms after the line is already on screen, so it never holds up the transcript.

[07:26:53] EN  So this is a project I have been thinking about for a while.
[07:26:53] ZH> 这个项目我一直在考虑。
[07:27:01] ZH  你今天晚上想吃什么?我们可以叫外卖。
[07:27:02] EN> What do you want to eat tonight? We can order delivery.

> marks a machine translation. Copy gives you both columns tab separated, so it pastes into a spreadsheet as an aligned bilingual transcript.

Why Qwen and not a translation model

The obvious choice was NLLB-200, a model built for translation. I measured both. NLLB is faster, but its vocabulary is missing common Chinese characters. 酱, as in 酱油 (soy sauce), is not in it at all, and it truncates sentences. A general model with a good vocabulary beat the specialist, which was not the result I expected.

Numbers

Mouth to grey text

~560 ms

Pause to settled text

~1.0 s

Transcription

large-v3-turbo, faster-whisper

Translation

qwen3:8b via Ollama

Hardware tested

RTX 5060 Laptop, 8 GB

Audio uploaded

None

A full ten second clip transcribes in 263 ms, which is 39 times faster than real time. The Whisper pass is flat at about 220 ms no matter how long the buffer is. Both models together sit at roughly 6.8 GB of the 8 GB card, which works but leaves little spare.

Screens

Live Transcription in light mode, English and Chinese side by side
Light mode
Live Transcription in dark mode
Dark mode

Why there is no demo button

This page is a write-up rather than a live tool, and that is deliberate. The whole design depends on a Whisper model and a Qwen model sitting on a GPU next to you. Put it behind a web server and you have rebuilt exactly the thing I was trying to avoid: your voice going somewhere else. So it stays local, and this page shows you what it does.

If you want to run it, or you want something like it inside your own team, get in touch and I will send you the repo.

Ask me about it