Ripped for your pleasure

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

Requirements

ffmpeg, ollama and python installed. Ability to access source video from embedded player (any llm will help you).

How to

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

Comments

No published comments yet.


Add a Comment

Your comment may be published.