AiSrt : Vertaal, Extraheer en Transcribeer je Ondertitels (Update)

AiSrt : Vertaal, Extraheer en Transcribeer uw Ondertitels met behulp van Kunstmatige Intelligentie

Een gratis tool om video's toegankelijk te maken in 29 talen, voor doven, slechthorenden en alle liefhebbers van meertalige content

Heeft u een video met ondertitels in het Engels en wilt u deze in het Frans, Spaans, Arabisch of Japans? Of een film zonder enige ondertitels, waarvan u een .srt wilt maken? Dat is precies waarom ik AiSrt heb geschreven.

AiSrt is een commandoregeltool die gebruikmaakt van AI om uw ondertitelbestanden .srt te vertalen, al aanwezige sporen in uw videobestanden te extraheren en de audio van een video rechtstreeks naar ondertitels te transcriberen. Alle drie in dezelfde binaire.

Voor de vertaling heeft u de keuze uit vijf motoren. De API's van OpenAI, Anthropic (Claude), Google (Gemini) en xAI (Grok) kosten een paar cent per film. Of een server Ollama die op uw eigen machine draait: gratis, offline, geen sleutel, geen account. Uw ondertitels verlaten uw harde schijf niet.

En als de video geen ondertitels bevat, maakt AiSrt gebruik van Whisper, het spraakherkenningsmodel van OpenAI, dat de audiobron omzet in een .srt helemaal alleen. Eerlijk gezegd, de eerste keer dat ik een uur durende lezing ondertiteld zag worden zonder dat ik een enkele regel hoefde in te voeren, deed me iets.

Nieuw in deze versie: Blu-ray-ondertitels, die geen tekst zijn maar afbeeldingen, kunnen nu ook worden gelezen. AiSrt decodeert ze, stuurt ze naar een tekensherkenningsmotor en laat het resultaat vervolgens door de AI herlezen. Daar kom ik later op terug, dat is het stuk waar ik het meest tevreden over ben.


Waarom AiSrt?

  • Toegankelijkheid eerst. Doven en slechthorenden verdienen een eenvoudige toegang tot videoinhoud. Het genereren en vertalen van ondertitels zou enkele minuten moeten duren, geen avond.
  • 29 talen. Arabisch, Duits, Engels, Chinees, Koreaans, Deens, Spaans, Fins, Frans, Grieks, Hindi, Hebreeuws, Hongaars, Indonesisch, Italiaans, Japans, Maleis, Nederlands, Noors, Pools, Portugees, Roemeens, Russisch, Zweeds, Tsjechisch, Thais, Turks, Oekraïens en Vietnamees.
  • Een vertaling die de context begrijpt. Dat is het hele verschil met een woord-voor-woord vertaler: idiomatische uitdrukkingen, humor en woordspelingen komen veel beter over.
  • Drie functies in één tool: vertaling, extractie, transcriptie.
  • Zelfs ondertitels die afbeeldingen zijn. De PGS-sporen van Blu-ray worden gelezen door tekensherkenning en vervolgens herlezen door de AI om te corrigeren wat de OCR verkeerd heeft gezien.
  • Vijf vertaalmotoren naar keuze. OpenAI, Claude, Gemini, Grok of Ollama, met uw eigen sleutel, veranderbaar in een optie.
  • Gratis en offline als u dat wilt. Met Ollama geïnstalleerd op uw machine kost de vertaling niets, vraagt geen sleutel en verzendt niets ergens naartoe. Handig voor content die u niet via een derde partij wilt laten verlopen.
  • Geen extra installatie nodig. De binaire is autonoom, er is geen .NET-runtime te downloaden, alles zit erin. En ffmpeg en whisper.cpp worden automatisch opgehaald onder Windows en Linux wanneer we ze nodig hebben.
  • NVIDIA-versnelling onder Windows. Als AiSrt uw grafische kaart detecteert, schakelt het over naar de CUDA-versie van whisper en gaat de transcriptie veel sneller.

Installatie

Vereisten

Eigenlijk niets verplicht. Extractie en transcriptie draaien zonder sleutel, zonder account en zonder iets ergens naartoe te sturen.

Voor de vertaling heeft u een sleutel nodig bij een van de vier betaalde diensten (OpenAI, Anthropic, Google of xAI), of Ollama geïnstalleerd op uw machine, dat gratis en offline is. De twee volgende secties leggen elk uit, neem degene die u het beste uitkomt.

