Naar de hoofdinhoud
SubtitleMatrix

Tekst hardop laten voorlezen

Media-invoerOndertitels naar spraak
Of plak ondertiteltekst

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 leest tekst hardop voor. Plak een alinea of sleep een bestand erin — een .txt, een .srt, een .vtt, elk van de twaalf ondertitelformaten — kies een van de tien stemmen en krijg één audiobestand terug met het geheel van begin tot eind uitgesproken. Niets wordt getimed, want er is niets om tegen te timen: de uitvoer is één doorlopende lezing, geen track die onder beeld wordt gelegd.

Wanneer het bestand dat je erin sleept een ondertitelbestand is, worden de tijdcodes weggeparseerd en weggegooid. Wat wordt gelezen is de tekst van elk blok, in volgorde, samengevoegd tot alinea’s; regeleinden binnen een blok worden spaties omdat het typografische keuzes op het scherm waren, en blokgrenzen worden helemaal niets. Dat is het tegenovergestelde van wat de pagina voor inspraak doet, en de twee pagina’s staan naast elkaar zodat de keuze zichtbaar is in plaats van verstopt in een vinkje: de ene maakt geluid dat een tijdlijn volgt, de andere maakt geluid dat gewoon stroomt.

Tekst wordt in stukken gesynthetiseerd, niet in één doorgang. De tokenizer van het model kapt stilzwijgend alles boven 510 fonemen af — een artikel van tweeduizend woorden zou als zijn eerste twee zinnen terugkomen, en het bestand zou er volledig geldig uitzien. Daarom wordt de tekst gesplitst op alinea-einden, daarna op zinseindigende leestekens en nog harder voor één zin die meer dan 400 tekens telt, en worden de stukken na elkaar gesynthetiseerd met een korte pauze ertussen. Dat is ook waar annuleren ingaat: het inspreken gebeurt op een eigen thread, dus de annuleerknop stopt het binnen een ogenblik in plaats van te wachten tot de huidige zin klaar is, en de pagina blijft bruikbaar terwijl de audio wordt gemaakt.

De stemmenlijst telt tien stemmen over zeven talen — Engels (VS en VK), Spaans, Frans, Italiaans, Hindi en Braziliaans-Portugees. Japans en Chinees worden niet aangeboden: de fonemisator die voor de uitspraak wordt gebruikt heeft voor geen van beide een stem, dus een optie met het label Japans zou kanji als Engelse letters lezen en zelfverzekerd fout klinken. Het model en de fonemisator worden één keer gedownload en daarna gecacht; de tekst die je plakt verlaat de browser nooit, wat belangrijk is wanneer de alinea een brief van een cliënt of een medische notitie is.

Veelgestelde vragen

Als ik hier een .srt-bestand in sleep, bevat de lezing dan de tijdcodes of de cuenummers?

Geen van beide. Het bestand wordt geparseerd met dezelfde formatlaag als de conversiepagina’s, en alleen de tekst van elk blok blijft over — de indexnummers, het 00:00:01,000 --> patroon van de tijden en inline tags zoals <i> of {\pos()} zijn weg voordat er wordt gesynthetiseerd. Wat je hoort zijn de woorden in de volgorde waarin ze verschijnen. Wil je dat de tijden worden gerespecteerd in plaats van weggegooid, gebruik dan de pagina die een ondertitelbestand naar audio inspreekt en elk blok op zijn eigen starttijd plaatst.

Kan het plakvak een heel artikel aan, of is het alleen voor een zin of twee?

Een heel artikel kan, omdat de tekst wordt opgedeeld voordat hij het model bereikt. Geplakte inhoud wordt als platte-tekstbestand verpakt en komt in dezelfde wachtrij als een gesleept bestand, dus krijgt hij dezelfde opsplitsing op 400 tekens, dezelfde voortgangsbalk en dezelfde annuleerknop. De praktische limiet is geheugen in plaats van lengte: een lang artikel levert een lange WAV op, en een uur 24 kHz mono-PCM is een paar honderd megabyte, dus MP3 kiezen is de moeite waard als de lezing meer dan een paar minuten gaat duren.

Waarom klinken de pauzes tussen zinnen hier langer dan bij de ondertitelinspraak?

Omdat er een kwart seconde stilte tussen de stukken wordt gezet om te voorkomen dat opeenvolgende zinnen aan elkaar vastlopen, terwijl de pagina voor ondertitelinspraak elk blok op de exacte start van een cue plaatst en vult met het gat dat de ondertitel al had. Hier is het gat vast 250 ms ongeacht de inhoud, omdat er geen tijdlijn is om trouw aan te zijn. Zinnen binnen één stuk worden door de eigen leestekenverwerking van het model samengevoegd, dus alleen stukgrenzen — ruwweg elke 400 tekens — krijgen die extra pauze.

Welke stemmen zijn er voor Spaans en Portugees, en is dat één stem of zijn het er meerdere?

Elk één: ef_dora voor Spaans en pf_dora voor Braziliaans-Portugees, naast twee Engelse varianten uit de Verenigde Staten (af_heart, af_bella), nog een Amerikaanse stem (am_michael), twee Britse stemmen (bf_emma, bm_george), ff_siwis voor Frans, hf_alpha voor Hindi en if_sara voor Italiaans. Er zijn meerdere Engelse stemmen omdat daar de meeste inspraak wordt gevraagd; andere talen krijgen er één zodat de lijst kort genoeg blijft om te beluisteren. Een stem zet zowel het accent als de klankkleur, dus ze bepaalt ook met de fonemen van welke taal de tekst wordt gelezen.

Is de resulterende MP3 of M4A veilig om als podcastfragment te publiceren?

Technisch ja — beide zijn standaardcontainers die door een lokale ffmpeg-build worden gecodeerd, en de audio is 24 kHz mono, wat prima is voor spraak en dun voor muziek. Redactioneel: luister voordat je publiceert, want het model klipt soms een slotmedeklinker, legt de klemtoon vreemd op een eigennaam of leest een afkorting letter voor letter. Er wordt tijdens dat alles niets geüpload en er zit geen watermerk of tracking in, maar een synthetische stem draagt ook geen mededeling, dus verwacht je publiek een menselijke lezer, zeg dan welke van de twee het is.

Gerelateerde hulpmiddelen