[1.46.44]

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-fd96e6ae7743
This commit is contained in:
jonsd
2013-03-08 20:40:02 +00:00
parent 2d64d32893
commit ad8798cf22
34 changed files with 1778 additions and 416 deletions
+27 -14
View File
@@ -68,7 +68,7 @@ r R R3 s S t T tS
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:
@@ -104,7 +104,7 @@ p Q r R s s; t T
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
@@ -121,7 +121,7 @@ t T t2 tS v w x z
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
@@ -206,7 +206,7 @@ q r r. s S s. t T
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:
@@ -379,7 +379,7 @@ S s; S; t t; tS ts tS;
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
@@ -491,7 +491,7 @@ p Q r R s S t tS
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
@@ -603,17 +603,17 @@ N n^ p q R s S S;
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. : ; b bh c ch d D
dh dh. f g gh h H j d. dh dh. f g gh h H
J Jh k kh l m n N j J Jh k kh l m n
p ph Q q r R r. s N p ph Q q r R r.
S s. t T t. th th. v s S s. t T t. th th.
w x z Z z. v w x z Z z.
Dictionary bg_dict 2012-07-15 Dictionary bg_dict 2012-07-15
@@ -734,7 +734,7 @@ s s. S; t t. th th. tS
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
@@ -884,3 +884,16 @@ d. dh dh. g gh h H j
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
+1
View File
@@ -127,6 +127,7 @@ _, k0m@
_- 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
+2 -2
View File
@@ -3679,8 +3679,8 @@
legged lEgId legged lEgId
// Ab) le @L // Ab) le @L
C) le (ton_ @L C) le (ton_ @L
Ab) ler (_ l@ Ab) ler (_ l3
Ab) le (C_ l@ Ab) le (B_ l@
Ab) led (_ @Ld Ab) led (_ @Ld
&) lem (ent @Lm &) lem (ent @Lm
&p) lem (ent lIm &p) lem (ent lIm
+133 -132
View File
@@ -13,214 +13,215 @@
.group a .group a
_) a(_ a _) a (_ a
a a a a
aj aI aj aI
aŭ aU aŭ aU
.group b .group b
_) b(_ bo _) b (_ bo
b b b b
.group c .group c
_) c(_ tso _) c (_ tso
_) ch(_ tSo _) ch (_ tSo
c ts c ts
ch (K tS // foreign words ch (K tS // foreign words
K) ch tS // foreign words K) ch tS // foreign words
.group d .group d
_) d(_ do _) d (_ do
d d d d
_) d (-ro dokt'o _) d (-ro dokt'o
_) d (-rino d,okto _) d (-rino d,okto
.group e .group e
_) e(_ e _) e (_ e
e e e e
ej eI ej eI
eŭ eU eŭ eU
.group f .group f
_) f(_ fo _) f (_ fo
f f f f
_) f (-ino fR%aUl _) f (-ino fR%aUl
_) f (-lo fRaU _) f (-lo fRaU
.group g .group g
_) g(_ go _) g (_ go
g g g g
gh (K dZ gh (K dZ
.group h .group h
_) h(_ ho _) h (_ ho
h h h h
hh x hh x
.group i .group i
_) i(_ i _) i (_ i
i i i i
.group j .group j
_) j(_ jo _) j (_ jo
j j j j
jh (C Z jh (C Z
.group k .group k
_) k(_ ko _) k (_ ko
k k k k
_) k (-do kamaR'a _) k (-do kamaR'a
_) k (-dino k'amaRa _) k (-dino k'amaRa
_) k (-ino k'amaRad _) k (-ino k'amaRad
.group l .group l
_) l(_ lo _) l (_ lo
l l l l
ll (_ l ll (_ l
.group m .group m
_) m(_ mo _) m (_ mo
m m m m
.group n .group n
_) n(_ no _) n (_ no
n n n n
n (_S1 n n (_S1 n
_) n (-ro num'e _) n (-ro num'e
.group o .group o
_) o(_ o _) o (_ o
o o o o
oj oI oj oI
-) o (_ %o -) o (_ %o
-) oj (_ %oI -) oj (_ %oI
-) on (_ %on -) on (_ %on
-X) o (_ %o // d-ro etc -X) o (_ %o // d-ro etc
-X) oj (_ %oI -X) oj (_ %oI
-X) on (_ %on -X) on (_ %on
.group p .group p
_) p(_ po _) p (_ po
p p p p
ph (K f // foreign words ph (K f // foreign words
K) ph f // foreign words K) ph f // foreign words
.group q .group q
_) q(_ kwo _) q (_ kwo
q k q k
qu kv qu kv
.group r .group r
_) r(_ Ro _) r (_ Ro
r R r R
A) r (A R A) r (A R
K) r (A @-* K) r (A @-*
rr RR rr RR
.group s .group s
_) s(_ so _) s (_ so
_) sh(_ So _) sh (_ So
s s s s
sh (K S // foreign words sh (K S // foreign words
K) sh S // foreign words K) sh S // foreign words
_) s (-ino s,injoR _) s (-ino s,injoR
_) s (-ro sinj'o _) s (-ro sinj'o
_) s (-ano s'am,ide _) s (-ano s'am,ide
_) s (-anino s'am,ide _) s (-anino s'am,ide
_) s (-ta_ s'ank _) s (-ta_ s'ank
.group t .group t
_) t(_ to _) t (_ to
t t t t
th (K T // foreign words th (K T // foreign words
K) th 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
u u u u
uj uI uj uI
.group v .group v
_) v(_ vo _) v (_ vo
v v v v
.group w .group w
_) w(_ du'oblav,o _) w (_ du'oblav,o
w w w w
K) wh w // foreign words K) wh w // foreign words
.group x .group x
_) x(_ ikso _) x (_ ikso
x ks x ks
_) x z // foreign words _) x z // foreign words
.group y .group y
_) y(_ ipsilono _) y (_ ipsilono
y j y j
K) y (K i K) y (K i
.group z .group z
_) z(_ zo _) z (_ zo
z z z z
.group .group
_) ĉ (_ tSo _) ĉ (_ tSo
ĉ tS ĉ tS
_) ĝ (_ dZo _) ĝ (_ dZo
ĝ dZ ĝ dZ
_) ĥ (_ xo _) ĥ (_ xo
ĥ x ĥ x
_) ĵ (_ Zo _) ĵ (_ Zo
ĵ Z ĵ Z
_) ŝ (_ So _) ŝ (_ So
ŝ S ŝ S
_) ŭ (_ wo _) ŭ (_ wo
ŭ w ŭ w
C) ' (_ = // word end in apostrophe, stress the last vowel
'
+ plus_
_) ++ (_ plusplus
. punkto
. (. _:
\.) .
' £ pundo
+ plus_ £ (_D _pundoI_:
_) ++ (_ plusplus __) - (_D minus_
D_) - (_D st@-*ek'eto_
. punkto A_) - (_D _
. (. _: C_) - (_D _
\.) . --) -
- minus_
- (_a
£ pundo $ dolaRo
£ (_D _pundoI_: $ (_D _dolaRoI_:
__) - (_D minus_
D_) - (_D st@-*ek'eto_
A_) - (_D _
C_) - (_D _
--) -
- minus_
- (_a
$ dolaRo
$ (_D _dolaRoI_:
+245
View File
@@ -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
+430
View File
@@ -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:
+69 -9
View File
@@ -173,6 +173,8 @@ nyargon) c (cs ts
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
@@ -452,6 +454,11 @@ szomszé) d (sor d
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
@@ -502,6 +509,7 @@ kapáló) dz z
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
@@ -630,6 +638,12 @@ szentsé) g (gy g
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
@@ -1005,7 +1019,8 @@ szivárvá) ny (játsz n^
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
@@ -1064,7 +1079,7 @@ vagyo) n (jog n
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
@@ -1146,6 +1161,7 @@ _tetszé) s S
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
@@ -1640,9 +1656,47 @@ _kemene) ssz Ss
_szamo) ssz Ss _szamo) ssz Ss
_szilvá) ssz Ss _szilvá) ssz Ss
_vámo) ssz Ss _vámo) ssz Ss
keresé) ssz Ss keresé) ssz Ss
cipő) ssz Ss cipő) ssz Ss
szorongá) 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
@@ -1699,6 +1753,10 @@ fáklyá) sz (ene Sz
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
@@ -1842,7 +1900,7 @@ szögle) t (szob 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
@@ -1929,7 +1987,7 @@ természe) tj (og tj
_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
@@ -2144,8 +2202,8 @@ felira) ts (áv t|S
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 _cha) tsz (ob t|s
robo) ts (of t|S robo) ts (of t|S
.group tt .group tt
tt t: tt t:
@@ -2411,6 +2469,8 @@ csatlako) z (tok s
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
+8 -8
View File
@@ -139,14 +139,14 @@
ჺ ჺ
// For cyrillic characters (U+0400 to U+04FF) use Russian voice // For cyrillic characters (U+0400 to U+04FF) use Russian voice
.group 0xd0 //.group 0xd0
0xd0 _^_RU // 0xd0 _^_RU
.group 0xd1 //.group 0xd1
0xd1 _^_RU // 0xd1 _^_RU
.group 0xd2 //.group 0xd2
0xd2 _^_RU // 0xd2 _^_RU
.group 0xd3 //.group 0xd3
0xd3 _^_RU // 0xd3 _^_RU
.group .group
$ dolari $ dolari
+2 -2
View File
@@ -651,7 +651,6 @@ antonieta $alt2
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
@@ -713,6 +712,7 @@ choro $alt2 $noun
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
@@ -910,6 +910,7 @@ palacete $alt2
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
@@ -932,7 +933,6 @@ portos $alt
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
+9 -1
View File
@@ -1,4 +1,5 @@
// translation rules Brazilian // translation rules Brazilian
// translation rules Brazilian
// This file is UTF-8 encoded // This file is UTF-8 encoded
// Options // Options
@@ -365,6 +366,8 @@ _compreend) e (L06_ e
_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-
@@ -416,7 +419,9 @@ entend) e (L07_ e
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
@@ -449,6 +454,7 @@ respond) e (L07_ e // cor-
_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
@@ -485,8 +491,10 @@ _emagr) e (çL03
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
+6
View File
@@ -1015,6 +1015,7 @@ _தணிகா) ச (ல tSV
_) ச (வான tSV _) ச (வான tSV
_) ச (ாக்கட்டி tS _) ச (ாக்கட்டி tS
_) சாக்ப (ீL04 tSa:kp _) சாக்ப (ீL04 tSa:kp
_) சாக்லெட் tSa:klet.
_) சாக்லேட் tSa:kle:t. _) சாக்லேட் tSa:kle:t.
_) சா (ட்டர்ஜி tSe: _) சா (ட்டர்ஜி tSe:
_) ச (ாணக்கிய tS _) ச (ாணக்கிய tS
@@ -1048,12 +1049,14 @@ _தணிகா) ச (ல tSV
ஆ) ச (ாரங்கள 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
@@ -2406,6 +2409,7 @@ _சி) த்ரலேக (ா trVle:k
_) ப (ட்டக்ஸ bV _) ப (ட்டக்ஸ bV
_) ப (ட்டன bV _) ப (ட்டன bV
_) ப (ட்டன_ pV _) ப (ட்டன_ pV
_) ப (ட்டாசாரி bV
_) ப (தில bV _) ப (தில bV
_) பத்த (ிரகாளி bVdd _) பத்த (ிரகாளி bVdd
_) பத்திரப் (_ bVttirVp _) பத்திரப் (_ bVttirVp
@@ -2814,6 +2818,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ிடில f _) ப (ிடில f
_) ப (ிட்சு b _) ப (ிட்சு b
_) ப (ிட்டடி b _) ப (ிட்டடி b
_) பிந்தி (ரன்வாலே bind
_) ப (ினாமி b _) ப (ினாமி b
_) ப (ினிஷ f _) ப (ினிஷ f
_) ப (ின்_லேடன b _) ப (ின்_லேடன b
@@ -3744,6 +3749,7 @@ _ஞானப்) பிரக (ா prVk
_மL06ாப்) பி (ரப p _மL06ாப்) பி (ரப p
வீண்) பி (ரமை b வீண்) பி (ரமை b
துஷ்) பி (ரயோக p துஷ்) பி (ரயோக p
_சொற்) பி (ரயோக p
L03ந்தப்) பி (ரளய p L03ந்தப்) பி (ரளய p
_சொற்) பி (ரவாக p _சொற்) பி (ரவாக p
எக்ஸ்) பிர (ஸ pre எக்ஸ்) பிர (ஸ pre
+195 -8
View File
@@ -77,26 +77,40 @@ ỵ ỵ
//================================ //================================
// 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
@@ -107,7 +121,7 @@ ỵ ỵ
//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[
@@ -115,6 +129,10 @@ ỵ ỵ
?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
@@ -126,65 +144,97 @@ ỵ ỵ
.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
?1 n (_ N //n ?1 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:
ai a:I ai a:I
@@ -211,6 +261,9 @@ ỵ ỵ
aủ aU4 aủ aU4
aũ aU5 aũ aU5
aụ aU6 aụ aU6
a (L01 _^_EN
ai (L02 _^_EN
.group à .group à
à a:2 à a:2
@@ -219,6 +272,7 @@ ỵ ỵ
ào a:U2 ào a:U2
àu aU2 àu aU2
.group á .group á
á a:3 á a:3
ái a:I3 ái a:I3
@@ -226,6 +280,7 @@ ỵ ỵ
áo a:U3 áo a:U3
áu aU3 áu aU3
.group ả .group ả
ả a:4 ả a:4
ải a:I4 ải a:I4
@@ -233,6 +288,7 @@ ỵ ỵ
ảo a:U4 ảo a:U4
ảu aU4 ảu aU4
.group ã .group ã
ã a:5 ã a:5
ãi a:I5 ãi a:I5
@@ -240,6 +296,7 @@ ỵ ỵ
ão a:U5 ão a:U5
ãu aU5 ãu aU5
.group ạ .group ạ
ạ a:6 ạ a:6
ại a:I6 ại a:I6
@@ -247,56 +304,79 @@ ỵ ỵ
ạ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
@@ -306,56 +386,78 @@ ỵ ỵ
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
@@ -383,6 +485,8 @@ ỵ ỵ
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
@@ -390,24 +494,28 @@ ỵ ỵ
ì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
@@ -415,8 +523,8 @@ ỵ ỵ
ị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
@@ -428,6 +536,8 @@ ỵ ỵ
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
@@ -436,6 +546,8 @@ ỵ ỵ
òng O#2 òng O#2
òe o&2 òe o&2
.group ó .group ó
ó O3 ó O3
ói OI3 ói OI3
@@ -443,6 +555,8 @@ ỵ ỵ
óng O#3 óng O#3
óe o&3 óe o&3
.group ỏ .group ỏ
ỏ O4 ỏ O4
ỏi OI4 ỏi OI4
@@ -450,6 +564,8 @@ ỵ ỵ
ỏng O#4 ỏng O#4
ỏe o&4 ỏe o&4
.group õ .group õ
õ O5 õ O5
õi OI5 õi OI5
@@ -457,6 +573,8 @@ ỵ ỵ
õng O#5 õng O#5
õe o&5 õe o&5
.group ọ .group ọ
ọ O6 ọ O6
ọi OI6 ọi OI6
@@ -465,32 +583,43 @@ ỵ ỵ
ọ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
@@ -499,31 +628,42 @@ ỵ ỵ
//============================= //=============================
.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
@@ -532,6 +672,7 @@ ỵ ỵ
//============================= //=============================
.group u .group u
u u u u
u (A w u (A w
@@ -561,6 +702,11 @@ ỵ ỵ
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
@@ -568,6 +714,8 @@ ỵ ỵ
ùa u@2 ùa u@2
//ùng u#2 //ùng u#2
.group ú .group ú
ú u3 ú u3
ú (A w3 ú (A w3
@@ -575,6 +723,8 @@ ỵ ỵ
úa u@3 úa u@3
//úng u#3 //úng u#3
.group ủ .group ủ
ủ u4 ủ u4
ủ (A w4 ủ (A w4
@@ -582,6 +732,8 @@ ỵ ỵ
ủa u@4 ủa u@4
//ủng u#4 //ủng u#4
.group ũ .group ũ
ũ u5 ũ u5
ũ (A w5 ũ (A w5
@@ -589,6 +741,8 @@ ỵ ỵ
ũa u@5 ũa u@5
//ũng u#5 //ũng u#5
.group ụ .group ụ
ụ u6 ụ u6
ụ (A w6 ụ (A w6
@@ -596,7 +750,9 @@ ỵ ỵ
ụa u@6 ụa u@6
//ụng u#6 //ụng u#6
//============================= //=============================
.group ư .group ư
ư y ư y
ưi yI ưi yI
@@ -621,30 +777,40 @@ ỵ ỵ
ưỡ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
@@ -652,6 +818,7 @@ ỵ ỵ
ựu yw6 ựu yw6
//=============================
.group y .group y
y i y i
@@ -670,34 +837,48 @@ ỵ ỵ
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
@@ -718,8 +899,11 @@ ỵ ỵ
ξ 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
@@ -735,6 +919,9 @@ ỵ ỵ
ό 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_:
@@ -751,8 +938,8 @@ ỵ ỵ
A_) - (_D _ A_) - (_D _
C_) - (_D _ C_) - (_D _
. c'@3m_ . c'@3m_
. (. _: . (. _:
\.) . \.) .
+35 -19
View File
@@ -65,7 +65,7 @@ consonants 10 118
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
@@ -85,7 +85,7 @@ consonants 10 118
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
@@ -332,13 +332,21 @@ h/hu [h] base
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
@@ -442,7 +450,7 @@ l/l_ [l] base
[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
@@ -476,7 +484,7 @@ l/L2_oL [l/2] base
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
@@ -484,7 +492,7 @@ l/la [
[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
@@ -496,7 +504,7 @@ l/L_eL_af [&] af
[&:] 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
@@ -510,7 +518,7 @@ ll/ll [L] base
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
@@ -521,7 +529,7 @@ l^/l_rfx [l.] base
[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
@@ -841,6 +849,7 @@ ufric/tlh [K] nso
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
@@ -849,6 +858,7 @@ ufric/x_sr [h#] sr
[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
@@ -862,9 +872,12 @@ ustop/k_ [k] base
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
@@ -887,7 +900,6 @@ ustop/kl [k] base
[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
@@ -953,8 +965,6 @@ ustop/p_unasp_ [p-] consonants
[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
@@ -1179,6 +1189,7 @@ vdiph/ai [aI] base2
[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
@@ -1213,6 +1224,8 @@ vdiph/au_4 [aU] base2
[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
@@ -1266,7 +1279,6 @@ vdiph/eu_2 [eu] fi
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
@@ -1422,6 +1434,8 @@ voc/dh_ [D] base
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
@@ -1500,11 +1514,7 @@ vowel/@ [@] base
[@] wo [@] wo
[@:] wo [@:] wo
[@] te [@] te
[@] ga [@/] ga
[E#] ga
[I#] ga
[O#] ga
[U#] ga
vowel/@- [@-] base vowel/@- [@-] base
[r*] hr [r*] hr
[@-] da [@-] da
@@ -1654,6 +1664,7 @@ vowel/a_3 [a] en-sc
[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
@@ -1733,6 +1744,7 @@ vowel/aa_8 [0] en-us
[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
@@ -2081,6 +2093,7 @@ vowel/ii_6 [I] en-wm
[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
@@ -2246,7 +2259,6 @@ vowel/oo_4 [O] base2
[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
@@ -2290,6 +2302,7 @@ vowel/u [u] base
[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
@@ -2420,6 +2433,7 @@ vowel/V_3 [V] en-rp
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
@@ -2477,9 +2491,11 @@ vowel/yy_4 [y] de
[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
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -674,7 +674,7 @@ phoneme j
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)
+27 -18
View File
@@ -28,7 +28,10 @@ endphoneme
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
@@ -69,12 +72,15 @@ phoneme k#
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 IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/kl) 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
@@ -113,24 +119,27 @@ phoneme k
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 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 phoneme r
import_phoneme base/R import_phoneme base/R
endphoneme endphoneme
+239
View File
@@ -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
-15
View File
@@ -144,18 +144,3 @@ phoneme d# // 'rr' sounds like English 'd'
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
+49
View File
@@ -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
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+15 -12
View File
@@ -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 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);
} }
@@ -1040,7 +1040,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
{ {
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;
@@ -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); 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;
} }
@@ -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)) 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
@@ -2720,11 +2715,19 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
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 if(tr->langopts.alt_alphabet == alphabet->offset)
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); {
return(0); 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);
}
} }
} }
} }
+39 -20
View File
@@ -596,6 +596,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
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];
@@ -631,6 +633,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
return(0); return(0);
} }
alphabet_name_switch = 0;
alphabet = AlphabetFromChar(letter); alphabet = AlphabetFromChar(letter);
if(alphabet != current_alphabet) if(alphabet != current_alphabet)
{ {
@@ -638,38 +641,49 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
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; if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet))
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 // don't say the alphabet name
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2
Lookup(translator2, alphabet->name, ph_buf2);
} }
else else
if(translator != tr)
{ {
phontab_1 = tr->phoneme_tab_ix; phontab_1 = tr->phoneme_tab_ix;
strcpy(ph_buf2, ph_alphabet); ph_buf2[0] = 0;
ph_alphabet[2] = translator->phoneme_tab_ix; 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) if(ph_buf2[0] != 0)
{ {
// we used a different language for the alphabet name (now in ph_buf2) // we used a different language for the alphabet name (now in ph_buf2)
ph_alphabet[0] = phonPAUSE; ph_alphabet[0] = phonPAUSE;
ph_alphabet[1] = phonSWITCH; ph_alphabet[1] = phonSWITCH;
strcpy(&ph_alphabet[3], ph_buf2); strcpy(&ph_alphabet[3], ph_buf2);
len = strlen(ph_buf2) + 3; len = strlen(ph_buf2) + 3;
ph_alphabet[len] = phonSWITCH; ph_alphabet[len] = phonSWITCH;
ph_alphabet[len+1] = phontab_1; ph_alphabet[len+1] = phontab_1;
ph_alphabet[len+2] = 0; 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))
@@ -702,6 +716,11 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
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)
+1 -1
View File
@@ -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' // 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
+1 -1
View File
@@ -892,7 +892,7 @@ if(stress <= 1)
{ {
// 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;
} }
+1 -1
View File
@@ -35,7 +35,7 @@
#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;
+29 -25
View File
@@ -478,7 +478,7 @@ Translator *SelectTranslator(const char *name)
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;
@@ -550,7 +550,7 @@ Translator *SelectTranslator(const char *name)
// 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
@@ -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.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
@@ -681,7 +681,7 @@ Translator *SelectTranslator(const char *name)
// 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;
@@ -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.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;
@@ -1023,8 +1023,9 @@ SetLengthMods(tr,3); // all equal
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_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,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_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);
@@ -1037,6 +1038,9 @@ SetLengthMods(tr,3); // all equal
// 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;
@@ -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->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;
@@ -1124,7 +1128,7 @@ SetLengthMods(tr,3); // all equal
{ {
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;
@@ -1211,7 +1215,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -1224,7 +1228,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -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.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');
@@ -1261,7 +1265,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -1276,7 +1280,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -1293,7 +1297,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -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.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;
@@ -1345,7 +1349,7 @@ SetLengthMods(tr,3); // all equal
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
@@ -1362,7 +1366,7 @@ SetLengthMods(tr,3); // all equal
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
@@ -1394,7 +1398,7 @@ SetLengthMods(tr,3); // all equal
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
@@ -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.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
@@ -1457,7 +1461,7 @@ SetLengthMods(tr,3); // all equal
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)
@@ -1476,7 +1480,7 @@ SetLengthMods(tr,3); // all equal
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'))
@@ -1496,7 +1500,7 @@ SetLengthMods(tr,3); // all equal
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;
@@ -1561,7 +1565,7 @@ SetLengthMods(tr,3); // all equal
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
@@ -1618,7 +1622,7 @@ static void Translator_Russian(Translator *tr)
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
+61 -12
View File
@@ -2074,17 +2074,29 @@ return(FLAG_SPELLWORD);
if(switch_phonemes >= 0) if(switch_phonemes >= 0)
{ {
// this word uses a different phoneme table if((p[0] == phonPAUSE) && (p[1] == phonSWITCH))
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) {
{ // the new word starts with a phoneme table switch, so there's no need to switch before it.
//previous phoneme is also a phonSWITCH, just change its phoneme table number if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
n_ph_list2--; {
} //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
@@ -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) void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change)
{//========================================================================================================== {//==========================================================================================================
int ix; int ix;
@@ -2910,10 +2950,19 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{ {
if(iswlower(prev_in)) if(iswlower(prev_in))
{ {
c = ' '; // lower case followed by upper case, treat as new word // lower case followed by upper case in a word
space_inserted = 1; if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
prev_in_save = c; {
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set // 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))
+34 -13
View File
@@ -372,35 +372,53 @@ typedef struct {
#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_FINAL_DIM_ONLY 0x06
#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
// 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
@@ -518,6 +536,8 @@ typedef struct {
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
@@ -680,6 +700,7 @@ void InitText(int flags);
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);
+43 -26
View File
@@ -61,7 +61,7 @@ int formant_rate[9]; // values adjusted for actual sample rate
#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;
@@ -578,10 +578,8 @@ voice_t *LoadVoice(const char *vname, int control)
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);
@@ -590,6 +588,9 @@ voice_t *LoadVoice(const char *vname, int control)
} }
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
@@ -1634,30 +1635,35 @@ static void GetVoices(const char *path)
return; return;
do { do {
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); if(n_voices_list >= (N_VOICES_LIST-2))
break; // voices list is full
ftype = GetFileLength(fname); if(FindFileData.cFileName[0] != '.')
if((ftype == -2) && (FindFileData.cFileName[0] != '.'))
{ {
// a sub-sirectory sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
GetVoices(fname); ftype = GetFileLength(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 if(ftype == -2)
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); {
fclose(f_voice); // 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;
if(voice_data != NULL) // pass voice file name within the voices directory
{ voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
voices_list[n_voices_list++] = voice_data; 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);
@@ -1674,11 +1680,14 @@ static void GetVoices(const char *path)
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);
@@ -1710,15 +1719,23 @@ static void GetVoices(const char *path)
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