Er is maar één geval dat een extra tool vereist: ondertitels die afbeeldingen zijn. U heeft dan Tesseract nodig, dat u zelf installeert. Eén commando, en het is voor altijd geregeld.

Geen runtime te installeren: elke archief bevat een zelfstandige uitvoerbare voor uw systeem.

  1. Download hieronder het archief dat overeenkomt met jouw machine: Windows x64, Linux x64, of macOS (Apple Silicon M1 tot M4, of Intel x64).
  2. Pak het uit in de map van jouw keuze.
  3. Optioneel: voeg deze map toe aan jouw omgevingsvariabele PATH om aisrt vanaf elke terminal aan te roepen.

Onder macOS, als het systeem weigert de binaire te starten, open de Terminal in de map en voer chmod +x aisrt uit, gevolgd door xattr -cr aisrt. De macOS builds zijn ondertekend en genotarieerd, dus in principe zou je dit niet nodig moeten hebben.

Een API-sleutel, bij de service van jouw keuze

Nogmaals: dit is alleen voor de vertaling.

  1. Ga naar platform.openai.com en maak een account aan, of log in.
  2. Ga naar API Keys vanuit het menu van jouw profiel, rechtsboven.
  3. Klik op Create new secret key.
  4. Geef het een naam, AiSrt bijvoorbeeld, en bevestig.
  5. Kopieer de sleutel meteen, deze zal nooit meer worden weergegeven.
  6. Plak het in appsettings.json, in plaats van "OPENAI_KEY" :
{
  "OpenAI": {
    "ApiKey": "sk-jouw-api-sleutel-hier",
    "Model": "gpt-5-mini",
    "Temperature": 1
  }
}

Dit bestand bevindt zich naast de uitvoerbare. Zodra AiSrt is geïnstalleerd, wordt het gelezen vanaf %LOCALAPPDATA%\AiSrt\appsettings.json onder Windows, en vanaf ~/.config/aisrt/appsettings.json onder Linux en macOS.

Tip: je kunt de sleutel ook in een apart .env bestand bewaren. Zet "UseSecretEnvFile": true in appsettings.json, geef het pad naar het bestand op, en schrijf daarin de regel OPENAI_KEY=sk-jouw-api-sleutel-hier. Dat is wat ik thuis doe, het voorkomt dat je je sleutel in een configuratiebestand meeneemt dat je zonder nadenken deelt.

De kosten: OpenAI rekent per gebruik, en een ondertitel verbruikt heel weinig. Reken op een paar cent voor een hele film met gpt-5-mini.

En als je de voorkeur geeft aan Claude, Gemini of Grok

Sinds deze versie is OpenAI niet meer de enige betaalde service. Drie andere doen precies hetzelfde werk, met uw eigen sleutel: Anthropic voor Claude, Google AI Studio voor Gemini, en xAI voor Grok. De werkwijze is overal hetzelfde: u maakt een account aan, genereert een sleutel, en plakt deze in appsettings.json.

Elke service heeft zijn eigen sectie, met zijn standaardmodel al ingevuld:

{
  "Translation": { "Provider": "anthropic" },
  "Anthropic": { "ApiKey": "sk-ant-uw-sleutel", "Model": "claude-haiku-4-5" },
  "Gemini":    { "ApiKey": "uw-sleutel",        "Model": "gemini-3.6-flash" },
  "Xai":       { "ApiKey": "xai-uw-sleutel",    "Model": "grok-4.5" }
}

En om een service uit te proberen zonder het bestand aan te raken, is er de optie --provider:

aisrt "film.srt" -t nl --provider anthropic
aisrt "film.srt" -t nl --provider gemini
aisrt "film.srt" -t nl --provider grok

De gebruikelijke namen worden geaccepteerd, dus claude, google, grok en gpt werken net zo goed als de officiële namen. Ik heb ze toegevoegd omdat ik zelf één op de twee keer de fout maakte.

Een detail dat me een avond heeft gekost: elke service accepteert twee namen voor de omgevingsvariabele voor zijn sleutel, bijvoorbeeld ANTHROPIC_API_KEY of CLAUDE_API_KEY. Ik had mijn .env bestand ingevuld met de naam van het model en niet die van het bedrijf, en AiSrt legde me beleefd uit dat mijn sleutel ontbrak. Hij was er, onder een naam die hij niet controleerde.

Laatste punt, en dit geldt voor alle vier: als de sleutel onjuist is, als het account leeg is of als het model niet bestaat, zegt AiSrt dit voordat het begint, door de regel van het configuratiebestand te noemen die gecorrigeerd moet worden. Geen crashes meer halverwege een half vertaald film.


