KEN’S CAT LOG
▣

Usporedba 10, 5 i 3 sata podataka za sintezu govora: gotovo bez razlike u TTS-u koji govori tri jezika

Nastavak o modelu za sintezu hrvatskog govora. Ovaj put sam jedan mali model naučio govoriti tri jezika: hrvatski, japanski i engleski. Zatim sam usporedio koliko se razlikuju skupovi za učenje od 10, 5 i 3 sata za svaki jezik.

Najprije zaključak.

  • Bilo da je svaki jezik imao 10, 5 ili 3 sata podataka, na kraju gotovo da nije bilo razlike. Stopa pogrešaka znakova u najboljem trenutku bila je 0,7 % za sva tri modela (28 od 32 rečenice potpuno se podudaralo)
  • Napredak tijekom učenja također je bio gotovo isti. Japanski i engleski u sva su tri slučaja već nakon 3.000–5.000 koraka zvučali dobro, a hrvatski je nakon 10.000 koraka također gotovo čitao prema scenariju
  • Samo je verzija s 3 sata neko vrijeme zadržala naviku da „Bok! (zdravo)” pogrešno pročita kao „Blok”. Trebalo joj je malo dulje da se ustali u najboljem stanju
  • Nije bilo razlike ni u rečenicama punima stručnih izraza. Testirao sam misleći da će verzija s 10 sati bolje poznavati vokabular, ali sva tri modela bila su gotovo jednaka
  • Pogreške u čitanju stručnih izraza pojavile su se kod istih riječi na isti način u sva tri modela. Kod engleskog uzrok nije bio model, nego dio koji pretvara slova u fonetske znakove (rječnik)

Što sam napravio

Modeli: isti kao prošli put: Matcha-TTS (oko 18,3 milijuna parametara) i Vocos (oko 13,5 milijuna parametara), koji vraća zvučni val. Govornik je jedan muškarac u dvadesetima.

Kako sam omogućio tri jezika: ulaz modela pretvorio sam u fonetske znakove (IPA) zajedničke za sva tri jezika. Glasovi koji su jednaki u različitim jezicima, poput „ʦ” i „ʨ”, dijele isti znak. Jezik koji model govori određuje se brojem koji se inače koristi za promjenu govornika, a ovdje služi kao „broj jezika”.

  • Hrvatski: budući da se uglavnom čita onako kako je napisano, dovoljno je slova preslikati jedan-na-jedan u fonetske znakove
  • Japanski: pomoću OpenJTalka izvučeni su izgovor i naglasak te su dodane oznake mjesta na kojima visina tona raste i pada
  • Engleski: fonetski znakovi dobiveni su pomoću g2p_en (CMU izgovornog rječnika i malog modela koji procjenjuje izgovor riječi kojih nema u rječniku)

Podaci za učenje: snimke istog muškog glasa koji čita dijaloge na tri jezika. Nakon što su glasovnim prepoznavanjem uklonjena pogrešna čitanja usporedbom sa scenarijem, ostalo je 9,4 sata hrvatskog, 9,7 sati japanskog i 8,3 sata engleskog (ukupno oko 27 sati). To nazivam „verzijom od 10 sati”.

Iz toga je nasumično izdvojeno točno po 5 sati za svaki jezik (ukupno 15 sati) za „verziju od 5 sati”, odnosno po 3 sata (ukupno 9 sati, oko 5.800 snimki) za „verziju od 3 sata”. Sve ostale postavke (veličina modela, veličina batcha i 60.000 koraka) bile su iste. Budući da je broj koraka jednak, modeli s manje podataka isti zvuk vide više puta (verzija od 3 sata oko tri puta više nego verzija od 10 sati).

Učenje je na jednoj RTX 4090 trajalo 6 do 8 i pol sati po pokretanju.

Usporedba glasova tijekom učenja

