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
@@ -68,7 +68,7 @@ r R R3 s S t T tS | |||
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: | |||
o o: u u: Y y y: Y: | |||
@@ -104,7 +104,7 @@ p Q r R s s; t T | |||
ts v x z | |||
Dictionary en_dict 2013-03-06 | |||
Dictionary en_dict 2013-03-08 | |||
0 0# 3 3: @ @- @2 @5 | |||
@L a a# A: A@ aa aI aI3 | |||
@@ -121,7 +121,7 @@ t T t2 tS v w x z | |||
Z z# | |||
Dictionary eo_dict 2013-01-24 | |||
Dictionary eo_dict 2013-03-08 | |||
@- a aI aU e eI eU i | |||
o oI u uI | |||
@@ -206,7 +206,7 @@ q r r. s S s. t T | |||
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 | |||
I i: o o: u U u2 u: | |||
@@ -379,7 +379,7 @@ S s; S; t t; tS ts tS; | |||
ts; v w x z Z Z; | |||
Dictionary pt_dict 2013-03-07 | |||
Dictionary pt_dict 2013-03-08 | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
@@ -491,7 +491,7 @@ p Q r R s S t tS | |||
v w z Z | |||
Dictionary vi_dict 2013-02-16 | |||
Dictionary vi_dict 2013-03-08 | |||
@ @: @:I @:U @I @U a a: | |||
a:I a:U aI aU e E eU EU | |||
@@ -603,17 +603,17 @@ N n^ p q R s S S; | |||
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: | |||
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 | |||
@@ -734,7 +734,7 @@ s s. S; t t. th th. tS | |||
v w z | |||
Dictionary ka_dict 2013-02-01 | |||
Dictionary ka_dict 2013-03-08 | |||
@ @- a e i o u | |||
@@ -884,3 +884,16 @@ d. dh dh. g gh h H j | |||
J Jh k kh l m n N | |||
n. n^ p ph r r. s S | |||
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 |
@@ -127,6 +127,7 @@ _, k0m@ | |||
_- h,aIf@n | |||
?3 _- daS | |||
_. d0t | |||
?3_. pi@rI@d | |||
_: koUl@n | |||
_; sEmIk'oUl@n | |||
_< lEsDan |
@@ -3679,8 +3679,8 @@ | |||
legged lEgId | |||
// Ab) le @L | |||
C) le (ton_ @L | |||
Ab) ler (_ l@ | |||
Ab) le (C_ l@ | |||
Ab) ler (_ l3 | |||
Ab) le (B_ l@ | |||
Ab) led (_ @Ld | |||
&) lem (ent @Lm | |||
&p) lem (ent lIm |
@@ -13,214 +13,215 @@ | |||
.group a | |||
_) a(_ a | |||
a a | |||
aj aI | |||
aŭ aU | |||
_) a (_ a | |||
a a | |||
aj aI | |||
aŭ aU | |||
.group b | |||
_) b(_ bo | |||
b b | |||
_) b (_ bo | |||
b b | |||
.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 | |||
_) 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 | |||
_) e(_ e | |||
e e | |||
ej eI | |||
eŭ eU | |||
_) e (_ e | |||
e e | |||
ej eI | |||
eŭ eU | |||
.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 | |||
_) g(_ go | |||
g g | |||
gh (K dZ | |||
_) g (_ go | |||
g g | |||
gh (K dZ | |||
.group h | |||
_) h(_ ho | |||
h h | |||
hh x | |||
_) h (_ ho | |||
h h | |||
hh x | |||
.group i | |||
_) i(_ i | |||
i i | |||
_) i (_ i | |||
i i | |||
.group j | |||
_) j(_ jo | |||
j j | |||
jh (C Z | |||
_) j (_ jo | |||
j j | |||
jh (C Z | |||
.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 | |||
_) l(_ lo | |||
l l | |||
ll (_ l | |||
_) l (_ lo | |||
l l | |||
ll (_ l | |||
.group m | |||
_) m(_ mo | |||
m m | |||
_) m (_ mo | |||
m m | |||
.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 | |||
_) 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 | |||
_) 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 | |||
_) q(_ kwo | |||
q k | |||
qu kv | |||
_) q (_ kwo | |||
q k | |||
qu kv | |||
.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 | |||
_) 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 | |||
_) 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 | |||
_) u(_ u | |||
u u | |||
uj uI | |||
_) u (_ u | |||
u u | |||
uj uI | |||
.group v | |||
_) v(_ vo | |||
v v | |||
_) v (_ vo | |||
v v | |||
.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 | |||
_) x(_ ikso | |||
x ks | |||
_) x z // foreign words | |||
_) x (_ ikso | |||
x ks | |||
_) x z // foreign words | |||
.group y | |||
_) y(_ ipsilono | |||
y j | |||
K) y (K i | |||
_) y (_ ipsilono | |||
y j | |||
K) y (K i | |||
.group z | |||
_) z(_ zo | |||
z z | |||
_) z (_ zo | |||
z z | |||
.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_: | |||
@@ -0,0 +1,245 @@ | |||
// 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 | |||
@@ -0,0 +1,430 @@ | |||
// 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: | |||
@@ -173,6 +173,8 @@ nyargon) c (cs ts | |||
udvaron) c (ser ts | |||
pere) c (cs ts | |||
licen) ccs ts|tS | |||
nyol) c (csat ts | |||
pokró) c (sá ts | |||
.group ch | |||
anar) ch (i h | |||
@@ -452,6 +454,11 @@ szomszé) d (sor d | |||
herná) d (sz d | |||
szaba) d (szent 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 | |||
fogó) dz (kod ts | |||
@@ -502,6 +509,7 @@ kapáló) dz z | |||
gyűrű) dz (ik z | |||
burkoló) dz z | |||
.group e | |||
e E | |||
000_-) el (_ REl // double R for 1000-el | |||
@@ -630,6 +638,12 @@ szentsé) g (gy g | |||
világossá) g (gy g | |||
vilá) 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 | |||
gy J | |||
@@ -1005,7 +1019,8 @@ szivárvá) ny (játsz n^ | |||
utá) n (nyom n | |||
verse) ny (játék n^ | |||
_elle) n (jav n | |||
vagyo) n (jog n | |||
vagyo) n (jog n | |||
nny (elv n|n^ | |||
.group o | |||
o o | |||
@@ -1064,7 +1079,7 @@ vagyo) n (jog n | |||
s S | |||
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 | |||
dns-) sz s | |||
dns-) sz s | |||
föld) s (ánc S | |||
?1 hel) s (inki z | |||
ki) s (ebb SS | |||
@@ -1146,6 +1161,7 @@ _tetszé) s S | |||
ki) s (sziget S | |||
ki) s (szőlő S | |||
körö) s (szeg S | |||
kolbászo) s S | |||
.group ss | |||
ssz ss2 | |||
@@ -1640,9 +1656,47 @@ _kemene) ssz Ss | |||
_szamo) ssz Ss | |||
_szilvá) 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 | |||
sz s | |||
@@ -1699,6 +1753,10 @@ fáklyá) sz (ene Sz | |||
para) szts (üte st|S | |||
para) sztsz (ag 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 | |||
t t | |||
@@ -1842,7 +1900,7 @@ szögle) t (szob t | |||
vizi) t (szob t | |||
zár) t (szék t | |||
szé) t (szortír t | |||
_robo) t (szoftve t | |||
_robo) t (szoftve t | |||
.group tj | |||
C) tj c | |||
@@ -1929,7 +1987,7 @@ természe) tj (og tj | |||
_tisztele) tj (el tj | |||
zené) tj (átsz tj | |||
szen) tj (akab tj | |||
közérze) tj (aví tj | |||
közérze) tj (aví tj | |||
.group ts | |||
ts (_S2 tS //general rule with word end of ts letters | |||
@@ -2144,8 +2202,8 @@ felira) ts (áv t|S | |||
pö) tsz (en ts: | |||
_á) tsz (orult t|s | |||
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 | |||
tt t: | |||
@@ -2411,6 +2469,8 @@ csatlako) z (tok s | |||
tí) z (sáv z | |||
_tí) z (shill z | |||
topá) z z | |||
dör) zsz (ör Z|z | |||
raj) z (sabl z | |||
.group | |||
$ dolla:R2 |
@@ -139,14 +139,14 @@ | |||
ჺ | |||
// 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 | |||
$ dolari |
@@ -651,7 +651,6 @@ antonieta $alt2 | |||
apego $alt2 $noun | |||
apelo $alt $verb | |||
aposto $alt $verb | |||
apreço $alt2 | |||
aperto $alt2 $noun | |||
apoio $alt $verb | |||
aprovo $alt | |||
@@ -713,6 +712,7 @@ choro $alt2 $noun | |||
chovesse $alt2 | |||
chupeta $alt2 | |||
clamores $alt2 | |||
clero $alt | |||
coco $alt2 | |||
cofre $alt | |||
cogumelo $alt | |||
@@ -910,6 +910,7 @@ palacete $alt2 | |||
palheta $alt2 | |||
panfleto $alt2 | |||
pangeia $alt | |||
panqueca p,&~Nk'Ek& | |||
pantera $alt | |||
paralelo $alt | |||
parede $alt2 | |||
@@ -932,7 +933,6 @@ portos $alt | |||
pose $alt2 | |||
povos $alt | |||
poxa p'oS& | |||
preço $alt2 | |||
primavera $alt | |||
provo $alt | |||
quarteto $alt2 |
@@ -1,4 +1,5 @@ | |||
// translation rules Brazilian | |||
// translation rules Brazilian | |||
// This file is UTF-8 encoded | |||
// Options | |||
@@ -365,6 +366,8 @@ _compreend) e (L06_ e | |||
_entend) e (L06_ e | |||
_estend) e (L06_ e | |||
respond) e (L06_ e // cor- | |||
_enraivec) e (L07_ e | |||
_espairec) e (L07_ e | |||
bat) e (L07_ e // re- com- | |||
ced) e (L07_ e // pro- con- su- | |||
met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | |||
@@ -416,7 +419,9 @@ entend) e (L07_ e | |||
preend) e (L07_ e // sur- com- | |||
respond) e (L07_ e // cor- | |||
qu) e (brL04_ E | |||
acel) e (rL04_ E / des- | |||
_hosp) e (dL03_ E | |||
_in) e (ptL03_ E | |||
_gr) e (gL03_ e | |||
_n) e (grL03_ e | |||
_estr) ei (L03_ EI | |||
@@ -449,6 +454,7 @@ respond) e (L07_ e // cor- | |||
_bez) e (rrL03_ e | |||
_inv) e (rtL03_ e | |||
_f) e (rvL03_ e | |||
_enraiv) e (çL03_ e | |||
_p) e (sL01_ E | |||
_d) e (scL02_ E | |||
_cr) e (scL02_ E | |||
@@ -485,8 +491,10 @@ _emagr) e (çL03 | |||
conh) e (çL03_ e // re- | |||
_esqu) e (çL03_ e | |||
_forn) e (çL03_ e | |||
_obed) e (çL03_ e | |||
obed) e (çL03_ e / des- | |||
_ofer) e (çL03_ e | |||
pr) e (çL03_ e / a- | |||
_espair) e (çL03_ e | |||
abast) e (çL03_ e // re- | |||
_aborr) e (çL03_ e | |||
_agrad) e (çL03_ e |
@@ -1015,6 +1015,7 @@ _தணிகா) ச (ல tSV | |||
_) ச (வான tSV | |||
_) ச (ாக்கட்டி tS | |||
_) சாக்ப (ீL04 tSa:kp | |||
_) சாக்லெட் tSa:klet. | |||
_) சாக்லேட் tSa:kle:t. | |||
_) சா (ட்டர்ஜி tSe: | |||
_) ச (ாணக்கிய tS | |||
@@ -1048,12 +1049,14 @@ _தணிகா) ச (ல tSV | |||
ஆ) ச (ாரங்கள tS | |||
ஆ) ச (ாரத் tS | |||
ஆ) ச (ாரம tS | |||
_சிவா) ச (ாரி tS | |||
_ரங்கா) ச (ாரி tS | |||
_வரதா) ச (ாரி tS | |||
_வேதா) ச (ாரி tS | |||
_கிருஷ்ணமா) ச (ாரி tS | |||
_தேசிகா) ச (ாரி tS | |||
_பட்டா) ச (ாரி tS | |||
_மத்வா) ச (ாரி tS | |||
அனந்தா) ச (ாரி tS | |||
அன்னமா) ச (ாரி tS | |||
ஆ) ச (ாரிய_ tS | |||
@@ -2406,6 +2409,7 @@ _சி) த்ரலேக (ா trVle:k | |||
_) ப (ட்டக்ஸ bV | |||
_) ப (ட்டன bV | |||
_) ப (ட்டன_ pV | |||
_) ப (ட்டாசாரி bV | |||
_) ப (தில bV | |||
_) பத்த (ிரகாளி bVdd | |||
_) பத்திரப் (_ bVttirVp | |||
@@ -2814,6 +2818,7 @@ _விளையாடு_) ப (ாம்பே p | |||
_) ப (ிடில f | |||
_) ப (ிட்சு b | |||
_) ப (ிட்டடி b | |||
_) பிந்தி (ரன்வாலே bind | |||
_) ப (ினாமி b | |||
_) ப (ினிஷ f | |||
_) ப (ின்_லேடன b | |||
@@ -3744,6 +3749,7 @@ _ஞானப்) பிரக (ா prVk | |||
_மL06ாப்) பி (ரப p | |||
வீண்) பி (ரமை b | |||
துஷ்) பி (ரயோக p | |||
_சொற்) பி (ரயோக p | |||
L03ந்தப்) பி (ரளய p | |||
_சொற்) பி (ரவாக p | |||
எக்ஸ்) பிர (ஸ pre |
@@ -77,28 +77,42 @@ ỵ ỵ | |||
//================================ | |||
// 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 | |||
b b | |||
_) b _b | |||
//b($w_alt2 _^_EN | |||
.group c | |||
c g //k | |||
c (_ kh | |||
ch c // try [tS;] [tS] [c] | |||
ce (_ _^_EN | |||
_) cl _^_EN | |||
.group d | |||
d J^ // try [z] [J] [dZ] [dZ;] [J^] | |||
d (_ _^_EN | |||
.group đ | |||
đ d | |||
_) đ _d | |||
.group f | |||
f f | |||
//f f | |||
_) f _^_EN | |||
f (_ _^_EN | |||
.group g | |||
g Q // try [g] [Q] | |||
gh Q // or [g] [Q] | |||
@@ -107,7 +121,7 @@ ỵ ỵ | |||
//g (í J^ | |||
//g (ỉ J^ | |||
//g (ĩ J^ | |||
//g (ị J^ | |||
//g (ị J^ | |||
gi J^ | |||
?1 giết J^'iE3g | |||
giết J^'iE3t[ | |||
@@ -115,25 +129,35 @@ ỵ ỵ | |||
?1 giệt J^'iE6g | |||
giệt J^'iE6t[ | |||
giệc J^'iE6kh | |||
_) gol _^_EN | |||
_) gat _^_EN | |||
ght (_ _^_EN | |||
.group h | |||
h h | |||
.group j | |||
j Z | |||
.group k | |||
k k | |||
k (_ kh | |||
//k (_ kh | |||
kh x | |||
k (_ _^_EN | |||
.group l | |||
l l | |||
l (_ _^_EN | |||
le (_ _^_EN | |||
.group m | |||
m m | |||
.group n | |||
n n | |||
@@ -141,49 +165,75 @@ ỵ ỵ | |||
ng N | |||
ngh N | |||
nh n^ | |||
nd (_ _^_EN | |||
.group ñ | |||
ñ n^ | |||
.group p | |||
p p | |||
ph f | |||
.group q | |||
q k | |||
q (_ kh | |||
qu w //kw | |||
.group r | |||
r z. // try [z] [z.] [r] [z;] | |||
r (_ _^_EN | |||
rm (_ _^_EN | |||
.group s | |||
s s. // try [s.] [s] [S] | |||
_) sh _^_EN | |||
s (_ _^_EN | |||
st (_ _^_EN | |||
se (_ _^_EN | |||
.group t | |||
t t[ | |||
?1 t (_ g | |||
th t | |||
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | |||
ts (_ _^_EN | |||
te (_ _^_EN | |||
th (_ _^_EN | |||
tt (_ _^_EN | |||
.group v | |||
v v | |||
ve (_ _^_EN | |||
.group w | |||
w w | |||
_) w _^_EN | |||
w (_ _^_EN | |||
.group x | |||
x s | |||
x (_ _^_EN | |||
.group z | |||
z z | |||
z (_ _^_EN | |||
//================================ | |||
// Vowels | |||
//================================ | |||
.group a | |||
a a: | |||
@@ -211,92 +261,122 @@ ỵ ỵ | |||
aủ aU4 | |||
aũ aU5 | |||
aụ aU6 | |||
a (L01 _^_EN | |||
ai (L02 _^_EN | |||
.group à | |||
à a:2 | |||
ài a:I2 | |||
ày aI2 | |||
ào a:U2 | |||
àu aU2 | |||
.group á | |||
á a:3 | |||
ái a:I3 | |||
áy aI3 | |||
áo a:U3 | |||
áu aU3 | |||
.group ả | |||
ả a:4 | |||
ải a:I4 | |||
ảy aI4 | |||
ảo a:U4 | |||
ảu aU4 | |||
.group ã | |||
ã a:5 | |||
ãi a:I5 | |||
ãy aI5 | |||
ão a:U5 | |||
ãu aU5 | |||
.group ạ | |||
ạ a:6 | |||
ại a:I6 | |||
ạy aI6 | |||
ạo a:U6 | |||
ạu aU6 | |||
//================================ | |||
.group ă | |||
ă a | |||
.group ằ | |||
ằ a2 | |||
.group ắ | |||
ắ a3 | |||
.group ẳ | |||
ẳ a4 | |||
.group ẵ | |||
ẵ a5 | |||
.group ặ | |||
ặ a6 | |||
//================================= | |||
.group â | |||
â @ | |||
ây @I | |||
âu @U1 | |||
âu @U1 | |||
.group ầ | |||
ầ @2 | |||
ầy @I2 | |||
ầu @U2 | |||
.group ấ | |||
ấ @3 | |||
ấy @I3 | |||
ấu @U3 | |||
.group ẩ | |||
ẩ @4 | |||
ẩy @I4 | |||
ẩu @U4 | |||
.group ẫ | |||
ẫ @5 | |||
ẫy @I5 | |||
ẫu @U5 | |||
.group ậ | |||
ậ @6 | |||
ậy @I6 | |||
ậu @U6 | |||
//=========================== | |||
.group e | |||
e E | |||
@@ -306,56 +386,78 @@ ỵ ỵ | |||
eỏ EU4 | |||
eỗ EU5 | |||
eọ EU6 | |||
e (L01 _^_EN | |||
ey (_ _^_EN | |||
.group è | |||
è E2 | |||
èo EU2 | |||
.group é | |||
é E3 | |||
éo EU3 | |||
.group ẻ | |||
ẻ E4 | |||
ẻo EU4 | |||
.group ẽ | |||
ẽ E5 | |||
ẽo EU5 | |||
.group ẹ | |||
ẹ E6 | |||
ẹo EU6 | |||
//============================ | |||
.group ê | |||
ê e | |||
êu eU1 | |||
.group ề | |||
ề e2 | |||
ều eU2 | |||
.group ế | |||
ế e3 | |||
ếu eU3 | |||
.group ể | |||
ể e4 | |||
ểu eU4 | |||
.group ễ | |||
ễ e5 | |||
ễu eU5 | |||
.group ệ | |||
ệ e6 | |||
ệu eU6 | |||
//============================ | |||
.group i | |||
i i | |||
i (A j | |||
@@ -383,40 +485,46 @@ ỵ ỵ | |||
iểu iU4 | |||
iễu iU5 | |||
iệu iU6 | |||
i (L01 _^_EN | |||
.group ì | |||
ì i2 | |||
ì (A j2 | |||
ìa i@2 | |||
ìu iU2 | |||
.group í | |||
í i3 | |||
í (A j3 | |||
ía i@3 | |||
íu iU3 | |||
.group ỉ | |||
ỉ i4 | |||
ỉ (A j4 | |||
ỉa i@4 | |||
ỉu iU4 | |||
.group ĩ | |||
ĩ i5 | |||
ĩ (A j5 | |||
ĩa i@5 | |||
ĩu iU5 | |||
.group ị | |||
ị i6 | |||
ị (A j6 | |||
ịa i@6 | |||
ịu iU6 | |||
//========================= | |||
.group o | |||
o O | |||
oa o@ // modify oa sound example: hoa,khoa // o (A w | |||
@@ -428,13 +536,17 @@ ỵ ỵ | |||
oị OI6 | |||
ong O# | |||
oe o& // Adding oe sound example: lóe sáng,toét mắt | |||
o (L01 _^_EN | |||
.group ò | |||
ò O2 | |||
òi OI2 | |||
òa o@2 //ò (A w2 | |||
òng O#2 | |||
òe o&2 | |||
.group ó | |||
ó O3 | |||
@@ -442,6 +554,8 @@ ỵ ỵ | |||
óa o@3 //ó (A w3 | |||
óng O#3 | |||
óe o&3 | |||
.group ỏ | |||
ỏ O4 | |||
@@ -449,6 +563,8 @@ ỵ ỵ | |||
ỏa o@4 //ỏ (A w4 | |||
ỏng O#4 | |||
ỏe o&4 | |||
.group õ | |||
õ O5 | |||
@@ -456,6 +572,8 @@ ỵ ỵ | |||
õa o@5 //õ (A w5 | |||
õng O#5 | |||
õe o&5 | |||
.group ọ | |||
ọ O6 | |||
@@ -463,75 +581,98 @@ ỵ ỵ | |||
ọa o@6 //ọ (A w6 | |||
ọng O#6 | |||
ọe o&6 | |||
//============================= | |||
.group ô | |||
ô o | |||
ôi oI | |||
ông o# // ông sound | |||
.group ồ | |||
ồ o2 | |||
ồi oI2 | |||
ồng o#2 | |||
.group ố | |||
ố o3 | |||
ối oI3 | |||
ống o#3 | |||
.group ổ | |||
ổ o4 | |||
ổi oI4 | |||
ổng o#4 | |||
.group ỗ | |||
ỗ o5 | |||
ỗi oI5 | |||
ỗng o#5 | |||
.group ộ | |||
ộ o6 | |||
ội oI6 | |||
ộng o#6 | |||
//============================= | |||
.group ơ | |||
ơ @: | |||
ơi @:I | |||
ơu @:U | |||
.group ờ | |||
ờ @:2 | |||
ời @:I2 | |||
ờu @:U2 | |||
.group ớ | |||
ớ @:3 | |||
ới @:I3 | |||
ớu @:U3 | |||
.group ở | |||
ở @:4 | |||
ởi @:I4 | |||
ởu @:U4 | |||
.group ỡ | |||
ỡ @:5 | |||
ỡi @:I5 | |||
ỡu @:U5 | |||
.group ợ | |||
ợ @:6 | |||
ợi @:I6 | |||
ợu @:U6 | |||
//============================= | |||
.group u | |||
u u | |||
u (A w | |||
@@ -561,12 +702,19 @@ ỵ ỵ | |||
uỗi u@j5 | |||
uội u@j6 | |||
//ung u# | |||
u (L01 _^_EN | |||
ui (L01 _^_EN | |||
ua (L01 _^_EN | |||
.group ù | |||
ù u2 | |||
ù (A w2 | |||
ùi uI2 | |||
ùa u@2 | |||
//ùng u#2 | |||
.group ú | |||
ú u3 | |||
@@ -574,6 +722,8 @@ ỵ ỵ | |||
úi uI3 | |||
úa u@3 | |||
//úng u#3 | |||
.group ủ | |||
ủ u4 | |||
@@ -581,6 +731,8 @@ ỵ ỵ | |||
ủi uI4 | |||
ủa u@4 | |||
//ủng u#4 | |||
.group ũ | |||
ũ u5 | |||
@@ -588,6 +740,8 @@ ỵ ỵ | |||
ũi uI5 | |||
ũa u@5 | |||
//ũng u#5 | |||
.group ụ | |||
ụ u6 | |||
@@ -595,8 +749,10 @@ ỵ ỵ | |||
ụi uI6 | |||
ụa u@6 | |||
//ụng u#6 | |||
//============================= | |||
.group ư | |||
ư y | |||
ưi yI | |||
@@ -620,38 +776,49 @@ ỵ ỵ | |||
ưởu y@w4 | |||
ưỡu y@w5 | |||
ượu y@w6 | |||
.group ừ | |||
ừ y2 | |||
ừi yI2 | |||
ừa y@2 | |||
ừu yw2 | |||
.group ứ | |||
ứ y3 | |||
ứi yI3 | |||
ứa y@3 | |||
ứu yw3 | |||
.group ử | |||
ử y4 | |||
ửi yI4 | |||
ửa y@4 | |||
ửu yw4 | |||
.group ữ | |||
ữ y5 | |||
ữi yI5 | |||
ữa y@5 | |||
ữu yw5 | |||
.group ự | |||
ự y6 | |||
ựi yI6 | |||
ựa y@6 | |||
ựu yw6 | |||
//============================= | |||
.group y | |||
y i | |||
@@ -669,35 +836,49 @@ ỵ ỵ | |||
yễ i@5 | |||
yệ i@6 | |||
// yêu i@U | |||
.group ỳ | |||
ỳ i2 | |||
ỳ (A j2 | |||
ỳa i@2 | |||
.group ý | |||
ý i3 | |||
ý (A j3 | |||
ýa i@3 | |||
.group ỷ | |||
ỷ i4 | |||
ỷ (A j4 | |||
ỷa i@4 | |||
.group ỹ | |||
ỹ i5 | |||
ỹ (A j5 | |||
ỹa i@5 | |||
.group ỵ | |||
ỵ i6 | |||
ỵ (A j6 | |||
ỵa i@6 | |||
//============================= | |||
.group 0xce // Greek letters | |||
// 0xce is the first byte of the utf-8 code for these characters | |||
α a:1n_|f'a:1 | |||
ά a:1n_|f'a:1 | |||
β b'e1_|t['a:1 | |||
@@ -717,9 +898,12 @@ ỵ ỵ | |||
ν nw'i1 | |||
ξ s'i7 | |||
ο o1_|m'i1_|kz.'O7n | |||
.group 0xcf // Greek letters | |||
π p'i1 | |||
ρ z.'o1 | |||
σ s'i3c_|m'a:1 | |||
@@ -733,26 +917,29 @@ ỵ ỵ | |||
ω o1_|m'e1_|Q'a:7 | |||
ώ o1_|m'e1_|Q'a:7 | |||
ό o1_|m'i1_|kz.'O7n | |||
.group | |||
% f'@2n||cr'am | |||
! _:c'@3m_|t'a:7n_: | |||
! (\! | |||
! (\! | |||
// : koUl@n | |||
D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | |||
$ d'o||l'a | |||
!= x'o#_|_b'a2N_ | |||
>= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | |||
<= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | |||
__) - (_D cr'y2 | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
. c'@3m_ | |||
. (. _: | |||
\.) . | |||
\.) . | |||
@@ -65,7 +65,7 @@ consonants 10 118 | |||
sq 33 127 | |||
hy 23 119 | |||
da 46 139 | |||
ka 20 114 | |||
ka 20 115 | |||
rw 15 132 | |||
pa 15 152 | |||
prs 8 113 | |||
@@ -85,7 +85,7 @@ consonants 10 118 | |||
bo 10 154 | |||
kk 20 118 | |||
fa 9 112 | |||
ga 21 127 | |||
ga 29 133 | |||
tt 23 120 | |||
ko 15 116 | |||
kl 18 119 | |||
@@ -332,13 +332,21 @@ h/hu [h] base | |||
h/hu_fi [h] fi | |||
[h] mt | |||
j2/_j2 [;] base | |||
[;] ga | |||
j2/j2@ [;] base | |||
[;] ga | |||
j2/j2a [;] base | |||
[;] ga | |||
j2/j2e [;] base | |||
[;] ga | |||
j2/j2i [;] base | |||
[;] ga | |||
j2/j2o [;] base | |||
[;] ga | |||
j2/j2u [;] base | |||
[;] ga | |||
j2/xj2 [;] base | |||
[;] ga | |||
j/_j [j] base | |||
[j] zh | |||
[j] da | |||
@@ -442,7 +450,7 @@ l/l_ [l] base | |||
[l/] fr | |||
l/l_@ [l/3] base | |||
[l/] fr | |||
l/l@ [¨-] base | |||
l/l@ [¨\7] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -476,7 +484,7 @@ l/L2_oL [l/2] base | |||
l/L2_uL [l/2] base | |||
l/l_3 [l/] de | |||
l/l_4 [ll] sq | |||
l/la [¨-] base | |||
l/la [¨\7] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -484,7 +492,7 @@ l/la [ | |||
[K] tn | |||
l/l_a [l/3] base | |||
[l/] fr | |||
l/le [¨-] base | |||
l/le [¨\7] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -496,7 +504,7 @@ l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
l/l_front_ [l/4] sq | |||
l/li [¨-] base | |||
l/li [¨\7] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -510,7 +518,7 @@ ll/ll [L] base | |||
ll/_ll [L] base | |||
l/l_long [l] base | |||
[l] fr | |||
l/lo [¨-] base | |||
l/lo [¨\7] base | |||
[l#] base | |||
[l/2] fr | |||
[K] nso | |||
@@ -521,7 +529,7 @@ l^/l_rfx [l.] base | |||
[l;] lt | |||
[l] ru | |||
[l^] ru | |||
l/lu [¨-] base | |||
l/lu [¨\7] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -841,6 +849,7 @@ ufric/tlh [K] nso | |||
ufric/x [x] base | |||
ufric/x2 [x2] af | |||
[x] ku | |||
[Q2] ka | |||
[X] kk | |||
ufric/x_hr [x] base | |||
[x] hr | |||
@@ -849,6 +858,7 @@ ufric/x_sr [h#] sr | |||
[x#] sr | |||
ufric/xx [X] base | |||
[Q"] base | |||
[Q] ka | |||
ustop/c [c] base | |||
ustop/k [k] base | |||
[k] fr | |||
@@ -862,9 +872,12 @@ ustop/k_ [k] base | |||
ustop/k_asp [kh] consonants | |||
[gh] hi | |||
[kh] zh | |||
[k#] ka | |||
[kh] tn | |||
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/ki [k] base | |||
[k] base2 | |||
@@ -887,7 +900,6 @@ ustop/kl [k] base | |||
[k] lv | |||
[k] el | |||
[k] zhy | |||
[k#] ka | |||
[kh] tn | |||
ustop/kr [k] base | |||
[k] base2 | |||
@@ -953,8 +965,6 @@ ustop/p_unasp_ [p-] consonants | |||
[p] vi | |||
[p] sq | |||
ustop/q [q] base | |||
ustop/q2 [q] ka | |||
ustop/q2_i [q] ka | |||
ustop/q_u [q] base | |||
ustop/t [t] base | |||
[t] en-us | |||
@@ -1179,6 +1189,7 @@ vdiph/ai [aI] base2 | |||
[aI] hy | |||
[aI] da | |||
[aI] te | |||
[aI] ga | |||
[aI] kl | |||
vdiph/ai_2 [aI] en | |||
[aI] cy | |||
@@ -1213,6 +1224,8 @@ vdiph/au_4 [aU] base2 | |||
[aU] lt | |||
[aU] sk | |||
[aU] id | |||
[aU] ga | |||
[aU#] ga | |||
vdiph/ee-e [E:] hi | |||
vdiph/eei [EI] base2 | |||
[eI] en | |||
@@ -1266,7 +1279,6 @@ vdiph/eu_2 [eu] fi | |||
vdiph/@i [Yi] et | |||
[@I] vi | |||
[@:I] vi | |||
[@I] ga | |||
vdiph/&i [&i] fi | |||
[&i] et | |||
[aI] hi | |||
@@ -1422,6 +1434,8 @@ voc/dh_ [D] base | |||
voc/j [J^] base | |||
voc/Q [Q] base | |||
[Q^] base | |||
[Q] ka | |||
[Q2] ka | |||
voc/Q_ [Q] base | |||
[Q^] base | |||
[Q] nl | |||
@@ -1500,11 +1514,7 @@ vowel/@ [@] base | |||
[@] wo | |||
[@:] wo | |||
[@] te | |||
[@] ga | |||
[E#] ga | |||
[I#] ga | |||
[O#] ga | |||
[U#] ga | |||
[@/] ga | |||
vowel/@- [@-] base | |||
[r*] hr | |||
[@-] da | |||
@@ -1654,6 +1664,7 @@ vowel/a_3 [a] en-sc | |||
[a] sq | |||
[A] da | |||
[?A] da | |||
[a] ka | |||
[a:] si | |||
vowel/a#_3 [a#] en | |||
[a#] en-n | |||
@@ -1733,6 +1744,7 @@ vowel/aa_8 [0] en-us | |||
[A1] et | |||
[A] nl | |||
[a:] is | |||
[0] ga | |||
[A] tt | |||
[a] ko | |||
vowel/aa_9 [a] fi | |||
@@ -2081,6 +2093,7 @@ vowel/ii_6 [I] en-wm | |||
[i] wo | |||
vowel/ii_7 [i] en | |||
[i] sq | |||
[i] ga | |||
vowel/ii_8 [i] kk | |||
vowel/ii_final [i] en-us | |||
[i] en-rp | |||
@@ -2246,7 +2259,6 @@ vowel/oo_4 [O] base2 | |||
[O] it | |||
[O] an | |||
[O] pa | |||
[O] ga | |||
vowel/oo_5 [O] pl | |||
[O] is | |||
[O] sq | |||
@@ -2290,6 +2302,7 @@ vowel/u [u] base | |||
[u] ak | |||
[u:] wo | |||
[u] bo | |||
[u1] ga | |||
[u] tt | |||
vowel/u# [u:] en-sc | |||
[Y] tr | |||
@@ -2420,6 +2433,7 @@ vowel/V_3 [V] en-rp | |||
vowel/V_4 [V] en-sc | |||
[V] da | |||
[?V] da | |||
[O] ga | |||
vowel/V_6 [V] en-us | |||
[a#] lv | |||
vowel/y [y] base2 | |||
@@ -2477,9 +2491,11 @@ vowel/yy_4 [y] de | |||
[yI] is | |||
[y] hy | |||
vwl_af/@ [@] af | |||
[@] ga | |||
vwl_af/I [I] af | |||
vwl_af/r@ [@] af | |||
[I] af | |||
[@] ga | |||
vwl_de/uu_@ [UR] de | |||
vwl_en/aI@ [aI@] en | |||
[aI@] en-n |
@@ -674,7 +674,7 @@ phoneme j | |||
NextVowelStarts | |||
VowelStart(j/j@) | |||
VowelStart(j/ja) | |||
VowelStart(j/je,-60) | |||
VowelStart(j/je,-40) | |||
VowelStart(j/ji) | |||
VowelStart(j/jo) | |||
VowelStart(j/ju) |
@@ -28,7 +28,10 @@ endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 180 | |||
FMT(vowel/a#_2) | |||
IF thisPh(isUnstressed) THEN | |||
FMT(vowel/a#_2) | |||
ENDIF | |||
FMT(vowel/a_3) | |||
endphoneme | |||
@@ -69,12 +72,15 @@ phoneme k# | |||
Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | |||
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||
IF nextPh(isPause2) THEN | |||
WAV(ustop/k_asp2, 40) | |||
WAV(ustop/k_asp, 40) | |||
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 | |||
WAV(ustop/k_asp2, 60) | |||
endphoneme | |||
@@ -113,24 +119,27 @@ phoneme k | |||
import_phoneme consonants/k- | |||
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 | |||
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 | |||
phoneme r | |||
import_phoneme base/R | |||
endphoneme |
@@ -0,0 +1,239 @@ | |||
// 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 | |||
@@ -144,18 +144,3 @@ phoneme d# // 'rr' sounds like English 'd' | |||
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 | |||
@@ -0,0 +1,49 @@ | |||
//==================================================== | |||
// 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 | |||
@@ -310,7 +310,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
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); | |||
} | |||
@@ -1040,7 +1040,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * | |||
{ | |||
if(vowel_stress[ix] == 4) | |||
{ | |||
if(tr->langopts.stress_flags & 0x20000) | |||
if(tr->langopts.stress_flags & S_PRIORITY_STRESS) | |||
vowel_stress[ix] = 1; | |||
else | |||
vowel_stress[ix] = 3; | |||
@@ -1208,12 +1208,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, | |||
max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | |||
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; | |||
} | |||
@@ -2652,6 +2646,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | |||
{ | |||
n = utf8_in(&letter,p-1)-1; | |||
if(tr->letter_bits_offset > 0) | |||
{ | |||
// not a Latin alphabet, switch to the default Latin alphabet language | |||
@@ -2720,11 +2715,19 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
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); | |||
} | |||
} | |||
} | |||
} |
@@ -596,6 +596,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
ALPHABET *alphabet; | |||
int language; | |||
int phontab_1; | |||
int alphabet_name_switch; | |||
char *ph_alphabet_end; | |||
char capital[20]; | |||
char ph_buf[80]; | |||
char ph_buf2[80]; | |||
@@ -631,6 +633,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
return(0); | |||
} | |||
alphabet_name_switch = 0; | |||
alphabet = AlphabetFromChar(letter); | |||
if(alphabet != current_alphabet) | |||
{ | |||
@@ -638,38 +641,49 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
current_alphabet = alphabet; | |||
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 | |||
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_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 | |||
if(ph_buf[0] == 0) | |||
{ | |||
if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | |||
@@ -702,6 +716,11 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
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) |
@@ -428,7 +428,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
{ | |||
// in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | |||
// 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 | |||
unstress_count=1; // try again for next syllable |
@@ -892,7 +892,7 @@ if(stress <= 1) | |||
{ | |||
// this is the last syllable in the clause, lengthen it - more for short vowels | |||
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 | |||
length_mod = length_mod * (256 + (280 - len)/3)/256; | |||
} |
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; |
@@ -478,7 +478,7 @@ Translator *SelectTranslator(const char *name) | |||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
tr->letter_bits_offset = OFFSET_ETHIOPIC; | |||
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.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | |||
@@ -550,7 +550,7 @@ Translator *SelectTranslator(const char *name) | |||
// tr->langopts.intonation_group = 4; | |||
// '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_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
@@ -651,7 +651,7 @@ Translator *SelectTranslator(const char *name) | |||
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_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_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
@@ -681,7 +681,7 @@ Translator *SelectTranslator(const char *name) | |||
// tr->langopts.word_gap = 1; | |||
tr->langopts.vowel_pause = 2; | |||
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_wd2 = 2; | |||
@@ -989,7 +989,7 @@ SetLengthMods(tr,3); // all equal | |||
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_flags = 0x10 | 0x20000; | |||
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; | |||
tr->langopts.vowel_pause = 1; | |||
tr->langopts.unstressed_wd1 = 2; | |||
tr->langopts.unstressed_wd2 = 2; | |||
@@ -1023,8 +1023,9 @@ SetLengthMods(tr,3); // all equal | |||
case L('k','a'): // Georgian | |||
{ | |||
// 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); | |||
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
SetLetterBits(tr,LETTERGP_A,ka_vowels); | |||
@@ -1037,6 +1038,9 @@ SetLengthMods(tr,3); // all equal | |||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
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.alt_alphabet = OFFSET_CYRILLIC; | |||
tr->langopts.alt_alphabet_lang = "ru"; | |||
} | |||
break; | |||
@@ -1111,7 +1115,7 @@ SetLengthMods(tr,3); // all equal | |||
{ | |||
tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | |||
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_wd2 = 2; | |||
tr->langopts.param[LOPT_DIERESES] = 1; | |||
@@ -1124,7 +1128,7 @@ SetLengthMods(tr,3); // all equal | |||
{ | |||
tr->charset_a0 = charsets[4]; // ISO-8859-4 | |||
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_wd2 = 2; | |||
tr->langopts.param[LOPT_DIERESES] = 1; | |||
@@ -1211,7 +1215,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_om,stress_amps_om); | |||
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; | |||
@@ -1224,7 +1228,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
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.max_initial_consonants = 7; // for example: wchrzczony :) | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | |||
@@ -1243,7 +1247,7 @@ SetLengthMods(tr,3); // all equal | |||
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_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.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | |||
SetLetterVowel(tr,'y'); | |||
@@ -1261,7 +1265,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | |||
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->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | |||
@@ -1276,7 +1280,7 @@ SetLengthMods(tr,3); // all equal | |||
case L('r','w'): // Kiryarwanda | |||
{ | |||
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.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | |||
@@ -1293,7 +1297,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
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.max_initial_consonants = 5; | |||
tr->langopts.spelling_stress = 1; | |||
@@ -1322,7 +1326,7 @@ SetLengthMods(tr,3); // all equal | |||
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_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->letter_bits_offset = OFFSET_SINHALA; | |||
@@ -1345,7 +1349,7 @@ SetLengthMods(tr,3); // all equal | |||
case L('s','l'): // Slovenian | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
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_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 | |||
@@ -1362,7 +1366,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | |||
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'); | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | |||
tr->langopts.accents = 2; // "capital" after letter name | |||
@@ -1394,7 +1398,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.vowel_pause = 1; | |||
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.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | |||
@@ -1411,7 +1415,7 @@ SetLengthMods(tr,3); // all equal | |||
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_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.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | |||
@@ -1457,7 +1461,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_th,stress_amps_th); | |||
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.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) | |||
@@ -1476,7 +1480,7 @@ SetLengthMods(tr,3); // all equal | |||
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_flags = 0x20; //no automatic secondary stress | |||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
tr->langopts.param[LOPT_SUFFIX] = 1; | |||
if(name2 == L('a','z')) | |||
@@ -1496,7 +1500,7 @@ SetLengthMods(tr,3); // all equal | |||
SetCyrillicLetters(tr); | |||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
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; | |||
} | |||
break; | |||
@@ -1561,7 +1565,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | |||
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.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 | |||
@@ -1618,7 +1622,7 @@ static void Translator_Russian(Translator *tr) | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | |||
tr->langopts.param[LOPT_REDUCE] = 2; | |||
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.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands |
@@ -2074,17 +2074,29 @@ return(FLAG_SPELLWORD); | |||
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 | |||
{ | |||
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 | |||
@@ -2484,6 +2496,34 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
} | |||
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) | |||
{//========================================================================================================== | |||
int ix; | |||
@@ -2910,10 +2950,19 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
{ | |||
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 | |||
if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) |
@@ -372,35 +372,53 @@ typedef struct { | |||
#define S_NO_DIM 0x02 | |||
#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, | |||
// bit2=mark unstressed final syllables as diminished | |||
// 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 | |||
#define S_NO_AUTO_2 0x20 | |||
// 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 | |||
#define S_FIRST_PRIMARY 0x80 | |||
// 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 | |||
#define S_FINAL_SPANISH 0x200 | |||
// 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 | |||
#define S_INITIAL_2 0x2000 | |||
// 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" | |||
#define S_EO_CLAUSE1 0x40000 | |||
// 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 | |||
#define S_NO_EOC_LENGTHEN 0x200000 | |||
// 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 unstressed_wd1; // stress for $u word of 1 syllable | |||
int unstressed_wd2; // stress for $u word of >1 syllable | |||
@@ -518,6 +536,8 @@ typedef struct { | |||
int listx; // compile *_listx after *list | |||
const unsigned int *replace_chars; // characters to be substitutes | |||
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 lengthen_tonic; // lengthen the tonic syllable | |||
int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | |||
@@ -680,6 +700,7 @@ void InitText(int flags); | |||
void InitText2(void); | |||
int IsDigit(unsigned int c); | |||
int IsAlpha(unsigned int c); | |||
int IsVowel(Translator *tr, int c); | |||
int isspace2(unsigned int c); | |||
int towlower2(unsigned int c); | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); |
@@ -61,7 +61,7 @@ int formant_rate[9]; // values adjusted for actual sample rate | |||
#define DEFAULT_LANGUAGE_PRIORITY 5 | |||
#define N_VOICES_LIST 200 | |||
#define N_VOICES_LIST 250 | |||
static int n_voices_list = 0; | |||
static espeak_VOICE *voices_list[N_VOICES_LIST]; | |||
static int len_path_voices; | |||
@@ -578,10 +578,8 @@ voice_t *LoadVoice(const char *vname, int control) | |||
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 "; | |||
strcpy(voicename,vname); | |||
if(voicename[0]==0) | |||
strcpy(voicename,"default"); | |||
strncpy0(voicename, vname, sizeof(voicename)); | |||
if(control & 0x10) | |||
{ | |||
strcpy(buf,vname); | |||
@@ -590,6 +588,9 @@ voice_t *LoadVoice(const char *vname, int control) | |||
} | |||
else | |||
{ | |||
if(voicename[0]==0) | |||
strcpy(voicename,"default"); | |||
sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | |||
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | |||
@@ -1634,30 +1635,35 @@ static void GetVoices(const char *path) | |||
return; | |||
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); | |||
FindClose(hFind); | |||
@@ -1674,11 +1680,14 @@ static void GetVoices(const char *path) | |||
if(n_voices_list >= (N_VOICES_LIST-2)) | |||
break; // voices list is full | |||
if(ent->d_name[0] == '.') | |||
continue; | |||
sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | |||
ftype = GetFileLength(fname); | |||
if((ftype == -2) && (ent->d_name[0] != '.')) | |||
if(ftype == -2) | |||
{ | |||
// a sub-sirectory | |||
GetVoices(fname); | |||
@@ -1710,15 +1719,23 @@ static void GetVoices(const char *path) | |||
espeak_ERROR SetVoiceByName(const char *name) | |||
{//========================================= | |||
espeak_VOICE *v; | |||
int ix; | |||
espeak_VOICE voice_selector; | |||
char *variant_name; | |||
static char buf[60]; | |||
strncpy0(buf,name,sizeof(buf)); | |||
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)); | |||
// voice_selector.name = buf; | |||
voice_selector.name = (char *)name; // include variant name in voice stack ?? | |||
// first check for a voice with this filename |