Of: gratis vertalen, bij u thuis, met Ollama

Geen zin om een OpenAI-account aan te maken, of geen zin om uw bestanden naar een derde partij te sturen? Installeer Ollama, dat een taalmodel rechtstreeks op uw machine draait. Het is gratis, onbeperkt, en het werkt zonder internetverbinding zodra het model is gedownload.

Drie stappen :

# 1. Installeer Ollama vanaf ollama.com, start vervolgens de server
ollama serve

# 2. Download het standaardmodel
ollama pull gpt-oss:20b

# 3. Vertalen, lokaal
aisrt "film.srt" -t fr --provider ollama

De optie --provider geldt voor de huidige opdracht. Als je wilt dat Ollama je standaardmotor wordt, zet dan "Provider": "ollama" in de sectie Translation van appsettings.json, en dan hoef je er niet meer aan te denken.

Welk model te kiezen? Ik heb er verschillende getest en het resultaat verraste me. Een lokaal model moet voldoen aan een zeer strikte uitvoerindeling, een blok vertaald per blok verzonden, in volgorde, zonder opmerkingen. Sommige modellen slagen daar helemaal niet in: qwen2.5 gaf me opmerkingen in het Chinees midden in de ondertitels, drie keer op drie, zelfs toen ik het maximaal beperkte. Dat is niet bruikbaar. llama3.1:8b presteert heel goed en is ongeveer tien keer sneller. gpt-oss:20b is degene die ik standaard lever, omdat het nooit een enkel blok heeft verloren tijdens mijn tests, maar het is aanzienlijk zwaarder (ongeveer 14 GB) en langzamer.

Laten we eerlijk zijn over de compromis: lokaal is het gratis maar traag, en de kwaliteit blijft onder wat gpt-5-mini produceert. Voor een film die je vanavond kijkt, is de OpenAI API voor drie cent comfortabeler. Voor het verwerken van een heel seizoen zonder naar de teller te kijken, of voor gevoelige inhoud, wordt Ollama interessant.

Een ding dat me tijd heeft gekost en dat ik je bespaar: AiSrt praat met Ollama via zijn native API en geeft het een voldoende contextvenster. Als je via de OpenAI compatibiliteitslaag van Ollama gaat, wordt deze instelling genegeerd, het model snijdt zijn antwoord af zonder het te zeggen, en je eindigt met ontbrekende blokken in het eindbestand. Dit wordt voor je beheerd, maar het verklaart waarom de batches kleiner zijn lokaal (10 blokken in plaats van 40).


Wat er gebeurt voordat het vertrekt

Twee controles draaien bij het opstarten, en ze hebben me heel wat frustratie bespaard.

De eerste kijkt naar het bestand dat je geeft. Als je aisrt film.mkv typt zonder de optie, antwoordt AiSrt dat het een video is en geeft je --extract of --transcribe. Vroeger las het de binaire bestand als tekst en stuurde het zoals het was naar de AI, die antwoordde met een onbegrijpelijke fout over de grootte van de aanvraag. Trouwens, als je hem een ondertitel geeft die geen .srt is (een .ass, een .vtt, een .sub), converteert hij het zelf met ffmpeg en gaat verder met de vertaling.

De tweede controleert of de vertaalmotor reageert, voordat hij iets verzendt. Ongeldige sleutel, account zonder krediet, Ollama-server niet gestart, model niet gedownload: elke situatie heeft zijn eigen bericht en reparatieopdracht. Er is niets erger dan het starten van de extractie van zes sporen, een kopje koffie gaan drinken, en bij terugkomst zes identieke fouten aantreffen.

Gebruikershandleiding

Algemene syntaxis

aisrt [<bestand>] [opties]

Alle opties

OptieBeschrijvingStandaardwaarde
<file>Pad naar het .srt bestand dat vertaald moet worden, of het videobestand met --extract en --transcribegeen
-t, --target <code>Doeltaalcodefr
-s, --source <code>Bron taalcodeen
--languagesToont de 29 talen en hun codesgeen
--streamsGeeft de ondertitelsporen van een video weer, zonder iets te extraherengeen
--extractExtraheert de ondertitelsporen van een video, met interactieve selectie. Beeldsporen worden gelezen met OCRgeen
--transcribeTranscribeert de audio van een video naar een .srt met whisper.cppgeen
-p, --provider <naam>Vertaalmachine: openai, anthropic, gemini, xai of ollamadeze in appsettings.json
--stream <n|all>Met --extract: het spoor dat moet worden geëxtraheerd, zonder door het menu te gaangeen
-tt, --translate-to <code>Met --extract of --transcribe: vertaalt het resultaat zonder iets te vragengeen
-m, --model <naam>Met --transcribe: het whisper-model, zonder door het menu te gaangeen
-al, --audio-language <code>Met --transcribe: de gesproken taal in de videogedetecteerd door whisper
-ni, --non-interactiveStelt geen vragen, past de standaardwaarden toegeen
--versionToont de versiegeen
-h, --helpToont de hulpgeen

