Sottotitoli in WebVTT pronti per il player HTML5
Produce un file di sottotitoli in WebVTT (.vtt), il formato che i player video delle pagine web usano nel tag track dell'HTML5. Carichi l'audio di un video e ricevi le didascalie temporizzate pronte da collegare al tuo player: sincronizzate con il parlato, in italiano, senza doverle scrivere e cronometrare a mano.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
WebVTT: il formato dei sottotitoli sul web
Quando pubblichi un video direttamente sul tuo sito con il tag video dell'HTML5, i sottotitoli si aggiungono con un elemento track che punta a un file .vtt. È il formato nativo del browser: supporta anche indicazioni di posizione e stile che l'.srt non ha. Il KIT genera il file con l'intestazione WEBVTT, i blocchi temporizzati e il testo già spezzato in righe leggibili, così lo colleghi al player e i sottotitoli compaiono senza altri passaggi.
Dal file audio al track pronto
Carichi la traccia audio del video e lo strumento trascrive e temporizza in automatico. Il risultato è un .vtt che puoi mettere online insieme al video e richiamare dal tag track. Chi gestisce una piattaforma o un tema personalizzato può ottenere lo stesso file via API e inserirlo nel proprio flusso di pubblicazione, senza passare ogni volta dalla pagina.
Costo e limiti
$0.002 a richiesta più $0.0055 al minuto di audio: un video di mezz'ora costa intorno a $0.16, un'ora circa $0.33. Nessun canone mensile, nessun numero massimo di video. File fino a 200 MB e tre ore. Pagamento a consumo con PayPal, senza account.
Casi d'uso
Video ospitati sul proprio sito
Un'agenzia di Firenze pubblica i video dei corsi direttamente sul sito, senza YouTube. Il file .vtt si collega al player HTML5 e i sottotitoli restano sotto il controllo del sito, senza dipendere da piattaforme esterne.
Piattaforme di e-learning
Un portale di formazione aggiunge le didascalie a centinaia di lezioni. Generando i .vtt via API, ogni nuovo video esce già sottotitolato al momento della pubblicazione.
Accessibilità richiesta dalle norme
Un ente che deve rispettare i requisiti di accessibilità dei contenuti pubblici allega i sottotitoli WebVTT ai video istituzionali, rendendoli fruibili anche a chi non può ascoltare l'audio.
Domande frequenti
Perché WebVTT invece di .srt?
WebVTT è il formato che il tag track dell'HTML5 legge in modo nativo: è la scelta giusta se il video è ospitato sulle tue pagine. Se invece carichi il video su YouTube o lo passi a un montatore, di solito serve l'.srt, che il KIT genera con un altro strumento.
Come collego il file .vtt al video?
Dentro il tag video metti un elemento track con src verso il file .vtt e l'attributo della lingua. Il browser mostra i sottotitoli senza plugin. Il file che ricevi ha già l'intestazione WEBVTT corretta in cima.
Il testo è già diviso in righe leggibili?
Sì: le battute sono spezzate in righe di lunghezza adeguata e sincronizzate con il parlato. Se vuoi ritoccare una posizione o un tempo, apri il .vtt con un editor di testo e modifichi il blocco.
Posso generare tanti file in automatico?
Sì, tramite API puoi produrre i sottotitoli di ogni nuovo video nel tuo flusso di pubblicazione. Il costo resta a consumo, calcolato sulla durata di ciascun file.
Quanto costa e come si paga?
$0.002 a richiesta più $0.0055 al minuto, quindi circa $0.33 per un'ora di video. Si paga la singola elaborazione con PayPal, senza abbonamento.
Che ne è dell'audio dopo l'elaborazione?
Viene eliminato una volta generato il file di sottotitoli. Serve solo a produrre il .vtt e non viene conservato.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/audio/subtitles-vtt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/subtitles-vtt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/subtitles-vtt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/subtitles-vtt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/subtitles-vtt", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"audio": "https://ejemplo.com/audio.mp3"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.subtitles_vtt",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 200 |
max_minutes | 180 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |