Browse Source

Merge branch 'upstream' into development

Conflicts:
	dictsource/dict_phonemes
	phsource/compile_report
master
Reece H. Dunn 12 years ago
parent
commit
a7f93e1845

+ 4
- 0
dictsource/an_list View File

_x#ª %a _x#ª %a
º orDin'al||maskul'in º orDin'al||maskul'in
ª orDin'al||femen'in ª orDin'al||femen'in
ºc gr'aUs||T'e
ºf gr'aUs||'Efe
ºk gr'aUs||k'a


_1ox prim'Er _1ox prim'Er
_2ox seQ'und _2ox seQ'und
facebook f'eIsbuk facebook f'eIsbuk
firefox f'aIrfoks firefox f'aIrfoks
google g'ugEl google g'ugEl
hotmail xotm'eIl
(i phone) 'aIfon (i phone) 'aIfon
iphone 'aIfon iphone 'aIfon
(i pod) 'aIpod (i pod) 'aIpod

+ 3
- 1
dictsource/bn_list View File

// Translation rules for Bengali
// Translation rules for Bengali
// This file is UTF8 encoded // This file is UTF8 encoded


// Numbers // Numbers
ঁ tS'Ondrobindu ঁ tS'Ondrobindu
় b'indu ় b'indu


_, koma



// Punctuation // Punctuation
। dVn.d.V । dVn.d.V

+ 87
- 80
dictsource/da_list View File

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


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


// exceptions for ordinals // exceptions for ordinals
_1o fWrsd3 // 1. første
_1o fWrsd@- // 1. første
_2o &n@n // 2. anden _2o &n@n // 2. anden
_3o trEdj3 // 3. tredje
_3o trEdj@- // 3. tredje
_4o fjeV // 4. fjerde _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 // function words


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


det de $u det de $u
dét de dét de
vi vi $u vi vi $u
i _i $u+
i _i_! $u+
mig mAj $u // me mig mAj $u // me
dig dAj $u+ dig dAj $u+
dem $u dem $u
// possessive pronouns // possessive pronouns
min min $u min min $u
mit mit $u mit mit $u
mine m'in3
mine m'in@-
din d'in $u+ din d'in $u+
dit d'it $u dit d'it $u
dine d'in3
dine d'in@-
deres dE:Vs $u deres dE:Vs $u
hans $u+ hans $u+
hendes $u+ hendes $u+
eminence $alt eminence $alt
excellence $alt excellence $alt
fajance $alt fajance $alt
hospice $alt
ignorance $alt ignorance $alt
inspektrice $alt inspektrice $alt
intolerance $alt intolerance $alt
afrikaan $alt afrikaan $alt
aleksandrin $alt aleksandrin $alt
amerikan $alt amerikan $alt
austral $alt
andorran $alt andorran $alt
anglikan $alt anglikan $alt
angolan $alt angolan $alt
deducer $alt deducer $alt
defiler $alt defiler $alt
definer $alt definer $alt
omdefiner $alt
deflorer $alt deflorer $alt
deformer $alt deformer $alt
degrader $alt degrader $alt
konstituer $alt konstituer $alt
konstringer $alt konstringer $alt
konstruer $alt konstruer $alt
rekonstruer $alt
konsulere $alt konsulere $alt
konsulter $alt konsulter $alt
konsumer $alt konsumer $alt
tournure $alt tournure $alt


// exceptions // exceptions
alene &l'en@ // alone
alene &l'en@- // alone
egen _|aj@-n egen _|aj@-n
mc mak' $capital // PB McDonald mc mak' $capital // PB McDonald
egne ajn@- egne ajn@-
giver gir // PB the v shouldn't be pronounced giver gir // PB the v shouldn't be pronounced
opgiver Vpgir // PB opgiver Vpgir // PB
jaloux sj&'lu // PB jaloux 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 (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 (tour de force) tu:@d@||'fV:s // PB
(al qaeda) al||k'ajda // PB (al qaeda) al||k'ajda // PB
(force majeure) fVrs||,ma'sjW:r // 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: (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 (salt lake city) s'Vlt||lEjk||s'iti
wien v'i:n // PB Wien - the town of Vienna 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 //siger sir // PB silent d
(tids nok) tis||n'Vk // 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 (hole in one) h'oulinw,0n // PB English golf expression used in Danish
(en passant) AN||p&s'AN (en passant) AN||p&s'AN
(coney island) 'kouni||'ajl3nd // PB (coney island) 'kouni||'ajl3nd // PB
(union station) junj3n||steisj@n // PB (union station) junj3n||steisj@n // PB
(secret service) sigred||s'Wvis (secret service) sigred||s'Wvis
(happy hour) h&pi||'AuV (happy hour) h&pi||'AuV
chevrolet sjEvrol'e
chevrolet sjEvrol'E
saigon sAjgVn // PB Saigon saigon sAjgVn // PB Saigon
managua m&n'&:gw& managua m&n'&:gw&
(deja-vu) deSja||'vy (deja-vu) deSja||'vy
// Try to catch errors // Try to catch errors


(et kvarter) et||kvA'ter // PB (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 (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& (helst have) h'Elst||h&
(gerne have) g'Ern3||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) // PB 'hav' = ocean - 'hav' = have (a nice day)
(et hav) ed||hAu (et hav) ed||hAu
(stort hav) stord||hAu (stort hav) stord||hAu
hav hAu $atend 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] // 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" // PB avoid [staj] as in "flæskesteg"
(han steg) h&n||st'e (han steg) h&n||st'e
(hun steg) hOn||st'e (hun steg) hOn||st'e
(alle steg) &l3||st'e (alle steg) &l3||st'e
(vandet steg) v&n@D||st'e (vandet steg) v&n@D||st'e
steg sdaj $atend $sentence 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] // 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 (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 // PB legende = legend/myth and = playing