Let op dat je --streams meervoudig, dat alleen de sporen opsomt, en --stream enkelvoudig, dat er één kiest om te extraheren, niet verwart. Slechts één letter verschil, twee heel verschillende effecten. Ik heb getwijfeld om het te hernoemen, maar heb dat niet gedaan: beide namen komen natuurlijk voort.


1. Ondertitels vertalen

De belangrijkste functie, en degene die ik het meest gebruik:

# Vertalen van het Engels naar het Frans (standaardgedrag)
aisrt "film.srt"

# Vertalen van het Engels naar het Spaans
aisrt "film.srt" -s en -t es

# Vertalen van het Frans naar het Japans
aisrt "film.fr.srt" -s fr -t ja

Het vertaalde bestand bevat de code van de doeltaal in zijn naam: film.fr.srt, film.es.srt, enzovoort. Het vorige uitvoerbestand, als het al bestaat, wordt gekopieerd naar .bak.srt voordat het opnieuw wordt geschreven.

De vertaling gaat in batches van 40 blokken, en elke batch wordt op de schijf geschreven zodra deze terugkomt. Dit is wat het bij mij oplevert voor een volledige film:

Terminalvenster, vertaling in uitvoering, voortgang batch voor batch met verstreken tijd

598 blokken verdeeld in 15 batches, en je ziet de tijd oplopen aan de rechterkant: ongeveer een minuut per batch, iets minder dan vijftien minuten voor de hele film. Als het stopt bij batch 13, herstart dezelfde opdracht vanaf batch 13.

2. Lijst de sporen van een video

Voordat je extraheren kunt, kun je kijken wat er in het bestand staat:

aisrt --streams "film.mkv"

Je krijgt een tabel met het stroomnummer, de taal, de codec en het type van elk spoor, tekst of bitmap.

3. Extraheer de ondertitels van een video

Veel MKV- en MP4-bestanden bevatten al ondertitels. Laten we ze liever ophalen dan ze opnieuw te maken:

aisrt --extract "film.mkv"

Een menu laat je een spoor kiezen, of alles in één keer extraheren. Tekstformaten worden ondersteund (SRT, ASS, SSA, WebVTT, mov_text). PGS-sporen, die van Blu-ray, zijn afbeeldingen: ze worden nu gelezen door middel van optische tekenherkenning, en het volgende gedeelte is daaraan gewijd. Die van DVD's en TNT zijn nog niet gedecodeerd, maar AiSrt laat je dat duidelijk weten in plaats van ze stilletjes over te slaan. Zodra de extractie is voltooid, wordt aangeboden om elk spoor meteen te vertalen, met de taal van het spoor als brontaal.

Opmerking: ffmpeg wordt automatisch gedownload onder Windows en Linux als het nog niet op je machine staat. Onder macOS installeer je het met brew install ffmpeg.

4. Audio transcriberen naar ondertitels

Geen ondertitels in de video? We maken ze, met whisper.cpp :

aisrt --transcribe "film.mkv"

Bij de eerste lancering vraagt AiSrt u welk spraakherkenningsmodel u wilt gebruiken:

  • base.en, ongeveer 150 MB: snel, goed voor duidelijk gesproken Engels
  • small.en, ongeveer 500 MB: de goede compromis
  • medium.en, ongeveer 1,5 GB: nauwkeuriger, trager
  • base, small, medium: dezelfde formaten, maar meertalig
  • large-v3, ongeveer 3 GB: de meest nauwkeurige, meertalig, en de traagste

U kunt dit menu overslaan met --model als u al weet wat u wilt.

Transcribe iets anders dan Engels

Vroeger ging AiSrt ervan uit dat u hem Engels gaf. Dat was een zeer slecht idee: een toespraak in het Frans kwam eruit als onnauwkeurige Engelse ondertitels, zonder een enkel waarschuwingswoord, en als u doorging met een vertaling, kreeg u Frans dat opnieuw vanuit dat Engels werd vertaald. Een telefoonspel met uw eigen video's.

