AiSrt: Traduci, Estrai e Trascrivi i tuoi Sottotitoli (Aggiornamento)

AiSrt: Traduci, Estrai e Trascrivi i tuoi Sottotitoli grazie all'Intelligenza Artificiale

Uno strumento gratuito per rendere accessibili i video in 29 lingue, per i sordi, gli ipoudenti e tutti gli appassionati di contenuti multilingue

Hai un video con i sottotitoli in inglese e li vorresti in francese, spagnolo, arabo o giapponese? Oppure un film senza il minimo sottotitolo, da cui vorresti ottenere un .srt? È esattamente per questo che ho scritto AiSrt.

AiSrt è uno strumento da riga di comando che si basa sull'IA per tradurre i tuoi file di sottotitoli .srt, estrarre le tracce già incorporate nei tuoi file video e trascrivere l'audio di un video direttamente in sottotitoli. Tutte e tre nello stesso binario.

Per la traduzione, puoi scegliere tra cinque motori. Le API di OpenAI, di Anthropic (Claude), di Google (Gemini) e di xAI (Grok) costano pochi centesimi per film. Oppure un server Ollama che gira sulla tua macchina: gratuito, offline, nessuna chiave, nessun account. I tuoi sottotitoli non lasciano il tuo disco rigido.

E se il video non contiene alcun sottotitolo, AiSrt passa da Whisper, il modello di riconoscimento vocale di OpenAI, che trasforma la traccia audio in .srt da solo. Francamente, la prima volta che ho visto una conferenza di un'ora uscire sottotitolata senza che digitassi una sola riga, mi ha fatto un certo effetto.

Novità di questa versione: ora si possono leggere anche i sottotitoli dei Blu-ray, che non sono testo ma immagini. AiSrt li decodifica, li passa a un motore di riconoscimento dei caratteri e poi fa ricontrollare il risultato dall'IA. Ci torno più avanti, è la parte di cui sono più contento.


Perché AiSrt?

  • Prima di tutto l'accessibilità. Le persone sorde e ipoudenti meritano un accesso semplice ai contenuti video. Generare e tradurre sottotitoli dovrebbe richiedere pochi minuti, non una serata.
  • 29 lingue. Arabo, tedesco, inglese, cinese, coreano, danese, spagnolo, finlandese, francese, greco, hindi, ebraico, ungherese, indonesiano, italiano, giapponese, malese, olandese, norvegese, polacco, portoghese, rumeno, russo, svedese, ceco, thailandese, turco, ucraino e vietnamita.
  • Una traduzione che comprende il contesto. È tutta la differenza rispetto a un traduttore parola per parola: le espressioni idiomatiche, l'umorismo e i giochi di parole funzionano molto meglio.
  • Tre funzioni in un solo strumento: traduzione, estrazione, trascrizione.
  • Anche i sottotitoli che sono immagini. Le tracce PGS dei Blu-ray vengono lette tramite riconoscimento dei caratteri e poi ricontrollate dall'IA per correggere ciò che l'OCR ha letto male.
  • Cinque motori di traduzione tra cui scegliere. OpenAI, Claude, Gemini, Grok o Ollama, con la tua chiave, modificabile con un'opzione.
  • Gratuito e offline se vuoi. Con Ollama installato sulla tua macchina, la traduzione non costa nulla, non richiede nessuna chiave e non invia nulla da nessuna parte. Pratico per i contenuti che non vuoi far passare da un servizio di terze parti.
  • Niente da installare a parte. Il binario è autonomo, non c'è nessun runtime .NET da scaricare, è tutto dentro. E ffmpeg e whisper.cpp vengono recuperati automaticamente su Windows e Linux nel momento in cui servono.
  • Accelerazione NVIDIA su Windows. Se AiSrt rileva la tua scheda grafica, passa alla versione CUDA di whisper e la trascrizione diventa nettamente più veloce.

Installazione

Prerequisiti

In realtà, niente di obbligatorio. L'estrazione e la trascrizione funzionano senza chiave, senza account e senza inviare nulla da nessuna parte.

Per la traduzione, ti serve una chiave presso uno dei quattro servizi a pagamento (OpenAI, Anthropic, Google o xAI), oppure Ollama installato sulla tua macchina, che invece è gratuito e offline. Le due sezioni che seguono spiegano l'uno e l'altro, scegli quella che preferisci.

