Browse Source

[1.29.02] lang=af: updated af_rules and af_dict

Changes to voice selection code to accept  voice+variant  voice names in SSML tags.
Changes to voice change code to use function DoVoiceChange().
lang=pt: Don't reduce phoneme [&~] to the more open [&] in unstressed syllables.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@83 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
40d4adadbf

+ 12
- 7
dictsource/af_list View File

brittanje $2 brittanje $2
ceylon s@lOn ceylon s@lOn
china S'ina china S'ina
engeland 'EN@lant
jerusalem j@r'ysalEm jerusalem j@r'ysalEm
kanada kanad%a kanada kanad%a
kongo kONgu kongo kONgu
mesopotamië mEsuput'A:mi@ mesopotamië mEsuput'A:mi@
mosambiek musamb'ik mosambiek musamb'ik
thaba tA:ba
(thaba nchu) tab'A:||ntSu (thaba nchu) tab'A:||ntSu
europa Y@r'o@pa europa Y@r'o@pa
portugal $1 portugal $1
// People names // People names
Abiméleg abin'e@lEx2 Abiméleg abin'e@lEx2
abraham A:bram abraham A:bram
adrie A:dri
alida al'ida alida al'ida
allah %alA: allah %alA:
André 'andreI André 'andreI
benjamin bEndZ@m@n benjamin bEndZ@m@n
bester b'Est@r bester b'Est@r
botha bo@ta botha bo@ta
bothma bOtma
breytenbach breIt@nbax2 breytenbach breIt@nbax2
carl kA:r@L carl kA:r@L
charles _^_EN charles _^_EN
gerhard x2&rart gerhard x2&rart
grange x2rA:nsi grange x2rA:nsi
gustav gustaf gustav gustaf
havenga hA:f@Nx2a
haydn hAId@n haydn hAId@n
helena hil'e@na helena hil'e@na
hilde hild@ hilde hild@
ilse 'ilz@ ilse 'ilz@
isabel is@b&l
jacques ZA:k jacques ZA:k
james _^_EN james _^_EN
jane _^_EN jane _^_EN
jean ZA~n jean ZA~n
jesus ji:sWs
joey dZ@Ui joey dZ@Ui
john _^_EN john _^_EN
jordaan $2 jordaan $2
louis luI louis luI
louise luw'i:z louise luw'i:z
louw l'@U louw l'@U
mbeki mbE:ki
marie mA:ri marie mA:ri
marius mA:riWs marius mA:riWs
martha marta martha marta
exodus Eks'o@dWs exodus Eks'o@dWs


figuur f@x2yr figuur f@x2yr
filippense f@l@pEns@
finalis $3 finalis $3
finaliste $3 finaliste $3
frontaal $2 frontaal $2
ietwat itvat ietwat itvat
ignoreer ix2no@r'e@r ignoreer ix2no@r'e@r
inagneming @nax2ne@m@N inagneming @nax2ne@m@N
ingang Inx2aN
inkluis $2 inkluis $2
intens @nt'Ens intens @nt'Ens
intensiteit $4 intensiteit $4
madame mad'A:m madame mad'A:m
makabere m%ak'A:b@r@ makabere m%ak'A:b@r@
meegee me@x2e@ meegee me@x2e@
memoriam mEm'o@riam
merlot m&rl'o@ merlot m&rl'o@
militêre mIl@t'&:r@ militêre mIl@t'&:r@
minister m@nIst@r minister m@nIst@r
oorsese $2 oorsese $2
oorspronklike $2 oorspronklike $2


pandemonium pand@m'o@niWm
parke park@
parkie $1
patriotisme patri|ut'Ism@ patriotisme patri|ut'Ism@
penorent pEno@rEnt penorent pEno@rEnt
per pIr per pIr
samelewing sA:m@l,e@v@N samelewing sA:m@l,e@v@N
sedert se@d@rt sedert se@d@rt
sektore $2 sektore $2
singenot sInx2@nOt
skares skA:r@s skares skA:r@s
skepsele skEps@l@ skepsele skEps@l@
s'n s@n $u s'n s@n $u
spaghetti sp%agEt%i
sobere s'o@b@r@ sobere s'o@b@r@
sombere s'Omb@r@ sombere s'Omb@r@
sodra so@dr'A: sodra so@dr'A:
verantwoordelikheid f@rantv'o@rd@l@keIt verantwoordelikheid f@rantv'o@rd@l@keIt
verby f@rbeI verby f@rbeI
verdere f&rd@r@ verdere f&rd@r@
vere fe@r@
vererger f@r&rg@r vererger f@r&rg@r
ver f'&:r ver f'&:r
verg f&rx2 verg f&rx2
voorkeer $1 voorkeer $1
voorkom $2 voorkom $2
voormalige fo@rm'A:l@x2@ voormalige fo@rm'A:l@x2@
voorsien $2
//voorsien $2
voorwaar $2 voorwaar $2
vorendag $3 vorendag $3
vorige fo@r@x2@ vorige fo@r@x2@

+ 156
- 32
dictsource/af_rules View File