+ 31
- 22
dictsource/da_rules View File

// Short vowel before double consonant // Short vowel before double consonant
r) a (C%++ ?A // trappe r) a (C%++ ?A // trappe
a (C%+ ?& // pladder, basser, masser 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 C) a (L06% ?A // tapper, tappen, lapper, lappen
v) a (cc ?A // vaccinere v) a (cc ?A // vaccinere
a (ffald+ A a (ffald+ A
pl) a (ner ?& // planer pl) a (ner ?& // planer
pl) a (nen ?& // planen 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 a (den & //gaden


// Have = "oceans" vs. the verb have // Have = "oceans" vs. the verb have
past) a & // tandpastareklame past) a & // tandpastareklame


r) a (CK+ A // drab, Rasmus, rask 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 (len+ ?A // gralen TEST
r) a (le+ A // morale, prale r) a (le+ A // morale, prale
r) a (dio++ A: // shortend too much by ph_danish r) a (dio++ A: // shortend too much by ph_danish
_t) age (_+ &j@- // tage _t) age (_+ &j@- // tage
_t) age (_sig & _t) age (_sig &
du_t) age (_ & du_t) age (_ &
voldt) age (_ &
voldt) ager (_ Ar
cart) age (na &g'e: // name cart) age (na &g'e: // name
b) ag (efter++ &j // b) ag (efter++ &j //
age (lig '&j@- // uindtagelig, behagelig - stressed age (lig '&j@- // uindtagelig, behagelig - stressed
cigaret sig3r'&#t cigaret sig3r'&#t
cigarett sig3r'&#t cigarett sig3r'&#t
cc ks // accent cc ks // accent
yu) cc (a k
ro) cc (o k // name ro) cc (o k // name
pu) ccini S'ini // name pu) ccini S'ini // name
rebe) cc (a =k // name rebe) cc (a =k // name
kandi) d (at 'd kandi) d (at 'd
mi) dd (a d mi) dd (a d
nø) dde (+ D@- // jordnøddesmør nø) dde (+ D@- // jordnøddesmør
nø) dder (+ DV // nødderne
an) d (e // manden, anden - silent d an) d (e // manden, anden - silent d
_fan) de (me // fandeme - skip de, only this word _fan) de (me // fandeme - skip de, only this word
gær) de V // silent d gær) de V // silent d
arv) e (@ @- // farvestof arv) e (@ @- // farvestof
ugl) e (@ @- // fugleskræmsel ugl) e (@ @- // fugleskræmsel
ønn) e (st @- // kønneste ønn) e (st @- // kønneste
av) e (@ @- // pavestolt


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


alv) or O // alvor alv) or O // alvor
// or (L04+ or // favorit
v) or (L11+ or // favorabel v) or (L11+ or // favorabel
v) or (_ O // v) or (_ O //
f) or (_ V // for f) or (_ V // for
// _f) or (_at_ O:_!
derf) or V // derfor derf) or V // derfor
tayl) or V // name tayl) or V // name
helsingf) or (s 'V // stressed helsingf) or (s 'V // stressed
sekt) or V // sektoren sekt) or V // sektoren
k) or (t ?O: // kort k) or (t ?O: // kort
k) or (tA ?O: // korte k) or (tA ?O: // korte
t) or (L06 O // torpedere
t) or (L06 O: // torpedere
or (to O: // ortodoks, ortopæd or (to O: // ortodoks, ortopæd
m) orge OO@- // morgen m) orge OO@- // morgen
dek) or (_ 'V:r // dekor dek) or (_ 'V:r // dekor
f) ord (ø Vd' // fordømme f) ord (ø Vd' // fordømme
v) ord (i 'Vrd // gernvordighed v) ord (i 'Vrd // gernvordighed
ord (en+ Od // orden, ordensmagt ord (en+ Od // orden, ordensmagt
n) orden OVn // Norden - silent d
b) orde (nde orE // b) orde (nde orE //
ord (ene+ oR // ordene ord (ene+ oR // ordene
ord (enen+ O:d // ordenen ord (enen+ O:d // ordenen
_) stone sdoun // namde - Stone _) stone sdoun // namde - Stone
empire_) state (_ stEjt // empire_) state (_ stEjt //
_) sir (_ sW: // Sir Arthur _) sir (_ sW: // Sir Arthur
sher (wood SW // Sherwood Forrest
sher (wood SW: // Sherwood Forrest
surf sW:f // windsurfing surf sW:f // windsurfing
surf (e sWf
surf (e sW:f
la) sur sur // lasurfarve la) sur sur // lasurfarve
_) sugar (_ SugV // Sugar Ray _) sugar (_ SugV // Sugar Ray
savoir s&voa: // savoir-faire savoir s&voa: // savoir-faire
_) ud (@@+P2 ''?uD _) ud (@@+P2 ''?uD
_) ude (@@+P3 ''uD@- _) ude (@@+P3 ''uD@-
// exceptions for ud-: [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 (rikkelig+P2 ud
_) ud (røj+P2 'ud _) ud (røj+P2 'ud
_) ud (uelig+ ud
_) ud (uelig+ ?ud
_) ud (y+P2 '?ud // udyd, udygtig, udyr _) ud (y+P2 '?ud // udyd, udygtig, udyr
_) ud (øbt+P2 'ud _) 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 u (nL08+ O // kunst
br) unch VnS // br) unch VnS //
kr) æ (_ E? // kr) æ (_ E? //
r) æ (t+ &# // åndedræt r) æ (t+ &# // åndedræt
spr) æ (C+ &# // sprængt 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 // rør) æg Eg //
pr) æ (gn E // prægnans, prægnant pr) æ (gn E // prægnans, prægnant
for) æ (dle ?E // for) æ (dle ?E //


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


_chauff) ø (r 'W // stressed in 'chauffør' _chauff) ø (r 'W // stressed in 'chauffør'
_milj) ø 'W // stressed - miljø _milj) ø 'W // stressed - miljø
str) å (forkort ?V // stråforkorter str) å (forkort ?V // stråforkorter
str) å (hat ?V // str) å (hat ?V //
str) å (død ?V // str) å (død ?V //
årer V:V- // sårer
årer OO- // sårer, årer
å (lti ?V // måltid å (lti ?V // måltid


.group ' .group '

+ 18
- 3
dictsource/en_list View File

ï $accent ï $accent
ö $accent ö $accent
ü $accent ü $accent
û $accent
č $accent č $accent
š $accent š $accent
ş $accent ş $accent
ambidextrous $3 ambidextrous $3
amen ,A:m'En $onlys amen ,A:m'En $onlys
?3 amen ,eIm'En ?3 amen ,eIm'En
?3 amo amoU
amok a#m0k amok a#m0k
amoral eIm'0r@L amoral eIm'0r@L
amount a#maUnt amount a#maUnt
analysis a#nal@sIs analysis a#nal@sIs
anemone a#nEm@ni anemone a#nEm@ni
angel eIndZ@L angel eIndZ@L
anecdote anIkdoUt
anecdotal anIkd'oUt@L
anemometer anIm'0mI2t3 anemometer anIm'0mI2t3
anew a#nju: anew a#nju:
?3 anew a#nu: ?3 anew a#nu:
argon A@g0n argon A@g0n
argue A@gju: argue A@gju:
aries e@ri:z aries e@ri:z
arithmetic a#rITm@tIk
arithmetic a#rITm@tIk $onlys
arise a#raIz arise a#raIz
arisen @rIz@n arisen @rIz@n
armslength ,A@mzl'ENT armslength ,A@mzl'ENT
aviary eIvi@ri aviary eIvi@ri
awry a#raI awry a#raI
axes aksI#z axes aksI#z
axon aks0n


backend bak'End backend bak'End
backstory baksto@ri backstory baksto@ri
circumvent s3:k@mvEnt circumvent s3:k@mvEnt
?5 circumvent sIRk@mvEnt ?5 circumvent sIRk@mvEnt
citadel sIt@dEl citadel sIt@dEl
clandestine $2
clarinet klar@n'Et clarinet klar@n'Et
cleanliness klEnlIn@s cleanliness klEnlIn@s
cleanse klEnz cleanse klEnz
copier k0pi@3 copier k0pi@3
copilot koUpaIl@t copilot koUpaIl@t
coral k0r@L coral k0r@L
?3 cordial kO@dZ@L
coronet k0r@nEt coronet k0r@nEt
corollary $2 corollary $2
corporal kO@pr@L corporal kO@pr@L
?3 debut deIb'ju: ?3 debut deIb'ju:
decade dEkeId decade dEkeId
decent di:s@nt decent di:s@nt
decibel dEsI#b@L
declaration dEkl@'reIS@n declaration dEkl@'reIS@n
decolletage deIk0lt'A:Z decolletage deIk0lt'A:Z
decor deIkO@ decor deIkO@
doctrinal $alt1 doctrinal $alt1
doer du:3 doer du:3
dogged d0gI#d dogged d0gI#d
dogmatic d0gm'atIk
doin du:In doin du:In
domino $1 domino $1
donor doUn3 donor doUn3
inventory Inv@ntri inventory Inv@ntri
?3 inventory Inv@nto:ri ?3 inventory Inv@nto:ri
interface $1 interface $1
interlude $1
intermin Int'3:mIn // interminable intermin Int'3:mIn // interminable
intern $1 $onlys intern $1 $onlys
internee Int'3:ni: internee Int'3:ni:
momentary moUm@nt@ri momentary moUm@nt@ri
?3 momentary moUm@nt2e@ri ?3 momentary moUm@nt2e@ri
momentum $2 momentum $2
monarchic m@nA@kIk
monday mVndeI monday mVndeI
monotone m0n@toUn monotone m0n@toUn
monsieur m@sj3: monsieur m@sj3:
pecan pi:k@n pecan pi:k@n
peculiar pI2kju:lI3 peculiar pI2kju:lI3
pedalo pEd@loU pedalo pEd@loU
pedestal pEdI2st@L
pedestrian $alt3 pedestrian $alt3
pegasus pEg@s@s pegasus pEg@s@s
pejorative p@dZ0r@tIv pejorative p@dZ0r@tIv
rugged rVgI#d rugged rVgI#d
ruin ru:I2n // for ruining ruin ru:I2n // for ruining


sabbatic $alt3
sabotage sab@tA:Z sabotage sab@tA:Z
saboteur sab@t'3: saboteur sab@t'3:
?5 saboteur sab@t'VR ?5 saboteur sab@t'VR
sachet saSeI sachet saSeI
sacred seIkr@d sacred seIkr@d
sacrifice sakrI2faIs sacrifice sakrI2faIs
sadistic $alt3
safety seIfti safety seIfti
saga sA:g@ saga sA:g@
sahara $alt3 sahara $alt3
san ,san $only san ,san $only
sardine $2 sardine $2
satanic $alt3 satanic $alt3
satiric $alt3
saucepan sO:sp@n saucepan sO:sp@n
saudi saUdi saudi saUdi
saute sO:teI saute sO:teI
stampede $2 stampede $2
starboard stA@b3d starboard stA@b3d
starry stA:rI starry stA:rI
statistic $alt3
stiletto stI2lEtoU stiletto stI2lEtoU
strychnine str'Ikni:n strychnine str'Ikni:n
sterile stEraIl sterile stEraIl
uncle VNk@L uncle VNk@L
undeny VndIn'aI undeny VndIn'aI
underling $1 underling $1
underlings Vnd3lINz
underworld $1 underworld $1
undies Vndiz undies Vndiz
undo Vnd'u: undo Vnd'u:
Rachael reItS@L Rachael reItS@L
Rachel reItS@L Rachel reItS@L
Rafael rA:faI'El Rafael rA:faI'El
Rashid rA:S'i:d
Raul raU'u:l Raul raU'u:l
Rees ri:s Rees ri:s
Reese ri:s Reese ri:s
Sheila Si:l@ Sheila Si:l@
Simon saIm@n Simon saIm@n
Sinead SI2neId Sinead SI2neId
Sinéad SI2neId
Siobhan S@vO:n Siobhan S@vO:n
Siobhán S@vO:n Siobhán S@vO:n
Sonia s0nj@ Sonia s0nj@

+ 21
- 9
dictsource/en_rules View File

portr) ai (t I# portr) ai (t I#


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




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

+ 3
- 0
dictsource/es_list View File

_#º o _#º o
_#ª a _#ª a
_ord o _ord o
ºc gr'ados||T'e
ºf gr'ados||'Efe
ºk gr'ados||k'a


_1o prim'Er _1o prim'Er
_2o seQ'und _2o seQ'und

+ 49
- 1
dictsource/hbs_list View File


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


y ipsilon y ipsilon
z z@ z 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
_é $accent _é $accent
_ó $accent _ó $accent
_ú $accent _ú $accent


_ar 'Arapsko
_cyr tS;'iRilitsa


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

+ 6
- 1
dictsource/hbs_rules View File


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


.group d .group d
d d d d
dz dz dz dz
_) dz (_ dz@
dž dZ dž dZ
_) dž (_ dZ@


.group đ .group đ
đ dZ; đ dZ;
.group l .group l
l l l l
K) l (K l- K) l (K l-
_) lj (_ l^@
lj (+ l^ lj (+ l^
v) lj lj v) lj lj


n (k N n (k N


nj n^ nj n^
_) nj (_ n^@


.group o .group o
o o o o

+ 6
- 3
dictsource/nl_list View File





// punctuation // punctuation
. p8nt $max3
. p8nt
_, k'Oma: _, k'Oma:
_: d'8b@l@p,8nt _: d'8b@l@p,8nt
_; p'8ntkOm,a: _; p'8ntkOm,a:
_{ v'irkAnt@h,a:k _{ v'irkAnt@h,a:k
_} v'irkAnt@h,a:ksl'Wyt@n _} v'irkAnt@h,a:ksl'Wyt@n
_- k'OpElt,e:k@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@ __ l'IgEntst@-*'e:pj@
€ 'Y:*o:t,e:k@n € 'Y:*o:t,e:k@n




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

+ 12
- 5
dictsource/nl_rules View File

// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant // Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant


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




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


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


ge (sprek Q@ // in compounds ge (sprek Q@ // in compounds


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




.group h .group h
h h h h
_) herinn h%ErIn // herinneren _) herinn h%ErIn // herinneren
_) hersen h'Ers@n _) hersen h'Ers@n
&) heid (_S4 hEIt &) heid (_S4 hEIt
_) hulp (@@P4 h'8lp




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

+ 39
- 38
dictsource/pt_list View File

adepto $alt adepto $alt
adore $alt adore $alt
adorno $alt $verb adorno $alt $verb
aeroporto $alt2
aeroportos $alt
albatrozes $alt albatrozes $alt
alcateia $alt alcateia $alt
alferes $alt alferes $alt
algozes $alt algozes $alt
alicerce $alt alicerce $alt
almoço $alt $verb almoço $alt $verb
amarelo $alt
ameba $alt ameba $alt
amores $alt2 amores $alt2
antonieta $alt2 antonieta $alt2
apego $alt2 $noun apego $alt2 $noun
apelo $alt $verb
apelo $alt2 $noun
aposto $alt $verb aposto $alt $verb
aperto $alt2 $noun aperto $alt2 $noun
apneia $alt apneia $alt
arroz $alt2 arroz $alt2
assembleia $alt assembleia $alt
ateia $alt ateia $alt
aterro $alt2 $noun
aterros $alt2
aterro $alt2
aterro $alt $verb
atmosfera $alt atmosfera $alt
atrozes $alt atrozes $alt
autora $alt2 autora $alt2
azedo $alt $verb azedo $alt $verb
baqueta $alt2 baqueta $alt2
beco $alt2 beco $alt2
belo $alt
besta $alt2 besta $alt2
bilhete $alt2 bilhete $alt2
boca $alt2 boca $alt2
bordo $alt bordo $alt
bosque $alt bosque $alt
boto $alt2 $noun boto $alt2 $noun
brejo $alt
bromelha $alt bromelha $alt
cabelo $alt2
cabresto $alt2 cabresto $alt2
cacete $alt2 cacete $alt2
cachorra $alt2 cachorra $alt2
caderneta $alt2 caderneta $alt2
cadete $alt2 cadete $alt2
camelo $alt2
camiseta $alt2 camiseta $alt2
cantora $alt2 cantora $alt2
capacete $alt2 capacete $alt2
caractere $alt caractere $alt
caramelo $alt
carbureto $alt2
careta $alt2 careta $alt2
carreta $alt2 carreta $alt2
carroça $alt carroça $alt
casebre $alt casebre $alt
castelo $alt
cateto $alt2 cateto $alt2
catorze $alt2 catorze $alt2
cebola $alt2 cebola $alt2
chamego $alt2 chamego $alt2
chefe $alt chefe $alt
checam $alt checam $alt
cheque $alt
chinelo $alt
choro $alt2 $noun choro $alt2 $noun
chovesse $alt2 chovesse $alt2
chupeta $alt2 chupeta $alt2
clero $alt clero $alt
coco $alt2 coco $alt2
cofre $alt cofre $alt
cogumelo $alt
coice $alt2 coice $alt2
colabore $alt colabore $alt
colete $alt2 colete $alt2
concertos $alt2 concertos $alt2
concordo $alt concordo $alt
conforto $alt $verb conforto $alt $verb
congelo $alt
consolo $alt2 $noun consolo $alt2 $noun
controle $alt2 $noun controle $alt2 $noun
controlo $alt2 $noun controlo $alt2 $noun
corveta $alt2 corveta $alt2
corvos $alt corvos $alt
coto $alt2 coto $alt2
cotovelo $alt2
cratera $alt cratera $alt
crede $alt2 crede $alt2
crepe $alt crepe $alt
decore $alt decore $alt
degelo $alt2
desapego $alt2 $noun desapego $alt2 $noun
descabelo $alt
descordo $alt descordo $alt
desemprego $alt2 desemprego $alt2
desemprego $alt $verb desemprego $alt $verb
desespero $alt2 $noun desespero $alt2 $noun
desfecho $alt2 desfecho $alt2
desmantelo $alt $verb
desmantelo $alt2 $noun
desporto $alt2
desportos $alt
desprezo $alt2 $noun desprezo $alt2 $noun
desse $alt2 desse $alt2
desse $alt $verb desse $alt $verb
deveras $alt deveras $alt
dez $alt dez $alt
diarreia $alt diarreia $alt
diego $alt2
discordo $alt discordo $alt
dobro $alt2 $noun dobro $alt2 $noun
doce $alt2 doce $alt2
doutora $alt2 doutora $alt2
droga $alt droga $alt
duelo $alt
dueto $alt2 dueto $alt2
elixir eliSir elixir eliSir
elo $alt
emprego $alt2 $noun emprego $alt2 $noun
empregos $alt2 empregos $alt2
encosto $alt $verb encosto $alt $verb
enxerto $alt2 $noun enxerto $alt2 $noun
epopeia $alt epopeia $alt
eritreia $alt eritreia $alt
erro $alt2 $noun
erros $alt2
erro $alt2
erro $alt $verb
esboço $alt $verb esboço $alt $verb
escopeta $alt2 escopeta $alt2
escova $alt2 $noun escova $alt2 $noun
escroto $alt2 escroto $alt2
esforço $alt $verb esforço $alt $verb
esforços $alt esforços $alt
esgoto $alt2 $noun
esgotos $alt2
esgoto $alt2
esgoto $alt $verb
esperma $alt esperma $alt
espeto $alt2 $noun espeto $alt2 $noun
espiroqueta $alt2 espiroqueta $alt2
explore $alt explore $alt
faceta $alt2 faceta $alt2
fantoche $alt fantoche $alt
farelo $alt
farofa $alt farofa $alt
febre $alt febre $alt
fera $alt fera $alt
fezes $alt fezes $alt
?1 fixe fiSy ?1 fixe fiSy
foda $alt2 $verb foda $alt2 $verb
folheto $alt2
folga $alt
fogos $alt fogos $alt
foguete $alt2 foguete $alt2
foice $alt2 foice $alt2
folheto $alt2
fora $alt fora $alt
fora $alt2 $verb fora $alt2 $verb
forca $alt2 forca $alt2
força $alt2 $noun força $alt2 $noun
forças $alt2 forças $alt2
forço $alt forço $alt
formos $alt2
forro $alt $verb forro $alt $verb
frevo $alt2 frevo $alt2
fulgores $alt2
galera $alt galera $alt
galileia $alt galileia $alt
gameta $alt2 gameta $alt2
geleia $alt geleia $alt
gelo $alt $verb
gelo $alt2
gelo $alt $verb
genebra $alt genebra $alt
germe $alt
gesso $alt2 gesso $alt2
golpe $alt golpe $alt
gonorreia $alt gonorreia $alt
lambreta $alt2 lambreta $alt2
lebre $alt lebre $alt
lembrete $alt2 lembrete $alt2
lepra $alt
leste $alt2 $verb leste $alt2 $verb
lingueta $alt2 lingueta $alt2
lopes $alt lopes $alt
macete $alt2 macete $alt2
maior $alt maior $alt
maleta $alt2 maleta $alt2
marcelo $alt
marmelo $alt
marreta $alt2 marreta $alt2
martelo $alt
megera $alt
melhor $alt melhor $alt
menor $alt menor $alt
merda $alt
megera $alt
melo $alt
mentora $alt2 mentora $alt2
merda $alt
meta $alt $noun meta $alt $noun
meteoro $alt meteoro $alt
metro $alt metro $alt
minueto $alt2 minueto $alt2
miolo $alt2 miolo $alt2
miolos $alt miolos $alt
modelo $alt2
modelo $alt $verb
moeda $alt moeda $alt
mofo $alt $verb mofo $alt $verb
molho $alt2 $noun molho $alt2 $noun
naquela $nounf naquela $nounf
naquele $alt2 $nounf naquele $alt2 $nounf
nervo $alt2 nervo $alt2
novelo $alt2
novos $alt novos $alt
obstetra $alt obstetra $alt
odisseia $alt odisseia $alt
pangeia $alt pangeia $alt
panqueca p,&~Nk'Ek& panqueca p,&~Nk'Ek&
pantera $alt pantera $alt
paralelo $alt
parede $alt2 parede $alt2
pastora $alt2 pastora $alt2
pedra $alt pedra $alt
pela $alt $verb pela $alt $verb
pelego $alt2 pelego $alt2
pela $alt $verb pela $alt $verb
pelo $alt $verb
pelo $alt2
pelo $alt $verb
peso $alt $verb peso $alt $verb
piloto $alt2 $noun piloto $alt2 $noun
pintora $alt2 pintora $alt2
reforços $alt reforços $alt
refresco $alt $verb refresco $alt $verb
reitora $alt2 reitora $alt2
rejo $alt
relevo $alt2 $noun relevo $alt2 $noun
remorso $alt remorso $alt
renovo $alt $verb renovo $alt $verb
retorno $alt $verb retorno $alt $verb
reuva $alt
rigores $alt2
rixa x'iS& rixa x'iS&
rocha $alt rocha $alt
rock $alt rock $alt
secas $alt2 secas $alt2
seco $alt2 seco $alt2
seco $alt $verb seco $alt $verb
selo $alt $verb
selo $alt2
selo $alt $verb
selvagem seUv'aZeIN selvagem seUv'aZeIN
sexteto $alt2 sexteto $alt2
?1 senhora $alt2 ?1 senhora $alt2
senhores $alt2 senhores $alt2
singelo $alt
sinopse $alt sinopse $alt
soco $alt2 soco $alt2
soco $alt $verb soco $alt $verb
toga $alt toga $alt
topo $alt $verb topo $alt $verb
torno $alt $verb torno $alt $verb
tornozelo $alt2
torre $alt2 $noun torre $alt2 $noun
torres $alt2 torres $alt2
torro $alt torro $alt
tumores $alt2 tumores $alt2
valeta $alt2 valeta $alt2
vanessa $alt2 vanessa $alt2
velo $alt
velozes $alt velozes $alt
verme $alt
violeta $alt2 violeta $alt2
violoncelo $alt violoncelo $alt
voga $alt voga $alt
vozes $alt vozes $alt
xarope $alt xarope $alt
xeque $alt
zelo $alt $verb
zelo $alt2 $noun
zero $alt zero $alt
zorra $alt2 zorra $alt2



+ 20
- 11
dictsource/pt_rules View File

e (guem_ E e (guem_ E


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


i) e (r_ E i) e (r_ E
f) e (re_ E f) e (re_ E
f) e (rem_ E f) e (rem_ E


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


e (rgue_ E
e (rguem_ E

e (rsA_ E e (rsA_ E
e (rsAm_ E e (rsAm_ E


e (stAm_ E e (stAm_ E
e (strA_ E e (strA_ E


e (rme_ E

e (rnA_ E e (rnA_ E
e (rnAm_ E e (rnAm_ E


tr) e (pL04_ E // es- tr) e (pL04_ E // es-
_dec) e (pL04_ E _dec) e (pL04_ E
_in) e (ptL03_ E _in) e (ptL03_ E
_p) e (quL02_ E
_s) e (quL02_ E
ad) e (quL04_ E ad) e (quL04_ E
l) e (que_ E
_imp) e (rL03_ E _imp) e (rL03_ E
_sev) e (rL03_ E _sev) e (rL03_ E
_reit) e (rL03_ E _reit) e (rL03_ E
_refrig) e (rL04_ E _refrig) e (rL04_ E
_v) e (rbL03_ E _v) e (rbL03_ E
_p) e (rdL02_ E _p) e (rdL02_ E
_ch) e (guL02_ e
_l) e (rdL03_ E _l) e (rdL03_ E
_h) e (rdL04_ 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 _inv) e (rtL03_ e
_f) e (rvL03_ e _f) e (rvL03_ e
_refr) e (scL01_ E _refr) e (scL01_ E
gu (Y g gu (Y g
a) gu (ent gw a) gu (ent gw
_ar) gu (i gw _ar) gu (i gw
averi) gu (e gw
enxa) gu (e gw enxa) gu (e gw
i) gu (idade gw
lin) gu (e gw lin) gu (e gw
lin) gu (i gw lin) gu (i gw
_min) gu (e gw
_pin) gu (im_ gw _pin) gu (im_ gw
_pin) gu (ins_ gw _pin) gu (ins_ gw
_sa) gu )i gw
_sa) gu (i gw
san) gu (ín gw san) gu (ín gw
san) gu (in gw san) gu (in gw
tin) gu (i gw
?1 n) gu (A gw // eg: língua, etc. ?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira ?1 man) gu (ei g // mangueira
?1 gu (ém_ g // eg: alguém, ninguém, etc... ?1 gu (ém_ g // eg: alguém, ninguém, etc...
//sort //sort
_f) o (L05_ o _f) o (L05_ o
_f) o (L07_ o _f) o (L07_ o
_engl) o (bL01_ O
_engl) o (bL04_ O
_s) o (bL02_ O _s) o (bL02_ O
_esn) o (bL04_ O _esn) o (bL04_ O
_af) o (bL04_ O
br) o (chL04_ O br) o (chL04_ O
_deb) o (chL04_ O _deb) o (chL04_ O
_m) o (fL01_ O _m) o (fL01_ O
_s) o (frL02_ O _s) o (frL02_ O
r) o (gL04_ O // inter- r) o (gL04_ O // inter-
_j) o (gL04_ O _j) o (gL04_ O
_emp) o (lgL04_ O
_f) o (lgL04_ O
_af) o (gL04_ O _af) o (gL04_ O
_adv) o (gL04_ O _adv) o (gL04_ O
_ref) o (gL04_ O _ref) o (gL04_ O

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

dictrules 3 6 dictrules 3 6
option reduce_t 1 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 stressAmp 17 16 19 19 19 19 21 19


replace 03 I i replace 03 I i

+ 105
- 161
phsource/ph_danish View File

// PB General rules for vowels: // PB General rules for vowels:
// Short 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@-] // A[N]: Short "bange" [b?AN@-]
// Long vowels // 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] // AC[i]: Long "smidig" [smi:Di]


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


phoneme i phoneme i
vowel starttype #i endtype #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 length 225
ENDIF ENDIF
// "gider", vrider" // "gider", vrider"
IF nextPhW(@-) OR nextPhW(V) THEN IF nextPhW(@-) OR nextPhW(V) THEN
length 225 length 225
ENDIF 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 // "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 140 length 140
// What is causing this very short [i] in words with final [@-]? // What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] // NOT "galleriet" [g,?&lVR'i@-D]
IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 240
// length 240
ENDIF ENDIF
//"skider" short //"skider" short
IF nextPhW(D) AND next2PhW(V) THEN IF nextPhW(D) AND next2PhW(V) THEN


phoneme e phoneme e
vowel starttype #e endtype #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 length 225
ENDIF ENDIF
// PB "ring", "ringe" // PB "ring", "ringe"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225 length 225
ENDIF 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 IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 140 length 140
ENDIF
// "et"
IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN
length 120
ENDIF ENDIF
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme
phoneme ?e phoneme ?e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 140 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) FMT(vowel/e)
endphoneme endphoneme


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


phoneme & phoneme &
vowel starttype #e endtype #e vowel starttype #e endtype #e
ipa a
length 140 //225
ipa æ
length 140
// "same", "sale", "bade" - consonant + @-: long // "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden" // but NOT "hinanden"
IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN
length 225 length 225
ENDIF ENDIF
// ThisPh + V or group #@
// ThisPh + V or @-
// "ae", "aer" vowel + vowel: extra length // "ae", "aer" vowel + vowel: extra length
IF nextPhW(@-) OR nextPhW(V) THEN IF nextPhW(@-) OR nextPhW(V) THEN
length 260 length 260
ENDIF 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] // "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
length 225
ENDIF ENDIF
// "Alfie", "alfer" - short before 2 consonants // "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
FMT(vowel/ee_2) FMT(vowel/ee_2)
endphoneme endphoneme


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


// PB added for the æ in "dræbt"
// Added for the æ in "dræbt"
phoneme &# phoneme &#
vowel starttype #e endtype #e 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/&) FMT(vowel/&)
endphoneme endphoneme


// "revl" vs. "tremme" // "revl" vs. "tremme"
phoneme ?&# phoneme ?&#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 140
length 120
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme


phoneme A // PB changed to a_8 phoneme A // PB changed to a_8
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 140 //225
length 140
// PB long vowel followed by consonant and certain vowels - "drabelig" // PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 225 length 225
ENDIF 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 // "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 140 length 140
IF nextPhW(A) THEN IF nextPhW(A) THEN
length 225 length 225
ENDIF ENDIF
// "av" [Au] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
// "gratis"
IF next2PhW(i) THEN
length 225
ENDIF 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 ENDIF
FMT(vowel/a_8) FMT(vowel/a_8)
endphoneme endphoneme
phoneme ?A phoneme ?A
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 140 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) FMT(vowel/a_8)
endphoneme endphoneme


phoneme u phoneme u
vowel starttype #u endtype #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" // "suge", "uge", "bluse", "julegave"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225 length 225
ENDIF ENDIF
// "umulig" [u:m'uli] // "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN 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 ENDIF
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme


// PB glottal u
// Short u
// "tude" vs. "tuden" - [tuD3] [t?uD@n] // "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u phoneme ?u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 140 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) FMT(vowel/u_bck)
endphoneme endphoneme


phoneme o phoneme o
vowel starttype #o endtype #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 length 225
ENDIF ENDIF
// "kone", "koner"
IF next2PhW(V) OR next2PhW(#@) THEN
// "kone", "koner" o + consonant + V or @-
IF next2PhW(V) OR next2PhW(@-) THEN
length 225 length 225
ENDIF ENDIF
// "modig" - long vowel after consonant + [i] // "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN IF nextPhW(D) AND next2PhW(i) THEN
length 225 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 ENDIF
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme


phoneme O phoneme O
vowel starttype #o endtype #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 IF next2PhW(@-) OR next2PhW(V) THEN
length 225 length 225
ENDIF ENDIF
ENDIF ENDIF
// "rådig" // "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN 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 ENDIF
// "såre", "sårede" [s'O:?OD@-] // "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN IF nextPhW(O) OR nextPhW(?O) THEN
phoneme ?O phoneme ?O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 140 length 140
// "hoven"
IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN
length 120
ENDIF
FMT(vowel/o_5) FMT(vowel/o_5)
endphoneme endphoneme


phoneme V phoneme V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 140 //225
length 140
// "forlig" // "forlig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
length 225
ENDIF ENDIF
// PB "konge" - ng=>n // PB "konge" - ng=>n
IF nextPhW(N) THEN 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 ENDIF
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme


// PB Short å
// PB Short V
// "forstår" vs. "kåre" // "forstår" vs. "kåre"
phoneme ?V phoneme ?V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@


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


phoneme ?y phoneme ?y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 140 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) FMT(vowel/y)
endphoneme endphoneme




phoneme W phoneme W
vowel starttype #@ endtype #@ 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 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 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 IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 140 length 140
ENDIF ENDIF
// PB "nødig", "nødigt", "kølige"
// PB "nødig", "nødigt", "kølige" - long
IF nextVowel(i) THEN IF nextVowel(i) THEN
length 160
length 225
ENDIF ENDIF
// "møve" [mWw@-]
// "møve" [mWw@-] - long
IF nextPhW(w) AND nextVowel(@-) THEN IF nextPhW(w) AND nextVowel(@-) THEN
length 160
ENDIF
// "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 225 length 225
ENDIF 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 ENDIF
// PB "synge" // PB "synge"
IF nextPhW(N) THEN IF nextPhW(N) THEN
phoneme ?W phoneme ?W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 140 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) FMT(vowel/oe)
endphoneme endphoneme


VowelEnding(l/l_a) VowelEnding(l/l_a)
VowelEnding(l/l_e, -50) // hjælpe VowelEnding(l/l_e, -50) // hjælpe
VowelEnding(l/l_i, -70) // flygte? 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) VowelEnding(l/l_u, -70)
EndSwitch EndSwitch


Vowelout len=70 Vowelout len=70
FMT(j/j_) FMT(j/j_)
ENDIF ENDIF
endphoneme
endphoneme

+ 27
- 0
phsource/ph_english View File

vowel starttype #a endtype #a vowel starttype #a endtype #a
ipa a ipa a
length 185 length 185
IF MbrolaSynth THEN
ChangePhoneme(A:)
ENDIF

IfNextVowelAppend(r-) IfNextVowelAppend(r-)
FMT(vowel/a) FMT(vowel/a)
endphoneme endphoneme
vowel starttype #i endtype #i vowel starttype #i endtype #i
unstressed unstressed
length 130 length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF

IfNextVowelAppend(;) IfNextVowelAppend(;)
FMT(vowel/ii_4) FMT(vowel/ii_4)
endphoneme endphoneme



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

IfNextVowelAppend(;) IfNextVowelAppend(;)
ChangePhoneme(I2) ChangePhoneme(I2)
endphoneme endphoneme



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

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

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

+ 7
- 6
phsource/ph_english_us View File



phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 195
length 190
ChangeIfDiminished(I2) ChangeIfDiminished(I2)
FMT(vwl_en_us/ee) FMT(vwl_en_us/ee)
endphoneme endphoneme


phoneme O: phoneme O:
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 210
length 200
ChangeIfDiminished(@) ChangeIfDiminished(@)
IF nextPh(r) THEN IF nextPh(r) THEN
FMT(vwl_en_us/oor) FMT(vwl_en_us/oor)


phoneme aI phoneme aI
vowel starttype #a endtype #i vowel starttype #a endtype #i
length 250
length 240
IF nextPh(#a) OR nextPh(#o) THEN IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;) AppendPhoneme(;)
ENDIF ENDIF


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




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



+ 10
- 10
phsource/ph_portugal View File



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


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


phoneme y phoneme y
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 110
length 130
ipa ɨ ipa ɨ
FMT(vowel/i#_5) FMT(vowel/i#_5)
endphoneme endphoneme


phoneme i phoneme i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 150
length 170
IfNextVowelAppend(;) IfNextVowelAppend(;)
FMT(vowel/i) FMT(vowel/i)
endphoneme endphoneme


phoneme i/ // changes to NULL before a vowel phoneme i/ // changes to NULL before a vowel
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 100
length 130
ipa ɨ ipa ɨ
IF nextPh(isVowel) THEN IF nextPh(isVowel) THEN
ChangePhoneme(NULL) ChangePhoneme(NULL)


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 170
length 180
// ChangeIfNotStressed(o) // ChangeIfNotStressed(o)
FMT(vowel/0_2) FMT(vowel/0_2)
endphoneme endphoneme


phoneme o phoneme o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 170
length 180
ChangeIfNotStressed(u) ChangeIfNotStressed(u)
FMT(vowel/o) FMT(vowel/o)
endphoneme endphoneme


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


phoneme U phoneme U
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 110
length 130
IF nextPh(isVowel) THEN IF nextPh(isVowel) THEN
ChangePhoneme(w) ChangePhoneme(w)
ENDIF ENDIF


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



+ 2
- 2
src/compiledata.cpp View File

break; break;


case i_ADD_LENGTH: 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(); DecThenCount();
break; break;



+ 20
- 2
src/dictionary.cpp View File

} // end of LookupDictList } // 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 Lookup(Translator *tr, const char *word, char *ph_out)
{//=================================================== {//===================================================
int found;
unsigned int flags[2]; unsigned int flags[2];
int say_as;
char *word1 = (char *)word;
char text[80];

flags[0] = 0; flags[0] = 0;
flags[1] = FLAG_LOOKUP_SYMBOL; 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) int LookupFlags(Translator *tr, const char *word)
{//============================================== {//==============================================
char buf[100]; char buf[100];

+ 1
- 1
src/numbers.cpp View File

current_alphabet = alphabet; current_alphabet = alphabet;
if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset)) 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 // don't say the alphabet name
} }

+ 11
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.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; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;
phdata->pd_param[i_APPEND_PHONEME] = data; phdata->pd_param[i_APPEND_PHONEME] = data;
} }
else 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) if(instn2 == i_IPA_NAME)
{ {
// followed by utf-8 characters, 2 per instn word // followed by utf-8 characters, 2 per instn word

+ 8
- 4
src/tr_languages.cpp View File



// character codes offset by 0x380 // 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_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 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); SetupTranslator(tr,stress_lengths_el,stress_amps_el);


SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels); SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels);
SetLetterBits(tr,LETTERGP_B,el_voiceless); SetLetterBits(tr,LETTERGP_B,el_voiceless);
SetLetterBits(tr,LETTERGP_C,el_consonants); 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.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.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.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.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards
tr->langopts.replace_chars = replace_cyrillic_latin; 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,'y');
SetLetterVowel(tr,'r'); SetLetterVowel(tr,'r');
static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N 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->letter_bits_offset = OFFSET_KOREAN;
tr->langopts.our_alphabet = 0xa700;
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
SetLetterBits(tr,LETTERGP_Y,ko_ivowels); SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
SetupTranslator(tr,stress_lengths_mk,stress_amps_mk); SetupTranslator(tr,stress_lengths_mk,stress_amps_mk);
tr->charset_a0 = charsets[5]; // ISO-8859-5 tr->charset_a0 = charsets[5]; // ISO-8859-5
tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic; 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.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; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | 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.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->langopts.ideographs = 1; 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 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')) if(name2 == L('z','h'))
{ {

+ 1
- 0
src/translate.h View File

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
char ascii_language[8]; // switch to this language for Latin characters 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; // offset for another language to recognize
int alt_alphabet_lang; // language for the alt_alphabet int alt_alphabet_lang; // language for the alt_alphabet
int max_lengthmod; int max_lengthmod;

Loading…
Cancel
Save