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-fd96e6ae7743master
@@ -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@ |
@@ -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< | |||
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< // 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 | |||
@@ -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 | |||
@@ -1,86 +1,32 @@ | |||
Phonemes which are used in the *_rules and *_list files | |||
Dictionary zhy_dict | |||
a aa aai aan aau ai au e | |||
ei eo eoi eu i iu o oe | |||
oi ong ou u ui yu | |||
b c d f g h j k | |||
l m n N p r s t | |||
tS v w z | |||
Dictionary fr_dict | |||
@ @- @2 a A~ e E E2 | |||
E: E~ i i- i: o O o2 | |||
O2 o3 O~ u u: W w^i wA | |||
W~ y Y | |||
: b d dZ f g h j | |||
k l m n N n2 n^ p | |||
p2 r R r2 s S t t2 | |||
t3 tS v w z Z z2 z3 | |||
Dictionary nl_dict | |||
8 @ @- A a: E e: EI | |||
eU i I O O: o: u VU | |||
Wy y Y: yU | |||
* : ; b C d f g | |||
h j k l m n N n^ | |||
p Q r s S t tS v | |||
v2 w x z | |||
Dictionary jbo_dict | |||
@ a aI aU e eI i l- | |||
o oI r- u | |||
- b d dZ f g h j | |||
k l m n N p R s | |||
S t tS v w x z Z | |||
Dictionary hu_dict | |||
A a: E e: i i: o o: | |||
u u: Y y y: Y: | |||
: b c C d dZ f g | |||
h j J k l l^ m n | |||
N n^ p R R2 s S s2 | |||
t tS ts v z Z | |||
Dictionary hy_dict | |||
Dictionary af_dict | |||
@ a aI e eI i i@ o | |||
u W y | |||
& &: 3: @ @- @L @U a | |||
A: aI AI aU A~ E e: e@ | |||
eI e~ I i iu O O: o@ | |||
OI oI o~ u uI W y Y@ | |||
Yy | |||
** b c d dZ dz f g | |||
h j k k# l m n p | |||
p# r R r" s S t t# | |||
tS ts ts# v X z Z | |||
- : ; ? b c d dZ | |||
f g h j k l L m | |||
n N p r s S t T | |||
tS v w x x2 z Z | |||
Dictionary zh_dict | |||
Dictionary bn_dict | |||
@ @r a A ai Au E ei | |||
i i. i[ iA iE io iou N- | |||
o o- ong ou u u@ ua uai | |||
uei uo y y& y@ yE yi yu | |||
& a a: a~ e E e~ i | |||
I i: i:~ i~ l- o O o: | |||
O~ o~ r- U u u: u:~ u~ | |||
V | |||
; C f h j k kh l | |||
L m n N p ph q r | |||
R s s. S; t th ts ts. | |||
ts. tS; tS; tsh v w x X | |||
z. | |||
* b B bh c C ch d | |||
d. dh dh. g gh h j J | |||
Jh k kh l m n N n. | |||
n^ p ph Q r r. s S | |||
s. t t. th th. tS x z | |||
Dictionary ca_dict | |||
@@ -95,29 +41,55 @@ R2 s S; t T ts tS; v | |||
v# w z Z Z; | |||
Dictionary af_dict | |||
Dictionary cs_dict | |||
& &: 3: @ @- @L @U a | |||
A: aI AI aU A~ E e: e@ | |||
eI e~ I i iu O O: o@ | |||
OI oI o~ u uI W y Y@ | |||
Yy | |||
@- a a: aU e e: eI eU | |||
i i: l- o o: oU r- u | |||
u: | |||
- : ; ? b c d dZ | |||
f g h j k l L m | |||
n N p r s S t T | |||
tS v w x x2 z Z | |||
* ; b c d dZ dz f | |||
g h j J k l l^ m | |||
n N n^ p r R R^ R^/ | |||
s S t tS ts v x z | |||
Z | |||
Dictionary id_dict | |||
Dictionary cy_dict | |||
@ a aI aU e E E2 i | |||
o O u | |||
@ @- @I @Y a A: aI aU | |||
AY aY E e: eU I i: Iu | |||
O o: OI OY U u: uY V | |||
Y y: Yu | |||
* : ? b d dZ f g | |||
h j k l m n N n^ | |||
p r R R2 s S t tS | |||
v w x z | |||
: b C d D dZ f g | |||
h j k l L m n N | |||
p r s S t T v w | |||
x z | |||
Dictionary da_dict | |||
& 0 3 @ @- a A e | |||
E i o O u V W y | |||
Y | |||
* - : ; ? b d D | |||
dZ f g h j k l L | |||
m n N p r R s S | |||
t tS v w | |||
Dictionary de_dict | |||
3 @ @- a A A: aI aU | |||
E E2 E: e: EI I i2 i: | |||
O o: OY U u: W y y: | |||
Y: | |||
* : ; b C C2 d D | |||
dZ f g h j k l m | |||
n N p pF r s S t | |||
tS ts v x z Z | |||
Dictionary el_dict | |||
@@ -147,17 +119,63 @@ 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 es_dict | |||
a aI aU e E eI eU i | |||
o O oI u | |||
* ** : b B d D f | |||
g j J J^ k l m n | |||
N n^ p Q R R2 s t | |||
T tS v v# w x z | |||
Dictionary eu_dict | |||
a aI aU e eI eU i o | |||
oI u Y | |||
* ** : ; b B c d | |||
D f g h j J k l | |||
l^ m n n^ p Q r R | |||
s S t tS ts tz v w | |||
x z | |||
Dictionary fi_dict | |||
& &i &y a a2 ai au e | |||
ei eu ey i I ie iu iy | |||
o oi ou u ui uo Y y | |||
Yi yi Yy yY | |||
: b d f g h j k | |||
l m n N p r s S | |||
s2 t v w Z | |||
Dictionary fr_dict | |||
@ @- @2 a A~ e E E2 | |||
E: E~ i i- i: o O o2 | |||
O2 o3 O~ u u: W w^i wA | |||
W~ y Y | |||
: b d dZ f g h j | |||
k l m n N n2 n^ p | |||
p2 r R r2 s S t t2 | |||
t3 tS v w z Z z2 z3 | |||
Dictionary grc_dict | |||
@@ -171,19 +189,6 @@ l m n N p R s t | |||
T v x z | |||
Dictionary cy_dict | |||
@ @- @I @Y a A: aI aU | |||
AY aY E e: eU I i: Iu | |||
O o: OI OY U u: uY V | |||
Y y: Yu | |||
: b C d D dZ f g | |||
h j k l L m n N | |||
p r s S t T v w | |||
x z | |||
Dictionary hbs_dict | |||
& @ @2 a A a: aI aU | |||
@@ -196,127 +201,122 @@ N n^ p r R R2 s S | |||
t tS ts tS; v x z Z | |||
Dictionary it_dict | |||
Dictionary hi_dict | |||
@- a a/ aI aU e E eI | |||
i I o O u | |||
@ @- @2 @3 a a: aI aU | |||
e E e: E: E~ i I i: | |||
l- o O o: O: O~ o~ r- | |||
U u: u~ V | |||
* : ; b d dZ f g | |||
h j k l l^ m n N | |||
n^ p r R s S t tS | |||
ts v w w2 z | |||
- : b bh c ch d d. | |||
dh dh. f g gh h H j | |||
J Jh k kh l l. m n | |||
N n. n^ p ph Q q r | |||
r. s S s. t T t. th | |||
th. v w x z | |||
Dictionary sk_dict | |||
Dictionary hu_dict | |||
& @- a a: e e: i i: | |||
l- l: o o: oU r- r: u | |||
u: | |||
A a: E e: i i: o o: | |||
u u: Y y y: Y: | |||
* ; b d d; dZ dz f | |||
g h j k l l^ m n | |||
N n^ p r R R^ R^/ s | |||
S t t; tS ts v x z | |||
Z | |||
: b c C d dZ f g | |||
h j J k l l^ m n | |||
N n^ p R R2 s S s2 | |||
t tS ts v z Z | |||
Dictionary ku_dict | |||
Dictionary hy_dict | |||
8 a e E E# eI eU i | |||
I o u U y | |||
@ a aI e eI i i@ o | |||
u W y | |||
* : b c d dZ f g | |||
h j J k l m n p | |||
q r R s S t tS v | |||
w x z Z | |||
** b c d dZ dz f g | |||
h j k k# l m n p | |||
p# r R r" s S t t# | |||
tS ts ts# v X z Z | |||
Dictionary sq_dict | |||
Dictionary id_dict | |||
@ @/ a A a/ aI E e | |||
eI i I I# O OI u V | |||
y yE | |||
@ a aI aU e E E2 i | |||
o O u | |||
** : ; b c d D dZ | |||
dz dZ; f g h j k l | |||
L ll m n n^ p r R | |||
R2 s S t T tS ts v | |||
w z Z | |||
* : ? b d dZ f g | |||
h j k l m n N n^ | |||
p r R R2 s S t tS | |||
v w x z | |||
Dictionary sw_dict | |||
Dictionary is_dict | |||
@- a a/ e i m- n- N- | |||
o u | |||
& @- a aI aU e E eI | |||
i I o O oU oU2 u W | |||
y y# Yy | |||
* : b d D f g h | |||
j J k l m n N n^ | |||
p Q R s S t T tS | |||
v w x z | |||
* ** : ; b c C d | |||
D f g h j J k l | |||
l# m m# n N n# N# n^ | |||
n^# p Q r R r# R2 s | |||
s2 t T tl# v x z | |||
Dictionary fi_dict | |||
Dictionary it_dict | |||
& &i &y a a2 ai au e | |||
ei eu ey i I ie iu iy | |||
o oi ou u ui uo Y y | |||
Yi yi Yy yY | |||
@- a a/ aI aU e E eI | |||
i I o O u | |||
: b d f g h j k | |||
l m n N p r s S | |||
s2 t v w Z | |||
* : ; b d dZ f g | |||
h j k l l^ m n N | |||
n^ p r R s S t tS | |||
ts v w w2 z | |||
Dictionary pl_dict | |||
Dictionary jbo_dict | |||
a E E# E~ i O O~ u | |||
y | |||
@ a aI aU e eI i l- | |||
o oI r- u | |||
: ; b c C d d; dZ | |||
dz dz; f g h j k l | |||
m n N n^ p r R s | |||
S s; S; t t; tS ts ts; | |||
tS; v w x z Z Z; | |||
- b d dZ f g h j | |||
k l m n N p R s | |||
S t tS v w x z Z | |||
Dictionary no_dict | |||
Dictionary kn_dict | |||
@ @2 a A a: A: AI aI | |||
aU E E: e: I i: O o: | |||
OI U u- u-: u-I u: W y | |||
y: Y: Yy | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
: ; b d f g h j | |||
k l m n N p r R | |||
s S s; t v w x z | |||
: b bh c ch d d. dh | |||
dh. dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s S | |||
s. S; t t. th th. tS v | |||
w z | |||
Dictionary vi_dict | |||
Dictionary ku_dict | |||
@ @: @:I @:U @I @U a a: | |||
a:I a:U aI aU E e eU EU | |||
i i@ iU O o OI oI u | |||
u@ uI y y@ yI | |||
8 a e E E# eI eU i | |||
I o u U y | |||
b c d D f g h j | |||
J k kh l m n N n^ | |||
p Q r s s. t t[ ts; | |||
tS; v w x z Z z. | |||
* : b c d dZ f g | |||
h j J k l m n p | |||
q r R s S t tS v | |||
w x z Z | |||
Dictionary ro_dict | |||
Dictionary la_dict | |||
@ @- @I @U a aI aU e | |||
ea eI eo eU i i/ I^ iI | |||
iU o O Oa oI oU u uI | |||
y Y yI yU | |||
@- a a: aI aU E e: EU | |||
I i: O o: OI U u: y | |||
y: | |||
* *; - b b; c C d | |||
d; dZ f f; g h j k | |||
l l; m m; n N n; p | |||
p; r s S S; t t; tS | |||
ts ts; v v; w w2 x z | |||
Z z; Z; | |||
* : ; <h> ? b d f | |||
g h j k l m n N | |||
p r R s t w z | |||
Dictionary lv_dict | |||
@@ -331,281 +331,282 @@ n^ p r R R2 s S t | |||
tS ts v z Z | |||
Dictionary pt_dict | |||
Dictionary mk_dict | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
i I i/ iU o O oI OI | |||
o~ u U uI u~ y | |||
& @ @- @2 a A a: E | |||
e e: i I i: l- o o: | |||
oU r- u u: | |||
* : ; b C d dZ f | |||
g h j k l l^ m n | |||
N n^ p Q r R r- s | |||
S s# s; t T tS ts v | |||
w x z Z | |||
* b d dZ dz dZ; f g | |||
h j k k^ l l^ m n | |||
N n^ p r R s S t | |||
tS ts tS; v x z Z | |||
Dictionary tr_dict | |||
Dictionary ml_dict | |||
a e E i I o O u | |||
U u# W y Y | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
* : b c d dZ f g | |||
h j J k l m n p | |||
Q r R s S t tS v | |||
w z Z | |||
: b bh c ch d d. dh | |||
dh. dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s s. | |||
S; t t. th th. tS v w | |||
z z. | |||
Dictionary ru_dict | |||
Dictionary mn_dict | |||
8 @- A a E e E# E2 | |||
E3 i I I# I2 I3 I^ ja | |||
ju o O u u" u# V V# | |||
y Y | |||
a e i o O o: U u | |||
* ; b d d; dZ; f g | |||
j k l l^ m m; n n^ | |||
p r R s S s; S; t | |||
t; ts ts; tS; v x z Z | |||
z; Z; | |||
: ; c f g j k L | |||
m n p p# R s S t | |||
t# tS ts ts# w x | |||
Dictionary eo_dict | |||
Dictionary ne_dict | |||
@- a aI aU e eI eU i | |||
o oI u uI | |||
@ @/ @2 @3 a aI aU a~ | |||
e E eI eU e~ E~ i I | |||
i~ l- o O o: oI oU O~ | |||
o~ r- u uI u~ V VI VU | |||
V~ | |||
* - b d dZ f g h | |||
j k l m n p r R | |||
s S t T tS ts v w | |||
x z Z | |||
- : b bh c ch d d. | |||
dh f g gh h H j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph Q q r r. | |||
s S s. t T t. th v | |||
w x z z. | |||
Dictionary mk_dict | |||
Dictionary nl_dict | |||
& @ @- @2 a A a: E | |||
e e: i I i: l- o o: | |||
oU r- u u: | |||
8 @ @- A a: E e: EI | |||
eU i I O O: o: u VU | |||
Wy y Y: yU | |||
* b d dZ dz dZ; f g | |||
h j k k^ l l^ m n | |||
N n^ p r R s S t | |||
tS ts tS; v x z Z | |||
* : ; b C d f g | |||
h j k l m n N n^ | |||
p Q r s S t tS v | |||
v2 w x z | |||
Dictionary es_dict | |||
Dictionary no_dict | |||
a aI aU e E eI eU i | |||
o O oI u | |||
@ @2 a A a: A: AI aI | |||
aU E E: e: I i: O o: | |||
OI U u- u-: u-I u: W y | |||
y: Y: Yy | |||
* ** : b B d D f | |||
g j J J^ k l m n | |||
N n^ p Q R R2 s t | |||
T tS v v# w x z | |||
: ; b d f g h j | |||
k l m n N p r R | |||
s S s; t v w x z | |||
Dictionary is_dict | |||
Dictionary pap_dict | |||
& @- a aI aU e E eI | |||
i I o O oU oU2 u W | |||
y y# Yy | |||
a a/ aI e E eI i o | |||
O u y Y | |||
* ** : ; b c C d | |||
D f g h j J k l | |||
l# m m# n N n# N# n^ | |||
n^# p Q r R r# R2 s | |||
s2 t T tl# v x z | |||
: ? b d dZ f g h | |||
j k l m n N n^ p | |||
R s S t tS v w x | |||
z Z | |||
Dictionary da_dict | |||
Dictionary pa_dict | |||
& 0 3 @ @- a A e | |||
E i o O u V W y | |||
Y | |||
@ a a~ e E e~ E~ i | |||
I i~ I~ o O O~ o~ r- | |||
U u u~ U~ V V~ | |||
* - : ; ? b d D | |||
dZ f g h j k l L | |||
m n N n^ p r R s | |||
S t tS v w | |||
: ; b bh c ch d d. | |||
dh dh. f g gh h H j | |||
J Jh k kh l l. m n | |||
N n. n^ p ph Q R R2 | |||
s S t t. th th. v x | |||
z | |||
Dictionary de_dict | |||
Dictionary pl_dict | |||
3 @ @- a A A: aI aU | |||
E E2 E: e: EI I i2 i: | |||
O o: OY U u: W y y: | |||
Y: | |||
a E E# E~ i O O~ u | |||
y | |||
* : ; b C C2 d D | |||
dZ f g h j k l m | |||
n N p pF r s S t | |||
tS ts v x z Z | |||
: ; b c C d d; dZ | |||
dz dz; f g h j k l | |||
m n N n^ p r R s | |||
S s; S; t t; tS ts ts; | |||
tS; v w x z Z Z; | |||
Dictionary sv_dict | |||
Dictionary prs_dict | |||
8 @ a a2 A: E E- e: | |||
E: I i: O o: U u- u: | |||
W y y: Y: | |||
@ A i o | |||
: ; b d f g h j | |||
k l m n N p R s | |||
S s. S; sx t v w z | |||
b d h l t X | |||
Dictionary la_dict | |||
Dictionary pt_dict | |||
@- a a: aI aU E e: EU | |||
I i: O o: OI U u: y | |||
y: | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
i I i/ iU o O oI OI | |||
o~ u U uI u~ y | |||
* : ; <h> ? b d f | |||
g h j k l m n N | |||
p r R s t w z | |||
* : ; b C d dZ f | |||
g h j k l l^ m n | |||
N n^ p Q r R r- s | |||
S s# s; t T tS ts v | |||
w x z Z | |||
Dictionary hi_dict | |||
Dictionary ro_dict | |||
@ @- @2 @3 a a: aI aU | |||
e E e: E: E~ i I i: | |||
l- o O o: O: O~ o~ r- | |||
U u: u~ V | |||
@ @- @I @U a aI aU e | |||
ea eI eo eU i i/ I^ iI | |||
iU o O Oa oI oU u uI | |||
y Y yI yU | |||
- : b bh c ch d d. | |||
dh dh. f g gh h H j | |||
J Jh k kh l l. m n | |||
N n. n^ p ph Q q r | |||
r. s S s. t T t. th | |||
th. v w x z | |||
* *; - b b; c C d | |||
d; dZ f f; g h j k | |||
l l; m m; n N n; p | |||
p; r s S S; t t; tS | |||
ts ts; v v; w w2 x z | |||
Z z; Z; | |||
Dictionary ta_dict | |||
Dictionary ru_dict | |||
a a: aI aU e E e: i | |||
I i: o o: U u u: V | |||
8 @- A a E e E# E2 | |||
E3 i I I# I2 I3 I^ ja | |||
ju o O u u" u# V V# | |||
y Y | |||
: ; b C d d. dZ f | |||
g h j k l l. m n | |||
N n. n^ p r R s S | |||
s. t t. th tS v w z | |||
z. | |||
* ; b d d; dZ; f g | |||
j k l l^ m m; n n^ | |||
p r R s S s; S; t | |||
t; ts ts; tS; v x z Z | |||
z; Z; | |||
Dictionary bn_dict | |||
Dictionary rw_dict | |||
& a a: a~ e E e~ i | |||
I i: i:~ i~ l- o O o: | |||
O~ o~ r- U u u: u:~ u~ | |||
V | |||
a e i o u | |||
* b B bh c C ch d | |||
d. dh dh. g gh h j J | |||
Jh k kh l m n N n. | |||
n^ p ph Q r r. s S | |||
s. t t. th th. tS x z | |||
* : b B c d dZ f | |||
g h j J k l m n | |||
N n^ p q R s S S; | |||
t tS v w x z | |||
Dictionary eu_dict | |||
Dictionary sk_dict | |||
a aI aU e eI eU i o | |||
oI u Y | |||
& @- a a: e e: i i: | |||
l- l: o o: oU r- r: u | |||
u: | |||
* ** : ; b B c d | |||
D f g h j J k l | |||
l^ m n n^ p Q r R | |||
s S t tS ts tz v w | |||
x z | |||
* ; b d d; dZ dz f | |||
g h j k l l^ m n | |||
N n^ p r R R^ R^/ s | |||
S t t; tS ts v x z | |||
Z | |||
Dictionary kn_dict | |||
Dictionary sq_dict | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
@ @/ a A a/ aI E e | |||
eI i I I# O OI u V | |||
y yE | |||
: b bh c ch d d. dh | |||
dh. dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s S | |||
s. S; t t. th th. tS v | |||
w z | |||
** : ; b c d D dZ | |||
dz dZ; f g h j k l | |||
L ll m n n^ p r R | |||
R2 s S t T tS ts v | |||
w z Z | |||
Dictionary ml_dict | |||
Dictionary sv_dict | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
8 @ a a2 A: E E- e: | |||
E: I i: O o: U u- u: | |||
W y y: Y: | |||
: b bh c ch d d. dh | |||
dh. dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s s. | |||
S; t t. th th. tS v w | |||
z z. | |||
: ; b d f g h j | |||
k l m n N p R s | |||
S s. S; sx t v w z | |||
Dictionary mn_dict | |||
Dictionary sw_dict | |||
a e i o O o: U u | |||
@- a a/ e i m- n- N- | |||
o u | |||
: ; c f g j k L | |||
m n p p# R s S t | |||
t# tS ts ts# w x | |||
* : b d D f g h | |||
j J k l m n N n^ | |||
p Q R s S t T tS | |||
v w x z | |||
Dictionary ne_dict | |||
Dictionary ta_dict | |||
@ @/ @2 @3 a aI aU a~ | |||
e E eI eU e~ E~ i I | |||
i~ l- o O o: oI oU O~ | |||
o~ r- u uI u~ V VI VU | |||
V~ | |||
a a: aI aU e E e: i | |||
I i: o o: U u u: V | |||
- : b bh c ch d d. | |||
dh f g gh h H j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph Q q r r. | |||
s S s. t T t. th v | |||
w x z z. | |||
: ; b C d d. dZ f | |||
g h H j k l l. m | |||
n N n. n^ p r R s | |||
S s. t t. th tS v w | |||
z z. | |||
Dictionary pap_dict | |||
Dictionary tr_dict | |||
a a/ aI e E eI i o | |||
O u y Y | |||
a e E i I o O u | |||
U u# W y Y | |||
: ? b d dZ f g h | |||
j k l m n N n^ p | |||
R s S t tS v w x | |||
z Z | |||
* : b c d dZ f g | |||
h j J k l m n p | |||
Q r R s S t tS v | |||
w z Z | |||
Dictionary rw_dict | |||
Dictionary vi_dict | |||
a e i o u | |||
@ @: @:I @:U @I @U a a: | |||
a:I a:U aI aU E e eU EU | |||
i i@ iU O o OI oI u | |||
u@ uI y y@ yI | |||
* : b B c d dZ f | |||
g h j J k l m n | |||
N n^ p q R s S S; | |||
t tS v w x z | |||
b c d D f g h j | |||
J k kh l m n N n^ | |||
p Q r s s. t t[ ts; | |||
tS; v w x z Z z. | |||
Dictionary pa_dict | |||
Dictionary zh_dict | |||
@ a a~ e E e~ E~ i | |||
I i~ I~ o O O~ o~ r- | |||
U u u~ U~ V V~ | |||
@ @r a A ai Au E ei | |||
i i. i[ iA iE io iou N- | |||
o o- ong ou u u@ ua uai | |||
uei uo y y& y@ yE yi yu | |||
: ; b bh c ch d d. | |||
dh dh. f g gh H j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph Q R s S | |||
t t. th th. v x z | |||
(u) ; C f h j k kh | |||
l L m n N p ph q | |||
r s s. S; t th ts ts. | |||
ts. tS; tS; tsh v w x X | |||
z. | |||
Dictionary prs_dict | |||
Dictionary zhy_dict | |||
@ A i o | |||
a aa aai aan aau ai au e | |||
ei eo eoi eu i iu o oe | |||
oi ong ou u ui yu | |||
b d h l t X | |||
b c d f g h j k | |||
l m n N p r s t | |||
tS v w z |
@@ -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 |
@@ -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 |
@@ -24,7 +24,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated 2009-10-09 Michel Such <[email protected]> | |||
// Updated 2009-10-26 Michel Such <[email protected]> | |||
// | |||
// * Numbers, a few abbreviations and exceptions. | |||
// | |||
@@ -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 | |||
@@ -1477,3 +1477,4 @@ _r) w (an u // Rwanda | |||
@@ -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 | |||
mögül $u // behind | |||
mögött $u | |||
mögé $u | |||
kívül $u | |||
után $u // after | |||
alól $u | |||
alá $u | |||
alatt $u // below | |||
felől $u // above | |||
felé $u | |||
fölé $u | |||
felett $u // above | |||
fölött $u | |||
mellől $u // besides | |||
mellé $u | |||
mellett $u | |||
közül $u | |||
közé $u | |||
között $u | |||
elöl $unstressend // in front of | |||
elől $unstressend | |||
elé $unstressend | |||
előtt $unstressend | |||
mögül $unstressend // behind | |||
mögött $unstressend | |||
mögé $unstressend | |||
kívül $unstressend | |||
után $unstressend // after | |||
alól $unstressend | |||
alá $unstressend | |||
alatt $unstressend // below | |||
felől $unstressend // above | |||
felé $unstressend | |||
fölé $unstressend | |||
felett $unstressend // above | |||
fölött $unstressend | |||
//mellől $u // besides | |||
//mellé $u | |||
//mellett $u | |||
lett $unstressend | |||
ott $unstressend | |||
itt $unstressend | |||
neked $unstressend | |||
nektek $unstressend | |||
nekik $unstressend | |||
neki $unstressend | |||
nekem $unstressend | |||
//közül $u | |||
//közé $u | |||
//között $u | |||
an $u // so many persons | |||
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 | |||
sok $u // many | |||
kevés $u // few | |||
se $u // neither | |||
sem $u // nor | |||
be $u //into | |||
ki $u // out of | |||
le $u // down | |||
fel $u // up | |||
föl $u // up | |||
meg $u // finish an action | |||
el $u // away | |||
át $u //through | |||
rá $u //onto | |||
ide $u // here | |||
oda $u // there | |||
szét $u //apart | |||
össze $u //connect with | |||
vissza $u //back | |||
ellen $u //against | |||
volna $u // would | |||
részén $u //on ... part of | |||
nélkül $u // without | |||
folytán $u // because of | |||
úgy $u // like that | |||
így $u // like this | |||
egyaránt $u // alike | |||
minden $u // all | |||
részben $u // partly | |||
egyik $u // one of | |||
másik $u // the other | |||
ellen $unstressend // against | |||
//elé $u // before | |||
//óta $u // since | |||
sok $unstressend // many | |||
kevés $unstressend // few | |||
se $unstressend // neither | |||
sem $unstressend // nor | |||
be $unstressend //into | |||
ki $unstressend // out of | |||
le $unstressend // down | |||
fel $unstressend // up | |||
föl $unstressend // up | |||
meg $unstressend // finish an action | |||
el $unstressend // away | |||
át $unstressend //through | |||
rá $unstressend //onto | |||
ide $unstressend // here | |||
oda $unstressend // there | |||
szét $unstressend //apart | |||
//össze $u //connect with | |||
//vissza $u //back | |||
volna $unstressend // would | |||
//részén $u //on ... part of | |||
nélkül $unstressend // without | |||
//folytán $u // because of | |||
úgy $unstressend // like that | |||
így $unstressend // like this | |||
egyaránt $unstressend // alike | |||
//minden $strend // all | |||
mindent $strend | |||
//részben $u // partly | |||
egyik $unstressend // one of | |||
//másik $u // the other | |||
lehet $unstressend | |||
rossz $unstressend | |||
jó $unstressend | |||
jót $unstressend | |||
kér $unstressend | |||
tartják $unstressend | |||
erős $unstressend | |||
lennie $unstressend | |||
közt $u+ | |||
levegőjére $unstressend | |||
ad $unstressend | |||
kapják $unstressend | |||
kap $unstressend | |||
már $unstressend | |||
maradt $unstressend | |||
jobb $unstressend | |||
most $unstressend | |||
még $unstressend | |||
gép $unstressend | |||
részt $unstressend | |||
lenne $unstressend | |||
őt $unstressend | |||
helyes $u+ | |||
fák $unstressend | |||
et $unstressend | |||
megvédeni $unstressend | |||
sztrájk $unstressend | |||
hír $unstressend | |||
magukat $unstressend | |||
majd $unstressend | |||
áll $unstressend | |||
állt $unstressend | |||
arról $unstressend | |||
innen $unstressend | |||
érjen $unstressend | |||
nap $unstressend | |||
név $unstressend | |||
lány $unstressend | |||
lányt $unstressend | |||
vár $unstressend | |||
várt $unstressend | |||
ért $unstressend | |||
ér $unstressend | |||
tag $unstressend | |||
tesz $unstressend | |||
tett $unstressend | |||
tette $unstressend | |||
baj $unstressend | |||
csak $unstressend | |||
vált $unstressend | |||
jut $unstressend | |||
legyen $unstressend | |||
azt $unstressend | |||
ezt $unstressend | |||
út $unstressend | |||
tiszt $unstressend | |||
vesz $unstressend | |||
cég $unstressend | |||
járt $unstressend | |||
jár $unstressend | |||
él $unstressend | |||
élsz $unstressend | |||
élt $unstressend | |||
hát $unstressend | |||
fiú $unstressend | |||
srác $unstressend | |||
ült $unstressend | |||
ám $unstressend | |||
rám $unstressend | |||
tűnik $unstressend | |||
nyújt $unstressend | |||
nincsen $unstressend | |||
mégy $unstressend | |||
nő $unstressend | |||
nőt $unstressend | |||
sas $unstressend | |||
sast $unstressend | |||
fél $unstressend | |||
félt $unstressend | |||
félsz $unstressend | |||
düh $unstressend | |||
más $unstressend | |||
mást $unstressend | |||
rúd $unstressend | |||
mint $unstressend $brk $combine | |||
iránt $unstressend | |||
légy $unstressend | |||
tűnt $unstressend | |||
ösét $unstressend | |||
új $unstressend | |||
nyúlt $unstressend | |||
magát $unstressend | |||
engem $unstressend | |||
téged $unstressend | |||
minket $unstressend | |||
titeket $unstressend | |||
őket $unstressend | |||
cikk $unstressend | |||
vont $unstressend | |||
mond $unstressend | |||
jutni $unstressend | |||
jött $unstressend | |||
szólsz $unstressend | |||
lőtt $unstressend | |||
sor $unstressend | |||
árt $unstressend | |||
fest $unstressend | |||
fújt $unstressend | |||
kért $unstressend | |||
tét $unstressend | |||
kém $unstressend | |||
jön $unstressend | |||
bent $unstressend | |||
kezd $unstressend | |||
ránk $unstressend | |||
gondolt $unstressend | |||
dönt $unstressend | |||
véli $unstressend | |||
folyt $unstressend | |||
döntött $unstressend | |||
fájt $unstressend | |||
hozni $unstressend | |||
lát $unstressend | |||
kép $unstressend | |||
nyert $unstressend | |||
függ $unstressend | |||
hidd $unstressend | |||
megy $unstressend | |||
hírt $unstressend | |||
hely $unstressend | |||
jutott $unstressend | |||
mit $unstressend | |||
forrás $unstressend | |||
terv $unstressend | |||
mind $unstressend | |||
ment $unstressend | |||
jól $unstressend | |||
napját $unstressend | |||
több $unstressend | |||
tart $unstressend | |||
hág $unstressend | |||
// word pairs | |||
@@ -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 | |||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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 | |||
@@ -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 | |||
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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 | |||
@@ -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); |
@@ -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,...) |
@@ -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; |
@@ -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; | |||
@@ -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 | |||
{ |
@@ -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 |
@@ -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); | |||
// pronunciation of the final 2 digits has already been found | |||
strcpy(ph_out, digit_lookup); | |||
} | |||
else | |||
if(control & 1) | |||
{ | |||
strcpy(ph_ordinal, ph_ordinal2); | |||
if(control & 4) | |||
{ | |||
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%do",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
found_ordinal = found; | |||
} | |||
if(found == 0) | |||
{ | |||
if((value == 1) && (control & 2)) | |||
{ | |||
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins" | |||
return(0); | |||
} | |||
sprintf(string,"_%d",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
// no, speak as tens+units | |||
if((control & 0x10) && (value < 10)) | |||
{ | |||
// speak leading zero | |||
Lookup(tr, "_0", ph_tens); | |||
} | |||
else | |||
{ | |||
if(found) | |||
{ | |||
ph_tens[0] = 0; | |||
} | |||
else | |||
if(digit_lookup[0] == 0) | |||
{ | |||
units = (value % 10); | |||
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
// is there a special pronunciation for this 2-digit number | |||
if(control & 8) | |||
{ | |||
sprintf(string,"_%dXo",value / 10); | |||
if(Lookup(tr, string, ph_tens) != 0) | |||
sprintf(string,"_%df",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
else | |||
if(control & 1) | |||
{ | |||
strcpy(ph_ordinal, ph_ordinal2); | |||
if(control & 4) | |||
{ | |||
found_ordinal = 1; | |||
sprintf(string,"_%dox",value); // LANG=hu, special word for 1. 2. when there are no higher digits | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%do",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
found_ordinal = found; | |||
} | |||
if(found_ordinal == 0) | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%dX",value / 10); | |||
Lookup(tr, string, ph_tens); | |||
if((value == 1) && (control & 2)) | |||
{ | |||
if(Lookup(tr, "_1a", ph_out) != 0) // LANG=de, "eins" | |||
return(0); | |||
} | |||
sprintf(string,"_%d",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL)) | |||
} | |||
// no, speak as tens+units | |||
if((control & 0x10) && (value < 10)) | |||
{ | |||
// speak leading zero | |||
Lookup(tr, "_0", ph_tens); | |||
} | |||
else | |||
{ | |||
if(found) | |||
{ | |||
// tens not found, (for example) 73 is 60+13 | |||
units = (value % 20); | |||
sprintf(string,"_%dX",(value / 10) & 0xfe); | |||
Lookup(tr, string, ph_tens); | |||
ph_tens[0] = 0; | |||
} | |||
ph_digits[0] = 0; | |||
if(units > 0) | |||
{ | |||
found = 0; | |||
if(control & 8) | |||
{ | |||
// is there a variant form of this number? | |||
sprintf(string,"_%df",units); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0)) | |||
else | |||
{ | |||
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
{ | |||
// ordinal | |||
sprintf(string,"_%do",units); | |||
if((found = Lookup(tr, string, ph_digits)) != 0) | |||
sprintf(string,"_%dXo", tens); | |||
if(Lookup(tr, string, ph_tens) != 0) | |||
{ | |||
found_ordinal = 1; | |||
} | |||
} | |||
if(found == 0) | |||
if(found_ordinal == 0) | |||
{ | |||
sprintf(string,"_%d",units); | |||
Lookup(tr, string, ph_digits); | |||
sprintf(string,"_%dX", tens); | |||
Lookup(tr, string, ph_tens); | |||
} | |||
if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL)) | |||
{ | |||
// tens not found, (for example) 73 is 60+13 | |||
units = (value % 20); | |||
sprintf(string,"_%dX", tens & 0xfe); | |||
Lookup(tr, string, ph_tens); | |||
} | |||
ph_digits[0] = 0; | |||
if(units > 0) | |||
{ | |||
found = 0; | |||
if((control & 2) && (digit_lookup[0] != 0)) | |||
{ | |||
// we have an entry for this digit (possibly together with the next word) | |||
strcpy(ph_digits, digit_lookup); | |||
found_ordinal = 1; | |||
ph_ordinal[0] = 0; | |||
} | |||
else | |||
{ | |||
if(control & 8) | |||
{ | |||
// is there a variant form of this number? | |||
sprintf(string,"_%df",units); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0)) | |||
{ | |||
// ordinal | |||
sprintf(string,"_%do",units); | |||
if((found = Lookup(tr, string, ph_digits)) != 0) | |||
{ | |||
found_ordinal = 1; | |||
} | |||
} | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%d",units); | |||
Lookup(tr, string, ph_digits); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0)) | |||
{ | |||
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
Lookup(tr, "_ord20", ph_ordinal); | |||
if(ph_ordinal[0] == 0) | |||
Lookup(tr, "_ord", ph_ordinal); | |||
} | |||
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | |||
{ | |||
Lookup(tr, "_0and", ph_and); | |||
if(tr->langopts.numbers & NUM_SWAP_TENS) | |||
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | |||
if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0)) | |||
{ | |||
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
Lookup(tr, "_ord20", ph_ordinal); | |||
if(ph_ordinal[0] == 0) | |||
Lookup(tr, "_ord", ph_ordinal); | |||
} | |||
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | |||
{ | |||
Lookup(tr, "_0and", ph_and); | |||
if(tr->langopts.numbers & NUM_SWAP_TENS) | |||
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | |||
else | |||
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal); | |||
used_and = 1; | |||
} | |||
else | |||
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal); | |||
used_and = 1; | |||
} | |||
else | |||
{ | |||
if(tr->langopts.numbers & NUM_SINGLE_VOWEL) | |||
{ | |||
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian) | |||
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) | |||
if(tr->langopts.numbers & NUM_SINGLE_VOWEL) | |||
{ | |||
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) | |||
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; | |||
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL)) | |||
ph_tens[ix] = 0; | |||
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian) | |||
if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) | |||
{ | |||
if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) | |||
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; | |||
if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL)) | |||
ph_tens[ix] = 0; | |||
} | |||
} | |||
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal); | |||
} | |||
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal); | |||
} | |||
if(tr->langopts.numbers & NUM_SINGLE_STRESS) | |||
@@ -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. | |||
} | |||
@@ -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) |
@@ -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(is_end_clause) | |||
if((punct_data & PUNCT_SAY_NAME) && (announced_punctuation == 0)) | |||
{ | |||
int c_next; | |||
if((c1 == '.') && (cprev == '.')) | |||
// used for elipsis (and 3 dots) if a pronunciation for elipsis is given in *_list | |||
char *p2; | |||
p2 = &buf[ix]; | |||
sprintf(p2,"%s",LookupCharName(tr, c1, 1)); | |||
if(p2[0] != 0) | |||
{ | |||
c1 = 0x2026; | |||
punct = 9; // elipsis | |||
ix += strlen(p2); | |||
announced_punctuation = c1; | |||
punct_data = punct_data & ~CLAUSE_BITS_INTONATION; // change intonation type to 0 (full-stop) | |||
} | |||
} | |||
if(is_end_clause) | |||
{ | |||
nl_count = 0; | |||
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 = ' '; | |||
} |
@@ -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 |
@@ -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; |
@@ -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; | |||
@@ -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; |
@@ -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; | |||
} |
@@ -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); |
@@ -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)) | |||
{ | |||
langopts->param[ix] = value; | |||
langopts->param2[ix] = value2; | |||
} | |||
else | |||
{ | |||
if((ix >= 0) && (ix < N_LOPTS)) | |||
langopts->param[ix] = value; | |||
fprintf(stderr,"Bad voice option: %s %s\n",buf,p); | |||
} | |||
break; | |||