Nu detecteert whisper de gesproken taal en AiSrt leest zijn antwoord on-the-fly. U hoeft niets te verklaren, en het geproduceerde bestand heeft de juiste taalcodering. U kunt het altijd afdwingen als u weet wat u doet, met een meertalig model:

aisrt --transcribe "film.mkv" --audio-language fr --model base

Het geproduceerde bestand heet dan film.fr.srt, en als u doorgaat met een vertaling, weet AiSrt dat het startpunt Frans is.

Een valstrik waar ik even op lette: de modellen waarvan de naam eindigt op .en zijn alleen op Engels getraind. Geef ze Franse audio en ze protesteren niet, ze geven u Engelse fonetiek met totale zelfverzekerdheid. Dit is het soort resultaat dat je alleen kunt opmerken door het bestand te lezen. AiSrt weigert dus de combinatie voordat hij iets start, en geeft u de lijst van modellen die geschikt zijn.

Onder Windows en Linux downloadt AiSrt whisper automatisch. Onder Windows detecteert het bovendien een NVIDIA-kaart en neemt de CUDA-versie, die veel sneller is.

Onder macOS moet je een stap verder gaan. Het project whisper.cpp publiceert geen uitvoerbare commandoregel, alleen een framework voor Apple-ontwikkelaars: er is dus niets automatisch te downloaden. De oplossing is één commando:

brew install whisper-cpp ffmpeg

AiSrt gaat dan op zoek naar de geïnstalleerde tools op uw systeem en gebruikt ze zoals ze zijn. Ik heb geen Mac bij de hand om dit scenario van begin tot eind uit te voeren, dus als u op macOS bent en het vastloopt, laat het me weten, ik ben geïnteresseerd.


De ondertitels die afbeeldingen zijn

Haal een ondertitelspoor van een Blu-ray en je krijgt geen tekst. Je krijgt afbeeldingen, één per zin, in een formaat dat PGS heet. De schijf slaat de woorden niet op, het slaat de foto van de woorden op. Het is handig om het lettertype en de exacte plaatsing van de film te behouden, maar het is rampzalig zodra je wilt vertalen: er is niets te vertalen, er zijn alleen maar pixels.

Tot nu toe vertelde AiSrt u beleefd dat hij het niet kon. Nu kan hij het.

Wat er gebeurt als je de opdracht uitvoert

Niets nieuws om in te voeren, het is dezelfde opdracht als voorheen:

aisrt --extract "film.mkv"

Als je een afbeeldingspoor kiest, doorloopt AiSrt drie stappen. Het haalt het ruwe spoor uit de container met ffmpeg. Het decodeert de afbeeldingen zelf, één per ondertitel, terwijl het de weergavetijden ophaalt zoals de schijf ze heeft geschreven. Vervolgens geeft het alles door aan Tesseract, een optische tekenherkenningsmotor (een software die tekst op een afbeelding leest), in één keer voor het hele spoor.

Het taalbestand van Tesseract wordt automatisch gedownload, in de taal die het spoor aangeeft. Een Frans spoor haalt het Frans op, een Japans spoor het Japans. Je hoeft niets te kiezen.

Tesseract moet je zelf installeren

Dit is de enige afhankelijkheid die AiSrt niet voor je ophaalt, en dat is bekend. ffmpeg en whisper publiceren zelfstandige uitvoerbare bestanden die ik netjes kan downloaden. Tesseract niet: dat zijn systeeminstallateurs, verschillend op elk platform. Eén opdracht is voldoende:

# Windows
winget install tesseract-ocr.tesseract

# Linux
sudo apt install tesseract-ocr

# macOS
brew install tesseract

Kleine anekdote die me een half uur heeft gekost: onder Windows plaatst deze installateur Tesseract niet in de PATH. AiSrt vertelde me dus dat de tool niet te vinden was, en stelde voor exact dezelfde opdracht uit te voeren die ik net had uitgevoerd. Een eindeloze lus. AiSrt zal nu kijken in de mappen waar de installateur daadwerkelijk het binaire bestand plaatst.

De AI leest opnieuw wat de OCR heeft gelezen

Een optische tekenherkenningsmotor maakt altijd dezelfde fouten. De verticale streep in plaats van de hoofdletter I. De r gevolgd door de n die een m wordt. Een weggelaten accent. Op een hele film begint dat op te vallen.

