Naar de hoofdinhoud
SubtitleMatrix

Ondertitels laten inspreken

Media-invoerOndertitels naar spraak

De eerste run downloadt het stemmodel en de fonemisator — samen ongeveer 98 MB, door deze site geleverd en daarna door de browser gecachet. Het ondertitel- of tekstbestand dat je neerzet, verlaat dit tabblad nooit. MP3 of M4A kiezen downloadt nog eens 31 MB encoder, daarom is WAV de standaard.

Opties

Een stem bepaalt het accent en de klankkleur en — minder vanzelfsprekend — met welk klanksysteem de tekst wordt gelezen. Een Spaanse stem op een Engelse zin combineren mislukt niet: hij leest Engelse woorden met Spaanse klanken, wat erger is dan een foutmelding. Er worden zeven talen aangeboden, niet twaalf, omdat de fonemisator die met deze pagina meekomt geen stem heeft voor Japans of Chinees. Luister naar een kort bestand voordat je je op een lang vastlegt; elke stem draagt hetzelfde model, dus wisselen kost één synthese, geen download.

Hoe snel de stem leest, toegepast bovenop het tempo dat het model natuurlijk vindt. Langzaam is 0,8× en snel is 1,2× — bewust mild, want boven ongeveer 1,5× begint het model lettergrepen in te slikken en klinkt het resultaat als iemand die zich haast in plaats van iemand die snel praat. Wanneer een ondertitelblok te kort is voor zijn regel, verhoogt deze pagina de snelheid zelf tot 1,4× voordat ze afkapt, en die versnelling vermenigvuldigt zich met de instelling die je hier kiest.

WAV is ongecomprimeerd 24 kHz mono, hier helemaal zonder encoder geschreven — daarom is het de standaard en daarom wordt er niets extra’s voor gedownload. MP3 en M4A hebben de video-engine van 31 MB nodig om te comprimeren, maar komen er ongeveer tien keer kleiner uit: tien minuten spraak is ongeveer 28 MB als WAV en ongeveer 2,8 MB als MP3. Kies WAV om een stem te beluisteren, MP3 om het bestand naar iemand te sturen.

Deze pagina maakt van een ondertitelbestand een stemtrack die het volgt. Elk blok wordt hardop uitgesproken en op het moment geplaatst waarop dat blok begint, zodat het resultaat één audiobestand is — film.wav — waarin de woorden onder de ondertitels vallen in plaats van over elkaar. Stilte vult de gaten tussen blokken, en de totale lengte komt overeen met het einde van het laatste blok, wat betekent dat de audio tegen hetzelfde beeld kan worden gelegd waarvoor de ondertitels zijn gemaakt.

De reden dat deze pagina los bestaat van de pagina die tekst voorleest, is dat timing het lastige deel is. Een zin die vier seconden kost om te zeggen maar een blok van twee seconden heeft, kun je er niet zomaar in zetten: hij zou onder het volgende blok doorlopen, en twee stemmen tegelijk zijn ruis, geen inspraak. Dus wordt elke regel op de gekozen snelheid gesynthetiseerd, gemeten en — als hij niet past — nog één keer op een hogere snelheid gesynthetiseerd, tot 1,4×. Wat dan nog niet past wordt bij de start van het volgende blok afgekapt, en het aantal blokken waarbij dat gebeurde verschijnt als verlies in plaats van te worden verzwegen.

De stemmenlijst telt tien stemmen over zeven talen: Engels uit de Verenigde Staten en Groot-Brittannië, Spaans, Frans, Italiaans, Hindi en Braziliaans-Portugees. Een stem is niet alleen een klankkleur — ze bepaalt met de klanken van welke taal de tekst wordt gelezen, dus een Spaanse stem bij Engelse tekst levert iets op dat geen van beide is. Japans en Chinees ontbreken met opzet: de fonemisator die met deze pagina meekomt heeft voor geen van beide een stem, en ze aanbieden zou zelfverzekerde onzin opleveren in plaats van een foutmelding.

