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.

Whisper trascrive audio in decine di lingue restando interamente sul tuo computer.

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.

faster-whisper offre la stessa qualita' dell'originale ma con tempi molto piu' brevi, anche su CPU.

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 (medium invece di large-v3) o usa compute_type="int8" con faster-whisper.
  • Lingua sbagliata o testo misto: specifica sempre la lingua (--language Italian o language="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, oppure large-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.