Logo VRAMfarm VRAMfarm
IT
Registrati

12 novembre 2026 · Team VRAMfarm

Trascrizione con Whisper su GPU: large-v3 o turbo, faster-whisper e speaker con WhisperX

Forme d'onda audio che diventano righe di trascrizione con timestamp ed etichette degli speaker su una GPU: trascrizione con Whisper su una GPU a noleggio

Cento ore di interviste registrate sembrano settimane di battitura. Su una RTX 4090 a noleggio, Whisper large-v3 le trascrive in circa una o due ore di tempo GPU, più o meno 0,89 €, con i timestamp di ogni frase. Il modello chiede solo 3–10 GB di memoria, quindi la domanda non è tanto “quale scheda basta” quanto quale versione di Whisper usare e come tenere occupata la GPU.

Quale Whisper: large-v3, turbo o più piccolo

Whisper di OpenAI esiste in diverse taglie. Per il lavoro su GPU ne contano due, che condividono lo stesso encoder ma hanno un decoder diverso.

Modello Parametri VRAM, codice originale (fp16) VRAM, faster-whisper Velocità Ideale per
large-v3 1,55 B ~10 GB ~4–5 GB fp16, ~3 GB int8 1× Massima precisione, traduzione, audio difficile
large-v3-turbo 0,8 B ~6 GB ~2–3 GB parecchie volte più veloce Parlato pulito, grandi volumi
medium / small 0,77 B / 0,24 B 2–5 GB 1–2 GB ancora più veloce Lavori solo in inglese, bozze molto economiche

Turbo è large-v3 con un decoder molto più piccolo (4 layer invece di 32). Sul parlato chiaro la sua precisione è vicina a quella di large-v3 e gira parecchie volte più veloce. Sbaglia di più con accenti, voci sovrapposte e lingue rare, e non è stato addestrato per la traduzione. Una buona scelta di partenza: turbo per registrazioni pulite come podcast e lezioni, large-v3 per telefonate, stanze rumorose, accenti marcati o qualsiasi cosa che citerai.

faster-whisper è una reimplementazione di Whisper sul motore CTranslate2. Stessi modelli e praticamente la stessa precisione, fino a circa quattro volte più veloce del codice di OpenAI con meno memoria, e può quantizzare in int8 con poca perdita. WhisperX si appoggia a faster-whisper e aggiunge due cose: timestamp a livello di parola grazie a un modello di allineamento separato, ed etichette degli speaker (diarizzazione).

Ti serve davvero una GPU?

Per qualche registrazione al mese, no. Un portatile con Apple Silicon o una CPU recente fa girare turbo con whisper.cpp a un ritmo comodo, e le API di trascrizione ospitate fanno pagare al minuto senza nessuna configurazione. Le API ospitate di classe Whisper costano da pochi centesimi a circa 0,30 € per ora di audio (novembre 2026), a seconda del fornitore e del modello.

Una GPU a noleggio conviene quando:

  • hai volume: decine o centinaia di ore, dove il prezzo orario dell’API si accumula e la GPU lavora ogni minuto;
  • le registrazioni sono sensibili: interviste, pazienti, chiamate interne che non vuoi mandare all’API di terzi;
  • ti servono le etichette degli speaker o una pipeline tua, per esempio trascrivere, etichettare gli speaker e poi riassumere con un LLM locale;
  • i file sono grandi: molte API limitano la dimensione del singolo upload; al tuo server non importa.

Velocità: ore di audio per ora di GPU

La velocità di Whisper di solito si indica come multiplo del tempo reale: 50× vuol dire un’ora di audio in 72 secondi. La leva più grande non è la scheda ma il batching: la pipeline batched di faster-whisper manda nel modello molti spezzoni da 30 secondi insieme, e così tiene occupata una GPU moderna.

Configurazione RTX 3060 RTX 3090 RTX 4090
large-v3, codice originale di OpenAI 4–8× 6–15× 8–20×
large-v3, faster-whisper, uno spezzone alla volta 8–15× 15–30× 20–40×
large-v3, faster-whisper batched (batch 16) 20–40× 40–80× 60–150×
turbo, faster-whisper batched 40–90× 80–180× 120–250×

Leggi ogni numero come “ore di audio per ora di GPU”. Sono intervalli per pianificare, ricavati da benchmark pubblici e dalle specifiche delle schede, non misure nostre. La velocità reale dipende da quanta parte dell’audio è parlato, dal beam size, dalle impostazioni VAD e dalla CPU, che decodifica i file audio e ai livelli più alti può diventare il collo di bottiglia. La diarizzazione in WhisperX aggiunge un passaggio separato; per i file lunghi conta il 30–60% di tempo in più.