Het werk is lokaal. Het model en de fonemisator worden één keer van deze site gedownload en daarna door de browser gecacht; het ondertitelbestand zelf verlaat de tab nooit. De uitvoer is standaard WAV omdat dat helemaal geen encoder nodig heeft — MP3 of M4A kiezen laadt een ffmpeg-core van ongeveer 31 MB om het resultaat te comprimeren, wat de moeite waard is voor alles wat je naar iemand wilt sturen. Annuleren is hier onmiddellijk: het inspreken draait op een eigen thread, dus de annuleerknop beëindigt hem meteen in plaats van te wachten tot de huidige zin klaar is.

Veelgestelde vragen

Waarom kapt de WAV van deze pagina soms een zin af terwijl het SRT-bestand in orde is?

Omdat de afkap door het blok komt, niet door het bestand. Een blok dat 1,8 seconden in beeld blijft kan geen regel bevatten die drie seconden kost om te zeggen, tenzij de stem voorbij 1,4× wordt geduwd — en voorbij dat punt blijven de woorden niet verstaanbaar. De pagina probeert eerst je gekozen snelheid en synthetiseert daarna één keer opnieuw op de snelheid die het zou laten passen, met 1,4× als bovengrens. Past het dan nog niet, dan wordt de audio bij de start van het volgende blok afgekapt zodat twee regels nooit tegelijk klinken, en het aantal getroffen blokken verschijnt in het verliesoverzicht onder de wachtrij.

Wat gebeurt er met ASS-opmaak, kleuren en schermposities wanneer ze voor inspraak worden gelezen?

Die vallen weg, en dat is hier correct — een audiobestand heeft geen kleur en geen schermpositie. Wat overblijft is de tekst van elk blok en zijn begin- en eindtijd, precies wat plaatsing nodig heeft. Vet, cursief, karaoketijden en {\anN}-positie-overrides worden door de formatlaag weggeparseerd voordat er wordt gesynthetiseerd, dus een regel die in het ASS-bestand cursief is, wordt met dezelfde stem gelezen als de rest. Moet de opmaak bewaard blijven, converteer dan eerst de ondertitel; het product van deze pagina is geluid.

Kan een SRT-blok van twee regels als één doorlopende zin worden uitgesproken?

Ja, en dat gebeurt altijd. Een hard regeleinde binnen een blok is een typografische beslissing — een plek waar de ondertitelaar vond dat de regel te lang voor het scherm werd — geen plek waar de spreker pauzeerde. De twee regels worden dus met een spatie samengevoegd en als één uiting gesynthetiseerd, en daarom klinkt een blok dat over twee regels is gesplitst nog steeds als één ademteug in plaats van twee sprekers die elkaar afwisselen. Alleen een blokgrens levert een pauze in de uitvoer op.

Welke talen kan de stemtrack werkelijk spreken, en wat gebeurt er met Japanse ondertitels?

Zeven: en-US, en-GB, es, fr, hi, it en pt-BR. Japans en Chinees zitten er niet bij omdat de fonemisator die met deze pagina meekomt (espeak-ng) voor geen van beide een stem levert, ook al is het spraakmodel zelf wel op die talen getraind. Een Japans .srt aan een Engelse stem geven mislukt niet luid — de Latijnse letters worden als Engels gelezen, en kanji worden overgeslagen of verminkt. De eerlijke werkwijze voor die talen is wachten op een build met een Japanse of Chinese fonemisator, in plaats van een track te accepteren die aannemelijk klinkt en fout is.

Is MP3 de extra 31 MB waard vergeleken met de WAV die deze pagina standaard geeft?

Voor alles langer dan een paar minuten, ja. WAV is ongecomprimeerde 24 kHz mono-PCM, dus tien minuten inspraak is ruwweg 28 MB, terwijl dezelfde audio als MP3 op 128 kbps ongeveer 2,8 MB is. De ruil is dat MP3 en M4A de ffmpeg-core één keer moeten downloaden, en daarom is WAV de standaard: wil je alleen horen hoe een stem klinkt, dan wordt er niets extra opgehaald. Zodra de encoder gecacht is, is hetzelfde ondertitelbestand met dezelfde instellingen opnieuw omzetten snel.

Gerelateerde hulpmiddelen