Trascrivere manualmente un'ora di riunione, un'intervista o una lezione richiede molte ore di lavoro. Con Whisper, il modello di riconoscimento vocale open source di OpenAI, puoi ottenere una trascrizione accurata in pochi minuti, gratis e — aspetto decisivo per privacy e costi — interamente sul tuo computer, senza inviare l'audio ad alcun servizio esterno. Questa guida ti porta passo passo dall'installazione alla trascrizione, fino ai sottotitoli, con i comandi reali e le soluzioni agli errori più comuni.

A chi serve e cosa otterrai

La guida è pensata per chi produce o gestisce contenuti audio e video: giornalisti, ricercatori, podcaster, avvocati, studenti, creatori di contenuti, ma anche aziende che devono verbalizzare riunioni. Al termine saprai trascrivere file audio e video in testo, generare sottotitoli in formato SRT, e scegliere lo strumento giusto in base al tuo hardware. Whisper supporta decine di lingue, italiano incluso, e gestisce anche registrazioni non perfette.

Prerequisiti reali

  • Sistema operativo: Windows, macOS o Linux.
  • Python 3.9 o superiore (per le versioni basate su Python) e il gestore di pacchetti pip.
  • FFmpeg, indispensabile per leggere e convertire i file audio/video.
  • Hardware: Whisper funziona anche solo su CPU, ma una scheda video NVIDIA con supporto CUDA (o un Mac con chip Apple Silicon) accelera molto la trascrizione. La memoria richiesta dipende dal modello: dal minimo per il modello «tiny» fino a circa 10 GB di VRAM per «large».

Quale strumento scegliere

«Whisper» è diventato il nome di un'intera famiglia di strumenti. Ecco i principali, con pro e contro per questo compito:

  • faster-whisper — reimplementazione basata su CTranslate2, fino a 4 volte più veloce dell'originale e con minore consumo di memoria. Prima scelta consigliata per la maggior parte degli utenti con Python.
  • whisper.cpp — versione in C++ che gira benissimo su CPU e su Mac (con accelerazione Metal), senza dipendenze Python. Ideale se non vuoi installare Python o hai un portatile senza scheda grafica dedicata.
  • openai/whisper — l'implementazione originale, la più semplice ma anche la più lenta.
  • WhisperX — aggiunge timestamp parola per parola e la «diarizzazione» (distinguere chi parla). Utile per interviste a più voci.
  • MacWhisper — applicazione con interfaccia grafica per Mac, per chi preferisce non usare il terminale.

In questa guida usiamo faster-whisper come percorso principale e mostriamo anche whisper.cpp per chi lavora solo da CPU. La documentazione ufficiale è su GitHub di faster-whisper e su GitHub di whisper.cpp.

Whisper trascrive audio e video in testo in locale, senza inviare i file ad alcun servizio esterno.

Passo 1: installare FFmpeg

FFmpeg è necessario in ogni caso. L'installazione dipende dal sistema:

# macOS (con Homebrew)
brew install ffmpeg

# Windows (con winget)
winget install ffmpeg

# Ubuntu / Debian
sudo apt update && sudo apt install ffmpeg

Verifica che funzioni con ffmpeg -version: se compare la versione, sei pronto.

Passo 2: installare faster-whisper

Conviene creare un ambiente virtuale Python per non «sporcare» il sistema, poi installare il pacchetto:

python -m venv whisper-env
# attiva l'ambiente:
#   macOS/Linux:  source whisper-env/bin/activate
#   Windows:      whisper-env\Scripts\activate

pip install faster-whisper

Passo 3: la prima trascrizione

