Trascrivere un'intervista, sottotitolare un video, ricavare il testo di un podcast: sono compiti che oggi si possono svolgere gratis, in locale e senza inviare nulla nel cloud, grazie a Whisper, il modello di riconoscimento vocale rilasciato da OpenAI come open source. In questa guida vedremo due strade concrete e collaudate: whisper.cpp, leggerissimo e adatto anche a chi non conosce Python, e faster-whisper, ideale per chi lavora con Python e vuole massime prestazioni.
A chi serve e cosa otterrai
Questa guida e' pensata per giornalisti, ricercatori, studenti, creator e chiunque debba trasformare parlato in testo con regolarita', tenendo i file sul proprio computer per ragioni di privacy o di costo. Al termine avrai un sistema in grado di trascrivere file audio e video in italiano (e in decine di altre lingue) e di generare file di sottotitoli SRT pronti all'uso. Prerequisiti reali: un computer Windows, macOS o Linux ragionevolmente recente; almeno 8 GB di RAM (16 consigliati per i modelli grandi); qualche dimestichezza con il terminale. Una GPU non e' obbligatoria, ma accelera molto.
Quale strumento scegliere
- whisper.cpp - implementazione in C++ che gira benissimo su CPU, in particolare sui Mac con chip Apple Silicon. Non richiede Python. E' la prima scelta per la maggior parte degli utenti: semplice, veloce da installare, nessuna dipendenza pesante.
- faster-whisper - libreria Python basata su CTranslate2, fino a 4 volte piu' veloce dell'implementazione originale a parita' di accuratezza, con ottimo supporto GPU NVIDIA. Ideale per chi automatizza in Python o processa molti file.
- Whisper "ufficiale" di OpenAI - il pacchetto Python di riferimento, semplice ma piu' lento. Utile per capire il funzionamento base.
- Alternative con interfaccia grafica - app come MacWhisper (macOS) o interfacce basate su questi motori, per chi rifugge il terminale. Comode ma meno flessibili.
Costi: tutti gli strumenti citati sono gratuiti e open source. L'unica alternativa a pagamento e' l'API Whisper di OpenAI (circa 0,006 dollari al minuto), che ha senso solo se non vuoi installare nulla: per un uso regolare, il locale e' gratis e piu' riservato.
Passo 1: installare FFmpeg
Whisper lavora sull'audio, quindi serve FFmpeg per estrarre e convertire le tracce. Installalo cosi':
# macOS (con Homebrew)
brew install ffmpeg
# Ubuntu / Debian
sudo apt update && sudo apt install ffmpeg
# Windows (con winget)
winget install Gyan.FFmpeg
Verifica che funzioni con ffmpeg -version.
Passo 2: installare e compilare whisper.cpp
Scarica il progetto e compilalo. Su macOS e Linux bastano pochi comandi:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build
cmake --build build --config Release
Ora scarica un modello. Per l'italiano, un buon compromesso tra qualita' e velocita' e' medium; se hai poca RAM parti da small, se vuoi la massima qualita' usa large-v3:
sh ./models/download-ggml-model.sh medium
Passo 3: la tua prima trascrizione
Prepara il file audio nel formato che Whisper preferisce (WAV a 16 kHz). Se parti da un video o da un mp3, converti con FFmpeg:
ffmpeg -i intervista.mp4 -ar 16000 -ac 1 -c:a pcm_s16le intervista.wav
Poi trascrivi, chiedendo anche i sottotitoli in formato SRT e la lingua italiana:
./build/bin/whisper-cli -m models/ggml-medium.bin -f intervista.wav -l it -osrt
Risultato atteso: a schermo scorre la trascrizione con i tempi, e nella cartella compare intervista.wav.srt, il file di sottotitoli pronto da caricare in un player o in un montaggio video.
Passo 4: la via Python con faster-whisper
Se preferisci automatizzare o hai una GPU NVIDIA, faster-whisper e' la scelta migliore. Installazione:
python -m venv venv
source venv/bin/activate # su Windows: venv\Scripts\activate
pip install faster-whisper
Uno script minimo che trascrive e stampa i segmenti con i tempi:
from faster_whisper import WhisperModel
# device="cuda" se hai una GPU NVIDIA, altrimenti "cpu"
model = WhisperModel("medium", device="cpu", compute_type="int8")
segments, info = model.transcribe("intervista.wav", language="it")
print(f"Lingua rilevata: {info.language}")
for seg in segments:
print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")
Il parametro compute_type="int8" riduce l'uso di memoria e accelera su CPU; su GPU usa float16. Da qui puoi facilmente salvare i segmenti in un file SRT o incrociarli con altri strumenti.
Varianti e casi avanzati
Per allineare le parole con precisione al secondo (utile per i sottotitoli "karaoke") esiste WhisperX, che aggiunge l'allineamento a livello di parola e la separazione degli interlocutori. Per file molto lunghi, conviene spezzare l'audio in blocchi ed elaborarli in sequenza. Se lavori in un'altra lingua, cambia semplicemente il codice con -l en, -l es e cosi' via, oppure ometti il parametro per la rilevazione automatica.
Errori comuni e soluzioni
- "ffmpeg not found" - FFmpeg non e' installato o non e' nel PATH: ripeti il passo 1 e riapri il terminale.
- Trascrizione lenta o che blocca il PC - stai usando un modello troppo grande per la tua RAM: scendi da
largeamediumosmall. - Testo pieno di errori o lingua sbagliata - specifica sempre la lingua con
-l it; l'audio di scarsa qualita' peggiora molto il risultato, prova a ripulirlo prima con FFmpeg. - "out of memory" su GPU - riduci il modello, usa
compute_type="int8"o passa alla CPU.
Come migliorare la qualita' della trascrizione
La qualita' finale dipende soprattutto dall'audio di partenza e dalla scelta del modello. Alcuni accorgimenti che fanno una differenza concreta: registra o converti sempre a 16 kHz mono, il formato su cui Whisper e' stato addestrato; se l'audio ha rumore di fondo o piu' persone che parlano insieme, salta a un modello piu' grande (large-v3), che regge molto meglio le situazioni difficili; per contenuti tecnici o pieni di nomi propri, valuta di rileggere e correggere a mano i termini specialistici, che restano il punto debole di qualsiasi sistema automatico. Whisper tende inoltre a "inventare" testo nei lunghi silenzi: se noti frasi ripetute o senza senso, spesso si tratta di segmenti muti, che puoi eliminare tagliando i silenzi con FFmpeg prima della trascrizione. Infine, per l'italiano parlato veloce o dialettale, nessun modello e' perfetto: considera la trascrizione automatica come una bozza al 90%, da rifinire, non come un testo definitivo.
Automatizzare la trascrizione di piu' file
Se devi trascrivere decine di file, conviene scrivere un piccolo script che scorra una cartella e trascriva tutto in sequenza, salvando i risultati. Con faster-whisper bastano poche righe che ripetono la chiamata model.transcribe su ogni file trovato e scrivono l'output in un file di testo o SRT con lo stesso nome. E' proprio in questi flussi ripetitivi che la soluzione locale e gratuita batte nettamente i servizi a consumo: una volta impostato, elabora ore di audio senza costi aggiuntivi e senza inviare nulla in rete.
Quando conviene il cloud invece del locale
Il locale e' gratis, riservato e senza limiti d'uso, ma richiede tempo di elaborazione proporzionale alla potenza del tuo computer. Se devi trascrivere occasionalmente pochi minuti e non vuoi installare nulla, l'API a pagamento di OpenAI o strumenti online possono essere piu' comodi. Se invece tratti materiale sensibile (interviste riservate, documenti aziendali) o processi molte ore di audio, la soluzione locale con whisper.cpp o faster-whisper e' quasi sempre la scelta giusta: nessun dato lascia il tuo computer e il costo, dopo l'installazione, e' zero.