La scheda più economica per ora di audio di solito è la RTX 3090 o la RTX 4090, quella che in quel momento ha il rapporto di prezzo migliore; la pagina dei prezzi le mostra entrambe. Le schede da data center come la H100 sono ancora più veloci, ma la trascrizione non usa la loro memoria e all’ora costano parecchie volte di più.

Configurare faster-whisper su un server a noleggio

Non c’è un’app pronta per Whisper; ti basta un server vuoto PyTorch + Jupyter. Scegli una scheda da 12–24 GB, avvia e apri Jupyter → File → New → Terminal (oppure SSH, vedi la guida alla chiave SSH).

Prima carica l’audio. Convertirlo sul tuo computer in mono a 16 kHz fa risparmiare molto tempo di upload senza peggiorare la precisione, perché Whisper ricampiona comunque a 16 kHz: un’ora di MP3 a 128 kbps sono circa 58 MB, un’ora di Opus mono a 16 kHz circa 11 MB.

# sul tuo computer, una volta per file
ffmpeg -i interview.mp4 -vn -ac 1 -ar 16000 -c:a libopus -b:a 24k interview.opus

Carica uno zip da Jupyter o con scp, oppure scaricalo sul server dal tuo cloud storage. Poi sul server:

pip install faster-whisper
mkdir -p /workspace/audio /workspace/out   # metti i file audio in /workspace/audio

Salva questo come /workspace/transcribe.py:

import glob, os
from faster_whisper import WhisperModel, BatchedInferencePipeline

model = WhisperModel("large-v3", device="cuda", compute_type="float16")  # oppure "large-v3-turbo"
batched = BatchedInferencePipeline(model=model)

def ts(t):
    h, rem = divmod(t, 3600); m, s = divmod(rem, 60)
    return f"{int(h):02}:{int(m):02}:{s:06.3f}".replace(".", ",")

for path in sorted(glob.glob("/workspace/audio/*")):
    name = os.path.splitext(os.path.basename(path))[0]
    segments, info = batched.transcribe(path, batch_size=16, vad_filter=True)  # aggiungi language="it" se conosci la lingua
    with open(f"/workspace/out/{name}.srt", "w") as srt, open(f"/workspace/out/{name}.txt", "w") as txt:
        for i, seg in enumerate(segments, 1):
            srt.write(f"{i}\n{ts(seg.start)} --> {ts(seg.end)}\n{seg.text.strip()}\n\n")
            txt.write(seg.text.strip() + "\n")
    print(name, info.language, round(info.duration / 60), "min")

Lancialo con nohup python /workspace/transcribe.py > /workspace/log.txt 2>&1 & così continua anche quando chiudi il browser. Al primo avvio scarica il modello (circa 3 GB per large-v3), che conta come traffico alla tariffa della macchina.

Se faster-whisper si lamenta di non riuscire a caricare libcudnn o libcublas, le librerie CUDA che si aspetta non sono nel percorso: pip install nvidia-cublas-cu12 nvidia-cudnn-cu12 e segui la riga LD_LIBRARY_PATH nel README di faster-whisper. Driver e versione CUDA della macchina sono indicati prima dell’avvio; trovi di più in driver e CUDA non compatibili.

Impostare language quando la conosci fa risparmiare tempo ed evita qualche errore di riconoscimento quando i primi 30 secondi sono silenziosi. Con batch_size=16, large-v3 usa circa 6–10 GB di VRAM; su una scheda da 12 GB scendi a 8 se finisci la memoria.

Etichette degli speaker con WhisperX

Per interviste e riunioni di solito vuoi “Speaker 1 / Speaker 2”, non un unico blocco di testo. WhisperX lo fa con un solo comando. Fissa le sue versioni di PyTorch e di altre librerie, quindi installalo in un ambiente virtuale separato per non rompere altri strumenti (scarica il suo PyTorch, qualche GB di traffico in più):

apt-get update && apt-get install -y ffmpeg
python -m venv /workspace/wx && . /workspace/wx/bin/activate
pip install whisperx
export HF_TOKEN=<your Hugging Face read token>
whisperx /workspace/audio/meeting.opus --model large-v3 --language en \
  --diarize --hf_token $HF_TOKEN --output_format srt --output_dir /workspace/out

