Browse Source

[1.47.03e]

lang=zh: Fix: was speaking Chinese character names as character codes.
lang=hr, sr: Fix: speak Cyrillic character names in the local langauge.
Phoneme definitions: add new statement type  "LengthAdd <signed number>".


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@335 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
665afbf8d2

+ 4
- 0
dictsource/an_list View File

@@ -118,6 +118,9 @@ _x#º %o // for 1º 2º 3º
_x#ª %a
º orDin'al||maskul'in
ª orDin'al||femen'in
ºc gr'aUs||T'e
ºf gr'aUs||'Efe
ºk gr'aUs||k'a

_1ox prim'Er
_2ox seQ'und
@@ -483,6 +486,7 @@ espeak isp'ik
facebook f'eIsbuk
firefox f'aIrfoks
google g'ugEl
hotmail xotm'eIl
(i phone) 'aIfon
iphone 'aIfon
(i pod) 'aIpod

+ 3
- 1
dictsource/bn_list View File

@@ -1,4 +1,4 @@
// Translation rules for Bengali
// Translation rules for Bengali
// This file is UTF8 encoded

// Numbers
@@ -200,6 +200,8 @@ _dpt dOsomik
ঁ tS'Ondrobindu
় b'indu

_, koma


// Punctuation
। dVn.d.V

+ 87
- 80
dictsource/da_list View File

@@ -102,19 +102,19 @@ _9 n'i
_10 t'i
_11 'Elv@
_12 t'Vl
_13 tR'?&#d@-n
_13 t*'?&#d@-n
_14 fj'ord@-n
_15 f'Emd@-n
_16 s'ajsd@-n
_17 s'Wd@-n
_16 s'Ajsd@-n
_17 s'?Wd@-n
_18 '?&d@-n
_19 n'ed@-n
_19 n'?ed@-n
_2X t'y:?u
_3X tR'&#Dv@
_3X t*'&#Dv@
_4X f'?W:_|V
_5X h&l't*Es
_6X t*'Es
_7X h&lfj'&rs
_7X h&lfj'Ers
_8X f'irs
_9X h&lf'Ems // PB a changed to &
_0C h'unRVD
@@ -131,32 +131,32 @@ _0M4 bilij'o:n3
_0and V
_dpt _k,Vm&:

// PB a number followed by dot
// A number followed by dot
// ordinals are followed by a dot in Danish
_ord 3 // 13. (trettende)
_ord @- // 13. (trettende)

// exceptions for ordinals
_1o fWrsd3 // 1. første
_1o fWrsd@- // 1. første
_2o &n@n // 2. anden
_3o trEdj3 // 3. tredje
_3o trEdj@- // 3. tredje
_4o fjeV // 4. fjerde
_5o fEmt3 // 5. femte
_6o sjEd3 // 6. sjette
_7o syvn3 // 7. syvende
_8o Vtn3 // 8. ottende
_9o ni@n3 // 9. niende
_10o ti@n3 // 10. tiende
_11o Elfd3 // 11. elvte/ellevete
_12o tVlfd3 // 12. tolvte
_5o fEmt@- // 5. femte
_6o sjEd@- // 6. sjette
_7o syvn@- // 7. syvende
_8o Vtn@- // 8. ottende
_9o ni@-n@- // 9. niende
_10o ti@-n@- // 10. tiende
_11o Elfd@- // 11. elvte/ellevete
_12o tVlfd@- // 12. tolvte

_2Xo t'yv@n@ // 25.
_3Xo tr'&#ft@ //36.
_4Xo fWV'tyv@n@ // 42.
_5Xo h&lt*'Esenstyv@n@ // 52.
_6Xo tr'Esenstyv@n@ // 62.
_7Xo h&lfj'&rsenstyv@n@ // 72.
_8Xo firsenstyv@n@ // 82.
_9Xo h&lf'Emsenstyv@n@ // 95.
_2Xo t'yv@n@- // 25.
_3Xo tr'&#ft@- //36.
_4Xo fWV'tyv@-n@- // 42.
_5Xo h&lt*'Esenstyv@-n@- // 52.
_6Xo tr'Esenstyv@-n@- // 62.
_7Xo h&lfj'&rsenstyv@-n@- // 72.
_8Xo firsenstyv@-n@- // 82.
_9Xo h&lf'Emsenstyv@-n@- // 95.

// function words

@@ -187,10 +187,10 @@ fra $u+ // from
ved $u+ // at
om $u+ $brk // about, within
med $u+ // with
af &
ad &
af &_!
ad &_!
ad &D $atend $sentence // "Det må ikke skille os ad."
at & $u
at &_! $u
hos
som sVm $u // which / that

@@ -203,7 +203,7 @@ hun $u
det de $u
dét de
vi vi $u
i _i $u+
i _i_! $u+
mig mAj $u // me
dig dAj $u+
dem $u
@@ -220,10 +220,10 @@ hvis ves $u+ // PB - whose
// possessive pronouns
min min $u
mit mit $u
mine m'in3
mine m'in@-
din d'in $u+
dit d'it $u
dine d'in3
dine d'in@-
deres dE:Vs $u
hans $u+
hendes $u+
@@ -1448,7 +1448,6 @@ elegance $alt
eminence $alt
excellence $alt
fajance $alt
hospice $alt
ignorance $alt
inspektrice $alt
intolerance $alt
@@ -1846,6 +1845,7 @@ afrikan $alt
afrikaan $alt
aleksandrin $alt
amerikan $alt
austral $alt
andorran $alt
anglikan $alt
angolan $alt
@@ -5968,6 +5968,7 @@ dediker $alt
deducer $alt
defiler $alt
definer $alt
omdefiner $alt
deflorer $alt
deformer $alt
degrader $alt
@@ -6547,6 +6548,7 @@ konstater $alt
konstituer $alt
konstringer $alt
konstruer $alt
rekonstruer $alt
konsulere $alt
konsulter $alt
konsumer $alt
@@ -11121,7 +11123,7 @@ sinecure $alt
tournure $alt

// exceptions
alene &l'en@ // alone
alene &l'en@- // alone
egen _|aj@-n
mc mak' $capital // PB McDonald
egne ajn@-
@@ -11150,48 +11152,48 @@ giv g'i // PB the v shouldn't be pronounced
giver gir // PB the v shouldn't be pronounced
opgiver Vpgir // PB
jaloux sj&'lu // PB jaloux
aficionado afisjo'na:do // PB
breakdance brEig'da:ns // PB breakdance
breakdancen brEig'da:ns@-n // PB breakdancen
breakdancer brEig'da:nsV // PB breakdancer
breakdancere brEig'da:nsV3 // PB breakdancere
breakdancerne brEig'da:nsV-n@ // PB breakdancerne
breakdancernes brEig'da:nsV-n@s // PB breakdancernes
squaredance skw'e@da:ns // PB squaredance
squaredancer skw'e@da:nsV // PB squaredancer
squaredancere skw'e@da:nsV3 // PB squaredancere
squaredancen skw'e@da:ns@-n // PB squaredancen
squaredancerne skw'e@da:nsV-n@ // PB squaredancerne
squaredancernes skw'e@da:nsV-n@s // PB squaredancernes
baguette b%a'get // French word used in Danish
jambore djamboR'E // PB English? word used in Danish - stressed e
shampu Sjambo // PB Danish pronunciation - oo has been replaced by u
(en face) aN||f'as // PB 'en face' - French used in Danish
(en bloc) aN||'blVk // PB 'en bloc' - French used in Danish
aficionado afisjo'nA:do // PB
breakdance brEig'd&:ns // PB breakdance
breakdancen brEig'd&:ns@-n // PB breakdancen
breakdancer brEig'd&:nsV // PB breakdancer
breakdancere brEig'd&:nsV3 // PB breakdancere
breakdancerne brEig'd&:nsV-n@ // PB breakdancerne
breakdancernes brEig'd&:nsV-n@s // PB breakdancernes
squaredance skw'EVd&:ns // PB squaredance
squaredancer skw'EVd&:nsV // PB squaredancer
squaredancere skw'EVd&:nsV3 // PB squaredancere
squaredancen skw'EVd&:ns@-n // PB squaredancen
squaredancerne skw'EVd&:nsV-n@ // PB squaredancerne
squaredancernes skw'EVd&:nsV-n@s // PB squaredancernes
baguette b?&'gEt // French word used in Danish
jambore djAmboR'E // PB English? word used in Danish - stressed e
shampu SjAmbo // PB Danish pronunciation - oo has been replaced by u
(en face) AN||f'as // PB 'en face' - French used in Danish
(en bloc) AN||'blVk // PB 'en bloc' - French used in Danish
(haute couture) %o:tku'ty:r // PB - french word
(par excellence) pa:egs@'la:Ns // PB - french word
(public service) pVblek||s@:vis // PB
(public servicen) pVblek||s@:vis@-n // PB
(par excellence) pA:Egs@'la:Ns // PB - french word
(public service) pVblek||sW:vis // PB
(public servicen) pVblek||sW:vis@-n // PB
(tour de force) tu:@d@||'fV:s // PB
(al qaeda) al||k'ajda // PB
(force majeure) fVrs||,ma'sjW:r // PB
(diner transportable) din'e|trANspVt'abl@ // PB
(diner transportable) din'e|trANspVt'abl@- // PB
(quiche lorraine) kiS||lor'E:n:
(fait accompli) fEtakVmpl'i // PB
(fait accompli) fEt&kVmpl'i // PB
(salt lake city) s'Vlt||lEjk||s'iti
wien v'i:n // PB Wien - the town of Vienna
calais kal'E // PB Calais - town in France
date dejt // PB date - stævnemøde
calais k&l'E // PB Calais - town in France
date dEjt // PB date - stævnemøde
//siger sir // PB silent d
(tids nok) tis||n'Vk // PB silent d
skateboardet sk'eitbo@d3D // PB
skateboardet sk'EitbO:d@-D // PB
(hole in one) h'oulinw,0n // PB English golf expression used in Danish
(en passant) AN||p&s'AN
(coney island) 'kouni||'ajl3nd // PB
(union station) junj3n||steisj@n // PB
(secret service) sigred||s'Wvis
(happy hour) h&pi||'AuV
chevrolet sjEvrol'e
chevrolet sjEvrol'E
saigon sAjgVn // PB Saigon
managua m&n'&:gw&
(deja-vu) deSja||'vy
@@ -11246,32 +11248,37 @@ ikes ajks // PB
// Try to catch errors

