Trascrivere un'intervista, generare i sottotitoli di un video, ricavare il testo di un podcast: sono compiti che oggi si possono svolgere gratis e in totale privacy sul proprio computer, senza caricare nulla su servizi online. Il merito è di Whisper, il modello di riconoscimento vocale rilasciato da OpenAI come open source, e dei progetti che lo hanno reso veloce e leggero. Questa guida spiega, passo passo, come ottenere una trascrizione e un file di sottotitoli SRT in italiano.
Perché Whisper e perché in locale
Whisper è un modello addestrato da OpenAI su centinaia di migliaia di ore di audio in decine di lingue, italiano compreso. La sua forza è la robustezza: regge accenti, rumore di fondo, musica e parlato sovrapposto molto meglio dei vecchi sistemi di dettatura. Essendo open source, può girare interamente sul tuo computer. Questo ha tre vantaggi concreti: la privacy (l'audio non lascia mai la tua macchina, cosa decisiva per interviste riservate o dati sensibili), il costo zero anche su volumi alti (niente abbonamenti a minuti) e l'assenza di limiti di caricamento. Lo svantaggio è che la velocità dipende dal tuo hardware: una buona GPU trascrive in pochi minuti un'ora di audio, una CPU può metterci di più.
A chi serve e cosa ti serve prima di iniziare
È una guida per chi crea contenuti, studia, lavora con video e audio, o semplicemente vuole evitare di pagare servizi di trascrizione mensili. Funziona su Windows, macOS e Linux. Prerequisiti:
- Python 3.10 o superiore installato (per le opzioni 1 e 2).
- FFmpeg, lo strumento che estrae e converte l'audio. Su macOS si installa con
brew install ffmpeg, su Windows conwinget install Gyan.FFmpeg, su Linux consudo apt install ffmpeg. - Una scheda grafica (GPU) accelera molto, ma non è obbligatoria: tutto funziona anche su CPU, solo più lentamente.
Quale strumento scegliere: tre strade
Ci sono tre modi principali di usare Whisper, con pro e contro diversi:
- openai-whisper: l'implementazione ufficiale, semplicissima da riga di comando. Ottima per iniziare, un po' lenta su CPU.
- faster-whisper: una riscrittura ottimizzata (basata su CTranslate2) fino a diverse volte più veloce e con meno consumo di memoria. È la prima scelta consigliata per il miglior equilibrio tra velocità, qualità e consumo.
- whisper.cpp: scritto in C++, eccellente su Mac con chip Apple Silicon e su macchine senza GPU; usa modelli in formato GGUF/GGML.
Per l'italiano, i modelli medium e large-v3 danno i risultati migliori; large-v3-turbo è un buon compromesso tra qualità e velocità. I modelli piccoli (tiny, base) vanno bene solo per prove rapide. Se preferisci un'interfaccia grafica senza toccare il terminale, esistono applicazioni che impacchettano Whisper con un'interfaccia a finestre, come Buzz (multipiattaforma) o MacWhisper (su Mac): sotto il cofano fanno lo stesso lavoro descritto qui.
Strada 1: la via rapida con openai-whisper
È il modo più immediato per ottenere subito dei sottotitoli. Installa e lancia:
pip install -U openai-whisper
# Trascrive in italiano e crea direttamente il file .srt
whisper "intervista.mp4" --model medium --language Italian --output_format srt
Al termine troverai accanto al video un file intervista.srt con i tempi e il testo. Per ottenere anche un .txt e un .vtt, usa --output_format all. La prima volta che lanci un modello, Whisper lo scarica automaticamente: i file vanno da poche decine di MB (tiny) a oltre un gigabyte (large), quindi metti in conto qualche minuto di download iniziale.
Strada 2: faster-whisper, la scelta consigliata
Più veloce e parco di memoria. Installa con pip install faster-whisper, poi usa questo script che trascrive e scrive un file SRT:
from faster_whisper import WhisperModel
# Su GPU NVIDIA: device="cuda", compute_type="float16"
# Su CPU: device="cpu", compute_type="int8" (piu' leggero)
model = WhisperModel("large-v3", device="cpu", compute_type="int8")
segments, info = model.transcribe("intervista.mp4", language="it", beam_size=5)
print("Lingua rilevata:", info.language)
def t(s):
h = int(s // 3600); m = int((s % 3600) // 60); sec = s % 60
return f"{h:02d}:{m:02d}:{sec:06.3f}".replace(".", ",")
with open("intervista.srt", "w", encoding="utf-8") as f:
for i, seg in enumerate(segments, 1):
f.write(f"{i}\n{t(seg.start)} --> {t(seg.end)}\n{seg.text.strip()}\n\n")
print("File intervista.srt creato")
Risultato atteso: un file intervista.srt pronto da caricare su YouTube, da importare in un editor video o da rifinire a mano. Il parametro beam_size=5 migliora un po' l'accuratezza a costo di qualche secondo in più; abbassalo a 1 se hai fretta.
Strada 3: whisper.cpp per Mac e PC senza GPU
Se hai un Mac con Apple Silicon o un PC senza scheda grafica dedicata, whisper.cpp è spesso la soluzione più scattante:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build && cmake --build build --config Release
# Scarica un modello (es. large-v3)
sh ./models/download-ggml-model.sh large-v3
# Converti l'audio a WAV 16 kHz e trascrivi in SRT
ffmpeg -i intervista.mp4 -ar 16000 -ac 1 audio.wav
./build/bin/whisper-cli -m models/ggml-large-v3.bin -f audio.wav -l it -osrt
Otterrai un file audio.wav.srt con i sottotitoli in italiano. Su Apple Silicon whisper.cpp sfrutta l'accelerazione del chip e raggiunge velocità sorprendenti anche senza GPU dedicata.
Casi avanzati: traduzione, parole e voci diverse
- Tradurre invece di trascrivere: aggiungi
--task translate(in openai-whisper) per ottenere il testo tradotto in inglese. - Timestamp parola per parola: in faster-whisper passa
word_timestamps=Trueatranscribe, utile per sottotitoli "karaoke". - Distinguere chi parla (diarizzazione): serve uno strumento aggiuntivo come WhisperX con pyannote, che assegna le battute ai diversi interlocutori. È il passaggio più complesso, perché richiede un token di accesso al modello di diarizzazione, ma è l'unico modo per ottenere trascrizioni del tipo "Relatore 1 / Relatore 2".
- Audio lunghissimi: per file di molte ore conviene tagliarli in blocchi con FFmpeg e trascriverli in sequenza, per evitare che un eventuale errore costringa a rifare tutto da capo.
Errori comuni e come risolverli
- "ffmpeg not found": FFmpeg non è installato o non è nel PATH. Reinstallalo e riapri il terminale.
- "CUDA out of memory": il modello è troppo grande per la tua GPU. Usa un modello più piccolo (
medium) o passa acompute_type="int8". - Lingua sbagliata o testo in inglese: il rilevamento automatico ha sbagliato. Forza la lingua con
--language Italianolanguage="it". - Trascrizione lenta su CPU: è normale. Usa faster-whisper con
int8, oppure un modello più piccolo per le bozze. - Frasi ripetute o "allucinate" nei silenzi: capita nei tratti senza parlato. Attiva il filtro del silenzio (in faster-whisper,
vad_filter=True) per ridurre il problema.
Come rifinire e quando non usare Whisper
Una volta ottenuto l'SRT, puoi correggere gli errori con un editor gratuito come Subtitle Edit, oppure "incollare" i sottotitoli dentro il video con FFmpeg: ffmpeg -i intervista.mp4 -vf subtitles=intervista.srt video_sottotitolato.mp4. Per i contenuti pubblicati conviene sempre una rilettura umana, perché Whisper può sbagliare nomi propri, termini tecnici e punteggiatura. Un trucco utile è preparare un piccolo glossario dei nomi ricorrenti e fare un "trova e sostituisci" finale sul file di testo.
Quando non vale la pena: per un clip di trenta secondi, un servizio web è più rapido che configurare l'ambiente; se ti serve la diarizzazione precisa di una riunione con molte persone, valuta strumenti dedicati. Ma per la maggior parte dei casi — privacy, volumi alti, costo zero — Whisper in locale è oggi la soluzione più solida e flessibile, e una volta impostato l'ambiente trascrivere un nuovo file è questione di un solo comando.




