Browse Source

[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
master
jonsd 12 years ago
parent
commit
ad8798cf22

+ 27
- 14
dictsource/dict_phonemes View File

v w x z Z v w x z Z




Dictionary hu_dict 2013-02-25
Dictionary hu_dict 2013-03-08


a A a: e E e: i i: a A a: e E e: i i:
o o: u u: Y y y: Y: o o: u u: Y y y: Y:
ts v x z ts v x z




Dictionary en_dict 2013-03-06
Dictionary en_dict 2013-03-08


0 0# 3 3: @ @- @2 @5 0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3 @L a a# A: A@ aa aI aI3
Z z# Z z#




Dictionary eo_dict 2013-01-24
Dictionary eo_dict 2013-03-08


@- a aI aU e eI eU i @- a aI aU e eI eU i
o oI u uI o oI u uI
t. th th. v w x z t. th th. v w x z




Dictionary ta_dict 2013-03-05
Dictionary ta_dict 2013-03-08


a a: aI aU e E e: i a a: aI aU e E e: i
I i: o o: u U u2 u: I i: o o: u U u2 u:
ts; v w x z Z Z; ts; v w x z Z Z;




Dictionary pt_dict 2013-03-07
Dictionary pt_dict 2013-03-08


& &/ &U~ &~ @ @- a A & &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU aI aU e E eI EI eU EU
v w z Z v w z Z




Dictionary vi_dict 2013-02-16
Dictionary vi_dict 2013-03-08


@ @: @:I @:U @I @U a a: @ @: @:I @:U @I @U a a:
a:I a:U aI aU e E eU EU a:I a:U aI aU e E eU EU
t tS v w x z t tS v w x z




Dictionary ur_dict 2013-03-03
Dictionary ur_dict 2013-03-08


@ a a: aI aU e E e: @ a a: aI aU e E e:
i I i: O o: U u: V i I i: O o: U u: V


: b bh c ch d D d.
dh dh. f g gh h H j
J Jh k kh l m n N
p ph Q q r R r. s
S s. t T t. th th. v
w x z Z z.
: ; b bh c ch d D
d. dh dh. f g gh h H
j J Jh k kh l m n
N p ph Q q r R r.
s S s. t T t. th th.
v w x z Z z.




Dictionary bg_dict 2012-07-15 Dictionary bg_dict 2012-07-15
v w z v w z




Dictionary ka_dict 2013-02-01
Dictionary ka_dict 2013-03-08


@ @- a e i o u @ @- a e i o u


J Jh k kh l m n N J Jh k kh l m n N
n. n^ p ph r r. s S n. n^ p ph r r. s S
s. t t. th th. v w z s. t t. th th. v w z


Dictionary ga_dict 2013-03-08

0 0# @ a a# A: aI aI#
aU aU# e E E# e: i I
i: i@ o O O# o: u U
U# u1 u: u@

: ; b c C d d[ dZ
f g h j k l m n
p Q Q" r R s S t
t[ tS v w x X z Z

+ 1
- 0
dictsource/en_list View File

_- 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
dictsource/en_rules View File

legged lEgId legged lEgId
// Ab) le @L // Ab) le @L
C) le (ton_ @L C) le (ton_ @L
Ab) ler (_ l@
Ab) le (C_ l@
Ab) ler (_ l3
Ab) le (B_ l@
Ab) led (_ @Ld Ab) led (_ @Ld
&) lem (ent @Lm &) lem (ent @Lm
&p) lem (ent lIm &p) lem (ent lIm

+ 159
- 158
dictsource/eo_rules View File





.group a .group a
_) a(_ a
a a
aj aI
aU
_) a (_ a
a a
aj aI
aU




.group b .group b
_) b(_ bo
b b
_) b (_ bo
b b
.group c .group c
_) c(_ tso
_) ch(_ tSo
c ts
ch (K tS // foreign words
K) ch tS // foreign words
_) c (_ tso
_) ch (_ tSo
c ts
ch (K tS // foreign words
K) ch tS // foreign words
.group d .group d
_) d(_ do
d d
_) d (_ do
d d


_) d (-ro dokt'o
_) d (-rino d,okto
_) d (-ro dokt'o
_) d (-rino d,okto


.group e .group e
_) e(_ e
e e
ej eI
eU
_) e (_ e
e e
ej eI
eU
.group f .group f
_) f(_ fo
f f
_) f (_ fo
f f

_) f (-ino fR%aUl
_) f (-lo fRaU


_) f (-ino fR%aUl
_) f (-lo fRaU
.group g .group g
_) g(_ go
g g
gh (K dZ
_) g (_ go
g g
gh (K dZ
.group h .group h
_) h(_ ho
h h
hh x
_) h (_ ho
h h
hh x
.group i .group i
_) i(_ i
i i
_) i (_ i
i i



.group j .group j
_) j(_ jo
j j
jh (C Z
_) j (_ jo
j j
jh (C Z
.group k .group k
_) k(_ ko
k k
_) k (_ ko
k k

_) k (-do kamaR'a
_) k (-dino k'amaRa
_) k (-ino k'amaRad


_) k (-do kamaR'a
_) k (-dino k'amaRa
_) k (-ino k'amaRad


.group l .group l
_) l(_ lo
l l
ll (_ l
_) l (_ lo
l l
ll (_ l




.group m .group m
_) m(_ mo
m m
_) m (_ mo
m m
.group n .group n
_) n(_ no
n n
n (_S1 n
_) n (_ no
n n
n (_S1 n

_) n (-ro num'e


_) n (-ro num'e


.group o .group o
_) o(_ o
o o
oj oI
-) o (_ %o
-) oj (_ %oI
-) on (_ %on
-X) o (_ %o // d-ro etc
-X) oj (_ %oI
-X) on (_ %on
_) o (_ o
o o
oj oI
-) o (_ %o
-) oj (_ %oI
-) on (_ %on
-X) o (_ %o // d-ro etc
-X) oj (_ %oI
-X) on (_ %on
.group p .group p
_) p(_ po
p p
ph (K f // foreign words
K) ph f // foreign words
_) p (_ po
p p
ph (K f // foreign words
K) ph f // foreign words
.group q .group q
_) q(_ kwo
q k
qu kv
_) q (_ kwo
q k
qu kv
.group r .group r
_) r(_ Ro
r R
A) r (A R
K) r (A @-*
rr RR
_) r (_ Ro
r R
A) r (A R
K) r (A @-*
rr RR


.group s .group s
_) s(_ so
_) sh(_ So
s s
sh (K S // foreign words
K) sh S // foreign words
_) s (_ so
_) sh (_ So
s s
sh (K S // foreign words
K) sh S // foreign words

_) s (-ino s,injoR
_) s (-ro sinj'o


_) s (-ino s,injoR
_) s (-ro sinj'o
_) s (-ano s'am,ide
_) s (-anino s'am,ide

_) s (-ta_ s'ank


_) s (-ano s'am,ide
_) s (-anino s'am,ide


_) s (-ta_ s'ank
.group t .group t
_) t(_ to
t t
th (K T // foreign words
K) th T // foreign words
_) t (_ to
t t
th (K T // foreign words
K) th T // foreign words

-) ta (_ t%a // s-ta = sankta


-) ta (_ t%a // s-ta = sankta
.group u .group u
_) u(_ u
u u
uj uI
_) u (_ u
u u
uj uI
.group v .group v
_) v(_ vo
v v
_) v (_ vo
v v
.group w .group w
_) w(_ du'oblav,o
w w
K) wh w // foreign words
_) w (_ du'oblav,o
w w
K) wh w // foreign words
.group x .group x
_) x(_ ikso
x ks
_) x z // foreign words
_) x (_ ikso
x ks
_) x z // foreign words
.group y .group y
_) y(_ ipsilono
y j
K) y (K i
_) y (_ ipsilono
y j
K) y (K i
.group z .group z
_) z(_ zo
z z
_) z (_ zo
z z
.group .group
_) ĉ (_ tSo
ĉ tS
_) ĉ (_ tSo
ĉ tS

_) ĝ (_ dZo
ĝ dZ


_) ĝ (_ dZo
ĝ dZ
_) ĥ (_ xo
ĥ x


_) ĥ (_ xo
ĥ x
_) ĵ (_ Zo
ĵ Z


_) ĵ (_ Zo
ĵ Z
_) ŝ (_ So
ŝ S


_) ŝ (_ So
ŝ S
_) ŭ (_ wo
ŭ w


_) ŭ (_ wo
ŭ w
C) ' (_ = // word end in apostrophe, stress the last vowel


'
+ plus_
_) ++ (_ plusplus
'
+ plus_
_) ++ (_ plusplus


. punkto
. (. _:
\.) .
. punkto
. (. _:
\.) .




£ pundo
£ (_D _pundoI_:
__) - (_D minus_
D_) - (_D st@-*ek'eto_
A_) - (_D _
C_) - (_D _
--) -
- minus_
- (_a
$ dolaRo
$ (_D _dolaRoI_:
£ pundo
£ (_D _pundoI_:
__) - (_D minus_
D_) - (_D st@-*ek'eto_
A_) - (_D _
C_) - (_D _
--) -
- minus_
- (_a
$ dolaRo
$ (_D _dolaRoI_:



+ 245
- 0
dictsource/ga_list View File

// 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
- 0
dictsource/ga_rules View File

// 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
dictsource/hu_rules View File

udvaron) c (ser ts udvaron) c (ser ts
pere) c (cs ts pere) c (cs ts
licen) ccs ts|tS licen) ccs ts|tS
nyol) c (csat ts
pokró) c (sá ts


.group ch .group ch
anar) ch (i h anar) ch (i h
herná) d (sz d herná) d (sz d
szaba) d (szent d szaba) d (szent d
for) d (jános d for) d (jános d
egye) d (szám d
shetlan) d (szige d
szaba) d (szem d
_tren) dsz (e d|s
vakon) d (sz d


.group dz .group dz
fogó) dz (kod ts fogó) dz (kod ts
gyűrű) dz (ik z gyűrű) dz (ik z
burkoló) dz z burkoló) dz z



.group e .group e
e E e E
000_-) el (_ REl // double R for 1000-el 000_-) el (_ REl // double R for 1000-el
világossá) g (gy g világossá) g (gy g
vilá) g (gy g vilá) g (gy g
virá) g (gy g virá) g (gy g
csilla) g (gy g
édessé) g (gy g
ge) g (gyár g
han) g (gy g
hazugsá) g (gy g
tőze) g (gy g


.group gy .group gy
gy J gy J
utá) n (nyom n utá) n (nyom n
verse) ny (játék n^ verse) ny (játék n^
_elle) n (jav n _elle) n (jav n
vagyo) n (jog n
vagyo) n (jog n
nny (elv n|n^


.group o .group o
o o o o
s S s S
s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme
s-) sz //but not need spokening second sz phoneme s-) sz //but not need spokening second sz phoneme
dns-) sz s
dns-) sz s
föld) s (ánc S föld) s (ánc S
?1 hel) s (inki z ?1 hel) s (inki z
ki) s (ebb SS ki) s (ebb SS
ki) s (sziget S ki) s (sziget S
ki) s (szőlő S ki) s (szőlő S
körö) s (szeg S körö) s (szeg S
kolbászo) s S


.group ss .group ss
ssz ss2 ssz ss2
_szamo) ssz Ss _szamo) ssz Ss
_szilvá) ssz Ss _szilvá) ssz Ss
_vámo) ssz Ss _vámo) ssz Ss
keresé) ssz Ss
cipő) ssz Ss
szorongá) ssz Ss
keresé) ssz Ss
cipő) ssz Ss
szorongá) ssz Ss
alkalmazá) ssz Ss
kezdé) ssz Ss
edzé) ssz Ss
egye) ssz (ám Ss
felsorolá) ssz Ss
ssz (ürk Ss
ssz (őke Ss
formán) ssz (int Ss
hami) ssz (ín Ss
mászá) ssz (erű Ss
hárma) ssz Ss
hívá) ssz Ss
hivatkozá) ssz Ss
leve) ssz Ss
_hú) ssz (öv Ss
ismétlé) ssz Ss
járá) ssz Ss
kattintá) ssz Ss
_ki) ssz (öv Ss
közlekedé) ssz Ss
laká) ssz Ss
légzé) ssz Ss
_le) ssz (ab Ss
meglepeté) ssz Ss
nyila) ssz Ss
pszichológu) ssz Ss
ráko) ssz Ss
ritmu) ssz Ss
rúzso) ssz Ss
stílu) ssz Ss
víru) ssz Ss
szállodá) ssz Ss
taxi) ssz Ss
ugrá) ssz Ss
üstökö) ssz Ss
visszaélé) ssz Ss
esé) ssz (erű Ss
webe) ssz Ss


