Browse Source

[1.41.32]

lang=hu, ordinal number fixes
--punct, changes to intonation of punctuation names.
Add language option: don't stress second part of hyphenated words.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@230 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 15 years ago
parent
commit
f2eed5229e
51 changed files with 2528 additions and 1608 deletions
  1. 65
    24
      dictsource/af_list
  2. 84
    16
      dictsource/af_rules
  3. 12
    4
      dictsource/da_list
  4. 703
    574
      dictsource/da_rules
  5. 385
    384
      dictsource/dict_phonemes
  6. 7
    6
      dictsource/en_list
  7. 17
    7
      dictsource/en_rules
  8. 8
    9
      dictsource/fr_list
  9. 1
    0
      dictsource/fr_rules
  10. 424
    149
      dictsource/hu_list
  11. 118
    37
      dictsource/hu_rules
  12. 4
    1
      dictsource/jbo_rules
  13. 7
    42
      dictsource/ta_list
  14. 114
    11
      dictsource/ta_rules
  15. 16
    9
      phsource/compile_report
  16. BIN
      phsource/n/_nr
  17. BIN
      phsource/n/nr_
  18. 17
    8
      phsource/ph_danish
  19. 3
    3
      phsource/ph_english
  20. 6
    6
      phsource/ph_english_us
  21. 1
    1
      phsource/ph_polish
  22. 2
    2
      phsource/ph_tamil
  23. 6
    1
      phsource/phonemes
  24. BIN
      phsource/vdiph/aoo
  25. BIN
      phsource/vnasal/oo_n
  26. BIN
      phsource/vnasal/oo_n2
  27. BIN
      phsource/vowel/ii_final
  28. BIN
      phsource/vwl_en/aU@
  29. BIN
      phsource/vwl_en_us/ar
  30. BIN
      phsource/vwl_en_us/er
  31. BIN
      phsource/vwl_en_us/ir
  32. 1
    0
      platforms/windows/espeakedit/src/speech.h
  33. 1
    0
      platforms/windows/espeakedit/src_copy/speech.h
  34. 1
    0
      platforms/windows/windows_cmd/src/speech.h
  35. 1
    0
      platforms/windows/windows_sapi/src/speech.h
  36. 1
    3
      src/compiledict.cpp
  37. 1
    1
      src/debug.h
  38. 21
    10
      src/dictionary.cpp
  39. 92
    19
      src/espeak.cpp
  40. 0
    25
      src/espeakedit.cpp
  41. 1
    1
      src/intonation.cpp
  42. 180
    114
      src/numbers.cpp
  43. 23
    23
      src/phonemelist.cpp
  44. 105
    54
      src/readclause.cpp
  45. 6
    0
      src/speech.h
  46. 1
    1
      src/synthdata.cpp
  47. 7
    0
      src/synthesize.cpp
  48. 4
    2
      src/tr_languages.cpp
  49. 37
    25
      src/translate.cpp
  50. 23
    13
      src/translate.h
  51. 22
    23
      src/voices.cpp

+ 65
- 24
dictsource/af_list View File

(thaba nchu) tab'A:||ntSu (thaba nchu) tab'A:||ntSu
europa Y@r'o@pa europa Y@r'o@pa
nigel _^_EN nigel _^_EN
nineve nIn@fi
outeniekwa @Ut@n'ikwa outeniekwa @Ut@n'ikwa
oxford _^_EN oxford _^_EN
pelindaba p&l@nd'A:ba pelindaba p&l@nd'A:ba
André 'andreI André 'andreI
annette an'Et annette an'Et
antoinette antun'Et antoinette antun'Et
aristoteles arist'o@t@lEs
badenhorst bA:d@nhOrst
barbara bA:b@ra barbara bA:b@ra
basson $2 basson $2
bea bi:ja bea bi:ja
belcher _^_EN
benade b@nA:di benade b@nA:di
benjamin bEndZ@m@n benjamin bEndZ@m@n
bennett bEn@t bennett bEn@t
beyers beI@rs beyers beI@rs
blignault blIx2n@Ut blignault blIx2n@Ut
blomerus blum'e@rWs blomerus blum'e@rWs
blum blum
botha bo@ta botha bo@ta
bouwer b@U@r bouwer b@U@r
brian _^_EN brian _^_EN
bruwer bruw'&:r bruwer bruw'&:r
caesar siz@r caesar siz@r
carl kA:r@L carl kA:r@L
carol _^_EN
casanova kasan'o@va casanova kasan'o@va
cecil sEs@l cecil sEs@l
cecile s@si:l cecile s@si:l
charlie tSA:li charlie tSA:li
charmaine SA:m'eI:n charmaine SA:m'eI:n
chopin S%OpA~ chopin S%OpA~
clark _^_EN
conradie $2 conradie $2
chris krIs chris krIs
christo krIstu christo krIstu
cindy sIndi cindy sIndi
coetzee kuts'e@ coetzee kuts'e@
cronjé krOnj'e@ cronjé krOnj'e@
cussons kas@ns
cynthia _^_EN cynthia _^_EN
dalene dal'e@n dalene dal'e@n
daniël d'A:ni:@l
#zzz
darwin _^_EN darwin _^_EN
daniël d'A:ni:@l
david _^_EN david _^_EN
(da vinci) da||v'intSi (da vinci) da||v'intSi
debora d@bo@ra debora d@bo@ra
elsabe &ls@bi elsabe &ls@bi
elsabé &ls@bi elsabé &ls@bi
emmarentia Emar'e~nSja emmarentia Emar'e~nSja
engelbrecht EN@lbr&x2t
erasmus $2 erasmus $2
ernest _^_EN ernest _^_EN
esegiël is'e@x2i:@l
esegiël is'e@x2i: @l
estelle %ist&l estelle %ist&l
etienne Eti@n etienne Eti@n
eugene judZ'i:n eugene judZ'i:n
eugène yZ'En eugène yZ'En
farao fA:ro@ farao fA:ro@
ferreira f@r&:r@ ferreira f@r&:r@
filemon f'il@mOn
filemon f'il@mOn
fischer fiS@r fischer fiS@r
floris $1
fouché fuS'e@
fourie fur'i fourie fur'i
francina $2 francina $2
francois franSwa francois franSwa
gerhard x2&rart gerhard x2&rart
gerhardus $2 gerhardus $2
gertruida $2 gertruida $2
gilbert _^_EN
gloria glO:ria gloria glO:ria
grange x2rA:nsi grange x2rA:nsi
grové x2ruv'e@ grové x2ruv'e@
isabel is@b&l isabel is@b&l
iskariot isk'ariOt iskariot isk'ariOt
jaco jaku jaco jaku
jacques ZA:k
james _^_EN james _^_EN
jane _^_EN jane _^_EN
Jean ZA~n $capital Jean ZA~n $capital
jimmy _^_EN jimmy _^_EN
joan _^_EN joan _^_EN
joey dZ@Ui joey dZ@Ui
johl jo@l
jones _^_EN jones _^_EN
jordaan $2 jordaan $2
joris $1
josef jo@s@f josef jo@s@f
josephina jo@s@f'ina
juanita juan'ita juanita juan'ita
julia _^_EN julia _^_EN
khayyam kaj'am
kelvin _^_EN kelvin _^_EN
kim _^_EN $capital kim _^_EN $capital
krige krix2@ krige krix2@
liesbet lisbEt liesbet lisbEt
louis luI louis luI
louise luw'i:z louise luw'i:z
lukas l'ukas
mackintosh _^_EN mackintosh _^_EN
madelene mad@l'e@n madelene mad@l'e@n
mbeki mbE:ki mbeki mbE:ki
madelene mad@l'e@n
magdalena $3 magdalena $3
malan mal'an malan mal'an
malherbe mal'&rb@ malherbe mal'&rb@
neil _^_EN neil _^_EN
nelson _^_EN nelson _^_EN
niklaas niklA:s niklaas niklA:s
olga Olga
ontong OntON ontong OntON
phillips fIl@ps phillips fIl@ps
pierre p'e@r pierre p'e@r
petrus pe@trWs petrus pe@trWs
phoebe fi:bi phoebe fi:bi
picasso pik'asu picasso pik'asu
piketberg pik'Etb&rx2
pinokkio pin'Oki;u
pretorius pr@to@riWs
quixote kix2'OtE quixote kix2'OtE
rachmaninoff rax2m'aninOf rachmaninoff rax2m'aninOf
rademeyer rA:d@meI@r rademeyer rA:d@meI@r
rall rA:l
rebekka r@bEka rebekka r@bEka
reinette r@nEt reinette r@nEt
renette r@nEt renette r@nEt
retha re@ta retha re@ta
retief r@tif retief r@tif
rhodes _^_EN rhodes _^_EN
riekert rik@rt
robert _^_EN robert _^_EN
ronel run'&l ronel run'&l
rossouw r@s@U rossouw r@s@U
salomo sA:l@mo@ salomo sA:l@mo@
samuel sA:my@l samuel sA:my@l
sandra sandra sandra sandra
sappho sapfu
schalk sk'alk schalk sk'alk
scheepers ske@p@rs scheepers ske@p@rs
schmidt Smit schmidt Smit
sebastian s@bastian sebastian s@bastian
servaas s@rfA:s servaas s@rfA:s
shakespeare _^_EN shakespeare _^_EN
sheila Si:la
sigmund sigmunt sigmund sigmunt
sophia suf'i:ja sophia suf'i:ja
sophie _^_EN sophie _^_EN
stephan ste@fan stephan ste@fan
stephanus st@fA:nWs stephanus st@fA:nWs
strauss straUs strauss straUs
stockenström stOk@nstro@m
suzanne suz'A:n suzanne suz'A:n
suzette suz'Et suzette suz'Et
tania tanja tania tanja
terblanche t@rblA:nS terblanche t@rblA:nS
theo tiu theo tiu
theron tr'On theron tr'On
timotheus t@m'o@tiWs
thessalonicense tEsalo@nis'E:ns@
thys teIs thys teIs
timotheus t@m'o@tiWs
toerien $2 toerien $2
totius to@SiWs totius to@SiWs
trudie trudi trudie trudi
violet _^_EN $capital violet _^_EN $capital
visagie fis'A:x2i visagie fis'A:x2i
william _^_EN william _^_EN
wilson _^_EN
yolande jul'and@ yolande jul'and@
yvonne iv'On yvonne iv'On
zyl seIl zyl seIl
naspers nasp&rs naspers nasp&rs
peugeot pW:Z@U peugeot pW:Z@U
(pick n pay) p,ik||@n||p'eI (pick n pay) p,ik||@n||p'eI
porsche pOrS@
port pOrt $1 port pOrt $1
rover _^_EN rover _^_EN
sotho su:tu sotho su:tu
thessalonicense tEsalo@nis'Ens@
toyota $2 toyota $2
venda vEnda venda vEnda
volvo vOlvu volvo vOlvu
wimpy wImpi wimpy wImpi
// some Bible names
levitikus $2
deuteronomium dY@t@ro@n'o@miWm
josua j'o@Sia
jesaja $2
jeremia j%e@r@m'ia
hosea hus'i:a
amos 'A:mOs
obadja o@b'atja
miga m'ix2a
habakuk h'abakWk
sefanja s@f'anja
sagaria sax2ar'ia
maleagi $3

// Some Bible names
amos 'A:mOs
deuteronomium dY@t@ro@n'o@miWm
habakuk h'abakWk
hosea hus'i:a
jeremia j%e@r@m'ia
jesaja $2
josua j'o@Sia
levitikus $2
maleagi $3
miga m'ix2a
obadja o@b'atja
sagaria sax2ar'ia
sefanja s@f'anja


// article // article


almiskie $3 almiskie $3
alom al_'Om alom al_'Om
alreeds $2 alreeds $2
alternatiewe $4
altemit $3
amelee am@le@ amelee am@le@
amen A:mEn amen A:mEn
anale an'A:l@ anale an'A:l@
casino kas'i:n@U casino kas'i:n@U
cedille s@dIl@ cedille s@dIl@
charisma kar'Isma charisma kar'Isma
clichés kliS'eI:s
cliché kliS'eI: cliché kliS'eI:
crescendo kr@SEndu crescendo kr@SEndu


dadelik dA:d@lIk dadelik dA:d@lIk
dagorde dax2_Ord@
darem dar@m darem dar@m
dekade dEk'A:d@ dekade dEk'A:d@
dekreling dEkre@l@N dekreling dEkre@l@N
g'n x2In g'n x2In
gaandeweg x2A:nd@v&x2 gaandeweg x2A:nd@v&x2
garages g@rA:dZ@s garages g@rA:dZ@s
gebrokener x2@bro@k@n@r
gee x2e@ gee x2e@
geen x2e@n geen x2e@n
geldelike x2&ld@l@k@ geldelike x2&ld@l@k@
genade $2 genade $2
genesis x2e@n@s@s genesis x2e@n@s@s
//gesamentlik x2@sA:m@ntl@k //gesamentlik x2@sA:m@ntl@k
gewellys x2e@v@lleIs
gladiator x2ladi'A:tOr gladiator x2ladi'A:tOr
globale x2lo@b'A:l@ globale x2lo@b'A:l@
gooi x2OI gooi x2OI
hanou hA:n@U hanou hA:n@U
hardop hart?Op hardop hart?Op
heeltemal he@lt@mal heeltemal he@lt@mal
heimat haImat
hek h&k hek h&k
hekke h&k@ hekke h&k@
helaas he@l'A:s helaas he@l'A:s
lokaas lOk_A:s lokaas lOk_A:s
londense lOnd@ns@ londense lOnd@ns@
lord _^_EN lord _^_EN
luidop lYyt_Op


macaroni makar'o@ni macaroni makar'o@ni
madame mad'A:m madame mad'A:m
namate $2 namate $2
negeer n@x2e@r negeer n@x2e@r
negering n@x2e@r@N negering n@x2e@r@N
negester ne@x2@st&r
netjies nE:icis netjies nE:icis
netjiese nEicis@ netjiese nEicis@
netsowel nEtso@v&l netsowel nEtso@v&l
nikswerd nIksv&:rt nikswerd nIksv&:rt
nimmermeer $1 nimmermeer $1
nirvana n@rvA:na nirvana n@rvA:na
nogeens nOx2_e@ns
normale nOrm'A:l@ normale nOrm'A:l@
numeri nWm@ri numeri nWm@ri


ongelyk $1 ongelyk $1
ongemak $1 ongemak $1
ongerief $1 ongerief $1
ongeriefie $1
ongewens $1 ongewens $1
ongewensde $3 ongewensde $3
ongewoons $1 ongewoons $1
parte $1 parte $1
patos pA:tOs patos pA:tOs
patriotisme patri|ut'Ism@ patriotisme patri|ut'Ism@
pedaledemping p@dA:l@dEmp@N
penorent pEno@rEnt penorent pEno@rEnt
per p@r $only per p@r $only
persent p@rsEnt persent p@rsEnt
petite p@tit petite p@tit
pinotage pinut'A:Z pinotage pinut'A:Z
pirouette p@ru:'Et pirouette p@ru:'Et
plaasjaap plA:sjA:p
plasenta plas'Enta plasenta plas'Enta
poinsettia pOIns'Etia
primate $2 primate $2
(pro forma) pro@||f'Orma (pro forma) pro@||f'Orma


retoriek r@tur'ik retoriek r@tur'ik
rimpeling rImp@l@N rimpeling rImp@l@N
rinkink $2 rinkink $2
rondeel $2
rooipers roIp&:rs rooipers roIp&:rs
roterende rut'e@r@nd@ roterende rut'e@r@nd@
rottenes rOt@nEs rottenes rOt@nEs
sonore sun'o@r@ sonore sun'o@r@
sover so@f&r sover so@f&r
staccato $2 staccato $2
sterwens st&rv@ns
stilswye $1 stilswye $1
subiet sWb'it
suburbia sWb'Wrbija suburbia sWb'Wrbija
swangerswaar swaN@rswA:r


tanga taNga tanga taNga
tango taNx2u tango taNx2u
verdere f&rd@r@ verdere f&rd@r@
vererger f@r&rg@r vererger f@r&rg@r
ver f'&:r ver f'&:r
vereduifie fe@r@dYyfi
verg f&rx2 verg f&rx2
vergeleë f&:rx2@l,e@@ vergeleë f&:rx2@l,e@@
vergete f@rx2e@t@ vergete f@rx2e@t@

+ 84
- 16
dictsource/af_rules View File