Sljedeće rečenice, koje nisu bile u podacima za učenje, sintetizirane su modelima tijekom učenja.

  • Engleski: Tomorrow we're going to the seaside, and the day after we'll visit my grandma in Split.
  • Japanski: Sutra ćemo ići na more, a prekosutra planiram otići u posjet baki.
  • Hrvatski: Sutra idemo na more, a prekosutra ćemo posjetiti baku u Splitu.

Slijeva nadesno: verzija od 10 sati, verzija od 5 sati i verzija od 3 sata.

Korak 10-satna verzija 5-satna verzija 3-satna verzija
1.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
2.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
3.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
4.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
5.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
10.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
20.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
30.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
40.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
50.000 Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski

Po dojmu pri slušanju, 1.000 koraka još je kod svih verzija nejasno. No engleski se već uglavnom može razumjeti. Japanski se razlikovao ovisno o verziji: verzija s 5 sati već je nakon 1.000 koraka ovu rečenicu ispravno prepisala od riječi do riječi. Nasuprot tome, verzija s 10 sati izgovorila je „Pokušajte se pobrinuti za to”, a verzija s 3 sata „S liječnikom do sutra...”, dakle sasvim drugačije rečenice.

Nakon 3.000–5.000 koraka svi modeli počinju čitati japanski i engleski prema predlošku. Hrvatski malo kasni: početno „Sutra” i dalje se čuje kao „Sve”, „Straj”, „Satra” i slično sve do otprilike 5.000–10.000 koraka. Nakon 20.000 koraka pri slušanju se gotovo više nije mogla razaznati razlika između te tri verzije.

Pogled kroz brojke

Rečenice za evaluaciju (14 hrvatskih, 9 japanskih i 9 engleskih, sve izvan podataka za učenje) prepisane su pomoću Whispera large-v3, a zatim je izmjerena stopa pogrešaka znakova (CER) u odnosu na predložak. Japanski je prije usporedbe pretvoren u čitanje katakanom kako se varijacije u zapisu kanjijima (poput „asatte” i „preksutra”) ne bi računale kao pogreške.

Najprije prosjek za sve 32 rečenice na trima jezicima. Broj u zagradama označava broj potpunih podudarnosti.

Koraci Verzija s 10 sati Verzija s 5 sati Verzija s 3 sata
1.000 43,8 %(2) 41,9 %(2) 43,8 %(1)
2.000 16,6 %(7) 17,7 %(12) 17,6 %(9)
3.000 7,7 %(16) 6,2 %(16) 9,9 %(14)
4.000 5,9 %(21) 3,7 %(19) 2,7 %(25)
5.000 2,1 %(23) 3,3 %(20) 4,5 %(23)
10.000 1,4 %(24) 1,1 %(23) 1,7 %(24)
15.000 0,8 %(26) 0,7 %(26) 2,0 %(24)
20.000 0,7 %(27) 0,8 %(26) 0,9 %(25)
30.000 0,7 %(28) 0,8 %(26) 1,7 %(26)
40.000 1,2 %(25) 1,7 %(26) 0,7 %(26)
45.000 3,9 %(25) 0,7 %(28) 0,7 %(27)
50.000 0,7 %(28) 0,7 %(26) 0,7 %(28)
60.000 1,8 %(26) 0,8 %(27) 1,9 %(25)

Po jezicima to izgleda ovako (hrvatski / japanski / engleski).

