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