From 4b48328d299c80367f5931be31966880f9c05190 Mon Sep 17 00:00:00 2001 From: Andrij Mizyk Date: Mon, 31 Oct 2022 21:11:50 +0200 Subject: [PATCH 1/3] Support of Ukrainian language --- dictsource/uk_list | 303 +++++++++++++++++++++++++++---------- dictsource/uk_rules | 96 ++++++------ espeak-ng-data/lang/zle/uk | 4 + phsource/ph_ukrainian | 38 +++++ phsource/phonemes | 5 +- 5 files changed, 319 insertions(+), 127 deletions(-) create mode 100644 phsource/ph_ukrainian diff --git a/dictsource/uk_list b/dictsource/uk_list index d81b9ac5..8e7a72b6 100644 --- a/dictsource/uk_list +++ b/dictsource/uk_list @@ -1,82 +1,225 @@ -// This file is UTF8 encoded -// Spelling-to-phoneme words for Ukrainian +// This file is UTF-8 encoded +/// pronunciation of signs, numbers and exceptional words +// Author: Andrij Mizyk , 2022 -// Letter names -а a -_б bE -б bE $atend -_в vE -в vE $atend -г gE -ґ gE -д dE -е e -є je -_ж ZE -ж ZE $atend -з zE -и i -і i -ї ji -й jot -к kA -л El -м Em -н En_ -о o -п pE -р Er -_с Es -с Es $atend -т tE -у u -ф Ef -х xA -ц tsE -ч tS;e -ш SA -щ S;ja -ь m;'jak;I#jzn'Ak -ю ju -я ja +// all words must be LOWER CASE (although the initial letter will be +// automatically converted if it's a 7bit ascii character) +// +// You can use the uk_extra file, rather than this one +// to add your own pronunciation definitions. +// +// if they are spoken as a single character in text precede by _ +// to distinguish from pronunciation as a language word -// Numbers -_0 nul;j -_1 od;'in -_2 dv'a -_3 tR;'i -_4 tS;otiR;i -_5 p;j'at; -_6 S'is;t; -_7 s;'im -_8 v'is;im -_9 d;'evjat; -_10 d;'esjat; -_11 od;'inadtsjat; -_12 dv;'anadtsjat; -_13 trin'adtsjat; -_14 tSot'irnadtsjat; -_15 pjatn'adtsjat; -_16 Sistn'adtsjat; -_17 simn'adtsjat; -_18 visimn'adtsjat; -_19 d;ev;jatn'adtsjat; -_2X dv'adtsjat; -_3X tr'idtsjat; -_4X s'orok -_5X pjatdesj'at; -_6X Sistdesj'at; -_7X s;imd;es;jat; -_8X vis;imdesj;at; -_9X d;ev;jan'osto -_0C st'o -_2C dv;'es;t;I -_3C tr;'ista -_4C tS;It'yr;esta -_5C p;,It;s'ot -_6C S,es;t;s'ot -_7C s;,Ims'ot -_8C vOs;Ims'ot -_9C d;ev;Vts'ot -_0M1 t'isjatSa -_dpt _:'i_: + +// CHARACTERS +//*********** + +! zn'ak||'okleku +" podv'i:jna||l'apka +# RES'i:tka +$ d'olaR +% vi:ds'otok +& ampeRs'and +//' odIn'aRna||l'apka +//( Bi:dkR'eta||d'uZka +//) zakR'eta||d'uZka +* z'i:RotSka ++ pl^'us +, k'oma +- m'i:nus +. kR'apka +/ kos'a||R'Iska +: dB'i:||kR'apkI +; kR'apka||z||k'omoju +< m'EnSE += R'i:vnE +> b'i:l^SE +//? zn'ak||pIt'an:ja // не читає +@ sob'atSka +[ Bi:dkR'eta||kBadR'atna||d'uZka +\ ob'ERnEna||kos'a||R'Iska +] zakR'eta||kBadR'atna||d'uZka +^ daS'ok +\\_ n'IZn^e||pi:dkR'EslEn:ja +` hRaf'i:s +{ B'i:dkReta||fi:h'uRna||d'uZka +| BERtIk'al^na||R'Iska +} zakR'eta||fi:h'uRna||d'uZka +~ t'Il^da +ʼ ap'ostRof +« B'i:dkRIti:||lapk'I +» z'akRIti:||lapk'I +… tR'e||kR'apkI + + +// NUMBERS +//******** + +_0 n'ul^ +_1 od'en +_2 dB'a +_3 tR'I +_4 tSot'eRe +_5 pj'at; +_6 S'i:st; +_7 s'i:m +_8 v'i:si:m +_9 d'Evjat; + +_10 d'Esjat; +_11 oden'adsjat; +_12 dvan'adsjat; +_13 tRen'adsjat; +_14 tSoteRn'adsjat; +_15 pjatn'adsjat; +_16 Si:stn'adsjat; +_17 si:mn'adsjat; +_18 vi:si:mn'adsjat; +_19 devjatn'adsjat; +_2X dv'adsjat; +_3X tR'edsjat; +_4X s'oRok +_5X pjatdesj'at; +_6X Si:stdesj'at; +_7X si:mdesj'at; +_8X vi:si:mdesj'at; +_9X devjan'osto +_1C st'o +_2C dv'i:sti: +_3C tR'esta +_4C tSot'eResta +_5C pjats'ot +_6C Si:sts'ot +_7C si:ms'ot +_8C vi:si:ms'ot +_9C devjats'ot + +// large numbers, short scale +_0C st'o +_0M1 t'esjatSa +_0M2 mi:l;j'on +_0M3 bi:l;j'on +_0M4 tRel;j'on +_0M5 kvadRal;j'on +_0M6 kvi:ntel;j'on +_0M7 sEkstel;j'on +_0M8 sEptel;j'on +_0M9 oktel;j'on +_0M10 nonel;j'on + + +// LETTERS +//******** + +_б bE +_в BE +г hE +ґ gE +д dE +_ж ZE +_з zE +_й jot +к ka +л El^ +м Em +н En +п pE +р ER +с Es +т tE +ф Ef +х xa +ц tsE +ч tSa +ш Sa +щ StSa +ь m|jak'Ij||zn'ak + + +// ABBREVIATIONS +//************** + +зсу $abbrev + + +// MAIN WORD DICTIONARY +//********************* + +// дні +вівторок $2 +середа $2 +четвер $2 +пʼятниця $1 + +// місяці +березень $1 +вересень $1 + +// свята +різдво $2 + +// міста +вінниця $1 +дніпро $2 +запоріжжя $3 +ужгород 'uZhoRod +херсон $2 +чернівці $3 + +// країни +україна $3 +австрія $1 +англія $1 +боснія $1 +герцеговина $4 +греція $1 +грузія $2 +данія $1 +латвія $1 +литва $2 +нідерланди $3 +сербія $1 +франція $1 +чехія $1 +швеція $1 + +//------------- + +або $2 +ага $2 +агов $2 +але $2 +були $2 +було $2 +вʼїзд v|j'i:zd +вона $2 +вони $2 +воно $2 +дякую $1 +їй ji:j +їм ji:m +їх ji:x +його $2 +коли $2 +лише $2 +отож $2 +проте $2 +себе $2 +таких $2 +тепер $2 +тому $2 +хоча $2 +чогось $2 +чому $2 +яка $2 +якби $2 +який $2 +якийсь $2 +яким $2 +яких $2 +які $2 +якось $2 +якщо $2 + +// diff --git a/dictsource/uk_rules b/dictsource/uk_rules index fcbd512d..68ab70cb 100644 --- a/dictsource/uk_rules +++ b/dictsource/uk_rules @@ -1,112 +1,118 @@ -// This file is UTF8 encoded -// Translation rules for Ukrainian - -// Special characters: -// A vowel: а е ё и о у ы э ю я ә ө ұ ү і -// B soft consonant: ь й ч щ -// C any consonant: б в г д ж з й к л м н п р с т ф х ц ч ш щ ъ ь қ ң һ -// F consonant, not hard: б в г д з й к л м н п р с т ф х ч щ ь -// G voiced: б в г д ж з -// H hard consonant: ъ ж ц ш -// Y iotated vowel, softsign: ь ю я ё +// This file is UTF-8 encoded +/// Spelling to phoneme words and exceptions for Ukrainian +// Author: Andrij Mizyk , 2022 .group а - а a + а a .group б - б b + б b .group в - в v + в B .group г - г h + г h // вимовляється як середнє між г та х .group ґ - ґ g + ґ g .group д - д d + д d + дж dZ .group е - е e + е E .group є - є e + є jE .group ж - ж Z + ж Z .group з - з z + з z .group и - и i + и I .group і - і i + і i: .group ї - ї i - + ї ji: .group й - й j + й j .group к - к k + к k .group л - л l + л l + л (і l^ + лє l^E + лю l^u + ля l^a + ль l^ .group м - м m + м m .group н - н n + н n + н (і n^ + нє n^E + ню n^u + ня n^a + нь n^ .group о - о o + о o .group п - п p + п p .group р - р r + р R .group с - с s + с s .group т - т t + т t[ + ть t; .group у - у u + у u .group ф - ф f + ф f .group х - х x + х x .group ц - ц ts + ц ts .group ч - ч tS; + ч tS .group ш - ш S + ш S + ш (в l# // швеція .group щ - щ S; + щ StS .group ь - ь ; + ь ; .group ю - ю ju + ю ju .group я - я ja + я ja +.group ʼ + ʼ | \ No newline at end of file diff --git a/espeak-ng-data/lang/zle/uk b/espeak-ng-data/lang/zle/uk index a9c53661..b318c235 100644 --- a/espeak-ng-data/lang/zle/uk +++ b/espeak-ng-data/lang/zle/uk @@ -1,3 +1,7 @@ name Ukrainian language uk + +maintainer Andrij Mizyk status testing + +speed 80 \ No newline at end of file diff --git a/phsource/ph_ukrainian b/phsource/ph_ukrainian new file mode 100644 index 00000000..2cb0593b --- /dev/null +++ b/phsource/ph_ukrainian @@ -0,0 +1,38 @@ +//==================================================== +// Ukrainian +//==================================================== + +phoneme E + vwl starttype #a endtype #a + length 150 + IF nextPhW(n) THEN + ChangeIfDiminished(@) + ELSE + ChangeIfDiminished(I2) + ENDIF + FMT(vowel/ee) +endphoneme + +phoneme I + vwl starttype #i endtype #i + length 130 + IfNextVowelAppend(;) + FMT(vowel/ii) +endphoneme + +phoneme I2 // **i**ntend. As \[I\], but also indicates an unstressed syllable. + vwl starttype #i endtype #i + unstressed + length 130 + + IF MbrolaSynth THEN + ChangePhoneme(I) + ENDIF + + IfNextVowelAppend(;) + + IF thisPh(isAfterStress) AND thisPh(isFinalVowel) THEN + FMT(vowel/ii#_3) + ENDIF + FMT(vowel/ii_4) +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 0529aa28..bed549e4 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1811,6 +1811,9 @@ include ph_setswana phonemetable tt base1 include ph_tatar +phonemetable uk base1 +include ph_ukrainian + phonemetable vi base1 include ph_vietnam @@ -2019,8 +2022,6 @@ include ph_serbian phonemetable ru-lv ru include ph_russian_lv -phonemetable uk ru - phonemetable az tr include ph_azerbaijani From 3e06153752941618a642be8f6056d17b5b7d5c45 Mon Sep 17 00:00:00 2001 From: Andrij Mizyk Date: Tue, 1 Nov 2022 09:25:43 +0200 Subject: [PATCH 2/3] Fix language-phonemes.test --- tests/language-phonemes.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/language-phonemes.test b/tests/language-phonemes.test index 22e44110..b0d378a2 100755 --- a/tests/language-phonemes.test +++ b/tests/language-phonemes.test @@ -139,7 +139,7 @@ test_phwav tn 206f0e832cc4a5fa19dc3917752e1d5b274047d4 "ma na Na pa ta ka ba da test_phwav tr d825077cd573b9be9a38448bb52403b3117adf50 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" test_phwav tt f9363e26db4fd706e630787462c2b36318debc4b "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" test_phwav ug 09635dcd9f86b27623d462a0f20661143e6d7bfc "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" -test_phwav uk 3b6ea017b9394c750669b4231933f8af15b2be30 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" +test_phwav uk f323718b45f92f5f9006e1cbc0a2bb4ef20be612 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" test_phwav ur e0ce9b04c614df8b34180478f2f87ae58baa95ba "ma na n.a n^a pa t#a t.a tSa ka qa p#a t.#a c#a k#a ba d#a d.a dZa ga b#a d.#a J#a g#a fa sa Sa xa va za Za Qa Ha ra r.a la ja _:_ mI mU me m@ mo mE mV mO ma mi: mu: me: mo: mE: mO: ma: m&: mI~ mi~ mU~ mu~ mU~ me~ mo~ mE~ mV~ mO~ ma~ mAI maU" test_phwav uz 7927f6336d940d7c8aa2d3bf96fce07a0ae9f97c "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" test_phwav vi b1f7d82ac30d12cfd8f4bf6eba8837bc38e6d2be "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" From ec8e33c766ddcdd35d62d33607b037fdf57adbb4 Mon Sep 17 00:00:00 2001 From: Andrij Mizyk Date: Tue, 1 Nov 2022 09:40:52 +0200 Subject: [PATCH 3/3] Update ChangeLog.md --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index fb4f7c84..b8723a1e 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -35,6 +35,7 @@ updated languages: * shn (Shan Tay Yai) -- ronaldaug * tk (Turkmen) -- Andiv06 * tr (Turkish) -- Gurbuzguven, Qchristensen +* uk (Ukrainian) -- Andrij Mizyk * uz (Uzbek) -- Andiv06 new languages: