Browse Source

Merge remote-tracking branch 'valdisvi/master'

master
Reece H. Dunn 7 years ago
parent
commit
2aa7c5a1de

+ 1
- 0
CHANGELOG.md View File



* hak (Hakka Chinese) -- Chen Chien-ting * hak (Hakka Chinese) -- Chen Chien-ting
* ht (Haitian Creole) -- Valdis Vitolins * ht (Haitian Creole) -- Valdis Vitolins
* shn (Shan Tay Yai) -- ronaldaug


updated languages: updated languages:



+ 5
- 5
Makefile.am View File

phsource/ph_s_gaelic \ phsource/ph_s_gaelic \
phsource/ph_serbian \ phsource/ph_serbian \
phsource/ph_setswana \ phsource/ph_setswana \
phsource/ph_shan \
phsource/ph_sinhala \ phsource/ph_sinhala \
phsource/ph_slovak \ phsource/ph_slovak \
phsource/ph_slovenian \ phsource/ph_slovenian \
espeak-ng-data/ro_dict \ espeak-ng-data/ro_dict \
espeak-ng-data/ru_dict \ espeak-ng-data/ru_dict \
espeak-ng-data/sd_dict \ espeak-ng-data/sd_dict \
espeak-ng-data/shn_dict \
espeak-ng-data/si_dict \ espeak-ng-data/si_dict \
espeak-ng-data/sk_dict \ espeak-ng-data/sk_dict \
espeak-ng-data/sl_dict \ espeak-ng-data/sl_dict \
sd: espeak-ng-data/sd_dict sd: espeak-ng-data/sd_dict
espeak-ng-data/sd_dict: dictsource/sd_list dictsource/sd_rules dictsource/sd_extra dictsource/sd_emoji 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 si: espeak-ng-data/si_dict
espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji


mbrola: \ mbrola: \
espeak-ng-data/mbrola_ph/af1_phtrans \ espeak-ng-data/mbrola_ph/af1_phtrans \
espeak-ng-data/mbrola_ph/ar1_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/ca_phtrans \
espeak-ng-data/mbrola_ph/cr1_phtrans \ espeak-ng-data/mbrola_ph/cr1_phtrans \
espeak-ng-data/mbrola_ph/cs_phtrans \ espeak-ng-data/mbrola_ph/cs_phtrans \
mkdir -p espeak-ng-data/mbrola_ph mkdir -p espeak-ng-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ar1 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 espeak-ng-data/mbrola_ph/ca_phtrans: phsource/mbrola/ca src/espeak-ng
mkdir -p espeak-ng-data/mbrola_ph mkdir -p espeak-ng-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ca ESPEAK_DATA_PATH=$(PWD) src/espeak-ng --compile-mbrola=phsource/mbrola/ca

+ 42
- 28
dictsource/ar_rules View File

// Arabic Moon characters // Arabic Moon characters
.L11 ق ف غ ع ه خ ح ج ي ب م ك و إ أ ء .L11 ق ف غ ع ه خ ح ج ي ب م ك و إ أ ء


// Arabic diacritics
.L20 ۡ ـ ً ٌ ٍ َ ُ ِ ّ ْ

.group آ .group آ
آ ?aa آ ?aa




