http://espeak.sourceforge.net/
Šiame puslapuje yra pristatoma „eSpeak“ balso sintezavimo sistema, pagrinde dėmesio skiriama lietuvių kalbos palaikymui.
Wikipedijoje Espeak yra aprašoma kaip kompaktiška atvirojo kodo programinė įranga balso sintezavimui. Ji veikia ant MS Windows ir Linux operacinių sistemų. Šnekos sintezavimo variklis naudoja formančių sintezavimą ir palaiko daugelių kalbų. Projektai NVDA, Ubuntu ir OLPC, Google Translate naudojo ar naudoja eSpeak.
eSpeak projekto kilmė yra naudojimas Acorn RISC OS sintezatorius, kuris buvo pradėtas rašyti 1995 Jonathan Duddington. Perrašyta versija Linux OS pasirodė 2006, o 2007 sausį pasirodė Windows SAPI 5 sudrinama versija.
Sintezatorius palaiko 68 kalbas. Kokybė sintezuojamų kalbų yra skirtinga, kadangi sintezavimo staklėmis aprašyti naudojama grįžtamoji informaciją iš gimtosios kalbos kalbėtojų ne visada yra pakankama.
Sintezatorius susideda iš dviejų dalių: grafema fonema transformacija ir fonema garsas transformacija. fonema->garsas galima naudoti ir kitus variklius(MBROLA) (P. Kasparaitis. Diphone databases for Lithuanian text-to-speech synthesis. Informatica. 2005)
Sintezatorius palaikos standartus:
paslėptų Markovo akustinių modelių (HMMs) ir n-gram statistiniu kalbos modeliu.
Daugiau informacijos galima rasti: github.com/mondhs/espeak-sample.
Norint patikrinti ar espeak veikia lietuviškai galima paleisti komandą komandinėje eilutėje:
$espeak -vlt "11 valandų 56 minutės" -x
# Turi būti matomas fonemos v;ien'uol;ika val'andu: p;'ENk;ez;d;eS;imtS;eS'I m;in'ut;ees
# turi būti girdima lietuviškais skaitmenimis tariama šneka
Audio pavyzdys: Wav klatt2 balsas
#include <./src/speak_lib.h>
int main(int argc, char* argv[] ) {
char text[32] = {"1. Labas. Šauk. Laikas. Taika"};//Tariamas tekstas
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0 ); // paruošiamas eSpeak variklis
espeak_SetVoiceByName("mb-lt1");// nustatomas Mbrola lietuvių 1 garas
unsigned int size = 0; // saičius kiek tariamų simbolių yra masyve
while(text[size]!='\0') size++;//suskaičiuojam pilnu perinkimu tariamus simbolius ==strlen(text)
unsigned int flags=espeakCHARS_AUTO | espeakENDPAUSE;//Auto: utf8 ar 8bit,
espeak_Synth( text, size+1, 0,POS_CHARACTER,0, flags, NULL, NULL );// grafema->fonema->garsas transformacija
espeak_Synchronize( ); //Lukterėti kol pasibaigs viską ištarti.
return 0;
}
Audio pavyzdys: Wav MBROLA balsas
Dabartinė žinoma versija 1.48.02 espeak.sourceforge.net/download.html
Lietuvių kalba espeak yra palaikoma nuo 2012 metų 1.46.20 versijos. Dabartinė žinoma versija github.com/mondhs/espeak. Grafemų-fonemų transformacijų taisyklės aprašytos: github.com/mondhs/…/dictsource/lt_list
Detalesnė informacija pateikta Prisijungimas prie tobulinimo. Parsiųsti galima iš github kodo saugyklos git clone https://github.com/mondhs/espeak
Toliau pateiktas svarbiausių aspektų aprašas lietuvių kalba.
Už jas atsako ‘'’espeak-data/dictsource’’’ kataloge esantys failai.
Čia talpinamos pagrindinės transformacijos taisyklės. Jos aprašomos pagal tokią struktūrą:
[ženklai prieš )] raidė(s) [( ženklai po] raidės tarimas.
Pavyzdžiui:
d (_ t // [d] žodžio gale tariami dusliai: kad – kat
_) ie (šm jie // „ie“ žodžio pradžioje prieš „šm“ tariama [jie]: iešmas [jiešmas]
i (A ; // A didžioji raidė reiškia bet kokį balsį,
// kabliataškis (;) – minkštumo ženklą.
k (CL06 k; // C didžioji raidė reiškia bet kokį priebalsį,
// L su dviem skaitmenimis nurodo tam tikrą raidžių derinių grupę,
// kuri aprašoma to failo viršuje
@) ė (jL12_ ee= // lygu (=) nurodo, kad raidė yra kirčiuota,
// eta (@) – prieš raidę yra bent vienas skiemuo:
// priesaga -ėjas: siuvėjas
Čia aprašomi išimtiniai žodžių tarimo atvėjai. Pavyzdys: manęs $2 // kirčiuojamas antras skiemuo
lt_listx
failas papildo lt_list
failą, skrita kalboms kurios turi per daug išimtinių atvėjų.
Už fonemas atsako espeak-data/phsource/
kataloge esantys failai.
Ši interpretacija naudojama, kai pasirenkamas lt
balsas.
espeak-data/phsource/mbrola/
kataloge esantys failai aprašo espeak ir mbrola fonemų sąsajas; būtent lt1
ir lt2
failai aprašo fonemų interpretavimą, kai naudojamas mb/mb-lt1
arba mb/mb-lt2
balsas.
Jį reikia atlikti, jei atlikote pakeitimus espeak-data/dictsource/lt_rules
(tarimo taisyklės), espeak-data/dictsource/lt_list
(įvardžių, sutrumpinimų, skaičių ir t.t tarimas), espeak-data/dictsource/lt_listx
ar espeak-data/phsource/ph_lithuanian
, reikia iš naujo sukompiliuoti espeak-data/
espeak-data/lt_dict
.
Tam espeakedit
grafinėje programoje eikite per meniu Compile > phoneme data
ir Compile > dictionary lt
Jei keitėte espeak-data/phsource/mbrola/lt1
arba espeak-data/phsource/mbrola/lt2
, tuomet prieš tai dar reikia espeakedit
grafinėje programoje eiti per meniu Compile > Compile mbrola phonemes list
.