Koraci Verzija s 10 sati Verzija s 5 sati Verzija s 3 sata
5.000 2,8 / 1,2 / 1,8 % 6,5 / 1,2 / 0,3 % 2,0 / 1,8 / 11,1 %
10.000 2,2 / 1,2 / 0,3 % 1,7 / 1,2 / 0,3 % 2,9 / 1,2 / 0,3 %
20.000 0,8 / 1,2 / 0,0 % 0,9 / 1,2 / 0,0 % 0,8 / 1,8 / 0,3 %
30.000 0,7 / 1,2 / 0,0 % 1,1 / 1,2 / 0,0 % 3,2 / 1,2 / 0,0 %
50.000 0,7 / 1,2 / 0,0 % 0,9 / 1,2 / 0,0 % 0,7 / 1,2 / 0,0 %
  • Najbolji su bili verzija s 10 sati pri 30.000 i 50.000 koraka, verzija s 5 sati pri 45.000 koraka te verzija s 3 sata pri 50.000 koraka. Sve su imale ukupno 0,7 %, s 28 od 32 rečenice koje se potpuno podudaraju, odnosno sve tri dosegle su istu razinu
  • Mjesta na kojima brojke uskaču gotovo se uvijek svode na razliku u jednoj riječi. Primjerice, „Bok!” se prepozna kao „Bog”, a „Hi!” kao „Bye.”; u kratkim rečenicama od jedne ili dvije riječi pogreška od samo jednog znaka znatno podiže stopu pogreške
  • U verziji s 3 sata hrvatski je između 15.000 i 35.000 koraka na razini od 3 %. Kad se pogleda sadržaj, gotovo sve otpada na jednu rečenicu u kojoj se „Bok!” čita kao „Blok”. Pri 50.000 koraka to je ispravljeno. Čini se da s manje podataka treba više vremena da nestanu navike u kratkim rečenicama
  • Japanskih 1,2 % svaki put dolazi samo od jedne rečenice: „ššš, tiho.”, u kojoj se „ššš” prepisuje kao „š”. To je pitanje koliko dugo se bilježi produženi glas; pri slušanju se jasno čuje „ššš”
  • Preostale pogreške u hrvatskom uglavnom su navike alata za prepisivanje, primjerice „prekosutra” se zapisuje kao dvije riječi, „preko sutra”

Razlika između 10, 5 i 3 sata bila je unutar granice pogreške. Barem za pitanje „može li čitati prema predlošku”, tri sata po jeziku bila su dovoljna. Međutim, verziji s 3 sata trebalo je dulje da se ustali, pa je preporučljivo trenirati više od 40.000 koraka.

Usporedba na rečenicama prepunima stručnih izraza