Daarom stuurt AiSrt de herkende tekst terug naar je vertaalservice, met een duidelijke instructie: corrigeer de leesfouten, vertaal niets, herformuleer niets, verkort niets. Het is een herlezing, geen herschrijving. Van de 100 ondertitels van een filmfragment dat ik heb getest, zijn er 14 gecorrigeerd, 86 waren al goed, en geen enkele is verplaatst of uitgevonden.

De veiligheidsmaatregel telt meer dan de functionaliteit, dus ik geef er meer details over. Een correctie wordt alleen geaccepteerd als deze dicht bij wat is gelezen blijft: een model dat zou besluiten een zin te vertalen, wordt afgewezen. En als het antwoord niet precies evenveel tekst bevat als het heeft verzonden, wordt de hele batch afgewezen en wordt de ruwe tekst behouden. Ik geef de voorkeur aan een ondertitel met een zichtbare fout dan een perfecte ondertitel die op de verkeerde zin is geplakt.

Deze herlezing is standaard actief en maakt gebruik van de service die al vertaalt. Je kunt het uitschakelen, of het aan een andere service toevertrouwen, in appsettings.json. En als er geen sleutel is geconfigureerd, gebeurt er niets dramatisch: de tekst van de OCR wordt letterlijk geschreven, AiSrt vertelt je dat, en de extractie eindigt normaal.

De bug die ik nooit zou hebben gevonden zonder te zoeken

Veel schijven laten hun ondertitels verschijnen en verdwijnen met een fade. Hiervoor sturen ze geen nieuwe afbeelding: ze hergebruiken dezelfde afbeelding door alleen de transparantie te veranderen. AiSrt beschouwde deze verandering als het einde van de ondertitel.

Resultaat: een ondertitel die vier seconden werd weergegeven, kwam in drie stukken terug. Het eerste duurde een seconde, en de andere twee waren te vaag om opnieuw te worden gelezen, dus werden ze weggegooid. Geen van mijn testbestanden had een fade, dus heb ik het geval speciaal gemaakt om het te zien. Drie stukken ervoor, één enkele ondertitel van de juiste duur erna.

AiSrt houdt nu, onder de opeenvolgende weergaven, degene waar de tekst het meest leesbaar is. Een fade begint en eindigt transparant: noch de eerste noch de laatste is de juiste keuze.

Wat nog niet werkt

De afbeeldingsondertitels van de DVD en de TNT worden niet gedecodeerd. In tegenstelling tot de PGS, waarbij elke afbeelding autonoom is, worden deze formaten gelezen tegen informatie die ergens anders in het bestand is opgeslagen. Dit is een ander project, geen uitbreiding van dit project. In de tussentijd herkent AiSrt ze en waarschuwt je in plaats van ze stilletjes te negeren.


Een volledige keten, van ruwe video naar vertaalde ondertitels

# Stap 1: transcribeer de Engelse audio
aisrt --transcribe "conference.mp4"
# geeft conference.en.srt

# Stap 2: vertaal naar het Frans
aisrt "conference.en.srt" -s en -t fr
# geeft conference.fr.srt

# Stap 3: en in het Spaans als het kan
aisrt "conference.en.srt" -s en -t es
# geeft conference.es.srt

Drie commando's, en een video zonder ondertitels wordt toegankelijk in drie talen.

Klein detail dat telt als je dit allemaal script: AiSrt geeft 0 terug wanneer alles goed is gegaan, 1 in geval van een fout, en 2 als je zelf hebt geannuleerd. Wat al op de schijf is geschreven, blijft daar, en de vertaling gaat verder bij de volgende lancering.


Alles automatiseren, zonder een enkele vraag

De drie bovenstaande commando's stellen vragen: welke track te extraheren, welk model te gebruiken, moet er vertaald worden. Handig als je voor het scherm zit, veel minder als je een complete seizoen 's nachts wilt verwerken.

Vier opties vervangen ze, en de volledige keten past dan op één regel:

# Extraheer track 2, vertaal het naar het Frans, zonder ooit iets te vragen
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactive

Of voor een hele map, onder Windows:

Get-ChildItem *.mkv | ForEach-Object {
  aisrt --extract $_.FullName --stream 1 --translate-to fr --non-interactive
}

--non-interactive raadt niets: elke vraag krijgt zijn standaardwaarde, en het vertelt je welke het heeft genomen en welke optie had kunnen worden gekozen om een andere te kiezen. Een waarde die je expliciet opgeeft, wordt echter nooit stil genegeerd. Als je track 7 van een bestand vraagt dat er maar twee heeft, stopt het en geeft het de beschikbare tracks weer, in plaats van alles te extraheren alsof er niets aan de hand is. Voor een script is een duidelijke fout beter dan een onverwacht resultaat.

