Sottotitoli Automatici con Whisper e Remotion: Guida Completa

Sottotitoli Automatici con Whisper e Remotion: Guida Completa

Scritto da Francesco Di Donato 16 luglio 2025 9 minuti di lettura

Utile e Versatile

Whisper e Remotion sono strumenti veramente alla mano. Quello che vedrai in questo post, la creazione automatica di sottotitoli, è solo uno dei tanti possibili casi d’uso di queste tecnologie open-source. Consideralo una palestra per imparare i fondamentali, che potrai poi applicare ai tuoi progetti.

Sei un podcaster? Potresti usare questo stack per generare video promozionali con la forma d’onda del tuo audio sincronizzata, sfruttando i template già pronti di Remotion.

Sei un creative coder o un artista digitale? Immagina di poter finalmente renderizzare le tue creazioni WebGL, i tuoi shader e i tuoi poligoni in un video MP4 pulito, senza impazzire con software di cattura schermo.

Potresti magari fare i talks e necessitare di un template video-slide fatto a modo tuo.

Questo workflow ti darà gli strumenti per fare tutto ciò. Ora, partiamo dal nostro esempio concreto.

Nel mio caso, voglio aggiungere sottotitoli ai miei video. Principalmente perche’ la statistica mi mostra che parte dei viewers hanno il volume a zero. Tuttavia, seppur app varie e editor di TikTok stesso siano eccellenti per iniziare, richiedono comunque tempo d’operazione e mano d’opera non indifferente da parte mia. Il tempo e’ una risorsa preziosa, quindi e’ tempo di automatizzare.

Vogliamo:

Sostanzialmente:

Whisper

Tutti pensano che Whisper sia un tool di trascrizione. Sbagliato. O meglio, incompleto. Per capire la sua potenza, dobbiamo prima capire come funziona un ASR (Automatic Speech Recognition) tradizionale e perché Whisper è diverso.

Un ASR classico è una catena di montaggio che processa il suono per gradi. Il primo passo è il più astratto e cruciale: il Modello Acustico.

Cosa fa un Modello Acustico? Scompone il suono in “Fonemi”.

Immagina i fonemi come i mattoncini LEGO® del linguaggio parlato. Sono le più piccole unità di suono che distinguono una parola da un’altra. Non sono le lettere, ma proprio i suoni.

  • Cane vs. Pane: L’unica cosa che cambia è il suono iniziale. Il suono duro /k/ e il suono /p/ sono due fonemi diversi.
  • Rosa vs. Rasa: Qui, il suono vocalico al centro cambia tutto il significato. Il suono /o/ e il suono /a/ sono altri due fonemi distinti.

Un ASR tradizionale, come prima cosa, deve “ascoltare” l’onda sonora continua del tuo parlato e spezzettarla in una sequenza di questi mattoncini-suono. Solo dopo, con altri modelli, prova a ricostruire le parole e le frasi. È un processo a step, rigido e specializzato.

In cosa differisce

Whisper butta via questa catena di montaggio. È un singolo modello Transformer end-to-end, molto più simile a un LLM come GPT che a un ASR. E il suo segreto sta nei token.

Come funziona davvero Whisper? Il gioco dei token.

Whisper non “ascolta e trascrive” nel senso classico. Invece, trasforma l’audio in una rappresentazione numerica e poi chiede al suo decoder “Ok, partendo da questo audio e da questi comandi, quali parole devo generare?”.

I “comandi” sono dei token speciali che gli diamo come prompt per guidare il risultato. La flessibilità è totale.

Esempio 1: Trascrizione Semplice in Italiano

<|startoftranscript|> <|it|> <|transcribe|>

Esempio 2: Traduzione verso l’Inglese

<|startoftranscript|> <|it|> <|translate|>

Esempio 3: Controllo dei Timestamp

<|startoftranscript|> <|it|> <|transcribe|> <|notimestamps|>

Esempio 4: Identificazione della Lingua

<|startoftranscript|>

Capito il trucco? Whisper non ha funzioni diverse, ha un unico motore generativo che puoi pilotare con i token. Questo lo rende incredibilmente versatile, ma è anche il motivo per cui può “allucinare”: se non è sicuro, prova a generare la sequenza di testo più plausibile, proprio come farebbe un LLM.


Licenze

Sempre controllare personalmente le licenze. Questo post e’ qui per restare, e le cose possono sempre cambiare nel tempo.

La doppia natura di Whisper rimane un punto chiave.

Remotion

In pratica Remotion e’ un coso che (al momento in cui scrivo) installi con npx create-video@latest e viene con templates fatti bene, ottimissimi punti di inizio. Tipo il template per TikTok.

Le Gabbie Dorate

Gli editor video integrati nelle piattaforme social (CapCut, l’editor di TikTok, Instagram Reels) sono fantastici per iniziare. Sono per definizione un subset delle possibilita’. Cosa puoi farci dipende da cosa i loro developers sono stati pagati per implementare. Lavori dentro i loro confini, il che’ non e’ necessariamente un male. Dipende se al momento hai capacity per investire del tempo in automatizzare un qualche aspetto di video editoria che ti possa tornare utile ora o dopo.

