Il menu dei sottotitoli è un buon posto per verificare quanto sia solida la riproduzione di un media server. Aprilo su un remux Blu-ray, prova a tradurre l’unica traccia decente e scopri in fretta quanto della pipeline dietro fosse improvvisato. È la prova che ci siamo dati per Quven.
Ogni pagina di prodotto dice “sottotitoli supportati”. Ma con un remux la cui unica traccia decente è PGS, quella casella può significare un video che si blocca, un flusso di sottotitoli vuoto o una traccia che deriva a metà film. Quindi quale sorgente arriva a quale client, e che cosa fa il server quando non è testo semplice?
Ciò che sembra una funzione sola si è rivelato tre sistemi che si incontrano nel player, costruiti nell’ordine in cui i problemi si sono presentati: traduzione da testo a testo per le tracce esistenti, OCR per i sottotitoli a immagini di Blu-ray e DVD, e riconoscimento vocale locale per un file senza nulla da cui partire. Tutti e tre producono una traccia di testo temporizzata.
I sottotitoli testuali non sono automaticamente il caso facile
Una traccia SubRip, WebVTT o ASS incorporata sembra facile, anche se i guai cominciano prima che un traduttore abbia visto una parola, nella scelta della traccia da leggere. Un file può contenere più lingue, un commento, una traccia di soli cartelli e flussi duplicati con metadati che mentono, perciò scegliere il primo flusso fallirebbe sulla maggior parte dei dischi. Il passaggio di selezione scarta quindi le tracce inutilizzabili e quelle solo forzate quando si chiedeva il dialogo completo e preferisce la più densa che qualifica. E se scegli tu una sorgente sbagliata, fallisce dove puoi vederlo, ed è voluto, perché passare in silenzio a un’altra traccia renderebbe il problema impossibile da diagnosticare.
Poi viene la parte meno appariscente, cioè i lavori. Una traduzione può arrivare a migliaia di battute, perciò un riavvio a metà riprende il lavoro, due persone che chiedono la stessa cosa spendono la quota una volta, e il risultato tardivo di un lavoro annullato non rientra come una nuova traccia.
PGS e VobSub sono un problema di elaborazione immagini, non di formato testo
PGS su Blu-ray, VobSub su DVD e i sottotitoli DVB sono bitmap senza testo: ogni sottotitolo è un’immagine con un tempo allegato, e chi la disegna deve capire tavolozza, trasparenza e quando l’immagine viene cancellata prima ancora che l’OCR parta. L’approccio ovvio, estrarre qualche PNG e lanciare l’OCR, funziona su un file di prova pulito e fallisce sulla maggior parte dei dischi veri. Una pipeline affidabile fa cinque cose:
- Seleziona esattamente il flusso richiesto, perché una sonda può finire su un altro.
- Ricava i tempi dai dati del formato e non dall’ordine di arrivo delle immagini.
- Ignora i fotogrammi trasparenti di pulizia senza perdere una battuta vera.
- Riconosce il testo in locale con il modello linguistico giusto.
- Scrive un WebVTT valido e monotono che non si sfalda a due ore da un film lungo.
Il testo entra nello stesso sistema di traduzione di una traccia normale. Il riconoscimento delle bitmap avviene sul tuo server, e solo il testo che ne esce può entrare nel percorso di traduzione del Cloud, dopo gli stessi controlli di consenso e di piano (guida alla privacy). La cache dell’OCR è indicizzata sul contenuto decodificato delle battute e sui tempi esatti, non sul titolo, così due edizioni con tempi diversi non vengono mai trattate come la stessa.
Il riconoscimento vocale è l’ultima alternativa, non il sostituto di buoni sottotitoli
Quando un file non ha testo incorporato utilizzabile, né un’uscita bitmap utilizzabile, né un file esterno, interviene il riconoscimento vocale locale come ultima alternativa e solo quella. Un buon sottotitolo d’autore ha una temporizzazione editoriale, sa chi parla e di solito ha parole migliori di quelle di un riconoscitore, perciò una traccia esistente viene sempre per prima, e non cambierà. Il percorso è volutamente locale:
selected audio stream → timestamp-preserving PCM → whisper.cpp → normalised WebVTT → optional translation
Il flusso audio scelto conta, perché un film può portare un doppiaggio o un commento. Il lavoro appartiene al file multimediale esatto che hai scelto e conserva la corrispondenza tra tempi del contenitore e campioni PCM, altrimenti le parole si allontanano piano piano da chi le dice. Anche l’uscita viene validata, con tempi malformati rifiutati, battute limitate alla durata del file e allucinazioni sul silenzio soppresse, e l’audio temporaneo sparisce che il lavoro finisca, fallisca o venga annullato.
Ciò che ottieni è un sottotitolo locale validato che non dipende dal Cloud e resta utile se una traduzione successiva fallisce. Whisper e Silero si installano a richiesta, e tutto questo fa parte di Quven dalla 1.1.0.
Il modello utile è una gerarchia di sorgenti
La regola di prodotto non è “usa sempre l’AI”:
- Usa un sottotitolo testuale d’autore idoneo quando esiste.
- Altrimenti trasforma in testo, in locale, un sottotitolo bitmap idoneo.
- Solo allora proponi il riconoscimento vocale locale dal flusso audio scelto.
Ogni livello lascia un elemento di sottotitolo che il player può elencare e riusare, sopravvive a un riavvio e riporta la propria fase, ed è ciò che serve a un media server self-hosted per meritare fiducia con una libreria mista di remux, DVD, uscite multilingue e il file occasionale senza sottotitoli. Per il flusso nel player, leggi come tradurre i sottotitoli con l’AI in Quven.
Comunità
Commenti
0 commenti
Non ci sono ancora commenti. Inizia la conversazione.