Un solo caso richiede uno strumento in più: i sottotitoli che sono immagini. In quel caso serve Tesseract, che installi tu stesso. Un comando e il problema è risolto per sempre.

Nessun runtime da installare: ogni archivio contiene un eseguibile autonomo per il tuo sistema.

  1. Scarica qui sotto l'archivio che corrisponde alla tua macchina: Windows x64, Linux x64, o macOS (Apple Silicon M1 à M4, o Intel x64).
  2. Decomprimilo nella cartella che preferisci.
  3. Opzionale: aggiungi questa cartella alla tua variabile d'ambiente PATH per chiamare aisrt da qualsiasi terminale.

Su macOS, se il sistema rifiuta di avviare il binario, apri il Terminale nella cartella ed esegui chmod +x aisrt, poi xattr -cr aisrt. Le build macOS sono firmate e notarizzate, quindi in linea di principio non dovresti averne bisogno.

Una chiave API, presso il servizio che preferisci

Ancora una volta: serve solo per la traduzione.

  1. Vai su platform.openai.com e crea un account, oppure accedi.
  2. Vai in API Keys dal menu del tuo profilo, in alto a destra.
  3. Fai clic su Create new secret key.
  4. Dalle un nome, per esempio AiSrt, e conferma.
  5. Copia subito la chiave, non verrà mai più mostrata.
  6. Incollala in appsettings.json, al posto di "OPENAI_KEY" :
{
  "OpenAI": {
    "ApiKey": "sk-votre-cle-api-ici",
    "Model": "gpt-5-mini",
    "Temperature": 1
  }
}

Questo file si trova accanto all'eseguibile. Una volta installato AiSrt, viene letto da %LOCALAPPDATA%\AiSrt\appsettings.json su Windows, e da ~/.config/aisrt/appsettings.json su Linux e macOS.

Consiglio: puoi anche tenere la chiave in un file .env separato. Metti "UseSecretEnvFile": true in appsettings.json, indica il percorso del file, e scrivici la riga OPENAI_KEY=sk-votre-cle-api-ici. È quello che faccio a casa mia, così evito di portarmi in giro la chiave in un file di configurazione che si condivide senza pensarci.

Il costo: OpenAI fa pagare in base all'uso, e un sottotitolo consuma pochissimo. Metti in conto qualche centesimo per un film intero con gpt-5-mini.

E se preferisci Claude, Gemini o Grok

Da questa versione, OpenAI non è più l'unico servizio a pagamento. Altri tre fanno esattamente lo stesso lavoro, con la tua chiave: Anthropic per Claude, Google AI Studio per Gemini e xAI per Grok. La procedura è la stessa ovunque: crei un account, generi una chiave, la incolli in appsettings.json.

Ogni servizio ha la propria sezione, con il suo modello predefinito già compilato:

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

E per provare un servizio senza toccare il file, c'è l'opzione --provider:

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

Sono accettati i nomi più comuni, quindi claude, google, grok e gpt funzionano bene quanto i nomi ufficiali. Li ho aggiunti perché sbagliavo anch'io una volta su due.

Un dettaglio che mi è costato una serata: ogni servizio accetta due nomi di variabile d'ambiente per la propria chiave, per esempio ANTHROPIC_API_KEY o CLAUDE_API_KEY. Avevo compilato il mio file .env con il nome del modello e non con quello dell'azienda, e AiSrt mi spiegava gentilmente che la mia chiave era assente. Era lì, sotto un nome che lui non controllava.

Ultima cosa, e vale per tutti e quattro: se la chiave è sbagliata, se l'account è vuoto o se il modello non esiste, AiSrt te lo dice prima di cominciare, indicando la riga del file di configurazione da correggere. Niente più crash a metà di un film tradotto solo a metà.


Oppure: tradurre gratis, a casa tua, con Ollama

Non ti va di creare un account OpenAI, o non vuoi che i tuoi file finiscano da terzi? Installa Ollama, che fa girare un modello linguistico direttamente sulla tua macchina. È gratis, illimitato e funziona senza connessione a internet una volta scaricato il modello.

Tre passaggi:

# 1. Installer Ollama depuis ollama.com, puis demarrer le serveur
ollama serve

# 2. Telecharger le modele livre par defaut
ollama pull gpt-oss:20b

