Added language: ga (Irish). Languages changes: en-us, eo, hu, pt, ta, vi git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@310 d46cf337-b52f-0410-862d-fd96e6ae7743master
v w x z Z | v w x z Z | ||||
Dictionary hu_dict 2013-02-25 | |||||
Dictionary hu_dict 2013-03-08 | |||||
a A a: e E e: i i: | a A a: e E e: i i: | ||||
o o: u u: Y y y: Y: | o o: u u: Y y y: Y: | ||||
ts v x z | ts v x z | ||||
Dictionary en_dict 2013-03-06 | |||||
Dictionary en_dict 2013-03-08 | |||||
0 0# 3 3: @ @- @2 @5 | 0 0# 3 3: @ @- @2 @5 | ||||
@L a a# A: A@ aa aI aI3 | @L a a# A: A@ aa aI aI3 | ||||
Z z# | Z z# | ||||
Dictionary eo_dict 2013-01-24 | |||||
Dictionary eo_dict 2013-03-08 | |||||
@- a aI aU e eI eU i | @- a aI aU e eI eU i | ||||
o oI u uI | o oI u uI | ||||
t. th th. v w x z | t. th th. v w x z | ||||
Dictionary ta_dict 2013-03-05 | |||||
Dictionary ta_dict 2013-03-08 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
Dictionary pt_dict 2013-03-07 | |||||
Dictionary pt_dict 2013-03-08 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
v w z Z | v w z Z | ||||
Dictionary vi_dict 2013-02-16 | |||||
Dictionary vi_dict 2013-03-08 | |||||
@ @: @:I @:U @I @U a a: | @ @: @:I @:U @I @U a a: | ||||
a:I a:U aI aU e E eU EU | a:I a:U aI aU e E eU EU | ||||
t tS v w x z | t tS v w x z | ||||
Dictionary ur_dict 2013-03-03 | |||||
Dictionary ur_dict 2013-03-08 | |||||
@ a a: aI aU e E e: | @ a a: aI aU e E e: | ||||
i I i: O o: U u: V | i I i: O o: U u: V | ||||
: b bh c ch d D d. | |||||
dh dh. f g gh h H j | |||||
J Jh k kh l m n N | |||||
p ph Q q r R r. s | |||||
S s. t T t. th th. v | |||||
w x z Z z. | |||||
: ; b bh c ch d D | |||||
d. dh dh. f g gh h H | |||||
j J Jh k kh l m n | |||||
N p ph Q q r R r. | |||||
s S s. t T t. th th. | |||||
v w x z Z z. | |||||
Dictionary bg_dict 2012-07-15 | Dictionary bg_dict 2012-07-15 | ||||
v w z | v w z | ||||
Dictionary ka_dict 2013-02-01 | |||||
Dictionary ka_dict 2013-03-08 | |||||
@ @- a e i o u | @ @- a e i o u | ||||
J Jh k kh l m n N | J Jh k kh l m n N | ||||
n. n^ p ph r r. s S | n. n^ p ph r r. s S | ||||
s. t t. th th. v w z | s. t t. th th. v w z | ||||
Dictionary ga_dict 2013-03-08 | |||||
0 0# @ a a# A: aI aI# | |||||
aU aU# e E E# e: i I | |||||
i: i@ o O O# o: u U | |||||
U# u1 u: u@ | |||||
: ; b c C d d[ dZ | |||||
f g h j k l m n | |||||
p Q Q" r R s S t | |||||
t[ tS v w x X z Z |
_- h,aIf@n | _- h,aIf@n | ||||
?3 _- daS | ?3 _- daS | ||||
_. d0t | _. d0t | ||||
?3_. pi@rI@d | |||||
_: koUl@n | _: koUl@n | ||||
_; sEmIk'oUl@n | _; sEmIk'oUl@n | ||||
_< lEsDan | _< lEsDan |
legged lEgId | legged lEgId | ||||
// Ab) le @L | // Ab) le @L | ||||
C) le (ton_ @L | C) le (ton_ @L | ||||
Ab) ler (_ l@ | |||||
Ab) le (C_ l@ | |||||
Ab) ler (_ l3 | |||||
Ab) le (B_ l@ | |||||
Ab) led (_ @Ld | Ab) led (_ @Ld | ||||
&) lem (ent @Lm | &) lem (ent @Lm | ||||
&p) lem (ent lIm | &p) lem (ent lIm |
.group a | .group a | ||||
_) a(_ a | |||||
a a | |||||
aj aI | |||||
aŭ aU | |||||
_) a (_ a | |||||
a a | |||||
aj aI | |||||
aŭ aU | |||||
.group b | .group b | ||||
_) b(_ bo | |||||
b b | |||||
_) b (_ bo | |||||
b b | |||||
.group c | .group c | ||||
_) c(_ tso | |||||
_) ch(_ tSo | |||||
c ts | |||||
ch (K tS // foreign words | |||||
K) ch tS // foreign words | |||||
_) c (_ tso | |||||
_) ch (_ tSo | |||||
c ts | |||||
ch (K tS // foreign words | |||||
K) ch tS // foreign words | |||||
.group d | .group d | ||||
_) d(_ do | |||||
d d | |||||
_) d (_ do | |||||
d d | |||||
_) d (-ro dokt'o | |||||
_) d (-rino d,okto | |||||
_) d (-ro dokt'o | |||||
_) d (-rino d,okto | |||||
.group e | .group e | ||||
_) e(_ e | |||||
e e | |||||
ej eI | |||||
eŭ eU | |||||
_) e (_ e | |||||
e e | |||||
ej eI | |||||
eŭ eU | |||||
.group f | .group f | ||||
_) f(_ fo | |||||
f f | |||||
_) f (_ fo | |||||
f f | |||||
_) f (-ino fR%aUl | |||||
_) f (-lo fRaU | |||||
_) f (-ino fR%aUl | |||||
_) f (-lo fRaU | |||||
.group g | .group g | ||||
_) g(_ go | |||||
g g | |||||
gh (K dZ | |||||
_) g (_ go | |||||
g g | |||||
gh (K dZ | |||||
.group h | .group h | ||||
_) h(_ ho | |||||
h h | |||||
hh x | |||||
_) h (_ ho | |||||
h h | |||||
hh x | |||||
.group i | .group i | ||||
_) i(_ i | |||||
i i | |||||
_) i (_ i | |||||
i i | |||||
.group j | .group j | ||||
_) j(_ jo | |||||
j j | |||||
jh (C Z | |||||
_) j (_ jo | |||||
j j | |||||
jh (C Z | |||||
.group k | .group k | ||||
_) k(_ ko | |||||
k k | |||||
_) k (_ ko | |||||
k k | |||||
_) k (-do kamaR'a | |||||
_) k (-dino k'amaRa | |||||
_) k (-ino k'amaRad | |||||
_) k (-do kamaR'a | |||||
_) k (-dino k'amaRa | |||||
_) k (-ino k'amaRad | |||||
.group l | .group l | ||||
_) l(_ lo | |||||
l l | |||||
ll (_ l | |||||
_) l (_ lo | |||||
l l | |||||
ll (_ l | |||||
.group m | .group m | ||||
_) m(_ mo | |||||
m m | |||||
_) m (_ mo | |||||
m m | |||||
.group n | .group n | ||||
_) n(_ no | |||||
n n | |||||
n (_S1 n | |||||
_) n (_ no | |||||
n n | |||||
n (_S1 n | |||||
_) n (-ro num'e | |||||
_) n (-ro num'e | |||||
.group o | .group o | ||||
_) o(_ o | |||||
o o | |||||
oj oI | |||||
-) o (_ %o | |||||
-) oj (_ %oI | |||||
-) on (_ %on | |||||
-X) o (_ %o // d-ro etc | |||||
-X) oj (_ %oI | |||||
-X) on (_ %on | |||||
_) o (_ o | |||||
o o | |||||
oj oI | |||||
-) o (_ %o | |||||
-) oj (_ %oI | |||||
-) on (_ %on | |||||
-X) o (_ %o // d-ro etc | |||||
-X) oj (_ %oI | |||||
-X) on (_ %on | |||||
.group p | .group p | ||||
_) p(_ po | |||||
p p | |||||
ph (K f // foreign words | |||||
K) ph f // foreign words | |||||
_) p (_ po | |||||
p p | |||||
ph (K f // foreign words | |||||
K) ph f // foreign words | |||||
.group q | .group q | ||||
_) q(_ kwo | |||||
q k | |||||
qu kv | |||||
_) q (_ kwo | |||||
q k | |||||
qu kv | |||||
.group r | .group r | ||||
_) r(_ Ro | |||||
r R | |||||
A) r (A R | |||||
K) r (A @-* | |||||
rr RR | |||||
_) r (_ Ro | |||||
r R | |||||
A) r (A R | |||||
K) r (A @-* | |||||
rr RR | |||||
.group s | .group s | ||||
_) s(_ so | |||||
_) sh(_ So | |||||
s s | |||||
sh (K S // foreign words | |||||
K) sh S // foreign words | |||||
_) s (_ so | |||||
_) sh (_ So | |||||
s s | |||||
sh (K S // foreign words | |||||
K) sh S // foreign words | |||||
_) s (-ino s,injoR | |||||
_) s (-ro sinj'o | |||||
_) s (-ino s,injoR | |||||
_) s (-ro sinj'o | |||||
_) s (-ano s'am,ide | |||||
_) s (-anino s'am,ide | |||||
_) s (-ta_ s'ank | |||||
_) s (-ano s'am,ide | |||||
_) s (-anino s'am,ide | |||||
_) s (-ta_ s'ank | |||||
.group t | .group t | ||||
_) t(_ to | |||||
t t | |||||
th (K T // foreign words | |||||
K) th T // foreign words | |||||
_) t (_ to | |||||
t t | |||||
th (K T // foreign words | |||||
K) th T // foreign words | |||||
-) ta (_ t%a // s-ta = sankta | |||||
-) ta (_ t%a // s-ta = sankta | |||||
.group u | .group u | ||||
_) u(_ u | |||||
u u | |||||
uj uI | |||||
_) u (_ u | |||||
u u | |||||
uj uI | |||||
.group v | .group v | ||||
_) v(_ vo | |||||
v v | |||||
_) v (_ vo | |||||
v v | |||||
.group w | .group w | ||||
_) w(_ du'oblav,o | |||||
w w | |||||
K) wh w // foreign words | |||||
_) w (_ du'oblav,o | |||||
w w | |||||
K) wh w // foreign words | |||||
.group x | .group x | ||||
_) x(_ ikso | |||||
x ks | |||||
_) x z // foreign words | |||||
_) x (_ ikso | |||||
x ks | |||||
_) x z // foreign words | |||||
.group y | .group y | ||||
_) y(_ ipsilono | |||||
y j | |||||
K) y (K i | |||||
_) y (_ ipsilono | |||||
y j | |||||
K) y (K i | |||||
.group z | .group z | ||||
_) z(_ zo | |||||
z z | |||||
_) z (_ zo | |||||
z z | |||||
.group | .group | ||||
_) ĉ (_ tSo | |||||
ĉ tS | |||||
_) ĉ (_ tSo | |||||
ĉ tS | |||||
_) ĝ (_ dZo | |||||
ĝ dZ | |||||
_) ĝ (_ dZo | |||||
ĝ dZ | |||||
_) ĥ (_ xo | |||||
ĥ x | |||||
_) ĥ (_ xo | |||||
ĥ x | |||||
_) ĵ (_ Zo | |||||
ĵ Z | |||||
_) ĵ (_ Zo | |||||
ĵ Z | |||||
_) ŝ (_ So | |||||
ŝ S | |||||
_) ŝ (_ So | |||||
ŝ S | |||||
_) ŭ (_ wo | |||||
ŭ w | |||||
_) ŭ (_ wo | |||||
ŭ w | |||||
C) ' (_ = // word end in apostrophe, stress the last vowel | |||||
' | |||||
+ plus_ | |||||
_) ++ (_ plusplus | |||||
' | |||||
+ plus_ | |||||
_) ++ (_ plusplus | |||||
. punkto | |||||
. (. _: | |||||
\.) . | |||||
. punkto | |||||
. (. _: | |||||
\.) . | |||||
£ pundo | |||||
£ (_D _pundoI_: | |||||
__) - (_D minus_ | |||||
D_) - (_D st@-*ek'eto_ | |||||
A_) - (_D _ | |||||
C_) - (_D _ | |||||
--) - | |||||
- minus_ | |||||
- (_a | |||||
$ dolaRo | |||||
$ (_D _dolaRoI_: | |||||
£ pundo | |||||
£ (_D _pundoI_: | |||||
__) - (_D minus_ | |||||
D_) - (_D st@-*ek'eto_ | |||||
A_) - (_D _ | |||||
C_) - (_D _ | |||||
--) - | |||||
- minus_ | |||||
- (_a | |||||
$ dolaRo | |||||
$ (_D _dolaRoI_: | |||||
// Irish Gaeilge dictionary | |||||
// written by Ronan McGuirk | |||||
// January 2013 | |||||
// version 2.5 | |||||
// This file is UTF8 encoded | |||||
// letters | |||||
// letter names, as they are spoken as a single character in text | |||||
// precede by _ to distinguish from pronunciation as a language word | |||||
_a eI | |||||
b bi: | |||||
c si: | |||||
d di: | |||||
e i: | |||||
f Ef | |||||
g dZi: | |||||
h eItS | |||||
_i aI | |||||
j dZeI | |||||
k keI | |||||
l El | |||||
m Em | |||||
n En | |||||
_o oU | |||||
p pi: | |||||
q kju: | |||||
r ar | |||||
s Es | |||||
t ti: | |||||
u ju: | |||||
v vi: | |||||
w d'O#b@lju: | |||||
x Eks | |||||
y waI | |||||
z zEd | |||||
_á eI||f0d[@ | |||||
_é i:||f0d[@ | |||||
_ó o:||f0d[@ | |||||
_ú ju:||f0d[@ | |||||
_#32 spA:s | |||||
// accent names | |||||
// names of symbols | |||||
ª_. pO#nk | |||||
_, k0m@ | |||||
_; semI | |||||
_: ko:l0n | |||||
_! Skre:@x | |||||
_? kESt | |||||
_' u:sx0m@ | |||||
. pO#nk | |||||
% f@i:nge:@d[ | |||||
// numbers | |||||
_0 @nA:idZ | |||||
_1 @h'e:n | |||||
_2 @d['o: | |||||
_3 @tSR'i: | |||||
_4 @k'ah@r | |||||
_5 @ku:Ig | |||||
_6 @S'e: | |||||
_7 @S0xt[ | |||||
_8 @h'0xt[ | |||||
_9 @n@@'i: | |||||
_1X @dZ'E | |||||
_11 e:@nde:@g | |||||
_12 d[o:je:@g | |||||
_13 tr'i:de:@g | |||||
_14 kah@rde:@g | |||||
_15 ku:igde:@g | |||||
_16 Se:de:@g | |||||
_17 S0xtde:@g | |||||
_18 O#xtde:@g | |||||
_19 ni:de:@g | |||||
_20 fICe | |||||
_2X fiCE | |||||
_3X trO#x@ | |||||
_31 trO#x@he:@n | |||||
_40 d[0C@d | |||||
_4X d[0C@d@ | |||||
_41 d[0C@dahe:@n | |||||
_5X k@e:@g@ | |||||
_51 k@e:@g@he:@n | |||||
_6X Sask@ | |||||
_61 Sask@he:@n | |||||
_7X S0xto: | |||||
_71 S0xt[o:he:@n | |||||
_8X O#Xto: | |||||
_81 O#xt[o:he:@n | |||||
_9X no:x@ | |||||
_91 no:x@he:@n | |||||
_0C ke:@d[ | |||||
_1C0 ke:@d[ // exactly one hundred | |||||
_1C ke:@d[ | |||||
_101 ke:@d[@he:@n | |||||
_2C ga:Ce:@d[ | |||||
_3C tri:Ce:@d[ | |||||
_4C kEr@ke:@d[ | |||||
_5C ku:igce:@d[ | |||||
_6C Se:ke:@d[ | |||||
_7C S0xtge:@d[ | |||||
_8C O#xtg'e:@d[ | |||||
_9C ni:ge:@d[ | |||||
_0M1 mi:lE | |||||
_1M1 m'i:lE | |||||
_2M1 gA:vi:lE | |||||
_2001 gA:vi:lEs@he:@n | |||||
_2002 gA:vi:lEs@d['o: | |||||
_2003 gA:vi:lEs@tr'i: | |||||
_2004 gA:vi:lEs@kah@r | |||||
_2005 gA:vi:lEs@ku:ig | |||||
_0M2 mIlu:n | |||||
_1M2 'milu:n | |||||
_2M2 d[A:vIlu:n | |||||
_3M2 tri:vilu:n | |||||
_4M2 kEr@milu:n | |||||
_0M4 _bilu:n | |||||
_1M4 'bilu:n | |||||
_2M4 gA:vilu:n | |||||
_3M4 tri:vilu:n | |||||
_4M4 kEr@vilu:n | |||||
_0and Is | |||||
_dpt pO#nk | |||||
//_roman Rom'ano | |||||
//delete | |||||
// words | |||||
a @ | |||||
abhaile @w'0l;E | |||||
ach 0x $u | |||||
ag Eg $verbf $u | |||||
anall @n'aUl | |||||
aige @g'E | |||||
air Er | |||||
acu 0k'U | |||||
ar Er $u | |||||
arsa @rs@ | |||||
agaibh 0g@Iv | |||||
agus 0g@s | |||||
amach @m'0x | |||||
amárach @m'A:r@x | |||||
amuigh @mu1'I | |||||
amháin @w'A:in | |||||
am aUm | |||||
an @n | |||||
anois @nIS | |||||
anonn @naUn | |||||
ann aUn | |||||
anseo @nS'O | |||||
aodh e: | |||||
aodha e: | |||||
aon e:@n | |||||
(ar ais) Er'aS | |||||
arís @r'i:S | |||||
as 0s | |||||
atá @t['A: $u | |||||
baill bu1'i:l | |||||
bhaill vu1'i:l | |||||
beidh bEg | |||||
bhfuil w'Il | |||||
bhuel w'El | |||||
ceithre kEr@ | |||||
cathair k'0h@r | |||||
chathair x'0h@r | |||||
clainne kl'InE | |||||
chlainne xl'InE | |||||
chun xUn $u | |||||
crainn kri:n | |||||
de dE $u+ | |||||
des dEs $u | |||||
dhaoibh ji:v | |||||
di dI $u+ | |||||
do dO# $u | |||||
domhnach d[aUn@x | |||||
domhnaigh d[aUnig | |||||
eile 'El@ | |||||
euro ju:ro: | |||||
faic f@ak | |||||
faide f@Id[E | |||||
faigh faIg | |||||
feadh fag | |||||
fear f'ar | |||||
gcathair g0h@r | |||||
gan g0n $u | |||||
gheall jaUl | |||||
(go raibh maith) g@r@m0h | |||||
(go raibh míle) g@r@mi:l@ | |||||
gur gUr $u | |||||
i I $u | |||||
in In $u | |||||
ina In@ $u | |||||
ins Ins $u | |||||
inniu Inj'u:v | |||||
irish _^_EN | |||||
is 'Is $u | |||||
(is ea) IS'a | |||||
isteach IstS'0x | |||||
iúl ju:l | |||||
laoghaire li:@r@ | |||||
le lE $u | |||||
leí le:i: | |||||
(maigh eo) mu1'i:||'o: | |||||
(muigheo) mu1'i:||'o: | |||||
mhuigh vu1'i: | |||||
(mhaigh eo) vu1'i:||'o: | |||||
maith m'0 | |||||
mhaith w'0 | |||||
mbeadh m;O#X | |||||
mo mO# $u | |||||
mura mUr@ $u | |||||
ná nA: $u | |||||
nigh ni: | |||||
níorbh ni:rv | |||||
nó nu: $u | |||||
nollag n@l@g | |||||
nolaig nO#lig | |||||
Oirghiall 'Err@X@l | |||||
orthu O#rhu | |||||
os o:s | |||||
rabh raU | |||||
raibh rEv | |||||
réamhrá r'e:@vr,a: | |||||
réidh re: | |||||
samhain saUIn | |||||
san s@n | |||||
seo S@_ | |||||
tabhair t'u:@r | |||||
(tiocfaidh ár lá) tSO#ki:|'A:r|l'A: | |||||
// temporary fix for NO#DA punctuation | |||||
dot pO#nk | |||||
comma k0m@ | |||||
dash flESki:n | |||||
tick u:@sx0m@ | |||||
space spA:s | |||||
// translation rules for Irish Gaeilge | |||||
// This file is UTF-8 encoded | |||||
// written by Ronan McGuirk January 2013 | |||||
// Version 2.5B | |||||
.L01 e i é í // slender vowels | |||||
.L02 c ch d g gh n s // following ea gets ; sounds | |||||
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||||
.L04 b bh mb // for words like beag | |||||
.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||||
.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||||
.L07 b c g ch bh gh mb | |||||
.L08 lc ll nt bhse // for words like cailc | |||||
.L09 cl cr chr f | |||||
.L10 c ch p ph gl ghl | |||||
.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai | |||||
.L12 á é ó eo ua // when followed by i | |||||
.L13 oc omb | |||||
.L14 río dún gnío // followed with mh | |||||
.L15 c ch f m d dh g gc gh mh // aoi following | |||||
.L16 b c bh ch gr ghr // for inn word ending | |||||
.L17 l le li niste nn | |||||
.L18 n nt nte neann neadh ntear nim nfear nfinn | |||||
.L19 na nea ra rea la llea arga // word endings with silent dh | |||||
.L20 eo eoir eá eabh io iu iú // slender m | |||||
.L21 ll nn ndán nntán | |||||
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||||
.L23 ea eo i | |||||
.L24 b mb bh g gh p ph bp m mh | |||||
.group a | |||||
a 0# | |||||
a (_ @ | |||||
adh (a aI // words like radharc | |||||
adh (C aI | |||||
abht aU#t[ | |||||
amhr aUr // words like amhras | |||||
K) amhl aUl | |||||
abhra aUr@ // words like slabhra | |||||
aghaidh aIg | |||||
t) abhair u:@r | |||||
th) abhair u:@r | |||||
t) abhar u:@r | |||||
th) abhar u:@r | |||||
_) an (sL01 @n | |||||
_) an (- 0n // an prefix | |||||
é) a @ // words like féach | |||||
X) a (nn_ aU# | |||||
X) a (ll_ aU# | |||||
abha aU@ | |||||
am (pla aUm | |||||
ama(_ aU#m@ | |||||
athair 'ah@r | |||||
_) amh aU | |||||
agha aI@ | |||||
agh (d aI | |||||
agh (s aI | |||||
_) ath 0h | |||||
ai (m_ @ | |||||
aí i: | |||||
aoi @i: | |||||
_) aoi i: | |||||
ath) aoi (r 'i:@ | |||||
r) aoi (nín 'e:@ | |||||
aoicht (_ 'i:@xt[ | |||||
C) ao (C @e:@ | |||||
_L24) ao (C w'e:@ | |||||
C) ao (th_ @e: | |||||
b) ao (++ we:@ | |||||
b) ao (th_++ we: | |||||
ao @e | |||||
_) ao e: | |||||
ae e: | |||||
amhna (_ aUn@ | |||||
.group á | |||||
á A: | |||||
@) á ,A: | |||||
ádh A: | |||||
áthair (_ A:h@r | |||||
áthar A:h@r | |||||
ái (p A: | |||||
áinig A:nIg | |||||
ái 'A:i | |||||
.group ai | |||||
ai a# | |||||
L04) ai (L17 0# | |||||
aile (_ '0l;E // words like baile | |||||
Xc) ai (l '0# | |||||
ch) ai (l '0# | |||||
m) ai (n 0# | |||||
c) ai (th 0# | |||||
ch) ai (th 0# | |||||
ai (d 0# | |||||
p) ai (l 0# | |||||
@) ai (L11_ I | |||||
ai (L08+ aI# | |||||
c) ai (l_ I | |||||
ai (msi 'aI // words like aimsir | |||||
_L04) ai (L18_++ u1'I//words like bain | |||||
c) ai (t_ u1'I | |||||
s) ai (bh E | |||||
aighre aIr@ | |||||
X) aigh 'aI | |||||
aigh aI# L04) aill (_ wi:l | |||||
aing (_ Ing | |||||
.group b | |||||
b b // broad | |||||
L01) b b; // slender | |||||
b (L22 bj //slender | |||||
bh v // broad | |||||
bh (_ vv | |||||
bh (L22 vj // slender | |||||
L01) bh v | |||||
_) bhf v /urú broad | |||||
_) bhf (L22 v; // urú slender | |||||
_) bp b //urú broad | |||||
_) bp (L01 b; // urú slender | |||||
a) bh (a U// for example cabhair | |||||
ear) bha u: // words like Cearbhall | |||||
bhfaigh v'aI | |||||
.group c | |||||
c k | |||||
c (L01 k; // slender | |||||
ch x | |||||
ch (L01 C; | |||||
ch (é+ C; | |||||
ch (ei+ x; | |||||
_) cabhr k'aUr | |||||
_) chabhr x'aUr | |||||
.group d | |||||
d d[ // broad | |||||
L01) d dZ // slender | |||||
d (L22 dZ //slender | |||||
d (L01 d; //slender | |||||
i) d (i dZ | |||||
dh Q // broad | |||||
dh (ui Q //broad | |||||
dh (ao Q //broad | |||||
dh (L01 j // slender | |||||
_) dt d[ //broad urú | |||||
_) dt (L01 dZ // slender urú | |||||
_) d' (@P2 d | |||||
i) dh (_ g | |||||
a) dh (_ X | |||||
o) dh (_ X | |||||
L19) dh (_ // silent dh at wrd end | |||||
Va) dh (_+ | |||||
deartháir dr@h'A:r | |||||
dheartháir gr@h'A:r | |||||
deirfiúr d;r@f'u:r | |||||
dheirfiúr g;r@f'u:r | |||||
.group e | |||||
e E# | |||||
eá A: | |||||
ei E | |||||
eidh (C aI | |||||
r) ei (m aI | |||||
eighea aI | |||||
eighea aI | |||||
eigh aI | |||||
eo o: | |||||
eogh o: | |||||
d) eo (ch O# | |||||
_) eo (ch O# | |||||
s) eo (_ @ | |||||
.group é | |||||
é 'e: | |||||
éi 'e: | |||||
_) éi (rig aI // words like éirigh | |||||
_) éi (rí aI // words like éirí | |||||
_) éireoidh aIro:Ig | |||||
éacs e:@ks | |||||
.group ea | |||||
ea a# | |||||
X) ea (L21_ aU | |||||
ea (ltaine aU | |||||
g) ea (ll aU | |||||
X) ea (ch 0 | |||||
_L04) ea (g @ | |||||
_L04) ea (dh_ @ | |||||
_L04) eagn @gn | |||||
L04) eaga (_ @g@ | |||||
eaghl aIl | |||||
eabhra aUr@ // words like Feabhra | |||||
eanbhean 'an@v,an | |||||
eadhb aIb | |||||
.group f | |||||
f f // broad | |||||
f (L22 f; // slender | |||||
fh //silent | |||||
fh (éin_ h | |||||
fh (L22 ; //slender | |||||
@) f (L06_ h | |||||
.group g | |||||
g g // broad | |||||
g (L01 g; // slender | |||||
_) gh Q" | |||||
_) gh (L01 Q"j | |||||
_) gc g // urú broad | |||||
_) gc (L01 g; // urú slender | |||||
i) gh (_ g | |||||
@C) gh (@ X | |||||
_) gn g@n | |||||
gh(n X@ | |||||
gheobh j'o: | |||||
gabh gaU | |||||
.group h | |||||
h h // silent | |||||
.group i | |||||
i I | |||||
_) i I | |||||
ia i@ | |||||
ia (tha i: | |||||
io O# | |||||
_) io (nadh u:// words like ionadh | |||||
_pr) io (n u: | |||||
L16) inn (_ i:n | |||||
iai i:i | |||||
impeall i:mp@l | |||||
io (s I //words like fios and liosta | |||||
L12) i i // non syllabic short i after long vowel | |||||
iú u: | |||||
m) i (d_ i: // verb ending | |||||
.group k | |||||
k k | |||||
.group l | |||||
l l // broad | |||||
L01) l ( l; // slender | |||||
l (L23 l; //slender | |||||
ll l | |||||
ll (L23 l; | |||||
l (g l@ | |||||
l (b l@ | |||||
.group m | |||||
m m // broad | |||||
m (L20 m; //slender | |||||
mh v | |||||
mh (L20 v; // slender | |||||
_) mb m //urú | |||||
_) mb (L22 m; // urú slender | |||||
_) m (n m@// words like mná | |||||
L14) mh v | |||||
_) mh (n v@ | |||||
léir) mheas vas | |||||
r) m @m // words like gorm | |||||
.group n | |||||
n n // broad | |||||
n (L01 n; // slender | |||||
_) nd n // urú | |||||
_) nd (L01 n; // urú slender | |||||
nn n | |||||
nn (L01 n; // slender | |||||
n (b n@ | |||||
n (m n@ | |||||
n (bh n@ n(ch n@ | |||||
c) n @n | |||||
ch) n @n | |||||
.group o | |||||
o O# | |||||
_) o 'O | |||||
C) o (cht_ 'O | |||||
orn (_ 'Or@n | |||||
_C) omh o: | |||||
_CC) omh o: | |||||
omha o:@ | |||||
omhai o:@ | |||||
o (ll_ aU | |||||
C) o (nn_ aU | |||||
r) o (nn_ O# | |||||
C) ogh aU | |||||
omhan(_ aU@n | |||||
omhain (_ aUIn | |||||
odha aU | |||||
opaic @pIk | |||||
C) odh (_ o: | |||||
odl (a O#l | |||||
oí i: | |||||
.group ó | |||||
ó 'o: | |||||
ómhai o:@ | |||||
.group oi | |||||
oi O | |||||
_L15) oi (+ @'I | |||||
_) oi (b I | |||||
oi (de I | |||||
h) oi (b I | |||||
_) oi (r I | |||||
r) oi I | |||||
l) oi (n I | |||||
f) oi (lC aI | |||||
l) oi (g I | |||||
fh) oi (lC aI | |||||
s) oi (ls aI# | |||||
c) oi (c aI# | |||||
oi (nnío @ | |||||
oi (mis @ | |||||
ois (++ O#S | |||||
oill w'i:l | |||||
_) oi (leá 'I | |||||
oidh aI | |||||
oir (_ 'ERR | |||||
oigh (ea aI | |||||
.group p | |||||
p p // broad | |||||
ph f //broad | |||||
p (L22 p; //slender | |||||
ph (L20 f; // slender | |||||
.group q | |||||
q k | |||||
qu k | |||||
.group r | |||||
r r // broad | |||||
L01) r R // slender | |||||
_) r (L01 R | |||||
L12i) r (e_ Z | |||||
L12i) r (t_ Z | |||||
rr R | |||||
rg r@g | |||||
L01) rg R@g // slender | |||||
r (bh r@ | |||||
ríomh ri:@v | |||||
s) r (A R | |||||
_) ramh raU | |||||
.group s | |||||
s s // broad | |||||
L01) s S // slender | |||||
s (L01 S // slender | |||||
s (cL01 S | |||||
s (CCL01 S // slender | |||||
s (pCé s // broad | |||||
sh h | |||||
sh (CL01 h | |||||
sh (L01 h; | |||||
s (lL01 S | |||||
.group t | |||||
t t[ // broad | |||||
L01) t c // slender | |||||
t (í++n tS //slender | |||||
t (eo++ tS | |||||
t (L01 c // slender | |||||
L01C) t tS //slender after consonant | |||||
t (CL01 tS // slender with following consonant before vowels | |||||
th h | |||||
th (L01 h; | |||||
L01C) th h | |||||
_) ts t[ //eclipsis broad | |||||
_) ts (L01 t; // eclipsis slender | |||||
L01) th h | |||||
taine (_ t[In%E | |||||
ao) th (_ | |||||
thne (_ h@nE | |||||
A) th (_ // silent th at word end | |||||
.group u | |||||
u U# | |||||
ua u@ | |||||
uai u@ | |||||
uai (g ui | |||||
uai (d ui | |||||
uá u:'A: | |||||
ui I | |||||
uinn (_ 'i:n | |||||
uinti U#'i:ntI | |||||
_b) uí wi: | |||||
_bh) uí wi: | |||||
g) uí wi: | |||||
umh u: | |||||
L03) ui @I | |||||
_d) u (l_ O# | |||||
g) ui (gh_ @i: | |||||
gh) ui (gh_ @i: | |||||
uí i: | |||||
uachai 'ux@ | |||||
.group ú | |||||
ú u: | |||||
únmh u:nv | |||||
úi (r u: | |||||
.group j | |||||
j dZ | |||||
.group q | |||||
q k | |||||
qu (A kw | |||||
.group v | |||||
v v | |||||
.group w | |||||
w w | |||||
.group x | |||||
x ks | |||||
_) x z | |||||
.group y | |||||
y (A j | |||||
_A) y j | |||||
y i | |||||
.group z | |||||
z z | |||||
.group | |||||
í 'i: | |||||
udvaron) c (ser ts | udvaron) c (ser ts | ||||
pere) c (cs ts | pere) c (cs ts | ||||
licen) ccs ts|tS | licen) ccs ts|tS | ||||
nyol) c (csat ts | |||||
pokró) c (sá ts | |||||
.group ch | .group ch | ||||
anar) ch (i h | anar) ch (i h | ||||
herná) d (sz d | herná) d (sz d | ||||
szaba) d (szent d | szaba) d (szent d | ||||
for) d (jános d | for) d (jános d | ||||
egye) d (szám d | |||||
shetlan) d (szige d | |||||
szaba) d (szem d | |||||
_tren) dsz (e d|s | |||||
vakon) d (sz d | |||||
.group dz | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
gyűrű) dz (ik z | gyűrű) dz (ik z | ||||
burkoló) dz z | burkoló) dz z | ||||
.group e | .group e | ||||
e E | e E | ||||
000_-) el (_ REl // double R for 1000-el | 000_-) el (_ REl // double R for 1000-el | ||||
világossá) g (gy g | világossá) g (gy g | ||||
vilá) g (gy g | vilá) g (gy g | ||||
virá) g (gy g | virá) g (gy g | ||||
csilla) g (gy g | |||||
édessé) g (gy g | |||||
ge) g (gyár g | |||||
han) g (gy g | |||||
hazugsá) g (gy g | |||||
tőze) g (gy g | |||||
.group gy | .group gy | ||||
gy J | gy J | ||||
utá) n (nyom n | utá) n (nyom n | ||||
verse) ny (játék n^ | verse) ny (játék n^ | ||||
_elle) n (jav n | _elle) n (jav n | ||||
vagyo) n (jog n | |||||
vagyo) n (jog n | |||||
nny (elv n|n^ | |||||
.group o | .group o | ||||
o o | o o | ||||
s S | s S | ||||
s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme | s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme | ||||
s-) sz //but not need spokening second sz phoneme | s-) sz //but not need spokening second sz phoneme | ||||
dns-) sz s | |||||
dns-) sz s | |||||
föld) s (ánc S | föld) s (ánc S | ||||
?1 hel) s (inki z | ?1 hel) s (inki z | ||||
ki) s (ebb SS | ki) s (ebb SS | ||||
ki) s (sziget S | ki) s (sziget S | ||||
ki) s (szőlő S | ki) s (szőlő S | ||||
körö) s (szeg S | körö) s (szeg S | ||||
kolbászo) s S | |||||
.group ss | .group ss | ||||
ssz ss2 | ssz ss2 | ||||
_szamo) ssz Ss | _szamo) ssz Ss | ||||
_szilvá) ssz Ss | _szilvá) ssz Ss | ||||
_vámo) ssz Ss | _vámo) ssz Ss | ||||
keresé) ssz Ss | |||||
cipő) ssz Ss | |||||
szorongá) ssz Ss | |||||
keresé) ssz Ss | |||||
cipő) ssz Ss | |||||
szorongá) ssz Ss | |||||
alkalmazá) ssz Ss | |||||
kezdé) ssz Ss | |||||
edzé) ssz Ss | |||||
egye) ssz (ám Ss | |||||
felsorolá) ssz Ss | |||||
ssz (ürk Ss | |||||
ssz (őke Ss | |||||
formán) ssz (int Ss | |||||
hami) ssz (ín Ss | |||||
mászá) ssz (erű Ss | |||||
hárma) ssz Ss | |||||
hívá) ssz Ss | |||||
hivatkozá) ssz Ss | |||||
leve) ssz Ss | |||||
_hú) ssz (öv Ss | |||||
ismétlé) ssz Ss | |||||
járá) ssz Ss | |||||
kattintá) ssz Ss | |||||
_ki) ssz (öv Ss | |||||
közlekedé) ssz Ss | |||||
laká) ssz Ss | |||||
légzé) ssz Ss | |||||
_le) ssz (ab Ss | |||||
meglepeté) ssz Ss | |||||
nyila) ssz Ss | |||||
pszichológu) ssz Ss | |||||
ráko) ssz Ss | |||||
ritmu) ssz Ss | |||||
rúzso) ssz Ss | |||||
stílu) ssz Ss | |||||
víru) ssz Ss | |||||
szállodá) ssz Ss | |||||
taxi) ssz Ss | |||||
ugrá) ssz Ss | |||||
üstökö) ssz Ss | |||||
visszaélé) ssz Ss | |||||
esé) ssz (erű Ss | |||||
webe) ssz Ss | |||||
.group sz | .group sz | ||||
sz s | sz s | ||||
para) szts (üte st|S | para) szts (üte st|S | ||||
para) sztsz (ag st|s | para) sztsz (ag st|s | ||||
para) szts (uhan st|S | para) szts (uhan st|S | ||||
sz (avar S|z | |||||
pénze) sz (k s | |||||
ellenállá) sz (ón Sz | |||||
ré) sz (árás Sz | |||||
.group t | .group t | ||||
t t | t t | ||||
vizi) t (szob t | vizi) t (szob t | ||||
zár) t (szék t | zár) t (szék t | ||||
szé) t (szortír t | szé) t (szortír t | ||||
_robo) t (szoftve t | |||||
_robo) t (szoftve t | |||||
.group tj | .group tj | ||||
C) tj c | C) tj c | ||||
_tisztele) tj (el tj | _tisztele) tj (el tj | ||||
zené) tj (átsz tj | zené) tj (átsz tj | ||||
szen) tj (akab tj | szen) tj (akab tj | ||||
közérze) tj (aví tj | |||||
közérze) tj (aví tj | |||||
.group ts | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
pö) tsz (en ts: | pö) tsz (en ts: | ||||
_á) tsz (orult t|s | _á) tsz (orult t|s | ||||
leme) tsz (vén ts | leme) tsz (vén ts | ||||
_cha) tsz (ob t|s | |||||
robo) ts (of t|S | |||||
_cha) tsz (ob t|s | |||||
robo) ts (of t|S | |||||
.group tt | .group tt | ||||
tt t: | tt t: | ||||
tí) z (sáv z | tí) z (sáv z | ||||
_tí) z (shill z | _tí) z (shill z | ||||
topá) z z | topá) z z | ||||
dör) zsz (ör Z|z | |||||
raj) z (sabl z | |||||
.group | .group | ||||
$ dolla:R2 | $ dolla:R2 |
ჺ | ჺ | ||||
// For cyrillic characters (U+0400 to U+04FF) use Russian voice | // For cyrillic characters (U+0400 to U+04FF) use Russian voice | ||||
.group 0xd0 | |||||
0xd0 _^_RU | |||||
.group 0xd1 | |||||
0xd1 _^_RU | |||||
.group 0xd2 | |||||
0xd2 _^_RU | |||||
.group 0xd3 | |||||
0xd3 _^_RU | |||||
//.group 0xd0 | |||||
// 0xd0 _^_RU | |||||
//.group 0xd1 | |||||
// 0xd1 _^_RU | |||||
//.group 0xd2 | |||||
// 0xd2 _^_RU | |||||
//.group 0xd3 | |||||
// 0xd3 _^_RU | |||||
.group | .group | ||||
$ dolari | $ dolari |
apego $alt2 $noun | apego $alt2 $noun | ||||
apelo $alt $verb | apelo $alt $verb | ||||
aposto $alt $verb | aposto $alt $verb | ||||
apreço $alt2 | |||||
aperto $alt2 $noun | aperto $alt2 $noun | ||||
apoio $alt $verb | apoio $alt $verb | ||||
aprovo $alt | aprovo $alt | ||||
chovesse $alt2 | chovesse $alt2 | ||||
chupeta $alt2 | chupeta $alt2 | ||||
clamores $alt2 | clamores $alt2 | ||||
clero $alt | |||||
coco $alt2 | coco $alt2 | ||||
cofre $alt | cofre $alt | ||||
cogumelo $alt | cogumelo $alt | ||||
palheta $alt2 | palheta $alt2 | ||||
panfleto $alt2 | panfleto $alt2 | ||||
pangeia $alt | pangeia $alt | ||||
panqueca p,&~Nk'Ek& | |||||
pantera $alt | pantera $alt | ||||
paralelo $alt | paralelo $alt | ||||
parede $alt2 | parede $alt2 | ||||
pose $alt2 | pose $alt2 | ||||
povos $alt | povos $alt | ||||
poxa p'oS& | poxa p'oS& | ||||
preço $alt2 | |||||
primavera $alt | primavera $alt | ||||
provo $alt | provo $alt | ||||
quarteto $alt2 | quarteto $alt2 |
// translation rules Brazilian | // translation rules Brazilian | ||||
// translation rules Brazilian | |||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// Options | // Options | ||||
_entend) e (L06_ e | _entend) e (L06_ e | ||||
_estend) e (L06_ e | _estend) e (L06_ e | ||||
respond) e (L06_ e // cor- | respond) e (L06_ e // cor- | ||||
_enraivec) e (L07_ e | |||||
_espairec) e (L07_ e | |||||
bat) e (L07_ e // re- com- | bat) e (L07_ e // re- com- | ||||
ced) e (L07_ e // pro- con- su- | ced) e (L07_ e // pro- con- su- | ||||
met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | ||||
preend) e (L07_ e // sur- com- | preend) e (L07_ e // sur- com- | ||||
respond) e (L07_ e // cor- | respond) e (L07_ e // cor- | ||||
qu) e (brL04_ E | qu) e (brL04_ E | ||||
acel) e (rL04_ E / des- | |||||
_hosp) e (dL03_ E | _hosp) e (dL03_ E | ||||
_in) e (ptL03_ E | |||||
_gr) e (gL03_ e | _gr) e (gL03_ e | ||||
_n) e (grL03_ e | _n) e (grL03_ e | ||||
_estr) ei (L03_ EI | _estr) ei (L03_ EI | ||||
_bez) e (rrL03_ e | _bez) e (rrL03_ e | ||||
_inv) e (rtL03_ e | _inv) e (rtL03_ e | ||||
_f) e (rvL03_ e | _f) e (rvL03_ e | ||||
_enraiv) e (çL03_ e | |||||
_p) e (sL01_ E | _p) e (sL01_ E | ||||
_d) e (scL02_ E | _d) e (scL02_ E | ||||
_cr) e (scL02_ E | _cr) e (scL02_ E | ||||
conh) e (çL03_ e // re- | conh) e (çL03_ e // re- | ||||
_esqu) e (çL03_ e | _esqu) e (çL03_ e | ||||
_forn) e (çL03_ e | _forn) e (çL03_ e | ||||
_obed) e (çL03_ e | |||||
obed) e (çL03_ e / des- | |||||
_ofer) e (çL03_ e | _ofer) e (çL03_ e | ||||
pr) e (çL03_ e / a- | |||||
_espair) e (çL03_ e | |||||
abast) e (çL03_ e // re- | abast) e (çL03_ e // re- | ||||
_aborr) e (çL03_ e | _aborr) e (çL03_ e | ||||
_agrad) e (çL03_ e | _agrad) e (çL03_ e |
_) ச (வான tSV | _) ச (வான tSV | ||||
_) ச (ாக்கட்டி tS | _) ச (ாக்கட்டி tS | ||||
_) சாக்ப (ீL04 tSa:kp | _) சாக்ப (ீL04 tSa:kp | ||||
_) சாக்லெட் tSa:klet. | |||||
_) சாக்லேட் tSa:kle:t. | _) சாக்லேட் tSa:kle:t. | ||||
_) சா (ட்டர்ஜி tSe: | _) சா (ட்டர்ஜி tSe: | ||||
_) ச (ாணக்கிய tS | _) ச (ாணக்கிய tS | ||||
ஆ) ச (ாரங்கள tS | ஆ) ச (ாரங்கள tS | ||||
ஆ) ச (ாரத் tS | ஆ) ச (ாரத் tS | ||||
ஆ) ச (ாரம tS | ஆ) ச (ாரம tS | ||||
_சிவா) ச (ாரி tS | |||||
_ரங்கா) ச (ாரி tS | _ரங்கா) ச (ாரி tS | ||||
_வரதா) ச (ாரி tS | _வரதா) ச (ாரி tS | ||||
_வேதா) ச (ாரி tS | _வேதா) ச (ாரி tS | ||||
_கிருஷ்ணமா) ச (ாரி tS | _கிருஷ்ணமா) ச (ாரி tS | ||||
_தேசிகா) ச (ாரி tS | _தேசிகா) ச (ாரி tS | ||||
_பட்டா) ச (ாரி tS | _பட்டா) ச (ாரி tS | ||||
_மத்வா) ச (ாரி tS | |||||
அனந்தா) ச (ாரி tS | அனந்தா) ச (ாரி tS | ||||
அன்னமா) ச (ாரி tS | அன்னமா) ச (ாரி tS | ||||
ஆ) ச (ாரிய_ tS | ஆ) ச (ாரிய_ tS | ||||
_) ப (ட்டக்ஸ bV | _) ப (ட்டக்ஸ bV | ||||
_) ப (ட்டன bV | _) ப (ட்டன bV | ||||
_) ப (ட்டன_ pV | _) ப (ட்டன_ pV | ||||
_) ப (ட்டாசாரி bV | |||||
_) ப (தில bV | _) ப (தில bV | ||||
_) பத்த (ிரகாளி bVdd | _) பத்த (ிரகாளி bVdd | ||||
_) பத்திரப் (_ bVttirVp | _) பத்திரப் (_ bVttirVp | ||||
_) ப (ிடில f | _) ப (ிடில f | ||||
_) ப (ிட்சு b | _) ப (ிட்சு b | ||||
_) ப (ிட்டடி b | _) ப (ிட்டடி b | ||||
_) பிந்தி (ரன்வாலே bind | |||||
_) ப (ினாமி b | _) ப (ினாமி b | ||||
_) ப (ினிஷ f | _) ப (ினிஷ f | ||||
_) ப (ின்_லேடன b | _) ப (ின்_லேடன b | ||||
_மL06ாப்) பி (ரப p | _மL06ாப்) பி (ரப p | ||||
வீண்) பி (ரமை b | வீண்) பி (ரமை b | ||||
துஷ்) பி (ரயோக p | துஷ்) பி (ரயோக p | ||||
_சொற்) பி (ரயோக p | |||||
L03ந்தப்) பி (ரளய p | L03ந்தப்) பி (ரளய p | ||||
_சொற்) பி (ரவாக p | _சொற்) பி (ரவாக p | ||||
எக்ஸ்) பிர (ஸ pre | எக்ஸ்) பிர (ஸ pre |
//================================ | //================================ | ||||
// Consonants | // Consonants | ||||
//================================ | //================================ | ||||
.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve | |||||
.L02 n | |||||
.group b | .group b | ||||
b b | b b | ||||
_) b _b | _) b _b | ||||
//b($w_alt2 _^_EN | |||||
.group c | .group c | ||||
c g //k | c g //k | ||||
c (_ kh | c (_ kh | ||||
ch c // try [tS;] [tS] [c] | ch c // try [tS;] [tS] [c] | ||||
ce (_ _^_EN | |||||
_) cl _^_EN | |||||
.group d | .group d | ||||
d J^ // try [z] [J] [dZ] [dZ;] [J^] | d J^ // try [z] [J] [dZ] [dZ;] [J^] | ||||
d (_ _^_EN | |||||
.group đ | .group đ | ||||
đ d | đ d | ||||
_) đ _d | _) đ _d | ||||
.group f | .group f | ||||
f f | |||||
//f f | |||||
_) f _^_EN | |||||
f (_ _^_EN | |||||
.group g | .group g | ||||
g Q // try [g] [Q] | g Q // try [g] [Q] | ||||
gh Q // or [g] [Q] | gh Q // or [g] [Q] | ||||
//g (í J^ | //g (í J^ | ||||
//g (ỉ J^ | //g (ỉ J^ | ||||
//g (ĩ J^ | //g (ĩ J^ | ||||
//g (ị J^ | |||||
//g (ị J^ | |||||
gi J^ | gi J^ | ||||
?1 giết J^'iE3g | ?1 giết J^'iE3g | ||||
giết J^'iE3t[ | giết J^'iE3t[ | ||||
?1 giệt J^'iE6g | ?1 giệt J^'iE6g | ||||
giệt J^'iE6t[ | giệt J^'iE6t[ | ||||
giệc J^'iE6kh | giệc J^'iE6kh | ||||
_) gol _^_EN | |||||
_) gat _^_EN | |||||
ght (_ _^_EN | |||||
.group h | .group h | ||||
h h | h h | ||||
.group j | .group j | ||||
j Z | j Z | ||||
.group k | .group k | ||||
k k | k k | ||||
k (_ kh | |||||
//k (_ kh | |||||
kh x | kh x | ||||
k (_ _^_EN | |||||
.group l | .group l | ||||
l l | l l | ||||
l (_ _^_EN | |||||
le (_ _^_EN | |||||
.group m | .group m | ||||
m m | m m | ||||
.group n | .group n | ||||
n n | n n | ||||
ng N | ng N | ||||
ngh N | ngh N | ||||
nh n^ | nh n^ | ||||
nd (_ _^_EN | |||||
.group ñ | .group ñ | ||||
ñ n^ | ñ n^ | ||||
.group p | .group p | ||||
p p | p p | ||||
ph f | ph f | ||||
.group q | .group q | ||||
q k | q k | ||||
q (_ kh | q (_ kh | ||||
qu w //kw | qu w //kw | ||||
.group r | .group r | ||||
r z. // try [z] [z.] [r] [z;] | r z. // try [z] [z.] [r] [z;] | ||||
r (_ _^_EN | |||||
rm (_ _^_EN | |||||
.group s | .group s | ||||
s s. // try [s.] [s] [S] | s s. // try [s.] [s] [S] | ||||
_) sh _^_EN | |||||
s (_ _^_EN | |||||
st (_ _^_EN | |||||
se (_ _^_EN | |||||
.group t | .group t | ||||
t t[ | t t[ | ||||
?1 t (_ g | ?1 t (_ g | ||||
th t | th t | ||||
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | ||||
ts (_ _^_EN | |||||
te (_ _^_EN | |||||
th (_ _^_EN | |||||
tt (_ _^_EN | |||||
.group v | .group v | ||||
v v | v v | ||||
ve (_ _^_EN | |||||
.group w | .group w | ||||
w w | w w | ||||
_) w _^_EN | |||||
w (_ _^_EN | |||||
.group x | .group x | ||||
x s | x s | ||||
x (_ _^_EN | |||||
.group z | .group z | ||||
z z | z z | ||||
z (_ _^_EN | |||||
//================================ | //================================ | ||||
// Vowels | // Vowels | ||||
//================================ | //================================ | ||||
.group a | .group a | ||||
a a: | a a: | ||||
aủ aU4 | aủ aU4 | ||||
aũ aU5 | aũ aU5 | ||||
aụ aU6 | aụ aU6 | ||||
a (L01 _^_EN | |||||
ai (L02 _^_EN | |||||
.group à | .group à | ||||
à a:2 | à a:2 | ||||
ài a:I2 | ài a:I2 | ||||
ày aI2 | ày aI2 | ||||
ào a:U2 | ào a:U2 | ||||
àu aU2 | àu aU2 | ||||
.group á | .group á | ||||
á a:3 | á a:3 | ||||
ái a:I3 | ái a:I3 | ||||
áy aI3 | áy aI3 | ||||
áo a:U3 | áo a:U3 | ||||
áu aU3 | áu aU3 | ||||
.group ả | .group ả | ||||
ả a:4 | ả a:4 | ||||
ải a:I4 | ải a:I4 | ||||
ảy aI4 | ảy aI4 | ||||
ảo a:U4 | ảo a:U4 | ||||
ảu aU4 | ảu aU4 | ||||
.group ã | .group ã | ||||
ã a:5 | ã a:5 | ||||
ãi a:I5 | ãi a:I5 | ||||
ãy aI5 | ãy aI5 | ||||
ão a:U5 | ão a:U5 | ||||
ãu aU5 | ãu aU5 | ||||
.group ạ | .group ạ | ||||
ạ a:6 | ạ a:6 | ||||
ại a:I6 | ại a:I6 | ||||
ạy aI6 | ạy aI6 | ||||
ạo a:U6 | ạo a:U6 | ||||
ạu aU6 | ạu aU6 | ||||
//================================ | //================================ | ||||
.group ă | .group ă | ||||
ă a | ă a | ||||
.group ằ | .group ằ | ||||
ằ a2 | ằ a2 | ||||
.group ắ | .group ắ | ||||
ắ a3 | ắ a3 | ||||
.group ẳ | .group ẳ | ||||
ẳ a4 | ẳ a4 | ||||
.group ẵ | .group ẵ | ||||
ẵ a5 | ẵ a5 | ||||
.group ặ | .group ặ | ||||
ặ a6 | ặ a6 | ||||
//================================= | //================================= | ||||
.group â | .group â | ||||
â @ | â @ | ||||
ây @I | ây @I | ||||
âu @U1 | |||||
âu @U1 | |||||
.group ầ | .group ầ | ||||
ầ @2 | ầ @2 | ||||
ầy @I2 | ầy @I2 | ||||
ầu @U2 | ầu @U2 | ||||
.group ấ | .group ấ | ||||
ấ @3 | ấ @3 | ||||
ấy @I3 | ấy @I3 | ||||
ấu @U3 | ấu @U3 | ||||
.group ẩ | .group ẩ | ||||
ẩ @4 | ẩ @4 | ||||
ẩy @I4 | ẩy @I4 | ||||
ẩu @U4 | ẩu @U4 | ||||
.group ẫ | .group ẫ | ||||
ẫ @5 | ẫ @5 | ||||
ẫy @I5 | ẫy @I5 | ||||
ẫu @U5 | ẫu @U5 | ||||
.group ậ | .group ậ | ||||
ậ @6 | ậ @6 | ||||
ậy @I6 | ậy @I6 | ||||
ậu @U6 | ậu @U6 | ||||
//=========================== | //=========================== | ||||
.group e | .group e | ||||
e E | e E | ||||
eỏ EU4 | eỏ EU4 | ||||
eỗ EU5 | eỗ EU5 | ||||
eọ EU6 | eọ EU6 | ||||
e (L01 _^_EN | |||||
ey (_ _^_EN | |||||
.group è | .group è | ||||
è E2 | è E2 | ||||
èo EU2 | èo EU2 | ||||
.group é | .group é | ||||
é E3 | é E3 | ||||
éo EU3 | éo EU3 | ||||
.group ẻ | .group ẻ | ||||
ẻ E4 | ẻ E4 | ||||
ẻo EU4 | ẻo EU4 | ||||
.group ẽ | .group ẽ | ||||
ẽ E5 | ẽ E5 | ||||
ẽo EU5 | ẽo EU5 | ||||
.group ẹ | .group ẹ | ||||
ẹ E6 | ẹ E6 | ||||
ẹo EU6 | ẹo EU6 | ||||
//============================ | //============================ | ||||
.group ê | .group ê | ||||
ê e | ê e | ||||
êu eU1 | êu eU1 | ||||
.group ề | .group ề | ||||
ề e2 | ề e2 | ||||
ều eU2 | ều eU2 | ||||
.group ế | .group ế | ||||
ế e3 | ế e3 | ||||
ếu eU3 | ếu eU3 | ||||
.group ể | .group ể | ||||
ể e4 | ể e4 | ||||
ểu eU4 | ểu eU4 | ||||
.group ễ | .group ễ | ||||
ễ e5 | ễ e5 | ||||
ễu eU5 | ễu eU5 | ||||
.group ệ | .group ệ | ||||
ệ e6 | ệ e6 | ||||
ệu eU6 | ệu eU6 | ||||
//============================ | //============================ | ||||
.group i | .group i | ||||
i i | i i | ||||
i (A j | i (A j | ||||
iểu iU4 | iểu iU4 | ||||
iễu iU5 | iễu iU5 | ||||
iệu iU6 | iệu iU6 | ||||
i (L01 _^_EN | |||||
.group ì | .group ì | ||||
ì i2 | ì i2 | ||||
ì (A j2 | ì (A j2 | ||||
ìa i@2 | ìa i@2 | ||||
ìu iU2 | ìu iU2 | ||||
.group í | .group í | ||||
í i3 | í i3 | ||||
í (A j3 | í (A j3 | ||||
ía i@3 | ía i@3 | ||||
íu iU3 | íu iU3 | ||||
.group ỉ | .group ỉ | ||||
ỉ i4 | ỉ i4 | ||||
ỉ (A j4 | ỉ (A j4 | ||||
ỉa i@4 | ỉa i@4 | ||||
ỉu iU4 | ỉu iU4 | ||||
.group ĩ | .group ĩ | ||||
ĩ i5 | ĩ i5 | ||||
ĩ (A j5 | ĩ (A j5 | ||||
ĩa i@5 | ĩa i@5 | ||||
ĩu iU5 | ĩu iU5 | ||||
.group ị | .group ị | ||||
ị i6 | ị i6 | ||||
ị (A j6 | ị (A j6 | ||||
ịa i@6 | ịa i@6 | ||||
ịu iU6 | ịu iU6 | ||||
//========================= | //========================= | ||||
.group o | .group o | ||||
o O | o O | ||||
oa o@ // modify oa sound example: hoa,khoa // o (A w | oa o@ // modify oa sound example: hoa,khoa // o (A w | ||||
oị OI6 | oị OI6 | ||||
ong O# | ong O# | ||||
oe o& // Adding oe sound example: lóe sáng,toét mắt | oe o& // Adding oe sound example: lóe sáng,toét mắt | ||||
o (L01 _^_EN | |||||
.group ò | .group ò | ||||
ò O2 | ò O2 | ||||
òi OI2 | òi OI2 | ||||
òa o@2 //ò (A w2 | òa o@2 //ò (A w2 | ||||
òng O#2 | òng O#2 | ||||
òe o&2 | òe o&2 | ||||
.group ó | .group ó | ||||
ó O3 | ó O3 | ||||
óa o@3 //ó (A w3 | óa o@3 //ó (A w3 | ||||
óng O#3 | óng O#3 | ||||
óe o&3 | óe o&3 | ||||
.group ỏ | .group ỏ | ||||
ỏ O4 | ỏ O4 | ||||
ỏa o@4 //ỏ (A w4 | ỏa o@4 //ỏ (A w4 | ||||
ỏng O#4 | ỏng O#4 | ||||
ỏe o&4 | ỏe o&4 | ||||
.group õ | .group õ | ||||
õ O5 | õ O5 | ||||
õa o@5 //õ (A w5 | õa o@5 //õ (A w5 | ||||
õng O#5 | õng O#5 | ||||
õe o&5 | õe o&5 | ||||
.group ọ | .group ọ | ||||
ọ O6 | ọ O6 | ||||
ọa o@6 //ọ (A w6 | ọa o@6 //ọ (A w6 | ||||
ọng O#6 | ọng O#6 | ||||
ọe o&6 | ọe o&6 | ||||
//============================= | //============================= | ||||
.group ô | .group ô | ||||
ô o | ô o | ||||
ôi oI | ôi oI | ||||
ông o# // ông sound | ông o# // ông sound | ||||
.group ồ | .group ồ | ||||
ồ o2 | ồ o2 | ||||
ồi oI2 | ồi oI2 | ||||
ồng o#2 | ồng o#2 | ||||
.group ố | .group ố | ||||
ố o3 | ố o3 | ||||
ối oI3 | ối oI3 | ||||
ống o#3 | ống o#3 | ||||
.group ổ | .group ổ | ||||
ổ o4 | ổ o4 | ||||
ổi oI4 | ổi oI4 | ||||
ổng o#4 | ổng o#4 | ||||
.group ỗ | .group ỗ | ||||
ỗ o5 | ỗ o5 | ||||
ỗi oI5 | ỗi oI5 | ||||
ỗng o#5 | ỗng o#5 | ||||
.group ộ | .group ộ | ||||
ộ o6 | ộ o6 | ||||
ội oI6 | ội oI6 | ||||
ộng o#6 | ộng o#6 | ||||
//============================= | //============================= | ||||
.group ơ | .group ơ | ||||
ơ @: | ơ @: | ||||
ơi @:I | ơi @:I | ||||
ơu @:U | ơu @:U | ||||
.group ờ | .group ờ | ||||
ờ @:2 | ờ @:2 | ||||
ời @:I2 | ời @:I2 | ||||
ờu @:U2 | ờu @:U2 | ||||
.group ớ | .group ớ | ||||
ớ @:3 | ớ @:3 | ||||
ới @:I3 | ới @:I3 | ||||
ớu @:U3 | ớu @:U3 | ||||
.group ở | .group ở | ||||
ở @:4 | ở @:4 | ||||
ởi @:I4 | ởi @:I4 | ||||
ởu @:U4 | ởu @:U4 | ||||
.group ỡ | .group ỡ | ||||
ỡ @:5 | ỡ @:5 | ||||
ỡi @:I5 | ỡi @:I5 | ||||
ỡu @:U5 | ỡu @:U5 | ||||
.group ợ | .group ợ | ||||
ợ @:6 | ợ @:6 | ||||
ợi @:I6 | ợi @:I6 | ||||
ợu @:U6 | ợu @:U6 | ||||
//============================= | //============================= | ||||
.group u | .group u | ||||
u u | u u | ||||
u (A w | u (A w | ||||
uỗi u@j5 | uỗi u@j5 | ||||
uội u@j6 | uội u@j6 | ||||
//ung u# | //ung u# | ||||
u (L01 _^_EN | |||||
ui (L01 _^_EN | |||||
ua (L01 _^_EN | |||||
.group ù | .group ù | ||||
ù u2 | ù u2 | ||||
ù (A w2 | ù (A w2 | ||||
ùi uI2 | ùi uI2 | ||||
ùa u@2 | ùa u@2 | ||||
//ùng u#2 | //ùng u#2 | ||||
.group ú | .group ú | ||||
ú u3 | ú u3 | ||||
úi uI3 | úi uI3 | ||||
úa u@3 | úa u@3 | ||||
//úng u#3 | //úng u#3 | ||||
.group ủ | .group ủ | ||||
ủ u4 | ủ u4 | ||||
ủi uI4 | ủi uI4 | ||||
ủa u@4 | ủa u@4 | ||||
//ủng u#4 | //ủng u#4 | ||||
.group ũ | .group ũ | ||||
ũ u5 | ũ u5 | ||||
ũi uI5 | ũi uI5 | ||||
ũa u@5 | ũa u@5 | ||||
//ũng u#5 | //ũng u#5 | ||||
.group ụ | .group ụ | ||||
ụ u6 | ụ u6 | ||||
ụi uI6 | ụi uI6 | ||||
ụa u@6 | ụa u@6 | ||||
//ụng u#6 | //ụng u#6 | ||||
//============================= | //============================= | ||||
.group ư | .group ư | ||||
ư y | ư y | ||||
ưi yI | ưi yI | ||||
ưởu y@w4 | ưởu y@w4 | ||||
ưỡu y@w5 | ưỡu y@w5 | ||||
ượu y@w6 | ượu y@w6 | ||||
.group ừ | .group ừ | ||||
ừ y2 | ừ y2 | ||||
ừi yI2 | ừi yI2 | ||||
ừa y@2 | ừa y@2 | ||||
ừu yw2 | ừu yw2 | ||||
.group ứ | .group ứ | ||||
ứ y3 | ứ y3 | ||||
ứi yI3 | ứi yI3 | ||||
ứa y@3 | ứa y@3 | ||||
ứu yw3 | ứu yw3 | ||||
.group ử | .group ử | ||||
ử y4 | ử y4 | ||||
ửi yI4 | ửi yI4 | ||||
ửa y@4 | ửa y@4 | ||||
ửu yw4 | ửu yw4 | ||||
.group ữ | .group ữ | ||||
ữ y5 | ữ y5 | ||||
ữi yI5 | ữi yI5 | ||||
ữa y@5 | ữa y@5 | ||||
ữu yw5 | ữu yw5 | ||||
.group ự | .group ự | ||||
ự y6 | ự y6 | ||||
ựi yI6 | ựi yI6 | ||||
ựa y@6 | ựa y@6 | ||||
ựu yw6 | ựu yw6 | ||||
//============================= | |||||
.group y | .group y | ||||
y i | y i | ||||
yễ i@5 | yễ i@5 | ||||
yệ i@6 | yệ i@6 | ||||
// yêu i@U | // yêu i@U | ||||
.group ỳ | .group ỳ | ||||
ỳ i2 | ỳ i2 | ||||
ỳ (A j2 | ỳ (A j2 | ||||
ỳa i@2 | ỳa i@2 | ||||
.group ý | .group ý | ||||
ý i3 | ý i3 | ||||
ý (A j3 | ý (A j3 | ||||
ýa i@3 | ýa i@3 | ||||
.group ỷ | .group ỷ | ||||
ỷ i4 | ỷ i4 | ||||
ỷ (A j4 | ỷ (A j4 | ||||
ỷa i@4 | ỷa i@4 | ||||
.group ỹ | .group ỹ | ||||
ỹ i5 | ỹ i5 | ||||
ỹ (A j5 | ỹ (A j5 | ||||
ỹa i@5 | ỹa i@5 | ||||
.group ỵ | .group ỵ | ||||
ỵ i6 | ỵ i6 | ||||
ỵ (A j6 | ỵ (A j6 | ||||
ỵa i@6 | ỵa i@6 | ||||
//============================= | |||||
.group 0xce // Greek letters | .group 0xce // Greek letters | ||||
// 0xce is the first byte of the utf-8 code for these characters | // 0xce is the first byte of the utf-8 code for these characters | ||||
α a:1n_|f'a:1 | α a:1n_|f'a:1 | ||||
ά a:1n_|f'a:1 | ά a:1n_|f'a:1 | ||||
β b'e1_|t['a:1 | β b'e1_|t['a:1 | ||||
ν nw'i1 | ν nw'i1 | ||||
ξ s'i7 | ξ s'i7 | ||||
ο o1_|m'i1_|kz.'O7n | ο o1_|m'i1_|kz.'O7n | ||||
.group 0xcf // Greek letters | .group 0xcf // Greek letters | ||||
π p'i1 | π p'i1 | ||||
ρ z.'o1 | ρ z.'o1 | ||||
σ s'i3c_|m'a:1 | σ s'i3c_|m'a:1 | ||||
ω o1_|m'e1_|Q'a:7 | ω o1_|m'e1_|Q'a:7 | ||||
ώ o1_|m'e1_|Q'a:7 | ώ o1_|m'e1_|Q'a:7 | ||||
ό o1_|m'i1_|kz.'O7n | ό o1_|m'i1_|kz.'O7n | ||||
.group | .group | ||||
% f'@2n||cr'am | % f'@2n||cr'am | ||||
! _:c'@3m_|t'a:7n_: | ! _:c'@3m_|t'a:7n_: | ||||
! (\! | |||||
! (\! | |||||
// : koUl@n | // : koUl@n | ||||
D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | ||||
$ d'o||l'a | $ d'o||l'a | ||||
!= x'o#_|_b'a2N_ | != x'o#_|_b'a2N_ | ||||
>= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | ||||
<= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | ||||
__) - (_D cr'y2 | __) - (_D cr'y2 | ||||
A_) - (_D _ | A_) - (_D _ | ||||
C_) - (_D _ | C_) - (_D _ | ||||
. c'@3m_ | . c'@3m_ | ||||
. (. _: | . (. _: | ||||
\.) . | |||||
\.) . | |||||
sq 33 127 | sq 33 127 | ||||
hy 23 119 | hy 23 119 | ||||
da 46 139 | da 46 139 | ||||
ka 20 114 | |||||
ka 20 115 | |||||
rw 15 132 | rw 15 132 | ||||
pa 15 152 | pa 15 152 | ||||
prs 8 113 | prs 8 113 | ||||
bo 10 154 | bo 10 154 | ||||
kk 20 118 | kk 20 118 | ||||
fa 9 112 | fa 9 112 | ||||
ga 21 127 | |||||
ga 29 133 | |||||
tt 23 120 | tt 23 120 | ||||
ko 15 116 | ko 15 116 | ||||
kl 18 119 | kl 18 119 | ||||
h/hu_fi [h] fi | h/hu_fi [h] fi | ||||
[h] mt | [h] mt | ||||
j2/_j2 [;] base | j2/_j2 [;] base | ||||
[;] ga | |||||
j2/j2@ [;] base | j2/j2@ [;] base | ||||
[;] ga | |||||
j2/j2a [;] base | j2/j2a [;] base | ||||
[;] ga | |||||
j2/j2e [;] base | j2/j2e [;] base | ||||
[;] ga | |||||
j2/j2i [;] base | j2/j2i [;] base | ||||
[;] ga | |||||
j2/j2o [;] base | j2/j2o [;] base | ||||
[;] ga | |||||
j2/j2u [;] base | j2/j2u [;] base | ||||
[;] ga | |||||
j2/xj2 [;] base | j2/xj2 [;] base | ||||
[;] ga | |||||
j/_j [j] base | j/_j [j] base | ||||
[j] zh | [j] zh | ||||
[j] da | [j] da | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [¨-] base | |||||
l/l@ [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [¨-] base | |||||
l/la [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] tn | [K] tn | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [¨-] base | |||||
l/le [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [¨-] base | |||||
l/li [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ll/_ll [L] base | ll/_ll [L] base | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [¨-] base | |||||
l/lo [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[l;] lt | [l;] lt | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [¨-] base | |||||
l/lu [¨\7] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ufric/x [x] base | ufric/x [x] base | ||||
ufric/x2 [x2] af | ufric/x2 [x2] af | ||||
[x] ku | [x] ku | ||||
[Q2] ka | |||||
[X] kk | [X] kk | ||||
ufric/x_hr [x] base | ufric/x_hr [x] base | ||||
[x] hr | [x] hr | ||||
[x#] sr | [x#] sr | ||||
ufric/xx [X] base | ufric/xx [X] base | ||||
[Q"] base | [Q"] base | ||||
[Q] ka | |||||
ustop/c [c] base | ustop/c [c] base | ||||
ustop/k [k] base | ustop/k [k] base | ||||
[k] fr | [k] fr | ||||
ustop/k_asp [kh] consonants | ustop/k_asp [kh] consonants | ||||
[gh] hi | [gh] hi | ||||
[kh] zh | [kh] zh | ||||
[k#] ka | |||||
[kh] tn | [kh] tn | ||||
ustop/k_asp2 [kh2] ml | ustop/k_asp2 [kh2] ml | ||||
[k#] ka | |||||
ustop/k_asp_a [k#] ka | |||||
ustop/k_asp_e [k#] ka | |||||
ustop/k_asp_u [k#] ka | |||||
ustop/k_ejc [k`] am | ustop/k_ejc [k`] am | ||||
ustop/ki [k] base | ustop/ki [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] lv | [k] lv | ||||
[k] el | [k] el | ||||
[k] zhy | [k] zhy | ||||
[k#] ka | |||||
[kh] tn | [kh] tn | ||||
ustop/kr [k] base | ustop/kr [k] base | ||||
[k] base2 | [k] base2 | ||||
[p] vi | [p] vi | ||||
[p] sq | [p] sq | ||||
ustop/q [q] base | ustop/q [q] base | ||||
ustop/q2 [q] ka | |||||
ustop/q2_i [q] ka | |||||
ustop/q_u [q] base | ustop/q_u [q] base | ||||
ustop/t [t] base | ustop/t [t] base | ||||
[t] en-us | [t] en-us | ||||
[aI] hy | [aI] hy | ||||
[aI] da | [aI] da | ||||
[aI] te | [aI] te | ||||
[aI] ga | |||||
[aI] kl | [aI] kl | ||||
vdiph/ai_2 [aI] en | vdiph/ai_2 [aI] en | ||||
[aI] cy | [aI] cy | ||||
[aU] lt | [aU] lt | ||||
[aU] sk | [aU] sk | ||||
[aU] id | [aU] id | ||||
[aU] ga | |||||
[aU#] ga | |||||
vdiph/ee-e [E:] hi | vdiph/ee-e [E:] hi | ||||
vdiph/eei [EI] base2 | vdiph/eei [EI] base2 | ||||
[eI] en | [eI] en | ||||
vdiph/@i [Yi] et | vdiph/@i [Yi] et | ||||
[@I] vi | [@I] vi | ||||
[@:I] vi | [@:I] vi | ||||
[@I] ga | |||||
vdiph/&i [&i] fi | vdiph/&i [&i] fi | ||||
[&i] et | [&i] et | ||||
[aI] hi | [aI] hi | ||||
voc/j [J^] base | voc/j [J^] base | ||||
voc/Q [Q] base | voc/Q [Q] base | ||||
[Q^] base | [Q^] base | ||||
[Q] ka | |||||
[Q2] ka | |||||
voc/Q_ [Q] base | voc/Q_ [Q] base | ||||
[Q^] base | [Q^] base | ||||
[Q] nl | [Q] nl | ||||
[@] wo | [@] wo | ||||
[@:] wo | [@:] wo | ||||
[@] te | [@] te | ||||
[@] ga | |||||
[E#] ga | |||||
[I#] ga | |||||
[O#] ga | |||||
[U#] ga | |||||
[@/] ga | |||||
vowel/@- [@-] base | vowel/@- [@-] base | ||||
[r*] hr | [r*] hr | ||||
[@-] da | [@-] da | ||||
[a] sq | [a] sq | ||||
[A] da | [A] da | ||||
[?A] da | [?A] da | ||||
[a] ka | |||||
[a:] si | [a:] si | ||||
vowel/a#_3 [a#] en | vowel/a#_3 [a#] en | ||||
[a#] en-n | [a#] en-n | ||||
[A1] et | [A1] et | ||||
[A] nl | [A] nl | ||||
[a:] is | [a:] is | ||||
[0] ga | |||||
[A] tt | [A] tt | ||||
[a] ko | [a] ko | ||||
vowel/aa_9 [a] fi | vowel/aa_9 [a] fi | ||||
[i] wo | [i] wo | ||||
vowel/ii_7 [i] en | vowel/ii_7 [i] en | ||||
[i] sq | [i] sq | ||||
[i] ga | |||||
vowel/ii_8 [i] kk | vowel/ii_8 [i] kk | ||||
vowel/ii_final [i] en-us | vowel/ii_final [i] en-us | ||||
[i] en-rp | [i] en-rp | ||||
[O] it | [O] it | ||||
[O] an | [O] an | ||||
[O] pa | [O] pa | ||||
[O] ga | |||||
vowel/oo_5 [O] pl | vowel/oo_5 [O] pl | ||||
[O] is | [O] is | ||||
[O] sq | [O] sq | ||||
[u] ak | [u] ak | ||||
[u:] wo | [u:] wo | ||||
[u] bo | [u] bo | ||||
[u1] ga | |||||
[u] tt | [u] tt | ||||
vowel/u# [u:] en-sc | vowel/u# [u:] en-sc | ||||
[Y] tr | [Y] tr | ||||
vowel/V_4 [V] en-sc | vowel/V_4 [V] en-sc | ||||
[V] da | [V] da | ||||
[?V] da | [?V] da | ||||
[O] ga | |||||
vowel/V_6 [V] en-us | vowel/V_6 [V] en-us | ||||
[a#] lv | [a#] lv | ||||
vowel/y [y] base2 | vowel/y [y] base2 | ||||
[yI] is | [yI] is | ||||
[y] hy | [y] hy | ||||
vwl_af/@ [@] af | vwl_af/@ [@] af | ||||
[@] ga | |||||
vwl_af/I [I] af | vwl_af/I [I] af | ||||
vwl_af/r@ [@] af | vwl_af/r@ [@] af | ||||
[I] af | [I] af | ||||
[@] ga | |||||
vwl_de/uu_@ [UR] de | vwl_de/uu_@ [UR] de | ||||
vwl_en/aI@ [aI@] en | vwl_en/aI@ [aI@] en | ||||
[aI@] en-n | [aI@] en-n |
NextVowelStarts | NextVowelStarts | ||||
VowelStart(j/j@) | VowelStart(j/j@) | ||||
VowelStart(j/ja) | VowelStart(j/ja) | ||||
VowelStart(j/je,-60) | |||||
VowelStart(j/je,-40) | |||||
VowelStart(j/ji) | VowelStart(j/ji) | ||||
VowelStart(j/jo) | VowelStart(j/jo) | ||||
VowelStart(j/ju) | VowelStart(j/ju) |
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 180 | length 180 | ||||
FMT(vowel/a#_2) | |||||
IF thisPh(isUnstressed) THEN | |||||
FMT(vowel/a#_2) | |||||
ENDIF | |||||
FMT(vowel/a_3) | |||||
endphoneme | endphoneme | ||||
Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | ||||
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | ||||
IF nextPh(isPause2) THEN | IF nextPh(isPause2) THEN | ||||
WAV(ustop/k_asp2, 40) | |||||
WAV(ustop/k_asp, 40) | |||||
ENDIF | ENDIF | ||||
IF nextPh(l) THEN | |||||
WAV(ustop/kl) | |||||
IF nextPhW(#e) OR nextPhW(#i) THEN | |||||
WAV(ustop/k_asp_e, 40) | |||||
ELIF nextPhW(#o) OR nextPhW(#u) THEN | |||||
WAV(ustop/k_asp_u, 50) | |||||
ELSE | |||||
WAV(ustop/k_asp_a, 45) | |||||
ENDIF | ENDIF | ||||
WAV(ustop/k_asp2, 60) | |||||
endphoneme | endphoneme | ||||
import_phoneme consonants/k- | import_phoneme consonants/k- | ||||
endphoneme | endphoneme | ||||
phoneme q | |||||
vls uvl stop | |||||
lengthmod 2 | |||||
Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 | |||||
Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | |||||
IF nextPh(#i) THEN | |||||
WAV(ustop/q2_i, 40) | |||||
ENDIF | |||||
WAV(ustop/q2, 48) | |||||
endphoneme | |||||
phoneme Q | phoneme Q | ||||
import_phoneme base/r" | |||||
vcd vel frc | |||||
voicingswitch x | |||||
lengthmod 6 | |||||
Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
FMT(voc/Q) addWav(ufric/xx, 100) | |||||
endphoneme | |||||
phoneme Q2 | |||||
vcd vel frc | |||||
voicingswitch x | |||||
lengthmod 6 | |||||
Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
FMT(voc/Q) addWav(ufric/x2, 50) | |||||
endphoneme | endphoneme | ||||
phoneme r | phoneme r | ||||
import_phoneme base/R | import_phoneme base/R | ||||
endphoneme | endphoneme |
// Version 2.4 January 2013 | |||||
// short vowels | |||||
phoneme @ // Schwa, but always unstressed | |||||
vowel starttype #@ endtype #@ | |||||
unstressed | |||||
length 100 | |||||
IF nextPh(i:) THEN | |||||
Length 70 | |||||
FMT(vwl_af/r@) | |||||
ENDIF | |||||
IF nextPh(I) THEN | |||||
Length 70 | |||||
FMT(vwl_af/r@) | |||||
ENDIF | |||||
IF nextPh(e:) THEN | |||||
Length 70 | |||||
FMT(vwl_af/r@) | |||||
ENDIF | |||||
FMT(vwl_af/@) | |||||
endphoneme | |||||
phoneme @/ | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
FMT(vowel/@) | |||||
endphoneme | |||||
phoneme a | |||||
vowel starttype #a endtype #a | |||||
length 150 | |||||
FMT(vowel/a_4) | |||||
endphoneme | |||||
phoneme a# | |||||
vowel starttype #@ endtype #@ | |||||
ipa ɐ | |||||
length 120 | |||||
ChangeIfStressed(a) | |||||
FMT(vowel/a#_3) | |||||
endphoneme | |||||
phoneme E | |||||
vowel starttype #e endtype #e | |||||
length 140 | |||||
FMT(vowel/e_mid) | |||||
endphoneme | |||||
phoneme E# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(E) | |||||
ChangePhoneme(@/) | |||||
endphoneme | |||||
phoneme I | |||||
vowel starttype #i endtype #i | |||||
length 120 | |||||
FMT(vowel/ii_2) | |||||
endphoneme | |||||
phoneme i // non syllabic i for end of words | |||||
vowel starttype #i endtype #i | |||||
ipa iU+032F | |||||
length 40 | |||||
FMT(vowel/ii_7) | |||||
endphoneme | |||||
phoneme O | |||||
vowel starttype #a endtype #@ | |||||
length 140 | |||||
FMT(vowel/V_4) | |||||
endphoneme | |||||
phoneme O# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(O) | |||||
ChangePhoneme(a#) | |||||
endphoneme | |||||
phoneme U | |||||
vowel starttype #u endtype #u | |||||
length 140 | |||||
FMT(vowel/uu) | |||||
endphoneme | |||||
phoneme U# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(U) | |||||
ChangePhoneme(@/) | |||||
endphoneme | |||||
phoneme u1 | |||||
vowel starttype #u endtype #u | |||||
ipa uU+0306 | |||||
length 50 | |||||
FMT(vowel/u) | |||||
endphoneme | |||||
phoneme 0 | |||||
vowel starttype #a endtype #a | |||||
length 180 | |||||
ipa A | |||||
FMT(vowel/aa_8) | |||||
endphoneme | |||||
phoneme 0# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(0) | |||||
ChangePhoneme(a#) | |||||
endphoneme | |||||
phoneme o: | |||||
vowel starttype #o endtype #o | |||||
length 190 | |||||
FMT(vowel/o) | |||||
endphoneme | |||||
// long vowels | |||||
phoneme A: | |||||
vowel starttype #a endtype #a | |||||
length 200 | |||||
FMT(vowel/aa_2) | |||||
endphoneme | |||||
phoneme e: | |||||
vowel starttype #e endtype #e | |||||
length 210 | |||||
FMT(vowel/e) | |||||
endphoneme | |||||
phoneme i: | |||||
vowel starttype #i endtype #i | |||||
length 210 | |||||
FMT(vowel/i) | |||||
endphoneme | |||||
phoneme u: | |||||
vowel starttype #u endtype #u | |||||
length 210 | |||||
FMT(vowel/u_bck) | |||||
endphoneme | |||||
// Diphthongs | |||||
phoneme @U | |||||
vowel starttype #@ endtype #u | |||||
length 240 | |||||
FMT(vdiph/@u_3) | |||||
endphoneme | |||||
phoneme i@ | |||||
vowel starttype #i endtype #@ | |||||
length 240 | |||||
FMT(vdiph2/i@) | |||||
endphoneme | |||||
phoneme u@ | |||||
vowel starttype #u endtype #@ | |||||
length 240 | |||||
FMT(vdiph2/u@) | |||||
endphoneme | |||||
phoneme aI | |||||
vowel starttype #a endtype #i | |||||
length 250 | |||||
FMT(vdiph/ai) | |||||
endphoneme | |||||
phoneme aI# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(aI) | |||||
ChangePhoneme(a#) | |||||
endphoneme | |||||
phoneme aU | |||||
vowel starttype #a endtype #u | |||||
length 270 | |||||
FMT(vdiph/au_4) | |||||
endphoneme | |||||
phoneme aU# | |||||
vowel starttype #@ endtype #@ | |||||
length 120 | |||||
ChangeIfStressed(aU) | |||||
FMT(vdiph/au_4) | |||||
endphoneme | |||||
phoneme ; // linking j, used between (i) vowels and a following vowel | |||||
// also to palatalize consonants | |||||
liquid palatal | |||||
lengthmod 0 | |||||
IF prevPh(#i) THEN | |||||
ipa NULL // linking after i vowel, don't show in ipa | |||||
ENDIF | |||||
NextVowelStarts | |||||
VowelStart(j2/j2@) | |||||
VowelStart(j2/j2a) | |||||
VowelStart(j2/j2e) | |||||
VowelStart(j2/j2i) | |||||
VowelStart(j2/j2o) | |||||
VowelStart(j2/j2u) | |||||
EndSwitch | |||||
IF prevPh(#i) THEN | |||||
VowelEnding(j2/xj2, -40) | |||||
ENDIF | |||||
IF prevPh(isPause) THEN | |||||
FMT(j2/_j2) | |||||
ENDIF | |||||
endphoneme | |||||
endphoneme | endphoneme | ||||
phoneme kh2 | |||||
vls vel stop | |||||
lengthmod 2 | |||||
voicingswitch g | |||||
Vowelin f1=0 f2=2300 200 300 f3=-150 80 | |||||
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||||
IF nextPh(isPause2) THEN | |||||
WAV(ustop/k_asp2, 50) | |||||
ENDIF | |||||
IF nextPh(l) THEN | |||||
WAV(ustop/kl) | |||||
ENDIF | |||||
WAV(ustop/k_asp2, 90) | |||||
endphoneme | |||||
//==================================================== | |||||
// Vietnamese Phonemes - Make Huế Dialect | |||||
//==================================================== | |||||
phoneme 1 // ngang tone: level | |||||
stress | |||||
Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone | |||||
endphoneme | |||||
phoneme 2 // huyền tone: low falling | |||||
stress | |||||
Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 8 | |||||
endphoneme | |||||
phoneme 3 // sắc Tone(rising | |||||
stress | |||||
Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75 | |||||
endphoneme | |||||
phoneme 4 // hỏi Tone(curve (dipping rising) | |||||
stress | |||||
Tone(20, 5, envelope/p_512,NULL) //Tone(55, 5, envelope/p_fallrise, NULL) //30 5 m 55 5 | |||||
endphoneme | |||||
phoneme 5 // ngã tone: broken (creaking rising) | |||||
stress | |||||
Tone(50,2, envelope/p_214, envelope/vi_5amp) // 28,58 m20 85 | |||||
endphoneme | |||||
phoneme 6 // nặng Tone(drop (constricted) | |||||
stress | |||||
//length 150 // ignore because it make too short sound 75 // reduce the length of the vowel | |||||
Tone(25, 10, envelope/p_512, envelope/vi_6amp) // 40 20 | |||||
endphoneme | |||||
phoneme 7 // Tone(1 (ngang) at end of clause | |||||
stress | |||||
Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 | |||||
endphoneme | |||||
p++; // skip over the zero which terminates the list for this hash value | p++; // skip over the zero which terminates the list for this hash value | ||||
} | } | ||||
if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) | |||||
if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size)) | |||||
{ | { | ||||
fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | ||||
} | } | ||||
{ | { | ||||
if(vowel_stress[ix] == 4) | if(vowel_stress[ix] == 4) | ||||
{ | { | ||||
if(tr->langopts.stress_flags & 0x20000) | |||||
if(tr->langopts.stress_flags & S_PRIORITY_STRESS) | |||||
vowel_stress[ix] = 1; | vowel_stress[ix] = 1; | ||||
else | else | ||||
vowel_stress[ix] = 3; | vowel_stress[ix] = 3; | ||||
max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | ||||
if((max_stress < 0) && dictionary_flags) | if((max_stress < 0) && dictionary_flags) | ||||
{ | { | ||||
if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) | |||||
{ | |||||
// lang=fr: don't stress monosyllables except at end-of-clause | |||||
vowel_stress[1] = 0; | |||||
dictionary_flags[0] |= FLAG_STRESS_END2; | |||||
} | |||||
max_stress = 0; | max_stress = 0; | ||||
} | } | ||||
if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | ||||
{ | { | ||||
n = utf8_in(&letter,p-1)-1; | n = utf8_in(&letter,p-1)-1; | ||||
if(tr->letter_bits_offset > 0) | if(tr->letter_bits_offset > 0) | ||||
{ | { | ||||
// not a Latin alphabet, switch to the default Latin alphabet language | // not a Latin alphabet, switch to the default Latin alphabet language | ||||
p += (wc_bytes-1); | p += (wc_bytes-1); | ||||
} | } | ||||
if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset)) | |||||
if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) | |||||
{ | { | ||||
// switch to the nominated language for this alphabet | |||||
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||||
return(0); | |||||
if(tr->langopts.alt_alphabet == alphabet->offset) | |||||
{ | |||||
sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); | |||||
return(0); | |||||
} | |||||
if(alphabet->flags & AL_WORDS) | |||||
{ | |||||
// switch to the nominated language for this alphabet | |||||
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||||
return(0); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
ALPHABET *alphabet; | ALPHABET *alphabet; | ||||
int language; | int language; | ||||
int phontab_1; | int phontab_1; | ||||
int alphabet_name_switch; | |||||
char *ph_alphabet_end; | |||||
char capital[20]; | char capital[20]; | ||||
char ph_buf[80]; | char ph_buf[80]; | ||||
char ph_buf2[80]; | char ph_buf2[80]; | ||||
return(0); | return(0); | ||||
} | } | ||||
alphabet_name_switch = 0; | |||||
alphabet = AlphabetFromChar(letter); | alphabet = AlphabetFromChar(letter); | ||||
if(alphabet != current_alphabet) | if(alphabet != current_alphabet) | ||||
{ | { | ||||
current_alphabet = alphabet; | current_alphabet = alphabet; | ||||
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) | if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) | ||||
{ | { | ||||
phontab_1 = tr->phoneme_tab_ix; | |||||
ph_buf2[0] = 0; | |||||
if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||||
if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) | |||||
{ | { | ||||
// Can't find the local name for this alphabet, use the English name | |||||
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||||
Lookup(translator2, alphabet->name, ph_buf2); | |||||
// don't say the alphabet name | |||||
} | } | ||||
else | else | ||||
if(translator != tr) | |||||
{ | { | ||||
phontab_1 = tr->phoneme_tab_ix; | phontab_1 = tr->phoneme_tab_ix; | ||||
strcpy(ph_buf2, ph_alphabet); | |||||
ph_alphabet[2] = translator->phoneme_tab_ix; | |||||
} | |||||
if(ph_buf2[0] != 0) | |||||
{ | |||||
// we used a different language for the alphabet name (now in ph_buf2) | |||||
ph_alphabet[0] = phonPAUSE; | |||||
ph_alphabet[1] = phonSWITCH; | |||||
strcpy(&ph_alphabet[3], ph_buf2); | |||||
len = strlen(ph_buf2) + 3; | |||||
ph_alphabet[len] = phonSWITCH; | |||||
ph_alphabet[len+1] = phontab_1; | |||||
ph_alphabet[len+2] = 0; | |||||
ph_buf2[0] = 0; | |||||
if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||||
{ | |||||
// Can't find the local name for this alphabet, use the English name | |||||
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||||
Lookup(translator2, alphabet->name, ph_buf2); | |||||
} | |||||
else | |||||
if(translator != tr) | |||||
{ | |||||
phontab_1 = tr->phoneme_tab_ix; | |||||
strcpy(ph_buf2, ph_alphabet); | |||||
ph_alphabet[2] = translator->phoneme_tab_ix; | |||||
} | |||||
if(ph_buf2[0] != 0) | |||||
{ | |||||
// we used a different language for the alphabet name (now in ph_buf2) | |||||
ph_alphabet[0] = phonPAUSE; | |||||
ph_alphabet[1] = phonSWITCH; | |||||
strcpy(&ph_alphabet[3], ph_buf2); | |||||
len = strlen(ph_buf2) + 3; | |||||
ph_alphabet[len] = phonSWITCH; | |||||
ph_alphabet[len+1] = phontab_1; | |||||
ph_alphabet[len+2] = 0; | |||||
ph_alphabet_end = &ph_alphabet[len]; | |||||
alphabet_name_switch = ph_alphabet[2]; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
// caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number | // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number | ||||
if(ph_buf[0] == 0) | if(ph_buf[0] == 0) | ||||
{ | { | ||||
if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | ||||
ph_buf[len+2] = 0; | ph_buf[len+2] = 0; | ||||
} | } | ||||
} | } | ||||
if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0)) | |||||
{ | |||||
ph_alphabet_end[0]= 0; | |||||
} | |||||
} | } | ||||
if(ph_buf[0] == 0) | if(ph_buf[0] == 0) |
{ | { | ||||
// in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | ||||
// stress. But not for the last phoneme of a stressed word | // stress. But not for the last phoneme of a stressed word | ||||
if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||||
if((tr->langopts.stress_flags & S_NO_DIM) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||||
{ | { | ||||
// An unstressed final vowel of a stressed word | // An unstressed final vowel of a stressed word | ||||
unstress_count=1; // try again for next syllable | unstress_count=1; // try again for next syllable |
{ | { | ||||
// this is the last syllable in the clause, lengthen it - more for short vowels | // this is the last syllable in the clause, lengthen it - more for short vowels | ||||
len = (p->ph->std_length * 2); | len = (p->ph->std_length * 2); | ||||
if(tr->langopts.stress_flags & 0x40000) | |||||
if(tr->langopts.stress_flags & S_EO_CLAUSE1) | |||||
len=200; // don't lengthen short vowels more than long vowels at end-of-clause | len=200; // don't lengthen short vowels more than long vowels at end-of-clause | ||||
length_mod = length_mod * (256 + (280 - len)/3)/256; | length_mod = length_mod * (256 + (280 - len)/3)/256; | ||||
} | } |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.46.43 07.Mar.13"; | |||||
const char *version_string = "1.46.44 08.Mar.13"; | |||||
const int version_phdata = 0x014640; | const int version_phdata = 0x014640; | ||||
int option_device_number = -1; | int option_device_number = -1; |
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->letter_bits_offset = OFFSET_ETHIOPIC; | tr->letter_bits_offset = OFFSET_ETHIOPIC; | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||||
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress | |||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | ||||
// tr->langopts.intonation_group = 4; | // tr->langopts.intonation_group = 4; | ||||
// 'diminished' is an unstressed final syllable | // 'diminished' is an unstressed final syllable | ||||
tr->langopts.stress_flags = 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||||
tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | ||||
// tr->langopts.word_gap = 1; | // tr->langopts.word_gap = 1; | ||||
tr->langopts.vowel_pause = 2; | tr->langopts.vowel_pause = 2; | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
// tr->langopts.unstressed_wd1 = 3; | // tr->langopts.unstressed_wd1 = 3; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x10 | 0x20000; | |||||
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; | |||||
tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
tr->langopts.unstressed_wd1 = 2; | tr->langopts.unstressed_wd1 = 2; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
case L('k','a'): // Georgian | case L('k','a'): // Georgian | ||||
{ | { | ||||
// character codes offset by 0x1080 | // character codes offset by 0x1080 | ||||
static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0}; | |||||
static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0}; | |||||
static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; | |||||
static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, | |||||
0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; | |||||
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | ||||
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | ||||
SetLetterBits(tr,LETTERGP_A,ka_vowels); | SetLetterBits(tr,LETTERGP_A,ka_vowels); | ||||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.max_initial_consonants = 7; | tr->langopts.max_initial_consonants = 7; | ||||
tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; | tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; | ||||
tr->langopts.alt_alphabet = OFFSET_CYRILLIC; | |||||
tr->langopts.alt_alphabet_lang = "ru"; | |||||
} | } | ||||
break; | break; | ||||
{ | { | ||||
tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x20; | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
{ | { | ||||
tr->charset_a0 = charsets[4]; // ISO-8859-4 | tr->charset_a0 = charsets[4]; // ISO-8859-4 | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x20; | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
SetupTranslator(tr,stress_lengths_om,stress_amps_om); | SetupTranslator(tr,stress_lengths_om,stress_amps_om); | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x16 + 0x80000; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000; | |||||
} | } | ||||
break; | break; | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | ||||
tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; | |||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | ||||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | ||||
SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x100 + 0x6; | |||||
tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY; | |||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | ||||
case L('r','w'): // Kiryarwanda | case L('r','w'): // Kiryarwanda | ||||
{ | { | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x16; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x16; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | ||||
tr->langopts.max_initial_consonants = 5; | tr->langopts.max_initial_consonants = 5; | ||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
tr->letter_bits_offset = OFFSET_SINHALA; | tr->letter_bits_offset = OFFSET_SINHALA; | ||||
case L('s','l'): // Slovenian | case L('s','l'): // Slovenian | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | ||||
tr->langopts.stress_flags = 0x20; | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | ||||
tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | ||||
SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x16 + 0x100; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C; | |||||
SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | ||||
tr->langopts.accents = 2; // "capital" after letter name | tr->langopts.accents = 2; // "capital" after letter name | ||||
tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; | ||||
tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | ||||
SetupTranslator(tr,stress_lengths_th,stress_amps_th); | SetupTranslator(tr,stress_lengths_th,stress_amps_th); | ||||
tr->langopts.stress_rule = 0; // stress on final syllable of a "word" | tr->langopts.stress_rule = 0; // stress on final syllable of a "word" | ||||
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||||
tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) | |||||
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | 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.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
// tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | // tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | ||||
tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | ||||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | ||||
tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||||
tr->langopts.param[LOPT_SUFFIX] = 1; | tr->langopts.param[LOPT_SUFFIX] = 1; | ||||
if(name2 == L('a','z')) | if(name2 == L('a','z')) | ||||
SetCyrillicLetters(tr); | SetCyrillicLetters(tr); | ||||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | ||||
} | } | ||||
break; | break; | ||||
SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" | ||||
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||||
tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) | |||||
tr->langopts.vowel_pause = 0; | tr->langopts.vowel_pause = 0; | ||||
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | 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.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | ||||
tr->langopts.param[LOPT_REDUCE] = 2; | tr->langopts.param[LOPT_REDUCE] = 2; | ||||
tr->langopts.stress_rule = 5; | tr->langopts.stress_rule = 5; | ||||
tr->langopts.stress_flags = 0x0020; // waas 0x1010 | |||||
tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | ||||
tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands | tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands |
if(switch_phonemes >= 0) | if(switch_phonemes >= 0) | ||||
{ | { | ||||
// this word uses a different phoneme table | |||||
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
{ | |||||
//previous phoneme is also a phonSWITCH, just change its phoneme table number | |||||
n_ph_list2--; | |||||
} | |||||
if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) | |||||
{ | |||||
// the new word starts with a phoneme table switch, so there's no need to switch before it. | |||||
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
{ | |||||
//previous phoneme is also a phonSWITCH, delete it | |||||
n_ph_list2--; | |||||
} | |||||
} | |||||
else | else | ||||
{ | { | ||||
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||||
// this word uses a different phoneme table | |||||
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
{ | |||||
//previous phoneme is also a phonSWITCH, just change its phoneme table number | |||||
n_ph_list2--; | |||||
} | |||||
else | |||||
{ | |||||
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||||
} | |||||
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||||
} | } | ||||
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||||
} | } | ||||
// remove initial pause from a word if it follows a hyphen | // remove initial pause from a word if it follows a hyphen | ||||
} | } | ||||
static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL}; | |||||
int UpperCaseInWord(Translator *tr, char *word, int c) | |||||
{//===================================================== | |||||
int ix; | |||||
int len; | |||||
const char *p; | |||||
if(tr->translator_name == L('g','a')) | |||||
{ | |||||
// Irish | |||||
for(ix=0; ; ix++) | |||||
{ | |||||
if((p = UCase_ga[ix]) == NULL) | |||||
break; | |||||
len = strlen(p); | |||||
if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) | |||||
{ | |||||
if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) | |||||
return(1); | |||||
} | |||||
} | |||||
} | |||||
return(0); | |||||
} | |||||
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) | void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) | ||||
{//========================================================================================================== | {//========================================================================================================== | ||||
int ix; | int ix; | ||||
{ | { | ||||
if(iswlower(prev_in)) | if(iswlower(prev_in)) | ||||
{ | { | ||||
c = ' '; // lower case followed by upper case, treat as new word | |||||
space_inserted = 1; | |||||
prev_in_save = c; | |||||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||||
// lower case followed by upper case in a word | |||||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||||
{ | |||||
// convert to lower case and continue | |||||
c = towlower(c); | |||||
} | |||||
else | |||||
{ | |||||
c = ' '; // lower case followed by upper case, treat as new word | |||||
space_inserted = 1; | |||||
prev_in_save = c; | |||||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||||
} | |||||
} | } | ||||
else | else | ||||
if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) |
#define S_NO_DIM 0x02 | #define S_NO_DIM 0x02 | ||||
#define S_FINAL_DIM 0x04 | #define S_FINAL_DIM 0x04 | ||||
#define S_FINAL_NO_2 0x10 | |||||
#define S_NO_AUTO_2 0x20 | |||||
#define S_2_TO_HEAVY 0x40 | |||||
#define S_FIRST_PRIMARY 0x80 | |||||
#define S_2_SYL_2 0x1000 | |||||
#define S_INITIAL_2 0x2000 | |||||
#define S_NO_AUTO_DIM 0x10000 | |||||
#define S_HYPEN_UNSTRESS 0x100000 | |||||
#define S_NO_EOC_LENGTHEN 0x200000 | |||||
// bit0=don't stress monosyllables, except at end of clause | |||||
#define S_FINAL_DIM_ONLY 0x06 | |||||
// bit1=don't set diminished stress, | // bit1=don't set diminished stress, | ||||
// bit2=mark unstressed final syllables as diminished | // bit2=mark unstressed final syllables as diminished | ||||
// bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words | // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words | ||||
#define S_FINAL_NO_2 0x10 | |||||
// bit4=don't allow secondary stress on last syllable | // bit4=don't allow secondary stress on last syllable | ||||
#define S_NO_AUTO_2 0x20 | |||||
// bit5-don't use automatic secondary stress | // bit5-don't use automatic secondary stress | ||||
#define S_2_TO_HEAVY 0x40 | |||||
// bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | ||||
#define S_FIRST_PRIMARY 0x80 | |||||
// bit7=if more than one primary stress, make the subsequent primaries to secondary stress | // bit7=if more than one primary stress, make the subsequent primaries to secondary stress | ||||
#define S_FINAL_STRESS_C 0x100 | |||||
// bit8=stress last syllable if it doesn't end in a vowel | // bit8=stress last syllable if it doesn't end in a vowel | ||||
#define S_FINAL_SPANISH 0x200 | |||||
// bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | ||||
#define S_2_SYL_2 0x1000 | |||||
// bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress | // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress | ||||
#define S_INITIAL_2 0x2000 | |||||
// bit13= If there is only one syllable before the primary stress, give it a secondary stress | // bit13= If there is only one syllable before the primary stress, give it a secondary stress | ||||
// bit15= Give stress to the first unstressed syllable | |||||
// bit16= Don't diminish consecutive syllables within a word. | |||||
#define S_PRIORITY_STRESS 0x20000 | |||||
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | ||||
#define S_EO_CLAUSE1 0x40000 | |||||
// bit18= don't lengthen short vowels more than long vowels at end-of-clause | // bit18= don't lengthen short vowels more than long vowels at end-of-clause | ||||
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
#define S_HYPEN_UNSTRESS 0x100000 | |||||
// bit20= hyphenated words, 2nd part is unstressed | // bit20= hyphenated words, 2nd part is unstressed | ||||
#define S_NO_EOC_LENGTHEN 0x200000 | |||||
// bit21= don't lengthen vowels at end-of-clause | // bit21= don't lengthen vowels at end-of-clause | ||||
// bit15= Give stress to the first unstressed syllable | |||||
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
int stress_flags; | int stress_flags; | ||||
int unstressed_wd1; // stress for $u word of 1 syllable | int unstressed_wd1; // stress for $u word of 1 syllable | ||||
int unstressed_wd2; // stress for $u word of >1 syllable | int unstressed_wd2; // stress for $u word of >1 syllable | ||||
int listx; // compile *_listx after *list | int listx; // compile *_listx after *list | ||||
const unsigned int *replace_chars; // characters to be substitutes | const unsigned int *replace_chars; // characters to be substitutes | ||||
const char *ascii_language; // switch to this language for Latin characters | const char *ascii_language; // switch to this language for Latin characters | ||||
int alt_alphabet; // offset for another language to recognize | |||||
const char *alt_alphabet_lang; // language for the alt_alphabet | |||||
int max_lengthmod; | int max_lengthmod; | ||||
int lengthen_tonic; // lengthen the tonic syllable | int lengthen_tonic; // lengthen the tonic syllable | ||||
int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | ||||
void InitText2(void); | void InitText2(void); | ||||
int IsDigit(unsigned int c); | int IsDigit(unsigned int c); | ||||
int IsAlpha(unsigned int c); | int IsAlpha(unsigned int c); | ||||
int IsVowel(Translator *tr, int c); | |||||
int isspace2(unsigned int c); | int isspace2(unsigned int c); | ||||
int towlower2(unsigned int c); | int towlower2(unsigned int c); | ||||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); |
#define DEFAULT_LANGUAGE_PRIORITY 5 | #define DEFAULT_LANGUAGE_PRIORITY 5 | ||||
#define N_VOICES_LIST 200 | |||||
#define N_VOICES_LIST 250 | |||||
static int n_voices_list = 0; | static int n_voices_list = 0; | ||||
static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
static int len_path_voices; | static int len_path_voices; | ||||
static const char *voices_europe = | static const char *voices_europe = | ||||
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | ||||
strcpy(voicename,vname); | |||||
if(voicename[0]==0) | |||||
strcpy(voicename,"default"); | |||||
strncpy0(voicename, vname, sizeof(voicename)); | |||||
if(control & 0x10) | if(control & 0x10) | ||||
{ | { | ||||
strcpy(buf,vname); | strcpy(buf,vname); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(voicename[0]==0) | |||||
strcpy(voicename,"default"); | |||||
sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | ||||
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | ||||
return; | return; | ||||
do { | do { | ||||
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
ftype = GetFileLength(fname); | |||||
if(n_voices_list >= (N_VOICES_LIST-2)) | |||||
break; // voices list is full | |||||
if((ftype == -2) && (FindFileData.cFileName[0] != '.')) | |||||
{ | |||||
// a sub-sirectory | |||||
GetVoices(fname); | |||||
} | |||||
else | |||||
if(ftype > 0) | |||||
if(FindFileData.cFileName[0] != '.') | |||||
{ | { | ||||
// a regular line, add it to the voices list | |||||
if((f_voice = fopen(fname,"r")) == NULL) | |||||
continue; | |||||
// pass voice file name within the voices directory | |||||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
fclose(f_voice); | |||||
if(voice_data != NULL) | |||||
{ | |||||
voices_list[n_voices_list++] = voice_data; | |||||
} | |||||
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
ftype = GetFileLength(fname); | |||||
if(ftype == -2) | |||||
{ | |||||
// a sub-sirectory | |||||
GetVoices(fname); | |||||
} | |||||
else | |||||
if(ftype > 0) | |||||
{ | |||||
// a regular line, add it to the voices list | |||||
if((f_voice = fopen(fname,"r")) == NULL) | |||||
continue; | |||||
// pass voice file name within the voices directory | |||||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
fclose(f_voice); | |||||
if(voice_data != NULL) | |||||
{ | |||||
voices_list[n_voices_list++] = voice_data; | |||||
} | |||||
} | |||||
} | } | ||||
} while(FindNextFileA(hFind, &FindFileData) != 0); | } while(FindNextFileA(hFind, &FindFileData) != 0); | ||||
FindClose(hFind); | FindClose(hFind); | ||||
if(n_voices_list >= (N_VOICES_LIST-2)) | if(n_voices_list >= (N_VOICES_LIST-2)) | ||||
break; // voices list is full | break; // voices list is full | ||||
if(ent->d_name[0] == '.') | |||||
continue; | |||||
sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | ||||
ftype = GetFileLength(fname); | ftype = GetFileLength(fname); | ||||
if((ftype == -2) && (ent->d_name[0] != '.')) | |||||
if(ftype == -2) | |||||
{ | { | ||||
// a sub-sirectory | // a sub-sirectory | ||||
GetVoices(fname); | GetVoices(fname); | ||||
espeak_ERROR SetVoiceByName(const char *name) | espeak_ERROR SetVoiceByName(const char *name) | ||||
{//========================================= | {//========================================= | ||||
espeak_VOICE *v; | espeak_VOICE *v; | ||||
int ix; | |||||
espeak_VOICE voice_selector; | espeak_VOICE voice_selector; | ||||
char *variant_name; | char *variant_name; | ||||
static char buf[60]; | static char buf[60]; | ||||
strncpy0(buf,name,sizeof(buf)); | strncpy0(buf,name,sizeof(buf)); | ||||
variant_name = ExtractVoiceVariantName(buf, 0, 1); | variant_name = ExtractVoiceVariantName(buf, 0, 1); | ||||
for(ix=0; ;ix++) | |||||
{ | |||||
// convert voice name to lower case (ascii) | |||||
if((buf[ix] = tolower(buf[ix])) == 0) | |||||
break; | |||||
} | |||||
memset(&voice_selector,0,sizeof(voice_selector)); | memset(&voice_selector,0,sizeof(voice_selector)); | ||||
// voice_selector.name = buf; | |||||
voice_selector.name = (char *)name; // include variant name in voice stack ?? | voice_selector.name = (char *)name; // include variant name in voice stack ?? | ||||
// first check for a voice with this filename | // first check for a voice with this filename |