La Potenza dello Stack Web

Non è un’esagerazione. Significa che puoi usare:

Ma tanti altri utili.

Magari Audiogram per mettere una visualizzazione della traccia audio del tuopodcast o musica. Super interessante il template del codice animato (dipendenza: Code Hike).

Licenze

Sempre controllare personalmente le licenze. Questo post e’ qui per restare, e le cose possono sempre cambiare nel tempo.

Gratis per team piccoli (fino a 3 persone), non-profit e freelance. A pagamento per le aziende più grandi (da 4 dipendenti in su). Un modello fair che incentiva l’adozione.


Perfetto, aggiorniamo la sezione del workflow con questi passaggi pratici. Il template per TikTok di Remotion è un punto di partenza eccellente perché integra già whisper.cpp.

Ecco la nuova sezione “Workflow”, riscritta con le tue istruzioni.

Workflow

Consiglio di partire dal template ufficiale di Remotion per video in stile TikTok, che ha già tutto l’occorrente per partire.

  1. Crea il Progetto Apri il terminale e lancia questo comando. Creerà una nuova cartella con un progetto Remotion pre-configurato per generare sottotitoli.

    npx create-video@latest --template tiktok
  2. Configura Whisper Prima di lanciare qualsiasi script, apri il file src/whisper-config.mjs. Qui devi specificare il modello di Whisper da usare e la lingua del tuo audio. Per un buon equilibrio, potresti usare:

    • WHISPER_MODEL: large-v3 (molto accurato) o medium (più veloce).
    • WHISPER_LANG: it per l’italiano.

    Nota: La prima volta che eseguirai lo script di trascrizione, whisper.cpp verrà scaricato e compilato automaticamente. Pazienza per qualche minuto, le volte successive sarà istantaneo.

    await installWhisperCpp({ ... });
    await downloadWhisperModel({ ... });
  3. Trascrivi l’Audio Sposta il tuo file video (es. mio-video.mp4) nella cartella public/ del progetto. Dopodiché, lancia lo script di trascrizione:

    node sub.mjs public/mio-video.mp4

    Il template utilizza il seguente codice per estrarre l’audio dal video usando il corretto bitrate:

    const extractToTempAudioFile = (fileToTranscribe, tempOutFile) => {
    // Extracting audio from mp4 and save it as 16khz wav file
    execSync(
        `npx remotion ffmpeg -i "${fileToTranscribe}" -ar 16000 "${tempOutFile}" -y`,
        { stdio: ["ignore", "inherit"] },
    );
    };

    Lo salva in una temp folder. Subito dopo lo utilizza per ottenere le captions.

    const whisperCppOutput = await transcribe({ ... })
    const { captions } = toCaptions({ whisperCppOutput })

    Salverà il risultato (parole e timestamp) in un file JSON con lo stesso nome del video, ma diversa estensione.

    [
      {
        "text": "Esempio",
        "startMs": 0,
        "endMs": 330,
        "timestampMs": null,
        "confidence": 0.90491
      }
    ]
  4. Traduci il Trascritto (Optional) Sei libero di far evolvere questo script come più convenga. Nel mio caso, ho introdotto un ulteriore step di traduzione, sempre grazie a Whisper.

    const englishWhisperOutput = await transcribe({
        ...
        translateToEnglish: true,
    });

    È molto importante fornire l’insieme del testo alla funzione di transcribe. L’output di Whisper migliora se ha a disposizione l’intero contesto. Se spacchetti l’input in chunks e li processi separatamente, verranno trattati in modo indipendente gli uni dagli altri e non sara’ in grado di sfruttare il contesto per una piu’ accurata trascrizione e traduzione.

  5. Personalizza e Visualizza Lancia il Remotion Studio per vedere un’anteprima live nel tuo browser:

    pnpm dev

    Apri il file src/CaptionVideo.tsx. Questo è il componente React dove puoi modificare l’aspetto dei sottotitoli: cambia il font, i colori, la posizione, le animazioni. Ogni modifica sarà riflessa in tempo reale nello Studio.

  6. Renderizza il Video Finale Quando sei soddisfatto del risultato che vedi nell’anteprima, ferma lo studio (Ctrl+C) e lancia il comando di rendering finale:

    npx remotion render

    Remotion processerà il video frame by frame, applicando i tuoi sottotitoli personalizzati, e salverà il file MP4 finale nella cartella out/.

    In alternativa, puoi triggerare il render direttamente dall’interfaccia localhost. Puoi anche selezione diverse impostazioni.

Conclusione

L’accoppiata Whisper + Remotion è un game-changer. Trasforma la creazione video da un processo manuale e restrittivo a uno programmatico, automatizzato e creativamente illimitato.

Stai letteralmente costruendo i tuoi video come se fossero applicazioni web interattive. E questo non solo ti fa risparmiare un’enormità di tempo, ma alza drasticamente la qualità e l’unicità del tuo prodotto finale.

Dantoti pure piu’ tempo libero.