[1.41.32]

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


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@230 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2009-11-09 13:11:13 +00:00
parent 075bfe9006
commit f2eed5229e
51 changed files with 2553 additions and 1633 deletions
+65 -24
View File
@@ -301,6 +301,7 @@ moorreesburg mur'e@sbWrx2
(thaba nchu) tab'A:||ntSu
europa Y@r'o@pa
nigel _^_EN
nineve nIn@fi
outeniekwa @Ut@n'ikwa
oxford _^_EN
pelindaba p&l@nd'A:ba
@@ -352,9 +353,12 @@ annalet anal'Et
André 'andreI
annette an'Et
antoinette antun'Et
aristoteles arist'o@t@lEs
badenhorst bA:d@nhOrst
barbara bA:b@ra
basson $2
bea bi:ja
belcher _^_EN
benade b@nA:di
benjamin bEndZ@m@n
bennett bEn@t
@@ -364,6 +368,7 @@ betsie bEtsi
beyers beI@rs
blignault blIx2n@Ut
blomerus blum'e@rWs
blum blum
botha bo@ta
bouwer b@U@r
brian _^_EN
@@ -371,6 +376,7 @@ bredenkamp bre@d@nkamp
bruwer bruw'&:r
caesar siz@r
carl kA:r@L
carol _^_EN
casanova kasan'o@va
cecil sEs@l
cecile s@si:l
@@ -380,6 +386,7 @@ charles _^_EN
charlie tSA:li
charmaine SA:m'eI:n
chopin S%OpA~
clark _^_EN
conradie $2
chris krIs
christo krIstu
@@ -392,11 +399,11 @@ christine kr@st'i:n
cindy sIndi
coetzee kuts'e@
cronjé krOnj'e@
cussons kas@ns
cynthia _^_EN
dalene dal'e@n
daniël d'A:ni:@l
#zzz
darwin _^_EN
daniël d'A:ni:@l
david _^_EN
(da vinci) da||v'intSi
debora d@bo@ra
@@ -423,17 +430,20 @@ elmien $2
elsabe &ls@bi
elsabé &ls@bi
emmarentia Emar'e~nSja
engelbrecht EN@lbr&x2t
erasmus $2
ernest _^_EN
esegiël is'e@x2i:@l
esegiël is'e@x2i: @l
estelle %ist&l
etienne Eti@n
eugene judZ'i:n
eugène yZ'En
farao fA:ro@
ferreira f@r&:r@
filemon f'il@mOn
filemon f'il@mOn
fischer fiS@r
floris $1
fouché fuS'e@
fourie fur'i
francina $2
francois franSwa
@@ -445,6 +455,7 @@ georgina dZO:dZ'ina
gerhard x2&rart
gerhardus $2
gertruida $2
gilbert _^_EN
gloria glO:ria
grange x2rA:nsi
grové x2ruv'e@
@@ -466,7 +477,6 @@ ingrid iNgr@d
isabel is@b&l
iskariot isk'ariOt
jaco jaku
jacques ZA:k
james _^_EN
jane _^_EN
Jean ZA~n $capital
@@ -474,11 +484,15 @@ jesebel je@s@b&l
jimmy _^_EN
joan _^_EN
joey dZ@Ui
johl jo@l
jones _^_EN
jordaan $2
joris $1
josef jo@s@f
josephina jo@s@f'ina
juanita juan'ita
julia _^_EN
khayyam kaj'am
kelvin _^_EN
kim _^_EN $capital
krige krix2@
@@ -496,10 +510,10 @@ levi le@fi
liesbet lisbEt
louis luI
louise luw'i:z
lukas l'ukas
mackintosh _^_EN
madelene mad@l'e@n
mbeki mbE:ki
madelene mad@l'e@n
magdalena $3
malan mal'an
malherbe mal'&rb@
@@ -544,6 +558,7 @@ naudé nOd'e@
neil _^_EN
nelson _^_EN
niklaas niklA:s
olga Olga
ontong OntON
phillips fIl@ps
pierre p'e@r
@@ -551,9 +566,13 @@ petronella pe@trun'&la
petrus pe@trWs
phoebe fi:bi
picasso pik'asu
piketberg pik'Etb&rx2
pinokkio pin'Oki;u
pretorius pr@to@riWs
quixote kix2'OtE
rachmaninoff rax2m'aninOf
rademeyer rA:d@meI@r
rall rA:l
rebekka r@bEka
reinette r@nEt
renette r@nEt
@@ -561,6 +580,7 @@ renée r@neI
retha re@ta
retief r@tif
rhodes _^_EN
riekert rik@rt
robert _^_EN
ronel run'&l
rossouw r@s@U
@@ -570,6 +590,7 @@ rupert rup@rt
salomo sA:l@mo@
samuel sA:my@l
sandra sandra
sappho sapfu
schalk sk'alk
scheepers ske@p@rs
schmidt Smit
@@ -580,12 +601,14 @@ schutte skWt@
sebastian s@bastian
servaas s@rfA:s
shakespeare _^_EN
sheila Si:la
sigmund sigmunt
sophia suf'i:ja
sophie _^_EN
stephan ste@fan
stephanus st@fA:nWs
strauss straUs
stockenström stOk@nstro@m
suzanne suz'A:n
suzette suz'Et
tania tanja
@@ -593,8 +616,9 @@ telemann te@l@man
terblanche t@rblA:nS
theo tiu
theron tr'On
timotheus t@m'o@tiWs
thessalonicense tEsalo@nis'E:ns@
thys teIs
timotheus t@m'o@tiWs
toerien $2
totius to@SiWs
trudie trudi
@@ -607,6 +631,7 @@ vincent _^_EN
violet _^_EN $capital
visagie fis'A:x2i
william _^_EN
wilson _^_EN
yolande jul'and@
yvonne iv'On
zyl seIl
@@ -640,28 +665,29 @@ martini mart'i:ni
naspers nasp&rs
peugeot pW:Z@U
(pick n pay) p,ik||@n||p'eI
porsche pOrS@
port pOrt $1
rover _^_EN
sotho su:tu
thessalonicense tEsalo@nis'Ens@
toyota $2
venda vEnda
volvo vOlvu
wimpy wImpi
// some Bible names
levitikus $2
deuteronomium dY@t@ro@n'o@miWm
josua j'o@Sia
jesaja $2
jeremia j%e@r@m'ia
hosea hus'i:a
amos 'A:mOs
obadja o@b'atja
miga m'ix2a
habakuk h'abakWk
sefanja s@f'anja
sagaria sax2ar'ia
maleagi $3
// Some Bible names
amos 'A:mOs
deuteronomium dY@t@ro@n'o@miWm
habakuk h'abakWk
hosea hus'i:a
jeremia j%e@r@m'ia
jesaja $2
josua j'o@Sia
levitikus $2
maleagi $3
miga m'ix2a
obadja o@b'atja
sagaria sax2ar'ia
sefanja s@f'anja
// article
@@ -813,7 +839,7 @@ allegro al'Egru
almiskie $3
alom al_'Om
alreeds $2
alternatiewe $4
altemit $3
amelee am@le@
amen A:mEn
anale an'A:l@
@@ -853,11 +879,11 @@ capita kapita
casino kas'i:n@U
cedille s@dIl@
charisma kar'Isma
clichés kliS'eI:s
cliché kliS'eI:
crescendo kr@SEndu
dadelik dA:d@lIk
dagorde dax2_Ord@
darem dar@m
dekade dEk'A:d@
dekreling dEkre@l@N
@@ -901,12 +927,14 @@ forte fOrt@
g'n x2In
gaandeweg x2A:nd@v&x2
garages g@rA:dZ@s
gebrokener x2@bro@k@n@r
gee x2e@
geen x2e@n
geldelike x2&ld@l@k@
genade $2
genesis x2e@n@s@s
//gesamentlik x2@sA:m@ntl@k
gewellys x2e@v@lleIs
gladiator x2ladi'A:tOr
globale x2lo@b'A:l@
gooi x2OI
@@ -920,6 +948,7 @@ handtertjie hant&:rci
hanou hA:n@U
hardop hart?Op
heeltemal he@lt@mal
heimat haImat
hek h&k
hekke h&k@
helaas he@l'A:s
@@ -978,6 +1007,7 @@ libido l@bidu
lokaas lOk_A:s
londense lOnd@ns@
lord _^_EN
luidop lYyt_Op
macaroni makar'o@ni
madame mad'A:m
@@ -1017,12 +1047,14 @@ nalatigheid nA:l'A:t@x2eIt
namate $2
negeer n@x2e@r
negering n@x2e@r@N
negester ne@x2@st&r
netjies nE:icis
netjiese nEicis@
netsowel nEtso@v&l
nikswerd nIksv&:rt
nimmermeer $1
nirvana n@rvA:na
nogeens nOx2_e@ns
normale nOrm'A:l@
numeri nWm@ri
@@ -1049,6 +1081,7 @@ ongeloof $1
ongelyk $1
ongemak $1
ongerief $1
ongeriefie $1
ongewens $1
ongewensde $3
ongewoons $1
@@ -1081,13 +1114,16 @@ parkie $1
parte $1
patos pA:tOs
patriotisme patri|ut'Ism@
pedaledemping p@dA:l@dEmp@N
penorent pEno@rEnt
per p@r $only
persent p@rsEnt
petite p@tit
pinotage pinut'A:Z
pirouette p@ru:'Et
plaasjaap plA:sjA:p
plasenta plas'Enta
poinsettia pOIns'Etia
primate $2
(pro forma) pro@||f'Orma
@@ -1098,6 +1134,7 @@ renaissance rEn@s'A~ns
retoriek r@tur'ik
rimpeling rImp@l@N
rinkink $2
rondeel $2
rooipers roIp&:rs
roterende rut'e@r@nd@
rottenes rOt@nEs
@@ -1132,8 +1169,11 @@ sonop sOn_Op
sonore sun'o@r@
sover so@f&r
staccato $2
sterwens st&rv@ns
stilswye $1
subiet sWb'it
suburbia sWb'Wrbija
swangerswaar swaN@rswA:r
tanga taNga
tango taNx2u
@@ -1167,6 +1207,7 @@ verby f@rbeI
verdere f&rd@r@
vererger f@r&rg@r
ver f'&:r
vereduifie fe@r@dYyfi
verg f&rx2
vergeleë f&:rx2@l,e@@
vergete f@rx2e@t@
+84 -16
View File
@@ -52,9 +52,10 @@
adole (ssen %ad%o@l@ // fix stress and vowel sounds: adolessent/-e/-adolessensie
ad (vies %at // move default stress: advies/-brief/-komitee and many similar
af (gunstig %af // move default stress: afgunstig/-e
C) agie A:x2i
a (gitA %a // fix a sound: agitasie/(ge)agiteer
agte (los %ax2t@ // move default stress: agtelosig/-e/-heid
agte (losig %ax2t@ // move default stress: agtelosig/-e/-heid
agter (dogt %ax2t@r // move default stress: agterdogtig and derivatives
agtereen (volg %ax2t@r_%e@n // move default stress: agtereenvolgend/-e/-ens
agter (oor %ax2t@r_ // move default stress: agteroor/-buig/-druk/-val, etc.
@@ -69,6 +70,7 @@
@@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc.
amarula %am%arul%a // fix stress and a sounds: amarula and compounds
a (ment %a // shorten a sound: perkament/testament and compounds
arends A:r@nts_ // fix e sound: arendsoog/-kloue/-nes
argen (tA %arx2@n // move default stress: Argentinië/Argentyns/-e
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties
@@ -78,6 +80,7 @@
C%C) asie A:si // restore default stress: bok-/dikmelkkasie and similar
oub) asie A:si // restore default stress: oubasie/-s
@form) asie A:si // restore default stress to compounds ending in -formasie: graniet-/grond-/rotsformasie, etc.
gl) asie A:si // restore default stress: wyn-/sjampanjeglasie, etc.
pl) asie A:s%i // restore default stress: gemeenplasies/gemeenskapsplasies and similar
Csp) asie A:s%i // restore default stress: vloer/kantoorspasie, etc.
Cst) asie A:si // restore default stress: brandweer/spoorwegstasie and similar
@@ -145,6 +148,7 @@
_k) a (nA %a //kanon and others
apart %apart // fix stress: (bus-/klein)apartheid
aphro (dit %afr%u // fix stress and ph and o sounds: Aphrodite/-dities
_) a (po %a // apollo/apostel
apo (krieC %ap%u // fix stress and vowel sounds: apokrief/-iewe
a (politi %A: // lengthen a sound: apolitiek/apolities/-e
@@ -169,6 +173,7 @@
ar (gaï %ar // move default stress: argaïes/-e
arge (tip %arx2@ // move default stress: argetipe/argetipies/-e
ar (moedig %ar // move default stress: armoedig/-e/-heid
arm (salig %ar@-m // move default stress: armsalig/-e/-heid/-ste
_) arte (ri %arte@ // fix stress and e sound: arterie/-ë/-s
_) asbes %asbEs // fix stress and e sound: asbes and many compounds
a (siel %a // shorten a sound and move default stress: asiel and compounds
@@ -194,10 +199,12 @@
_) afge (@P4 'afx2@ // stress on 1st slb
afgryslik %afx2reIsl@k // move default stress: afgryslik and derivatives vs. afgrys/-e
af (hank %af // move default stress: afhanklik/-e/-heid, etc.
_) af (kerig %af // move stress: afkerig/-e/-heid
_) af (komstig %af // move default stress: afkomstig
afrik (aan %afr%ik // exception to af prefix and move stress to end
afrikane (K %afr%ikA:n@ // move stress to end: Afrikaner and compounds
afrika A:frika //Stress and 1st a sound: Afrika and compounds: Afrikatale/-state...
afro (dit %afr%u // alternate spelling: Afrodite/-dities
af (sigte %af // move default stress: afsigtelik/-e/-heid
af (skuw %af // move default stress: afskuwelik and derivatives vs afsku
afsonderl %afsOn@rl // stress, avoid af_ prefix and -lik suffix: afsonderlik/-e/-heid
@@ -207,6 +214,7 @@
afwesig %afve@s@x2 // to steer clear of pre- and suffixes
af (wagten %af // move default stress: afwagtend/-e
agenda %ax2End%a // fix stress and 1st a sound: agenda/-s/-punt, etc.
age (rend %ax2e@ // fix stress and vowel sounds: agerend/-e
a (gonie %a // fix 1st a sound and move default stress: agonies/-e
agonie (_N %ax2%uni // move stress to end: agonie
agter (bak %ax2t@r // fix stress: agterbaks/-e/-heid
@@ -314,6 +322,7 @@
aan (grensen %A:n // move default stress: aangrensend/-e
aan (grypend %A:n // fix stress: aangrypend/-e
aan (hangig %A:n // move default stress: aanhangig vs. aanhang
aan (hank %A:n // move default stress: aanhanklik/-e/-heid
aan (houden %A:n // move default stress: aanhoudend/-e
aan (lok %A:n // move default stress: aanloklik/-heid
aan (lok_N A:n // restore default stress: aanlok
@@ -501,6 +510,7 @@
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.
blom (akker blOm_ // fix O sound, pause: blomakker/-s and compounds
blon (dine bl%On // move default stress: blondine/-s
bly (moed bl%eI // move default stress: blymoedig/-e/-heid
bo (botie b%u // fix stress and 1st o sound: bobotie and compounds
@@ -715,6 +725,7 @@
_) deli (ka d%El%i // delikaat/delikate
delika (tess d%El%ik%a // move default stress: delikatesse/-s
deli (rium d@lI // fix stress and vowel sounds: delirium and compounds
delphinium d%&lfini;Wm // fix stress and ph sound: delphinium and compounds
@) dend (er d@nd // beduidender/behoudender
_) den (dri d%En // dendriet/-e/dendrities/-e
@@ -736,6 +747,7 @@
@C) derm (K d&r@-m // fix e sound of derm in compounds: nersdermklier/slukdermsiekte, etc.
@) dderd (_ d@rt // ontredderd, se rule: dd d
_) derge d&rx2@ // dergelik/-e
@) de (rosie t_%e@ // fix e sound, pause: winderosie/tyderosie and similar
desibel dEsib&l // fix vowel sounds: desibel/-s
de (skun d%E //deskundig/e in compounds
_) des (po d%Es // move default stress: despoot/despote
@@ -772,6 +784,7 @@
digi (ta d%ix2%i // move default stress: digitaal/digitale
di (gK dI // force default stress: GEDIG/-TE/digbundel/digvorm, etc.
digtere (K d@x2t@rE // move default stress: digteres/-se
dik (vell d@k // move default stress: dikvellig/-e/-heid
dilemma d@lEma // dilemma and compounds
dimen (si d@mEn // fix stress and 1st i sound: (ontwikkelings)dimensie, etc./-dimensioneel/-ele
di (namie d%i // move default stress: dinamies/-e
@@ -790,12 +803,13 @@
dis (koers d@s // move default stress: diskoers/-e
diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre
_) dis (kre d@s // move default stress: diskreet/-heid/-ste/diskrete
_) dis (kussA d@s // move default stress: diskussie/-s/diskusseer
dis (loja d@s // move default stress: dislojaal/-lojale/-lojaliteit
_) dis (oP3 d@s // disorganisasie/disoriënteer
dis (pu d@s // move default stress: dispuut/dispute
distro (fie d@str%u // fix stress and o sound: (spier)distrofie, etc.
divide (nd d@v@dE //dividende etc.
d (_N t //
d (_ t //
dj c // palatal stop
_) dj dZ // regional: djy/djou/djulle, etc.
@@ -871,9 +885,11 @@
@) d (roos t // fix d sound: draadrooster/maand-/strand-/veldroos
@) d (rose_ t // fix d sound: maand-/strand-/veldrose
@) d (rosie t // fix d sound: maand-/strand-/veldrosie/-s
_) drukke (ry dr%Wk@ // move default stress: drukkery and compounds
@) d (t // drop d: breedte/handtekening/rondte/rondtrek...
du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc.
@n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar
verby) dw dw // fix d sound: verbydwarrel/-dwaal/-dwing
dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm
dw (erg dw // fix d sound: tuindwerg/-e/-ie
@) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e
@@ -890,6 +906,8 @@
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese
vreugd) e (C @ // fix e sound: vreugdefees/-klokkies/-lied/-tyd...
vriend) e (C @ // fix e sound: vriendepaar/-woorde
juwel) e (C @ // fix e sound: juwelekissie and similar compounds
fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc.
kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar
@@ -920,6 +938,7 @@
naald) e (C @ // fix e sound: naaldekoker/-kussing/-werk, etc.
noord) e (C @ // fix e sound: noordewind and compounds
Colw) e (C @ // fix e sound: golweslag/wolwedans
bolw) e (rk_ & // exception to above: fix e sound: bolwerk and compounds
ros) e (CA @ // fix e sound: rosegeur/roseweg
slang) e (C @ // fix e sound: slangebesweerder/-diens/-draer/-gebroedsel/-kuil/-teelt
speld) e (C @ // fix e sound: speldekop/-kussing/-punt, etc.
@@ -1091,8 +1110,10 @@
ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc.
Cv) eer e@r // stress: (hoender/volstruisveer/dryfveer
AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer
Cev) eer e@r // restore default stress: duiwe-/haneveer
w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer
u) eer 'e@r // aktueer/konstrueer/salueer, etc.
@) eerdheid 'e@rtheIt // fix stress: geraffineerdheid/ongedissiplineerdheid, etc.
effek (K %ifEk // move default stress and fix e sound: effek/-te/-tief/rimpeleffek
eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste
@) ein (dig 'eIn // nimmereindige/nimmereindigend
@@ -1120,6 +1141,7 @@
C) ema (_ e@ma // words ending in ema: compounds of skema/tema
emfi (seem %Emf%i // move default stress: emfiseem and compounds
C) enaar @nA:r // eienaar/lessenaar
C) enare (_ @nA:r@ // fix e sound: towenare and similar
C) enier @n'i:r // kruidenier/spysenier/valkenier/Renier
C) enheid @nheIt // opgewondenheid/bedorwenheid and many similar
_) enorm e@n'Or@_m // enorm/-s, pronunc. of rm
@@ -1152,6 +1174,7 @@
e (gK &
@C) e (groep @ // fix e sound: beelde-/vriendegroep
_) ega (l %e@x2A: // stress: egalig/-e
egosentrie %e@x2%usEntri // fix stress and o sound: egosentries/-e
_) e (gipt %e@ // move default stress: Egipte/Egiptenaar/Egipties
C) ektomie 'Ektumi // histerektomie/vasektomie
&) elik (ing @l@k // verduideliking/s/vergoddeliking/verstedeliking
@@ -1229,6 +1252,7 @@
ff) er (@ @r // keffertjie/koffersleutel/offerande/opoffering
stoff) er (A 'e@r // exception to rule: ff) er (@ @
C) eres @r'Es // ...onderwyseres
@dans) ere (K @rE // fix stress: beroeps-/waaierdanseres/-se/-sie, etc.
C) eress @r'Es // onderwyseresse/-sie
&) e (m_ @
&l) e (m_ E // compounds ending in lem
@@ -1266,10 +1290,10 @@
_rasp) e (r @ // fix e sound in rasper- compounds: raspertong/-vyl, etc./rasperend
werp) e (rsA @ // fix e sound: ontwerpersolie/-sonbril/-uitrusting
lew) e (ns @
&d) e (r@+ @ // not initial or final syllable
&d) e (r@++ @ // not initial or final syllable
skuld) erke _&rkE // fix e sound: skulderkentennis/-erkenning
@C) e (reë @ // fix e sound: geelperskereën/tropereën, etc.
@d) e (rnst+ & // but fix e sound in doodernstig/-e
@d) e (rnst++ & // but fix e sound in doodernstig/-e
&t) e (r@ @
Cit) e (ring e@ // fix final e sound in compounds like begrotingsmonitering
iënt) e (r@n e@ // fix e sound: lewensoriëntering/-rende
@@ -1314,7 +1338,7 @@
_) este (t %Este@ // fix stress and vowel sounds: esteties/-e/estetika
hip) e (r @
_) er (b &r' // erbarm/ing
erke (n %&rkE // fix stress and e sounds: erken/-ning/(self)erkende
erke (n+ %&rkE // fix stress and e sounds: erken/-ning/(self)erkende
m) erke (nd &rk@ // kenmerkend/-e
p) erke (nd &rk@ // beperkend/-e
w) erke (nd &rk@ // (mede/terug)werkend/-e
@@ -1352,6 +1376,7 @@
elaar @lA:r //wandelaar, twyfelaar etc.
oord) elaar e@lA:r //beoordelaar and oordelaar/friends
C) ewel (A e@v@l // prewelend/wrewelig/newelig/beneweling
ewewig (tig %e@v@vIx2 // move default stress: ewewigtig/-e
d) e (mons E%
r) e (digering E
som) e (r @ //someraand and others.
@@ -1417,6 +1442,7 @@
Ceuw) e (l @ //gesneuwelde heuwelhang etc.
v) e (nno@+ @ //vennoot and friends
_) euro (pe %Y@r%o@ // stress: Europees/Europese
ev (entue %iv // fix e and v sounds: eventueel/-ele
_) ewe (red %e@v@ // move default stress: (on)eweredig/-e/-heid
ex (+ _^_EN // words containing ex are English
al) ex (and %Ekz //alexanderbaai, alexandria etc.
@@ -1479,6 +1505,8 @@
_) fok (o fOk_ // fix o sound, insert short break: fokop/fokof
folio fo@li_u // fix o sounds: folio and compounds
fondue f%Ondy // fix stress and ue sound: fondue and compounds
fone (tiek f%o@n@ // fix e sound: fonetiek and compounds
fone (tie f%une@ // fix stress and o sound: foneties/-e
@) fonie fun'i // kakofonie/simfonieorkes/telefonie
@) fonies f'o@nis // fix stress: simfoniese/polifonies/telefonies
@) fonie (s@@ fun'i // fix stress: simfonieseisoen and similar
@@ -1541,6 +1569,7 @@
gim (naK x2@m // move default stress: gimnas/-te
gimna (siA x2@mnA: // move default stress and lenghthen a sound: gimnasium/gimnasia
glans x2lans // glans not nasalised: glans/-ende/-papier, etc.
glas (a x2las_ // shorten a sound, short pause: glasafskorting/-albaster/-apparaat...
glas (o x2las_ // fix a sound and short break: glasoog/-ogie/-oë/-opaal/-oppervlakte
gletser x2l''Ets@r // fix 2nd e sound: gletserbeweging/-meer/-vorming/vergletsering, etc.
glise (rien gl@s@ // fix stress and g and vowel sounds: gliserien(-salf/-suur)
@@ -1656,7 +1685,7 @@
bur) ger g@r
gee (+ x2e@
geër (_ x2e@@r // oorgeër/pasaangeër
gees (drift x2%e@s // move default stress: geesdriftig and derivatives
gees (drifti x2%e@s // move default stress: geesdriftig and derivatives
@) gegee =x2@x2e@
gegewens x2@x2e@v@ns // fix e sounds in many compounds: agtergrond-/fossielgegewens/-versameling
gei (+ x2eI // geil and derivatives/geiser/geit/-e
@@ -1680,6 +1709,7 @@
.group h
h h
h (h
_) half (geP4 h'alf // fix e sound in halfgetem(de), etc.
half (kro@ h%alf // move default stress: halfkroon/halfkrone
half (een h%alf_ // move default stress in this and following time expressions: halfeen/-vergadering
half (twee h%alf
@@ -1710,6 +1740,7 @@
hard (ste hart // restore default stress: (ge)hardste/-s
harle (kyn h%arl@ // fix stress and e sound: harlekyn/-e and compounds
harmo (nie h%arm%u // fix stress and o sound: harmonie/-ë
harmonies harm'o@nis // fix stress (dis-/en-/fil-)harmonies/-e
har (poen h%ar // move default stress: harpoen/-e and compounds
@) hartig h'art@x2 // barmhartig/lighartigheid/lighartig...
hart (roer h%art // move default stress: hartroerend/-e/-ste
@@ -1767,7 +1798,7 @@
&) hede (_ he@d@
he (g h&
heid (_S4 heIt
herinner h&r'In@r // herinner/-ing/-e|s
herinner h%&rIn@r // herinner/-ing/-e|s
hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc.
hex (C hEks // prevent English translation: Hex(rivier)vallei
hia (sint h%ij%a // fix stress: hiasint/-e and compounds
@@ -1815,7 +1846,7 @@
iber (i@ %ibe@r // Siberië/Siberiese/Iberiese
@) ic (_ _^_EN // Words ending in -ic are English
ie i
tr) ie (_ 'i //stress on trie at word end
tr) ie (_N 'i //stress on trie at word end
ieë (K i:@ // knieë/vlieë/spieël/-tjie
ie (uu i // split ie/uu, eu not diphthong: drieuur and similar
ss) ief (_ 'if // move default stress: aggressief/massief/obsessief/progressief, etc.
@@ -2038,6 +2069,7 @@
j j
j (j
ja (broer jA: // fix a sound: jabroer/-s
_) jack _^_EN // English: Jack/-ie/-son
_) jag (A j''ax2_ // fix stress and a sound: jagavontuur/-ekspedisie/-entoesias/-eskader/-instink...
jag (end jA:x2 // but long a in jagend/-e and compounds
jag (er jA:x2 // long a in jager and compounds
@@ -2147,6 +2179,7 @@
klip (A klIp_ // fix i sound: klipalbaster/-altaar/--uil/leiklipolie
klou (sule kl%@U // move default stress: klousule/-s
kklere =kl'e@r@
kners (_ kn&rs // fix e sound: blikners/tande(ge)kners, etc.
knip (A knIp? // knipogie/geknipoog/
_) krag (A kr''ax2_ // kragaanleg/-eenheid/-installasie/-onderbreking/-opwekker
kra (gie krA: // but: kragie/-s
@@ -2156,6 +2189,7 @@
kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds
_) kre (o kr%i // fix stress and e sound: Kreool/Kreole/Kreoolse
_) kre (pe@ kr@ // fix stress and 1ste sound: krepeer/-krepering
kriewe (l kriv@ // fix e sound: kriewelend/kriewelkous/-krapper/-siekte...
krimi (nA kr@m@' // krimineel/kriminele/diskrimineer
kri (oel kr%i // move default stress: krioel and derivatives
kri (sant kr@ // move default stress: krisant/-e
@@ -2371,7 +2405,7 @@
_) kontras k%Ontras // move default stress: kontras/-te/kontrasteer
kontrasep k%Ontr%asEp // fix stress and e sound: kontrasepsie and derivatives
kontrover (s k%Ontr%uv&r // o and v sounds: kontroversie/kontroversieel
_) kop (o kOp? // fix o sound: koponder/koponderstebo/kopomdraai/kopoperasie
kop (o kOp? // fix o sound: koponderstebo/kopomdraai/kopoperasie/gryskoponderwyser/poenskopolifant
kopu (lA k%Op%y // fix o sound: kopulasie/kopuleer and derivatives
_) kor (dA k%Or // kordaat/kordon
ko (rint k%u // fix stress and o sound: korint/-e and compounds
@@ -2530,6 +2564,7 @@
ma (kriel m%a // move default stress: makriel/-e
maksi (ma@ m%aks%i // move default stress: maksimaal/-male
&) mal (_S3 mal
mala (giet m%al%a // fix stress and a sounds: malagiet and compounds
malaria mal'A:ria
mal (gas m%al // move default stress: Malgas/-se/-sies
malles (_ mal@s // fix e sound: (mags)malles and similar
@@ -2561,13 +2596,15 @@
marmer marm@r_ // fix e sound: marmerbeeld/-blad and many others
marmo (set m%arm%u // fix stress and o sound: marmoset/-te
mar (sje m%ar // move default stress: marsjeer and derivatives
mas (biek m%as // move default stress: masbieker/-s
ma s (biek m%as // move default stress: masbieker/-s
masjien m@Sin // masjien and many compounds
masji (na@ m%aS%i // move default stress: masjinaal/-ale
maskara m%askA:r%a // move default stress: maskara and compounds
masker mask@r // fix e sound: maskerafdruk/-agtig/ontmaskering
masker (ade m%ask@r // move default stress: maskerade/-s
maso (chis m%as%u // fix vowel sounds: masochis/-te/-ties/-e/-isme
mastekto (m m%astEkt%u // fix stress and vowel sounds: mastektomie and compounds
mate (matie m%at@ // fix vowel sounds: matematies/-e
matemati (CA m%at@m%at%i // fix stress and vowel sounds: matematikus/-ci
materi (A@ m%at%e@r%i // materiaal/materiale/materiële/materieel
materie (+ m%ate@r%i // stress and vowel sounds: materie and many compounds
@@ -2586,6 +2623,7 @@
midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend
middel (jari m@d@l // move default stress: middeljarig and derivatives
middelli (k mId@l@ // drop one l: (on)middellik/-e
milieu m@ljy // fix stress and vowel sounds: milieu and compounds
milit m@l@t // militêr/militaris
mil (jA m@l // move default stress: miljoen/-e/miljard/-e
mille (nniA m@lE // millennium/millennia
@@ -2608,6 +2646,7 @@
mis (gis m@s // stress on 2nd slb
mis (gun m@s // stress on 2nd slb
mis (ha m@s // mishandel/mishaag
_) mis (inP3 m@s // fix 1st i sound, pause: misinterpretasie/misinterpreteer
miske (n m@skE // misken/ning/onmiskenbaar
mis (l m@s // misluk/mislei
mis (lamp mIs // restore default stress: mislamp/-e
@@ -2660,6 +2699,7 @@
mosam (biek m%o@s%am // move default stress: Mosambiek/-er/-se
mosa (ïek m%o@s%a // move default stress: mosaïek and compounds
mo (skee m%O // move default stress: moskee/-s and compounds
motie (C m%o@ti // handle stress: winsmotief/-tiewe and similar compounds
motor mo@t@r // motorfiets/motorkar/vragmotor
motor (ie m%uto@r // fix stress and o sounds: motories/-e
@) mpel (A mp@l // bewimpeling/dompelaar/strompeling
@@ -2723,6 +2763,7 @@
ment m'Ent
mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds
mentjie m'EiNci // monumentjie/dokumentjies
menue (t m%En%y:;E // fix stress and vowel sounds: menuet/-te
@C) mere (_ me@:r@ // fix penultimate e sound: sout(water)-/strandmere
me (riete m@ // move default stress: meriete and compounds
merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc.
@@ -2877,6 +2918,7 @@
oe) n (g n //soengroet, pensioengewend etc.
nuanse (K n%yans@ // move default stress: nuanse/-s and compounds
nuan (seer n%y%an // fix stress: (ge)nuanseer/-d
nuanse (ring n%y%anse@ // fix stress: nuansering and compounds
nuus (kierig n%ys // move default stress: nuuskierig/-heid
nuwer (wet n%yv@r // move default stress: nuwerwets/-e
@Cer) ny (_ n'eI // move default stress: lekkerny/raserny/slawerny
@@ -2899,6 +2941,7 @@
oase %u_A:s@ // oase/-s and compounds
o (terap u // psigo-/fisioterapeut
_) ob (s %Op // obskuur/obskure/obskuriteit/obsessie/obseen
obser (veer %Ops%&r // fix stress, b sound: (ge)observeer(d/-e)
C) o (dium o@ // fix stress and o sound: jodium/podium/rodium and their compounds
oefen uf@n// oefenbroekie/oefeningboek/liggaamsoefeninge
t) oeke (n uk%E // fix e sound: toeken/-ning/kuns-/watertoekenning
@@ -2966,6 +3009,7 @@
odjie OIci
otjie OIci
offi (sier %Of@ // move default stress: offisier and compounds
offisi %Of%iS%i;
ofiel uf'il // franko-/hemo-/nekro-/pedo-/russofiel, etc.
ofilie ufil'i // hemo-/nekro-/pedofilie, etc.
ofobie ufo@b'i // antropo/-xenofobie and many other -fobie words
@@ -3029,6 +3073,7 @@
om (sig %Om // move default stress: omsigtig/-heid
omsingel %OmsIN@l // fix stress: omsingel/fix e sound: omsingelde
_) om (sirkel %Om // move default stress: omsirkel and derivatives
_) omskans %Omskans // fix stress: omskans/-ing/-s
_) om (skep %Om // move default stress: omskep and derivatives
_) om (skr %Om // move default stress: omskryf/omskrewe
_) om (sluier %Om // move default stress: omsluier and derivatives
@@ -3116,7 +3161,6 @@
ontering %Onte@r@N //ontering in compounds montering etc.
_) on (tooCC %On // ontoombaar/-bare/-baarheid/ontoonbaar/-bare/-baarheid/ontoornig/-e/-heid
onvoor (s %Onf%o@r //stress: onvoorsiens, onvoorstelbaar etc.
onvoor (w %Onf%o@r //stress: onvoorwaardelik etc.
onome un'o@m@ // astronome/ekonome/gastronome
onomie unum'i // astronomie/ekonomie/gastronomie
onomies un'o@mis // astronomies/-e/ekonomies/-e/gastronomies/-e
@@ -3139,6 +3183,7 @@
_) on (kruid On // restore default stress: onkruid/-doder and similar
_) on (lus On // restore default stress: onlus/-te/onlusgebied, etc.
_) onnie Oni // onnie/-s; not on- prefix
onom (stoot %On%Om // fix stress: onomstootbaar/onomstootlik and their derivatives
_) on (paar On // restore default stress: onpaar/-skoene
onreg (K Onr&x2 // stress: onreg/te/onregmatig
on (regv++ %On // stress: onregverdig/e/heid
@@ -3258,6 +3303,7 @@
oor (heers %o@r // move default stress
_) oor (hoofs %o@r // move default stress: oorhoofs/-e
oorkoepel o@rk'up@l // stress and pronunc. of el: oorkoepelend/oorkoepeling
oor (koom %o@r // fix stress: (on)oorkoomlik/-e
oor (laaid %o@r // move default stress: oorlaaide/-s
oor (lams %o@r // move default stress: oorlams/-e/-heid
_) oorlede o@rl'e@d@ // stress oorlede/ne/s
@@ -3330,6 +3376,7 @@
parle (ment p%arl@ // move default stress and fix e sound: parlement and compounds, eg.
parme (saan p%arm@ // move default stress: parmesaan(kaas) and compounds
paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds
parti (sa p%art%i // move default stress: partisaan/-ane
parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds
pase (lla p%as& // fix stress and a sound: pasella(tjie) and compounds
pa (sifi p%a // shorten a sound: pasifis/-me/-ties/-e
@@ -3384,6 +3431,7 @@
ry) pere (_ p@r@ // fix penultimate e sound: rypere
skam) pere (_ p@r@ ?? shorten 1st e in ending
perfek p@rfEk // perfek/-te/-sie/-sionis
pergola p%&rx2o@l%a // move default stress: pergola/-s and compounds
perife (rA@ p%Er@f@ // fix stress and vowel sounds: periferie/-ë/periferaal/-ale
peri (o p%e@r%i // stress: periode/-s and compounds
peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici
@@ -3548,6 +3596,7 @@
puntener p%Wnt@ne@r // stress and 2nd e sound: puntenerig and derivatives
pu (pil p%y // move default stress: pupil/-le and compounds
puri (tein p%yr@ // fix stress and i sound: puritein/-e/-se
pêrel p&:r@l // fix e sound: pêrelig/-e
.group q
@@ -3608,6 +3657,7 @@
rivier r@fi:r
_) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc.
robot (A ro@bOt_ // fix 2nd o sound, pause: robotarm/-oog/-oë
ron (dawel r%On // move default stress: rondawel/-s/-tjie
rond (borst r%Ont // move default stress: rondborstig/-e
rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry
@@ -3626,6 +3676,7 @@
.group re
rea (ks r%ia // reaksie/s/skokreaksie
rea (C r%i%a // reageer/realis/me|ties
re (ageren r%i // fix stress and vowel sounds: reagerend/-e
re (bel r@ // move stress from 1st slb
recce rEki // fix e and c sounds: recce/-s
re (dakC r@ // fix stress and e sound: redaksie/redakteur and compounds
@@ -3657,6 +3708,7 @@
re (kru r@ // move stress from 1st slb
_) re (la r@ // relaas/relase/relasie and compounds
rele (van r@l@ // relevansie/relevant and derivatives
re (liek r@ // fix stress and e sound: reliek/-e and compounds
reli (gi r@l@ // fix stress and e sound: religie/-ë/religieus
reliëf r%e@l%iEf // fix stress and vowel sounds: reliëf and compounds
rem (_ rEm // handrem/kabeltrem/kragrem/noodrem/skyfrem/stadstrem/veiligheidsrem
@@ -3949,7 +4001,7 @@
_) spon (ta sp%On // move default stress: spontaan/spontane
_) sport (@@@ sp''Ort_ // force stress on 1st slb.: sportadministrasie/-konfederasie
spreekwoordeli spr%e@kvo@rd@l@ // move default stress: spreekwoordelik/-e, vs. spreekwoord
springbok spr''INbOk // fix o sound: Springbokafrigter/-agterspeler; fix stress: Springbokklere
springbo (k spr''INbO // fix o sound: Springbokafrigter/-agterspeler; fix stress: Springbokklere
sproke spro@k@ // see rule: pro (CA pr%u : aangesprokene/onbesproke, etc.
self (_ s'&lf // myself/vanself
K) sewe (C s'e@v@ // sewejarige/standerdseweklas
@@ -3983,9 +4035,11 @@
smelt sm&lt
sodom (iet s,o@dOm // fix stress and 2nd o sound: sodomiet/-e
son (g@ sOn // songebakte/-brande/-bruinde/-droogde/songod
son (om s''On_ // fix 1st o sound, pause: sonomspoelde/-omgewe
sosial (i so@Sial' // sosialis/sosialisme/sosialisties
so (v so@ // soveel/sover
soverre so@f'&r@ // stress: se rule: so (v s'o@ // soveel/sover
spas (mod sp%as // move default stress: spasmodies/-e
speku (lA sp%Ek%y // spekulasie/spekuleer/spekulatief
@) sper (a sp@r' //desperate/desperaatheid/rasperagtig
ek) sper (im spEr // eksperimenteer/eksperimenteel
@@ -3994,8 +4048,7 @@
spesialis (A spESialis
spesialis spESal'Is
spesi (f sp%Es%I // spesifiek/spesifiseer
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede
ste (laan st@ // fix e sound: eerste-/ag(t)stelaan
spine (t sp%inE // move default stress: spinet/-te and compounds
%Cel) ste (r st& // fix e sound: dubbelster/-re
Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re
dwaal) ste (r st& // fix e sound: dwaalster/-re
@@ -4025,6 +4078,7 @@
suid (oos s%Yyt_ // move default stress and insert short break: suidoos/-te/-lik
suite swit@ // fix -ui-sound: suite/-s and compounds
sukses s%WksEs // sukses/suksesse/suksesvol/reusesukses
sultana s%WltA:n%a // fix stress, keep last a short in compounds: sultana/-s
_) su (meri s%u // fix stress and u sound: sumeries/-e
su (mmier s%W // move default stress: sumier/-e
superintendent s,upr@nt%EndEnt // fix stress and vowel sounds: superintendent and compounds
@@ -4033,7 +4087,7 @@
_) sw sw // fix w sound: words beginning with sw-: swerweling/swetend
swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid
swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid
swag (K sv'ax2
swag (K svax2 // dorps-/volkswag, etc.
swa (hili sw%a // fix stress and a sound: swahili/-'s
_) swam (A@ swam_ // shorten a sound: swamagtig/-etend/-infeksie
swart (gal sw%art // move default stress: swartgallig
@@ -4062,11 +4116,15 @@
stapel stA:p@l // fix e sound: (op)stapeling/stapelaar
staties st'A:tis
sta (tutA st%a // fix stress and a sound: statute/statutêr
êr) ste (_S3 st@ // preserve stress: elementêrste/primêrste, etc.
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede
steding ste@d@N // besteding and compounds
ste (ke_ ste@ // fix e sound: by-/mes-/proefsteke
steke (lig ste@k@ // fix 2nd e sound: stekelig/-e/-heid
C) steker ste@k@r // e sound: (aan/dop/kwaad/rugsteker/-s/-y, etc.
_ne) stel st@l // fix e sound: nestel/-end
wor) stel st@l //worstel e sound in compounds
ste (laan st@ // fix e sound: eerste-/ag(t)stelaan
ste (land st@ // fix e sound: vasteland and several compounds
@) stel (iC st@l // eersteling/gunsteling/wellusteling/worsteling/eerstelig and compounds
&) stele (fo st&l@ // fix e sound in compounds: huis-/werkstelefoon/-fone
@@ -4088,6 +4146,7 @@
mAre) ste (r st& // fix e sound: more/môrester/-re
stereo (ti st%e@r%i%u // fix stress and vowel sounds: stereotiep/-tipe/-tipeer
sterf (K st&rf // fix e sound: uitsterf/weg(ge)sterf/kindersterfte
sterk (_ st&rk // fix e sound: duiwel-/kapitaal-/stormsterk, etc.
@) sterkt st&rkt // compounds ending in sterkte
stero (ïed st%e@r%u; // fix stress and vowel sounds: steroïed/-e
bok) ster (t st&:r // fix e sound: bokstert/-e/-tjie/-s
@@ -4293,6 +4352,7 @@
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
teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie
te (dom t@ // fix e sound: idiotedom and similar
teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e
@A) te (geC t@ // fix e sound: Hugenotegemeente/stategebou and similar compounds
@C) te (gn t& //tegniek/iese and friends
@@ -4526,6 +4586,7 @@
ve (l f& // maagvel, stress on 1st slb
@) vel (A fe@l // aanbeveling/aanbevelingsbrief
veld (C f&lt // fix d sound: veldreuk/-radio/-rantsoen, etc.
vele f'e@l@
ven (detta v%En // fix stress and v sound: vendatta and compounds
ven (dusie f@n // fix stress and e sound: vendusie and compounds
@@ -4579,12 +4640,14 @@
ver (reik f&:r // fix stress and e sound: verreikend/-e
@) vers (_ f&rs // teksvers/slotvers/kindervers and similar
vers (album f&:rs_ // fix e sound: versalbum/-s
_) vers (b f&rs // fix e sound: versbundel/-bou/-boek
@) vers (e_ f&rs // plurals of words like the above
_) versf f''&rsf // fix stress and e sound: versfragment/-e
ver (sie_ f&:r //words ending in versie
ver (sies_ f&:r //words ending in versies
vers (panor f&:rs // fix stress and e sound: verspanorama/-s
ver (spring f''&:r // fix stress and e sound: verspring/-er/-kompetisie
vers (v f&rs // fix e sound: versvorm/versvoete
verf (i f@rf //verfilm and compounds
ver (flenC f@r // verflenter and derivatives/verflens; see rule: verf (C f&rf
ver (fris f@r // verfris and derivatives; see rule: verf (C f&rf
@@ -4692,7 +4755,8 @@
voort (v@@ f%o@rt // voortvarend/voortvlugtige
_) vooruit fo@r_'Yyt // vooruit/vooruitsig/vooruitbeplanning
vooruit (strew fo@rYyt' // change stress
voorwaard (_ f%o@rvA:rd // stress: (on)voorwaardelik
voorwaarde (_ f%o@rvA:rd@ // stress: (on)voorwaardelik
voorwaarde (_N fo@rvA:rd@ // fix stress: voorwaarde/-s
vor (_ _^_EN //words ending in vor is English
vorm fOr@m
vorsti (n fOrst'I // fix stress: vorstin/-ne/-netjie and compounds
@@ -4740,8 +4804,10 @@
&s) w (eefs v // fix w sound: compounds like -sweefsel/tuisweefstof, etc.
@s) w (enn v // fix w sound: beurs-/groeps-/klas-/naas-/pryswenner/-wennende
_) web vEb //webadres/se, webarea etc.
As) weer (_ ve@r // fix w sound: kusweer/ysweer, etc.
AAs) w (enk v // fix w sound: kombuis-/nuus-/sweiswenk/-e
plaas) w (erC v // fix w sound: plaaswerf/-werwe
s) w (oeling v // fix w sound: koors-/geesteswoelinge
s) w (ou v // fix w sound: bamboeswoud/keerkringswoud and similar
s) w (r v // fix w sound: skeepswrak/sielswroeging/aardswreedheid
wreed (a vre@t_ // fix d sound and insert short pause: wreedaard/-s
@@ -4779,6 +4845,7 @@
weer (leg w%e@r // move default stress: (on)weerlegbaar
weer (strew v%e@r // move default stress: weerstrewig/-e/-heid
@) wees (_ ve@s // fix w sound: siekwees/volkwees
weet (gierig v%e@t // move default stress: weetgierig/-e/-heid
@) weg (_ v&x2 // blindweg/botweg and many similar
spoor) weg v&x2 // fix e sound: spoorwegaanleg/-aansluiting/-amptenaar/-eiendom/-inkomste/-ongeluk...
_) wegge (C@P5 v'&x2@ // prefix: weggeja and similar
@@ -4917,6 +4984,7 @@
.group y
y eI
%C) y (_ _^_EN // English: Betty/Eddy/Harry/Molly/Penny/Tommy
skapp) y (_ %eI // compounds like: handels-/versekerings-/verskepingsmaatskappy
york j'O:k //new-yorkse and may be others
ysterre (lin eIst@re@ // fix e sound: ysterreling/-s
+12 -4
View File
@@ -1,4 +1,4 @@
// This file is UTF8 encoded
// Spelling-to-phoneme words for Danish
@@ -29,7 +29,7 @@ _ced s@d'ila
_cir s'3:kVmfl,Eks
_dia 'umlaut
_dot wiDd'0tabVv
_grv gr'a:v
_grv aks'aN gr'a:v
_hac h'atS,Ek
_mcn m'akr,0n
_ogo '0g0n,Ek
@@ -61,17 +61,22 @@ _#32 blank
_, koma:
_; se:mi:ko:lVn
_: ko:lVn
_. pun^tum
_. puNtum
_? spWrgsmVlstajn
_! udRVbstejn
_- binnesdrai
__ bOndsdrai
__ b'Onsdrai
& ou
£ pun?
€ euro
© kopyrajt
÷ divid'eReD meD
= l'imeD
# n'OmV
§ paragr'af
// numbers
_0 'nOl
_1 'e:n
@@ -215,6 +220,7 @@ k kO:
l El
m Em
n En
o o
p pe:
q ku:
r Er
@@ -233,6 +239,7 @@ egen a:j@n
eget a:j@D
egne a:in@
enter entV
ide id'e // idea
igen igen
Ny ny // new
også Vs@ // also
@@ -240,3 +247,4 @@ havde h'aD@ // had
sagde sa@ // said
sig sAi // oneself
+701 -572
View File
File diff suppressed because it is too large Load Diff
+418 -417
View File
@@ -1,100 +1,6 @@
Phonemes which are used in the *_rules and *_list files
Dictionary zhy_dict
a aa aai aan aau ai au e
ei eo eoi eu i iu o oe
oi ong ou u ui yu
b c d f g h j k
l m n N p r s t
tS v w z
Dictionary fr_dict
@ @- @2 a A~ e E E2
E: E~ i i- i: o O o2
O2 o3 O~ u u: W w^i wA
W~ y Y
: b d dZ f g h j
k l m n N n2 n^ p
p2 r R r2 s S t t2
t3 tS v w z Z z2 z3
Dictionary nl_dict
8 @ @- A a: E e: EI
eU i I O O: o: u VU
Wy y Y: yU
* : ; b C d f g
h j k l m n N n^
p Q r s S t tS v
v2 w x z
Dictionary jbo_dict
@ a aI aU e eI i l-
o oI r- u
- b d dZ f g h j
k l m n N p R s
S t tS v w x z Z
Dictionary hu_dict
A a: E e: i i: o o:
u u: Y y y: Y:
: b c C d dZ f g
h j J k l l^ m n
N n^ p R R2 s S s2
t tS ts v z Z
Dictionary hy_dict
@ a aI e eI i i@ o
u W y
** b c d dZ dz f g
h j k k# l m n p
p# r R r" s S t t#
tS ts ts# v X z Z
Dictionary zh_dict
@ @r a A ai Au E ei
i i. i[ iA iE io iou N-
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu
; C f h j k kh l
L m n N p ph q r
R s s. S; t th ts ts.
ts. tS; tS; tsh v w x X
z.
Dictionary ca_dict
@ a a# aI e E E2 i
o O u U
* ** : ; b B d D
dZ; f g j J J^ k l
l^ m n N n^ p Q R
R2 s S; t T ts tS; v
v# w z Z Z;
Dictionary af_dict
& &: 3: @ @- @L @U a
@@ -109,15 +15,81 @@ n N p r s S t T
tS v w x x2 z Z
Dictionary id_dict
Dictionary bn_dict
@ a aI aU e E E2 i
o O u
& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
O~ o~ r- U u u: u:~ u~
V
* : ? b d dZ f g
h j k l m n N n^
p r R R2 s S t tS
v w x z
* b B bh c C ch d
d. dh dh. g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. th th. tS x z
Dictionary ca_dict
@ a a# aI e E E2 i
o O u U
* ** : ; b B d D
dZ; f g j J J^ k l
l^ m n N n^ p Q R
R2 s S; t T ts tS; v
v# w z Z Z;
Dictionary cs_dict
@- a a: aU e e: eI eU
i i: l- o o: oU r- u
u:
* ; b c d dZ dz f
g h j J k l l^ m
n N n^ p r R R^ R^/
s S t tS ts v x z
Z
Dictionary cy_dict
@ @- @I @Y a A: aI aU
AY aY E e: eU I i: Iu
O o: OI OY U u: uY V
Y y: Yu
: b C d D dZ f g
h j k l L m n N
p r s S t T v w
x z
Dictionary da_dict
& 0 3 @ @- a A e
E i o O u V W y
Y
* - : ; ? b d D
dZ f g h j k l L
m n N p r R s S
t tS v w
Dictionary de_dict
3 @ @- a A A: aI aU
E E2 E: e: EI I i2 i:
O o: OY U u: W y y:
Y:
* : ; b C C2 d D
dZ f g h j k l m
n N p pF r s S t
tS ts v x z Z
Dictionary el_dict
@@ -147,114 +119,40 @@ s S t T t2 tS v w
x z Z
Dictionary cs_dict
Dictionary eo_dict
@- a a: aU e e: eI eU
i i: l- o o: oU r- u
u:
@- a aI aU e eI eU i
o oI u uI
* ; b c d dZ dz f
g h j J k l l^ m
n N n^ p r R R^ R^/
s S t tS ts v x z
Z
* - b d dZ f g h
j k l m n p r R
s S t T tS ts v w
x z Z
Dictionary grc_dict
Dictionary es_dict
a aI aU e E EI eU EU
i o O oI OI OU u y
yI
a aI aU e E eI eU i
o O oI u
: b d f g h j k
l m n N p R s t
T v x z
* ** : b B d D f
g j J J^ k l m n
N n^ p Q R R2 s t
T tS v v# w x z
Dictionary cy_dict
Dictionary eu_dict
@ @- @I @Y a A: aI aU
AY aY E e: eU I i: Iu
O o: OI OY U u: uY V
Y y: Yu
a aI aU e eI eU i o
oI u Y
: b C d D dZ f g
h j k l L m n N
p r s S t T v w
* ** : ; b B c d
D f g h j J k l
l^ m n n^ p Q r R
s S t tS ts tz v w
x z
Dictionary hbs_dict
& @ @2 a A a: aI aU
E e e: i I i: l- O
o o: oU r* r- u U u:
* ; b d dZ dz dZ; f
g h j k l l^ m n
N n^ p r R R2 s S
t tS ts tS; v x z Z
Dictionary it_dict
@- a a/ aI aU e E eI
i I o O u
* : ; b d dZ f g
h j k l l^ m n N
n^ p r R s S t tS
ts v w w2 z
Dictionary sk_dict
& @- a a: e e: i i:
l- l: o o: oU r- r: u
u:
* ; b d d; dZ dz f
g h j k l l^ m n
N n^ p r R R^ R^/ s
S t t; tS ts v x z
Z
Dictionary ku_dict
8 a e E E# eI eU i
I o u U y
* : b c d dZ f g
h j J k l m n p
q r R s S t tS v
w x z Z
Dictionary sq_dict
@ @/ a A a/ aI E e
eI i I I# O OI u V
y yE
** : ; b c d D dZ
dz dZ; f g h j k l
L ll m n n^ p r R
R2 s S t T tS ts v
w z Z
Dictionary sw_dict
@- a a/ e i m- n- N-
o u
* : b d D f g h
j J k l m n N n^
p Q R s S t T tS
v w x z
Dictionary fi_dict
& &i &y a a2 ai au e
@@ -267,201 +165,40 @@ l m n N p r s S
s2 t v w Z
Dictionary pl_dict
Dictionary fr_dict
a E E# E~ i O O~ u
y
@ @- @2 a A~ e E E2
E: E~ i i- i: o O o2
O2 o3 O~ u u: W w^i wA
W~ y Y
: ; b c C d d; dZ
dz dz; f g h j k l
m n N n^ p r R s
S s; S; t t; tS ts ts;
tS; v w x z Z Z;
: b d dZ f g h j
k l m n N n2 n^ p
p2 r R r2 s S t t2
t3 tS v w z Z z2 z3
Dictionary no_dict
Dictionary grc_dict
@ @2 a A a: A: AI aI
aU E E: e: I i: O o:
OI U u- u-: u-I u: W y
y: Y: Yy
a aI aU e E EI eU EU
i o O oI OI OU u y
yI
: ; b d f g h j
k l m n N p r R
s S s; t v w x z
: b d f g h j k
l m n N p R s t
T v x z
Dictionary vi_dict
Dictionary hbs_dict
@ @: @:I @:U @I @U a a:
a:I a:U aI aU E e eU EU
i i@ iU O o OI oI u
u@ uI y y@ yI
& @ @2 a A a: aI aU
E e e: i I i: l- O
o o: oU r* r- u U u:
b c d D f g h j
J k kh l m n N n^
p Q r s s. t t[ ts;
tS; v w x z Z z.
Dictionary ro_dict
@ @- @I @U a aI aU e
ea eI eo eU i i/ I^ iI
iU o O Oa oI oU u uI
y Y yI yU
* *; - b b; c C d
d; dZ f f; g h j k
l l; m m; n N n; p
p; r s S S; t t; tS
ts ts; v v; w w2 x z
Z z; Z;
Dictionary lv_dict
a a: ai au e e: ei i
i: ie iu o o: u u: ui
uo
: b c d dZ f g h
j J k l l^ m n N
n^ p r R R2 s S t
tS ts v z Z
Dictionary pt_dict
& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
i I i/ iU o O oI OI
o~ u U uI u~ y
* : ; b C d dZ f
* ; b d dZ dz dZ; f
g h j k l l^ m n
N n^ p Q r R r- s
S s# s; t T tS ts v
w x z Z
Dictionary tr_dict
a e E i I o O u
U u# W y Y
* : b c d dZ f g
h j J k l m n p
Q r R s S t tS v
w z Z
Dictionary ru_dict
8 @- A a E e E# E2
E3 i I I# I2 I3 I^ ja
ju o O u u" u# V V#
y Y
* ; b d d; dZ; f g
j k l l^ m m; n n^
p r R s S s; S; t
t; ts ts; tS; v x z Z
z; Z;
Dictionary eo_dict
@- a aI aU e eI eU i
o oI u uI
* - b d dZ f g h
j k l m n p r R
s S t T tS ts v w
x z Z
Dictionary mk_dict
& @ @- @2 a A a: E
e e: i I i: l- o o:
oU r- u u:
* b d dZ dz dZ; f g
h j k k^ l l^ m n
N n^ p r R s S t
tS ts tS; v x z Z
Dictionary es_dict
a aI aU e E eI eU i
o O oI u
* ** : b B d D f
g j J J^ k l m n
N n^ p Q R R2 s t
T tS v v# w x z
Dictionary is_dict
& @- a aI aU e E eI
i I o O oU oU2 u W
y y# Yy
* ** : ; b c C d
D f g h j J k l
l# m m# n N n# N# n^
n^# p Q r R r# R2 s
s2 t T tl# v x z
Dictionary da_dict
& 0 3 @ @- a A e
E i o O u V W y
Y
* - : ; ? b d D
dZ f g h j k l L
m n N n^ p r R s
S t tS v w
Dictionary de_dict
3 @ @- a A A: aI aU
E E2 E: e: EI I i2 i:
O o: OY U u: W y y:
Y:
* : ; b C C2 d D
dZ f g h j k l m
n N p pF r s S t
tS ts v x z Z
Dictionary sv_dict
8 @ a a2 A: E E- e:
E: I i: O o: U u- u:
W y y: Y:
: ; b d f g h j
k l m n N p R s
S s. S; sx t v w z
Dictionary la_dict
@- a a: aI aU E e: EU
I i: O o: OI U u: y
y:
* : ; <h> ? b d f
g h j k l m n N
p r R s t w z
N n^ p r R R2 s S
t tS ts tS; v x z Z
Dictionary hi_dict
@@ -479,42 +216,71 @@ r. s S s. t T t. th
th. v w x z
Dictionary ta_dict
Dictionary hu_dict
a a: aI aU e E e: i
I i: o o: U u u: V
A a: E e: i i: o o:
u u: Y y y: Y:
: ; b C d d. dZ f
g h j k l l. m n
N n. n^ p r R s S
s. t t. th tS v w z
z.
: b c C d dZ f g
h j J k l l^ m n
N n^ p R R2 s S s2
t tS ts v z Z
Dictionary bn_dict
Dictionary hy_dict
& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
O~ o~ r- U u u: u:~ u~
V
@ a aI e eI i i@ o
u W y
* b B bh c C ch d
d. dh dh. g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. th th. tS x z
** b c d dZ dz f g
h j k k# l m n p
p# r R r" s S t t#
tS ts ts# v X z Z
Dictionary eu_dict
Dictionary id_dict
a aI aU e eI eU i o
oI u Y
@ a aI aU e E E2 i
o O u
* ** : ; b B c d
* : ? b d dZ f g
h j k l m n N n^
p r R R2 s S t tS
v w x z
Dictionary is_dict
& @- a aI aU e E eI
i I o O oU oU2 u W
y y# Yy
* ** : ; b c C d
D f g h j J k l
l^ m n n^ p Q r R
s S t tS ts tz v w
x z
l# m m# n N n# N# n^
n^# p Q r R r# R2 s
s2 t T tl# v x z
Dictionary it_dict
@- a a/ aI aU e E eI
i I o O u
* : ; b d dZ f g
h j k l l^ m n N
n^ p r R s S t tS
ts v w w2 z
Dictionary jbo_dict
@ a aI aU e eI i l-
o oI r- u
- b d dZ f g h j
k l m n N p R s
S t tS v w x z Z
Dictionary kn_dict
@@ -531,6 +297,52 @@ s. S; t t. th th. tS v
w z
Dictionary ku_dict
8 a e E E# eI eU i
I o u U y
* : b c d dZ f g
h j J k l m n p
q r R s S t tS v
w x z Z
Dictionary la_dict
@- a a: aI aU E e: EU
I i: O o: OI U u: y
y:
* : ; <h> ? b d f
g h j k l m n N
p r R s t w z
Dictionary lv_dict
a a: ai au e e: ei i
i: ie iu o o: u u: ui
uo
: b c d dZ f g h
j J k l l^ m n N
n^ p r R R2 s S t
tS ts v z Z
Dictionary mk_dict
& @ @- @2 a A a: E
e e: i I i: l- o o:
oU r- u u:
* b d dZ dz dZ; f g
h j k k^ l l^ m n
N n^ p r R s S t
tS ts tS; v x z Z
Dictionary ml_dict
a a: aI aU e E e: i
@@ -570,6 +382,30 @@ s S s. t T t. th v
w x z z.
Dictionary nl_dict
8 @ @- A a: E e: EI
eU i I O O: o: u VU
Wy y Y: yU
* : ; b C d f g
h j k l m n N n^
p Q r s S t tS v
v2 w x z
Dictionary no_dict
@ @2 a A a: A: AI aI
aU E E: e: I i: O o:
OI U u- u-: u-I u: W y
y: Y: Yy
: ; b d f g h j
k l m n N p r R
s S s; t v w x z
Dictionary pap_dict
a a/ aI e E eI i o
@@ -581,6 +417,82 @@ R s S t tS v w x
z Z
Dictionary pa_dict
@ a a~ e E e~ E~ i
I i~ I~ o O O~ o~ r-
U u u~ U~ V V~
: ; b bh c ch d d.
dh dh. f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q R R2
s S t t. th th. v x
z
Dictionary pl_dict
a E E# E~ i O O~ u
y
: ; b c C d d; dZ
dz dz; f g h j k l
m n N n^ p r R s
S s; S; t t; tS ts ts;
tS; v w x z Z Z;
Dictionary prs_dict
@ A i o
b d h l t X
Dictionary pt_dict
& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
i I i/ iU o O oI OI
o~ u U uI u~ y
* : ; b C d dZ f
g h j k l l^ m n
N n^ p Q r R r- s
S s# s; t T tS ts v
w x z Z
Dictionary ro_dict
@ @- @I @U a aI aU e
ea eI eo eU i i/ I^ iI
iU o O Oa oI oU u uI
y Y yI yU
* *; - b b; c C d
d; dZ f f; g h j k
l l; m m; n N n; p
p; r s S S; t t; tS
ts ts; v v; w w2 x z
Z z; Z;
Dictionary ru_dict
8 @- A a E e E# E2
E3 i I I# I2 I3 I^ ja
ju o O u u" u# V V#
y Y
* ; b d d; dZ; f g
j k l l^ m m; n n^
p r R s S s; S; t
t; ts ts; tS; v x z Z
z; Z;
Dictionary rw_dict
a e i o u
@@ -591,21 +503,110 @@ N n^ p q R s S S;
t tS v w x z
Dictionary pa_dict
Dictionary sk_dict
@ a a~ e E e~ E~ i
I i~ I~ o O O~ o~ r-
U u u~ U~ V V~
& @- a a: e e: i i:
l- l: o o: oU r- r: u
u:
: ; b bh c ch d d.
dh dh. f g gh H j J
Jh k kh l l. m n N
n. n^ p ph Q R s S
t t. th th. v x z
* ; b d d; dZ dz f
g h j k l l^ m n
N n^ p r R R^ R^/ s
S t t; tS ts v x z
Z
Dictionary prs_dict
Dictionary sq_dict
@ A i o
@ @/ a A a/ aI E e
eI i I I# O OI u V
y yE
b d h l t X
** : ; b c d D dZ
dz dZ; f g h j k l
L ll m n n^ p r R
R2 s S t T tS ts v
w z Z
Dictionary sv_dict
8 @ a a2 A: E E- e:
E: I i: O o: U u- u:
W y y: Y:
: ; b d f g h j
k l m n N p R s
S s. S; sx t v w z
Dictionary sw_dict
@- a a/ e i m- n- N-
o u
* : b d D f g h
j J k l m n N n^
p Q R s S t T tS
v w x z
Dictionary ta_dict
a a: aI aU e E e: i
I i: o o: U u u: V
: ; b C d d. dZ f
g h H j k l l. m
n N n. n^ p r R s
S s. t t. th tS v w
z z.
Dictionary tr_dict
a e E i I o O u
U u# W y Y
* : b c d dZ f g
h j J k l m n p
Q r R s S t tS v
w z Z
Dictionary vi_dict
@ @: @:I @:U @I @U a a:
a:I a:U aI aU E e eU EU
i i@ iU O o OI oI u
u@ uI y y@ yI
b c d D f g h j
J k kh l m n N n^
p Q r s s. t t[ ts;
tS; v w x z Z z.
Dictionary zh_dict
@ @r a A ai Au E ei
i i. i[ iA iE io iou N-
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu
(u) ; C f h j k kh
l L m n N p ph q
r s s. S; t th ts ts.
ts. tS; tS; tsh v w x X
z.
Dictionary zhy_dict
a aa aai aan aau ai au e
ei eo eoi eu i iu o oe
oi ong ou u ui yu
b c d f g h j k
l m n N p r s t
tS v w z
+7 -6
View File
@@ -98,6 +98,7 @@ _?A l,Et3
_?? sImb@L
_#9 tab
_#32 speIs
… _::d%0td,0t // for elipsis or ... while reading
_  hA@dspeIs // U+00A0 no-break-space
_! Ekskl@m'eIS@n
@@ -436,7 +437,7 @@ abstract a2bstr'akt $verb
academe a2kad@mI
access aksEs $onlys
access aksEs $verb
accouche a2ku:S
accouchement a2ku:SmO~
acer eIs3
aces eIsI2z
acetylene a2sEt@li:n
@@ -1519,6 +1520,8 @@ motif moUt'i:f
moustache m@st'aaS
mouths maUDz $only
movies mu:vI2z
multitude $1
multiplexer $1
mundane $2
murmur m3:m3
?5 murmur mVRm3
@@ -1553,7 +1556,7 @@ nobody 'noUb0dI
nocturnal $2
nomenclature n@mENkl@tS3
nonsense n0ns@ns
nonetheless n0nD@l'Es
nonetheless nVnD@l'Es
nosedive noUzdaIv
not noUt // for noted, notable, etc
nott n0t
@@ -1655,6 +1658,7 @@ pasting peIstI2N
pastry peIstrI
pate pateI
pathos peIT0s
paypal peIpal
pear pe@
peculiar pI2kju:lI3
pedalo pEd@loU
@@ -2609,8 +2613,6 @@ Graeme greI@m
Graham greI@m
Hadrian heIdri:@n
Harriet hari@t
Hugh hju:
Hughes hju:z
Huw hju:
Iain i:@n
Ian i:@n
@@ -3045,7 +3047,7 @@ your jO@ $u $nounf $only
their De@ $u $nounf $only
theirs De@z
none n0n
none nVn
noone noUw0n
anyone EnIw0n
everyone EvrIw0n
@@ -3192,7 +3194,6 @@ like laIk $strend2
?3 err e@
?3 fortune fO@tS@n
?3 garage ga2rA:Z
?3 happy hapi:
?3 herb 3:b
?3 hurricane h3:@keIn
?3 investigative Inv,EstI2g'eItIv
+17 -7
View File
@@ -878,8 +878,9 @@
ch) ar (it ar
ph) ar (i ar
m) ar (i @r
m) ar (ig ar
m) ar (inaC ar
_m) ar (i ar
m) ar (in @r
_m) ar (inaC ar
m) ar (iner ar
m) ar (io ar
htm) ar e@
@@ -892,7 +893,7 @@
&) ar (in_ @r
v) ar (iA e@r
@) ar (ity ar
ar (iu 'e@r
ar (iu+ 'e@r
arom (at a2roUm
arre (_ A@
arred (_ A@d
@@ -1286,6 +1287,7 @@
ch (é+ S
ch (ef S
ch (em k
chement (_ =SmO~
ch (ev S
chez SeI
Ca) ch (e S
@@ -2016,6 +2018,7 @@
en (core 0n
&) ency (_ @ns%I
ency (cli %EnsI
en (dA_ 'En
_) en (d En
_) en (da %En
eg) en (d @n
@@ -2786,7 +2789,7 @@
p) ie (_ aI
pp) ie (_ I
ie (f i:
iege i:dZ
ieg (e# i:dZ
ie (go I'eI
ieh (C i:
iei (_ i:aI
@@ -2820,7 +2823,7 @@
ie (t aI@
@) ie (th i@
iesta i:'Est@
iette I2'Et
ie (tt I2'E
@) iety 'aI@t%I
l) ieu u:
l) ieu (te %Ef
@@ -3356,6 +3359,7 @@
@) most(_S4 moUst
&) mouth (_ m@T
_) multi mVltI
_) multi (@@P5 m,VltI
.group mi
millen mI2lEn
@@ -3483,7 +3487,7 @@
oa oU
oar (_ o@
oar o@
o (atia oU
cr) o (at oU
br) oa (d O:
o (ba oU
t) o (bacc @
@@ -3894,6 +3898,7 @@
@) or (ic_ '0r
or (ig 0r
&) ored (_ @d
h) ored (_S1 d
_f) ore (C O@
f) ore (clo %o@
f) ore (st 0rI
@@ -4619,6 +4624,7 @@
_ca) su Zu:
_) sus (A su:z
su (al Zu:
n) su (al sju:
_) su (b sV
su (bdue s%V
su (bmerg s@
@@ -4704,6 +4710,7 @@
tsch tS
_) two tu:
ttu (r t@
@) tu (al tSu:
@) tu (late =tSU
@) tur (A tS@r
@) tur (al_ tS=@r
@@ -4817,6 +4824,7 @@
f) u (gal 'ju:
ug (er_ u:g
s) ugge (st @dZE
h) ugh ju:
mp) ug (n ju:
uh (C u:
u (i ju:
@@ -4847,6 +4855,7 @@
_f) ully UlI
f) ull Ul
p) ull Ul
_) ultra (@ ,Ultra
u (ly u:
d) u (ly ju:
u (lul V
@@ -4859,8 +4868,8 @@
uoy OI
_) us (_ Vz
_) us (A ju:z
usu (al ju:Zu:
&) us (_ @s
usua (l ju:Zu:
u (sh V
b) u (sh U
c) u (sh U
@@ -5246,6 +5255,7 @@
En (_ @n
?8 En (_ En
En (atA @n
En (dA_ 'En
E (ndous E
Ener (_ _n@
Ening (_ _nI2N
+8 -9
View File
@@ -24,7 +24,7 @@
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
//
// Updated 2009-10-09 Michel Such <michel.such@free.fr>
// Updated 2009-10-26 Michel Such <michel.such@free.fr>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -364,10 +364,11 @@ afin afE~ $u+ $brk
avant $u+
après $u+
(temps en temps) tA~zA~tA~
alors alOr $u+
depuis $u+
ainsi $u+
alors alOr $u+
aussi $u+
encore $u+
depuis $u+
certes $u+
@@ -571,11 +572,8 @@ quelques kElk=@z2 $u+
tel $u+
telle $u+
telles $u+
tout t'ut2 $u+
toute t'ut $u+
toutes t'utz2 $u+
tous $u+
rien Ri-'E~n2 $u+
tout t'ut2
rien Ri-'E~n2
// Letters which can be words
//===========================
@@ -632,7 +630,7 @@ anis anis
arte arte
auvent ovA~
beta beta
bien bi-E~n2 $u+
bien bi-E~n2
bis bis
bissus bisys
blues _^_en
@@ -899,3 +897,4 @@ venezuela venezyela
wallis wAlis
futuna futuna
zimbabwe zimbabwe
+1
View File
@@ -1477,3 +1477,4 @@ _r) w (an u // Rwanda
+413 -138
View File
@@ -77,36 +77,135 @@ _0M1o EzR2Edik
_1M1o EzR2Edik
_2M1o ke:tEzR2Edik
_0-a A
_0-i Ei
_0-e E
_0-án a:n
_0-ára a:R2A
_0-ére e:R2E
_0-ra a:R2A
_0-re e:R2E
_0-én e:n
_0-ai Ai
_0-ei Ei
(1-e) elseje $text
(1-én) elsején $text
(1-jén) elsején $text
(1-i) elsejei $text
(1-ei) elsejei $text
(1-ére) elsejére $text
(1-re) elsejére $text
(2-i) másodikai $text
(3-i) harmadikai $text
(6-i) hatodikai $text
(8-i) nyolcadikai $text
(13-i) tizenharmadikai $text
(16-i) tizenhatodikai $text
(18-i) tizennyolcadikai $text
(20-i) huszadikai $text
(23-i) huszonharmadikai $text
(26-i) huszonhatodikai $text
(28-i) huszonnyolcadikai $text
(30-i) harmincadikai $text
// $alt2 means these rules only apply if the previous word
// has $alt1 (language specific). $text implies $only (for this group only)
_0-a A $alt2
_0-i Ei $alt2
_0-e E $alt2
_0-án a:n $alt2
_0-ára a:R2A $alt2
_0-ére e:R2E $alt2
_0-ra a:R2A $alt2
_0-re e:R2E $alt2
_0-én e:n $alt2
_0-ai Ai $alt2
_0-ei Ei $alt2
_0-től e:tY:l $alt2
_0-tól a:to:l $alt2
_0-ig e:ig $alt2 //special date ordinal numbers for example elsejéig, negyedikéig etc.
(1-e) elseje $text $alt2
(1-én) elsején $text $alt2
(1-jén) elsején $text $alt2
(1-i) elsejei $text $alt2
(1-ei) elsejei $text $alt2
(1-ére) elsejére $text $alt2
(1-re) elsejére $text $alt2
(1-től) elsejétől $text $alt2
(1-ig) elsejéig $text $alt2
(2-i) másodikai $text $alt2
(2-ig) másodikáig $text $alt2
(3-i) hAR2_mAdikAi $alt2
(3-ig) harmadikáig $text $alt2
(6-i) hAtodikAi $alt2
(6-ig) hatodikáig $text $alt2
(8-i) n^'oltsAdikAi $alt2
(8-ig) nyolcadikáig $text $alt2
(13-ig) tizenharmadikáig $text $alt2
(16-ig) tizenhatodikáig $text $alt2
(18-ig) tizennyolcadikáig $text $alt2
(20-i) huszadikai $text $alt2
(20-ig) huszadikáig $text $alt2
(23-ig) huszonharmadikáig $text $alt2
(26-ig) huszonhatodikáig $text $alt2
(28-ig) huszonnyolcadikáig $text $alt2
(30-ig) harmincadikáig $text $alt2
(30-i) harmincadikai $text $alt2
// these exceptions only for 0, not for other numbers ending in '0'
(0-ás) nul:a:S
(0-t) nul:a:t
(0-val) nul:a:vAl
// entries with a single digit such as (2-i) also apply to 22, 32, etc, unless $only
// with these suffixes, use [J:] not [J]
(1-es) EJ:ES
(1-et) EJ:Et
(1-est) EJ:ESt
(1-esét) EJ:ESe:t
(1-esével) EJ:ESe:vEl
(1-essel) EJ:ES:El
(1-eseik) EJ:ESEik
(1-eseikkel) EJ:ESEik:El
(1-eseiket) EJ:ESEikEt
(1-esekkel) EJ:ESEk:El
(1-esek) EJ:ESEk
(1-el) EJ:El
(2-es) kEt:ES
(2-est) kEt:ESt
(2-essel) kEt:ES:El
(2-őt) kEt:Y:t
(2-esen) kEt:ESEn
(2-esével) kEt:ESe:vEl
(2-n) kEt:Y:n
(2-esekkel) kEt:ESEk:El
(2-eseket) kEt:ESEkEt
(2-eseik) kEt:ESEik
(3-as) ha:R2mAS
(3-asának) ha:R2mASa:nAk
(3-ason) ha:R2mASon
(3-assal) ha:R2mAS:Al
(3-asával) ha:R2mASa:vAl
(3-ast) ha:R2mASt
(3-at) ha:R2mAt
(3-al) ha:R2om:Al
(4-el) ne:J:El //4 number suffixes (now contains one suffix)
(5-tel) Yt:El
(5-el) Yt:El
(6-al) hAt:Al
(6-tal) hAt:Al
(7-es) hEtES
(7-est) hEtESt
(7-esek) hEtESEk
(7-eseket) hEtESEkEt
(7-esekkel) hEtESEk:El
(7-esbe) hEtESbE
(7-esben) hEtESbEn
(7-esük) hEtESyk
(7-tel) he:t:El
(7-el) he:t:El
(10-es) tizES // use [i] not [i:]
(10-est) tizESt
(10-essel) tizES:El
(10-esével) tizESe:vEl
(20-as) husAS // use [u] not [u:]
(20-ast) husASt
(20-assal) husAS:Al
(20-asával) husASa:vAl
//special number exceptions
(10-el) ti:zzEl
(20-al) hu:s:Al
(30-al) hAR2mints:Al
(40-el) nEJvEn:El
(50-el) YtvEn:El
(60-al) hAtvAn:Al
(70-el) hEtvEn:El
(80-al) n^oltsvAn:Al
(90-el) kilEntsvEn:El
// These words mean that a dot after number, immediately preceding, does not mean an ordinal number
január $alt
@@ -126,6 +225,7 @@ december $alt
//The following 12 row contains shorter hungarian month names
jan $alt
feb $alt
febr $alt
márc $alt
ápr $alt
máj $alt
@@ -172,13 +272,30 @@ _cap n'AJ_|
// Abbreviations
ÁNTSZ a:Ente:Es $allcaps
km kilo:me:tER2
GYSEV JESEv $allcaps
GYESEV JESEv $allcaps
HÉV he:v $allcaps
City siti $capital
GDP dZi:di:pi: $allcaps
HSDPA $abbrev $allcaps
ORTT $abbrev $allcaps
ORFK oEREfka: $abbrev $allcaps
MÁV ma:v $allcaps
MTI $abbrev $allcaps
mm milime:tER2
VDSZSZ ve:de:EsEs $allcaps
a.m An^n^i||m'int $dot
ún u:JnEvEzEt: $dot
dr doktoR2 $dot
mr mistER2 $dot //in hungarian we not use, but lot of books contains this word.
mrs misis $dot //In hungarian we not use, but lot of book contains this word.
gpu $abbrev
GB gigAba:jt $allcaps
MB mEgAba:jt $allcaps
OK ok $allcaps
mvgyosz Emve:Je:oEs
OTP $abbrev
OTP o:te:pe: $allcaps
id idY:SEb: $dot
ill illEtvE $dot
ifj ifjAb: $dot
@@ -193,24 +310,25 @@ vö v'EZd||_'Yss2E
// Articles
a $u // the
az $u
aki $u+ // that
a $u $strend2 // the
az $u $strend2
//aki $u+ // that
ez $u+ // this
ez $unstressend // this
// Pronouns
// If these are only used for emphasis then then don't need $u
// én $u
// te $u
// ő $u
// mi $u
// ti $u
// ők $u
// maga $u
// maguk $u
én $unstressend
te $unstressend
ők $unstressend $pause
mi $unstressend
ti $unstressend
ők $unstressend
maga $unstressend
maguk $unstressend
// Conjunctions
@@ -222,7 +340,6 @@ mert $u $pause // because
miatt $u // because
bár $u $pause // although
habár $u $pause // although
ha $u $pause // if
noha $u $pause // even thought
@@ -231,132 +348,280 @@ noha $u $pause // even thought
// Negative
nem $u $combine $strend
ne $u+
nem $unstressend $combine $strend
ne $unstressend
e $u // "-e" question
e $atend // stressed at end of sentence
// Unstressed adverbs prepositions etc.
néhány $u+
néhány $unstressend
is $u // also
elöl $u // in front of
elől $u
elé $u
előtt $u
elöl $unstressend // in front of
elől $unstressend
elé $unstressend
előtt $unstressend
mögül $u // behind
mögött $u
mögé $u
mögül $unstressend // behind
mögött $unstressend
mögé $unstressend
kívül $u
után $u // after
kívül $unstressend
után $unstressend // after
alól $u
alá $u
alatt $u // below
alól $unstressend
alá $unstressend
alatt $unstressend // below
felől $u // above
felé $u
fölé $u
felett $u // above
fölött $u
mellől $u // besides
mellé $u
mellett $u
közül $u
közé $u
között $u
felől $unstressend // above
felé $unstressend
fölé $unstressend
felett $unstressend // above
fölött $unstressend
//mellől $u // besides
//mellé $u
//mellett $u
lett $unstressend
ott $unstressend
itt $unstressend
neked $unstressend
nektek $unstressend
nekik $unstressend
neki $unstressend
nekem $unstressend
//közül $u
//közé $u
//között $u
an $u // so many persons
as $u
ba $u // into
ban $u // in
be $u
ben $u
ból $u // from inside
ből $u
ba $unstressend // into
ban $unstressend // in
be $unstressend
ben $unstressend
ból $unstressend // from inside
ből $unstressend
e $u // in query, his/her
ei $u // his her multiole
en $u
es $u
hez $u
hoz $u // to
höz $u
ig $u // up to
ik $u // -th
nak $u // of, him/her
nek $u
nál $u // by
nél $u
on $u // on
en $u // on
hez $unstressend
hoz $unstressend // to
höz $unstressend
ig $unstressend // up to
ik $unstressend // -th
nak $unstressend // of, him/her
nek $unstressend
nál $unstressend // by
nél $unstressend
on $unstressend // on
en $unstressend // on
os $u
ra $u // onto
re $u
ról $u // from top of, about
röl $u
ről $u
ra $unstressend // onto
re $unstressend
ról $unstressend // from top of, about
röl $unstressend
ről $unstressend
szer $u
szor $u // times
szó $unstressend
szór $u
ször $u
tól $u // from
töl $u
től $u
val $u // with
vel $u
tól $unstressend // from
töl $unstressend
től $unstressend
val $unstressend // with
vel $unstressend
án $u // on that day
é $u // his, her
éi $u // his, her multiple
én $u
én $unstressend
ón $u
ós $u
ön $u
ön $unstressend
ös $u
ellen $u // against
elé $u // before
óta $u // since
ellen $unstressend // against
//elé $u // before
//óta $u // since
sok $u // many
kevés $u // few
se $u // neither
sem $u // nor
sok $unstressend // many
kevés $unstressend // few
se $unstressend // neither
sem $unstressend // nor
be $u //into
ki $u // out of
le $u // down
fel $u // up
föl $u // up
meg $u // finish an action
el $u // away
át $u //through
rá $u //onto
ide $u // here
oda $u // there
szét $u //apart
össze $u //connect with
vissza $u //back
ellen $u //against
be $unstressend //into
ki $unstressend // out of
le $unstressend // down
fel $unstressend // up
föl $unstressend // up
meg $unstressend // finish an action
el $unstressend // away
át $unstressend //through
rá $unstressend //onto
volna $u // would
részén $u //on ... part of
ide $unstressend // here
oda $unstressend // there
szét $unstressend //apart
//össze $u //connect with
//vissza $u //back
volna $unstressend // would
//részén $u //on ... part of
nélkül $u // without
folytán $u // because of
úgy $u // like that
így $u // like this
egyaránt $u // alike
minden $u // all
részben $u // partly
nélkül $unstressend // without
//folytán $u // because of
úgy $unstressend // like that
így $unstressend // like this
egyaránt $unstressend // alike
//minden $strend // all
mindent $strend
//részben $u // partly
egyik $u // one of
másik $u // the other
egyik $unstressend // one of
//másik $u // the other
lehet $unstressend
rossz $unstressend
jó $unstressend
jót $unstressend
kér $unstressend
tartják $unstressend
erős $unstressend
lennie $unstressend
közt $u+
levegőjére $unstressend
ad $unstressend
kapják $unstressend
kap $unstressend
már $unstressend
maradt $unstressend
jobb $unstressend
most $unstressend
még $unstressend
gép $unstressend
részt $unstressend
lenne $unstressend
őt $unstressend
helyes $u+
fák $unstressend
et $unstressend
megvédeni $unstressend
sztrájk $unstressend
hír $unstressend
magukat $unstressend
majd $unstressend
áll $unstressend
állt $unstressend
arról $unstressend
innen $unstressend
érjen $unstressend
nap $unstressend
név $unstressend
lány $unstressend
lányt $unstressend
vár $unstressend
várt $unstressend
ért $unstressend
ér $unstressend
tag $unstressend
tesz $unstressend
tett $unstressend
tette $unstressend
baj $unstressend
csak $unstressend
vált $unstressend
jut $unstressend
legyen $unstressend
azt $unstressend
ezt $unstressend
út $unstressend
tiszt $unstressend
vesz $unstressend
cég $unstressend
járt $unstressend
jár $unstressend
él $unstressend
élsz $unstressend
élt $unstressend
hát $unstressend
fiú $unstressend
srác $unstressend
ült $unstressend
ám $unstressend
rám $unstressend
tűnik $unstressend
nyújt $unstressend
nincsen $unstressend
mégy $unstressend
nő $unstressend
nőt $unstressend
sas $unstressend
sast $unstressend
fél $unstressend
félt $unstressend
félsz $unstressend
düh $unstressend
más $unstressend
mást $unstressend
rúd $unstressend
mint $unstressend $brk $combine
iránt $unstressend
légy $unstressend
tűnt $unstressend
ösét $unstressend
új $unstressend
nyúlt $unstressend
magát $unstressend
engem $unstressend
téged $unstressend
minket $unstressend
titeket $unstressend
őket $unstressend
cikk $unstressend
vont $unstressend
mond $unstressend
jutni $unstressend
jött $unstressend
szólsz $unstressend
lőtt $unstressend
sor $unstressend
árt $unstressend
fest $unstressend
fújt $unstressend
kért $unstressend
tét $unstressend
kém $unstressend
jön $unstressend
bent $unstressend
kezd $unstressend
ránk $unstressend
gondolt $unstressend
dönt $unstressend
véli $unstressend
folyt $unstressend
döntött $unstressend
fájt $unstressend
hozni $unstressend
lát $unstressend
kép $unstressend
nyert $unstressend
függ $unstressend
hidd $unstressend
megy $unstressend
hírt $unstressend
hely $unstressend
jutott $unstressend
mit $unstressend
forrás $unstressend
terv $unstressend
mind $unstressend
ment $unstressend
jól $unstressend
napját $unstressend
több $unstressend
tart $unstressend
hág $unstressend
// word pairs
@@ -390,7 +655,7 @@ lesztek $u
lesznek $u
kell $u+ // should
kell $unstressend // should
szabad $u+ // can (allowed)
@@ -458,7 +723,9 @@ ny En^
ø $accent
ß _^_DE
. pont $max3
… _p%ontp%ontp%ont // 3 or more dots are changed to elipsis
. p%ont $max3
_. pont
* tSillAg $max3
% sa:zAle:k $max3
+ plus $max3
@@ -493,7 +760,8 @@ _[ n^'ito:sYglEtES $max3
_] z'a:R2o:sYglEtES $max3
_{ k'EzdY:kAptSoS $max3
_} v'e:gkAptSoS $max3
_… pontpontpont $max3
_… pontpontpont
_• di:spont
_| fyg:Y:lEgESvonAl
_> nAJob
@@ -515,5 +783,12 @@ egyezség eggyesség
(Szvsz) eszvéesz
(edik szeptember) szeptember
(CD-k) cédék
(cd-k) cédék
(CD-n) cédén
(cd-n) cédén
(cd-d) cédéd
(CD-d) cédéd
(db-os) darabos
(db-ot) darabot
+118 -37
View File
@@ -1,4 +1,3 @@
// Hungarian translation rules
// This file is UTF-8 encoded
@@ -9,10 +8,13 @@
û ű
.group a
a A
_) a (_ %A
_) alattvaló _!'AlAtvAlo:
D00_-) al (_ zAl // double z for 100-al
000_-) al (_ Al // ... but not 1000-al
_) alattvaló AlAtvAlo:
.group á
á a:
@@ -26,7 +28,7 @@
@) ban (_S3 bAn
@) ben (_S3 bEn
biz (A b'iz, // bizalmas etc.
biz (A biz, // bizalmas etc.
biedermeier bi:dER2ma:jER2
.group c
@@ -35,8 +37,8 @@
cs tS
ccs tS:
!) cz ts // in names which start with a capital letter
ar) csz (e ts
harmin) c ts
csz ts|s
ar) c (cson ts
anar) ch (i C
balda) ch (in C
hierar) ch (i C
@@ -51,28 +53,19 @@ hierar) ch (i C
szé) ch tS
_zi) ch (y tS
c (szín tS
dA) c (sz ts
kilen) c (sz ts
kvar) c (sz ts
mala) c (sá ts
nyol) c (sz ts
har) c (sz ts
lán) c (sz ts
pá) c (só ts
per) c (sz ts
pol) c (so ts
por) c (sé ts
por) c (sz ts
rán) c (sz ts
tán) c (sz ts
_szé) che (ny tSe:
_szé) ché (ny tSe:
_sto) ck (holm k
har) c (csoport ts
_) church tSYR2tS
lán) c (cs ts
.group d
d d
@@ -85,15 +78,28 @@ hierar) ch (i C
beszé) d (szin d
cselé) d d
fogó) dz (kod ts
fogó) dz (ó z
fenyegető) dz z
föl) d (sánc d
ha) dd (_S2 d
ha) d (járat d
ha) d (sor d
hor) d (szék d
máso) d (sor d
akaró) dz z
hallgató) dz z
húzó) dz ts
harapó) dz z
himbáló) dz z
lopó) dz z
tapogató) dz z
villó) dz z
e) dz (ő dz
e) dz (és dz
pa) d (sor d
ren) d (sza d
va) d (sző d
kére) dz ts
mentegető) dz z
@@ -107,6 +113,7 @@ mentegető) dz z
dsz ts
dsz (C ts
dsz (a ds
dsz (á ds
a) dsz (A ts:
e) dsz (A ts:
o) dsz (A ts:
@@ -127,9 +134,10 @@ mentegető) dz z
.group e
e E
000_-) el (_ REl // double R for 1000-el
000000_-) el (_ El // ... but not 1000000-el
D_-_) es (_ %ES
_) egyezség _!'EJ:ESSe:g
_) egyezség EJ:ESSe:g
.group é
é e:
@@ -145,6 +153,7 @@ mentegető) dz z
f f
.group g
g g
gg g:
@@ -165,19 +174,24 @@ mentegető) dz z
_e) gy (ik J:
_e) gy (üt J:
e) gyj (elentésű Jj
lá) gy (sá J
gyön) gy (sor J
_minde) gy (ik J:
na) gysz (a Js
na) gy (sokára J
na) gy (siet J
_) goethe gY:tE
_) goethé gY:te:
me) g (gy g
le) g (gy g
orszá) g (gyűlés g
ú) gy (se J
seho) gy (se J
.group h
h h
hertz hER2ts
.group i
i i
@@ -190,6 +204,8 @@ _minde) gy (ik J:
íts i:tS:
fesz) ítsd i:tSd
ford) ítsd i:tSd
szól) ítsd i:tSd
áll) ítsd i:tSd
semmis) ítsd i:tSd
bizony) ítsd i:tSd
@@ -216,13 +232,22 @@ bizony) ítsd i:tSd
.group l
l l
fe) l (ju l
fe) l (jö l
fe) l (jegy l
fe) l (jelen l
e) l (jö l
lj l^j
cé) l (já jj
ly j
lly jj
A) lj (A l^j
e) l (jut l
e) l (jus l
á) ll (j j
beszé) lj jj
bére) lj jj
@@ -240,9 +265,10 @@ szamue) ly lli
mi) ll (i l
.group m
m m
ko) mm (uni m
@@ -257,9 +283,17 @@ szamue) ly lli
nj n^n^
nyj n^n^
_) nem (- n,Em // has $combine attribute in hu_list, combine with the next word
_) nem (- nEm // has $combine attribute in hu_list, combine with the next word
me) nny (ország n^
me) nny (d n^
me) nny (k n^
pihe) nj (_S2 n^
főbe) n (jár n
szí) n (játék n
ingye) n n
sze) nny (víz n^
ajá) nlj j:
@@ -267,7 +301,7 @@ szamue) ly lli
o o
_r) oose (velt u:z
_) otthon othon
otthon othon
.group ó
ó o:
@@ -307,7 +341,7 @@ szamue) ly lli
ssz ss2
szts stS:
sztsze stsE
sztsza stsA
föld) s (ánc S
s (színű S
hel) s (inki z
@@ -338,7 +372,8 @@ liszte) szs (ák SZ
rend) sz (er s:
robbaná) s S
robbaná) ss S:
ejtőernyő) ssz S|s
krumpli) s (zsák S
.group t
@@ -348,10 +383,13 @@ robbaná) ss S:
tc ts:
tt t:
ttk t:k
tth t:h
@) tól (_S3q to:l
@) től (_S3q tY:l
tt (C tt
ttn t:n
ttm t:m
ttl t:l
ttr t:R2
ty c
// s) ty c: //
@@ -363,6 +401,8 @@ robbaná) ss S:
apá) ts (ág tS:
becsüle) t t
becsüle) tt t:
bizo) ts (ág tS:
csapa) t (jel t
cson) t t
cson) tt t:
cson) tj c
@@ -370,32 +410,55 @@ becsüle) tt t:
ezüs) tt t:
éle) t t
éle) tt t:
fron) t (szolgál t
gyapo) t t
gyapo) tt t:
gondola) t (sor t
gráni) t t
gráni) tt t:
já) tsz ts:
já) tssz ts:
tsz ts:
já) tsz (m ts
tsz (_S3 ts:
tsz (é ts:
tsz (o ts:
tsz (ő ts:
tszó (_S4 ts:o:
tsz (a t|s
tsz (e t|s
tsz (á t|s
me) tsz (et ts:
ada) t t
ada) tt t:
ké) t (sarok t
ké) t (sor t
ké) t (sáv t
ké) tsz (er ts:
ö) tsz (ör ts:
hé) tsz (er ts:
kegyele) t t
kegyele) tt t:
korán) t (se t
szorí) ts (a tS:
sie) ts tS:
üzle) tt t:
üzle) tj c:
ürí) ts (e tS:
mula) ts tS:
nemze) ts tS:
nemze) t (szo t
néme) ts (ég tS:
min) t t
tse tSE
tso tSo
ttsá tS:a:
tsa tSA
tsá tSa:
ts (a tS
ts (á tS
ts (e tS
ts (é tS
ts (o tS
ts (u tS
tsd tSd
tsé tSe:
t (cs t
ttsé tS:e:
tsu tSu
tts (á tS:
tts (é tS:
tsö tSY
j) ts tS
C) tj c
@@ -429,12 +492,14 @@ folyama) t (jel t
kür) t t
kür) tj c
kür) t (jel t
kür) t (szó t
küldö) ttj c:
neve) ts (ég tS:
o) tt t:
szen) t (szék t
szé) t t
szé) tt t:
szé) tszé t|se:
szöve) ts (ég tS:
söté) ts (ég tS:
sajá) ts (ág tS:
@@ -451,6 +516,7 @@ folyama) t (jel t
lehe) ts (ég tS:
tehe) ts (ég tS:
lá) tsz ts:
te) tsz ts:
lá) t (sze t
fize) ts (ég tS:
segí) ts tS:
@@ -462,7 +528,14 @@ ismere) ts (ég tS:
ha) t (száz t
hé) t (száz t
vé) ts (ég tS:
vona) t (jegy t
tesz) t (sor t
tes) t (sér t
fron) t (jár t
á) t (söpör t
ala) tt (jár t:
fri) tz ts:
fű) ts tS:
.group u
@@ -474,6 +547,8 @@ ismere) ts (ég tS:
.group ü
ü y
ütt yt:
ütty yc:
.group ű
ű y:
@@ -497,6 +572,7 @@ ismere) ts (ég tS:
.group z
z z
zs Z
zzs Z:
a) z (t s
@@ -519,7 +595,8 @@ lefeje) z (ték s
ré) z (sz z
tartó) z s
gá) z (sz z
gé) z (sz z
gá) z (cső z
gé) z (sz z
ké) z (sz zz
há) z (so z
@@ -545,16 +622,20 @@ lefeje) z (ték s
_gá) zsz (ámla zs:
_gá) zsz (ámlá zs:
_ré) zs (ó zS
ő) zs (uta zS
_vá) zs (or zS
_szára) zs (ág SS
_nehé) zs (ely zS
_) zürich tsyR2iC
vigyá) zz (ba z
vigyá) zz (t z
.group
_) :-) v'iJoR2
$ dolla:R2
ä E
+4 -1
View File
@@ -14,13 +14,15 @@
.group b
b b
b (C b_
.group c
c S
K) c (C S_!
.group d
d d
dj dZ
dj dZ // ??
.group e
e e
@@ -82,6 +84,7 @@
r r- // syllabic
A) r R
r (A R
r (C R_ // ?? do this in phonemes data instead?
.group s
+7 -42
View File
@@ -84,7 +84,7 @@ _- in.aIppUg // இணைப்புக்
! vijVppU // வியப்பு
_? ke:l.vi // கேள்வி
# en.||kuRi $max3 // எண் குறி
= samVnba:d.U $max3 // சமன்பாடு
= samVnpa:d.U $max3 // சமன்பாடு
+ ku:t.t.Vl $max3 // கூட்டல்
* perUkkVl $max3 // பெருக்கல்
/ sa:jvU // சாய்வு
@@ -195,53 +195,24 @@ _dpt _pul.l.i
போண்டா $alt
பஜ்ஜி $alt
பாதாம் $alt
பலூன் $alt
பிராமணன் $alt
பிரம்மன் $alt
பம்பாய் $alt
போகம் $alt
போதனை $alt
பூகோலம் $alt
பூலோகம் $alt
பூமி $alt
பூகம்பம் $alt
பூதம் $alt
புதன் $alt
பலி $alt
பலம் $alt
பலவான் $alt
பகவான் $alt
பாகவதம் $alt
பகவத் $alt
பங்கம் $alt
பீடி $alt
பீதி $alt
பம்பரம் $alt
பாதுஷா $alt
பேகம் $alt
தானம் $alt // initial த as [d]
தேகம் $alt
திரவியம் $alt
தூபம் $alt
தீபம் $alt
// initial த as [d]
தீபாவளி $alt
தீரம் $alt
தைரியம் $alt
திடம் $alt
திரவம் $alt
திடீர் $alt
திவசம் $alt
தியானம் $alt
தானியம் $alt
தண்டனை $alt
துவம்சம் $alt
திருஷ்டி $alt
தயாநிதி $alt
தயாளு $alt
துக்கம் $alt
திகில் $alt
துந்துவி $alt
தயவு $alt
தடால் $alt
@@ -249,31 +220,25 @@ _dpt _pul.l.i
தடக் $alt
தீக்ஷை $alt
தடியன் $alt
தரிசனம் $alt
தட்சணை $alt
கக $alt // initial க as [g]
கனம் $alt
கணம் $alt
கணபதி $alt
கணீர் $alt
கிலி $alt
கில்லி $alt
கோதுமை $alt
கோபுரம் $alt
காந்தம் $alt
காந்தி $alt
குண்டு $alt
கோலி $alt
குகை $alt
கிரி $alt
கோமதி $alt
கயா $alt
காயத்ரி $alt
கங்கை $alt
கங்கா $alt
குரு $alt
குகன் $alt
கட $alt
கோ $alt
கதி $alt
பப pVpV
+114 -11
View File
@@ -66,15 +66,32 @@
_) க (BT g // $alt
க்க kkV
க்க (B kk
_) க (ௌ g
க (ீத g
க (ஜ gV
_) க (ௌ g
_) க (ம்பீர gV
_) க (ந்தர்வ gV
_) க (ோவிந்த g
_) க (ணே gV
_) க (ருட gV
_) க (ர்ஜ gV
_) க (ாண்டாமிருக g
_) க (ோந்து g
_) க (ாந்த g
_) க (ுண்ட g
_) க (ோபுர g
_) க (ுரு g
_) க (ுகன g
_) க (ணபதி gV
_) க (ணீர gV
_) க (ோதுமை g
_) க (ுகை g
_) க (ோஷ g
_) க (ுண g
_) க (தியில் gV
_) க (டிகார gV
ங NV
@@ -93,10 +110,8 @@
ட்) ச (B tS
ஞ்) ச dZV
ஞ்) ச (B dZ
_) ச (ட் tS
_) ச (Bட் tS
_) ச (ன் tS
_) ச (Bன் tS
_) ச (ிட் tS
_) ச (ின் tS
@@ -114,7 +129,8 @@
// _) ட (B t.
ட்ட t.t.V
ட்ட (B t.t.
ஷ்) ட t.V
ஷ்) ட (B t.
ண n.V
ண (B n.
@@ -128,8 +144,14 @@
_) த (BT d // if word has $alt
த்த ttV
த்த (B tt
க்) த tV
க்) த (B t
ஸ்) த tV
ஸ்) த (B t
// exceptions, த as [d]
// exceptions, த as [d]
_) த (ன dV
_) த (ர்ம dV
_) த (ுர் d
@@ -138,6 +160,46 @@
_) த (ுஷ் d
_) த (க்ஷிணா dV
_) த (ண்ட dV
_) த (ருமி dV
_) த (ர்பை dV
_) த (ாவா d
_) த (ாதா d
_) த (ரித்திரம dV
_) த (ர்பார dV
_) த (ீர்க d
_) த (ினுச d
_) த (ாராவி d
_) த (ர்க dV
_) த (ான d
_) த (ேக d
_) த (ேக்கு t
_) த (ேக்கிலை t
_) த (ேக்கடி t
_) த (ிரவிய d
_) த (ூப d
_) த (ீப d
_) த (ீர d
_) த (ைரிய d
_) த (ிட d
_) த (ிரவ d
_) த (ிடீ d
_) த (ிவச d
_) த (ியான d
_) த (ானிய d
_) த (ுக்க d
_) த (ிகில d
_) த (ூம d
_) த (ாவணி d
_) த (ாம்_தூம d
_) த (ாடி d
_) த (ாச d
_) த (சரா dV
_) த (ோஷ d
_) த (ரணி dV
_) த (ாரணி d
_) த (ோசை d
ந nV
ந (B n // dental n
@@ -159,18 +221,59 @@
ட்) ப (B p
ற்) ப pV
ற்) ப (B p
று) ப pV
று) ப(B p
ன்) ப pV
ன்) ப (B p
ம்) ப p
ம்) ப (ா p
ம்) ப (B b
த்) ப p
த்) ப (ா p
த்) ப (B b
ஃ) ப fV
ஃ) ப (B f
_) ப (ால b
_) ப (ால் p
_) ப (ாலின் p
_) ப (ாலை p
_) ப (ாலில் p
_) ப (ாலுடன் p
_) ப (ாலினுடைய p
_) ப (ாலாபிஷேக p
_) ப (ாலு b
_) ப (ானு b
_) ப (ீம b
_) ப (காசுர bV
_) ப (ோஜ b
_) ப (தில bV
_) ப (க்தி bV
_) ப (ஜ bV
_) ப (ைரவ b
_) ப (யம bV
_) ப (ார்கவி b
_) ப (ூதேவி b
_) ப (ம்பாய bV
_) ப (ாதுஷா b
_) ப (க்த bV
_) ப (லம bV
_) ப (லவான bV
_) ப (ிராமண b
_) ப (ிரம்ம b
_) ப (ம்பர bV
_) ப (லூன bV
_) ப (ூமி b
_) ப (ூலோக b
_) ப (ூகோல b
_) ப (ூத b
_) ப (ுதன b
_) ப (லி bV
_) ப (கவான bV
_) ப (ௌதிக b
ம mV
ம (B m
@@ -217,8 +320,8 @@
ஸ (B s
ஹ hV
ஹ (B h
ஹ HV
ஹ (B H
க்ஷ ks.V
+16 -9
View File
@@ -51,7 +51,7 @@
id 15 127
sq 35 128
hy 24 120
da 21 119
da 22 122
rw 15 132
ml 13 154
kn 15 154
@@ -60,7 +60,7 @@
mr 12 152
eu 6 126
mn 15 115
pa 13 153
pa 14 154
prs 8 111
Data file Used by
@@ -244,6 +244,7 @@ envelope/i_risefall2 [+2] rw
envelope/p_214 [5] vi
[214] zh
envelope/p_512 [6] vi
[+] pa
envelope/p_fall [2] vi
[7] vi
[4] zhy
@@ -567,6 +568,12 @@ n^/n^o [(o)] base
n/no [(o)] base
n/_nr [n.] base
n/nr_ [n.] base
n/nr@ [(@)] base
n/nra [(a)] base
n/nre [(e)] base
n/nri [(i)] base
n/nro [(o)] base
n/nru [(u)] base
n^/n^u [(u)] base
n/nu [(u)] base
r2/_r2 [r-] base
@@ -617,12 +624,12 @@ r3/r_trill.wav [R2] base
[x] pt
r3/r_u [(u)] base
r3/r_uvl [r"] base
[R2] da
[R4] da
r3/r_uvl.wav [r"] base
[R] fr
[r] fr
[r/2] fr
[R2] da
[R4] da
r3/rx [*] base
[r/] base
[r/] af
@@ -638,10 +645,12 @@ r3/@tap [**] base
r3/@tap2 [**] base
r3/@tap_rfx [r.] base
r/a_ [r] da
r/aa [R6] da
r/r [r] base
[r-] base
[r] en_sc
[r] de
[R5] da
r/_r [r] base
[r] en_sc
[r.] bn
@@ -779,7 +788,6 @@ ufric/x_sr [h] sr
[x] sr
ufric/xx [X] base
[Q"] base
[R] da
ustop/c [c] base
ustop/k [k] base
[k] en
@@ -1357,8 +1365,8 @@ vnasal/o_n [o~] hi
[o~] bn
vnasal/o_n2 [o~] af
[O~] fr
vnasal/oo_n [O~] en
vnasal/oo_n2 [O~] hi
vnasal/oo_n2 [O~] en
[O~] hi
[o] zh
[O~] bn
vnasal/oo_n3 [O~] pl
@@ -1386,7 +1394,6 @@ voc/Q_ [Q] base
voc/Q_less [Q] nl
[x2] pt
voc/Q_ulv [Q"] base
[R] da
voc/v [v] base
[v] fi
[v] fr
@@ -2222,7 +2229,6 @@ vwl_en/aI@_2 [aI] en_sc
[aI@] en_sc
vwl_en/aU@ [aU@] en
[aU@] en_n
[aU@] en_us
[aU@] en_sc
[aU@] en_wm
vwl_en/@L [@L] en
@@ -2250,6 +2256,7 @@ vwl_en_us/a [a] en_us
vwl_en_us/ai@ [aI@] en_us
vwl_en_us/ar [A:] en_us
[A@] en_us
vwl_en_us/aU@ [aU@] en_us
vwl_en_us/ee [E] en_us
vwl_en_us/er [e@] en_us
vwl_en_us/ir [i@3] en_us
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+17 -8
View File
@@ -134,18 +134,27 @@ phoneme r // used for 'r' after a vowel (to create a diphthong)
lengthmod 7
endphoneme
phoneme R2 // uvular trill [r"]
vcd uvl frc
formants r3/r_uvl+r3/r_uvl.wav%75
before _ r3/r_uvl+r3/r_uvl.wav%50
lengthmod 6
phoneme R6 //
liquid
formants r/aa
lengthmod 7
endphoneme
phoneme R // voiced velar fricative [Q"]
phoneme R4 // uvular trill [r"] without WAV
vcd uvl frc
formants voc/Q_ulv+ufric/xx%80
before _ voc/Q_ulv+ufric/xx%60
formants r3/r_uvl+r3/r_uvl.wav%1
before _ r3/r_uvl+r3/r_uvl.wav%1
lengthmod 6
endphoneme
phoneme R5 // English r
liquid starttype #r endtype #r
rhotic
length 100
lengthmod 7
beforenotvowel r/
formants r/r
endphoneme
+3 -3
View File
@@ -223,7 +223,7 @@ endphoneme
phoneme o@
vowel starttype (o) endtype (@)
length 240
length 250
formants vowel/oo_en
linkout r-
endphoneme
@@ -385,8 +385,8 @@ endphoneme
phoneme O~
vowel starttype (o) endtype (o)
length 260
formants vnasal/oo_n
length 240
formants vnasal/oo_n2
endphoneme
+6 -6
View File
@@ -201,7 +201,7 @@ endphoneme
phoneme u:
vowel starttype (u) endtype (u)
length 180
length 190
formants vdiph2/uw
endphoneme
@@ -243,7 +243,7 @@ endphoneme
phoneme e@
vowel starttype (e) endtype (@)
length 270
length 280
formants vwl_en_us/er
appendph r
endphoneme
@@ -251,7 +251,7 @@ endphoneme
phoneme i@3
vowel starttype (i) endtype (@)
length 250
length 280
formants vwl_en_us/ir
appendph r
endphoneme
@@ -259,7 +259,7 @@ endphoneme
phoneme U@
vowel starttype (@) endtype (@)
length 240
length 250
formants vwl_en_us/ur
linkout r-
endphoneme
@@ -275,8 +275,8 @@ endphoneme
phoneme aU@
vowel starttype (a) endtype (@)
length 270
formants vwl_en/aU@
length 300
formants vwl_en_us/aU@
linkout r-
endphoneme
+1 -1
View File
@@ -154,7 +154,7 @@ phoneme dz
vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=50
vowelout f1=2 f2=1700 -300 300 f3=-100 80
formants d/xdz+ustop/ts%140
before _ voc/z_+ustop/ts_%70
before _ voc/z_+ustop/ts_%60
after _ NULL
after @ d/xd
lengthmod 5
+2 -2
View File
@@ -25,7 +25,7 @@ endphoneme
phoneme a:
vowel starttype (a) endtype (a)
length 270
length 300
formants vowel/a_5
endphoneme
@@ -53,7 +53,7 @@ endphoneme
phoneme i:
vowel starttype (i) endtype (i)
length 270
length 300
formants vowel/i
endphoneme
+6 -1
View File
@@ -220,6 +220,7 @@ phoneme (@) virtual
after r- r2/r2@
after m m/m@
after n n/n@
after n. n/nr@
after N nn/nn@
after n^ n^/n^@
before l/ DFT-60+l/L1_@L
@@ -243,6 +244,7 @@ phoneme (a) virtual
after r- r2/r2a
after m m/ma
after n n/na
after n. n/nra
after N nn/nna
after n^ n^/n^a
before l/ DFT-40+l/L1_aL
@@ -266,6 +268,7 @@ phoneme (e) virtual
after r- r2/r2e
after m m/me
after n n/ne
after n. n/nre
after N nn/nne
after n^ n^/n^e
before l/ DFT-30+l/L1_eL
@@ -289,6 +292,7 @@ phoneme (i) virtual
after r- r2/r2i
after m m/mi
after n n/ni
after n. n/nri
after N nn/nni
after n^ n^/n^i
before l/ DFT-30+l/L1_iL
@@ -313,6 +317,7 @@ phoneme (o) virtual
after r- r2/r2o
after m m/mo
after n n/no
after n. n/nro
after N nn/nno
after n^ n^/n^o
before l/ DFT-40+l/L1_oL
@@ -336,6 +341,7 @@ phoneme (u) virtual
after r- r2/r2u
after m m/mu
after n n/nu
after n. n/nru
after N nn/nnu
after n^ n^/n^u
before l/ DFT-40+l/L1_uL
@@ -571,7 +577,6 @@ endphoneme
phoneme n.
vcd rfx nasal
starttype n endtype n
vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2
vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2
length 100
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -34,6 +34,7 @@
#define PATHSEP '\\'
#define USE_PORTAUDIO
//#define USE_NANOSLEEP
#define NO_VARIADIC_MACROS
#define __cdecl
#define ESPEAK_API
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data"
@@ -34,6 +34,7 @@
#define PATHSEP '\\'
#define USE_PORTAUDIO
//#define USE_NANOSLEEP
#define NO_VARIADIC_MACROS
#define __cdecl
#define ESPEAK_API
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data"
@@ -30,6 +30,7 @@
#define PATHSEP '\\'
#define USE_PORTAUDIO
#define NO_VARIADIC_MACROS
#define ESPEAK_API
//#define INCLUDE_KLATT
@@ -27,6 +27,7 @@
#define __WIN32__
#define NEED_WCSTOF
#define NEED_GETOPT
#define NO_VARIADIC_MACROS
#define USE_MBROLA_LIB
#define ESPEAK_API
+1 -3
View File
@@ -568,12 +568,10 @@ step=1; // TEST
}
else
{
dict_line[length++] = 80 + multiple_words + multiple_numeric_hyphen; // if numeric, count a hyphen as an extra word
dict_line[length++] = 80 + multiple_words;
ix = multiple_string_end - multiple_string;
if(multiple_numeric_hyphen)
{
// the first part is numeric, so keep the hyphen to match on
dict_line[length++] = '-';
dict_line[length++] = ' ';
}
memcpy(&dict_line[length],multiple_string,ix);
+1 -1
View File
@@ -13,7 +13,7 @@ extern void debug_time(const char* text);
#else
#ifdef PLATFORM_WINDOWS
#ifdef NO_VARIADIC_MACROS
#define SHOW(format) // VC6 doesn't allow "..."
#else
#define SHOW(format,...)
+21 -10
View File
@@ -1030,7 +1030,7 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress)
void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress)
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress)
{//=========================================================================================================
/* Guess stress pattern of word. This is language specific
@@ -1099,11 +1099,11 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */
// any stress position marked in the xx_list dictionary ?
stressed_syllable = dictionary_flags & 0x7;
if(dictionary_flags & 0x8)
stressed_syllable = dictionary_flags[0] & 0x7;
if(dictionary_flags[0] & 0x8)
{
// this indicates a word without a primary stress
stressed_syllable = dictionary_flags & 0x3;
stressed_syllable = dictionary_flags[0] & 0x3;
unstressed_word = 1;
}
@@ -1113,7 +1113,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
{
// option: don't stress monosyllables except at end-of-clause
vowel_stress[1] = 1;
dictionary_flags |= FLAG_STRESS_END2;
dictionary_flags[0] |= FLAG_STRESS_END2;
}
// heavy or light syllables
@@ -1350,7 +1350,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
}
break;
case 7: // LANG=tr, the last syllable for any vowel markes explicitly as unstressed
case 7: // LANG=tr, the last syllable for any vowel marked explicitly as unstressed
if(stressed_syllable == 0)
{
stressed_syllable = vowel_count - 1;
@@ -2575,10 +2575,15 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
#endif
// is it a bracket ?
if(letter == 0xe000+'(')
{
if(pre_pause < tr->langopts.param2[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param2[LOPT_BRACKET_PAUSE]; // a bracket, aleady spoken by AnnouncePunctuation()
}
if(IsBracket(letter))
{
if(pre_pause < 4)
pre_pause = 4;
if(pre_pause < tr->langopts.param[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param[LOPT_BRACKET_PAUSE];
}
// no match, try removing the accent and re-translating the word
@@ -3162,6 +3167,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
continue;
}
}
if(dictionary_flags & FLAG_ALT2_TRANS)
{
// language specific
if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags & FLAG_ALT_TRANS))
continue;
}
if(flags != NULL)
{
@@ -3256,7 +3267,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
// set the skip words flag
flags[0] |= FLAG_SKIPWORDS;
dictionary_skipwords = length;
return(1);
return(flags[0]);
}
}
@@ -3356,7 +3367,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
return(0);
}
return(1);
return(flags[0]);
}
ph_out[0] = 0;
+92 -19
View File
@@ -20,7 +20,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef NEED_GETOPT
#include <getopt.h>
#endif
#include <time.h>
#include <sys/stat.h>
@@ -294,6 +296,21 @@ static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
}
#ifdef NEED_GETOPT
struct option {
char *name;
int has_arg;
int *flag;
int val;
};
int optind;
static int optional_argument;
static const char *arg_opts = "abfgklpsvw"; // which options have arguments
static char *opt_string="";
#define no_argument 0
#define required_argument 1
#define optional_argument 2
#endif
int main (int argc, char **argv)
//==============================
@@ -330,6 +347,7 @@ int main (int argc, char **argv)
int option_index = 0;
int c;
int ix;
char *optarg2;
int value;
int flag_stdin = 0;
int flag_compile = 0;
@@ -361,6 +379,59 @@ int main (int argc, char **argv)
filename[0] = 0;
option_punctlist[0] = 0;
#ifdef NEED_GETOPT
optind = 1;
opt_string = "";
while(optind < argc)
{
int len;
char *p;
if((c = *opt_string) == 0)
{
opt_string = argv[optind];
if(opt_string[0] != '-')
break;
optind++;
opt_string++;
c = *opt_string;
}
opt_string++;
p = optarg2 = opt_string;
if(c == '-')
{
opt_string="";
for(ix=0; ;ix++)
{
if(long_options[ix].name == 0)
break;
len = strlen(long_options[ix].name);
if(memcmp(long_options[ix].name,p,len)==0)
{
c = long_options[ix].val;
optarg2 = NULL;
if((long_options[ix].has_arg != 0) && (p[len]=='='))
{
optarg2 = &p[len+1];
}
break;
}
}
}
else
if(strchr(arg_opts,c) != NULL)
{
opt_string="";
if(optarg2[0]==0)
{
// the option's value is in the next argument
optarg2 = argv[optind++];
}
}
#else
while(true)
{
c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz",
@@ -369,12 +440,14 @@ int main (int argc, char **argv)
/* Detect the end of the options. */
if (c == -1)
break;
optarg2 = optarg;
#endif
switch (c)
{
case 'b':
// input character encoding, 8bit, 16bit, UTF8
if((sscanf(optarg,"%d",&value) == 1) && (value <= 4))
if((sscanf(optarg2,"%d",&value) == 1) && (value <= 4))
synth_flags |= value;
else
synth_flags |= espeakCHARS_8BIT;
@@ -387,7 +460,7 @@ int main (int argc, char **argv)
break;
case 'k':
option_capitals = atoi(optarg);
option_capitals = atoi(optarg2);
break;
case 'x':
@@ -403,7 +476,7 @@ int main (int argc, char **argv)
break;
case 'p':
pitch = atoi(optarg);
pitch = atoi(optarg2);
break;
case 'q':
@@ -411,32 +484,32 @@ int main (int argc, char **argv)
break;
case 'f':
strncpy0(filename,optarg,sizeof(filename));
strncpy0(filename,optarg2,sizeof(filename));
break;
case 'l':
option_linelength = atoi(optarg);
option_linelength = atoi(optarg2);
break;
case 'a':
volume = atoi(optarg);
volume = atoi(optarg2);
break;
case 's':
speed = atoi(optarg);
speed = atoi(optarg2);
break;
case 'g':
wordgap = atoi(optarg);
wordgap = atoi(optarg2);
break;
case 'v':
strncpy0(voicename,optarg,sizeof(voicename));
strncpy0(voicename,optarg2,sizeof(voicename));
break;
case 'w':
option_waveout = 1;
strncpy0(wavefile,optarg,sizeof(filename));
strncpy0(wavefile,optarg2,sizeof(filename));
break;
case 'z': // remove pause from the end of a sentence
@@ -454,17 +527,17 @@ int main (int argc, char **argv)
case 0x101: // --compile-debug
case 0x102: // --compile
strncpy0(voicename,optarg,sizeof(voicename));
strncpy0(voicename,optarg2,sizeof(voicename));
flag_compile = c;
quiet = 1;
break;
case 0x103: // --punct
option_punctuation = 1;
if(optarg != NULL)
if(optarg2 != NULL)
{
ix = 0;
while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg[ix]) != 0)) ix++;
while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg2[ix]) != 0)) ix++;
option_punctlist[N_PUNCTLIST-1] = 0;
option_punctuation = 2;
}
@@ -472,24 +545,24 @@ int main (int argc, char **argv)
case 0x104: // --voices
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0);
DisplayVoices(stdout,optarg);
DisplayVoices(stdout,optarg2);
exit(0);
case 0x106: // -- split
if(optarg == NULL)
if(optarg2 == NULL)
samples_split = 30; // default 30 minutes
else
samples_split = atoi(optarg);
samples_split = atoi(optarg2);
break;
case 0x107: // --path
data_path = optarg;
data_path = optarg2;
break;
case 0x108: // --phonout
if((f_phonemes_out = fopen(optarg,"w")) == NULL)
if((f_phonemes_out = fopen(optarg2,"w")) == NULL)
{
fprintf(stderr,"Can't write to: %s\n",optarg);
fprintf(stderr,"Can't write to: %s\n",optarg2);
}
break;
-25
View File
@@ -366,31 +366,6 @@ void MyFrame::OnQuit(wxCommandEvent& event)
}
#ifdef deleted
void MyFrame::OnAbout(wxCommandEvent& event)
{//=========================================
int result;
char buf[300];
wxString url_docs;
switch(event.GetId())
{
case MENU_ABOUT:
sprintf(buf,about_string,espeak_Info(NULL));
(void)wxMessageBox(wxString(buf,wxConvLocal), _T("About eSpeak Editor"));
break;
case MENU_DOCS:
sprintf(buf,"%s/docs/docindex.html",path_home);
url_docs = wxString(buf,wxConvLocal);
result = wxLaunchDefaultBrowser(url_docs);
if(result == 0)
wxLogStatus(_T("Failed to launch browser"));
break;
}
}
#endif
class HtmlWindow: public wxHtmlWindow
{
+1 -1
View File
@@ -275,7 +275,7 @@ static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = {
};
static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
{PITCHfall, 30, 5, PITCHfall, 32, 9, NULL, 12, 7, 0}, // 0 statement
{PITCHfall, 29, 4, PITCHfall, 32, 9, NULL, 12, 6, 0}, // 0 statement
{PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma
{PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question
// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation
+185 -119
View File
@@ -65,6 +65,9 @@
#define M_MIDDLE_DOT M_DOT_ABOVE // duplicate of M_DOT_ABOVE
#define M_IMPLOSIVE M_HOOK
static int n_digit_lookup;
static char *digit_lookup;
typedef struct {
const char *name;
int flags;
@@ -783,6 +786,8 @@ static int CheckDotOrdinal(Translator *tr, char *word, WORD_TAB *wtab, int lower
} // end of CheckDotOrdinal
int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
{//=========================================================================
int c;
@@ -995,6 +1000,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
int found;
int ix;
int units;
int tens;
int used_and=0;
int found_ordinal = 0;
int next_phtype;
@@ -1004,143 +1010,167 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
char ph_digits[50];
char ph_and[12];
// is there a special pronunciation for this 2-digit number
units = value % 10;
tens = value / 10;
found = 0;
ph_ordinal[0] = 0;
if(control & 8)
if((control & 2) && (n_digit_lookup == 2))
{
sprintf(string,"_%df",value);
found = Lookup(tr, string, ph_digits);
}
else
if(control & 1)
{
strcpy(ph_ordinal, ph_ordinal2);
if(control & 4)
{
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits
found = Lookup(tr, string, ph_digits);
}
if(found == 0)
{
sprintf(string,"_%do",value);
found = Lookup(tr, string, ph_digits);
}
found_ordinal = found;
}
if(found == 0)
{
if((value == 1) && (control & 2))
{
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins"
return(0);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}
// no, speak as tens+units
if((control & 0x10) && (value < 10))
{
// speak leading zero
Lookup(tr, "_0", ph_tens);
// pronunciation of the final 2 digits has already been found
strcpy(ph_out, digit_lookup);
}
else
{
if(found)
if(digit_lookup[0] == 0)
{
ph_tens[0] = 0;
// is there a special pronunciation for this 2-digit number
if(control & 8)
{
sprintf(string,"_%df",value);
found = Lookup(tr, string, ph_digits);
}
else
if(control & 1)
{
strcpy(ph_ordinal, ph_ordinal2);
if(control & 4)
{
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits
found = Lookup(tr, string, ph_digits);
}
if(found == 0)
{
sprintf(string,"_%do",value);
found = Lookup(tr, string, ph_digits);
}
found_ordinal = found;
}
if(found == 0)
{
if((value == 1) && (control & 2))
{
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins"
return(0);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}
}
// no, speak as tens+units
if((control & 0x10) && (value < 10))
{
// speak leading zero
Lookup(tr, "_0", ph_tens);
}
else
{
units = (value % 10);
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
if(found)
{
sprintf(string,"_%dXo",value / 10);
if(Lookup(tr, string, ph_tens) != 0)
{
found_ordinal = 1;
}
ph_tens[0] = 0;
}
if(found_ordinal == 0)
else
{
sprintf(string,"_%dX",value / 10);
Lookup(tr, string, ph_tens);
}
if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
{
// tens not found, (for example) 73 is 60+13
units = (value % 20);
sprintf(string,"_%dX",(value / 10) & 0xfe);
Lookup(tr, string, ph_tens);
}
ph_digits[0] = 0;
if(units > 0)
{
found = 0;
if(control & 8)
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0))
{
// ordinal
sprintf(string,"_%do",units);
if((found = Lookup(tr, string, ph_digits)) != 0)
sprintf(string,"_%dXo", tens);
if(Lookup(tr, string, ph_tens) != 0)
{
found_ordinal = 1;
}
}
if(found == 0)
if(found_ordinal == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
sprintf(string,"_%dX", tens);
Lookup(tr, string, ph_tens);
}
if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
{
// tens not found, (for example) 73 is 60+13
units = (value % 20);
sprintf(string,"_%dX", tens & 0xfe);
Lookup(tr, string, ph_tens);
}
ph_digits[0] = 0;
if(units > 0)
{
found = 0;
if((control & 2) && (digit_lookup[0] != 0))
{
// we have an entry for this digit (possibly together with the next word)
strcpy(ph_digits, digit_lookup);
found_ordinal = 1;
ph_ordinal[0] = 0;
}
else
{
if(control & 8)
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0))
{
// ordinal
sprintf(string,"_%do",units);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
found_ordinal = 1;
}
}
if(found == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
}
}
}
}
}
}
if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
Lookup(tr, "_ord20", ph_ordinal);
if(ph_ordinal[0] == 0)
Lookup(tr, "_ord", ph_ordinal);
}
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
{
Lookup(tr, "_0and", ph_and);
if(tr->langopts.numbers & NUM_SWAP_TENS)
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
else
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
used_and = 1;
}
else
{
if(tr->langopts.numbers & NUM_SINGLE_VOWEL)
{
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian)
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0))
{
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
ph_tens[ix] = 0;
}
if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
Lookup(tr, "_ord20", ph_ordinal);
if(ph_ordinal[0] == 0)
Lookup(tr, "_ord", ph_ordinal);
}
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
{
Lookup(tr, "_0and", ph_and);
if(tr->langopts.numbers & NUM_SWAP_TENS)
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
else
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
used_and = 1;
}
else
{
if(tr->langopts.numbers & NUM_SINGLE_VOWEL)
{
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian)
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0))
{
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
ph_tens[ix] = 0;
}
}
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
}
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
}
if(tr->langopts.numbers & NUM_SINGLE_STRESS)
@@ -1357,17 +1387,21 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
char ph_append[50];
char ph_buf[200];
char ph_buf2[50];
char ph_zeros[50];
char suffix[20];
char buf_digit_lookup[50];
static const char str_pause[2] = {phonPAUSE_NOLINK,0};
*flags = 0;
digit_lookup = buf_digit_lookup;
for(ix=0; isdigit(word[ix]); ix++) ;
n_digits = ix;
value = this_value = atoi(word);
ph_ordinal2[0] = 0;
ph_zeros[0] = 0;
ordinal = CheckDotOrdinal(tr, &word[ix], wtab, 1);
@@ -1377,11 +1411,11 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
ix++;
hyphen = 0;
p = suffix;
if(word[ix] == '-')
if(wtab[0].flags & FLAG_HYPHEN_AFTER)
{
*p++ = '-';
hyphen = 1;
ix += 2;
ix++;
}
while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1)))
{
@@ -1397,7 +1431,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
// this is an ordinal suffix
ordinal = 2;
flags[0] |= FLAG_SKIPWORDS;
dictionary_skipwords = 1 + hyphen;
dictionary_skipwords = 1;
}
}
}
@@ -1431,7 +1465,17 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
else
{
return(0); // number string with leading zero, speak as individual digits
if(n_digits > 3)
{
flags[0] &= ~FLAG_SKIPWORDS;
return(0); // long number string with leading zero, speak as individual digits
}
// speak leading zeros
for(ix=0; (word[ix] == '0') && (ix < (n_digits-1)); ix++)
{
Lookup(tr, "_0", &ph_zeros[strlen(ph_zeros)]);
}
}
}
@@ -1504,11 +1548,33 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
Lookup(tr, "_.", ph_append);
}
n_digit_lookup = 0;
buf_digit_lookup[0] = 0;
if(thousandplex == 0)
{
char *p2;
// look for combinations of the number with the next word
p = word;
while(isdigit(p[1])) p++; // just use the last digit
if(isdigit(p[-1]))
{
p2 = p - 1;
if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits
n_digit_lookup = 2;
}
if((buf_digit_lookup[0] == 0) && (*p != '0'))
{
// not found, lookup only the last digit
if(LookupDictList(tr, &p, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // don't match '0', or entries with $only
n_digit_lookup = 1;
}
}
LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal);
if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200))
sprintf(ph_out,"%s%s%s",ph_append,ph_buf2,ph_buf); // say "thousands" before its number
sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_append,ph_buf2,ph_buf); // say "thousands" before its number
else
sprintf(ph_out,"%s%s%s",ph_buf2,ph_buf,ph_append);
sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_buf2,ph_buf,ph_append);
while(decimal_point)
@@ -1603,7 +1669,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p);
if(!iswalpha(next_char))
if(!iswalpha(next_char) && !(wtab[0].flags & FLAG_HYPHEN_AFTER))
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
}
+23 -23
View File
@@ -104,16 +104,16 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST2 *plist_out)
if(((pl = &ph_list2[k])->sourceix != 0) && (k > ix))
break;
pl->stress &= 0xf;
pl->stresslevel &= 0xf;
if(phoneme_tab[pl->phcode]->type == phVOWEL)
{
n_syllables++;
if(pl->stress > max_stress)
if(pl->stresslevel > max_stress)
{
syllable_stressed = n_syllables;
max_stress = pl->stress;
max_stress = pl->stresslevel;
max_stress_posn = k;
}
}
@@ -137,7 +137,7 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST2 *plist_out)
flags |= 8;
ch.flags = flags | word_end;
ch.stress = plist2->stress;
ch.stress = plist2->stresslevel;
ch.stress_highest = max_stress;
ch.n_vowels = n_syllables;
ch.vowel_this = syllable;
@@ -156,13 +156,13 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST2 *plist_out)
if((replace_flags & 1) && (word_end == 0))
continue; // this replacement only occurs at the end of a word
if((replace_flags & 2) && ((plist2->stress & 0x7) > 3))
if((replace_flags & 2) && ((plist2->stresslevel & 0x7) > 3))
continue; // this replacement doesn't occur in stressed syllables
// substitute the replacement phoneme
plist2->phcode = replace_phonemes[k].new_ph;
if((plist2->stress > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
plist2->stress = 0; // the replacement must be unstressed
if((plist2->stresslevel > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
plist2->stresslevel = 0; // the replacement must be unstressed
break;
}
}
@@ -214,8 +214,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
for(j = n_ph_list2-3; j>=0; j--)
{
// start with the last phoneme (before the terminating pauses) and move forwards
if((plist2[j].stress & 0x7f) > max_stress)
max_stress = plist2[j].stress & 0x7f;
if((plist2[j].stresslevel & 0x7f) > max_stress)
max_stress = plist2[j].stresslevel & 0x7f;
if(plist2[j].sourceix != 0)
break;
}
@@ -226,10 +226,10 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
{
if(plist2[j].synthflags & SFLAG_PROMOTE_STRESS) // dictionary flags indicated that this stress can be promoted
{
plist2[j].stress = 4; // promote to stressed
plist2[j].stresslevel = 4; // promote to stressed
break;
}
if(plist2[j].stress >= 4)
if(plist2[j].stresslevel >= 4)
{
// found a stressed syllable, so stop looking
break;
@@ -344,7 +344,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
if(plist2->phcode == phonSWITCH)
{
// change phoneme table
SelectPhonemeTable(plist2->tone_number);
SelectPhonemeTable(plist2->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG;
}
next = phoneme_tab[(plist2+1)->phcode]; // the phoneme after this one
@@ -363,8 +363,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
if(ph_list3[k].sourceix)
break; // start of the next word
if(ph_list3[k].stress > word_stress)
word_stress = ph_list3[k].stress;
if(ph_list3[k].stresslevel > word_stress)
word_stress = ph_list3[k].stresslevel;
}
}
@@ -373,7 +373,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
if(ph->type == phVOWEL)
{
// check for consecutive unstressed syllables
if(plist2->stress == 0)
if(plist2->stresslevel == 0)
{
// an unstressed vowel
unstress_count++;
@@ -388,7 +388,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
}
else
{
plist2->stress = 1; // change stress to 'diminished'
plist2->stresslevel = 1; // change stress to 'diminished'
}
}
}
@@ -455,7 +455,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
{
plist2->synthflags |= SFLAG_SYLLABLE;
if(ph2->type != phVOWEL)
plist2->stress = 0; // change from non-vowel to vowel, make sure it's unstressed
plist2->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed
}
else
plist2->synthflags &= ~SFLAG_SYLLABLE;
@@ -465,7 +465,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
{
if((ph->mnemonic == 't') && (plist2->sourceix == 0) && ((prev->type == phVOWEL) || (prev->mnemonic == 'n')))
{
if(((plist2+1)->sourceix == 0) && ((plist2+1)->stress < 3) && (next->type == phVOWEL))
if(((plist2+1)->sourceix == 0) && ((plist2+1)->stresslevel < 3) && (next->type == phVOWEL))
{
ph = phoneme_tab[phonT_REDUCED];
}
@@ -483,13 +483,13 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
if(ph->type == phVOWEL)
{
stress_level = plist2->stress;
stress_level = plist2->stresslevel;
}
else
{
// consonant, get stress from the following vowel
if(next->type == phVOWEL)
stress_level = (plist2+1)->stress;
stress_level = (plist2+1)->stresslevel;
else
break;
}
@@ -562,7 +562,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
insert_ph = phonPAUSE_VSHORT;
}
if(((plist2+1)->stress >= 4) && (tr->langopts.vowel_pause & 0x100))
if(((plist2+1)->stresslevel >= 4) && (tr->langopts.vowel_pause & 0x100))
{
// pause before a words which starts with a stressed vowel
insert_ph = phonPAUSE_SHORT;
@@ -628,8 +628,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist2->synthflags | switched_language;
phlist[ix].stresslevel = plist2->stress & 0xf;
phlist[ix].tone_ph = plist2->tone_number;
phlist[ix].stresslevel = plist2->stresslevel & 0xf;
phlist[ix].tone_ph = plist2->tone_ph;
phlist[ix].sourceix = 0;
if(plist2->sourceix != 0)
+105 -54
View File
@@ -63,9 +63,6 @@ int count_characters = 0;
static int sayas_mode;
static int ssml_ignore_l_angle = 0;
static const char *punct_stop = ".:!?"; // pitch fall if followed by space
static const char *punct_close = ")]}>;'\""; // always pitch fall unless followed by alnum
// alter tone for announce punctuation or capitals
//static const char *tone_punct_on = "\0016T"; // add reverberation, lower pitch
//static const char *tone_punct_off = "\001T\001P";
@@ -121,7 +118,7 @@ static const unsigned int punct_attributes [] = { 0,
CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON,
CLAUSE_SEMICOLON, // en-dash
CLAUSE_SEMICOLON, // em-dash
CLAUSE_SEMICOLON, // elipsis
CLAUSE_SEMICOLON + PUNCT_SAY_NAME, // elipsis
CLAUSE_QUESTION, // Greek question mark
CLAUSE_SEMICOLON, // Greek semicolon
@@ -574,7 +571,7 @@ static const char *LookupSpecial(Translator *tr, const char *string, char* text_
if(LookupDictList(tr,&string1,phonemes,flags,0,NULL))
{
SetWordStress(tr, phonemes, flags[0], -1, 0);
SetWordStress(tr, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2);
sprintf(text_out,"[[%s]]",phonemes2);
option_phoneme_input |= 2;
@@ -584,8 +581,8 @@ static const char *LookupSpecial(Translator *tr, const char *string, char* text_
}
static const char *LookupCharName(Translator *tr, int c)
{//=====================================================
static const char *LookupCharName(Translator *tr, int c, int only)
{//===============================================================
// Find the phoneme string (in ascii) to speak the name of character c
// Used for punctuation characters and symbols
@@ -606,20 +603,28 @@ static const char *LookupCharName(Translator *tr, int c)
ix = utf8_out(c,&single_letter[2]);
single_letter[2+ix]=0;
string = &single_letter[1];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
if(only)
{
// try _* then *
string = &single_letter[2];
LookupDictList(tr, &string, phonemes, flags, 0, NULL);
}
else
{
string = &single_letter[1];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
{
// now try the rules
single_letter[1] = ' ';
TranslateRules(tr, &single_letter[2], phonemes, sizeof(phonemes), NULL,0,NULL);
// try _* then *
string = &single_letter[2];
if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
{
// now try the rules
single_letter[1] = ' ';
TranslateRules(tr, &single_letter[2], phonemes, sizeof(phonemes), NULL,0,NULL);
}
}
}
if((phonemes[0] == 0) && (tr->translator_name != L('e','n')))
if((only==0) && (phonemes[0] == 0) && (tr->translator_name != L('e','n')))
{
// not found, try English
SetTranslator2("en");
@@ -644,20 +649,21 @@ static const char *LookupCharName(Translator *tr, int c)
{
if(lang_name)
{
SetWordStress(translator2, phonemes, flags[0], -1, 0);
SetWordStress(translator2, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2);
sprintf(buf,"[[_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name));
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
}
else
{
SetWordStress(tr, phonemes, flags[0], -1, 0);
SetWordStress(tr, phonemes, flags, -1, 0);
DecodePhonemes(phonemes,phonemes2);
sprintf(buf,"[[%s]] ",phonemes2);
}
option_phoneme_input |= 2;
}
else
if(only == 0)
{
strcpy(buf,"[[(X1)(X1)(X1)]]");
option_phoneme_input |= 2;
@@ -835,6 +841,8 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
const char *punctname;
int found = 0;
int soundicon;
int attributes;
int short_pause;
int c2;
int len;
int bufix1;
@@ -852,10 +860,10 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
found = 1;
}
else
if((punctname = LookupCharName(tr, c1)) != NULL)
if((punctname = LookupCharName(tr, c1, 0)) != NULL)
{
found = 1;
if((*bufix==0) || (end_clause==0))
if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{
punct_count=1;
while(c2 == c1)
@@ -919,14 +927,24 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
if(c1 == '-')
return(CLAUSE_NONE); // no pause
if(bufix1 > 0)
return(CLAUSE_SHORTCOMMA);
if((strchr_w(punct_close,c1) != NULL) && !iswalnum(c2))
return(CLAUSE_SHORTFALL+4);
if(iswspace(c2) && strchr_w(punct_stop,c1)!=NULL)
return(punct_attributes[lookupwchar(punct_chars,c1)]);
attributes = punct_attributes[lookupwchar(punct_chars,c1)];
short_pause = CLAUSE_SHORTFALL;
if((attributes & CLAUSE_BITS_INTONATION) == 0x1000)
short_pause = CLAUSE_SHORTCOMMA;
if((bufix1 > 0) && !(tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{
if((attributes & ~0x8000) == CLAUSE_SEMICOLON)
return(CLAUSE_SHORTFALL);
return(short_pause);
}
if(attributes & CLAUSE_BIT_SENTENCE)
return(attributes);
return(CLAUSE_SHORTCOMMA);
return(short_pause);
} // end of AnnouncePunctuation
#define SSML_SPEAK 1
@@ -1936,6 +1954,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix
int c2; // next character
int cprev=' '; // previous character
int cprev2=' ';
int c_next;
int parag;
int ix = 0;
int j;
@@ -1948,7 +1967,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix
int found;
int any_alnum = 0;
int self_closing;
int punct_data;
int punct_data = 0;
int is_end_clause;
int announced_punctuation;
int stressed_word = 0;
@@ -2340,6 +2359,18 @@ if(option_ssml) parag=1;
{
is_end_clause = 0;
if((c1 == '.') && (c2 == '.'))
{
while((c_next = GetC()) == '.')
{
// 3 or more dots, replace by elipsis
c1 = 0x2026;
c2 = ' ';
}
UngetC(c_next);
}
punct_data = 0;
if((punct = lookupwchar(punct_chars,c1)) != 0)
{
punct_data = punct_attributes[punct];
@@ -2371,17 +2402,23 @@ if(option_ssml) parag=1;
}
}
if((punct_data & PUNCT_SAY_NAME) && (announced_punctuation == 0))
{
// used for elipsis (and 3 dots) if a pronunciation for elipsis is given in *_list
char *p2;
p2 = &buf[ix];
sprintf(p2,"%s",LookupCharName(tr, c1, 1));
if(p2[0] != 0)
{
ix += strlen(p2);
announced_punctuation = c1;
punct_data = punct_data & ~CLAUSE_BITS_INTONATION; // change intonation type to 0 (full-stop)
}
}
if(is_end_clause)
{
int c_next;
if((c1 == '.') && (cprev == '.'))
{
c1 = 0x2026;
punct = 9; // elipsis
}
nl_count = 0;
c_next = c2;
@@ -2395,26 +2432,39 @@ if(option_ssml) parag=1;
}
}
if((nl_count==0) && (c1 == '.'))
if(nl_count==0)
{
if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
(iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2))))) // lang=hu
if(c1 == '.')
{
// dot after a number indicates an ordinal number
if(!iswdigit(cprev) || iswlower(c_next) || (c_next == '<'))
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
(iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2))))) // lang=hu
{
// dot after a number indicates an ordinal number
if(!iswdigit(cprev) || iswlower(c_next) || (c_next == '<'))
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
}
else
if(iswlower(c_next))
{
// next word has no capital letter, this dot is probably from an abbreviation
c1 = ' ';
is_end_clause = 0;
}
if(any_alnum==0)
{
// no letters or digits yet, so probably not a sentence terminator
// Here, dot is followed by space or bracket
c1 = ' ';
is_end_clause = 0;
}
}
else
if(iswlower(c_next))
{
// next word has no capital letter, this dot is probably from an abbreviation
c1 = ' ';
is_end_clause = 0;
}
if(any_alnum==0)
{
c1 = ' '; // no letters or digits yet, so probably not a sentence terminator
is_end_clause = 0;
if(any_alnum==0)
{
// no letters or digits yet, so probably not a sentence terminator
is_end_clause = 0;
}
}
}
@@ -2424,7 +2474,6 @@ if(option_ssml) parag=1;
buf[ix] = ' ';
buf[ix+1] = 0;
punct_data = punct_attributes[punct];
if(nl_count > 1)
{
if((punct_data == CLAUSE_QUESTION) || (punct_data == CLAUSE_EXCLAMATION))
@@ -2449,12 +2498,14 @@ if(option_ssml) parag=1;
if(c1 == announced_punctuation)
{
// const unsigned short keep_punctuation[] = {
// '\'', '-', 0x92, 0xb4, 0x2019, 0x2032, 0 };
// This character has already been announced, so delete it so that it isn't spoken a second time.
// Unless it's a hyphen or apostrophe (which is used by TranslateClause() )
if(!IsBracket(c1))
if(IsBracket(c1))
{
c1 = 0xe000 + '('; // Unicode private useage area. So TranslateRules() knows the bracket name has been spoken
}
else
if(c1 != '-')
{
c1 = ' ';
}
+6
View File
@@ -27,6 +27,12 @@
#define ARCH_BIG
#endif
#ifdef __QNX__
#define NEED_GETOPT
#define NO_VARIADIC_MACROS
#endif
#define PLATFORM_POSIX
#define PATHSEP '/'
// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile
+1 -1
View File
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"
const char *version_string = "1.41.18 19.Oct.09";
const char *version_string = "1.41.32 09.Nov.09";
const int version_phdata = 0x014118;
int option_device_number = -1;
+7
View File
@@ -1276,6 +1276,13 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
else
{
DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
if((p->newword == 0) && (next2->newword == 0))
{
if((next->type == phVFRICATIVE) && (p->ph->mnemonic !='d'))
DoPause(20,0);
if((next->type == phFRICATIVE) || (next->type == phNASAL))
DoPause(12,0);
}
}
break;
+4 -2
View File
@@ -154,6 +154,8 @@ static Translator* NewTranslator(void)
tr->langopts.param[LOPT_SONORANT_MIN] = 95;
tr->langopts.param[LOPT_MAXAMP_EOC] = 19;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word
tr->langopts.param[LOPT_BRACKET_PAUSE] = 4; // pause at bracket
tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2; // pauses when announcing bracket names
tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL;
tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English
@@ -576,10 +578,10 @@ Translator *SelectTranslator(const char *name)
tr->langopts.vowel_pause = 0x20;
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x8036;
tr->langopts.stress_flags = 0x8036 | STRS_HYPEN_UNSTRESS;
tr->langopts.unstressed_wd1 = 2;
// tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries
tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
// tr->langopts.param[LOPT_COMBINE_WORDS] = 9; // combine some prepositions with the following word
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_5 | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED;
+37 -25
View File
@@ -75,6 +75,7 @@ static int embedded_flag = 0; // there are embedded commands to be applied to
static int prev_clause_pause=0;
static int max_clause_pause = 0;
static int any_stressed_words;
int pre_pause;
@@ -1100,7 +1101,7 @@ strcpy(phonemes2,phonemes);
{
char *p;
// German, keep a secondary stress on the stem
SetWordStress(tr, phonemes, dictionary_flags[0], 3, 0);
SetWordStress(tr, phonemes, dictionary_flags, 3, 0);
// reduce all but the first primary stress
ix=0;
@@ -1116,22 +1117,22 @@ strcpy(phonemes2,phonemes);
}
strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes);
SetWordStress(tr, word_phonemes, dictionary_flags[0], -1, 0);
SetWordStress(tr, word_phonemes, dictionary_flags, -1, 0);
}
else
{
// stress position affects the whole word, including prefix
strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes);
SetWordStress(tr, word_phonemes, dictionary_flags[0], -1, tr->prev_last_stress);
SetWordStress(tr, word_phonemes, dictionary_flags, -1, tr->prev_last_stress);
}
}
else
{
if(prefix_phonemes[0] == 0)
SetWordStress(tr, phonemes, dictionary_flags[0], -1, tr->prev_last_stress);
SetWordStress(tr, phonemes, dictionary_flags, -1, tr->prev_last_stress);
else
SetWordStress(tr, phonemes, dictionary_flags[0], -1, 0);
SetWordStress(tr, phonemes, dictionary_flags, -1, 0);
strcpy(word_phonemes,prefix_phonemes);
strcat(word_phonemes,phonemes);
}
@@ -1149,6 +1150,11 @@ strcpy(phonemes2,phonemes);
dictionary_flags[0] &= ~FLAG_PAUSE1;
}
if((wflags & FLAG_HYPHEN) && (tr->langopts.stress_flags & STRS_HYPEN_UNSTRESS))
{
ChangeWordStress(tr,word_phonemes,3);
}
else
if(wflags & FLAG_EMPHASIZED2)
{
// A word is indicated in the source text as stressed
@@ -1165,7 +1171,7 @@ strcpy(phonemes2,phonemes);
if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2))
ChangeWordStress(tr,word_phonemes,4);
else
if(dictionary_flags[0] & FLAG_UNSTRESS_END)
if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words))
ChangeWordStress(tr,word_phonemes,3);
}
@@ -1227,7 +1233,7 @@ strcpy(phonemes2,phonemes);
tr->expect_past--;
}
if((word_length == 1) && iswalpha(first_char) && (first_char != 'i'))
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i'))
{
// English Specific !!!!
// any single letter before a dot is an abbreviation, except 'I'
@@ -1247,8 +1253,8 @@ strcpy(phonemes2,phonemes);
static void SetPlist2(PHONEME_LIST2 *p, unsigned char phcode)
{//==========================================================
p->phcode = phcode;
p->stress = 0;
p->tone_number = 0;
p->stresslevel = 0;
p->tone_ph = 0;
p->synthflags = embedded_flag;
p->sourceix = 0;
embedded_flag = 0;
@@ -1602,7 +1608,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
{
// this word uses a different phoneme table
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
ph_list2[n_ph_list2++].tone_number = switch_phonemes; // temporary phoneme table number
ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number
}
// remove initial pause from a word if it follows a hyphen
@@ -1622,7 +1628,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].sourceix = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag;
ph_list2[n_ph_list2++].tone_number = *p++;
ph_list2[n_ph_list2++].tone_ph = *p++;
}
else
if(ph->type == phSTRESS)
@@ -1637,7 +1643,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
// for tone languages, the tone number for a syllable follows the vowel
if(prev_vowel >= 0)
{
ph_list2[prev_vowel].tone_number = ph_code;
ph_list2[prev_vowel].tone_ph = ph_code;
}
else
{
@@ -1651,7 +1657,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
// mark the previous phoneme as a syllabic consonant
prev_vowel = n_ph_list2-1;
ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE;
ph_list2[prev_vowel].stress = next_stress;
ph_list2[prev_vowel].stresslevel = next_stress;
}
else
if(ph_code == phonLENGTHEN)
@@ -1678,7 +1684,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
else
{
ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].tone_number = 0;
ph_list2[n_ph_list2].tone_ph = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag | found_dict_flag;
embedded_flag = 0;
ph_list2[n_ph_list2].sourceix = srcix;
@@ -1689,8 +1695,13 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
stress = next_stress;
next_stress = 0;
if(stress >= 4)
{
any_stressed_words = 1;
}
if((prev_vowel >= 0) && (n_ph_list2-1) != prev_vowel)
ph_list2[n_ph_list2-1].stress = stress; // set stress for previous consonant
ph_list2[n_ph_list2-1].stresslevel = stress; // set stress for previous consonant
ph_list2[n_ph_list2].synthflags |= SFLAG_SYLLABLE;
prev_vowel = n_ph_list2;
@@ -1702,7 +1713,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
}
if(next_tone != 0)
{
ph_list2[n_ph_list2].tone_number = next_tone;
ph_list2[n_ph_list2].tone_ph = next_tone;
next_tone=0;
}
}
@@ -1720,7 +1731,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
}
}
ph_list2[n_ph_list2].stress = stress;
ph_list2[n_ph_list2].stresslevel = stress;
n_ph_list2++;
first_phoneme = 0;
}
@@ -1742,7 +1753,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
// this word uses a different phoneme table, now switch back
SelectPhonemeTable(voice->phoneme_tab_ix);
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
ph_list2[n_ph_list2++].tone_number = voice->phoneme_tab_ix; // original phoneme table number
ph_list2[n_ph_list2++].tone_ph = voice->phoneme_tab_ix; // original phoneme table number
}
@@ -2021,6 +2032,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
embedded_read = 0;
option_phoneme_input &= ~2; // clear bit 1 (temporary indication)
pre_pause = 0;
any_stressed_words = 0;
if((clause_start_char = count_characters) < 0)
clause_start_char = 0;
@@ -2390,7 +2402,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
else
if(c=='-')
{
if(IsAlpha(prev_in) && IsAlpha(next_in))
if((IsAlpha(prev_in) || iswdigit(prev_in)) && IsAlpha(next_in))
{
// '-' between two letters is a hyphen, treat as a space
word_flags |= FLAG_HYPHEN;
@@ -2683,17 +2695,17 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
word = pw;
// include the next few characters, in case there are an ordinal indicator
// include the next few characters, in case there are an ordinal indicator or other suffix
pn[0] = ' ';
memcpy(pn+1, pw, 8);
pn[8] = 0;
memcpy(pn+1, pw, 16);
pn[16] = 0;
for(pw = &number_buf[1]; pw < pn;)
{
// keep wflags for each part, for FLAG_HYPHEN_AFTER
dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
while(*pw++ != ' ');
words[ix].pre_pause = 0;
words[ix].flags = 0;
}
}
else
@@ -2730,7 +2742,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
if(dict_flags & FLAG_SKIPWORDS)
{
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
}
}
@@ -2740,7 +2752,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
PHONEME_LIST2 *p2;
p2 = &ph_list2[n_ph_list2 + ix];
p2->phcode = phonPAUSE;
p2->stress = 0;
p2->stresslevel = 0;
p2->sourceix = source_index;
p2->synthflags = 0;
}
+23 -13
View File
@@ -76,9 +76,9 @@
#define FLAG_VERB_EXT 0x100 /* extend the 'verb follows' */
#define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */
#define FLAG_ALLCAPS 0x400 // only if the word is all capitals
#define BITNUM_FLAG_ALLCAPS 0x2a
#define FLAG_ACCENT 0x800 // character name is base-character name + accent name
#define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2
#define BITNUM_FLAG_ALLCAPS 0x2a
#define BITNUM_FLAG_HYPHENATED 0x2c
@@ -164,29 +164,30 @@
// Punctuation types returned by ReadClause()
// bits 0-7 pause x 10mS, bits 12-14 intonation type,
// bit 15- don't need space after the punctuation
// bit 19=sentence, bit 18=clause, bits 17=voice change
// bit 16 used to distinguish otherwise identical types
// bit 20= punctuation character can be inside a word (Armenian)
// bit 21= speak the name of the punctuation character
#define CLAUSE_BIT_SENTENCE 0x80000
#define CLAUSE_BIT_CLAUSE 0x40000
#define CLAUSE_BIT_VOICE 0x20000
#define CLAUSE_BITS_INTONATION 0x7000
#define PUNCT_IN_WORD 0x100000
#define PUNCT_SAY_NAME 0x200000
#define CLAUSE_NONE 0 + 0x04000
#define CLAUSE_PARAGRAPH 70 + 0x80000
#define CLAUSE_EOF 35 + 0x90000
#define CLAUSE_EOF 40 + 0x90000
#define CLAUSE_VOICE 0 + 0x24000
#define CLAUSE_PERIOD 35 + 0x80000
#define CLAUSE_PERIOD 40 + 0x80000
#define CLAUSE_COMMA 20 + 0x41000
#define CLAUSE_SHORTCOMMA 4 + 0x41000
#define CLAUSE_SHORTFALL 4 + 0x40000
#define CLAUSE_QUESTION 35 + 0x82000
#define CLAUSE_EXCLAMATION 40 + 0x83000
#define CLAUSE_QUESTION 40 + 0x82000
#define CLAUSE_EXCLAMATION 45 + 0x83000
#define CLAUSE_COLON 30 + 0x40000
#ifdef PLATFORM_RISCOS
#define CLAUSE_SEMICOLON 30 + 0x40000
#else
#define CLAUSE_SEMICOLON 30 + 0x41000
#endif
#define SAYAS_CHARS 0x12
#define SAYAS_GLYPHS 0x13
@@ -225,8 +226,8 @@ typedef struct{
// a clause translated into phoneme codes (first stage)
typedef struct {
unsigned char phcode;
unsigned char stress;
unsigned char tone_number;
unsigned char stresslevel;
unsigned char tone_ph;
unsigned char synthflags;
unsigned short sourceix;
} PHONEME_LIST2;
@@ -242,7 +243,7 @@ extern const int param_defaults[N_SPEECH_PARAM];
#define N_LOPTS 16
#define N_LOPTS 18
#define LOPT_DIERESES 1
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
// bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
@@ -296,6 +297,12 @@ extern const int param_defaults[N_SPEECH_PARAM];
// Call ApplySpecialAttributes() if $alt or $alt2 is set for a word
#define LOPT_ALT 15
// pause for bracket (default=4), pause when annoucing bracket names (default=2)
#define LOPT_BRACKET_PAUSE 16
// bit 1, don't break clause before annoucning . ? !
#define LOPT_ANNOUNCE_PUNCT 17
// stress_rule
#define STRESSPOSN_1L 0 // 1st syllable
@@ -314,6 +321,7 @@ typedef struct {
int vowel_pause;
int stress_rule; // 1=first syllable, 2=penultimate, 3=last
#define STRS_HYPEN_UNSTRESS 0x100000
// bit0=don't stress monosyllables, except at end of clause
// bit1=don't set diminished stress,
// bit2=mark unstressed final syllables as diminished
@@ -329,11 +337,13 @@ typedef struct {
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
// bit18= don't lengthen short vowels more than long vowels at end-of-clause
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel
// bit20= hyphenated words, 2nd part is unstressed
int stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable
int unstressed_wd2; // stress for $u word of >1 syllable
int param[N_LOPTS];
int param2[N_LOPTS];
unsigned char *length_mods;
unsigned char *length_mods0;
@@ -605,7 +615,7 @@ void CalcPitches(Translator *tr, int clause_tone);
int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
int Unpronouncable(Translator *tr, char *word);
void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress);
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
+22 -23
View File
@@ -113,12 +113,12 @@ enum {
typedef struct {
const char *mnem;
int data;
} keywtab_t;
static MNEM_TAB options_tab[] = {
{"reduce_t", LOPT_REDUCE_T},
{"bracket", LOPT_BRACKET_PAUSE},
{NULL, -1} };
static keywtab_t keyword_tab[] = {
static MNEM_TAB keyword_tab[] = {
{"name", V_NAME},
{"language", V_LANGUAGE},
{"gender", V_GENDER},
@@ -373,11 +373,12 @@ void VoiceReset(int tone_only)
static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};
// default is: pitch 82,118
// voice->pitch_base = 0x49000; // default, 73 << 12;
// voice->pitch_range = 0x0f30; // default = 0x1000
voice->pitch_base = 0x47000;
voice->pitch_range = 3996;
// default is: pitch 78,120
voice->pitch_base = 0x45000;
voice->pitch_range = 4536;
// default is: pitch 80,117
// voice->pitch_base = 0x47000;
// voice->pitch_range = 3996;
voice->formant_factor = 256;
@@ -503,12 +504,12 @@ voice_t *LoadVoice(const char *vname, int control)
// bit 4 1 = vname = full path
FILE *f_voice = NULL;
keywtab_t *k;
char *p;
int key;
int ix;
int n;
int value;
int value2;
int error = 0;
int langix = 0;
int tone_only = control & 2;
@@ -527,6 +528,7 @@ voice_t *LoadVoice(const char *vname, int control)
char translator_name[40];
char new_dictionary[40];
char phonemes_name[40];
char option_name[40];
const char *language_type;
char buf[200];
char path_voices[sizeof(path_home)+12];
@@ -631,15 +633,7 @@ voice_t *LoadVoice(const char *vname, int control)
if(buf[0] == 0) continue;
key = 0;
for(k=keyword_tab; k->mnem != NULL; k++)
{
if(strcmp(buf,k->mnem)==0)
{
key = k->data;
break;
}
}
key = LookupMnem(keyword_tab, buf);
switch(key)
{
@@ -804,10 +798,15 @@ voice_t *LoadVoice(const char *vname, int control)
break;
case V_OPTION:
if(sscanf(p,"%d %d",&ix,&value) == 2)
value2 = 0;
if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0))
{
if((ix >= 0) && (ix < N_LOPTS))
langopts->param[ix] = value;
langopts->param[ix] = value;
langopts->param2[ix] = value2;
}
else
{
fprintf(stderr,"Bad voice option: %s %s\n",buf,p);
}
break;