Crea un file trascrivi.py con questo contenuto e sostituisci il nome del file audio con il tuo (funziona anche con file video: FFmpeg ne estrae l'audio):

from faster_whisper import WhisperModel

# "small" è un buon compromesso; usa "medium" o "large-v3" per più precisione,
# "tiny" o "base" se hai poca memoria. compute_type="int8" riduce l'uso di RAM.
model = WhisperModel("small", device="auto", compute_type="int8")

segments, info = model.transcribe("riunione.m4a", language="it")

print(f"Lingua rilevata: {info.language} (probabilità {info.language_probability:.2f})")
for segment in segments:
    print(f"[{segment.start:.1f}s -> {segment.end:.1f}s] {segment.text}")

Esegui con python trascrivi.py. Il risultato atteso è la trascrizione stampata a video, suddivisa in segmenti con i tempi di inizio e fine. La prima esecuzione scarica automaticamente il modello scelto (una tantum).

Passo 4: scegliere la dimensione del modello

Whisper offre modelli di dimensioni crescenti: più grande è il modello, più accurata è la trascrizione, ma più memoria e tempo richiede. Come regola pratica:

  • tiny / base: velocissimi, per hardware limitato o bozze rapide; qualità inferiore, più errori.
  • small: ottimo equilibrio per la maggior parte degli usi.
  • medium: più preciso, adatto a contenuti importanti.
  • large-v3: la massima qualità, consigliato su GPU con memoria sufficiente; il migliore per audio difficili o lingue diverse dall'inglese.

Per l'italiano, i modelli da small in su danno risultati nettamente migliori dei più piccoli. Se hai una GPU NVIDIA, imposta compute_type="float16" per la massima velocità; su CPU o poca memoria, int8 è la scelta giusta.

Passo 5: generare i sottotitoli (SRT)

Per creare sottotitoli pronti per un video, aggiungi al tuo script una funzione che formatta i segmenti nel formato SRT:

def formatta_tempo(secondi):
    ore = int(secondi // 3600)
    minuti = int((secondi % 3600) // 60)
    sec = secondi % 60
    return f"{ore:02d}:{minuti:02d}:{sec:06.3f}".replace(".", ",")

segments, info = model.transcribe("video.mp4", language="it")

with open("sottotitoli.srt", "w", encoding="utf-8") as f:
    for i, segment in enumerate(segments, start=1):
        f.write(f"{i}\n")
        f.write(f"{formatta_tempo(segment.start)} --> {formatta_tempo(segment.end)}\n")
        f.write(f"{segment.text.strip()}\n\n")

print("File sottotitoli.srt creato.")

Il file sottotitoli.srt può essere caricato direttamente su YouTube o importato in un programma di montaggio.

Alternativa senza Python: whisper.cpp

Se preferisci non installare Python, o lavori su un portatile senza GPU, whisper.cpp è la soluzione più leggera. Dopo aver compilato il progetto e scaricato un modello, la trascrizione avviene con un singolo comando:

# dopo aver clonato e compilato whisper.cpp e scaricato un modello ggml
./build/bin/whisper-cli -m models/ggml-small.bin -l it -f audio.wav -otxt

whisper.cpp richiede audio in formato WAV a 16 kHz; se il tuo file è in un altro formato, convertilo prima con FFmpeg: ffmpeg -i audio.m4a -ar 16000 -ac 1 audio.wav.

Errori comuni e soluzioni

  • «FFmpeg not found» → FFmpeg non è installato o non è nel PATH. Reinstallalo (Passo 1) e riapri il terminale.
  • «CUDA out of memory» → il modello è troppo grande per la tua GPU. Passa a un modello più piccolo (da large a medium o small) oppure imposta compute_type="int8".
  • Frasi inventate nei silenzi → Whisper a volte «allucina» testo durante lunghi silenzi. faster-whisper offre l'opzione vad_filter=True nel metodo transcribe per filtrare le parti senza voce e ridurre il problema.
  • Trascrizione lentissima → stai usando la CPU con un modello grande. Riduci la dimensione del modello o attiva la GPU se disponibile.
  • Punteggiatura o maiuscole assenti → normale con i modelli più piccoli; sali a medium o large-v3 per una resa migliore.

Varianti avanzate e quando NON usare il locale

Per interviste a più persone, WhisperX aggiunge la diarizzazione, cioè etichetta ogni segmento con l'oratore. Per l'uso professionale su grandi volumi, si può automatizzare la trascrizione di intere cartelle con un ciclo che scorre i file. Il vantaggio del locale è duplice: costo zero dopo l'installazione e riservatezza totale, perché l'audio non lascia mai il tuo computer — un punto cruciale per contenuti sensibili come consulti medici, atti legali o interviste confidenziali.

Ci sono però casi in cui un servizio cloud a pagamento (come le API di trascrizione di OpenAI, Deepgram o AssemblyAI) resta più comodo: quando non hai hardware sufficiente, quando devi trascrivere pochi file occasionalmente senza voglia di configurare nulla, o quando ti servono funzioni gestite come la diarizzazione automatica senza smanettare. Per un uso ricorrente e attento alla privacy, invece, Whisper in locale è quasi sempre la scelta migliore.

Collegare Whisper ad altri strumenti IA

Una volta padroneggiata la trascrizione, puoi collegarla ad altri strumenti: passare il testo trascritto a un modello linguistico per ottenere un riassunto o l'estrazione dei punti chiave, tradurlo automaticamente, o costruire un piccolo flusso che, dato un video, produce automaticamente trascrizione, sottotitoli e sintesi. Whisper è il primo tassello di molti flussi di lavoro basati sull'IA per chi lavora con l'audio.

Guida basata sulla documentazione ufficiale di faster-whisper e whisper.cpp, verificata allo stato attuale degli strumenti. AI Notizie applica revisione editoriale umana.