Gå till huvudinnehållet
SubtitleMatrix

Läs upp undertexter med röst

MedieinmatningUndertexter till tal

Första körningen laddar ner röstmodellen och fonemisatorn – ungefär 98 MB tillsammans, serverade av den här webbplatsen och cachade av webbläsaren efteråt. Undertexten eller texten du släpper in lämnar aldrig den här fliken. Väljer du MP3 eller M4A laddas ytterligare 31 MB kodare ner, vilket är varför WAV är standard.

Inställningar

En röst avgör brytning och klang, och – mindre uppenbart – vilket ljudsystem texten läses med. Att para en spansk röst med en engelsk mening misslyckas inte: den läser engelska ord med spanska ljud, vilket är värre än ett felmeddelande. Sju språk erbjuds, inte tolv, eftersom fonemisatorn som följer med den här sidan inte har någon röst för japanska eller kinesiska. Lyssna på en kort fil innan du bestämmer dig för en lång; varje röst bär samma modell, så att byta kostar en syntes, inte en nedladdning.

Hur snabbt rösten läser, tillämpat ovanpå den takt modellen anser vara naturlig. Långsam är 0,8× och snabb är 1,2× – medvetet måttliga, för bortom ungefär 1,5× börjar modellen svälja stavelser och resultatet låter som någon som stressar i stället för någon som talar fort. När ett undertexttextblock är för kort för sin replik höjer den här sidan hastigheten själv upp till 1,4× innan den klipper, och den ökningen multipliceras med inställningen du väljer här.

WAV är okomprimerat 24 kHz mono, skrivet här helt utan kodare – vilket är varför det är standard och varför inget extra laddas ner för det. MP3 och M4A behöver den 31 MB stora videomotorn för att komprimera, men blir ungefär tio gånger mindre: tio minuters tal är ungefär 28 MB som WAV och ungefär 2,8 MB som MP3. Välj WAV för att provlyssna en röst, MP3 för att skicka filen till någon.

Den här sidan gör en undertextfil till ett röstspår som följer den. Varje textblock läses upp och placeras i det ögonblick blocket börjar, så resultatet är en enda ljudfil – film.wav – där orden landar under undertexten i stället för ovanpå varandra. Tystnad fyller glappen mellan textblocken, och den totala längden motsvarar slutet på det sista blocket, vilket innebär att ljudet kan läggas mot samma bild som undertexten gjordes för.

Skälet till att sidan finns separat från den vanliga uppläsningssidan är att tiden är det svåra. En mening som tar fyra sekunder att säga men har ett textblock på två sekunder kan inte bara släppas in: den skulle löpa under nästa block, och två röster samtidigt är brus, inte uppläsning. Därför syntetiseras varje rad med hastigheten du valt, mäts och – om den inte ryms – syntetiseras en gång till i snabbare takt, upp till 1,4×. Det som fortfarande inte ryms kapas vid nästa textblocks start, och antalet block det drabbade rapporteras som en förlust i stället för att sväljas.

Röstlistan är tio röster på sju språk: engelska från USA och Storbritannien, spanska, franska, italienska, hindi och brasiliansk portugisiska. En röst är inte bara en klang – den avgör vilket språks ljud texten läses med, så att para en spansk röst med engelsk text ger något som varken är det ena eller det andra. Japanska och kinesiska saknas med avsikt: fonemisatorn som följer med sidan har ingen röst för något av dem, och att lista dem skulle ge självsäkert nonsens i stället för ett felmeddelande.

Arbetet sker lokalt. Ungefär 98 MB modell och fonemisator laddas ner en gång från den här sajten och cachas av webbläsaren efteråt; själva undertextfilen lämnar aldrig fliken. Utdata är WAV som standard eftersom det inte behöver någon kodare alls – väljer du MP3 eller M4A laddas en ffmpeg-kärna på 31 MB för att komprimera resultatet, vilket är värt det för allt du tänker skicka till någon.

Uppläsningen sker i sin egen tråd, så avbryt-knappen verkar omedelbart i stället för att vänta ut den mening som pågår, och sidan förblir användbar medan ljudet skapas. Nedladdningen av modellen kan avbrytas när som helst. Inget laddas upp: nätverkspanelen visar bara nedladdningar av modell, fonemisator och eventuell kodare, aldrig en förfrågan som bär din undertext.

Vanliga frågor

Varför klipps en mening ibland av i röstspåret från undertextfilen, trots att SRT-filen är korrekt?

Eftersom klippet orsakas av textblocket, inte av filen. Ett block som står kvar på skärmen i 1,8 sekunder kan inte rymma en rad som tar tre sekunder att säga om inte rösten pressas över 1,4× – och över den gränsen slutar orden vara begripliga. Sidan provar din valda hastighet först och syntetiserar sedan om en gång i den takt som skulle få plats, med taket 1,4×. Ryms det fortfarande inte kapas ljudet vid början av nästa block så att två rader aldrig klingar samtidigt, och antalet drabbade block syns i förlustrapporten under kön.

Vad händer med ASS-formatering, färger och skärmpositioner när undertexten läses upp till röst?

De tas bort, och det är korrekt här – en ljudfil har ingen färg och ingen skärmposition. Det som överlever är texten i varje textblock och dess start- och sluttid, vilket är precis vad placeringen behöver. Fetstil, kursiv, karaoketider och positioneringsöverstyrningar som {\anN} tolkas bort av formatlagret före syntesen, så en rad som markerats kursiv i ASS-filen läses med samma röst som resten. Behöver du formateringen bevarad konverterar du undertexten först; den här sidans produkt är ljud.

Kan ett tvåradigt SRT-textblock läsas som en sammanhängande mening i röstspåret?

Ja, och det gör det alltid. En hård radbrytning inuti ett textblock är ett typografiskt beslut – en plats där textaren tyckte att raden blev för lång på skärmen – inte en plats där talaren pausade. De två raderna fogas därför ihop med ett mellanslag och syntetiseras som en yttrande, vilket är varför ett block delat över rader fortfarande låter som ett andetag snarare än två talare som turas om. Bara en textblocksgräns ger en paus i utdata.

Vilka språk kan röstspåret faktiskt tala, och vad händer med japansk undertext?

Sju: en-US, en-GB, es, fr, hi, it och pt-BR. Tio röster fördelar sig på dem – tre amerikanska, två brittiska och en vardera för de övriga. Japanska och kinesiska finns inte med, eftersom fonemisatorn som följer med sidan (espeak-ng) inte levererar någon röst för något av dem, även om själva talmodellen tränats på dem. Att mata en japansk .srt till en engelsk röst misslyckas inte högljutt – latinska bokstäver läses som engelska och kanji hoppas över eller förvanskas. Det ärliga arbetssättet för de språken är att välja en röst vars språk matchar undertexten, inte att acceptera ett spår som låter rimligt och är fel.

Är MP3 värt extra 31 MB jämfört med WAV som undertextuppläsningen ger som standard?

För allt längre än några minuter, ja. WAV är okomprimerad 24 kHz mono PCM, så tio minuters uppläsning är ungefär 28 MB, medan samma ljud kodat som MP3 med 128 kbit/s är omkring 2,8 MB. Priset är att MP3 och M4A kräver att ffmpeg-kärnan laddas ner en gång, vilket är varför WAV är standard: vill du bara höra hur en röst låter hämtas inget extra. När kodaren väl är cachad går det snabbt att konvertera samma undertext igen med samma inställningar.

Relaterade verktyg