# 3. Traduire, en local
aisrt "film.srt" -t fr --provider ollama

L'opzione --provider vale per il comando in corso. Se vuoi che Ollama diventi il tuo motore predefinito, metti "Provider": "ollama" nella sezione Translation di appsettings.json, e non dovrai più pensarci.

Quale modello scegliere? Ne ho provati diversi e la risposta mi ha sorpreso. Un modello locale deve rispettare un formato di output molto rigido, un blocco tradotto per ogni blocco inviato, nell'ordine, senza commenti. Alcuni non ci riescono proprio: qwen2.5 mi ha infilato osservazioni in cinese in mezzo ai sottotitoli, tre volte su tre, anche limitandolo al massimo. Non è utilizzabile. llama3.1:8b se la cava molto bene e va circa dieci volte più veloce. gpt-oss:20b è quello che fornisco predefinito, perché non ha mai perso un singolo blocco durante le mie prove, ma è decisamente più pesante (circa 14 GB) e più lento.

Siamo onesti sul compromesso: in locale è gratis ma lento, e la qualità resta inferiore a quella di gpt-5-mini. Per un film che guardi stasera, l'API OpenAI da tre centesimi è più comoda. Per elaborare un'intera stagione senza guardare il contatore, o per contenuti sensibili, Ollama diventa interessante.

Una cosa che mi ha fatto perdere tempo e che ti risparmio: AiSrt parla con Ollama tramite la sua API nativa e gli impone una finestra di contesto sufficiente. Se passi dal livello di compatibilità OpenAI di Ollama, questa impostazione viene ignorata, il modello tronca la sua risposta senza dirlo, e ti ritrovi con dei blocchi mancanti nel file finale. È gestito per te, ma spiega perché i lotti sono più piccoli in locale (10 blocchi invece di 40).


Quello che succede prima che parta

All'avvio vengono eseguite due verifiche, e mi hanno evitato un bel po' di nervoso.

La prima guarda il file che gli dai. Se digiti aisrt film.mkv dimenticando l'opzione, AiSrt ti risponde che è un video e ti indica --extract o --transcribe. Prima leggeva il file binario come testo e lo inviava così com'era all'IA, che rispondeva con un errore incomprensibile sulla dimensione della richiesta. Già che ci siamo, se gli dai un sottotitolo che non è un .srt (un .ass, un .vtt, un .sub), lo converte da solo con ffmpeg e passa alla traduzione.

La seconda verifica che il motore di traduzione risponda, prima di inviare qualsiasi cosa. Chiave non valida, account senza credito, server Ollama non avviato, modello non scaricato: ogni caso ha il suo messaggio e il suo comando di riparazione. Niente di peggio che avviare l'estrazione di sei tracce, andare a bere un caffè, e ritrovare al ritorno sei errori identici.

Guida all'uso

Sintassi generale

aisrt [<fichier>] [options]

Tutte le opzioni

OpzioneDescrizioneValore predefinito
<file>Percorso del file .srt da tradurre, oppure del file video con --extract e --transcribenessuna
-t, --target <code>Codice della lingua di destinazionefr
-s, --source <code>Codice della lingua di origineen
--languagesVisualizza le 29 lingue e i relativi codicinessuna
--streamsElenca le tracce dei sottotitoli di un video, senza estrarre nullanessuna
--extractEstrae le tracce dei sottotitoli di un video, tramite selezione interattiva. Le tracce immagine vengono lette tramite OCRnessuna
--transcribeTrascrive l'audio di un video in .srt con whisper.cppnessuna
-p, --provider <nom>Motore di traduzione: openai, anthropic, gemini, xai o ollamaquello di appsettings.json
--stream <n|all>Con --extract: la traccia da estrarre, senza passare dal menunessuna
-tt, --translate-to <code>Con --extract o --transcribe: traduce il risultato senza chiedere nullanessuna
-m, --model <nom>Con --transcribe: il modello whisper, senza passare dal menunessuna
-al, --audio-language <code>Con --transcribe: la lingua parlata nel videorilevata da whisper
-ni, --non-interactiveNon pone alcuna domanda, applica i valori predefinitinessuna
--versionVisualizza la versionenessuna
-h, --helpVisualizza la guidanessuna