//maintainer: Willem van der Walt
//maintainer: Willem van der Walt
// email: [email protected] // email: [email protected]
// tel: +27 12 8413996 // tel: +27 12 8413996
// Meraka Institute, CSIR // Meraka Institute, CSIR
_) a (bba a // restore default stress: (ge)abba/abbamandjie, etc. _) a (bba a // restore default stress: (ge)abba/abbamandjie, etc.
abse (s %apsE // fix stress and e sound: abses/-se abse (s %apsE // fix stress and e sound: abses/-se
@) adig 'A:d@x2 // misdadiger/gewelddadigheid/kragdadigheid @) adig 'A:d@x2 // misdadiger/gewelddadigheid/kragdadigheid
C) adium A:diWm // compounds of stadium/radium
C) adiu (K A:diW // compounds of stadium/radium/radius
C) a (Cia_ A: // stadia and compounds/Nadia and similar C) a (Cia_ A: // stadia and compounds/Nadia and similar
admi (r %atm%i // move default stress: admiraal and compounds admi (r %atm%i // move default stress: admiraal and compounds


asem A:s@m // asemgehaal/asemhaling/asemteug/ontwaseming asem A:s@m // asemgehaal/asemhaling/asemteug/ontwaseming
_) as (ke %as // move default stress: askeet/askete/asketies/askese _) as (ke %as // move default stress: askeet/askete/asketies/askese
assist %as@st // assistent/e/assisteer assist %as@st // assistent/e/assisteer
assiste (_ %as'Ist@ // rassiste
atten (C at'En // attent/heid/onattent/attensies atten (C at'En // attent/heid/onattent/attensies
@) ator (K 'A:tOr // katalisator/diktatorskap and many similar @) ator (K 'A:tOr // katalisator/diktatorskap and many similar
augustus Ox2'WstWs augustus Ox2'WstWs
angl (A %A~Nx2l% // anglikaans/anglisisme/anglofiel angl (A %A~Nx2l% // anglikaans/anglisisme/anglofiel
angola A~Nx2'o@la //Angola, Angolabos etc. angola A~Nx2'o@la //Angola, Angolabos etc.
angol (e %A~Nx2%ul //Angolese etc. angol (e %A~Nx2%ul //Angolese etc.
C) anette (_ %anEt // Janette/Sanette
an (tjie aIN an (tjie aIN
_) ana ,ana // words starting with ana starts destressed _) ana ,ana // words starting with ana starts destressed
// The following are experimental nasalisation of ans // The following are experimental nasalisation of ans
badjie baIci badjie baIci


baba bA:ba baba bA:ba
baba (tjie bA:baI // fix 2nd a sound: babatjie/-s
baklei b@kl'eI // baklei/er
_) bak (o bak_ // fix a sound and stress: bakoor/bakore
ba (lans b%a // move default stress ba (lans b%a // move default stress
balan (seer b%al%an // move stress to -eer balan (seer b%al%an // move stress to -eer
ba (ldadig b%a // move default stress: baldadig and derivitives ba (ldadig b%a // move default stress: baldadig and derivitives
balsem bals@m // correct e sound in derivitives like balseming balsem bals@m // correct e sound in derivitives like balseming
bara (k bar'a bara (k bar'a
bar (bA b%ar // barbaar/barbare and derivitives/barbier and compounds bar (bA b%ar // barbaar/barbare and derivitives/barbier and compounds
baklei b@kl'eI // baklei/er
batte (ry b%at@ // move default stress: battery/-e and compounds: batterysuur...


bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie... bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie...
bidd b'Id // biddag/aanbidding bidd b'Id // biddag/aanbidding
@) ble (_ _^_EN // words ending in ble is English @) ble (_ _^_EN // words ending in ble is English
bloe (ddors@ bl%u // bloeddorstig and derivitives, but bloeddors bloe (ddors@ bl%u // bloeddorstig and derivitives, but bloeddors
bloed (stol bl%ut // move default stress: bloedstollend/-e bloed (stol bl%ut // move default stress: bloedstollend/-e
_) blo (kka bl%O // move default stress: blokkade/-s and compounds
_) blo (kkeer bl%O // move default stress: (ge)blokkeer/-der, etc.
blon (dine bl%On // move default stress: blondine/-s blon (dine bl%On // move default stress: blondine/-s
bly (moed bl%eI // move default stress: blymoedig/-e/-heid bly (moed bl%eI // move default stress: blymoedig/-e/-heid
bo (botie b%u // fix stress and 1st o sound: bobotie and compounds bo (botie b%u // fix stress and 1st o sound: bobotie and compounds
bota (nie_N b%o@t%a // stress on 3rd slb.: botanie bota (nie_N b%o@t%a // stress on 3rd slb.: botanie
_) bowe b''o@v@ // fix e sound in compounds: boweaards/bowemaans/bowetoon _) bowe b''o@v@ // fix e sound in compounds: boweaards/bowemaans/bowetoon
buiten (ge b'Yyt@n // buitengewoon/s/buitengewone/buitengemeen buiten (ge b'Yyt@n // buitengewoon/s/buitengewone/buitengemeen
buiten (ste bYyt@n // restore default stress: buitenste/-s
buiten (t bYyt@n // restore default stress: buitentoe/buitentyds buiten (t bYyt@n // restore default stress: buitentoe/buitentyds
buiten bYyt@n' // buitendien/buitensporig buiten bYyt@n' // buitendien/buitensporig
buite b'Yyt@ // buitelandse/buitestander/buitew�eld buite b'Yyt@ // buitelandse/buitestander/buitew�eld
be (amp b@? // fix e sound in compounds ending in beampte be (amp b@? // fix e sound in compounds ending in beampte
beau b@U //Beaufortwes and others beau b@U //Beaufortwes and others
@) beeldig b'e@ld@x2 // denkbeeldig/voorbeeldig @) beeldig b'e@ld@x2 // denkbeeldig/voorbeeldig
bei beI // beier/beitel
bei (+ beI // beier/beitel
_) be (@P2 b@ _) be (@P2 b@
@) be (C b@ @) be (C b@
C) be (rsie b'&: //kombersie etc. C) be (rsie b'&: //kombersie etc.
_) be (Cy b@ // bely/beny/betyds _) be (Cy b@ // bely/beny/betyds
bes (ie_ be@s //sonbesie duinebesie etc. bes (ie_ be@s //sonbesie duinebesie etc.
bes (ies_ be@s //sonbesies duinebesies etc. bes (ies_ be@s //sonbesies duinebesies etc.
son) be (sie be@ // fix e sound in compounds with sonbesie: sonbesiebos, etc.
bed (h bEt // fix stress, e sound and d sound: bedhoek/bedhok, etc.
bedjie bE:ici // (ge)bedjie/-s/bababedjie bedjie bE:ici // (ge)bedjie/-s/bababedjie
bed (k bEt // bedkassie/bedkaartjie/bedkatel/bedkussing bed (k bEt // bedkassie/bedkaartjie/bedkatel/bedkussing
bed (l bEt // bedlamp/bedliggie/dubbelbedlaken bed (l bEt // bedlamp/bedliggie/dubbelbedlaken
beken b@kEn // 2nd e sound: oorbekend/welbekende beken b@kEn // 2nd e sound: oorbekend/welbekende
@) beker (_ be@k@r // compounds ending with -beker @) beker (_ be@k@r // compounds ending with -beker
r) bel b&l // fix e sound: deurbel/oorbel r) bel b&l // fix e sound: deurbel/oorbel
C) bel (_ b&l // fix e sound: inbel/rondbel/uitbel
b) bel (_ b@l // fix e sound: babbel/dobbel/dubbel/kabbel
bell (+ b&l // inbeller/oorbelle/seepbelle bell (+ b&l // inbeller/oorbelle/seepbelle
_) bel (C b&l // Belgies/belhamel _) bel (C b&l // Belgies/belhamel
bere (_ be@r@ //tediebere pandabere etc. bere (_ be@r@ //tediebere pandabere etc.
besem be@s@m besem be@s@m
besering =b@se@r@N // besering/s/kniebesering... besering =b@se@r@N // besering/s/kniebesering...
beter b'e@t@r beter b'e@t@r
bewe (rasie be@v@ // fix e sounds: bewerasie/-siekte




.group c .group c
@) dend (er d@nd // beduidender/behoudender @) dend (er d@nd // beduidender/behoudender
@) dend (ste d@nt // beduidendste/behoudendste @) dend (ste d@nt // beduidendste/behoudendste
_) denim d''En@m // fix e sound in denim and compounds
&) denis d@n@s // geskiedenisboek/kultuurgeskiedenis/belydenis/beduidenis &) denis d@n@s // geskiedenisboek/kultuurgeskiedenis/belydenis/beduidenis
@) dente (@ dEnt@ // fix connecting e in compounds like studenteoptog/-opvoering @) dente (@ dEnt@ // fix connecting e in compounds like studenteoptog/-opvoering
de (press d%i // depressie/depressief/depressiewe de (press d%i // depressie/depressief/depressiewe
desibel dEsib&l // fix vowel sounds: desibel/-s desibel dEsib&l // fix vowel sounds: desibel/-s
deur (bo d%Y@r // move default stress: deurboor/deurborende deur (bo d%Y@r // move default stress: deurboor/deurborende
deur (dring@ d%y@r // move default stress: deurdringend/-e deur (dring@ d%y@r // move default stress: deurdringend/-e
deur (leef d%y@r // move default stress: deurleef/-de
deur (lop@ d%y@r // move default stress: deurlopend/-e deur (lop@ d%y@r // move default stress: deurlopend/-e
deur (priem d%Y@r // move default stress: deurpriem/-de deur (priem d%Y@r // move default stress: deurpriem/-de
deur (sigt d%y@r // move default stress: deursigtig/-e deur (sigt d%y@r // move default stress: deursigtig/-e
@) d (eteC_ t // aand-/oggendetes/grondeter @) d (eteC_ t // aand-/oggendetes/grondeter
djie ci // bokbaardjie/bordjie/boordjie/perdjie/tydjie djie ci // bokbaardjie/bordjie/boordjie/perdjie/tydjie
@) d (r d // but oordrewe/oordrom @) d (r d // but oordrewe/oordrom
san) d (r t // fix d sound: sandrif/-randjie/-rivier/-ruiter
han) d (r t // fix d sound: handreiking/-reling/-rug han) d (r t // fix d sound: handreiking/-reling/-rug
oe) d (r t // bloedrooi/bloedryk/hoedrand/invloedryk oe) d (r t // bloedrooi/bloedryk/hoedrand/invloedryk
toe) d (r d // but: toedrag/toedraai toe) d (r d // but: toedrag/toedraai
dril (A drIl // fix i sound when vowel follows dril: driloefening/-opleiding dril (A drIl // fix i sound when vowel follows dril: driloefening/-opleiding
@C) dwerk tv&rk // handwerk/naaldwerk
@) d (t // drop d: breedte/handtekening/rondte/rondtrek...
@n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar
@) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e @) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e
@) dwese tve@s@ // leedwese/vakbondwese @) dwese tve@s@ // leedwese/vakbondwese
@) dwillig tv'Il@x2 // d sound and stress: kwaadwillig/bereidwillig @) dwillig tv'Il@x2 // d sound and stress: kwaadwillig/bereidwillig
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
CAC) e (rkK & // fix e sound: deurgewerk; exception to: CAC) e (CC CAC) e (rkK & // fix e sound: deurgewerk; exception to: CAC) e (CC
@p) e (rtjie @ // fix e sound: helpertjies/wegkruipertjie
C) e (mm++ E // geelkoperemmer/wateremmer C) e (mm++ E // geelkoperemmer/wateremmer
CAnn) e (CA @ // banneling/sinnebeeld/spinnekop/-rak CAnn) e (CA @ // banneling/sinnebeeld/spinnekop/-rak
Aw) e (bA @ // fix e sound: briewebesteller/diewebende/newebedoeling/skewebek/stywebeen Aw) e (bA @ // fix e sound: briewebesteller/diewebende/newebedoeling/skewebek/stywebeen
mp) e (lde_ @ // fix e sound: gemompelde/oorrompelde/verskrompelde and similar mp) e (lde_ @ // fix e sound: gemompelde/oorrompelde/verskrompelde and similar
@C) e (lk_ & // fix e sound: many compounds ending in kelk/melk @C) e (lk_ & // fix e sound: many compounds ending in kelk/melk
@C) e (lke_ & // fix e sound: many compounds ending in -elke: blomkelke, etc. @C) e (lke_ & // fix e sound: many compounds ending in -elke: blomkelke, etc.
uiC) e (l @ // fix e sound in wrds like: buideldier/druipeling/skuifelpassie/struikelend/tuimelaar
ng) e (nd @ // fix e sound: dringends/dwingends/deurdringender ng) e (nd @ // fix e sound: dringends/dwingends/deurdringender
enge (l EN@ // Engeland/Engelsman/Engelssprekend/hengelklub/mengeldrankie/-moes
C) e (pan @ //fix e sound: instrumentepaneel/kolepan/liefdepand C) e (pan @ //fix e sound: instrumentepaneel/kolepan/liefdepand
@k) e (tt@+ E // menseketting/etikette @k) e (tt@+ E // menseketting/etikette
sp) e (lonk @ // spelonk/rowerspelonk/spelonkagtig etc. sp) e (lonk @ // spelonk/rowerspelonk/spelonkagtig etc.
e (CA e@ e (CA e@
CCan) e (CA @ // swanepoel/swanesang/tranedal CCan) e (CA @ // swanepoel/swanesang/tranedal
XCier) e (@ @ // dieresorg/-lewe..., many compounds/PIEREWAAI/-ER XCier) e (@ @ // dieresorg/-lewe..., many compounds/PIEREWAAI/-ER
kund) e (@ @ // fix e sound in many compounds of kunde
luuks) e @ // luukses/luukse and compounds luuks) e @ // luukses/luukse and compounds
midd) e (@ @ // compounds starting with midde: middedorp/middeooste/middestad/middeweg midd) e (@ @ // compounds starting with midde: middedorp/middeooste/middestad/middeweg
reus) e (@ @ // correct 2nd e in compounds starting with reuse reus) e (@ @ // correct 2nd e in compounds starting with reuse
C) edes (_ e@d@s // lofredes/hoofredes C) edes (_ e@d@s // lofredes/hoofredes
j) e (k E // fix e sound: tjek and compounds/windjekker, etc. j) e (k E // fix e sound: tjek and compounds/windjekker, etc.
C) e (kamp+ @ // fix e sound: (krygs)gevangenekamp/soldatekamp and similar C) e (kamp+ @ // fix e sound: (krygs)gevangenekamp/soldatekamp and similar
@d) e (klas @ // fix e sound: tweede/derdeklas and compounds
@d) e (kr @ // fix e sound: vriendekring/-e
e (kono@ %E // 1st e: ekonome/ekonomie/ekonomies/ekonoom e (kono@ %E // 1st e: ekonome/ekonomie/ekonomies/ekonoom
e (mosi %i // emosie/emosioneel, etc. e (mosi %i // emosie/emosioneel, etc.
hal) e (rC@ @ // uithalerperd/-skut/-speler and similar hal) e (rC@ @ // uithalerperd/-skut/-speler and similar
_) enkel ENk@l // enkelbaan/enkelbed; many compounds _) enkel ENk@l // enkelbaan/enkelbed; many compounds
@C) eny (_ @n'eI // words ending in eny have stress on y @C) eny (_ @n'eI // words ending in eny have stress on y
d) e (fi E d) e (fi E
 &w) e (f @ // fix e sound: wolwefluite/krewefuik
C) e (kant @ // buitekant/noordekant C) e (kant @ // buitekant/noordekant
ee e@ ee e@
eetjie e@ici // tweetjies/hanetreetjie eetjie e@ici // tweetjies/hanetreetjie
_) ellende e@l'End@ _) ellende e@l'End@
_) ellendig e@l'End@x2 _) ellendig e@l'End@x2
emalje %e@malj@ // fix stress and e sounds: emalje and compounds emalje %e@malj@ // fix stress and e sounds: emalje and compounds
engels EN@ls // engelssprekend/engelstalige/engelsman
enig (ma %EnIx2 // stress and e sound: enigma/-ties/-e enig (ma %EnIx2 // stress and e sound: enigma/-ties/-e
lei) er (s @r // leierskap/leiersgroep/leierskursus/leiersposisie... lei) er (s @r // leierskap/leiersgroep/leierskursus/leiersposisie...
in) er (A 'e@r // kombinering/verkleinering... in) er (A 'e@r // kombinering/verkleinering...
&) e (nC_ @ &) e (nC_ @
&) e (nde_ @ // fix penultimate e sound: sinkende/drinkende/klinkende &) e (nde_ @ // fix penultimate e sound: sinkende/drinkende/klinkende
&) e (ng_ E &) e (ng_ E
erf) e (nis @ //erfenis/kultuurerfenis/verderfenis
@f) e (nis @ //erfenis/kultuurerfenis/verderfenis
ooi) e (ns @ // fix e sound: compounds starting with nooiens ooi) e (ns @ // fix e sound: compounds starting with nooiens
ooi) e (ntjie // drop e in nooientjie/-s and compounds ooi) e (ntjie // drop e in nooientjie/-s and compounds


&) erei (_ @reI &) erei (_ @reI
e (r & e (r &
Ank) e (r@ @ // ankerpaal/kankerlyer/donkerbril Ank) e (r@ @ // ankerpaal/kankerlyer/donkerbril
uik) e (rC @ // fix e sound: many compounds with duiker/gebruiker/suiker


lew) e (ns @ lew) e (ns @
&d) e (r@ @ // not initial or final syllable &d) e (r@ @ // not initial or final syllable
&) ere (_S3 @r@ &) ere (_S3 @r@
@l) ere (_ e@r@ // fix e sound: staanlere/toonlere @l) ere (_ e@r@ // fix e sound: staanlere/toonlere
@) ery (_ @reI @) ery (_ @reI
@) ery (e_ @reI // fix 2nd e sound: delwerye and similar
eti (ket %Et%i // shorten e sound and move stress: etiket/-te eti (ket %Et%i // shorten e sound and move stress: etiket/-te


ewig (du %e@v@x2 // move default stress: ewigdurend/-e/-heid ewig (du %e@v@x2 // move default stress: ewigdurend/-e/-heid
ewigheid 'e@v@x2,eIt // ewigheid/hewigheid/stewigheid ewigheid 'e@v@x2,eIt // ewigheid/hewigheid/stewigheid
evolus EvOl'ys // evolusie/devolusie/revolusie evolus EvOl'ys // evolusie/devolusie/revolusie
C) ewyn @veIn // alewyn/compounds of brandewyn
C) ewy (C @veI // alewyn/compounds of brandewyn/sekondewyser
_op) e (n @ _op) e (n @
C) ensie (_ 'Ensi // many words ending in stressed ensie(s) C) ensie (_ 'Ensi // many words ending in stressed ensie(s)
C) ensies 'Ensis // forensiese C) ensies 'Ensis // forensiese
will) e (C @ //willem, willemse etc./willekeur will) e (C @ //willem, willemse etc./willekeur
pp) e (C@+ @ // flapperend/snippermandjie/dopperkerk/poppekas... pp) e (C@+ @ // flapperend/snippermandjie/dopperkerk/poppekas...
&) e (nk_ E // but kersgeskenk/verjaardaggeskenk &) e (nk_ E // but kersgeskenk/verjaardaggeskenk
@ks) e (ms @ // bliksems and compounds
@ks) e (mC @ // bliksems and compounds/bebliksemde/boksemdais
@) e (spel_ @ //gebarespel/kleurespel/klokkespel/parespel/poppespel/samespel/snarespel @) e (spel_ @ //gebarespel/kleurespel/klokkespel/parespel/poppespel/samespel/snarespel
ar) e (sse_ 'E // bibliotekaresse/sekretaresse ar) e (sse_ 'E // bibliotekaresse/sekretaresse
Ks) e (na @ //senator and friends/watsenaam Ks) e (na @ //senator and friends/watsenaam
f (f f (f
fa (briek f%a // move default stress: fabriek and many compounds/fabriseer fa (briek f%a // move default stress: fabriek and many compounds/fabriseer
fak (tore f%ak // move default stress: faktore and compounds fak (tore f%ak // move default stress: faktore and compounds
familie fam'ili
familie f%amil%i
fanta (sA f%ant%a // fantaseer/fantasie fanta (sA f%ant%a // fantaseer/fantasie
fasiliteit fasilit'eIt // fasiliteit/e/aftrekorderfasiliteit fasiliteit fasilit'eIt // fasiliteit/e/aftrekorderfasiliteit
februarie f'e@bry,A:ri februarie f'e@bry,A:ri
A) goog (_ x2'o@x2 // demagoog/pedagoog A) goog (_ x2'o@x2 // demagoog/pedagoog
gor (dyn x2%Or // move default stress: gordyn and compounds gor (dyn x2%Or // move default stress: gordyn and compounds
A) goë x2'u@ // demagoë/pedagoë A) goë x2'u@ // demagoë/pedagoë
ouCa) gr (ootjie x2r' // move default stress: ouma/oupagrootjie/-s
_) graad (e x2r%A:t_ // fix stress and d sound: graadeen(tjies)/-elfs
_) graadse (s x2r%A:tsE // fix stress and e sound: graadsesse/-sessies/-sesklas
_) graad (vyf x2r%A:t // move default stress: graadvyfs/graadvyfklas, etc.
gra (niet x2r%a // move default stress and fix a sound: graniet and compounds gra (niet x2r%a // move default stress and fix a sound: graniet and compounds
_) gri (mA x2r@ // grimas/grimeer/-middel and other compounds/grimering _) gri (mA x2r@ // grimas/grimeer/-middel and other compounds/grimering
grotere x2ro@t@r@ // fix vowel sounds and stress: grotere/-s
guerrilla g@r'Ila guerrilla g@r'Ila


.group ge .group ge
ge (olo x2i //geoloog etc. ge (olo x2i //geoloog etc.
ge (ome x2i //geometries etc. ge (ome x2i //geometries etc.
gesels x2@s'&ls gesels x2@s'&ls
@C) gewens x2@ve~ns




.group h .group h
h h h h
h (h h (h
half (een h%alf_ // move default stress in this and following time expressions: halfeen/-vergadering
half (twee h%alf
half (drie h%alf
half (vier h%al
half (vyf h%al
halfse (s h%alfsE
half (sewe h%alf
half (agt h%alf_
half (nege h%alf
half (tien h%alf
half (elf h%alf_
half (twaalf h%alf
halleluja h%al@lyj%a // move stress and fix vowel sounds: halleluja/-boek/-lied halleluja h%al@lyj%a // move stress and fix vowel sounds: halleluja/-boek/-lied
halo (ge h%al%u // fix stress and vowel sounds: halogeen/-lamp/-verbinding/halogene halo (ge h%al%u // fix stress and vowel sounds: halogeen/-lamp/-verbinding/halogene
@C) hal (sA h'al // reikhalsend/waaghalsig @C) hal (sA h'al // reikhalsend/waaghalsig
hard (heid hart // restore default stress: (ge)hardheid hard (heid hart // restore default stress: (ge)hardheid
hard (lo hart // restore default stress: hardloop/hardloper hard (lo hart // restore default stress: hardloop/hardloper
hard (ste hart // restore default stress: (ge)hardste/-s hard (ste hart // restore default stress: (ge)hardste/-s
_) hare (C hA:r@ // fix e sound: haredos/haregroei/harekam/harewasmiddel
@) hartig h'art@x2 // barmhartig/lighartigheid/lighartig... @) hartig h'art@x2 // barmhartig/lighartigheid/lighartig...
hart (stogte_ h%art // move default stress: hartstogtelik hart (stogte_ h%art // move default stress: hartstogtelik
hart (stogte_N hart // restore default stress: hartstogte hart (stogte_N hart // restore default stress: hartstogte
he (bre h%i // fix stress and 1st e sound: Hebreër/-s
heeren (grac he@r@n // fix eng sounds: Heerengracht/-straat
heiden heId@n // heidene/heidense/heidendom heiden heId@n // heidene/heidense/heidendom
hekse (C hEks@ // fix 2nd e sound in compounds starting with hekse: heksebrousel, etc. hekse (C hEks@ // fix 2nd e sound in compounds starting with hekse: heksebrousel, etc.
_) hele (K he@l@ // hele/helend/heler _) hele (K he@l@ // hele/helend/heler
g) heid eIt // traagheid/leegheid/droogheid/stugheid g) heid eIt // traagheid/leegheid/droogheid/stugheid
herinner h&r'In@r // herinner/-ing/-e|s herinner h&r'In@r // herinner/-ing/-e|s
_) hi (bis h%i // move default stress: hibiskus/-se and compounds _) hi (bis h%i // move default stress: hibiskus/-se and compounds
hinke (pink h@Nk@ // fix e sound and stress: (ge)hinkepink/hinkepinkend/-e
hip (noCA h%ip // hipnose/hipnoties/hipnotiseer hip (noCA h%ip // hipnose/hipnoties/hipnotiseer
hister (e hist@r // histerektomie hister (e hist@r // histerektomie
hister (i hist'e@r // histerie/histeries hister (i hist'e@r // histerie/histeries
hitler hitl@r // Hitler in compounds like Hitlersnorretjie hitler hitl@r // Hitler in compounds like Hitlersnorretjie
hoog (dra h%o@x2 // stress: hoogdrawend and derivitives hoog (dra h%o@x2 // stress: hoogdrawend and derivitives
hor (los h%Or // horlosie and compounds hor (los h%Or // horlosie and compounds
hor (mo h%Or // move default stress: hormoon/hormone and compounds
ho (tel h%u // fix stress and o sound: hotel and compounds ho (tel h%u // fix stress and o sound: hotel and compounds
huis (houd_ h%Yys // move default stress: huishoudelik/-e/-heid huis (houd_ h%Yys // move default stress: huishoudelik/-e/-heid
hu (meur h%y // stress: humeur/-ig hu (meur h%y // stress: humeur/-ig
iaal (_K i'A:l // aal normally stressed in words like bilabiaal/koloniaal, etc. 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. iale (_ i'A:l@ // al normally stressed in words like bilabiale/koloniale, etc.
iber (i@ %ibe@r // Liberië/Siberië/Liberiese/Siberiese/Iberiese iber (i@ %ibe@r // Liberië/Siberië/Liberiese/Siberiese/Iberiese
@) ic (_ _^_EN // Words ending in -ic are English
ie i ie i
ieë (K i:@ // knieë/vlieë/spieël/-tjie ieë (K i:@ // knieë/vlieë/spieël/-tjie
h) i (dro i //hidro in compounds h) i (dro i //hidro in compounds
@C) inge (_ @N@ @C) inge (_ @N@
ing (s IN // begrotingsrede/ontvangslokaal/geringste ing (s IN // begrotingsrede/ontvangslokaal/geringste
_) ing (@ 'Inx2 // ingaan/ingang/ingiet/ingly/ingroei/ingreep... _) ing (@ 'Inx2 // ingaan/ingang/ingiet/ingly/ingroei/ingreep...
ingang _Inx2aN // ingang/hoofingang/ingangsprotaal
&) ige (_ Ix2@ &) ige (_ Ix2@
@C) iger (CA @x2@r // twintiger-/dertiger-/veertigerjare, etc. @C) iger (CA @x2@r // twintiger-/dertiger-/veertigerjare, etc.
&) iges (_ Ix2@s &) iges (_ Ix2@s
@C) igende @x2@nd@ // bevredigende/beangstigende... @C) igende @x2@nd@ // bevredigende/beangstigende...
C) iging @x2@N C) iging @x2@N
m) i (nister @ //fix first i sound in minister in some compounds m) i (nister @ //fix first i sound in minister in some compounds
indjie 'IiNci
indjie IiNci
intjie IiNci intjie IiNci
idjie Iici idjie Iici
itjie Iici itjie Iici
en) is (K @s // stress: beduidenis/bekentenis/gevangenis, etc. en) is (K @s // stress: beduidenis/bekentenis/gevangenis, etc.
kris) is @s // fix stress: krisis and compounds kris) is @s // fix stress: krisis and compounds
pol) is (_ @s // polis and compounds pol) is (_ @s // polis and compounds
ar) is (_ =@s // but sekretaris/argivaris/kommissaris
ar) is (K =@s // but sekretaris/argivaris/kommissaris/inventarislys/sekretarisvoël
litar) is 'Is // but militaris litar) is 'Is // but militaris
vuil) is @s // stress: vuilis/tuinvuilis vuil) is @s // stress: vuilis/tuinvuilis
AC) iste (_ 'Ist@ // aktiviste/humaniste/kommuniste/pianiste/soliste/violiste AC) iste (_ 'Ist@ // aktiviste/humaniste/kommuniste/pianiste/soliste/violiste
jakaranda j%ak%ar'anda //jakaranda and compounds jakaranda j%ak%ar'anda //jakaranda and compounds
jaloe (sie j%al%u // stress: jaloesie/beroepsjaloesie jaloe (sie j%al%u // stress: jaloesie/beroepsjaloesie
januarie j'any,A:ri januarie j'any,A:ri
japo (n j%apO // fix stress and shorten a sound: japon/-ne and compounds/japonika
jeans _^_EN jeans _^_EN
jeep _^_EN // English pronunciation jeep _^_EN // English pronunciation
jellie dZ'Eli jellie dZ'Eli
jesus ji:sWs // Jesus also used as part of compounds: Jesusbaard/Jesusklong
joer (na j%ur // move default stress: joernaal/joernale/ compounds: joernaalinskrywing, etc. joer (na j%ur // move default stress: joernaal/joernale/ compounds: joernaalinskrywing, etc.
johan juh'an johan juh'an
johannes juh'an@s johannes juh'an@s
@) keurig k'Y@r@x2 // kieskeurig/noukeurig/(on)willekeurig and derivitives @) keurig k'Y@r@x2 // kieskeurig/noukeurig/(on)willekeurig and derivitives
_) ki (ta k%i // move default stress: kitaar and compounds _) ki (ta k%i // move default stress: kitaar and compounds
klere kle@r@ klere kle@r@
kli (niek kl@ // fix stress and i sound: kliniek and compounds
kklere =kl'e@r@ kklere =kl'e@r@
knip (A knIp? // knipogie/geknipoog/ knip (A knIp? // knipogie/geknipoog/
kre (diet kr@ // move default stress: krediet/-kaart/-balans, etc. kre (diet kr@ // move default stress: krediet/-kaart/-balans, etc.
kre (dit kr%E // fix e sound: krediteer/akkreditasie kre (dit kr%E // fix e sound: krediteer/akkreditasie
krimi (nA kr@m@' // krimineel/kriminele/diskrimineer krimi (nA kr@m@' // krimineel/kriminele/diskrimineer
kri (oel kr%i // move default stress: krioel and derivitives kri (oel kr%i // move default stress: krioel and derivitives
kristal kr@stal // move default stress: kristal and many compounds
krit (A kr@t // kriteria/-ium/kritiseer and derivitives krit (A kr@t // kriteria/-ium/kritiseer and derivitives
krieket krik@t //krieket e sound and stress krieket krik@t //krieket e sound and stress
krieketw krik@tv //krieket followed by w in compounds always v krieketw krik@tv //krieket followed by w in compounds always v
kake (C kA:k@ // kakebeen/skakelaar/skakelbord/skakelfunksie kake (C kA:k@ // kakebeen/skakelaar/skakelbord/skakelfunksie
kalahari kalah'A:ri // stress: Kalahari/-sand/-woestyn kalahari kalah'A:ri // stress: Kalahari/-sand/-woestyn
ka (lAnC k%a // kalender and compounds/kalant/kalander and compounds ka (lAnC k%a // kalender and compounds/kalant/kalander and compounds
kalender k%alEnd@r // fix stress and vowel sounds: kalender/-s and compounds
kali (b k%ali // kaliber/kalibrasie/kalibreer kali (b k%ali // kaliber/kalibrasie/kalibreer
kalmeer kalm'e@r // kalmeer/gekalmeer kalmeer kalm'e@r // kalmeer/gekalmeer
kalmer (A kalm'e@r // kalmerend/e/kalmering kalmer (A kalm'e@r // kalmerend/e/kalmering
ka (pabel k%a // move default stress and shorten 1st a sound: kapabel/-e ka (pabel k%a // move default stress and shorten 1st a sound: kapabel/-e
kape (l k%ap& // move default stress and fix e sound: kapel and compounds kape (l k%ap& // move default stress and fix e sound: kapel and compounds
kape (la@ k%ap@ // fix e sound: kapelaan/kapelane and compounds kape (la@ k%ap@ // fix e sound: kapelaan/kapelane and compounds
ka (pok k%a // move default stress and shorten a: kapok and compounds
kap (tein k%ap // kaptein/kapteinskap/skeepskaptein kap (tein k%ap // kaptein/kapteinskap/skeepskaptein
kapsule k%apsyl@ // stress and e sound: kapsule/-fabriek/-vorm, etc. kapsule k%apsyl@ // stress and e sound: kapsule/-fabriek/-vorm, etc.
kar (does k%ar // move default stress: kardoes and compounds kar (does k%ar // move default stress: kardoes and compounds
kar (wei k%ar // move default stress: karwei and derivitives kar (wei k%ar // move default stress: karwei and derivitives
kaserne k%as&rn@ // move default stress, fix 1st e sound: kaserne and compounds kaserne k%as&rn@ // move default stress, fix 1st e sound: kaserne and compounds
_) ka (ste@ k%a // move default stress: kasteel/kastele and compounds _) ka (ste@ k%a // move default stress: kasteel/kastele and compounds
kasse (t k%asE // fix stress and e sound: kasset/-te and compounds
ka (strol k%a // move default stress: kastrol/-le and compounds ka (strol k%a // move default stress: kastrol/-le and compounds
_) kata ,kata _) kata ,kata
katalo (gus k%atalu // fix stress and vowel sounds: katalogus and compounds katalo (gus k%atalu // fix stress and vowel sounds: katalogus and compounds
kommando k%umandu // move stress, fix o sounds: kommando and compounds kommando k%umandu // move stress, fix o sounds: kommando and compounds
ko (pie@ k%u // kopiereg/kopie ko (pie@ k%u // kopiereg/kopie
koe (rA k%u // koerier/koerasie/koerant and compounds koe (rA k%u // koerier/koerasie/koerant and compounds
korrek k%urEk //korrek and derivitives
kort (stond k%Ort // move default stress: kortstondig/-e/-heid kort (stond k%Ort // move default stress: kortstondig/-e/-heid
koever (t k%uf&r // koevert/-e/-jie and compounds koever (t k%uf&r // koevert/-e/-jie and compounds
kollege k'OlidZ // kollege/onderwyskollege kollege k'OlidZ // kollege/onderwyskollege
kolleges (_ k'OlidZ@s // kolleges/onderwyskolleges kolleges (_ k'OlidZ@s // kolleges/onderwyskolleges
@) kollek kulEk // straatkollekte/straatkolleksie/deurkollekte
_) kollek kul'Ek // kollekte/kollektebord/kolleksie
kollek k%ulEk // straatkollekte/straatkolleksie/deurkollekte
kollekteer kulEkt'e@r // kollekteer/gekollekteer kollekteer kulEkt'e@r // kollekteer/gekollekteer
koeël kul koeël kul
kollega k%ule@x2%a // kollega/-s and compounds kollega k%ule@x2%a // kollega/-s and compounds
konfer (e k%Onf@r // fix e sound: (ge)konfereer/konferering konfer (e k%Onf@r // fix e sound: (ge)konfereer/konferering
kongo (K k,ONgu // stress: kongolees/-lese kongo (K k,ONgu // stress: kongolees/-lese
koning (in k%o@n@N // fix stress: koningin/-ne and compounds koning (in k%o@n@N // fix stress: koningin/-ne and compounds
_) konka (K kONka // fix stress: konka/-s/-vure
konnekteer kOnEkt'e@r // (ge)konnekteer konnekteer kOnEkt'e@r // (ge)konnekteer
konnek k%unEk // fix stress and vowel sounds: konneksie/-s and compounds
konkel kONk@l // restore default stress and fix [N] sound: konkelaar/konkelwerk, etc. konkel kONk@l // restore default stress and fix [N] sound: konkelaar/konkelwerk, etc.
konside (rA k%Ons@d@ // fix vowel sounds: konsiderasie/konsidereer
konsist k%Ons@st // konsistorie and compounds/konsistensie konsist k%Ons@st // konsistorie and compounds/konsistensie
konsul (A k%Ons%Wl // konsulaat/konsulate/konsulêr konsul (A k%Ons%Wl // konsulaat/konsulate/konsulêr
kon (sul kOn // restore default stress: konsul and compounds kon (sul kOn // restore default stress: konsul and compounds
ko (rrup k%u // fix stress and 1st o sound: korrup/-sie/-te/-teer ko (rrup k%u // fix stress and 1st o sound: korrup/-sie/-te/-teer
kosme (tiek k%Osm@ // move default stress: kosmetiek and compounds kosme (tiek k%Osm@ // move default stress: kosmetiek and compounds
kos (met k%Os // move default stress: kosmeties/-e kos (met k%Os // move default stress: kosmeties/-e
kos (tu k%Os // move default stress: kostuum and compounds
koö k%o@O // koördinasie/koöpsie, etc. koö k%o@O // koördinasie/koöpsie, etc.




leli (k le@l@ // fix e sound and stress: lelik and derivitives leli (k le@l@ // fix e sound and stress: lelik and derivitives
_) lende lEnd@ // lendelam/lendene/compounds of lende _) lende lEnd@ // lendelam/lendene/compounds of lende
lening le@n@N // banklening/sorgverlening/hulpverlening... lening le@n@N // banklening/sorgverlening/hulpverlening...
lepe (ll le@p@ // fix 2nd e sound in compounds: lepellê, etc.
@C) les (K lEs // aanvangsles/geskiedenislesse/musiekles/koffiefles @C) les (K lEs // aanvangsles/geskiedenislesse/musiekles/koffiefles
leuen lY@:n // leuen/leuntaal and many other compounds leuen lY@:n // leuen/leuntaal and many other compounds
leuen (tjie lY@iN // leuentjie/witleuentjie leuen (tjie lY@iN // leuentjie/witleuentjie
liter (A l@t@r //literatuur and others, but literbottel liter (A l@t@r //literatuur and others, but literbottel
_) li (mi l@ // fix stress and 1st i sound: limiet/-e/limitasie/limiteer _) li (mi l@ // fix stress and 1st i sound: limiet/-e/limitasie/limiteer
linker lINk@r // blinkertjies/many compounds with linker and klinker linker lINk@r // blinkertjies/many compounds with linker and klinker
lino (leum l@no@ // fix stress and i sound: linoleum and compounds, e.g. linoleumvloere
@) ll (_N _^_EN // Words ending in -ll are English @) ll (_N _^_EN // Words ending in -ll are English
_) losge (@P5 l'Osx2@ _) losge (@P5 l'Osx2@
_) losies l%us'is //losies at start always means "to stay" _) losies l%us'is //losies at start always means "to stay"
lisensie l@s'E:nsi lisensie l@s'E:nsi
lering (_ l'e@r@N //isolering distilering correct @ to e@ and force stress lering (_ l'e@r@N //isolering distilering correct @ to e@ and force stress
lokomo ,lukumu' //lokomotief and friends lokomo ,lukumu' //lokomotief and friends
losbandi (g l%Osband@ // fix stress and d sound: losbandig/-e/-er
lug (A lWx2? // lugaanval/lugafweer/lugopname lug (A lWx2? // lugaanval/lugafweer/lugopname
luid (rugt l%Yyd // move default stress: luidrugtig/-e/-heid luid (rugt l%Yyd // move default stress: luidrugtig/-e/-heid
luite (nant l%Yyt@ // fix e sound and move default stress: luitenant and compounds luite (nant l%Yyt@ // fix e sound and move default stress: luitenant and compounds
maga (syn m%ax2%a // magasyn and many compounds maga (syn m%ax2%a // magasyn and many compounds
magi (stra m%ax2%i // magistraat and many compounds magi (stra m%ax2%i // magistraat and many compounds
ma (ho m%a // mahoniehout/-lessenaar and similar ma (ho m%a // mahoniehout/-lessenaar and similar
@) makie (sie mak'i // fix a sound and stress: bol(le)makiesie/-slanery
&) mal (_S3 mal &) mal (_S3 mal
malaria mal'A:ria; malaria mal'A:ria;
_) malte (sA m%alte@ // move default stress and fix e sound: maltese/maltesies _) malte (sA m%alte@ // move default stress and fix e sound: maltese/maltesies
man (da m%an //mandaat and compounds man (da m%an //mandaat and compounds
mane (wale m%an@ // fix stress and shorten a sound: manewale/-s and compounds
manier m@ni:r //manier and compounds manier m@ni:r //manier and compounds
manu (sk ,many manu (sk ,many
_) ma (rA m%a // short, unstressed a: Marietjie/Marina/Marinda/Marita/Maree/marog _) ma (rA m%a // short, unstressed a: Marietjie/Marina/Marinda/Marita/Maree/marog
marine m%arin@ // marine and compounds marine m%arin@ // marine and compounds
mario (net m%ar%i%u // fix stress and vowel sounds: marionet/-te and compounds
ma (ritz m%a' // fix stress: Maritz/Pietermaritsburg ma (ritz m%a' // fix stress: Maritz/Pietermaritsburg
marmelade m%arm@lA:d@ // fix stress and e sounds: marmelade and compounds marmelade m%arm@lA:d@ // fix stress and e sounds: marmelade and compounds
marmer marm@r_ // fix e sound: marmerbeeld/-blad and many others
mar (sje m%ar // move default stress: marsjeer and derivitives mar (sje m%ar // move default stress: marsjeer and derivitives
mas (biek m%as // move default stress: masbieker/-s mas (biek m%as // move default stress: masbieker/-s
masjien m@Sin // masjien and many compounds masjien m@Sin // masjien and many compounds
miske (n m@skE // misken/ning/onmiskenbaar miske (n m@skE // misken/ning/onmiskenbaar
mis (l m@s // misluk/mislei mis (l m@s // misluk/mislei
mis (lik m'Is // default stress again mis (lik m'Is // default stress again
mis (loop mIs // default stress: misloop
_) mis (m m@s // mismaak/-te/mismoedig _) mis (m m@s // mismaak/-te/mismoedig
mis (noeg m@s // stress on 2nd slb mis (noeg m@s // stress on 2nd slb
mis (o mIs // misoes/misopvatting mis (o mIs // misoes/misopvatting
mis (troos m@s // mistroostig mis (troos m@s // mistroostig
mis (vorm m@s // stress on 2nd slb mis (vorm m@s // stress on 2nd slb
mode m''o@d@ // fix e sound: modeontwerper/-maker, etc. mode m''o@d@ // fix e sound: modeontwerper/-maker, etc.
modee m@d'e@ //akkommodeer
mode (l m%o@d& // fix stress and e sound: model/-le and compounds mode (l m%o@d& // fix stress and e sound: model/-le and compounds
mode (lle@ m%Od@ // fix stress and e sound: modelleer/modellering mode (lle@ m%Od@ // fix stress and e sound: modelleer/modellering
modern m%ud&r@-n modern m%ud&r@-n
mee (doë m%e@ // move default stress mee (doë m%e@ // move default stress
meerder (jar m%e@rd@r // move default stress: meerderjarig/-e/-es/-verklaring meerder (jar m%e@rd@r // move default stress: meerderjarig/-e/-es/-verklaring
mee (war m%e@ // move default stress: meewarig/-e/-heid mee (war m%e@ // move default stress: meewarig/-e/-heid
medisyne m@d@s'eIn@ //medisyne and compounds
medisyne m@d@seIn@ //medisyne and compounds
meganies m@x2'A:nis meganies m@x2'A:nis
_) meege (@P5 m'e@x2@ _) meege (@P5 m'e@x2@
me (juf m@ // move default stress and shorten e sound me (juf m@ // move default stress and shorten e sound
n (q N n (q N
n (x N n (x N
ng N ng N
ei) n (g n // breingrootte/kleingeld/kleingoed
eu) n (g n // dreungeluid/kreungeluid/steungeluid/steungewend eu) n (g n // dreungeluid/kreungeluid/steungeluid/steungewend
oo) n (g n // hoongelag/loongeld/telefoongesprek/woongeriewe and similar oo) n (g n // hoongelag/loongeld/telefoongesprek/woongeriewe and similar
Cui) n (g n // basuingeskal/bruingebrand/bruingeel/tuingereedskap/tuingewas/tuingrond Cui) n (g n // basuingeskal/bruingebrand/bruingeel/tuingereedskap/tuingewas/tuingrond
nasio naSiu nasio naSiu
_) nag (C n'ax2 _) nag (C n'ax2
_) nag (raad n'A:x2 //nagraads and compounds _) nag (raad n'A:x2 //nagraads and compounds
nag (uil nax2_ // fix stress and a sound: naguil/-tjie/-s


_) na n'A: _) na n'A:
_) na (by@ n%A: // move default stress: nabye/nabyheid _) na (by@ n%A: // move default stress: nabye/nabyheid
_) na (delig n%A: // move stress from 1st slb: nadelig/-e _) na (delig n%A: // move stress from 1st slb: nadelig/-e
_) nadenk n%A:dENk // exception to: _) na n'A: _) nadenk n%A:dENk // exception to: _) na n'A:
names nA:m@s // fix e sound: afnames/opnames
_) na (rC na // nartjie/nardus/narsing _) na (rC na // nartjie/nardus/narsing
_) na (rk n%a // narkose/narkotiseer/narkoties/narkotika _) na (rk n%a // narkose/narkotiseer/narkoties/narkotika
_) na (skeer n''A: // restore default stress: naskeermiddel/-room _) na (skeer n''A: // restore default stress: naskeermiddel/-room
nese (_ n'e@s@ //japannese soedannese stres and e sound nese (_ n'e@s@ //japannese soedannese stres and e sound
netel ne@t@l // netelig and derivitives/netel and compounds netel ne@t@l // netelig and derivitives/netel and compounds
nogal nOx2al // fix o sound: nogal/-s nogal nOx2al // fix o sound: nogal/-s
no (minA n%O // fix 1st o sound: (ge)nomineer/nominasie
nommer (een n%Om@r? // stress: nommereen in compounds like nommereenspeler nommer (een n%Om@r? // stress: nommereen in compounds like nommereenspeler
nood (saak n%o@t // move default stress: noodsaaklik/-e/-heid, vs. noodsaak nood (saak n%o@t // move default stress: noodsaaklik/-e/-heid, vs. noodsaak
nood (saak_N no@t // restore default stress: (ge)noodsaak nood (saak_N no@t // restore default stress: (ge)noodsaak
olym (p %o@lIm // fix stress and y sound: Olympia/Olympus olym (p %o@lIm // fix stress and y sound: Olympia/Olympus
oranje %o@ranj@ // fix stress and e sound in compounds: oranjeagtig/oranjekleur oranje %o@ranj@ // fix stress and e sound in compounds: oranjeagtig/oranjekleur
_) ordent %OrdEnt // move default stress: ordentlik/-e/-er/-ste/-heid _) ordent %OrdEnt // move default stress: ordentlik/-e/-er/-ste/-heid
orent (K %o@rEnt // fix stress of orent in compounds: kiertsorent/orentspring, etc.
orie o@ri orie o@ri
oriu 'o@riW oriu 'o@riW
_) or (ka %Or // move default stress: orkaan/orkane/orkaanwaarskuwing... _) or (ka %Or // move default stress: orkaan/orkane/orkaanwaarskuwing...
om (ha Om // restore default stress: omhaal/omhang/omhaak om (ha Om // restore default stress: omhaal/omhang/omhaak
omkeer Omke@r // restore default stress: omkeer/handomkeer and similar omkeer Omke@r // restore default stress: omkeer/handomkeer and similar
_) omker (A Omke@r // omkering/omkerende _) omker (A Omke@r // omkering/omkerende
_) omli (gg %OmlI // move default stress: omliggend/-e
om (ly %Om // move default stress: omlyn/-ing om (ly %Om // move default stress: omlyn/-ing
om (ring %Om // move default stress om (ring %Om // move default stress
om (sig %Om // move default stress: omsigtig/-heid om (sig %Om // move default stress: omsigtig/-heid




_) opeen Op_'e@n _) opeen Op_'e@n
_) ope (C o@p@ //opehart opestelling etc.
_) ope (K o@p@ //opehart opestelling etc./ope
ope (l o@p@ // dopeling/hopelik/opelug/opelyf ope (l o@p@ // dopeling/hopelik/opelug/opelyf
opgee (+ 'Opx2e@ // see rule: _) opge (@P4 Opx2@ opgee (+ 'Opx2e@ // see rule: _) opge (@P4 Opx2@
_) opge (@P4 'Opx2@ // stress on 1st slb _) opge (@P4 'Opx2@ // stress on 1st slb
_) op (@P2 'Op // opeet/opeis/optredes/opoffering _) op (@P2 'Op // opeet/opeis/optredes/opoffering
open (+ o@p@n // open/opening/e/s open (+ o@p@n // open/opening/e/s
open (b %o@p@n openbaar/openbare/openbaring open (b %o@p@n openbaar/openbare/openbaring
oper (A %o@p@r // operasie/operateur/opereer
_) oper (A %o@p@r // operasie/operateur/opereer
&) opera (sie %o@p@rA: // default stress when operasie 2nd part of compound: hartoperasie, etc.
opera (_ 'o@p@ra // stress: opera/operas opera (_ 'o@p@ra // stress: opera/operas
opinie o@p'ini // opinie/-s opinie o@p'ini // opinie/-s
op (nuut %Op // move default stress: opnuut op (nuut %Op // move default stress: opnuut
op (roerig %Op // oproerig/-e/-heid, but oproer op (roerig %Op // oproerig/-e/-heid, but oproer
op (sienb %Op // opsienbare/opsienbarend op (sienb %Op // opsienbare/opsienbarend
_) opsigteli (k %OpsIx2t@l@ // move default stress: opsigtelik/-e vs. opsig _) opsigteli (k %OpsIx2t@l@ // move default stress: opsigtelik/-e vs. opsig
_) op (sy %Op // move default stress: opsy and compounds
op (standig %Op // move default stress: opstandig/-e/-heid
opti (mA %Opt%i // optimis/-me/-te/-ties/optimaal opti (mA %Opt%i // optimis/-me/-te/-ties/optimaal
op (winde %Op // move default stress: opwindend and derivitives op (winde %Op // move default stress: opwindend and derivitives
_) or (ga %Or // move default stress: orgaan/organe _) or (ga %Or // move default stress: orgaan/organe
organisasie Orx2anis'A:si organisasie Orx2anis'A:si
ose (a %o@S%i // fix stress and s and e sounds: oseaan/oseane and compounds
@) oties 'o@tis // antibioties/eksoties/eroties/neuroties @) oties 'o@tis // antibioties/eksoties/eroties/neuroties
ower (@ o@v@r // lowergroen/betowerend/dowerig/compounds of owerheid ower (@ o@v@r // lowergroen/betowerend/dowerig/compounds of owerheid
oë u@ // oë u@ //
onheil ''OnheIl // stress: onheil/e/onheilbringer/onheilsvoorspelling onheil ''OnheIl // stress: onheil/e/onheilbringer/onheilsvoorspelling
onheil (ig %Onh'eIl // stress: onheilig/e onheil (ig %Onh'eIl // stress: onheilig/e
onheil (spel %Onh%eIl // stress: onheilspellend/e onheil (spel %Onh%eIl // stress: onheilspellend/e
_)on (koste On // restore default stress: onkoste/-s and compounds
_) on (kruid On // restore default stress: onkruid/-doder and similar
_) onnie Oni // onnie/-s; not on- prefix _) onnie Oni // onnie/-s; not on- prefix
onreg (K Onr&x2 // stress: onreg/te/onregmatig onreg (K Onr&x2 // stress: onreg/te/onregmatig
on (regv++ %On // stress: onregverdig/e/heid on (regv++ %On // stress: onregverdig/e/heid
onder (bre %On@r // move default stress: onderbreek/onderbreking onder (bre %On@r // move default stress: onderbreek/onderbreking
onder (druk %On@r // exception to default stress rule onder (druk %On@r // exception to default stress rule
onder (duim %On@r // exception to default stress rule onder (duim %On@r // exception to default stress rule
onder (enC ''On@r_ // default stress: onderent
onder (hande %On@r // move default stress: onderhandel and derivitives onder (hande %On@r // move default stress: onderhandel and derivitives
onder (hor %On@r // exception to default stress rule: onder (hor %On@r // exception to default stress rule:
onder (hou %On@r // move default stress: onderhou/-dend/-e onder (hou %On@r // move default stress: onderhou/-dend/-e
pak (A pak? // pakesel/pakos/verpakafdeling pak (A pak? // pakesel/pakos/verpakafdeling
pakistan p%ak%istan //first a and stress pakistan p%ak%istan //first a and stress
pakke (t p%akE // pakket/-te and compounds pakke (t p%akE // pakket/-te and compounds
_) pan (dem p%an // move default stress: pandemie/-s and compounds
panga paNga // fix g sound: panga/-s panga paNga // fix g sound: panga/-s
_) pan (to p%an // move default stress: pantoffel and compounds/pantoen _) pan (to p%an // move default stress: pantoffel and compounds/pantoen
papaja p%ap'A:ia //papaja and compounds papaja p%ap'A:ia //papaja and compounds
_) pas (AA pas // pasaangeër/pasoortreding _) pas (AA pas // pasaangeër/pasoortreding
pas (op p%as // pasop/pasoppens pas (op p%as // pasop/pasoppens
passa (sier p%as%a // stress: passasier and compounds passa (sier p%as%a // stress: passasier and compounds
_) pa (stei p%a // move default stress: pastei and compounds
pastorie pastur'i // pastorie/-paar/-moeder pastorie pastur'i // pastorie/-paar/-moeder
_) pa (tA p%a // pateties/patee/patent/paterniteit _) pa (tA p%a // pateties/patee/patent/paterniteit
pa (trA p%a // patrollie/patroon/patrys pa (trA p%a // patrollie/patroon/patrys
pawil (joe p%av@l // move default stress and fix a sound: pawiljoen and compounds
pa (Ciljoe p%a% // fix stress: pawiljoen/paviljoen/-e and compounds
polio po@li;u // polio and compounds polio po@li;u // polio and compounds
_) peli (ka p%El%i // move default stress: pelikaan/pelikane
// @) pene (_ p@n@ // geroepene/ontslapene/uitgeworpene // @) pene (_ p@n@ // geroepene/ontslapene/uitgeworpene
pen (dule p%En // move defaul;t stress: pendule/-s pen (dule p%En // move defaul;t stress: pendule/-s
pene (_ p@n@ // geroepenes/ontslapenes/uitgeworpenes pene (_ p@n@ // geroepenes/ontslapenes/uitgeworpenes
perso (neel p%&rs%u // personeel and compounds perso (neel p%&rs%u // personeel and compounds
pervers p@rf&rs // pervers/perversie pervers p@rf&rs // pervers/perversie
_) pe (trA_ pe@ // lengthen e sound: Petro/Petra _) pe (trA_ pe@ // lengthen e sound: Petro/Petra
pe (tunia p@ // fix stress and e sound: petunia/-s
_) pi (la p%i // move default stress: pilaar/pilare/pilatus _) pi (la p%i // move default stress: pilaar/pilare/pilatus
pi (sto p@ // pistool/pistole and compounds pi (sto p@ // pistool/pistole and compounds
pizza pitsa // fix zz sound: pizza and compounds pizza pitsa // fix zz sound: pizza and compounds
pof (add pOf_ // fix o sound: (konings)pofadder/-s pof (add pOf_ // fix o sound: (konings)pofadder/-s
po (liep p%u // fix stress and o sound: poliep/-e/-agtig and compounds of poliep po (liep p%u // fix stress and o sound: poliep/-e/-agtig and compounds of poliep
polisie pul'isi polisie pul'isi
politiek pOl@t'ik
poli (tAAC p%Ol@ // politiek/politoer and compounds
popu ,pOpy popu ,pOpy
_) por (C %pOr //portret portaal etc. _) por (C %pOr //portret portaal etc.
por (sie pOr // restore default stress: porsie/-s/-tjie por (sie pOr // restore default stress: porsie/-s/-tjie
rasse ras@ // e sound of compounds starting with rasse rasse ras@ // e sound of compounds starting with rasse
ribbe (tj r'Ibi ribbe (tj r'Ibi
rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der
_) ri (o r%i // move default stress: riool and compounds/riolering
ritme rItm@ // fix e sound in ritmes/ritmespeler ritme rItm@ // fix e sound in ritmes/ritmespeler
ritu (A r@t%y // ritueel/rituele/ritualisties ritu (A r@t%y // ritueel/rituele/ritualisties
_) rol (A rOl? // oprolaksie/roloorvleueling _) rol (A rOl? // oprolaksie/roloorvleueling
roetine r%utin@ // stress: roetine/-basis/-besoek/-kontrole... roetine r%utin@ // stress: roetine/-basis/-besoek/-kontrole...
_) roode r'o@d@ //roodepoort and other names _) roode r'o@d@ //roodepoort and other names


roman rum'an
roman r%uman
&) ring (_ rIN &) ring (_ rIN
rring r@N // karring/torring rring r@N // karring/torring


&) rm (K r@-m &) rm (K r@-m
@) rn (K r@-n @) rn (K r@-n


rivier r@f'i:r
rivier r@fi:r
_) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc. _) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc.
rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry
rondom rOnt_%Om // rondom/rondomheen/rondomstaner rondom rOnt_%Om // rondom/rondomheen/rondomstaner
reden (ACA r@d@n' // redenasie/s reden (ACA r@d@n' // redenasie/s
_) redi (gA r%Ed%i // redigeer/geredigeer/-de/ongeredigeerde _) redi (gA r%Ed%i // redigeer/geredigeer/-de/ongeredigeerde
refor (m r@f%Or // gereformeerde/reformering/reformasie refor (m r@f%Or // gereformeerde/reformering/reformasie
C) re (gat r@ // fix e sound: fregat/-te and compounds/harregat
regime (_ r@Zi:m // regime/-s and compounds regime (_ r@Zi:m // regime/-s and compounds
reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister
regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list
_) sh S // sh at beginning of word pronounced like English sh _) sh S // sh at beginning of word pronounced like English sh
sj S sj S
sjampanje S%ampanj@ // move default stress: sjampanje and compounds sjampanje S%ampanj@ // move default stress: sjampanje and compounds
sjampoe S%ampu: // fix stress and length of oe: sjampoe and compounds
sjerrie SEri // fix e sound: sjerrie and compounds sjerrie SEri // fix e sound: sjerrie and compounds
sjokolade SOk@l'A:d@ // sjokolade and compounds sjokolade SOk@l'A:d@ // sjokolade and compounds
s (japie s // dorpsjapie/plaasjapie/stadsjapie s (japie s // dorpsjapie/plaasjapie/stadsjapie
sa (tir s%a // move default stress: satire/satiries/-e sa (tir s%a // move default stress: satire/satiries/-e
_) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher _) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher
_) sede se@d@ // sede/-s|-preek _) sede se@d@ // sede/-s|-preek
sei (soen s%eI // move default stress: seisoen and compounds
seker se@k@r // versekering/sekerheid/onsekerheid/sekere seker se@k@r // versekering/sekerheid/onsekerheid/sekere
se (ko s@ // sekond/sekonde/sekondes/sekondant se (ko s@ // sekond/sekonde/sekondes/sekondant
sekre (ta s@kr@ sekre (ta s@kr@
seli (ba s%El%i // move default stress and fix e sound: selibaat/selibate seli (ba s%El%i // move default stress and fix e sound: selibaat/selibate
se (llin s%&' // stress on 'in: (met)gesellin/-ne/-netjie, etc. se (llin s%&' // stress on 'in: (met)gesellin/-ne/-netjie, etc.
@) sel (wig s'&l // stress: (ver)eenselwig and derivitives @) sel (wig s'&l // stress: (ver)eenselwig and derivitives
_) semen (t s@mEn // sementtafel/blad/vierkant
_) seme (Ct s@mE // sementtafel/blad/vierkant/semester/-s
semi (na s%Em%i // seminaar/seminare/seminarium semi (na s%Em%i // seminaar/seminare/seminarium


sening se@n@N // sening/haaksening/heupsening sening se@n@N // sening/haaksening/heupsening
sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds
@) sering s'e@r@N // analisering/kategorisering @) sering s'e@r@N // analisering/kategorisering
@) ses (_ s@s // fix 2 slb. words ending in ses @) ses (_ s@s // fix 2 slb. words ending in ses
snel (_ sn&l // fix e: aansnel/agternasnel/blitssnel/heengesnel/koppesnel/nasnel/verbysnel
sodom (iet s,o@dOm // fix stress sodom (iet s,o@dOm // fix stress
so (ffleu s%u // move default stress and fix o sound: suffleur/soffleuse so (ffleu s%u // move default stress and fix o sound: suffleur/soffleuse
_) soie so@?i // soiets/soiemand _) soie so@?i // soiets/soiemand
C) spel (_ sp&l // many compounds ending in spel after consonant C) spel (_ sp&l // many compounds ending in spel after consonant
&) spele (_ sp'e@l@ &) spele (_ sp'e@l@
spese (ry sp@s@ // spesery and compounds and derivitives spese (ry sp@s@ // spesery and compounds and derivitives
_) spi (ra sp%i // move default stress: spiraal and compounds/spirale/spirakel/spirant, etc.
spoed (@ sput // spoedaflewering/spoedeisend/spoedorder spoed (@ sput // spoedaflewering/spoedeisend/spoedorder
spoed (ig spud // spoedig/-lik/-er/-ste spoed (ig spud // spoedig/-lik/-er/-ste
_) spon (ta sp%On // move default stress: spontaan/spontane _) spon (ta sp%On // move default stress: spontaan/spontane
_) ster st'&r _) ster st'&r
kwik) ster st&:r // kwikstertjie/-s kwik) ster st&:r // kwikstertjie/-s
sterrei st@r'eI sterrei st@r'eI
sterre st'&r@
sterre st&r@
sterretjie st'&rici sterretjie st'&rici


ste (m stE // eliminate one m in derivitives like stemming ste (m stE // eliminate one m in derivitives like stemming
storm stOr@-m storm stOr@-m
strategie strat@x2'i strategie strat@x2'i
streke stre@k@ streke stre@k@
struikel str'Yyk@l // struikelblok/struikelaar/struikelend
stu (de st%y // move default stress stu (de st%y // move default stress




_) ta (ma t%a // tamatie and compounds _) ta (ma t%a // tamatie and compounds
_) ta (mb t%a // tamboer and compounds/tambotie and compounds _) ta (mb t%a // tamboer and compounds/tambotie and compounds
_) tande (C@ t''and@ // fix e sound: tandebeker/-pasta/-poeier/-trekker _) tande (C@ t''and@ // fix e sound: tandebeker/-pasta/-poeier/-trekker
_) tant (e tA~nt // nasalise
_) tant (e tA~nt // nasalise: tante/-tjie/-s
tantes tA~nt@s // nasalise and fix e sound: tantes
taren (ta t%ar@n // fix stress and 1st a sound: tarentaal/tarentale
taverne t%af&rn@ // fix stress and 1st e sound: taverne and compounds taverne t%af&rn@ // fix stress and 1st e sound: taverne and compounds
taver (nier t%af@r // move stress to end: tavernier/-s taver (nier t%af@r // move stress to end: tavernier/-s


_) tibet t%ibEt // move default stress: Tibet/-aans/-e _) tibet t%ibEt // move default stress: Tibet/-aans/-e
@) tief (_ t'if // alternatief/aktief/instinktief/(ak)kumulatief @) tief (_ t'if // alternatief/aktief/instinktief/(ak)kumulatief
@) tiewe (_ t'iv@ // alternatiewe/aktiewe/instinktiewe/(ak)kumulatiewe @) tiewe (_ t'iv@ // alternatiewe/aktiewe/instinktiewe/(ak)kumulatiewe
tink (tink t@Nk // move default stress: tinktinkie/-s
ti (ra t%i // move default stress tiran tirade ti (ra t%i // move default stress tiran tirade
tj tS tj tS
@) tj (a tj // separate tj: agtjarig/blatjang/bontjas/olifantjag/ouditjaar/tweegatjakkals
tj (ie c tj (ie c
_) tj (ie tS _) tj (ie tS
ui) tj tj // uitjaag/uitjou/uitjubel ui) tj tj // uitjaag/uitjou/uitjubel
ui) tjie ci // beskuitjie/fluitjie/ruitjie/uitjie, etc. ui) tjie ci // beskuitjie/fluitjie/ruitjie/uitjie, etc.
_) th (@@ t _) th (@@ t
@) th (C t // drop h: Bothma/Neethling and similar
_) theu t''Y@ // Theuns/Theunis
_) th _^_EN // if only one vowel character _) th _^_EN // if only one vowel character
@) th (_N _^_EN @) th (_N _^_EN




trek tr&k trek tr&k
trekker tr&k@r // voortrekkerleier/Voortrekkerstraat/salaristrekkersvergadering trekker tr&k@r // voortrekkerleier/Voortrekkerstraat/salaristrekkersvergadering
triomf (ant tr%i%Omf // move default stress: triomfantlik/-e
@) trise (_ tr'is@ // aktrise and similar @) trise (_ tr'is@ // aktrise and similar
_) trom (b tr%Om // move default stress: tromboon/trombone/trombose and compounds _) trom (b tr%Om // move default stress: tromboon/trombone/trombose and compounds
_) trom (pet tr%Om // move default stress: trompet/-tte/-tter and compounds _) trom (pet tr%Om // move default stress: trompet/-tte/-tter and compounds
tru (spieë try // fix u sound: truspieël/-tjie/-s tru (spieë try // fix u sound: truspieël/-tjie/-s
ttel t@l // many compounds of bottel/skottelgoed ttel t@l // many compounds of bottel/skottelgoed
tuiglik t'Yyx2l@k // stress: werktuiglik/sintuiglik/-e/-heid tuiglik t'Yyx2l@k // stress: werktuiglik/sintuiglik/-e/-heid
tuimel tYym@l // tuimelend/tuimelaar/tuimelraam and compounds
tuin (ier t%Yyn // move default stress: tuinier and compounds tuin (ier t%Yyn // move default stress: tuinier and compounds
tussen tWs@n // tussenin/tussenbeide/tussenganger tussen tWs@n // tussenin/tussenbeide/tussenganger
tuur t'yr tuur t'yr
teater t%iA:t@r // fix stress and e sound: teater and compounds teater t%iA:t@r // fix stress and e sound: teater and compounds
tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale
teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie
@C) te (gn t& //tegniek/iese and friends
teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e
@C) te (gn t& //tegniek/iese and friends
_) tekere t@ke@r@ // move default stress and correct e sounds _) tekere t@ke@r@ // move default stress and correct e sounds
_) teks (tu t%Eks // move default stress: tekstuur/teksture _) teks (tu t%Eks // move default stress: tekstuur/teksture
_) tele (C t%&l@ // telefoneer/telekommunikasie, etc. _) tele (C t%&l@ // telefoneer/telekommunikasie, etc.
_) teler te@l@r // fix stress and vowel sounds: teler/-s/-y/-svereniging, etc.
@C) te (nk t& ++ //tenk and friends @C) te (nk t& ++ //tenk and friends
@C) te (C t@ /// @C) te (C t@ ///
te (kkie+ tE // fix e sound: tekkie/-s/staptekkies and similar te (kkie+ tE // fix e sound: tekkie/-s/staptekkies and similar
tera (pA tEra' // terapie/terapeutterapeuties tera (pA tEra' // terapie/terapeutterapeuties
_) tereg t@r&x2 // teregwysing/teregstelling/tereghelp/tereg _) tereg t@r&x2 // teregwysing/teregstelling/tereghelp/tereg
_) tever (@ t@f@r _) tever (@ t@f@r
tevrede t@fr'e@d@
as) terende (_ t'e@r@nd@ //kontrasterende as) terende (_ t'e@r@nd@ //kontrasterende
ek) terende (_ t'e@r@nd@ //reflekterende respekterende ek) terende (_ t'e@r@nd@ //reflekterende respekterende
k) te (ring t'e@ //selektering, reflektering etc. k) te (ring t'e@ //selektering, reflektering etc.
uit (druk_N Yyt uit (druk_N Yyt
uit (drukking_ Yyt // but default stress: uit (drukking_ Yyt // but default stress:
uit (drukkings Yyt // and compounds starting with uitdrukkings uit (drukkings Yyt // and compounds starting with uitdrukkings
uit (een %Yyt_ // move default stress: uiteen/-setting/-sit
uit (eenloop Yyt_ // restore default stress: uiteenloop
uiteen (lop %Yyt_%e@n // move stress to 3rd slb.: uiteenlopend/uiteenloping
uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@ uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@
uitsonderli (k %YytsOn@rl@ // move default stress: uitsonderlik/-e vs. uitsonder uitsonderli (k %YytsOn@rl@ // move default stress: uitsonderlik/-e vs. uitsonder
uit (sorteer ''Yyt // remove stress from -eer and place on 1st slb uit (sorteer ''Yyt // remove stress from -eer and place on 1st slb
v (v v (v
@) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig @) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig
uit) vaardig fA:rd@x2 // but uitvaardig uit) vaardig fA:rd@x2 // but uitvaardig
va (doek fa // stress on 1st slb.: vadoek/-e
vagina vax2ina // fix v sound and shorten a sound: vagina/-s vagina vax2ina // fix v sound and shorten a sound: vagina/-s
vagin (A@ v%ax2%in // move default stress: vaginale and similar vagin (A@ v%ax2%in // move default stress: vaginale and similar
vakansie f@k'ansi vakansie f@k'ansi
ven (yn f@n // venyn/venynig ven (yn f@n // venyn/venynig
ver f@r ver f@r
veranda v@randa // fix stress and e sound: veranda and compounds veranda v@randa // fix stress and e sound: veranda and compounds
verby f@rbeI // fix stress: verbykomkans/verbykomslag, etc.
vere (sto fe@r@ // avoid ver prefix: verestoffer/-s and compounds vere (sto fe@r@ // avoid ver prefix: verestoffer/-s and compounds
vere (_ fe@r@ // fix e sound: vere and compounds ending in vere
vi (o f%i // move default stress: viool and compounds/viole vi (o f%i // move default stress: viool and compounds/viole
vio (letK f%i%u // move default stress: violet/-te/-kleurige, etc. vio (letK f%i%u // move default stress: violet/-te/-kleurige, etc.
_) vi (ri v@ // fix stress and v and i sounds: viriel/-eviriliteit _) vi (ri v@ // fix stress and v and i sounds: viriel/-eviriliteit
ver (fris f@r // verfris and derivitives; see rule: verf (C f&rf ver (fris f@r // verfris and derivitives; see rule: verf (C f&rf
verfyn f@rf'eIn verfyn f@rf'eIn
verf (@ f&rf // verfkwas/-voorraad/-emmer and similar verf (@ f&rf // verfkwas/-voorraad/-emmer and similar
_) verf (lou f@rf // verflou/-ing
_) verf (o f@rf // verfoei(lik)/verfomfaai/verfoes, etc.; see rule: verf _) verf (o f@rf // verfoei(lik)/verfomfaai/verfoes, etc.; see rule: verf
verf (rom f@rf // verfrommel/-de/-ing; see rule: verf verf (rom f@rf // verfrommel/-de/-ing; see rule: verf
verf f'&rf
verf f&rf
_) vergesog f'&:r;x2@sOx2 _) vergesog f'&:r;x2@sOx2
_) verlangs f&:rlaNs // fix stress and e sound: verlangs/-e _) verlangs f&:rlaNs // fix stress and e sound: verlangs/-e
veronderste (l f@rOn@rst'& // stress: veronderstel/-ling veronderste (l f@rOn@rst'& // stress: veronderstel/-ling
verte (l f@rt& // oorvertelling/rondvertel and similar verte (l f@rt& // oorvertelling/rondvertel and similar
verter (A f@rte@r // spysvertering and compounds/spysverterende verter (A f@rte@r // spysvertering and compounds/spysverterende
ver (velA f@r // vervelig/verveling (see: _) ver (@P3 f@r ver (velA f@r // vervelig/verveling (see: _) ver (@P3 f@r
verwery f&rv@r%eI // fix stress and e sounds: verwery and compounds like huisverwery
vi (brA v%i // fix v and i sounds: vibrasie/vibreer
vi (cto@ v%i // fix v and i sounds: victoriaans/-e vi (cto@ v%i // fix v and i sounds: victoriaans/-e
video v'idi;u //video and compounds video v'idi;u //video and compounds
vier (kantig f%i:r // move default stress: vierkantig/-e vs. vierkant vier (kantig f%i:r // move default stress: vierkantig/-e vs. vierkant


ville _^_EN ville _^_EN
@ie) vis (_ f@s // fix stress: jellie/kerrievis
vis (A fIs // visarend/walvisolie vis (A fIs // visarend/walvisolie
vise (C f'isi // visevoorsitter/visesekretaris vise (C f'isi // visevoorsitter/visesekretaris
ad) vis (e@ fis' // v and i sounds: adviseer/adviserend/-e ad) vis (e@ fis' // v and i sounds: adviseer/adviserend/-e


_) vasge (@P5 f'asx2@ _) vasge (@P5 f'asx2@
vleuel flY@@l // fix last e sound in vleuel in words like vleuelklavier/tweevleuelig, etc. vleuel flY@@l // fix last e sound in vleuel in words like vleuelklavier/tweevleuelig, etc.
vlieë (nier fl%i@ // move default stress: vlieënier and compounds
@) voerig f'ur@x2 // breedvoerig/uitvoeriger @) voerig f'ur@x2 // breedvoerig/uitvoeriger
volke f'Olk@ // volke/-re: exception to: vo (lC f%O volke f'Olk@ // volke/-re: exception to: vo (lC f%O
volk (ing fOlk // bevolking: exception to: vo (lC f%O volk (ing fOlk // bevolking: exception to: vo (lC f%O
volk (s fOlk // volksliedere/volksbeweging/volksleier and similar volk (s fOlk // volksliedere/volksbeweging/volksleier and similar
vo (lle_ fO // exception to: vo (lC f%O
vo (llA_ fO // volle/vollê/Volla - exception to: vo (lC f%O
volle (dig f%Ole@ // fix stress and e sound: (on)volledig/-e/-heid... volle (dig f%Ole@ // fix stress and e sound: (on)volledig/-e/-heid...
vo (ller fO // exception to: vo (lC f%O vo (ller fO // exception to: vo (lC f%O
volles (_ fOl@s // fix stress and e sound: volles/passievolles, etc. volles (_ fOl@s // fix stress and e sound: volles/passievolles, etc.
vol (maan fOl // exception to: vo (lC f%O vol (maan fOl // exception to: vo (lC f%O
vol (r fOl // volrond/-rooi/-ryp: exception to: vo (lC f%O vol (r fOl // volrond/-rooi/-ryp: exception to: vo (lC f%O
vol (ste_ fOl // exception to: vo (lC f%O vol (ste_ fOl // exception to: vo (lC f%O
vol (sto fOl // volstof/volstoom/volstop/volstort; exception to: vo (lC f%O
voltyds fOlteIts // voltyds/-e: exception to: vo (lC f%O voltyds fOlteIts // voltyds/-e: exception to: vo (lC f%O
volop f'Ol_Op // volop/volopbetaalde volop f'Ol_Op // volop/volopbetaalde
volume v%Olym@ // move default stress and fix o sound: volume and compounds volume v%Olym@ // move default stress and fix o sound: volume and compounds
_) voor (bee+ fo@r // voorbeeld _) voor (bee+ fo@r // voorbeeld


_) voorge (@P6 f'o@rx2@ _) voorge (@P6 f'o@rx2@
voor (sie f%o@r // move default stress: voorsien/-ing
voorspe (l fo@rsp'& // voorspel/voorspelling/voorspelbaar/onvoorspelbaar voorspe (l fo@rsp'& // voorspel/voorspelling/voorspelbaar/onvoorspelbaar
voor (sk fo@r // voorskiet/voorskot/voorskrif/voorskryf voor (sk fo@r // voorskiet/voorskot/voorskrif/voorskryf
voorstedeli (k f%o@rste@d@l@ // move default stress: voorstedelik/-e vs voorstede voorstedeli (k f%o@rste@d@l@ // move default stress: voorstedelik/-e vs voorstede
voort (duren f%o@r_ // fix stress and drop t: voortdurend/-e
voor (trek fo@r // voortrek/voortrekker and compounds voor (trek fo@r // voortrek/voortrekker and compounds
voort (v@@ f%o@rt // voortvarend/voortvlugtige voort (v@@ f%o@rt // voortvarend/voortvlugtige
_) vooruit fo@r'Yyt // vooruit/vooruitsig/vooruitbeplanning _) vooruit fo@r'Yyt // vooruit/vooruitsig/vooruitbeplanning
w v w v
w (w w (w
d) w w d) w w
@C) w (erk v // fix w sound: hardwerkend/handwerk/naaldwerk
AAd) w v // bloedweinig/draadwerk/huidweefsel/landgoedwyn/smeedwerk/skottelgoedwasser AAd) w v // bloedweinig/draadwerk/huidweefsel/landgoedwyn/smeedwerk/skottelgoedwasser
nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal
Cod) w v // fix w sound: godwelgevallig/godweet/godwees
k) w w k) w w
k) w (And v // fix w sound: buikwand/rukwinde
s) w w s) w w
@s) w (al v // fix w sound: dwarswal/gruiswalle/loodswalvis
s) w (eek v // fix w sound: feesweek/kersweek/paasweek/vandeesweek/werksweek s) w (eek v // fix w sound: feesweek/kersweek/paasweek/vandeesweek/werksweek
@s) w (iel v // fix w sound: fietswiel/gewaarwordingswiel and similar compounds
s) w (il v // fix w sound: groepswil/hemelswil/liefdeswil/korswil s) w (il v // fix w sound: groepswil/hemelswil/liefdeswil/korswil
s) w (yf v // fix w sound: viswyf/ganswyfie/mannetjieswyfie s) w (yf v // fix w sound: viswyf/ganswyfie/mannetjieswyfie
ens) w v ens) w v
los) w v // fix w sound: (los)wikkel/woel/wriemel los) w v // fix w sound: (los)wikkel/woel/wriemel
mis) w v // fix w sound: miswaas/misweer/miswurm mis) w v // fix w sound: miswaas/misweer/miswurm
vas) w v // fix w sound: vaswikkel/-woel
vleis) w v // fix w sound: vleisweefsel/-woekering/-wange
ooC) w v // booswig/grootwild/ooswaarts/ ooC) w v // booswig/grootwild/ooswaarts/
out) w v // houtwerk/soutwater and similar out) w v // houtwerk/soutwater and similar
yd) w v // fix w sound: sluittydwerk/(wa)wydwakker yd) w v // fix w sound: sluittydwerk/(wa)wydwakker
@s) ware vA:r@ // kruideniersware/bronsware/glasware/kombuisware @s) ware vA:r@ // kruideniersware/bronsware/glasware/kombuisware
bes) ware wA:r@ // geloofsbesware/gewetensbesware bes) ware wA:r@ // geloofsbesware/gewetensbesware
@C) w (arm v // fix w sound: snikwarm/te @C) w (arm v // fix w sound: snikwarm/te
@s) was (K vas // fix w sound: ertswassery/kerswas/kombuiswasbak
@k) water vA:t@r // drinkwater/kalkwater/reukwater @k) water vA:t@r // drinkwater/kalkwater/reukwater
wat (wond v%at // move default stress: watwonders/-e wat (wond v%at // move default stress: watwonders/-e
_) wa (wy vA: // fix stress and a sound: // wawyd/wawydwakker, etc. _) wa (wy vA: // fix stress and a sound: // wawyd/wawydwakker, etc.
wn _^_EN // names containing town/Brackendowns/Brown wn _^_EN // names containing town/Brackendowns/Brown
worth _^_EN worth _^_EN
wood _^_EN wood _^_EN
@C) w (ooC v // fix w sound: eenmanswoonstel/handelswoorde/openingswoord/privaatwoonstel
@) ws (_N _^_EN @) ws (_N _^_EN
@) w (_N _^_EN @) w (_N _^_EN
@) werste vIrst@ @) werste vIrst@
woe (styn v%u // move default stress: woestyn and compounds woe (styn v%u // move default stress: woestyn and compounds
wolke vOlk@ // nimbuswolke/wolkekrabber wolke vOlk@ // nimbuswolke/wolkekrabber
woorde vo@rd@ woorde vo@rd@
@C) w (urm v // fix w sound: erdwurm/-s/-agtig, etc.
w (yser v //padwyser and many others with wyser in compounds w (yser v //padwyser and many others with wyser in compounds
nt) w (A v nt) w (A v


ê (r &: ê (r &:
êr (_ ''&:r // stress at end of wrds ending in êr: arbitrêr/dissiplinêr, etc. êr (_ ''&:r // stress at end of wrds ending in êr: arbitrêr/dissiplinêr, etc.
êre (_ ''&:r@ // stress of penultimate slb of wrds ending in êre: elementêre/dissiplinêre êre (_ ''&:r@ // stress of penultimate slb of wrds ending in êre: elementêre/dissiplinêre
b) êre (_ &:r@ // but wrds ending in bêre take default stress: wegbêre
sk) êr (+ &:r // but wrds containing skêr follow normal stress: skaapskêr sk) êr (+ &:r // but wrds containing skêr follow normal stress: skaapskêr
îe 3: îe 3:
ge) ë (rf & // oorgeëf/-de ge) ë (rf & // oorgeëf/-de
ë (teit @ // fix stress and e sound: variëteit and compounds ë (teit @ // fix stress and e sound: variëteit and compounds
ïgnoreer ix2nur'e@r // geïgnoreer ïgnoreer ix2nur'e@r // geïgnoreer
ï (n @ // geïnteresseerd
be) ï (nC 'I // beïndruk/beïnvloed
ï (nt @ // geïnteresseerd
ï (nC 'I // beïndruk/beïnvloed
ïsol %is%ul // geïsoleer/-d ïsol %is%ul // geïsoleer/-d
ô O: ô O:
ûe W@ // brûe/rû ûe W@ // brûe/rû

+ 3
- 0
dictsource/hr_list View File

_dpt _:z'a*Ez_ _dpt _:z'a*Ez_




// not Roman numerals
vi ti



// Abbreviations // Abbreviations
aaa $abbrev aaa $abbrev

+ 4
- 2
phsource/compile_report View File

nl 26 117 nl 26 117
pl 15 107 pl 15 107
sk 29 125 sk 29 125
cs 5 125
cs 6 125
hr 19 129 hr 19 129
mk 3 130 mk 3 130
sr 2 129 sr 2 129
sv 25 118 sv 25 118
no 28 122 no 28 122
is 32 121 is 32 121
vi 41 133
vi 42 134
zhy 40 129 zhy 40 129
sw 14 105 sw 14 105


2 dzh/dz_pzd_ base hi 2 dzh/dz_pzd_ base hi
6 dzh/xdzh base hi mk ru 6 dzh/xdzh base hi mk ru
2 dzh/xdz_pzd base hi 2 dzh/xdz_pzd base hi
1 envelope/p_512 vi
4 envelope/p_fall vi zhy 4 envelope/p_fall vi zhy
1 envelope/p_fallrise vi 1 envelope/p_fallrise vi
3 envelope/p_level vi zhy 3 envelope/p_level vi zhy
10 vdiph/ooi en en_n en_us en_rp cy eo fi no zhy 10 vdiph/ooi en en_n en_us en_rp cy eo fi no zhy
1 vdiph/ooi_2 af 1 vdiph/ooi_2 af
1 vdiph/ooi_3 en_wm 1 vdiph/ooi_3 en_wm
1 vdiph/oou cs
2 vdiph/ou fi zhy 2 vdiph/ou fi zhy
2 vdiph/ou_2 sk ro 2 vdiph/ou_2 sk ro
2 vdiph/ou_3 is 2 vdiph/ou_3 is

+ 3
- 1
phsource/mbrola/cs View File

0 R^ NULL 0 r' 0 R^ NULL 0 r'
0 R^/ NULL 0 r' 0 R^/ NULL 0 r'
0 c NULL 0 t' 0 c NULL 0 t'
0 oU NULL 0 o
0 eI NULL 60 e i
0 aU NULL 60 a u 0 aU NULL 60 a u
0 eU NULL 60 e u
0 oU NULL 60 o u
0 N NULL 0 n 0 N NULL 0 n
0 Q NULL 0 x 0 Q NULL 0 x



+ 6
- 0
phsource/ph_czech View File

formants vowel/u formants vowel/u
endphoneme endphoneme


phoneme oU
vowel starttype (o) endtype (u)
length 260
formants vdiph/oou
endphoneme






+ 1
- 1
phsource/ph_pt_brazil View File

vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 200 length 200
formants vnasal/a#_n formants vnasal/a#_n
reduceto & 4
// reduceto & 4
endphoneme endphoneme


phoneme &U~ phoneme &U~

+ 6
- 0
phsource/ph_vi View File

endphoneme endphoneme




phoneme 8 // TEST
stress
length 18
tone 30 6 envelope/p_512 NULL
endphoneme

// Vowels // Vowels
//======= //=======



+ 2
- 2
phsource/phonemes View File

phonemetable sw base phonemetable sw base
include ph_swahili include ph_swahili



//phonemetable basef base //phonemetable basef base
//include pf //include pf

//phonemetable f_en basef //phonemetable f_en basef
//include pf_english //include pf_english



BIN
phsource/vwl_en/u View File


+ 8
- 8
platforms/windows/make_espeak.iss View File

[Setup] [Setup]
AppName=eSpeak AppName=eSpeak
AppVerName=eSpeak version 1.29
AppVerName=eSpeak version 1.29.02
DefaultDirName={pf}\eSpeak DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak DefaultGroupName=eSpeak
v2=or press Enter to accept defaults v2=or press Enter to accept defaults
v3=Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+f3 v3=Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+f3
bs.v1=Odaberite jezik kojeg �elite instalirati
bs.v1=Odaberite jezik kojeg želite instalirati
bs.v2=ili pritisnite Enter za prihvat zadanih. bs.v2=ili pritisnite Enter za prihvat zadanih.
bs.v3=Upi�ite, npr. bs (za Bosanski) ili s varjantom: bs+f3
bs.v3=Upišite, npr. bs (za Bosanski) ili s varjantom: bs+f3
hr.v1=Odaberite jezik kojeg �elite instalirati
hr.v1=Odaberite jezik kojeg želite instalirati
hr.v2=ili pritisnite Enter za prihvat zadanih. hr.v2=ili pritisnite Enter za prihvat zadanih.
hr.v3=Upi�ite, npr. hr (za Hrvatski) ili s varjantom: hr+f3
hr.v3=Upišite, npr. hr (za Hrvatski) ili s varjantom: hr+f3
pt.v1=Seleccione as vozes que pretende instalar pt.v1=Seleccione as vozes que pretende instalar
pt.v2=ou precione enter para aceitar as predefinidas. pt.v2=ou precione enter para aceitar as predefinidas.
pt.v3=Introduza os nomes das vozes, ex: (Brazil) pt (ou Portugal) pt-pt, ou com outras caracter�sticas, ex: pt+f3
pt.v3=Introduza os nomes das vozes, ex: (Brazil) pt (ou Portugal) pt-pt, ou com outras caracter?sticas, ex: pt+f3
sr.v1=Molimo vas da odaberete glasove, koje �elite da instalirate
sr.v1=Molimo vas da odaberete glasove, koje želite da instalirate
sr.v2=ili pritisnite Enter za instalaciju podrazumevanih glasova. sr.v2=ili pritisnite Enter za instalaciju podrazumevanih glasova.
sr.v3=Da odaberetd glas, unesite ime glasa koje �elite instalirati, na primer sr, ili sr+f3
sr.v3=Da odaberete glas, unesite ime glasa kojeg želite instalirati, na primer sr, ili sr+f3
[Code] [Code]

+ 1
- 1
src/prosodydisplay.cpp View File

menu_envelopes->Append(0x102,_T("Fall-rise")); menu_envelopes->Append(0x102,_T("Fall-rise"));
menu_envelopes->Append(0x103,_T("Fall-rise (R)")); menu_envelopes->Append(0x103,_T("Fall-rise (R)"));
menu_envelopes->Append(0x104,_T("Fall-2")); menu_envelopes->Append(0x104,_T("Fall-2"));
menu_envelopes->Append(0x105,_T("Fall-3"));
menu_envelopes->Append(0x106,_T("Fall-3"));


menu_prosody = new wxMenu; menu_prosody = new wxMenu;
menu_prosody->Append(1,_T("Pitch envelope"),menu_envelopes); menu_prosody->Append(1,_T("Pitch envelope"),menu_envelopes);

+ 8
- 15
src/readclause.cpp View File

#include <locale.h> #include <locale.h>
#define N_XML_BUF 256 #define N_XML_BUF 256


espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant);


char *xmlbase = ""; // base URL from <speak> char *xmlbase = ""; // base URL from <speak>


SSML_STACK ssml_stack[N_SSML_STACK]; SSML_STACK ssml_stack[N_SSML_STACK];


char current_voice_id[40] = {0}; char current_voice_id[40] = {0};
int current_voice_variant = 0;




#define N_PARAM_STACK 20 #define N_PARAM_STACK 20






static char *VoiceFromStack(int *voice_variant)
{//============================================
static char *VoiceFromStack()
{//==========================
// Use the voice properties from the SSML stack to choose a voice, and switch // Use the voice properties from the SSML stack to choose a voice, and switch
// to that voice if it's not the current voice // to that voice if it's not the current voice
int ix; int ix;
SSML_STACK *sp; SSML_STACK *sp;
espeak_VOICE *v;
char *v_id;
espeak_VOICE voice_select; espeak_VOICE voice_select;
int variant;
char voice_name[40]; char voice_name[40];
char language[40]; char language[40];




voice_select.name = voice_name; voice_select.name = voice_name;
voice_select.languages = language; voice_select.languages = language;
v = SelectVoice(&voice_select,&variant);
*voice_variant = variant;
if((v == NULL) || (v->identifier == NULL))
v_id = SelectVoice(&voice_select);
if(v_id == NULL)
return("default"); return("default");
return(v->identifier);
return(v_id);
} // end of VoiceFromStack } // end of VoiceFromStack




wchar_t *age; wchar_t *age;
wchar_t *variant; wchar_t *variant;
char *new_voice_id; char *new_voice_id;
int voice_variant;


static const MNEM_TAB mnem_gender[] = { static const MNEM_TAB mnem_gender[] = {
{"male", 1}, {"male", 1},
ssml_sp->tag_type = tag_type; ssml_sp->tag_type = tag_type;
} }


new_voice_id = VoiceFromStack(&voice_variant);
if((strcmp(new_voice_id,current_voice_id) != 0) || (current_voice_variant != voice_variant))
new_voice_id = VoiceFromStack();
if(strcmp(new_voice_id,current_voice_id) != 0)
{ {
// add an embedded command to change the voice // add an embedded command to change the voice
strcpy(current_voice_id,new_voice_id); strcpy(current_voice_id,new_voice_id);
current_voice_variant = voice_variant;
return(CLAUSE_BIT_VOICE); // change of voice return(CLAUSE_BIT_VOICE); // change of voice
} }


if(terminator & CLAUSE_BIT_VOICE) if(terminator & CLAUSE_BIT_VOICE)
{ {
// a change in voice, write the new voice name to the end of the buf // a change in voice, write the new voice name to the end of the buf
buf[ix++] = current_voice_variant;
p = current_voice_id; p = current_voice_id;
while((*p != 0) && (ix < (n_buf-1))) while((*p != 0) && (ix < (n_buf-1)))
{ {

+ 1
- 3
src/speak.cpp View File



void DisplayVoices(FILE *f_out, char *language); void DisplayVoices(FILE *f_out, char *language);


voice_t voice_data;
USHORT voice_pcnt[N_PEAKS+1][3]; USHORT voice_pcnt[N_PEAKS+1][3];
voice_t *voice;






{ {
PitchAdjust(pitch_adjustment); PitchAdjust(pitch_adjustment);
} }
WavegenSetVoice(voice);
DoVoiceChange(voice);


if(filename[0]==0) if(filename[0]==0)
{ {

+ 3
- 6
src/speak_lib.cpp View File

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


unsigned char *outbuf=NULL; unsigned char *outbuf=NULL;
extern espeak_VOICE *voice_selected;
extern espeak_VOICE voice_selected;


espeak_EVENT *event_list=NULL; espeak_EVENT *event_list=NULL;
int event_list_ix=0; int event_list_ix=0;


char path_home[N_PATH_HOME]; // this is the espeak-data directory char path_home[N_PATH_HOME]; // this is the espeak-data directory


voice_t voicedata;
voice_t *voice = &voicedata;



#ifdef USE_ASYNC #ifdef USE_ASYNC


fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x)\n",result,version_phdata); fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x)\n",result,version_phdata);
} }


voice_selected = NULL;
memset(&voice_selected,0,sizeof(voice_selected));
SetVoiceStack(NULL); SetVoiceStack(NULL);
SynthesizeInit(); SynthesizeInit();
InitNamedata(); InitNamedata();
SetParameter(espeakVOLUME,100,0); SetParameter(espeakVOLUME,100,0);
SetParameter(espeakCAPITALS,option_capitals,0); SetParameter(espeakCAPITALS,option_capitals,0);
SetParameter(espeakPUNCTUATION,option_punctuation,0); SetParameter(espeakPUNCTUATION,option_punctuation,0);
WavegenSetVoice(voice);
DoVoiceChange(voice);
#ifdef USE_ASYNC #ifdef USE_ASYNC
fifo_init(); fifo_init();

+ 0
- 2
src/speak_riscos.cpp View File





USHORT voice_pcnt[N_PEAKS+1][3]; USHORT voice_pcnt[N_PEAKS+1][3];
voice_t voice_data;
voice_t *voice;


static const char *help_text = static const char *help_text =
"\nspeak [options] [\"<words>\"]\n\n" "\nspeak [options] [\"<words>\"]\n\n"

+ 1
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.29.01 04.Sep.07";
const char *version_string = "1.29.02 10.Sep.07";
const int version_phdata = 0x012901; const int version_phdata = 0x012901;


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

+ 16
- 17
src/synthesize.cpp View File

} // end of Synthesize::DoMarker } // end of Synthesize::DoMarker




static void DoVoice(voice_t *v)
{//============================
void DoVoiceChange(voice_t *v)
{//===========================
// allocate memory for a copy of the voice data, and free it in wavegenfill() // allocate memory for a copy of the voice data, and free it in wavegenfill()
voice_t *v2; voice_t *v2;


*n_ph = 0; *n_ph = 0;
} }


if(new_voice)
{
// finished the current clause, now change the voice if there was an embedded
// change voice command at the end of it (i.e. clause was broken at the change voice command)
DoVoice(new_voice);
new_voice = NULL;
}
return(0); // finished the phoneme list return(0); // finished the phoneme list
} // end of Generate } // end of Generate


translator->CalcPitches(clause_tone); translator->CalcPitches(clause_tone);
translator->CalcLengths(); translator->CalcLengths();


if(voice_change != NULL)
{
// voice change at the end of the clause (i.e. clause was terminated by a voice change)
new_voice = LoadVoiceVariant(voice_change+1,voice_change[0]); // add a Voice instruction to wavegen at the end of the clause
if(new_voice != NULL)
voice = new_voice;
}

if(skipping_text) if(skipping_text)
{ {
n_phoneme_list = 0; n_phoneme_list = 0;
Generate(phoneme_list,&n_phoneme_list,0); Generate(phoneme_list,&n_phoneme_list,0);
WavegenOpenSound(); WavegenOpenSound();


if(voice_change != NULL)
{
// voice change at the end of the clause (i.e. clause was terminated by a voice change)
new_voice = LoadVoiceVariant(voice_change,0); // add a Voice instruction to wavegen at the end of the clause
}

if(new_voice)
{
// finished the current clause, now change the voice if there was an embedded
// change voice command at the end of it (i.e. clause was broken at the change voice command)
DoVoiceChange(voice);
new_voice = NULL;
}

return(1); return(1);
} // end of SpeakNextClause } // end of SpeakNextClause



+ 3
- 1
src/voice.h View File





typedef struct { typedef struct {
char name[40];
char v_name[40];


int phoneme_tab_ix; // phoneme table number int phoneme_tab_ix; // phoneme table number
int pitch_base; // Hz<<12 int pitch_base; // Hz<<12
extern voice_t *voice; extern voice_t *voice;
extern int tone_points[10]; extern int tone_points[10];


char *SelectVoice(espeak_VOICE *voice_select);
voice_t *LoadVoice(const char *voice_name, int control); voice_t *LoadVoice(const char *voice_name, int control);
voice_t *LoadVoiceVariant(const char *voice_name, int variant); voice_t *LoadVoiceVariant(const char *voice_name, int variant);
void DoVoiceChange(voice_t *v);
void WavegenSetVoice(voice_t *v); void WavegenSetVoice(voice_t *v);
void ReadTonePoints(char *string, int *tone_pts); void ReadTonePoints(char *string, int *tone_pts);



+ 127
- 120
src/voices.cpp View File

static espeak_VOICE *voices_list[N_VOICES_LIST]; static espeak_VOICE *voices_list[N_VOICES_LIST];
static int len_path_voices; static int len_path_voices;


espeak_VOICE *voice_selected = NULL;
espeak_VOICE *first_voice = NULL;
espeak_VOICE voice_selected;






{"l_length_mods", 0x100+LOPT_LENGTH_MODS}, {"l_length_mods", 0x100+LOPT_LENGTH_MODS},
{NULL, 0} }; {NULL, 0} };


#define N_VOICES 100
static int n_voices_tab = 0;
static voice_t *voices_tab[N_VOICES];

#define N_VOICE_VARIANTS 12 #define N_VOICE_VARIANTS 12
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,0}; const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,0};
const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0}; const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0};
const char *variant_lists[3] = {variants_either, variants_male, variants_female}; const char *variant_lists[3] = {variants_either, variants_male, variants_female};


voice_t voicedata;
voice_t *voice = &voicedata;




void SetToneAdjust(voice_t *voice, int *tone_pts) void SetToneAdjust(voice_t *voice, int *tone_pts)
} }




static voice_t *VoiceLookup(char *voicename)
{//=========================================
// Keep a cache of previously used voices.
int ix;
voice_t *v;

for(ix=0; ix < N_VOICES; ix++)
{
if((ix < n_voices_tab) && (strcmp(voices_tab[ix]->name,voicename)==0))
{
return(voices_tab[ix]); // found the entry for the specified voice name
}

if(ix == n_voices_tab)
{
// found a free slot
v = (voice_t *)Alloc(sizeof(voice_t));
if(v == NULL)
return(NULL);
voices_tab[n_voices_tab++] = v;
strncpy0(v->name,voicename,sizeof(v->name));
return(v);
}
}
return(voices_tab[0]); // table is full, reuse the first entry
} // end of VoiceLookup












voice_t *LoadVoice(const char *vname, int control) voice_t *LoadVoice(const char *vname, int control)
{//==========================================
{//===============================================
// control, bit 0 1= no_default // control, bit 0 1= no_default
// bit 1 1 = change tone only, not language // bit 1 1 = change tone only, not language
// bit 2 1 = don't report error on LoadDictionary // bit 2 1 = don't report error on LoadDictionary
int n; int n;
int value; int value;
int error = 0; int error = 0;
int langix = 0;
int tone_only = control & 2; int tone_only = control & 2;
int language_set = 0; int language_set = 0;
int phonemes_set = 0; int phonemes_set = 0;
int conditional_rules = 0; int conditional_rules = 0;
LANGUAGE_OPTIONS *langopts = NULL; LANGUAGE_OPTIONS *langopts = NULL;


voice_t *v;
Translator *new_translator = NULL; Translator *new_translator = NULL;


char voicename[40]; char voicename[40];
int pitch1; int pitch1;
int pitch2; int pitch2;


static char voice_identifier[40]; // file name for voice_selected
static char voice_name[40]; // voice name for voice_selected
static char voice_languages[100]; // list of languages and priorities for voice_selected


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


if((first_voice == NULL) && (f_voice != NULL))
{
first_voice = ReadVoiceFile(f_voice,buf+strlen(path_voices),voicename);
rewind(f_voice);
}


if(!tone_only && (translator != NULL)) if(!tone_only && (translator != NULL))
{ {
delete translator; delete translator;


if(!tone_only) if(!tone_only)
{ {
if((v = VoiceLookup(voicename)) != NULL)
voice = v;
voice = &voicedata;
strncpy0(voice_identifier,vname,sizeof(voice_identifier));
voice_name[0] = 0;
voice_languages[0] = 0;

voice_selected.identifier = voice_identifier;
voice_selected.name = voice_name;
voice_selected.languages = voice_languages;
}
else
{
// append the variant file name to the voice identifier
if((p = strchr(voice_identifier,'+')) != NULL)
*p = 0; // remove previous variant name
sprintf(buf,"+%s",&vname[3]); // omit !v/ from the variant filename
strcat(voice_identifier,buf);
} }
VoiceReset(tone_only); VoiceReset(tone_only);


switch(key) switch(key)
{ {
case V_LANGUAGE: case V_LANGUAGE:
// only act on the first language line
if(language_set || tone_only)
break;

sscanf(p,"%s",language_name);
if(strcmp(language_name,"variant")==0)
break;

language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);

if(new_translator != NULL)
delete new_translator;
{
unsigned int len;
int priority;


new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
if(tone_only)
break;
priority = DEFAULT_LANGUAGE_PRIORITY;
language_name[0] = 0;
sscanf(p,"%s %d",language_name,&priority);
if(strcmp(language_name,"variant") == 0)
break;
len = strlen(language_name) + 2;
// check for space in languages[]
if(len < (sizeof(voice_languages)-langix-1))
{
voice_languages[langix] = priority;
strcpy(&voice_languages[langix+1],language_name);
langix += len;
}
// only act on the first language line
if(language_set == 0)
{
language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);
if(new_translator != NULL)
delete new_translator;
new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
}
}
break; break;


case V_NAME: case V_NAME:
if(tone_only == 0)
{
while(isspace(*p)) p++;
strncpy0(voice_name,p,sizeof(voice_name));
}
break;

case V_GENDER: case V_GENDER:
{
int age;
char vgender[80];
sscanf(p,"%s %d",vgender,&age);
voice_selected.gender = LookupMnem(genders,vgender);
voice_selected.age = age;
}
break; break;


case V_TRANSLATOR: // language_name
case V_TRANSLATOR:
if(tone_only) break; if(tone_only) break;


sscanf(p,"%s",translator_name); sscanf(p,"%s",translator_name);
return(NULL); // no dictionary loaded return(NULL); // no dictionary loaded


new_translator->dict_condition = conditional_rules; new_translator->dict_condition = conditional_rules;

voice_languages[langix] = 0;
} }


langopts = &new_translator->langopts; langopts = &new_translator->langopts;


variant_name[0] = 0; variant_name[0] = 0;


if((p = strchr(vname,'+')) != NULL)
if(vname != NULL)
{ {
// The voice name has a +variant suffix
*p++ = 0; // delete the suffix from the voice name
if(isdigit(*p))
if((p = strchr(vname,'+')) != NULL)
{ {
variant_num = atoi(p); // variant number
// The voice name has a +variant suffix
*p++ = 0; // delete the suffix from the voice name
if(isdigit(*p))
{
variant_num = atoi(p); // variant number
}
else
{
// voice variant name, not number
strcpy(variant_name,"!v/");
strncpy0(&variant_name[3],p,sizeof(variant_name)-3);
}
} }
else
{
// voice variant name, not number
strcpy(variant_name,"!v/");
strncpy0(&variant_name[3],p,sizeof(variant_name)-3);
}
} }
if(variant_num > 0) if(variant_num > 0)






espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant)
{//================================================================
char *SelectVoice(espeak_VOICE *voice_select)
{//==========================================
// Returns a path within espeak-voices, with a possible +variant suffix // Returns a path within espeak-voices, with a possible +variant suffix
// variant is an output-only parameter // variant is an output-only parameter
int nv; // number of candidates int nv; // number of candidates
int gender; int gender;
int skip; int skip;
int aged=1; int aged=1;
char *variant_name;
const char *p, *p_start; const char *p, *p_start;
espeak_VOICE *vp = NULL; espeak_VOICE *vp = NULL;
espeak_VOICE *vp2; espeak_VOICE *vp2;
espeak_VOICE *voices[N_VOICES_LIST]; // list of candidates espeak_VOICE *voices[N_VOICES_LIST]; // list of candidates
espeak_VOICE *voices2[N_VOICES_LIST+N_VOICE_VARIANTS]; espeak_VOICE *voices2[N_VOICES_LIST+N_VOICE_VARIANTS];
static espeak_VOICE voice_variants[N_VOICE_VARIANTS]; static espeak_VOICE voice_variants[N_VOICE_VARIANTS];
static char voice_id[50];


memcpy(&voice_select2,voice_select,sizeof(voice_select2)); memcpy(&voice_select2,voice_select,sizeof(voice_select2));


if((voice_select2.languages == NULL) || (voice_select2.languages[0] == 0)) if((voice_select2.languages == NULL) || (voice_select2.languages[0] == 0))
{ {
// no language is specified. Get language from the named voice // no language is specified. Get language from the named voice
int var;
char *p2;
static char buf[60]; static char buf[60];
if(voice_select2.name == NULL) if(voice_select2.name == NULL)
} }
strncpy0(buf,voice_select2.name,sizeof(buf)); strncpy0(buf,voice_select2.name,sizeof(buf));
if((p2 = strchr(buf,'+')) != NULL)
{
// remove the voice variant suffix, from eg. en+3
*p2 = 0;
var = atoi(p2+1);
}
variant_name = ExtractVoiceVariantName(buf,0);

vp = SelectVoiceByName(voices_list,buf); vp = SelectVoiceByName(voices_list,buf);
if(vp != NULL) if(vp != NULL)
{ {


if((voice_select2.gender==0) && (voice_select2.age==0) && (voice_select2.variant==0)) if((voice_select2.gender==0) && (voice_select2.age==0) && (voice_select2.variant==0))
{ {
*variant = var;
return(vp);
if(variant_name[0] != 0)
{
sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); // omit the !v/ from variant_name
return(voice_id);
}

return(vp->identifier);
} }
} }
} }


// index the sorted list by the required variant number // index the sorted list by the required variant number
vp = voices2[voice_select2.variant % ix2]; vp = voices2[voice_select2.variant % ix2];
*variant = vp->variant;
return(vp);

if(vp->variant != 0)
{
variant_name = ExtractVoiceVariantName(NULL,vp->variant);
sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]);
return(variant_name);
}

return(vp->identifier);
} // end of SelectVoice } // end of SelectVoice




// first check for a voice with this filename // first check for a voice with this filename
// This may avoid the need to call espeak_ListVoices(). // This may avoid the need to call espeak_ListVoices().


if((first_voice == NULL) && (LoadVoice(buf,1) != NULL))
if(LoadVoice(buf,1) != NULL)
{ {
voice_selected = first_voice;

if(variant_name[0] != 0) if(variant_name[0] != 0)
{ {
LoadVoice(variant_name,2); LoadVoice(variant_name,2);
} }


WavegenSetVoice(voice);
DoVoiceChange(voice);
SetVoiceStack(&voice_selector); SetVoiceStack(&voice_selector);
return(EE_OK); return(EE_OK);
} }
{ {
if(LoadVoice(v->identifier,0) != NULL) if(LoadVoice(v->identifier,0) != NULL)
{ {
voice_selected = v;

if(variant_name[0] != 0) if(variant_name[0] != 0)
{ {
LoadVoice(variant_name,2); LoadVoice(variant_name,2);
} }
WavegenSetVoice(voice);
DoVoiceChange(voice);
SetVoiceStack(&voice_selector); SetVoiceStack(&voice_selector);
return(EE_OK); return(EE_OK);
} }


espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector) espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector)
{//============================================================ {//============================================================
int variant;
char *voice_id;


voice_selected = SelectVoice(voice_selector,&variant);
voice_id = SelectVoice(voice_selector);


LoadVoiceVariant(voice_selected->identifier,variant);
WavegenSetVoice(voice);
LoadVoiceVariant(voice_id,0);
DoVoiceChange(voice);
SetVoiceStack(voice_selector); SetVoiceStack(voice_selector);


return(EE_OK); return(EE_OK);
int j; int j;
espeak_VOICE *v; espeak_VOICE *v;
static espeak_VOICE *voices[N_VOICES_LIST]; static espeak_VOICE *voices[N_VOICES_LIST];
char selected_voice_id[80];
char path_voices[sizeof(path_home)+12]; char path_voices[sizeof(path_home)+12];


// free previous voice list data // free previous voice list data
if((voice_selected != NULL) && (voice_selected->identifier != NULL))
strncpy0(selected_voice_id,voice_selected->identifier,sizeof(selected_voice_id));
else
selected_voice_id[0] = 0;
voice_selected = NULL;


for(ix=0; ix<n_voices_list; ix++) for(ix=0; ix<n_voices_list; ix++)
{ {
qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *),
(int (__cdecl *)(const void *,const void *))VoiceNameSorter); (int (__cdecl *)(const void *,const void *))VoiceNameSorter);


// restore pointer to current voice
if(selected_voice_id[0] != 0)
{
for(ix=0; ix<n_voices_list; ix++)
{
if(strcmp(selected_voice_id, voices_list[ix]->identifier)==0)
{
voice_selected = voices_list[ix];
break;
}
}
}


if(voice_spec) if(voice_spec)
{ {


ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void)
{//================================================== {//==================================================
return(voice_selected);
return(&voice_selected);
} }


#pragma GCC visibility pop #pragma GCC visibility pop

Loading…
Cancel
Save