En als je in deze modus op Ctrl+C drukt, stopt het onmiddellijk, zonder om bevestiging te vragen. Er zou niemand zijn om te antwoorden, en een onbeantwoorde vraag zou het script definitief blokkeren.


Ondersteunde talen

CodeTaalCodeTaalCodeTaal
arArabischcsTsjechischdaDeens
deDuitselGrieksenEngels
esSpaansfiFinsfrFrans
heHebreeuwshiHindihuHongaars
idIndonesischitItaliaansjaJapans
koKoreaansmsMaleisnlNederlands
noNoorsplPoolsptPortugees
roRoemeensruRussischsvZweeds
thThaistrTurksukOekraïens
viVietnameeszhChinees  

Typ aisrt --languages om deze lijst op elk moment terug te vinden.


Geavanceerde configuratie

Alles wordt ingesteld in appsettings.json :

  • Het model, met de sleutel Model, als je een ander OpenAI-model verkiest dan gpt-5-mini.
  • De batchgrootte, met BatchSize : het aantal blokken dat per verzoek wordt verzonden, standaard 40.
  • De regel lengte, met MaxLineLength : boven de 50 tekens snijdt AiSrt de regel af zodat deze leesbaar blijft op het scherm.
  • De netwerklatentie, met RequestTimeoutMinutes : standaard 10 minuten. Als je veel BatchSize verhoogt, verhoog het dan ook.
  • De instructies gegeven aan de AI, met SystemPrompt en UserInstructionPrompt. Hier wordt het interessant: je kunt de vertaling aanpassen aan een juridische, medische, religieuze of technische context door deze twee teksten opnieuw te schrijven. Ik heb ze opzettelijk uit de code gehaald voor dit doel.
  • De temperatuur, tussen 0.3 voor een zeer letterlijke vertaling en 1.5 voor een vrijere vertaling. 1 standaard.
  • De vertaalmotor, met Provider in de sectie Translation : openai, anthropic, gemini, xai of ollama. Dit is de instelling die geldt voor al je opdrachten, waar --provider alleen geldt voor de huidige.
  • De instellingen van Ollama, in hun eigen sectie: het serveradres met BaseUrl, het model met Model, de batchgrootte met BatchSize, en de grootte van het contextvenster met NumCtx. Als je de eerste verhoogt, denk dan aan het verhogen van de tweede.
  • De tekenherkenning, in de sectie Ocr : de fallback-taal met DefaultLanguage, de segmentatiemodus van tesseract met PageSegMode, en het vergroten van afbeeldingen vóór lezing met UpscaleFactor. De laatste twee zijn begrensd: een onrealistische waarde wordt gemeld en vervangen, in plaats van dat de afbeelding per afbeelding mislukt.
  • De proeflezen van de OCR-tekst, in Ocr:Proofread : Enabled om het uit te schakelen, Provider om het aan een andere dienst toe te vertrouwen dan degene die vertaalt, BatchSize voor de batchgrootte. Zijn twee prompts herschrijven zich zoals die van de vertaling.

Voor wie?

  • De doven en slechthorenden, die ondertitels nodig hebben om dagelijks toegang te krijgen tot video's.
  • De inhoudsproducenten die een publiek willen bereiken dat verder gaat dan hun taal.
  • De docenten en trainers wiens online cursussen beter verdienen dan een onnauwkeurige automatische ondertiteling.
  • De professionele vertalers, om een eerste versie in enkele minuten te verfijnen.
  • De filmfanaten en serie-liefhebbers, uiteraard.
  • De verenigingen en NGO's die video's internationaal verspreiden.

AiSrt is gratis en gebruiksklaar.
Download het, probeer het uit, en maak je video's toegankelijk voor iedereen.

Downloaden — Version 1.10.0

