| @@ -44,6 +44,7 @@ new languages: | |||
| * hak (Hakka Chinese) -- Chen Chien-ting | |||
| * ht (Haitian Creole) -- Valdis Vitolins | |||
| * shn (Shan Tay Yai) -- ronaldaug | |||
| updated languages: | |||
| @@ -370,6 +370,7 @@ phsource/phonemes.stamp: \ | |||
| phsource/ph_s_gaelic \ | |||
| phsource/ph_serbian \ | |||
| phsource/ph_setswana \ | |||
| phsource/ph_shan \ | |||
| phsource/ph_sinhala \ | |||
| phsource/ph_slovak \ | |||
| phsource/ph_slovenian \ | |||
| @@ -520,6 +521,7 @@ dictionaries: \ | |||
| espeak-ng-data/ro_dict \ | |||
| espeak-ng-data/ru_dict \ | |||
| espeak-ng-data/sd_dict \ | |||
| espeak-ng-data/shn_dict \ | |||
| espeak-ng-data/si_dict \ | |||
| espeak-ng-data/sk_dict \ | |||
| espeak-ng-data/sl_dict \ | |||
| @@ -759,6 +761,9 @@ endif | |||
| sd: espeak-ng-data/sd_dict | |||
| espeak-ng-data/sd_dict: dictsource/sd_list dictsource/sd_rules dictsource/sd_extra dictsource/sd_emoji | |||
| shn: espeak-ng-data/shn_dict | |||
| espeak-ng-data/shn_dict: dictsource/shn_list dictsource/shn_rules dictsource/shn_extra | |||
| si: espeak-ng-data/si_dict | |||
| espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji | |||
| @@ -841,7 +846,6 @@ dictsource/zhy_emoji: | |||
| mbrola: \ | |||
| espeak-ng-data/mbrola_ph/af1_phtrans \ | |||
| espeak-ng-data/mbrola_ph/ar1_phtrans \ | |||
| espeak-ng-data/mbrola_ph/ar2_phtrans \ | |||
| espeak-ng-data/mbrola_ph/ca_phtrans \ | |||
| espeak-ng-data/mbrola_ph/cr1_phtrans \ | |||
| espeak-ng-data/mbrola_ph/cs_phtrans \ | |||
| @@ -888,10 +892,6 @@ espeak-ng-data/mbrola_ph/ar1_phtrans: phsource/mbrola/ar1 src/espeak-ng | |||
| mkdir -p espeak-ng-data/mbrola_ph | |||
| ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ar1 | |||
| espeak-ng-data/mbrola_ph/ar2_phtrans: phsource/mbrola/ar2 src/espeak-ng | |||
| mkdir -p espeak-ng-data/mbrola_ph | |||
| ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ar2 | |||
| espeak-ng-data/mbrola_ph/ca_phtrans: phsource/mbrola/ca src/espeak-ng | |||
| mkdir -p espeak-ng-data/mbrola_ph | |||
| ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ca | |||
| @@ -73,6 +73,9 @@ | |||
| // Arabic Moon characters | |||
| .L11 ق ف غ ع ه خ ح ج ي ب م ك و إ أ ء | |||
| // Arabic diacritics | |||
| .L20 ۡ ـ ً ٌ ٍ َ ُ ِ ّ ْ | |||
| .group آ | |||
| آ ?aa | |||
| @@ -132,11 +135,13 @@ | |||
| .group ت | |||
| ت t | |||
| ت (ّ t: | |||
| ت (L20ّ t: | |||
| _) ت (َP1 t | |||
| _) ت (P1 ta //تسأل | |||
| _َ) ت (P2 t | |||
| ت (_S1 at //سألت | |||
| تّ tt | |||
| تّ t: | |||
| .group ث | |||
| ث T | |||
| @@ -153,7 +158,8 @@ | |||
| .group د | |||
| د d | |||
| دّ dd | |||
| د (ّ d: | |||
| د (L20ّ d: | |||
| .group ذ | |||
| ذ D | |||
| @@ -166,11 +172,13 @@ | |||
| .group س | |||
| س s | |||
| سّ ss | |||
| س (ّ s: | |||
| س (L20ّ s: | |||
| .group ش | |||
| ش S | |||
| شّ SS | |||
| ش (ّ S: | |||
| ش (L20ّ S: | |||
| .group ص | |||
| ص s[ | |||
| @@ -220,6 +228,8 @@ | |||
| .group ك | |||
| ك k | |||
| ك (_S1 ka // الضمير المتصل | |||
| ك (ّ k: | |||
| ك (L20ّ k: | |||
| _) كال (L10P3 ka //كالشمس | |||
| _) كَال (L10P4 ka | |||
| _) كَالْ (L10P4 ka | |||
| @@ -240,8 +250,8 @@ | |||
| _) كال (لP3 kal | |||
| _) كال (نP3 kan | |||
| كم (_S2 kum //الضمير المتصل | |||
| كما (_S3 kumaa //الضمير المتصل | |||
| كن (_S2 kunna //الضمير المتصل | |||
| كما (_S3 kuma: //الضمير المتصل | |||
| كن (_S2 kun:a //الضمير المتصل | |||
| .group گ | |||
| گ g | |||
| @@ -252,7 +262,8 @@ | |||
| _بِا) ل (L10 ' // Sun letters | |||
| _فَا) ل (L10 ' // Sun letters | |||
| _كَا) ل (L10 ' // Sun letters | |||
| لّ ll | |||
| ل (ّ l: | |||
| ل (L20ّ l: | |||
| _لِ) ل (L10 ' // Sun letters | |||
| _وَا) ل (L10 ' // Sun letters | |||
| @@ -267,13 +278,13 @@ | |||
| .group ه | |||
| ه h | |||
| ه (_S1 h // الضمير المتصل | |||
| ها (_S2 haa //الضمير المتصل | |||
| ها (_S2 ha: //الضمير المتصل | |||
| هم (_S2 hum //الضمير المتصل | |||
| هما (_S3 humaa //الضمير المتصل | |||
| هن (_S2 hunna //الضمير المتصل | |||
| هما (_S3 huma: //الضمير المتصل | |||
| هن (_S2 hun:a //الضمير المتصل | |||
| .group و | |||
| L03) و uu //واو بعد صامت دون تشكيل | |||
| L03) و u: //واو بعد صامت دون تشكيل | |||
| ا) و w //واو بعد الألف | |||
| و (L01 w //واو بعدها حرف علة | |||
| ْ) و w // واو بعد سكون | |||
| @@ -281,7 +292,7 @@ | |||
| ِ) و w //واو بعد كسرة | |||
| _) و w //واو في أول الكلمة | |||
| وا (_S2 u | |||
| وا (_S2 uu // فعل مع ضمائر الجمع المذكرة درسوا | |||
| وا (_S2 u: // فعل مع ضمائر الجمع المذكرة درسوا | |||
| _) وال (L10P3 wa //والشمس | |||
| _) وَال (L10P4 wa | |||
| _) وَالْ (L10P4 wa | |||
| @@ -302,38 +313,39 @@ | |||
| _) وال (ظP3 waZ | |||
| _) وال (لP3 wal | |||
| _) وال (نP3 wan | |||
| ون (_S2 uuna //جمع مذكر سالم فلاحون | |||
| ون (_S2 u:na //جمع مذكر سالم فلاحون | |||
| .group ي | |||
| L03) ي ii // ياء بعد صامت دون تشكيل | |||
| L03) ي i: // ياء بعد صامت دون تشكيل | |||
| ا) ي j // ياء بعد ألف | |||
| يِ jii | |||
| يِ ji: | |||
| ْ) ي j //ياء بعد سكون | |||
| ُ) ي j //ياء بعد ضمّة | |||
| َ) ي j // ياء بعد فتحة | |||
| _) ي j // ياء في أول الكلمة | |||
| ي (L01 j //يا بعدها حروف علة | |||
| ي (_S1 i | |||
| ي (_S1 ii //ياء النسبة | |||
| يات (_S3 ijjaat //يّة النسبة في جمع المؤنث جزائريات | |||
| ية (_S2 ijjah //يّة النسبة | |||
| ين (_S2 iina //جمع مذكر سالم منصوب أو مجرور | |||
| يون (_S3 ijjuun //kجمع مذكر سالم منسوب جزائريون | |||
| يين (_S3 ijjiin //kجمع مذكر سالم منسوب جزائريين | |||
| يات (_S3 ij:aat //يّة النسبة في جمع المؤنث جزائريات | |||
| ية (_S2 ij:ah //يّة النسبة | |||
| ين (_S2 i:na //جمع مذكر سالم منصوب أو مجرور | |||
| يون (_S3 ij:u:n //kجمع مذكر سالم منسوب جزائريون | |||
| يين (_S3 ij:i:n //kجمع مذكر سالم منسوب جزائريين | |||
| .group ى //ألف مقصورة | |||
| ى a | |||
| L03) ى (_ aa | |||
| L03) ى (_ a: | |||
| .group ء | |||
| ء ? | |||
| ء (ً ?an | |||
| .group ئ | |||
| ئ ? | |||
| ئ j? | |||
| _) ئ ?j | |||
| .group ؤ | |||
| ؤ ? | |||
| ؤ w? | |||
| _) ؤ ?w | |||
| .group ة | |||
| ة t | |||
| @@ -344,10 +356,11 @@ | |||
| ٍ (_S1 in // kasratan at the end of word | |||
| ٌ (_S1 un // dammatan at the end of word | |||
| ُ u // damma | |||
| ُو uu | |||
| َا aa | |||
| َى aa | |||
| ٰ aa // superscript alef | |||
| ُو u: | |||
| َا a: | |||
| ًا (_S2 an | |||
| َى a: | |||
| ٰ a: // superscript alef | |||
| ِ i // kasra | |||
| َ %a // fatha | |||
| @@ -360,6 +373,7 @@ | |||
| ـ // tatweel | |||
| ۡ // small high dotless head of khan | |||
| ْ // sukun | |||
| ّ // shadda | |||
| // non-ascii characters with specified pronunciations | |||
| // List the accented characters in en_list with the $accent attribute | |||
| @@ -250,6 +250,7 @@ kur $u+ | |||
| labad $u | |||
| lai $u+ | |||
| līdz $u+ | |||
| lūk $u+ | |||
| ļoti $u+ | |||
| nav $u+ | |||
| nedz $u $brk | |||
| @@ -270,6 +271,8 @@ pie $u | |||
| pirms $u+ | |||
| pret $u+ | |||
| priekš $u | |||
| projām $u+ | |||
| prom $u+ | |||
| protams $u+ | |||
| sauc $u+ | |||
| starp $u | |||
| @@ -279,6 +282,7 @@ taču $u $pause | |||
| tad $u+ | |||
| tagad $u+ | |||
| tas $u+ | |||
| tātad $u+ $pause | |||
| te $u+ | |||
| tiek $u+ | |||
| tikai $u+ | |||
| @@ -436,6 +440,7 @@ vismaz $2 | |||
| (it sevišķi) it||seviSci $u2+ | |||
| (kaut arī) kaut||aRi: $u2+ | |||
| (kaut cik) kaut||tsik $u2+ | |||
| (kaut gan) kaut||gan $u2+ | |||
| (kaut kad) kaut||kad $u2+ | |||
| (kaut kam) kaut||kam $u2+ | |||
| (kaut kas) kaut||kas $u2+ | |||
| @@ -224,6 +224,7 @@ | |||
| _b) e (z_ e | |||
| _b) e (z+ e | |||
| _C) e (_ e // re, te, ve | |||
| c) e (nL83+ e | |||
| c) e (tur e | |||
| č) e (tr e | |||
| d) ebe (L83 ebe | |||
| @@ -247,6 +248,7 @@ | |||
| e (strāL72 e | |||
| etno etno | |||
| _) e (vL04_+ e // Eva | |||
| e (vol e | |||
| g) e (t e | |||
| gr) e (dz E | |||
| gr) e (z E | |||
| @@ -256,6 +258,7 @@ | |||
| int) ere (L83 eRe | |||
| _j) e (b_ e | |||
| _j) e (l_ e | |||
| kur) e (n e | |||
| _ķ) eme (rL01_ eme // Ķemeri | |||
| _L20) e (sam_+ _!e // esam | |||
| _L20) e (sat_+ _!e // esat | |||
| @@ -275,12 +278,15 @@ | |||
| ņ) e (m e | |||
| orķ) e e | |||
| p) e (rs e | |||
| pr) ece (den etse | |||
| pr) e (cL52z e | |||
| pr) e (L71L05_ e // prece | |||
| pr) e (s e | |||
| _pr) e (t e | |||
| pr) etē (@ ete: | |||
| proc) e (s e | |||
| r) ecep (L88L05_ etsep // recepte | |||
| r) e (dak e | |||
| r) e (dz e | |||
| r) e (pub e | |||
| r) e (put e | |||
| @@ -295,6 +301,7 @@ | |||
| _s) evastopo (lL05_ evastopo: // Sevastopole | |||
| _s) e (v_ e // sev | |||
| _s) e (vi_ e | |||
| sp) e (ķ e | |||
| st) e (nd e | |||
| str) e (s e | |||
| t) e (c+ e | |||
| @@ -303,6 +310,7 @@ | |||
| t) e (km e | |||
| t) ele ele | |||
| _t) e (mp e | |||
| t) ende (n ende | |||
| t) ermo eRmo | |||
| t) e (st e | |||
| _t) e (v_ e // tev | |||
| @@ -376,11 +384,13 @@ | |||
| // specific words ------------------------------------------------------------------- // | |||
| ap) ē (d+ e: | |||
| b) ē (g@ e: | |||
| C) ē (ts_ e: | |||
| cilv) ē (L75 E: | |||
| d) ē (ļ_+ e: | |||
| d) ē (vē e: | |||
| dv) ēse (L77 e:se | |||
| dz) ē (t e: | |||
| dz) ē (rL89 e: | |||
| dz) ē (t e: | |||
| ēcē e:tse: | |||
| ēdē e:de: | |||
| ē (kL04_+ E: // ēka | |||
| @@ -401,6 +411,7 @@ | |||
| m) ē (L77L05+ e: // mēle | |||
| m) ēne (L83 e:ne | |||
| m) ē (rķ e: | |||
| m) ē (rL71 e: | |||
| _m) ē (s_ e: // mēs | |||
| _n) ē (_ e: | |||
| ņ) ē (m++ e: | |||
| @@ -409,6 +420,7 @@ | |||
| _p) ē (c+ e: | |||
| p) ē (dL04_ E: | |||
| _p) ē (rL01_ e: // pērs | |||
| p) ē (rn E: | |||
| p) ēte (r e:te // Pēter.. | |||
| piem) ē (r E: | |||
| sāp) ē (+ e: | |||
| @@ -467,6 +479,8 @@ | |||
| .group k | |||
| k k | |||
| _) kaut (_ k,aut // secondary stress as average between verb and particle | |||
| _) klāt (_ kl,a:t // ... and similarly | |||
| k (ļ k} // tiny pause between k and ļ | |||
| .group ķ | |||
| @@ -497,6 +511,8 @@ | |||
| l) n (C n // but not after (lengthened) l | |||
| L59) n (@ :n | |||
| n (d N | |||
| _) ne (kād n%e | |||
| _) ne (vienādo n'e | |||
| ne (vienl+ n'e // nevienlīdzība | |||
| ne (vienmērīg n'e // nevienmērīgi | |||
| _) ne (vien n%e // stress on 2nd syllable | |||
| @@ -797,7 +813,7 @@ L46L45L45) o (<< uo | |||
| versm) o uo // versmo | |||
| viegl) o (+ uo | |||
| vizm) o uo | |||
| zil) o (L80 uo | |||
| zil) o (L80+ uo | |||
| žēl) o (L65+ uo | |||
| žir) o o | |||
| @@ -811,6 +827,8 @@ L46L45L45) o (<< uo | |||
| g) ob (e ob | |||
| k) ob ob | |||
| l) ob (ē ob | |||
| _l) ob (ij ob | |||
| _l) ob (is ob | |||
| l) oboto (m oboto | |||
| m) ob ob | |||
| _) ob (amL01_ ob // Obama | |||
| @@ -916,6 +934,7 @@ L46L45L45) o (<< uo | |||
| l) oj (L50 oj | |||
| _ob) oj (L04_ oj // oboja | |||
| _) oj (ārL01_ oj // Ojārs | |||
| _pr) oj (ām_ uoj | |||
| pr) oj (L42 oj | |||
| _tr) oj (L04_ oj // Troja | |||
| z) oj (L01_+ oj // ..zojs | |||
| @@ -1089,6 +1108,7 @@ L46L45L45) o (<< uo | |||
| b) om (zL02_ om // bomzis | |||
| br) om om | |||
| c) om (_ om | |||
| _č) om (L01_ om | |||
| d) om (in om | |||
| d) om (nL04_ om // domna | |||
| dr) om (L01_ o:m // ..droms | |||
| @@ -1151,6 +1171,7 @@ L46L45L45) o (<< uo | |||
| b) on (ē on | |||
| b) on (us on | |||
| br) on on | |||
| cens) on uon | |||
| daig) on uon | |||
| dail) on uon | |||
| dalt) on o:n | |||
| @@ -1209,7 +1230,7 @@ L46L45L45) o (<< uo | |||
| on (ijL04_ o:n | |||
| on (ist o:n | |||
| on (ko oN | |||
| _) on (kuL77L02_ oN // onkulis | |||
| on (kuL77 oN | |||
| on (L01_+ o:n // ..ons | |||
| on (l oN | |||
| onn onnn | |||
| @@ -1250,9 +1271,8 @@ L46L45L45) o (<< uo | |||
| z) oo oo: | |||
| .group op | |||
| L41Jsk) op (L01_ o:p // ...skops | |||
| ad) op op | |||
| att) op uop | |||
| cikl) op (L01_ o:p // ciklops | |||
| d) op op | |||
| eir) op (L04_ o:p | |||
| @@ -1267,13 +1287,14 @@ L46L45L45) o (<< uo | |||
| k) op (ē_ op // ..kopē | |||
| k) op (ij op // ..kopij.. | |||
| k) op (j uop // ..kopj.. | |||
| k) op (L65+ uop // ..kuop.. | |||
| k) op (L04_+ uop // ..kopa | |||
| k) op (L65+ uop // ..kuop.. | |||
| k) opo uopuo | |||
| k) op (pr uop // ..koppr.. | |||
| k) op (ulā op | |||
| k) op (ulē op | |||
| kr) op (ļo uop | |||
| L41Jsk) op (L01_ o:p // ...skops | |||
| l) op (L01_+ uop | |||
| m) op op | |||
| net) op (_ uop | |||
| @@ -1296,6 +1317,7 @@ L46L45L45) o (<< uo | |||
| _p) op (L05_ uop // Pope | |||
| p) op op | |||
| pr) op op | |||
| sast) op uop | |||
| sk) op (ijL04_ o:p // ..skopija | |||
| sk) op (is o:p | |||
| sk) op (L01_ o:p // ..skops | |||
| @@ -1303,7 +1325,6 @@ L46L45L45) o (<< uo | |||
| s) op (r op | |||
| st) opo (s_ uopuo // ..stopos | |||
| _str) op (L01_ uop // strops | |||
| _t) op uo`p // top with short uo because of ambiguity | |||
| _t) op (āzL01_ op // topāzs | |||
| _t) op (b op // topbura | |||
| _t) op (inam op // topinambūrs | |||
| @@ -1314,6 +1335,7 @@ L46L45L45) o (<< uo | |||
| _t) opol opol | |||
| _t) opon opon | |||
| t) opot uopuot | |||
| _t) op uo`p // top with short uo because of ambiguity | |||
| tr) op o:p | |||
| ut) op (i o:p | |||
| @@ -1551,6 +1573,7 @@ L46L45L45) o (<< uo | |||
| n) ov (āci ov | |||
| n) ov (elL05_ ov // novele | |||
| _n) ov (emb ov // novembris | |||
| n) ov (ēr uov | |||
| n) ov (it ov | |||
| n) ov (L04_ ov // nova | |||
| n) ov (o ov | |||
| @@ -1558,8 +1581,8 @@ L46L45L45) o (<< uo | |||
| _pl) ov (L01_ ov // plovs | |||
| pr) ov (an ov | |||
| pr) ov (in ov | |||
| pr) ov (L52z ov | |||
| pr) ov (L05_ uov // prove | |||
| pr) ov (L52z ov | |||
| pr) ovo ovo | |||
| r) ov ov | |||
| sl) ov ov | |||
| @@ -1685,6 +1708,7 @@ L46L45L45) o (<< uo | |||
| y y // y is used instead of simple "i", to distinguish them in writing | |||
| y (A y_| | |||
| y (_ y: // for international words | |||
| y (outub y | |||
| .group z | |||
| z z | |||
| @@ -0,0 +1,24 @@ | |||
| // numbers | |||
| _0 son // သူၼ် | |||
| _1 nEN3 // ၼိုင်ႈ | |||
| _2 sON // သွင် | |||
| _3 sa:m // သၢမ် | |||
| _4 si:2 // သီႇ | |||
| _5 ha:3 // ႁႃႈ | |||
| _6 hok4 // ႁူၵ်း | |||
| _7 tS;et4 // ၸဵတ်း | |||
| _8 pEt2 // ပႅတ်ႇ | |||
| _9 kaw3 // ၵဝ်ႈ | |||
| _1X sip4|| // သိပ်း | |||
| _11 sip4||?et4 // သိပ်းဢဵတ်း | |||
| _2X sa:w4|| // သၢဝ်း | |||
| _21 sa:w4||?et4 // သၢဝ်းဢဵတ်း | |||
| _3X sa:m||sip4|| // သၢမ်သိပ်း | |||
| _4X si:2||sip4|| // သီႇသိပ်း | |||
| _5X ha:3||sip4|| // ႁႃႈသိပ်း | |||
| _6X hok4||sip4|| // ႁူၵ်းသိပ်း | |||
| _7X tS;et4||sip4|| // ၸဵတ်းသိပ်း | |||
| _8X pEt2||sip4|| // ပႅတ်ႇသိပ်း | |||
| _9X kaw3||sip4|| // ၵဝ်ႈသိပ်း | |||
| @@ -0,0 +1,177 @@ | |||
| // Shan (Tai Yay) pronunciation rules (Burmese script) | |||
| .group င // U+1004 | |||
| င N | |||
| .group တ // U+1010 | |||
| တ t | |||
| .group ထ // U+1011 | |||
| ထ t_h | |||
| .group ပ // U+1015 | |||
| ပ p | |||
| .group မ // U+1019 | |||
| မ m | |||
| .group ယ // U+101A | |||
| ယ j | |||
| .group ရ // U+101B | |||
| ရ R | |||
| .group လ // U+101C | |||
| လ l | |||
| .group ဝ // U+101D | |||
| ဝ w | |||
| .group သ // U+101E | |||
| သ s | |||
| .group ဢ // U+1022 | |||
| ဢ ? | |||
| .group ၵ // U+1075 | |||
| ၵ k | |||
| .group ၶ // U+1076 | |||
| ၶ k_h | |||
| .group ၷ // U+1077: rare, used for sounds in other languages | |||
| ၷ g | |||
| .group ၸ // U+1078 | |||
| ၸ tS; | |||
| .group ၹ // U+1079: rare, used for sounds in other languages | |||
| ၹ z | |||
| .group ၺ // U+107A | |||
| ၺ J | |||
| .group ၻ // U+107B: rare, used for sounds in other languages | |||
| ၻ d | |||
| .group ၼ // U+107C | |||
| ၼ n | |||
| .group ၽ // U+107D | |||
| ၽ p_h | |||
| .group ၾ // U+107E | |||
| _) ၾ p_h // Except for Eastern dialects, which use 'f'. | |||
| ၾ f | |||
| .group ႀ // U+107F: rare, used for sounds in other languages | |||
| ႀ T | |||
| .group ၿ // U+1080: rare, used for sounds in other languages | |||
| ၿ b | |||
| .group ႁ // U+1081 | |||
| ႁ h | |||
| // Vowels in groups | |||
| // All vowels below are suffixs | |||
| .group ႃ | |||
| ႃ a | |||
| ေ)ႃ O | |||
| .group ီ | |||
| ီ i | |||
| .group ိ | |||
| ိ i | |||
| .group ဵ | |||
| ဵ e | |||
| .group ႅ | |||
| _) ႅ (_ E | |||
| .group ူ | |||
| ူ u | |||
| .group ု | |||
| ု u | |||
| .group ေ | |||
| ေ ei // default rule without other characters | |||
| _) ေႃ O // in group with other characters if necessary | |||
| .group ႄ | |||
| ႄ E | |||
| .group ႆ | |||
| ႆ ai | |||
| .group ၢ | |||
| _) ၢ a: | |||
| .group ၢႆ // U+1062 | |||
| _) ၢႆ a:i | |||
| .group ွႆ | |||
| _) ွႆ oi | |||
| .group ႂၢႆ | |||
| _) ႂၢႆ Oi | |||
| .group ြ | |||
| ြ ra | |||
| .group ျ | |||
| _) ျ ja | |||
| .group ဝ် | |||
| _)ဝ် w | |||
| .group ႂ် | |||
| _) ႂ် @i | |||
| .group ၺ် | |||
| _)ၺ် Wi | |||
| .group မ် | |||
| _)မ် m | |||
| .group ၼ် | |||
| _)ၼ် n | |||
| .group င် | |||
| _)င် g // ipa = ɳ ( temporary word ) | |||
| // very short sounds | |||
| .group ပ် | |||
| _) ပ် p | |||
| .group တ် | |||
| _) တ် t | |||
| .group ၵ် | |||
| _) ၵ် k // temporary word | |||
| @@ -56,8 +56,8 @@ The utility 'phonemes' are: | |||
| | `=` | put the primary stress on the preceding syllable | | |||
| | `_:` | short pause | | |||
| | `_` | a shorter pause | | |||
| | <code>|</code> | indicates a word boundary within a phoneme string | | |||
| | <code>||</code> | can be used to separate two adjacent characters, to prevent them from being considered as a multi-character phoneme mnemonic | | |||
| | <code>|</code> | use to separate two adjacent characters, to prevent them from being considered as a single multi-character phoneme | | |||
| | <code>||</code> | indicates a word boundary within a phonetic string | | |||
| It is not necessary to specify the stress of every syllable. Stress | |||
| markers are only needed in order to change the effect of the language's | |||
| @@ -509,11 +509,11 @@ each language. The number fragments are given in the `*_list` file. | |||
| ## Character Substitution | |||
| Character substitutions can be specified by using a `.replace` section | |||
| at the start of the `*_rules` file. Each line specified either one or | |||
| two alphabetic characters to be replaced by another one or two | |||
| alphabetic characters. This substitution is done to a word before word is searched | |||
| at the start of the `*_rules` file. In each line one character can be | |||
| replaced by one or two characters. (Source and target of replacement can consume | |||
| up to four bytes.) This substitution is done to a word _before_ word is searched | |||
| in `*_list` or `*_listx` file and translated using the spelling-to-phoneme rules. | |||
| Only the lower-case version of the characters needs to be specified. e.g. | |||
| Only the lower-case version of the characters needs to be specified. e.g.: | |||
| .replace | |||
| ô ő // (Hungarian) allow the use of o-circumflex instead of o-double-accute | |||
| @@ -0,0 +1,4 @@ | |||
| name Shan (Tai Yai) | |||
| language shn | |||
| maintainer ronaldaug <[email protected]> | |||
| status testing | |||
| @@ -3,4 +3,4 @@ language ar 2 | |||
| gender male | |||
| pitch 82 117 | |||
| mbrola ar2 ar2_phtrans | |||
| mbrola ar2 ar1_phtrans | |||
| @@ -1,77 +1,75 @@ | |||
| volume 50 | |||
| 0 B b 20 b b | |||
| 0 b NULL 0 b | |||
| 0 t NULL 0 t | |||
| 0 T NULL 0 T | |||
| 0 dZ NULL 0 Z | |||
| 1 H a 40 X a | |||
| 1 H u 40 X u | |||
| 1 H i 40 X i | |||
| 0 H NULL 0 X | |||
| 0 X NULL 0 x | |||
| 0 d d 20 d d | |||
| 0 d NULL 0 d | |||
| 0 D NULL 0 D | |||
| 0 r/ NULL 0 r | |||
| 0 r NULL 0 r | |||
| 0 z NULL 0 z | |||
| 0 s NULL 0 s | |||
| 0 S NULL 0 S | |||
| 1 s[ a 40 s. a. | |||
| 1 s[ u 40 s. u. | |||
| 1 s[ i 40 s. i. | |||
| 0 s[ NULL 0 s. | |||
| 1 dH dH 40 d. d. | |||
| 1 dH a 40 d. a. | |||
| 1 dH i 40 d. i. | |||
| 1 dH u 40 d. u. | |||
| 0 dH NULL 0 d. | |||
| 0 t[ a 90 t. a. | |||
| 0 t[ u 90 t. u. | |||
| 0 t[ i 90 t. i. | |||
| 0 t[ NULL 0 t. | |||
| 1 Z a 20 z. a. | |||
| 1 Z u 20 z. u. | |||
| 1 Z i 20 z. i. | |||
| 0 Z NULL 0 z. | |||
| 0 A NULL 0 H | |||
| 0 gH NULL 0 G | |||
| 0 f NULL 0 f | |||
| 0 q NULL 0 q | |||
| 0 k NULL 0 k | |||
| 0 l/ NULL 0 l | |||
| 0 l NULL 0 l | |||
| 0 m m 100 n m | |||
| 0 m NULL 0 m | |||
| 0 n NULL 0 n | |||
| 0 h NULL 0 h | |||
| 0 w NULL 0 w | |||
| 0 j NULL 0 j | |||
| 0 ? NULL 0 ? | |||
| 0 p NULL 0 NULL | |||
| 0 g NULL 0 NULL | |||
| 0 a a 150 a a | |||
| 0 u u 150 u u | |||
| 0 i i 150 i i | |||
| 0 a NULL 0 a | |||
| 0 u NULL 0 u | |||
| 0 i NULL 0 i | |||
| 0 b b 20 b b | |||
| 0 b NULL 0 b | |||
| 0 t : 50 t t | |||
| 0 t NULL 0 t | |||
| 0 T NULL 0 T | |||
| 0 dZ NULL 0 Z | |||
| 1 H a 40 X a | |||
| 1 H u 40 X u | |||
| 1 H i 40 X i | |||
| 0 H NULL 0 X | |||
| 0 X NULL 0 x | |||
| 0 d : 50 d d | |||
| 0 d NULL 0 d | |||
| 0 D NULL 0 D | |||
| 0 r/ NULL 0 r | |||
| 0 r NULL 0 r | |||
| 0 z NULL 0 z | |||
| 0 s : 50 s s | |||
| 0 s NULL 0 s | |||
| 0 S : 50 S S | |||
| 0 S NULL 0 S | |||
| 1 s[ a 40 s. a. | |||
| 1 s[ u 40 s. u. | |||
| 1 s[ i 40 s. i. | |||
| 0 s[ NULL 0 s. | |||
| 1 dH dH 40 d. d. | |||
| 1 dH a 40 d. a. | |||
| 1 dH i 40 d. i. | |||
| 1 dH u 40 d. u. | |||
| 0 dH NULL 0 d. | |||
| 0 t[ a 90 t. a. | |||
| 0 t[ u 90 t. u. | |||
| 0 t[ i 90 t. i. | |||
| 0 t[ NULL 0 t. | |||
| 1 Z a 20 z. a. | |||
| 1 Z u 20 z. u. | |||
| 1 Z i 20 z. i. | |||
| 0 Z NULL 0 z. | |||
| 0 A NULL 0 H | |||
| 0 gH NULL 0 G | |||
| 0 f NULL 0 f | |||
| 0 q NULL 0 q | |||
| 0 k NULL 0 k | |||
| 0 l/ NULL 0 l | |||
| 0 l NULL 0 l | |||
| 0 m m 100 n m | |||
| 0 m NULL 0 m | |||
| 0 n NULL 0 n | |||
| 0 h NULL 0 h | |||
| 0 w NULL 0 w | |||
| 0 j : 50 j j | |||
| 0 j NULL 0 j | |||
| 0 ? NULL 0 ? | |||
| 0 p NULL 0 NULL | |||
| 0 g NULL 0 NULL | |||
| 0 a : 50 a a | |||
| 0 a NULL 0 a | |||
| 0 u : 50 u u | |||
| 0 u NULL 0 u | |||
| 0 i : 50 i i | |||
| 0 i NULL 0 i | |||
| @@ -1,74 +0,0 @@ | |||
| volume 50 | |||
| 0 b b 20 b b | |||
| 0 b NULL 0 b | |||
| 0 t NULL 0 t | |||
| 0 T NULL 0 T | |||
| 0 dZ NULL 0 Z | |||
| 1 H a 40 X a | |||
| 1 H u 40 X u | |||
| 1 H i 40 X i | |||
| 0 H NULL 0 X | |||
| 0 X NULL 0 x | |||
| 0 d NULL 0 d | |||
| 0 D NULL 0 D | |||
| 0 r/ NULL 0 r | |||
| 0 r NULL 0 r | |||
| 0 z NULL 0 z | |||
| 0 s NULL 0 s | |||
| 0 S NULL 0 S | |||
| 1 s[ a 40 s. a. | |||
| 1 s[ u 40 s. u. | |||
| 1 s[ i 40 s. i. | |||
| 0 s[ NULL 0 s. | |||
| 0 dH dH 30 d. d. | |||
| 1 dH a 40 d. a. | |||
| 1 dH i 40 d. i. | |||
| 1 dH u 40 d. u. | |||
| 0 dH NULL 0 d. | |||
| 0 t[ a 90 t. a. | |||
| 0 t[ u 90 t. u. | |||
| 0 t[ i 90 t. i. | |||
| 0 t[ NULL 0 t. | |||
| 1 Z a 20 z. a. | |||
| 1 Z u 20 z. u. | |||
| 1 Z i 20 z. i. | |||
| 0 Z NULL 0 z. | |||
| 0 A NULL 0 H | |||
| 0 gH NULL 0 G | |||
| 0 f NULL 0 f | |||
| 0 q NULL 0 q | |||
| 0 k NULL 0 k | |||
| 0 l/ NULL 0 l | |||
| 0 l NULL 0 l | |||
| 0 m m 100 n m | |||
| 0 m NULL 0 m | |||
| 0 n NULL 0 n | |||
| 0 h NULL 0 h | |||
| 0 w NULL 0 w | |||
| 0 j NULL 0 j | |||
| 0 ? NULL 0 ? | |||
| 0 p NULL 0 NULL | |||
| 0 g NULL 0 NULL | |||
| 0 a a 150 a a | |||
| 0 u u 150 u u | |||
| 0 i i 150 i i | |||
| 0 a NULL 0 a | |||
| 0 u NULL 0 u | |||
| 0 i NULL 0 i | |||
| @@ -0,0 +1,295 @@ | |||
| //******************************************************************* | |||
| // TONES | |||
| //******************************************************************* | |||
| phoneme 1 // rising tone (contour: 24) | |||
| stress | |||
| Tone(20, 40, envelope/p_rise, NULL) | |||
| endphoneme | |||
| phoneme 2 // low tone (contour: 11) | |||
| stress | |||
| Tone(10, 10, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| phoneme 3 // mid(-falling) tone (contour: 32) | |||
| stress | |||
| Tone(30, 20, envelope/p_fall, NULL) | |||
| endphoneme | |||
| phoneme 4 // high tone (contour: 55) | |||
| stress | |||
| Tone(50, 50, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| phoneme 5 // falling (creaky) tone (contour: 42) | |||
| stress | |||
| Tone(40, 20, envelope/p_fall, NULL) | |||
| endphoneme | |||
| phoneme 6 // emphatic (contour: 343) | |||
| stress | |||
| Tone(30, 40, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // CONSONANTS (PLOSIVES/STOPS) | |||
| //******************************************************************* | |||
| phoneme p // unaspirated | |||
| vls blb stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/p_) | |||
| ENDIF | |||
| WAV(ustop/p_unasp) | |||
| endphoneme | |||
| phoneme p_h // aspirated | |||
| vls blb stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | |||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | |||
| WAV(ustop/p_asp) | |||
| endphoneme | |||
| phoneme t // unaspirated | |||
| vls alv stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/t_) | |||
| ENDIF | |||
| WAV(ustop/t_unasp) | |||
| endphoneme | |||
| phoneme t_h // aspirated | |||
| vls alv stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| WAV(ustop/t) // TODO: This should be aspirated. | |||
| endphoneme | |||
| phoneme k // unaspirated | |||
| vls vel stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=2300 200 300 f3=-200 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 | |||
| IF KlattSynth THEN | |||
| Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 | |||
| ENDIF | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/k_) | |||
| ENDIF | |||
| WAV(ustop/k_unasp) | |||
| endphoneme | |||
| phoneme k_h | |||
| vls vel stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=2300 200 300 f3=-150 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||
| WAV(ustop/k_asp) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // VOWELS | |||
| //******************************************************************* | |||
| phoneme i | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| phoneme i. | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| ipa ɨ | |||
| FMT(vowel/i#_6) | |||
| endphoneme | |||
| phoneme W | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| ipa ɯ | |||
| FMT(vowel/8_2) | |||
| endphoneme | |||
| phoneme u | |||
| vwl starttype #u endtype #u | |||
| length 200 | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme e | |||
| vwl starttype #e endtype #e | |||
| length 200 | |||
| FMT(vowel/e_2) | |||
| endphoneme | |||
| phoneme @ | |||
| vwl starttype #@ endtype #@ | |||
| length 200 | |||
| ipa ə | |||
| FMT(vowel/3_2) | |||
| endphoneme | |||
| phoneme o | |||
| vwl starttype #o endtype #o | |||
| length 220 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme E | |||
| vwl starttype #e endtype #e | |||
| length 200 | |||
| ipa ɛ | |||
| FMT(vowel/ee_2) | |||
| endphoneme | |||
| phoneme a | |||
| vwl starttype #a endtype #a | |||
| length 200 | |||
| FMT(vowel/a) | |||
| endphoneme | |||
| phoneme a: | |||
| vwl starttype #a endtype #a | |||
| length 250 | |||
| ipa aː | |||
| FMT(vowel/a) | |||
| endphoneme | |||
| phoneme O | |||
| vwl starttype #o endtype #o | |||
| length 260 | |||
| ipa ɔ | |||
| FMT(vwl_it/o_open) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // DIPHTHONGS | |||
| //******************************************************************* | |||
| phoneme iu | |||
| vwl starttype #i endtype #u | |||
| length 200 | |||
| FMT(vdiph2/iu) | |||
| endphoneme | |||
| phoneme eu | |||
| vwl starttype #e endtype #u | |||
| length 200 | |||
| FMT(vdiph/eu) | |||
| endphoneme | |||
| phoneme Eu | |||
| vwl starttype #e endtype #u | |||
| length 200 | |||
| ipa ɛu | |||
| FMT(vdiph/eeu) | |||
| endphoneme | |||
| phoneme au | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| FMT(vdiph/au_2) | |||
| endphoneme | |||
| phoneme a:u | |||
| vwl starttype #a endtype #u | |||
| length 250 | |||
| ipa aːu | |||
| FMT(vdiph/au_2) | |||
| endphoneme | |||
| phoneme Wi | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| ipa ɯi | |||
| FMT(vdiph/ui_3) | |||
| endphoneme | |||
| phoneme ui | |||
| vwl starttype #u endtype #i | |||
| length 200 | |||
| FMT(vdiph/ui) | |||
| endphoneme | |||
| phoneme @i | |||
| vwl starttype #@ endtype #i | |||
| length 200 | |||
| ipa əi // ႂ် | |||
| FMT(vdiph/@i) | |||
| endphoneme | |||
| phoneme oi | |||
| vwl starttype #o endtype #i | |||
| length 200 | |||
| FMT(vdiph/ooi) | |||
| endphoneme | |||
| phoneme ai | |||
| vwl starttype #a endtype #i | |||
| length 200 | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| phoneme a:i | |||
| vwl starttype #a endtype #i | |||
| length 250 | |||
| ipa aːi | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| phoneme Oi | |||
| vwl starttype #o endtype #i | |||
| length 200 | |||
| ipa ɔi | |||
| FMT(vdiph/ooi_3) | |||
| endphoneme | |||
| phoneme aW | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| ipa aɯ | |||
| FMT(vdiph/aau_4) | |||
| endphoneme | |||
| @@ -1990,3 +1990,6 @@ include ph_kyrgyz | |||
| phonemetable mi base1 | |||
| include ph_maori | |||
| phonemetable shn base1 | |||
| include ph_shan | |||
| @@ -1512,6 +1512,11 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS; | |||
| break; | |||
| case L3('s', 'h', 'n'): | |||
| tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.numbers = 1; | |||
| break; | |||
| case L3('c', 'm', 'n'): // no break, just go to 'zh' case | |||
| case L3('z', 'h', 'y'): // just go to 'zh' case | |||
| case L('z','h'): | |||
| @@ -382,7 +382,7 @@ int utf8_in(int *c, const char *buf) | |||
| /* Read a unicode characater from a UTF8 string | |||
| * Returns the number of UTF8 bytes used. | |||
| * buf: position of buffer is moved, if character is read | |||
| * c: holds integer representation of multibyte character by | |||
| * c: holds UTF-16 representation of multibyte character by | |||
| * skipping UTF-8 header bits of bytes in following way: | |||
| * 2-byte character "ā": | |||
| * hex binary | |||
| @@ -395,7 +395,7 @@ int utf8_in(int *c, const char *buf) | |||
| * 1010 011001 000101 | |||
| * | + +--.\ \ | | | |||
| * V `--. \`. `.| | | |||
| * A645 0001001101000101 | |||
| * A645 1010011001000101 | |||
| * 4-byte character "𠜎": | |||
| * f0a09c8e 11110000101000001001110010001110 | |||
| * V 000 100000 011100 001110 | |||
| @@ -407,7 +407,7 @@ int utf8_in(int *c, const char *buf) | |||
| int utf8_out(unsigned int c, char *buf) | |||
| { | |||
| // write a unicode character into a buffer as utf8 | |||
| // write a UTF-16 character into a buffer as UTF-8 | |||
| // returns the number of bytes written | |||
| int n_bytes; | |||
| @@ -1788,6 +1788,7 @@ static int EmbeddedCommand(unsigned int *source_index_out) | |||
| return 1; | |||
| } | |||
| // handle .replace rule in xx_rules file | |||
| static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, int *insert, int *wordflags) | |||
| { | |||
| int ix; | |||
| @@ -1845,6 +1846,19 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| new_c = ucd_toupper(new_c); | |||
| *wordflags |= FLAG_CHAR_REPLACED; | |||
| if (option_phonemes & espeakPHONEMES_TRACE) { | |||
| char msg[21] = {'R','e','p','l','a','c','e',':',' '}; | |||
| char *index = &msg; | |||
| index +=9; | |||
| index += utf8_out(c, index); | |||
| *index++ = ' '; | |||
| *index++ = '>'; | |||
| *index++ = ' '; | |||
| index += utf8_out(new_c, index); | |||
| index += utf8_out(c2, index); | |||
| *index = 0; | |||
| fprintf(f_trans, "%s\n", msg); | |||
| } | |||
| return new_c; | |||
| } | |||
| @@ -1914,6 +1928,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| } | |||
| break; | |||
| } | |||
| // handle .replace rule in xx_rules file | |||
| return SubstituteChar(tr, c, next_in, insert, wordflags); | |||
| } | |||
| @@ -2188,8 +2203,8 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change) | |||
| c = ' '; | |||
| word_flags |= FLAG_COMMA_AFTER; | |||
| } | |||
| c = TranslateChar(tr, &source[source_index], prev_in, c, next_in, &char_inserted, &word_flags); // optional language specific function | |||
| // language specific character translations | |||
| c = TranslateChar(tr, &source[source_index], prev_in, c, next_in, &char_inserted, &word_flags); | |||
| if (c == 8) | |||
| continue; // ignore this character | |||
| @@ -98,3 +98,4 @@ test_lang lt 615e503b996ea5f7b267ebd77b91e77c5b874e18 "ma m;a na n;a pa p;a ta t | |||
| test_lang lv ebd5378940b27e39ac35cda90e027ee0fa625fde "ma na n^a Na pa ba ta da ca Ja ka ga tsa dza Dz\`a tSa dZa DZ\`a fa va sa za Sa Za xa ha ja la l^a Ra ra _:_ mi my mu mE me mo ma mi: my: mu: mE: me: mo: ma: mai mau mei mie miu mui muo muo\` moi" | |||
| test_lang mi b6e622de46c33181cdfea351b907f932da9a0a1a "ma na Na pa ta ka fa ha ra wa _:_ ma ma: me me: mi mi: mo mo: mu mu:" | |||
| test_lang mk 072d0a74acf54bea528e7dde427eb04808d38364 "ma na n^a Na pa ta xa k^a ka ba da Ja ga tsa tSa tS;a dza dZa dZ;a fa sa Sa xa va za Za l^a la ja Ra @-*a ra _:_ ma me mi mo mu mA mE ma: me: mi: mo: mu: moU" | |||
| test_lang shn e568aca66c2f58fdaf5dda8a67f4d21f05710234 "ma na Ja Na pa p_ha ba ta t_ha da ka k_ha ga ?a fa sa za Ta ha tS;a Ra ja wa la _:_ mi mI mW mu me m@ mo mE ma ma: mO miu meu mEu mau ma:u mWi mui m@i moi mai ma:i mOi maW _:_ ma1 ma2 ma3 ma4 ma5 ma6" | |||