.group ت .group ت
ت t ت t
ت (ّ t:
ت (L20ّ t:
_) ت (َP1 t _) ت (َP1 t
_) ت (P1 ta //تسأل _) ت (P1 ta //تسأل
_َ) ت (P2 t _َ) ت (P2 t
ت (_S1 at //سألت ت (_S1 at //سألت
تّ tt
تّ t:


.group ث .group ث
ث T ث T


.group د .group د
د d د d
دّ dd
د (ّ d:
د (L20ّ d:


.group ذ .group ذ
ذ D ذ D


.group س .group س
س s س s
سّ ss
س (ّ s:
س (L20ّ s:


.group ش .group ش
ش S ش S
شّ SS
ش (ّ S:
ش (L20ّ S:


.group ص .group ص
ص s[ ص s[
.group ك .group ك
ك k ك k
ك (_S1 ka // الضمير المتصل ك (_S1 ka // الضمير المتصل
ك (ّ k:
ك (L20ّ k:
_) كال (L10P3 ka //كالشمس _) كال (L10P3 ka //كالشمس
_) كَال (L10P4 ka _) كَال (L10P4 ka
_) كَالْ (L10P4 ka _) كَالْ (L10P4 ka
_) كال (لP3 kal _) كال (لP3 kal
_) كال (نP3 kan _) كال (نP3 kan
كم (_S2 kum //الضمير المتصل كم (_S2 kum //الضمير المتصل
كما (_S3 kumaa //الضمير المتصل
كن (_S2 kunna //الضمير المتصل
كما (_S3 kuma: //الضمير المتصل
كن (_S2 kun:a //الضمير المتصل


.group گ .group گ
گ g گ g
_بِا) ل (L10 ' // Sun letters _بِا) ل (L10 ' // Sun letters
_فَا) ل (L10 ' // Sun letters _فَا) ل (L10 ' // Sun letters
_كَا) ل (L10 ' // Sun letters _كَا) ل (L10 ' // Sun letters
لّ ll
ل (ّ l:
ل (L20ّ l:
_لِ) ل (L10 ' // Sun letters _لِ) ل (L10 ' // Sun letters
_وَا) ل (L10 ' // Sun letters _وَا) ل (L10 ' // Sun letters


.group ه .group ه
ه h ه h
ه (_S1 h // الضمير المتصل ه (_S1 h // الضمير المتصل
ها (_S2 haa //الضمير المتصل
ها (_S2 ha: //الضمير المتصل
هم (_S2 hum //الضمير المتصل هم (_S2 hum //الضمير المتصل
هما (_S3 humaa //الضمير المتصل
هن (_S2 hunna //الضمير المتصل
هما (_S3 huma: //الضمير المتصل
هن (_S2 hun:a //الضمير المتصل


.group و .group و
L03) و uu //واو بعد صامت دون تشكيل
L03) و u: //واو بعد صامت دون تشكيل
ا) و w //واو بعد الألف ا) و w //واو بعد الألف
و (L01 w //واو بعدها حرف علة و (L01 w //واو بعدها حرف علة
ْ) و w // واو بعد سكون ْ) و w // واو بعد سكون
ِ) و w //واو بعد كسرة ِ) و w //واو بعد كسرة
_) و w //واو في أول الكلمة _) و w //واو في أول الكلمة
وا (_S2 u وا (_S2 u
وا (_S2 uu // فعل مع ضمائر الجمع المذكرة درسوا
وا (_S2 u: // فعل مع ضمائر الجمع المذكرة درسوا
_) وال (L10P3 wa //والشمس _) وال (L10P3 wa //والشمس
_) وَال (L10P4 wa _) وَال (L10P4 wa
_) وَالْ (L10P4 wa _) وَالْ (L10P4 wa
_) وال (ظP3 waZ _) وال (ظP3 waZ
_) وال (لP3 wal _) وال (لP3 wal
_) وال (نP3 wan _) وال (نP3 wan
ون (_S2 uuna //جمع مذكر سالم فلاحون
ون (_S2 u:na //جمع مذكر سالم فلاحون


.group ي .group ي
L03) ي ii // ياء بعد صامت دون تشكيل
L03) ي i: // ياء بعد صامت دون تشكيل
ا) ي j // ياء بعد ألف ا) ي j // ياء بعد ألف
يِ jii
يِ ji:
ْ) ي j //ياء بعد سكون ْ) ي j //ياء بعد سكون
ُ) ي j //ياء بعد ضمّة ُ) ي j //ياء بعد ضمّة
َ) ي j // ياء بعد فتحة َ) ي j // ياء بعد فتحة
_) ي j // ياء في أول الكلمة _) ي j // ياء في أول الكلمة
ي (L01 j //يا بعدها حروف علة ي (L01 j //يا بعدها حروف علة
ي (_S1 i ي (_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 ى //ألف مقصورة .group ى //ألف مقصورة
ى a ى a
L03) ى (_ aa
L03) ى (_ a:


.group ء .group ء
ء ? ء ?
ء (ً ?an ء (ً ?an


.group ئ .group ئ
ئ ?
ئ j?
_) ئ ?j


.group ؤ .group ؤ
ؤ ?
ؤ w?
_) ؤ ?w


.group ة .group ة
ة t ة t
ٍ (_S1 in // kasratan at the end of word ٍ (_S1 in // kasratan at the end of word
ٌ (_S1 un // dammatan at the end of word ٌ (_S1 un // dammatan at the end of word
ُ u // damma ُ u // damma
ُو uu
َا aa
َى aa
ٰ aa // superscript alef
ُو u:
َا a:
ًا (_S2 an
َى a:
ٰ a: // superscript alef
ِ i // kasra ِ i // kasra
َ %a // fatha َ %a // fatha


ـ // tatweel ـ // tatweel
ۡ // small high dotless head of khan ۡ // small high dotless head of khan
ْ // sukun ْ // sukun
ّ // shadda


// non-ascii characters with specified pronunciations // non-ascii characters with specified pronunciations
// List the accented characters in en_list with the $accent attribute // List the accented characters in en_list with the $accent attribute

+ 5
- 0
dictsource/lv_list View File

labad $u labad $u
lai $u+ lai $u+
līdz $u+ līdz $u+
lūk $u+
ļoti $u+ ļoti $u+
nav $u+ nav $u+
nedz $u $brk nedz $u $brk
pirms $u+ pirms $u+
pret $u+ pret $u+
priekš $u priekš $u
projām $u+
prom $u+
protams $u+ protams $u+
sauc $u+ sauc $u+
starp $u starp $u
tad $u+ tad $u+
tagad $u+ tagad $u+
tas $u+ tas $u+
tātad $u+ $pause
te $u+ te $u+
tiek $u+ tiek $u+
tikai $u+ tikai $u+
(it sevišķi) it||seviSci $u2+ (it sevišķi) it||seviSci $u2+
(kaut arī) kaut||aRi: $u2+ (kaut arī) kaut||aRi: $u2+
(kaut cik) kaut||tsik $u2+ (kaut cik) kaut||tsik $u2+
(kaut gan) kaut||gan $u2+
(kaut kad) kaut||kad $u2+ (kaut kad) kaut||kad $u2+
(kaut kam) kaut||kam $u2+ (kaut kam) kaut||kam $u2+
(kaut kas) kaut||kas $u2+ (kaut kas) kaut||kas $u2+

+ 32
- 8
dictsource/lv_rules View File

_b) e (z_ e _b) e (z_ e
_b) e (z+ e _b) e (z+ e
_C) e (_ e // re, te, ve _C) e (_ e // re, te, ve
c) e (nL83+ e
c) e (tur e c) e (tur e
č) e (tr e č) e (tr e
d) ebe (L83 ebe d) ebe (L83 ebe
e (strāL72 e e (strāL72 e
etno etno etno etno
_) e (vL04_+ e // Eva _) e (vL04_+ e // Eva
e (vol e
g) e (t e g) e (t e
gr) e (dz E gr) e (dz E
gr) e (z E gr) e (z E
int) ere (L83 eRe int) ere (L83 eRe
_j) e (b_ e _j) e (b_ e
_j) e (l_ e _j) e (l_ e
kur) e (n e
_ķ) eme (rL01_ eme // Ķemeri _ķ) eme (rL01_ eme // Ķemeri
_L20) e (sam_+ _!e // esam _L20) e (sam_+ _!e // esam
_L20) e (sat_+ _!e // esat _L20) e (sat_+ _!e // esat
ņ) e (m e ņ) e (m e
orķ) e e orķ) e e
p) e (rs e p) e (rs e
pr) ece (den etse
pr) e (cL52z e pr) e (cL52z e
pr) e (L71L05_ e // prece pr) e (L71L05_ e // prece
pr) e (s e
_pr) e (t e _pr) e (t e
pr) etē (@ ete: pr) etē (@ ete:
proc) e (s e proc) e (s e
r) ecep (L88L05_ etsep // recepte r) ecep (L88L05_ etsep // recepte
r) e (dak e
r) e (dz e r) e (dz e
r) e (pub e r) e (pub e
r) e (put e r) e (put e
_s) evastopo (lL05_ evastopo: // Sevastopole _s) evastopo (lL05_ evastopo: // Sevastopole
_s) e (v_ e // sev _s) e (v_ e // sev
_s) e (vi_ e _s) e (vi_ e
sp) e (ķ e
st) e (nd e st) e (nd e
str) e (s e str) e (s e
t) e (c+ e t) e (c+ e
t) e (km e t) e (km e
t) ele ele t) ele ele
_t) e (mp e _t) e (mp e
t) ende (n ende
t) ermo eRmo t) ermo eRmo
t) e (st e t) e (st e
_t) e (v_ e // tev _t) e (v_ e // tev
// specific words ------------------------------------------------------------------- // // specific words ------------------------------------------------------------------- //
ap) ē (d+ e: ap) ē (d+ e:
b) ē (g@ e: b) ē (g@ e:
C) ē (ts_ e:
cilv) ē (L75 E: cilv) ē (L75 E:
d) ē (ļ_+ e: d) ē (ļ_+ e:
d) ē (vē e: d) ē (vē e:
dv) ēse (L77 e:se dv) ēse (L77 e:se
dz) ē (t e:
dz) ē (rL89 e:
dz) ē (t e:
ēcē e:tse: ēcē e:tse:
ēdē e:de: ēdē e:de:
ē (kL04_+ E: // ēka ē (kL04_+ E: // ēka
m) ē (L77L05+ e: // mēle m) ē (L77L05+ e: // mēle
m) ēne (L83 e:ne m) ēne (L83 e:ne
m) ē (rķ e: m) ē (rķ e:
m) ē (rL71 e:
_m) ē (s_ e: // mēs _m) ē (s_ e: // mēs
_n) ē (_ e: _n) ē (_ e:
ņ) ē (m++ e: ņ) ē (m++ e:
_p) ē (c+ e: _p) ē (c+ e:
p) ē (dL04_ E: p) ē (dL04_ E:
_p) ē (rL01_ e: // pērs _p) ē (rL01_ e: // pērs
p) ē (rn E:
p) ēte (r e:te // Pēter.. p) ēte (r e:te // Pēter..
piem) ē (r E: piem) ē (r E:
sāp) ē (+ e: sāp) ē (+ e:


.group k .group k
k 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 ļ k (ļ k} // tiny pause between k and ļ


.group ķ .group ķ
l) n (C n // but not after (lengthened) l l) n (C n // but not after (lengthened) l
L59) n (@ :n L59) n (@ :n
n (d N n (d N
_) ne (kād n%e
_) ne (vienādo n'e
ne (vienl+ n'e // nevienlīdzība ne (vienl+ n'e // nevienlīdzība
ne (vienmērīg n'e // nevienmērīgi ne (vienmērīg n'e // nevienmērīgi
_) ne (vien n%e // stress on 2nd syllable _) ne (vien n%e // stress on 2nd syllable
versm) o uo // versmo versm) o uo // versmo
viegl) o (+ uo viegl) o (+ uo
vizm) o uo vizm) o uo
zil) o (L80 uo
zil) o (L80+ uo
žēl) o (L65+ uo žēl) o (L65+ uo
žir) o o žir) o o


g) ob (e ob g) ob (e ob
k) ob ob k) ob ob
l) ob (ē ob l) ob (ē ob
_l) ob (ij ob
_l) ob (is ob
l) oboto (m oboto l) oboto (m oboto
m) ob ob m) ob ob
_) ob (amL01_ ob // Obama _) ob (amL01_ ob // Obama
l) oj (L50 oj l) oj (L50 oj
_ob) oj (L04_ oj // oboja _ob) oj (L04_ oj // oboja
_) oj (ārL01_ oj // Ojārs _) oj (ārL01_ oj // Ojārs
_pr) oj (ām_ uoj
pr) oj (L42 oj pr) oj (L42 oj
_tr) oj (L04_ oj // Troja _tr) oj (L04_ oj // Troja
z) oj (L01_+ oj // ..zojs z) oj (L01_+ oj // ..zojs
b) om (zL02_ om // bomzis b) om (zL02_ om // bomzis
br) om om br) om om
c) om (_ om c) om (_ om
_č) om (L01_ om
d) om (in om d) om (in om
d) om (nL04_ om // domna d) om (nL04_ om // domna
dr) om (L01_ o:m // ..droms dr) om (L01_ o:m // ..droms
b) on (ē on b) on (ē on
b) on (us on b) on (us on
br) on on br) on on
cens) on uon
daig) on uon daig) on uon
dail) on uon dail) on uon
dalt) on o:n dalt) on o:n
on (ijL04_ o:n on (ijL04_ o:n
on (ist o:n on (ist o:n
on (ko oN on (ko oN
_) on (kuL77L02_ oN // onkulis
on (kuL77 oN
on (L01_+ o:n // ..ons on (L01_+ o:n // ..ons
on (l oN on (l oN
onn onnn onn onnn
z) oo oo: z) oo oo:


.group op .group op

L41Jsk) op (L01_ o:p // ...skops
ad) op op ad) op op
att) op uop
cikl) op (L01_ o:p // ciklops cikl) op (L01_ o:p // ciklops
d) op op d) op op
eir) op (L04_ o:p eir) op (L04_ o:p
k) op (ē_ op // ..kopē k) op (ē_ op // ..kopē
k) op (ij op // ..kopij.. k) op (ij op // ..kopij..
k) op (j uop // ..kopj.. k) op (j uop // ..kopj..
k) op (L65+ uop // ..kuop..
k) op (L04_+ uop // ..kopa k) op (L04_+ uop // ..kopa
k) op (L65+ uop // ..kuop..
k) opo uopuo k) opo uopuo
k) op (pr uop // ..koppr.. k) op (pr uop // ..koppr..
k) op (ulā op k) op (ulā op
k) op (ulē op k) op (ulē op
kr) op (ļo uop kr) op (ļo uop
L41Jsk) op (L01_ o:p // ...skops
l) op (L01_+ uop l) op (L01_+ uop
m) op op m) op op
net) op (_ uop net) op (_ uop
_p) op (L05_ uop // Pope _p) op (L05_ uop // Pope
p) op op p) op op
pr) op op pr) op op
sast) op uop
sk) op (ijL04_ o:p // ..skopija sk) op (ijL04_ o:p // ..skopija
sk) op (is o:p sk) op (is o:p
sk) op (L01_ o:p // ..skops sk) op (L01_ o:p // ..skops
s) op (r op s) op (r op
st) opo (s_ uopuo // ..stopos st) opo (s_ uopuo // ..stopos
_str) op (L01_ uop // strops _str) op (L01_ uop // strops
_t) op uo`p // top with short uo because of ambiguity
_t) op (āzL01_ op // topāzs _t) op (āzL01_ op // topāzs
_t) op (b op // topbura _t) op (b op // topbura
_t) op (inam op // topinambūrs _t) op (inam op // topinambūrs
_t) opol opol _t) opol opol
_t) opon opon _t) opon opon
t) opot uopuot t) opot uopuot
_t) op uo`p // top with short uo because of ambiguity
tr) op o:p tr) op o:p
ut) op (i o:p ut) op (i o:p


n) ov (āci ov n) ov (āci ov
n) ov (elL05_ ov // novele n) ov (elL05_ ov // novele
_n) ov (emb ov // novembris _n) ov (emb ov // novembris
n) ov (ēr uov
n) ov (it ov n) ov (it ov
n) ov (L04_ ov // nova n) ov (L04_ ov // nova
n) ov (o ov n) ov (o ov
_pl) ov (L01_ ov // plovs _pl) ov (L01_ ov // plovs
pr) ov (an ov pr) ov (an ov
pr) ov (in ov pr) ov (in ov
pr) ov (L52z ov
pr) ov (L05_ uov // prove pr) ov (L05_ uov // prove
pr) ov (L52z ov
pr) ovo ovo pr) ovo ovo
r) ov ov r) ov ov
sl) ov ov sl) ov ov
y y // y is used instead of simple "i", to distinguish them in writing y y // y is used instead of simple "i", to distinguish them in writing
y (A y_| y (A y_|
y (_ y: // for international words y (_ y: // for international words
y (outub y


.group z .group z
z z z z

+ 24
- 0
dictsource/shn_list View File

// 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|| // ၵဝ်ႈသိပ်း


+ 177
- 0
dictsource/shn_rules View File

// 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

+ 6
- 6
docs/dictionary.md View File

| `=` | put the primary stress on the preceding syllable | | `=` | put the primary stress on the preceding syllable |
| `_:` | short pause | | `_:` | short pause |
| `_` | a shorter pause | | `_` | a shorter pause |
| <code>&#124;</code> | indicates a word boundary within a phoneme string |
| <code>&#124;&#124;</code> | can be used to separate two adjacent characters, to prevent them from being considered as a multi-character phoneme mnemonic |
| <code>&#124;</code> | use to separate two adjacent characters, to prevent them from being considered as a single multi-character phoneme |
| <code>&#124;&#124;</code> | indicates a word boundary within a phonetic string |


It is not necessary to specify the stress of every syllable. Stress 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 markers are only needed in order to change the effect of the language's
## Character Substitution ## Character Substitution


Character substitutions can be specified by using a `.replace` section 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. 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 .replace
ô   ő   // (Hungarian) allow the use of o-circumflex instead of o-double-accute ô   ő   // (Hungarian) allow the use of o-circumflex instead of o-double-accute

+ 4
- 0
espeak-ng-data/lang/tai/shn View File

name Shan (Tai Yai)
language shn
maintainer ronaldaug <[email protected]>
status testing

+ 1
- 1
espeak-ng-data/voices/mb/mb-ar2 View File

gender male gender male


pitch 82 117 pitch 82 117
mbrola ar2 ar2_phtrans
mbrola ar2 ar1_phtrans

+ 73
- 75
phsource/mbrola/ar1 View File


volume 50 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

+ 0
- 74
phsource/mbrola/ar2 View File


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





+ 295
- 0
phsource/ph_shan View File

//*******************************************************************
// 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


+ 3
- 0
phsource/phonemes View File



phonemetable mi base1 phonemetable mi base1
include ph_maori include ph_maori

phonemetable shn base1
include ph_shan

+ 5
- 0
src/libespeak-ng/tr_languages.c View File

tr->langopts.stress_rule = STRESSPOSN_1L; 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; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS;
break; 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('c', 'm', 'n'): // no break, just go to 'zh' case
case L3('z', 'h', 'y'): // just go to 'zh' case case L3('z', 'h', 'y'): // just go to 'zh' case
case L('z','h'): case L('z','h'):

+ 20
- 5
src/libespeak-ng/translate.c View File

/* Read a unicode characater from a UTF8 string /* Read a unicode characater from a UTF8 string
* Returns the number of UTF8 bytes used. * Returns the number of UTF8 bytes used.
* buf: position of buffer is moved, if character is read * 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: * skipping UTF-8 header bits of bytes in following way:
* 2-byte character "ā": * 2-byte character "ā":
* hex binary * hex binary
* 1010 011001 000101 * 1010 011001 000101
* | + +--.\ \ | | * | + +--.\ \ | |
* V `--. \`. `.| | * V `--. \`. `.| |
* A645 0001001101000101
* A645 1010011001000101
* 4-byte character "𠜎": * 4-byte character "𠜎":
* f0a09c8e 11110000101000001001110010001110 * f0a09c8e 11110000101000001001110010001110
* V 000 100000 011100 001110 * V 000 100000 011100 001110


int utf8_out(unsigned int c, 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 // returns the number of bytes written


int n_bytes; int n_bytes;
return 1; 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) static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, int *insert, int *wordflags)
{ {
int ix; int ix;
new_c = ucd_toupper(new_c); new_c = ucd_toupper(new_c);


*wordflags |= FLAG_CHAR_REPLACED; *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; return new_c;
} }


} }
break; break;
} }
// handle .replace rule in xx_rules file
return SubstituteChar(tr, c, next_in, insert, wordflags); return SubstituteChar(tr, c, next_in, insert, wordflags);
} }


c = ' '; c = ' ';
word_flags |= FLAG_COMMA_AFTER; 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) if (c == 8)
continue; // ignore this character continue; // ignore this character



+ 1
- 0
tests/language-phonemes.test View File

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 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 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 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"

Loading…
Cancel
Save