(et kvarter) et||kvA'ter // PB
(mit kvarter) mit||kvA'ter // PB
(vores kvarter) vV:s||kvA'ter // PB
(deres kvarter) dE:Vs||kvA'ter // PB
(det kvarter) de||kvA'ter // PB
(mit kvarter) mit||kvA'ter
(vores kvarter) vV:s||kvA'ter
(deres kvarter) dE:Vs||kvA'ter
(det kvarter) de||kvA'ter
(i kvarter) i||kv'A:dV
(at have) &||h& // PB the verb 'have', not the noun 'have' = garden
(vil have) vel||h'& // PB
(ville have) v?il3||h'& // PB
(du have) du||h& // PB
(må have) mO:||h& // PB
(skal have) sk?&||h& // PB
// the verb 'have', not the noun 'have' = garden/oceans
(at have) &||h&
(vil have) vel||h'&
(ville have) v?il3||h'&
(du have) du||h&_!
(må have) mO:||h&
(skal have) sk?&||h&
(helst have) h'Elst||h&
(gerne have) g'Ern3||h&
(kan have) k?&n||h& // PB
(ikke have) ege||h& // PB
(kan have) k?&n||h&
(ikke have) eg@-||h&
(have ret) h&||R'&#d
(måtte have) m'?Vt@-||h&
(have været) h&||v'?E3-VD
(have gjort) h&||gj'Ort
// PB 'hav' = ocean - 'hav' = have (a nice day)
(et hav) ed||hAu
(stort hav) stord||hAu
hav hAu $atend
(et for) ed||'for // PB for i jakke - lining
(et for) ed||'for // for i jakke - lining
(et for dig) ed||fV||dAj // vælge et for dig
// PB problem with 'sig' [si] = "say" and 'sig' = "himself/herself" [saj]
//(sig mig) si||maj // PB sig mig engang
(sig hvad) si||v& // PB sig hvad du mener
sig $atend $sentence saj // end of a sentence - han vaskede sig.
(gør sig til) g,Wr||saj||t'el // PB
(gav sig til) g&||saj||tel // PB han gav sig til at ...
(sig hvad) si||v& // sig hvad du mener
sig $atend $sentence sAj // end of a sentence - han vaskede sig.
(gør sig til) g,Wr||sAj||t'el
(gav sig til) g&||sAj||tel // han gav sig til at ...
// PB avoid [staj] as in "flæskesteg"
(han steg) h&n||st'e
(hun steg) hOn||st'e
@@ -11280,7 +11287,7 @@ sig $atend $sentence saj // end of a sentence - han vaskede sig.
(alle steg) &l3||st'e
(vandet steg) v&n@D||st'e
steg sdaj $atend $sentence
steget ste@d
//steget ste@d
// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v]
(et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day
// PB legende = legend/myth and = playing

+ 31
- 22
dictsource/da_rules View File

@@ -51,7 +51,7 @@
// Short vowel before double consonant
r) a (C%++ ?A // trappe
a (C%+ ?& // pladder, basser, masser
a (ld+ ?& // kalde, falde - TEST ld = double consonant?
a (ld+ &# // kalde, falde - ld => l double consonant
C) a (L06% ?A // tapper, tappen, lapper, lappen
v) a (cc ?A // vaccinere
a (ffald+ A
@@ -75,8 +75,8 @@
pl) a (ner ?& // planer
pl) a (nen ?& // planen

// long & before de
a (de &: // gade
// long & before de(n) - made long in ph_danish
a (de & // gade
a (den & //gaden

// Have = "oceans" vs. the verb have
@@ -96,7 +96,7 @@ burde_h) ave & // burde have sagt
past) a & // tandpastareklame

r) a (CK+ A // drab, Rasmus, rask
r) a (CA+ A: // drabelig, brase, gratis
r) a (CA+ A // drabelig, brase, gratis
r) a (len+ ?A // gralen TEST
r) a (le+ A // morale, prale
r) a (dio++ A: // shortend too much by ph_danish
@@ -1154,6 +1154,8 @@ hospitalsv) ag (t Ag //
_t) age (_+ &j@- // tage
_t) age (_sig &
du_t) age (_ &
voldt) age (_ &
voldt) ager (_ Ar
cart) age (na &g'e: // name
b) ag (efter++ &j //
age (lig '&j@- // uindtagelig, behagelig - stressed
@@ -1441,6 +1443,7 @@ frederi) c (ia =ks //
cigaret sig3r'&#t
cigarett sig3r'&#t
cc ks // accent
yu) cc (a k
ro) cc (o k // name
pu) ccini S'ini // name
rebe) cc (a =k // name
@@ -1758,6 +1761,7 @@ stikor) d // exception - silent d in 'stikord'
kandi) d (at 'd
mi) dd (a d
nø) dde (+ D@- // jordnøddesmør
nø) dder (+ DV // nødderne
an) d (e // manden, anden - silent d
_fan) de (me // fandeme - skip de, only this word
gær) de V // silent d
@@ -1863,6 +1867,7 @@ stikor) d // exception - silent d in 'stikord'
arv) e (@ @- // farvestof
ugl) e (@ @- // fugleskræmsel
ønn) e (st @- // kønneste
av) e (@ @- // pavestolt

// exceptions
cyk) e (lløb @-
@@ -1973,7 +1978,7 @@ _still) e (ben ='e
st) ed (mo e // stedmor
st) ed (sø e // stedsøm
st) ed (da e // steddatter
e (dt e // fedtet
e (dt ?e // fedtet dt => t 2 consonants: short e
gaz) e (lle '?E // stressed
van) e (ssa '?E // stressed
ard) e (nner '?E // Ardennerne - stressed
@@ -1982,6 +1987,7 @@ _still) e (ben ='e
h) e (dd ?e // hedde
m) e (dalje e // medalje
v) e (de @- // helvedes
hv) ede eD@- // hvedebrød
tol) ed (o 'ed // toledostål
val) e (ncia 'E // name
mal) er V // maler
@@ -2160,7 +2166,7 @@ stikir) e (nddreng '&# //
m) e (di+ e // medicin
rn) e (d+ ,e // derned
forn) eden 'eD@-n //
an) e (r @- // anerkende
an) er (@ V // anerkende
L09) e (de e // nede, nederlag
mån) e (d @- // måneder
arkim) e (des 'e // name
@@ -2392,6 +2398,8 @@ stoneh) enge EndZ //
ørn) e (@ @- // børnebog
mm) e (@ @- // dømmekraft
ab) e (@ @- // abekat
e (dere @- // torpedere
øl) e (@+ @- // køleskab
aff) e (@ @- // straffeattest
Alj) e (@ @- // patruljevogn
@@ -6035,6 +6043,7 @@ _noget_r) o (s_ ?V //
w) oogie ugi //
w) oo u // Hollywood
oonagh un& // name
c) ochise OwS'i:s // name
kl) oro (form oo
shamp) oo ?o //
nark) o o // narkoopgør
@@ -6645,6 +6654,7 @@ torped) o o // torpedoflyene
artisk) o (k 'V // stressed
aut) o (+ o // autoklub
t) or (t O: // tortur
C) or (L07L05 O: // portal TEST
t) o (t V // hårtot, tot, hottentot
t) o (tA o // total
em) o (+ o // demokrati
@@ -6733,7 +6743,7 @@ perestr) o (jka 'V // stressed
m) o (nitor V //
_C) o (_ o // jo, ko, lo, so
f) o (d+ ?o // fodre
C) oe (de o: // boede, troede
C) oe (de o // boede, troede
betr) oe (de o@- // betroede midler
sk) oe (de o@- //
spr) og ow // sprog
@@ -6954,11 +6964,9 @@ robins) on Vn // name
.group or

