Browse Source

[1.42.42]

Don't recognize space as a thousands separator if it's tab, newline, or multiple spaces.
Don't recognuze space as a thousands separator if not followed by exactly 3 digits.

Unrecognized HTML tags should not add a space (eg. <font> <b> inside a word).

lang=hu: fixes for when numbers are ordinal.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@236 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 15 years ago
parent
commit
2698461aa4
69 changed files with 2062 additions and 851 deletions
  1. 88
    5
      dictsource/af_list
  2. 125
    16
      dictsource/af_rules
  3. 17
    8
      dictsource/da_list
  4. 21
    4
      dictsource/da_rules
  5. 3
    2
      dictsource/de_list
  6. 10
    3
      dictsource/de_rules
  7. 49
    32
      dictsource/dict_phonemes
  8. 11
    5
      dictsource/en_list
  9. 3
    2
      dictsource/en_rules
  10. 8
    8
      dictsource/eo_list
  11. 1
    0
      dictsource/es_rules
  12. 10
    11
      dictsource/fr_list
  13. 3
    3
      dictsource/fr_rules
  14. 188
    109
      dictsource/hu_list
  15. 118
    24
      dictsource/hu_rules
  16. 11
    11
      dictsource/id_list
  17. 8
    6
      dictsource/id_rules
  18. 6
    2
      dictsource/no_list
  19. 308
    63
      dictsource/ro_list
  20. 329
    312
      dictsource/ro_rules
  21. 73
    8
      dictsource/ta_list
  22. 245
    28
      dictsource/ta_rules
  23. 35
    19
      phsource/compile_report
  24. BIN
      phsource/d/xd
  25. BIN
      phsource/d/xdz
  26. BIN
      phsource/m/m_
  27. 2
    2
      phsource/mbrola/id1
  28. BIN
      phsource/n^/n^@
  29. BIN
      phsource/n^/n^a
  30. BIN
      phsource/n^/n^e
  31. BIN
      phsource/n^/n^i
  32. BIN
      phsource/n^/n^o
  33. BIN
      phsource/n^/n^u
  34. 3
    0
      phsource/ph_english
  35. 15
    31
      phsource/ph_french
  36. 25
    2
      phsource/ph_hungarian
  37. 1
    1
      phsource/ph_romanian
  38. 8
    2
      phsource/ph_tamil
  39. 40
    1
      phsource/ph_zh
  40. 12
    4
      phsource/phonemes
  41. BIN
      phsource/vdiph2/eo
  42. BIN
      phsource/vwl_fr/@R3
  43. BIN
      phsource/vwl_fr/@R4
  44. BIN
      phsource/vwl_fr/@R5
  45. BIN
      phsource/vwl_fr/_r
  46. BIN
      phsource/vwl_fr/_r2
  47. BIN
      phsource/vwl_fr/r@
  48. BIN
      phsource/vwl_fr/ra
  49. BIN
      phsource/vwl_fr/re
  50. BIN
      phsource/vwl_fr/ri
  51. BIN
      phsource/vwl_fr/ro
  52. BIN
      phsource/vwl_fr/ru
  53. BIN
      phsource/vwl_fr/xr
  54. 1
    1
      platforms/big_endian/README
  55. 45
    42
      platforms/big_endian/espeak-phoneme-data.c
  56. 9
    3
      src/compiledata.cpp
  57. 2
    1
      src/compiledict.cpp
  58. 28
    20
      src/dictionary.cpp
  59. 109
    25
      src/numbers.cpp
  60. 1
    1
      src/phoneme.h
  61. 26
    10
      src/readclause.cpp
  62. 2
    2
      src/speak_lib.cpp
  63. 2
    1
      src/speak_lib.h
  64. 4
    3
      src/synthdata.cpp
  65. 2
    2
      src/synthesize.cpp
  66. 4
    2
      src/tr_languages.cpp
  67. 44
    12
      src/translate.cpp
  68. 6
    1
      src/translate.h
  69. 1
    1
      src/voices.cpp

+ 88
- 5
dictsource/af_list View File

@@ -84,6 +84,7 @@ z zEd
ú $accent
û $accent
ü $accent
ý $accent

_cap h'o@flEt@r
_?? s@mb'o@l
@@ -198,8 +199,8 @@ _dpt 'pWnt
_roman rum'eIns@

// ordinal numbers
_0de d@
_0ste st@
_#de d@
_#ste st@
_1o _'e@r
_2o tw'e@
_3o d'&:r
@@ -218,6 +219,7 @@ albanië alb'A:ne@:@-
algerië alx2'e@re@:@-
amanzimtoti $4
antwerpen antv&rp@n
avignon _^_FR
babilon babilOn
bangladesj baNglad'ES
barcelona bars@l'o@na
@@ -256,8 +258,10 @@ doebaai $2
duitswes dYytsv'Es
ermelo &rm@lo@
franschhoek frA~nsh'uk
fraserburg freIz@rbWrx2
gadara x2@dA:ra
galilea x2al@l'i:a
gdansk g@-dansk
genève Z@nE:v
germiston _^_EN
getsémané x2Ets'e@mani
@@ -271,6 +275,7 @@ groblersdal x2rObl@rsd'al
havana hav'ana
hermon $1
hirosjima hiruS'ima
ingwavuma iNgwav'u:ma
israel IsraI:l
italië it'A:li;@
jeffreysbaai dZEfrisb'AI
@@ -287,11 +292,13 @@ kongo kONgu
knysna neIsna
kuruman kuruman
kwa kwa $u $only // KwaZulu, etc.
kwazulu kwaz'ulu // Kwazulu (lowercase z)
lady _^_EN // Lady Grey/Lady Smith
ladybrand leIdibr'ant
laingsburg leInsbWrx2
lesotho l@sutu
limpopo l@mpo@po@
lockerbie _^_EN
(los angeles) lOs_'andZ@li:z
macedonië mas@d'o@ni@
madagaskar madax2'askar
@@ -309,6 +316,7 @@ moorreesburg mur'e@sbWrx2
europa Y@r'o@pa
nigel _^_EN
nineve nIn@fi
oberammergau o@b@r'am@rgaU
oklahoma @Ukl@h'@Uma
outeniekwa @Ut@n'ikwa
oxford _^_EN
@@ -321,7 +329,6 @@ potchefstroom pOtSIfstr'o@m
rhône _^_FR
richardsbaai ritS@dsb'AI
robertson _^_EN
sahara sah'A:ra
salvador salvadO:r
santiago santi;'A:gu
secunda s@kunda
@@ -335,7 +342,9 @@ springs _^_EN $capital
sunnyside _^_EN
suriname syrin'A:m@
swellendam $3
tankwa taNkwa
tokio to@kiu
trafalgar traf'algar
tunisië $2
turkye $2
ulundi ul'undi
@@ -346,6 +355,7 @@ viëtnam vj'Etnam
wallonië val'o@ni@
washington _^_EN
wellington wEliNt@n
wimbledon _^_EN
wolseley wulsli
uganda ug'anda
uruguay urugwaI
@@ -360,6 +370,7 @@ ackerman ak@rman
adam adam
adriaan A:drijan
adrie A:dri
agnes _^_EN
albertus alb'&rtWs
alfred _^_EN
allah %alA:
@@ -367,6 +378,7 @@ amelia am'i:lija
annalet anal'Et
André 'andreI
annette an'Et
anthonie ant'o@ni
antoinette antun'Et
archimedes arx2im'e@dEs
aristoteles arist'o@t@lEs
@@ -381,6 +393,7 @@ benjamin bEndZ@m@n
bennett bEn@t
bertha b&rta
bester b'Est@r
betjie bEici
betsie bEtsi
beyers beI@rs
blignault blIx2n@Ut
@@ -388,10 +401,12 @@ blomerus blum'e@rWs
blum blum
botha bo@ta
bouwer b@U@r
braham brA:m
brian _^_EN
bredenkamp bre@d@nkamp
bruwer bruw'&:r
caesar siz@r
cameron _^_EN
carl kA:r@L
carlyle _^_EN
carol _^_EN
@@ -404,10 +419,12 @@ charles _^_EN
charlie tSA:li
charmaine SA:m'eI:n
chopin S%OpA~
claire _^_EN
clark _^_EN
conradie $2
chris krIs
christo krIstu
christof krIstOf
christoffel kr@stOf@l
christiaan krIstiA:n
christian krIstian
@@ -420,6 +437,7 @@ cronjé krOnj'e@
cussons kas@ns
cynthia _^_EN
dalene dal'e@n
danielle dani;'&l
darwin _^_EN
daniël d'A:ni:@l
david _^_EN
@@ -466,7 +484,6 @@ flaubert _^_FR
floris $1
fouché fuS'e@
fourie fur'i
francina $2
francois franSwa
françois frA~nsw'A:
gabriël x2A:bri@l
@@ -475,11 +492,13 @@ george _^_EN
georgina dZO:dZ'ina
gerhard x2&rart
gerhardus $2
gertie gI:ti
gertruida $2
gilbert _^_EN
gloria glO:ria
gordon _^_EN
grange x2rA:nsi
greta gre@ta
grové x2ruv'e@
gulliver _^_EN
gustav gustaf
@@ -501,6 +520,7 @@ ingrid iNgr@d
isabel is@b&l
iskariot isk'ariOt
jaco jaku
jakomina jakum'ina
james _^_EN
jane _^_EN
Jean ZA~n $capital
@@ -528,15 +548,22 @@ langenhoven laN@nho@f@n
lasarus lA:s@r%Ws
lategan lA:t@x2an
le l@ $only
leana li'A:na
leandra li'andra
leipoldt lAIpOlt
leonardo liu:n'ardu
leonie li'o@ni
levi le@fi
lewies l@vis
liesbet lisbEt
loubser l@UpS@r
louis luI
louise luw'i:z
lucretia lukr'i:Sja
lukas lukas
lulu lulu
mabalêl mabal'&l
mabel _^_EN
mackintosh _^_EN
madelene mad@l'e@n
mbeki mbE:ki
@@ -555,6 +582,8 @@ marius mA:riWs
marlene marl'e@:n
marlise marl'i:s
martha marta
marthinus mart'inWs
martiens $2
martin m'A:rt@n
mary _^_EN
mathilda mat'Ilda
@@ -579,6 +608,7 @@ morné mOrn'eI
mostert m'Ost@rt
mouton mut'On
mozart mo@tsart
myburgh meIbWrx2
naomi na_'o@mi
napoleon nap'o@liOn
natasha n%at'aSa
@@ -588,6 +618,8 @@ nelson _^_EN
niklaas niklA:s
olga Olga
ontong OntON
patrick _^_EN
petoors p@to@rs
phillips fIl@ps
pierre p'e@r
petronella pe@trun'&la
@@ -602,6 +634,7 @@ quixote kix2'OtE
rachmaninoff rax2m'aninOf
rademeyer rA:d@meI@r
rall rA:l
raymond _^_EN
rebekka r@bEka
reinette r@nEt
renette r@nEt
@@ -611,6 +644,7 @@ retief r@tif
rhodes _^_EN
riekert rik@rt
robert _^_EN
robin _^_EN
ronel run'&l
rossouw r@s@U
rousseau r@s@U
@@ -639,6 +673,7 @@ stephanus st@fA:nWs
stevenson _^_EN
strauss straUs
stockenström stOk@nstro@m
stuart _^_EN
suzanne suz'A:n
suzette suz'Et
tania tanja
@@ -678,9 +713,11 @@ tony t@Uni
trichardt trix2A:rt
vera ve@ra
verwey f@rveI
virginia _^_EN
vivaldi viv'aldi
viviers v@v@je@
wilhelm v@lh&l@-m
williston _^_EN
khumalo kum'A:lu
zuma zu:ma

@@ -692,17 +729,21 @@ checkers tSEk@rs
chrysler kraIsl@r
citroên s@trun
ferrari f@rA:ri
isuzu is'u:zu
martini mart'i:ni
naspers nasp&rs
peugeot pW:Z@U
(pick n pay) p,ik||@n||p'eI
porsche pOrS@
port pOrt $1
prestik prEstik
rover _^_EN
sesotho s@s'u:tu
sorbonne _^_FR
sotho su:tu
toyota $2
venda vEnda
vicks viks
volvo vOlvu
wimpy wImpi

@@ -868,6 +909,7 @@ algaande $2
alge alx2@
algehele alx2@h,e@l@
allegro al'Egru
allergene $3
almiskie $3
alom al_'Om
alreeds $2
@@ -882,6 +924,7 @@ aspris $2
asseblief as@bl'if
assessore $3
attraksie $2
aversie av'&rsi

babelaas bab@lA:s
barrikade $3
@@ -898,11 +941,13 @@ bewe be@v@
bewend be@v@nt
bewering b@ve@rIN
bomaat bo@mA:t
bordegoed bO:rd@x2ut
boskaas $2
bostaande b'o@stA:nd@
bourgeois _^_FR
bourgeoisie _^_FR
briewemes briv@mEs
bêretyd b&:r@teIt

cabernet kab@rn'eI
camembert kam@mb'&:r
@@ -912,27 +957,36 @@ casino kas'i:n@U
cedille s@dIl@
charisma kar'Isma
cliché kliS'eI:
clivia klIvija
cognac kOn^ak
confetti $2
crescendo kr@SEndu
crimpelene kr@mp@li:n

dadelik dA:d@lIk
dagorde dax2_Ord@
daisy deIzi
darem dar@m
dekade dEk'A:d@
dekreling dEkre@l@N
deurentyd dy@r@nteIt
deurgaans $1
deurkruis $2
deurry dY@rreI
deurstaan $2
deurstraalde $2
dikwels dIkv@ls
diplomasie d@plo@mas'i
disleksie $2
doktore $2
doyen dO:j'En
dubbelken dWb@lkEn
dusver dWsf&r

edelagbare $3
eenkeer $1
efesiër if'e@si@r
effata Ef'A:ta
effense Ef@ns@
eks Eks
ekself %&ks'&lf
@@ -948,9 +1002,11 @@ ergering &rg@r@N
espeak i:;spi:k
(et cetera) Ets'Et@ra
euro Y@ru
ewentwil e@v@ntv@l
exodus Eks'o@dWs

fakture $2
fetakaas fEtakA:s
figuur f@x2yr
filippense f@l@pEns@
finalis $3
@@ -965,10 +1021,12 @@ gebrokener x2@bro@k@n@r
gee x2e@
geen x2e@n
geldelike x2&ld@l@k@
gelerendheid x2@le@r@ntheIt
genade $2
genesis x2e@n@s@s
//gesamentlik x2@sA:m@ntl@k
gentleman _^_EN
germolene dZI:m@l'i:n
gewellys x2e@v@lleIs
gladiator x2ladi'A:tOr
globale x2lo@b'A:l@
@@ -1017,6 +1075,7 @@ intens @nt'Ens
intensiteit $4
ironieë irun'i:@

jantwak jantw'ak
jawoord jA:vo@rt
jupiter jupit@r

@@ -1024,12 +1083,16 @@ kafee kaf'e@
kameraderie kam@rA:d@r'i
katswink katsv@nk
kaviaar kavi'A:r
kennisvaardig $1
klaasvakie $2
klimeid klImeIt
knapsekêrel knaps@k&:r@l
kolossense kOl@s'e~ns@
komaan kOmA:n
konfyttertjie kOnf'eIt&:rci
konkawe kOnk'A:v@
konte $1
kopaar kOp_A:r
kopiereg kup'ir&x2
korswel kOrsv@l
kotiljons kOt@lj'o~ns
@@ -1047,6 +1110,7 @@ luidop lYyt_Op
lykwaak leIkvA:k

macaroni makar'o@ni
macho matS@U
madame mad'A:m
madamoiselle _^_FR
maskering mask'e@r@N $only
@@ -1054,7 +1118,6 @@ massaal $2
massale $2
meegee me@x2e@
memorabilia mEmOrab'ilija
memoriam mEm'o@riam
mercedes $2
meregebied me@r@x2@bit
merlot m&rl'o@
@@ -1093,6 +1156,7 @@ nimmermeer $1
nirvana n@rvA:na
nogeens nOx2_e@ns
normale nOrm'A:l@
nousedae n@Us@dA:
numeri nWm@ri

oeuvre W:vr@
@@ -1142,6 +1206,7 @@ oorleef $2
oorsee $2
oorsese $2
oorval $2 $verb
oranjepers o@r'anj@p&:rs
oudsher @Utsh&r

pandemonium pand@m'o@niWm
@@ -1157,17 +1222,21 @@ penorent pEno@rEnt
per p@r $only
persent p@rsEnt
petite p@tit
pikanienie pikan'ini
pinotage pinut'A:Z
pirouette p@ru:'Et
plaasjaap plA:sjA:p
plasenta plas'Enta
poinsettia pOIns'Etia
potpourri pOtpur'i
primate $2
profetes prOf@t'Es
(pro forma) pro@||f'Orma

rebelleer r@b@le@r
rededele re@d@de@l@
regie r@Zi:
rekent re@k@nt
renaissance rEn@s'A~ns
retoriek r@tur'ik
rimpeling rImp@l@N
@@ -1180,6 +1249,7 @@ rukkerig rWk@r@x2
ruspes rWsp@s
rymelary reIm@lar'eI

saint sInt $u
salami sal'A:mi
salute sal'yt@
samelewing sA:m@l,e@v@N
@@ -1210,9 +1280,11 @@ sover so@f&r
staccato $2
sterwens st&rv@ns
stilswye $1
strydros streIt_rOs
subiet sWb'it
suburbia sWb'Wrbija
swangerswaar swaN@rswA:r
swetterjoel $3

tanga taNga
tango taNx2u
@@ -1221,12 +1293,16 @@ tequila t@ki:la
terdeë $2
terug t@-rWx2
tesaam t@sA:m
tesourus t@s@UrWs
tevrede t@fre@d@
thula tu:la
toegee tux2e@
toereken ture@k@n
tornado $2
totale tut'A:l@
totsiens $2
tragiek trax2'ik
tsoenami tsun'A:mi

uitdaging YydA:x2@N
uiteraard Yyt@r_'A:rt
@@ -1245,10 +1321,13 @@ verafgeleë f&rafx2@le@@
verby f@rbeI
verdere f&rd@r@
ver f'&:r
verderaan f&:rd@r_A:n
vereduifie fe@r@dYyfi
verg f&rx2
vergeleë f&:rx2@l,e@@
vergete f@rx2e@t@
verkeerdom f@rke@rt_Om
verlangste f@rlaNst@
vermy $2
verre f&:r@
verregaande f&r@x2'A:nd@
@@ -1259,7 +1338,10 @@ verste f&rst@
verte f&rt@
verweg f&:rv&x2
via via
voelentheid ful@ntheIt
volheid $1
volpunte $1
volspoed $1
volswanger $1
volte $1
voluit fOl_Yyt
@@ -1284,5 +1366,6 @@ weerklink $2
weggewens v&x2@v'E:ns
welaf v&l_af
weleer v&l_'e@r
wentaktiek $1
wysgere veIsx2e@r@


+ 125
- 16
dictsource/af_rules View File