Ako je za svakodnevni razgovor dovoljno i manje podataka, možda bi veća količina podataka bila bolja za teške riječi koje se gotovo ne pojavljuju u podacima za učenje. S tom mišlju sastavljeno je 10 rečenica prepunih stručnih izraza iz medicine, IT-a, prava, kemije i financija te su pročitane na trima jezicima. Za sve modele korištena je verzija s 50.000 koraka.

  1. Budući da sumnjamo na infarkt miokarda, hitno pripremite koronarnu angiografiju i trombolitičku terapiju.
    • Sumnjamo na infarkt miokarda, zato odmah pripremite koronarnu angiografiju i trombolitičku terapiju.
    • Sumnjamo na infarkt miokarda, zato odmah pripremite koronarnu angiografiju i trombolitičku terapiju.
  2. Ovaj algoritam kombinira konvolucijsku neuronsku mrežu s rekurentnom arhitekturom.
    • Ovaj algoritam kombinira konvolucijsku neuronsku mrežu s rekurentnom arhitekturom.
    • Ovaj algoritam kombinira konvolucijsku neuronsku mrežu s rekurentnom arhitekturom.
  3. Branitelj optuženika u žalbenom je postupku zatražio oslobađajuću presudu, pozivajući se na nezakonito pribavljene dokaze.
    • Branitelj optuženika zatražio je oslobađajuću presudu u žalbenom postupku zbog nezakonito pribavljenih dokaza.
    • Branitelj optuženika zatražio je oslobađajuću presudu u žalbenom postupku zbog nezakonito pribavljenih dokaza.
  4. U fotosintezi lanac prijenosa elektrona u tilakoidnoj membrani kloroplasta proizvodi adenozin-trifosfat.
    • U fotosintezi lanac prijenosa elektrona u tilakoidnoj membrani kloroplasta proizvodi adenozin-trifosfat.
    • U fotosintezi lanac prijenosa elektrona u tilakoidnoj membrani kloroplasta proizvodi adenozin-trifosfat.
  5. Kvantna distribucija ključeva temeljena na spregnutosti u načelu može otkriti svako prisluškivanje.
    • Kvantna distribucija ključeva temeljena na spregnutosti u načelu može otkriti svako prisluškivanje.
    • Kvantna distribucija ključeva temeljena na spregnutosti u načelu može otkriti svako prisluškivanje.
  6. Zbog rasta inflacije središnja banka odlučila je povisiti kamatne stope i započeti kvantitativno pooštravanje.
    • Zbog rasta inflacije središnja banka odlučila je povisiti kamatne stope i započeti kvantitativno pooštravanje.
    • Zbog rasta inflacije središnja banka odlučila je povisiti kamatne stope i započeti kvantitativno pooštravanje.
  7. Pacijenti s osteoartritisom koljena dobivaju intraartikularne injekcije hijaluronske kiseline uz fizioterapiju.
    • Pacijenti s osteoartritisom koljena dobivaju intraartikularne injekcije hijaluronske kiseline uz fizioterapiju.
    • Pacijenti s osteoartritisom koljena dobivaju intraartikularne injekcije hijaluronske kiseline uz fizioterapiju.
  8. Ovaj most nosi armiranobetonsku ploču na prednapregnutim betonskim nosačima.
    • Ovaj most nosi armiranobetonsku ploču na prednapregnutim betonskim nosačima.
    • Ovaj most nosi armiranobetonsku ploču na prednapregnutim betonskim nosačima.
  9. Mjenjačnica kriptovaluta provjerava cjelovitost distribuirane glavne knjige algoritmom konsenzusa.
    • Mjenjačnica kriptovaluta provjerava cjelovitost distribuirane glavne knjige algoritmom konsenzusa.
    • Mjenjačnica kriptovaluta provjerava cjelovitost distribuirane glavne knjige algoritmom konsenzusa.
  10. Prekomjerna uporaba antibiotika dovodi do multirezistentnih bakterija i povećava rizik od bolničkih infekcija.
  • Prekomjerna uporaba antibiotika dovodi do multirezistentnih bakterija i povećava rizik od bolničkih infekcija.
  • Prekomjerna uporaba antibiotika dovodi do multirezistentnih bakterija i povećava rizik od bolničkih infekcija.
Rečenica Verzija od 10 sati Verzija od 5 sati Verzija od 3 sata
1. Postoji sumnja na infarkt miokarda, stoga hitno pripremite koronarnu angiografiju i trombolitičku terapiju. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
2. Ovaj algoritam ima strukturu koja kombinira konvolucijsku neuronsku mrežu i rekurentnu mrežu. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
3. Odvjetnik optuženika zatražio je oslobađajuću presudu u žalbenom postupku zbog nezakonito prikupljenih dokaza. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
4. U fotosintezi elektronski transportni lanac djeluje u tilakoidnoj membrani kloroplasta, pri čemu se sintetizira adenozin trifosfat. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
5. Distribucija kriptografskih ključeva koja koristi kvantnu spregnutost omogućuje načelno otkrivanje prisluškivanja. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
6. Središnja banka odlučila je povećati ključnu kamatnu stopu i provesti kvantitativno stezanje zbog rasta stope inflacije. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
7. Kod pacijenata s osteoartritisom koljena kombiniramo intraartikularne injekcije hijaluronske kiseline i fizioterapiju. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
8. Ovaj most ima armiranobetonsku kolničku ploču koju podupiru nosači od prednapetog betona. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
9. Burza kriptovaluta provjerava integritet decentralizirane knjige pomoću algoritma konsenzusa. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski
10. Prekomjerna primjena antibiotika dovodi do pojave bakterija otpornih na više lijekova i povećava rizik od bolničkih infekcija. Engleski Japanski Hrvatski Engleski Japanski Hrvatski Engleski Japanski Hrvatski

Rezultati.

Hrvatski Japanski Engleski Potpuno podudaranje od 30 rečenica
Verzija s 10 sati 0,6% 1,5% 4,6% 17
Verzija s 5 sati 0,3% 1,0% 3,9% 20
Verzija s 3 sata 0,5% 1,0% 4,1% 18