.group sz .group sz
sz s sz s
para) szts (üte st|S para) szts (üte st|S
para) sztsz (ag st|s para) sztsz (ag st|s
para) szts (uhan st|S para) szts (uhan st|S
sz (avar S|z
pénze) sz (k s
ellenállá) sz (ón Sz
ré) sz (árás Sz


.group t .group t
t t t t
vizi) t (szob t vizi) t (szob t
zár) t (szék t zár) t (szék t
szé) t (szortír t szé) t (szortír t
_robo) t (szoftve t
_robo) t (szoftve t


.group tj .group tj
C) tj c C) tj c
_tisztele) tj (el tj _tisztele) tj (el tj
zené) tj (átsz tj zené) tj (átsz tj
szen) tj (akab tj szen) tj (akab tj
közérze) tj (aví tj
közérze) tj (aví tj


.group ts .group ts
ts (_S2 tS //general rule with word end of ts letters ts (_S2 tS //general rule with word end of ts letters
pö) tsz (en ts: pö) tsz (en ts:
_á) tsz (orult t|s _á) tsz (orult t|s
leme) tsz (vén ts leme) tsz (vén ts
_cha) tsz (ob t|s
robo) ts (of t|S
_cha) tsz (ob t|s
robo) ts (of t|S


.group tt .group tt
tt t: tt t:
tí) z (sáv z tí) z (sáv z
_tí) z (shill z _tí) z (shill z
topá) z z topá) z z
dör) zsz (ör Z|z
raj) z (sabl z


.group .group
$ dolla:R2 $ dolla:R2

+ 8
- 8
dictsource/ka_rules View File



// For cyrillic characters (U+0400 to U+04FF) use Russian voice // For cyrillic characters (U+0400 to U+04FF) use Russian voice
.group 0xd0
0xd0 _^_RU
.group 0xd1
0xd1 _^_RU
.group 0xd2
0xd2 _^_RU
.group 0xd3
0xd3 _^_RU
//.group 0xd0
// 0xd0 _^_RU
//.group 0xd1
// 0xd1 _^_RU
//.group 0xd2
// 0xd2 _^_RU
//.group 0xd3
// 0xd3 _^_RU


.group .group
$ dolari $ dolari

+ 2
- 2
dictsource/pt_list View File

apego $alt2 $noun apego $alt2 $noun
apelo $alt $verb apelo $alt $verb
aposto $alt $verb aposto $alt $verb
apreço $alt2
aperto $alt2 $noun aperto $alt2 $noun
apoio $alt $verb apoio $alt $verb
aprovo $alt aprovo $alt
chovesse $alt2 chovesse $alt2
chupeta $alt2 chupeta $alt2
clamores $alt2 clamores $alt2
clero $alt
coco $alt2 coco $alt2
cofre $alt cofre $alt
cogumelo $alt cogumelo $alt
palheta $alt2 palheta $alt2
panfleto $alt2 panfleto $alt2
pangeia $alt pangeia $alt
panqueca p,&~Nk'Ek&
pantera $alt pantera $alt
paralelo $alt paralelo $alt
parede $alt2 parede $alt2
pose $alt2 pose $alt2
povos $alt povos $alt
poxa p'oS& poxa p'oS&
preço $alt2
primavera $alt primavera $alt
provo $alt provo $alt
quarteto $alt2 quarteto $alt2

+ 9
- 1
dictsource/pt_rules View File

// translation rules Brazilian // translation rules Brazilian
// translation rules Brazilian
// This file is UTF-8 encoded // This file is UTF-8 encoded


// Options // Options
_entend) e (L06_ e _entend) e (L06_ e
_estend) e (L06_ e _estend) e (L06_ e
respond) e (L06_ e // cor- respond) e (L06_ e // cor-
_enraivec) e (L07_ e
_espairec) e (L07_ e
bat) e (L07_ e // re- com- bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su- ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub- met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
preend) e (L07_ e // sur- com- preend) e (L07_ e // sur- com-
respond) e (L07_ e // cor- respond) e (L07_ e // cor-
qu) e (brL04_ E qu) e (brL04_ E
acel) e (rL04_ E / des-
_hosp) e (dL03_ E _hosp) e (dL03_ E
_in) e (ptL03_ E
_gr) e (gL03_ e _gr) e (gL03_ e
_n) e (grL03_ e _n) e (grL03_ e
_estr) ei (L03_ EI _estr) ei (L03_ EI
_bez) e (rrL03_ e _bez) e (rrL03_ e
_inv) e (rtL03_ e _inv) e (rtL03_ e
_f) e (rvL03_ e _f) e (rvL03_ e
_enraiv) e (çL03_ e
_p) e (sL01_ E _p) e (sL01_ E
_d) e (scL02_ E _d) e (scL02_ E
_cr) e (scL02_ E _cr) e (scL02_ E
conh) e (çL03_ e // re- conh) e (çL03_ e // re-
_esqu) e (çL03_ e _esqu) e (çL03_ e
_forn) e (çL03_ e _forn) e (çL03_ e
_obed) e (çL03_ e
obed) e (çL03_ e / des-
_ofer) e (çL03_ e _ofer) e (çL03_ e
pr) e (çL03_ e / a-
_espair) e (çL03_ e
abast) e (çL03_ e // re- abast) e (çL03_ e // re-
_aborr) e (çL03_ e _aborr) e (çL03_ e
_agrad) e (çL03_ e _agrad) e (çL03_ e

+ 6
- 0
dictsource/ta_rules View File

_) ச (வான tSV _) ச (வான tSV
_) ச (ாக்கட்டி tS _) ச (ாக்கட்டி tS
_) சாக்ப (ீL04 tSa:kp _) சாக்ப (ீL04 tSa:kp
_) சாக்லெட் tSa:klet.
_) சாக்லேட் tSa:kle:t. _) சாக்லேட் tSa:kle:t.
_) சா (ட்டர்ஜி tSe: _) சா (ட்டர்ஜி tSe:
_) ச (ாணக்கிய tS _) ச (ாணக்கிய tS
ஆ) ச (ாரங்கள tS ஆ) ச (ாரங்கள tS
ஆ) ச (ாரத் tS ஆ) ச (ாரத் tS
ஆ) ச (ாரம tS ஆ) ச (ாரம tS
_சிவா) ச (ாரி tS
_ரங்கா) ச (ாரி tS _ரங்கா) ச (ாரி tS
_வரதா) ச (ாரி tS _வரதா) ச (ாரி tS
_வேதா) ச (ாரி tS _வேதா) ச (ாரி tS
_கிருஷ்ணமா) ச (ாரி tS _கிருஷ்ணமா) ச (ாரி tS
_தேசிகா) ச (ாரி tS _தேசிகா) ச (ாரி tS
_பட்டா) ச (ாரி tS _பட்டா) ச (ாரி tS
_மத்வா) ச (ாரி tS
அனந்தா) ச (ாரி tS அனந்தா) ச (ாரி tS
அன்னமா) ச (ாரி tS அன்னமா) ச (ாரி tS
ஆ) ச (ாரிய_ tS ஆ) ச (ாரிய_ tS
_) ப (ட்டக்ஸ bV _) ப (ட்டக்ஸ bV
_) ப (ட்டன bV _) ப (ட்டன bV
_) ப (ட்டன_ pV _) ப (ட்டன_ pV
_) ப (ட்டாசாரி bV
_) ப (தில bV _) ப (தில bV
_) பத்த (ிரகாளி bVdd _) பத்த (ிரகாளி bVdd
_) பத்திரப் (_ bVttirVp _) பத்திரப் (_ bVttirVp
_) ப (ிடில f _) ப (ிடில f
_) ப (ிட்சு b _) ப (ிட்சு b
_) ப (ிட்டடி b _) ப (ிட்டடி b
_) பிந்தி (ரன்வாலே bind
_) ப (ினாமி b _) ப (ினாமி b
_) ப (ினிஷ f _) ப (ினிஷ f
_) ப (ின்_லேடன b _) ப (ின்_லேடன b
_மL06ாப்) பி (ரப p _மL06ாப்) பி (ரப p
வீண்) பி (ரமை b வீண்) பி (ரமை b
துஷ்) பி (ரயோக p துஷ்) பி (ரயோக p
_சொற்) பி (ரயோக p
L03ந்தப்) பி (ரளய p L03ந்தப்) பி (ரளய p
_சொற்) பி (ரவாக p _சொற்) பி (ரவாக p
எக்ஸ்) பிர (ஸ pre எக்ஸ்) பிர (ஸ pre

+ 243
- 56
dictsource/vi_rules View File

//================================ //================================
// Consonants // Consonants
//================================ //================================
.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve
.L02 n
.group b .group b
b b b b
_) b _b _) b _b
//b($w_alt2 _^_EN
.group c .group c
c g //k c g //k
c (_ kh c (_ kh
ch c // try [tS;] [tS] [c] ch c // try [tS;] [tS] [c]
ce (_ _^_EN
_) cl _^_EN
.group d .group d
d J^ // try [z] [J] [dZ] [dZ;] [J^] d J^ // try [z] [J] [dZ] [dZ;] [J^]
d (_ _^_EN
.group đ .group đ
đ d đ d
_) đ _d _) đ _d
.group f .group f
f f
//f f
_) f _^_EN
f (_ _^_EN
.group g .group g
g Q // try [g] [Q] g Q // try [g] [Q]
gh Q // or [g] [Q] gh Q // or [g] [Q]
//g (í J^ //g (í J^
//g (ỉ J^ //g (ỉ J^
//g (ĩ J^ //g (ĩ J^
//g (ị J^
//g (ị J^
gi J^ gi J^
?1 giết J^'iE3g ?1 giết J^'iE3g
giết J^'iE3t[ giết J^'iE3t[
?1 giệt J^'iE6g ?1 giệt J^'iE6g
giệt J^'iE6t[ giệt J^'iE6t[
giệc J^'iE6kh giệc J^'iE6kh
_) gol _^_EN
_) gat _^_EN
ght (_ _^_EN
.group h .group h
h h h h
.group j .group j
j Z j Z
.group k .group k
k k k k
k (_ kh
//k (_ kh
kh x kh x
k (_ _^_EN
.group l .group l
l l l l
l (_ _^_EN
le (_ _^_EN
.group m .group m
m m m m
.group n .group n
n n n n
ng N ng N
ngh N ngh N
nh n^ nh n^
nd (_ _^_EN
.group ñ .group ñ
ñ n^ ñ n^
.group p .group p
p p p p
ph f ph f
.group q .group q
q k q k
q (_ kh q (_ kh
qu w //kw qu w //kw
.group r .group r
r z. // try [z] [z.] [r] [z;] r z. // try [z] [z.] [r] [z;]
r (_ _^_EN
rm (_ _^_EN
.group s .group s
s s. // try [s.] [s] [S] s s. // try [s.] [s] [S]
_) sh _^_EN
s (_ _^_EN
st (_ _^_EN
se (_ _^_EN
.group t .group t
t t[ t t[
?1 t (_ g ?1 t (_ g
th t th t
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]
ts (_ _^_EN
te (_ _^_EN
th (_ _^_EN
tt (_ _^_EN
.group v .group v
v v v v
ve (_ _^_EN
.group w .group w
w w w w
_) w _^_EN
w (_ _^_EN
.group x .group x
x s x s
x (_ _^_EN
.group z .group z
z z z z
z (_ _^_EN
//================================ //================================
// Vowels // Vowels
//================================ //================================
.group a .group a
a a: a a:
aủ aU4 aủ aU4
aũ aU5 aũ aU5
aụ aU6 aụ aU6
a (L01 _^_EN
ai (L02 _^_EN
.group à .group à
à a:2 à a:2
ài a:I2 ài a:I2
ày aI2 ày aI2
ào a:U2 ào a:U2
àu aU2 àu aU2
.group á .group á
á a:3 á a:3
ái a:I3 ái a:I3
áy aI3 áy aI3
áo a:U3 áo a:U3
áu aU3 áu aU3
.group ả .group ả
ả a:4 ả a:4
ải a:I4 ải a:I4
ảy aI4 ảy aI4
ảo a:U4 ảo a:U4
ảu aU4 ảu aU4
.group ã .group ã
ã a:5 ã a:5
ãi a:I5 ãi a:I5
ãy aI5 ãy aI5
ão a:U5 ão a:U5
ãu aU5 ãu aU5
.group ạ .group ạ
ạ a:6 ạ a:6
ại a:I6 ại a:I6
ạy aI6 ạy aI6
ạo a:U6 ạo a:U6
ạu aU6 ạu aU6
//================================ //================================
.group ă .group ă
ă a ă a
.group ằ .group ằ
ằ a2 ằ a2
.group ắ .group ắ
ắ a3 ắ a3
.group ẳ .group ẳ
ẳ a4 ẳ a4
.group ẵ .group ẵ
ẵ a5 ẵ a5
.group ặ .group ặ
ặ a6 ặ a6
//================================= //=================================
.group â .group â
â @ â @
ây @I ây @I
âu @U1
âu @U1
.group ầ .group ầ
ầ @2 ầ @2
ầy @I2 ầy @I2
ầu @U2 ầu @U2
.group ấ .group ấ
ấ @3 ấ @3
ấy @I3 ấy @I3
ấu @U3 ấu @U3
.group ẩ .group ẩ
ẩ @4 ẩ @4
ẩy @I4 ẩy @I4
ẩu @U4 ẩu @U4
.group ẫ .group ẫ
ẫ @5 ẫ @5
ẫy @I5 ẫy @I5
ẫu @U5 ẫu @U5
.group ậ .group ậ
ậ @6 ậ @6
ậy @I6 ậy @I6
ậu @U6 ậu @U6
//=========================== //===========================
.group e .group e
e E e E
eỏ EU4 eỏ EU4
eỗ EU5 eỗ EU5
eọ EU6 eọ EU6
e (L01 _^_EN
ey (_ _^_EN
.group è .group è
è E2 è E2
èo EU2 èo EU2
.group é .group é
é E3 é E3
éo EU3 éo EU3
.group ẻ .group ẻ
ẻ E4 ẻ E4
ẻo EU4 ẻo EU4
.group ẽ .group ẽ
ẽ E5 ẽ E5
ẽo EU5 ẽo EU5
.group ẹ .group ẹ
ẹ E6 ẹ E6
ẹo EU6 ẹo EU6
//============================ //============================
.group ê .group ê
ê e ê e
êu eU1 êu eU1
.group ề .group ề
ề e2 ề e2
ều eU2 ều eU2
.group ế .group ế
ế e3 ế e3
ếu eU3 ếu eU3
.group ể .group ể
ể e4 ể e4
ểu eU4 ểu eU4
.group ễ .group ễ
ễ e5 ễ e5
ễu eU5 ễu eU5
.group ệ .group ệ
ệ e6 ệ e6
ệu eU6 ệu eU6
//============================ //============================
.group i .group i
i i i i
i (A j i (A j
iểu iU4 iểu iU4
iễu iU5 iễu iU5
iệu iU6 iệu iU6
i (L01 _^_EN
.group ì .group ì
ì i2 ì i2
ì (A j2 ì (A j2
ìa i@2 ìa i@2
ìu iU2 ìu iU2
.group í .group í
í i3 í i3
í (A j3 í (A j3
ía i@3 ía i@3
íu iU3 íu iU3
.group ỉ .group ỉ
ỉ i4 ỉ i4
ỉ (A j4 ỉ (A j4
ỉa i@4 ỉa i@4
ỉu iU4 ỉu iU4
.group ĩ .group ĩ
ĩ i5 ĩ i5
ĩ (A j5 ĩ (A j5
ĩa i@5 ĩa i@5
ĩu iU5 ĩu iU5
.group ị .group ị
ị i6 ị i6
ị (A j6 ị (A j6
ịa i@6 ịa i@6
ịu iU6 ịu iU6
//========================= //=========================
.group o .group o
o O o O
oa o@ // modify oa sound example: hoa,khoa // o (A w oa o@ // modify oa sound example: hoa,khoa // o (A w
oị OI6 oị OI6
ong O# ong O#
oe o& // Adding oe sound example: lóe sáng,toét mắt oe o& // Adding oe sound example: lóe sáng,toét mắt
o (L01 _^_EN
.group ò .group ò
ò O2 ò O2
òi OI2 òi OI2
òa o@2 //ò (A w2 òa o@2 //ò (A w2
òng O#2 òng O#2
òe o&2 òe o&2
.group ó .group ó
ó O3 ó O3
óa o@3 //ó (A w3 óa o@3 //ó (A w3
óng O#3 óng O#3
óe o&3 óe o&3
.group ỏ .group ỏ
ỏ O4 ỏ O4
ỏa o@4 //ỏ (A w4 ỏa o@4 //ỏ (A w4
ỏng O#4 ỏng O#4
ỏe o&4 ỏe o&4
.group õ .group õ
õ O5 õ O5
õa o@5 //õ (A w5 õa o@5 //õ (A w5
õng O#5 õng O#5
õe o&5 õe o&5
.group ọ .group ọ
ọ O6 ọ O6
ọa o@6 //ọ (A w6 ọa o@6 //ọ (A w6
ọng O#6 ọng O#6
ọe o&6 ọe o&6
//============================= //=============================
.group ô .group ô
ô o ô o
ôi oI ôi oI
ông o# // ông sound ông o# // ông sound
.group ồ .group ồ
ồ o2 ồ o2
ồi oI2 ồi oI2
ồng o#2 ồng o#2
.group ố .group ố
ố o3 ố o3
ối oI3 ối oI3
ống o#3 ống o#3
.group ổ .group ổ
ổ o4 ổ o4
ổi oI4 ổi oI4
ổng o#4 ổng o#4
.group ỗ .group ỗ
ỗ o5 ỗ o5
ỗi oI5 ỗi oI5
ỗng o#5 ỗng o#5
.group ộ .group ộ
ộ o6 ộ o6
ội oI6 ội oI6
ộng o#6 ộng o#6
//============================= //=============================
.group ơ .group ơ
ơ @: ơ @:
ơi @:I ơi @:I
ơu @:U ơu @:U
.group ờ .group ờ
ờ @:2 ờ @:2
ời @:I2 ời @:I2
ờu @:U2 ờu @:U2
.group ớ .group ớ
ớ @:3 ớ @:3
ới @:I3 ới @:I3
ớu @:U3 ớu @:U3
.group ở .group ở
ở @:4 ở @:4
ởi @:I4 ởi @:I4
ởu @:U4 ởu @:U4
.group ỡ .group ỡ
ỡ @:5 ỡ @:5
ỡi @:I5 ỡi @:I5
ỡu @:U5 ỡu @:U5
.group ợ .group ợ
ợ @:6 ợ @:6
ợi @:I6 ợi @:I6
ợu @:U6 ợu @:U6
//============================= //=============================
.group u .group u
u u u u
u (A w u (A w
uỗi u@j5 uỗi u@j5
uội u@j6 uội u@j6
//ung u# //ung u#
u (L01 _^_EN
ui (L01 _^_EN
ua (L01 _^_EN
.group ù .group ù
ù u2 ù u2
ù (A w2 ù (A w2
ùi uI2 ùi uI2
ùa u@2 ùa u@2
//ùng u#2 //ùng u#2
.group ú .group ú
ú u3 ú u3
úi uI3 úi uI3
úa u@3 úa u@3
//úng u#3 //úng u#3
.group ủ .group ủ
ủ u4 ủ u4
ủi uI4 ủi uI4
ủa u@4 ủa u@4
//ủng u#4 //ủng u#4
.group ũ .group ũ
ũ u5 ũ u5
ũi uI5 ũi uI5
ũa u@5 ũa u@5
//ũng u#5 //ũng u#5
.group ụ .group ụ
ụ u6 ụ u6
ụi uI6 ụi uI6
ụa u@6 ụa u@6
//ụng u#6 //ụng u#6
//============================= //=============================
.group ư .group ư
ư y ư y
ưi yI ưi yI
ưởu y@w4 ưởu y@w4
ưỡu y@w5 ưỡu y@w5
ượu y@w6 ượu y@w6
.group ừ .group ừ
ừ y2 ừ y2
ừi yI2 ừi yI2
ừa y@2 ừa y@2
ừu yw2 ừu yw2
.group ứ .group ứ
ứ y3 ứ y3
ứi yI3 ứi yI3
ứa y@3 ứa y@3
ứu yw3 ứu yw3
.group ử .group ử
ử y4 ử y4
ửi yI4 ửi yI4
ửa y@4 ửa y@4
ửu yw4 ửu yw4
.group ữ .group ữ
ữ y5 ữ y5
ữi yI5 ữi yI5
ữa y@5 ữa y@5
ữu yw5 ữu yw5
.group ự .group ự
ự y6 ự y6
ựi yI6 ựi yI6
ựa y@6 ựa y@6
ựu yw6 ựu yw6
//=============================
.group y .group y
y i y i
yễ i@5 yễ i@5
yệ i@6 yệ i@6
// yêu i@U // yêu i@U
.group ỳ .group ỳ
ỳ i2 ỳ i2
ỳ (A j2 ỳ (A j2
ỳa i@2 ỳa i@2
.group ý .group ý
ý i3 ý i3
ý (A j3 ý (A j3
ýa i@3 ýa i@3
.group ỷ .group ỷ
ỷ i4 ỷ i4
ỷ (A j4 ỷ (A j4
ỷa i@4 ỷa i@4
.group ỹ .group ỹ
ỹ i5 ỹ i5
ỹ (A j5 ỹ (A j5
ỹa i@5 ỹa i@5
.group ỵ .group ỵ
ỵ i6 ỵ i6
ỵ (A j6 ỵ (A j6
ỵa i@6 ỵa i@6
//=============================
.group 0xce // Greek letters .group 0xce // Greek letters
// 0xce is the first byte of the utf-8 code for these characters // 0xce is the first byte of the utf-8 code for these characters
α a:1n_|f'a:1 α a:1n_|f'a:1
ά a:1n_|f'a:1 ά a:1n_|f'a:1
β b'e1_|t['a:1 β b'e1_|t['a:1
ν nw'i1 ν nw'i1
ξ s'i7 ξ s'i7
ο o1_|m'i1_|kz.'O7n ο o1_|m'i1_|kz.'O7n
.group 0xcf // Greek letters .group 0xcf // Greek letters
π p'i1 π p'i1
ρ z.'o1 ρ z.'o1
σ s'i3c_|m'a:1 σ s'i3c_|m'a:1
ω o1_|m'e1_|Q'a:7 ω o1_|m'e1_|Q'a:7
ώ o1_|m'e1_|Q'a:7 ώ o1_|m'e1_|Q'a:7
ό o1_|m'i1_|kz.'O7n ό o1_|m'i1_|kz.'O7n
.group .group
% f'@2n||cr'am % f'@2n||cr'am
! _:c'@3m_|t'a:7n_: ! _:c'@3m_|t'a:7n_:
! (\!
! (\!
// : koUl@n // : koUl@n
D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30
$ d'o||l'a $ d'o||l'a
!= x'o#_|_b'a2N_ != x'o#_|_b'a2N_
>= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N
<= n^'O4_|h'@:1n_|hw,a6kh_b'a2N <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N
__) - (_D cr'y2 __) - (_D cr'y2
A_) - (_D _ A_) - (_D _
C_) - (_D _ C_) - (_D _
. c'@3m_ . c'@3m_
. (. _: . (. _:
\.) .
\.) .

+ 35
- 19
phsource/compile_report View File

sq 33 127 sq 33 127
hy 23 119 hy 23 119
da 46 139 da 46 139
ka 20 114
ka 20 115
rw 15 132 rw 15 132
pa 15 152 pa 15 152
prs 8 113 prs 8 113
bo 10 154 bo 10 154
kk 20 118 kk 20 118
fa 9 112 fa 9 112
ga 21 127
ga 29 133
tt 23 120 tt 23 120
ko 15 116 ko 15 116
kl 18 119 kl 18 119
h/hu_fi [h] fi h/hu_fi [h] fi
[h] mt [h] mt
j2/_j2 [;] base j2/_j2 [;] base
[;] ga
j2/j2@ [;] base j2/j2@ [;] base
[;] ga
j2/j2a [;] base j2/j2a [;] base
[;] ga
j2/j2e [;] base j2/j2e [;] base
[;] ga
j2/j2i [;] base j2/j2i [;] base
[;] ga
j2/j2o [;] base j2/j2o [;] base
[;] ga
j2/j2u [;] base j2/j2u [;] base
[;] ga
j2/xj2 [;] base j2/xj2 [;] base
[;] ga
j/_j [j] base j/_j [j] base
[j] zh [j] zh
[j] da [j] da
[l/] fr [l/] fr
l/l_@ [l/3] base l/l_@ [l/3] base
[l/] fr [l/] fr
l/l@ [¨-] base
l/l@ [¨\7] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
l/L2_uL [l/2] base l/L2_uL [l/2] base
l/l_3 [l/] de l/l_3 [l/] de
l/l_4 [ll] sq l/l_4 [ll] sq
l/la [¨-] base
l/la [¨\7] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_a [l/3] base l/l_a [l/3] base
[l/] fr [l/] fr
l/le [¨-] base
l/le [¨\7] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[&:] af [&:] af
l/l_front [L] sq l/l_front [L] sq
l/l_front_ [l/4] sq l/l_front_ [l/4] sq
l/li [¨-] base
l/li [¨\7] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
ll/_ll [L] base ll/_ll [L] base
l/l_long [l] base l/l_long [l] base
[l] fr [l] fr
l/lo [¨-] base
l/lo [¨\7] base
[l#] base [l#] base
[l/2] fr [l/2] fr
[K] nso [K] nso
[l;] lt [l;] lt
[l] ru [l] ru
[l^] ru [l^] ru
l/lu [¨-] base
l/lu [¨\7] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
ufric/x [x] base ufric/x [x] base
ufric/x2 [x2] af ufric/x2 [x2] af
[x] ku [x] ku
[Q2] ka
[X] kk [X] kk
ufric/x_hr [x] base ufric/x_hr [x] base
[x] hr [x] hr
[x#] sr [x#] sr
ufric/xx [X] base ufric/xx [X] base
[Q"] base [Q"] base
[Q] ka
ustop/c [c] base ustop/c [c] base
ustop/k [k] base ustop/k [k] base
[k] fr [k] fr
ustop/k_asp [kh] consonants ustop/k_asp [kh] consonants
[gh] hi [gh] hi
[kh] zh [kh] zh
[k#] ka
[kh] tn [kh] tn
ustop/k_asp2 [kh2] ml ustop/k_asp2 [kh2] ml
[k#] ka
ustop/k_asp_a [k#] ka
ustop/k_asp_e [k#] ka
ustop/k_asp_u [k#] ka
ustop/k_ejc [k`] am ustop/k_ejc [k`] am
ustop/ki [k] base ustop/ki [k] base
[k] base2 [k] base2
[k] lv [k] lv
[k] el [k] el
[k] zhy [k] zhy
[k#] ka
[kh] tn [kh] tn
ustop/kr [k] base ustop/kr [k] base
[k] base2 [k] base2
[p] vi [p] vi
[p] sq [p] sq
ustop/q [q] base ustop/q [q] base
ustop/q2 [q] ka
ustop/q2_i [q] ka
ustop/q_u [q] base ustop/q_u [q] base
ustop/t [t] base ustop/t [t] base
[t] en-us [t] en-us
[aI] hy [aI] hy
[aI] da [aI] da
[aI] te [aI] te
[aI] ga
[aI] kl [aI] kl
vdiph/ai_2 [aI] en vdiph/ai_2 [aI] en
[aI] cy [aI] cy
[aU] lt [aU] lt
[aU] sk [aU] sk
[aU] id [aU] id
[aU] ga
[aU#] ga
vdiph/ee-e [E:] hi vdiph/ee-e [E:] hi
vdiph/eei [EI] base2 vdiph/eei [EI] base2
[eI] en [eI] en
vdiph/@i [Yi] et vdiph/@i [Yi] et
[@I] vi [@I] vi
[@:I] vi [@:I] vi
[@I] ga
vdiph/&i [&i] fi vdiph/&i [&i] fi
[&i] et [&i] et
[aI] hi [aI] hi
voc/j [J^] base voc/j [J^] base
voc/Q [Q] base voc/Q [Q] base
[Q^] base [Q^] base
[Q] ka
[Q2] ka
voc/Q_ [Q] base voc/Q_ [Q] base
[Q^] base [Q^] base
[Q] nl [Q] nl
[@] wo [@] wo
[@:] wo [@:] wo
[@] te [@] te
[@] ga
[E#] ga
[I#] ga
[O#] ga
[U#] ga
[@/] ga
vowel/@- [@-] base vowel/@- [@-] base
[r*] hr [r*] hr
[@-] da [@-] da
[a] sq [a] sq
[A] da [A] da
[?A] da [?A] da
[a] ka
[a:] si [a:] si
vowel/a#_3 [a#] en vowel/a#_3 [a#] en
[a#] en-n [a#] en-n
[A1] et [A1] et
[A] nl [A] nl
[a:] is [a:] is
[0] ga
[A] tt [A] tt
[a] ko [a] ko
vowel/aa_9 [a] fi vowel/aa_9 [a] fi
[i] wo [i] wo
vowel/ii_7 [i] en vowel/ii_7 [i] en
[i] sq [i] sq
[i] ga
vowel/ii_8 [i] kk vowel/ii_8 [i] kk
vowel/ii_final [i] en-us vowel/ii_final [i] en-us
[i] en-rp [i] en-rp
[O] it [O] it
[O] an [O] an
[O] pa [O] pa
[O] ga
vowel/oo_5 [O] pl vowel/oo_5 [O] pl
[O] is [O] is
[O] sq [O] sq
[u] ak [u] ak
[u:] wo [u:] wo
[u] bo [u] bo
[u1] ga
[u] tt [u] tt
vowel/u# [u:] en-sc vowel/u# [u:] en-sc
[Y] tr [Y] tr
vowel/V_4 [V] en-sc vowel/V_4 [V] en-sc
[V] da [V] da
[?V] da [?V] da
[O] ga
vowel/V_6 [V] en-us vowel/V_6 [V] en-us
[a#] lv [a#] lv
vowel/y [y] base2 vowel/y [y] base2
[yI] is [yI] is
[y] hy [y] hy
vwl_af/@ [@] af vwl_af/@ [@] af
[@] ga
vwl_af/I [I] af vwl_af/I [I] af
vwl_af/r@ [@] af vwl_af/r@ [@] af
[I] af [I] af
[@] ga
vwl_de/uu_@ [UR] de vwl_de/uu_@ [UR] de
vwl_en/aI@ [aI@] en vwl_en/aI@ [aI@] en
[aI@] en-n [aI@] en-n

BIN
phsource/j/je View File


+ 1
- 1
phsource/ph_danish View File

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
phsource/ph_georgian View File

phoneme a phoneme a
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 180 length 180
FMT(vowel/a#_2)
IF thisPh(isUnstressed) THEN
FMT(vowel/a#_2)
ENDIF
FMT(vowel/a_3)
endphoneme endphoneme




Vowelin f1=1 f2=1400 -100 100 f3=-150 80 Vowelin f1=1 f2=1400 -100 100 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
IF nextPh(isPause2) THEN IF nextPh(isPause2) THEN
WAV(ustop/k_asp2, 40)
WAV(ustop/k_asp, 40)
ENDIF ENDIF
IF nextPh(l) THEN
WAV(ustop/kl)
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_u, 50)
ELSE
WAV(ustop/k_asp_a, 45)
ENDIF ENDIF
WAV(ustop/k_asp2, 60)
endphoneme endphoneme




import_phoneme consonants/k- import_phoneme consonants/k-
endphoneme endphoneme


phoneme q
vls uvl stop
lengthmod 2
Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30
Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35

IF nextPh(#i) THEN
WAV(ustop/q2_i, 40)
ENDIF
WAV(ustop/q2, 48)
endphoneme





phoneme Q phoneme Q
import_phoneme base/r"
vcd vel frc
voicingswitch x
lengthmod 6
Vowelin f1=2 f2=2300 200 400 f3=-100 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
FMT(voc/Q) addWav(ufric/xx, 100)
endphoneme

phoneme Q2
vcd vel frc
voicingswitch x
lengthmod 6
Vowelin f1=2 f2=2300 200 400 f3=-100 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
FMT(voc/Q) addWav(ufric/x2, 50)
endphoneme endphoneme



phoneme r phoneme r
import_phoneme base/R import_phoneme base/R
endphoneme endphoneme

+ 239
- 0
phsource/ph_irish View File

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


+ 0
- 15
phsource/ph_malayalam View File

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
- 0
phsource/ph_vietnam_hue View File

//====================================================
// 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
phsource/r/aa View File


BIN
phsource/ustop/k_asp_a.wav View File


BIN
phsource/ustop/k_asp_e.wav View File


BIN
phsource/ustop/k_asp_u.wav View File


BIN
phsource/ustop/k_ejc.wav View File


BIN
phsource/vwl_en_us/oor View File


+ 15
- 12
src/dictionary.cpp View File

p++; // skip over the zero which terminates the list for this hash value p++; // skip over the zero which terminates the list for this hash value
} }


if((tr->dict_min_size > 0) && (size < tr->dict_min_size))
if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size))
{ {
fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); fprintf(stderr, "Full dictionary is not installed for '%s'\n", name);
} }
{ {
if(vowel_stress[ix] == 4) if(vowel_stress[ix] == 4)
{ {
if(tr->langopts.stress_flags & 0x20000)
if(tr->langopts.stress_flags & S_PRIORITY_STRESS)
vowel_stress[ix] = 1; vowel_stress[ix] = 1;
else else
vowel_stress[ix] = 3; vowel_stress[ix] = 3;
max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1);
if((max_stress < 0) && dictionary_flags) if((max_stress < 0) && dictionary_flags)
{ {
if((tr->langopts.stress_flags & 1) && (vowel_count == 2))
{
// lang=fr: don't stress monosyllables except at end-of-clause
vowel_stress[1] = 0;
dictionary_flags[0] |= FLAG_STRESS_END2;
}
max_stress = 0; max_stress = 0;
} }


if((match1.points == 0) && ((option_sayas & 0x10) == 0)) if((match1.points == 0) && ((option_sayas & 0x10) == 0))
{ {
n = utf8_in(&letter,p-1)-1; n = utf8_in(&letter,p-1)-1;

if(tr->letter_bits_offset > 0) if(tr->letter_bits_offset > 0)
{ {
// not a Latin alphabet, switch to the default Latin alphabet language // not a Latin alphabet, switch to the default Latin alphabet language
p += (wc_bytes-1); p += (wc_bytes-1);
} }


if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset))
if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset))
{ {
// switch to the nominated language for this alphabet
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language));
return(0);
if(tr->langopts.alt_alphabet == alphabet->offset)
{
sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang);
return(0);
}
if(alphabet->flags & AL_WORDS)
{
// switch to the nominated language for this alphabet
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language));
return(0);
}
} }
} }
} }

+ 40
- 21
src/numbers.cpp View File

ALPHABET *alphabet; ALPHABET *alphabet;
int language; int language;
int phontab_1; int phontab_1;
int alphabet_name_switch;
char *ph_alphabet_end;
char capital[20]; char capital[20];
char ph_buf[80]; char ph_buf[80];
char ph_buf2[80]; char ph_buf2[80];
return(0); return(0);
} }


alphabet_name_switch = 0;
alphabet = AlphabetFromChar(letter); alphabet = AlphabetFromChar(letter);
if(alphabet != current_alphabet) if(alphabet != current_alphabet)
{ {
current_alphabet = alphabet; current_alphabet = alphabet;
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset))
{ {
phontab_1 = tr->phoneme_tab_ix;
ph_buf2[0] = 0;
if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice
if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet))
{ {
// Can't find the local name for this alphabet, use the English name
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2
Lookup(translator2, alphabet->name, ph_buf2);
// don't say the alphabet name
} }
else else
if(translator != tr)
{ {
phontab_1 = tr->phoneme_tab_ix; phontab_1 = tr->phoneme_tab_ix;
strcpy(ph_buf2, ph_alphabet);
ph_alphabet[2] = translator->phoneme_tab_ix;
}

if(ph_buf2[0] != 0)
{
// we used a different language for the alphabet name (now in ph_buf2)
ph_alphabet[0] = phonPAUSE;
ph_alphabet[1] = phonSWITCH;
strcpy(&ph_alphabet[3], ph_buf2);
len = strlen(ph_buf2) + 3;
ph_alphabet[len] = phonSWITCH;
ph_alphabet[len+1] = phontab_1;
ph_alphabet[len+2] = 0;
ph_buf2[0] = 0;
if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice
{
// Can't find the local name for this alphabet, use the English name
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2
Lookup(translator2, alphabet->name, ph_buf2);
}
else
if(translator != tr)
{
phontab_1 = tr->phoneme_tab_ix;
strcpy(ph_buf2, ph_alphabet);
ph_alphabet[2] = translator->phoneme_tab_ix;
}

if(ph_buf2[0] != 0)
{
// we used a different language for the alphabet name (now in ph_buf2)
ph_alphabet[0] = phonPAUSE;
ph_alphabet[1] = phonSWITCH;
strcpy(&ph_alphabet[3], ph_buf2);
len = strlen(ph_buf2) + 3;
ph_alphabet[len] = phonSWITCH;
ph_alphabet[len+1] = phontab_1;
ph_alphabet[len+2] = 0;

ph_alphabet_end = &ph_alphabet[len];
alphabet_name_switch = ph_alphabet[2];
}
} }
} }
} }




// caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number

if(ph_buf[0] == 0) if(ph_buf[0] == 0)
{ {
if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS))
ph_buf[len+2] = 0; ph_buf[len+2] = 0;
} }
} }

if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0))
{
ph_alphabet_end[0]= 0;
}
} }


if(ph_buf[0] == 0) if(ph_buf[0] == 0)

+ 1
- 1
src/phonemelist.cpp View File

{ {
// 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
src/setlengths.cpp View File

{ {
// 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
src/synthdata.cpp View File

#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
src/tr_languages.cpp View File

SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->letter_bits_offset = OFFSET_ETHIOPIC; tr->letter_bits_offset = OFFSET_ETHIOPIC;
tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_OMIT_1_HUNDRED;
// tr->langopts.intonation_group = 4; // tr->langopts.intonation_group = 4;


// 'diminished' is an unstressed final syllable // 'diminished' is an unstressed final syllable
tr->langopts.stress_flags = 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels


tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished
tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
// tr->langopts.word_gap = 1; // tr->langopts.word_gap = 1;
tr->langopts.vowel_pause = 2; tr->langopts.vowel_pause = 2;
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
// tr->langopts.unstressed_wd1 = 3; // tr->langopts.unstressed_wd1 = 3;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;




tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x10 | 0x20000;
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS;
tr->langopts.vowel_pause = 1; tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
case L('k','a'): // Georgian case L('k','a'): // Georgian
{ {
// character codes offset by 0x1080 // character codes offset by 0x1080
static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0};
static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0};
static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0};
static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,
0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBits(tr,LETTERGP_A,ka_vowels); SetLetterBits(tr,LETTERGP_A,ka_vowels);
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.max_initial_consonants = 7; tr->langopts.max_initial_consonants = 7;
tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN;

tr->langopts.alt_alphabet = OFFSET_CYRILLIC;
tr->langopts.alt_alphabet_lang = "ru";
} }
break; break;


{ {
tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x20;
tr->langopts.stress_flags = S_NO_AUTO_2;
tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_DIERESES] = 1;
{ {
tr->charset_a0 = charsets[4]; // ISO-8859-4 tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x20;
tr->langopts.stress_flags = S_NO_AUTO_2;
tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_DIERESES] = 1;


SetupTranslator(tr,stress_lengths_om,stress_amps_om); SetupTranslator(tr,stress_lengths_om,stress_amps_om);
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x16 + 0x80000;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000;
} }
break; break;




tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9;
tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :)
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN;
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS;
SetLetterVowel(tr,'y'); SetLetterVowel(tr,'y');
SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); SetupTranslator(tr,stress_lengths_ro,stress_amps_ro);


tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x100 + 0x6;
tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY;


tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN;
case L('r','w'): // Kiryarwanda case L('r','w'): // Kiryarwanda
{ {
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x16;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED;
tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x16;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
tr->langopts.max_initial_consonants = 5; tr->langopts.max_initial_consonants = 5;
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;


tr->letter_bits_offset = OFFSET_SINHALA; tr->letter_bits_offset = OFFSET_SINHALA;
case L('s','l'): // Slovenian case L('s','l'): // Slovenian
tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary
tr->langopts.stress_flags = 0x20;
tr->langopts.stress_flags = S_NO_AUTO_2;
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word
tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test
SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); SetupTranslator(tr,stress_lengths_sq,stress_amps_sq);


tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x16 + 0x100;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C;
SetLetterVowel(tr,'y'); SetLetterVowel(tr,'y');
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4;
tr->langopts.accents = 2; // "capital" after letter name tr->langopts.accents = 2; // "capital" after letter name


tr->langopts.vowel_pause = 1; tr->langopts.vowel_pause = 1;
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;


tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED;
tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000


SetupTranslator(tr,stress_lengths_th,stress_amps_th); SetupTranslator(tr,stress_lengths_th,stress_amps_th);


tr->langopts.stress_rule = 0; // stress on final syllable of a "word" tr->langopts.stress_rule = 0; // stress on final syllable of a "word"
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
// tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) // tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5


tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
tr->langopts.stress_flags = 0x20; //no automatic secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress
tr->langopts.param[LOPT_SUFFIX] = 1; tr->langopts.param[LOPT_SUFFIX] = 1;


if(name2 == L('a','z')) if(name2 == L('a','z'))
SetCyrillicLetters(tr); SetCyrillicLetters(tr);
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x20; //no automatic secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4;
} }
break; break;
SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); SetupTranslator(tr,stress_lengths_zh,stress_amps_zh);


tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word"
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.vowel_pause = 0; tr->langopts.vowel_pause = 0;
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1;
tr->langopts.param[LOPT_REDUCE] = 2; tr->langopts.param[LOPT_REDUCE] = 2;
tr->langopts.stress_rule = 5; tr->langopts.stress_rule = 5;
tr->langopts.stress_flags = 0x0020; // waas 0x1010
tr->langopts.stress_flags = S_NO_AUTO_2;


tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands

+ 61
- 12
src/translate.cpp View File



if(switch_phonemes >= 0) if(switch_phonemes >= 0)
{ {
// this word uses a different phoneme table
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
{
//previous phoneme is also a phonSWITCH, just change its phoneme table number
n_ph_list2--;
}
if((p[0] == phonPAUSE) && (p[1] == phonSWITCH))
{
// the new word starts with a phoneme table switch, so there's no need to switch before it.
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
{
//previous phoneme is also a phonSWITCH, delete it
n_ph_list2--;
}
}
else else
{ {
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
// this word uses a different phoneme table
if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
{
//previous phoneme is also a phonSWITCH, just change its phoneme table number
n_ph_list2--;
}
else
{
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
}
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number
} }
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number
} }


// remove initial pause from a word if it follows a hyphen // remove initial pause from a word if it follows a hyphen
} }




static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL};

int UpperCaseInWord(Translator *tr, char *word, int c)
{//=====================================================
int ix;
int len;
const char *p;

if(tr->translator_name == L('g','a'))
{
// Irish
for(ix=0; ; ix++)
{
if((p = UCase_ga[ix]) == NULL)
break;

len = strlen(p);
if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0))
{
if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c)))
return(1);
}
}
}
return(0);
}


void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change)
{//========================================================================================================== {//==========================================================================================================
int ix; int ix;
{ {
if(iswlower(prev_in)) if(iswlower(prev_in))
{ {
c = ' '; // lower case followed by upper case, treat as new word
space_inserted = 1;
prev_in_save = c;
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set
// lower case followed by upper case in a word
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
{
// convert to lower case and continue
c = towlower(c);
}
else
{
c = ' '; // lower case followed by upper case, treat as new word
space_inserted = 1;
prev_in_save = c;
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set
}
} }
else else
if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) if((c != ' ') && iswupper(prev_in) && iswlower(next_in))

+ 34
- 13
src/translate.h View File



#define S_NO_DIM 0x02 #define S_NO_DIM 0x02
#define S_FINAL_DIM 0x04 #define S_FINAL_DIM 0x04
#define S_FINAL_NO_2 0x10
#define S_NO_AUTO_2 0x20
#define S_2_TO_HEAVY 0x40
#define S_FIRST_PRIMARY 0x80
#define S_2_SYL_2 0x1000
#define S_INITIAL_2 0x2000
#define S_NO_AUTO_DIM 0x10000
#define S_HYPEN_UNSTRESS 0x100000
#define S_NO_EOC_LENGTHEN 0x200000
// bit0=don't stress monosyllables, except at end of clause
#define S_FINAL_DIM_ONLY 0x06
// bit1=don't set diminished stress, // bit1=don't set diminished stress,
// bit2=mark unstressed final syllables as diminished // bit2=mark unstressed final syllables as diminished

// bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words

#define S_FINAL_NO_2 0x10
// bit4=don't allow secondary stress on last syllable // bit4=don't allow secondary stress on last syllable

#define S_NO_AUTO_2 0x20
// bit5-don't use automatic secondary stress // bit5-don't use automatic secondary stress

#define S_2_TO_HEAVY 0x40
// bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish

#define S_FIRST_PRIMARY 0x80
// bit7=if more than one primary stress, make the subsequent primaries to secondary stress // bit7=if more than one primary stress, make the subsequent primaries to secondary stress

#define S_FINAL_STRESS_C 0x100
// bit8=stress last syllable if it doesn't end in a vowel // bit8=stress last syllable if it doesn't end in a vowel

#define S_FINAL_SPANISH 0x200
// bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish

#define S_2_SYL_2 0x1000
// bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress

#define S_INITIAL_2 0x2000
// bit13= If there is only one syllable before the primary stress, give it a secondary stress // bit13= If there is only one syllable before the primary stress, give it a secondary stress
// bit15= Give stress to the first unstressed syllable
// bit16= Don't diminish consecutive syllables within a word.
#define S_PRIORITY_STRESS 0x20000
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"

#define S_EO_CLAUSE1 0x40000
// bit18= don't lengthen short vowels more than long vowels at end-of-clause // bit18= don't lengthen short vowels more than long vowels at end-of-clause
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel


#define S_HYPEN_UNSTRESS 0x100000
// bit20= hyphenated words, 2nd part is unstressed // bit20= hyphenated words, 2nd part is unstressed

#define S_NO_EOC_LENGTHEN 0x200000
// bit21= don't lengthen vowels at end-of-clause // bit21= don't lengthen vowels at end-of-clause


// bit15= Give stress to the first unstressed syllable
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel


int stress_flags; int stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable int unstressed_wd1; // stress for $u word of 1 syllable
int unstressed_wd2; // stress for $u word of >1 syllable int unstressed_wd2; // stress for $u word of >1 syllable
int listx; // compile *_listx after *list int listx; // compile *_listx after *list
const unsigned int *replace_chars; // characters to be substitutes const unsigned int *replace_chars; // characters to be substitutes
const char *ascii_language; // switch to this language for Latin characters const char *ascii_language; // switch to this language for Latin characters
int alt_alphabet; // offset for another language to recognize
const char *alt_alphabet_lang; // language for the alt_alphabet
int max_lengthmod; int max_lengthmod;
int lengthen_tonic; // lengthen the tonic syllable int lengthen_tonic; // lengthen the tonic syllable
int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character
void InitText2(void); void InitText2(void);
int IsDigit(unsigned int c); int IsDigit(unsigned int c);
int IsAlpha(unsigned int c); int IsAlpha(unsigned int c);
int IsVowel(Translator *tr, int c);
int isspace2(unsigned int c); int isspace2(unsigned int c);
int towlower2(unsigned int c); int towlower2(unsigned int c);
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);

+ 45
- 28
src/voices.cpp View File





#define DEFAULT_LANGUAGE_PRIORITY 5 #define DEFAULT_LANGUAGE_PRIORITY 5
#define N_VOICES_LIST 200
#define N_VOICES_LIST 250
static int n_voices_list = 0; static int n_voices_list = 0;
static espeak_VOICE *voices_list[N_VOICES_LIST]; static espeak_VOICE *voices_list[N_VOICES_LIST];
static int len_path_voices; static int len_path_voices;
static const char *voices_europe = static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";


strcpy(voicename,vname);
if(voicename[0]==0)
strcpy(voicename,"default");


strncpy0(voicename, vname, sizeof(voicename));
if(control & 0x10) if(control & 0x10)
{ {
strcpy(buf,vname); strcpy(buf,vname);
} }
else else
{ {
if(voicename[0]==0)
strcpy(voicename,"default");

sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory


return; return;


do { do {
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);

ftype = GetFileLength(fname);
if(n_voices_list >= (N_VOICES_LIST-2))
break; // voices list is full


if((ftype == -2) && (FindFileData.cFileName[0] != '.'))
{
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
if(FindFileData.cFileName[0] != '.')
{ {
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
ftype = GetFileLength(fname);

if(ftype == -2)
{
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
} }
} while(FindNextFileA(hFind, &FindFileData) != 0); } while(FindNextFileA(hFind, &FindFileData) != 0);
FindClose(hFind); FindClose(hFind);
if(n_voices_list >= (N_VOICES_LIST-2)) if(n_voices_list >= (N_VOICES_LIST-2))
break; // voices list is full break; // voices list is full


if(ent->d_name[0] == '.')
continue;

sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name);


ftype = GetFileLength(fname); ftype = GetFileLength(fname);


if((ftype == -2) && (ent->d_name[0] != '.'))
if(ftype == -2)
{ {
// a sub-sirectory // a sub-sirectory
GetVoices(fname); GetVoices(fname);
espeak_ERROR SetVoiceByName(const char *name) espeak_ERROR SetVoiceByName(const char *name)
{//========================================= {//=========================================
espeak_VOICE *v; espeak_VOICE *v;
int ix;
espeak_VOICE voice_selector; espeak_VOICE voice_selector;
char *variant_name; char *variant_name;
static char buf[60]; static char buf[60];


strncpy0(buf,name,sizeof(buf)); strncpy0(buf,name,sizeof(buf));

variant_name = ExtractVoiceVariantName(buf, 0, 1); variant_name = ExtractVoiceVariantName(buf, 0, 1);


for(ix=0; ;ix++)
{
// convert voice name to lower case (ascii)
if((buf[ix] = tolower(buf[ix])) == 0)
break;
}

memset(&voice_selector,0,sizeof(voice_selector)); memset(&voice_selector,0,sizeof(voice_selector));
// voice_selector.name = buf;
voice_selector.name = (char *)name; // include variant name in voice stack ?? voice_selector.name = (char *)name; // include variant name in voice stack ??


// first check for a voice with this filename // first check for a voice with this filename

Loading…
Cancel
Save