Trascrivere un'intervista, sottotitolare un video, ricavare il testo di una lezione: sono compiti per cui esistono decine di servizi online a pagamento. Ma c'e' un'alternativa gratuita, privata e di qualita' professionale che gira interamente sul tuo computer: Whisper, il modello di riconoscimento vocale open source di OpenAI. In questa guida vediamo come installarlo e usarlo davvero, dalla versione piu' semplice a quelle ottimizzate per andare veloci anche senza una scheda grafica potente, fino a generare file di sottotitoli pronti all'uso.
A chi serve, cosa otterrai e i prerequisiti
Questa guida e' pensata per chi crea contenuti (giornalisti, podcaster, youtuber), per studenti e ricercatori che devono trascrivere registrazioni, e per chiunque tenga alla riservatezza: facendo tutto in locale, l'audio non lascia mai il tuo computer, un punto decisivo se contiene dati sensibili o coperti da riservatezza. Alla fine saprai trasformare un file audio o video in testo e in sottotitoli (formato SRT/VTT), in italiano e in decine di altre lingue.
Prerequisiti reali:
- Un computer con Windows, macOS o Linux. Una GPU Nvidia accelera molto, ma non e' obbligatoria: si puo' lavorare anche solo con la CPU, con tempi piu' lunghi.
- Python 3.9 o superiore installato.
- FFmpeg, lo strumento che Whisper usa per leggere i file audio/video. E' il prerequisito che piu' spesso viene dimenticato.
- Spazio su disco per i modelli: da poche centinaia di MB (modelli piccoli) a circa 3 GB (modello
large).
Quale strumento scegliere: tre strade a confronto
Whisper esiste in piu' implementazioni. Per questo compito le tre piu' utili sono:
- openai-whisper (l'originale, in Python): la piu' semplice da installare e usare, perfetta per cominciare. Un po' lenta sulle macchine senza GPU.
- faster-whisper (basato su CTranslate2): stessa qualita', ma molto piu' veloce e leggero in memoria. La prima scelta consigliata per un uso serio, soprattutto su CPU o GPU modeste.
- whisper.cpp (in C++): non richiede Python, gira benissimo su CPU e sui Mac Apple Silicon (sfrutta Metal). Ideale per chi vuole il minimo ingombro o integrare la trascrizione in altri programmi.
I modelli disponibili vanno da tiny (velocissimo ma impreciso) a large-v3 (il piu' accurato). Per l'italiano, medium e' un ottimo compromesso; large-v3 e' il massimo della qualita'; esiste anche large-v3-turbo, quasi accurato come il large ma molto piu' rapido.
Passo 1: installare FFmpeg
FFmpeg va installato per primo. Su macOS con Homebrew:
brew install ffmpeg
Su Linux (Debian/Ubuntu):
sudo apt update && sudo apt install ffmpeg
Su Windows, il modo piu' semplice e' con il gestore pacchetti winget:
winget install Gyan.FFmpeg
Verifica che funzioni con ffmpeg -version: se vedi il numero di versione, sei a posto.
Passo 2 (via semplice): openai-whisper da riga di comando
Crea un ambiente virtuale e installa il pacchetto:
python -m venv venv
# attiva l'ambiente: su macOS/Linux
source venv/bin/activate
# su Windows: venv\Scripts\activate
pip install -U openai-whisper
Ora trascrivere un file e' questione di un comando. Per un audio in italiano, con il modello medium, chiedendo direttamente i sottotitoli:
whisper intervista.mp3 --model medium --language Italian --output_format srt
Whisper scarichera' il modello la prima volta, poi creera' un file intervista.srt con i tempi e il testo, pronto per essere caricato in un lettore video o in un editor. Vuoi piu' formati insieme (testo, SRT e VTT)? Usa --output_format all. Per sfruttare la GPU Nvidia aggiungi --device cuda.
Passo 3 (via consigliata): faster-whisper in Python
Per chi vuole velocita' e controllo, faster-whisper e' la scelta migliore. Installazione:
pip install faster-whisper
Uno script Python che trascrive e salva i sottotitoli in SRT:
from faster_whisper import WhisperModel
# su CPU: device="cpu", compute_type="int8" (leggero e veloce)
# su GPU Nvidia: device="cuda", compute_type="float16"
model = WhisperModel("large-v3", device="cpu", compute_type="int8")
segments, info = model.transcribe("intervista.mp3", language="it")
print("Lingua rilevata:", info.language)
def secondi_to_srt(t):
h = int(t // 3600); m = int((t % 3600) // 60)
s = int(t % 60); ms = int((t - int(t)) * 1000)
return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"
with open("intervista.srt", "w", encoding="utf-8") as f:
for i, seg in enumerate(segments, start=1):
f.write(f"{i}\n")
f.write(f"{secondi_to_srt(seg.start)} --> {secondi_to_srt(seg.end)}\n")
f.write(seg.text.strip() + "\n\n")
print("Fatto: intervista.srt")
Su un portatile recente, anche solo con CPU e compute_type="int8", la trascrizione di un'ora di audio richiede pochi minuti. Con una GPU Nvidia e float16 i tempi crollano ulteriormente.
Passo 4 (massima leggerezza): whisper.cpp
Se non vuoi Python, o lavori su un Mac Apple Silicon, whisper.cpp e' imbattibile. Si compila una volta e poi vola. Clona e compila il progetto:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build
cmake --build build --config Release
Scarica un modello gia' pronto (qui il large-v3):
sh ./models/download-ggml-model.sh large-v3
Attenzione: whisper.cpp vuole un file WAV a 16 kHz mono. Converti il tuo audio con FFmpeg e poi trascrivi generando i sottotitoli:
ffmpeg -i intervista.mp3 -ar 16000 -ac 1 -c:a pcm_s16le intervista.wav
./build/bin/whisper-cli -m models/ggml-large-v3.bin -f intervista.wav -l it -osrt
L'opzione -osrt produce il file di sottotitoli; -l it forza l'italiano. Otterrai un intervista.wav.srt accanto al file audio.
Errori comuni e come risolverli
- «FFmpeg not found» o errori nel caricare l'audio: FFmpeg non e' installato o non e' nel PATH. Reinstallalo (Passo 1) e riapri il terminale.
- «CUDA out of memory»: il modello e' troppo grande per la tua GPU. Passa a un modello piu' piccolo (
mediuminvece dilarge-v3) o usacompute_type="int8"con faster-whisper. - Lingua sbagliata o testo misto: specifica sempre la lingua (
--language Italianolanguage="it") invece di lasciare il rilevamento automatico, che su audio brevi o rumorosi puo' sbagliare. - Trascrizione lenta: sei su CPU con il modello large. Prova faster-whisper con
int8, oppurelarge-v3-turbo, oppure un modello piu' piccolo. - Punteggiatura o nomi propri imprecisi: e' normale. Per testi importanti, una rilettura umana resta indispensabile.
Casi avanzati: chi parla e quando
Whisper trascrive, ma non distingue automaticamente i diversi interlocutori. Se ti serve sapere «chi dice cosa» (la cosiddetta diarizzazione) o avere i tempi parola per parola, lo strumento giusto e' WhisperX, che combina Whisper con un allineamento preciso e un modello di separazione dei parlanti. E' piu' complesso da configurare, ma e' la soluzione per trascrizioni di riunioni o tavole rotonde. Per chi preferisce un'app grafica senza terminale, su Mac esiste MacWhisper, mentre su Windows e Linux strumenti come Subtitle Edit integrano Whisper con un'interfaccia comoda per rifinire i sottotitoli.
Quando NON usare Whisper in locale
Il fai-da-te non e' sempre la scelta migliore. Se devi trascrivere centinaia di ore con tempi stretti e non hai hardware adeguato, un servizio cloud puo' risultare piu' rapido ed economico in termini di tempo. Se ti serve una garanzia contrattuale sulla qualita' o un supporto, le soluzioni a pagamento offrono SLA che il fai-da-te non da'. Ma per la grande maggioranza degli usi quotidiani — un'intervista, un episodio di podcast, i sottotitoli di un video — Whisper in locale offre qualita' professionale a costo zero e con la massima riservatezza. Una volta impostato, diventa parte stabile del tuo flusso di lavoro.
Da qui puoi proseguire automatizzando il processo: uno script che controlla una cartella e trascrive in automatico i nuovi file, oppure un piccolo programma che, dopo la trascrizione, passa il testo a un modello linguistico per ottenere un riassunto. Ma questa, come si dice, e' un'altra guida. La documentazione ufficiale di Whisper, di faster-whisper e di whisper.cpp e' il punto di partenza per approfondire ogni opzione.