alv) or O // alvor
// or (L04+ or // favorit
v) or (L11+ or // favorabel
v) or (_ O //
f) or (_ V // for
// _f) or (_at_ O:_!
derf) or V // derfor
tayl) or V // name
helsingf) or (s 'V // stressed
@@ -6967,7 +6975,7 @@ helsingf) or (s 'V // stressed
sekt) or V // sektoren
k) or (t ?O: // kort
k) or (tA ?O: // korte
t) or (L06 O // torpedere
t) or (L06 O: // torpedere
or (to O: // ortodoks, ortopæd
m) orge OO@- // morgen
dek) or (_ 'V:r // dekor
@@ -7036,6 +7044,7 @@ _transp) or (t_ 'O: // stressed - transport
f) ord (ø Vd' // fordømme
v) ord (i 'Vrd // gernvordighed
ord (en+ Od // orden, ordensmagt
n) orden OVn // Norden - silent d
b) orde (nde orE //
ord (ene+ oR // ordene
ord (enen+ O:d // ordenen
@@ -7718,9 +7727,9 @@ franci) sc (o sk // Francisco
_) stone sdoun // namde - Stone
empire_) state (_ stEjt //
_) sir (_ sW: // Sir Arthur
sher (wood SW // Sherwood Forrest
sher (wood SW: // Sherwood Forrest
surf sW:f // windsurfing
surf (e sWf
surf (e sW:f
la) sur sur // lasurfarve
_) sugar (_ SugV // Sugar Ray
savoir s&voa: // savoir-faire
@@ -8267,17 +8276,17 @@ meningi) ti (s =ti
_) ud (@@+P2 ''?uD
_) ude (@@+P3 ''uD@-
// exceptions for ud-: [ud]
_) ud (elt+P2 'ud // udelt
_) ud (at+P2 'ud // udateret
_) ud (elt+P2 '?ud // udelt
_) ud (at+P2 '?ud // udateret
_) ud (rikkelig+P2 ud
_) ud (røj+P2 'ud
_) ud (uelig+ ud
_) ud (uelig+ ?ud
_) ud (y+P2 '?ud // udyd, udygtig, udyr
_) ud (øbt+P2 'ud
_) ud (ød+P2 ud // udødelig
_) ud (åd+P2 'ud
_) ud (en+ uD
_) ud (kig uD // udkigspost (another rule overrides a silent g rule)
_) ud (ød+P2 ?ud // udødelig
_) ud (åd+P2 '?ud
_) ud (en+ ?uD
_) ud (kig ?uD // udkigspost (another rule overrides a silent g rule)

u (nL08+ O // kunst
br) unch VnS //
@@ -8964,7 +8973,7 @@ _hun_l) æ (ste E:
kr) æ (_ E? //
r) æ (t+ &# // åndedræt
spr) æ (C+ &# // sprængt
pr) æ (C+ E // prætendere, præsentere, prækvalificere
pr) æ (C+ ?E // prætendere, præsentere, prækvalificere
rør) æg Eg //
pr) æ (gn E // prægnans, prægnant
for) æ (dle ?E //
@@ -9079,7 +9088,7 @@ majest) æ (t 'E // stressed æ

// words with short ø
bel) ø (b ?W
ø (rn ?W // ørne, børn
// ø (rn ?W // ørne, børn

_chauff) ø (r 'W // stressed in 'chauffør'
_milj) ø 'W // stressed - miljø
@@ -9285,7 +9294,7 @@ slagsm) å (l ?O //
str) å (forkort ?V // stråforkorter
str) å (hat ?V //
str) å (død ?V //
årer V:V- // sårer
årer OO- // sårer, årer
å (lti ?V // måltid

.group '

+ 11
- 10
dictsource/dict_phonemes View File

@@ -25,7 +25,7 @@ n^ p p` r s S t t`
tS tS` v w x z Z


Dictionary an_dict 2013-03-21
Dictionary an_dict 2013-03-28

a aI aU e E eI eU i
o O oI u U
@@ -60,7 +60,7 @@ s; t t; tS ts v x z
Z z;


Dictionary bn_dict 2013-03-26
Dictionary bn_dict 2013-03-29

& a a~ e e~ i i~ l-
o O o: O~ o~ r- u u~
@@ -111,7 +111,7 @@ p r s S t T v w
x z


Dictionary da_dict 2013-03-26
Dictionary da_dict 2013-03-29

& &# 0 3 ?& ?&# ?0 ?A
?e ?E ?i ?o ?O ?u ?V ?W
@@ -150,7 +150,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-03-26
Dictionary en_dict 2013-03-28

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
@@ -178,7 +178,7 @@ s S t T tS ts v w
x z Z


Dictionary es_dict 2013-03-19
Dictionary es_dict 2013-03-28

@ a aI aU e E eI eU
i o O oI u
@@ -261,7 +261,7 @@ l m n N p R s t
T v x z


Dictionary hbs_dict 2012-08-08
Dictionary hbs_dict 2013-03-29

& @ @2 a A a: aI aU
e E e: i I i: l- o
@@ -501,7 +501,7 @@ r r. s S s. t t# t.
t.# v w x z


Dictionary nl_dict 2013-03-21
Dictionary nl_dict 2013-03-27

8 @ @- a A a: A~ e
E e# E2 e: EI eU i I
@@ -563,7 +563,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2013-03-26
Dictionary pt_dict 2013-03-29

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -700,10 +700,11 @@ p Q r R s S t tS
v w z Z


Dictionary ur_dict 2013-03-13
Dictionary ur_dict 2013-03-28

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

: ; b b# c c# d D
d# d. d.# f g g# h H

+ 18
- 3
dictsource/en_list View File

@@ -70,6 +70,7 @@ a eI $atend
ï $accent
ö $accent
ü $accent
û $accent
č $accent
š $accent
ş $accent
@@ -754,6 +755,7 @@ ambassador a#mbas@d3
ambidextrous $3
amen ,A:m'En $onlys
?3 amen ,eIm'En
?3 amo amoU
amok a#m0k
amoral eIm'0r@L
amount a#maUnt
@@ -767,8 +769,6 @@ analyses an@laIzI#z $verb
analysis a#nal@sIs
anemone a#nEm@ni
angel eIndZ@L
anecdote anIkdoUt
anecdotal anIkd'oUt@L
anemometer anIm'0mI2t3
anew a#nju:
?3 anew a#nu:
@@ -829,7 +829,7 @@ arena a#ri:n@
argon A@g0n
argue A@gju:
aries e@ri:z
arithmetic a#rITm@tIk
arithmetic a#rITm@tIk $onlys
arise a#raIz
arisen @rIz@n
armslength ,A@mzl'ENT
@@ -877,6 +877,7 @@ average av@-rI2dZ
aviary eIvi@ri
awry a#raI
axes aksI#z
axon aks0n

backend bak'End
backstory baksto@ri
@@ -1115,6 +1116,7 @@ circumference $2
circumvent s3:k@mvEnt
?5 circumvent sIRk@mvEnt
citadel sIt@dEl
clandestine $2
clarinet klar@n'Et
cleanliness klEnlIn@s
cleanse klEnz
@@ -1236,6 +1238,7 @@ coordinate koU'O:dI2neIt $verb
copier k0pi@3
copilot koUpaIl@t
coral k0r@L
?3 cordial kO@dZ@L
coronet k0r@nEt
corollary $2
corporal kO@pr@L
@@ -1291,6 +1294,7 @@ debut deIbju:
?3 debut deIb'ju:
decade dEkeId
decent di:s@nt
decibel dEsI#b@L
declaration dEkl@'reIS@n
decolletage deIk0lt'A:Z
decor deIkO@
@@ -1380,6 +1384,7 @@ doctrine d0ktrI2n
doctrinal $alt1
doer du:3
dogged d0gI#d
dogmatic d0gm'atIk
doin du:In
domino $1
donor doUn3
@@ -1796,6 +1801,7 @@ intestine I2ntEstI#n
inventory Inv@ntri
?3 inventory Inv@nto:ri
interface $1
interlude $1
intermin Int'3:mIn // interminable
intern $1 $onlys
internee Int'3:ni:
@@ -2056,6 +2062,7 @@ molybdenum $2
momentary moUm@nt@ri
?3 momentary moUm@nt2e@ri
momentum $2
monarchic m@nA@kIk
monday mVndeI
monotone m0n@toUn
monsieur m@sj3:
@@ -2251,6 +2258,7 @@ pear pe@
pecan pi:k@n
peculiar pI2kju:lI3
pedalo pEd@loU
pedestal pEdI2st@L
pedestrian $alt3
pegasus pEg@s@s
pejorative p@dZ0r@tIv
@@ -2545,6 +2553,7 @@ ruby ru:bi
rugged rVgI#d
ruin ru:I2n // for ruining

sabbatic $alt3
sabotage sab@tA:Z
saboteur sab@t'3:
?5 saboteur sab@t'VR
@@ -2552,6 +2561,7 @@ sabre seIb3
sachet saSeI
sacred seIkr@d
sacrifice sakrI2faIs
sadistic $alt3
safety seIfti
saga sA:g@
sahara $alt3
@@ -2566,6 +2576,7 @@ saloon $alt3
san ,san $only
sardine $2
satanic $alt3
satiric $alt3
saucepan sO:sp@n
saudi saUdi
saute sO:teI
@@ -2706,6 +2717,7 @@ stagnate $2
stampede $2
starboard stA@b3d
starry stA:rI
statistic $alt3
stiletto stI2lEtoU
strychnine str'Ikni:n
sterile stEraIl
@@ -2882,6 +2894,7 @@ unaware Vn@w'e@
uncle VNk@L
undeny VndIn'aI
underling $1
underlings Vnd3lINz
underworld $1
undies Vndiz
undo Vnd'u:
@@ -3649,6 +3662,7 @@ Phoebe fi:bi:
Rachael reItS@L
Rachel reItS@L
Rafael rA:faI'El
Rashid rA:S'i:d
Raul raU'u:l
Rees ri:s
Reese ri:s
@@ -3673,6 +3687,7 @@ Sebastian $alt3
Sheila Si:l@
Simon saIm@n
Sinead SI2neId
Sinéad SI2neId
Siobhan S@vO:n
Siobhán S@vO:n
Sonia s0nj@

+ 21
- 9
dictsource/en_rules View File

@@ -504,6 +504,7 @@
portr) ai (t I#

.group al
@ic) al (_S2 @L
_) al (@ a#l
gonz) al 'A:l
_) alaba al@b'a
@@ -720,6 +721,7 @@
p) an (c an
@m) an (d aan
sl) an (d aan
_) anecdo anIkdoU
C) an (t aan
an (ath a#n
ann (eal a#n
@@ -1066,8 +1068,8 @@
as (thm as
as (tral as
as (tro as
as (trolog a#s
as (trono a#s
_) as (trolog a#s
_) as (trono a#s
&) as (ty_ a#s
ass (ym as
purch) as (e Is
@@ -1093,11 +1095,12 @@
_s) ata (n eIt@
_g) ator eIt3
&) ate (_$w_alt2 @t
der) ated (_ eItI#d
pal) ate (_ @t
consul) ate (_ @t
macul) ate (_ @t
tim) ate (_ @t
tim) ated (_ eItI2d
tim) ated (_ eItI#d
tim) ating (_ eItIN
din) ate (_ @t
ion) ate (_ @t
@@ -1128,7 +1131,6 @@
at (io_ eIS
ati (aX 'eIS
&) atism @tIz@m
st) at (ist @t
w) at (t 0t
@) ath (An_ @T
athed (_ eIDd
@@ -1334,6 +1336,7 @@
bi (nm bI
bi (noc bI2
_) bio (@P3 b,aIoU
bi (ol baI
bi (otic baI
@) bi (osA baI
bi (oC_ bI
@@ -1685,6 +1688,7 @@
de (ft dE
_) de (g@ dI2
_) de (hyd ,di:
_) de (ist deI
_) de (j dI2
_) de (l@ dI2
de (law dE
@@ -1865,6 +1869,7 @@
sp) e (cies i:
depr) ec (L02 i:S
_) e (cl %I
_) eccles (i I2kli:z
econo (m Ik'0n@
econo (mic i:k@n'0
_) eco (s i:koU
@@ -2441,6 +2446,7 @@
er (nal_ '3:
&) er (n_ 3
c) er (n_ 3:
_g) er (on Er
&) er (oCe_ =@r
er (se 3:
v) er (sal '3:
@@ -2514,7 +2520,7 @@
pr) es (ent Ez
es (iA i:z
es (ian_ 'i:z
es (ic 'i:z
@) es (ic 'i:z
esis (_ 'i:sIs
th) eses (_ @si:z
th) esis (_ @sIs
@@ -2945,7 +2951,7 @@
ize (_ aIz
ial) ize (_S3 aIz
ize (d_ aIz
i (zen I2
i (zen I
iz (er_ aIz
i (zon_ 'aI
_p) izz i:t|s
@@ -3169,6 +3175,7 @@
imm (in Im
immo (bi Im'oU
imm (unis Im
_) immu (no I2mju:
@) imous (_ =Im@s
im (pac Im
im (pecu ,Im
@@ -3249,6 +3256,7 @@
in (ga_ 'IN
in (got IN
_) in (gro IN
_) in (im I2n
_) in (jur In
_) in (k IN
_) in (l In
@@ -3501,7 +3509,7 @@
@) istan (_ =Istan
@) istani (_ Ist'A:nI
@) iste (_ 'i:st
@) is (tic 'Is
@) is (tic_ 'Is
r) is (y_ =@s


@@ -4082,7 +4090,6 @@
betr) oth oUD
?3 cl) o (th O
cl) othe oUD
tr) othe oUD
b) o (ther 0
_r) o (ther 0
o (ther+ V
@@ -4220,7 +4227,7 @@
dr) on (_ @n
or) on (_ 0n
cr) on (_ 0n
x) on (_+ 0n
@x) on (_ @n
phot) on @n
pers) on @n
pers) on (i '0n
@@ -4303,6 +4310,7 @@
.group or
or o@
_) or O@
_) organo (@P6 O@g,anoU
or (ch_ O@
or (m_ O@
st) or (m o@
@@ -5229,6 +5237,7 @@
?5 _) sur sVR
_) sure SU@
sur (anc SU@
sur (g+ s3:
sur (m s3
sur (pa s3
sur (pr s3
@@ -5261,6 +5270,7 @@
te (rrest t2@
r) tga (g gI
@) t (ia S
_pi) t (ia t
s) t (l
to (morr t@
_) to (nn tV
@@ -5273,6 +5283,7 @@
tribe traIb
_) tri (bu trI
_) tri (g trI
_) tri (gonA trI
_) tri (ni trI
_) tri (vi trI
_) tri (xA trI
@@ -6079,6 +6090,7 @@
ö 3:
ör 3:
ü u:
û u:
ç s
ß s
č tS

+ 3
- 0
dictsource/es_list View File

@@ -123,6 +123,9 @@ _dpt koma
_#º o
_#ª a
_ord o
ºc gr'ados||T'e
ºf gr'ados||'Efe
ºk gr'ados||k'a

_1o prim'Er
_2o seQ'und

+ 49
- 1
dictsource/hbs_list View File

@@ -1,4 +1,4 @@

// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage
// This file is UTF-8 encoded

@@ -40,6 +40,50 @@
y ipsilon
z z@
ž Z@
а a
б b@
ц ts@
ћ tS;@2
ч tS@
џ dZ@
ѕ dz@
д d@
ђ dZ;@2
е E
ф f@
г g@
х x@
и i
ј j@2
к k@
љ l^@
л l@
м m@
њ n^@
н n@
о o
п p@
р R@
_с s@
ш S@
т t@
у u
в v@
з z@
ж Z@
ѓ dZ;@2
ќ tS;@2

ё jo
й kr,atko||'i
щ StS;@2
ъ tvR2d'i||zn,ak
ы jeri
ь m'eki||z,nak
э e
ю ju
я ja

_á $accent
_é $accent
@@ -47,6 +91,10 @@ _í $accent
_ó $accent
_ú $accent

_ar 'Arapsko
_cyr tS;'iRilitsa


// accent names
_lig l'ig&t,UR&
_acu 'akUt

+ 6
- 1
dictsource/hbs_rules View File

@@ -1,4 +1,4 @@

// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage
// This file is UTF-8 encoded

@@ -31,7 +31,9 @@
.group d
d d
dz dz
_) dz (_ dz@
dž dZ
_) dž (_ dZ@

.group đ
đ dZ;
@@ -67,6 +69,8 @@
.group l
l l
K) l (K l-
_) lj (_ l^@
lj (+ l^
v) lj lj

@@ -79,6 +83,7 @@
n (k N

nj n^
_) nj (_ n^@

.group o
o o

+ 6
- 3
dictsource/nl_list View File

@@ -58,7 +58,7 @@ _tld t'Ild@


// punctuation
. p8nt $max3
. p8nt
_, k'Oma:
_: d'8b@l@p,8nt
_; p'8ntkOm,a:
@@ -75,8 +75,9 @@ _) h'a:kj@sl'Wyt@n
_{ v'irkAnt@h,a:k
_} v'irkAnt@h,a:ksl'Wyt@n
_- k'OpElt,e:k@n
+ pl'8s $max3
* st'E*rEt;@ $max3
+ pl'8s
* st'E*rEt;@
= Q@l'EIkte:k@n
__ l'IgEntst@-*'e:pj@
€ 'Y:*o:t,e:k@n

@@ -133,6 +134,7 @@ _0Co h'OndErtst@

// abbreviations
be $abbrev // used as domain abbrev for Belgium and in a lot of other names
ca ka: $hasdot
enz Enzo:vo:rt
bvb bEIv'o:rbe:lt
eu e:_y: $abbrev
@@ -379,6 +381,7 @@ reken $alt
schepen $alt
steven $alt
teken $alt
volwassen $alt
wapen $alt
zegen $alt
trokken $alt

+ 12
- 5
dictsource/nl_rules View File

@@ -4,7 +4,7 @@
// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant

.L01 g k
.L02 _ t_ d_ de_ den_ // verb endings
.L02 _ t_ d_ de_ den_ nen_ // verb endings ('nen' for 'scannen')


.group a
@@ -330,13 +330,20 @@
g Q // ph_dutch changes to [x] before unvoiced, NULL after [x]
gg Q
s) g x
@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij

.group ge
_) ge (@P2 Q@
ge (bied Q@
_) gee Qe:
_) gei QEI
gener (aal Q,e:n@r
_) gelijk Q@lEIk
_) ge (lC QE
_) ge (rC QE
_) geu QY:
_) ge (ven Qe:
@@ -346,10 +353,8 @@

ge (sprek Q@ // in compounds

@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij


.group h
h h
@@ -360,6 +365,7 @@
_) herinn h%ErIn // herinneren
_) hersen h'Ers@n
&) heid (_S4 hEIt
_) hulp (@@P4 h'8lp


.group i
@@ -546,13 +552,14 @@ _) inn (@P2 'I // ?? inneren
pl) oi (t v#A
c) oi (ffu v#A
pr) o (gram o:
omgeving OmQ'e:vIN
oo (X 'o:
oon 'o:n // in compounds, eg. telefoongesprek
oo (C_ 'o:
_) oost (@P4 o:st
_) op (@@P2 'Op
_) open (@P4 'o:p@n
_) op (enen 'o:p
_) op (enen+ 'o:p
_) openings (P8 'o:p@nINs
_) op (era 'o:p
_) op (tion Op

+ 39
- 38
dictsource/pt_list View File

@@ -639,18 +639,19 @@ acervo $alt2
adepto $alt
adore $alt
adorno $alt $verb
aeroporto $alt2
aeroportos $alt
albatrozes $alt
alcateia $alt
alferes $alt
algozes $alt
alicerce $alt
almoço $alt $verb
amarelo $alt
ameba $alt
amores $alt2
antonieta $alt2
apego $alt2 $noun
apelo $alt $verb
apelo $alt2 $noun
aposto $alt $verb
aperto $alt2 $noun
apneia $alt
@@ -660,8 +661,8 @@ arremesso $alt2 $noun
arroz $alt2
assembleia $alt
ateia $alt
aterro $alt2 $noun
aterros $alt2
aterro $alt2
aterro $alt $verb
atmosfera $alt
atrozes $alt
autora $alt2
@@ -671,7 +672,6 @@ azeda $alt $verb
azedo $alt $verb
baqueta $alt2
beco $alt2
belo $alt
besta $alt2
bilhete $alt2
boca $alt2
@@ -685,22 +685,24 @@ borboleta $alt2
bordo $alt
bosque $alt
boto $alt2 $noun
brejo $alt
bromelha $alt
cabelo $alt2
cabresto $alt2
cacete $alt2
cachorra $alt2
caderneta $alt2
cadete $alt2
camelo $alt2
camiseta $alt2
cantora $alt2
capacete $alt2
caractere $alt
caramelo $alt
carbureto $alt2
careta $alt2
carreta $alt2
carroça $alt
casebre $alt
castelo $alt
cateto $alt2
catorze $alt2
cebola $alt2
@@ -712,8 +714,6 @@ cerco $alt $verb
chamego $alt2
chefe $alt
checam $alt
cheque $alt
chinelo $alt
choro $alt2 $noun
chovesse $alt2
chupeta $alt2
@@ -721,7 +721,6 @@ clamores $alt2
clero $alt
coco $alt2
cofre $alt
cogumelo $alt
coice $alt2
colabore $alt
colete $alt2
@@ -736,7 +735,6 @@ concerto $alt2 $noun
concertos $alt2
concordo $alt
conforto $alt $verb
congelo $alt
consolo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
@@ -749,18 +747,21 @@ corto $alt
corveta $alt2
corvos $alt
coto $alt2
cotovelo $alt2
cratera $alt
crede $alt2
crepe $alt
decore $alt
degelo $alt2
desapego $alt2 $noun
descabelo $alt
descordo $alt
desemprego $alt2
desemprego $alt $verb
desespero $alt2 $noun
desfecho $alt2
desmantelo $alt $verb
desmantelo $alt2 $noun
desporto $alt2
desportos $alt
desprezo $alt2 $noun
desse $alt2
desse $alt $verb
@@ -771,15 +772,14 @@ destroem $alt
deveras $alt
dez $alt
diarreia $alt
diego $alt2
discordo $alt
dobro $alt2 $noun
doce $alt2
doutora $alt2
droga $alt
duelo $alt
dueto $alt2
elixir eliSir
elo $alt
emprego $alt2 $noun
empregos $alt2
encosto $alt $verb
@@ -795,8 +795,8 @@ envolto $alt2
enxerto $alt2 $noun
epopeia $alt
eritreia $alt
erro $alt2 $noun
erros $alt2
erro $alt2
erro $alt $verb
esboço $alt $verb
escopeta $alt2
escova $alt2 $noun
@@ -805,8 +805,8 @@ escovo $alt
escroto $alt2
esforço $alt $verb
esforços $alt
esgoto $alt2 $noun
esgotos $alt2
esgoto $alt2
esgoto $alt $verb
esperma $alt
espeto $alt2 $noun
espiroqueta $alt2
@@ -825,7 +825,6 @@ exagero $alt $verb
explore $alt
faceta $alt2
fantoche $alt
farelo $alt
farofa $alt
febre $alt
fera $alt
@@ -834,26 +833,27 @@ ferozes $alt
fezes $alt
?1 fixe fiSy
foda $alt2 $verb
folheto $alt2
folga $alt
fogos $alt
foguete $alt2
foice $alt2
folheto $alt2
fora $alt
fora $alt2 $verb
forca $alt2
força $alt2 $noun
forças $alt2
forço $alt
formos $alt2
forro $alt $verb
frevo $alt2
fulgores $alt2
galera $alt
galileia $alt
gameta $alt2
geleia $alt
gelo $alt $verb
gelo $alt2
gelo $alt $verb
genebra $alt
germe $alt
gesso $alt2
golpe $alt
gonorreia $alt
@@ -878,22 +878,19 @@ lagosta $alt2
lambreta $alt2
lebre $alt
lembrete $alt2
lepra $alt
leste $alt2 $verb
lingueta $alt2
lopes $alt
macete $alt2
maior $alt
maleta $alt2
marcelo $alt
marmelo $alt
marreta $alt2
martelo $alt
megera $alt
melhor $alt
menor $alt
merda $alt
megera $alt
melo $alt
mentora $alt2
merda $alt
meta $alt $noun
meteoro $alt
metro $alt
@@ -903,6 +900,8 @@ mexo m'eSU
minueto $alt2
miolo $alt2
miolos $alt
modelo $alt2
modelo $alt $verb
moeda $alt
mofo $alt $verb
molho $alt2 $noun
@@ -923,6 +922,7 @@ namoro $alt2 $noun
naquela $nounf
naquele $alt2 $nounf
nervo $alt2
novelo $alt2
novos $alt
obstetra $alt
odisseia $alt
@@ -944,14 +944,14 @@ panfleto $alt2
pangeia $alt
panqueca p,&~Nk'Ek&
pantera $alt
paralelo $alt
parede $alt2
pastora $alt2
pedra $alt
pela $alt $verb
pelego $alt2
pela $alt $verb
pelo $alt $verb
pelo $alt2
pelo $alt $verb
peso $alt $verb
piloto $alt2 $noun
pintora $alt2
@@ -986,10 +986,13 @@ reforço $alt $verb
reforços $alt
refresco $alt $verb
reitora $alt2
rejo $alt
relevo $alt2 $noun
remorso $alt
renovo $alt $verb
retorno $alt $verb
reuva $alt
rigores $alt2
rixa x'iS&
rocha $alt
rock $alt
@@ -1005,12 +1008,12 @@ seca $alt2 $noun
secas $alt2
seco $alt2
seco $alt $verb
selo $alt $verb
selo $alt2
selo $alt $verb
selvagem seUv'aZeIN
sexteto $alt2
?1 senhora $alt2
senhores $alt2
singelo $alt
sinopse $alt
soco $alt2
soco $alt $verb
@@ -1034,6 +1037,7 @@ tocha $alt
toga $alt
topo $alt $verb
torno $alt $verb
tornozelo $alt2
torre $alt2 $noun
torres $alt2
torro $alt
@@ -1049,16 +1053,13 @@ trombeta $alt2
tumores $alt2
valeta $alt2
vanessa $alt2
velo $alt
velozes $alt
verme $alt
violeta $alt2
violoncelo $alt
voga $alt
vozes $alt
xarope $alt
xeque $alt
zelo $alt $verb
zelo $alt2 $noun
zero $alt
zorra $alt2


+ 20
- 11
dictsource/pt_rules View File

@@ -198,7 +198,7 @@
e (guem_ E

e (lA_ E
e (lo_ e
e (lo_ E
e (lAm_ E

i) e (r_ E
@@ -220,9 +220,15 @@
f) e (re_ E
f) e (rem_ E

e (que_ E
e (quem_ E
e (rgA_ E
e (rgAm_ E

e (rgue_ E
e (rguem_ E

e (rsA_ E
e (rsAm_ E

@@ -236,6 +242,8 @@
e (stAm_ E
e (strA_ E

e (rme_ E

e (rnA_ E
e (rnAm_ E

@@ -458,10 +466,7 @@ respond) e (L07_ e // cor-
tr) e (pL04_ E // es-
_dec) e (pL04_ E
_in) e (ptL03_ E
_p) e (quL02_ E
_s) e (quL02_ E
ad) e (quL04_ E
l) e (que_ E
_imp) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
@@ -483,13 +488,10 @@ _recup) e (rL04_ E
_refrig) e (rL04_ E
_v) e (rbL03_ E
_p) e (rdL02_ E
_ch) e (guL02_ e
_l) e (rdL03_ E
_h) e (rdL04_ E
_) e (rgL03_ e
_) e (rguL02_ E
_alb) e (rguL02_ E
_enx) e (rguL02_ E
_bez) e (rrL03_ e
_bez) e (rrL03_ e
_inv) e (rtL03_ e
_f) e (rvL03_ e
_refr) e (scL01_ E
@@ -574,14 +576,18 @@ _entorp) e (çL03_ e
gu (Y g
a) gu (ent gw
_ar) gu (i gw
averi) gu (e gw
enxa) gu (e gw
i) gu (idade gw
lin) gu (e gw
lin) gu (i gw
_min) gu (e gw
_pin) gu (im_ gw
_pin) gu (ins_ gw
_sa) gu )i gw
_sa) gu (i gw
san) gu (ín gw
san) gu (in gw
tin) gu (i gw
?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira
?1 gu (ém_ g // eg: alguém, ninguém, etc...
@@ -825,9 +831,10 @@ _entorp) e (çL03_ e
//sort
_f) o (L05_ o
_f) o (L07_ o
_engl) o (bL01_ O
_engl) o (bL04_ O
_s) o (bL02_ O
_esn) o (bL04_ O
_af) o (bL04_ O
br) o (chL04_ O
_deb) o (chL04_ O
_m) o (fL01_ O
@@ -835,6 +842,8 @@ _entorp) e (çL03_ e
_s) o (frL02_ O
r) o (gL04_ O // inter-
_j) o (gL04_ O
_emp) o (lgL04_ O
_f) o (lgL04_ O
_af) o (gL04_ O
_adv) o (gL04_ O
_ref) o (gL04_ O

+ 1
- 1
espeak-data/voices/en-us View File

@@ -9,7 +9,7 @@ phonemes en-us
dictrules 3 6
option reduce_t 1

stressLength 145 125 190 170 0 0 260 300
stressLength 140 120 190 170 0 0 255 290
stressAmp 17 16 19 19 19 19 21 19

replace 03 I i

+ 2
- 2
phsource/compile_report View File

@@ -1016,7 +1016,8 @@ vdiph2/ee@ [e@] en-n
vdiph2/ee@_2 [e@] en-rp
vdiph2/ei_2 [eI] en-rp
vdiph2/ei_3 [i:] en-wm
vdiph2/ei_4 [ei] zh
vdiph2/ei_4 [eI] en-us
[ei] zh
[eI] sq
vdiph2/eo [eo] ro
vdiph2/e_u [e[u] ro
@@ -1169,7 +1170,6 @@ vdiph/eei_2 [eI] eo
vdiph/eei_3 [eI] lt
[eI] sk
[eI] ku
vdiph/eei_5 [eI] en-us
vdiph/eeu [EU] pt
[EU] grc
[EU] vi

+ 105
- 161
phsource/ph_danish View File

@@ -1,11 +1,11 @@
// PB General rules for vowels:
// Short vowels
// ACC: Short "pille" [p?el@-]
// AC[V]: Short "piler" [p?ilV]
// ACC: Short "pille" [p?el@-], "andre" [AndRV]
// AC[V]: Short "piler" [p?ilV] - verbs, not nouns, which is a problem
// A[N]: Short "bange" [b?AN@-]
// Long vowels
// A + group #@ OR group #e: Long "ae" "aer" [&:@-]
// AC + group #@ OR group #e: Long "pile" [pi:l@-]
// A + @- OR V: Long "ae" "aer" [&:@-]
// AC + @- OR V: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di]

phoneme @
@@ -22,10 +22,10 @@ phoneme @- // very short schwa
IF nextPhW(*) OR nextPhW(r) THEN
ipa NULL // @-* is used to make 'r'
ENDIF
length 40
length 50
// "femten", "manden" - only a short "n" sound
IF nextPhW(n) THEN
length 20
length 15
ENDIF
IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN
length 15
@@ -56,9 +56,9 @@ endphoneme

phoneme i
vowel starttype #i endtype #i
length 140 //225
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 140
// Long vowel followed by consonant and @- "gide", "pile"
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN
length 225
ENDIF
// "gider", vrider"
@@ -69,15 +69,6 @@ ENDIF
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
ENDIF
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 225
ENDIF
// This vowel is word end - longer because it sounds too short
// "sig", "si"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 140
@@ -86,7 +77,7 @@ ENDIF
// What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D]
IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 240
// length 240
ENDIF
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
@@ -119,9 +110,9 @@ endphoneme

phoneme e
vowel starttype #e endtype #e
length 140 //225
// "delte", "mente"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 140
// "dele", "mene"
IF next2PhW(@-) THEN
length 225
ENDIF
// PB "ring", "ringe"
@@ -132,17 +123,9 @@ ENDIF
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225
ENDIF
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 225
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
// "nedladende" [n'eDl&D@-n@-], "delte" - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 140
ENDIF
// "et"
IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/e)
endphoneme
@@ -152,35 +135,39 @@ endphoneme
phoneme ?e
vowel starttype #e endtype #e
length 140
// "rigtigt" R makes the e too long
IF prevPhW(R) THEN
length 100
ENDIF
// "sigte" t/d + @- makes the e too long
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) AND next3PhW(@-) THEN
length 100
ENDIF
FMT(vowel/e)
endphoneme

phoneme E
vowel starttype #e endtype #e
length 140 //225
length 140
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 160
IF nextVowel(@-) THEN
length 225
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
IF nextPhW(V) THEN
length 180
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 160
length 225
ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 160
length 225
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 100
length 140
ENDIF
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
@@ -199,35 +186,34 @@ phoneme ?E
vowel starttype #e endtype #e
ipa ε
length 140
// "fred" R makes the E too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
length 100
ENDIF
// "fængsel" N makes the E too long
IF nextPhW(N) THEN
length 100
ENDIF
FMT(vowel/e_mid2)
endphoneme

phoneme &
vowel starttype #e endtype #e
ipa a
length 140 //225
ipa æ
length 140
// "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden"
IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN
length 225
ENDIF
// ThisPh + V or group #@
// ThisPh + V or @-
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(@-) OR nextPhW(V) THEN
length 260
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 225
ENDIF
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
length 225
ENDIF
// "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
@@ -236,27 +222,20 @@ ENDIF
FMT(vowel/ee_2)
endphoneme

// PB Short &
// Short &
// e.g. the last a in "staldkarl"
// "sale" vs. "sal"
phoneme ?&
ipa a
vowel starttype #e endtype #e
length 140
FMT(vowel/ee_2)
endphoneme

// PB added for the æ in "dræbt"
// Added for the æ in "dræbt"
phoneme &#
vowel starttype #e endtype #e
length 140 //120
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 120
ENDIF
// "drenge"
IF nextPhW(N) THEN
length 140
ENDIF
length 140
ipa a
FMT(vowel/&)
endphoneme

@@ -264,21 +243,17 @@ endphoneme
// "revl" vs. "tremme"
phoneme ?&#
vowel starttype #e endtype #e
length 140
length 120
FMT(vowel/&)
endphoneme

phoneme A // PB changed to a_8
vowel starttype #a endtype #a
length 140 //225
length 140
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 225
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 140
@@ -287,13 +262,12 @@ ENDIF
IF nextPhW(A) THEN
length 225
ENDIF
// "av" [Au] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
// "gratis"
IF next2PhW(i) THEN
length 225
ENDIF
// "magnat" [mAun&d] - sounds too short
IF nextPhW(u) OR nextPhW(w) THEN
length 130
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 140
ENDIF
FMT(vowel/a_8)
endphoneme
@@ -303,66 +277,49 @@ endphoneme
phoneme ?A
vowel starttype #a endtype #a
length 140
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
ENDIF
FMT(vowel/a_8)
endphoneme

phoneme u
vowel starttype #u endtype #u
length 140 //225
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
length 140
// "suge", "uge", "bluse", "julegave"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF
// "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 225
length 225
ENDIF
FMT(vowel/u_bck)
endphoneme

// PB glottal u
// Short u
// "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u
vowel starttype #u endtype #u
length 140
// "slutte" t/d + @- makes the u too long
IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN
length 100
ENDIF
FMT(vowel/u_bck)
endphoneme

phoneme o
vowel starttype #o endtype #o
length 140 //225
// "bore", "borer"
IF nextPhW(V) OR nextPhW(#@) THEN
length 140
// "bore", "borer" [boV] o + V
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
// "kone", "koner"
IF next2PhW(V) OR next2PhW(#@) THEN
// "kone", "koner" o + consonant + V or @-
IF next2PhW(V) OR next2PhW(@-) THEN
length 225
ENDIF
// "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN
length 225
ENDIF
// Only "o"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "ko"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/o_2)
endphoneme
@@ -377,8 +334,9 @@ endphoneme

phoneme O
vowel starttype #o endtype #o
length 140 // 150
// "sove", "sover" - consonant + #e or #@: long
length 140
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ
// "sove", "sover" - consonant + @ or V: long
IF next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF
@@ -388,12 +346,7 @@ IF nextPhW(V) OR nextPhW(@-) THEN
ENDIF
// "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
length 180
ENDIF
// This vowel is word end - longer because it sounds too short
// "på", "gå"
IF thisPh(isWordEnd) THEN
length 120
length 225
ENDIF
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
@@ -407,37 +360,24 @@ endphoneme
phoneme ?O
vowel starttype #o endtype #o
length 140
// "hoven"
IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN
length 120
ENDIF
FMT(vowel/o_5)
endphoneme

phoneme V
vowel starttype #@ endtype #@
length 140 //225
length 140
// "forlig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
length 225
ENDIF
// PB "konge" - ng=>n
IF nextPhW(N) THEN
length 100
ENDIF
// Only [V] - "og"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "for" [fV]
IF thisPh(isWordEnd) THEN
length 120
length 140
ENDIF
FMT(vowel/V_4)
endphoneme

// PB Short å
// PB Short V
// "forstår" vs. "kåre"
phoneme ?V
vowel starttype #@ endtype #@
@@ -463,31 +403,28 @@ endphoneme

phoneme y
vowel starttype #i endtype #i
// Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels.
length 140 //225

length 140
// PB long vowel followed by consonant and certain vowels
// "gyde", "gyder"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 225
ENDIF
// "dydig" [dyDi]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225
ENDIF
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN
length 200
length 225
ENDIF
// "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 225
ENDIF
// "bryde" R makes the y too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
length 180
ENDIF
FMT(vowel/y)
endphoneme

@@ -496,6 +433,14 @@ endphoneme
phoneme ?y
vowel starttype #i endtype #i
length 140
// "udrydde" R makes the y too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
length 100
ENDIF
// "hytte" t/d + @- makes the y too long
IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN
length 100
ENDIF
FMT(vowel/y)
endphoneme

@@ -514,35 +459,30 @@ endphoneme

phoneme W
vowel starttype #@ endtype #@
length 140 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
length 140
// "kløe" vowel + vowel: long
IF nextPhW(@-) THEN
length 225
ENDIF
// røde" W + 1 consonant + 3 or W or @
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160
// "røve" W + 1 consonant + 3 or W or @
IF next2PhW(@-) OR next2PhW(3) THEN
length 225
ENDIF
// "røveri" but NOT "surfer" [sWf?V] TEST
// "røveri" but NOT "surfer" [sWfV] TEST
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 140
ENDIF
// PB "nødig", "nødigt", "kølige"
// PB "nødig", "nødigt", "kølige" - long
IF nextVowel(i) THEN
length 160
length 225
ENDIF
// "møve" [mWw@-]
// "møve" [mWw@-] - long
IF nextPhW(w) AND nextVowel(@-) THEN
length 160
ENDIF
// "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 225
ENDIF
// This vowel is word end - longer because it sounds too short
// "dø" [dW]
IF thisPh(isWordEnd) THEN
length 120
// "børnebog" - short
IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN
length 140
ENDIF
// PB "synge"
IF nextPhW(N) THEN
@@ -556,6 +496,10 @@ endphoneme
phoneme ?W
vowel starttype #@ endtype #@
length 140
// "bryllup", "rødder" R makes the y too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
length 100
ENDIF
FMT(vowel/oe)
endphoneme

@@ -628,7 +572,7 @@ phoneme l/3 // Replacement for [l/]
VowelEnding(l/l_a)
VowelEnding(l/l_e, -50) // hjælpe
VowelEnding(l/l_i, -70) // flygte?
VowelEnding(l/l_o,-35) // stole, skole, pistol
VowelEnding(l/l_o, -60) // stole, skole, hjulpet
VowelEnding(l/l_u, -70)
EndSwitch

@@ -742,4 +686,4 @@ Vowelout len=70
Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme
endphoneme

+ 27
- 0
phsource/ph_english View File

@@ -194,6 +194,11 @@ phoneme aa // 'bath' etc.
vowel starttype #a endtype #a
ipa a
length 185
IF MbrolaSynth THEN
ChangePhoneme(A:)
ENDIF

IfNextVowelAppend(r-)
FMT(vowel/a)
endphoneme
@@ -219,18 +224,30 @@ phoneme I2
vowel starttype #i endtype #i
unstressed
length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF

IfNextVowelAppend(;)
FMT(vowel/ii_4)
endphoneme


phoneme I# // used for [I] which may be [@] in some accents
vowel starttype #i endtype #i
unstressed
length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF

IfNextVowelAppend(;)
ChangePhoneme(I2)
endphoneme


phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i
ipa ɪ
@@ -342,6 +359,11 @@ phoneme o@
vowel starttype #o endtype #o
ipa ɔː
length 250
IF MbrolaSynth THEN
ChangePhoneme(O@)
ENDIF

IfNextVowelAppend(r-)
FMT(vowel/oo_en)
endphoneme
@@ -418,6 +440,11 @@ endphoneme
phoneme i@3
vowel starttype #i endtype #@
length 250
IF MbrolaSynth THEN
ChangePhoneme(i@)
ENDIF

IfNextVowelAppend(r-)
FMT(vdiph2/ii@)
endphoneme

+ 7
- 6
phsource/ph_english_us View File

@@ -69,7 +69,7 @@ endphoneme

phoneme E
vowel starttype #e endtype #e
length 195
length 190
ChangeIfDiminished(I2)
FMT(vwl_en_us/ee)
endphoneme
@@ -181,7 +181,7 @@ endphoneme

phoneme O:
vowel starttype #o endtype #o
length 210
length 200
ChangeIfDiminished(@)
IF nextPh(r) THEN
FMT(vwl_en_us/oor)
@@ -245,7 +245,7 @@ endphoneme

phoneme aI
vowel starttype #a endtype #i
length 250
length 240
IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;)
ENDIF
@@ -255,14 +255,15 @@ endphoneme

phoneme eI
vowel starttype #e endtype #i
length 230
FMT(vdiph/eei_5)
length 220
FMT(vdiph2/ei_4)
// FMT(vdiph/eei_5)
endphoneme


phoneme OI
vowel starttype #o endtype #i
length 285
length 280
FMT(vdiph/ooi_4)
endphoneme


+ 10
- 10
phsource/ph_portugal View File

@@ -48,21 +48,21 @@ endphoneme

phoneme E
vowel starttype #e endtype #e
length 170
length 180
ChangeIfUnstressed(y)
FMT(vowel/e_mid)
endphoneme

phoneme e
vowel starttype #e endtype #e
length 160
length 180
ChangeIfUnstressed(y)
FMT(vowel/e)
endphoneme

phoneme y
vowel starttype #@ endtype #@
length 110
length 130
ipa ɨ
FMT(vowel/i#_5)
endphoneme
@@ -70,7 +70,7 @@ endphoneme

phoneme i
vowel starttype #i endtype #i
length 150
length 170
IfNextVowelAppend(;)
FMT(vowel/i)
endphoneme
@@ -78,7 +78,7 @@ endphoneme

phoneme i/ // changes to NULL before a vowel
vowel starttype #i endtype #i
length 100
length 130
ipa ɨ
IF nextPh(isVowel) THEN
ChangePhoneme(NULL)
@@ -90,7 +90,7 @@ endphoneme

phoneme O
vowel starttype #o endtype #o
length 170
length 180
// ChangeIfNotStressed(o)
FMT(vowel/0_2)
endphoneme
@@ -98,7 +98,7 @@ endphoneme

phoneme o
vowel starttype #o endtype #o
length 170
length 180
ChangeIfNotStressed(u)
FMT(vowel/o)
endphoneme
@@ -106,13 +106,13 @@ endphoneme

phoneme u
vowel starttype #u endtype #u
length 160
length 180
FMT(vowel/u_6)
endphoneme

phoneme U
vowel starttype #u endtype #u
length 110
length 130
IF nextPh(isVowel) THEN
ChangePhoneme(w)
ENDIF
@@ -122,7 +122,7 @@ endphoneme

phoneme EU
vowel starttype #e endtype #u
length 220
length 230
FMT(vdiph/eeu_2)
endphoneme


+ 2
- 2
src/compiledata.cpp View File

@@ -2866,8 +2866,8 @@ int CompilePhoneme(int compile_phoneme)
break;

case i_ADD_LENGTH:
value = NextItem(tSIGNEDNUMBER);
*prog_out++ = (i_ADD_LENGTH << 8) + value/2;
value = NextItem(tSIGNEDNUMBER) / 2;
*prog_out++ = (i_ADD_LENGTH << 8) + (value & 0xff);
DecThenCount();
break;


+ 20
- 2
src/dictionary.cpp View File

@@ -3469,16 +3469,34 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
} // end of LookupDictList


extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes

int Lookup(Translator *tr, const char *word, char *ph_out)
{//===================================================
int found;
unsigned int flags[2];
int say_as;
char *word1 = (char *)word;
char text[80];

flags[0] = 0;
flags[1] = FLAG_LOOKUP_SYMBOL;
char *word1 = (char *)word;
return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL));
found = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL);

if(flags[0] & FLAG_TEXTMODE)
{
say_as = option_sayas;
option_sayas = 0; // don't speak replacement word as letter names
text[0] = 0;
strncpy0(&text[1], word1, sizeof(text));
found = TranslateWord(tr, &text[1], 0, NULL, NULL);
strcpy(ph_out, word_phonemes);
option_sayas = say_as;
}
return(found);
}


int LookupFlags(Translator *tr, const char *word)
{//==============================================
char buf[100];

+ 1
- 1
src/numbers.cpp View File

@@ -651,7 +651,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
current_alphabet = alphabet;
if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset))
{
if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet))
if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet) || (al_offset == translator->langopts.our_alphabet))
{
// don't say the alphabet name
}

+ 11
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.47.03d 26.Mar.13";
const char *version_string = "1.47.03e 29.Mar.13";
const int version_phdata = 0x014701;

int option_device_number = -1;
@@ -1032,6 +1032,16 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
phdata->pd_param[i_APPEND_PHONEME] = data;
}
else
if(instn2 == i_ADD_LENGTH)
{
if(data & 0x80)
{
// a negative value, do sign extension
data = -(0x100 - data);
}
phdata->pd_param[i_SET_LENGTH] += data;
}
else
if(instn2 == i_IPA_NAME)
{
// followed by utf-8 characters, 2 per instn word

+ 8
- 4
src/tr_languages.cpp View File

@@ -654,10 +654,10 @@ Translator *SelectTranslator(const char *name)

// character codes offset by 0x380
static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ
static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ
static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ _
static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ _
static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ
static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ _

SetupTranslator(tr,stress_lengths_el,stress_amps_el);

@@ -670,7 +670,7 @@ Translator *SelectTranslator(const char *name)
SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels);
SetLetterBits(tr,LETTERGP_B,el_voiceless);
SetLetterBits(tr,LETTERGP_C,el_consonants);
SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ
SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ _

tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R;
@@ -912,6 +912,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS;
tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards
tr->langopts.replace_chars = replace_cyrillic_latin;
tr->langopts.our_alphabet = OFFSET_CYRILLIC; // don't say "cyrillic" before letter names

SetLetterVowel(tr,'y');
SetLetterVowel(tr,'r');
@@ -1113,6 +1114,7 @@ SetLengthMods(tr,3); // all equal
static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N

tr->letter_bits_offset = OFFSET_KOREAN;
tr->langopts.our_alphabet = 0xa700;
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
@@ -1194,6 +1196,7 @@ SetLengthMods(tr,3); // all equal
SetupTranslator(tr,stress_lengths_mk,stress_amps_mk);
tr->charset_a0 = charsets[5]; // ISO-8859-5
tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic;
tr->letter_bits_offset = OFFSET_CYRILLIC;

tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
@@ -1608,6 +1611,7 @@ SetLengthMods(tr,3); // all equal
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.ideographs = 1;
tr->langopts.our_alphabet = 0x3100;
tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
if(name2 == L('z','h'))
{

+ 1
- 0
src/translate.h View File

@@ -546,6 +546,7 @@ typedef struct {
int listx; // compile *_listx after *list
const unsigned int *replace_chars; // characters to be substitutes
char ascii_language[8]; // switch to this language for Latin characters
int our_alphabet; // offset for main alphabet (if not set in letter_bits_offset)
int alt_alphabet; // offset for another language to recognize
int alt_alphabet_lang; // language for the alt_alphabet
int max_lengthmod;

Loading…
Cancel
Save