Ever find yourself needing a transcription from an obscure Finnish video, and need to do it without sending proprietory data to our MAG-7 overlords? You can now locally do that by ripping it from the source using ffmpeg and then doing the transcription locally. No fancy AI subscriptions needed.
Kalle Tolonen
Aug. 30, 2026
ffmpeg, ollama and python installed. Ability to access source video from embedded player (any llm will help you).
For the ripping, you can conveniently use this cmd:
ffmpeg -headers "my referrer, if needed" -i "source" -c copy output.mp4
After that, we'll initialize & activate a virtualenv to keep our python pkg's contained and have a bit more security. Virtual env's can be thought of as tiny virtual machines, or docker lite, so that you can use one set of python packages somewhere and another elsewhere.
python3 -m venv whisper-env
source whisper-env/bin/activate
(whisper-env) kalle.tolonen@machine dir %
Then we install the tools someone on the interwebs has already made:
pip install --upgrade pip
pip install faster-whisper
Give the library a python snippet made by the hivemind:
from faster_whisper import WhisperModel
print("Loading model...")
# device="cpu", compute_type="int8" is optimized for CPU / Mac execution
# You can use "medium" for faster speed or "large-v3" for max Finnish accuracy
model = WhisperModel("large-v3", device="cpu", compute_type="int8")
print("Transcribing output.mp4 (this takes some time)...")
segments, info = model.transcribe("output.mp4", language="fi")
print(f"Detected language: {info.language} with probability {info.language_probability:.2f}")
with open("transcript.txt", "w", encoding="utf-8") as f:
for segment in segments:
line = f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}"
print(line)
f.write(line + "\n")
print("Finished! Saved to transcript.txt")
Then we can run the model:
(whisper-env) kalle.tolonen@machine dir % python3 transcribe.py
Loading model...
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
Transcribing output.mp4 (this takes some time)...
Detected language: fi with probability 1.00
[0.00s -> 11.72s] ...tallennus päälle, eli uudestaan hyvää ..
rest of transcription
I did end up asking about the HF_TOKEN, since the fact that I can't watch videos indicates I'm in a bit of a hurry, if it's a problem, but apparently not.

After that I can ofc do whatever I want with the data I've harvested, which is in this case to have a synopsis done via a local llm.
(echo "Olet opiskeluassistentti. Alla on puheesta automaattisesti purettu transkriptio, jossa saattaa olla tunnistusvirheitä, katkenneita lauseita tai yhdyssanavirheitä. Päättele oikea asiayhteys ja tee siitä siisti, tiivis Markdown-yhteenveto suomeksi (enintään 1 sivu).
Käytä seuraavaa rakennetta:
## Tiivistelmä
## Tehtävät
## Arviointiperusteet
## Mahdolliset deadlinet
Transkriptio:" && cat transcript.txt) | ollama run qwen3.8 > kurssiyhteenveto.md
No published comments yet.
Your comment may be published.