I modelli di diarizzazione vengono da pyannote e su Hugging Face sono ad accesso riservato: apri le loro pagine, accetta i termini e usa un token di lettura. Aggiungi --min_speakers 2 --max_speakers 4 quando sai quanti sono; la divisione migliora parecchio. Metti in conto qualche gigabyte di VRAM in più rispetto alla sola trascrizione; una scheda da 24 GB ha spazio in abbondanza.

La diarizzazione è l’anello più debole della catena. Parlato sovrapposto, voci simili e interiezioni brevi (“sì”, “giusto”) ricevono l’etichetta sbagliata più spesso di quanto Whisper sbagli le parole. Controlla gli speaker nei primi minuti prima di fidarti di una trascrizione lunga.

Sottotitoli: SRT e VTT

Lo script qui sopra scrive file SRT con un segmento di Whisper per sottotitolo. I segmenti possono essere lunghi, fino a 30 secondi di parlato, e sullo schermo si leggono male. WhisperX se la cava meglio, perché allinea ogni parola all’audio:

whisperx video.opus --model large-v3 --language en --output_format srt \
  --max_line_width 42 --max_line_count 2 --output_dir /workspace/out

Così ottieni sottotitoli di al massimo due righe da 42 caratteri, uno stile televisivo diffuso, con tempi che seguono le parole. Usa --output_format vtt per i player web. YouTube, Premiere, DaVinci Resolve e la maggior parte dei player importano direttamente gli SRT. Per sottotitoli tradotti, usa la modalità translate di Whisper verso l’inglese, oppure trascrivi nella lingua originale e traduci il testo dell’SRT con un LLM locale, che di solito suona più naturale.

Quanto costano 100 ore di audio

A metà degli intervalli indicati sopra, con faster-whisper batched:

Lavoro Scheda Velocità usata Tempo GPU Costo
100 h, large-v3 RTX 3090 60× 1 h 40 min 0,50 €
100 h, large-v3 RTX 4090 100× 1 h 0,59 €
100 h, turbo RTX 4090 180× 33 min 0,32 €
100 h, large-v3 con speaker WhisperX RTX 4090 65× 1 h 32 min 0,91 €

Aggiungi 10–15 minuti per configurazione e download dei modelli. I lavori piccoli pagano il minimo di 15 minuti per avvio: un’ora di audio costa almeno 0,15 € su una RTX 4090, per quanto veloce sia. Quindi raccogli le registrazioni e trascrivile in un’unica sessione invece di un file per avvio.

Con un’API a circa 0,15–0,30 € per ora di audio (novembre 2026), le stesse 100 ore costerebbero circa 15–30 €, e con i fornitori di inferenza veloce più economici qualche euro. A volumi alti la GPU costa meno, ma la configurazione e il tempo sono tuoi; per cinque ore di audio al mese, l’API è la scelta sensata.

Quando lo script ha finito, comprimi /workspace/out, scaricalo da Jupyter e ferma il server. Se rifarai lo stesso lavoro la settimana prossima, Salva e ferma conserva gli script e l’ambiente WhisperX in /workspace (il solo ambiente occupa qualche GB di storage); prima cancella l’audio, se non deve restare archiviato. La pagina di Whisper ha la versione breve di questi comandi.

Domande sull’argomento

Quali lingue capisce Whisper?

Whisper è stato addestrato su 99 lingue. La precisione è molto buona per inglese, spagnolo, tedesco, francese, italiano, portoghese e altre lingue molto parlate, e cala per le lingue con pochi dati di training. Prova prima qualche minuto del tuo audio.

Whisper può tradurre in inglese?

Sì, large-v3 ha una modalità translate che produce testo inglese da qualsiasi lingua supportata. Il modello turbo non è stato addestrato per la traduzione e la fa male, quindi per questo usa large-v3.

Perché la trascrizione ripete una frase o inventa testo durante i silenzi?

Whisper riempie le pause lunghe e la musica con delle ipotesi. Attiva il rilevamento dell'attività vocale (vad_filter=True in faster-whisper, già integrato in WhisperX), che salta le parti silenziose prima della trascrizione.

Le mie registrazioni sono al sicuro su una macchina a noleggio?

Le registrazioni restano sul server che hai noleggiato e vengono cancellate con il suo disco quando lo fermi; nessuna API vocale esterna le vede. L'hardware però lo gestisce l'host, quindi per audio molto riservato scegli il paese della macchina prima dell'avvio e cancella i file quando hai finito.

Trova la GPU in cui entra il tuo modello

Scegli un modello e vedi la scheda più economica con VRAM sufficiente, con fatturazione al minuto in euro.