adole (ssen %ad%o@l@ // fix stress and vowel sounds: adolessent/-e/-adolessensie adole (ssen %ad%o@l@ // fix stress and vowel sounds: adolessent/-e/-adolessensie
ad (vies %at // move default stress: advies/-brief/-komitee and many similar ad (vies %at // move default stress: advies/-brief/-komitee and many similar


af (gunstig %af // move default stress: afgunstig/-e
C) agie A:x2i C) agie A:x2i
a (gitA %a // fix a sound: agitasie/(ge)agiteer a (gitA %a // fix a sound: agitasie/(ge)agiteer
agte (los %ax2t@ // move default stress: agtelosig/-e/-heid
agte (losig %ax2t@ // move default stress: agtelosig/-e/-heid
agter (dogt %ax2t@r // move default stress: agterdogtig and derivatives agter (dogt %ax2t@r // move default stress: agterdogtig and derivatives
agtereen (volg %ax2t@r_%e@n // move default stress: agtereenvolgend/-e/-ens agtereen (volg %ax2t@r_%e@n // move default stress: agtereenvolgend/-e/-ens
agter (oor %ax2t@r_ // move default stress: agteroor/-buig/-druk/-val, etc. agter (oor %ax2t@r_ // move default stress: agteroor/-buig/-druk/-val, etc.
@@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc. @@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc.
amarula %am%arul%a // fix stress and a sounds: amarula and compounds amarula %am%arul%a // fix stress and a sounds: amarula and compounds
a (ment %a // shorten a sound: perkament/testament and compounds a (ment %a // shorten a sound: perkament/testament and compounds
arends A:r@nts_ // fix e sound: arendsoog/-kloue/-nes
argen (tA %arx2@n // move default stress: Argentinië/Argentyns/-e argen (tA %arx2@n // move default stress: Argentinië/Argentyns/-e
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties
C%C) asie A:si // restore default stress: bok-/dikmelkkasie and similar C%C) asie A:si // restore default stress: bok-/dikmelkkasie and similar
oub) asie A:si // restore default stress: oubasie/-s oub) asie A:si // restore default stress: oubasie/-s
@form) asie A:si // restore default stress to compounds ending in -formasie: graniet-/grond-/rotsformasie, etc. @form) asie A:si // restore default stress to compounds ending in -formasie: graniet-/grond-/rotsformasie, etc.
gl) asie A:si // restore default stress: wyn-/sjampanjeglasie, etc.
pl) asie A:s%i // restore default stress: gemeenplasies/gemeenskapsplasies and similar pl) asie A:s%i // restore default stress: gemeenplasies/gemeenskapsplasies and similar
Csp) asie A:s%i // restore default stress: vloer/kantoorspasie, etc. Csp) asie A:s%i // restore default stress: vloer/kantoorspasie, etc.
Cst) asie A:si // restore default stress: brandweer/spoorwegstasie and similar Cst) asie A:si // restore default stress: brandweer/spoorwegstasie and similar
_k) a (nA %a //kanon and others _k) a (nA %a //kanon and others


apart %apart // fix stress: (bus-/klein)apartheid apart %apart // fix stress: (bus-/klein)apartheid
aphro (dit %afr%u // fix stress and ph and o sounds: Aphrodite/-dities
_) a (po %a // apollo/apostel _) a (po %a // apollo/apostel
apo (krieC %ap%u // fix stress and vowel sounds: apokrief/-iewe apo (krieC %ap%u // fix stress and vowel sounds: apokrief/-iewe
a (politi %A: // lengthen a sound: apolitiek/apolities/-e a (politi %A: // lengthen a sound: apolitiek/apolities/-e
ar (gaï %ar // move default stress: argaïes/-e ar (gaï %ar // move default stress: argaïes/-e
arge (tip %arx2@ // move default stress: argetipe/argetipies/-e arge (tip %arx2@ // move default stress: argetipe/argetipies/-e
ar (moedig %ar // move default stress: armoedig/-e/-heid ar (moedig %ar // move default stress: armoedig/-e/-heid
arm (salig %ar@-m // move default stress: armsalig/-e/-heid/-ste
_) arte (ri %arte@ // fix stress and e sound: arterie/-ë/-s _) arte (ri %arte@ // fix stress and e sound: arterie/-ë/-s
_) asbes %asbEs // fix stress and e sound: asbes and many compounds _) asbes %asbEs // fix stress and e sound: asbes and many compounds
a (siel %a // shorten a sound and move default stress: asiel and compounds a (siel %a // shorten a sound and move default stress: asiel and compounds
_) afge (@P4 'afx2@ // stress on 1st slb _) afge (@P4 'afx2@ // stress on 1st slb
afgryslik %afx2reIsl@k // move default stress: afgryslik and derivatives vs. afgrys/-e afgryslik %afx2reIsl@k // move default stress: afgryslik and derivatives vs. afgrys/-e
af (hank %af // move default stress: afhanklik/-e/-heid, etc. af (hank %af // move default stress: afhanklik/-e/-heid, etc.
_) af (kerig %af // move stress: afkerig/-e/-heid
_) af (komstig %af // move default stress: afkomstig _) af (komstig %af // move default stress: afkomstig
afrik (aan %afr%ik // exception to af prefix and move stress to end afrik (aan %afr%ik // exception to af prefix and move stress to end
afrikane (K %afr%ikA:n@ // move stress to end: Afrikaner and compounds afrikane (K %afr%ikA:n@ // move stress to end: Afrikaner and compounds
afrika A:frika //Stress and 1st a sound: Afrika and compounds: Afrikatale/-state... afrika A:frika //Stress and 1st a sound: Afrika and compounds: Afrikatale/-state...
afro (dit %afr%u // alternate spelling: Afrodite/-dities
af (sigte %af // move default stress: afsigtelik/-e/-heid af (sigte %af // move default stress: afsigtelik/-e/-heid
af (skuw %af // move default stress: afskuwelik and derivatives vs afsku af (skuw %af // move default stress: afskuwelik and derivatives vs afsku
afsonderl %afsOn@rl // stress, avoid af_ prefix and -lik suffix: afsonderlik/-e/-heid afsonderl %afsOn@rl // stress, avoid af_ prefix and -lik suffix: afsonderlik/-e/-heid
afwesig %afve@s@x2 // to steer clear of pre- and suffixes afwesig %afve@s@x2 // to steer clear of pre- and suffixes
af (wagten %af // move default stress: afwagtend/-e af (wagten %af // move default stress: afwagtend/-e
agenda %ax2End%a // fix stress and 1st a sound: agenda/-s/-punt, etc. agenda %ax2End%a // fix stress and 1st a sound: agenda/-s/-punt, etc.
age (rend %ax2e@ // fix stress and vowel sounds: agerend/-e
a (gonie %a // fix 1st a sound and move default stress: agonies/-e a (gonie %a // fix 1st a sound and move default stress: agonies/-e
agonie (_N %ax2%uni // move stress to end: agonie agonie (_N %ax2%uni // move stress to end: agonie
agter (bak %ax2t@r // fix stress: agterbaks/-e/-heid agter (bak %ax2t@r // fix stress: agterbaks/-e/-heid
aan (grensen %A:n // move default stress: aangrensend/-e aan (grensen %A:n // move default stress: aangrensend/-e
aan (grypend %A:n // fix stress: aangrypend/-e aan (grypend %A:n // fix stress: aangrypend/-e
aan (hangig %A:n // move default stress: aanhangig vs. aanhang aan (hangig %A:n // move default stress: aanhangig vs. aanhang
aan (hank %A:n // move default stress: aanhanklik/-e/-heid
aan (houden %A:n // move default stress: aanhoudend/-e aan (houden %A:n // move default stress: aanhoudend/-e
aan (lok %A:n // move default stress: aanloklik/-heid aan (lok %A:n // move default stress: aanloklik/-heid
aan (lok_N A:n // restore default stress: aanlok aan (lok_N A:n // restore default stress: aanlok
bloed (stol bl%ut // move default stress: bloedstollend/-e bloed (stol bl%ut // move default stress: bloedstollend/-e
_) blo (kka bl%O // move default stress: blokkade/-s and compounds _) blo (kka bl%O // move default stress: blokkade/-s and compounds
_) blo (kkeer bl%O // move default stress: (ge)blokkeer/-der, etc. _) blo (kkeer bl%O // move default stress: (ge)blokkeer/-der, etc.
blom (akker blOm_ // fix O sound, pause: blomakker/-s and compounds
blon (dine bl%On // move default stress: blondine/-s blon (dine bl%On // move default stress: blondine/-s
bly (moed bl%eI // move default stress: blymoedig/-e/-heid bly (moed bl%eI // move default stress: blymoedig/-e/-heid
bo (botie b%u // fix stress and 1st o sound: bobotie and compounds bo (botie b%u // fix stress and 1st o sound: bobotie and compounds
_) deli (ka d%El%i // delikaat/delikate _) deli (ka d%El%i // delikaat/delikate
delika (tess d%El%ik%a // move default stress: delikatesse/-s delika (tess d%El%ik%a // move default stress: delikatesse/-s
deli (rium d@lI // fix stress and vowel sounds: delirium and compounds deli (rium d@lI // fix stress and vowel sounds: delirium and compounds
delphinium d%&lfini;Wm // fix stress and ph sound: delphinium and compounds
@) dend (er d@nd // beduidender/behoudender @) dend (er d@nd // beduidender/behoudender
_) den (dri d%En // dendriet/-e/dendrities/-e _) den (dri d%En // dendriet/-e/dendrities/-e
@C) derm (K d&r@-m // fix e sound of derm in compounds: nersdermklier/slukdermsiekte, etc. @C) derm (K d&r@-m // fix e sound of derm in compounds: nersdermklier/slukdermsiekte, etc.
@) dderd (_ d@rt // ontredderd, se rule: dd d @) dderd (_ d@rt // ontredderd, se rule: dd d
_) derge d&rx2@ // dergelik/-e _) derge d&rx2@ // dergelik/-e
@) de (rosie t_%e@ // fix e sound, pause: winderosie/tyderosie and similar
desibel dEsib&l // fix vowel sounds: desibel/-s desibel dEsib&l // fix vowel sounds: desibel/-s
de (skun d%E //deskundig/e in compounds de (skun d%E //deskundig/e in compounds
_) des (po d%Es // move default stress: despoot/despote _) des (po d%Es // move default stress: despoot/despote
digi (ta d%ix2%i // move default stress: digitaal/digitale digi (ta d%ix2%i // move default stress: digitaal/digitale
di (gK dI // force default stress: GEDIG/-TE/digbundel/digvorm, etc. di (gK dI // force default stress: GEDIG/-TE/digbundel/digvorm, etc.
digtere (K d@x2t@rE // move default stress: digteres/-se digtere (K d@x2t@rE // move default stress: digteres/-se
dik (vell d@k // move default stress: dikvellig/-e/-heid
dilemma d@lEma // dilemma and compounds dilemma d@lEma // dilemma and compounds
dimen (si d@mEn // fix stress and 1st i sound: (ontwikkelings)dimensie, etc./-dimensioneel/-ele dimen (si d@mEn // fix stress and 1st i sound: (ontwikkelings)dimensie, etc./-dimensioneel/-ele
di (namie d%i // move default stress: dinamies/-e di (namie d%i // move default stress: dinamies/-e
dis (koers d@s // move default stress: diskoers/-e dis (koers d@s // move default stress: diskoers/-e
diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre
_) dis (kre d@s // move default stress: diskreet/-heid/-ste/diskrete _) dis (kre d@s // move default stress: diskreet/-heid/-ste/diskrete
_) dis (kussA d@s // move default stress: diskussie/-s/diskusseer
dis (loja d@s // move default stress: dislojaal/-lojale/-lojaliteit dis (loja d@s // move default stress: dislojaal/-lojale/-lojaliteit
_) dis (oP3 d@s // disorganisasie/disoriënteer _) dis (oP3 d@s // disorganisasie/disoriënteer
dis (pu d@s // move default stress: dispuut/dispute dis (pu d@s // move default stress: dispuut/dispute
distro (fie d@str%u // fix stress and o sound: (spier)distrofie, etc. distro (fie d@str%u // fix stress and o sound: (spier)distrofie, etc.
divide (nd d@v@dE //dividende etc. divide (nd d@v@dE //dividende etc.
d (_N t //
d (_ t //
dj c // palatal stop dj c // palatal stop
_) dj dZ // regional: djy/djou/djulle, etc. _) dj dZ // regional: djy/djou/djulle, etc.


@) d (roos t // fix d sound: draadrooster/maand-/strand-/veldroos @) d (roos t // fix d sound: draadrooster/maand-/strand-/veldroos
@) d (rose_ t // fix d sound: maand-/strand-/veldrose @) d (rose_ t // fix d sound: maand-/strand-/veldrose
@) d (rosie t // fix d sound: maand-/strand-/veldrosie/-s @) d (rosie t // fix d sound: maand-/strand-/veldrosie/-s
_) drukke (ry dr%Wk@ // move default stress: drukkery and compounds
@) d (t // drop d: breedte/handtekening/rondte/rondtrek... @) d (t // drop d: breedte/handtekening/rondte/rondtrek...
du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc. du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc.
@n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar @n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar
verby) dw dw // fix d sound: verbydwarrel/-dwaal/-dwing
dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm
dw (erg dw // fix d sound: tuindwerg/-e/-ie dw (erg dw // fix d sound: tuindwerg/-e/-ie
@) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e @) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese
vreugd) e (C @ // fix e sound: vreugdefees/-klokkies/-lied/-tyd...
vriend) e (C @ // fix e sound: vriendepaar/-woorde
juwel) e (C @ // fix e sound: juwelekissie and similar compounds juwel) e (C @ // fix e sound: juwelekissie and similar compounds
fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc. fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc.
kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar
naald) e (C @ // fix e sound: naaldekoker/-kussing/-werk, etc. naald) e (C @ // fix e sound: naaldekoker/-kussing/-werk, etc.
noord) e (C @ // fix e sound: noordewind and compounds noord) e (C @ // fix e sound: noordewind and compounds
Colw) e (C @ // fix e sound: golweslag/wolwedans Colw) e (C @ // fix e sound: golweslag/wolwedans
bolw) e (rk_ & // exception to above: fix e sound: bolwerk and compounds
ros) e (CA @ // fix e sound: rosegeur/roseweg ros) e (CA @ // fix e sound: rosegeur/roseweg
slang) e (C @ // fix e sound: slangebesweerder/-diens/-draer/-gebroedsel/-kuil/-teelt slang) e (C @ // fix e sound: slangebesweerder/-diens/-draer/-gebroedsel/-kuil/-teelt
speld) e (C @ // fix e sound: speldekop/-kussing/-punt, etc. speld) e (C @ // fix e sound: speldekop/-kussing/-punt, etc.
ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc. ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc.
Cv) eer e@r // stress: (hoender/volstruisveer/dryfveer Cv) eer e@r // stress: (hoender/volstruisveer/dryfveer
AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer
Cev) eer e@r // restore default stress: duiwe-/haneveer
w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer
u) eer 'e@r // aktueer/konstrueer/salueer, etc. u) eer 'e@r // aktueer/konstrueer/salueer, etc.
@) eerdheid 'e@rtheIt // fix stress: geraffineerdheid/ongedissiplineerdheid, etc.
effek (K %ifEk // move default stress and fix e sound: effek/-te/-tief/rimpeleffek effek (K %ifEk // move default stress and fix e sound: effek/-te/-tief/rimpeleffek
eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste
@) ein (dig 'eIn // nimmereindige/nimmereindigend @) ein (dig 'eIn // nimmereindige/nimmereindigend
C) ema (_ e@ma // words ending in ema: compounds of skema/tema C) ema (_ e@ma // words ending in ema: compounds of skema/tema
emfi (seem %Emf%i // move default stress: emfiseem and compounds emfi (seem %Emf%i // move default stress: emfiseem and compounds
C) enaar @nA:r // eienaar/lessenaar C) enaar @nA:r // eienaar/lessenaar
C) enare (_ @nA:r@ // fix e sound: towenare and similar
C) enier @n'i:r // kruidenier/spysenier/valkenier/Renier C) enier @n'i:r // kruidenier/spysenier/valkenier/Renier
C) enheid @nheIt // opgewondenheid/bedorwenheid and many similar C) enheid @nheIt // opgewondenheid/bedorwenheid and many similar
_) enorm e@n'Or@_m // enorm/-s, pronunc. of rm _) enorm e@n'Or@_m // enorm/-s, pronunc. of rm
e (gK & e (gK &
@C) e (groep @ // fix e sound: beelde-/vriendegroep @C) e (groep @ // fix e sound: beelde-/vriendegroep
_) ega (l %e@x2A: // stress: egalig/-e _) ega (l %e@x2A: // stress: egalig/-e
egosentrie %e@x2%usEntri // fix stress and o sound: egosentries/-e
_) e (gipt %e@ // move default stress: Egipte/Egiptenaar/Egipties _) e (gipt %e@ // move default stress: Egipte/Egiptenaar/Egipties
C) ektomie 'Ektumi // histerektomie/vasektomie C) ektomie 'Ektumi // histerektomie/vasektomie
&) elik (ing @l@k // verduideliking/s/vergoddeliking/verstedeliking &) elik (ing @l@k // verduideliking/s/vergoddeliking/verstedeliking
ff) er (@ @r // keffertjie/koffersleutel/offerande/opoffering ff) er (@ @r // keffertjie/koffersleutel/offerande/opoffering
stoff) er (A 'e@r // exception to rule: ff) er (@ @ stoff) er (A 'e@r // exception to rule: ff) er (@ @
C) eres @r'Es // ...onderwyseres C) eres @r'Es // ...onderwyseres
@dans) ere (K @rE // fix stress: beroeps-/waaierdanseres/-se/-sie, etc.
C) eress @r'Es // onderwyseresse/-sie C) eress @r'Es // onderwyseresse/-sie
&) e (m_ @ &) e (m_ @
&l) e (m_ E // compounds ending in lem &l) e (m_ E // compounds ending in lem
_rasp) e (r @ // fix e sound in rasper- compounds: raspertong/-vyl, etc./rasperend _rasp) e (r @ // fix e sound in rasper- compounds: raspertong/-vyl, etc./rasperend
werp) e (rsA @ // fix e sound: ontwerpersolie/-sonbril/-uitrusting werp) e (rsA @ // fix e sound: ontwerpersolie/-sonbril/-uitrusting
lew) e (ns @ lew) e (ns @
&d) e (r@+ @ // not initial or final syllable
&d) e (r@++ @ // not initial or final syllable
skuld) erke _&rkE // fix e sound: skulderkentennis/-erkenning skuld) erke _&rkE // fix e sound: skulderkentennis/-erkenning
@C) e (reë @ // fix e sound: geelperskereën/tropereën, etc. @C) e (reë @ // fix e sound: geelperskereën/tropereën, etc.
@d) e (rnst+ & // but fix e sound in doodernstig/-e
@d) e (rnst++ & // but fix e sound in doodernstig/-e
&t) e (r@ @ &t) e (r@ @
Cit) e (ring e@ // fix final e sound in compounds like begrotingsmonitering Cit) e (ring e@ // fix final e sound in compounds like begrotingsmonitering
iënt) e (r@n e@ // fix e sound: lewensoriëntering/-rende iënt) e (r@n e@ // fix e sound: lewensoriëntering/-rende
_) este (t %Este@ // fix stress and vowel sounds: esteties/-e/estetika _) este (t %Este@ // fix stress and vowel sounds: esteties/-e/estetika
hip) e (r @ hip) e (r @
_) er (b &r' // erbarm/ing _) er (b &r' // erbarm/ing
erke (n %&rkE // fix stress and e sounds: erken/-ning/(self)erkende
erke (n+ %&rkE // fix stress and e sounds: erken/-ning/(self)erkende
m) erke (nd &rk@ // kenmerkend/-e m) erke (nd &rk@ // kenmerkend/-e
p) erke (nd &rk@ // beperkend/-e p) erke (nd &rk@ // beperkend/-e
w) erke (nd &rk@ // (mede/terug)werkend/-e w) erke (nd &rk@ // (mede/terug)werkend/-e
elaar @lA:r //wandelaar, twyfelaar etc. elaar @lA:r //wandelaar, twyfelaar etc.
oord) elaar e@lA:r //beoordelaar and oordelaar/friends oord) elaar e@lA:r //beoordelaar and oordelaar/friends
C) ewel (A e@v@l // prewelend/wrewelig/newelig/beneweling C) ewel (A e@v@l // prewelend/wrewelig/newelig/beneweling
ewewig (tig %e@v@vIx2 // move default stress: ewewigtig/-e
d) e (mons E% d) e (mons E%
r) e (digering E r) e (digering E
som) e (r @ //someraand and others. som) e (r @ //someraand and others.
Ceuw) e (l @ //gesneuwelde heuwelhang etc. Ceuw) e (l @ //gesneuwelde heuwelhang etc.
v) e (nno@+ @ //vennoot and friends v) e (nno@+ @ //vennoot and friends
_) euro (pe %Y@r%o@ // stress: Europees/Europese _) euro (pe %Y@r%o@ // stress: Europees/Europese
ev (entue %iv // fix e and v sounds: eventueel/-ele
_) ewe (red %e@v@ // move default stress: (on)eweredig/-e/-heid _) ewe (red %e@v@ // move default stress: (on)eweredig/-e/-heid
ex (+ _^_EN // words containing ex are English ex (+ _^_EN // words containing ex are English
al) ex (and %Ekz //alexanderbaai, alexandria etc. al) ex (and %Ekz //alexanderbaai, alexandria etc.
_) fok (o fOk_ // fix o sound, insert short break: fokop/fokof _) fok (o fOk_ // fix o sound, insert short break: fokop/fokof
folio fo@li_u // fix o sounds: folio and compounds folio fo@li_u // fix o sounds: folio and compounds
fondue f%Ondy // fix stress and ue sound: fondue and compounds fondue f%Ondy // fix stress and ue sound: fondue and compounds
fone (tiek f%o@n@ // fix e sound: fonetiek and compounds
fone (tie f%une@ // fix stress and o sound: foneties/-e
@) fonie fun'i // kakofonie/simfonieorkes/telefonie @) fonie fun'i // kakofonie/simfonieorkes/telefonie
@) fonies f'o@nis // fix stress: simfoniese/polifonies/telefonies @) fonies f'o@nis // fix stress: simfoniese/polifonies/telefonies
@) fonie (s@@ fun'i // fix stress: simfonieseisoen and similar @) fonie (s@@ fun'i // fix stress: simfonieseisoen and similar
gim (naK x2@m // move default stress: gimnas/-te gim (naK x2@m // move default stress: gimnas/-te
gimna (siA x2@mnA: // move default stress and lenghthen a sound: gimnasium/gimnasia gimna (siA x2@mnA: // move default stress and lenghthen a sound: gimnasium/gimnasia
glans x2lans // glans not nasalised: glans/-ende/-papier, etc. glans x2lans // glans not nasalised: glans/-ende/-papier, etc.
glas (a x2las_ // shorten a sound, short pause: glasafskorting/-albaster/-apparaat...
glas (o x2las_ // fix a sound and short break: glasoog/-ogie/-oë/-opaal/-oppervlakte glas (o x2las_ // fix a sound and short break: glasoog/-ogie/-oë/-opaal/-oppervlakte
gletser x2l''Ets@r // fix 2nd e sound: gletserbeweging/-meer/-vorming/vergletsering, etc. gletser x2l''Ets@r // fix 2nd e sound: gletserbeweging/-meer/-vorming/vergletsering, etc.
glise (rien gl@s@ // fix stress and g and vowel sounds: gliserien(-salf/-suur) glise (rien gl@s@ // fix stress and g and vowel sounds: gliserien(-salf/-suur)
bur) ger g@r bur) ger g@r
gee (+ x2e@ gee (+ x2e@
geër (_ x2e@@r // oorgeër/pasaangeër geër (_ x2e@@r // oorgeër/pasaangeër
gees (drift x2%e@s // move default stress: geesdriftig and derivatives
gees (drifti x2%e@s // move default stress: geesdriftig and derivatives
@) gegee =x2@x2e@ @) gegee =x2@x2e@
gegewens x2@x2e@v@ns // fix e sounds in many compounds: agtergrond-/fossielgegewens/-versameling gegewens x2@x2e@v@ns // fix e sounds in many compounds: agtergrond-/fossielgegewens/-versameling
gei (+ x2eI // geil and derivatives/geiser/geit/-e gei (+ x2eI // geil and derivatives/geiser/geit/-e
.group h .group h
h h h h
h (h h (h
_) half (geP4 h'alf // fix e sound in halfgetem(de), etc.
half (kro@ h%alf // move default stress: halfkroon/halfkrone half (kro@ h%alf // move default stress: halfkroon/halfkrone
half (een h%alf_ // move default stress in this and following time expressions: halfeen/-vergadering half (een h%alf_ // move default stress in this and following time expressions: halfeen/-vergadering
half (twee h%alf half (twee h%alf
hard (ste hart // restore default stress: (ge)hardste/-s hard (ste hart // restore default stress: (ge)hardste/-s
harle (kyn h%arl@ // fix stress and e sound: harlekyn/-e and compounds harle (kyn h%arl@ // fix stress and e sound: harlekyn/-e and compounds
harmo (nie h%arm%u // fix stress and o sound: harmonie/-ë harmo (nie h%arm%u // fix stress and o sound: harmonie/-ë
harmonies harm'o@nis // fix stress (dis-/en-/fil-)harmonies/-e
har (poen h%ar // move default stress: harpoen/-e and compounds har (poen h%ar // move default stress: harpoen/-e and compounds
@) hartig h'art@x2 // barmhartig/lighartigheid/lighartig... @) hartig h'art@x2 // barmhartig/lighartigheid/lighartig...
hart (roer h%art // move default stress: hartroerend/-e/-ste hart (roer h%art // move default stress: hartroerend/-e/-ste
&) hede (_ he@d@ &) hede (_ he@d@
he (g h& he (g h&
heid (_S4 heIt heid (_S4 heIt
herinner h&r'In@r // herinner/-ing/-e|s
herinner h%&rIn@r // herinner/-ing/-e|s
hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc. hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc.
hex (C hEks // prevent English translation: Hex(rivier)vallei hex (C hEks // prevent English translation: Hex(rivier)vallei
hia (sint h%ij%a // fix stress: hiasint/-e and compounds hia (sint h%ij%a // fix stress: hiasint/-e and compounds
iber (i@ %ibe@r // Siberië/Siberiese/Iberiese iber (i@ %ibe@r // Siberië/Siberiese/Iberiese
@) ic (_ _^_EN // Words ending in -ic are English @) ic (_ _^_EN // Words ending in -ic are English
ie i ie i
tr) ie (_ 'i //stress on trie at word end
tr) ie (_N 'i //stress on trie at word end
ieë (K i:@ // knieë/vlieë/spieël/-tjie ieë (K i:@ // knieë/vlieë/spieël/-tjie
ie (uu i // split ie/uu, eu not diphthong: drieuur and similar ie (uu i // split ie/uu, eu not diphthong: drieuur and similar
ss) ief (_ 'if // move default stress: aggressief/massief/obsessief/progressief, etc. ss) ief (_ 'if // move default stress: aggressief/massief/obsessief/progressief, etc.
j j j j
j (j j (j
ja (broer jA: // fix a sound: jabroer/-s ja (broer jA: // fix a sound: jabroer/-s
_) jack _^_EN // English: Jack/-ie/-son
_) jag (A j''ax2_ // fix stress and a sound: jagavontuur/-ekspedisie/-entoesias/-eskader/-instink... _) jag (A j''ax2_ // fix stress and a sound: jagavontuur/-ekspedisie/-entoesias/-eskader/-instink...
jag (end jA:x2 // but long a in jagend/-e and compounds jag (end jA:x2 // but long a in jagend/-e and compounds
jag (er jA:x2 // long a in jager and compounds jag (er jA:x2 // long a in jager and compounds
klip (A klIp_ // fix i sound: klipalbaster/-altaar/--uil/leiklipolie klip (A klIp_ // fix i sound: klipalbaster/-altaar/--uil/leiklipolie
klou (sule kl%@U // move default stress: klousule/-s klou (sule kl%@U // move default stress: klousule/-s
kklere =kl'e@r@ kklere =kl'e@r@
kners (_ kn&rs // fix e sound: blikners/tande(ge)kners, etc.
knip (A knIp? // knipogie/geknipoog/ knip (A knIp? // knipogie/geknipoog/
_) krag (A kr''ax2_ // kragaanleg/-eenheid/-installasie/-onderbreking/-opwekker _) krag (A kr''ax2_ // kragaanleg/-eenheid/-installasie/-onderbreking/-opwekker
kra (gie krA: // but: kragie/-s kra (gie krA: // but: kragie/-s
kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds
_) kre (o kr%i // fix stress and e sound: Kreool/Kreole/Kreoolse _) kre (o kr%i // fix stress and e sound: Kreool/Kreole/Kreoolse
_) kre (pe@ kr@ // fix stress and 1ste sound: krepeer/-krepering _) kre (pe@ kr@ // fix stress and 1ste sound: krepeer/-krepering
kriewe (l kriv@ // fix e sound: kriewelend/kriewelkous/-krapper/-siekte...
krimi (nA kr@m@' // krimineel/kriminele/diskrimineer krimi (nA kr@m@' // krimineel/kriminele/diskrimineer
kri (oel kr%i // move default stress: krioel and derivatives kri (oel kr%i // move default stress: krioel and derivatives
kri (sant kr@ // move default stress: krisant/-e kri (sant kr@ // move default stress: krisant/-e
_) kontras k%Ontras // move default stress: kontras/-te/kontrasteer _) kontras k%Ontras // move default stress: kontras/-te/kontrasteer
kontrasep k%Ontr%asEp // fix stress and e sound: kontrasepsie and derivatives kontrasep k%Ontr%asEp // fix stress and e sound: kontrasepsie and derivatives
kontrover (s k%Ontr%uv&r // o and v sounds: kontroversie/kontroversieel kontrover (s k%Ontr%uv&r // o and v sounds: kontroversie/kontroversieel
_) kop (o kOp? // fix o sound: koponder/koponderstebo/kopomdraai/kopoperasie
kop (o kOp? // fix o sound: koponderstebo/kopomdraai/kopoperasie/gryskoponderwyser/poenskopolifant
kopu (lA k%Op%y // fix o sound: kopulasie/kopuleer and derivatives kopu (lA k%Op%y // fix o sound: kopulasie/kopuleer and derivatives
_) kor (dA k%Or // kordaat/kordon _) kor (dA k%Or // kordaat/kordon
ko (rint k%u // fix stress and o sound: korint/-e and compounds ko (rint k%u // fix stress and o sound: korint/-e and compounds
ma (kriel m%a // move default stress: makriel/-e ma (kriel m%a // move default stress: makriel/-e
maksi (ma@ m%aks%i // move default stress: maksimaal/-male maksi (ma@ m%aks%i // move default stress: maksimaal/-male
&) mal (_S3 mal &) mal (_S3 mal
mala (giet m%al%a // fix stress and a sounds: malagiet and compounds
malaria mal'A:ria malaria mal'A:ria
mal (gas m%al // move default stress: Malgas/-se/-sies mal (gas m%al // move default stress: Malgas/-se/-sies
malles (_ mal@s // fix e sound: (mags)malles and similar malles (_ mal@s // fix e sound: (mags)malles and similar
marmer marm@r_ // fix e sound: marmerbeeld/-blad and many others marmer marm@r_ // fix e sound: marmerbeeld/-blad and many others
marmo (set m%arm%u // fix stress and o sound: marmoset/-te marmo (set m%arm%u // fix stress and o sound: marmoset/-te
mar (sje m%ar // move default stress: marsjeer and derivatives mar (sje m%ar // move default stress: marsjeer and derivatives
mas (biek m%as // move default stress: masbieker/-s
ma s (biek m%as // move default stress: masbieker/-s
masjien m@Sin // masjien and many compounds masjien m@Sin // masjien and many compounds
masji (na@ m%aS%i // move default stress: masjinaal/-ale
maskara m%askA:r%a // move default stress: maskara and compounds maskara m%askA:r%a // move default stress: maskara and compounds
masker mask@r // fix e sound: maskerafdruk/-agtig/ontmaskering masker mask@r // fix e sound: maskerafdruk/-agtig/ontmaskering
masker (ade m%ask@r // move default stress: maskerade/-s masker (ade m%ask@r // move default stress: maskerade/-s
maso (chis m%as%u // fix vowel sounds: masochis/-te/-ties/-e/-isme maso (chis m%as%u // fix vowel sounds: masochis/-te/-ties/-e/-isme
mastekto (m m%astEkt%u // fix stress and vowel sounds: mastektomie and compounds mastekto (m m%astEkt%u // fix stress and vowel sounds: mastektomie and compounds
mate (matie m%at@ // fix vowel sounds: matematies/-e
matemati (CA m%at@m%at%i // fix stress and vowel sounds: matematikus/-ci matemati (CA m%at@m%at%i // fix stress and vowel sounds: matematikus/-ci
materi (A@ m%at%e@r%i // materiaal/materiale/materiële/materieel materi (A@ m%at%e@r%i // materiaal/materiale/materiële/materieel
materie (+ m%ate@r%i // stress and vowel sounds: materie and many compounds materie (+ m%ate@r%i // stress and vowel sounds: materie and many compounds
midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend
middel (jari m@d@l // move default stress: middeljarig and derivatives middel (jari m@d@l // move default stress: middeljarig and derivatives
middelli (k mId@l@ // drop one l: (on)middellik/-e middelli (k mId@l@ // drop one l: (on)middellik/-e
milieu m@ljy // fix stress and vowel sounds: milieu and compounds
milit m@l@t // militêr/militaris milit m@l@t // militêr/militaris
mil (jA m@l // move default stress: miljoen/-e/miljard/-e mil (jA m@l // move default stress: miljoen/-e/miljard/-e
mille (nniA m@lE // millennium/millennia mille (nniA m@lE // millennium/millennia
mis (gis m@s // stress on 2nd slb mis (gis m@s // stress on 2nd slb
mis (gun m@s // stress on 2nd slb mis (gun m@s // stress on 2nd slb
mis (ha m@s // mishandel/mishaag mis (ha m@s // mishandel/mishaag
_) mis (inP3 m@s // fix 1st i sound, pause: misinterpretasie/misinterpreteer
miske (n m@skE // misken/ning/onmiskenbaar miske (n m@skE // misken/ning/onmiskenbaar
mis (l m@s // misluk/mislei mis (l m@s // misluk/mislei
mis (lamp mIs // restore default stress: mislamp/-e mis (lamp mIs // restore default stress: mislamp/-e
mosam (biek m%o@s%am // move default stress: Mosambiek/-er/-se mosam (biek m%o@s%am // move default stress: Mosambiek/-er/-se
mosa (ïek m%o@s%a // move default stress: mosaïek and compounds mosa (ïek m%o@s%a // move default stress: mosaïek and compounds
mo (skee m%O // move default stress: moskee/-s and compounds mo (skee m%O // move default stress: moskee/-s and compounds
motie (C m%o@ti // handle stress: winsmotief/-tiewe and similar compounds
motor mo@t@r // motorfiets/motorkar/vragmotor motor mo@t@r // motorfiets/motorkar/vragmotor
motor (ie m%uto@r // fix stress and o sounds: motories/-e motor (ie m%uto@r // fix stress and o sounds: motories/-e
@) mpel (A mp@l // bewimpeling/dompelaar/strompeling @) mpel (A mp@l // bewimpeling/dompelaar/strompeling
ment m'Ent ment m'Ent
mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds
mentjie m'EiNci // monumentjie/dokumentjies mentjie m'EiNci // monumentjie/dokumentjies
menue (t m%En%y:;E // fix stress and vowel sounds: menuet/-te
@C) mere (_ me@:r@ // fix penultimate e sound: sout(water)-/strandmere @C) mere (_ me@:r@ // fix penultimate e sound: sout(water)-/strandmere
me (riete m@ // move default stress: meriete and compounds me (riete m@ // move default stress: meriete and compounds
merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc. merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc.
oe) n (g n //soengroet, pensioengewend etc. oe) n (g n //soengroet, pensioengewend etc.
nuanse (K n%yans@ // move default stress: nuanse/-s and compounds nuanse (K n%yans@ // move default stress: nuanse/-s and compounds
nuan (seer n%y%an // fix stress: (ge)nuanseer/-d nuan (seer n%y%an // fix stress: (ge)nuanseer/-d
nuanse (ring n%y%anse@ // fix stress: nuansering and compounds
nuus (kierig n%ys // move default stress: nuuskierig/-heid nuus (kierig n%ys // move default stress: nuuskierig/-heid
nuwer (wet n%yv@r // move default stress: nuwerwets/-e nuwer (wet n%yv@r // move default stress: nuwerwets/-e
@Cer) ny (_ n'eI // move default stress: lekkerny/raserny/slawerny @Cer) ny (_ n'eI // move default stress: lekkerny/raserny/slawerny
oase %u_A:s@ // oase/-s and compounds oase %u_A:s@ // oase/-s and compounds
o (terap u // psigo-/fisioterapeut o (terap u // psigo-/fisioterapeut
_) ob (s %Op // obskuur/obskure/obskuriteit/obsessie/obseen _) ob (s %Op // obskuur/obskure/obskuriteit/obsessie/obseen
obser (veer %Ops%&r // fix stress, b sound: (ge)observeer(d/-e)
C) o (dium o@ // fix stress and o sound: jodium/podium/rodium and their compounds C) o (dium o@ // fix stress and o sound: jodium/podium/rodium and their compounds
oefen uf@n// oefenbroekie/oefeningboek/liggaamsoefeninge oefen uf@n// oefenbroekie/oefeningboek/liggaamsoefeninge
t) oeke (n uk%E // fix e sound: toeken/-ning/kuns-/watertoekenning t) oeke (n uk%E // fix e sound: toeken/-ning/kuns-/watertoekenning
odjie OIci odjie OIci
otjie OIci otjie OIci
offi (sier %Of@ // move default stress: offisier and compounds offi (sier %Of@ // move default stress: offisier and compounds
offisi %Of%iS%i;
ofiel uf'il // franko-/hemo-/nekro-/pedo-/russofiel, etc. ofiel uf'il // franko-/hemo-/nekro-/pedo-/russofiel, etc.
ofilie ufil'i // hemo-/nekro-/pedofilie, etc. ofilie ufil'i // hemo-/nekro-/pedofilie, etc.
ofobie ufo@b'i // antropo/-xenofobie and many other -fobie words ofobie ufo@b'i // antropo/-xenofobie and many other -fobie words
om (sig %Om // move default stress: omsigtig/-heid om (sig %Om // move default stress: omsigtig/-heid
omsingel %OmsIN@l // fix stress: omsingel/fix e sound: omsingelde omsingel %OmsIN@l // fix stress: omsingel/fix e sound: omsingelde
_) om (sirkel %Om // move default stress: omsirkel and derivatives _) om (sirkel %Om // move default stress: omsirkel and derivatives
_) omskans %Omskans // fix stress: omskans/-ing/-s
_) om (skep %Om // move default stress: omskep and derivatives _) om (skep %Om // move default stress: omskep and derivatives
_) om (skr %Om // move default stress: omskryf/omskrewe _) om (skr %Om // move default stress: omskryf/omskrewe
_) om (sluier %Om // move default stress: omsluier and derivatives _) om (sluier %Om // move default stress: omsluier and derivatives
ontering %Onte@r@N //ontering in compounds montering etc. ontering %Onte@r@N //ontering in compounds montering etc.
_) on (tooCC %On // ontoombaar/-bare/-baarheid/ontoonbaar/-bare/-baarheid/ontoornig/-e/-heid _) on (tooCC %On // ontoombaar/-bare/-baarheid/ontoonbaar/-bare/-baarheid/ontoornig/-e/-heid
onvoor (s %Onf%o@r //stress: onvoorsiens, onvoorstelbaar etc. onvoor (s %Onf%o@r //stress: onvoorsiens, onvoorstelbaar etc.
onvoor (w %Onf%o@r //stress: onvoorwaardelik etc.
onome un'o@m@ // astronome/ekonome/gastronome onome un'o@m@ // astronome/ekonome/gastronome
onomie unum'i // astronomie/ekonomie/gastronomie onomie unum'i // astronomie/ekonomie/gastronomie
onomies un'o@mis // astronomies/-e/ekonomies/-e/gastronomies/-e onomies un'o@mis // astronomies/-e/ekonomies/-e/gastronomies/-e
_) on (kruid On // restore default stress: onkruid/-doder and similar _) on (kruid On // restore default stress: onkruid/-doder and similar
_) on (lus On // restore default stress: onlus/-te/onlusgebied, etc. _) on (lus On // restore default stress: onlus/-te/onlusgebied, etc.
_) onnie Oni // onnie/-s; not on- prefix _) onnie Oni // onnie/-s; not on- prefix
onom (stoot %On%Om // fix stress: onomstootbaar/onomstootlik and their derivatives
_) on (paar On // restore default stress: onpaar/-skoene _) on (paar On // restore default stress: onpaar/-skoene
onreg (K Onr&x2 // stress: onreg/te/onregmatig onreg (K Onr&x2 // stress: onreg/te/onregmatig
on (regv++ %On // stress: onregverdig/e/heid on (regv++ %On // stress: onregverdig/e/heid
oor (heers %o@r // move default stress oor (heers %o@r // move default stress
_) oor (hoofs %o@r // move default stress: oorhoofs/-e _) oor (hoofs %o@r // move default stress: oorhoofs/-e
oorkoepel o@rk'up@l // stress and pronunc. of el: oorkoepelend/oorkoepeling oorkoepel o@rk'up@l // stress and pronunc. of el: oorkoepelend/oorkoepeling
oor (koom %o@r // fix stress: (on)oorkoomlik/-e
oor (laaid %o@r // move default stress: oorlaaide/-s oor (laaid %o@r // move default stress: oorlaaide/-s
oor (lams %o@r // move default stress: oorlams/-e/-heid oor (lams %o@r // move default stress: oorlams/-e/-heid
_) oorlede o@rl'e@d@ // stress oorlede/ne/s _) oorlede o@rl'e@d@ // stress oorlede/ne/s
parle (ment p%arl@ // move default stress and fix e sound: parlement and compounds, eg. parle (ment p%arl@ // move default stress and fix e sound: parlement and compounds, eg.
parme (saan p%arm@ // move default stress: parmesaan(kaas) and compounds parme (saan p%arm@ // move default stress: parmesaan(kaas) and compounds
paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds
parti (sa p%art%i // move default stress: partisaan/-ane
parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds
pase (lla p%as& // fix stress and a sound: pasella(tjie) and compounds pase (lla p%as& // fix stress and a sound: pasella(tjie) and compounds
pa (sifi p%a // shorten a sound: pasifis/-me/-ties/-e pa (sifi p%a // shorten a sound: pasifis/-me/-ties/-e
ry) pere (_ p@r@ // fix penultimate e sound: rypere ry) pere (_ p@r@ // fix penultimate e sound: rypere
skam) pere (_ p@r@ ?? shorten 1st e in ending skam) pere (_ p@r@ ?? shorten 1st e in ending
perfek p@rfEk // perfek/-te/-sie/-sionis perfek p@rfEk // perfek/-te/-sie/-sionis
pergola p%&rx2o@l%a // move default stress: pergola/-s and compounds
perife (rA@ p%Er@f@ // fix stress and vowel sounds: periferie/-ë/periferaal/-ale perife (rA@ p%Er@f@ // fix stress and vowel sounds: periferie/-ë/periferaal/-ale
peri (o p%e@r%i // stress: periode/-s and compounds peri (o p%e@r%i // stress: periode/-s and compounds
peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici
puntener p%Wnt@ne@r // stress and 2nd e sound: puntenerig and derivatives puntener p%Wnt@ne@r // stress and 2nd e sound: puntenerig and derivatives
pu (pil p%y // move default stress: pupil/-le and compounds pu (pil p%y // move default stress: pupil/-le and compounds
puri (tein p%yr@ // fix stress and i sound: puritein/-e/-se puri (tein p%yr@ // fix stress and i sound: puritein/-e/-se
pêrel p&:r@l // fix e sound: pêrelig/-e




.group q .group q


rivier r@fi:r rivier r@fi:r
_) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc. _) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc.
robot (A ro@bOt_ // fix 2nd o sound, pause: robotarm/-oog/-oë
ron (dawel r%On // move default stress: rondawel/-s/-tjie ron (dawel r%On // move default stress: rondawel/-s/-tjie
rond (borst r%Ont // move default stress: rondborstig/-e rond (borst r%Ont // move default stress: rondborstig/-e
rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry
.group re .group re
rea (ks r%ia // reaksie/s/skokreaksie rea (ks r%ia // reaksie/s/skokreaksie
rea (C r%i%a // reageer/realis/me|ties rea (C r%i%a // reageer/realis/me|ties
re (ageren r%i // fix stress and vowel sounds: reagerend/-e
re (bel r@ // move stress from 1st slb re (bel r@ // move stress from 1st slb
recce rEki // fix e and c sounds: recce/-s recce rEki // fix e and c sounds: recce/-s
re (dakC r@ // fix stress and e sound: redaksie/redakteur and compounds re (dakC r@ // fix stress and e sound: redaksie/redakteur and compounds
re (kru r@ // move stress from 1st slb re (kru r@ // move stress from 1st slb
_) re (la r@ // relaas/relase/relasie and compounds _) re (la r@ // relaas/relase/relasie and compounds
rele (van r@l@ // relevansie/relevant and derivatives rele (van r@l@ // relevansie/relevant and derivatives
re (liek r@ // fix stress and e sound: reliek/-e and compounds
reli (gi r@l@ // fix stress and e sound: religie/-ë/religieus reli (gi r@l@ // fix stress and e sound: religie/-ë/religieus
reliëf r%e@l%iEf // fix stress and vowel sounds: reliëf and compounds reliëf r%e@l%iEf // fix stress and vowel sounds: reliëf and compounds
rem (_ rEm // handrem/kabeltrem/kragrem/noodrem/skyfrem/stadstrem/veiligheidsrem rem (_ rEm // handrem/kabeltrem/kragrem/noodrem/skyfrem/stadstrem/veiligheidsrem
_) spon (ta sp%On // move default stress: spontaan/spontane _) spon (ta sp%On // move default stress: spontaan/spontane
_) sport (@@@ sp''Ort_ // force stress on 1st slb.: sportadministrasie/-konfederasie _) sport (@@@ sp''Ort_ // force stress on 1st slb.: sportadministrasie/-konfederasie
spreekwoordeli spr%e@kvo@rd@l@ // move default stress: spreekwoordelik/-e, vs. spreekwoord spreekwoordeli spr%e@kvo@rd@l@ // move default stress: spreekwoordelik/-e, vs. spreekwoord
springbok spr''INbOk // fix o sound: Springbokafrigter/-agterspeler; fix stress: Springbokklere
springbo (k spr''INbO // fix o sound: Springbokafrigter/-agterspeler; fix stress: Springbokklere
sproke spro@k@ // see rule: pro (CA pr%u : aangesprokene/onbesproke, etc. sproke spro@k@ // see rule: pro (CA pr%u : aangesprokene/onbesproke, etc.
self (_ s'&lf // myself/vanself self (_ s'&lf // myself/vanself
K) sewe (C s'e@v@ // sewejarige/standerdseweklas K) sewe (C s'e@v@ // sewejarige/standerdseweklas
smelt sm&lt smelt sm&lt
sodom (iet s,o@dOm // fix stress and 2nd o sound: sodomiet/-e sodom (iet s,o@dOm // fix stress and 2nd o sound: sodomiet/-e
son (g@ sOn // songebakte/-brande/-bruinde/-droogde/songod son (g@ sOn // songebakte/-brande/-bruinde/-droogde/songod
son (om s''On_ // fix 1st o sound, pause: sonomspoelde/-omgewe
sosial (i so@Sial' // sosialis/sosialisme/sosialisties sosial (i so@Sial' // sosialis/sosialisme/sosialisties
so (v so@ // soveel/sover so (v so@ // soveel/sover
soverre so@f'&r@ // stress: se rule: so (v s'o@ // soveel/sover soverre so@f'&r@ // stress: se rule: so (v s'o@ // soveel/sover
spas (mod sp%as // move default stress: spasmodies/-e
speku (lA sp%Ek%y // spekulasie/spekuleer/spekulatief speku (lA sp%Ek%y // spekulasie/spekuleer/spekulatief
@) sper (a sp@r' //desperate/desperaatheid/rasperagtig @) sper (a sp@r' //desperate/desperaatheid/rasperagtig
ek) sper (im spEr // eksperimenteer/eksperimenteel ek) sper (im spEr // eksperimenteer/eksperimenteel
spesialis (A spESialis spesialis (A spESialis
spesialis spESal'Is spesialis spESal'Is
spesi (f sp%Es%I // spesifiek/spesifiseer spesi (f sp%Es%I // spesifiek/spesifiseer
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede
ste (laan st@ // fix e sound: eerste-/ag(t)stelaan
spine (t sp%inE // move default stress: spinet/-te and compounds
%Cel) ste (r st& // fix e sound: dubbelster/-re %Cel) ste (r st& // fix e sound: dubbelster/-re
Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re
dwaal) ste (r st& // fix e sound: dwaalster/-re dwaal) ste (r st& // fix e sound: dwaalster/-re
suid (oos s%Yyt_ // move default stress and insert short break: suidoos/-te/-lik suid (oos s%Yyt_ // move default stress and insert short break: suidoos/-te/-lik
suite swit@ // fix -ui-sound: suite/-s and compounds suite swit@ // fix -ui-sound: suite/-s and compounds
sukses s%WksEs // sukses/suksesse/suksesvol/reusesukses sukses s%WksEs // sukses/suksesse/suksesvol/reusesukses
sultana s%WltA:n%a // fix stress, keep last a short in compounds: sultana/-s
_) su (meri s%u // fix stress and u sound: sumeries/-e _) su (meri s%u // fix stress and u sound: sumeries/-e
su (mmier s%W // move default stress: sumier/-e su (mmier s%W // move default stress: sumier/-e
superintendent s,upr@nt%EndEnt // fix stress and vowel sounds: superintendent and compounds superintendent s,upr@nt%EndEnt // fix stress and vowel sounds: superintendent and compounds
_) sw sw // fix w sound: words beginning with sw-: swerweling/swetend _) sw sw // fix w sound: words beginning with sw-: swerweling/swetend
swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid
swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid
swag (K sv'ax2
swag (K svax2 // dorps-/volkswag, etc.
swa (hili sw%a // fix stress and a sound: swahili/-'s swa (hili sw%a // fix stress and a sound: swahili/-'s
_) swam (A@ swam_ // shorten a sound: swamagtig/-etend/-infeksie _) swam (A@ swam_ // shorten a sound: swamagtig/-etend/-infeksie
swart (gal sw%art // move default stress: swartgallig swart (gal sw%art // move default stress: swartgallig
stapel stA:p@l // fix e sound: (op)stapeling/stapelaar stapel stA:p@l // fix e sound: (op)stapeling/stapelaar
staties st'A:tis staties st'A:tis
sta (tutA st%a // fix stress and a sound: statute/statutêr sta (tutA st%a // fix stress and a sound: statute/statutêr
êr) ste (_S3 st@ // preserve stress: elementêrste/primêrste, etc.
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede
steding ste@d@N // besteding and compounds steding ste@d@N // besteding and compounds
ste (ke_ ste@ // fix e sound: by-/mes-/proefsteke ste (ke_ ste@ // fix e sound: by-/mes-/proefsteke
steke (lig ste@k@ // fix 2nd e sound: stekelig/-e/-heid
C) steker ste@k@r // e sound: (aan/dop/kwaad/rugsteker/-s/-y, etc. C) steker ste@k@r // e sound: (aan/dop/kwaad/rugsteker/-s/-y, etc.
_ne) stel st@l // fix e sound: nestel/-end _ne) stel st@l // fix e sound: nestel/-end
wor) stel st@l //worstel e sound in compounds wor) stel st@l //worstel e sound in compounds
ste (laan st@ // fix e sound: eerste-/ag(t)stelaan
ste (land st@ // fix e sound: vasteland and several compounds ste (land st@ // fix e sound: vasteland and several compounds
@) stel (iC st@l // eersteling/gunsteling/wellusteling/worsteling/eerstelig and compounds @) stel (iC st@l // eersteling/gunsteling/wellusteling/worsteling/eerstelig and compounds
&) stele (fo st&l@ // fix e sound in compounds: huis-/werkstelefoon/-fone &) stele (fo st&l@ // fix e sound in compounds: huis-/werkstelefoon/-fone
mAre) ste (r st& // fix e sound: more/môrester/-re mAre) ste (r st& // fix e sound: more/môrester/-re
stereo (ti st%e@r%i%u // fix stress and vowel sounds: stereotiep/-tipe/-tipeer stereo (ti st%e@r%i%u // fix stress and vowel sounds: stereotiep/-tipe/-tipeer
sterf (K st&rf // fix e sound: uitsterf/weg(ge)sterf/kindersterfte sterf (K st&rf // fix e sound: uitsterf/weg(ge)sterf/kindersterfte
sterk (_ st&rk // fix e sound: duiwel-/kapitaal-/stormsterk, etc.
@) sterkt st&rkt // compounds ending in sterkte @) sterkt st&rkt // compounds ending in sterkte
stero (ïed st%e@r%u; // fix stress and vowel sounds: steroïed/-e stero (ïed st%e@r%u; // fix stress and vowel sounds: steroïed/-e
bok) ster (t st&:r // fix e sound: bokstert/-e/-tjie/-s bok) ster (t st&:r // fix e sound: bokstert/-e/-tjie/-s
teater t%iA:t@r // fix stress and e sound: teater and compounds teater t%iA:t@r // fix stress and e sound: teater and compounds
tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale
teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie
te (dom t@ // fix e sound: idiotedom and similar
teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e
@A) te (geC t@ // fix e sound: Hugenotegemeente/stategebou and similar compounds @A) te (geC t@ // fix e sound: Hugenotegemeente/stategebou and similar compounds
@C) te (gn t& //tegniek/iese and friends @C) te (gn t& //tegniek/iese and friends


ve (l f& // maagvel, stress on 1st slb ve (l f& // maagvel, stress on 1st slb
@) vel (A fe@l // aanbeveling/aanbevelingsbrief @) vel (A fe@l // aanbeveling/aanbevelingsbrief
veld (C f&lt // fix d sound: veldreuk/-radio/-rantsoen, etc.
vele f'e@l@ vele f'e@l@
ven (detta v%En // fix stress and v sound: vendatta and compounds ven (detta v%En // fix stress and v sound: vendatta and compounds
ven (dusie f@n // fix stress and e sound: vendusie and compounds ven (dusie f@n // fix stress and e sound: vendusie and compounds
ver (reik f&:r // fix stress and e sound: verreikend/-e ver (reik f&:r // fix stress and e sound: verreikend/-e
@) vers (_ f&rs // teksvers/slotvers/kindervers and similar @) vers (_ f&rs // teksvers/slotvers/kindervers and similar
vers (album f&:rs_ // fix e sound: versalbum/-s vers (album f&:rs_ // fix e sound: versalbum/-s
_) vers (b f&rs // fix e sound: versbundel/-bou/-boek
@) vers (e_ f&rs // plurals of words like the above @) vers (e_ f&rs // plurals of words like the above
_) versf f''&rsf // fix stress and e sound: versfragment/-e _) versf f''&rsf // fix stress and e sound: versfragment/-e
ver (sie_ f&:r //words ending in versie ver (sie_ f&:r //words ending in versie
ver (sies_ f&:r //words ending in versies ver (sies_ f&:r //words ending in versies
vers (panor f&:rs // fix stress and e sound: verspanorama/-s vers (panor f&:rs // fix stress and e sound: verspanorama/-s
ver (spring f''&:r // fix stress and e sound: verspring/-er/-kompetisie ver (spring f''&:r // fix stress and e sound: verspring/-er/-kompetisie
vers (v f&rs // fix e sound: versvorm/versvoete
verf (i f@rf //verfilm and compounds verf (i f@rf //verfilm and compounds
ver (flenC f@r // verflenter and derivatives/verflens; see rule: verf (C f&rf ver (flenC f@r // verflenter and derivatives/verflens; see rule: verf (C f&rf
ver (fris f@r // verfris and derivatives; see rule: verf (C f&rf ver (fris f@r // verfris and derivatives; see rule: verf (C f&rf
voort (v@@ f%o@rt // voortvarend/voortvlugtige voort (v@@ f%o@rt // voortvarend/voortvlugtige
_) vooruit fo@r_'Yyt // vooruit/vooruitsig/vooruitbeplanning _) vooruit fo@r_'Yyt // vooruit/vooruitsig/vooruitbeplanning
vooruit (strew fo@rYyt' // change stress vooruit (strew fo@rYyt' // change stress
voorwaard (_ f%o@rvA:rd // stress: (on)voorwaardelik
voorwaarde (_ f%o@rvA:rd@ // stress: (on)voorwaardelik
voorwaarde (_N fo@rvA:rd@ // fix stress: voorwaarde/-s
vor (_ _^_EN //words ending in vor is English vor (_ _^_EN //words ending in vor is English
vorm fOr@m vorm fOr@m
vorsti (n fOrst'I // fix stress: vorstin/-ne/-netjie and compounds vorsti (n fOrst'I // fix stress: vorstin/-ne/-netjie and compounds
&s) w (eefs v // fix w sound: compounds like -sweefsel/tuisweefstof, etc. &s) w (eefs v // fix w sound: compounds like -sweefsel/tuisweefstof, etc.
@s) w (enn v // fix w sound: beurs-/groeps-/klas-/naas-/pryswenner/-wennende @s) w (enn v // fix w sound: beurs-/groeps-/klas-/naas-/pryswenner/-wennende
_) web vEb //webadres/se, webarea etc. _) web vEb //webadres/se, webarea etc.
As) weer (_ ve@r // fix w sound: kusweer/ysweer, etc.
AAs) w (enk v // fix w sound: kombuis-/nuus-/sweiswenk/-e AAs) w (enk v // fix w sound: kombuis-/nuus-/sweiswenk/-e
plaas) w (erC v // fix w sound: plaaswerf/-werwe plaas) w (erC v // fix w sound: plaaswerf/-werwe
s) w (oeling v // fix w sound: koors-/geesteswoelinge
s) w (ou v // fix w sound: bamboeswoud/keerkringswoud and similar s) w (ou v // fix w sound: bamboeswoud/keerkringswoud and similar
s) w (r v // fix w sound: skeepswrak/sielswroeging/aardswreedheid s) w (r v // fix w sound: skeepswrak/sielswroeging/aardswreedheid
wreed (a vre@t_ // fix d sound and insert short pause: wreedaard/-s wreed (a vre@t_ // fix d sound and insert short pause: wreedaard/-s
weer (leg w%e@r // move default stress: (on)weerlegbaar weer (leg w%e@r // move default stress: (on)weerlegbaar
weer (strew v%e@r // move default stress: weerstrewig/-e/-heid weer (strew v%e@r // move default stress: weerstrewig/-e/-heid
@) wees (_ ve@s // fix w sound: siekwees/volkwees @) wees (_ ve@s // fix w sound: siekwees/volkwees
weet (gierig v%e@t // move default stress: weetgierig/-e/-heid
@) weg (_ v&x2 // blindweg/botweg and many similar @) weg (_ v&x2 // blindweg/botweg and many similar
spoor) weg v&x2 // fix e sound: spoorwegaanleg/-aansluiting/-amptenaar/-eiendom/-inkomste/-ongeluk... spoor) weg v&x2 // fix e sound: spoorwegaanleg/-aansluiting/-amptenaar/-eiendom/-inkomste/-ongeluk...
_) wegge (C@P5 v'&x2@ // prefix: weggeja and similar _) wegge (C@P5 v'&x2@ // prefix: weggeja and similar
.group y .group y
y eI y eI
%C) y (_ _^_EN // English: Betty/Eddy/Harry/Molly/Penny/Tommy %C) y (_ _^_EN // English: Betty/Eddy/Harry/Molly/Penny/Tommy
skapp) y (_ %eI // compounds like: handels-/versekerings-/verskepingsmaatskappy
york j'O:k //new-yorkse and may be others york j'O:k //new-yorkse and may be others
ysterre (lin eIst@re@ // fix e sound: ysterreling/-s ysterre (lin eIst@re@ // fix e sound: ysterreling/-s



+ 12
- 4
dictsource/da_list View File


// This file is UTF8 encoded // This file is UTF8 encoded
// Spelling-to-phoneme words for Danish // Spelling-to-phoneme words for Danish


_cir s'3:kVmfl,Eks _cir s'3:kVmfl,Eks
_dia 'umlaut _dia 'umlaut
_dot wiDd'0tabVv _dot wiDd'0tabVv
_grv gr'a:v
_grv aks'aN gr'a:v
_hac h'atS,Ek _hac h'atS,Ek
_mcn m'akr,0n _mcn m'akr,0n
_ogo '0g0n,Ek _ogo '0g0n,Ek
_, koma: _, koma:
_; se:mi:ko:lVn _; se:mi:ko:lVn
_: ko:lVn _: ko:lVn
_. pun^tum
_. puNtum
_? spWrgsmVlstajn _? spWrgsmVlstajn
_! udRVbstejn _! udRVbstejn
_- binnesdrai _- binnesdrai
__ bOndsdrai
__ b'Onsdrai
& ou & ou
£ pun? £ pun?
€ euro € euro
© kopyrajt © kopyrajt
÷ divid'eReD meD
= l'imeD = l'imeD
# n'OmV # n'OmV
§ paragr'af



// numbers // numbers
_0 'nOl _0 'nOl
_1 'e:n _1 'e:n
l El l El
m Em m Em
n En n En
o o
p pe: p pe:
q ku: q ku:
r Er r Er
eget a:j@D eget a:j@D
egne a:in@ egne a:in@
enter entV enter entV
ide id'e // idea
igen igen igen igen
Ny ny // new Ny ny // new
også Vs@ // also også Vs@ // also
sagde sa@ // said sagde sa@ // said
sig sAi // oneself sig sAi // oneself




+ 703
- 574
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 385
- 384
dictsource/dict_phonemes View File

Phonemes which are used in the *_rules and *_list files Phonemes which are used in the *_rules and *_list files




Dictionary zhy_dict

a aa aai aan aau ai au e
ei eo eoi eu i iu o oe
oi ong ou u ui yu

b c d f g h j k
l m n N p r s t
tS v w z


Dictionary fr_dict

@ @- @2 a A~ e E E2
E: E~ i i- i: o O o2
O2 o3 O~ u u: W w^i wA
W~ y Y

: b d dZ f g h j
k l m n N n2 n^ p
p2 r R r2 s S t t2
t3 tS v w z Z z2 z3


Dictionary nl_dict

8 @ @- A a: E e: EI
eU i I O O: o: u VU
Wy y Y: yU

* : ; b C d f g
h j k l m n N n^
p Q r s S t tS v
v2 w x z


Dictionary jbo_dict

@ a aI aU e eI i l-
o oI r- u

- b d dZ f g h j
k l m n N p R s
S t tS v w x z Z


Dictionary hu_dict

A a: E e: i i: o o:
u u: Y y y: Y:

: b c C d dZ f g
h j J k l l^ m n
N n^ p R R2 s S s2
t tS ts v z Z


Dictionary hy_dict
Dictionary af_dict


@ a aI e eI i i@ o
u W y
& &: 3: @ @- @L @U a
A: aI AI aU A~ E e: e@
eI e~ I i iu O O: o@
OI oI o~ u uI W y Y@
Yy


** b c d dZ dz f g
h j k k# l m n p
p# r R r" s S t t#
tS ts ts# v X z Z
- : ; ? b c d dZ
f g h j k l L m
n N p r s S t T
tS v w x x2 z Z




Dictionary zh_dict
Dictionary bn_dict


@ @r a A ai Au E ei
i i. i[ iA iE io iou N-
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu
& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
O~ o~ r- U u u: u:~ u~
V


; C f h j k kh l
L m n N p ph q r
R s s. S; t th ts ts.
ts. tS; tS; tsh v w x X
z.
* b B bh c C ch d
d. dh dh. g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. th th. tS x z




Dictionary ca_dict Dictionary ca_dict
v# w z Z Z; v# w z Z Z;




Dictionary af_dict
Dictionary cs_dict


& &: 3: @ @- @L @U a
A: aI AI aU A~ E e: e@
eI e~ I i iu O O: o@
OI oI o~ u uI W y Y@
Yy
@- a a: aU e e: eI eU
i i: l- o o: oU r- u
u:


- : ; ? b c d dZ
f g h j k l L m
n N p r s S t T
tS v w x x2 z Z
* ; b c d dZ dz f
g h j J k l l^ m
n N n^ p r R R^ R^/
s S t tS ts v x z
Z




Dictionary id_dict
Dictionary cy_dict


@ a aI aU e E E2 i
o O u
@ @- @I @Y a A: aI aU
AY aY E e: eU I i: Iu
O o: OI OY U u: uY V
Y y: Yu


* : ? b d dZ f g
h j k l m n N n^
p r R R2 s S t tS
v w x z
: b C d D dZ f g
h j k l L m n N
p r s S t T v w
x z


Dictionary da_dict

& 0 3 @ @- a A e
E i o O u V W y
Y

* - : ; ? b d D
dZ f g h j k l L
m n N p r R s S
t tS v w


Dictionary de_dict

3 @ @- a A A: aI aU
E E2 E: e: EI I i2 i:
O o: OY U u: W y y:
Y:

* : ; b C C2 d D
dZ f g h j k l m
n N p pF r s S t
tS ts v x z Z




Dictionary el_dict Dictionary el_dict
x z Z x z Z




Dictionary cs_dict
Dictionary eo_dict


@- a a: aU e e: eI eU
i i: l- o o: oU r- u
u:
@- a aI aU e eI eU i
o oI u uI


* ; b c d dZ dz f
g h j J k l l^ m
n N n^ p r R R^ R^/
s S t tS ts v x z
Z
* - b d dZ f g h
j k l m n p r R
s S t T tS ts v w
x z Z


Dictionary es_dict

a aI aU e E eI eU i
o O oI u

* ** : b B d D f
g j J J^ k l m n
N n^ p Q R R2 s t
T tS v v# w x z


Dictionary eu_dict

a aI aU e eI eU i o
oI u Y

* ** : ; b B c d
D f g h j J k l
l^ m n n^ p Q r R
s S t tS ts tz v w
x z


Dictionary fi_dict

& &i &y a a2 ai au e
ei eu ey i I ie iu iy
o oi ou u ui uo Y y
Yi yi Yy yY

: b d f g h j k
l m n N p r s S
s2 t v w Z


Dictionary fr_dict

@ @- @2 a A~ e E E2
E: E~ i i- i: o O o2
O2 o3 O~ u u: W w^i wA
W~ y Y

: b d dZ f g h j
k l m n N n2 n^ p
p2 r R r2 s S t t2
t3 tS v w z Z z2 z3




Dictionary grc_dict Dictionary grc_dict
T v x z T v x z




Dictionary cy_dict

@ @- @I @Y a A: aI aU
AY aY E e: eU I i: Iu
O o: OI OY U u: uY V
Y y: Yu

: b C d D dZ f g
h j k l L m n N
p r s S t T v w
x z


Dictionary hbs_dict Dictionary hbs_dict


& @ @2 a A a: aI aU & @ @2 a A a: aI aU
t tS ts tS; v x z Z t tS ts tS; v x z Z




Dictionary it_dict
Dictionary hi_dict


@- a a/ aI aU e E eI
i I o O u
@ @- @2 @3 a a: aI aU
e E e: E: E~ i I i:
l- o O o: O: O~ o~ r-
U u: u~ V


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




Dictionary sk_dict
Dictionary hu_dict


& @- a a: e e: i i:
l- l: o o: oU r- r: u
u:
A a: E e: i i: o o:
u u: Y y y: Y:


* ; b d d; dZ dz f
g h j k l l^ m n
N n^ p r R R^ R^/ s
S t t; tS ts v x z
Z
: b c C d dZ f g
h j J k l l^ m n
N n^ p R R2 s S s2
t tS ts v z Z




Dictionary ku_dict
Dictionary hy_dict


8 a e E E# eI eU i
I o u U y
@ a aI e eI i i@ o
u W y


* : b c d dZ f g
h j J k l m n p
q r R s S t tS v
w x z Z
** b c d dZ dz f g
h j k k# l m n p
p# r R r" s S t t#
tS ts ts# v X z Z




Dictionary sq_dict
Dictionary id_dict


@ @/ a A a/ aI E e
eI i I I# O OI u V
y yE
@ a aI aU e E E2 i
o O u


** : ; b c d D dZ
dz dZ; f g h j k l
L ll m n n^ p r R
R2 s S t T tS ts v
w z Z
* : ? b d dZ f g
h j k l m n N n^
p r R R2 s S t tS
v w x z




Dictionary sw_dict
Dictionary is_dict


@- a a/ e i m- n- N-
o u
& @- a aI aU e E eI
i I o O oU oU2 u W
y y# Yy


* : b d D f g h
j J k l m n N n^
p Q R s S t T tS
v w x z
* ** : ; b c C d
D f g h j J k l
l# m m# n N n# N# n^
n^# p Q r R r# R2 s
s2 t T tl# v x z




Dictionary fi_dict
Dictionary it_dict


& &i &y a a2 ai au e
ei eu ey i I ie iu iy
o oi ou u ui uo Y y
Yi yi Yy yY
@- a a/ aI aU e E eI
i I o O u


: b d f g h j k
l m n N p r s S
s2 t v w Z
* : ; b d dZ f g
h j k l l^ m n N
n^ p r R s S t tS
ts v w w2 z




Dictionary pl_dict
Dictionary jbo_dict


a E E# E~ i O O~ u
y
@ a aI aU e eI i l-
o oI r- u


: ; b c C d d; dZ
dz dz; f g h j k l
m n N n^ p r R s
S s; S; t t; tS ts ts;
tS; v w x z Z Z;
- b d dZ f g h j
k l m n N p R s
S t tS v w x z Z




Dictionary no_dict
Dictionary kn_dict


@ @2 a A a: A: AI aI
aU E E: e: I i: O o:
OI U u- u-: u-I u: W y
y: Y: Yy
a a: aI aU e E e: i
I i: o o: r- u u: V
y


: ; b d f g h j
k l m n N p r R
s S s; t v w x z
: b bh c ch d d. dh
dh. dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s S
s. S; t t. th th. tS v
w z




Dictionary vi_dict
Dictionary ku_dict


@ @: @:I @:U @I @U a a:
a:I a:U aI aU E e eU EU
i i@ iU O o OI oI u
u@ uI y y@ yI
8 a e E E# eI eU i
I o u U y


b c d D f g h j
J k kh l m n N n^
p Q r s s. t t[ ts;
tS; v w x z Z z.
* : b c d dZ f g
h j J k l m n p
q r R s S t tS v
w x z Z




Dictionary ro_dict
Dictionary la_dict


@ @- @I @U a aI aU e
ea eI eo eU i i/ I^ iI
iU o O Oa oI oU u uI
y Y yI yU
@- a a: aI aU E e: EU
I i: O o: OI U u: y
y:


* *; - b b; c C d
d; dZ f f; g h j k
l l; m m; n N n; p
p; r s S S; t t; tS
ts ts; v v; w w2 x z
Z z; Z;
* : ; <h> ? b d f
g h j k l m n N
p r R s t w z




Dictionary lv_dict Dictionary lv_dict
tS ts v z Z tS ts v z Z




Dictionary pt_dict
Dictionary mk_dict


& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
i I i/ iU o O oI OI
o~ u U uI u~ y
& @ @- @2 a A a: E
e e: i I i: l- o o:
oU r- u u:


* : ; b C d dZ f
g h j k l l^ m n
N n^ p Q r R r- s
S s# s; t T tS ts v
w x z Z
* b d dZ dz dZ; f g
h j k k^ l l^ m n
N n^ p r R s S t
tS ts tS; v x z Z




Dictionary tr_dict
Dictionary ml_dict


a e E i I o O u
U u# W y Y
a a: aI aU e E e: i
I i: o o: r- u u: V
y


* : b c d dZ f g
h j J k l m n p
Q r R s S t tS v
w z Z
: b bh c ch d d. dh
dh. dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s s.
S; t t. th th. tS v w
z z.




Dictionary ru_dict
Dictionary mn_dict


8 @- A a E e E# E2
E3 i I I# I2 I3 I^ ja
ju o O u u" u# V V#
y Y
a e i o O o: U u


* ; b d d; dZ; f g
j k l l^ m m; n n^
p r R s S s; S; t
t; ts ts; tS; v x z Z
z; Z;
: ; c f g j k L
m n p p# R s S t
t# tS ts ts# w x




Dictionary eo_dict
Dictionary ne_dict


@- a aI aU e eI eU i
o oI u uI
@ @/ @2 @3 a aI aU a~
e E eI eU e~ E~ i I
i~ l- o O o: oI oU O~
o~ r- u uI u~ V VI VU
V~


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




Dictionary mk_dict
Dictionary nl_dict


& @ @- @2 a A a: E
e e: i I i: l- o o:
oU r- u u:
8 @ @- A a: E e: EI
eU i I O O: o: u VU
Wy y Y: yU


* b d dZ dz dZ; f g
h j k k^ l l^ m n
N n^ p r R s S t
tS ts tS; v x z Z
* : ; b C d f g
h j k l m n N n^
p Q r s S t tS v
v2 w x z




Dictionary es_dict
Dictionary no_dict


a aI aU e E eI eU i
o O oI u
@ @2 a A a: A: AI aI
aU E E: e: I i: O o:
OI U u- u-: u-I u: W y
y: Y: Yy


* ** : b B d D f
g j J J^ k l m n
N n^ p Q R R2 s t
T tS v v# w x z
: ; b d f g h j
k l m n N p r R
s S s; t v w x z




Dictionary is_dict
Dictionary pap_dict


& @- a aI aU e E eI
i I o O oU oU2 u W
y y# Yy
a a/ aI e E eI i o
O u y Y


* ** : ; b c C d
D f g h j J k l
l# m m# n N n# N# n^
n^# p Q r R r# R2 s
s2 t T tl# v x z
: ? b d dZ f g h
j k l m n N n^ p
R s S t tS v w x
z Z




Dictionary da_dict
Dictionary pa_dict


& 0 3 @ @- a A e
E i o O u V W y
Y
@ a a~ e E e~ E~ i
I i~ I~ o O O~ o~ r-
U u u~ U~ V V~


* - : ; ? b d D
dZ f g h j k l L
m n N n^ p r R s
S t tS v w
: ; b bh c ch d d.
dh dh. f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q R R2
s S t t. th th. v x
z




Dictionary de_dict
Dictionary pl_dict


3 @ @- a A A: aI aU
E E2 E: e: EI I i2 i:
O o: OY U u: W y y:
Y:
a E E# E~ i O O~ u
y


* : ; b C C2 d D
dZ f g h j k l m
n N p pF r s S t
tS ts v x z Z
: ; b c C d d; dZ
dz dz; f g h j k l
m n N n^ p r R s
S s; S; t t; tS ts ts;
tS; v w x z Z Z;




Dictionary sv_dict
Dictionary prs_dict


8 @ a a2 A: E E- e:
E: I i: O o: U u- u:
W y y: Y:
@ A i o


: ; b d f g h j
k l m n N p R s
S s. S; sx t v w z
b d h l t X




Dictionary la_dict
Dictionary pt_dict


@- a a: aI aU E e: EU
I i: O o: OI U u: y
y:
& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
i I i/ iU o O oI OI
o~ u U uI u~ y


* : ; <h> ? b d f
g h j k l m n N
p r R s t w z
* : ; b C d dZ f
g h j k l l^ m n
N n^ p Q r R r- s
S s# s; t T tS ts v
w x z Z




Dictionary hi_dict
Dictionary ro_dict


@ @- @2 @3 a a: aI aU
e E e: E: E~ i I i:
l- o O o: O: O~ o~ r-
U u: u~ V
@ @- @I @U a aI aU e
ea eI eo eU i i/ I^ iI
iU o O Oa oI oU u uI
y Y yI yU


- : b bh c ch d d.
dh dh. f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q q r
r. s S s. t T t. th
th. v w x z
* *; - b b; c C d
d; dZ f f; g h j k
l l; m m; n N n; p
p; r s S S; t t; tS
ts ts; v v; w w2 x z
Z z; Z;




Dictionary ta_dict
Dictionary ru_dict


a a: aI aU e E e: i
I i: o o: U u u: V
8 @- A a E e E# E2
E3 i I I# I2 I3 I^ ja
ju o O u u" u# V V#
y Y


: ; b C d d. dZ f
g h j k l l. m n
N n. n^ p r R s S
s. t t. th tS v w z
z.
* ; b d d; dZ; f g
j k l l^ m m; n n^
p r R s S s; S; t
t; ts ts; tS; v x z Z
z; Z;




Dictionary bn_dict
Dictionary rw_dict


& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
O~ o~ r- U u u: u:~ u~
V
a e i o u


* b B bh c C ch d
d. dh dh. g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. th th. tS x z
* : b B c d dZ f
g h j J k l m n
N n^ p q R s S S;
t tS v w x z




Dictionary eu_dict
Dictionary sk_dict


a aI aU e eI eU i o
oI u Y
& @- a a: e e: i i:
l- l: o o: oU r- r: u
u:


* ** : ; b B c d
D f g h j J k l
l^ m n n^ p Q r R
s S t tS ts tz v w
x z
* ; b d d; dZ dz f
g h j k l l^ m n
N n^ p r R R^ R^/ s
S t t; tS ts v x z
Z




Dictionary kn_dict
Dictionary sq_dict


a a: aI aU e E e: i
I i: o o: r- u u: V
y
@ @/ a A a/ aI E e
eI i I I# O OI u V
y yE


: b bh c ch d d. dh
dh. dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s S
s. S; t t. th th. tS v
w z
** : ; b c d D dZ
dz dZ; f g h j k l
L ll m n n^ p r R
R2 s S t T tS ts v
w z Z




Dictionary ml_dict
Dictionary sv_dict


a a: aI aU e E e: i
I i: o o: r- u u: V
y
8 @ a a2 A: E E- e:
E: I i: O o: U u- u:
W y y: Y:


: b bh c ch d d. dh
dh. dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s s.
S; t t. th th. tS v w
z z.
: ; b d f g h j
k l m n N p R s
S s. S; sx t v w z




Dictionary mn_dict
Dictionary sw_dict


a e i o O o: U u
@- a a/ e i m- n- N-
o u


: ; c f g j k L
m n p p# R s S t
t# tS ts ts# w x
* : b d D f g h
j J k l m n N n^
p Q R s S t T tS
v w x z




Dictionary ne_dict
Dictionary ta_dict


@ @/ @2 @3 a aI aU a~
e E eI eU e~ E~ i I
i~ l- o O o: oI oU O~
o~ r- u uI u~ V VI VU
V~
a a: aI aU e E e: i
I i: o o: U u u: V


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




Dictionary pap_dict
Dictionary tr_dict


a a/ aI e E eI i o
O u y Y
a e E i I o O u
U u# W y Y


: ? b d dZ f g h
j k l m n N n^ p
R s S t tS v w x
z Z
* : b c d dZ f g
h j J k l m n p
Q r R s S t tS v
w z Z




Dictionary rw_dict
Dictionary vi_dict


a e i o u
@ @: @:I @:U @I @U a a:
a:I a:U aI aU E e eU EU
i i@ iU O o OI oI u
u@ uI y y@ yI


* : b B c d dZ f
g h j J k l m n
N n^ p q R s S S;
t tS v w x z
b c d D f g h j
J k kh l m n N n^
p Q r s s. t t[ ts;
tS; v w x z Z z.




Dictionary pa_dict
Dictionary zh_dict


@ a a~ e E e~ E~ i
I i~ I~ o O O~ o~ r-
U u u~ U~ V V~
@ @r a A ai Au E ei
i i. i[ iA iE io iou N-
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu


: ; b bh c ch d d.
dh dh. f g gh H j J
Jh k kh l l. m n N
n. n^ p ph Q R s S
t t. th th. v x z
(u) ; C f h j k kh
l L m n N p ph q
r s s. S; t th ts ts.
ts. tS; tS; tsh v w x X
z.




Dictionary prs_dict
Dictionary zhy_dict


@ A i o
a aa aai aan aau ai au e
ei eo eoi eu i iu o oe
oi ong ou u ui yu


b d h l t X
b c d f g h j k
l m n N p r s t
tS v w z

+ 7
- 6
dictsource/en_list View File

_?? sImb@L _?? sImb@L
_#9 tab _#9 tab
_#32 speIs _#32 speIs
… _::d%0td,0t // for elipsis or ... while reading


_  hA@dspeIs // U+00A0 no-break-space _  hA@dspeIs // U+00A0 no-break-space
_! Ekskl@m'eIS@n _! Ekskl@m'eIS@n
academe a2kad@mI academe a2kad@mI
access aksEs $onlys access aksEs $onlys
access aksEs $verb access aksEs $verb
accouche a2ku:S
accouchement a2ku:SmO~
acer eIs3 acer eIs3
aces eIsI2z aces eIsI2z
acetylene a2sEt@li:n acetylene a2sEt@li:n
moustache m@st'aaS moustache m@st'aaS
mouths maUDz $only mouths maUDz $only
movies mu:vI2z movies mu:vI2z
multitude $1
multiplexer $1
mundane $2 mundane $2
murmur m3:m3 murmur m3:m3
?5 murmur mVRm3 ?5 murmur mVRm3
nocturnal $2 nocturnal $2
nomenclature n@mENkl@tS3 nomenclature n@mENkl@tS3
nonsense n0ns@ns nonsense n0ns@ns
nonetheless n0nD@l'Es
nonetheless nVnD@l'Es
nosedive noUzdaIv nosedive noUzdaIv
not noUt // for noted, notable, etc not noUt // for noted, notable, etc
nott n0t nott n0t
pastry peIstrI pastry peIstrI
pate pateI pate pateI
pathos peIT0s pathos peIT0s
paypal peIpal
pear pe@ pear pe@
peculiar pI2kju:lI3 peculiar pI2kju:lI3
pedalo pEd@loU pedalo pEd@loU
Graham greI@m Graham greI@m
Hadrian heIdri:@n Hadrian heIdri:@n
Harriet hari@t Harriet hari@t
Hugh hju:
Hughes hju:z
Huw hju: Huw hju:
Iain i:@n Iain i:@n
Ian i:@n Ian i:@n
their De@ $u $nounf $only their De@ $u $nounf $only
theirs De@z theirs De@z


none n0n
none nVn
noone noUw0n noone noUw0n
anyone EnIw0n anyone EnIw0n
everyone EvrIw0n everyone EvrIw0n
?3 err e@ ?3 err e@
?3 fortune fO@tS@n ?3 fortune fO@tS@n
?3 garage ga2rA:Z ?3 garage ga2rA:Z
?3 happy hapi:
?3 herb 3:b ?3 herb 3:b
?3 hurricane h3:@keIn ?3 hurricane h3:@keIn
?3 investigative Inv,EstI2g'eItIv ?3 investigative Inv,EstI2g'eItIv

+ 17
- 7
dictsource/en_rules View File

ch) ar (it ar ch) ar (it ar
ph) ar (i ar ph) ar (i ar
m) ar (i @r m) ar (i @r
m) ar (ig ar
m) ar (inaC ar
_m) ar (i ar
m) ar (in @r
_m) ar (inaC ar
m) ar (iner ar m) ar (iner ar
m) ar (io ar m) ar (io ar
htm) ar e@ htm) ar e@
&) ar (in_ @r &) ar (in_ @r
v) ar (iA e@r v) ar (iA e@r
@) ar (ity ar @) ar (ity ar
ar (iu 'e@r
ar (iu+ 'e@r
arom (at a2roUm arom (at a2roUm
arre (_ A@ arre (_ A@
arred (_ A@d arred (_ A@d
ch (é+ S ch (é+ S
ch (ef S ch (ef S
ch (em k ch (em k
chement (_ =SmO~
ch (ev S ch (ev S
chez SeI chez SeI
Ca) ch (e S Ca) ch (e S
en (core 0n en (core 0n
&) ency (_ @ns%I &) ency (_ @ns%I
ency (cli %EnsI ency (cli %EnsI
en (dA_ 'En
_) en (d En _) en (d En
_) en (da %En _) en (da %En
eg) en (d @n eg) en (d @n
p) ie (_ aI p) ie (_ aI
pp) ie (_ I pp) ie (_ I
ie (f i: ie (f i:
iege i:dZ
ieg (e# i:dZ
ie (go I'eI ie (go I'eI
ieh (C i: ieh (C i:
iei (_ i:aI iei (_ i:aI
ie (t aI@ ie (t aI@
@) ie (th i@ @) ie (th i@
iesta i:'Est@ iesta i:'Est@
iette I2'Et
ie (tt I2'E
@) iety 'aI@t%I @) iety 'aI@t%I
l) ieu u: l) ieu u:
l) ieu (te %Ef l) ieu (te %Ef
@) most(_S4 moUst @) most(_S4 moUst
&) mouth (_ m@T &) mouth (_ m@T
_) multi mVltI _) multi mVltI
_) multi (@@P5 m,VltI


.group mi .group mi
millen mI2lEn millen mI2lEn
oa oU oa oU
oar (_ o@ oar (_ o@
oar o@ oar o@
o (atia oU
cr) o (at oU
br) oa (d O: br) oa (d O:
o (ba oU o (ba oU
t) o (bacc @ t) o (bacc @
@) or (ic_ '0r @) or (ic_ '0r
or (ig 0r or (ig 0r
&) ored (_ @d &) ored (_ @d
h) ored (_S1 d
_f) ore (C O@ _f) ore (C O@
f) ore (clo %o@ f) ore (clo %o@
f) ore (st 0rI f) ore (st 0rI
_ca) su Zu: _ca) su Zu:
_) sus (A su:z _) sus (A su:z
su (al Zu: su (al Zu:
n) su (al sju:
_) su (b sV _) su (b sV
su (bdue s%V su (bdue s%V
su (bmerg s@ su (bmerg s@
tsch tS tsch tS
_) two tu: _) two tu:
ttu (r t@ ttu (r t@
@) tu (al tSu:
@) tu (late =tSU @) tu (late =tSU
@) tur (A tS@r @) tur (A tS@r
@) tur (al_ tS=@r @) tur (al_ tS=@r
f) u (gal 'ju: f) u (gal 'ju:
ug (er_ u:g ug (er_ u:g
s) ugge (st @dZE s) ugge (st @dZE
h) ugh ju:
mp) ug (n ju: mp) ug (n ju:
uh (C u: uh (C u:
u (i ju: u (i ju:
_f) ully UlI _f) ully UlI
f) ull Ul f) ull Ul
p) ull Ul p) ull Ul
_) ultra (@ ,Ultra
u (ly u: u (ly u:
d) u (ly ju: d) u (ly ju:
u (lul V u (lul V
uoy OI uoy OI
_) us (_ Vz _) us (_ Vz
_) us (A ju:z _) us (A ju:z
usu (al ju:Zu:
&) us (_ @s &) us (_ @s
usua (l ju:Zu:
u (sh V u (sh V
b) u (sh U b) u (sh U
c) u (sh U c) u (sh U
En (_ @n En (_ @n
?8 En (_ En ?8 En (_ En
En (atA @n En (atA @n
En (dA_ 'En
E (ndous E E (ndous E
Ener (_ _n@ Ener (_ _n@
Ening (_ _nI2N Ening (_ _nI2N

+ 8
- 9
dictsource/fr_list View File



// 2006-11-18 Gilles Casse <[email protected]> // 2006-11-18 Gilles Casse <[email protected]>
// //
// Updated 2009-10-09 Michel Such <[email protected]>
// Updated 2009-10-26 Michel Such <[email protected]>
// //
// * Numbers, a few abbreviations and exceptions. // * Numbers, a few abbreviations and exceptions.
// //
avant $u+ avant $u+
après $u+ après $u+
(temps en temps) tA~zA~tA~ (temps en temps) tA~zA~tA~
alors alOr $u+
depuis $u+
ainsi $u+ ainsi $u+
alors alOr $u+
aussi $u+ aussi $u+
encore $u+
depuis $u+




certes $u+ certes $u+
tel $u+ tel $u+
telle $u+ telle $u+
telles $u+ telles $u+
tout t'ut2 $u+
toute t'ut $u+
toutes t'utz2 $u+
tous $u+
rien Ri-'E~n2 $u+
tout t'ut2
rien Ri-'E~n2


// Letters which can be words // Letters which can be words
//=========================== //===========================
arte arte arte arte
auvent ovA~ auvent ovA~
beta beta beta beta
bien bi-E~n2 $u+
bien bi-E~n2
bis bis bis bis
bissus bisys bissus bisys
blues _^_en blues _^_en
wallis wAlis wallis wAlis
futuna futuna futuna futuna
zimbabwe zimbabwe zimbabwe zimbabwe


+ 1
- 0
dictsource/fr_rules View File









+ 424
- 149
dictsource/hu_list View File

_1M1o EzR2Edik _1M1o EzR2Edik
_2M1o ke:tEzR2Edik _2M1o ke:tEzR2Edik


_0-a A
_0-i Ei
_0-e E
_0-án a:n
_0-ára a:R2A
_0-ére e:R2E
_0-ra a:R2A
_0-re e:R2E
_0-én e:n
_0-ai Ai
_0-ei Ei
(1-e) elseje $text
(1-én) elsején $text
(1-jén) elsején $text
(1-i) elsejei $text
(1-ei) elsejei $text
(1-ére) elsejére $text
(1-re) elsejére $text
(2-i) másodikai $text
(3-i) harmadikai $text
(6-i) hatodikai $text
(8-i) nyolcadikai $text
(13-i) tizenharmadikai $text
(16-i) tizenhatodikai $text
(18-i) tizennyolcadikai $text
(20-i) huszadikai $text
(23-i) huszonharmadikai $text
(26-i) huszonhatodikai $text
(28-i) huszonnyolcadikai $text
(30-i) harmincadikai $text

// $alt2 means these rules only apply if the previous word
// has $alt1 (language specific). $text implies $only (for this group only)

_0-a A $alt2
_0-i Ei $alt2
_0-e E $alt2
_0-án a:n $alt2
_0-ára a:R2A $alt2
_0-ére e:R2E $alt2
_0-ra a:R2A $alt2
_0-re e:R2E $alt2
_0-én e:n $alt2
_0-ai Ai $alt2
_0-ei Ei $alt2
_0-től e:tY:l $alt2
_0-tól a:to:l $alt2
_0-ig e:ig $alt2 //special date ordinal numbers for example elsejéig, negyedikéig etc.

(1-e) elseje $text $alt2
(1-én) elsején $text $alt2
(1-jén) elsején $text $alt2
(1-i) elsejei $text $alt2
(1-ei) elsejei $text $alt2
(1-ére) elsejére $text $alt2
(1-re) elsejére $text $alt2
(1-től) elsejétől $text $alt2
(1-ig) elsejéig $text $alt2

(2-i) másodikai $text $alt2
(2-ig) másodikáig $text $alt2
(3-i) hAR2_mAdikAi $alt2
(3-ig) harmadikáig $text $alt2
(6-i) hAtodikAi $alt2
(6-ig) hatodikáig $text $alt2
(8-i) n^'oltsAdikAi $alt2
(8-ig) nyolcadikáig $text $alt2
(13-ig) tizenharmadikáig $text $alt2
(16-ig) tizenhatodikáig $text $alt2
(18-ig) tizennyolcadikáig $text $alt2
(20-i) huszadikai $text $alt2

(20-ig) huszadikáig $text $alt2
(23-ig) huszonharmadikáig $text $alt2
(26-ig) huszonhatodikáig $text $alt2
(28-ig) huszonnyolcadikáig $text $alt2
(30-ig) harmincadikáig $text $alt2
(30-i) harmincadikai $text $alt2



// these exceptions only for 0, not for other numbers ending in '0'
(0-ás) nul:a:S
(0-t) nul:a:t
(0-val) nul:a:vAl

// entries with a single digit such as (2-i) also apply to 22, 32, etc, unless $only

// with these suffixes, use [J:] not [J]
(1-es) EJ:ES
(1-et) EJ:Et
(1-est) EJ:ESt
(1-esét) EJ:ESe:t
(1-esével) EJ:ESe:vEl
(1-essel) EJ:ES:El
(1-eseik) EJ:ESEik
(1-eseikkel) EJ:ESEik:El
(1-eseiket) EJ:ESEikEt
(1-esekkel) EJ:ESEk:El
(1-esek) EJ:ESEk
(1-el) EJ:El

(2-es) kEt:ES
(2-est) kEt:ESt
(2-essel) kEt:ES:El
(2-őt) kEt:Y:t
(2-esen) kEt:ESEn
(2-esével) kEt:ESe:vEl
(2-n) kEt:Y:n
(2-esekkel) kEt:ESEk:El
(2-eseket) kEt:ESEkEt
(2-eseik) kEt:ESEik

(3-as) ha:R2mAS
(3-asának) ha:R2mASa:nAk
(3-ason) ha:R2mASon
(3-assal) ha:R2mAS:Al
(3-asával) ha:R2mASa:vAl
(3-ast) ha:R2mASt
(3-at) ha:R2mAt
(3-al) ha:R2om:Al

(4-el) ne:J:El //4 number suffixes (now contains one suffix)
(5-tel) Yt:El
(5-el) Yt:El
(6-al) hAt:Al
(6-tal) hAt:Al

(7-es) hEtES
(7-est) hEtESt
(7-esek) hEtESEk
(7-eseket) hEtESEkEt
(7-esekkel) hEtESEk:El
(7-esbe) hEtESbE
(7-esben) hEtESbEn
(7-esük) hEtESyk
(7-tel) he:t:El
(7-el) he:t:El

(10-es) tizES // use [i] not [i:]
(10-est) tizESt
(10-essel) tizES:El
(10-esével) tizESe:vEl

(20-as) husAS // use [u] not [u:]
(20-ast) husASt
(20-assal) husAS:Al
(20-asával) husASa:vAl

//special number exceptions
(10-el) ti:zzEl
(20-al) hu:s:Al
(30-al) hAR2mints:Al
(40-el) nEJvEn:El
(50-el) YtvEn:El
(60-al) hAtvAn:Al
(70-el) hEtvEn:El
(80-al) n^oltsvAn:Al
(90-el) kilEntsvEn:El


// These words mean that a dot after number, immediately preceding, does not mean an ordinal number // These words mean that a dot after number, immediately preceding, does not mean an ordinal number
január $alt január $alt
//The following 12 row contains shorter hungarian month names //The following 12 row contains shorter hungarian month names
jan $alt jan $alt
feb $alt feb $alt
febr $alt
márc $alt márc $alt
ápr $alt ápr $alt
máj $alt máj $alt
// Abbreviations // Abbreviations
ÁNTSZ a:Ente:Es $allcaps ÁNTSZ a:Ente:Es $allcaps
km kilo:me:tER2 km kilo:me:tER2
GYSEV JESEv $allcaps
GYESEV JESEv $allcaps
HÉV he:v $allcaps
City siti $capital
GDP dZi:di:pi: $allcaps
HSDPA $abbrev $allcaps
ORTT $abbrev $allcaps
ORFK oEREfka: $abbrev $allcaps
MÁV ma:v $allcaps
MTI $abbrev $allcaps
mm milime:tER2 mm milime:tER2


VDSZSZ ve:de:EsEs $allcaps
a.m An^n^i||m'int $dot a.m An^n^i||m'int $dot
ún u:JnEvEzEt: $dot
dr doktoR2 $dot dr doktoR2 $dot
mr mistER2 $dot //in hungarian we not use, but lot of books contains this word.
mrs misis $dot //In hungarian we not use, but lot of book contains this word.
gpu $abbrev gpu $abbrev
GB gigAba:jt $allcaps
MB mEgAba:jt $allcaps
OK ok $allcaps
mvgyosz Emve:Je:oEs mvgyosz Emve:Je:oEs
OTP $abbrev
OTP o:te:pe: $allcaps
id idY:SEb: $dot id idY:SEb: $dot
ill illEtvE $dot ill illEtvE $dot
ifj ifjAb: $dot ifj ifjAb: $dot




// Articles // Articles
a $u // the
az $u
aki $u+ // that
a $u $strend2 // the
az $u $strend2
//aki $u+ // that


ez $u+ // this
ez $unstressend // this




// Pronouns // Pronouns


// If these are only used for emphasis then then don't need $u // If these are only used for emphasis then then don't need $u
// én $u
// te $u
// ő $u
// mi $u
// ti $u
// ők $u
// maga $u
// maguk $u
én $unstressend
te $unstressend

ők $unstressend $pause
mi $unstressend
ti $unstressend
ők $unstressend
maga $unstressend
maguk $unstressend




// Conjunctions // Conjunctions
miatt $u // because miatt $u // because
bár $u $pause // although bár $u $pause // although
habár $u $pause // although habár $u $pause // although

ha $u $pause // if ha $u $pause // if
noha $u $pause // even thought noha $u $pause // even thought






// Negative // Negative
nem $u $combine $strend
ne $u+
nem $unstressend $combine $strend
ne $unstressend


e $u // "-e" question e $u // "-e" question
e $atend // stressed at end of sentence e $atend // stressed at end of sentence


// Unstressed adverbs prepositions etc. // Unstressed adverbs prepositions etc.
néhány $u+
néhány $unstressend
is $u // also is $u // also


elöl $u // in front of
elől $u
elé $u
előtt $u

mögül $u // behind
mögött $u
mögé $u

kívül $u
után $u // after

alól $u
alá $u
alatt $u // below

felől $u // above
felé $u
fölé $u
felett $u // above
fölött $u

mellől $u // besides
mellé $u
mellett $u

közül $u
közé $u
között $u

elöl $unstressend // in front of
elől $unstressend
elé $unstressend
előtt $unstressend

mögül $unstressend // behind
mögött $unstressend
mögé $unstressend

kívül $unstressend
után $unstressend // after

alól $unstressend
alá $unstressend
alatt $unstressend // below

felől $unstressend // above
felé $unstressend
fölé $unstressend
felett $unstressend // above
fölött $unstressend

//mellől $u // besides
//mellé $u
//mellett $u
lett $unstressend
ott $unstressend
itt $unstressend
neked $unstressend
nektek $unstressend
nekik $unstressend
neki $unstressend
nekem $unstressend
//közül $u
//közé $u
//között $u
an $u // so many persons an $u // so many persons
as $u as $u
ba $u // into
ban $u // in
be $u
ben $u
ból $u // from inside
ből $u
ba $unstressend // into
ban $unstressend // in
be $unstressend
ben $unstressend
ból $unstressend // from inside
ből $unstressend
e $u // in query, his/her e $u // in query, his/her
ei $u // his her multiole ei $u // his her multiole
en $u en $u
es $u es $u
hez $u
hoz $u // to
höz $u
ig $u // up to
ik $u // -th
nak $u // of, him/her
nek $u
nál $u // by
nél $u
on $u // on
en $u // on
hez $unstressend
hoz $unstressend // to
höz $unstressend
ig $unstressend // up to
ik $unstressend // -th
nak $unstressend // of, him/her
nek $unstressend
nál $unstressend // by
nél $unstressend
on $unstressend // on
en $unstressend // on
os $u os $u
ra $u // onto
re $u
ról $u // from top of, about
röl $u
ről $u
ra $unstressend // onto
re $unstressend
ról $unstressend // from top of, about
röl $unstressend
ről $unstressend
szer $u szer $u
szor $u // times szor $u // times
szó $unstressend
szór $u szór $u
ször $u ször $u
tól $u // from
töl $u
től $u
val $u // with
vel $u
tól $unstressend // from
töl $unstressend
től $unstressend
val $unstressend // with
vel $unstressend
án $u // on that day án $u // on that day
é $u // his, her é $u // his, her
éi $u // his, her multiple éi $u // his, her multiple
én $u
én $unstressend
ón $u ón $u
ós $u ós $u
ön $u
ön $unstressend
ös $u ös $u


ellen $u // against
elé $u // before
óta $u // since

sok $u // many
kevés $u // few
se $u // neither
sem $u // nor


be $u //into
ki $u // out of
le $u // down
fel $u // up
föl $u // up
meg $u // finish an action
el $u // away
át $u //through
rá $u //onto
ide $u // here
oda $u // there
szét $u //apart
össze $u //connect with
vissza $u //back
ellen $u //against

volna $u // would
részén $u //on ... part of

nélkül $u // without
folytán $u // because of
úgy $u // like that
így $u // like this
egyaránt $u // alike
minden $u // all
részben $u // partly

egyik $u // one of
másik $u // the other
ellen $unstressend // against
//elé $u // before
//óta $u // since

sok $unstressend // many
kevés $unstressend // few
se $unstressend // neither
sem $unstressend // nor


be $unstressend //into
ki $unstressend // out of
le $unstressend // down
fel $unstressend // up
föl $unstressend // up
meg $unstressend // finish an action
el $unstressend // away
át $unstressend //through
rá $unstressend //onto

ide $unstressend // here
oda $unstressend // there
szét $unstressend //apart
//össze $u //connect with
//vissza $u //back
volna $unstressend // would
//részén $u //on ... part of

nélkül $unstressend // without
//folytán $u // because of
úgy $unstressend // like that
így $unstressend // like this
egyaránt $unstressend // alike
//minden $strend // all
mindent $strend
//részben $u // partly

egyik $unstressend // one of
//másik $u // the other
lehet $unstressend
rossz $unstressend
jó $unstressend
jót $unstressend
kér $unstressend
tartják $unstressend
erős $unstressend
lennie $unstressend
közt $u+
levegőjére $unstressend
ad $unstressend
kapják $unstressend
kap $unstressend
már $unstressend
maradt $unstressend
jobb $unstressend
most $unstressend
még $unstressend
gép $unstressend
részt $unstressend
lenne $unstressend
őt $unstressend
helyes $u+
fák $unstressend
et $unstressend
megvédeni $unstressend
sztrájk $unstressend
hír $unstressend
magukat $unstressend
majd $unstressend
áll $unstressend
állt $unstressend
arról $unstressend
innen $unstressend
érjen $unstressend
nap $unstressend
név $unstressend
lány $unstressend
lányt $unstressend
vár $unstressend
várt $unstressend
ért $unstressend
ér $unstressend
tag $unstressend
tesz $unstressend
tett $unstressend
tette $unstressend
baj $unstressend
csak $unstressend
vált $unstressend
jut $unstressend
legyen $unstressend
azt $unstressend
ezt $unstressend
út $unstressend
tiszt $unstressend
vesz $unstressend
cég $unstressend
járt $unstressend
jár $unstressend
él $unstressend
élsz $unstressend
élt $unstressend
hát $unstressend
fiú $unstressend
srác $unstressend
ült $unstressend
ám $unstressend
rám $unstressend
tűnik $unstressend
nyújt $unstressend
nincsen $unstressend
mégy $unstressend
nő $unstressend
nőt $unstressend
sas $unstressend
sast $unstressend
fél $unstressend
félt $unstressend
félsz $unstressend
düh $unstressend
más $unstressend
mást $unstressend
rúd $unstressend
mint $unstressend $brk $combine
iránt $unstressend
légy $unstressend
tűnt $unstressend
ösét $unstressend
új $unstressend
nyúlt $unstressend
magát $unstressend
engem $unstressend
téged $unstressend
minket $unstressend
titeket $unstressend
őket $unstressend
cikk $unstressend
vont $unstressend
mond $unstressend
jutni $unstressend
jött $unstressend
szólsz $unstressend
lőtt $unstressend
sor $unstressend
árt $unstressend
fest $unstressend
fújt $unstressend
kért $unstressend
tét $unstressend
kém $unstressend
jön $unstressend
bent $unstressend
kezd $unstressend
ránk $unstressend
gondolt $unstressend
dönt $unstressend
véli $unstressend
folyt $unstressend
döntött $unstressend
fájt $unstressend
hozni $unstressend
lát $unstressend
kép $unstressend
nyert $unstressend
függ $unstressend
hidd $unstressend
megy $unstressend
hírt $unstressend
hely $unstressend
jutott $unstressend
mit $unstressend
forrás $unstressend
terv $unstressend
mind $unstressend
ment $unstressend
jól $unstressend
napját $unstressend
több $unstressend
tart $unstressend
hág $unstressend




// word pairs // word pairs
lesznek $u lesznek $u




kell $u+ // should
kell $unstressend // should


szabad $u+ // can (allowed) szabad $u+ // can (allowed)


ø $accent ø $accent
ß _^_DE ß _^_DE


. pont $max3
… _p%ontp%ontp%ont // 3 or more dots are changed to elipsis
. p%ont $max3
_. pont
* tSillAg $max3 * tSillAg $max3
% sa:zAle:k $max3 % sa:zAle:k $max3
+ plus $max3 + plus $max3
_] z'a:R2o:sYglEtES $max3 _] z'a:R2o:sYglEtES $max3
_{ k'EzdY:kAptSoS $max3 _{ k'EzdY:kAptSoS $max3
_} v'e:gkAptSoS $max3 _} v'e:gkAptSoS $max3
_… pontpontpont $max3
_… pontpontpont

_• di:spont _• di:spont
_| fyg:Y:lEgESvonAl _| fyg:Y:lEgESvonAl
_> nAJob _> nAJob




(Szvsz) eszvéesz (Szvsz) eszvéesz
(edik szeptember) szeptember
(CD-k) cédék
(cd-k) cédék
(CD-n) cédén
(cd-n) cédén
(cd-d) cédéd
(CD-d) cédéd
(db-os) darabos
(db-ot) darabot



+ 118
- 37
dictsource/hu_rules View File


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


û ű û ű





.group a .group a
a A a A
_) a (_ %A _) a (_ %A
_) alattvaló _!'AlAtvAlo:
D00_-) al (_ zAl // double z for 100-al
000_-) al (_ Al // ... but not 1000-al
_) alattvaló AlAtvAlo:


.group á .group á
á a: á a:
@) ban (_S3 bAn @) ban (_S3 bAn
@) ben (_S3 bEn @) ben (_S3 bEn


biz (A b'iz, // bizalmas etc.
biz (A biz, // bizalmas etc.
biedermeier bi:dER2ma:jER2 biedermeier bi:dER2ma:jER2


.group c .group c
cs tS cs tS
ccs tS: ccs tS:
!) cz ts // in names which start with a capital letter !) cz ts // in names which start with a capital letter
ar) csz (e ts
harmin) c ts
csz ts|s
ar) c (cson ts
anar) ch (i C anar) ch (i C
balda) ch (in C balda) ch (in C
hierar) ch (i C hierar) ch (i C
szé) ch tS szé) ch tS
_zi) ch (y tS _zi) ch (y tS


c (szín tS


dA) c (sz ts
kilen) c (sz ts
kvar) c (sz ts
mala) c (sá ts mala) c (sá ts
nyol) c (sz ts
har) c (sz ts
lán) c (sz ts
pá) c (só ts pá) c (só ts
per) c (sz ts
pol) c (so ts pol) c (so ts
por) c (sé ts por) c (sé ts
por) c (sz ts por) c (sz ts
rán) c (sz ts
tán) c (sz ts


_szé) che (ny tSe: _szé) che (ny tSe:
_szé) ché (ny tSe: _szé) ché (ny tSe:
_sto) ck (holm k _sto) ck (holm k
har) c (csoport ts
_) church tSYR2tS _) church tSYR2tS
lán) c (cs ts


.group d .group d
d d d d
beszé) d (szin d beszé) d (szin d
cselé) d d cselé) d d
fogó) dz (kod ts fogó) dz (kod ts
fogó) dz (ó z
fenyegető) dz z fenyegető) dz z
föl) d (sánc d föl) d (sánc d
ha) dd (_S2 d
ha) d (járat d ha) d (járat d
ha) d (sor d ha) d (sor d
hor) d (szék d hor) d (szék d
máso) d (sor d
akaró) dz z
hallgató) dz z
húzó) dz ts
harapó) dz z harapó) dz z
himbáló) dz z himbáló) dz z
lopó) dz z
tapogató) dz z
villó) dz z
e) dz (ő dz
e) dz (és dz

pa) d (sor d pa) d (sor d
ren) d (sza d ren) d (sza d

va) d (sző d va) d (sző d
kére) dz ts kére) dz ts
mentegető) dz z mentegető) dz z
dsz ts dsz ts
dsz (C ts dsz (C ts
dsz (a ds dsz (a ds
dsz (á ds
a) dsz (A ts: a) dsz (A ts:
e) dsz (A ts: e) dsz (A ts:
o) dsz (A ts: o) dsz (A ts:


.group e .group e
e E e E
000_-) el (_ REl // double R for 1000-el
000000_-) el (_ El // ... but not 1000000-el


D_-_) es (_ %ES
_) egyezség _!'EJ:ESSe:g
_) egyezség EJ:ESSe:g


.group é .group é
é e: é e:
f f f f





.group g .group g
g g g g
gg g: gg g:
_e) gy (ik J: _e) gy (ik J:
_e) gy (üt J: _e) gy (üt J:
e) gyj (elentésű Jj e) gyj (elentésű Jj
lá) gy (sá J
gyön) gy (sor J gyön) gy (sor J
_minde) gy (ik J: _minde) gy (ik J:


na) gysz (a Js na) gysz (a Js

na) gy (sokára J
na) gy (siet J
_) goethe gY:tE _) goethe gY:tE
_) goethé gY:te: _) goethé gY:te:
me) g (gy g me) g (gy g
le) g (gy g le) g (gy g
orszá) g (gyűlés g orszá) g (gyűlés g
ú) gy (se J
seho) gy (se J


.group h .group h
h h h h
hertz hER2ts


.group i .group i
i i i i
íts i:tS: íts i:tS:
fesz) ítsd i:tSd fesz) ítsd i:tSd
ford) ítsd i:tSd ford) ítsd i:tSd
szól) ítsd i:tSd
áll) ítsd i:tSd
semmis) ítsd i:tSd semmis) ítsd i:tSd
bizony) ítsd i:tSd bizony) ítsd i:tSd




.group l .group l
l l l l
fe) l (ju l
fe) l (jö l
fe) l (jegy l
fe) l (jelen l

e) l (jö l

lj l^j lj l^j
cé) l (já jj cé) l (já jj


ly j ly j
lly jj lly jj

A) lj (A l^j A) lj (A l^j
e) l (jut l
e) l (jus l

á) ll (j j á) ll (j j
beszé) lj jj beszé) lj jj
bére) lj jj bére) lj jj
mi) ll (i l mi) ll (i l






.group m .group m
m m m m

ko) mm (uni m ko) mm (uni m




nj n^n^ nj n^n^
nyj n^n^ nyj n^n^


_) nem (- n,Em // has $combine attribute in hu_list, combine with the next word
_) nem (- nEm // has $combine attribute in hu_list, combine with the next word
me) nny (ország n^ me) nny (ország n^
me) nny (d n^ me) nny (d n^
me) nny (k n^
pihe) nj (_S2 n^
főbe) n (jár n
szí) n (játék n
ingye) n n


sze) nny (víz n^
ajá) nlj j: ajá) nlj j:




o o o o


_r) oose (velt u:z _r) oose (velt u:z
_) otthon othon
otthon othon


.group ó .group ó
ó o: ó o:
ssz ss2 ssz ss2
szts stS: szts stS:
sztsze stsE sztsze stsE
sztsza stsA
föld) s (ánc S föld) s (ánc S
s (színű S s (színű S
hel) s (inki z hel) s (inki z
rend) sz (er s: rend) sz (er s:
robbaná) s S robbaná) s S
robbaná) ss S: robbaná) ss S:

ejtőernyő) ssz S|s
krumpli) s (zsák S


.group t .group t


tc ts: tc ts:
tt t: tt t:
ttk t:k ttk t:k
tth t:h
@) tól (_S3q to:l @) tól (_S3q to:l
@) től (_S3q tY:l @) től (_S3q tY:l
tt (C tt tt (C tt
ttn t:n ttn t:n
ttm t:m
ttl t:l
ttr t:R2 ttr t:R2
ty c ty c
// s) ty c: // // s) ty c: //
apá) ts (ág tS: apá) ts (ág tS:
becsüle) t t becsüle) t t
becsüle) tt t: becsüle) tt t:
bizo) ts (ág tS:
csapa) t (jel t
cson) t t cson) t t
cson) tt t: cson) tt t:
cson) tj c cson) tj c
ezüs) tt t: ezüs) tt t:
éle) t t éle) t t
éle) tt t: éle) tt t:
fron) t (szolgál t
gyapo) t t gyapo) t t
gyapo) tt t: gyapo) tt t:
gondola) t (sor t
gráni) t t gráni) t t
gráni) tt t: gráni) tt t:
já) tsz ts: já) tsz ts:
já) tssz ts: já) tssz ts:
tsz ts:
já) tsz (m ts
tsz (_S3 ts:
tsz (é ts:
tsz (o ts:
tsz (ő ts:
tszó (_S4 ts:o:
tsz (a t|s
tsz (e t|s
tsz (á t|s
me) tsz (et ts:
ada) t t
ada) tt t:
ké) t (sarok t
ké) t (sor t
ké) t (sáv t
ké) tsz (er ts:
ö) tsz (ör ts:
hé) tsz (er ts:
kegyele) t t kegyele) t t
kegyele) tt t: kegyele) tt t:
korán) t (se t
szorí) ts (a tS: szorí) ts (a tS:
sie) ts tS:
üzle) tt t:
üzle) tj c:
ürí) ts (e tS: ürí) ts (e tS:
mula) ts tS: mula) ts tS:
nemze) ts tS: nemze) ts tS:
nemze) t (szo t nemze) t (szo t
néme) ts (ég tS: néme) ts (ég tS:
min) t t min) t t
tse tSE
tso tSo
ttsá tS:a:
tsa tSA
tsá tSa:
ts (a tS
ts (á tS
ts (e tS
ts (é tS
ts (o tS
ts (u tS
tsd tSd tsd tSd
tsé tSe:
t (cs t t (cs t
ttsé tS:e:
tsu tSu
tts tS:
tts (é tS:
tsö tSY tsö tSY
j) ts tS j) ts tS
C) tj c C) tj c
kür) t t kür) t t
kür) tj c kür) tj c
kür) t (jel t kür) t (jel t
kür) t (szó t
küldö) ttj c: küldö) ttj c:
neve) ts (ég tS: neve) ts (ég tS:
o) tt t: o) tt t:
szen) t (szék t szen) t (szék t
szé) t t szé) t t
szé) tt t: szé) tt t:
szé) tszé t|se:
szöve) ts (ég tS: szöve) ts (ég tS:
söté) ts (ég tS: söté) ts (ég tS:
sajá) ts (ág tS: sajá) ts (ág tS:
lehe) ts (ég tS: lehe) ts (ég tS:
tehe) ts (ég tS: tehe) ts (ég tS:
lá) tsz ts: lá) tsz ts:
te) tsz ts:
lá) t (sze t lá) t (sze t
fize) ts (ég tS: fize) ts (ég tS:
segí) ts tS: segí) ts tS:
ha) t (száz t ha) t (száz t
hé) t (száz t hé) t (száz t
vé) ts (ég tS: vé) ts (ég tS:

vona) t (jegy t
tesz) t (sor t
tes) t (sér t
fron) t (jár t
á) t (söpör t
ala) tt (jár t:
fri) tz ts:
fű) ts tS:




.group u .group u
.group ü .group ü
ü y ü y
ütt yt: ütt yt:
ütty yc:



.group ű .group ű
ű y: ű y:


.group z .group z
z z z z

zs Z zs Z
zzs Z: zzs Z:
a) z (t s a) z (t s
ré) z (sz z ré) z (sz z
tartó) z s tartó) z s
gá) z (sz z gá) z (sz z
gé) z (sz z
gá) z (cső z
gé) z (sz z


ké) z (sz zz ké) z (sz zz
há) z (so z há) z (so z
_gá) zsz (ámla zs: _gá) zsz (ámla zs:
_gá) zsz (ámlá zs: _gá) zsz (ámlá zs:
_ré) zs (ó zS _ré) zs (ó zS
ő) zs (uta zS
_vá) zs (or zS _vá) zs (or zS
_szára) zs (ág SS _szára) zs (ág SS


_nehé) zs (ely zS _nehé) zs (ely zS


_) zürich tsyR2iC _) zürich tsyR2iC
vigyá) zz (ba z
vigyá) zz (t z




.group .group
_) :-) v'iJoR2




$ dolla:R2 $ dolla:R2
ä E ä E

+ 4
- 1
dictsource/jbo_rules View File



.group b .group b
b b b b
b (C b_


.group c .group c
c S c S
K) c (C S_!


.group d .group d
d d d d
dj dZ
dj dZ // ??


.group e .group e
e e e e
r r- // syllabic r r- // syllabic
A) r R A) r R
r (A R r (A R
r (C R_ // ?? do this in phonemes data instead?




.group s .group s

+ 7
- 42
dictsource/ta_list View File

! vijVppU // வியப்பு ! vijVppU // வியப்பு
_? ke:l.vi // கேள்வி _? ke:l.vi // கேள்வி
# en.||kuRi $max3 // எண் குறி # en.||kuRi $max3 // எண் குறி
= samVnba:d.U $max3 // சமன்பாடு
= samVnpa:d.U $max3 // சமன்பாடு
+ ku:t.t.Vl $max3 // கூட்டல் + ku:t.t.Vl $max3 // கூட்டல்
* perUkkVl $max3 // பெருக்கல் * perUkkVl $max3 // பெருக்கல்
/ sa:jvU // சாய்வு / sa:jvU // சாய்வு
போண்டா $alt போண்டா $alt
பஜ்ஜி $alt பஜ்ஜி $alt
பாதாம் $alt பாதாம் $alt
பலூன் $alt
பிராமணன் $alt
பிரம்மன் $alt
பம்பாய் $alt
போகம் $alt போகம் $alt
போதனை $alt போதனை $alt
பூகோலம் $alt
பூலோகம் $alt
பூமி $alt
பூகம்பம் $alt பூகம்பம் $alt
பூதம் $alt
புதன் $alt
பலி $alt
பலம் $alt
பலவான் $alt
பகவான் $alt
பாகவதம் $alt பாகவதம் $alt
பகவத் $alt பகவத் $alt
பங்கம் $alt பங்கம் $alt
பீடி $alt பீடி $alt
பீதி $alt பீதி $alt
பம்பரம் $alt
பாதுஷா $alt
பேகம் $alt பேகம் $alt




தானம் $alt // initial த as [d]
தேகம் $alt
திரவியம் $alt
தூபம் $alt
தீபம் $alt
// initial த as [d]
தீபாவளி $alt தீபாவளி $alt
தீரம் $alt
தைரியம் $alt
திடம் $alt
திரவம் $alt
திடீர் $alt
திவசம் $alt
தியானம் $alt
தானியம் $alt
தண்டனை $alt தண்டனை $alt
துவம்சம் $alt துவம்சம் $alt
திருஷ்டி $alt திருஷ்டி $alt
தயாநிதி $alt தயாநிதி $alt
தயாளு $alt தயாளு $alt
துக்கம் $alt
திகில் $alt
துந்துவி $alt துந்துவி $alt
தயவு $alt தயவு $alt
தடால் $alt தடால் $alt
தடக் $alt தடக் $alt
தீக்ஷை $alt தீக்ஷை $alt
தடியன் $alt தடியன் $alt

தரிசனம் $alt
தட்சணை $alt




கக $alt // initial க as [g] கக $alt // initial க as [g]
கனம் $alt கனம் $alt
கணம் $alt கணம் $alt
கணபதி $alt
கணீர் $alt
கிலி $alt கிலி $alt
கில்லி $alt கில்லி $alt
கோதுமை $alt
கோபுரம் $alt
காந்தம் $alt
காந்தி $alt காந்தி $alt
குண்டு $alt
கோலி $alt
குகை $alt
கிரி $alt கிரி $alt
கோமதி $alt கோமதி $alt
கயா $alt கயா $alt
காயத்ரி $alt காயத்ரி $alt
கங்கை $alt கங்கை $alt
கங்கா $alt கங்கா $alt
குரு $alt
குகன் $alt
கட $alt
கோ $alt
கதி $alt




பப pVpV பப pVpV

+ 114
- 11
dictsource/ta_rules View File

_) க (BT g // $alt _) க (BT g // $alt
க்க kkV க்க kkV
க்க (B kk க்க (B kk
_) க (ௌ g
க (ீத g க (ீத g
க (ஜ gV க (ஜ gV


_) க (ௌ g
_) க (ம்பீர gV _) க (ம்பீர gV
_) க (ந்தர்வ gV _) க (ந்தர்வ gV
_) க (ோவிந்த g _) க (ோவிந்த g
_) க (ணே gV _) க (ணே gV

_) க (ருட gV
_) க (ர்ஜ gV
_) க (ாண்டாமிருக g
_) க (ோந்து g
_) க (ாந்த g
_) க (ுண்ட g
_) க (ோபுர g
_) க (ுரு g
_) க (ுகன g
_) க (ணபதி gV
_) க (ணீர gV
_) க (ோதுமை g
_) க (ுகை g
_) க (ோஷ g
_) க (ுண g
_) க (தியில் gV
_) க (டிகார gV




ங NV ங NV
ட்) ச (B tS ட்) ச (B tS
ஞ்) ச dZV ஞ்) ச dZV
ஞ்) ச (B dZ ஞ்) ச (B dZ
_) ச (ட் tS
_) ச (Bட் tS
_) ச (ன் tS
_) ச (Bன் tS
_) ச (ிட் tS
_) ச (ின் tS






// _) ட (B t. // _) ட (B t.
ட்ட t.t.V ட்ட t.t.V
ட்ட (B t.t. ட்ட (B t.t.

ஷ்) ட t.V
ஷ்) ட (B t.


ண n.V ண n.V
ண (B n. ண (B n.
_) த (BT d // if word has $alt _) த (BT d // if word has $alt
த்த ttV த்த ttV
த்த (B tt த்த (B tt
க்) த tV
க்) த (B t
ஸ்) த tV
ஸ்) த (B t



// exceptions, த as [d]

// exceptions, த as [d]
_) த (ன dV _) த (ன dV
_) த (ர்ம dV _) த (ர்ம dV
_) த (ுர் d _) த (ுர் d
_) த (ுஷ் d _) த (ுஷ் d
_) த (க்ஷிணா dV _) த (க்ஷிணா dV
_) த (ண்ட dV _) த (ண்ட dV
_) த (ருமி dV
_) த (ர்பை dV
_) த (ாவா d
_) த (ாதா d
_) த (ரித்திரம dV
_) த (ர்பார dV
_) த (ீர்க d
_) த (ினுச d
_) த (ாராவி d
_) த (ர்க dV
_) த (ான d
_) த (ேக d
_) த (ேக்கு t
_) த (ேக்கிலை t
_) த (ேக்கடி t
_) த (ிரவிய d
_) த (ூப d
_) த (ீப d
_) த (ீர d
_) த (ைரிய d
_) த (ிட d
_) த (ிரவ d
_) த (ிடீ d
_) த (ிவச d
_) த (ியான d
_) த (ானிய d
_) த (ுக்க d
_) த (ிகில d
_) த (ூம d
_) த (ாவணி d
_) த (ாம்_தூம d
_) த (ாடி d
_) த (ாச d
_) த (சரா dV
_) த (ோஷ d
_) த (ரணி dV
_) த (ாரணி d
_) த (ோசை d




ந nV ந nV
ந (B n // dental n ந (B n // dental n
ட்) ப (B p ட்) ப (B p
ற்) ப pV ற்) ப pV
ற்) ப (B p ற்) ப (B p
று) ப pV
று) ப(B p
ன்) ப pV
ன்) ப (B p

ம்) ப p
ம்) ப (ா p
ம்) ப (B b
த்) ப p
த்) ப (ா p
த்) ப (B b

ஃ) ப fV ஃ) ப fV
ஃ) ப (B f ஃ) ப (B f


_) ப (ால b _) ப (ால b
_) ப (ால் p
_) ப (ாலின் p
_) ப (ாலை p
_) ப (ாலில் p
_) ப (ாலுடன் p
_) ப (ாலினுடைய p

_) ப (ாலாபிஷேக p
_) ப (ாலு b _) ப (ாலு b
_) ப (ானு b _) ப (ானு b
_) ப (ீம b _) ப (ீம b
_) ப (காசுர bV _) ப (காசுர bV
_) ப (ோஜ b _) ப (ோஜ b
_) ப (தில bV _) ப (தில bV
_) ப (க்தி bV
_) ப (ஜ bV _) ப (ஜ bV
_) ப (ைரவ b
_) ப (யம bV
_) ப (ார்கவி b
_) ப (ூதேவி b
_) ப (ம்பாய bV
_) ப (ாதுஷா b
_) ப (க்த bV
_) ப (லம bV
_) ப (லவான bV
_) ப (ிராமண b
_) ப (ிரம்ம b
_) ப (ம்பர bV
_) ப (லூன bV
_) ப (ூமி b
_) ப (ூலோக b
_) ப (ூகோல b
_) ப (ூத b
_) ப (ுதன b
_) ப (லி bV
_) ப (கவான bV
_) ப (ௌதிக b



ம mV ம mV
ம (B m ம (B m
ஸ (B s ஸ (B s




hV
ஹ (B h
HV
ஹ (B H




க்ஷ ks.V க்ஷ ks.V

+ 16
- 9
phsource/compile_report View File

id 15 127 id 15 127
sq 35 128 sq 35 128
hy 24 120 hy 24 120
da 21 119
da 22 122
rw 15 132 rw 15 132
ml 13 154 ml 13 154
kn 15 154 kn 15 154
mr 12 152 mr 12 152
eu 6 126 eu 6 126
mn 15 115 mn 15 115
pa 13 153
pa 14 154
prs 8 111 prs 8 111


Data file Used by Data file Used by
envelope/p_214 [5] vi envelope/p_214 [5] vi
[214] zh [214] zh
envelope/p_512 [6] vi envelope/p_512 [6] vi
[+] pa
envelope/p_fall [2] vi envelope/p_fall [2] vi
[7] vi [7] vi
[4] zhy [4] zhy
n/no [(o)] base n/no [(o)] base
n/_nr [n.] base n/_nr [n.] base
n/nr_ [n.] base n/nr_ [n.] base
n/nr@ [(@)] base
n/nra [(a)] base
n/nre [(e)] base
n/nri [(i)] base
n/nro [(o)] base
n/nru [(u)] base
n^/n^u [(u)] base n^/n^u [(u)] base
n/nu [(u)] base n/nu [(u)] base
r2/_r2 [r-] base r2/_r2 [r-] base
[x] pt [x] pt
r3/r_u [(u)] base r3/r_u [(u)] base
r3/r_uvl [r"] base r3/r_uvl [r"] base
[R2] da
[R4] da
r3/r_uvl.wav [r"] base r3/r_uvl.wav [r"] base
[R] fr [R] fr
[r] fr [r] fr
[r/2] fr [r/2] fr
[R2] da
[R4] da
r3/rx [*] base r3/rx [*] base
[r/] base [r/] base
[r/] af [r/] af
r3/@tap2 [**] base r3/@tap2 [**] base
r3/@tap_rfx [r.] base r3/@tap_rfx [r.] base
r/a_ [r] da r/a_ [r] da
r/aa [R6] da
r/r [r] base r/r [r] base
[r-] base [r-] base
[r] en_sc [r] en_sc
[r] de [r] de
[R5] da
r/_r [r] base r/_r [r] base
[r] en_sc [r] en_sc
[r.] bn [r.] bn
[x] sr [x] sr
ufric/xx [X] base ufric/xx [X] base
[Q"] base [Q"] base
[R] da
ustop/c [c] base ustop/c [c] base
ustop/k [k] base ustop/k [k] base
[k] en [k] en
[o~] bn [o~] bn
vnasal/o_n2 [o~] af vnasal/o_n2 [o~] af
[O~] fr [O~] fr
vnasal/oo_n [O~] en
vnasal/oo_n2 [O~] hi
vnasal/oo_n2 [O~] en
[O~] hi
[o] zh [o] zh
[O~] bn [O~] bn
vnasal/oo_n3 [O~] pl vnasal/oo_n3 [O~] pl
voc/Q_less [Q] nl voc/Q_less [Q] nl
[x2] pt [x2] pt
voc/Q_ulv [Q"] base voc/Q_ulv [Q"] base
[R] da
voc/v [v] base voc/v [v] base
[v] fi [v] fi
[v] fr [v] fr
[aI@] en_sc [aI@] en_sc
vwl_en/aU@ [aU@] en vwl_en/aU@ [aU@] en
[aU@] en_n [aU@] en_n
[aU@] en_us
[aU@] en_sc [aU@] en_sc
[aU@] en_wm [aU@] en_wm
vwl_en/@L [@L] en vwl_en/@L [@L] en
vwl_en_us/ai@ [aI@] en_us vwl_en_us/ai@ [aI@] en_us
vwl_en_us/ar [A:] en_us vwl_en_us/ar [A:] en_us
[A@] en_us [A@] en_us
vwl_en_us/aU@ [aU@] en_us
vwl_en_us/ee [E] en_us vwl_en_us/ee [E] en_us
vwl_en_us/er [e@] en_us vwl_en_us/er [e@] en_us
vwl_en_us/ir [i@3] en_us vwl_en_us/ir [i@3] en_us

BIN
phsource/n/_nr View File


BIN
phsource/n/nr_ View File


+ 17
- 8
phsource/ph_danish View File

lengthmod 7 lengthmod 7
endphoneme endphoneme


phoneme R2 // uvular trill [r"]
vcd uvl frc
formants r3/r_uvl+r3/r_uvl.wav%75
before _ r3/r_uvl+r3/r_uvl.wav%50
lengthmod 6
phoneme R6 //
liquid
formants r/aa
lengthmod 7
endphoneme endphoneme


phoneme R // voiced velar fricative [Q"]
phoneme R4 // uvular trill [r"] without WAV
vcd uvl frc vcd uvl frc
formants voc/Q_ulv+ufric/xx%80
before _ voc/Q_ulv+ufric/xx%60
formants r3/r_uvl+r3/r_uvl.wav%1
before _ r3/r_uvl+r3/r_uvl.wav%1
lengthmod 6 lengthmod 6
endphoneme endphoneme




phoneme R5 // English r
liquid starttype #r endtype #r
rhotic
length 100
lengthmod 7
beforenotvowel r/
formants r/r
endphoneme



+ 3
- 3
phsource/ph_english View File



phoneme o@ phoneme o@
vowel starttype (o) endtype (@) vowel starttype (o) endtype (@)
length 240
length 250
formants vowel/oo_en formants vowel/oo_en
linkout r- linkout r-
endphoneme endphoneme


phoneme O~ phoneme O~
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 260
formants vnasal/oo_n
length 240
formants vnasal/oo_n2
endphoneme endphoneme





+ 6
- 6
phsource/ph_english_us View File



phoneme u: phoneme u:
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 180
length 190
formants vdiph2/uw formants vdiph2/uw
endphoneme endphoneme




phoneme e@ phoneme e@
vowel starttype (e) endtype (@) vowel starttype (e) endtype (@)
length 270
length 280
formants vwl_en_us/er formants vwl_en_us/er
appendph r appendph r
endphoneme endphoneme


phoneme i@3 phoneme i@3
vowel starttype (i) endtype (@) vowel starttype (i) endtype (@)
length 250
length 280
formants vwl_en_us/ir formants vwl_en_us/ir
appendph r appendph r
endphoneme endphoneme


phoneme U@ phoneme U@
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 240
length 250
formants vwl_en_us/ur formants vwl_en_us/ur
linkout r- linkout r-
endphoneme endphoneme


phoneme aU@ phoneme aU@
vowel starttype (a) endtype (@) vowel starttype (a) endtype (@)
length 270
formants vwl_en/aU@
length 300
formants vwl_en_us/aU@
linkout r- linkout r-
endphoneme endphoneme



+ 1
- 1
phsource/ph_polish View File

vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=50 vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=50
vowelout f1=2 f2=1700 -300 300 f3=-100 80 vowelout f1=2 f2=1700 -300 300 f3=-100 80
formants d/xdz+ustop/ts%140 formants d/xdz+ustop/ts%140
before _ voc/z_+ustop/ts_%70
before _ voc/z_+ustop/ts_%60
after _ NULL after _ NULL
after @ d/xd after @ d/xd
lengthmod 5 lengthmod 5

+ 2
- 2
phsource/ph_tamil View File



phoneme a: phoneme a:
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
length 270
length 300
formants vowel/a_5 formants vowel/a_5
endphoneme endphoneme




phoneme i: phoneme i:
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
length 270
length 300
formants vowel/i formants vowel/i
endphoneme endphoneme



+ 6
- 1
phsource/phonemes View File

after r- r2/r2@ after r- r2/r2@
after m m/m@ after m m/m@
after n n/n@ after n n/n@
after n. n/nr@
after N nn/nn@ after N nn/nn@
after n^ n^/n^@ after n^ n^/n^@
before l/ DFT-60+l/L1_@L before l/ DFT-60+l/L1_@L
after r- r2/r2a after r- r2/r2a
after m m/ma after m m/ma
after n n/na after n n/na
after n. n/nra
after N nn/nna after N nn/nna
after n^ n^/n^a after n^ n^/n^a
before l/ DFT-40+l/L1_aL before l/ DFT-40+l/L1_aL
after r- r2/r2e after r- r2/r2e
after m m/me after m m/me
after n n/ne after n n/ne
after n. n/nre
after N nn/nne after N nn/nne
after n^ n^/n^e after n^ n^/n^e
before l/ DFT-30+l/L1_eL before l/ DFT-30+l/L1_eL
after r- r2/r2i after r- r2/r2i
after m m/mi after m m/mi
after n n/ni after n n/ni
after n. n/nri
after N nn/nni after N nn/nni
after n^ n^/n^i after n^ n^/n^i
before l/ DFT-30+l/L1_iL before l/ DFT-30+l/L1_iL
after r- r2/r2o after r- r2/r2o
after m m/mo after m m/mo
after n n/no after n n/no
after n. n/nro
after N nn/nno after N nn/nno
after n^ n^/n^o after n^ n^/n^o
before l/ DFT-40+l/L1_oL before l/ DFT-40+l/L1_oL
after r- r2/r2u after r- r2/r2u
after m m/mu after m m/mu
after n n/nu after n n/nu
after n. n/nru
after N nn/nnu after N nn/nnu
after n^ n^/n^u after n^ n^/n^u
before l/ DFT-40+l/L1_uL before l/ DFT-40+l/L1_uL


phoneme n. phoneme n.
vcd rfx nasal vcd rfx nasal
starttype n endtype n
vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2 vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2
vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2 vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2
length 100 length 100

BIN
phsource/vdiph/aoo View File


BIN
phsource/vnasal/oo_n View File


BIN
phsource/vnasal/oo_n2 View File


BIN
phsource/vowel/ii_final View File


BIN
phsource/vwl_en/aU@ View File


BIN
phsource/vwl_en_us/ar View File


BIN
phsource/vwl_en_us/er View File


BIN
phsource/vwl_en_us/ir View File


+ 1
- 0
platforms/windows/espeakedit/src/speech.h View File

#define PATHSEP '\\' #define PATHSEP '\\'
#define USE_PORTAUDIO #define USE_PORTAUDIO
//#define USE_NANOSLEEP //#define USE_NANOSLEEP
#define NO_VARIADIC_MACROS
#define __cdecl #define __cdecl
#define ESPEAK_API #define ESPEAK_API
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" #define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data"

+ 1
- 0
platforms/windows/espeakedit/src_copy/speech.h View File

#define PATHSEP '\\' #define PATHSEP '\\'
#define USE_PORTAUDIO #define USE_PORTAUDIO
//#define USE_NANOSLEEP //#define USE_NANOSLEEP
#define NO_VARIADIC_MACROS
#define __cdecl #define __cdecl
#define ESPEAK_API #define ESPEAK_API
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" #define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data"

+ 1
- 0
platforms/windows/windows_cmd/src/speech.h View File

#define PATHSEP '\\' #define PATHSEP '\\'
#define USE_PORTAUDIO #define USE_PORTAUDIO
#define NO_VARIADIC_MACROS
#define ESPEAK_API #define ESPEAK_API
//#define INCLUDE_KLATT //#define INCLUDE_KLATT

+ 1
- 0
platforms/windows/windows_sapi/src/speech.h View File

#define __WIN32__ #define __WIN32__
#define NEED_WCSTOF #define NEED_WCSTOF
#define NEED_GETOPT #define NEED_GETOPT
#define NO_VARIADIC_MACROS
#define USE_MBROLA_LIB #define USE_MBROLA_LIB
#define ESPEAK_API #define ESPEAK_API

+ 1
- 3
src/compiledict.cpp View File

} }
else else
{ {
dict_line[length++] = 80 + multiple_words + multiple_numeric_hyphen; // if numeric, count a hyphen as an extra word
dict_line[length++] = 80 + multiple_words;
ix = multiple_string_end - multiple_string; ix = multiple_string_end - multiple_string;
if(multiple_numeric_hyphen) if(multiple_numeric_hyphen)
{ {
// the first part is numeric, so keep the hyphen to match on
dict_line[length++] = '-';
dict_line[length++] = ' '; dict_line[length++] = ' ';
} }
memcpy(&dict_line[length],multiple_string,ix); memcpy(&dict_line[length],multiple_string,ix);

+ 1
- 1
src/debug.h View File



#else #else


#ifdef PLATFORM_WINDOWS
#ifdef NO_VARIADIC_MACROS
#define SHOW(format) // VC6 doesn't allow "..." #define SHOW(format) // VC6 doesn't allow "..."
#else #else
#define SHOW(format,...) #define SHOW(format,...)

+ 21
- 10
src/dictionary.cpp View File







void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress)
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress)
{//========================================================================================================= {//=========================================================================================================
/* Guess stress pattern of word. This is language specific /* Guess stress pattern of word. This is language specific


max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */ max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */


// any stress position marked in the xx_list dictionary ? // any stress position marked in the xx_list dictionary ?
stressed_syllable = dictionary_flags & 0x7;
if(dictionary_flags & 0x8)
stressed_syllable = dictionary_flags[0] & 0x7;
if(dictionary_flags[0] & 0x8)
{ {
// this indicates a word without a primary stress // this indicates a word without a primary stress
stressed_syllable = dictionary_flags & 0x3;
stressed_syllable = dictionary_flags[0] & 0x3;
unstressed_word = 1; unstressed_word = 1;
} }


{ {
// option: don't stress monosyllables except at end-of-clause // option: don't stress monosyllables except at end-of-clause
vowel_stress[1] = 1; vowel_stress[1] = 1;
dictionary_flags |= FLAG_STRESS_END2;
dictionary_flags[0] |= FLAG_STRESS_END2;
} }


// heavy or light syllables // heavy or light syllables
} }
break; break;


case 7: // LANG=tr, the last syllable for any vowel markes explicitly as unstressed
case 7: // LANG=tr, the last syllable for any vowel marked explicitly as unstressed
if(stressed_syllable == 0) if(stressed_syllable == 0)
{ {
stressed_syllable = vowel_count - 1; stressed_syllable = vowel_count - 1;
#endif #endif


// is it a bracket ? // is it a bracket ?
if(letter == 0xe000+'(')
{
if(pre_pause < tr->langopts.param2[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param2[LOPT_BRACKET_PAUSE]; // a bracket, aleady spoken by AnnouncePunctuation()
}
if(IsBracket(letter)) if(IsBracket(letter))
{ {
if(pre_pause < 4)
pre_pause = 4;
if(pre_pause < tr->langopts.param[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param[LOPT_BRACKET_PAUSE];
} }


// no match, try removing the accent and re-translating the word // no match, try removing the accent and re-translating the word
continue; continue;
} }
} }
if(dictionary_flags & FLAG_ALT2_TRANS)
{
// language specific
if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags & FLAG_ALT_TRANS))
continue;
}


if(flags != NULL) if(flags != NULL)
{ {
// set the skip words flag // set the skip words flag
flags[0] |= FLAG_SKIPWORDS; flags[0] |= FLAG_SKIPWORDS;
dictionary_skipwords = length; dictionary_skipwords = length;
return(1);
return(flags[0]);
} }
} }


return(0); return(0);
} }


return(1);
return(flags[0]);
} }


ph_out[0] = 0; ph_out[0] = 0;

+ 92
- 19
src/espeak.cpp View File

#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#ifndef NEED_GETOPT
#include <getopt.h> #include <getopt.h>
#endif
#include <time.h> #include <time.h>
#include <sys/stat.h> #include <sys/stat.h>


} }




#ifdef NEED_GETOPT
struct option {
char *name;
int has_arg;
int *flag;
int val;
};
int optind;
static int optional_argument;
static const char *arg_opts = "abfgklpsvw"; // which options have arguments
static char *opt_string="";
#define no_argument 0
#define required_argument 1
#define optional_argument 2
#endif


int main (int argc, char **argv) int main (int argc, char **argv)
//============================== //==============================
int option_index = 0; int option_index = 0;
int c; int c;
int ix; int ix;
char *optarg2;
int value; int value;
int flag_stdin = 0; int flag_stdin = 0;
int flag_compile = 0; int flag_compile = 0;
filename[0] = 0; filename[0] = 0;
option_punctlist[0] = 0; option_punctlist[0] = 0;


#ifdef NEED_GETOPT
optind = 1;
opt_string = "";
while(optind < argc)
{
int len;
char *p;

if((c = *opt_string) == 0)
{
opt_string = argv[optind];
if(opt_string[0] != '-')
break;

optind++;
opt_string++;
c = *opt_string;
}
opt_string++;
p = optarg2 = opt_string;

if(c == '-')
{
opt_string="";
for(ix=0; ;ix++)
{
if(long_options[ix].name == 0)
break;
len = strlen(long_options[ix].name);
if(memcmp(long_options[ix].name,p,len)==0)
{
c = long_options[ix].val;
optarg2 = NULL;

if((long_options[ix].has_arg != 0) && (p[len]=='='))
{
optarg2 = &p[len+1];
}
break;
}
}
}
else
if(strchr(arg_opts,c) != NULL)
{
opt_string="";
if(optarg2[0]==0)
{
// the option's value is in the next argument
optarg2 = argv[optind++];
}
}
#else
while(true) while(true)
{ {
c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz", c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz",
/* Detect the end of the options. */ /* Detect the end of the options. */
if (c == -1) if (c == -1)
break; break;
optarg2 = optarg;
#endif


switch (c) switch (c)
{ {
case 'b': case 'b':
// input character encoding, 8bit, 16bit, UTF8 // input character encoding, 8bit, 16bit, UTF8
if((sscanf(optarg,"%d",&value) == 1) && (value <= 4))
if((sscanf(optarg2,"%d",&value) == 1) && (value <= 4))
synth_flags |= value; synth_flags |= value;
else else
synth_flags |= espeakCHARS_8BIT; synth_flags |= espeakCHARS_8BIT;
break; break;


case 'k': case 'k':
option_capitals = atoi(optarg);
option_capitals = atoi(optarg2);
break; break;


case 'x': case 'x':
break; break;


case 'p': case 'p':
pitch = atoi(optarg);
pitch = atoi(optarg2);
break; break;


case 'q': case 'q':
break; break;


case 'f': case 'f':
strncpy0(filename,optarg,sizeof(filename));
strncpy0(filename,optarg2,sizeof(filename));
break; break;


case 'l': case 'l':
option_linelength = atoi(optarg);
option_linelength = atoi(optarg2);
break; break;


case 'a': case 'a':
volume = atoi(optarg);
volume = atoi(optarg2);
break; break;


case 's': case 's':
speed = atoi(optarg);
speed = atoi(optarg2);
break; break;


case 'g': case 'g':
wordgap = atoi(optarg);
wordgap = atoi(optarg2);
break; break;


case 'v': case 'v':
strncpy0(voicename,optarg,sizeof(voicename));
strncpy0(voicename,optarg2,sizeof(voicename));
break; break;


case 'w': case 'w':
option_waveout = 1; option_waveout = 1;
strncpy0(wavefile,optarg,sizeof(filename));
strncpy0(wavefile,optarg2,sizeof(filename));
break; break;


case 'z': // remove pause from the end of a sentence case 'z': // remove pause from the end of a sentence


case 0x101: // --compile-debug case 0x101: // --compile-debug
case 0x102: // --compile case 0x102: // --compile
strncpy0(voicename,optarg,sizeof(voicename));
strncpy0(voicename,optarg2,sizeof(voicename));
flag_compile = c; flag_compile = c;
quiet = 1; quiet = 1;
break; break;


case 0x103: // --punct case 0x103: // --punct
option_punctuation = 1; option_punctuation = 1;
if(optarg != NULL)
if(optarg2 != NULL)
{ {
ix = 0; ix = 0;
while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg[ix]) != 0)) ix++;
while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg2[ix]) != 0)) ix++;
option_punctlist[N_PUNCTLIST-1] = 0; option_punctlist[N_PUNCTLIST-1] = 0;
option_punctuation = 2; option_punctuation = 2;
} }


case 0x104: // --voices case 0x104: // --voices
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0); espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0);
DisplayVoices(stdout,optarg);
DisplayVoices(stdout,optarg2);
exit(0); exit(0);


case 0x106: // -- split case 0x106: // -- split
if(optarg == NULL)
if(optarg2 == NULL)
samples_split = 30; // default 30 minutes samples_split = 30; // default 30 minutes
else else
samples_split = atoi(optarg);
samples_split = atoi(optarg2);
break; break;


case 0x107: // --path case 0x107: // --path
data_path = optarg;
data_path = optarg2;
break; break;


case 0x108: // --phonout case 0x108: // --phonout
if((f_phonemes_out = fopen(optarg,"w")) == NULL)
if((f_phonemes_out = fopen(optarg2,"w")) == NULL)
{ {
fprintf(stderr,"Can't write to: %s\n",optarg);
fprintf(stderr,"Can't write to: %s\n",optarg2);
} }
break; break;



+ 0
- 25
src/espeakedit.cpp View File

} }




#ifdef deleted
void MyFrame::OnAbout(wxCommandEvent& event)
{//=========================================
int result;
char buf[300];
wxString url_docs;

switch(event.GetId())
{
case MENU_ABOUT:
sprintf(buf,about_string,espeak_Info(NULL));
(void)wxMessageBox(wxString(buf,wxConvLocal), _T("About eSpeak Editor"));
break;

case MENU_DOCS:
sprintf(buf,"%s/docs/docindex.html",path_home);
url_docs = wxString(buf,wxConvLocal);
result = wxLaunchDefaultBrowser(url_docs);
if(result == 0)
wxLogStatus(_T("Failed to launch browser"));
break;
}
}
#endif



class HtmlWindow: public wxHtmlWindow class HtmlWindow: public wxHtmlWindow
{ {

+ 1
- 1
src/intonation.cpp View File

}; };


static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
{PITCHfall, 30, 5, PITCHfall, 32, 9, NULL, 12, 7, 0}, // 0 statement
{PITCHfall, 29, 4, PITCHfall, 32, 9, NULL, 12, 6, 0}, // 0 statement
{PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma {PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma
{PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question {PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question
// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation // {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation

+ 180
- 114
src/numbers.cpp View File

#define M_MIDDLE_DOT M_DOT_ABOVE // duplicate of M_DOT_ABOVE #define M_MIDDLE_DOT M_DOT_ABOVE // duplicate of M_DOT_ABOVE
#define M_IMPLOSIVE M_HOOK #define M_IMPLOSIVE M_HOOK


static int n_digit_lookup;
static char *digit_lookup;

typedef struct { typedef struct {
const char *name; const char *name;
int flags; int flags;
} // end of CheckDotOrdinal } // end of CheckDotOrdinal






int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
{//========================================================================= {//=========================================================================
int c; int c;
int found; int found;
int ix; int ix;
int units; int units;
int tens;
int used_and=0; int used_and=0;
int found_ordinal = 0; int found_ordinal = 0;
int next_phtype; int next_phtype;
char ph_digits[50]; char ph_digits[50];
char ph_and[12]; char ph_and[12];


// is there a special pronunciation for this 2-digit number
units = value % 10;
tens = value / 10;

found = 0; found = 0;
ph_ordinal[0] = 0; ph_ordinal[0] = 0;


if(control & 8)
if((control & 2) && (n_digit_lookup == 2))
{ {
sprintf(string,"_%df",value);
found = Lookup(tr, string, ph_digits);
// pronunciation of the final 2 digits has already been found
strcpy(ph_out, digit_lookup);
} }
else else
if(control & 1)
{
strcpy(ph_ordinal, ph_ordinal2);

if(control & 4)
{
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits
found = Lookup(tr, string, ph_digits);
}
if(found == 0)
{
sprintf(string,"_%do",value);
found = Lookup(tr, string, ph_digits);
}
found_ordinal = found;
}

if(found == 0)
{ {
if((value == 1) && (control & 2))
{
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins"
return(0);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}

// no, speak as tens+units

if((control & 0x10) && (value < 10))
{
// speak leading zero
Lookup(tr, "_0", ph_tens);
}
else
{
if(found)
{
ph_tens[0] = 0;
}
else
if(digit_lookup[0] == 0)
{ {
units = (value % 10);

if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
// is there a special pronunciation for this 2-digit number
if(control & 8)
{ {
sprintf(string,"_%dXo",value / 10);
if(Lookup(tr, string, ph_tens) != 0)
sprintf(string,"_%df",value);
found = Lookup(tr, string, ph_digits);
}
else
if(control & 1)
{
strcpy(ph_ordinal, ph_ordinal2);
if(control & 4)
{ {
found_ordinal = 1;
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits
found = Lookup(tr, string, ph_digits);
} }
if(found == 0)
{
sprintf(string,"_%do",value);
found = Lookup(tr, string, ph_digits);
}
found_ordinal = found;
} }
if(found_ordinal == 0)
if(found == 0)
{ {
sprintf(string,"_%dX",value / 10);
Lookup(tr, string, ph_tens);
if((value == 1) && (control & 2))
{
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins"
return(0);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
} }

if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
}
// no, speak as tens+units
if((control & 0x10) && (value < 10))
{
// speak leading zero
Lookup(tr, "_0", ph_tens);
}
else
{
if(found)
{ {
// tens not found, (for example) 73 is 60+13
units = (value % 20);
sprintf(string,"_%dX",(value / 10) & 0xfe);
Lookup(tr, string, ph_tens);
ph_tens[0] = 0;
} }

ph_digits[0] = 0;
if(units > 0)
{
found = 0;
if(control & 8)
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0))
else
{
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
{ {
// ordinal
sprintf(string,"_%do",units);
if((found = Lookup(tr, string, ph_digits)) != 0)
sprintf(string,"_%dXo", tens);
if(Lookup(tr, string, ph_tens) != 0)
{ {
found_ordinal = 1; found_ordinal = 1;
} }
} }
if(found == 0)
if(found_ordinal == 0)
{ {
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
sprintf(string,"_%dX", tens);
Lookup(tr, string, ph_tens);
}
if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
{
// tens not found, (for example) 73 is 60+13
units = (value % 20);
sprintf(string,"_%dX", tens & 0xfe);
Lookup(tr, string, ph_tens);
}
ph_digits[0] = 0;
if(units > 0)
{
found = 0;
if((control & 2) && (digit_lookup[0] != 0))
{
// we have an entry for this digit (possibly together with the next word)
strcpy(ph_digits, digit_lookup);
found_ordinal = 1;
ph_ordinal[0] = 0;
}
else
{
if(control & 8)
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0))
{
// ordinal
sprintf(string,"_%do",units);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
found_ordinal = 1;
}
}
if(found == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
}
}
} }
} }
} }
}

if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
Lookup(tr, "_ord20", ph_ordinal);
if(ph_ordinal[0] == 0)
Lookup(tr, "_ord", ph_ordinal);
}

if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
{
Lookup(tr, "_0and", ph_and);
if(tr->langopts.numbers & NUM_SWAP_TENS)
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
Lookup(tr, "_ord20", ph_ordinal);
if(ph_ordinal[0] == 0)
Lookup(tr, "_ord", ph_ordinal);
}
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
{
Lookup(tr, "_0and", ph_and);
if(tr->langopts.numbers & NUM_SWAP_TENS)
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
else
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
used_and = 1;
}
else else
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
used_and = 1;
}
else
{
if(tr->langopts.numbers & NUM_SINGLE_VOWEL)
{ {
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian)
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0))
if(tr->langopts.numbers & NUM_SINGLE_VOWEL)
{ {
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
ph_tens[ix] = 0;
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian)
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0))
{
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
ph_tens[ix] = 0;
}
} }
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
} }
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
} }


if(tr->langopts.numbers & NUM_SINGLE_STRESS) if(tr->langopts.numbers & NUM_SINGLE_STRESS)
char ph_append[50]; char ph_append[50];
char ph_buf[200]; char ph_buf[200];
char ph_buf2[50]; char ph_buf2[50];
char ph_zeros[50];
char suffix[20]; char suffix[20];
char buf_digit_lookup[50];


static const char str_pause[2] = {phonPAUSE_NOLINK,0}; static const char str_pause[2] = {phonPAUSE_NOLINK,0};


*flags = 0; *flags = 0;
digit_lookup = buf_digit_lookup;


for(ix=0; isdigit(word[ix]); ix++) ; for(ix=0; isdigit(word[ix]); ix++) ;
n_digits = ix; n_digits = ix;
value = this_value = atoi(word); value = this_value = atoi(word);


ph_ordinal2[0] = 0; ph_ordinal2[0] = 0;
ph_zeros[0] = 0;


ordinal = CheckDotOrdinal(tr, &word[ix], wtab, 1); ordinal = CheckDotOrdinal(tr, &word[ix], wtab, 1);


ix++; ix++;
hyphen = 0; hyphen = 0;
p = suffix; p = suffix;
if(word[ix] == '-')
if(wtab[0].flags & FLAG_HYPHEN_AFTER)
{ {
*p++ = '-'; *p++ = '-';
hyphen = 1; hyphen = 1;
ix += 2;
ix++;
} }
while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1))) while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1)))
{ {
// this is an ordinal suffix // this is an ordinal suffix
ordinal = 2; ordinal = 2;
flags[0] |= FLAG_SKIPWORDS; flags[0] |= FLAG_SKIPWORDS;
dictionary_skipwords = 1 + hyphen;
dictionary_skipwords = 1;
} }
} }
} }
} }
else else
{ {
return(0); // number string with leading zero, speak as individual digits
if(n_digits > 3)
{
flags[0] &= ~FLAG_SKIPWORDS;
return(0); // long number string with leading zero, speak as individual digits
}

// speak leading zeros
for(ix=0; (word[ix] == '0') && (ix < (n_digits-1)); ix++)
{
Lookup(tr, "_0", &ph_zeros[strlen(ph_zeros)]);
}
} }
} }


Lookup(tr, "_.", ph_append); Lookup(tr, "_.", ph_append);
} }


n_digit_lookup = 0;
buf_digit_lookup[0] = 0;
if(thousandplex == 0)
{
char *p2;
// look for combinations of the number with the next word
p = word;
while(isdigit(p[1])) p++; // just use the last digit
if(isdigit(p[-1]))
{
p2 = p - 1;
if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits
n_digit_lookup = 2;
}
if((buf_digit_lookup[0] == 0) && (*p != '0'))
{
// not found, lookup only the last digit
if(LookupDictList(tr, &p, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // don't match '0', or entries with $only
n_digit_lookup = 1;
}
}

LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal); LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal);
if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200)) if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200))
sprintf(ph_out,"%s%s%s",ph_append,ph_buf2,ph_buf); // say "thousands" before its number
sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_append,ph_buf2,ph_buf); // say "thousands" before its number
else else
sprintf(ph_out,"%s%s%s",ph_buf2,ph_buf,ph_append);
sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_buf2,ph_buf,ph_append);




while(decimal_point) while(decimal_point)
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p); utf8_in(&next_char,p);


if(!iswalpha(next_char))
if(!iswalpha(next_char) && !(wtab[0].flags & FLAG_HYPHEN_AFTER))
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
} }



+ 23
- 23
src/phonemelist.cpp View File

if(((pl = &ph_list2[k])->sourceix != 0) && (k > ix)) if(((pl = &ph_list2[k])->sourceix != 0) && (k > ix))
break; break;
pl->stress &= 0xf;
pl->stresslevel &= 0xf;
if(phoneme_tab[pl->phcode]->type == phVOWEL) if(phoneme_tab[pl->phcode]->type == phVOWEL)
{ {
n_syllables++; n_syllables++;


if(pl->stress > max_stress)
if(pl->stresslevel > max_stress)
{ {
syllable_stressed = n_syllables; syllable_stressed = n_syllables;
max_stress = pl->stress;
max_stress = pl->stresslevel;
max_stress_posn = k; max_stress_posn = k;
} }
} }
flags |= 8; flags |= 8;
ch.flags = flags | word_end; ch.flags = flags | word_end;


ch.stress = plist2->stress;
ch.stress = plist2->stresslevel;
ch.stress_highest = max_stress; ch.stress_highest = max_stress;
ch.n_vowels = n_syllables; ch.n_vowels = n_syllables;
ch.vowel_this = syllable; ch.vowel_this = syllable;
if((replace_flags & 1) && (word_end == 0)) if((replace_flags & 1) && (word_end == 0))
continue; // this replacement only occurs at the end of a word continue; // this replacement only occurs at the end of a word
if((replace_flags & 2) && ((plist2->stress & 0x7) > 3))
if((replace_flags & 2) && ((plist2->stresslevel & 0x7) > 3))
continue; // this replacement doesn't occur in stressed syllables continue; // this replacement doesn't occur in stressed syllables
// substitute the replacement phoneme // substitute the replacement phoneme
plist2->phcode = replace_phonemes[k].new_ph; plist2->phcode = replace_phonemes[k].new_ph;
if((plist2->stress > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
plist2->stress = 0; // the replacement must be unstressed
if((plist2->stresslevel > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
plist2->stresslevel = 0; // the replacement must be unstressed
break; break;
} }
} }
for(j = n_ph_list2-3; j>=0; j--) for(j = n_ph_list2-3; j>=0; j--)
{ {
// start with the last phoneme (before the terminating pauses) and move forwards // start with the last phoneme (before the terminating pauses) and move forwards
if((plist2[j].stress & 0x7f) > max_stress)
max_stress = plist2[j].stress & 0x7f;
if((plist2[j].stresslevel & 0x7f) > max_stress)
max_stress = plist2[j].stresslevel & 0x7f;
if(plist2[j].sourceix != 0) if(plist2[j].sourceix != 0)
break; break;
} }
{ {
if(plist2[j].synthflags & SFLAG_PROMOTE_STRESS) // dictionary flags indicated that this stress can be promoted if(plist2[j].synthflags & SFLAG_PROMOTE_STRESS) // dictionary flags indicated that this stress can be promoted
{ {
plist2[j].stress = 4; // promote to stressed
plist2[j].stresslevel = 4; // promote to stressed
break; break;
} }
if(plist2[j].stress >= 4)
if(plist2[j].stresslevel >= 4)
{ {
// found a stressed syllable, so stop looking // found a stressed syllable, so stop looking
break; break;
if(plist2->phcode == phonSWITCH) if(plist2->phcode == phonSWITCH)
{ {
// change phoneme table // change phoneme table
SelectPhonemeTable(plist2->tone_number);
SelectPhonemeTable(plist2->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG; switched_language ^= SFLAG_SWITCHED_LANG;
} }
next = phoneme_tab[(plist2+1)->phcode]; // the phoneme after this one next = phoneme_tab[(plist2+1)->phcode]; // the phoneme after this one
if(ph_list3[k].sourceix) if(ph_list3[k].sourceix)
break; // start of the next word break; // start of the next word


if(ph_list3[k].stress > word_stress)
word_stress = ph_list3[k].stress;
if(ph_list3[k].stresslevel > word_stress)
word_stress = ph_list3[k].stresslevel;
} }
} }


if(ph->type == phVOWEL) if(ph->type == phVOWEL)
{ {
// check for consecutive unstressed syllables // check for consecutive unstressed syllables
if(plist2->stress == 0)
if(plist2->stresslevel == 0)
{ {
// an unstressed vowel // an unstressed vowel
unstress_count++; unstress_count++;
} }
else else
{ {
plist2->stress = 1; // change stress to 'diminished'
plist2->stresslevel = 1; // change stress to 'diminished'
} }
} }
} }
{ {
plist2->synthflags |= SFLAG_SYLLABLE; plist2->synthflags |= SFLAG_SYLLABLE;
if(ph2->type != phVOWEL) if(ph2->type != phVOWEL)
plist2->stress = 0; // change from non-vowel to vowel, make sure it's unstressed
plist2->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed
} }
else else
plist2->synthflags &= ~SFLAG_SYLLABLE; plist2->synthflags &= ~SFLAG_SYLLABLE;
{ {
if((ph->mnemonic == 't') && (plist2->sourceix == 0) && ((prev->type == phVOWEL) || (prev->mnemonic == 'n'))) if((ph->mnemonic == 't') && (plist2->sourceix == 0) && ((prev->type == phVOWEL) || (prev->mnemonic == 'n')))
{ {
if(((plist2+1)->sourceix == 0) && ((plist2+1)->stress < 3) && (next->type == phVOWEL))
if(((plist2+1)->sourceix == 0) && ((plist2+1)->stresslevel < 3) && (next->type == phVOWEL))
{ {
ph = phoneme_tab[phonT_REDUCED]; ph = phoneme_tab[phonT_REDUCED];
} }


if(ph->type == phVOWEL) if(ph->type == phVOWEL)
{ {
stress_level = plist2->stress;
stress_level = plist2->stresslevel;
} }
else else
{ {
// consonant, get stress from the following vowel // consonant, get stress from the following vowel
if(next->type == phVOWEL) if(next->type == phVOWEL)
stress_level = (plist2+1)->stress;
stress_level = (plist2+1)->stresslevel;
else else
break; break;
} }
insert_ph = phonPAUSE_VSHORT; insert_ph = phonPAUSE_VSHORT;
} }
if(((plist2+1)->stress >= 4) && (tr->langopts.vowel_pause & 0x100))
if(((plist2+1)->stresslevel >= 4) && (tr->langopts.vowel_pause & 0x100))
{ {
// pause before a words which starts with a stressed vowel // pause before a words which starts with a stressed vowel
insert_ph = phonPAUSE_SHORT; insert_ph = phonPAUSE_SHORT;
phlist[ix].type = ph->type; phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist2->synthflags | switched_language; phlist[ix].synthflags = plist2->synthflags | switched_language;
phlist[ix].stresslevel = plist2->stress & 0xf;
phlist[ix].tone_ph = plist2->tone_number;
phlist[ix].stresslevel = plist2->stresslevel & 0xf;
phlist[ix].tone_ph = plist2->tone_ph;
phlist[ix].sourceix = 0; phlist[ix].sourceix = 0;


if(plist2->sourceix != 0) if(plist2->sourceix != 0)

+ 105
- 54
src/readclause.cpp View File

static int sayas_mode; static int sayas_mode;
static int ssml_ignore_l_angle = 0; static int ssml_ignore_l_angle = 0;


static const char *punct_stop = ".:!?"; // pitch fall if followed by space
static const char *punct_close = ")]}>;'\""; // always pitch fall unless followed by alnum

// alter tone for announce punctuation or capitals // alter tone for announce punctuation or capitals
//static const char *tone_punct_on = "\0016T"; // add reverberation, lower pitch //static const char *tone_punct_on = "\0016T"; // add reverberation, lower pitch
//static const char *tone_punct_off = "\001T\001P"; //static const char *tone_punct_off = "\001T\001P";
CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON,
CLAUSE_SEMICOLON, // en-dash CLAUSE_SEMICOLON, // en-dash
CLAUSE_SEMICOLON, // em-dash CLAUSE_SEMICOLON, // em-dash
CLAUSE_SEMICOLON, // elipsis
CLAUSE_SEMICOLON + PUNCT_SAY_NAME, // elipsis


CLAUSE_QUESTION, // Greek question mark CLAUSE_QUESTION, // Greek question mark
CLAUSE_SEMICOLON, // Greek semicolon CLAUSE_SEMICOLON, // Greek semicolon


if(LookupDictList(tr,&string1,phonemes,flags,0,NULL)) if(LookupDictList(tr,&string1,phonemes,flags,0,NULL))
{ {
SetWordStress(tr, phonemes, flags[0], -1, 0);
SetWordStress(tr, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2); DecodePhonemes(phonemes,phonemes2);
sprintf(text_out,"[[%s]]",phonemes2); sprintf(text_out,"[[%s]]",phonemes2);
option_phoneme_input |= 2; option_phoneme_input |= 2;
} }




static const char *LookupCharName(Translator *tr, int c)
{//=====================================================
static const char *LookupCharName(Translator *tr, int c, int only)
{//===============================================================
// Find the phoneme string (in ascii) to speak the name of character c // Find the phoneme string (in ascii) to speak the name of character c
// Used for punctuation characters and symbols // Used for punctuation characters and symbols


ix = utf8_out(c,&single_letter[2]); ix = utf8_out(c,&single_letter[2]);
single_letter[2+ix]=0; single_letter[2+ix]=0;


string = &single_letter[1];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
if(only)
{ {
// try _* then *
string = &single_letter[2]; string = &single_letter[2];
LookupDictList(tr, &string, phonemes, flags, 0, NULL);
}
else
{
string = &single_letter[1];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0) if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
{ {
// now try the rules
single_letter[1] = ' ';
TranslateRules(tr, &single_letter[2], phonemes, sizeof(phonemes), NULL,0,NULL);
// try _* then *
string = &single_letter[2];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
{
// now try the rules
single_letter[1] = ' ';
TranslateRules(tr, &single_letter[2], phonemes, sizeof(phonemes), NULL,0,NULL);
}
} }
} }


if((phonemes[0] == 0) && (tr->translator_name != L('e','n')))
if((only==0) && (phonemes[0] == 0) && (tr->translator_name != L('e','n')))
{ {
// not found, try English // not found, try English
SetTranslator2("en"); SetTranslator2("en");
{ {
if(lang_name) if(lang_name)
{ {
SetWordStress(translator2, phonemes, flags[0], -1, 0);
SetWordStress(translator2, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2); DecodePhonemes(phonemes,phonemes2);
sprintf(buf,"[[_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name)); sprintf(buf,"[[_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name));
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
} }
else else
{ {
SetWordStress(tr, phonemes, flags[0], -1, 0);
SetWordStress(tr, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2); DecodePhonemes(phonemes,phonemes2);
sprintf(buf,"[[%s]] ",phonemes2); sprintf(buf,"[[%s]] ",phonemes2);
} }
option_phoneme_input |= 2; option_phoneme_input |= 2;
} }
else else
if(only == 0)
{ {
strcpy(buf,"[[(X1)(X1)(X1)]]"); strcpy(buf,"[[(X1)(X1)(X1)]]");
option_phoneme_input |= 2; option_phoneme_input |= 2;
const char *punctname; const char *punctname;
int found = 0; int found = 0;
int soundicon; int soundicon;
int attributes;
int short_pause;
int c2; int c2;
int len; int len;
int bufix1; int bufix1;
found = 1; found = 1;
} }
else else
if((punctname = LookupCharName(tr, c1)) != NULL)
if((punctname = LookupCharName(tr, c1, 0)) != NULL)
{ {
found = 1; found = 1;
if((*bufix==0) || (end_clause==0))
if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{ {
punct_count=1; punct_count=1;
while(c2 == c1) while(c2 == c1)


if(c1 == '-') if(c1 == '-')
return(CLAUSE_NONE); // no pause return(CLAUSE_NONE); // no pause
if(bufix1 > 0)
return(CLAUSE_SHORTCOMMA);
if((strchr_w(punct_close,c1) != NULL) && !iswalnum(c2))
return(CLAUSE_SHORTFALL+4);
if(iswspace(c2) && strchr_w(punct_stop,c1)!=NULL)
return(punct_attributes[lookupwchar(punct_chars,c1)]);

attributes = punct_attributes[lookupwchar(punct_chars,c1)];

short_pause = CLAUSE_SHORTFALL;
if((attributes & CLAUSE_BITS_INTONATION) == 0x1000)
short_pause = CLAUSE_SHORTCOMMA;

if((bufix1 > 0) && !(tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{
if((attributes & ~0x8000) == CLAUSE_SEMICOLON)
return(CLAUSE_SHORTFALL);
return(short_pause);
}

if(attributes & CLAUSE_BIT_SENTENCE)
return(attributes);
return(CLAUSE_SHORTCOMMA);
return(short_pause);
} // end of AnnouncePunctuation } // end of AnnouncePunctuation


#define SSML_SPEAK 1 #define SSML_SPEAK 1
int c2; // next character int c2; // next character
int cprev=' '; // previous character int cprev=' '; // previous character
int cprev2=' '; int cprev2=' ';
int c_next;
int parag; int parag;
int ix = 0; int ix = 0;
int j; int j;
int found; int found;
int any_alnum = 0; int any_alnum = 0;
int self_closing; int self_closing;
int punct_data;
int punct_data = 0;
int is_end_clause; int is_end_clause;
int announced_punctuation; int announced_punctuation;
int stressed_word = 0; int stressed_word = 0;
{ {
is_end_clause = 0; is_end_clause = 0;


if((c1 == '.') && (c2 == '.'))
{
while((c_next = GetC()) == '.')
{
// 3 or more dots, replace by elipsis
c1 = 0x2026;
c2 = ' ';
}
UngetC(c_next);
}
punct_data = 0;
if((punct = lookupwchar(punct_chars,c1)) != 0) if((punct = lookupwchar(punct_chars,c1)) != 0)
{ {
punct_data = punct_attributes[punct]; punct_data = punct_attributes[punct];
} }
} }

if(is_end_clause)
if((punct_data & PUNCT_SAY_NAME) && (announced_punctuation == 0))
{ {
int c_next;
if((c1 == '.') && (cprev == '.'))
// used for elipsis (and 3 dots) if a pronunciation for elipsis is given in *_list
char *p2;

p2 = &buf[ix];
sprintf(p2,"%s",LookupCharName(tr, c1, 1));
if(p2[0] != 0)
{ {
c1 = 0x2026;
punct = 9; // elipsis
ix += strlen(p2);
announced_punctuation = c1;
punct_data = punct_data & ~CLAUSE_BITS_INTONATION; // change intonation type to 0 (full-stop)
} }
}

if(is_end_clause)
{
nl_count = 0; nl_count = 0;
c_next = c2; c_next = c2;


} }
} }


if((nl_count==0) && (c1 == '.'))
if(nl_count==0)
{ {
if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
(iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2))))) // lang=hu
if(c1 == '.')
{ {
// dot after a number indicates an ordinal number
if(!iswdigit(cprev) || iswlower(c_next) || (c_next == '<'))
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
(iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2))))) // lang=hu
{
// dot after a number indicates an ordinal number
if(!iswdigit(cprev) || iswlower(c_next) || (c_next == '<'))
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
}
else
if(iswlower(c_next))
{
// next word has no capital letter, this dot is probably from an abbreviation
c1 = ' ';
is_end_clause = 0;
}
if(any_alnum==0)
{
// no letters or digits yet, so probably not a sentence terminator
// Here, dot is followed by space or bracket
c1 = ' ';
is_end_clause = 0;
}
} }
else else
if(iswlower(c_next))
{
// next word has no capital letter, this dot is probably from an abbreviation
c1 = ' ';
is_end_clause = 0;
}
if(any_alnum==0)
{ {
c1 = ' '; // no letters or digits yet, so probably not a sentence terminator
is_end_clause = 0;
if(any_alnum==0)
{
// no letters or digits yet, so probably not a sentence terminator
is_end_clause = 0;
}
} }
} }


buf[ix] = ' '; buf[ix] = ' ';
buf[ix+1] = 0; buf[ix+1] = 0;
punct_data = punct_attributes[punct];
if(nl_count > 1) if(nl_count > 1)
{ {
if((punct_data == CLAUSE_QUESTION) || (punct_data == CLAUSE_EXCLAMATION)) if((punct_data == CLAUSE_QUESTION) || (punct_data == CLAUSE_EXCLAMATION))


if(c1 == announced_punctuation) if(c1 == announced_punctuation)
{ {
// const unsigned short keep_punctuation[] = {
// '\'', '-', 0x92, 0xb4, 0x2019, 0x2032, 0 };

// This character has already been announced, so delete it so that it isn't spoken a second time. // This character has already been announced, so delete it so that it isn't spoken a second time.
// Unless it's a hyphen or apostrophe (which is used by TranslateClause() ) // Unless it's a hyphen or apostrophe (which is used by TranslateClause() )
if(!IsBracket(c1))
if(IsBracket(c1))
{
c1 = 0xe000 + '('; // Unicode private useage area. So TranslateRules() knows the bracket name has been spoken
}
else
if(c1 != '-')
{ {
c1 = ' '; c1 = ' ';
} }

+ 6
- 0
src/speech.h View File

#define ARCH_BIG #define ARCH_BIG
#endif #endif


#ifdef __QNX__
#define NEED_GETOPT
#define NO_VARIADIC_MACROS
#endif


#define PLATFORM_POSIX #define PLATFORM_POSIX
#define PATHSEP '/' #define PATHSEP '/'
// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile // USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile

+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.41.18 19.Oct.09";
const char *version_string = "1.41.32 09.Nov.09";
const int version_phdata = 0x014118; const int version_phdata = 0x014118;


int option_device_number = -1; int option_device_number = -1;

+ 7
- 0
src/synthesize.cpp View File

else else
{ {
DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0); DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
if((p->newword == 0) && (next2->newword == 0))
{
if((next->type == phVFRICATIVE) && (p->ph->mnemonic !='d'))
DoPause(20,0);
if((next->type == phFRICATIVE) || (next->type == phNASAL))
DoPause(12,0);
}
} }
break; break;



+ 4
- 2
src/tr_languages.cpp View File

tr->langopts.param[LOPT_SONORANT_MIN] = 95; tr->langopts.param[LOPT_SONORANT_MIN] = 95;
tr->langopts.param[LOPT_MAXAMP_EOC] = 19; tr->langopts.param[LOPT_MAXAMP_EOC] = 19;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word
tr->langopts.param[LOPT_BRACKET_PAUSE] = 4; // pause at bracket
tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2; // pauses when announcing bracket names
tr->langopts.max_initial_consonants = 3; tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL; tr->langopts.replace_chars = NULL;
tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English


tr->langopts.vowel_pause = 0x20; tr->langopts.vowel_pause = 0x20;
tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x8036;
tr->langopts.stress_flags = 0x8036 | STRS_HYPEN_UNSTRESS;
tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd1 = 2;
// tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries
tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
// tr->langopts.param[LOPT_COMBINE_WORDS] = 9; // combine some prepositions with the following word // tr->langopts.param[LOPT_COMBINE_WORDS] = 9; // combine some prepositions with the following word


tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_5 | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_5 | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED;

+ 37
- 25
src/translate.cpp View File



static int prev_clause_pause=0; static int prev_clause_pause=0;
static int max_clause_pause = 0; static int max_clause_pause = 0;
static int any_stressed_words;
int pre_pause; int pre_pause;




{ {
char *p; char *p;
// German, keep a secondary stress on the stem // German, keep a secondary stress on the stem
SetWordStress(tr, phonemes, dictionary_flags[0], 3, 0);
SetWordStress(tr, phonemes, dictionary_flags, 3, 0);


// reduce all but the first primary stress // reduce all but the first primary stress
ix=0; ix=0;
} }
strcpy(word_phonemes,prefix_phonemes); strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes); strcat(word_phonemes,phonemes);
SetWordStress(tr, word_phonemes, dictionary_flags[0], -1, 0);
SetWordStress(tr, word_phonemes, dictionary_flags, -1, 0);
} }
else else
{ {
// stress position affects the whole word, including prefix // stress position affects the whole word, including prefix
strcpy(word_phonemes,prefix_phonemes); strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes); strcat(word_phonemes,phonemes);
SetWordStress(tr, word_phonemes, dictionary_flags[0], -1, tr->prev_last_stress);
SetWordStress(tr, word_phonemes, dictionary_flags, -1, tr->prev_last_stress);
} }
} }
else else
{ {
if(prefix_phonemes[0] == 0) if(prefix_phonemes[0] == 0)
SetWordStress(tr, phonemes, dictionary_flags[0], -1, tr->prev_last_stress);
SetWordStress(tr, phonemes, dictionary_flags, -1, tr->prev_last_stress);
else else
SetWordStress(tr, phonemes, dictionary_flags[0], -1, 0);
SetWordStress(tr, phonemes, dictionary_flags, -1, 0);
strcpy(word_phonemes,prefix_phonemes); strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes); strcat(word_phonemes,phonemes);
} }
dictionary_flags[0] &= ~FLAG_PAUSE1; dictionary_flags[0] &= ~FLAG_PAUSE1;
} }


if((wflags & FLAG_HYPHEN) && (tr->langopts.stress_flags & STRS_HYPEN_UNSTRESS))
{
ChangeWordStress(tr,word_phonemes,3);
}
else
if(wflags & FLAG_EMPHASIZED2) if(wflags & FLAG_EMPHASIZED2)
{ {
// A word is indicated in the source text as stressed // A word is indicated in the source text as stressed
if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2)) if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2))
ChangeWordStress(tr,word_phonemes,4); ChangeWordStress(tr,word_phonemes,4);
else else
if(dictionary_flags[0] & FLAG_UNSTRESS_END)
if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words))
ChangeWordStress(tr,word_phonemes,3); ChangeWordStress(tr,word_phonemes,3);
} }


tr->expect_past--; tr->expect_past--;
} }


if((word_length == 1) && iswalpha(first_char) && (first_char != 'i'))
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i'))
{ {
// English Specific !!!! // English Specific !!!!
// any single letter before a dot is an abbreviation, except 'I' // any single letter before a dot is an abbreviation, except 'I'
static void SetPlist2(PHONEME_LIST2 *p, unsigned char phcode) static void SetPlist2(PHONEME_LIST2 *p, unsigned char phcode)
{//========================================================== {//==========================================================
p->phcode = phcode; p->phcode = phcode;
p->stress = 0;
p->tone_number = 0;
p->stresslevel = 0;
p->tone_ph = 0;
p->synthflags = embedded_flag; p->synthflags = embedded_flag;
p->sourceix = 0; p->sourceix = 0;
embedded_flag = 0; embedded_flag = 0;
{ {
// this word uses a different phoneme table // this word uses a different phoneme table
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
ph_list2[n_ph_list2++].tone_number = switch_phonemes; // temporary phoneme table number
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number
} }


// remove initial pause from a word if it follows a hyphen // remove initial pause from a word if it follows a hyphen
ph_list2[n_ph_list2].phcode = ph_code; ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].sourceix = 0; ph_list2[n_ph_list2].sourceix = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag; ph_list2[n_ph_list2].synthflags = embedded_flag;
ph_list2[n_ph_list2++].tone_number = *p++;
ph_list2[n_ph_list2++].tone_ph = *p++;
} }
else else
if(ph->type == phSTRESS) if(ph->type == phSTRESS)
// for tone languages, the tone number for a syllable follows the vowel // for tone languages, the tone number for a syllable follows the vowel
if(prev_vowel >= 0) if(prev_vowel >= 0)
{ {
ph_list2[prev_vowel].tone_number = ph_code;
ph_list2[prev_vowel].tone_ph = ph_code;
} }
else else
{ {
// mark the previous phoneme as a syllabic consonant // mark the previous phoneme as a syllabic consonant
prev_vowel = n_ph_list2-1; prev_vowel = n_ph_list2-1;
ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE; ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE;
ph_list2[prev_vowel].stress = next_stress;
ph_list2[prev_vowel].stresslevel = next_stress;
} }
else else
if(ph_code == phonLENGTHEN) if(ph_code == phonLENGTHEN)
else else
{ {
ph_list2[n_ph_list2].phcode = ph_code; ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].tone_number = 0;
ph_list2[n_ph_list2].tone_ph = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag | found_dict_flag; ph_list2[n_ph_list2].synthflags = embedded_flag | found_dict_flag;
embedded_flag = 0; embedded_flag = 0;
ph_list2[n_ph_list2].sourceix = srcix; ph_list2[n_ph_list2].sourceix = srcix;
stress = next_stress; stress = next_stress;
next_stress = 0; next_stress = 0;


if(stress >= 4)
{
any_stressed_words = 1;
}

if((prev_vowel >= 0) && (n_ph_list2-1) != prev_vowel) if((prev_vowel >= 0) && (n_ph_list2-1) != prev_vowel)
ph_list2[n_ph_list2-1].stress = stress; // set stress for previous consonant
ph_list2[n_ph_list2-1].stresslevel = stress; // set stress for previous consonant


ph_list2[n_ph_list2].synthflags |= SFLAG_SYLLABLE; ph_list2[n_ph_list2].synthflags |= SFLAG_SYLLABLE;
prev_vowel = n_ph_list2; prev_vowel = n_ph_list2;
} }
if(next_tone != 0) if(next_tone != 0)
{ {
ph_list2[n_ph_list2].tone_number = next_tone;
ph_list2[n_ph_list2].tone_ph = next_tone;
next_tone=0; next_tone=0;
} }
} }
} }
} }


ph_list2[n_ph_list2].stress = stress;
ph_list2[n_ph_list2].stresslevel = stress;
n_ph_list2++; n_ph_list2++;
first_phoneme = 0; first_phoneme = 0;
} }
// this word uses a different phoneme table, now switch back // this word uses a different phoneme table, now switch back
SelectPhonemeTable(voice->phoneme_tab_ix); SelectPhonemeTable(voice->phoneme_tab_ix);
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
ph_list2[n_ph_list2++].tone_number = voice->phoneme_tab_ix; // original phoneme table number
ph_list2[n_ph_list2++].tone_ph = voice->phoneme_tab_ix; // original phoneme table number
} }




embedded_read = 0; embedded_read = 0;
option_phoneme_input &= ~2; // clear bit 1 (temporary indication) option_phoneme_input &= ~2; // clear bit 1 (temporary indication)
pre_pause = 0; pre_pause = 0;
any_stressed_words = 0;


if((clause_start_char = count_characters) < 0) if((clause_start_char = count_characters) < 0)
clause_start_char = 0; clause_start_char = 0;
else else
if(c=='-') if(c=='-')
{ {
if(IsAlpha(prev_in) && IsAlpha(next_in))
if((IsAlpha(prev_in) || iswdigit(prev_in)) && IsAlpha(next_in))
{ {
// '-' between two letters is a hyphen, treat as a space // '-' between two letters is a hyphen, treat as a space
word_flags |= FLAG_HYPHEN; word_flags |= FLAG_HYPHEN;
} }
word = pw; word = pw;


// include the next few characters, in case there are an ordinal indicator
// include the next few characters, in case there are an ordinal indicator or other suffix
pn[0] = ' '; pn[0] = ' ';
memcpy(pn+1, pw, 8);
pn[8] = 0;
memcpy(pn+1, pw, 16);
pn[16] = 0;


for(pw = &number_buf[1]; pw < pn;) for(pw = &number_buf[1]; pw < pn;)
{ {
// keep wflags for each part, for FLAG_HYPHEN_AFTER
dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 ); dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
while(*pw++ != ' '); while(*pw++ != ' ');
words[ix].pre_pause = 0; words[ix].pre_pause = 0;
words[ix].flags = 0;
} }
} }
else else


if(dict_flags & FLAG_SKIPWORDS) if(dict_flags & FLAG_SKIPWORDS)
{ {
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
} }
} }


PHONEME_LIST2 *p2; PHONEME_LIST2 *p2;
p2 = &ph_list2[n_ph_list2 + ix]; p2 = &ph_list2[n_ph_list2 + ix];
p2->phcode = phonPAUSE; p2->phcode = phonPAUSE;
p2->stress = 0;
p2->stresslevel = 0;
p2->sourceix = source_index; p2->sourceix = source_index;
p2->synthflags = 0; p2->synthflags = 0;
} }

+ 23
- 13
src/translate.h View File

#define FLAG_VERB_EXT 0x100 /* extend the 'verb follows' */ #define FLAG_VERB_EXT 0x100 /* extend the 'verb follows' */
#define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */ #define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */
#define FLAG_ALLCAPS 0x400 // only if the word is all capitals #define FLAG_ALLCAPS 0x400 // only if the word is all capitals
#define BITNUM_FLAG_ALLCAPS 0x2a
#define FLAG_ACCENT 0x800 // character name is base-character name + accent name #define FLAG_ACCENT 0x800 // character name is base-character name + accent name
#define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2 #define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2
#define BITNUM_FLAG_ALLCAPS 0x2a
#define BITNUM_FLAG_HYPHENATED 0x2c #define BITNUM_FLAG_HYPHENATED 0x2c






// Punctuation types returned by ReadClause() // Punctuation types returned by ReadClause()
// bits 0-7 pause x 10mS, bits 12-14 intonation type, // bits 0-7 pause x 10mS, bits 12-14 intonation type,
// bit 15- don't need space after the punctuation
// bit 19=sentence, bit 18=clause, bits 17=voice change // bit 19=sentence, bit 18=clause, bits 17=voice change
// bit 16 used to distinguish otherwise identical types // bit 16 used to distinguish otherwise identical types
// bit 20= punctuation character can be inside a word (Armenian) // bit 20= punctuation character can be inside a word (Armenian)
// bit 21= speak the name of the punctuation character
#define CLAUSE_BIT_SENTENCE 0x80000 #define CLAUSE_BIT_SENTENCE 0x80000
#define CLAUSE_BIT_CLAUSE 0x40000
#define CLAUSE_BIT_VOICE 0x20000 #define CLAUSE_BIT_VOICE 0x20000
#define CLAUSE_BITS_INTONATION 0x7000
#define PUNCT_IN_WORD 0x100000 #define PUNCT_IN_WORD 0x100000
#define PUNCT_SAY_NAME 0x200000


#define CLAUSE_NONE 0 + 0x04000 #define CLAUSE_NONE 0 + 0x04000
#define CLAUSE_PARAGRAPH 70 + 0x80000 #define CLAUSE_PARAGRAPH 70 + 0x80000
#define CLAUSE_EOF 35 + 0x90000
#define CLAUSE_EOF 40 + 0x90000
#define CLAUSE_VOICE 0 + 0x24000 #define CLAUSE_VOICE 0 + 0x24000
#define CLAUSE_PERIOD 35 + 0x80000
#define CLAUSE_PERIOD 40 + 0x80000
#define CLAUSE_COMMA 20 + 0x41000 #define CLAUSE_COMMA 20 + 0x41000
#define CLAUSE_SHORTCOMMA 4 + 0x41000 #define CLAUSE_SHORTCOMMA 4 + 0x41000
#define CLAUSE_SHORTFALL 4 + 0x40000 #define CLAUSE_SHORTFALL 4 + 0x40000
#define CLAUSE_QUESTION 35 + 0x82000
#define CLAUSE_EXCLAMATION 40 + 0x83000
#define CLAUSE_QUESTION 40 + 0x82000
#define CLAUSE_EXCLAMATION 45 + 0x83000
#define CLAUSE_COLON 30 + 0x40000 #define CLAUSE_COLON 30 + 0x40000
#ifdef PLATFORM_RISCOS
#define CLAUSE_SEMICOLON 30 + 0x40000
#else
#define CLAUSE_SEMICOLON 30 + 0x41000 #define CLAUSE_SEMICOLON 30 + 0x41000
#endif


#define SAYAS_CHARS 0x12 #define SAYAS_CHARS 0x12
#define SAYAS_GLYPHS 0x13 #define SAYAS_GLYPHS 0x13
// a clause translated into phoneme codes (first stage) // a clause translated into phoneme codes (first stage)
typedef struct { typedef struct {
unsigned char phcode; unsigned char phcode;
unsigned char stress;
unsigned char tone_number;
unsigned char stresslevel;
unsigned char tone_ph;
unsigned char synthflags; unsigned char synthflags;
unsigned short sourceix; unsigned short sourceix;
} PHONEME_LIST2; } PHONEME_LIST2;






#define N_LOPTS 16
#define N_LOPTS 18
#define LOPT_DIERESES 1 #define LOPT_DIERESES 1
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
// bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word // bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
// Call ApplySpecialAttributes() if $alt or $alt2 is set for a word // Call ApplySpecialAttributes() if $alt or $alt2 is set for a word
#define LOPT_ALT 15 #define LOPT_ALT 15


// pause for bracket (default=4), pause when annoucing bracket names (default=2)
#define LOPT_BRACKET_PAUSE 16

// bit 1, don't break clause before annoucning . ? !
#define LOPT_ANNOUNCE_PUNCT 17



// stress_rule // stress_rule
#define STRESSPOSN_1L 0 // 1st syllable #define STRESSPOSN_1L 0 // 1st syllable
int vowel_pause; int vowel_pause;
int stress_rule; // 1=first syllable, 2=penultimate, 3=last int stress_rule; // 1=first syllable, 2=penultimate, 3=last


#define STRS_HYPEN_UNSTRESS 0x100000
// bit0=don't stress monosyllables, except at end of clause // bit0=don't stress monosyllables, except at end of clause
// bit1=don't set diminished stress, // bit1=don't set diminished stress,
// bit2=mark unstressed final syllables as diminished // bit2=mark unstressed final syllables as diminished
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
// bit18= don't lengthen short vowels more than long vowels at end-of-clause // bit18= don't lengthen short vowels more than long vowels at end-of-clause
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel
// bit20= hyphenated words, 2nd part is unstressed


int stress_flags; int stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable int unstressed_wd1; // stress for $u word of 1 syllable
int unstressed_wd2; // stress for $u word of >1 syllable int unstressed_wd2; // stress for $u word of >1 syllable
int param[N_LOPTS]; int param[N_LOPTS];
int param2[N_LOPTS];
unsigned char *length_mods; unsigned char *length_mods;
unsigned char *length_mods0; unsigned char *length_mods0;




int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
int Unpronouncable(Translator *tr, char *word); int Unpronouncable(Translator *tr, char *word);
void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress);
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);

+ 22
- 23
src/voices.cpp View File







typedef struct {
const char *mnem;
int data;
} keywtab_t;
static MNEM_TAB options_tab[] = {
{"reduce_t", LOPT_REDUCE_T},
{"bracket", LOPT_BRACKET_PAUSE},
{NULL, -1} };


static keywtab_t keyword_tab[] = {
static MNEM_TAB keyword_tab[] = {
{"name", V_NAME}, {"name", V_NAME},
{"language", V_LANGUAGE}, {"language", V_LANGUAGE},
{"gender", V_GENDER}, {"gender", V_GENDER},


static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};


// default is: pitch 82,118
// voice->pitch_base = 0x49000; // default, 73 << 12;
// voice->pitch_range = 0x0f30; // default = 0x1000
voice->pitch_base = 0x47000;
voice->pitch_range = 3996;
// default is: pitch 78,120
voice->pitch_base = 0x45000;
voice->pitch_range = 4536;
// default is: pitch 80,117
// voice->pitch_base = 0x47000;
// voice->pitch_range = 3996;


voice->formant_factor = 256; voice->formant_factor = 256;


// bit 4 1 = vname = full path // bit 4 1 = vname = full path


FILE *f_voice = NULL; FILE *f_voice = NULL;
keywtab_t *k;
char *p; char *p;
int key; int key;
int ix; int ix;
int n; int n;
int value; int value;
int value2;
int error = 0; int error = 0;
int langix = 0; int langix = 0;
int tone_only = control & 2; int tone_only = control & 2;
char translator_name[40]; char translator_name[40];
char new_dictionary[40]; char new_dictionary[40];
char phonemes_name[40]; char phonemes_name[40];
char option_name[40];
const char *language_type; const char *language_type;
char buf[200]; char buf[200];
char path_voices[sizeof(path_home)+12]; char path_voices[sizeof(path_home)+12];


if(buf[0] == 0) continue; if(buf[0] == 0) continue;


key = 0;
for(k=keyword_tab; k->mnem != NULL; k++)
{
if(strcmp(buf,k->mnem)==0)
{
key = k->data;
break;
}
}
key = LookupMnem(keyword_tab, buf);


switch(key) switch(key)
{ {
break; break;


case V_OPTION: case V_OPTION:
if(sscanf(p,"%d %d",&ix,&value) == 2)
value2 = 0;
if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0))
{
langopts->param[ix] = value;
langopts->param2[ix] = value2;
}
else
{ {
if((ix >= 0) && (ix < N_LOPTS))
langopts->param[ix] = value;
fprintf(stderr,"Bad voice option: %s %s\n",buf,p);
} }
break; break;



Loading…
Cancel
Save