Czytaj tekst na głos
Albo wklej tekst napisów
Pierwsze uruchomienie pobiera model głosu i fonemizator — razem około 98 MB, serwowane przez tę stronę i potem zapamiętane przez przeglądarkę. Wrzucone napisy albo tekst nigdy nie opuszczają tej karty. Wybór MP3 albo M4A pobiera dodatkowe 31 MB kodera, dlatego WAV jest domyślny.
Opcje
Głos decyduje o akcencie i barwie, a — mniej oczywiście — o tym, jakim systemem dźwięków tekst jest czytany. Połączenie hiszpańskiego głosu z angielskim zdaniem nie kończy się błędem: czyta angielskie słowa hiszpańskimi dźwiękami, co jest gorsze niż komunikat o błędzie. Oferowanych jest siedem języków, a nie dwanaście, bo fonemizator dołączony do tej strony nie ma głosu dla japońskiego ani chińskiego. Posłuchaj krótkiego pliku, zanim zdecydujesz się na długi; każdy głos niesie ten sam model, więc przełączenie kosztuje jedną syntezę, a nie jedno pobranie.
Jak szybko czyta głos, nałożone na tempo, które model uznaje za naturalne. Wolno to 0,8×, a szybko 1,2× — celowo łagodnie, bo powyżej około 1,5× model zaczyna połykać sylaby i wynik brzmi jak ktoś, kto się spieszy, a nie ktoś, kto mówi szybko. Gdy blok napisów jest za krótki na swoją kwestię, ta strona sama podnosi tempo do 1,4×, zanim przytnie, a to przyspieszenie mnoży się z ustawieniem wybranym tutaj.
WAV to nieskompresowane 24 kHz mono, zapisywane tutaj bez żadnego kodera — dlatego jest domyślne i dlatego nic dodatkowego się dla niego nie pobiera. MP3 i M4A potrzebują 31 MB silnika wideo do kompresji, ale wychodzą około dziesięć razy mniejsze: dziesięć minut mowy to około 28 MB w WAV i około 2,8 MB w MP3. Wybierz WAV, aby odsłuchać głos, a MP3, aby wysłać plik komuś.
Ta strona czyta tekst na głos. Wklej akapit albo wrzuć plik — .txt, .srt, .vtt, dowolny z dwunastu formatów napisów — wybierz jeden z dziesięciu głosów i otrzymaj jeden plik audio z całością wypowiedzianą od początku do końca. Nic nie jest synchronizowane, bo nie ma z czym: wynikiem jest jedno ciągłe czytanie, a nie ścieżka zbudowana pod obraz.
Gdy wrzucony plik jest plikiem z napisami, znaczniki czasu są parsowane i wyrzucane. Czytany jest tekst każdego bloku, w kolejności, łączony w akapity; podziały wierszy wewnątrz bloku stają się spacjami, bo były wyborami typograficznymi na ekranie, a granice bloków nie stają się niczym. To odwrotność tego, co robi strona narracji napisów, i obie strony istnieją obok siebie, żeby wybór był widoczny, a nie ukryty w polu wyboru: jedna daje dźwięk podążający za osią czasu, druga dźwięk, który po prostu płynie.
Tekst jest syntezowany w kawałkach, a nie za jednym podejściem. Tokenizator modelu po cichu obcina wszystko powyżej 510 fonemów — dwutysięczny artykuł wróciłby jako pierwsze dwa zdania, a plik wyglądałby całkowicie poprawnie. Dlatego tekst jest dzielony na granicach akapitów, potem na interpunkcji kończącej zdanie, a jeszcze mocniej przy pojedynczym zdaniu przekraczającym 400 znaków, i kawałki są syntezowane jeden po drugim z krótką pauzą między nimi. Tu też działa anulowanie: mówienie odbywa się na własnym wątku, więc przycisk anulowania zatrzymuje je w chwilę, zamiast czekać na koniec bieżącego zdania, a strona pozostaje użyteczna, gdy audio powstaje.
Lista głosów to dziesięć głosów w siedmiu językach — angielski (USA i Wielka Brytania), hiszpański, francuski, włoski, hindi i portugalski brazylijski. Japońskiego i chińskiego nie ma: fonemizator używany do wymowy nie ma dla nich głosu, więc opcja opisana jako japońska czytałaby kanji jak angielskie litery i brzmiała pewnie i błędnie. Około 98 MB modelu i fonemizatora pobiera się raz i jest buforowane; wklejony tekst nigdy nie opuszcza przeglądarki, co ma znaczenie, gdy akapit jest listem klienta albo notatką medyczną.
Częste pytania
Czy czytanie tekstu z pliku .srt w syntezie mowy obejmuje znaczniki czasu i numery bloków?
Ani jednego, ani drugiego. Plik jest parsowany tą samą warstwą formatu, której używają strony konwersji, i zachowywany jest tylko tekst każdego bloku — numery indeksów, schemat czasów 00:00:01,000 --> i wszelkie znaczniki w linii, jak <i> albo {\pos()}, znikają przed syntezą. Słyszysz słowa w kolejności, w jakiej się pojawiają. Jeśli chcesz, żeby czasy były respektowane, a nie odrzucane, użyj strony narracji pliku z napisami, która umieszcza każdy blok w jego własnym czasie startu.
Czy pole wklejonego tekstu w syntezie mowy przyjmie cały artykuł, czy tylko zdanie lub dwa?
Cały artykuł jest w porządku, bo tekst jest dzielony, zanim dotrze do modelu. Wklejona treść jest opakowana jako plik czystego tekstu i wchodzi do tej samej kolejki co wrzucony plik, więc dostaje to samo dzielenie na 400 znaków, ten sam pasek postępu i ten sam przycisk anulowania. Praktycznym limitem jest pamięć, nie długość: długi artykuł daje długi WAV, a godzina PCM 24 kHz mono to kilkaset megabajtów, więc wybór MP3 ma sens, jeśli czytanie ma trwać więcej niż kilka minut.
Dlaczego pauzy między zdaniami brzmią w syntezie mowy dłużej niż w narracji napisów?
Bo między kawałkami wstawiana jest ćwierć sekundy ciszy, żeby kolejne zdania się nie zlewały, podczas gdy strona narracji napisów umieszcza każdą linię w dokładnym czasie startu bloku i wypełnia przerwę, którą napisy już miały. Tutaj przerwa ma stałe 250 ms niezależnie od treści, bo nie ma osi czasu, wobec której trzeba być wiernym. Zdania wewnątrz jednego kawałka są łączone przez obsługę interpunkcji modelu, więc dodatkową pauzę dostają tylko granice kawałków — mniej więcej co 400 znaków.
Jakie głosy są dostępne dla hiszpańskiego i portugalskiego w syntezie mowy?
Po jednym: ef_dora dla hiszpańskiego i pf_dora dla portugalskiego brazylijskiego, obok dwóch wariantów angielskiego ze Stanów Zjednoczonych (af_heart, af_bella), jeszcze jednego amerykańskiego (am_michael), dwóch brytyjskich (bf_emma, bm_george), ff_siwis dla francuskiego, hf_alpha dla hindi i if_sara dla włoskiego. Więcej głosów angielskich istnieje, bo tam zamawia się najwięcej narracji; inne języki dostają jeden, żeby lista została wystarczająco krótka do przesłuchania. Głos ustawia akcent i barwę, więc decyduje też, jakimi fonemami języka czytany jest tekst.
Czy wynikowe MP3 lub M4A z syntezy mowy nadaje się do publikacji jako fragment podcastu?
Technicznie tak — oba są standardowymi kontenerami kodowanymi przez lokalną kompilację ffmpeg, a audio ma 24 kHz mono, co wystarcza dla mowy i jest cienkie dla muzyki. Redakcyjnie: posłuchaj przed publikacją, bo model czasem ucina końcową spółgłoskę, dziwnie akcentuje nazwę własną albo czyta skrót litera po literze. Nic nie jest wysyłane w tym czasie i nie ma wbudowanego znaku wodnego ani śledzenia, ale syntetyczny głos nie niesie też ujawnienia, więc jeśli twoja publiczność oczekuje ludzkiego lektora, powiedz, który to jest.