Versiegeschiedenis
1.10.0 01-08-2026Actueel
- Deze versie bevat alles wat is toegevoegd sinds 1.6.2. - Drie extra vertaaldiensten: Anthropic Claude, Google Gemini en xAI Grok, naast OpenAI en Ollama. - De dienst kan worden gekozen met --provider, of in appsettings.json. - Ontbrekende sleutel, ongeldige sleutel of onbekend model worden gedetecteerd vóór de eerste vertaling, niet halverwege een bestand. - De sleutel kan komen van twee omgevingsvariabelen per dienst, bijvoorbeeld ANTHROPIC_API_KEY of CLAUDE_API_KEY. - De PGS-ondertitels van Blu-ray worden gelezen door OCR met Tesseract, dat zelf geïnstalleerd moet worden. - De herkende tekst wordt nagekeken door de vertaaldienst, die leesfouten corrigeert zonder te vertalen. - De overgangen snijden de beeldondertitels niet meer af: een ondertitel van vier seconden kwam in drie stukken naar voren. - De gesproken taal wordt gedetecteerd door whisper in plaats van verondersteld Engels te zijn. - Een enkel Engels whisper-model wordt geweigerd voor buitenlandse audio, in plaats van te verzinnen. - De transcriptie verliest niet meer het eerste woord van zinnen die over twee analysevensters heen lopen. - Console in UTF-8 onder Windows: de accenten worden correct weergegeven tijdens een transcriptie. - De update-notificatie verschijnt bij het opstarten, niet meer aan het einde van een kwartier durende operatie. - Ocr:PageSegMode en Ocr:UpscaleFactor zijn begrensd: een waarde buiten de grenzen wordt gemeld en vervangen. - De hulp --help kondigt eindelijk de OCR-leesfunctie van beeldsporen aan. - De beeldondertitels van DVD en TNT worden nog steeds niet beheerd: ze worden gemeld en overgeslagen.
1.6.2 30-07-2026
- Transcription : le premier mot d'une phrase n'est plus perdu quand elle est à cheval sur deux fenêtres d'analyse. « Cette vidéo présente » était transcrit « vidéo présente » — un défaut qui touchait tous les transcripts produits jusqu'ici. - Transcription : plus de répétitions en boucle sur les passages chantés ou musicaux. - Contrepartie assumée de cette correction : les annotations du type [Musique] n'apparaissent plus dans les sous-titres. - Un transcript vide est désormais signalé immédiatement, au lieu d'échouer plus loin sur un fichier jugé illisible.
1.5.1 01-04-2026
- Traduction locale et gratuite avec Ollama. En plus de l'API OpenAI, AiSrt peut traduire via un serveur Ollama qui tourne sur votre machine : aucune clé, aucun compte, aucun envoi vers un service tiers, et un coût nul. Choix du moteur avec --provider openai|ollama, ou de façon permanente dans appsettings.json. - Vérification du moteur de traduction au démarrage. Clé invalide, compte sans crédit, serveur Ollama arrêté ou modèle absent : chaque cas est détecté avant le premier envoi et donne un message avec la commande qui le corrige, au lieu d'échouer au bout de plusieurs minutes. - Le fichier d'entrée est contrôlé avant tout traitement. Lancer aisrt sur un fichier vidéo sans option ne provoque plus d'erreur incompréhensible : AiSrt explique qu'il attendait un sous-titre et indique --extract ou --transcribe. Les sous-titres .ass, .ssa, .vtt et .sub sont convertis automatiquement en .srt avant traduction. - Transcription dans une autre langue que l'anglais, avec --audio-language, et ajout des modèles whisper multilingues base, small et medium. Un modèle anglais uniquement associé à une autre langue est refusé avant de lancer le traitement, au lieu de produire une transcription fausse sans le signaler. - --transcribe propose de traduire le résultat dans la foulée, comme le fait déjà --extract. - Utilisation en script, sans aucune question posée : --stream choisit la piste à extraire, --translate-to la langue de traduction, --model le modèle whisper, et --non-interactive supprime toute lecture au clavier. Une valeur invalide arrête l'exécution avec un message clair plutôt que d'appliquer un comportement inattendu. - Correction : traduire deux pistes d'une même vidéo vers la même langue ne fait plus écraser le premier fichier par le second. - Correction : un fichier verrouillé, un disque plein ou une sauvegarde impossible donnent un message d'erreur au lieu d'un plantage, et une traduction existante n'est jamais remplacée sans sauvegarde préalable. - La vérification de mise à jour ne ralentit plus le démarrage : elle tourne en arrière-plan et son résultat s'affiche à la fin de la commande.
Sluit je aan bij het gesprek

U moet een account hebben om dit artikel te kunnen commentariëren. Het aanmaken is gratis en duurt minder dan een minuut.

  • Het XMLTV-bestand dat dagelijks gratis te downloaden is.
  • Reageer op de artikelen en beantwoord andere lezers.
  • Per e-mail op de hoogte worden gehouden van nieuwe artikelen die u volgt

Geen opmerkingen voor het moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