Rezultat nije pokazao da je verzija s 10 sati bolja. Sve su tri bile otprilike jednake, a verzija s 5 sati čak je bila mrvicu bolja. Za svaki slučaj izmjerio sam i modele s 60.000 koraka za verzije s 10 i 5 sati: verzija s 10 sati imala je 1,9%, a ona s 5 sati 2,0%, pa se poredak preokrenuo. Drugim riječima, ta je razlika samo slučajna varijacija i ne može se reći koja je bolja. Samo je verzija s 3 sata sintetizirana i prepisivana na CPU-u jer je GPU bio zauzet drugim poslom. Zbog toga su uvjeti bili neznatno drukčiji.

Zanimljiv je bio sadržaj pogrešaka.

  • Englesku riječ „cryptocurrency” sva su tri modela prepoznala kao nešto što zvuči poput „Kripke-Kunershi”, „Kripke-Kinoshi” ili „Kripik-Innershi”
  • „intra-articular”, „multidrug-resistant” i „angiography” također su se na sličan način pogrešno izgovorili u sva tri modela
  • Japanski izraz „koronarna angiografija” sva su tri modela prepisala kao „~増え”, a „床版” sva tri kao „障板”
  • Hrvatsku riječ „pooštravanje” svi su modeli prepoznali kao „poštravanje”

Modeli s različitom količinom podataka griješe na isti način, na istim riječima. Za engleski je uzrok bio jasan: nije bio u modelu, nego u dijelu koji pretvara slova u fonetske znakove.

Ovaj model ne čita slova izravno, nego čita fonetske znakove. Za engleski g2p_en nagađa izgovor riječi koje nisu u rječniku. Kada sam to provjerio, „cryptocurrency” je pretvoren u fonetske znakove bliske izgovoru „kuripakjunaši”, a „angiography” u fonetske znakove s umetnutim n u sredini. Model samo pretvara dobivene fonetske znakove u glas, pa griješi na istom mjestu bez obzira na to ima li podatke za 10 ili 3 sata učenja.

Japanski je malo drukčiji slučaj. Čitanja u OpenJTalku bila su ispravna: „床版(ショーバン)” i „冠動脈造影(カンドーミャクゾーエー)”. To što je „床版” postalo „障板” znači da je upotrijebljen drugi kanji s istim čitanjem, što je izgovorno ispravno. Zašto je „造影” postalo „増え” — je li Whisper rijetku riječ približio poznatijoj riječi ili je izgovor modela bio nedovoljno jasan — ovom metodom mjerenja nije moguće razlikovati. No i ovdje su sva tri modela griješila na sličan način.

Dakle, u ovom sustavu snaga engleskih stručnih termina, barem zasad, ne ovisi o količini podataka za učenje, nego o rječniku izgovora. Ako želite bolju podršku za stručne termine, brže je dodati riječi u rječnik nego povećavati količinu podataka.

Sažetak

  • Mogao sam navesti mali model (ukupno oko 32 milijuna parametara) da govori tri jezika
  • Podaci za učenje bili su gotovo jednako točni pri čitanju za 10, 5 ili 3 sata po jeziku. Verziji s 3 sata trebalo je malo dulje da se stabilizira
  • Nije bilo razlike ni kod stručnih termina. Pogreške nastaju na strani rječnika izgovora i ne mogu se ispraviti količinom podataka

Izrada podataka oduzima i vrijeme i novac, pa se čini razumnim najprije izraditi po 3 sata za svaki jezik, a zatim dodati više ako to nije dovoljno. Sljedeće namjeravam, na temelju ovog rezultata, povećati broj jezika na deset. No ovdje je mjereno samo „što se izgovara”. U aspektima koji se ne mogu mjeriti stopom pogreške znakova, kao što su prirodnost glasa i raspon emocija, više podataka moglo bi biti prednost. To želim provjeriti slušanjem.