Hopp til hovedinnhold
SubtitleMatrix

Synkroniser undertekster mot lyd

MedieinndataSynkroniser mot lyden

Den første kjøringen laster ned videomotoren — omtrent 31 MB, servert av dette nettstedet og bufret av nettleseren etterpå. Den brukes bare til å lese lydsporet; undertekstene matches mot selve lyden, uten noen talemodell og uten at noe lastes opp.

Innstillinger

Hvor langt unna der de skal være undertekstene kan ligge, i begge retninger. Det er en kostnads- og risikoinnstilling snarere enn en nøyaktighetsinnstilling: et bredere vindu finner en større drift, men gir også søket flere sjanser til å lande på en tilfeldighet som scorer godt. Ingenting utover omtrent et minutt kommer fra en trim eller en logo — så mye betyr vanligvis en annen klipping av filmen, eller en feil i bildefrekvensen, som denne siden løser separat. Velg det minste vinduet som dekker gjetningen din.

Denne siden retter undertekster som står i riktig rekkefølge men på feil tider. Du gir den to ting — undertekstfilen og videoen eller lyden den hører til — og den regner ut hvor langt teksten har drevet, og skriver filen på nytt med hver tekstblokk flyttet. Drift på noen sekunder kommer fra klipp og logoer; drift som vokser gjennom filmen, kommer fra en bildefrekvensfeil, der en 23,976 fps-master ble paret med undertekster tidfestet for 25 fps, og feilen er allerede halvannet minutt ved slutten av den første timen.

Målingen gjøres fra lyden selv. Siden henter ut et monospor, bretter det til tjue millisekunder lange rammer med styrke, og markerer hvilke rammer som inneholder tale. Den stiller så ett spørsmål om og om igjen: for denne forskyvningen og denne hastighetsendringen, hvor mye av undertekstteksten lander på tale snarere enn på stillhet? Svaret scores per tekstblokk og gjennomsnittes, og paret som vinner, er det som brukes. Ingen talegjenkjenning er involvert, og det er derfor den kjører på et par sekunder og virker når undertekstene er på et språk du ikke har modell for.

Fordi scoren er en måling og ikke en garanti, er siden bygget for å gjøre ingenting når målingen er svak. Fem tekstblokker eller færre, et lydspor uten gjenkjennelig tale, en beste score som fortsatt stort sett lander på stillhet, eller to svært ulike innrettinger som scorer omtrent likt — hver av dem ender med en rapport og ingen omskrevet undertekstfil. En stille feil er langt bedre her enn en selvsikker en: undertekster skjøvet fem sekunder feil ser uryddige ut, men undertekster skjøvet fem sekunder feil av et verktøy som hevdet suksess, er vanskelige å oppdage og vanskelige å forklare.

Når innrettingen er god, får du to filer, fordi de svarer på ulike spørsmål. Den rettede underteksten beholder formatet den kom i, navngitt film.synced.srt eller hva nå endelsen var, klar til avspilling. Rapporten er en liten tekstfil med forskyvningen i millisekunder, forholdet som faktisk ble brukt, scoren, konfidensen, og én linje som sier om filen ble rørt i det hele tatt. Begge kommer ut av samme kjøring, så en batch med episoder gir et matchet par for hver.

Sammenligningen skjer lokalt. Lyden dekodes av ffmpeg kompilert til WebAssembly, lastet ned én gang fra dette nettstedet og bufret etterpå; underteksten parses i fanen. Ingenting om filmen eller undertekstene dine sendes noe sted — det finnes ikke noe opplastingssteg å hoppe over, noe som betyr noe for materiale som ikke har lov til å forlate maskinen.

Ofte stilte spørsmål

Hvordan er en målt forskyvning forskjellig fra den faste forskyvningen jeg skriver inn på forskyvningssiden?

Forskyvningssiden bruker et tall du allerede kjenner, så den forblir riktig uansett om lyden er enig. Denne siden starter i motsatt ende: den antar at du ikke kjenner tallet, leser taleaktiviteten ut av lyden og løser for forskyvning og hastighetsendring sammen. Det er også derfor den kan rette en bildefrekvensfeil, som ingen enkelt forskyvning kan uttrykke — ved 25 mot 23,976 er feilen null i starten og vokser med omtrent 3,6 sekunder per time, så en forskyvning som reparerer begynnelsen, gjør slutten verre.

Hvorfor nekter siden av og til å skrive en ny undertekstfil i det hele tatt?

Fordi en feil rettelse er vanskeligere å oppdage enn en manglende. Søket rapporterer fire ting: hvor mange tekstblokker det hadde å arbeide med, om lyden inneholdt noen tale, hvor stor del av underteksttiden som landet på tale, og hvor mye bedre vinneren var enn det beste genuint annerledes alternativet. Er noen av dem svake, gir kjøringen bare rapporten, hvis tilstandslinje sier ikke funnet sammen med grunnen. Du taper ingenting — originalfilen er urørt — og du får et tall du kan kontrollere før du gjør noe manuelt.

Hva betyr forholdet i rapporten for en feil mellom 23,976 og 25 fps?

Tekstblokktidene multipliseres med forholdet og forskyves deretter med offseten, så et forhold på 1,0427 betyr at undertekstene var tidfestet for en raskere bildebase, og hver tekstblokk må strekkes senere. Siden prøver begge retninger av hvert vanlige par, fordi hvilken vei det leses, avhenger av hvilken fil du tilfeldigvis sitter med: 1,0427 og 0,9590 er samme feil sett fra hver sin ende. Er det rapporterte forholdet 1,000000 og forskyvningen under ett bilde, står filen allerede i linje, og den blir stående urørt.

Beholder den rettede filen stilen min, eller bare tidene?

Timingen endres og ingenting annet gjør det. Underteksten parses inn i samme interne representasjon som hver annen side på dette nettstedet bruker, start og slutt for hver tekstblokk skrives om, og den serialiseres tilbake til formatet den kom i. ASS-stil, plassering og inline-tagger overlever; det gjør også filens egen struktur, og derfor gir en .ass inn en .ass ut i stedet for en flat .srt. Det ene synlige unntaket er en tekstblokk som klemmes til under én millisekund av et stort forhold; den holdes på én millisekund og telles i taplisten.

Virker dette når undertekstene er på et annet språk enn lyden?

Ja, og det er poenget med å måle styrke i stedet for å gjenkjenne ord. Taleaktivitet er en form — en setning er et energistøt fulgt av et mellomrom — og formen er den samme enten stemmen snakker tysk eller spansk. En tysk dubbing under spanske undertekster retter seg like godt som et matchet par ville gjort. Det den ikke kan, er å skille en dubbet linje fra en original, så hvis dubben setter inn ekstra dialog, finner innrettingen fortsatt den overordnede passformen, men enkelte tekstblokker i de innsatte passasjene kan havne på feil linje.

Relaterte verktøy