Attenzione a non confondere --streams al plurale, che si limita a elencare le tracce, e --stream al singolare, che ne sceglie una da estrarre. Una lettera di differenza, due effetti molto diversi. Ho esitato a rinominare, e poi no: entrambi i nomi sono quelli che vengono naturali.


1. Tradurre i sottotitoli

La funzione principale, e quella che uso di più:

# Traduire de l'anglais vers le français (comportement par défaut)
aisrt "film.srt"

# Traduire de l'anglais vers l'espagnol
aisrt "film.srt" -s en -t es

# Traduire du français vers le japonais
aisrt "film.fr.srt" -s fr -t ja

Il file tradotto riprende il codice della lingua di destinazione nel nome: film.fr.srt, film.es.srt, e così via. Il file di output precedente, se esiste già, viene copiato in .bak.srt prima di essere riscritto.

La traduzione parte in lotti da 40 blocchi, e ogni lotto viene scritto sul disco non appena torna. Ecco cosa succede da me con un film completo:

Finestra del terminale, traduzione in corso, avanzamento lotto per lotto con il tempo trascorso

598 blocchi divisi in 15 lotti, e vedete il tempo accumularsi sulla destra: circa un minuto per lotto, poco meno di quindici minuti per il film intero. Se si interrompe al lotto 13, rilanciare lo stesso comando riparte dal lotto 13.

2. Elencare le tracce di un video

Prima di estrarre, si può guardare cosa c'è nel file:

aisrt --streams "film.mkv"

Ottenete una tabella con il numero del flusso, la lingua, il codec e il tipo di ogni traccia, testo o bitmap.

3. Estrarre i sottotitoli da un video

Molti MKV e MP4 incorporano già i sottotitoli. Tanto vale recuperarli invece di rifarli:

aisrt --extract "film.mkv"

Un menu vi permette di scegliere una traccia, oppure di estrarle tutte in una volta. I formati testuali sono gestiti (SRT, ASS, SSA, WebVTT, mov_text). Le tracce PGS, quelle dei Blu-ray, sono immagini: ora vengono lette tramite il riconoscimento dei caratteri, e la sezione seguente è dedicata a questo. Quelle dei DVD e della TNT non vengono ancora decodificate, ma AiSrt ve lo dice chiaramente invece di saltarle in silenzio. Una volta terminata l'estrazione, propone di tradurre ogni traccia subito dopo, con la lingua della traccia come lingua di partenza.

Nota: ffmpeg viene scaricato automaticamente su Windows e Linux se non è già presente sulla macchina. Su macOS, installatelo con brew install ffmpeg.

4. Trascrivere l'audio in sottotitoli

Niente sottotitoli nella video? Li fabbrichiamo, con whisper.cpp:

aisrt --transcribe "film.mkv"

Al primo avvio, AiSrt ti chiede quale modello di riconoscimento vocale usare:

  • base.en, circa 150 Mo: rapido, discreto con un inglese ben articolato
  • small.en, circa 500 Mo: il giusto compromesso
  • medium.en, circa 1,5 Go: più preciso, più lento
  • base, small, medium: le stesse dimensioni, ma multilingue
  • large-v3, circa 3 Go: il più preciso, multilingue, e il più lento

Puoi saltare questo menu con --model se sai già cosa vuoi.

Trascrivere qualcosa che non sia in inglese

Prima, AiSrt dava per scontato che gli dessi dell'inglese. Era una pessima idea: un discorso in francese veniva fuori come sottotitoli inglesi approssimativi, senza una parola di avvertimento, e se passavi poi a una traduzione, ottenevi del francese ritradotto da quell'inglese. Un telefono senza fili con i tuoi stessi video.

Ora whisper rileva la lingua parlata e AiSrt legge la sua risposta al volo. Non devi dichiarare niente, e il file prodotto ha il codice della lingua corretto. Puoi sempre imporla se sai cosa stai facendo, con un modello multilingue:

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

Il file prodotto si chiama allora film.fr.srt, e se passi poi a una traduzione, AiSrt sa che il punto di partenza è il francese.

Una trappola su cui mi sono soffermato per un po': i modelli il cui nome finisce per .en sono addestrati solo sull'inglese. Dagli dell'audio francese e non protestano, ti restituiscono della fonetica inglese con una faccia tosta totale. È il genere di risultato che si individua solo leggendo il file. AiSrt rifiuta quindi la combinazione prima di avviare qualsiasi cosa, e ti dà la lista dei modelli adatti.