@@ -1,5 +1,5 @@
//maintainer: Willem van der Walt
// email: [email protected]
// email: [email protected]
// tel: +27 12 8413996
// Meraka Institute, CSIR
//With contributions by Christo de Klerk
@@ -53,11 +53,13 @@
ad (vies %at // move default stress: advies/-brief/-komitee and many similar

af (gunstig %af // move default stress: afgunstig/-e
aga (pant %ag%a // fix g sound and stress: agapant/-e and compounds
C) agie A:x2i
a (gitA %a // fix a sound: agitasie/(ge)agiteer
agte (losig %ax2t@ // move default stress: agtelosig/-e/-heid
agter (dogt %ax2t@r // move default stress: agterdogtig and derivatives
agtereen (volg %ax2t@r_%e@n // move default stress: agtereenvolgend/-e/-ens
agter (losig %ax2t@r // move default stress: agterlosig/-e/-heid
agter (oor %ax2t@r_ // move default stress: agteroor/-buig/-druk/-val, etc.
&) agtig 'ax2t@x2 // this string almost always carries stress on a
a (gurkie %a // fix stress and a sound: agurkie/-s and compounds
@@ -82,7 +84,7 @@
@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
Csp) asie A:s%i // restore default stress: vloer/kantoorspasie, etc.
@sp) asie A:s%i // restore default stress: vloer/kantoorspasie/weggooispasie, etc.
Cst) asie A:si // restore default stress: brandweer/spoorwegstasie and similar
AAst) asie A:si // default stress: polisie/radio/televisie/uitsaaistasie, etc.
aspek %aspEk // fix stress and e sound: aspek/-te/-tief and compounds
@@ -133,9 +135,11 @@
alge (ryn %alx2@ // move default stress: Algeryn/-e/-s
alia A:l%i%a // fix stress and a sound: alias/-se/(inter )alia
_) ali (krA al%i // fix vowel sounds: alikreukel/alikruik/alikruk
al (jander %al // move default stress: aljander and compounds
alkohol alk%u%Ol // fix o sounds and drop h: alkohol/-is/-iste/-isme
alkohol (ieK %alk%uho@l // fix stress and 2nd o sound: alkoholies/-e
_) alle (C al@ // alledaags/e/allerhande
alle (mint %al@ // move default stress: allemintig/-e
_) a (llooi %a // move default stress: allooi(metaal/-silwer, etc.)
alma (nak %alm%a // move default stress: almanak/-ke and compounds
alogie alux2'i // genealogie/mineralogie and similar
@@ -197,6 +201,7 @@
C) afel (@ A:f@l // compounds starting with tafel/ontrafeling/uitrafeling
_) a (ffA %a // move default stress: affêre and compounds/affekteer
a (fflik %a // move default stress: affliksie/-s
affo (dil %af%u // fix stress and o sound: affodil/-le
affro (nt %afr%O // fix stress: affronteer/-tasie
afgee (+ 'afx2e@ // see rule: _) afge (@P4 afx2@
_) afge (@P4 'afx2@ // stress on 1st slb
@@ -272,6 +277,7 @@
arre (stA %ar@ // arrestasie/arresteer
arro (g %ar%u // arrogant/-e/arrogansie
ar (seen %ar
arse (na %ars@ // move default stress: arsenaal/arsenale and compounds
arte (fak %art@ // move default stress: artefak/-te
ar (tikel %ar // stress: artikel and compounds
artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer
@@ -344,6 +350,7 @@
aan (stAAC %A:n // stress on 2nd slb.: aanstootlik/aansteeklik
aan (stAAC_N A:n // stress on 1st slb.: aanstoot/aansteek
aan (tasb %A:n // stress: (on)aantasbaar/-bare
_) aantel A:nt&l // fix e sound: aantel/-lery
aantreklik %A:ntr&kl@k // move default stress: aantreklik/-heid
aan (trek_N A:n // restore default stress: aantrek
aan (vaar %A:n // aanvaar/de/baar
@@ -452,6 +459,7 @@
bla (tant bl%a // shorten 1st a and move default stress: blatant/-e/-heid
_) blik (A blIk_ // fix i sound: blikaspaai/blikemmer/-s/blikoopmaker/-s/blikoor/blikore
bloe (ddors@ bl%u // bloeddorstig and derivatives, but bloeddors
bloed (skendig bl%ut // move default stress: bloedskendig/-e
bloed (stol bl%ut // move default stress: bloedstollend/-e
_) blo (kka bl%O // move default stress: blokkade/-s and compounds
_) blo (kkeer bl%O // move default stress: (ge)blokkeer/-der, etc.
@@ -468,9 +476,11 @@
bo (he b%u // fix stress: boheems/boheme
bok (ooi bOk_ // bokooi/e/ribbokooi/boerbokooi
_) bongo bONgu // fix g and o sounds: bongo and compounds: bongotromme
bonsmara b%OnsmA:r%a // move default stress: bonsmarabees/-bul/-koei
bosch (_ bOs // Rondebosch/Stellenbosch
bo (tanie b%o@ // stress on 2nd slb.: botanies/-e
bota (nie_N b%o@t%a // stress on 3rd slb.: botanie
_) bota (niCA bo@t''A: // fix stress: botanikus/botanici
boulevard bul@vard // boulevard/-s
_) bowe b''o@v@ // fix e sound in compounds: boweaards/bowemaans/bowetoon
_) breda br@dA: // move default stress: (van )Breda/Bredasdorp
@@ -533,7 +543,9 @@
baba bA:ba
baba (tjie bA:baI // fix 2nd a sound: babatjie/-s
_) bad (A bat_ // shorten a sound, pause: bad-/afloop/artikel/olie/oord/uitloop
baklei b@kl'eI // baklei/er
bad (r bat // fix d sound: (swem)badrand/badroom
bahama b%ahA:m%a // fix 1st a sound and stress: Bahama/-s and compounds
baklei b@kleI // baklei/er
_) bak (o bak_ // fix a sound and stress: bakoor/bakore
balaklava b%al%aklA:v%a // fix stress, a and v sounds: balaklava and compounds
balaklawa b%al%aklA:v%a // fix stress and a sounds: balaklawa and compounds
@@ -627,6 +639,7 @@
@) bewys b@veIs // "be" in rybewys/lisensiebewys/geboortebewys
bee (+ be@
@) beer (_ b'e@r // absorbeer/inhibeer, etc.
%Ca) beer be@r // restore default stress: pappa-/mammabeer
teddie) beer be@r // restore default stress
ys) beer be@r // restore default stress
bede (Cf b@d& // bederf/bedelf
@@ -655,6 +668,8 @@
beter b'e@t@r
beties be@tis // fix e sounds: diabeties/-e
betlehe (m bEtl%i%E // fix stress and vowel sounds: Betlehem/-mer
bewe (knie be@v@ // fix 1st e sound and stress: beweknie/-ë
bewe (lip be@v@ // fix 1st e sound and stress: bewelip/-pe
bewe (rasie be@v@ // fix e sounds: bewerasie/-siekte


@@ -676,6 +691,7 @@
chemika (li x2%e@m%ikA: // for compounds of chemikalieë
cholera ko@l@ra_ // fix e sound: cholera/-epidemie and similarcompounds
cholesterol k%OlEst@-r%Ol // cholesterol and many compounds
chore (ogra k%Or%i // fix stress and vowel sounds: choreografie and derivatives
ch (l k // chloor and compounds
ch (ro k
chat _^_EN
@@ -915,6 +931,7 @@
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese
pous) e (C @ // fix e sound: pousebrood/-klok/-tyd, etc.
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
@@ -937,6 +954,7 @@
lat) eres @r@s //lateres
fp) ers (_ &rs // fix e sound: dof-/gif-/olyf-/tydskrifpers, etc.
bloup) ers &:rs // fix e sound: bloupers
iew) ers (ter @rs // fix e sound: (l)iewerster
treil) e (rC @ // fix e sound: (vis)treilerkaptein/-wrak and similar compounds
dehands) e (C@ @ // fix e sound: tweedehandsemotorhandelaar/-winkel, etc.
goeder) e (@ @ // fix e sound: goederekapitaal/-kantoor/-loods/-mark/-omset/-reg
@@ -1230,7 +1248,7 @@
&) etjie (+ ici
Cn) etjies Eicis // kraaknetjies/hipernetjies
nn) etjies icis // kannetjies/mannetjies/pennetjies, etc.
&) elikheid (_S8 @l@keIt // vriendelikheid/duidelikheid
&) elikheid @l@keIt // vriendelikheid/duidelikheid/gemoedelikheid
epi (deC %Ep%i // epidemie/-s/-e/epidermies/epidermis

&K) erig @rIx2
@@ -1254,8 +1272,12 @@
&) ere (_ @r@
@l) ere (_ e@r@ // fix e sound: staanlere/toonlere
sw) ere (_ e@:r@ // fix e sound: pitswere and similar compounds
@C) erp (_ &rp // fix e sound: wol-/syserp and similar
@C) erpe (_ &rp@ // fix e sound: wol-/syserpe and similar
@C) erpie (_ &rpi // fix e sound: wol-/syserpie/-s
@) ery (_+ @reI // oorlopery, etc.
@) ery (e_ @reI // fix 2nd e sound: delwerye and similar
_) es (karp %Es // move default stress: eskarp/-e and compounds
eti (ket %Et%i // shorten e sound and move stress: etiket/-te
etikette (rA %Et%ik%Ete@ // fix e sound: etiketterend/-ering
C) e (waar @ // fix e sound: bate-/portefeulje-/toegevoegdewaarde/benedewaarts
@@ -1358,6 +1380,7 @@
ik) eer 'e@r // abdikeer/kommunikeer, etc.
AAl) eer e@r // restore default stress: evange-/evolusie-/seekoeilieleer, etc.
Aol) eer 'e@r // fix stress: rioleer/gelanseoleer/-de/gepetioleer
@Cl) eer e@r // restore default stress in compounds like windpompleer
oriënt) eer e@r // default stress: beroepsgeoriënteerd and similar
Cm) eer e@r // words containing meer preceded by consonant take default stress: bergmeer/strandmeer, etc.
rm) eer 'e@r // but not words like: alarmeer/gereformeerd/transformeer
@@ -1458,7 +1481,7 @@
@) enswaar (dig @nsv'A:r // noemenswaardige/bejammerenswaardig
@C) ent (K 'Ent // orent/student/presidentsrede
@C) ent (e_ 'Ent // plurals of some of the above
en) ent (_ Ent // restore default stress: koppenent/voetenent
en) ent (++ Ent // restore default stress: koppenent/-e/voetenent/-e
pr) ent (++ Ent // default stress for compounds of prent/-e
pr) entjie E:iNk%i //fix prentjie
@s) ent (rA Ent // winkelsentrum/studentesentrum, etc.
@@ -1482,6 +1505,7 @@
fa (nati f%a // fix stress and a sound: fanaties/-e
fan (fare f%an // move default stress: fanfare/-s
fanta (sA f%ant%a // fantaseer/fantasie
_) fan (to f%an // move default stress: fantoom/fantome
fari (seër f%ar%i // fix stress and a sound: Fariseër/-s
farma (seut f%arm%a // move default stress: farmaseut/-e/-ies/-ika
fasade f%asA:d@ // fix stress and 1st a sound: fasade/-s and compounds
@@ -1540,11 +1564,14 @@
foto fo@tu
fotoge (nie f%o@t%ux2e@ // fix stress and e sound: fotogenies/-e
fo (togra fo@ // move default stress: fotograaf and similar
foto (sta f%o@t%u // move default stress: fotostaat/fotostate and derivatives
fra (giel fr%a // fix stress and a sound: fragiel/-e
fran (Cina fr%an
_) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca
frangi (pani fr%aN%i // fix stress: frangipani and compounds
fre (kwen fr%i // fix stress and 1st e sound: frekwensie/-s and compounds
freud frOId // Freud/Freudiaans/-e
frikkade (l fr@k@d& // fix stress, a and e sounds: frikkadel/-le
front (A@ fr%Ont // fix stress and e sound: konfronterend/-e/konfrontering
fru (str fr%W // move default stress: frustrerend/-e
fung (e f%WNx2 // fungeer/fungerende/fungering
@@ -1565,6 +1592,8 @@
gal (joen x2%al // move default stress: galjoen/-e and compounds
gamie (_ x2am'i // bi-/mono-/poligamie, etc.
gamies x2'A:mis // bi-/mono-/poligamies/-e
@) gans x2A~ns // nasalise a: berggans/kolgans/-e
gans (C x2A~ns // nasalise a: gansveer/-vere and similar compounds
ga (riep x2%a // fix stress and a sound: Gariep(dam)
gar (n x2%ar // move default stress: garnaal/garnale/garneer/garnering and compounds
garni (soen x2%arn%i // fix stress: garnisoen and compounds
@@ -1603,6 +1632,7 @@
_) goewer x2%uv@r // move default stress: goewerneur and compounds
A) gogie (_ x2ux2'i // demagogie/pedagogie
A) gogies x2'o@x2is // demagogies/-e/pedagogies/-e
gomag (tig x2Om_%ax2 // fix o sound and stress, pause: gomagtig/-e/-heid
A) goog (_ x2'o@x2 // demagoog/pedagoog
gor (dyn x2%Or // move default stress: gordyn and compounds
go (rilla g%u // fix g and o sounds: gorilla and compounds
@@ -1640,6 +1670,7 @@
grotere x2ro@t@r@ // fix vowel sounds and stress: grotere/-s
guerrilla g@r'Ila
guillotine g%il%utin // guillotine and compounds
gus (ooi x2Ws_ // fix u sound, pause: gusooi/-e
guttu (ra x2%Wt%W // move default stress: gutturaal/gutturale
gésel x2e@s@l // fix stress and e sounds: (ge)gésel/-ing

@@ -1674,6 +1705,7 @@
ge (kg x2& // fix stress and e sound: gekgeskeer
ge (kk x2&
ge (kh x2&
geklede x2@kle@d@ // fix e sound: wit-/swart-/groengeklede
ge (kt x2& // fix e sound: gektalery
gekw (ord x2&kv // fix stress, e and w sounds: gekwordens/gekwording
genade x2@nA:d@ // correct 2nd e in compounds: genadedood, etc.
@@ -1722,12 +1754,14 @@
gesels x2@s&ls
A) ge (tjie x2i // fix e sound: (graad)negetjie/-s
geves (_ x2@fEs // prevent Eng. translation: hout-/staalgeves, etc.
geweer x2@ve@r // restore default stress: geweerhout/-sport/-staander
@C) gewens x2@ve~ns


.group h
h h
h (h
@A) h (_ // drop final h after vowel: (Su)Sarah and similar
_) half (geP4 h'alf // fix e sound in halfgetem(de), etc.
half (kro@ h%alf // move default stress: halfkroon/halfkrone
half (een h%alf_ // move default stress in this and following time expressions: halfeen/-vergadering
@@ -1786,6 +1820,7 @@
hiëro (glie h%i@r%u // fix stress and vowel sounds: hiëroglief/-gliewe
A) hle (_ =LE // Nguni words and names ending in -hle: Enhlalakahle/Hlalanikahle/malahle/Phahle
_) hobo ho@bu // fix o sound in compounds: hobokonsert/-musiek/-solo/-sonata/-speler
hoender hun@r // drop d: hoender and many compounds
hoeve (r h%uf& // fix stress and e sounds: hoever(re)
hoeveelh (e h%ufe@lh // move default stress: hoeveelheid/-hede
hof (A hOf_ // fix o, pause: hofaansoek/-amptenaar/-etiket/-interdik/-ordonnans/-uitspraak/-ure...
@@ -1809,6 +1844,7 @@
heet (hoofdi h%e@t // move default stress: heethoofdig/-e/-heid
heide (C heId@ // heidene/heidense/heidendom/heidekind/Heidelberg
hekse (C hEks@ // fix 2nd e sound in compounds starting with hekse: heksebrousel, etc.
_) hek (ta h%Ek // move default stress: hektaar/hektare
held (haft h%&lt // move default stress: heldhaftig/-e/-heid
hel (din h%&l // move default stress: heldin/-ne/-netjie
_) hele (K he@l@ // hele/helend/heler
@@ -1862,6 +1898,7 @@
i i
i (C I
i (CA i
ô) i (K %i // i unstressed: ou-/jongnôi
tax) i (@ %i // fix i sound: taxidrywer/-staanplek/-staking/minibustaxistelsel
iaal (_K i'A:l // aal normally stressed in words like bilabiaal/koloniaal, etc.
iale (_ i'A:l@ // al normally stressed in words like bilabiale/koloniale, etc.
@@ -2103,6 +2140,7 @@
_) ja (CobA j%a // fix stress and a sound: Jacoba/Jacobus/Jakobus
jacaranda j%ak%ar'anda //jacaranda and compounds
jakaranda j%ak%ar'anda //jakaranda and compounds
jakob (regop j%A:k%Op // move default stress: jakobregop/-pies and similar
jakopewer j%ak%Ope@v@r_ // fix stress and vowel sounds: jakopewer/-oë
jaloe (sie j%al%u // stress: jaloesie/beroepsjaloesie
_) jan (C@ j%an // fix stress and n sound: janfiskaal/janfrederik/jangroentjie/janrap/jansalie
@@ -2147,6 +2185,7 @@
kelende (_ k@l@nd@
kkelend (_ k@l@nt
kkelende (_ k@l@nd@
kelkie (wyn k%&lk%i // move default stress: kelkiewyn/-e
kelner k&ln@r // fix 2nd e sound in compounds like kelnerbaadjie, etc.
kelner (in k%&ln@r // move default stress: kelnerin/-ne/-netjie
ke (nnAK kE // fix e sound: boek-/markkenner/-kennis
@@ -2160,6 +2199,7 @@
flik) kerkers k@rk&:rs // fix e sounds: flikkerkers/-e
weder) ker (A k'e@r // wederkerend/wederkerig
bottel) kers k&:rs // fix e sound: bottelkers/-e
@) ker (sie_ k&r // fix e sound: koekkersies and similar compounds
kete (l ke@t@ // fix e sounds: stookketel/ketelmaker and many similar compounds
_) keuse k''Y@s@ // fix connecting e sound in compounds starting with keuse
kiaat k%i;A:t // move default stress: kiaat and compounds
@@ -2186,6 +2226,7 @@
klawerses kl%A:v@rsEs // fix stress and last e sound: klawerses
klawer (t kl%A:v@r // move default stress: klawertwee/-tien
klawer (v kl%A:v@r // move default stress: klawervier/-vyf/-vrou
klawer (veld klA:v@r // restore default stress: klawerveld/-e
kleinse (rig kl%eInse@ // fix stress and e sound: kleinserig/-e/-heid
klein (sieli kl%eIn // move default stress: kleinsielig/-e/-heid
_) kamele kam'e@l@ // kamele teenoor skamele
@@ -2319,13 +2360,16 @@
kartets k%artEts // fix stress and e sound: kartets/-e and compounds
kar (ton k%ar // move default stress: karton and compounds
_) kar (ve k%ar // move default stress: karveel/karvele
kar (ven kar // restore default stress: karvenster and compounds
kar (ver kar // restore default stress: karverkoper/-verhuurder, etc.
kar (wats k%ar // move default stress: karwats and compounds
kar (wei k%ar // move default stress: karwei and derivatives
kar (wy k%ar // move default stress: karwysaad and compounds
ka (sarm k%a // move default stress: kasarm and compounds
kaserne k%as&rn@ // move default stress, fix 1st e sound: kaserne and compounds
kaske (nade k%ask@ // fix stress and e sound: kaskenade/-s and compounds
_) ka (sta k%a // move default stress: kastaiing and compounds
kasta (njet k%ast%a // move default stress: kastanjet/-te and compounds
_) ka (ste@ k%a // move default stress: kasteel/kastele and compounds
ka (sty k%a // move default stress: kasty/-der/-ding
kasse (t k%asE // fix stress and e sound: kasset/-te and compounds
@@ -2357,6 +2401,7 @@
ko (kon k%u // fix 1st o sound and move default stress: kokon and compounds
kol (jan k%Ol // move default stress: koljander and compounds
ko (lom k%u // fix stress and 1st o sound: kolom/-me and compounds
kol (wyn k%Ol // move default stress: kolwyntjie and compounds
komati (K k%umA:t%i // fix stress and vowel sounds: Komati(poort and other compounds)
kombers k%Omb&:rs // fix stress and e sound: kombers/-e/dons-/lappieskombers, etc.
ko (mete k%u // fix stress and 1st o sound: komete and compounds
@@ -2366,6 +2411,7 @@
kommissie k%umis%i //kommissie alone and in compounds
_) ko (pie@ k%u // kopiereg/kopieë
koe (rA k%u // koerier/koerasie/koerant and compounds
koe (rend ku // restore default stress: koerend/-e
ko (ra k%u // fix stress and o sound: koraal/korale and compounds
korrek k%urEk //korrek and derivatives
korrektiewe k%Or%Ektiv@ // fix stress and vowel sounds: korrektiewe(toesig, etc.)
@@ -2470,6 +2516,7 @@
lang (werp l%aN // move default stress: langwerpig/-e/-heid
lank (moe l%aNk // move default stress: lankmoedig/-e/-heid
_) lan (sA l%an // move default stress: lanset/-te/lanseer/-ering/lansier
_) lapa (K lA:pa // fix words like lapakombuis
lapar (otomi l%ap%ar // fix stress and a sounds: laparotomie
_) lapel l%ap'&l //lapelwapen etc.
lapel (_ l%ap'&l //baadjielapel etc.
@@ -2523,6 +2570,7 @@
likke (wa l@k@ // move default stress: likkewaan/likkewane
&) likste (_S6 l@kst@
li (kwid l%i // fix 1st i sound: (ge)likwideer/likwidasie/likwiditeit
lini (aal l@n%i // fix stress and 1st i sound: liniaal(tjie) and compounds
litera (t l@t@r%a // literatuur/literature/literatore, but literbottel
liter (A l@t@r // fix i sound: literêr/-e/alliterasie
_) li (mi l@ // fix stress and 1st i sound: limiet/-e/limitasie/limiteer
@@ -2623,6 +2671,7 @@
mani (ak m%A:n%i // fix stress and 1st a sound: maniak/-ke and compounds
manier m@ni:r //manier and compounds
manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer
mani (ku m%an%i // fix stress and a sound: manikuur and compounds
manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie
manji (fie m%anj@ // fix stress and i sound: manjifiek/-e
man (moe m%an // move default stress: manmoedig/-e/-heid
@@ -2689,12 +2738,13 @@
melank m%El%aNk // stress and 1st e sound: melankolies/melankoliek/-e/melankolikus/-ci
mem (bra m%Em // move default stress: membraan/membrane
memo (rA m%Em%u // fix stress and vowel sounds: memorandum/memoranda and compounds/memoriseer/-sering
memo (riA m%Emo@ // fix stress and o sound: memorie(boek)/in memoriam
meneer m@n'e@r // meneer/meneertjie
menere m@n'e@r@ // menere/beroepsmenere
meng (sel mEN // fix e sound: sitronellamengsel and similar compounds
mening m'e@n@N
mening (itis mEn@Nx2 // see rule: mening m'e@n@N
menstru m%Enstr%y // 1st e not nasalised, fix stress: menstruasie/menstrueer
mentee (C mEnt'e@ // argumenteer/dokumenteer/fragmenteer stress related
mentele (K mEnt'e@l@ // stress always on penultimate slb of words ending in ntele/-r
men (tasie m%En // fix stress: argumentasie/dokumentasie and similar
@@ -2708,15 +2758,18 @@
memora (bili m%Em%Or%a // fix vowel sounds and stress: (sport)memorabilia and similar
_) metel me@t@l // vermetel/-e/-es/-heid...
ment m'Ent
mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds
mentali (teit m%Ent%al%i // fix stress: mentaliteit/sentimentaliteit and compounds/slagoffermentaliteit
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
me (riete m@ // move default stress: meriete and compounds
merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc.
te) merk m&rk // fix e sound: hoogte-/geboortemerk/-e/-ie
me (rrie mE // fix e sound: merrie/-s/perdemerrie and similar compounds
AAs) mes (_ mEs // fix last e sound in compounds like kombuismes
Cs) mes (_ mEs // fix last e sound in compounds like slagtersmes
hef) mes (_ mEs // fix e sound: hout-/rooihefmes and similar
sny) mes (_ mEs // fix final e sound in compounds like brood-/voorsnymes
tafel) mes (_ mEs // fix final e sound: tafelmes
_) mes (aan mEs_ // fix e sound, pause: mesaanval/-ler
metaa (C m@tA: // fix stress and e sound: metaal/metaan and compounds
@@ -2745,6 +2798,7 @@
mi (miek m@ // fix stress and i sound: mimiek and compounds
mi (mosa m@ // fix stress and i sound: mimosa/-s
minag m'Inax2 // minag/geminag/minagting/minagtend
minare (t m@n%arE // fix stress and vowel sounds: minaret/-te
minder (jar m@n@r // move default stress: minderjarig and derivatives
miner (A m@n@r // mineraal and many compounds
mi (neur m%i // move default stress: mineur and compounds
@@ -2804,6 +2858,7 @@
monit (e m%On%it // fix vowel sounds and stress: moniteer/-tering and compounds
monitor (K mOnitOr // fix o sound: monitor/-skerm, etc.
monnike mOn@k@ // fix i and e sounds: monnikedom/-klooster/-koor/-werk and many similar
mono (ga m%o@n%o@ // move default stress: monogaam/-game
monopo (li m%o@n%o@p%u // fix stress and o sound: monopolie/-ë/-monopolisties/-e
mon (teur m%On // move default stress: monteur/-s and compounds
monu (ment m%On%y // monument/e/vrouemonument/monumenteel
@@ -2819,6 +2874,7 @@
motie (C m%o@ti // handle stress: winsmotief/-tiewe and similar compounds
motor mo@t@r // motorfiets/motorkar/vragmotor
motor (ie m%uto@r // fix stress and o sounds: motories/-e
mozzarella m%Ots%ar&l%a // fix stress and zz sound: Mozzarella(kaas)


.group n
@@ -2843,6 +2899,7 @@
spi) n (ge n // split n/g: spingehalte/-geluid, etc.
ng (eeR Nx2 // diftongeer/gedistingeerde/rangeer and compounds
ngees nx2e@s // split n/g: leuen-/span-/sportman-/wengees
e) n (goeC n // split ng: lakengoed/-goeters and similar
n (_g N
ng (ent Nx2 // kontingent/tangent and derivatives
CA) nger N@r // compounds of vinger/slinger; hangertjie/hongersnood/langeraad/swangerskap/tengerste
@@ -2853,6 +2910,7 @@
na (burig n%A: // move default stress: naburig/-e/-heid
na (byge n%A: // move default stress: nabygeleë and derivatives
nabyh (e n%A:beIh // move default stress: nabyheid/-hede
nag (adder nax2_ // fix a sound, pause: nagadder/-s/nagaddergif, etc.
na (ï n%a_ // naïef/naïewe/naïwiteit
@) na (lis n%a // shorten a sound: joernalis/-te/-tiek
nami (bi n%amI // Namibië/Namibiese
@@ -3094,6 +3152,7 @@
omkeer Omke@r // restore default stress: omkeer/handomkeer and similar
_) omker (A Omke@r // omkering/omkerende
_) om (klem %Om // move default stress: omklem/-ming
_) om (kringP2 Om // move default stress: omkring/-de/-ing
_) om (laag %Om // move default stress: omlaag and compounds
_) omli (gg %OmlI // move default stress: omliggend/-e
om (ly %Om // move default stress: omlyn/-ing
@@ -3127,6 +3186,7 @@
ort (ometr %Ort // fix 2nd o sound and stress: ortometrie/-metries/-e
ort (osko %Ort // fix 2nd o sound and stress: ortoskopies/-e
ose (a %o@S%i // fix stress and s and e sounds: oseaan/oseane and compounds
o (soon %O // fix stress and 1st o sound: osoon(laag) and similar
@) oties 'o@tis // antibioties/eksoties/eroties/neuroties
@) otomie (_N %o@t%um'i // fix o sounds and stress of medical terms: laparotomie, etc.
@) otomie (ë %o@t%um'i: // fix o sounds and stress of plurals of medical terms: leukotomieë/nefrotomieë, etc.
@@ -3250,6 +3310,7 @@
onder (werping %On@r // move default stress: onderwerping/-sklousule
onder (worp %On@r // move default stress: onderworpene/onderworpenheid, etc.
onder (wysC@ ''On@r // force default stress: onderwysdepartement and similar
onderwyser (a On@rv'eIs@r_ // fix stress, e sound, pause: ouer-onderwyseraand/-e and similar
_) onderge (@P7 'On@rx2@
_) on (kant On // stress on 1st slb.: onkant and compounds
on (langs On // stress on 1st slb.: onlangs/-e
@@ -3337,9 +3398,11 @@
K) opeen _%Op_e@n
_) ope (K o@p@ //opehart opestelling etc./ope
ope (l o@p@ // dopeling/hopelik/opelug/opelyf
_) ope (rig o@p@ // fix stress: operig/-e
opgee (+ 'Opx2e@ // see rule: _) opge (@P4 Opx2@
_) opge (@P4 'Opx2@ // stress on 1st slb
&C) op (ig 'o@p // wanhopig/voorlopige
op (lett %Op // move default stress: oplettend/-e/-heid
opper Op@r // oppergesag/wese/vlak/man
opper (vlakki %Op@r // move default stress: oppervlakkig/-e/-heid/-ste
opsetlik %OpsEtl@k // move default stress: opsetlik/-e/-heid
@@ -3427,6 +3490,7 @@
pori (eus p%o@r%i // fix stress: porieus/-e
porse (lein p%Ors@ // fix stress and e sound: porselein and compounds
por (sie pOr // restore default stress: porsie/-s/-tjie
por (stok pOr // restore default stress: porstok/-ke
portu (ge p%Ort%y // fix stress: Portugees/Portugese
_) pos (a pOs //posadres/posadministrasie
posisie p%uzis%i
@@ -3435,6 +3499,7 @@
_) poten (C p%utEn // fix stress and vowel sounds: potent/-e/potensie
poten (sia p%o@t%En // fix e sound: potensiaal/potensiale and compounds
pot (sier p%Ot // move default stress: potsierlik/-e/-heid
pot (yster pOt_ // fix o sound, insert pause: potyster/-tafel and similar compounds
poësie p%u:@zi // bieg/natuurpoësie/poëversameling, etc.
poë (tA p%u:e@ // poëties/-e/poëte
ra) pporte (rA p%Orte@ // fix stress and e sound: rapportering/rapporterende
@@ -3458,6 +3523,7 @@
pajama p@dZ'A:ma //pajama and compounds
pak (A pak? // pakesel/pakos/verpakafdeling
pakistan p%ak%istan //first a and stress
_) pa (kka p%a // move default stress: pakkaas/pakkase
pakke (t p%akE // pakket/-te and compounds
pale (stA p%al@ // fix stress and a sound: Palestina/Palestyn and derivatives
pale (t p%alE // fix stress and a sound: palet/-te and compounds
@@ -3501,6 +3567,7 @@
para (C ,para //paralel, paragraaf etc.
parade (K p@rA:d@ // parade and compounds
_) par (CA p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig
parka (baadj park%a // restore default stress: parkabaadjie/-s and compounds
parke (raad park@ // fix stress and e sound: Parkeraad(slid, etc.)
_) pas (AA pas // pasaangeër/pasoortreding
pas (op p%as // pasop/pasoppens
@@ -3519,6 +3586,7 @@

.group pe
_) pe (dA p@ //pedaal pedanties etc.
@C) pe (da p@ // fix e sound: voet-/petrolpedaal/-pedale
_) peda (g p%Ed%a //pedagogie etc.
_) pedi p%Ed%i //pediater etc.
_) ped (of p%Ed //pedofiel pedofilie, etc.
@@ -3583,12 +3651,15 @@
prakti (syn pr%akt%i // move default stress: praktisien and compounds and plural
_) prak (tyk pr%ak // stress: praktyk and compounds
prefek prifEk // fix vowel sounds: prefek/-te/-tuur and compounds
preg (nanC pr%Ex2 // move default stress: pregnant/pregnansie
pre (histo pre@ // fix pre sound: prehistories/-e
pre (lud pr@ // fix stress and e sound: prelude/-s/(ge)preludeer
pre (mier pr@ // move default stress and fix e sound: premier and compounds
pre (nata pr,e@ // fix e sound: prenataal/-tale
presbiteri (a pr%Esb@t%e@r%i
@) present pr@sEnt // restore default stress when present 2nd part of compound: krismispresent, etc.
preste (rend pr@ste@ // fix stress and vowel sounds: presterend/-e
prestige pr%Esti:Z // prestige and compounds
pretori pr%it%o@r%i //pretorianer,pretoriaan, fix e and o sounds a
pretoria (_ pr%it'o@ria //ending in pretoria
pretoria (C prit'o@ria //pretoriase, pretoriahuis etc.
@@ -3627,6 +3698,7 @@
promenade pr%Om@nA:d@ // fix stress and vowel sounds: promenade/-dek/-konsert, etc.
promisku pr%Om@sky // fix stress and o sound: promisku/-e/-íteit
promulg (e pr%Om%Wlx2 // fix stress and vowel sounds: promulgeer/-gering
pronker (tji prONk_&r // insert pause, fix e sound: pronkertjie/-s and compounds
proposi pr%Op@zi // stress, o and s sounds: (besigheids)proposisie/-si, etc.
prosa pro@s%a //prosa and compounds
prosa (ïe pr%o@sA: // fix stress and vowel sounds: prosaïes/-e
@@ -3647,6 +3719,7 @@
proto (C pro@tu // protokol/prototipe
prot (on+ pro@t // fix o sounds: proton/-e and compounds
provi (and pr%o@v%i // fix stress and v sound: proviand/-meester, etc.
provita pr%uvit%a // fix v sound: provita/-s and compounds


.group q
@@ -3684,7 +3757,7 @@
ra (pier r%a // move default stress: rapier/-e and compounds
_) ra (pport r%a // fix stress: rapport/skoolrapport/rapportryer
rasse ras@ // e sound of compounds starting with rasse
ribbe (tj r'Ibi
ribbe (tj rIb%i // skaapribbetjie
riete rit@ // fix e sound: merietelys/rietedak, etc.
rinkh (als rINk // drop h: rinkhals and compounds
rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der
@@ -3692,6 +3765,7 @@
ris (kant r@s // move default stress: riskant/-e
ritme rItm@ // fix e sound in ritmes/ritmespeler
ritu (A r@t%y // ritueel/rituele/ritualisties
rl(_ _^_EN // words ending in -rl are English: girl/whirl/pearl, etc.
roersel rurs@l // fix stress and e sound: roersele and compounds of roersel
_) rol (A rOl? // oprolaksie/roloorvleueling
roeme (nië r%umi: // fix stress and e sound: Roemenië(r)
@@ -3753,6 +3827,7 @@
regi (sseuC r@x2@ // fix stress and e sound: (film-/kuns-/mede-/musiek-/oorklankings-)regisseur/-sseuse
reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister
regle (ment r@x2l@ // fix stress and e sounds: reglement/-e and compounds
re (gulA r%E // fix e sound: regulasie/reguleer/regulering
regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list
rekla (mA r@kla // fix e sound: reklamatories/-e/reklamasie
reklame r@klA:m@ // fix stress and e sounds: reklame and many compounds
@@ -3824,7 +3899,7 @@
@) s (_S1q s // to correctly handle plurals of propernames in af_list: Jouberts, etc.
@@@) s (_S1 s // to correctly handle plural s
i) s (_ s // exceptions to rule: @@@) s (_S1 s
sahara sah'A:ra // fix stress and a sound: Sahara/-woestyn and similar compounds
sangere (K s%aN@rE //sangeres and compounds: opera-/popsangeres
o) s (_ s // exceptions to rule: @@@) s (_S1 s
u) s (_ s // exceptions to rule: @@@) s (_S1 s
@@ -3842,7 +3917,7 @@
@) s (jas s // fix s/j sounds: asjas/huisjas/nertsjas/pelsjas
sjerrie SEri // fix e sound: sjerrie and compounds
sjimpan (see S@mp%an // move default stress: sjimpansee/-s and compounds
sjokolade SOk@l'A:d@ // sjokolade and compounds
sjokolade S%Ok@lA:d@ // sjokolade and compounds: warmsjokolade
s (jaap s // stads-/dorpsjaap
@) sj (aar sj // diensjaar/lewensjaar/begrotingsjaar
@) sj (aCA sj // apartheidsjare/oesjare/beroepsjaloesie
@@ -3930,6 +4005,7 @@
skerpi (oen sk%&rp%i // move default stress: skerpioen/-e and compounds
skilder (y sk@ld@r // move stress to y: skildery and compounds like skilderymuseum
skisofr (e sk%is%ufr // fix stress and o sound: skisofreen/skisofrene
skle (rose skl@ // fix stress and e sound: sklerose and compounds
_) skok (AP4 sk''Ok_ // fix o sound and stress: skokaankondiging/-effek/-insluiting/-onthulling...
skole sko@l@ // fix e sound in compounds: skolebeheerliggaam/-koor/-rugby/-wedstryd/-wet
sko (lier sk%o@ // move default stress: skolier/-e
@@ -3986,7 +4062,7 @@
spi (na@ sp%i // move default stress: spinaal/spinale
_) spi (ra sp%i // move default stress: spiraal and compounds/spirale/spirakel/spirant, etc.
spits (von sp@ts // move default stress: spitsvondig/-e/-heid
spoed (@ sput // spoedaflewering/spoedeisend/spoedorder
_) spoed (@ sput // spoedaflewering/spoedeisend/spoedorder
spoed (ig spud // spoedig/-lik/-er/-ste
_) spon (ta sp%On // move default stress: spontaan/spontane
_) sport (@@@ sp''Ort_ // force stress on 1st slb.: sportadministrasie/-konfederasie
@@ -4044,6 +4120,7 @@
subli (mA s%Wbl%i // move default stress: sublimaat/-ate/sublimering
sublimi (na s%Wbl%im%i // move default stress: subliminaal/-ale
sub (sidA s%Wb // move default stress: subsidie/-s and compounds
sub (skrip s%Wb // move default stress: subskripsie and compounds
sub (stansie s%Wp // move default stress and fix b sound: substansie/-s/substansieel/-siële
substi (tu s%Wbst@ // move default stress: subsistuut/-tute
sub (ti s%Wp // stress and b sound: subtiel/-ste/subtiliteit
@@ -4080,6 +4157,7 @@
se (_ s@ //the word se and some ending in se
__) se (_ s@ //Se at start of sentence.
_) sebra se@bra // fix vowel sounds: sebra/-strepe; variant of zebra
_) se (doos s@ // fix stress and e sound: sedoos(wind)
se (ggA s& // fix e sound: niksseggend/-e
@) seko (no@ s_%Ek%u // fix e sound; default stress; insert short pause: bedryfs-landsekonomie/-s/-ekonoom
@) seks (_ sEks // fix final e sound: kinder-/kuber-/oumens-/selfoon-/tienerseks
@@ -4089,6 +4167,7 @@
sending (_ sEnd@N //fix sending at word end
sen (sorie s%En // move default stress: sensories/-e
senter sEnt@r // fix e sound: binne-/buite-/Springboksenter
senti (ment s%Ent%i // fix stress: sentimentaliteit
@C) se (re_ se@ // fix penultimate e sound: bed-/brand-/keel-/kop-/kruip-/maag-/mond-/pitsere
se (roet s@ // fix stress and e sound: seroet and compounds
seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.)
@@ -4123,6 +4202,7 @@
@) sel (wig s'&l // stress: (ver)eenselwig and derivatives
polisie) se (lK s& // fix e sound: polisiesel/-le
_) seme (Ct s@mE // sementtafel/blad/vierkant/semester/-s
semel (@ se@m@l // fix stress and e sound: semeltjie/semeluitslag
_) semi (_ sEmi // fix e sound: semi/semi-formeel, etc.
semi (na s%Em%i // seminaar/seminare/seminarium
_) semi (C sEmi // fix vowel sounds: semistaatsinstellings and similar
@@ -4159,10 +4239,12 @@
staties st'A:tis
sta (tutA st%a // fix stress and a sound: statute/statutêr
êr) ste (_S3 st@ // preserve stress: elementêrste/primêrste, etc.
_) ste (faan st@ // fix stress and e sound: Stefaan/-s/-sie
%Cel) ste (r st& // fix e sound: dubbelster/-re
Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re
dwaal) ste (r st& // fix e sound: dwaalster/-re
dwerg) ste (r st& // fix e sound: dwergster/-re
film) ste (r st& // fix e sound: filmster and compounds
nd) ste (r st& // fix e sound: aandster/oggendster
pool) ste (r st& // fix e sound: poolster
prent) ste (r st& // fix e sound: rolprentster/-re
@@ -4173,6 +4255,8 @@
_) ste (ri st%E // fix stress and e sound: steriel/-e/steriliteit
ster (-hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfster-hotel
ster (hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfsterhotel
skaap) ster (tjie st&:r // fix e sound: skaapstertjie/-s
vark) ster (tjie st&:r // fix e sound: varkstertjie/-s
stimu (lA st@m%y // move default stress and fix i sound: stimuleer/stimulering/stimulasie
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede
steding ste@d@N // besteding and compounds
@@ -4198,6 +4282,7 @@
stede (_ ste@d@ //voorstede, hoofstede etc.
stele (_ ste@l@ //kastele lepelstele etc.
stene (_ ste@n@ //skoorstene, bakstene etc.
sten (sil stEn // fix e sound in compounds like wolbaalstensil
chri) stene (_ st@n@ //fix christene and compounds
@) stel (o st@l //bewusteloos/lustelose/rusteloosheid/kosteloos
mAre) ste (r st& // fix e sound: more/môrester/-re
@@ -4221,7 +4306,7 @@
@) stemperame s_tEmp@-r%amE // fix vowel sounds and stress: dobbelaars-/kunstenaarstemperament, etc.
stewel ste@v@l // sokkerstewels/stewelmaker and other compounds
stie (beu st%i // move default stress: stiebeuel and compounds
@) stiek st'ik // statistiek/akoestiek/artistiek and many similar
@V) stiek st'ik // statistiek/akoestiek/artistiek and many similar
@) sties =st%is // statisties/akoesties/artisties and many similar
sti (let st%i // move default stress: stilet/-te/stiletto
stil (swy st@l // move default stress: stilswy(g)end/-e
@@ -4264,7 +4349,7 @@
talen (tjie t%alEiN // fix -entjie: (kuns-/musiek)talentjie
@) talig t'A:l@x2 // Anderstalig/tweetalig
@) ta (lis t%a // shorten a sound: hospitalisasie/kapitalisme/katalisator and similar
_) ta (ma t%a // tamatie and compounds
tama (tie t%amA: // tamatie and compounds/kersietamaties, etc.
_) ta (mb t%a // tamboer and compounds/tambotie and compounds
tamboe (ryn t%amb%u // move default stress: tamboeryn/-e and compounds
tamele (tj t%am@lEi // fix stress and vowel sounds: tameletjie/-s
@@ -4297,6 +4382,7 @@
ti (perA t%i // move default stress: tipering/tiperend/-e
ti (ra t%i // move default stress tiran tirade
tira (nnie t%ir%a // move default stress: tirannie
tissue tiS%u // English word often used in Afrikaans text: manstissue, etc.
titel tit@l // fix e sound: (on)getiteld/titelblad/-geveg and many similar
tj tS
@) tj (a tj // separate tj: agtjarig/blatjang/bontjas/olifantjag/ouditjaar/tweegatjakkals
@@ -4341,6 +4427,7 @@
toi (let t%OI // move default stress: toilet and compounds
tokke (lo t%Ok@ // move default stress: tokkelos/-sie/tokkelok and compounds
tok (tokk t%Ok // move default stress: toktokkie/-s/-spelery, etc.
tombola t%Ombo@l%a // move default stress: tombola and compounds
_) to (na t%o@ // fix stress and o sound: tonaal/tonale
_) top (A t''Op_ // fix o sound: topaandeel/-offisier/-universiteit, etc.
_) top (aas t%up // fix stress and o sound: topaas and compounds
@@ -4348,16 +4435,20 @@
_) top (ogra t%o@p // fix stress and o sound: topografies and derivatives
_) top (olo t%o@p // fix stress and o sound: topologies and derivatives
@) toris (_ t'o@r@s // fix stress: pectoris/klitoris
_) tor (nyn t%Or // move default stress: tornyn/-e and compounds
_) tos (ka t%Os // move default stress: Toskaanse/Toskane
ttel t@l // many compounds of bottel/skottelgoed
tuberkulose t%yb@rk%ylo@s@ // fix stress; e sound in compounds: tuberkulose/-behandeling
tug (A tWx2_ // fix u sound: (on)tugondersoek/-oortreding/-ordonnansie
tuiglik t'Yyx2l@k // stress: werktuiglik/sintuiglik/-e/-heid
tuin (ier t%Yyn // move default stress: tuinier and compounds
turlington tW:l%iNt@n // Turlington/-reuk/-smaak
tussen tWs@n // tussenin/tussenbeide/tussenganger
tuur t'yr
parti) tuur ty:r // compounds ending with partituur take default stress: musiekpartituur
s) tuur ty:r // "uur" in stuur takes default stress: weggestuur
tweed (K twi:d // english pronunciation: tweedbaadjie/-pak, etc.
tweed (ra twe@d // but: tweedrag/tweedraadwol, etc.
twis (A twIs_ // fix i sound, pause: twisappel/-s
twyfe (l tweIf@ // fix e sound: twyfelloos/twyfellose
@) ty (dig t'eI // gelyktydig/vroegtydig
@@ -4486,7 +4577,7 @@
@) tele (_ t'e@l@

tenis t@nIs
tennis t'En@s // tennisafrigter/tennisarm
tennis tEn@s // tennisafrigter/tennisarm/tafeltennis
tera (pA t%Er%a // terapie/terapeut/terapeuties/arbeids-/groepsterapie
o) tera (pA t%Er%a' // stress: chemoterapie/fisioterapeut/psigoterapie...
_) tereg t@r&x2 // teregwysing/teregstelling/tereghelp/tereg
@@ -4516,6 +4607,7 @@
transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal
transistor tr%ansIst@r // trans- not prefix, fix o sound: transistor(radio, etc.)
transito tr%ansit%u // trans not prefix: transitorooftog and similar
transpa (rant tr%ansp@ // fix stress and a sound: transparant/-e and compounds
transport tr%anspOrt // fix stress: transport and compounds
trap (orr trap_ // shorten a sound: traporrel/-tjie/-s and compounds
trap (soe tr%ap // move default stress: trapsoetjies/-e
@@ -4531,6 +4623,7 @@

tre (k tr&
trekker tr&k@r // voortrekkerleier/Voortrekkerstraat/salaristrekkersvergadering
tril (joen tr@l // move default stress: triljoen/-e
trio (_ tri:u // fix o sound: (fluit-/harp/-kitaar...)trio
triomf (ant tr%i%Omf // move default stress: triomfantlik/-e
tri (omf tr%i // move default stress: triomf/-boog/-lied/-tog, etc.
@@ -4542,7 +4635,9 @@
_) trom (pet tr%Om // move default stress: trompet/-tte/-tter and compounds
tro (tseer tr%O // stress: trotseer/getrotseer
tro (tsering tr%O // move default stress
trousseau tr''u:s@U // trousseau/-kis and similar
truk (aats tryk // default stress: trukaatser/-s
tru (projek try
tru (spieë try // fix u sound: truspieël/-tjie/-s
tru (stee tr%W // move default stress: trustee and compounds

@@ -4598,6 +4693,7 @@
uit (sluiten %Yyt // move default stress: uitsluitend/-e
uitsluitlik %YytslYytl@k // move default stress: uitsluitlik/-e
uitsonderli (k %YytsOn@rl@ // move default stress: uitsonderlik/-e vs. uitsonder
uitspatlik %Yytspatl@k // move default stress: uitspatlik/-e/-heid
uitspreekl %Yytspre@kl // fix stress and avoid -lik suffix: onuitspreeklik/-e
uitstaan (C %YytstA:n // move default stress: uitstaande/onuitstaanbaar/-bare
uit (steken %Yyt // move default stress
@@ -4702,6 +4798,8 @@
ve (l f& // maagvel, stress on 1st slb
@) vel (A fe@l // aanbeveling/aanbevelingsbrief
veld (C f&lt // fix d sound: veldreuk/-radio/-rantsoen, etc.
veld (eks f&lt_ // fix d sound, pause: veldekskursie/-ekspedisie/-s
veld (o f&lt_ // fix d sound, pause: veldorgideë/-opsigter/-oppervlakte/-opname, etc.
vele f'e@l@
ven (detta v%En // fix stress and v sound: vendatta and compounds
ven (dusie f@n // fix stress and e sound: vendusie and compounds
@@ -4711,6 +4809,7 @@
ven (yn f@n // venyn/venynig
ver f@r
veranda v@randa // fix stress and e sound: veranda and compounds
verbena v@rbe@n%a // fix v sound: verbena/-s and compounds
verby f@rbeI // fix stress: verbykomkans/verbykomslag, etc.
vere (sto fe@r@ // avoid ver prefix: verestoffer/-s and compounds
verversing f@rf'&rs@N //verversing and compounds
@@ -4732,6 +4831,7 @@
ver (baal v%&r // fix v and e sounds and stress: (nie)verbaal
ver (balA v%&r // fix v and e sounds and stress: (nie)verbale/verbaliseer
vere (b fe@r@ // ver- not prefix: verebed/-bedryf/-bedekking
vere (do fe@r@ // ver not prefix: veredons/veredos
vere (h fe@r@ // ver- not prefix: verehoed/-e/-ens
vere (k fe@r@ // ver- not prefix: verekombers/-kuif/-kussing
vere (m fe@r@ // ver- not prefix: verematras/-se/-sie
@@ -4772,6 +4872,7 @@
C) verse (_ f&rs@
KA) verse (_ v'&rs@
versifi (C v%&rs%if%i // fix stress and v and e sounds: (di)versifiseer/-sering/-kasie and compounds
vers (kalC f&:rs // fix stress and e sound: verskalf/verskalwers/verskalfie
vers (r f&rs // fix stress and e sound: versreël/-rym/-ritme
_) veronge (@P7 f@r'O:Nx2@
verbete f@rb'e@t@ // verbete/verbetenheid
@@ -4831,8 +4932,10 @@
voor (sie f%o@r // move default stress: voorsien/-ing
voorskrifteli (k f%o@rskrIft@l@ // move default stress: voorskriftelik/-e/-heid
voorspe (lK fo@rsp'& // voorspel/voorspelling/voorspelbaar/onvoorspelbaar
voor (spoedi f%o@r // move default stress: voorspoedig/-e
voor (sk fo@r // voorskiet/voorskot/voorskrif/voorskryf
voorstedeli (k f%o@rste@d@l@ // move default stress: voorstedelik/-e vs voorstede
voor (trap fo@r // restore default stress: voortrap/-pe/-pies
voort (duren f%o@r_ // fix stress and drop t: voortdurend/-e
voor (trek fo@r // voortrek/voortrekker and compounds
voort (v@@ f%o@rt // voortvarend/voortvlugtige
@@ -4925,13 +5028,15 @@
C) wag (K vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter
k) wagga wax2a // fix w sound: kwagga/bergkwagga, etc.
wal (kure v%al // move default stress: Walkure/-s
@k) w (alm v // fix w sound: drank-/tabakwalm/-s
wange (drag vanx2@ // (jeug)wangedrag and similar
wankel (moed v%aNk@l // move default stress: wankelmoedig/-e/-heid
wanordeli (k v%an_Ord@l@ // move default stress: wanordelik/-e/-heid
wan (stalt v%an // move default stress: wanstaltig/-e/-heid
wan (trouig v%an // move default stress: wantrouig/-e
wapen vA:p@n // fix problems with compounds and derivatives of wapen: ontwapening/wapengeweld
//wapenopleiding
t) ware (K vA:r@ // fix w sound: toilet-/genot-/gietware
wasag (tig vas_,ax2 // fix a sound, stress, pause: wasagtig/-e/-heid
@k) ware vA:r@ // breekware/blikware/lakware
@s) ware vA:r@ // kruideniersware/bronsware/glasware/kombuisware
bes) ware wA:r@ // geloofsbesware/gewetensbesware
@@ -4944,6 +5049,7 @@
wa (vrag vA: // long a sound: (bok-/krui)wavrag/-te
_) wa (wy vA: // fix stress and a sound: // wawyd/wawydwakker, etc.
AC) w (aaier v // fix w sound: blaas-/bamboes-/dakwaaier and similar
k) waar vA:r // fix w sound: eerlikwaar/waarlikwaar/werklikwaar
waardeer vard'e@r // waardeer/waardeerder
waarder (@ vard'e@r // waarderend/e/waardering
&) waardig v'A:rd@x2 // stress on -waardig: merkwaardig/besienswaardigheid, etc.
@@ -4958,6 +5064,7 @@
_) wig vIx2 // fix stress: gewig/-tig/-e
wiking vikiN // fix i sounds
wilhel (mi v@lh%&l // move default stress: Wilhelmina/-straat
wille (mi v@l@ // move default stress: Willemien/-tjie/Willemina
_) wind (a vInt_ // fix d sound, insert pause: windaf(dryfmiddel)/as
_) wind (o vInt_ // fix d sound, insert pause: windop/windorrel, etc.
wispel (tu v@sp@l // move default stress: wispelturig/-e/-heid
@@ -4974,7 +5081,7 @@
@) w (_N _^_EN
@) werste (_ vIrst@
k) w (oA v // fix w sound: dankwoord/werkwoord/skoonmaakwoede/spreekwoord
@C) w (oCC v // fix w sound: kubiekwortel/steekwond/onafhanklikwording/republiekwording/varkwors
@C) w (oCK v // fix w sound: kubiekwortel/steekwond/onafhanklikwording/republiekwording/varkwors
@C) woning vo@n@N // fix w sound in many compounds ending in -woning
woe (styn v%u // move default stress: woestyn and compounds
wolke vOlk@ // nimbuswolke/wolkekrabber
@@ -4984,6 +5091,7 @@
@t) w (y v // fix w sound: granaatwyn/kieswetwysiging/krotwyk/straatwys(ie)
@C) w (yd v // fix w sound: kerkwyding/landswyd/reikwydte/republiekwyd/wêreldwyd
@t) wyfel weIf@l // fix w sound: gewetenstwyfel and similar
&s) wyk veIk // fix w sound: diakenswyk/dorpswyk/koshuiswyk/-e and similar compounds
wynkel (der veInk&l // split n/k, fix e sound: (brande)wynkelder/-s
w (ys v //padwyser and many others with wyser in compounds
wysge (rig v%eIsx2e@ // fix stress and e sound: wysgerig/-e
@@ -5014,6 +5122,7 @@
wel (spreken v%&l // move default stress: welsprekend/-e
@) wendig v'End@x2 // inwendig/noodwendig/uitwendig
&) wene (_ v@n@ // fix penultimate e sound: afgestorwene/-s/ingeskrewene/verdorwene/verhewene
fees) wens ve~ns // fix w and e sounds: kersfeeswens/-e
A) wer (AA v@r // fix e sound: beyweraar/keweruitroeiing/nyweraar/oewereienaar
ge) were ve@r@ // fix e sound in compounds ending in gewere
werk (stelli v%&rk // fix stress: bewerkstellig and derivatives

+ 17
- 8
dictsource/da_list View File

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

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

@@ -27,7 +27,7 @@ _ac2 dV@lakj'u:t
_brv br'i:v
_ced s@d'ila
_cir s'3:kVmfl,Eks
_dia 'umlaut
_dia 'omlyd
_dot wiDd'0tabVv
_grv aks'aN gr'a:v
_hac h'atS,Ek
@@ -58,9 +58,9 @@ _#32 blank
@ sn,&:bel'&:
/ sgRVsdrai $max3
\ 'Vmvendsgr,VsdRai $max3
_, koma:
_, k'oma:
_; se:mi:ko:lVn
_: ko:lVn
_: k'o:lVn
_. puNtum
_? spWrgsmVlstajn
_! udRVbstejn
@@ -73,9 +73,16 @@ __ b'Onsdrai
÷ divid'eReD meD
= l'imeD
# n'OmV
§ paragR'af


§ paragr'af
× g'aNe
ª feminin Wdin'al
º m'askulin Wdin'al
® registr'eret varemerke
¼ en kvart
¢ s'ents
¥ j'en:
µ my
' apostr'of

// numbers
_0 'nOl
@@ -235,6 +242,7 @@ z sEt


// exceptions
Alene al'en@ // alone
egen a:j@n
eget a:j@D
egne a:in@
@@ -248,8 +256,9 @@ havde h'aD@ // had
idet id'e // in so far as
sagde sa@ // said
sig sAi // oneself
//slags sl+ags // sort, type
slags sl'ags // sort, type
tre tr'e // the number 3





+ 21
- 4
dictsource/da_rules View File

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

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

@@ -29,6 +29,8 @@
ch) au (f o
nive) au o
an (cienn aN
restaur) ant aN
rest) au (r o
aw (K aw
ay (K aj
aa O:
@@ -90,6 +92,7 @@
d) d d
e) d (t
i) d (e d
i) d (ræt d
i) d (t
o) d (a d
o) d (i d
@@ -180,6 +183,7 @@
æn) d (ri d
æn) d (re d
æn) d (re d
bol) d d
kla) dd (e D
kry) dd (er D
dd (et D
@@ -196,6 +200,7 @@
plu) d (se
ral) d (e
sag) d (e
sed) d (el D
sku) d (t
smu) d (s
snu) d (e D
@@ -570,13 +575,17 @@ foreta) g (e
o) ld l
æ) ld (r ld
bo) ld ld
bo) ld (A ld
fo) ld l
he) ld l
he) ld (ig ld
ki) ld (A l
me) ld (el l
me) ld (ing l
no) ld l
so) ld (aC d
so) ld (at ld




@@ -585,7 +594,9 @@ foreta) g (e
mm m
m (A m
gour) met m'e

kompli) ment maN
kompli) ment (e ment
regle) ment (e ment

.group n

@@ -604,6 +615,10 @@ foreta) g (e
sa) n (kt
eku) nd nd
pag) n (e nj
ballo) n N
ræso) n N
sæso) n N
talo) n N
gleme) n (t N


@@ -634,6 +649,7 @@ foreta) g (e
sa) ng (e N
se) ng (e N
ti) ng (e N
ti) ng (ent Ng
træ) ng (e N
arra) ng NS

@@ -694,8 +710,8 @@ foreta) g (e


.group r
r r
r (A R
r R
r (K r // not followed by a vowel
ø) r V:
Ae) r V
&) rd (e_ r
@@ -893,3 +909,4 @@ proven) u y





+ 3
- 2
dictsource/de_list View File

@@ -90,8 +90,8 @@ x Iks
// Numbers
//========
_0 'nUl
_1 _'aIn
_1a _'aIns
_1 _'aIns
_1a _'aIn
_2 'tsvaI
_3 'd@-*aI
_4 'fi:*
@@ -672,6 +672,7 @@ schult Su:lt
selbst zElpst
serie se:*I;@
service sE*vIs
soeben zo:_'e:b@n
sofort $2
sogar $2
soweit $2

+ 10
- 3
dictsource/de_rules View File

@@ -361,6 +361,7 @@
@@) erisch @*IS
&) erung (_ =@*UN

echo ECo:
_) e (ff %E
l) e (g_ 'e:
eih (_ aI
@@ -673,6 +674,7 @@
// @) keit (_S4 kaIt
// @) keiten (_S6 kaIt@n

ko (e@ ko:
kolleg k%Ole:g
_) komme (C@ k%OmE
_) ko (mp k%O
@@ -791,6 +793,8 @@
_) ob (jek %Op
_) obst (reP4 'o:pst
oe (_ o:@
@) oen (_S1 n
_n) o (e o:
@) o (g_ 'o:
t) ogen (_ o:g'e:n
@) o (gin_ 'o:
@@ -823,10 +827,12 @@
_) periphe p,e:*i:fe:
_) personen (@P8 pE*s'o:n@n
philie f'i:li:
_) photo f,o:to:
_) pro (@ %p@-*o:

_) po (e p%o:
_) poe (sc pY:
po (em p%o:
po (et p%o:
poesie po:e:z'i:
_) poly (@P4 p,o:ly:
partei p%a*taI
_) perfe (k p%E*fE
@@ -975,6 +981,7 @@
t (chen_ t
_) teen _^_EN
_) tele (@ t,e:le:
_) thermo tE*mo:
tuerei (_ tu:@*'aI
thrill _^_EN
_pa) th t
@@ -993,7 +1000,7 @@
u u:
uh (+ u:
uell u:'El
ue y:
u (e u:
r) ue (_ u:@
t) ue (_ u:@
ue (_ 'y:

+ 49
- 32
dictsource/dict_phonemes View File

@@ -11,8 +11,8 @@ Yy

- : ; ? 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
n N n^ p r s S t
T tS v w x x2 z Z


Dictionary ne_dict
@@ -143,6 +143,17 @@ N n^ p Q R R2 s t
T tS v v# w x z


Dictionary hu_dict

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

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


Dictionary fi_dict

& &i &y a a2 ai au e
@@ -164,8 +175,8 @@ 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
p2 r r2 s S t t2 t3
tS v w z Z z2 z3


Dictionary grc_dict
@@ -206,15 +217,12 @@ r. s S s. t T t. th
th. v w x z


Dictionary hu_dict
Dictionary am_dict

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

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


Dictionary hy_dict
@@ -233,10 +241,10 @@ Dictionary id_dict
@ a aI aU e E E2 i
o O u

* : ? 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 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 is_dict
@@ -273,6 +281,21 @@ k l m n N p R s
S t tS v w x z Z


Dictionary ro_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

* *; 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 ku_dict

8 a e E E# eI eU i
@@ -333,6 +356,15 @@ S; t t. th th. tS v w
z z.


Dictionary nci_dict

a e i o O

: ? b c d f g j
k l m n p R s S
t tS v w x


Dictionary nl_dict

8 @ @- A a: E e: EI
@@ -417,21 +449,6 @@ S s# s; t T tS ts v
w x z Z


Dictionary ro_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

* *; 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 ru_dict

8 @- a A e E E# E2
@@ -512,8 +529,8 @@ I i: o o: U u u: V
: ; b C d d. dZ f
g h H j k l l. m
n N n. n^ p Q r R
s S s. t t. th tS v
w z z.
s S s. t T t. th tS
v w z z.


Dictionary tr_dict

+ 11
- 5
dictsource/en_list View File

@@ -305,10 +305,10 @@ _0M3 b'Ili@n
_dpt pOInt
_roman roUm@n_

_0st st
_0nd @nd
_0rd d
_0th T
_#st st
_#nd @nd
_#rd d
_#th T
_ord T // default ending
_1o f'3:
_2o s'Ek
@@ -599,6 +599,7 @@ archive A@kaIv
archway $1
arena a2ri:n@
argue A@gju:
aries e@ri:z
arithmetic a2rITm@tIk
arise a2raIz
arisen a2rIz@n
@@ -1306,7 +1307,6 @@ ingenuity IndZI2n'ju:I2tI
inherit Inh'ErIt // inherited
innard In3d
inner In3
inning InI2N
innovative In@veItIv
insect $1
insert Ins3:t $onlys
@@ -1710,6 +1710,7 @@ pipette pIp'Et
piquant pi:k@nt
piracy paI@r@sI
pirate paIr@t
pisces paIsi:z
piteous pIti@s
pituitary $2
plaguing pleIgIN
@@ -2419,6 +2420,8 @@ Damascus da2mask@s
Danish deInIS
Delhi dElI
Djibouti dZIb'u:tI
Donegal d0nI2g'O:l
Durham dVr@m
Egyptian IdZ'IpS@n
Eire e@r@
Geneva dZ@ni:v@
@@ -2580,6 +2583,7 @@ Baez baI'Ez
Bambi bambi:
Barack ba2rA:k
Barbara bA@b@r@
Betsy bEtsI
Boris b0rIs
Brien braI@n
Candace kandIs
@@ -2630,6 +2634,7 @@ Graeme greI@m
Graham greI@m
Hadrian heIdri:@n
Harriet hari@t
Heidi haIdI
Huw hju:
Iain i:@n
Ian i:@n
@@ -3204,6 +3209,7 @@ like laIk $strend2
?3 amen ,eIm'En
?3 anti antaI
?3 banana ba2nan@
?3 beta beIt@
?3 caffeine $2
?3 comrade k0mrad
?3 commentary k0m@ntErI

+ 3
- 2
dictsource/en_rules View File

@@ -2815,7 +2815,6 @@
ies (_S2i z
spec) ies (_ i:z
ser) ies (_ i:z
_ar) ies (_ i:z
iesc I2Es
&) iest (_S3i @st
pr) ie (st i:
@@ -2940,6 +2939,7 @@
_) in (k IN
_) in (l In
_) in (m In
_) inn (K In
_) inno (ce In@
_) inno (v In@
_) inn (um %In
@@ -4839,6 +4839,7 @@
?3 n) ucle u:klI
?3 n) uclear u:kli@3
@) u (da_ 'ju:
b) u (ddh U
u (guC V
f) u (gal 'ju:
ug (er_ u:g
@@ -5410,7 +5411,7 @@
ž Z
þ T
ð D
ñ n^
ñ _^_ES


'

+ 8
- 8
dictsource/eo_list View File

@@ -30,14 +30,14 @@ _0M4 duili'ono
_dpt _komo_

// ordinal numbers
_0a a
_0aj aI
_0an an
_0ajn aIn
_0-a a
_0-aj aI
_0-an an
_0-ajn aIn
_#a a
_#aj aI
_#an an
_#ajn aIn
_#-a a
_#-aj aI
_#-an an
_#-ajn aIn

// accent names
_lig ligat'uRa

+ 1
- 0
dictsource/es_rules View File

@@ -37,6 +37,7 @@
_) d d
m) d d
n) d d
r) d d


.group e

+ 10
- 11
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2009-10-26 Michel Such <[email protected]>
// Updated 2010-02-07 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -305,7 +305,7 @@ qq quelque $text
qqs quelques $text
ratp $abbrev
riaa $abbrev
riscos RiskoEs
riscos riskoEs
sap $abbrev
scsi $abbrev
sos $abbrev
@@ -362,7 +362,7 @@ néanmoins $u+
toutefois $u+
afin afE~ $u+ $brk
avant $u+
après $u+
après aprEz2 $u+
(temps en temps) tA~zA~tA~
ainsi $u+
alors alOr $u+
@@ -476,7 +476,7 @@ parmi $u+
pour $u+
autant $u+
tandis $u+
dès $u
dès dEz2 $u
entre $u+
entre $verb
contre $u+
@@ -573,7 +573,7 @@ tel $u+
telle $u+
telles $u+
tout t'ut2
rien Ri-'E~n2
rien ri-'E~n2

// Letters which can be words
//===========================
@@ -593,8 +593,8 @@ dessous d@su
hareng _!arA~
pastis pastis
poing pwE~
ressent R@s'A~t2
riz Ri
ressent r@s'A~t2
riz ri
sphincter sfE~ktEr
sous $u+
sur $u+
@@ -687,7 +687,7 @@ queries kueri
quit _^_en
recorder ricordeur $text
requiem rekw^ijEm
revolver RevOlvEr
revolver revOlvEr
scan skan
scanner skaner2 $verb
scanner skanWr $noun
@@ -723,7 +723,7 @@ cut kWt
mazout mazut
michael mikaEl
out aut
rut Ryt
rut ryt
scorbut scorbutt $text
scout skut
stout staut
@@ -826,7 +826,7 @@ outlook autlu:k
paint _^_en
paper _^_en
people _^_en
redhat REdat
redhat rEdat
same _^_en
sametime _^_en
schubert SubEr
@@ -897,4 +897,3 @@ venezuela venezyela
wallis wAlis
futuna futuna
zimbabwe zimbabwe


+ 3
- 3
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2009-11-20 Michel Such <[email protected]>
// Updated: 2010-02-07 Michel Such <[email protected]>
//

// Letter classes:
@@ -590,6 +590,7 @@ _m) e (ga e

Z) ème i-Em
è E
ès E
Ar) ès (_ Es
m) ès (_ Es
n) ès (_ Es
@@ -1072,14 +1073,13 @@ C) oing (_ _^_en // going

.group r

_) r (A R
_su) rr rr // surréaliste
cou) rr rr // courrai
mou) rr rr // mourrai
cou) rr (i r // courrier
r r // rien
rr r
_) radio (@P5 Radio
_) radio (@P5 radio

// group r: English section
_) real _^_en

+ 188
- 109
dictsource/hu_list View File

@@ -6,6 +6,7 @@
_0 nullA
_1 EJ
_2 kEt:Y:
_2a ke:t // for 200, 2000
_3 ha:R2om
_4 ne:J
_5 Yt
@@ -25,6 +26,7 @@ _7X hEtvEn
_8X n^oltsvAn
_9X kilEntsvEn
_0C sa:z

_0M1 EzER2
_1M1 EzER2
_2M1 ke:tEzER2
@@ -35,12 +37,21 @@ _0M3 millia:R2d
_1M3 EJmillia:R2d
_2M3 ke:tmillia:R2d


_0M4 billio:
_1M4 billio:
_2M4 ke:tbillio:
_dpt ||Ege:s //Not need the pause before this word


// variants used when followed by hyphen and suffix starting with 'e' or 'a'
_1e EJ:
_2e kEt:
_3e ha:R2m
_7e hEt
_0M1e EzR2
_1M1e EzR2
_2M1e ke:tEzR2
// used after decimal point
_0Z1 tizEd // tenths
_0Z2 sa:zAd // hundredths
_0Z3 EzR2Ed
@@ -76,34 +87,61 @@ _0M1o EzR2Edik
_1M1o EzR2Edik
_2M1o ke:tEzR2Edik

// ordinal numbers with -a or -e suffix, which is spoken but not written (eg. "december 2. óta")
// Use this pronunciation when a number (with a dot) is between a $alt word and a $alt3 word.
// Set $alt3 flag for: óta, és. közt, között

_1qx ElSEjE
_2qx ma:SodikA
_1q EJ:EdikE
_2q kEt:EdikE
_3q hAR2_mAdikA
_4q nEJEdikE
_5q YtYdikE
_6q hAtodikA
_7q hEtEdikE
_8q n^oltsAdikA
_9q kilEntsEdikE
_10q tizEdikE
_20q husAdikA
_30q hAR2_mintsAdikA


// $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.
_0-éről e:R2Y:l $alt2
_0-áról a:R2o:l $alt2
_0-ára a:R2A $alt2
_0-ától a:to:l $alt2
_0-ről e:R2Y:l $alt2
_0-ról a:R2o:l $alt2
_0-ével e:vEl $alt2
_0-ával a:vAl $alt2
_0-éig e:ig $alt2
_0-áig a:ig $alt2
_#-a A $alt2
_#-i Ei $alt2
_#-e E $alt2
_#-án a:n //Need remove the $alt2 tag with this line, because some
//time with the book the sentences beginning with this form, and need
//spokening ordinal number alwais. For example: In 20th, the rain is raining.
_#-ára a:R2A //need remove the $alt2 tag, because with a books lot of
//string using following form: január 19-ről 20-ára. With this situation,
//need spokening huszadikára, not húsz-ára string.
_#-ére e:R2E //Same as prewious doed fix.
_#-ra a:R2A $alt2 //But this line for example need the $alt2 tag.
_#-re e:R2E $alt2
_#-én e:n //need remove the $alt2 attribute with this line
_#-ai Ai $alt2
_#-ei Ei $alt2
_#-től e:tY:l $alt2
_#-tól a:to:l $alt2
_#-ig e:ig $alt2 //special date ordinal numbers for example elsejéig, negyedikéig etc.
_#-éről e:R2Y:l
_#-áról a:R2o:l $alt2

_#-ától a:to:l $alt2
_#-ről e:R2Y:l $alt2
_#-ról a:R2o:l $alt2
_#-ével e:vEl $alt2
_#-ával a:vAl $alt2
_#-éig e:ig $alt2
_#-áig a:ig $alt2
_#-étől e:tY:l $alt2
_#-ét e:t $alt2
_#-át a:t $alt2

(1-e) elseje $text $alt2
(1-én) elsején $text $alt2
(1-jén) elsején $text $alt2
@@ -117,6 +155,14 @@ _0-áig a:ig $alt2
(1-ről) elsejéről $text $alt2
(1-ével) elsejével $text $alt2
(1-éig) elsejéig $text $alt2
(1-étől) elsejétől $text $alt2
(1-ét) elsejét $text $alt2
(1-je) elseje $text $alt2
(1-jei) elsejei $text $alt2
(1-jével) elsejével $text $alt2
(1-jére) elsejére $text $alt2
(1-jétől) elsejétől $text $alt2
(1-jéig) elsejéig $text $alt2
(2-i) másodikai $text $alt2
(2-ig) másodikáig $text $alt2
(3-i) hAR2_mAdikAi $alt2
@@ -137,8 +183,6 @@ _0-áig a:ig $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
@@ -147,50 +191,23 @@ _0-áig a:ig $alt2
(0-nál) nul:a:na:l
(0-hoz) nul:a:hoz
(0-s) nul:a:S
(0-ára) nul:a:R2A //But if the 0-ára string have the text (only 0 number before the suffix, need spokening this exception.
(0-án) nul:a:n //same as prewious exception.
(0-ig) nul:a:ig
(00-ig) nul:Anul:a:ig //special exception
(0-ban) nul:a:bAn
(0-ba) nul:a:bA
(1-gyet) EJ:Et
(1-gyes) EJ:ES
(2-őt) kEt:Y:t

// 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
(2-esük) kEt:ESyk
(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-astól) ha:R2mASto:l
(3-ashoz) ha:R2mAShoz
(3-at) ha:R2mAt
(3-al) ha:R2om:Al
(3-asok) ha:R2mASok
(3-asoknak) ha:R2mASoknAk
(30-cal) hAR2mints:Al

//4 number suffixes
(4-el) ne:J:El //Nneed J: phoneme, not J phoneme contains one suffix)
(4-gyel) ne:J:El //Need J: phoneme, not J phoneme
(4-t) ne:JEt //special number suffix exception
(5-tel) Yt:El
(5-el) Yt:El
(5-től) Yt:Y:l
@@ -199,36 +216,17 @@ _0-áig a:ig $alt2
(6-tal) hAt:Al
(6-tól) hAt:o:l
(6-tól) h'Atodika:to:l $alt2
(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

(7-től) he:t:Y:l
(7-től) hEtEdike:tY:l $alt2
(7-essel) hEtES:El
(7-esen) hEtESEN
(7-eseknek) hEtESEknEk
(7-et) hEtEt
(7-em) hEtEm
(10-es) tizES // use [i] not [i:]
(10-est) tizESt
(10-essel) tizES:El
(10-esével) tizESe:vEl
(10-en) tizEn
(10-et) tizEt
(7-tel) he:t:El
(8-cal) n^olts:Al
_10e tiz
_20e hus
(10-szer) ti:s:ER2
(10-szeres) ti:s:ER2ES
(20-as) husAS // use [u] not [u:]
(20-ast) husASt
(20-assal) husAS:Al
(20-asával) husASa:vAl
(20-at) husAt




//special number exceptions
@@ -242,6 +240,7 @@ _0-áig a:ig $alt2
(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
január $alt
február $alt
@@ -281,6 +280,20 @@ péntek $alt
szombat $alt
vasárnap $alt

//Following four seasons and suffixes not need spokening ordinal number
tavasz $alt
nyár $alt
ősz $alt
tél $alt
tavaszán $alt
nyarán $alt
őszén $alt
telén $alt
tavaszi $alt
nyári $alt
őszi $alt
téli $alt

// accent names
_lig ligAtu:R2A
_acu e:lES
@@ -300,7 +313,6 @@ _tld tildE

// characters
_#9 tAb
_#13 vAlAmi
_#32 so:kYz
_cap n'AJ_|
_?? kAR2AktEr||ko:d // unknown characters (change this)
@@ -310,8 +322,9 @@ _?? kAR2AktEr||ko:d // unknown characters (change this)
ADSL a:de:ESEl $allcaps //Internet connection type, we pronouns this with ádéesel
ÁNTSZ a:Ente:Es $allcaps
ATM a:te:Em $allcaps //The ATM stands. We pronouns this abbreviation with átéem word. Default, Espeak pronouns this abbreviation with atéem word.
cm tsEntime:tER2
km kilo:me:tER2

GYSEV JESEv $allcaps
GYESEV JESEv $allcaps
HÉV he:v $allcaps
@@ -319,6 +332,7 @@ IPTV $abbrev $allcaps
GDP dZi:di:pi: $allcaps
?2 GDP $abbrev $allcaps
HSDPA $abbrev $allcaps
kb kYR2ylbElyl $hasdot
ORTT $abbrev $allcaps
ORFK oEREfka: $abbrev $allcaps
MÁV ma:v $allcaps
@@ -326,7 +340,13 @@ MTI $abbrev $allcaps
mm milime:tER2
RAM R2Am $allcaps //Espeak normaly spokening this abbreviation with erraem, but this is not good
Psszt ps:t $capital // similar word with quiet word. Espeak default spokening this abbrew quiet word with letter by letter by default.
Pszt ps:t $capital //same as prewious abbrewiation
VDSZSZ ve:de:EsEs $allcaps
WC ve:tse: $allcaps
LST ElESte: $allcaps
BAR bAR2 $allcaps
SS EsEs $allcaps

a.m An^n^i||m'int $dot
ún u:JnEvEzEt: $hasdot
dr doktoR2 $dot
@@ -354,7 +374,22 @@ vö v'EZd||_'Yss2E

// Articles
a $u $strend2 // the
az $u $strend2
az $u $strend2 //Need remove the $alt3 attribute this article, because
//following context result bad spokening output if $alt3 attribute is used:
//az 5. és 6. hadsereg.
//This text means in english: the 1th and 2th solders
//Espeak spokening following phoneme if $alt3 attribute is used:
//Az YtYdikE és hAtodik hAdSER2Eg
//This is wrong this context, the right phoneme is:
//Az YtYdik és hAtodik hAdSER2Eg
//But for example the following sentence part need the $alt3 attribute with
//az article word, but now impossible doing this right:
//Június 6. az a nap
//If I removed the $alt3 attribute with az word, Espeak sending this phoneme:
//ju:niuS hAtodik Az A nAp
//The right phoneme is:
//ju:niuS hAtodikA Az A nAp

//aki $u+ // that

ez $unstressend // this
@@ -375,12 +410,12 @@ maguk $unstressend


// Conjunctions
és $u $strend2 // and
és $u $strend2 $alt3 // and
de $u+ $pause // but
vagy $u+ $pause // or

mert $u $pause // because
miatt $u // because
miatt $unstressend // because
bár $u $pause // although
habár $u $pause // although
ha $u $pause // if
@@ -405,14 +440,15 @@ is $u // also
elöl $unstressend // in front of
elől $unstressend
elé $unstressend
előtt $unstressend

előtt $alt3 $unstressend
este $alt3
estéjén $alt3
mögül $unstressend // behind
mögött $unstressend
mögé $unstressend

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

alól $unstressend
alá $unstressend
@@ -437,15 +473,15 @@ neki $unstressend
nekem $unstressend
közül $unstressend
közé $unstressend
között $u
között $u $alt3
an $u // so many persons
as $u
ba $unstressend // into
ban $unstressend // in
ban $u // in
be $unstressend
ben $unstressend
ból $unstressend // from inside
ből $unstressend
ben $u
ból $u // from inside
ből $u
e $u // in query, his/her
ei $u // his her multiole
en $u
@@ -489,7 +525,14 @@ vel $unstressend

ellen $unstressend // against
//elé $u // before
//óta $u // since
óta $alt3 // since
hétfőig $alt3
keddig $alt3
szerdáig $alt3
csütörtökig $alt3
péntekig $alt3
szombatig $alt3
vasárnapig $alt3

sok $unstressend // many
kevés $unstressend // few
@@ -535,7 +578,6 @@ tartják $unstressend
erős $unstressend
lenni $unstressend
lennie $unstressend
közt $u+
levegőjére $unstressend
ad $unstressend
kapják $unstressend
@@ -833,7 +875,7 @@ velem $unstressend
velünk $unstressend
veletek $unstressend
velük $unstressend
közt $unstressend
közt $unstressend $alt3
hiszik $unstressend
hiszitek $unstressend
önt $unstressend
@@ -866,6 +908,17 @@ vélem $unstressend
véled $unstressend
véli $unstressend
vélitek $unstressend
szól $unstressend
tank $unstressend
adta $unstressend
kellett $unstressend
főt $unstressend
nőtt $unstressend
vitt $unstressend
rést $unstressend
brit $unstressend
természetes $u $1


// word pairs

@@ -885,7 +938,7 @@ vannak $unstressend

voltam $u // to be, past
voltál $u
volt $u
volt $u $alt3
voltunk $u
voltatok $u
voltak $u
@@ -1013,7 +1066,7 @@ _¤ pe:nznEmjEl
® bEjEJzEt:
™ ve:djEJ
_` tompA
SokYz
so:kYz
_« bElSY:|bAl|ide:zY:jEl
_» bElSY:|jobb|ide:zY:jEl
_­ la:JkYtY:jEl
@@ -1057,10 +1110,12 @@ nato na:to:
(end-of line) u:jS,oR2



$textmode
MSZP emeszpé
SZDSZ eszdéesz


egyezség eggyesség


@@ -1074,6 +1129,30 @@ egyezség eggyesség
(CD-d) cédéd
(db-os) darabos
(db-ot) darabot
(LST-k) elesték
(LST-n) elestén
(PC-k) pécék
(://) (kettőspontperper) $pause //Hungarian Nwda users ask me put this entry
//again, because Nwda unfortunately does'nt spokening colondashdash
//characters for example with a http or an ftp url.
//The parenthese with second part is required, because if I using this form,
//Orca speech driver does'nt pronouns wrong the url's if I navigating word
//after word and don't disturb Orca working.
(PC-n) pécén
(USB-n) úesbén
(USA-ból) usából
(USA-nak) usának
(DVD-k) dévédék
(dvd-k) dévédék
(DVD-n) dévédén
(dvd-n) dévédén
(dvd-d) dévédéd
(DVD-d) dévédéd









+ 118
- 24
dictsource/hu_rules View File

@@ -33,6 +33,10 @@
biz (A biz, // bizalmas etc.
biedermeier bi:dER2ma:jER2
_) batthiány bAc:a:n^i
tö) bb (ször b
tö) bb (ség b
tö) bb (nyire b
tö) bb (nek b

.group c
c ts
@@ -64,8 +68,8 @@
kilen) c (csatorn ts
ner) c (stóla ts
kavi) cs (zátony tS
?!2 cherbourg SER2buR2g
har) c (cselek ts



@@ -80,7 +84,7 @@ hierar) ch (i h
mün) ch (en h
maso) ch (istA h
monar) ch (i h
_pe) ch h
_pe) ch h:
szé) ch tS
_zi) ch (y tS
_szé) che (ny tSe:
@@ -93,6 +97,8 @@ hierar) ch (i h
ar) ch (ivál h

?!2 _) church (il tSYR2tS
?!2 bu) ch (enwald h
?!2 da) ch (au h

.group d
d d
@@ -146,11 +152,18 @@ hierar) ch (i h
föl) d (sáv d
dühtől dytY:l
rövi) d (zárlat d
sarja) d (zik d
nyála) d (z d
ren) dsz (erint d|s
szaba) d (szájú d
menetren) dsz (erű d|s
hazár) d (játék d
főha) d (segéd d
csalá) d (szerető d
föl) d (szoros d
min) d (jobban d
bri) ddzs (el dZ:
rekor) d (sebesség
hol) d (sü d
árpá) d (sáv d

.group dz
fogó) dz (kod ts
@@ -166,32 +179,37 @@ szedelő) dz z
tapogató) dz z
ó) dz (kod ts
villó) dz z
e) dz (ő dz
e) dz (és dz
e) dz (ő dz:
e) dz (és dz:
kére) dz ts
mentegető) dz z
dz dz
A) dz (A dz
dz dz:
A) dz (A dz:
dzs dZ
A) dzs dZ:
dz dz
dz dz:
C) dzs dZ
A) dzs (A dZ:
borsó) dz z
beszé) dz (avar dz
beszé) dz (avar d|z
dobáló) dz z
kérő) dz z
követelő) dz z
rángató) dz z
titkoló) dz z
ringató) dz z


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


_) ehhez EhEz
_) egyezség EJ:ESSe:g


.group é
é e:
éi (é e::i:
@@ -242,7 +260,8 @@ régisé) g (gyűjt g
ritkasá) g (gyűjt g
üve) g (gy g
vilá) g (gyűlöl g

gk k:
é) gh (ajla kh

.group gy
gy J
@@ -262,7 +281,7 @@ ritkasá) g (gyűjt g
e) gyj (elentésű Jj
lá) gy (sá J
gyön) gy (sor J
_minde) gy (ik J:
_minde) gy (ik J

na) gysz (a Js
na) gy (sokára J
@@ -272,7 +291,7 @@ _minde) gy (ik J:
ho) gy (se J
na) gy (ság J
he) gy (ség J
e) gy (ség J
e) gys (ég J|S
e) gy (sarkú J
e) gy (sejtű J
e) gy (sínű J
@@ -281,6 +300,29 @@ _minde) gy (ik J:
e) gy (es-egyedül J //need one J phoneme with this word, not J: phoneme
ú) gy (sem J
né) gy (sarok J
na) gy (stíl J
fa) gy (sérül J
_e) gy (ezmény J:
_mege) gy (ez J:
e) gy (-egy J:
na) gy (stratégia J
e) gy (értelmű J:
e) gy (ezked J:
e) gy (eztet J:
e) gy (etért J:
e) gy (irányú J:
kie) gy (ez J:
belee) gy (ez J:
_e) gy (ez J:
e) gy (általán J:
e) gy (ensúly J:
tizene) gy (edszer J:
tizene) gy (es J:
ú) gy (sincs J
e) gy (ért J:
a) gy (sérül J



.group h
h h
@@ -301,6 +343,10 @@ _minde) gy (ik J:
t) í (zen i
t) í (zet i
v) í (zen i
sz) í (vatás i
v) í (zére i



.group j
j j
@@ -325,6 +371,7 @@ _minde) gy (ik J:
kossuth koSu:t
kossutht koSu:t:
készségg ke:SSe:g:
_a) kk (reditál k

.group l
l l
@@ -367,6 +414,8 @@ keresztü) l (j l
fe) l (javít l
fe) l (jogosít l
ökö) l (jog l:
ha) ll (gatom l
me) ll (kas l


.group m
@@ -375,11 +424,14 @@ keresztü) l (j l
mauser mAuzER2
mosquito moskito:
mosquitó moskito:
messerschmitt mEs:ER2Smit:
?!2 hi) mm (ler m


.group n
n n
n (g N
n (k N
n (g n
n (k n
n (p m
ny n^
nny n^n^
@@ -415,7 +467,6 @@ negyve) n (yard n
ö) n (járó n
tulajdo) n (jog n
ko) nn (ektor n //connector word, we spokening one n letter, not two n letter
me) nj (_S2 n^
be) nn (szülött n
éle) n (jár n
magá) n (jelleg n
@@ -426,6 +477,9 @@ tulajdo) n (jog n
elle) n (jegy n
fe) nn (tartás n
fe) nn (sík n
egye) n (jogú n
beto) n (járda n


.group o
o o
@@ -467,7 +521,7 @@ tulajdo) n (jog n
_) richá (rd R2iCa:
reichsmarschall R2EjsmAR2SAl:
?!2 _) roose (velt R2u:z
?!2 _) reichs R2Ejs

.group s
s S
@@ -494,13 +548,15 @@ juventu) s s //a radio station name
óriá) s S
látá) s (zavar S
hallá) s (zavar S

?!2 _) sherman SER2mAn
?!2 siegfried sigfR2i:d
gyalogo) s (zászló S


.group ss
ssz ss2
ssz (ínű Ss
mu) ss (olini ss2
mu) ss (olin ss2
_má) ssz (ó Ss
mennydörgé) ssz (erű Ss
robbaná) ss S:
@@ -656,6 +712,11 @@ motoro) ssz (emüveg Ss
kavará) ssz (erű Ss
_sa) ssz (eg Ss
ké) ssz (úrás Ss
gyalogo) ssz Ss
puská) ssz Ss
mozgá) ssz Ss
_ke) ss (elring s:
rádió) ssz (ob Ss

.group sz
sz s
@@ -684,7 +745,7 @@ kenyere) szs (ák SZ
li) sztsz (erű st|s
tava) sz (ára s
rongyo) szs (ák SZ
para) sztsz (ek st|s

.group t

@@ -755,7 +816,7 @@ vörösmar) ty ti
á) t (sza t
á) tj (ár t|j
á) t (szö t
á) t (sző t
á) tsz (ő t|s
á) t (szú t
á) t (szű t
á) t (jut t
@@ -816,7 +877,7 @@ passzá) t (szél t
épüle) t (sarok t
mene) t (sor t
skó) t (sapka t
lé) t (jogosultsága t
lé) t (jogosultság t
bérle) t (jegy t
csapa) t (játék t
ese) t (jog t
@@ -838,6 +899,21 @@ négyze) t (centi t
á) tj (ön t|j
á) t (süvít t
bará) tj (ára c:
kísérle) t (sorozat t
á) t (sült t
á) t (süt t
épüle) t (sarok t
terüle) ts (áv t|S
terüle) t (cél t
hé) t (jegyű t
természetes tER2me:sEtES
ha) t (sáv t
szen) t (szobrok t
tesz) t (cél t
dró) t (sövény t
dró) t (sövénny t
a) th (én t


.group ts
ts (_S2 tS //general rule with word end of ts letters
@@ -888,6 +964,7 @@ négyze) t (centi t
tehe) ts (ég tS:
lá) tsz ts:
lá) tssz (on ts:
lá) tssz (anak ts:
te) tsz ts:
fize) ts (ég tS:
segí) ts tS:
@@ -909,6 +986,12 @@ indula) tsz (ó t|s
skó) tsz (okny t|s
söté) tsz (őke t|s
á) ts (é t|S
halla) tssz (on ts:
me) tsz (ik ts:
me) tsz (e ts:
hű) ts tS:



.group u
u u
@@ -916,6 +999,8 @@ indula) tsz (ó t|s
.group ú
ú u:
h) ú (szan u
h) ú (szas u
h) ú (szat u

.group ü
ü y
@@ -927,6 +1012,7 @@ indula) tsz (ó t|s
ű y:
t) ű (zijáték y
_t) ű (nés y //If this word is a single word, need y phoneme, not y: phoneme. For example the tűnés word, but not need this rule with eltűnés word.
_t) ű (njön y

.group v
v v
@@ -1030,9 +1116,17 @@ tájéko) z (tat s
tájéko) z (tass s
bi) z (tat s
rá) z (kód s

ré) z (síp z
gará) zs (tároló S
dará) zs (fészek S
ri) zs (t S
tű) zsz (erész s:
tű) zsz (eréssz s:
búcsú) z (ko s
nyújtó) z (ko s

.group

$ dolla:R2
ä E
æ E

+ 11
- 11
dictsource/id_list View File

@@ -58,7 +58,7 @@ _7X t'udZuhpuluh
_8X d@l'apanpuluh
_9X s@mb'ilanpuluh
_0C R'atus_|
_1C s@*'atus_|
_1C s@R2'atus_|
_0M1 R'ibu_
_1M1 s@r'ibu_
_0M2 dZ'uta_
@@ -90,34 +90,34 @@ _tld t'ild@
// punctuation
_! t,anda||s'ER2u
_" t,andak'utip
£ ponst'E*RliN
% p@*Rs'En
£ ponst'ER2liN
% p@R2s'En $max3
^ t,andat'opi
& t,andad'an
_* b'intaN
* b'intaN $max3
+ t'ambah $max3
= s,ama||d'ENan $max3
~ t'ilde
# p'agaR $max3
@ a||k'EOng
/ g,aR2is||m'iR2iN $max3
\ 'bEkslES
_( k,uR2uN||b'uka
_) k,uR2uN||t'utup
__ g,aR2is||b'awah
_- t,andah'ubuN
+ t'ambah
= s,ama||d'ENan
_{ k,uR2uN||kuR2'awal
_} k,uR2uN||kuR2,awal||t'utup
_[ k,uR2uN||s'iku
_] k,uR2uN||s,iku||t'utup
_: t,iti?||d'ua
_; t,iti?||k'oma
@ a||k'EOng
_' k,utip||t'uNgal
~ t'ilde
# p'agaR
_< k,uR2aN||d'aR2i
_> l,Ebih||d'aR2i
_, k'oma
_. t'iti?
_? t,anda||t'an^a
/ g,aR2is||m'iR2iN
_\ 'bEkslES


// unstressed words

+ 8
- 6
dictsource/id_rules View File

@@ -12,8 +12,8 @@

.group b
b b

_) be (@@ b@
be (n b@


.group c
@@ -27,7 +27,7 @@
e E
e) e _|E
A_) e _|E
e (_ e
e (_ E

.group f
f f
@@ -49,10 +49,10 @@

.group k
k k
k (_ ?
k (_ k
kh x

_) ke (@@ k@
ke (n k@


.group l
@@ -92,7 +92,7 @@
.group r
r R2
r (K R
e) r (K *R
e) r (K R


.group s
@@ -107,8 +107,9 @@
.group t
t t
tj tS // Dutch
_) tel t@l
_) ter (@@ t@R

_) ter (@@ t@*R


.group u
@@ -143,3 +144,4 @@
**
**) * (_ _::



+ 6
- 2
dictsource/no_list View File

@@ -19,7 +19,7 @@ h ho:
j je:
k ko:
l El
m e:m
m Em
n En
p pe:
q ku-:
@@ -34,7 +34,7 @@ z sEt

// numeric
//********
_0 n'Ul
_0 n'u-l
_1 'e:n
_2 t'u:
_3 tR'e:
@@ -147,6 +147,7 @@ _tld t'Ild@2

// abbreviations
//**************
ooxml $abbrev


// articles
@@ -305,4 +306,7 @@ der dE:R
her hE:R
kom kOm
loe lu: $capital
noe nU:@2
noen nU:@n // no+en
office Offi:s
system syst'e:m

+ 308
- 63
dictsource/ro_list
File diff suppressed because it is too large
View File


+ 329
- 312
dictsource/ro_rules View File

@@ -1,9 +1,10 @@


// translation rules for Romanian
// This file is UTF-8 encoded


// replace s-comma, t-comma by s-cedilla, t-cedilla
// replace s-comma, t-comma by s-cedilla, t-cedilla
.replace
ș ş
ț ţ
@@ -11,113 +12,123 @@
Ț ţ

.group a
a a
ai aI
ai (a aj
ai (_ 'aI
au aU // ?? only at end of word ??
c) au (t au
au (_ 'aU
a (AAA a
&) a (_S1q a

gi) a (_S1q a
V@) a (N_ 'a
ăi) a (_ 'a
@) abil (_ 'abil
a a
ai aI
ai (a aj
ai (_ 'aI
n) ai ((v ai
au aU // ?? only at end of word ??
c) au (t au
au (d au
au (z au
au (r au
au (st au
_l) au (d 'au
au (_ 'aU
a (AAA a
&) a (_S1q a

gi) a (_S1q a
V@) a (N_ 'a
ăi) a (_ 'a
@) abil (_ 'abil
_) anti (@P4 anti
@) ale (_ 'ale
@ion) a (_ 'a
@) ale (_ 'ale
@ion) a (_ 'a


.group ă
ă @
ăi (_ @I
ău @U // ?? only at end of word ??
c) ău (t @u
ău (_ '@U
@) ăte (_S3t @te
@) ătă (_S3t @t@
ă @
ăi (_ @I
ău @U // ?? only at end of word ??
c) ău (t @u
_b) ău (t @u
_l) ău (d @u
_d) ău (n @u
ău (_ '@U
@) ăte (_S3t @te
@) ătă (_S3t @t@
@) ătul (_S4t @tul
@) ătele (_S5t @tele
@) ătului (_S6t @tuluI
@) ătelor (_S6t @telor
&) ă (_S1 @
&ec) ă (_ @
@ăC) ă (_ @
@er) ă (_ @
@iţ) ă (_ @
@) ă (Că_ =@
ări (A_ @*'i
ării (_ @*'iI
ări (AA_ @*'i
@) ăie (_ =@Ie
&) ă (_S1q @
&ec) ă (_ @
@ăC) ă (_ @
@er) ă (_ @
@iţ) ă (_ @
@) ă (Că_ =@
ări (A_ @*'i
ării (_ @*'iI
ări (AA_ @*'i
@) ăie (_ =@Ie


.group â
â y
âi yI
âu yU
@) âie (_ =yIe
â y
âi yI
âu yU
@) âie (_ =yIe


.group b
b b
bb b
@) b (i_ b;
@) b (il_ =b
@) b (ila_ =b
@) b (ili_ =b
@) b (ilii_ =b
b b
bb b
@) b (i_ b;
@) b (il_ =b
@) b (ila_ =b
@) b (ili_ =b
@) b (ilii_ =b
@) b (ilului_ =b
@) b (ililor_ =b
@) b (ilile_ =b
mo) bil (_ b'il
@) b (ilile_ =b
mo) bil (_ b'il


.group c
c k
c (e tS
c (i tS
ci (o tS
cii tSiI
ch k
@@) col (_ =kol
@@) coli (_S1t =I^
@@) cole (_S1t e
@) cni (_ kn'i
@) cnea (_ kne'a
c k
c (e tS
c (i tS
ci (o tS
cii tSiI
ch k
@@) col (_ =kol
@@) coli (_S1t =I^
@@) cole (_S1t e
@) cni (_ kn'i
@) cnea (_ kne'a



.group d
d d
dd d
@) d (i_ d;
d d
dd d
@) d (i_ d;


.group e
e e
_) ei eI
ei (_ eI
e e
_) ei eI
ei (_ eI
// eu eU // only at end of word ??
// eu e[u // ??
@) eu (l_ 'eu
@) eu (_ eu
@) eu (_N 'eU
ea ea
&) ea (_S2q ea
&) eSi eaj
eau eaw
eo eo
e (AAA e
@) eş (_ =eS

@) eşul (_ =eSul
@) eşi (_ =eSI^
@) eşului (_ =eSuluI
@) eşilor (_ =eSilor
@) eu (l_ 'eu
@) eu (_ eu
@) eu (_N 'eU
ea ea
&) ea (_S2q ea
&) eSi eaj
eau eaw
eo eo
d) eo (seb e|o
e (AAA e
@) eş (_ =eS

@) eşul (_ =eSul
@) eşi (_ =eSI^
@) eşului (_ =eSuluI
@) eşilor (_ =eSilor

//@) ec (a_ =ek
//@) ec (ă_ =ek
@@ -126,355 +137,361 @@
//@) ec (ilor_ =etS
//@At) ec (i@_ etS
//@At) ec (A_ ek
@At) ec (ii_ etS
@At) ec (ii_ etS
// &) es (_S1q e
&C) e (re_ %e
_ac) ee (a eI
r) ei (er_ 'eI
@) e (re_ =e
@) e (ri_ =e
@) e (rea_ =e
@) e (rii_ =e
@) e (rei_ =e
i) e (re_ e
i) e (ri_ e
i) e (rii_ e
i) e (rea_ e
@) e (ra_ =e
@) e (ră_ =e
@f) e (ra_ e
@f) e (ra_ e
i) e (ră_ e
i) e (ra_ e
eoa eO'a
&C) e (re_ %e
_ac) ee (a eI
r) ei (er_ 'eI
@) e (re_ =e
@) e (ri_ =e
@) e (rea_ =e
@) e (rii_ =e
@) e (rei_ =e
i) e (re_ e
i) e (ri_ e
i) e (rii_ e
i) e (rea_ e
@) e (ra_ =e
@) e (ră_ =e
@f) e (ra_ e
@f) e (ra_ e
i) e (ră_ e
i) e (ra_ e
eoa eo'a


.group f
f f
ff f
@) f (i_ f;
f f
ff f
@) f (i_ f;


.group g
g g
g (e dZ
g (i dZ
gii dZiI
gh g
&) gii (_ dZ'iI
&) gi (A_ dZi
g g
g (e dZ
g (i dZ
gii dZiI
gh g
&) gii (_ dZ'iI
&) gi (A_ dZi



.group h
h h
@) h (i_ C
h h
@) h (i_ C


.group i
i i
i (A j

@) i (e_ j
&C) i (_NS1q i/
&) i (_NS1q i
&) i (-NS1q i // don't reduce to [I^] if a hyphen follows
ţ) i (-Că i
ţ) i (-Ci i

ţ) i (-l i
ţ) i (-ne i
&') i (_ i
ţi-) i (_ _ // combined with previous word as [iI]
Cr) i (_ i
V&) i (N_ 'i // verb
ăC) ia (_ 'ia
âC) ia (_ 'ia
ăC) ie (_ 'ie
âC) ie (_ 'ie

g) i (ne_ =i
g) i (nea_ =i
i i
i (A j
@) i (e_ j
&C) i (_NS1q i/
&) i (_NS1q i
&) i (-NS1q i // don't reduce to [I^] if a hyphen follows
ţ) i (-Că i
ţ) i (-Ci i
ţ) i (-l i
ţ) i (-ne i
&') i (_ i
ţi-) i (_ _ // combined with previous word as [iI]
Cr) i (_+++ i
V&) i (N_ 'i // verb
ăC) ia (_ 'ia
âC) ia (_ 'ia
ăC) ie (_ 'ie
âC) ie (_ 'ie

g) i (ne_ =i
g) i (nea_ =i
c) i (uC
cţ) ie (_ =ie
cţ) iei (_ =ieI
cţ) ia (_ =ja
graf) ie (_ 'ie
graf) ia (_ 'ia
graf) iei (_ 'ieI
graf) ii (_ 'iI
scop) ie (_ 'ie
scop) ia (_ 'ia
scop) iei (_ ieI
scop) ii (_ 'iI
er) ia (_ 'ia
er) iei (_ 'ieI
on) ie (_ 'ie
on) ia (_ 'ia
on) iei (_ 'ieI
uş) ie (_ 'ie
uş) ia (_ 'ia
uş) iei (_ 'ieI
cţ) ie (_ =ie
cţ) iei (_ =ieI
cţ) ia (_ =ja
graf) ie (_ 'ie
graf) ia (_ 'ia
graf) iei (_ 'ieI
graf) ii (_ 'iI
nom) ie (_ 'ie
nom) ia (_ 'ia
nom) iei (_ 'ei
scop) ie (_ 'ie
scop) ia (_ 'ia
scop) iei (_ ieI
scop) ii (_ 'iI
fil) ie (_ 'ie
fil) ia (_ 'ia
fil) iei (_ 'ei
er) ia (_ 'ia
er) iei (_ 'ieI
on) ie (_ 'ie
on) ia (_ 'ia
on) iei (_ 'ieI
uş) ie (_ 'ie
uş) ia (_ 'ia
uş) iei (_ 'ieI
// @) ie (_S1q ie

iei (_ 'ieI
ii iI
&) ii (_S2q iI
iii iji
iu (_ iU
iu ju

&) ic (_ =ik
&) ica (_ =ika
&) ice (_ =itSe
&) icile (_ =itSile
&) icilor (_ =itSilor
@) icii (_ =itSiI
@) icei (_ =itSeI

scr) i (e 'i
&) ing (_ %iNg // foreign words

i (t_ 'i
ioa iO'a

@) işte (_ =iSte
@) iştea (_ =iStea
iei (_ 'ieI
ii iI
&) ii (_S2q iI
iii iji
iu (_ iU
iu ju

&) ic (_ =ik
&) ica (_ =ika
&) ice (_ =itSe
&) icile (_ =itSile
&) icilor (_ =itSilor
@) icii (_ =itSiI
@) icei (_ =itSeI

scr) i (e 'i
&) ing (_ %iNg // foreign words

i (t_ 'i
ioa jO'a

@) işte (_ =iSte
@) iştea (_ =iStea
@) i (ţă_++++++++ =i
@) i (ţe_ =i
@) i (ţei_ =i
@) i (ţelor_ =i
-) i (_ j
@) i (ţele_ =i
@) i (ţe_ =i
@) i (ţei_ =i
@) i (ţelor_ =i
-) i (_ j
@) i (ţele_ =i


.group î
î y
@) î (_ 'y
î y
@) î (_ 'y


.group j
j Z
@) j (i_ Z;
j Z
@) j (i_ Z;


.group k
k k
k k


.group l
l l
ll l
@) l (i_ l;
_) l (_ le
-) l (_ l // -l
l l
ll l
@) l (i_ l;
_) l (_ le
-) l (_ l // -l

iu) l (_S1t l
&) le (_S2t le
&) lor (_S3t lor
&) lui (_S3t luI
iu) l (_S1t l
&) le (_S2t le
&) lor (_S3t lor
&) lui (_S3t luI


.group m
_) m (_ me
m m
mm m
@) m (i_ m;
_) m (-a m
_) m (_ me
m m
mm m
@) m (i_ m;
_) m (-a m

-) mi (_ mi/
-) mi (_ mi/


.group n
_) n (_ ne
n n
@) n (i_ n;
n (g N
n (k N
@) n (tic_ =n
@) n (ic_ =n
_) n (-a n
-) n (_ n
@itudi) ne (_S2t ne
@itudi) nea (_S3t nea
@itudi) nii (_S3t niI
@itudi) ni (_S2t ni
_) n (_ ne
n n
@) n (i_ n;
n (g N
n (k N
@) n (tic_ =n
@) n (ic_ =n
_) n (-a n
-) n (_ n
@itudi) ne (_S2t ne
@itudi) nea (_S3t nea
@itudi) nii (_S3t niI
@itudi) ni (_S2t ni
@itudi) nile (_S4t nile
@itudi) nilor (_S5t nilor


.group o
o o
oa Oa
oai Oaj
_) oi oI
oi (_ 'oI
ou oU
ou (_N 'oU
ou (_ ou
o (AAA o
o o
oa Oa
oai Oaj
_) oi oj
oi (_ 'oj
ou oU
ou (_N 'oU
ou (_ ou
o (AAA o


.group p
p p
pp p
@) p (i_ p;
p p
pp p
@) p (i_ p;
ph f

.group q
q k
qu kw
q k
qu kw


.group r
r r
rr r
A) r (A *
C) r (A @-*
rr *r
A) r (i_ *;
_) re (@P2T re
_) re (gul re
r r
rr r
A) r (A *
C) r (A @-*
rr *r
A) r (i_ *;
r (ă_ *
_) re (@P2T re
_) re (gul re
@u) ri (_NS2t rI^
C) ri (_ @-*i
@u) rii (_S3t riI
C) ri (_ @-*i
@u) rii (_S3t riI
@u) rile (_S4t rile
@u) rilor (_S5t rilor

@) răm (_S1t m
@) răm (_S1t m
@) răţi (_S4t *@tsI^
@u) re (_S2t *e
@u) re (_S2t *e


.group s
_) s (_ se
_) s (-a s
s s
-) s (_ s
sh S
ss s
_) s (_ se
_) s (-a s
s s
-) s (_ s
sh S
ss s

&) sprezece (_S8t sp@-*ez,etSe

@) sem (_S1t m
@) seră (_S2t *@
@) sem (_S1t m
@) seră (_S2t *@
@) serăm (_S3t *@m
@) serăţi (_S4t *@tsI^
@) seşi (_S2t SI^
@) sni (_ sn'i
@) seşi (_S2t SI^
@) sni (_ sn'i


.group ş
ş S
@) ş (i_ S;
ş S
@) ş (i_ S;

@) şni (_ Sn'i
-) şi (_ SI^
@) şni (_ Sn'i
-) şi (_ SI^


.group t
t t
tt (_ t
@) t (i_ t;
t t
tt (_ t
@) t (i_ t;

ts ts
tz ts
tt t
ts ts
tz ts
tt t


.group ţ
ţ ts
@) ţ (i_ ts;
ţ ts
@) ţ (i_ ts;
// @) ţi (-mă ts;'i
// @) ţi (-vă ts;'i
// @) ţi (-le ts;'i
// @) ţi (-i ts;'iI
// @) ţi (-l ts;'i

-) ţi (_ ts;i/
-) ţi (_ ts;i/


.group u
u u
u (A w
_) ui uI
ui (_ 'uI
r) ui (n ui
ui (e wi
V&) ui (_N u'i

dest) ul ul
&) ul (_S2t ul
@ic) ul (_S2t ul
@ic) ule (_S3t ule
u u
u (A w
uia (_ uj'a
_) ui uI
ui (_ 'uI
r) ui (n ui
ui (e wi
V&) ui (_N u'i

dest) ul ul
&) ul (_S2t ul
@ic) ul (_S2t ul
@ic) ule (_S3t ule
@ic) ului (_S4t uluI
@ic) uri (_S3 urI^
@ic) uri (_S3 urI^
@ic) urile (_S5 urile

&) ului (_S4t uluI
@) us (_S2t us
@) us (_S2t us
@) usul (_S4t usul
@) usuri (_S5t usuri
@) usului (_S6t usuluI
@) usurile (_SS´7t usurile
@) usurilor (_S8t usurilor
@ăC) u (N_ 'u
@) um (_S2t um
@ăC) u (N_ 'u
@) um (_S2q um
@) umul (_S4t umul
@) umului (_S6t umuluI
@) umuri (_S5t umuri
@) umurile (_S7t umurile
@) umurilor (_S8t umurilor
c) um (_ um
@) uie (_ =wie
c) um (_ um
@) uie (_ =wie


.group v
v v
@) v (i_ v;
v v
@) v (i_ v;


.group w
w w
w w


.group x
x ks
e) x (a gz
e) x (e gz
e) x (i gz
me) x (ic ks
e) x (iA_ ks
e) x (iu ks
e) x (Ag ks
le) x ks
x ks
e) x (a gz
e) x (e gz
e) x (i gz
) x (e_ ks
_ale) x ks
me) x (ic ks
e) x (iA_ ks
e) x (iu ks
e) x (Ag ks
le) x (+ ks


.group y
y i
y (A j
y i
y (A j


.group z
z z
zz z
@) z (i_ z;
z z
zz z
@) z (i_ z;


.group
ö Y
D_) % la_sut@
% p@-*otSent
$ dolar
ö Y
D_) % la_sut@
% p@-*otSent
$ dolar

, (D v'irgul@
, (D v'irgul@

__) - (_D m'inus
A_) - (_D _
C_) - (_D _
__) - (_D m'inus
A_) - (_D _
C_) - (_D _




+ 73
- 8
dictsource/ta_list View File

@@ -196,7 +196,6 @@ tamil தமிழ் $text
பாகவதம் $alt
பகவத் $alt
பங்கம் $alt
பீடி $alt
பீதி $alt
பேகம் $alt
பார்லி $alt
@@ -210,6 +209,29 @@ tamil தமிழ் $text
பாக்கி $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
(பி . ஏ) bije:


// initial த as [d]
@@ -220,8 +242,6 @@ tamil தமிழ் $text
தயாநிதி $alt
தயாளு $alt
துந்துவி $alt
தயவு $alt
தடால் $alt
திக் $alt
தடக் $alt
தீக்ஷை $alt
@@ -234,16 +254,32 @@ tamil தமிழ் $text
திக்கற்ற $alt
தானு $alt
திட $alt
தேவ $alt
தோ $alt
தினசரி $alt
தரும $alt
தொப் $alt
தொப்பென்று $alt
தொப்னு $alt
திக்கெட்டும் $alt
தேவா $alt


// initial ட
டார்ச் t.a:rtS


// initial ச as [tS]
சீ tSi:
சே tSe:
சீ $alt
சே $alt
சீசீ tSi:tSi:
சீச்சீ $alt
சிட்டாய் $alt
சேச்சே $alt


கக $alt // initial க as [g]
கனம் $alt
கணம் $alt
கிலி $alt
கில்லி $alt
காந்தி $alt
@@ -251,8 +287,6 @@ tamil தமிழ் $text
கோமதி $alt
கயா $alt
காயத்ரி $alt
கங்கை $alt
கங்கா $alt
கட $alt
கோ $alt
கதி $alt
@@ -260,7 +294,38 @@ tamil தமிழ் $text
கச்சாமி $alt
குரு $alt
கோர $alt
கும் $alt
கும்மென்று $alt
கும்முனு $alt
குருவுக்கு $alt
குருன்னு $alt
குருவே $alt
கண்டம் $alt
கோலி $alt
குப் $alt
கம்னு $alt
கம்மென்று $alt


// p as [f]
போன் fo:n
போனில் fo:nil
பைல் faIl
பைலை faIlaI
பாதர் fa:dVr
பாதரிடம் fa:dVrid.Vm
பாதருடன் fa:dVrUd.Vn
பாதரில்லாமல் fa:dVrilla:mVl
காபி ka:fi
பேனில் fe:nil
பேன்ல fe:nlV
போன்ல fo:nlV


பப pVpV
தீப் di:p
டிரேயின் t.re:jn
பைக் baIk
பைக்கில் baIkkIl
தாங்ஸ் Ta:Nks // thanks
டிபுடி d.EpjUt.i // deputy

+ 245
- 28
dictsource/ta_rules View File

@@ -26,6 +26,9 @@
// க is k when preceded by these
.L01 ஷ் ஸ் ட்

// ப is p when preceded by these
.L02 ட் ற் ல் ஷ் ஸ்


// consonants

@@ -38,7 +41,7 @@
_) க kV
_) க (B k
_) க (T gV // if word has $alt attribute in ta_list
_) க (BT g // $alt
_) க (BT+ g // $alt
க்க kkV
க்க (B kk
ற்) க _kV
@@ -47,6 +50,7 @@
L01) க (B k
க (ிரு k
க (ூட k
ங்) க (ொ k

க (ீத g
க (ஜ gV
@@ -63,7 +67,6 @@
_) க (ாண்டாமிருக g
_) க (ோந்து g
_) க (ாந்த g
_) க (ுண்ட g
_) க (ோபுர g
_) க (ுகன g
_) க (ணபதி gV
@@ -71,7 +74,6 @@
_) க (ோதுமை g
_) க (ுகை g
_) க (ோஷ g
_) க (ுண g
_) க (தியில் gV
_) க (டிகார gV
வி) க்ட (ோரியா kt. // victoria
@@ -110,6 +112,39 @@
_) க (ாண்டீப g
_) க (ர்வ gV
_) க (ுருவா g
_) க (னம gV
_) க (னத் gV
_) க (ுண்டு g
_) க (ுண்டன g
_) க (ுண்டர g
_) க (ுண்டடி g
_) க (ுண்டாக g
_) க (ுண்டாய g
_) க (ுணம g
_) க (ுணங் g
_) க (ுணத் g
_) க (ண்டங் gV
_) க (ுண்டம்மா g
_) க (டப்பாரை gV
_) க (ோலிக g
_) க (ோலிய g
_) க (ானம g
_) க (ானங் g
_) க (ானத்த g
_) க (திகலங் gV
_) க (ுப்பென்ற g
_) க (ுபீர g
_) க (ும்பல g
_) க (ும்மிருட்ட g
_) க (ப்பென்ர gV
_) க (ங்கை gV
_) க (ங்கா gV
_) க (ுபுக் g
_) க (லாட்டா gV
_) குண்டாந்த (டி gun.d.a:ntV
_) க (லீர gV
_) க (ோல்மால g
_) க (வாஸ்கர gV

_கல்) க (ி k
_கல்) க (ண்ட kV
@@ -117,8 +152,20 @@
கொல்) க (த்தா kV
கோயில்) க (ாளை k
_) குல்க (ந்த gulkV
_ராஜ) க (ும k
_ராஜ) க (ுல k
க (வி kV
க (ுல k
க (ுமார k
தின) க (ர kV
பிரபா) க (ர kV
சுதா) க (ர்_ kV
சுதா) க (ரிட kV
சுதா) க (ரின kV
மது) க (ர kV
திவா) க (ர kV

_) கி (ராம g
_) கி (ரகண g
நற்) க (ுண g


.group ங
@@ -131,6 +178,8 @@
ச (B s
_) ச sV
_) ச (B s
_) ச (T tSV
_) ச (BT tS
ச்ச tS:V
ச்ச (B tS:
ட்) ச tSV
@@ -139,14 +188,19 @@
ற்) ச (B tS
ஞ்) ச dZV
ஞ்) ச (B dZ
ச் (_ tS
ச் (_N tS
ச்_) ச tSV // previous word ends in ச்
ச்_) ச (B tS
_) ச (ெண்ட tS
_) சாம்ப (ியன tSa:mp

_) ச (ிட் tS
_) ச (ின் tS
_) ச (ிட்டு tS
_) ச (ிட்டாட்ட tS
_) ச (ிட்டி tS
_) ச (ிட்ல tS
_) ச (ேரி tS
_) ச (ெஸ் tS

_) ச (ப்பாத்தி tSV
_) ச (ெட்டியார tS
@@ -160,14 +214,21 @@
_) ச (ித்ரா tS
_) ச (ெல்லம tS
_) ச (துர் tSV
ச (ந்திர tSV
வி) ச (ித்திர tS
சு) சித (்ரா tSit
_) ச (ிட்டாக tS

_) சிரு (ஷ்டி sri
சீ (னிவாச sri:
ச (ாந்தி s.
ச (ண்மு s.V
சங்க (ர s.VNkV
ச (ண்பக s.V
ச (ெண்பக s.
சு (வாரஸ்ய s
சு (வாமி s
சி (ரம s


.group ஜ
@@ -193,6 +254,17 @@
ிங்) ட (ன் t.V // -ington
_) ட (ாக்க t. // talkies
_) டிராக்ட (ர t.ira:gt.V
_) ட (யர t.V
_) ட (ைம்_ t.
டெலிப (ோன t.elif
_) ட (ம்ப்ளர t.V
_) ட (ிக்க t.
_) ட (ிராம t.
_) ட (வுன t.V
_) டென்டுல்க (ர t.ent.UlkV

_) டிரேயின (ை t.re:jn


.group ண
ண n.V
@@ -205,13 +277,15 @@
_) த tV
_) த (B t
_) த (T dV // if word has $alt attribute in ta_list
_) த (BT d // if word has $alt
_) த (BT+ d // if word has $alt
த்த ttV
த்த (B tt
க்) த tV
க்) த (B t
ஸ்) த tV
ஸ்) த (B t
ப்) த tV
ப்) த (B t

// exceptions, த as [d]
_) த (ர்ம dV
@@ -220,8 +294,10 @@
_) த (ெய்வ d
_) த (ுஷ் d
_) த (க்ஷிணா dV
_) த (ண்ட dV
_) த (ண்டவாள tV
_) த (ண்டன dV
_) த (ண்டம dV
_) த (ண்டத் dV
_) த (ண்டக் dV
_) த (ருமி dV
_) த (ர்பை dV
_) த (ாவா d
@@ -243,6 +319,7 @@
_) த (ிரவிய d
_) த (ூப d
_) த (ீப d
_) த (ீப்ப t
_) த (ைரிய d
_) த (ிடீர d
_) த (ிடப d
@@ -251,9 +328,11 @@
_) த (ிரவ d
_) த (ிடீ d
_) த (ிவச d
_) த (ியான d
_) தி (யான dj
_) த (ானிய d
_) த (ுக்க d
_) த (ுக்கிரி t
_) த (ுக்கடா t
_) த (ிகில d
_) த (ூம d
_) த (ாவணி d
@@ -275,6 +354,7 @@
_) த (டியர dV
_) த (ிக்கு d
_) த (ிக்கு_வாய t
_) த (ிக்கு_முக்க t
_) த (ிக்கில d
_) த (னபால dV
_) த (னசேகரன dV
@@ -292,7 +372,9 @@
_) த (ட்சிண dV
_) த (ன்ராஜ dV
_) த (ாராபுர d
_) த (டி_மாட dV
_) த (டிJ_மாட dV
_) த (டிJ_புத்தக dV
_) த (டிJ_பயல dV
_) த (ேவன d
_) த (ேவி d
_) த (ேவர்க d
@@ -314,8 +396,36 @@
_) த (ேவேந் d
_) த (ரிசி dV
_) த (ுரை d
_) த (ேவ d
_) த (ூசி d
_) த (ம்பதி dV
_) த (ிவான d
_) த (ினேஷ d
_) த (ாராள d
_) து (வேச d // dv
_) து (வேஷ d // dv
_) த (ருமன dV
_) த (ருமர dV
_) த (ண்டபாணி dV
_) த (ண்டாயுதபாணி dV
_) த (ண்டித் dV
_) த (ரிசனங் dV
_) த (ேவகி d
_) த (கி dV
_) த (ாயாதி d
_) த (ுட்ட d
_) த (ொம் d
_) த (டபுடல dV
_) த (டால dV
_) த (ம்பிடி dV
_) த (ிக்கை d
_) த (ிக்கே d
_) த (ேவாமிருத d
_) த (ுச்சம d
_) த (ொபுக் d
_) த (ினந் d
_) த (யவ dV
_) த (ிவாகர d


யு) த்த ddV
யு) த்த(B dd
@@ -323,6 +433,7 @@
பு) த்த (ியி dd
பு) த்த (ர ddV
பு) த்த (ன ddV
சமு) த்த (ிர dd

_சாந்) த (ி t
_சும) த (ி t
@@ -339,6 +450,9 @@
பிரபாவ) த (ி t
_கோம) த (ி t
_பிர) த (ீ t
பவி) த (்ரா t
நி) த (்ய t
சி) த (்ரா t

_) திரு (ஷ்டி dri
_) திரு (திரா dri
@@ -364,14 +478,13 @@ _கோம) த (ி t
ப (B b
_) ப pV
_) ப (B p
_) ப (T bV // if word has $alt attribute in ta_list
_) ப (BT b // if word has $alt
_) ப (T+ bV // if word has $alt attribute in ta_list
_) ப (BT+ b // if word has $alt
ப்ப ppV
ப்ப (B pp
ட்) ப pV
ட்) ப (B p
ற்) ப pV
ற்) ப (B p
L02) ப pV
L02) ப (B p
குஷ்) ப (ு b
று) ப _pV
று) ப(B _p

@@ -383,22 +496,21 @@ _கோம) த (ி t
த) ப (B b

@) பத (ி pVt
ன்) பத (ி bVd
ப (ுர p
ப (ால p
ப (ாள p
ம்) ப (ா b
ப (ூர p


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

_) ப (ாலாபிஷேக p
_) ப (ாலு b
_) ப (ாலும்_ p
_) ப (ானு b
_) ப (ீம b
_) ப (காசுர bV
@@ -414,7 +526,6 @@ _கோம) த (ி t
_) பக் (த bVk
_) ப (லம bV
_) ப (லவான bV
_) ப (ிராமண b
_) ப (ிரம்ம b
_) ப (ம்பர bV
_) ப (லூன bV
@@ -493,7 +604,50 @@ _கோம) த (ி t
_) ப (லிய bV
_) ப (ோதித் b
_) ப (ோதன b

_) ப (ூட்ஸ b
_) ப (ுத்திய b
_) ப (ுத்திக் b
_) ப (ுத்திசாலி b
_) ப (ேஜார b
_) ப (ேதி b
_) ப (த்திரமா bV
_) ப (ேலன்ஸ b
_) ப (ந்தோபஸ்த bV
_) ப (ெல் b
_) ப (ாதகம b
_) ப (ீராமணர b
_) ப (ிரித்தானி b
_) ப (ாதிப்ப b
_) ப (ாதிக்க b
_) ப (லகீன bV
_) ப (லஹீன bV
_) ப (ட்சண bV
_) ப (ீடி b
_) ப (ீடிகை p
_) ப (ீடித்த p
_) ப (ெட்ரூம b
_) ப (ாத்ரூம b
_) ப (ாபுவ b
_) ப (யபக்தி bV
_) ப (ாவனை b
_) ப (ேஷ b
_) ப (ாத்யதை b
_) ப (ில்டிங் b
_) ப (ால்ய b
_) ப (ாவனா b
_) ப (லங் bV
_) ப (ட்டரி bV
_) ப (ட்டரு bV
_) ப (ட்டன bV
_) ப (லப்படு bV
_) ப (ாரத்த b
_) ப (ந்துக்கள bV
_) ப (ந்துவ bV
_) பலாத்க (ார bVla:dk
_) ப (லராம bV
_) ப (ங்கார bV
_) ப (லசாலி bV
_) ப (ூதாகார b

கோ) ப (ி p
முரன்) ப (ாட p
@@ -501,6 +655,27 @@ _கோம) த (ி t
முன்) ப (கல pV
நன்) ப (கல pV
பின்) ப (கல pV
கல்) ப (னா pV
ப (ாதை p
ப (டி pV
ம்) ப (ுரா b
இன்ஸ்) ப (ெக்டர p
எதிர்) ப (ார p
ப (ோது p
ப (ோதிலும் p
ப (ோதும் p
எழும்) ப (ூர b
நாலா) ப (ுற p
ப (ோதும்_+ p
ப (ோதே_+ p
ப (ோல்_ p

// If ப+ appearing in the middle of a word is followed by ட+
// and not preceded by ம், then ப should sound as 'pa'.
ப (ட pV
ப (Bட p
ம்) ப (ட bV
ம்) ப (Bட b

_) பி (ரம்மன b
_) பி (ராமணன b
@@ -539,7 +714,32 @@ _கோம) த (ி t
_) பி (ரதேச p
_) பி (ரசித்தி p
_) பி (ரம்ம b

_) பி (ரமிப்ப b
_) பீ (ராமண b
_) பி (ரித்தானி b
_) பி (ரதர்_ b
_) பி (ராப் p
_) பி (ரத p
_) பி (ரவேசி p
_) பி (ரசவ p
_) பி (ரசங் p
_) பி (ரளய p
_) பி (ராமண b
_) பி (ரார்தி p
_) பி (ரோகிதர p
_) பி (ரஸ்தா p
_) பி (ரஜ p
_) பி (ரமை b
_) பி (ரமுகர p
_) பி (ரயோசன p
_) பி (ரவாக p
_) பி (ரமித் b
_) பிரச (்னை prVtS
_) பி (ரியர p
_) பி (ரவேச p
_) பி (ரயோக p
_) பி (ரக்ஞை p
_) பி (ரயத்தன p

// musical notes
சா) ப (ா p
@@ -574,8 +774,21 @@ _கோம) த (ி t
_த) ப (ால b
_க) ப (ால b
_கா) ப (ந்து bV


சு) ப்ப bbV
சு) ப்ப(B bb


_) ப (ோனை f
_) ப (ோட்டோ f
_) ப (ைல்கள f
_) ப (ோனிலும் f
_சோ) ப (ா f // sofa
_ஆ) ப (ீஸ f // office
_ஆ) ப (ீச f // office
_ஆ) ப (ிஸ f // office
_ஆ) ப (ிச f // office
கிராம) ப (ோன f // gramaphone
_கா) ப (ியை f

.group ம
ம mV
@@ -617,6 +830,7 @@ _கோம) த (ி t
.group வ
வ vV
வ (B v
_) வி (யாபார v


.group ஶ
@@ -660,6 +874,9 @@ _கோம) த (ி t

இ i
_) இ (ரா // silent before 'raa'
_) இ (ராக i
_) இ (ரான i
_) இ (லட்சிய // silent

ஈ i:


+ 35
- 19
phsource/compile_report View File

@@ -1,4 +1,4 @@
58 phoneme tables
59 phoneme tables
new total
base 99 99
consonants 9 107
@@ -15,12 +15,13 @@ consonants 9 107
de 32 126
eo 13 111
jbo 2 111
nci 3 120
fi 40 130
fr 56 138
fr 55 138
fr_ca 11 138
hi 58 145
ta 20 148
hu 23 115
hu 24 116
lv 29 122
nl 24 119
pl 20 113
@@ -45,7 +46,7 @@ consonants 9 107
ru 39 130
vi 41 136
zhy 41 133
zh 62 150
zh 64 150
sw 12 108
tr 18 123
ku 18 124
@@ -81,6 +82,7 @@ d/d [d] base
[d] base2
[d] fi
[d] fr
[d] hu
[d] pl
[d;] pl
[d] hr
@@ -91,6 +93,7 @@ d/d_ [d] base
[d] fi
[d] fr
[d.] hi
[d] hu
[d] pl
[d;] pl
[d] hr
@@ -103,6 +106,7 @@ d/dr [*] base
[d] fr
[d.] hi
[dh.] hi
[d] hu
[d] pl
[d;] pl
[d] hr
@@ -122,6 +126,7 @@ d/xd [d] base
[d.] hi
[dh] hi
[dh.] hi
[d] hu
[d] pl
[d] hr
[d] sr
@@ -238,23 +243,32 @@ j2/j2o [;] base
j2/j2u [;] base
j2/xj2 [;] base
j/_j [j] base
[j] zh
j/j_ [j] base
[j] de
[j] zh
j/j@ [j] base
[j] de
[j] zh
j/ja [j] base
[j] de
[j] zh
j/je [j] base
[j] de
[j] zh
j/ji [j] base
[j] de
[j] zh
j/jo [j] base
[j] de
[j] zh
j/_j_short [j] de
j/ju [j] base
[j] de
[j] zh
j/xj [j] base
[j] de
[j] zh
klatt/b [b] base
klatt/bh [B] base
klatt/dz_pzd [J] base
@@ -299,6 +313,7 @@ l/_l [l] base
[l] fr
[l/] fr
[l] hu
[l] zh
l/l_ [l/] base
[l/3] base
[l/] fr
@@ -306,7 +321,7 @@ l/l_@ [l/3] base
[W] fr
[Y] fr
[l/] fr
l/l@ [] base
l/l@ [] base
[L] base
[W] fr
[Y] fr
@@ -333,14 +348,14 @@ l/L2_oL [l/2] base
l/L2_uL [l/2] base
l/l_3 [l/] de
l/l_4 [ll] sq
l/la [] base
l/la [] base
[L] base
[a] fr
[l] fr
l/l_a [l/3] base
[l/] fr
[wA] fr
l/le [] base
l/le [] base
[L] base
[l] fr
l/l_e [l/3] base
@@ -349,22 +364,23 @@ l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [] base
l/li [] base
[L] base
[l] fr
[l] zh
l/l_i [l/3] base
[l/] fr
[i] sq
l/l_long [l] base
[l] fr
l/lo [] base
l/lo [] base
[L] base
[l] fr
l/l_o [l/3] base
[l/] fr
[o2] fr
l^/l_rfx [l.] base
l/lu [] base
l/lu [] base
[L] base
[l] fr
[w^i] fr
@@ -495,12 +511,12 @@ r3/r_trill.wav [R2] base
[r*] sr
[x] pt
r3/r_uvl [r"] base
[r] fr
[r/2] fr
r3/r_uvl.wav [r"] base
r3/rx [*] base
[r/] base
[r/] af
[r] fr
[r/2] fr
[R] fr_ca
[x] pt_pt
[*;] ro
@@ -1407,6 +1423,7 @@ vowel/e_mid2 [E] af
[E2] de
[E:] de
[e] jbo
[e] nci
[e] fi
[E] nl
[e] sk
@@ -1486,7 +1503,8 @@ vowel/i_en [i:] en
vowel/i_fnt [i:] en_wi
[i:] hi
[i] pa
vowel/ii [I] en_n
vowel/ii [I] en
[I] en_n
[I2] en_n
[I] en_rp
[I2] en_rp
@@ -1855,24 +1873,21 @@ vwl_fr/r@ [r] fr
vwl_fr/@R [x] pt_pt
vwl_fr/_r2 [r] fr
vwl_fr/@R2 [R] fr_ca
vwl_fr/ra [r] fr
vwl_fr/ra [a] fr
vwl_fr/r_a [r/2] fr
vwl_fr/r_a~ [A~] fr
vwl_fr/rA~ [A~] fr
vwl_fr/re [r] fr
vwl_fr/r_e [r/2] fr
vwl_fr/ri [i] fr
[r] fr
vwl_fr/ri [r] fr
vwl_fr/r_i [r/2] fr
vwl_fr/ro [r] fr
vwl_fr/r_o [o] fr
[o2] fr
[r/2] fr
vwl_fr/ru [r] fr
[u] fr
vwl_fr/r_u [r/2] fr
vwl_fr/ry [y] fr
[w^i] fr
vwl_fr/ry [w^i] fr
vwl_fr/r_y [y] fr
vwl_fr/tr [r] fr
vwl_fr/w_a [wA] fr
@@ -1984,6 +1999,7 @@ x/d_ [d] base
x/d_dnt [d[] base
[d] base2
[d] fi
[d] hu
[d] pl
x/d_pzd [d;] pl
x/dzh [J] base

BIN
phsource/d/xd View File


BIN
phsource/d/xdz View File


BIN
phsource/m/m_ View File


+ 2
- 2
phsource/mbrola/id1 View File

@@ -17,12 +17,13 @@ volume 32
0 l- NULL 0 l
0 w/ NULL 0 w
0 j/ NULL 0 j
0 a/ NULL 0 V
2 ; i 0 NULL
0 ; NULL 0 NULL
0 - NULL 0 NULL
0 g- NULL 0 NULL
0 @- NULL 0 NULL
0 * NULL 0 r
0 * NULL 0 NULL
0 R2 NULL 0 r
0 R NULL 0 r

@@ -40,4 +41,3 @@ volume 32
0 R NULL 0 r
0 x NULL 0 h



BIN
phsource/n^/n^@ View File


BIN
phsource/n^/n^a View File


BIN
phsource/n^/n^e View File


BIN
phsource/n^/n^i View File


BIN
phsource/n^/n^o View File


BIN
phsource/n^/n^u View File


+ 3
- 0
phsource/ph_english View File

@@ -164,6 +164,9 @@ phoneme I
vowel starttype #i endtype #i
length 130
IfNextVowelAppend(;)
IF nextPhW(isVel) THEN
FMT(vowel/ii)
ENDIF
FMT(vowel/ii_2)
endphoneme


+ 15
- 31
phsource/ph_french View File

@@ -1,7 +1,7 @@
//====================================================
// French
//====================================================
// Updated 2009-10-13 Michel Such <[email protected]>
// Updated 2010-02-09 Michel Such <[email protected]>

phoneme #l virtual
// Used for l and l/
@@ -31,7 +31,7 @@ phoneme r

NextVowelStarts
VowelStart(vwl_fr/r@)
VowelStart(vwl_fr/ra)
VowelStart(NULL)
VowelStart(vwl_fr/re)
VowelStart(vwl_fr/ri)
VowelStart(vwl_fr/ro)
@@ -43,23 +43,17 @@ phoneme r
ELIF prevPhW(p) OR prevPhW(k) THEN
FMT(vwl_fr/tr)
ELIF prevPhW(t) THEN
FMT(vwl_fr/tr) addWav(r3/r_uvl,30)
FMT(vwl_fr/tr) addWav(r3/rx,30)
ENDIF

IF thisPh(isWordStart) THEN
IF prevPh(isVowel) OR prevPh(isPause) OR prevPh(#l) OR prevPh(r/2) THEN
FMT(vwl_fr/_r)
ENDIF
FMT(vwl_fr/_r2) addWav(r3/r_uvl, 25)
FMT(vwl_fr/_r2) addWav(r3/rx, 15)
ENDIF

FMT(vwl_fr/r) addWav(r3/r_uvl,25)
endphoneme


phoneme R // First letter of a word
import_phoneme fr/r
lengthmod 0
FMT(vwl_fr/r) addWav(r3/rx,25)
endphoneme


@@ -94,7 +88,7 @@ phoneme r/2 // variant of [r] when not preceding a vowel
EndSwitch

IF prevPh(isVowel) THEN
FMT(vwl_fr/r_) addWav(r3/r_uvl, 30)
FMT(vwl_fr/r_) addWav(r3/rx, 30)
ELIF prevPh(m) OR prevPh(n) THEN
FMT(r3/r_n)
ENDIF
@@ -193,6 +187,9 @@ phoneme a
VowelStart(l/la, -15)
ENDIF

IF prevPh(#r) THEN
VowelStart(vwl_fr/ra)
ENDIF
FMT(vowel/a_6)
endphoneme

@@ -231,10 +228,6 @@ phoneme i

IfNextVowelAppend(;)

IF prevPh(#r) THEN
VowelStart(vwl_fr/ri, -30)
ENDIF

FMT(vowel/i_2)
endphoneme

@@ -318,11 +311,7 @@ phoneme u
length 170

IF nextPh(i) THEN
Length 50
ENDIF

IF prevPh(R) THEN
VowelStart(vwl_fr/ru, -10)
Length 50
ENDIF

FMT(vowel/u_bck2)
@@ -340,10 +329,6 @@ phoneme y
vowel starttype #u endtype #u
length 170

IF prevPh(#r) THEN
VowelStart(vwl_fr/ry)
ENDIF

IF nextPh(l/) THEN
VowelEnding(l/l_y, -30)
ENDIF
@@ -425,13 +410,12 @@ endphoneme
phoneme A~
vowel starttype #a endtype #a
length 190

IF prevPh(#r) THEN
VowelStart(vwl_fr/rA~)
ENDIF
IF nextPh(r/2) THEN
VowelEnding(vwl_fr/r_a~)
ENDIF
IF prevPh(#r) THEN
VowelStart(vwl_fr/rA~)
ENDIF

FMT(vnasal/aa_n4)
endphoneme
@@ -553,7 +537,7 @@ phoneme g
FMT(g/g_) addWav(x/g_)
ENDIF

FMT(g/g) addWav(x/g, 20)
FMT(g/g) addWav(x/g, 20)
endphoneme


@@ -721,7 +705,7 @@ phoneme z
vcd alv frc sibilant
voicingswitch s
lengthmod 6
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50

IF nextPh(isPause2) THEN
FMT(voc/z_) addWav(ufric/s_, 45)

+ 25
- 2
phsource/ph_hungarian View File

@@ -104,6 +104,12 @@ phoneme ts
endphoneme


phoneme dz
import_phoneme consonants/dz
voicingswitch ts
endphoneme


phoneme t // dental variant of /t/
vls dnt stop
lengthmod 2
@@ -117,12 +123,29 @@ phoneme t // dental variant of /t/
endphoneme


phoneme d // dental variant of /d/
import_phoneme base/d[
phoneme d
vcd dnt stop
voicingswitch t
lengthmod 5
Vowelin f1=2 f2=1500 -300 300 f3=-150 80
Vowelout f1=2 f2=1500 -300 300 f3=-150 80

IF PreVoicing THEN
FMT(d/xd)
ENDIF

IF nextPh(isPause2) THEN
FMT(d/d_) addWav(x/d_dnt)
ELIF nextPh(r) THEN
FMT(d/dr) addWav(x/d_dnt, 110)
ENDIF

FMT(d/d) addWav(x/d_dnt, 110)
endphoneme




phoneme c
import_phoneme consonants/c2
voicingswitch J

+ 1
- 1
phsource/ph_romanian View File

@@ -1,6 +1,6 @@

//====================================================
// Romanian - based on Italian
// Romanian
//====================================================

// Vowels

+ 8
- 2
phsource/ph_tamil View File

@@ -71,7 +71,10 @@ endphoneme
phoneme u
vowel starttype #u endtype #u
length 110
ChangeIfNotStressed(U)
IF prevPhW(isVel) THEN
ELSE
ChangeIfNotStressed(U)
ENDIF
FMT(vowel/u_6)
endphoneme

@@ -84,7 +87,10 @@ endphoneme
phoneme u:
vowel starttype #u endtype #u
length 260
ChangeIfNotStressed(U:)
IF prevPhW(isVel) THEN
ELSE
ChangeIfNotStressed(U:)
ENDIF
FMT(vowel/u_6)
endphoneme


+ 40
- 1
phsource/ph_zh View File

@@ -1,4 +1,4 @@
//based on "phonemes"
//====================================================
// Tone Numbers
//====================================================
@@ -101,6 +101,45 @@ phoneme N
endphoneme


phoneme l
liquid
lengthmod 2

CALL vowelstart_l

IF nextPhW(#i) THEN
VowelStart(l/li)
ENDIF
FMT(l/_l)
endphoneme


phoneme j
liquid palatal
lengthmod 1

IF nextPh(isVowel) THEN
NextVowelStarts
VowelStart(j/j@)
VowelStart(j/ja)
VowelStart(j/je)
VowelStart(j/ji)
VowelStart(j/jo)
VowelStart(j/ju)
EndSwitch

VowelEnding(j/xj, -30)

FMT(j/_j)
ELSE
// no vowel follows
Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme




phoneme p
vls blb stop

+ 12
- 4
phsource/phonemes View File

@@ -567,7 +567,7 @@ phoneme m
VowelStart(m/mu)
EndSwitch

IF thisPh(isNotVowel) AND nextPhW(isLiquid) THEN
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
FMT(m/mj)
ELIF prevPh(isPause) THEN
FMT(m/_m)
@@ -596,7 +596,7 @@ phoneme n
VowelStart(n/nu)
EndSwitch

IF thisPh(isNotVowel) AND nextPhW(isLiquid) THEN
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
FMT(n/nj)
ELIF prevPh(isPause) OR prevPh(n) THEN
FMT(n/_n)
@@ -626,7 +626,7 @@ phoneme n.
VowelStart(n/nu)
EndSwitch

IF thisPh(isNotVowel) AND nextPhW(isLiquid) THEN
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
FMT(n/nj)
ELIF prevPh(isPause) OR prevPh(n.) THEN
FMT(n/_nr)
@@ -658,6 +658,11 @@ phoneme n^
IF prevPh(isPause) THEN
FMT(n^/_n^)
ELIF nextPh(isNotVowel) THEN
IF nextPhW(n^) THEN
Length 75
ELIF prevPhW(n^) THEN
Length 100
ENDIF
FMT(n^/n^_)
ENDIF
endphoneme
@@ -686,7 +691,7 @@ phoneme N
VowelEnding(nn/inn, -40)
ENDIF

IF thisPh(isNotVowel) AND nextPhW(isLiquid) THEN
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
FMT(nn/nnj)
ELIF prevPh(isPause) THEN
FMT(nn/_nn)
@@ -1521,6 +1526,9 @@ include ph_esperanto
phonemetable jbo eo
include ph_lojban

phonemetable nci base2
include ph_nahuatl

phonemetable fi base
include ph_finnish


BIN
phsource/vdiph2/eo View File


BIN
phsource/vwl_fr/@R3 View File


BIN
phsource/vwl_fr/@R4 View File


BIN
phsource/vwl_fr/@R5 View File


BIN
phsource/vwl_fr/_r View File


BIN
phsource/vwl_fr/_r2 View File


BIN
phsource/vwl_fr/r@ View File


BIN
phsource/vwl_fr/ra View File


BIN
phsource/vwl_fr/re View File


BIN
phsource/vwl_fr/ri View File


BIN
phsource/vwl_fr/ro View File


BIN
phsource/vwl_fr/ru View File


BIN
phsource/vwl_fr/xr View File


+ 1
- 1
platforms/big_endian/README View File

@@ -14,7 +14,7 @@ The 'phondata-manifest' file is produced by espeakedit when it compiles
the phoneme data. If it is not present here, find it in the espeak-data directory.

NOTE:
The format of espeak-data/phondata changed in eSpeak version 1.41. The utility
The format of espeak-data/phondata changed in eSpeak version 1.43. The utility
has been modified for this. [jonsd]

---

+ 45
- 42
platforms/big_endian/espeak-phoneme-data.c View File

@@ -1,3 +1,12 @@






// 13.02.10 JSD: Changed for eSpeak version 1.43


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -33,26 +42,21 @@

#define N_PHONEME_TAB_NAME 32

// This is a new format for eSpeak 1.43
typedef struct {
unsigned int mnemonic;
unsigned int phflags;

unsigned short std_length;
unsigned short spect;
unsigned short before;
unsigned short after;

unsigned char code;
unsigned char type;
unsigned char start_type;
unsigned char end_type;

unsigned char length_mod;
unsigned char reduce_to;
unsigned char alternative_ph;
unsigned char link_out;
unsigned int mnemonic; // 1st char is in the l.s.byte
unsigned int phflags; // bits 16-19 place of articulation
unsigned short program;
unsigned char code; // the phoneme number
unsigned char type; // phVOWEL, phPAUSE, phSTOP etc
unsigned char start_type;
unsigned char end_type;
unsigned char std_length; // for vowels, in mS/2; for phSTRESS, the stress/tone type
unsigned char length_mod; // a length_mod group number, used to access length_mod_tab
} PHONEME_TAB;


// This is a new format for eSpeak 1.41
typedef struct { // 44 bytes
short frflags;
@@ -102,15 +106,13 @@ void usage (const char *program_name);



int
main (int argc, char *argv[])
{
int main (int argc, char *argv[])
{//==============================
const char *indir = "/usr/share/espeak-data";
const char *outdir = ".";
const char *manifest = "phondata-manifest";
char *f1, *f2;


if (argc > 4)
usage (argv[0]);

@@ -175,12 +177,12 @@ main (int argc, char *argv[])
printf ("Done.\n");

return 0;
}
} // end of main

void
swap_phondata (const char *infile, const char *outfile,
void swap_phondata (const char *infile, const char *outfile,
const char *manifest)
{
{//==========================================================
FILE *in, *mfest, *out;
char line[1024];
unsigned char buf_4[4];
@@ -282,12 +284,13 @@ swap_phondata (const char *infile, const char *outfile,
fclose (in);
fclose (out);
fclose (mfest);
}
} // end of swap_phondata

void
swap_phonindex (const char *infile, const char *outfile)
{
void swap_phonindex (const char *infile, const char *outfile)
{//==========================================================
FILE *in, *out;
char buf_4[4];
unsigned int val;

in = fopen (infile, "rb");
@@ -302,24 +305,27 @@ swap_phonindex (const char *infile, const char *outfile)
exit (1);
}

fread (buf_4, 4, 1, in); // skip first 4 bytes
fwrite(buf_4, 4, 1, out);

while (! feof (in)) {
size_t n;

n = fread (&val, 4, 1, in);
n = fread (&val, 2, 1, in);
if (n != 1)
break;

val = SWAP_UINT (val);
fwrite (&val, 4, 1, out);
val = SWAP_USHORT (val);
fwrite (&val, 2, 1, out);
}

fclose (in);
fclose (out);
}
} // end of swap_phonindex

void
swap_phontab (const char *infile, const char *outfile)
{
void swap_phontab (const char *infile, const char *outfile)
{//========================================================
FILE *in, *out;
char buf_4[4];
int i, n_phoneme_tables;
@@ -359,11 +365,7 @@ swap_phontab (const char *infile, const char *outfile)

table.mnemonic = SWAP_UINT (table.mnemonic);
table.phflags = SWAP_UINT (table.phflags);

table.std_length = SWAP_USHORT (table.std_length);
table.spect = SWAP_USHORT (table.spect);
table.before = SWAP_USHORT (table.before);
table.after = SWAP_USHORT (table.after);
table.program = SWAP_USHORT (table.program);

fwrite (&table, sizeof (PHONEME_TAB), 1, out);
}
@@ -371,7 +373,8 @@ swap_phontab (const char *infile, const char *outfile)

fclose (in);
fclose (out);
}
} // end of swap_phontab


void
usage (const char *program_name)

+ 9
- 3
src/compiledata.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2009 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -102,6 +102,10 @@ static keywtab_t k_conditions[] = {
{NULL, 0, 0}
};


// place of articulation
#define i_isVel 0x28

static keywtab_t k_properties[] = {
{"isPause", 0, phPAUSE},
{"isVowel", 0, phVOWEL},
@@ -112,6 +116,8 @@ static keywtab_t k_properties[] = {
{"isPalatal", 0, i_isPalatal},
{"isRhotic", 0, i_isRhotic},

{"isVel", 0, i_isVel},

{"isDiminished", 0, i_isDiminished},
{"isUnstressed", 0, i_isUnstressed},
{"isNotStressed",0, i_isNotStressed},
@@ -269,7 +275,7 @@ static keywtab_t keywords[] = {
{"vcd", tPHONEME_FLAG, phVOICED},
{"vls", tPHONEME_FLAG, phFORTIS},

// place of articulation
// place of articulation, set bits 16-19 of phflags
{"blb", tPLACE, 1},
{"lbd", tPLACE, 2},
{"dnt", tPLACE, 3},
@@ -347,7 +353,7 @@ static void DecompilePhoneme(FILE *f_out, PHONEME_TAB *ph, int compile_phoneme)
int any;
const char *name;

static char *INV = "Invalid";
static const char *INV = "Invalid";

static const char *instn_category_string[16] = {
"", "", "IF", "IF OR",

+ 2
- 1
src/compiledict.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -91,6 +91,7 @@ MNEM_TAB mnem_flags[] = {
{"$alt", 20}, // use alternative pronunciation
{"$alt2", 21},
{"$combine", 22}, // Combine with the next word
{"$alt3", 23},

{"$dot", 24}, // ignore '.' after this word (abbreviation)
{"$hasdot", 25}, // use this pronunciation if there is a dot after the word

+ 28
- 20
src/dictionary.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -3499,38 +3499,46 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
if(end_type & SUFX_E)
{
// add 'e' to end of stem
if(IsLetter(tr, word_end[-1],LETTERGP_VOWEL2) && IsLetter(tr, word_end[0],1))
if(tr->translator_name == L('e','n'))
{
// vowel(incl.'y') + hard.consonant

for(i=0; (p = add_e_exceptions[i]) != NULL; i++)
// add 'e' to end of stem
if(IsLetter(tr, word_end[-1],LETTERGP_VOWEL2) && IsLetter(tr, word_end[0],1))
{
len = strlen(p);
if(memcmp(p,&word_end[1-len],len)==0)
// vowel(incl.'y') + hard.consonant
for(i=0; (p = add_e_exceptions[i]) != NULL; i++)
{
break;
len = strlen(p);
if(memcmp(p,&word_end[1-len],len)==0)
{
break;
}
}
if(p == NULL)
end_flags |= FLAG_SUFX_E_ADDED; // no exception found
}
if(p == NULL)
end_flags |= FLAG_SUFX_E_ADDED; // no exception found
}
else
{
for(i=0; (p = add_e_additions[i]) != NULL; i++)
else
{
len = strlen(p);
if(memcmp(p,&word_end[1-len],len)==0)
for(i=0; (p = add_e_additions[i]) != NULL; i++)
{
end_flags |= FLAG_SUFX_E_ADDED;
break;
len = strlen(p);
if(memcmp(p,&word_end[1-len],len)==0)
{
end_flags |= FLAG_SUFX_E_ADDED;
break;
}
}
}
}
else
if(tr->langopts.suffix_add_e != 0)
{
end_flags |= FLAG_SUFX_E_ADDED;
}

if(end_flags & FLAG_SUFX_E_ADDED)
{
word_end[1] = 'e';
utf8_out(tr->langopts.suffix_add_e, &word_end[1]);
#ifdef LOG_TRANSLATE
if(option_phonemes == 2)
{

+ 109
- 25
src/numbers.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -68,6 +68,7 @@
static int n_digit_lookup;
static char *digit_lookup;
static int speak_missing_thousands;
static int number_control;


typedef struct {
@@ -762,16 +763,18 @@ static int CheckDotOrdinal(Translator *tr, char *word, WORD_TAB *wtab, int roman

int ordinal = 0;
int c2;
int nextflags;

if((tr->langopts.numbers & NUM_ORDINAL_DOT) && ((word[0] == '.') || (wtab[0].flags & FLAG_HAS_DOT)) && !(wtab[1].flags & FLAG_NOSPACE))
{
if(roman || !(wtab[1].flags & FLAG_FIRST_UPPER))
{
utf8_in(&c2, &word[2]);
if((word[1] != 0) && IsAlpha(c2))
if((word[1] != 0) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || IsAlpha(c2)))
{
// ordinal number is indicated by dot after the number
// but not if the next word starts with an upper-case letter
// (c2 == 0) is for cases such as, "2.,"
ordinal = 2;
if(word[0] == '.')
word[0] = ' ';
@@ -779,8 +782,19 @@ static int CheckDotOrdinal(Translator *tr, char *word, WORD_TAB *wtab, int roman
if((roman==0) && (tr->translator_name == L('h','u')))
{
// lang=hu don't treat dot as ordinal indicator if the next word is a month name ($alt). It may have a suffix.
if(TranslateWord(tr, &word[2], 0, NULL) & FLAG_ALT_TRANS)
nextflags = 0;
if(IsAlpha(c2))
{
nextflags = TranslateWord(tr, &word[2], 0, NULL);
}

if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))
ordinal = 0; // TEST 09.02.10

if(nextflags & FLAG_ALT_TRANS)
ordinal = 0;
if((tr->prev_dict_flags & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS)) && (nextflags & FLAG_ALT3_TRANS))
ordinal = 0x22;
}
}
}
@@ -941,6 +955,12 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
sprintf(string,"_%dM%do",value,thousandplex);
found_value = Lookup(tr, string, ph_thousands);
}
if(!found_value & (number_control & 1))
{
// look for the 'e' variant
sprintf(string,"_%dM%de",value,thousandplex);
found_value = Lookup(tr, string, ph_thousands);
}
if(!found_value)
{
// is there a different pronunciation if there are no hundreds,tens,or units ? (LANG=ta)
@@ -970,6 +990,12 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
sprintf(string,"_%s%do",M_Variant(value), thousandplex);
found = Lookup(tr, string, ph_thousands);
}
if(!found && (number_control & 1))
{
// look for the 'e' variant
sprintf(string,"_%s%de",M_Variant(value), thousandplex);
found = Lookup(tr, string, ph_thousands);
}
if(!found)
{
// is there a different pronunciation if there are no hundreds,tens,or units ?
@@ -1013,10 +1039,11 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
{//========================================================================
// Lookup a 2 digit number
// control bit 0: ordinal number
// control bit 1: tens and units (use special form of '1', LANG=de "eins")
// control bit 1: final tens and units (not number of thousands) (use special form of '1', LANG=de "eins")
// control bit 2: tens and units only, no higher digits
// control bit 3: use feminine form of '2' (for thousands
// control bit 4: speak zero tens
// control bit 5: variant of ordinal number (lang=hu)

int found;
int ix;
@@ -1025,6 +1052,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
int used_and=0;
int found_ordinal = 0;
int next_phtype;
int ord_type = 'o';
char string[12]; // for looking up entries in *_list
char ph_ordinal[20];
char ph_tens[50];
@@ -1040,6 +1068,11 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
ph_digits[0] = 0;
ph_and[0] = 0;

if(control & 0x20)
{
ord_type = 'q';
}

if((control & 2) && (n_digit_lookup == 2))
{
// pronunciation of the final 2 digits has already been found
@@ -1062,12 +1095,12 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
if(control & 4)
{
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits
sprintf(string,"_%d%cx",value,ord_type); // 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);
sprintf(string,"_%d%c",value,ord_type);
found = Lookup(tr, string, ph_digits);
}
found_ordinal = found;
@@ -1075,13 +1108,28 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
if(found == 0)
{
if((value == 1) && (control & 2))
if(control & 2)
{
// the final tens and units of a number
if(number_control & 1)
{
// look for 'e' variant
sprintf(string,"_%de",value);
found = Lookup(tr, string, ph_digits);
}
}
else
{
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins"
return(0);
// followed by hundreds or thousands etc
sprintf(string,"_%da",value);
found = Lookup(tr, string, ph_digits);
}

if(!found)
{
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}
}
@@ -1103,7 +1151,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
{
sprintf(string,"_%dXo", tens);
sprintf(string,"_%dX%c", tens, ord_type);
if(Lookup(tr, string, ph_tens) != 0)
{
found_ordinal = 1;
@@ -1146,13 +1194,29 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0))
{
// ordinal
sprintf(string,"_%do",units);
sprintf(string,"_%d%c",units,ord_type);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
found_ordinal = 1;
}
}
if(found == 0)
{
if((number_control & 1) && (control & 2))
{
// look for 'e' variant
sprintf(string,"_%de",units);
found = Lookup(tr, string, ph_digits);
}
else
if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0))
{
// followed by hundreds or thousands (or tens)
sprintf(string,"_%da",units);
found = Lookup(tr, string, ph_digits);
}
}
if(found == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
@@ -1221,6 +1285,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
// Translate a 3 digit number
// control bit 0, previous thousands
// bit 1, ordinal number
// bit 5 variant form of ordinal number
int found;
int hundreds;
int tensunits;
@@ -1237,7 +1302,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
char ph_hundred_and[12];
char ph_thousand_and[12];
ordinal = control & 2;
ordinal = control & 0x22;
hundreds = value / 100;
tensunits = value % 100;
buf1[0] = 0;
@@ -1281,9 +1346,9 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
}

if(tr->langopts.numbers2 & 0x200)
sprintf(ph_thousands,"%s%s%c",ph_10T,ph_digits,phonPAUSE_NOLINK); // say "thousands" before its number, not after
sprintf(ph_thousands,"%s%s",ph_10T,ph_digits); // say "thousands" before its number, not after
else
sprintf(ph_thousands,"%s%s%c",ph_digits,ph_10T,phonPAUSE_NOLINK);
sprintf(ph_thousands,"%s%s",ph_digits,ph_10T);

hundreds %= 10;
if(hundreds == 0)
@@ -1362,6 +1427,8 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
x = 3; // ordinal number
if((value < 100) && !(control & 1))
x |= 4; // tens and units only, no higher digits
if(ordinal & 0x20)
x |= 0x20; // variant form of ordinal number
}
else
{
@@ -1391,6 +1458,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
int n_digits;
int value;
int ix;
int digix;
unsigned char c;
int suppress_null = 0;
int decimal_point = 0;
@@ -1404,6 +1472,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
int max_decimal_count;
int decimal_mode;
int hyphen;
int suffix_ix;
char *p;
char string[20]; // for looking up entries in **_list
char buf1[100];
@@ -1420,6 +1489,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
n_digit_lookup = 0;
buf_digit_lookup[0] = 0;
digit_lookup = buf_digit_lookup;
number_control = 0;

for(ix=0; isdigit(word[ix]); ix++) ;
n_digits = ix;
@@ -1444,7 +1514,6 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
speak_missing_thousands = 0;
}


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

@@ -1478,9 +1547,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
*p = 0;

if(suffix[0] != 0)
if((suffix[0] != 0) && (!isdigit(suffix[0]))) // not _#9 (tab)
{
sprintf(string,"_0%s",suffix);
sprintf(string,"_#%s",suffix);
if(Lookup(tr, string, ph_ordinal2))
{
// this is an ordinal suffix
@@ -1526,20 +1595,26 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
if(word[n_digits] == tr->langopts.thousands_sep)
thousands_inc = 2;

suffix_ix = n_digits+2;
if(thousands_inc > 0)
{
// if the following "words" are three-digit groups, count them and add
// a "thousand"/"million" suffix to this one
digix = n_digits + thousands_inc;

ix = n_digits + thousands_inc;
while(isdigit(word[ix]) && isdigit(word[ix+1]) && isdigit(word[ix+2]))
while(((wtab[thousandplex+1].flags & FLAG_MULTIPLE_SPACES) == 0) &&
isdigit(word[digix]) && isdigit(word[digix+1]) && isdigit(word[digix+2]) && !isdigit(word[digix+3]) && !isdigit(word[digix-1]))
{
if((word[ix] != '0') || (word[ix+1] != '0') || (word[ix+2] != '0'))
if((word[digix] != '0') || (word[digix+1] != '0') || (word[digix+2] != '0'))
thousands_exact = 0;

thousandplex++;
if(word[ix+3] == tr->langopts.thousands_sep)
ix += (3 + thousands_inc);
digix += 3;
if((word[digix] == tr->langopts.thousands_sep) || ((tr->langopts.numbers & NUM_ALLOW_SPACE) && (word[digix] == ' ')))
{
suffix_ix = digix+2;
digix += thousands_inc;
}
else
break;
}
@@ -1550,6 +1625,15 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
suppress_null = 1;
}

if(tr->translator_name == L('h','u'))
{
// variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e'
if((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact==1) && ((word[suffix_ix] == 'a') || (word[suffix_ix] == 'e')))
{
number_control |= 1; // use _1e variant of number
}
}

if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
{
// this "word" ends with a decimal point
@@ -1713,7 +1797,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p);

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


+ 1
- 1
src/phoneme.h View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *

+ 26
- 10
src/readclause.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -1543,12 +1543,12 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix)
int letter;
char *p;

p = &outbuf[index+1];
p = &outbuf[index];

if((letter = LookupMnem(keynames, p)) != 0)
{
ix = utf8_out(letter, p);
outix = index + ix + 1;
outix = index + ix;
return(letter);
}
return(0);
@@ -1636,16 +1636,26 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if(tag_name[0] == '/')
{
tag_type = LookupMnem(ssmltags,&tag_name[1]) + SSML_CLOSE; // closing tag
// closing tag
if((tag_type = LookupMnem(ssmltags,&tag_name[1])) != 0)
{
outbuf[outix++] = ' ';
}
tag_type += SSML_CLOSE;
}
else
{
tag_type = LookupMnem(ssmltags,tag_name);
if((tag_type = LookupMnem(ssmltags,tag_name)) != 0)
{
// separate SSML tags from the previous word (but not unknown HMTL tags such as <b> <font> which can occur inside a word)
outbuf[outix++] = ' ';
}

if(self_closing && ignore_if_self_closing[tag_type])
return(0);
}


voice_change_flag = 0;
terminator = CLAUSE_NONE;
ssml_sp = &ssml_stack[n_ssml_stack-1];
@@ -2178,9 +2188,7 @@ f_input = f_in; // for GetC etc
}
xml_buf[n_xml_buf] = 0;
c2 = ' ';
buf[ix++] = ' ';
self_closing = 0;
if(xml_buf[n_xml_buf-1] == '/')
{
@@ -2211,6 +2219,7 @@ f_input = f_in; // for GetC etc
}
return(terminator);
}
c2 = GetC();
continue;
}
}
@@ -2510,6 +2519,13 @@ if(option_ssml) parag=1;

if(nl_count==0)
{
if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next))))
{
// lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number
c1 = CHAR_COMMA_BREAK;
is_end_clause = 0;
}

if(c1 == '.')
{
if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
@@ -2522,7 +2538,7 @@ if(option_ssml) parag=1;
}
else
{
if (iswlower(c_next))
if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal)
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
}
}
@@ -2565,7 +2581,7 @@ if(option_ssml) parag=1;
buf[ix] = ' ';
buf[ix+1] = 0;

if(!IsAlpha(c_next))
if(iswdigit(cprev) && !IsAlpha(c_next)) // ????
{
punct_data &= ~CLAUSE_DOT;
}

+ 2
- 2
src/speak_lib.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -174,7 +174,7 @@ static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_
}


int sync_espeak_terminated_msg( uint unique_identifier, void* user_data)
int sync_espeak_terminated_msg( uint32_t unique_identifier, void* user_data)
{//=====================================================================
ENTER("sync_espeak_terminated_msg");


+ 2
- 1
src/speak_lib.h View File

@@ -1,7 +1,7 @@
#ifndef SPEAK_LIB_H
#define SPEAK_LIB_H
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,6 +26,7 @@
/*************************************************************/

#include <stdio.h>
#include <stddef.h>

#define ESPEAK_API_REVISION 5
/*

+ 4
- 3
src/synthdata.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.42.21 19.Dec.09";
const char *version_string = "1.42.42 12.Feb.10";
const int version_phdata = 0x014220;

int option_device_number = -1;
@@ -942,13 +942,14 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_

case 9:
data = ((instn & 0xf) << 16) + prog[1];
prog++;
switch(instn2)
{
case 1:
// call a procedure or another phoneme
if(n_return < N_RETURN)
{
return_addr[n_return++] = prog+1;
return_addr[n_return++] = prog;
prog = &phoneme_index[data] - 1;
}
break;

+ 2
- 2
src/synthesize.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -1458,7 +1458,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
}
}

if((next->type==phVOWEL) || ((next->type==phLIQUID)) && (next->newword==0)) // ?? test 14.Aug.2007
if((next->type==phVOWEL) || ((next->type==phLIQUID) && (next->newword==0))) // ?? test 14.Aug.2007
{
StartSyllable();
}

+ 4
- 2
src/tr_languages.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -235,6 +235,7 @@ void SetIndicLetters(Translator *tr)
SetLetterBitsRange(tr,LETTERGP_Y,0x3e,0x4c); // + vowel signs

tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama
}

void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps)
@@ -361,6 +362,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = NUM_HUNDRED_AND | NUM_ROMAN | NUM_1900;
tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word
tr->langopts.suffix_add_e = 'e';
}
break;

@@ -793,7 +795,7 @@ SetLengthMods(tr,3); // all equal

case L('n','o'): // Norwegian
{
static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,210};
static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,230};

SetupTranslator(tr,stress_lengths_no,NULL);
tr->langopts.stress_rule = STRESSPOSN_1L;

+ 44
- 12
src/translate.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -1763,6 +1763,12 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
first_phoneme = 0;
}
}

if(word_flags & FLAG_COMMA_AFTER)
{
SetPlist2(&ph_list2[n_ph_list2++],phonPAUSE_CLAUSE);
}

// don't set new-word if there is a hyphen before it
if((word_flags & FLAG_HYPHEN) == 0)
{
@@ -2018,6 +2024,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
int prev_out=' ';
int prev_out2;
int prev_in2=0;
int prev_in_save=0;
int next_in;
int next_in_nbytes;
int char_inserted=0;
@@ -2166,14 +2173,15 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
prev_out = 'a';
}

if(prev_in2 != 0)
if(prev_in_save != 0)
{
prev_in = prev_in2;
prev_in2 = 0;
prev_in = prev_in_save;
prev_in_save = 0;
}
else
if(source_index > 0)
{
prev_in2 = prev_in;
utf8_in2(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1];
}

@@ -2199,13 +2207,13 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
if(prev_in != ' ')
{
c = ' ';
prev_in2 = c;
prev_in_save = c;
source_index--;
}
else
{
embedded_count += EmbeddedCommand(source_index);
prev_in2 = prev_in;
prev_in_save = prev_in;
// replace the embedded command by spaces
memset(&source[srcix],' ',source_index-srcix);
source_index = srcix;
@@ -2285,6 +2293,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
word_flags |= FLAG_FOCUS;
}

if(c == CHAR_COMMA_BREAK)
{
c = ' ';
word_flags |= FLAG_COMMA_AFTER;
}

c = TranslateChar(tr, &source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function
if(c == 8)
continue; // ignore this character
@@ -2311,7 +2325,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre

if(iswdigit(prev_out))
{
if(!iswdigit(c) && (c != '.') && (c != ','))
if(!iswdigit(c) && (c != '.') && (c != ',') && (c != ' '))
{
c = ' '; // terminate digit string with a space
space_inserted = 1;
@@ -2350,7 +2364,11 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
// start of word, insert space if not one there already
c = ' ';
space_inserted = 1;
next_word_flags |= FLAG_NOSPACE;

if(!IsBracket(prev_out)) // ?? perhaps only set FLAG_NOSPACE for . - / (hyphenated words, URLs, etc)
{
next_word_flags |= FLAG_NOSPACE;
}
}
else
{
@@ -2388,7 +2406,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{
c = ' '; // lower case followed by upper case, treat as new word
space_inserted = 1;
prev_in2 = c;
prev_in_save = c;
}
else
if((c != ' ') && iswupper(prev_in) && iswlower(next_in))
@@ -2400,7 +2418,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
// changing from upper to lower case, start new word at the last uppercase, if 3 or more letters
c = ' ';
space_inserted = 1;
prev_in2 = c;
prev_in_save = c;
next_word_flags |= FLAG_NOSPACE;
}
}
@@ -2563,9 +2581,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{
if(prev_out == ' ')
{
word_flags |= FLAG_MULTIPLE_SPACES;
continue; // multiple spaces
}

if((cc == 0x09) || (cc == 0x0a))
{
next_word_flags |= FLAG_MULTIPLE_SPACES; // tab or newline, not a simple space
}

if(space_inserted)
{
words[word_count].length = source_index - words[word_count].sourceix;
@@ -2653,6 +2677,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
if(word_count > 0)
{
words[word_count-1].flags |= FLAG_LAST_WORD;
// FLAG_NOSPACE check to avoid recognizing .mr -mr
if((terminator & CLAUSE_DOT) && !(words[word_count-1].flags & FLAG_NOSPACE))
words[word_count-1].flags |= FLAG_HAS_DOT;
}
@@ -2665,7 +2690,9 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
int c_temp;
char *pn;
char *pw;
char number_buf[80];
int nw;
char number_buf[60];
WORD_TAB num_wtab[15]; // copy of 'words', when splitting numbers into parts

// start speaking at a specified word position in the text?
count_words++;
@@ -2718,6 +2745,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
number_buf[0] = ' ';
pn = &number_buf[1];
nx = n_digits;
nw = 0;

while(pn < &number_buf[sizeof(number_buf)-3])
{
@@ -2727,6 +2755,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
*pn++ = c;
if((--nx > 0) && (tr->langopts.break_numbers & (1 << nx)))
{
memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers

if(tr->langopts.thousands_sep != ' ')
{
*pn++ = tr->langopts.thousands_sep;
@@ -2746,15 +2776,17 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
}
pw--;
memcpy(&num_wtab[nw], &words[ix], sizeof(WORD_TAB)*2); // the original number word, and the word after it

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

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, &num_wtab[nw++], words[ix].pre_pause,0 );
while(*pw++ != ' ');
words[ix].pre_pause = 0;
}

+ 6
- 1
src/translate.h View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -55,6 +55,7 @@
#define FLAG_ALT_TRANS 0x100000 // language specific
#define FLAG_ALT2_TRANS 0x200000 // language specific
#define FLAG_COMBINE 0x400000 // combine with the next word
#define FLAG_ALT3_TRANS 0x800000 // language specific

#define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation)
#define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot
@@ -103,6 +104,8 @@
#define FLAG_HYPHEN_AFTER 0x4000
#define FLAG_ORDINAL 0x8000 // passed to TranslateNumber() to indicate an ordinal number
#define FLAG_HAS_DOT 0x10000 // dot after this word
#define FLAG_COMMA_AFTER 0x20000 // comma after this word
#define FLAG_MULTIPLE_SPACES 0x40000 // word is preceded by multiple spaces, newline, or tab

#define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout
#define FLAG_NO_PREFIX 0x20000000
@@ -203,6 +206,7 @@
#define SAYAS_DIGITS1 0xc1

#define CHAR_EMPHASIS 0x0530 // this is an unused character code
#define CHAR_COMMA_BREAK 0x0557 // unused character code

// Rule:
// [4] [match] [1 pre] [2 post] [3 phonemes] 0
@@ -437,6 +441,7 @@ typedef struct {
const unsigned int *replace_chars; // characters to be substitutes
const char *ascii_language; // switch to this language for Latin characters
int max_lengthmod;
int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character
} LANGUAGE_OPTIONS;



+ 1
- 1
src/voices.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *

Loading…
Cancel
Save