View all articles
deploymentwhisperspeech-to-textprivacy

Private Meeting Notes: Whisper Speech-to-Text on Your Own Hardware

JG
Jacobo González Jaspe
|
Abstract illustration: a slim dark monolith with a vertical slit of amber light. Hardware
Illustration generated with AI on our own machine.

You will turn a meeting recording into a transcript plus a list of decisions and action items, on a machine you own. The audio never leaves it, and a 16 GB laptop is enough.

What you need

  • A computer with 16 GB of RAM. Transcription alone fits in 8 GB: faster-whisper small peaks at about 2.3 GB on CPU in SYSTRAN’s own benchmark (faster-whisper README). The summary model adds more: llama3.1:8b occupied 9.2 GB once loaded on our box (Ollama 0.30.10, 2026-10-17, raw numbers in docs/measurements/local-model-benchmark-2026-10-17.json).
  • A recording in .mp3, .m4a or .wav.
  • Docker to run the transcription server, and Ollama for the summary.
  • Time: 15 to 20 minutes to set up.

An NVIDIA GPU makes transcription faster, but it is optional. Our table below was measured on one.

Step 1: Start the transcription server

Speaches serves faster-whisper behind an OpenAI-compatible API, so any tool that speaks that API can use it later. Pick the image for your machine:

bash
# laptop or any machine without an NVIDIA GPU
docker run -d --name speaches -p 8000:8000 ghcr.io/speaches-ai/speaches:latest-cpu

# machine with an NVIDIA GPU (needs the NVIDIA Container Toolkit)
docker run -d --name speaches --gpus all -p 8000:8000 ghcr.io/speaches-ai/speaches:latest-cuda

There is no plain latest tag; use one of the two above.

Then download the model once:

bash
curl -X POST http://localhost:8000/v1/models/Systran/faster-whisper-small

Expected: HTTP 200 after the download finishes. curl http://localhost:8000/v1/models lists it.

If it fails: “port already in use” means something else holds 8000; use -p 8001:8000 and change the port in every command below. docker logs speaches shows why the server did not start.

Step 2: Transcribe the recording

bash
time curl http://localhost:8000/v1/audio/transcriptions \
  -F "file=@meeting_audio.mp3" \
  -F "model=Systran/faster-whisper-small"

Expected: JSON with a text field holding the transcript. time prints how long it took, so you can compare with our table.

If it fails: a “model not found” error means the id is not exactly Systran/faster-whisper-small or the download in Step 1 did not finish. An empty text usually means a damaged file; play it first.

Which model?

ModelSpeedGood for
Systran/faster-whisper-tiny.enFastest, English onlyClear audio, quick drafts
Systran/faster-whisper-smallBalancedMost meetings. Start here
Systran/faster-whisper-mediumAbout twice as slow as smallAccents, jargon, noisy rooms

Step 3: Write the minutes with a local model

A raw transcript is a wall of “so, um, as I was saying”. An 8B model turns it into something you can act on.

bash
ollama pull llama3.1:8b
ollama run llama3.1:8b

Paste this prompt, then the transcript:

text
Here is a meeting transcript. Give me:
1. The purpose of the meeting in one sentence.
2. Every decision taken.
3. Every action item, with the owner if it was said.
4. Open questions or topics pushed to a later date.

Transcript:
[PASTE YOUR TRANSCRIPT HERE]

Expected: four short lists.

If it fails: if Ollama crashes or crawls, the machine is out of memory. Close other apps, or try a smaller model such as llama3.2:3b (rougher minutes, but they arrive).

Save the transcript and the minutes in a local folder. Pasting them into a web chat afterwards undoes the point of the exercise.

What we measured

A 23.8-second English clip, transcribed by Speaches (CUDA image) with faster-whisper on our NVIDIA DGX Spark (GB10), 2026-10-17. The clip is synthetic: a 92-word meeting-style paragraph read by a local text-to-speech voice, so we know every word that was said. Each time is the median of three runs after a warm-up. The real-time factor is processing time divided by audio length: 0.25 means a 30-minute meeting takes about 7.5 minutes.

Whisper model (faster-whisper)Processing time (s)Real-time factorWords transcribed
faster-whisper-tiny.en1.090.04690
faster-whisper-small7.470.31488
faster-whisper-medium15.410.64792

For an hour-long meeting, 0.05 against 0.65 is a 3-minute wait against a 39-minute one. One clean synthetic voice is easier than a real room with crosstalk, so expect more errors on your recordings than on ours. We have not timed a laptop CPU yet; your time from Step 2 fills that gap. The script is scripts/bench/whisper_transcription.py; every run and the full transcripts are in docs/measurements/whisper-transcription-2026-10-17.json in our repo.

What the spec sheet won’t tell you

  • Word counts are not accuracy. All three models produced about the same number of words on our clip (88 to 92). Because we know the script, we also counted wrong words: medium 6.5%, tiny.en 9.8%, small 12% (all three wrote “eleven” as “11”, which counts against each of them equally). small turned “Next meeting is Monday” into “Sunday”. One clip proves little, so read the transcripts side by side on your own audio before you pay the medium model’s time cost.
  • Names are the weak spot. Whisper guesses at surnames and product names: small wrote “Pabba” for Pablo, and all three heard “AI assistant” as “eye assistant” or “I-assistant”. Fix them in the transcript before the summary step, or the minutes will repeat the mistake.
  • The summary model can invent. An 8B model may attach an action item to the wrong person. Someone who was in the meeting should read the minutes before they go out.

When not to bother

If your meetings are already recorded and transcribed inside a platform your organisation has approved, you gain little. This setup pays off when recordings are sensitive, when there is no approved tool, or when you transcribe often enough that per-minute pricing adds up.

Next steps

Work with us

If you want this running for a whole office (the server sized for your meeting volume, accounts for your team, a retention rule that matches your policy and a short briefing for staff), that is the kind of fixed-scope job we do. We run the same measurements on your hardware first. See our consulting page or contact us.

Diagram
Share: LinkedIn X
Veredicto semanal

Get new guides before anyone else

Subscribe and we tell you when new guides, templates and workflows go up. One email a week, no spam.

Already published: 79 guides and 25 templates. All free, no signup.

Bonus: the local-AI starter pack PDF when you subscribe
Once a week No spam Unsubscribe anytime

See what you get

The EU AI Act now applies: a checklist you can complete

Tell us what you want to run

Tell us what you want to run and on what budget. We will tell you which hardware you need, which model fits, and what to expect from it, before you spend anything.

First call free, 15 min Local-first: your data stays on your network Open tools and guides

79 free guides · 17 compliance templates