Su Windows e Linux, AiSrt scarica whisper da solo. Su Windows, rileva anche una scheda NVIDIA e prende la versione CUDA, molto più rapida.

Su macOS, bisogna fare un passo in più. Il progetto whisper.cpp non vi pubblica un eseguibile da riga di comando, solo un framework destinato agli sviluppatori Apple: non c'è quindi niente da scaricare automaticamente. La soluzione sta in un comando:

brew install whisper-cpp ffmpeg

AiSrt andrà allora a cercare gli strumenti installati sul tuo sistema e li userà così come sono. Non ho un Mac a portata di mano per svolgere questo scenario dall'inizio alla fine, quindi se sei su macOS e qualcosa si inceppa, scrivimi, mi interessa.


I sottotitoli che sono immagini

Estrai una traccia di sottotitoli da un Blu-ray e non ottieni del testo. Ottieni delle immagini, una per battuta, in un formato che si chiama PGS. Il disco non memorizza le parole, memorizza la foto delle parole. È pratico per conservare il carattere e il posizionamento esatti del cinema, è catastrofico appena vuoi tradurre: non c'è niente da tradurre, ci sono solo pixel.

Finora, AiSrt ti diceva gentilmente che non sapeva farlo. Ora lo sa fare.

Cosa succede quando lanci il comando

Nulla di nuovo da digitare, è lo stesso comando di prima:

aisrt --extract "film.mkv"

Se scegli una traccia video, AiSrt concatena tre passaggi. Estrae la traccia grezza dal contenitore con ffmpeg. Decodifica lui stesso le immagini, una per sottotitolo, recuperando nel frattempo gli istanti di visualizzazione così come il disco li ha scritti. Poi passa tutto a Tesseract, un motore di riconoscimento dei caratteri (un software che rilegge il testo su un'immagine), in una sola volta per tutta la traccia.

Il file della lingua di Tesseract viene scaricato da solo, nella lingua dichiarata dalla traccia. Una traccia francese recupera il francese, una traccia giapponese il giapponese. Non devi scegliere nulla.

Tesseract, bisogna installarlo da soli

È l'unica dipendenza che AiSrt non va a cercare per te, ed è una scelta voluta. ffmpeg e whisper pubblicano eseguibili autonomi che posso scaricare in modo pulito. Tesseract no: sono installer di sistema, diversi su ogni piattaforma. Basta un comando:

# Windows
winget install tesseract-ocr.tesseract

# Linux
sudo apt install tesseract-ocr

# macOS
brew install tesseract

Piccolo aneddoto che mi ha fatto perdere mezz'ora: su Windows, questo installer non mette Tesseract nel PATH. AiSrt mi rispondeva quindi che lo strumento era introvabile, e mi proponeva di lanciare esattamente il comando che avevo appena lanciato. Un loop senza uscita. AiSrt ora controllerà nelle cartelle dove l'installer deposita davvero il binario.

L'IA rilegge ciò che l'OCR ha letto

Un motore di riconoscimento dei caratteri fa sempre gli stessi errori. La barra verticale al posto della I maiuscola. La r seguita dalla n che diventa una m. Un accento inghiottito. Su un film intero, alla fine si vede.

Allora AiSrt rimanda il testo riconosciuto al tuo servizio di traduzione, con un'istruzione precisa: correggi gli errori di lettura, non tradurre nulla, non riformulare nulla, non accorciare nulla. È una rilettura, non una riscrittura. Sui 100 sottotitoli di un estratto di film che ho sottoposto al banco di prova, 14 sono stati corretti, 86 erano già buoni, e nemmeno uno è stato spostato o inventato.

La barriera di sicurezza conta più della funzionalità, quindi la dettaglio. Una correzione viene accettata solo se rimane vicina a ciò che è stato letto: un modello che decidesse di tradurre una battuta viene scartato. E se la risposta non contiene esattamente tanti testi quanti ne ha inviati, l'intero lotto viene abbandonato e il testo grezzo viene conservato. Preferisco un sottotitolo con un errore evidente a un sottotitolo perfetto appiccicato alla battuta sbagliata.

Questa rilettura è attiva per impostazione predefinita e usa il servizio che traduce già. Puoi spegnerla, o affidarla a un altro servizio, in appsettings.json. E se non è configurata nessuna chiave, non succede nulla di drammatico: il testo dell'OCR viene scritto così com'è, AiSrt te lo dice, e l'estrazione termina normalmente.

Il bug che non avrei mai trovato senza cercarlo

Molti dischi fanno apparire e scomparire i loro sottotitoli con una dissolvenza. Per farlo, non inviano una nuova immagine: riutilizzano la stessa cambiando soltanto la sua trasparenza. AiSrt prendeva questo cambiamento per la fine del sottotitolo.

Risultato: un sottotitolo visualizzato per quattro secondi risultava diviso in tre pezzi. Il primo durava un secondo, e gli altri due erano troppo pallidi per essere riletti, quindi venivano scartati. Nessuno dei miei file di test faceva una dissolvenza, quindi ho creato apposta il caso per vederlo. Tre pezzi prima, un solo sottotitolo della durata corretta dopo.

AiSrt conserva ormai, tra i rendering successivi, quello in cui il testo è più leggibile. Una dissolvenza comincia e finisce trasparente: né il primo né l'ultimo è la scelta giusta.

Ciò che ancora non funziona

I sottotitoli video dei DVD e della TNT non vengono decodificati. A differenza del PGS, dove ogni immagine è autonoma, questi formati si leggono usando informazioni archiviate altrove nel file. È un altro cantiere, non un'estensione di questo. Nel frattempo, AiSrt li individua e ti avvisa invece di ignorarli in silenzio.


Un flusso completo, dal video grezzo ai sottotitoli tradotti

# Étape 1 : transcrire l'audio anglais
aisrt --transcribe "conference.mp4"
# donne conference.en.srt

# Étape 2 : traduire en français
aisrt "conference.en.srt" -s en -t fr
# donne conference.fr.srt

# Étape 3 : et en espagnol tant qu'à faire
aisrt "conference.en.srt" -s en -t es
# donne conference.es.srt

Tre comandi, e un video privo di sottotitoli diventa accessibile in tre lingue.

Un piccolo dettaglio importante se scripti tutto questo: AiSrt restituisce 0 quando è andato tutto bene, 1 in caso di errore, e 2 se hai annullato tu stesso. Quello che è già stato scritto sul disco resta lì, e la traduzione riprenderà al prossimo avvio.


Automatizzare tutto, senza una sola domanda

I tre comandi qui sopra fanno delle domande: quale traccia estrarre, quale modello usare, se bisogna tradurre dopo. Pratico quando sei davanti allo schermo, molto meno quando vuoi elaborare un'intera stagione durante la notte.

Quattro opzioni sostituiscono queste domande, e il flusso completo sta allora su una riga:

# Extraire la piste 2, la traduire en francais, sans jamais rien demander
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactive

Oppure per un'intera cartella, su Windows:

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

--non-interactive non indovina nulla: ogni domanda prende il suo valore predefinito, e ti dice quale ha scelto e quale opzione avrebbe permesso di sceglierne un altro. Invece, un valore che inserisci esplicitamente non viene mai ignorato in silenzio. Se chiedi la traccia 7 di un file che ne ha solo due, si ferma e ti elenca le tracce disponibili, invece di estrarre tutto facendo finta di niente. Per uno script, un errore chiaro vale più di un risultato inatteso.

E se premi Ctrl+C in questa modalità, si ferma subito, senza chiedere conferma. Non ci sarebbe nessuno a rispondere, e una domanda senza risposta bloccherebbe lo script del tutto.


Lingue supportate

CodiceLinguaCodiceLinguaCodiceLingua
arArabocsCecodaDanese
deTedescoelGrecoenInglese
esSpagnolofiFinlandesefrFrancese
heEbraicohiHindihuUngherese
idIndonesianoitItalianojaGiapponese
koCoreanomsMalesenlOlandese
noNorvegeseplPolaccoptPortoghese
roRumenoruRussosvSvedese
thThailandesetrTurcoukUcraino
viVietnamitazhCinese  

Digita aisrt --languages per ritrovare questo elenco in qualsiasi momento.


Configurazione avanzata

Si regola tutto in appsettings.json :

  • Il modello, con la chiave Model, se preferisci un altro modello OpenAI rispetto a gpt-5-mini.
  • La dimensione dei batch, con BatchSize : il numero di blocchi inviati per richiesta, 40 per impostazione predefinita.
  • La lunghezza delle righe, con MaxLineLength : oltre i 50 caratteri, AiSrt interrompe la riga perché resti leggibile sullo schermo.
  • Il timeout di rete, con RequestTimeoutMinutes : 10 minuti per impostazione predefinita. Se aumenti molto BatchSize, aumenta anche questo.
  • Le istruzioni date all'IA, con SystemPrompt e UserInstructionPrompt. È qui che diventa interessante : puoi adattare la traduzione a un contesto giuridico, medico, religioso o tecnico riscrivendo questi due testi. Li ho tolti volutamente dal codice per questo.
  • La temperatura, tra 0.3 per una traduzione molto letterale e 1.5 per una traduzione più libera. 1 per impostazione predefinita.
  • Il motore di traduzione, con Provider nella sezione Translation : openai, anthropic, gemini, xai o ollama. È l'impostazione che vale per tutti i tuoi comandi, mentre --provider vale solo per quello in corso.
  • Le impostazioni di Ollama, nella loro sezione dedicata : l'indirizzo del server con BaseUrl, il modello con Model, la dimensione dei batch con BatchSize, e la dimensione della finestra di contesto con NumCtx. Se aumenti la prima, ricordati di aumentare la seconda.
  • Il riconoscimento dei caratteri, nella sezione Ocr : la lingua di fallback con DefaultLanguage, la modalità di segmentazione di tesseract con PageSegMode, e l'ingrandimento delle immagini prima della lettura con UpscaleFactor. Gli ultimi due sono vincolati : un valore assurdo viene segnalato e sostituito, invece di far fallire la lettura immagine per immagine.
  • La rilettura del testo OCR, in Ocr:Proofread : Enabled per disattivarla, Provider per affidarla a un servizio diverso da quello che traduce, BatchSize per la dimensione dei batch. I suoi due prompt si riscrivono come quelli della traduzione.

Per chi?

  • Le persone sorde e ipoudenti, che hanno bisogno dei sottotitoli per accedere ai video ogni giorno.
  • I creatori di contenuti che vogliono raggiungere un pubblico al di là della propria lingua.
  • Gli insegnanti e formatori i cui corsi online meritano di meglio di una sottotitolazione automatica approssimativa.
  • I traduttori professionisti, per sgrossare una prima bozza in pochi minuti.
  • I cinefili e appassionati di serie, ovviamente.
  • Le associazioni e ONG che diffondono video a livello internazionale.

AiSrt è gratuito e pronto all'uso.
Scaricalo, provalo, e rendi i tuoi video accessibili a tutti.

Download — Version 1.10.0

Version history
1.10.0 01/08/2026Current
- Cette version regroupe tout ce qui s'est ajoute depuis la 1.6.2. - Trois services de traduction de plus : Anthropic Claude, Google Gemini et xAI Grok, a cote d'OpenAI et d'Ollama. - Le service se choisit avec --provider, ou dans appsettings.json. - Cle absente, cle invalide ou modele inconnu sont detectes avant la premiere traduction, plus au milieu d'un fichier. - La cle peut venir de deux noms de variable d'environnement par service, par exemple ANTHROPIC_API_KEY ou CLAUDE_API_KEY. - Les sous-titres image PGS des Blu-ray sont lus par OCR avec Tesseract, a installer soi-meme. - Le texte reconnu est relu par le service de traduction, qui corrige les erreurs de lecture sans traduire. - Les fondus ne coupent plus les sous-titres image : un sous-titre de quatre secondes ressortait en trois morceaux. - La langue parlee est detectee par whisper au lieu d'etre supposee anglaise. - Un modele whisper anglais seul est refuse sur de l'audio etranger, au lieu d'inventer. - La transcription ne perd plus le premier mot des phrases a cheval sur deux fenetres d'analyse. - Console en UTF-8 sous Windows : les accents s'affichent correctement pendant une transcription. - La notification de mise a jour s'affiche au demarrage, plus a la fin d'une operation d'un quart d'heure. - Ocr:PageSegMode et Ocr:UpscaleFactor sont bornes : une valeur hors limites est signalee et remplacee. - L'aide --help annonce enfin la lecture par OCR des pistes image. - Les sous-titres image de DVD et de la TNT ne sont toujours pas geres : ils sont signales et sautes.
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.
Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

Nessun commento per il momento.

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