Speed increase. Added the "sonic" routines by Bill Cox to reduce the length of eSpeak's sound output data, so as to make the speaking speed faster. Ordinal numbers: Some languages (el,es) use the ordinal form of hundreds and tens part of a number, as well as the units part. Added language option NUM2_MULTIPLE_ORDINAL. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@254 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -1,4 +1,4 @@ | |||
| // PB = Peter Bjarkov - [email protected] | |||
| // PB = Peter Bjarkov - [email protected] | |||
| // This file is UTF8 encoded | |||
| // Spelling-to-phoneme words for Danish | |||
| @@ -103,7 +103,7 @@ _11 'Elv@ | |||
| _12 t'Vl | |||
| _13 tR'&#d@-n // PB & changed to &# | |||
| _14 fj'ord@-n | |||
| _15 f'Emd@-n | |||
| _15 f'emt@n | |||
| _16 s'ajsd@-n | |||
| _17 s'Wd@-n // PP Y changed to W | |||
| _18 '&d@-n // PB a changed to & | |||
| @@ -153,7 +153,7 @@ _3Xo tr'&#ft@ //36. | |||
| _4Xo fWV'tyv@n@ // 42. | |||
| _5Xo halt*'Esenstyv@n@ // 52. | |||
| _6Xo tr'Esenstyv@n@ // 62. | |||
| _7Xo halfj'&rsenstyv@n@ // 72. | |||
| _7Xo h&lfj'&rsenstyv@n@ // 72. | |||
| _8Xo firsenstyv@n@ // 82. | |||
| _9Xo half'Emsenstyv@n@ // 95. | |||
| @@ -161,7 +161,7 @@ _9Xo half'Emsenstyv@n@ // 95. | |||
| den dEn $u | |||
| en e:n $u | |||
| et ed $u | |||
| et et $u | |||
| her $u | |||
| kun $u | |||
| vel $u+ | |||
| @@ -175,9 +175,9 @@ mens $pause // while | |||
| for fV | |||
| fordi fVd'i $pause // because - PB: changed stress | |||
| når nVr $pause // while | |||
| der d&r $u+ $u // PB changed from [d]A | |||
| der dEr $u+ $u // PB changed from [dA] | |||
| hvor v'Vr // where | |||
| hvorfor vVf'V // why - firan r deleted | |||
| hvorfor vVf'V // why - final r deleted | |||
| // prepositions | |||
| på pO $u | |||
| @@ -205,7 +205,7 @@ dét de | |||
| vi vi $u | |||
| i _i $u+ | |||
| mig maj $u // me | |||
| dig daj $u | |||
| dig daj $u+ | |||
| dem $u | |||
| ham $u | |||
| hende $u | |||
| @@ -240,16 +240,16 @@ jeres $u+ | |||
| // auxillary verbs | |||
| er //$u // is | |||
| var vAr $u+ // was | |||
| har hAr $u+ // has | |||
| er Er $u // is/are | |||
| var vAr $u+ // was/were | |||
| har hAr $u+ // has/have | |||
| havde h&:D@ $u+ // had | |||
| vil $u+ // will | |||
| skal $u+ // shall | |||
| kan $u+ // can | |||
| skulle $u+ // should | |||
| må $u+ // may | |||
| bør $u+ // ought | |||
| bør $u+ // ought to | |||
| // letter names | |||
| b be | |||
| @@ -297,14 +297,13 @@ apple _^_EN | |||
| beachbuggy _^_EN | |||
| beachvolley _^_EN | |||
| browser _^_EN | |||
| byte _^_EN | |||
| chart _^_EN | |||
| coach _^_EN | |||
| coke _^_EN | |||
| cool _^_EN | |||
| couch _^_EN | |||
| cursor _^_EN | |||
| cowboy _^_EN | |||
| //cowboy _^_EN | |||
| debugger _^_EN | |||
| ensemble _^_FR | |||
| event _^_EN | |||
| @@ -371,7 +370,8 @@ window _^_EN | |||
| word _^_EN | |||
| warrior _^_EN | |||
| // PB English names | |||
| // PB names | |||
| august awgOsd $capital | |||
| austin _^_EN $alt | |||
| bailey _^_EN $alt | |||
| barry _^_EN $alt | |||
| @@ -384,7 +384,6 @@ cyrus _^_EN | |||
| cia _^_EN $alt | |||
| fbi _^_EN $alt | |||
| fox _^_EN | |||
| jean _^_EN $alt | |||
| jones _^_EN | |||
| larry _^_EN $alt | |||
| leroy _^_EN $alt | |||
| @@ -393,12 +392,12 @@ mansfield _^_EN $alt | |||
| mahoney _^_EN $alt | |||
| montreal _^_EN $alt | |||
| oregon _^_EN $alt | |||
| paul _^_EN $alt | |||
| piccadilly _^_EN | |||
| reynolds _^_EN $alt | |||
| purvis _^_EN | |||
| washington _^_EN $alt | |||
| white _^_EN $alt | |||
| chicago _^_EN $alt | |||
| //chicago _^_EN $alt | |||
| // PB French words | |||
| croquis _^_FR | |||
| @@ -454,6 +453,7 @@ personage $alt | |||
| plamage $alt | |||
| plantage $alt | |||
| platmenage $alt | |||
| potage $alt | |||
| ravage $alt | |||
| reportage $alt | |||
| sabotage $alt | |||
| @@ -466,6 +466,71 @@ takkelage $alt | |||
| tonnage $alt | |||
| trikotage $alt | |||
| // PB final -abel - stressed a | |||
| acceptabel $alt | |||
| affabel $alt | |||
| aimabel $alt | |||
| amortisabel $alt | |||
| analysabel $alt | |||
| appellabel $alt | |||
| applikabel $alt | |||
| deklinabel $alt | |||
| demontabel $alt | |||
| differentiabel $alt | |||
| diskutabel $alt | |||
| disputabel $alt | |||
| durabel $alt | |||
| fashionabel $alt | |||
| favorabel $alt | |||
| formidabel $alt | |||
| inacceptabel $alt | |||
| inkommensurabel $alt | |||
| irritabel $alt | |||
| kapabel $alt | |||
| kassabel $alt | |||
| komfortabel $alt | |||
| kommensurabel $alt | |||
| kommutabel $alt | |||
| komparabel $alt | |||
| kondemnabel $alt | |||
| konfiskabel $alt | |||
| konstabel $alt | |||
| kontrollabel $alt | |||
| konvenabel $alt | |||
| konversabel $alt | |||
| kritisabel $alt | |||
| kurabel $alt | |||
| //mirabel $alt | |||
| miserabel $alt | |||
| mutabel $alt | |||
| navigabel $alt | |||
| negligeabel $alt | |||
| negotiabel $alt | |||
| notabel $alt | |||
| operabel $alt | |||
| parabel $alt | |||
| passabel $alt | |||
| portabel $alt | |||
| praktikabel $alt | |||
| praktisabel $alt | |||
| profitabel $alt | |||
| præsentabel $alt | |||
| realisabel $alt | |||
| remarkabel $alt | |||
| rentabel $alt | |||
| reparabel $alt | |||
| respektabel $alt | |||
| risikabel $alt | |||
| ræsonnabel $alt | |||
| spendabel $alt | |||
| tolerabel $alt | |||
| trafikabel $alt | |||
| transportabel $alt | |||
| variabel $alt | |||
| venerabel $alt | |||
| veritabel $alt | |||
| vulnerabel $alt | |||
| // PB adjectives and nouns with final -ant - stressed a | |||
| acceptant $alt | |||
| adjudant $alt | |||
| @@ -1496,6 +1561,84 @@ valens $alt | |||
| virulens $alt | |||
| ækvivalens $alt | |||
| // PB final -eret: stressed e ['er@D] | |||
| affekteret $alt | |||
| alkoholiseret $alt | |||
| altereret $alt | |||
| antikveret $alt | |||
| assorteret $alt | |||
| avanceret $alt | |||
| balanceret $alt | |||
| beneficeret $alt | |||
| blaseret $alt | |||
| bomberet $alt | |||
| civiliseret $alt | |||
| decideret $alt | |||
| delegeret $alt | |||
| demineraliseret $alt | |||
| deprimeret $alt | |||
| depriveret $alt | |||
| deputeret $alt | |||
| derangeret $alt | |||
| detaljeret $alt | |||
| determineret $alt | |||
| diplomeret $alt | |||
| dissemineret $alt | |||
| distingveret $alt | |||
| distraheret $alt | |||
| domicileret $alt | |||
| echaufferet $alt | |||
| eksalteret $alt | |||
| eloxeret $alt | |||
| emanciperet $alt | |||
| facetteret $alt | |||
| faconneret $alt | |||
| falleret $alt | |||
| fashioneret $alt | |||
| filipenseret $alt | |||
| forceret $alt | |||
| hasarderet $alt | |||
| indigneret $alt | |||
| inkarneret $alt | |||
| interesseret $alt | |||
| kommitteret $alt | |||
| kompliceret $alt | |||
| konfedereret $alt | |||
| konfødereret $alt | |||
| kongestioneret $alt | |||
| konsterneret $alt | |||
| korsetteret $alt | |||
| kreneleret $alt | |||
| kultiveret $alt | |||
| kuperet $alt | |||
| kæfereret $alt | |||
| lamelleret $alt | |||
| maniereret $alt | |||
| manieret $alt | |||
| markeret $alt | |||
| meleret $alt | |||
| outreret $alt | |||
| passioneret $alt | |||
| perialiseret $alt | |||
| pikeret $alt | |||
| prostitueret $alt | |||
| raffineret $alt | |||
| reflekteret $alt | |||
| reglementeret $alt | |||
| renommeret $alt | |||
| reserveret $alt | |||
| resigneret $alt | |||
| retarderet $alt | |||
| retsineret $alt | |||
| rutineret $alt | |||
| selvcentreret $alt | |||
| situeret $alt | |||
| sofistikeret $alt | |||
| sordineret $alt | |||
| taljeret $alt | |||
| tekstureret $alt | |||
| tempereret $alt | |||
| // PB words with final -ent - stressed e | |||
| abonnement $alt | |||
| abonnent $alt | |||
| @@ -1855,6 +1998,46 @@ venezuelan $alt | |||
| victorian $alt | |||
| århusian $alt | |||
| // PB nouns with final -enser - next to last syllable is strtessed | |||
| athenienser $alt | |||
| bergenser $alt | |||
| bogenser $alt | |||
| cistercienser $alt | |||
| dispenser $alt | |||
| esbjergenser $alt | |||
| fåborgenser $alt | |||
| grenåenser $alt | |||
| grenågenser $alt | |||
| herningenser $alt | |||
| hjørringenser $alt | |||
| hobrogenser $alt | |||
| kalundborgenser $alt | |||
| kartaginienser $alt | |||
| koldingenser $alt | |||
| kretenser $alt | |||
| køgenser $alt | |||
| lundenser $alt | |||
| mariagergenser $alt | |||
| nyborgenser $alt | |||
| nykøbingenser $alt | |||
| palæstinenser $alt | |||
| ringkøbingenser $alt | |||
| ripenser $alt | |||
| roskildenser $alt | |||
| rudkøbingenser $alt | |||
| sakskøbingenser $alt | |||
| silkeborgenser $alt | |||
| skanderborgenser $alt | |||
| stegenser $alt | |||
| stubbekøbingenser $alt | |||
| svendborgenser $alt | |||
| sønderborgenser $alt | |||
| vardenser $alt | |||
| vejlenser $alt | |||
| viborgenser $alt | |||
| vordingborgenser $alt | |||
| ålborgenser $alt | |||
| // PB country names with final -ien - stress on previous syllable | |||
| abessinien $alt | |||
| abkhasien $alt | |||
| @@ -1948,6 +2131,7 @@ falkeblik $alt | |||
| folkloristik $alt | |||
| fonetik $alt | |||
| fysik $alt | |||
| metafysik $alt | |||
| fysiognomik $alt | |||
| genetik $alt | |||
| germanistik $alt | |||
| @@ -2842,7 +3026,7 @@ rubin $alt | |||
| ruin $alt | |||
| sakkarin $alt | |||
| sardin $alt | |||
| satin s&t'EN $alt | |||
| satin $alt | |||
| serpentin $alt | |||
| sordin $alt | |||
| (stand-in) st&nd'in $alt | |||
| @@ -4817,6 +5001,7 @@ delagtig $alt | |||
| diskontinuerlig $alt | |||
| drikfældig $alt | |||
| drilagtig $alt | |||
| uduelig $alt // PB uduelig | |||
| dumdristig $alt | |||
| dværgagtig $alt | |||
| dybsindig $alt | |||
| @@ -4918,6 +5103,7 @@ godvillig $alt | |||
| grangivelig $alt | |||
| grinagtig $alt | |||
| guddommelig $alt | |||
| gudelig $alt // PB for "ugudelig" | |||
| gudfrygtig $alt | |||
| gudsbespottelig $alt | |||
| gudsjammerlig $alt | |||
| @@ -5187,6 +5373,7 @@ binderi $alt | |||
| biometri $alt | |||
| bizarreri $alt | |||
| broderi $alt | |||
| bogholderi $alt | |||
| bryderi $alt | |||
| bryggeri $alt | |||
| brænderi $alt | |||
| @@ -5555,7 +5742,7 @@ analysere $alt | |||
| angliser $alt | |||
| animer $alt | |||
| annekter $alt | |||
| annoncer $alt | |||
| annoncere $alt | |||
| annoter $alt | |||
| annuller $alt | |||
| anodiser $alt | |||
| @@ -5593,7 +5780,7 @@ atomiser $alt | |||
| atrofier $alt | |||
| attacher $alt | |||
| attaker $alt | |||
| attester $alt | |||
| attestere $alt | |||
| attraher $alt | |||
| attraper $alt | |||
| attribuer $alt | |||
| @@ -5632,7 +5819,7 @@ benedicer $alt | |||
| bestialiser $alt | |||
| bibliografer $alt | |||
| billettere $alt | |||
| biografer $alt | |||
| biografere $alt | |||
| biopter $alt | |||
| bivuaker $alt | |||
| blamer $alt | |||
| @@ -5792,7 +5979,7 @@ divisionere $alt | |||
| docer $alt | |||
| dogmatiser $alt | |||
| doktorere $alt | |||
| dokumenter $alt | |||
| dokumentere $alt | |||
| dollere $alt | |||
| domesticer $alt | |||
| dominer $alt | |||
| @@ -5905,7 +6092,7 @@ ferniser $alt | |||
| fertiliser $alt | |||
| feter $alt | |||
| figurere $alt | |||
| fikser $alt | |||
| fiksere $alt | |||
| fiktionaliser $alt | |||
| filere $alt | |||
| filetere $alt | |||
| @@ -5913,7 +6100,6 @@ filmatiser $alt | |||
| filosofer $alt | |||
| filtrer $alt | |||
| finansier $alt | |||
| finere $alt | |||
| fingere $alt | |||
| fingerer $alt | |||
| finjuster $alt | |||
| @@ -5937,15 +6123,15 @@ formuler $alt | |||
| fortificer $alt | |||
| fosfatere $alt | |||
| fosforescer $alt | |||
| fotografer $alt | |||
| fotokopier $alt | |||
| fotografere $alt | |||
| fotokopiere $alt | |||
| fourager $alt | |||
| fragmenter $alt | |||
| fraktioner $alt | |||
| fragmentere $alt | |||
| fraktionere $alt | |||
| franker $alt | |||
| frapper $alt | |||
| frasere $alt | |||
| ffraterniser $alt | |||
| fraterniser $alt | |||
| frekventer $alt | |||
| frisere $alt | |||
| friter $alt | |||
| @@ -6005,7 +6191,7 @@ omgruppere $alt | |||
| gruyere gryj'E:r $alt | |||
| græciser $alt | |||
| grønlandiser $alt | |||
| guillotiner $alt | |||
| guillotinere $alt | |||
| gummiere $alt | |||
| gymnasticer $alt | |||
| gæsterer $alt | |||
| @@ -6277,7 +6463,7 @@ konstater $alt | |||
| konstituer $alt | |||
| konstringer $alt | |||
| konstruer $alt | |||
| konsuler $alt | |||
| konsulere $alt | |||
| konsulter $alt | |||
| konsumer $alt | |||
| kontaminer $alt | |||
| @@ -6390,16 +6576,16 @@ manifester $alt | |||
| manipuler $alt | |||
| mankere $alt | |||
| manuducer $alt | |||
| manøvrer $alt | |||
| marcher $alt | |||
| manøvrere $alt | |||
| marchere $alt | |||
| marginaliser $alt | |||
| marginer $alt | |||
| mariner $alt | |||
| marginere $alt | |||
| marinere $alt | |||
| markere $alt | |||
| marmorer $alt | |||
| maroder $alt | |||
| martyriser $alt | |||
| masker $alt | |||
| maskere $alt | |||
| maskiniser $alt | |||
| maskuliniser $alt | |||
| massakrer $alt | |||
| @@ -6462,6 +6648,7 @@ mystificer $alt | |||
| mytologiser $alt | |||
| mæandrer $alt | |||
| møblere $alt | |||
| ommøbler $alt | |||
| narkotiser $alt | |||
| nasalere $alt | |||
| nationaliser $alt | |||
| @@ -6573,7 +6760,7 @@ piker $alt | |||
| pilotere $alt | |||
| pioner $alt | |||
| pipetter $alt | |||
| pirater $alt | |||
| piratere $alt | |||
| piruetter $alt | |||
| pivoter $alt | |||
| pizziker $alt | |||
| @@ -6642,7 +6829,7 @@ proskriber $alt | |||
| prospekter $alt | |||
| prostituer $alt | |||
| proteger $alt | |||
| protester $alt | |||
| protestere $alt | |||
| protokollere $alt | |||
| provianter $alt | |||
| provoker $alt | |||
| @@ -6850,9 +7037,9 @@ skamfer $alt | |||
| skandaliser $alt | |||
| skandere $alt | |||
| skandinaviser $alt | |||
| skeletter $alt | |||
| skelettere $alt | |||
| skematiser $alt | |||
| skitser $alt | |||
| skitsere $alt | |||
| skolemesterer $alt | |||
| skraver $alt | |||
| skrædderer $alt | |||
| @@ -6864,11 +7051,11 @@ snedkerer $alt | |||
| socialiser $alt | |||
| soigner $alt | |||
| solidariser $alt | |||
| sonder $alt | |||
| sorter $alt | |||
| sondere $alt | |||
| sortere $alt | |||
| soupere $alt | |||
| spadser $alt | |||
| spalier $alt | |||
| spaliere $alt | |||
| spankuler $alt | |||
| spatier $alt | |||
| specialiser $alt | |||
| @@ -7002,14 +7189,14 @@ trivialiser $alt | |||
| trompeter $alt | |||
| trunker $alt | |||
| //trænere $alt | |||
| tunneler $alt | |||
| tunnelere $alt | |||
| turner $alt | |||
| tuscher $alt | |||
| typificer $alt | |||
| typiser $alt | |||
| typografer $alt | |||
| tyranniser $alt | |||
| uniformer $alt | |||
| uniformere $alt | |||
| urbaniser $alt | |||
| urger $alt | |||
| uriner $alt | |||
| @@ -7088,6 +7275,7 @@ konventionel $alt | |||
| kornel $alt | |||
| kriminel $alt | |||
| kriminal $alt // PB as in "kriminalroman" | |||
| kulturel $alt | |||
| maskinel $alt | |||
| model $alt | |||
| nominel $alt | |||
| @@ -7124,6 +7312,46 @@ sportel $alt | |||
| tarantel $alt | |||
| karamel $alt | |||
| // PB final -iel - stressed e | |||
| adverbiel $alt | |||
| arteriel $alt | |||
| artificiel $alt | |||
| bakteriel $alt | |||
| ceremoniel $alt | |||
| differentiel $alt | |||
| eksistentiel $alt | |||
| eksponentiel $alt | |||
| essentiel $alt | |||
| finansiel $alt | |||
| industriel $alt | |||
| judiciel $alt | |||
| klimakteriel $alt | |||
| kommerciel $alt | |||
| konfidentiel $alt | |||
| kontroversiel $alt | |||
| materiel $alt | |||
| mikrobiel $alt | |||
| ministeriel $alt | |||
| notariel $alt | |||
| officiel $alt | |||
| partiel $alt | |||
| potentiel $alt | |||
| principiel $alt | |||
| provinsiel $alt | |||
| præferentiel $alt | |||
| præsidentiel $alt | |||
| referentiel $alt | |||
| sektoriel $alt | |||
| sekventiel $alt | |||
| seriel $alt | |||
| speciel $alt | |||
| substantiel $alt | |||
| tangentiel $alt | |||
| tendentiel $alt | |||
| territoriel $alt | |||
| triviel $alt | |||
| vektoriel $alt | |||
| // PB nouns ending with -ering - stressed e | |||
| abandonnering $alt | |||
| abdicering $alt | |||
| @@ -7251,7 +7479,6 @@ bureaukratisering $alt | |||
| cadmiering $alt | |||
| camouflering $alt | |||
| campering $alt | |||
| catering keiteriN $alt | |||
| celebrering $alt | |||
| cementering $alt | |||
| censurering $alt | |||
| @@ -9095,6 +9322,7 @@ refleksion $alt | |||
| reformation $alt | |||
| refraktion $alt | |||
| refusion $alt | |||
| relegion $alt | |||
| region $alt | |||
| regression $alt | |||
| reifikation $alt | |||
| @@ -9231,6 +9459,7 @@ vokalisation $alt | |||
| dodekafon $alt | |||
| frankofon $alt | |||
| grammofon $alt | |||
| grafofon $alt | |||
| homofon $alt | |||
| hydrofon $alt | |||
| kolofon $alt | |||
| @@ -9291,26 +9520,28 @@ teknonom $alt | |||
| // -on list | |||
| ballon b&l'VN $alt | |||
| beton bet'VN $alt | |||
| beton $alt | |||
| bouillon $alt | |||
| diakron $alt | |||
| interferon $alt | |||
| epsilon 'ebsilVn $alt | |||
| futon fut'VN $alt | |||
| futon $alt | |||
| føljeton fWljet'Vn $alt | |||
| facon f&s'Vn $alt | |||
| facon $alt | |||
| lazaron $alt | |||
| makron $alt | |||
| melon $alt | |||
| neuron $alt | |||
| kupon kup'VN $alt | |||
| kupon $alt | |||
| postillon p,Vsdilj'VN $alt | |||
| perron pER'VN | |||
| pompon $alt | |||
| progesteron $alt | |||
| salon s&l'VN $alt | |||
| sifon sif'VN $alt | |||
| sifon $alt | |||
| synkron $alt | |||
| talon t&l'VN $alt | |||
| tampon tAmp'VN $alt | |||
| talon $alt | |||
| tampon $alt | |||
| testosteron $alt | |||
| // -tron list (on) | |||
| @@ -9329,7 +9560,6 @@ synkrotron $alt | |||
| // -kon list (VN/Vn/on) | |||
| akrostikon akrVsdik'Vn $alt | |||
| balkon b&lk'Vn $alt | |||
| diakon $alt | |||
| distikon distik'Vn $alt | |||
| flakon fl&k'VN $alt | |||
| @@ -9802,7 +10032,6 @@ gabardine $alt | |||
| gelatine $alt | |||
| georgine $alt | |||
| grenadine $alt | |||
| guillotine gijut'i:n@ $alt | |||
| kabine $alt | |||
| kantine $alt | |||
| kavatine $alt | |||
| @@ -10768,7 +10997,7 @@ blegrød blajrWD | |||
| blegrøde blajrWD@ | |||
| //blege blaj@ | |||
| blegemiddel bl&#j@mid@l | |||
| //blegansigt bl&#jansegt | |||
| (rub og stub) R'Ob||V||sd'Ob | |||
| slags sl'ags // sort, type | |||
| tre tr'e // the number 3 | |||
| //barber bAb'er // PB barber | |||
| @@ -10843,6 +11072,7 @@ billie bile // PB the name Billie | |||
| (coney island) 'kouni||'ajl3nd // PB | |||
| (union station) junj3n||steisj@n // PB | |||
| (secret service) sigred||s'Wvis | |||
| (happy hour) h&pi||'AuV | |||
| chevrolet sjEvrol'e | |||
| saigon sajg3-n // PB Saigon | |||
| managua m&n'&:gw& | |||
| @@ -10865,6 +11095,7 @@ emp $abbrev | |||
| hbo $abbrev // TV station | |||
| usa $abbrev | |||
| who $abbrev $allcaps // PB World Health Organization | |||
| ussr $abbrev $allcaps // Sovjet Union | |||
| vsop $abbrev | |||
| eu $abbrev | |||
| ekg $abbrev | |||
| @@ -10885,11 +11116,13 @@ pharm fA:rm? $hasdot // PB fx cand. pharm. | |||
| phil fil/3 $hasdot // PB fx cand. phil. | |||
| bh $abbrev | |||
| (bh'er) b,e:h'O:V | |||
| (l'chaim) l&kr'ajm | |||
| scsi skVsi // PB | |||
| // Try to catch errors | |||
| (et kvarter) et||kvA'ter // PB | |||
| (mit kvarter) met||kvA'ter // PB | |||
| (mit kvarter) mit||kvA'ter // PB | |||
| (vores kvarter) vV:s||kvA'ter // PB | |||
| (deres kvarter) de@s||kvA'ter // PB | |||
| (det kvarter) de||kvA'ter // PB | |||
| @@ -10918,11 +11151,12 @@ sig si $capital //PB Sig = si with capital S - Sig det med blom | |||
| (vi steg) vi||st'e | |||
| (de steg) di||st'e | |||
| (alle steg) &l3||st'e | |||
| (vandet steg) v&n@D||st'e | |||
| steg sdaj $atend $sentence | |||
| steget ste@d | |||
| // PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v] | |||
| (et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day | |||
| // PB problem with lyst = blond, light coloured and lyst = would like to, feel like | |||
| // PB problem with lyst - blond = light coloured; and lyst = would like to, feel like | |||
| (lyst hår) lYst||hOr | |||
| (lys farve) lYs||fArw@ | |||
| (er lyst) &r||l'Ysd | |||
| @@ -10941,6 +11175,7 @@ legenderne leg'EndVn3s | |||
| (lige så) li@||sV | |||
| (en så) en||s'V | |||
| (mig så) maj||sV | |||
| (men så) men||sV | |||
| (så meget) sV||m'a:j@D | |||
| (så mange) sV||m'aN3 | |||
| (så er) sV||'Er | |||
| @@ -10950,12 +11185,27 @@ legenderne leg'EndVn3s | |||
| (så højt) sV||h'Vjt | |||
| (så var) sV||v'Ar | |||
| (så længe) sV||l'EN3 | |||
| (så være) sV||v'EV | |||
| (så må) sV||m'O | |||
| (så har) sV||har | |||
| (se så) se||sV | |||
| (så sent) sV||sent | |||
| (ville så) vil3||sV | |||
| så sV $sentence $atstart | |||
| (hvad så) v&||sV $atend // "Hvad så?" | |||
| (virkede så) v'irkeD@||sV | |||
| (kom så) kVm||sV | |||
| (koste med) kosd@||mED | |||
| (lige koste) li@||kosd@ // PB "lige koste fejer bedst" | |||
| (en kanoner) en||k&non'er | |||
| nå nV $atstart // PB Nå, der er du | |||
| // PB stress in word combinations | |||
| (dem her) d'Em||her | |||
| (dem der) d'Em||der | |||
| (den der) d'En||der | |||
| (den her) d'En||her | |||
| (det her) d'e||her | |||
| (det der) d'e||der | |||
| (de her) d'i||her | |||
| (de der) d'i||der | |||
| @@ -53,7 +53,7 @@ p r s S t T v w | |||
| x z | |||
| Dictionary da_dict 2010-08-26 | |||
| Dictionary da_dict 2010-10-28 | |||
| & &# 0 3 @ @- a A | |||
| e E i o O u V W | |||
| @@ -62,18 +62,19 @@ W# y Y | |||
| * - : ? b B d D | |||
| dZ f g h j J k l | |||
| l/2 l/3 m n N p r R | |||
| s S t T tS v w z | |||
| s S t T tS v w x | |||
| z | |||
| Dictionary hu_dict 2010-09-13 | |||
| Dictionary hu_dict 2010-11-17 | |||
| A a: E e: i i: o o: | |||
| u u: Y y y: Y: | |||
| a A a: E e: i i: o | |||
| o: u u: Y y y: Y: | |||
| - : b c d dZ dz f | |||
| g h j J k l m n | |||
| n^ p r R R2 s S s2 | |||
| t tS ts v z Z | |||
| - : b c C d dZ dz | |||
| f g h j J k l m | |||
| n n^ p r R R2 s S | |||
| s2 t tS ts v z Z | |||
| Dictionary de_dict 2010-08-25 | |||
| @@ -89,7 +90,7 @@ n N p pF r s S t | |||
| tS ts v w x z Z | |||
| Dictionary el_dict 2010-08-26 | |||
| Dictionary el_dict 2010-11-16 | |||
| a aI e i o oI u | |||
| @@ -99,7 +100,7 @@ p Q r R s s; t T | |||
| ts v x z z; | |||
| Dictionary en_dict 2010-09-14 | |||
| Dictionary en_dict 2010-11-04 | |||
| 0 3 3: @ @- @2 @5 @L | |||
| a a# A: A@ aa aI aI@ aU | |||
| @@ -126,7 +127,7 @@ s S t T tS ts v w | |||
| x z Z | |||
| Dictionary es_dict 2010-07-28 | |||
| Dictionary es_dict 2010-11-16 | |||
| a aI aU e E eI eU i | |||
| o O oI u | |||
| @@ -149,7 +150,7 @@ l m n N p r s S | |||
| s2 t v w Z | |||
| Dictionary fr_dict 2010-09-04 | |||
| Dictionary fr_dict 2010-11-15 | |||
| @ @- a A~ e E E: E~ | |||
| i I o O O~ u u: w | |||
| @@ -199,7 +200,7 @@ q r r. s S s. t T | |||
| t. th th. v w x z | |||
| Dictionary ta_dict 2010-09-14 | |||
| Dictionary ta_dict 2010-11-15 | |||
| a a: aI aU e E e: i | |||
| I i: o o: u U u2 u: | |||
| @@ -248,7 +249,7 @@ n^# p Q r R r# R2 s | |||
| S s2 t T tl# v x z | |||
| Dictionary it_dict 2009-04-03 | |||
| Dictionary it_dict 2010-11-10 | |||
| @- a a/ aI aU e E eI | |||
| i I o O u | |||
| @@ -324,7 +325,7 @@ k l m n p R s S | |||
| t tS v w x | |||
| Dictionary nl_dict 2010-09-13 | |||
| Dictionary nl_dict 2010-11-10 | |||
| 8 @ @- a A a: A~ E | |||
| E2 e: EI eU i I o O | |||
| @@ -337,9 +338,9 @@ n^ p Q r s S t tS | |||
| v v# w x z Z | |||
| Dictionary no_dict 2010-01-20 | |||
| Dictionary no_dict 2010-10-25 | |||
| @ @2 a A a: A: AI aI | |||
| @ a 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 | |||
| @@ -523,12 +524,14 @@ l m n N p r s t | |||
| tS v w z | |||
| Dictionary am_dict 2010-01-17 | |||
| Dictionary am_dict 2010-10-02 | |||
| @ a e i o u y | |||
| b d h l m q R s | |||
| S t tS | |||
| ? b d dZ f g h j | |||
| k l m n N n^ p R | |||
| s S t tS ts v w x | |||
| z Z | |||
| Dictionary ml_dict 2009-10-10 | |||
| @@ -48,9 +48,54 @@ _1M2 'ena|ekatom'irio | |||
| _0M2 ekatom'iria | |||
| _1M3 'ena|Disekatom'irio | |||
| _0M3 Disekatom'iria | |||
| _dpt k'oma | |||
| _dpt _k'oma | |||
| _. tel'ia | |||
| _#ος %os // ordinal suffix | |||
| _#ος os // ordinal suffix | |||
| _#η i | |||
| _#ο o | |||
| _ord os // default ordinal suffix | |||
| // ordinal numbers | |||
| _0o miDenik' | |||
| _1o pr'ot | |||
| _2o D'efter | |||
| _3o tr'it | |||
| _4o t'etart | |||
| _5o p'empt | |||
| _6o 'ekt | |||
| _7o 'evDom | |||
| _8o 'oQDo | |||
| _9o 'enat | |||
| _10o D'ekat | |||
| _11o enD'ekat | |||
| _12o DoD'ekat | |||
| _1Xo D'ekat | |||
| _2Xo ikost' | |||
| _3Xo triakost' | |||
| _4Xo tessarakost' | |||
| _5Xo pedikost' | |||
| _6Xo eksikost' | |||
| _7Xo evDomikost' | |||
| _8Xo oQDoIkost' | |||
| _9Xo enenikost' | |||
| _1Co ekatost' | |||
| _2Co D;akos;ost' | |||
| _3Co tr;akos;ost' | |||
| _4Co tetrakos;ost' | |||
| _5Co pedakos;ost' | |||
| _6Co eksakos;ost' | |||
| _7Co eptakos;ost' | |||
| _8Co oktakos;ost' | |||
| _9Co eneakos;ost' | |||
| _0M1o Cil^ost' | |||
| _1M1o Cil^ost' | |||
| _2M1o DisCil^ost' | |||
| _3M1o trisCil^ost' | |||
| // symbols | |||
| % t'is||ekat'o | |||
| // articles | |||
| ο o $u // definate article | |||
| @@ -675,6 +675,7 @@ beryl bEr@L | |||
| basal beIs@L | |||
| best bEst | |||
| beta bi:t@ | |||
| betake bI2teIk | |||
| beverage bEv@rI2dZ | |||
| bias baI@s | |||
| biased baI@st | |||
| @@ -811,6 +812,7 @@ closer kloUs3 | |||
| closely kloUslI $verbf // not kloUzlI | |||
| closet kl0zI2t | |||
| cloth kloUD $verb | |||
| c'mon k@m0n | |||
| coauthor koU'O:T3 | |||
| cobol koUb0l | |||
| cocoa koUkoU | |||
| @@ -1253,7 +1255,6 @@ hmmm h'@m | |||
| hmpf h'@mpf | |||
| holme hoUm | |||
| holster hoUlst3 | |||
| holy hoUlI | |||
| homeowner hoUmoUn3 | |||
| homepage hoUmpeIdZ | |||
| hominem h0mInEm | |||
| @@ -1351,13 +1352,11 @@ iron aI@n | |||
| irony aIr@nI | |||
| isosceles aIs'0s@li:z | |||
| itinerary aIt'In@r@rI | |||
| ivory aIv@rI | |||
| jagged dZagI2d | |||
| japan dZ@pan | |||
| jasmine dZazmIn | |||
| jesus dZi:z@s | |||
| joky dZoUkI | |||
| jour ZU@ // french | |||
| jukebox dZu:kb0ks | |||
| july dZu:l'aI | |||
| @@ -1508,7 +1507,7 @@ militia m@lIS@ | |||
| minibus mInIbVs | |||
| mining maInI2N // not mini | |||
| minuet mInju:'Et | |||
| minutely maIn'ju:tlI | |||
| minute mInIt $onlys | |||
| mirage mIrA:Z | |||
| misery mIz@rI | |||
| misled mIsl'Ed | |||
| @@ -1708,7 +1707,7 @@ pharaoh fe@roU | |||
| philistine fIlI2staIn | |||
| philosophy fI2l0s@fI | |||
| phoenix fi:nIks | |||
| photograph foUt@graf | |||
| photographer f@t'0gr@f@ | |||
| piano pI'anoU | |||
| piecemeal p'i:sm,i:l | |||
| pier pi@3 | |||
| @@ -1728,10 +1727,9 @@ piteous pIti@s | |||
| pituitary $2 | |||
| plaguing pleIgIN | |||
| plicate $2 | |||
| plugin plVgIn | |||
| plumber plVm3 | |||
| plus plVs | |||
| poky poUkI | |||
| poly p0lI | |||
| politer p@l'aIt3 | |||
| politic p0l@tIk | |||
| poll poUl | |||
| @@ -1956,10 +1954,11 @@ saucepan sO:sp@n | |||
| saudi saUdI | |||
| saute sO:teI | |||
| says sEz | |||
| scaly skeIlI | |||
| salmon sam@n | |||
| scalpel skalp@L | |||
| scared ske@d | |||
| scaring ske@rI2N | |||
| scaring ske@rI2 | |||
| scenic si:nIk | |||
| scald sk0ld | |||
| scepter sEpt3 | |||
| @@ -2345,6 +2344,7 @@ Cheadle tSi:d@L | |||
| Cheshire tSES3 | |||
| Chiswick tSIzIk | |||
| Clwyd klu:Id | |||
| Dagenham dag@n@m | |||
| Devon dEv@n | |||
| Dolgellau d0lg'EClaI | |||
| Dover doUv3 | |||
| @@ -2605,6 +2605,7 @@ Alison alI2s@n | |||
| Amanda $2 | |||
| Amy eImI | |||
| Andre 0ndreI | |||
| Anita a#ni:t@ | |||
| Anthony ant@nI | |||
| Anton ant0n | |||
| Aoife i:f@ | |||
| @@ -2711,6 +2712,7 @@ Leroy li:rOI | |||
| Liam li:@m | |||
| Lindsay lInzi | |||
| Llewellyn l#@w'ElIn | |||
| Llywelyn l#@w'ElIn | |||
| Lois loUIs | |||
| Louis lu:I | |||
| Louise lu:w'i:z | |||
| @@ -2806,6 +2808,7 @@ Chrysler kraIzl3 | |||
| Disney dIznI | |||
| Dolce d0ltSeI | |||
| Dvorak d@-vo@Zak | |||
| Gibson gIbs@n | |||
| Hades heIdi:z | |||
| Patel pa#tEl | |||
| Primavera pri:m@v'e@r@ | |||
| @@ -564,6 +564,7 @@ | |||
| al (ity 'al | |||
| p) al (et al | |||
| qu) al (@ 0l | |||
| c) all (K O:l | |||
| b) al (m A: | |||
| c) al (m A: | |||
| p) al (m A: | |||
| @@ -1152,7 +1153,7 @@ | |||
| _) bug (le bju:g | |||
| @) bury (_S4i br%I | |||
| ?3 @) bury (_S4i bEr%I | |||
| _) by baI | |||
| _) byte baIt | |||
| .group be | |||
| @@ -1187,6 +1188,8 @@ | |||
| be (see bI2 | |||
| be (sie bI2 | |||
| _) be (sto bI2 | |||
| _) beta b,i:t@ | |||
| ?3 _) beta b,eIt@ | |||
| _) be (th bE | |||
| be (tray bI2 | |||
| _) be (w bI2 | |||
| @@ -1553,6 +1556,7 @@ | |||
| delu (g dElju: | |||
| de (lv+ dE | |||
| de (ma dI2 | |||
| de (magog dE | |||
| demea dI2m'i: | |||
| de (men dI2 | |||
| de (mise dI2 | |||
| @@ -2256,6 +2260,8 @@ | |||
| &) erize (_ @raIz | |||
| &) eris (a @raIz | |||
| &) eriz (a @raIz | |||
| @) er (Cal_ '3: | |||
| @) er (Cic_ '3: | |||
| p) ermea (b 3:mi@ | |||
| _f) erme (nt %3:mE | |||
| er (nal_ '3: | |||
| @@ -2507,6 +2513,7 @@ | |||
| bo) g (Ey g | |||
| &) gia (_ dZ@ | |||
| &) gia (C_ dZ@ | |||
| go) g (ic_ g | |||
| &) giu (m dZ@ | |||
| _) g (id g | |||
| _) g (im g | |||
| @@ -2522,6 +2529,7 @@ | |||
| gue (_ g | |||
| _) gue gE | |||
| _) guer (n g3: | |||
| o) g (y_ g | |||
| .group h | |||
| h h | |||
| @@ -2529,7 +2537,7 @@ | |||
| h (_ | |||
| _B) h | |||
| @) hammed h'amId | |||
| A) han (_ h'an // places | |||
| A) han (_ han // places | |||
| ha (st heI | |||
| _) he' %hi: | |||
| @) head (_S4 hEd | |||
| @@ -2565,6 +2573,7 @@ | |||
| i (Bee I | |||
| i (Bel_ I | |||
| i (Bet_ I | |||
| _) i (Bo aI | |||
| i (CCi_ 'I | |||
| XC) i (Ca_ i: | |||
| @) i (Cate_ =I | |||
| @@ -2932,7 +2941,7 @@ | |||
| _) in (disP2 ,In | |||
| _) in (divP2 ,In | |||
| _) in (dol In | |||
| in (exP2 ,In | |||
| _) in (exP2 ,In | |||
| _) inex (or In'Eks | |||
| _) infa (l %Infa | |||
| _) in (fam In | |||
| @@ -3044,6 +3053,7 @@ | |||
| in (ee In | |||
| c) in (e In | |||
| inc) in (e In | |||
| g) in (e In | |||
| bas) in (_ @n | |||
| @c) ine (_ i:n | |||
| &d) ine (_ i:n | |||
| @@ -3070,9 +3080,12 @@ | |||
| infor (matio Inf3 | |||
| ino (_ 'i:noU | |||
| _m) in (us aIn | |||
| _m) inu (te aIn'ju: | |||
| _m) inute (m InIt | |||
| _) intra Intr@ | |||
| _) intra (CC %Intra | |||
| .group io | |||
| io (_ =I2oU | |||
| ?7 io (_ =i:oU | |||
| @@ -3176,7 +3189,6 @@ | |||
| an) ism (_S3d Iz@m | |||
| @iB) ism (_S3d Iz@m | |||
| @) ism (_S3de Iz@m | |||
| _) is (o aIs | |||
| is (o_ aIz | |||
| is (or_ aIz | |||
| issimo (_ 'IsImoU | |||
| @@ -3537,6 +3549,7 @@ | |||
| o (Ba_ 'oU | |||
| _) o (Bal oU | |||
| XC) o (Bal oU | |||
| X) o (By oU | |||
| o (Be# oU | |||
| o (BeCo_ 0 | |||
| o (BenC oU | |||
| @@ -3579,8 +3592,7 @@ | |||
| _) obs (er %0bz | |||
| obso (l 0bs@ | |||
| o (bstin 0 | |||
| o (bt %0 | |||
| o (bu %0 | |||
| _) o (bt %0 | |||
| o (by_ oU | |||
| f) o (cA oU | |||
| _l) o (cA oU | |||
| @@ -3601,6 +3613,7 @@ | |||
| o (cre_ 'oU | |||
| _h) o (cu oU | |||
| cr) o (cu oU | |||
| _b) o (dy 0 | |||
| cust) o (d @ | |||
| k) o (dA oU | |||
| meth) o (d_ @ | |||
| @@ -3643,6 +3656,7 @@ | |||
| o (geny '0 | |||
| r) o (ger 0 | |||
| l) o (gies @ | |||
| @) ographer '0graf@ | |||
| r) ogue oUg | |||
| v) ogue oUg | |||
| @@) ogue 0g | |||
| @@ -3667,6 +3681,7 @@ | |||
| oix (_ wa | |||
| o (ky_ oU | |||
| @) o (lo_ 0 | |||
| @) ometer '0mIt@ | |||
| ?3 g) o (ng O | |||
| ?3 r) o (ng O | |||
| ?3 s) o (ng O | |||
| @@ -3731,7 +3746,6 @@ | |||
| oy (A_ 'OI | |||
| d) o (zen V | |||
| _) o (zo oU | |||
| o (zy_ oU | |||
| .group ol | |||
| @@ -3875,7 +3889,6 @@ | |||
| w) on (k 0n | |||
| w) on (t 0n | |||
| &) ony (_ @n%I | |||
| XC) ony oUnI | |||
| onymous '0nIm@s | |||
| .group oo | |||
| @@ -4045,7 +4058,7 @@ | |||
| exp) ost 0st | |||
| hyp) ost 0st | |||
| osure 'oUZ3 | |||
| _C) os (y oUz | |||
| X) os (y oUz | |||
| .group ou | |||
| ou aU | |||
| @@ -4289,8 +4302,7 @@ | |||
| photo foUtoU | |||
| photon foUt0n | |||
| photocop foUt@k0p | |||
| photo (grapher f@t0 | |||
| photo (graphy f@t0 | |||
| phot (ograph foUt | |||
| photo (met foUt'0 | |||
| _) phyco f,aIkoU | |||
| p (hole p | |||
| @@ -4358,6 +4370,7 @@ | |||
| _) pre (diP3 pr%i | |||
| _) pre (dic pr%I | |||
| _) pre (emp pr%I | |||
| _) pre (fec pri: | |||
| _) pre (feren prE | |||
| pre (fix pri: | |||
| _) pre (gn prE | |||
| @@ -4870,7 +4883,7 @@ | |||
| ther (_ D3 | |||
| ther (er D3 | |||
| th (erC D | |||
| there (_ D3 // thering | |||
| there (_ D3 // thering | |||
| th (est D | |||
| ea) th (er D | |||
| n) th (er+ T | |||
| @@ -4949,6 +4962,7 @@ | |||
| u (ga_ 'u: | |||
| f) u (gal 'ju: | |||
| ug (er_ u:g | |||
| pl) ug Vg | |||
| s) ugge (st @dZE | |||
| h) ugh ju: | |||
| mp) ug (n ju: | |||
| @@ -5017,7 +5031,6 @@ | |||
| ?5 usurp ju:z'VRp | |||
| b) us (y Iz | |||
| b) u (tch U | |||
| min) u (te I | |||
| r) u (th u: | |||
| _) u (til ju: | |||
| u (tion 'ju: | |||
| @@ -5030,6 +5043,7 @@ | |||
| l) uxur VgZu:3 | |||
| uy aI | |||
| uy (A_ 'u:j | |||
| u (zzi_ 'u: | |||
| .group ue | |||
| @@ -5240,6 +5254,7 @@ | |||
| _) y' (CP2 j@ | |||
| y (C_ I | |||
| y (CC I | |||
| XoB) y (@+ I | |||
| _) y (C@ I | |||
| _) y (n@ V | |||
| _) y (s@ V | |||
| @@ -5482,6 +5497,7 @@ | |||
| α 'alf@_ | |||
| ά 'alf@_ | |||
| β b'i:t@_ | |||
| ?3 β b'eIt@_ | |||
| γ g'am@_ | |||
| δ d'Elt@_ | |||
| ε 'EpsIl0n_ | |||
| @@ -118,6 +118,43 @@ _0and i | |||
| _dpt koma | |||
| //_roman Rom'ano | |||
| // ordinal numbers | |||
| _#º o | |||
| _#ª a | |||
| _ord o | |||
| _1o p**im'E** | |||
| _2o seQ'und | |||
| _3o tERT'E** | |||
| _4o kw'a**t | |||
| _5o kint | |||
| _6o s'Ekst | |||
| _7o s'Etim | |||
| _8o Okt'aB | |||
| _9o noB'en | |||
| _10o D'ETim | |||
| _11o und'ETim | |||
| _12o DwoD'ETim | |||
| _13o DeTimotERT'E** | |||
| _14o DeTimokw'a**t | |||
| _15o DeTimok'int | |||
| _16o DeTimos'Ekst | |||
| _17o DeTimos'Eptim | |||
| _18o DeTimOkt'aB | |||
| _19o DeTimonoB'en | |||
| _2Xo Bix'Esim | |||
| _3Xo t**ix'Esim | |||
| _4Xo kwaD**ax'Esim | |||
| _5Xo kinkwax'Esim | |||
| _6Xo seQsax'Esim | |||
| _7Xo sEptwax'Esim | |||
| _8Xo Oktox'Esim | |||
| _9Xo nonax'Esim | |||
| _0Co TEnt'Esim | |||
| _1Co TEnt'Esim | |||
| _0M1o mil'Esim | |||
| vi bi // not a Roman number | |||
| @@ -24,7 +24,7 @@ | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| // | |||
| // Updated 2010-07-25 Michel Such <[email protected]> | |||
| // Updated 2010-10-15 Michel Such <[email protected]> | |||
| // | |||
| // * Numbers, a few abbreviations and exceptions. | |||
| // | |||
| @@ -133,9 +133,6 @@ _` aks'A~_gr'av | |||
| _{ akOlad_goS | |||
| _| bar_vErtik'al | |||
| _} akOlad_drwat | |||
| ² pyis'A~s||d'Y | |||
| _« uvre||gijm'E | |||
| _» fErme||gijm'E | |||
| _’ apostr'Of | |||
| _‘ apostr'Of | |||
| _µ mikr'o | |||
| @@ -151,16 +148,29 @@ _& _e_komErsi'al | |||
| ~ tilde | |||
| € @r'o $u+ | |||
| ¢ sEnt | |||
| ¥ iEn | |||
| ¥ jEn | |||
| £ livr | |||
| ± pl'yz_'u_mw'E~ | |||
| ± pl'yzumw'E~ | |||
| × myltipli'e_p'ar | |||
| ÷ diviz'e_p'ar | |||
| ¼ W~_k'ar | |||
| ½ W~_d@m'i | |||
| ¾ trwa_k'ar | |||
| © _^_EN | |||
| ® mark||depoz'e | |||
| ™ markd@fabrik | |||
| ¬ tirE_fakyltatif | |||
| ¦ separatWr||vEtikal | |||
| © _^_en | |||
| _« uvre||gijm'E | |||
| ® markdepoz'e | |||
| ¯ makrO~ | |||
| ² pyis'A~s||d'Y | |||
| ³ pyisA~s||trwa | |||
| ¶ paragraf | |||
| · pwE~ | |||
| ¸ sedij | |||
| º d@gre | |||
| _» fErme||gijm'E | |||
| ¿ pwE~||dE~terogasjO~||E~vErse | |||
| // numeric | |||
| @@ -239,6 +249,7 @@ adn ad,eEn | |||
| adsl ad,eEsEl | |||
| alt _::alt | |||
| amd a,Emde | |||
| android A~droid | |||
| aol a,oEl | |||
| api ap,ei | |||
| ascii aski | |||
| @@ -645,6 +656,7 @@ alleluia alelui'a | |||
| alterego altErego | |||
| anis anis | |||
| armageddon armagedO~ | |||
| aujourd'hui aujourdui $text | |||
| auvent ovA~ | |||
| beta beta | |||
| bien biE~n2 | |||
| @@ -662,11 +674,13 @@ canyon kanjOn | |||
| charles Sarl | |||
| (chef d'oeuvre) chédeuvre $text | |||
| (chef d'oeuvres) chédeuvres $text | |||
| chienlit SjA~li | |||
| choeur kWr | |||
| cinema sinema | |||
| cocus kOky | |||
| couscous kuskus | |||
| delete _^_en | |||
| dengue dE~g | |||
| dernier dErnjer2 | |||
| doppler dOplEr | |||
| dot dOt | |||
| @@ -692,6 +706,7 @@ gus gys | |||
| gym Zim | |||
| han _|A~ | |||
| hélas elas $u+ | |||
| jackpot dZakpOt | |||
| jacques Zak | |||
| karaoke karaoke | |||
| kevin kevin | |||
| @@ -947,3 +962,4 @@ venezuela venezyEla | |||
| wallis walis | |||
| futuna futuna | |||
| zimbabwe zimbabwe | |||
| @@ -27,7 +27,7 @@ | |||
| // http://www.fluxnic.net/cicero | |||
| // | |||
| // Rules are now maintained by Michel Such <[email protected]> | |||
| // Last update: 2010-09-04 Michel Such <[email protected]> | |||
| // Last update: 2010-10-15 Michel Such <[email protected]> | |||
| // | |||
| // Letter classes: | |||
| @@ -37,7 +37,7 @@ | |||
| // K not a vowel (i.e. consonant, space, ) | |||
| .replace | |||
| œ oe | |||
| œ oe | |||
| .L01 d e l n r t u | |||
| @@ -63,7 +63,7 @@ | |||
| // When these diphtonges are after a consonant folllowing e, e is not mute | |||
| .L10 ia ie io ua ue ui uo | |||
| .L11 b p | |||
| .L12 é è al ib ie l om on ré | |||
| .L12 é è aï al ib ie l om on ré | |||
| // Words ending "son" pust sound english if preceded by L13 | |||
| .L13 d g k l p er hn | |||
| @@ -138,6 +138,7 @@ _C) aud (_ od // Maud | |||
| ay Ej // paye | |||
| ay (ak aj // kayak | |||
| ay (_ E // display | |||
| bb) aye (_ aj // cobbaye layer | |||
| Xl) ayer (X EjWr // player, layer | |||
| h) am (_S2 am | |||
| w) an (_ an | |||
| @@ -169,6 +170,7 @@ _) be (L15A _^_en | |||
| _) c (d se | |||
| _) ch (arism k // charisme, charismatique | |||
| _) ch (irop k // chiroptère | |||
| _) coe (la se // coelacante | |||
| a) ch (_ k // almanach | |||
| ar) c (ti // arctique | |||
| e) ch (_ k // varech | |||
| @@ -617,6 +619,7 @@ gu) eu (ler Y // gueuler | |||
| .group ë | |||
| u) ë // ambiguë | |||
| no) ë (_ e // canoë | |||
| ë E // citroën noël | |||
| @@ -936,6 +939,7 @@ _re) name _^_en | |||
| oi wa // poil | |||
| oê (l wa // poêle | |||
| om (L11 O~ // bombe, pompe | |||
| om (t O~ // comte | |||
| n) om (X O~ // nom | |||
| om (_ Om // www.web.com | |||
| @@ -1217,6 +1221,7 @@ L13) ston (_ _^_en | |||
| t (_ | |||
| peti) t (_ t2 | |||
| th (L12++ t | |||
| th (ArA++ t | |||
| or) th (++ t | |||
| _) th (erm t | |||
| ts (_S1 z2 // silent at end of word unless next word starts with a vowel | |||
| @@ -1358,6 +1363,7 @@ g) ton (_ _^_en // try, country | |||
| g) u (A // fatigue | |||
| g) u (ï y // ambiguïté | |||
| g) u (ë y // ambiguë | |||
| p) u (tsch u // putsch | |||
| uz (z W | |||
| // group u: English section | |||
| @@ -187,6 +187,7 @@ _#-ikának a:nAk | |||
| (1-ike) elseje $text $alt2 | |||
| (1-ikei) elsejei $text $alt2 | |||
| (1-éhez) elsejéhez $text $alt2 | |||
| (1-jét) elsejét $text $alt2 | |||
| (2-i) másodikai $text $alt2 | |||
| (2-ig) másodikáig $text $alt2 | |||
| (2-étől) másodikától $text $alt2 //this is not mistake, don't change! | |||
| @@ -236,6 +237,7 @@ _#-ikának a:nAk | |||
| (0-n) nul:a:n | |||
| (00-n) nul:Anul:a:n | |||
| (0-ról) nul:a:R2o:l | |||
| (0-st) nul:a:St | |||
| (1-gyet) EJ:Et | |||
| (1-gyes) EJ:ES | |||
| (2-őt) kEt:Y:t | |||
| @@ -282,6 +284,7 @@ _#-ikának a:nAk | |||
| (8-al) n^olts:Al | |||
| (9-el) kilEnts:El | |||
| (9-cel) kilEnts:El | |||
| (9-cet) kilEntsEt | |||
| _10e tiz | |||
| _20e hus | |||
| (10-szer) ti:s:ER2 | |||
| @@ -302,6 +305,8 @@ _20e hus | |||
| //Special roman number suffixes and exceptions | |||
| (XVI-ig) tizEnhAtodikig //Special roman number suffix exception | |||
| //following roman number examples need defining, but this examples are not working for example bigger than 20. | |||
| //Very interesting, if I using normal numbers (for example 12-el, Espeak general sending tizEnkEt:Y:vEl phoneme right. | |||
| (II-el) kEt:Y:vEl | |||
| (III-al) ha:R2om:Al | |||
| (IV-el) ne:J:El | |||
| @@ -310,6 +315,19 @@ _20e hus | |||
| (VII-el) he:t:El | |||
| (VIII-al) n^olts:Al | |||
| (IX-el) kilEnts:El | |||
| (X-el) ti:zzEl //I don't no why, but this exception is not working. | |||
| (XII-el) tizEnkEt:Y:vEl | |||
| (XIII-al) tizEnha:R2om:Al | |||
| (XIV-el) tizEnne:J:El //this is the right phoneme, not tizEnE:JEl | |||
| (XV-el) tizEnYt:El //this is the right phoneme, not tizEnYtEl | |||
| (XVI-al) tizEnhAt:Al //this is the right phoneme, not tizEnhAtAl | |||
| (XVII-el) tizEnhe:t:El | |||
| (XVIII-al) tizEnn^olts:Al | |||
| (XIX-el) tizEnkilEnts:El | |||
| (XX-al) hu:s:Al | |||
| XXX-al) hAR2mints:al | |||
| //etc, need do general rule similar with normal number exceptions, please test for example 22-el, 32-el, 42-el, 52-el, 40-el, 50-el, 60-al, 70-el etc | |||
| //phonemes if this is possible. | |||
| (CD-ellenőrzést) tse:de:El:EnY:R2ze:St //this is not a mistake, default Espeak spokening roman number before the ellenőrzés word | |||
| // These words mean that a dot after number, immediately preceding, does not mean an ordinal number | |||
| @@ -368,7 +386,6 @@ végén $alt | |||
| elején $alt | |||
| folyamán $alt | |||
| úton $alt | |||
| út $alt | |||
| // accent names | |||
| _lig ligAtu:R2A | |||
| @@ -424,7 +441,7 @@ LST ElESte: $allcaps | |||
| BAR bAR2 $allcaps | |||
| //SS EsEs $allcaps | |||
| (a . m .) An^n^i||m'int | |||
| (a . m .) An^n^i||m'int $hasdot | |||
| ún u:JnEvEzEt: $hasdot | |||
| dr doktoR2 $hasdot | |||
| mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word. | |||
| @@ -444,9 +461,9 @@ pl pe:lda:ul $hasdot | |||
| stb SAtYb:i $hasdot | |||
| u.n u:JnEvEzEt: $hasdot | |||
| ú.n u:JnEvEzEt: $hasdot | |||
| vö v'EZd||_'Yss2E | |||
| vö v'EZd||_'Yss2E $hasdot | |||
| (u . i .) $abbrew | |||
| NVDA Enve:de:A $allcaps | |||
| // Articles | |||
| @@ -551,6 +568,7 @@ nekem $unstressend | |||
| közül $unstressend | |||
| közé $unstressend | |||
| között $u $alt3 | |||
| környékén $alt3 | |||
| an $u // so many persons | |||
| as $u | |||
| ba $unstressend // into | |||
| @@ -707,7 +725,7 @@ jut $unstressend | |||
| legyen $unstressend | |||
| azt $unstressend | |||
| ezt $unstressend | |||
| út $unstressend | |||
| út $alt $unstressend | |||
| tiszt $unstressend | |||
| vesz $unstressend | |||
| cég $unstressend | |||
| @@ -1190,6 +1208,7 @@ szerzett $unstressend | |||
| járni $unstressend | |||
| döntöttek $unstressend | |||
| írt $unstressend | |||
| méltó $unstressend | |||
| // word pairs | |||
| @@ -1309,6 +1328,7 @@ _. pont | |||
| ~ tildE | |||
| ° fokjEl | |||
| Ft foR2int | |||
| (Ft-tal) foR2int:Al | |||
| \ bEks2lES $max3 | |||
| ^ fYlfEle:n^i:l | |||
| @@ -1434,3 +1454,17 @@ CD-m) cédém | |||
| (USA-ban) usában | |||
| (USA-ba) usába | |||
| (pc-n) pécén | |||
| (PC-s) pécés | |||
| //following entries are NVDA screen reader suffixes in hungarian | |||
| //normal NVDA abbreviation is defined $allcaps attribute, but if this abbrewiation is containing a suffix, need pronounce another hungarian word. | |||
| (NVDA-ba) envédéába | |||
| (NVDA-ban) envédéában | |||
| (NVDA-ból) envédéából | |||
| (NVDA-hoz) envédéához | |||
| (NVDA-nak) envédéának | |||
| (NVDA-s) envédéás | |||
| (NVDA-t) envédéát | |||
| (NVDA-tól) envédéától | |||
| (NVDA-val) envédéával | |||
| @@ -1,6 +1,7 @@ | |||
| // Hungarian translation rules | |||
| // This file is UTF-8 encoded | |||
| // ?1 change pronmunciation of foreign names, some users don't want these rules | |||
| .replace | |||
| // allow o,u-circumflex for o,u-double-acute | |||
| @@ -8,7 +9,6 @@ | |||
| û ű | |||
| .group a | |||
| a A | |||
| _) a (_ %A | |||
| @@ -33,21 +33,22 @@ | |||
| @) ben (_S3 bEn | |||
| biz (A biz, // bizalmas etc. | |||
| biedermeier bi:dER2ma:jER2 | |||
| ?1 biedermeier bi:dER2ma:jER2 | |||
| _) batthiány bAc:a:n^i | |||
| tö) bb (ször b | |||
| tö) bb (ség b | |||
| tö) bb (nyire b | |||
| tö) bb (nek b | |||
| tová) bbr (a bR2 | |||
| tö) bb (soro b | |||
| tö) bb (ny b | |||
| tö) bb (féle b | |||
| jo) bbr (a bR2 | |||
| tö) bbr (e bR2 | |||
| kise) bb (ség b | |||
| tö) bb (száz b | |||
| tö) bb (száz b | |||
| bb (f b //general rule if have two b and f letter, need spokening one b letter | |||
| bb (g b //if have two b and one g or gy letter, need spokening one b letter | |||
| bb (h b //if have two b and one h letter, need spokening one b letter | |||
| bb (j b //general rule if have two b and j letter, need spokening one b letter | |||
| bb (k b | |||
| bb (l b //general rule if have two b and l letter, need spokening one b letter | |||
| bb (m b //if have two b and one m letter, need spokening one b letter | |||
| bb (n b //general rule if have two b and n letter, need spokening one b letter | |||
| bbr bR2 //general rule if have two b and r letter, need spokening one b and one r letter | |||
| bb (s b //general rule if have two b and s or sz letter, need spokening one b letter | |||
| bb (t b //if have two b and one t letter, need spokening one b letter | |||
| bb (v b //general rule if have two b and v letter, need spokening one b letter | |||
| bb (w b //general rule if have two b and w letter, need spokening one b letter | |||
| bb (z b //general rule if have two b and z or zs letter, need spokening one b letter | |||
| .group c | |||
| c ts | |||
| @@ -66,12 +67,9 @@ | |||
| pol) c (so ts | |||
| por) c (sé ts | |||
| por) c (sz ts | |||
| _sto) ck (holm k | |||
| ?1 _sto) ck (holm k | |||
| har) c (csoport ts | |||
| lán) c (cs ts | |||
| _) colt kolt | |||
| _) coltt kolt: | |||
| _) coltj kolc | |||
| kudar) c (sorozat ts | |||
| gerin) c ts | |||
| tán) c (cs ts | |||
| @@ -98,7 +96,7 @@ hierar) ch (i h | |||
| te) ch h | |||
| pszi) ch h | |||
| pszy) ch h | |||
| mün) ch (en h | |||
| mün) ch (en C | |||
| maso) ch (istA h | |||
| monar) ch (i h | |||
| _pe) ch h: | |||
| @@ -122,6 +120,8 @@ oligar) ch h | |||
| dts tS: | |||
| dt t: | |||
| dtszé t:se: | |||
| dd (h d //if have two d and one h letter, need spokening one d letter | |||
| ddr dR2 //if have two d and one r letter, need spokening one d and one r letter | |||
| apró) d (sz d | |||
| dsz (_S3 ts: | |||
| beszé) d (szin d | |||
| @@ -158,7 +158,7 @@ oligar) ch h | |||
| min) dny n^ | |||
| ná) d d | |||
| ná) dd d: | |||
| diesel di:zEl | |||
| ?1 diesel di:zEl | |||
| hí) d (szerkezet d | |||
| dühvel dyvEl | |||
| epizó) d (szerep d | |||
| @@ -213,7 +213,6 @@ menetren) dsz (erű d|s | |||
| honvé) d (sereg d | |||
| va) d (szeder d | |||
| twee) d (sapk d | |||
| fe) dd (hetetlen d | |||
| ezre) d (segé d | |||
| erő) d (szerű d | |||
| csalá) d (szociol d | |||
| @@ -226,7 +225,16 @@ menetren) dsz (erű d|s | |||
| _hol) d (sarló d | |||
| mó) d (sor d | |||
| csalá) d (segít d | |||
| standar) d (jegy d | |||
| csen) d (sértés d | |||
| szaba) d (strand d | |||
| zöl) d (sáv d | |||
| csalá) d (jog d | |||
| szaba) d (szállás d | |||
| szaba) d (szombat d | |||
| ren) dsz (erintegráció ts | |||
| máso) d (szülött d | |||
| va) d (szój d | |||
| .group dz | |||
| fogó) dz (kod ts | |||
| @@ -268,6 +276,7 @@ pilóta) dzs (ek dZ | |||
| honvé) dz (ászló d|z | |||
| smarag) dz (öld d|z | |||
| kapáló) dz z | |||
| _ó) dz (ko ts | |||
| .group e | |||
| e E | |||
| @@ -304,20 +313,24 @@ kapáló) dz z | |||
| g g | |||
| gg g: | |||
| ggy J: | |||
| _) goethe gY:tE | |||
| _) goethé gY:te: | |||
| gg (b g //if have two g and one b letter, need spokening one g letter | |||
| gg (f g //if have two g and one f letter, need spokening one g letter | |||
| gg (h g //if have two g and one h letter, need spokening one g letter | |||
| gg (l g //if have two g and one l letter, need spokening one g letter | |||
| ggr gR2 //if have two g and r letter, need spokening one g and one r letter | |||
| gg (v g //if have two g and one v letter, need spokening one g letter | |||
| ?1 _) goeth gY:tE | |||
| me) g (gy g | |||
| me) ggy (fa J | |||
| me) ggy (piros J | |||
| me) ggy (vörös J | |||
| me) ggy (es J: | |||
| me) ggy (et J: | |||
| me) ggy (el J: | |||
| me) ggy (_S3 J: | |||
| me) ggy (szín J | |||
| le) g (gy g | |||
| orszá) g (gyűlés g | |||
| fü) gg (vény g | |||
| fo) g (gyűrű g | |||
| fo) g (gyö g | |||
| kuplun) g (gyár g | |||
| @@ -335,11 +348,13 @@ ritkasá) g (gyűjt g | |||
| vilá) g (gyűlöl g | |||
| gk k: | |||
| é) gh (ajla kh | |||
| se) gg (fe g | |||
| se) gg (be g | |||
| pro) g (gyak g | |||
| se) ggr (e gR2 | |||
| arcüre) g (gyulladás g | |||
| bete) g (gyógyász g | |||
| me) ggy (nek J: | |||
| szöve) g (gyűjt g | |||
| ta) g (gyűl g | |||
| gu) gg (ol g | |||
| .group gy | |||
| gy J | |||
| @@ -434,6 +449,13 @@ huszone) gy (edik J: | |||
| je) gy (ért J | |||
| harmince) gy (edik J: | |||
| étvá) gy (javít J | |||
| e) gy (ember J: | |||
| né) gy (jegy J | |||
| a) gy (sebész J | |||
| tár) gy (sorozat J | |||
| e) gy (jegyű J | |||
| tár) gy (jutal J | |||
| .group h | |||
| h h | |||
| @@ -444,7 +466,6 @@ harmince) gy (edik J: | |||
| i i | |||
| @) i (_S1 i | |||
| @) ig (_S2 ig | |||
| _) itthon ithon | |||
| .group í | |||
| í i: | |||
| @@ -499,11 +520,17 @@ harmince) gy (edik J: | |||
| kossutht koSu:t: | |||
| kossuthj koSu:c: | |||
| készségg ke:SSe:g: | |||
| _a) kk (reditál k | |||
| kk (b k //if have two k and b letter, need spokening one k letter | |||
| so) kk (b k: //an exception with need spokening longer k phoneme | |||
| kk (d k //if have two k and one d letter, need spokening one k letter | |||
| kk (f k //if have two k and f letter, need spokening one k letter | |||
| kk (h k k //if have two k and h letter, need spokening one k letter | |||
| kk (j k //if have two k and j letter, need spokening one k letter | |||
| kk (m k //if have two k and m letter, need spokening one k letter | |||
| kkr kR2 //if have two k and r letter, need spokening one k letter | |||
| kk (s k //if have two k and s or sz letter, need spokening one k letter | |||
| kk (t k //if have two k and t letter, need spokening one k letter | |||
| _) közt kYst | |||
| bara) kk (b k | |||
| bara) kk (f k | |||
| bara) kk (j k | |||
| .group l | |||
| l l | |||
| @@ -546,24 +573,23 @@ keresztü) l (j l | |||
| fe) l (javít l | |||
| fe) l (jogosít l | |||
| ökö) l (jog l: | |||
| ha) ll (gatom l | |||
| me) ll (kas l | |||
| inte) ll (ige l | |||
| e) ll (ipsz l | |||
| _) e) lj (ár lj | |||
| ha) ll (ga l | |||
| _ta) lj (án lj | |||
| _fé) l (jobb l | |||
| ll (b l //if have two l and b letter, need spokening one l letter | |||
| ll (d l //if have two l and d letter, need spokening one l letter | |||
| ll (g l //if have two l and a g or gy letter, need spokening one l letter | |||
| ll (h l //if have two l and h letter, need spokening one l letter | |||
| ll (k l //if have two l and k letter, need spokening one l letter | |||
| ll (n l //if have two l and n or ny letter, need spokening one l letter before the n or ny letter | |||
| ll (s l //if have two l letter and s or sz letter, need spokening one l letter | |||
| ll (t l //if have two l and a t letter, need spokening one l letter | |||
| .group m | |||
| m m | |||
| ko) mm (uni m | |||
| mauser mAuzER2 | |||
| mosquito moskito: | |||
| mosquitó moskito: | |||
| messerschmitt mEs:ER2Smit: | |||
| .group n | |||
| @@ -574,22 +600,32 @@ keresztü) l (j l | |||
| ny n^ | |||
| nny n^n^ | |||
| nj n^n^ | |||
| nny (cs n^ //if have two ny and cs letter, need spokening one ny letter | |||
| nny (d n^ //if have two nny and one d letter, need spokening one ny letter | |||
| nny (f n^ //if have two ny and one f letter, need spokening one ny letter | |||
| nny (g n^ //if have two ny and one g letter, need spokening one ny letter | |||
| nny (k n^ //if have two nny and one k letter, need spokening one ny letter | |||
| nny (t n^ //if have two nny and one t letter, need spokening one ny letter | |||
| nny (v n^ //if have two nny and one v letter, need spokening one n^ letter | |||
| nn (h n //if have two n and one h letter, need spokening one n letter | |||
| nn (k n //if have two n and one k letter, need spokening one k letter | |||
| nn (m n //if have two n and one m letter, need spokening one n letter | |||
| nn (l n //if have two n and one l letter, need spokening one l letter | |||
| nn (s n //if have two n and one s or sz letter, need spokening one n letter | |||
| nn (t n //if have two n and one t letter, need spokening one n letter | |||
| szí) n (ját n | |||
| szí) n (józan n | |||
| nyj n^n^ | |||
| _) 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 | |||
| ingye) n n | |||
| _) nylon nEjlon | |||
| sze) nny (víz n^ | |||
| ?1 _) nylon nEjlon | |||
| ajá) nlj j: | |||
| i) nny (ekció n^ | |||
| bű) n (jel n | |||
| @@ -613,8 +649,6 @@ tulajdo) n (jog n | |||
| fé) ny (jel n^ | |||
| i) nj (ekció n^ | |||
| elle) n (jegy n | |||
| fe) nn (tartás n | |||
| fe) nn (sík n | |||
| egye) n (jogú n | |||
| beto) n (járda n | |||
| verse) ny (jog n^ | |||
| @@ -626,12 +660,16 @@ teljesítmé) ny (javu n^ | |||
| _feddhetetle) n (jelle n | |||
| állomá) ny (jel n^ | |||
| ingatla) n (jog n | |||
| nyeremé) ny (játék n^ | |||
| botrá) ny (játék n^ | |||
| magá) nny (ugdíj nn^ //the nny letter pair this word not mean the double n^ phoneme, need spokening single the first n and n^ phoneme with this | |||
| //word. | |||
| alkotmá) ny (jog n^ | |||
| .group o | |||
| o o | |||
| otthon othon | |||
| oscar oska:R2 | |||
| .group ó | |||
| ó o: | |||
| @@ -648,7 +686,7 @@ ingatla) n (jog n | |||
| pp (C p: | |||
| p (v p_ | |||
| _) potsdam potsda:m | |||
| ?1 _) potsdam potsda:m | |||
| @@ -666,33 +704,31 @@ ingatla) n (jog n | |||
| r (r R | |||
| r (cc R | |||
| _) richa (rd R2iCa: | |||
| ?1 _) richa (rd R2iCa: | |||
| _) richá (rd R2iCa: | |||
| reichsmarschall R2EjsmAR2SAl: | |||
| i) rr (itá R2 | |||
| ko) rr (epetá R2 | |||
| .group s | |||
| s S | |||
| föld) s (ánc S | |||
| hel) s (inki z | |||
| ?1 hel) s (inki z | |||
| ki) s (ebb SS | |||
| _munká) s S | |||
| _nyílá) s S | |||
| _o) slo slo: | |||
| _o) sló slo: | |||
| ?1 _o) slo slo: | |||
| ?1 _o) sló slo: | |||
| tojá) s S | |||
| _) semmelweiss sEmmElvEjs | |||
| _) semmelweis sEmmElvEjs | |||
| _) semmelweiß sEmmElvEjs | |||
| engel) s s | |||
| _) saar sa:R2 | |||
| _wa) sh (ing S | |||
| ?1 _) saar sa:R2 | |||
| ?1 _wa) sh (ing S | |||
| pénze) s S | |||
| robbaná) s S | |||
| schmeisser SmEjsER2 | |||
| danubiu) s s //a radio station name | |||
| juventu) s s //a radio station name | |||
| ?1 danubiu) s s //a radio station name | |||
| ?1 juventu) s s //a radio station name | |||
| va) s (s S | |||
| óriá) s S | |||
| látá) s (zavar S | |||
| @@ -704,6 +740,8 @@ szennye) s (zsá S | |||
| magatartá) s (zavar S | |||
| erőforrá) s (zabál S | |||
| működé) s (zava S | |||
| viselkedé) s (zava S | |||
| alkalmazá) s (szerver S | |||
| .group ss | |||
| ssz ss2 | |||
| @@ -878,6 +916,8 @@ hirdeté) ssz (erve Ss | |||
| páncélo) ssz Ss | |||
| hajtá) ssz (erű Ss | |||
| sorva) ssz (ák s: | |||
| rendelteté) ssz (er Ss | |||
| klien) ssz (oft Ss | |||
| .group sz | |||
| sz s | |||
| @@ -909,6 +949,7 @@ rongyo) szs (ák SZ | |||
| para) sztsz (ek st|s | |||
| rava) sz (ár s | |||
| _ka) sztsze st|sE | |||
| szemete) szs (ák SZ | |||
| .group t | |||
| @@ -917,19 +958,26 @@ rongyo) szs (ák SZ | |||
| t t | |||
| tc ts: | |||
| tt t: | |||
| ttk t:k | |||
| tth t:h | |||
| ttk tk //if have two t and k letter, need spokening tk letter pair. | |||
| tth th //if have two t and h letter, need spokening th letter pair. | |||
| ttg t:g | |||
| ttgy t:J | |||
| ttp t:p | |||
| @) tól (_S3q to:l | |||
| @) től (_S3q tY:l | |||
| tt (C t: | |||
| ttn t:n | |||
| ttm t:m | |||
| ttl t:l | |||
| ttr t:R2 | |||
| ttv t:v | |||
| ttn tn //if have two t and n letter, need spokening one t and one n letter | |||
| képze) tt (nek t: //exception | |||
| terveze) tt (n t: //exception | |||
| ttm tm //if have two t letter and m letter, need spokening one t and one m letter | |||
| ttl tl //if have two t and l letter, need spokening one t and one l letter | |||
| sűríte) tt (le t: //special exception | |||
| o) tt (lét t: //special exception | |||
| ttr tR2 //if have two t and r letter, need spokening one t and one r letter | |||
| helyeze) tt (ről t: | |||
| ttv tv //if have two t and v letter, need spokening one t and one v letter | |||
| ty c | |||
| // s) ty c: // | |||
| // z) ty c: // keztyű | |||
| @@ -1025,7 +1073,6 @@ folyama) t (jel t | |||
| fron) t (jár t | |||
| á) t (söpör t | |||
| ala) tt (jár t: | |||
| fri) tz ts: | |||
| halo) tt (sápad t: | |||
| mi) t (se t | |||
| há) t (szél t | |||
| @@ -1135,7 +1182,13 @@ szerete) t (szolgálat t | |||
| ú) t (jelzés t | |||
| vizsgála) t (sor t | |||
| dagana) t (sej t | |||
| tábláza) t (sor t | |||
| tábláza) t (sor t | |||
| ben) t (szorul t | |||
| _á) t (jelentkez t | |||
| spor) t (szolgál t | |||
| üzle) t (sor t | |||
| tábláza) t (cell t | |||
| .group ts | |||
| ts (_S2 tS //general rule with word end of ts letters | |||
| @@ -1223,6 +1276,9 @@ indula) tsz (ó t|s | |||
| szemé) ts (ég tS: | |||
| ré) ts (ég tS: | |||
| já) tsz (ok ts: | |||
| álla) ts (ág tS: | |||
| köteleze) ts (ég tS: | |||
| kötö) ts (ég tS: | |||
| .group u | |||
| u u | |||
| @@ -1239,7 +1295,9 @@ szovjet) u (nió u: | |||
| ü y | |||
| ütt yt: | |||
| ütty yc: | |||
| egy) ütt (m yt | |||
| egy) ütt (l yt | |||
| egy) ütt (v yt | |||
| .group ű | |||
| ű y: | |||
| @@ -1250,11 +1308,10 @@ szovjet) u (nió u: | |||
| .group v | |||
| v v | |||
| _) v (_ ve: | |||
| _) versailles vER2sa:j | |||
| ?1 _) versailles vER2sa:j | |||
| .group w | |||
| w v | |||
| wehrmacht vER2mAht | |||
| .group x | |||
| _) x (_ iks | |||
| @@ -1320,7 +1377,7 @@ _szára) zs (ág SS | |||
| _nehé) zs (ely zS | |||
| _) zürich tsyR2iC | |||
| _) zürich tsyR2i C | |||
| vigyá) zz (ba z | |||
| vigyá) zz (t z | |||
| tí) zsz (er s: | |||
| @@ -27,6 +27,7 @@ | |||
| @) a (ggine_ 'a | |||
| _) ae (r aI | |||
| @) ano (_ %ano //ByFilo | |||
| @) avano (_S5 'avano | |||
| a (tterA_ 'a | |||
| @@ -8,6 +8,7 @@ | |||
| b be: | |||
| c se: | |||
| d de: | |||
| e e: | |||
| f Ef | |||
| g Qe: | |||
| h ha: | |||
| @@ -407,6 +408,7 @@ inkader $alt | |||
| jakker $alt | |||
| jammer $alt | |||
| joeker $alt | |||
| jonger $alt | |||
| kader $alt | |||
| kaffer $alt | |||
| kalefater $alt | |||
| @@ -770,11 +772,446 @@ vedette v@d'Et@ | |||
| violette $3 | |||
| wasserette $3 | |||
| // ending -el is stressed | |||
| isabel $3 | |||
| libel $2 | |||
| mirabel $3 | |||
| tabel $2 | |||
| // words ending in el, elt, elde, elden, elend, elende, eld, ele, elen | |||
| // with stress on the previous syllable | |||
| // adjectives | |||
| edel $alt | |||
| enkel $alt | |||
| gammel $alt | |||
| heikel $alt | |||
| ijdel $alt | |||
| jofel $alt | |||
| kregel $alt | |||
| kreupel $alt | |||
| luttel $alt | |||
| nobel $alt | |||
| nozel $alt | |||
| schamel $alt | |||
| sensibel $alt | |||
| simpel $alt | |||
| sjofel $alt | |||
| soepel $alt | |||
| troebel $alt | |||
| vermetel $alt | |||
| // nouns | |||
| amandel $alt | |||
| appel $alt | |||
| artikel $alt | |||
| beginsel $alt | |||
| discipel dIs'ip@l $alt | |||
| engel $alt | |||
| fabel $alt | |||
| gruwel $alt | |||
| heuvel $alt | |||
| letsel $alt | |||
| mazel $alt | |||
| meubel $alt | |||
| middel $alt | |||
| mirakel $alt | |||
| mossel $alt | |||
| parabel $alt | |||
| perikel pe:r'ik@l $alt | |||
| raadsel $alt | |||
| roersel $alt | |||
| schepsel $alt | |||
| schijnsel $alt | |||
| stoppel $alt | |||
| zemel $alt | |||
| // verbs | |||
| aarzel $alt | |||
| adel $alt | |||
| angel $alt | |||
| babbel $alt | |||
| barrel $alt | |||
| bazel $alt | |||
| bedel be:d@l $alt | |||
| beitel $alt | |||
| bengel $alt | |||
| beugel $alt | |||
| beuzel $alt | |||
| biggel $alt | |||
| bikkel $alt | |||
| bobbel $alt | |||
| bochel $alt | |||
| boemel $alt | |||
| borrel $alt | |||
| borstel $alt | |||
| bottel $alt | |||
| brabbel $alt | |||
| breidel $alt | |||
| broddel $alt | |||
| brokkel $alt | |||
| bubbel $alt | |||
| buffel $alt | |||
| buitel $alt | |||
| bundel $alt | |||
| bungel $alt | |||
| bussel $alt | |||
| cirkel $alt | |||
| dartel $alt | |||
| diggel $alt | |||
| dissel $alt | |||
| dobbel $alt | |||
| doezel $alt | |||
| dommel $alt | |||
| dompel $alt | |||
| dremmel $alt | |||
| drentel $alt | |||
| dreutel $alt | |||
| drevel $alt | |||
| dribbel $alt | |||
| droppel $alt | |||
| druppel $alt | |||
| dubbel $alt | |||
| duikel $alt | |||
| duimel $alt | |||
| duivel $alt | |||
| duizel $alt | |||
| duvel $alt | |||
| dwarrel $alt | |||
| eikel $alt | |||
| fakkel $alt | |||
| fezel $alt | |||
| fiedel $alt | |||
| foefel $alt | |||
| foezel $alt | |||
| fonkel $alt | |||
| friemel $alt | |||
| frommel $alt | |||
| frummel $alt | |||
| frutsel $alt | |||
| futsel $alt | |||
| gaffel $alt | |||
| gesel Qe:s@l $alt | |||
| giebel $alt | |||
| giechel $alt | |||
| gijzel $alt | |||
| gispel $alt | |||
| gniffel $alt | |||
| goochel $alt | |||
| gorgel $alt | |||
| grabbel $alt | |||
| grendel $alt | |||
| greppel $alt | |||
| griezel $alt | |||
| griffel $alt | |||
| gruizel $alt | |||
| guichel $alt | |||
| hachel $alt | |||
| hagel $alt | |||
| hakkel $alt | |||
| haksel $alt | |||
| handel $alt | |||
| haspel $alt | |||
| heibel $alt | |||
| hekel $alt | |||
| hemel $alt | |||
| hengel $alt | |||
| hevel $alt | |||
| hinkel $alt | |||
| hobbel $alt | |||
| hoepel $alt | |||
| hompel $alt | |||
| huichel $alt | |||
| huikel $alt | |||
| huppel $alt | |||
| hussel $alt | |||
| hutsel $alt | |||
| ijzel $alt | |||
| jengel $alt | |||
| jodel $alt | |||
| joekel $alt | |||
| jubel $alt | |||
| kabbel $alt | |||
| kabel $alt | |||
| kachel $alt | |||
| kakel $alt | |||
| kantel $alt | |||
| kapittel $alt | |||
| kapsel $alt | |||
| karbonkel $alt | |||
| kartel $alt | |||
| kavel $alt | |||
| kegel $alt | |||
| ketel $alt | |||
| keutel $alt | |||
| keuvel $alt | |||
| kevel $alt | |||
| kibbel $alt | |||
| kietel $alt | |||
| kinkel $alt | |||
| kittel $alt | |||
| klepel $alt | |||
| klingel $alt | |||
| klippel $alt | |||
| klungel $alt | |||
| knabbel $alt | |||
| kneukel $alt | |||
| knevel $alt | |||
| knibbel $alt | |||
| knobbel $alt | |||
| knokel $alt | |||
| knuffel $alt | |||
| knuppel $alt | |||
| knutsel $alt | |||
| koepel $alt | |||
| kogel $alt | |||
| konkel $alt | |||
| koppel $alt | |||
| korrel $alt | |||
| krabbel $alt | |||
| krauwel $alt | |||
| krengel $alt | |||
| kreukel $alt | |||
| kribbel $alt | |||
| kriebel $alt | |||
| kringel $alt | |||
| krinkel $alt | |||
| kroezel $alt | |||
| kronkel $alt | |||
| kruimel $alt | |||
| kukel $alt | |||
| kunstel $alt | |||
| kwabbel $alt | |||
| kwakkel $alt | |||
| kwansel $alt | |||
| kwartel $alt | |||
| kwebbel $alt | |||
| kwezel $alt | |||
| kwispel $alt | |||
| label le:b@l $alt | |||
| lepel $alt | |||
| lispel $alt | |||
| lummel $alt | |||
| mangel $alt | |||
| martel $alt | |||
| mazzel $alt | |||
| mengel $alt | |||
| mergel $alt | |||
| metsel $alt | |||
| mispel $alt | |||
| moffel $alt | |||
| mommel $alt | |||
| monkel $alt | |||
| morrel $alt | |||
| mummel $alt | |||
| murmel $alt | |||
| nachel $alt | |||
| nagel $alt | |||
| nestel $alt | |||
| netel $alt | |||
| neutel $alt | |||
| neuzel $alt | |||
| nevel $alt | |||
| nikkel $alt | |||
| orakel $alt | |||
| paddel pEd@l $alt | |||
| pantoffel $alt | |||
| parel $alt | |||
| pegel $alt | |||
| pekel $alt | |||
| pendel $alt | |||
| peuzel $alt | |||
| piemel $alt | |||
| piepel $alt | |||
| pimpel $alt | |||
| pingel $alt | |||
| pinkel $alt | |||
| poedel $alt | |||
| poekel $alt | |||
| popel $alt | |||
| prevel $alt | |||
| priegel $alt | |||
| prikkel $alt | |||
| pruttel $alt | |||
| puzzel $alt | |||
| rafel $alt | |||
| raffel $alt | |||
| rakel $alt | |||
| rammel $alt | |||
| ransel $alt | |||
| ratel $alt | |||
| rebbel $alt | |||
| regel $alt | |||
| reutel $alt | |||
| reuzel $alt | |||
| ribbel $alt | |||
| riffel $alt | |||
| rijmel $alt | |||
| rimpel $alt | |||
| ringel $alt | |||
| rinkel $alt | |||
| ritsel $alt | |||
| rochel $alt | |||
| roddel $alt | |||
| rodel $alt | |||
| roefel $alt | |||
| roffel $alt | |||
| rommel $alt | |||
| rompel $alt | |||
| ronsel $alt | |||
| sabbel $alt | |||
| sabel $alt | |||
| sappel $alt | |||
| schakel $alt | |||
| scharminkel $alt | |||
| scharrel $alt | |||
| schimmel $alt | |||
| schnabbel $alt | |||
| schoffel $alt | |||
| schommel $alt | |||
| schotel $alt | |||
| schrikkel $alt | |||
| schrompel $alt | |||
| schuifel $alt | |||
| scrabbel skrEb@l $alt | |||
| settel $alt | |||
| shuffel S8f@l | |||
| shuttel S8t@l | |||
| siepel $alt | |||
| sijpel $alt | |||
| sikkel $alt | |||
| singel $alt | |||
| sjoemel $alt | |||
| sleutel $alt | |||
| slungel $alt | |||
| smiespel $alt | |||
| smikkel $alt | |||
| smispel $alt | |||
| smoezel $alt | |||
| smokkel $alt | |||
| snabbel $alt | |||
| sneuvel $alt | |||
| snoezel $alt | |||
| snorkel $alt | |||
| snuffel $alt | |||
| spartel $alt | |||
| spiegel $alt | |||
| spijbel $alt | |||
| spikkel $alt | |||
| sprankel $alt | |||
| sprenkel $alt | |||
| sprokkel $alt | |||
| staffel $alt | |||
| stamel $alt | |||
| stapel $alt | |||
| stechel $alt | |||
| steggel $alt | |||
| stempel $alt | |||
| stiefel $alt | |||
| stijfsel $alt | |||
| stippel $alt | |||
| stommel $alt | |||
| strengel $alt | |||
| stribbel $alt | |||
| strompel $alt | |||
| strubbel $alt | |||
| struikel $alt | |||
| stuntel $alt | |||
| suizel $alt | |||
| sukkel $alt | |||
| swaffel $alt | |||
| tackel tEk@l | |||
| tafel $alt | |||
| takel $alt | |||
| tegel $alt | |||
| tempel $alt | |||
| teugel $alt | |||
| teutel $alt | |||
| tichel $alt | |||
| tingel $alt | |||
| tinkel $alt | |||
| tintel $alt | |||
| tippel $alt | |||
| titel $alt | |||
| tokkel $alt | |||
| tortel $alt | |||
| trappel $alt | |||
| treuzel $alt | |||
| trippel $alt | |||
| troetel $alt | |||
| troggel $alt | |||
| trommel $alt | |||
| tuimel $alt | |||
| tunnel $alt | |||
| tuttel $alt | |||
| twijfel $alt | |||
| twinkel $alt | |||
| vendel $alt | |||
| vezel $alt | |||
| vijzel $alt | |||
| vlegel $alt | |||
| vleugel $alt | |||
| vogel $alt | |||
| wafel $alt | |||
| waffel $alt | |||
| waggel $alt | |||
| wakkel $alt | |||
| wandel $alt | |||
| wankel $alt | |||
| warrel $alt | |||
| wauwel $alt | |||
| weifel $alt | |||
| wemel $alt | |||
| wentel $alt | |||
| wervel $alt | |||
| wichel $alt | |||
| wiebel $alt | |||
| wiegel $alt | |||
| wiemel $alt | |||
| wikkel $alt | |||
| wimpel $alt | |||
| winkel $alt | |||
| wissel $alt | |||
| worstel $alt | |||
| wortel $alt | |||
| wriemel $alt | |||
| zabbel $alt | |||
| zadel $alt | |||
| zamel $alt | |||
| zegel $alt | |||
| zetel $alt | |||
| zoedel $alt | |||
| zwachtel $alt | |||
| zwavel $alt | |||
| zwendel $alt | |||
| zwengel $alt | |||
| zwiebel $alt | |||
| zwijmel $alt | |||
| // -s is not plural | |||
| chaos xa:Os | |||
| beiaard b'EIa:rt | |||
| boomgaard $1 | |||
| dronkaard $1 | |||
| gierigaard $1 | |||
| grijsaard $1 | |||
| gulzigaard $1 | |||
| lafaard $1 | |||
| slechtaard $1 | |||
| snoodaard $1 | |||
| standaard $1 | |||
| valsaard $1 | |||
| woestaard $1 | |||
| // pronunciation exceptions | |||
| aangrijpend $2 | |||
| accessoires aksEsw'ar@s | |||
| actiepunt Aksip8nt | |||
| agenda $2 | |||
| amino $1 | |||
| amnestie $3 | |||
| boudoir budv#'a:r | |||
| bourgondier burx'o:ndi:@r | |||
| circuit sIrku'i | |||
| chalet Sa:lE | |||
| @@ -797,6 +1234,9 @@ ingevolge $3 | |||
| ingrediënt $4 | |||
| ingenieur Inzj@nj'Y:r | |||
| journaal Surn'a:l | |||
| maxima $1 | |||
| meteen mEt'e:n | |||
| minima $1 | |||
| ongastvrij OnQAstv@-*'EI | |||
| ongelooflijk $3 | |||
| ongemakkelijk $3 | |||
| @@ -805,7 +1245,9 @@ ongerieflijk $3 | |||
| ongrondwettig $3 | |||
| proces $2 | |||
| renaissance rEne:s'A~s@ | |||
| reservoir re:zErvv#'a:r | |||
| sacristie $3 | |||
| salomo $1 | |||
| tegenaan $3 | |||
| tegenin $3 | |||
| tegenover $3 | |||
| @@ -814,6 +1256,7 @@ tegennatuur $4 | |||
| tegenstrijdig $3 | |||
| tegenwoordig $3 | |||
| travestie $3 | |||
| verderop $3 | |||
| waarschijnlijk $2 | |||
| @@ -825,3 +1268,6 @@ Ingeborg INe:bOrx | |||
| Ingmar INmAr | |||
| Ingrid IN@-*It | |||
| kennedy kEn@dE | |||
| // places | |||
| canada $1 | |||
| @@ -10,14 +10,19 @@ | |||
| au VU | |||
| ay a:j | |||
| @@C) a (_ =a: | |||
| _) aan (@P3 'a:n | |||
| aa (rd_ 'a: | |||
| aa (t_ 'a: | |||
| aa (C_ 'a: | |||
| @) abel (_ 'a:bE2l | |||
| @) abele (_ 'a:b@l@ | |||
| _) af (C@P2 'Af | |||
| age (_ 'a:Z@ | |||
| ages (_S1 s | |||
| age (_$w_alt a:Q@ | |||
| aire (_ 'E:r | |||
| air (_ 'Er | |||
| ale (_ 'a:l@ | |||
| @) ant (_ 'Ant | |||
| @) a (de_ 'a: | |||
| @@ -33,12 +38,18 @@ | |||
| _) be (@P2 b@ | |||
| _) b (ee+ b | |||
| _) be (ren bI: | |||
| _) be (rm bE | |||
| _) be (stia bE | |||
| _) be (ter be: | |||
| _) be (ven_ be: | |||
| _) bever be:v@r | |||
| _) be (zem be: | |||
| _) bezig be:z@x | |||
| _) beu bY: | |||
| _) bij (C@P3 b'EI | |||
| _) bureau byr'o: | |||
| _) buurt (@@P5 b'yrt // buurtbewoner | |||
| .group c | |||
| @@ -68,6 +79,10 @@ | |||
| _) ch (or x | |||
| _) ch (r x | |||
| &) che (_ =S | |||
| ci (a S | |||
| @) ci (eel S | |||
| @) ci (ë S | |||
| ci (o S | |||
| ck k | |||
| cieel S'e:l | |||
| ciële S'e:l@ | |||
| @@ -104,9 +119,18 @@ | |||
| @) ee (rde_ 'I: | |||
| @) ee (rden_ 'I: | |||
| it) eit (_ 'EIt | |||
| &) el (_ @l | |||
| &) el (_ E2l | |||
| &) eld (_ @ld | |||
| &) ele (_ 'e:l@ | |||
| &) el (_$p_alt =@l | |||
| &) el (e_$p_alt =@l | |||
| &) el (en_$p_alt =@l | |||
| &) el (t_$p_alt =@l | |||
| &) el (de_$p_alt =@l | |||
| &) el (den_$p_alt =@l | |||
| &) el (end_$p_alt =@l | |||
| &) em (_ @m | |||
| &) en (_S2qd @n | |||
| &) ens (_S3q @ns | |||
| @@ -121,10 +145,11 @@ | |||
| @) etten (_S3 @n | |||
| @) eur (_ 'Y:r | |||
| _) er (@P2 Er | |||
| @) e (raar_ @ | |||
| &) e (nB@ E2 | |||
| id) e (nt E | |||
| _) er (@P2 Er | |||
| &) era (_ @ra: | |||
| @) e (raar_ @ | |||
| &) e (rC@ E2 | |||
| @@ -142,6 +167,7 @@ | |||
| _) gee Qe: | |||
| gener (aal Q,e:n@r | |||
| gelijk Q@lEIk | |||
| _) ge (rC QE | |||
| _) geu QY: | |||
| _) ge (ven Qe: | |||
| _) ge (ving Qe: | |||
| @@ -168,17 +194,23 @@ | |||
| m) ie (_ 'i | |||
| p) ie (_ 'i | |||
| @) ibel (_ 'ib@l | |||
| @) ibele (_ 'ib@l@ | |||
| &) ica (_ =ika: | |||
| &) ico (_ =iko: | |||
| ie (X 'i | |||
| ie (rd_ 'i | |||
| @) ig (_S2d @x | |||
| @) ig (_S2dq @x | |||
| @) ige (_ @Q@ | |||
| @) ij (n_ 'EI | |||
| &) ika (_ =ika: | |||
| &) iko (_ =iko: | |||
| _) in (C@P2 'In | |||
| // _) in (gP2 'In | |||
| io (nage iO | |||
| @) isch (_ =is | |||
| @) ische (_ =is@ | |||
| @) isme (_ 'Ism@ | |||
| @) ist (_ 'Ist | |||
| @@ -203,11 +235,12 @@ | |||
| @) loog (_ lo:x | |||
| .group m | |||
| m m | |||
| m) m | |||
| manage (ment ma:nIdZ | |||
| management ma:nIdZm@nt | |||
| _) mee (@P3 m'e: | |||
| @@ -216,8 +249,10 @@ | |||
| n) n | |||
| ng N | |||
| nj n^ | |||
| n (kel N | |||
| _) na (C@@P2 n'a: | |||
| _) na (tion na: | |||
| .group o | |||
| @@ -233,10 +268,15 @@ | |||
| ou VU | |||
| ou (rage u | |||
| @@C) o (_ =o: | |||
| oe (X_ 'u | |||
| oir (_ 'v#a:r | |||
| oo (X 'o: | |||
| telef) oo (n 'o: | |||
| _) op (@@P2 'Op | |||
| _) open (@P4 'o:p@n | |||
| _) op (era 'o:p | |||
| _) op (tion Op | |||
| _) over (@P4 'o:v@r | |||
| @@ -271,6 +311,9 @@ | |||
| _) ph f | |||
| ph (K f | |||
| _) politie (@ po:l'itsi | |||
| .group q | |||
| q k | |||
| @@ -282,8 +325,8 @@ | |||
| .group r | |||
| r r | |||
| A) r (A * | |||
| C) r (A @-* | |||
| A) r (A r | |||
| C) r (A r | |||
| rr *r | |||
| .group re | |||
| @@ -292,19 +335,28 @@ | |||
| _) re (cent r@ | |||
| _) re (cept r@ | |||
| _) re (ceptief re: | |||
| _) re (clam r@ | |||
| _) re (serve_ r@ | |||
| .group s | |||
| s s | |||
| s) s | |||
| A) s (A z | |||
| sch sx | |||
| sch (_ s | |||
| sch (e_ s | |||
| _) sch (n S | |||
| _) sh S | |||
| sh (K S | |||
| sj S | |||
| @@) s (_S1 s | |||
| @) si (o S | |||
| A) si (o Z | |||
| @) ssi (o S | |||
| _) standaard (@P9 st'Anda:rt | |||
| .group t | |||
| t t | |||
| @@ -315,6 +367,12 @@ | |||
| p) tie (_ =si | |||
| s) tie (_ =ti | |||
| cra) tie (_ ts'i | |||
| tiee (l_ S'e: | |||
| tië (le_ S'e: | |||
| @) ti (a S | |||
| @) ti (ë S | |||
| @) ti (on S | |||
| s) t (i++ t | |||
| tj t; | |||
| tsj tS | |||
| _) th t | |||
| @@ -325,6 +383,7 @@ | |||
| _) team t'i:m | |||
| team (_ ti:m | |||
| _) train tre:n | |||
| .group te | |||
| _) tegen (P5 t'e:Q@n | |||
| @@ -368,7 +427,7 @@ | |||
| _) ver (@P3 v@r | |||
| _) ver (sie_ vEr | |||
| _) ver (der_ vEr | |||
| _) verder vErd@r | |||
| _) voort (@P5 v'O:rt | |||
| @@ -42,10 +42,10 @@ _4 f'i:RE | |||
| _5 f'Em | |||
| _6 s'Eks | |||
| _7 S'u-: | |||
| _8 'Ot:@2 | |||
| _8 'Ot:a# | |||
| _9 n'i: | |||
| _10 t'i: | |||
| _11 'Elv@2 | |||
| _11 'Elva# | |||
| _12 t'Olv | |||
| _13 tR'Et:@n | |||
| _14 fj'URt@n | |||
| @@ -54,7 +54,7 @@ _16 s'Ekst@n | |||
| _17 s'yt:@n | |||
| _18 'At:@n | |||
| _19 n'It:@n | |||
| _2X s;'u-:@2 | |||
| _2X s;'u-:a# | |||
| _3X tR'Et:i: | |||
| _4X f'Y:Rti: | |||
| _5X f'Emti: | |||
| @@ -62,8 +62,8 @@ _6X s'Eksti: | |||
| _7X s'yt:i: | |||
| _8X 'Ot:i: | |||
| _9X n'It:i: | |||
| _0C h'u-ndR@2 | |||
| _1C 'Et||h'u-ndR@2 | |||
| _0C h'u-ndRa# | |||
| _1C 'Et||h'u-ndRa# | |||
| _0M1 t'u-:s@n | |||
| _1M1 'Et||t'u-:s@n | |||
| _0M2 m'Illi:;,u:n@R | |||
| @@ -73,32 +73,32 @@ _0and u:g | |||
| _dpt kOmmA | |||
| // ordinal numbers | |||
| _ord @nd@2 | |||
| _1o f'WRst@2 | |||
| _2o 'AndR@2 | |||
| _3o tR'Edj@2 | |||
| _4o fj'a:R@2 | |||
| _5o f'Emt@2 | |||
| _6o S'Et:@2 | |||
| _8o 'Ot:@nd@2 | |||
| _11o 'EllEvt@2 | |||
| _12o t'Olvt@2 | |||
| _13o tR'Et:@nd@2 | |||
| _14o fj'URt@md@2 | |||
| _15o f'Emt@nd@2 | |||
| _16o s'Ekst@nd@2 | |||
| _17o s'yt:@nd@2 | |||
| _18o 'At:@nd@2 | |||
| _19o n'It:@nd@2 | |||
| _2Xo s;'u-:@nd@2 | |||
| _0Co h'u-ndR@d@2 | |||
| _0M1o t'u-:s@nd@2 | |||
| _ord @nda# | |||
| _1o f'WRsta# | |||
| _2o 'AndRa# | |||
| _3o tR'Edja# | |||
| _4o fj'a:Ra# | |||
| _5o f'Emta# | |||
| _6o S'Et:a# | |||
| _8o 'Ot:@nda# | |||
| _11o 'EllEvta# | |||
| _12o t'Olvta# | |||
| _13o tR'Et:@nda# | |||
| _14o fj'URt@mda# | |||
| _15o f'Emt@nda# | |||
| _16o s'Ekst@nda# | |||
| _17o s'yt:@nda# | |||
| _18o 'At:@nda# | |||
| _19o n'It:@nda# | |||
| _2Xo s;'u-:@nda# | |||
| _0Co h'u-ndR@da# | |||
| _0M1o t'u-:s@nda# | |||
| // punctuation and symbols | |||
| //======================== | |||
| * ss;aRn@2 $max3 | |||
| * ss;aRna# $max3 | |||
| = aRli:k $max3 | |||
| + plu-s $max3 | |||
| % pR'u:s'Ent $max3 | |||
| @@ -113,20 +113,20 @@ _$ dOllA:R | |||
| _' ApUstR'u:f | |||
| _( paRaNt'e:s||b@j'ynn@R | |||
| _) paRaNt'e:s||Sl'u-t: | |||
| _* ss;aRn@2 | |||
| _* ss;aRna# | |||
| _, kOmmA | |||
| _- stRe:k | |||
| _. pu-Nktu-:m | |||
| _: ku:lOn | |||
| _; se:mi:ku:lOn | |||
| _< mIndR@2||En | |||
| _< mIndRa#||En | |||
| _= aRli:k | |||
| _> stWR@||En | |||
| _? spWRSmOlstENn | |||
| @ kRWllAlfA | |||
| _[ v'EnstR@2||h'A:ke:paRaNt'e:s | |||
| _[ v'EnstRa#||h'A:ke:paRaNt'e:s | |||
| _\ OmvEndt||skROstR@k | |||
| _] h'YyR@2||h'A:ke:paRaNt'e:s | |||
| _] h'YyRa#||h'A:ke:paRaNt'e:s | |||
| ^ sIRku-mflEks | |||
| __ u-ndaRStR@k | |||
| _` 'OmvEndt||ApUstR'u:f | |||
| @@ -135,11 +135,11 @@ _#09 tA:b | |||
| _#32 mEllOmRu:m | |||
| _acu A:'ku-t: | |||
| _ced s'e:dIll@2 | |||
| _ced s'e:dIlla# | |||
| _cir s'IRku-mflEks | |||
| _dia tR'e:mA | |||
| _grv gR'A:vi:s | |||
| _tld t'Ild@2 | |||
| _tld t'Ilda# | |||
| é $accent | |||
| ü $accent | |||
| @@ -296,7 +296,7 @@ reader _^_EN | |||
| cancel _^_EN | |||
| continue _^_EN | |||
| magnifier _^_EN | |||
| and @2nd $only | |||
| and a#nd $only | |||
| // MAIN WORD DICTIONARY | |||
| @@ -306,7 +306,7 @@ der dE:R | |||
| her hE:R | |||
| kom kOm | |||
| loe lu: $capital | |||
| noe nU:@2 | |||
| noe nU:a# | |||
| noen nU:@n // no+en | |||
| office Offi:s | |||
| system syst'e:m | |||
| @@ -1,221 +1,227 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling-to-phoneme rules for Norwegian | |||
| // C% indicates a double consonant (same letter twice) | |||
| // First version by Jonathan Duddington | |||
| // October 2010 improvements by Eirini Florou <[email protected]> | |||
| .group a | |||
| a A: | |||
| a (CC A | |||
| a (_ A | |||
| a A: | |||
| a (CC A | |||
| a (C a | |||
| a (_ A | |||
| // X) a (CCK A // single syllable with >= 2 final consonants | |||
| // // or initial syllable with 3 consonants | |||
| ai AI | |||
| au aU | |||
| ai AI | |||
| au aU | |||
| aa o: // å | |||
| aa (CC O | |||
| ae a: // æ | |||
| ae (CC a | |||
| aa o: // å | |||
| aa (CC O | |||
| ae a: // æ | |||
| ae (CC a | |||
| .group b | |||
| b b | |||
| bb b: | |||
| b b | |||
| bb b: | |||
| _) be (@ b@ | |||
| _) be (@ b@ | |||
| .group c | |||
| c k | |||
| cc k: | |||
| _) c (e s | |||
| c (i s | |||
| c (y s | |||
| c (ei s | |||
| c (øy s | |||
| ch S | |||
| c k | |||
| cc k: | |||
| _) c (e s | |||
| c (i s | |||
| c (y s | |||
| c (ei s | |||
| c (øy s | |||
| ch S | |||
| .group d | |||
| d d | |||
| dd d: | |||
| r) d (_ | |||
| &) det (_ d@2 | |||
| d d | |||
| dd d: | |||
| r) d (_ | |||
| &) det (_ da# | |||
| .group e | |||
| e e: | |||
| e (CC E | |||
| ei aI | |||
| e (rC a // ?? | |||
| &) e (_ @2 | |||
| &) e (C_ @ | |||
| X) e (m_ E | |||
| &) en (_ @n | |||
| &) ene (_ En@2 // @n@2 ?? | |||
| &) ens (_ @ns | |||
| &) es (_ @s | |||
| &) et (_ @t | |||
| e e: | |||
| e (CC E | |||
| ei aI | |||
| e (rC a // ?? | |||
| &) e (_ a# | |||
| &) e (C_ @ | |||
| X) e (m_ E | |||
| &) en (_ @n | |||
| &) ene (_ Ena# // @na# ?? | |||
| &) ens (_ @ns | |||
| &) es (_ @s | |||
| &) et (_ @t | |||
| .group f | |||
| f f | |||
| f f | |||
| .group g | |||
| g g | |||
| gg g: | |||
| g (n N | |||
| gj j | |||
| g (i j | |||
| g (y j | |||
| g (ei j | |||
| g (øy j | |||
| g g | |||
| gg g: | |||
| g (n N | |||
| gj j | |||
| g (i j | |||
| g (y j | |||
| g (ei j | |||
| g (øy j | |||
| .group h | |||
| h h | |||
| hj j | |||
| hv v | |||
| h h | |||
| hj j | |||
| hv v | |||
| .group i | |||
| i i: | |||
| i (CC I | |||
| &) ig (_ I | |||
| i i: | |||
| i (CC I | |||
| &) ig (_ I | |||
| .group j | |||
| j j | |||
| j j | |||
| .group k | |||
| k k | |||
| kk k: | |||
| kj x | |||
| k (i x | |||
| k (y x | |||
| k (ei x | |||
| k (øy x | |||
| k k | |||
| kk k: | |||
| kj x | |||
| k (i x | |||
| k (y x | |||
| k (ei x | |||
| k (øy x | |||
| .group l | |||
| l l | |||
| ll (K l | |||
| lj j | |||
| l l | |||
| ll (K l | |||
| lj j | |||
| ld ll | |||
| .group m | |||
| m m | |||
| mm (K m | |||
| m m | |||
| mm (K m | |||
| .group n | |||
| n n | |||
| nn (K n | |||
| ng N | |||
| n (k N | |||
| n n | |||
| nn (K n | |||
| ng N | |||
| n (k N | |||
| nd nn | |||
| .group o | |||
| o u: | |||
| o (CC O | |||
| oi OI | |||
| o u: | |||
| o (CC O | |||
| oi OI | |||
| oe O@2 | |||
| @b) oe (_ u: | |||
| oe Oa# | |||
| @b) oe (_ u: | |||
| o (nd U | |||
| o (rt U | |||
| b) o (rd u: | |||
| o (st U | |||
| o (nd U | |||
| o (rt U | |||
| b) o (rd u: | |||
| o (st U | |||
| .group p | |||
| p p | |||
| pp p: | |||
| p p | |||
| pp p: | |||
| .group q | |||
| q k | |||
| qq k: | |||
| qu kw | |||
| q k | |||
| qq k: | |||
| qu kw | |||
| .group r | |||
| r R | |||
| rs (_ S | |||
| r R | |||
| rs (_ S | |||
| .group s | |||
| s s | |||
| ss ss | |||
| ss (_ s | |||
| sch S | |||
| sj S | |||
| skj S | |||
| sk (i S | |||
| sk (y S | |||
| sk (ei S | |||
| sk (øy S | |||
| r) s S | |||
| s (l S | |||
| A) s (lA s | |||
| s s | |||
| ss ss | |||
| ss (_ s | |||
| sch S | |||
| sj S | |||
| skj S | |||
| sk (i S | |||
| sk (y S | |||
| sk (ei S | |||
| sk (øy S | |||
| r) s S | |||
| s (l S | |||
| A) s (lA s | |||
| .group t | |||
| t t | |||
| tt t: | |||
| ti (on S | |||
| tj s; | |||
| t t | |||
| tt t: | |||
| ti (on S | |||
| tj s; | |||
| .group u | |||
| u u-: | |||
| u (CC u- | |||
| ui u-I | |||
| u u-: | |||
| u (CC u- | |||
| ui u-I | |||
| .group v | |||
| v v | |||
| vv (_ v | |||
| v v | |||
| vv (_ v | |||
| .group w | |||
| w v | |||
| w v | |||
| .group x | |||
| x ks | |||
| x (x | |||
| x ks | |||
| x (x | |||
| _) x s | |||
| .group y | |||
| y y: | |||
| y (CC y | |||
| y y: | |||
| y (CC y | |||
| .group z | |||
| z s | |||
| zz z | |||
| zz (_ z | |||
| z s | |||
| zz z | |||
| zz (_ z | |||
| .group å | |||
| å o: | |||
| åe o:@2 | |||
| å (CC O | |||
| å o: | |||
| åe o:a# | |||
| å (CC O | |||
| .group æ | |||
| æ E: | |||
| æ (r a: | |||
| æ (CC a | |||
| æ E: | |||
| æ (r a: | |||
| æ (CC a | |||
| .group ø | |||
| ø Y: | |||
| ø (CC W | |||
| øy Yy | |||
| ø Y: | |||
| ø (CC W | |||
| øy Yy | |||
| .group ä | |||
| ä E: | |||
| ä (CC E | |||
| ä E: | |||
| ä (CC E | |||
| .group ö | |||
| ö Y: | |||
| ö (CC W | |||
| ö Y: | |||
| ö (CC W | |||
| .group | |||
| é 'e: | |||
| ü y: | |||
| é 'e: | |||
| ü y: | |||
| $ dOllA:R | |||
| ! _:'u-:tRu:pstENn_: | |||
| !) ! | |||
| $ dOllA:R | |||
| ! _:'u-:tRu:pstENn_: | |||
| !) ! | |||
| . pu-Nktu-:m | |||
| . (. _: | |||
| \.) . | |||
| . pu-Nktu-:m | |||
| . (. _: | |||
| \.) . | |||
| __) - (_D mi:nu-:s | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| __) - (_D mi:nu-:s | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| @@ -97,7 +97,7 @@ _- in.aIppUg // இணைப்புக் | |||
| \ p'in||s,a:jvU // பின் சாய்வு | |||
| ! vijVppU // வியப்பு | |||
| _? ke:l.vi // கேள்வி | |||
| # en.||kuRi $max3 // எண் குறி | |||
| # ;en. $max3 // எண் குறி | |||
| = samVnpa:d.U $max3 // சமன்பாடு | |||
| + ku:t.t.Vl $max3 // கூட்டல் | |||
| * perUkkVl $max3 // பெருக்கல் | |||
| @@ -105,6 +105,9 @@ _? ke:l.vi // கேள்வி | |||
| ÷ vVgUttVl // வகுத்தல் | |||
| % viz.Ukka:d.U $max3 // விழுக்காடு | |||
| U+bf9 ru:ba:j | |||
| ¼ ka:l | |||
| ½ araI | |||
| ¾ mukka:l | |||
| // abbreviations | |||
| ரூ ru:ba:j $dot $only | |||
| @@ -195,7 +198,6 @@ tamil தமிழ் $text | |||
| பாகம் $alt | |||
| பண்தம் $alt | |||
| பவனி $alt | |||
| பயில்வான் $alt | |||
| பாபா $alt | |||
| போண்டா $alt | |||
| பஜ்ஜி $alt | |||
| @@ -224,7 +226,6 @@ tamil தமிழ் $text | |||
| பால $alt | |||
| பாம்ப் $alt | |||
| பீராமண $alt | |||
| பிரதர் $alt | |||
| பால்ய $alt | |||
| பலு $alt | |||
| பில் $alt | |||
| @@ -255,6 +256,29 @@ tamil தமிழ் $text | |||
| பலத்தாலான $alt | |||
| பெஞ்ச் $alt | |||
| பெஞ்சு $alt | |||
| பார $alt | |||
| பாமா $alt | |||
| பென்ஸ் $alt | |||
| பாலிய $alt | |||
| புக்கு $alt | |||
| படுவா $alt | |||
| பீரும் $alt | |||
| பல்ப் $alt | |||
| பிரேக் bre:k | |||
| ப்ரேக் bre:k | |||
| பெட்ல $alt | |||
| பான $alt | |||
| பகத் $alt | |||
| பலிக் $alt | |||
| பலிக்கு $alt | |||
| பலிக்குத்தான் $alt | |||
| பவ $alt | |||
| புஸ் $alt | |||
| போஸின் $alt | |||
| போனி $alt | |||
| பிஸி $alt | |||
| பேஷ் $alt | |||
| பாவே $alt | |||
| (பி . ஏ) bije: | |||
| @@ -280,7 +304,6 @@ tamil தமிழ் $text | |||
| திட $alt | |||
| தேவ $alt | |||
| தோ $alt | |||
| தினசரி $alt | |||
| தரும $alt | |||
| தொப் $alt | |||
| தொப்பென்று $alt | |||
| @@ -301,6 +324,14 @@ tamil தமிழ் $text | |||
| திம் $alt | |||
| தேவதா $alt | |||
| தெனம் $alt | |||
| தெனமும் $alt | |||
| திடு $alt | |||
| தால் $alt | |||
| தவ $alt | |||
| திக்திக் digdig | |||
| தொப்புனு $alt | |||
| தருமம் $alt | |||
| தாவே $alt | |||
| // initial ட | |||
| @@ -316,6 +347,12 @@ tamil தமிழ் $text | |||
| சிட்டாய் $alt | |||
| சேச்சே $alt | |||
| சிரம் sirVm | |||
| சிலி $alt | |||
| சிக் tSik | |||
| சர்ச் $alt | |||
| டிக் t.ik | |||
| ரெட்டி red.d.i | |||
| செல்லம் $alt | |||
| கக $alt // initial க as [g] | |||
| @@ -349,10 +386,16 @@ tamil தமிழ் $text | |||
| கான $alt | |||
| கோத்திர $alt | |||
| கும்முன்னு $alt | |||
| கூகுல் $alt | |||
| கேட் $alt | |||
| கேட்டில் $alt | |||
| கின் $alt | |||
| கம $alt | |||
| குட் $alt | |||
| காண்டு $alt | |||
| கேட்டின் $alt | |||
| கேட்டுக்கு $alt | |||
| கம்முனு $alt | |||
| குஜால் $alt | |||
| @@ -383,3 +426,4 @@ tamil தமிழ் $text | |||
| ஓகோ o:Ho: | |||
| கப் kVp | |||
| செட் set. | |||
| திக் dik | |||
| @@ -1,4 +1,4 @@ | |||
| 66 phoneme tables | |||
| 67 phoneme tables | |||
| new total | |||
| base 107 107 | |||
| consonants 9 115 | |||
| @@ -66,6 +66,7 @@ consonants 9 115 | |||
| ht 11 140 | |||
| az 10 127 | |||
| ak 8 109 | |||
| am 8 123 | |||
| Data file Used by | |||
| b/b [b] base | |||
| @@ -338,27 +339,34 @@ l/_l [l] base | |||
| [l/] fr | |||
| [l] hu | |||
| [l] zh | |||
| l/l_ [l/] base | |||
| l/l_ [l] base | |||
| [l/] base | |||
| [l/3] base | |||
| [l/] fr | |||
| l/l_@ [l/3] base | |||
| [l/] fr | |||
| l/l@ [hæy] base | |||
| l/l@ [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| l/L1_aL [l/] base | |||
| l/L1_aL [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L1_eL [l/] base | |||
| l/L1_eL [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L1_iL [l/] base | |||
| l/L1_iL [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L1_@L [l/] base | |||
| l/L1_@L [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L1_oL [l/] base | |||
| l/L1_oL [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L1_uL [l/] base | |||
| l/L1_uL [l] base | |||
| [l/] base | |||
| [l/] de | |||
| l/L2_aL [l/2] base | |||
| l/L2_eL [l/2] base | |||
| @@ -370,14 +378,14 @@ l/L2_oL [l/2] base | |||
| l/L2_uL [l/2] base | |||
| l/l_3 [l/] de | |||
| l/l_4 [ll] sq | |||
| l/la [hæy] base | |||
| l/la [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| l/l_a [l/3] base | |||
| [l/] fr | |||
| l/le [hæy] base | |||
| l/le [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -388,7 +396,7 @@ l/L_eL_af [&] af | |||
| [&:] af | |||
| l/l_front [L] sq | |||
| l/l_front_ [l/4] sq | |||
| l/li [hæy] base | |||
| l/li [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -401,7 +409,7 @@ ll/ll [L] bg | |||
| ll/_ll [L] bg | |||
| l/l_long [l] base | |||
| [l] fr | |||
| l/lo [hæy] base | |||
| l/lo [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -409,7 +417,7 @@ l/lo [h | |||
| l/l_o [l/3] base | |||
| [l/] fr | |||
| l^/l_rfx [l.] base | |||
| l/lu [hæy] base | |||
| l/lu [h}] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -1285,6 +1293,7 @@ vowel/a [a] base | |||
| [a] id | |||
| [a] sl | |||
| [a] bg | |||
| [a] am | |||
| vowel/a# [a] base2 | |||
| [a/] base2 | |||
| [a#] en-sc | |||
| @@ -1521,6 +1530,7 @@ vowel/e_mid2 [E] af | |||
| [e] bg | |||
| [e] nso | |||
| [e] az | |||
| [e] am | |||
| vowel/@_fnt [@] en-wi | |||
| [@2] en-wi | |||
| [@2] hr | |||
| @@ -1553,12 +1563,14 @@ vowel/i [i] base | |||
| [i] prs | |||
| [i] nso | |||
| [i] ak | |||
| [i] am | |||
| vowel/i# [y:] cy | |||
| vowel/i_2 [i2] de | |||
| [i:] de | |||
| [i] nl | |||
| [i:] la | |||
| [i:] sv | |||
| vowel/i#_2 [y] am | |||
| vowel/i_3 [i] af | |||
| [i:] sk | |||
| vowel/i_4 [i] fi | |||
| @@ -1652,12 +1664,13 @@ vowel/@_low [@] en-rp | |||
| [V] hi | |||
| [@2] hi | |||
| [@] ro | |||
| [@2] no | |||
| [a#] no | |||
| [@] id | |||
| [V] ne | |||
| [@/] ne | |||
| [@] pa | |||
| [V] pa | |||
| [@] am | |||
| vowel/@_low2 [@/] en-us | |||
| [@2] en-us | |||
| vowel/o [o] base2 | |||
| @@ -1697,6 +1710,7 @@ vowel/o-_2 [V] en-n | |||
| vowel/o_3 [oU] en-sc | |||
| vowel/o-_3 [U] en-rp | |||
| vowel/o-_4 [o] ro | |||
| [o] am | |||
| vowel/o_5 [O] nl | |||
| [O] da | |||
| vowel/o_6 [O:] nl | |||
| @@ -1808,6 +1822,7 @@ vowel/u_2 [u1] fi | |||
| [u] tr | |||
| [u] sl | |||
| [u] bg | |||
| [u] am | |||
| vowel/u#_2 [u-] sv | |||
| vowel/u#_3 [U] ta | |||
| [U:] ta | |||
| @@ -15,7 +15,7 @@ phoneme @ // close schwa | |||
| FMT(vowel/@_4) | |||
| endphoneme | |||
| phoneme @2 // open schwa | |||
| phoneme a# // open schwa | |||
| vowel starttype #@ endtype #a | |||
| unstressed | |||
| length 120 | |||
| @@ -423,6 +423,21 @@ phoneme l | |||
| ChangePhoneme(l/) | |||
| ENDIF | |||
| IF nextPh(isNotVowel) THEN | |||
| // in case the next phoneme is no longer a vowel, in pass=2 | |||
| PrevVowelEndings | |||
| VowelEnding(l/L1_@L, -60) | |||
| VowelEnding(l/L1_aL, -40) | |||
| VowelEnding(l/L1_eL, -30) | |||
| VowelEnding(l/L1_iL, -30) | |||
| VowelEnding(l/L1_oL, -40) | |||
| VowelEnding(l/L1_uL, -40) | |||
| EndSwitch | |||
| FMT(l/l_) | |||
| RETURN | |||
| ENDIF | |||
| CALL vowelstart_l | |||
| IF prevPh(#@) THEN | |||
| @@ -1822,3 +1837,6 @@ include ph_azerbaijani | |||
| phonemetable ak base | |||
| include ph_akan | |||
| phonemetable am base2 | |||
| include ph_amhari | |||
| @@ -1,8 +1,9 @@ | |||
| // 13.02.10 jonsd: Changed for eSpeak version 1.43 | |||
| // 14.09.10 Recognize long and short frames in phondata | |||
| // 02.09.10 Fix: Q sections were omitted from the converted phondata | |||
| // 13.08.10 jonsd: Added Q lines. Use Address to set the displacement in phondata file. | |||
| // 13.02.10 jonsd: Changed for eSpeak version 1.43 | |||
| #include <stdio.h> | |||
| @@ -10,6 +11,7 @@ | |||
| #include <string.h> | |||
| #include <ctype.h> | |||
| #include <sys/types.h> | |||
| #include <sys/stat.h> | |||
| #if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | |||
| #define IS_BIG_ENDIAN 1 | |||
| @@ -57,7 +59,8 @@ typedef struct { | |||
| // This is a new format for eSpeak 1.41 | |||
| typedef struct { // 44 bytes | |||
| #define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer | |||
| typedef struct { // 64 bytes | |||
| short frflags; | |||
| short ffreq[7]; | |||
| unsigned char length; | |||
| @@ -70,28 +73,29 @@ typedef struct { // 44 bytes | |||
| unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | |||
| unsigned char klatt_ap[7]; // Klatt parallel amplitude | |||
| unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2 | |||
| unsigned char spare; // pad to multiple of 4 bytes | |||
| } frame_t; // with extra Klatt parameters for parallel resonators | |||
| typedef struct { // 44 bytes | |||
| short frflags; | |||
| short ffreq[7]; | |||
| unsigned char length; | |||
| unsigned char rms; | |||
| unsigned char fheight[8]; | |||
| unsigned char fwidth[6]; // width/4 f0-5 | |||
| unsigned char fright[3]; // width/4 f0-2 | |||
| unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
| unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
| } frame_t2; | |||
| #ifdef deleted | |||
| // This is the previous format for versions before 1.41 | |||
| typedef struct { | |||
| short frflags; | |||
| unsigned char length; | |||
| unsigned char rms; | |||
| short ffreq[9]; | |||
| unsigned char fheight[9]; | |||
| unsigned char fwidth[6]; | |||
| unsigned char fright[6]; | |||
| } frame_t; | |||
| #endif | |||
| #define N_SEQ_FRAMES 25 | |||
| typedef struct { | |||
| short length; | |||
| unsigned char n_frames; | |||
| unsigned char flags; | |||
| unsigned char sqflags; | |||
| frame_t frame[N_SEQ_FRAMES]; | |||
| } SPECT_SEQ; | |||
| @@ -106,6 +110,23 @@ void usage (const char *program_name); | |||
| int xread; // prevent compiler warning from fread() | |||
| int GetFileLength(const char *filename) | |||
| {//==================================== | |||
| struct stat statbuf; | |||
| if(stat(filename,&statbuf) != 0) | |||
| return(0); | |||
| if((statbuf.st_mode & S_IFMT) == S_IFDIR) | |||
| // if(S_ISDIR(statbuf.st_mode)) | |||
| return(-2); // a directory | |||
| return(statbuf.st_size); | |||
| } // end of GetFileLength | |||
| int main (int argc, char *argv[]) | |||
| {//============================== | |||
| const char *indir = "/usr/share/espeak-data"; | |||
| @@ -147,6 +168,19 @@ int main (int argc, char *argv[]) | |||
| printf ("Host seems to be little-endian ..\n"); | |||
| #endif | |||
| sprintf (f1, "%s/phondata", indir); | |||
| sprintf (f2, "%s/temp_1", outdir); | |||
| printf ("Processing phondata ..\n"); | |||
| swap_phondata (f1, f2, manifest); | |||
| if(GetFileLength(f1) != GetFileLength(f2)) | |||
| { | |||
| fprintf(stderr, "Error: phondata length is different from the original\n"); | |||
| exit(1); | |||
| } | |||
| sprintf (f1, "%s/phondata", outdir); | |||
| rename (f2, f1); | |||
| sprintf (f1, "%s/phontab", indir); | |||
| sprintf (f2, "%s/temp_1", outdir); | |||
| @@ -163,14 +197,6 @@ int main (int argc, char *argv[]) | |||
| sprintf (f1, "%s/phonindex", outdir); | |||
| rename (f2, f1); | |||
| sprintf (f1, "%s/phondata", indir); | |||
| sprintf (f2, "%s/temp_1", outdir); | |||
| printf ("Processing phondata ..\n"); | |||
| swap_phondata (f1, f2, manifest); | |||
| sprintf (f1, "%s/phondata", outdir); | |||
| rename (f2, f1); | |||
| free (f1); | |||
| free (f2); | |||
| @@ -218,34 +244,40 @@ void swap_phondata (const char *infile, const char *outfile, | |||
| if (line[0] == 'S') { | |||
| SPECT_SEQ buf_spect; | |||
| size_t ix; | |||
| size_t frame_start; | |||
| int n; | |||
| xread = fread (&buf_spect.length, 2, 1, in); | |||
| xread = fread (&buf_spect.n_frames, 1, 1, in); | |||
| fseek (in, -3, SEEK_CUR); | |||
| ix = (char *)(&buf_spect.frame[buf_spect.n_frames]) - | |||
| (char *)(&buf_spect); | |||
| ix = (ix+3) & 0xfffc; | |||
| xread = fread (&buf_spect, ix, 1, in); | |||
| xread = fread(&buf_spect, 4, 1, in); | |||
| buf_spect.length = (short) SWAP_USHORT (buf_spect.length); | |||
| fwrite(&buf_spect, 4, 1, out); | |||
| for (n = 0; n < buf_spect.n_frames; n++) { | |||
| int k; | |||
| buf_spect.frame[n].frflags = (short) | |||
| SWAP_USHORT (buf_spect.frame[n].frflags); | |||
| frame_start = ftell(in); | |||
| xread = fread(&buf_spect.frame[0], sizeof(frame_t), 1, in); | |||
| buf_spect.frame[0].frflags = (short) | |||
| SWAP_USHORT (buf_spect.frame[0].frflags); | |||
| // Changed for eSpeak 1.41 | |||
| for (k = 0; k < 7; k++) { | |||
| buf_spect.frame[n].ffreq[k] = (short) | |||
| SWAP_USHORT (buf_spect.frame[n].ffreq[k]); | |||
| buf_spect.frame[0].ffreq[k] = (short) | |||
| SWAP_USHORT (buf_spect.frame[0].ffreq[k]); | |||
| } | |||
| } | |||
| fwrite (&buf_spect, ix, 1, out); | |||
| // is this a long or a short frame? | |||
| if(buf_spect.frame[0].frflags & FRFLAG_KLATT) | |||
| { | |||
| fwrite(&buf_spect.frame[0], sizeof(frame_t), 1, out); | |||
| fseek(in, frame_start + sizeof(frame_t), SEEK_SET); | |||
| } | |||
| else | |||
| { | |||
| fwrite(&buf_spect.frame[0], sizeof(frame_t2), 1, out); | |||
| fseek(in, frame_start + sizeof(frame_t2), SEEK_SET); | |||
| } | |||
| } | |||
| } | |||
| else if (line[0] == 'W') { | |||
| long pos; | |||
| @@ -286,6 +318,24 @@ void swap_phondata (const char *infile, const char *outfile, | |||
| xread = fread (env_buf, 1, 128, in); | |||
| fwrite (env_buf, 1, 128, out); | |||
| } | |||
| else if (line[0] == 'Q') { | |||
| unsigned char pb[4]; | |||
| unsigned length; | |||
| char *buf; | |||
| xread = fread (pb, 1, 4, in); | |||
| fwrite (pb, 1, 4, out); | |||
| length = (pb[2] << 8) + pb[3]; // size in words | |||
| length *= 4; | |||
| buf = (char *) malloc (length); | |||
| xread = fread (buf, length, 1, in); | |||
| fwrite (buf, length, 1, out); | |||
| free (buf); | |||
| } | |||
| } | |||
| fclose (in); | |||
| @@ -609,6 +609,14 @@ SOURCE=.\src\sintab.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\speak_lib.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| @@ -25,6 +25,7 @@ | |||
| // comment this out when compiling the "speak" process | |||
| //#define SPECT_EDITOR | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| #include <windows.h> | |||
| #define PLATFORM_WINDOWS | |||
| @@ -25,6 +25,7 @@ | |||
| // comment this out when compiling the "speak" process | |||
| //#define SPECT_EDITOR | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| #include <windows.h> | |||
| #define PLATFORM_WINDOWS | |||
| @@ -118,6 +118,10 @@ SOURCE=.\src\setlengths.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\speak.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| @@ -171,6 +175,10 @@ SOURCE=.\src\sintab.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\speak_lib.h | |||
| # End Source File | |||
| # Begin Source File | |||
| @@ -33,6 +33,7 @@ | |||
| #define NO_VARIADIC_MACROS | |||
| #define ESPEAK_API | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -1,7 +1,7 @@ | |||
| #ifndef SPEAK_LIB_H | |||
| #define SPEAK_LIB_H | |||
| /*************************************************************************** | |||
| * Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||
| * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
| * email: [email protected] * | |||
| * * | |||
| * This program is free software; you can redistribute it and/or modify * | |||
| @@ -24,11 +24,11 @@ | |||
| /* This is the header file for the library version of espeak */ | |||
| /* */ | |||
| /*************************************************************/ | |||
| #define ESPEAK_API __declspec(dllexport) | |||
| #include <stdio.h> | |||
| #include <stddef.h> | |||
| #define ESPEAK_API_REVISION 5 | |||
| #define ESPEAK_API_REVISION 6 | |||
| /* | |||
| Revision 2 | |||
| Added parameter "options" to eSpeakInitialize() | |||
| @@ -41,11 +41,19 @@ Revision 4 | |||
| Revision 5 | |||
| Added espeakCHARS_16BIT | |||
| Revision 6 | |||
| Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | |||
| */ | |||
| /********************/ | |||
| /* Initialization */ | |||
| /********************/ | |||
| // values for 'value' in espeak_SetParameter(espeakRATE, value, 0), nominally in words-per-minute | |||
| #define espeakRATE_MINIMUM 80 | |||
| #define espeakRATE_MAXIMUM 450 | |||
| #define espeakRATE_NORMAL 175 | |||
| typedef enum { | |||
| espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. | |||
| @@ -74,7 +82,7 @@ typedef struct { | |||
| const char *name; // used for MARK and PLAY events. UTF8 string | |||
| } id; | |||
| } espeak_EVENT; | |||
| /* | |||
| /* | |||
| When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. | |||
| @@ -82,16 +90,16 @@ typedef struct { | |||
| In PLAYBACK mode, the callback function is called as soon as an event happens. | |||
| For example suppose that the following message is supplied to espeak_Synth: | |||
| For example suppose that the following message is supplied to espeak_Synth: | |||
| "hello, hello." | |||
| * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | |||
| ** Block 1: | |||
| <audio data> + | |||
| <audio data> + | |||
| List of events: SENTENCE + WORD + LIST_TERMINATED | |||
| ** Block 2: | |||
| <audio data> + | |||
| List of events: WORD + END + LIST_TERMINATED | |||
| @@ -128,11 +136,11 @@ typedef enum { | |||
| typedef enum { | |||
| /* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | |||
| AUDIO_OUTPUT_PLAYBACK, | |||
| AUDIO_OUTPUT_PLAYBACK, | |||
| /* RETRIEVAL mode: supplies audio data and events to the calling program */ | |||
| AUDIO_OUTPUT_RETRIEVAL, | |||
| /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | |||
| AUDIO_OUTPUT_SYNCHRONOUS, | |||
| @@ -153,7 +161,7 @@ typedef enum { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
| int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
| /* Must be called before any synthesis functions are called. | |||
| output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | |||
| @@ -172,10 +180,10 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
| void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
| /* Must be called before any synthesis functions are called. | |||
| This specifies a function in the calling program which is called when a buffer of | |||
| speech sound data has been produced. | |||
| speech sound data has been produced. | |||
| The callback function is of the form: | |||
| @@ -200,7 +208,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
| void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
| /* This function may be called before synthesis functions are used, in order to deal with | |||
| <audio> tags. It specifies a callback function which is called when an <audio> element is | |||
| encountered and allows the calling program to indicate whether the sound file which | |||
| @@ -241,7 +249,7 @@ int UriCallback(int type, const char *uri, const char *base); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| espeak_ERROR espeak_Synth(const void *text, | |||
| size_t size, | |||
| unsigned int position, | |||
| espeak_POSITION_TYPE position_type, | |||
| @@ -264,7 +272,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| start of the text. | |||
| position_type: Determines whether "position" is a number of characters, words, or sentences. | |||
| Values: | |||
| Values: | |||
| end_position: If set, this gives a character position at which speaking will stop. A value | |||
| of zero indicates no end position. | |||
| @@ -283,13 +291,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | |||
| this pause is suppressed. | |||
| unique_identifier: message identifier; helpful for identifying later | |||
| unique_identifier: message identifier; helpful for identifying later | |||
| data supplied to the callback. | |||
| user_data: pointer which will be passed to the callback function. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -297,7 +305,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| size_t size, | |||
| const char *index_mark, | |||
| unsigned int end_position, | |||
| @@ -312,8 +320,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| For the other parameters, see espeak_Synth() | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -321,13 +329,13 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
| espeak_ERROR espeak_Key(const char *key_name); | |||
| /* Speak the name of a keyboard key. | |||
| If key_name is a single character, it speaks the name of the character. | |||
| Otherwise, it speaks key_name as a text string. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -335,11 +343,11 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
| /* Speak the name of the given character | |||
| espeak_ERROR espeak_Char(wchar_t character); | |||
| /* Speak the name of the given character | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -380,22 +388,23 @@ typedef enum { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
| espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
| /* Sets the value of the specified parameter. | |||
| relative=0 Sets the absolute value of the parameter. | |||
| relative=1 Sets a relative value of the parameter. | |||
| parameter: | |||
| espeakRATE: speaking speed in word per minute. | |||
| espeakRATE: speaking speed in word per minute. Values 80 to 450. | |||
| espeakVOLUME: volume in range 0-100 0=silence | |||
| espeakVOLUME: volume in range 0-200 or more. | |||
| 0=silence, 100=normal full volume, greater values may produce amplitude compression or distortion | |||
| espeakPITCH: base pitch, range 0-100. 50=normal | |||
| espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||
| espeakPUNCTUATION: which punctuation characters to announce: | |||
| value in espeak_PUNCT_TYPE (none, all, some), | |||
| value in espeak_PUNCT_TYPE (none, all, some), | |||
| see espeak_GetParameter() to specify which characters are announced. | |||
| espeakCAPITALS: announce capital letters by: | |||
| @@ -407,8 +416,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| espeakWORDGAP: pause between words, units of 10mS (at the default speed) | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -416,7 +425,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
| int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
| /* current=0 Returns the default value of the specified parameter. | |||
| current=1 Returns the current value of the specified parameter, as set by SetParameter() | |||
| */ | |||
| @@ -424,14 +433,14 @@ ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| /* Specified a list of punctuation characters whose names are to be spoken when the | |||
| value of the Punctuation parameter is set to "some". | |||
| punctlist: A list of character codes, terminated by a zero character. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -439,11 +448,12 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| /* Controls the output of phoneme symbols for the text | |||
| value=0 No phoneme output (default) | |||
| value=1 Output the translated phoneme symbols for the text | |||
| value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) | |||
| value=3 as (1), but produces IPA rather than ascii phoneme names | |||
| stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | |||
| */ | |||
| @@ -451,7 +461,7 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
| void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
| /* Compile pronunciation dictionary for a language which corresponds to the currently | |||
| selected voice. The required voice should be selected before calling this function. | |||
| @@ -475,7 +485,7 @@ typedef struct { | |||
| unsigned char gender; // 0=none 1=male, 2=female, | |||
| unsigned char age; // 0=not specified, or age in years | |||
| unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties | |||
| unsigned char xx1; // for internal use | |||
| unsigned char xx1; // for internal use | |||
| int score; // for internal use | |||
| void *spare; // for internal use | |||
| } espeak_VOICE; | |||
| @@ -504,24 +514,24 @@ typedef struct { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
| const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
| /* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | |||
| The list is terminated by a NULL pointer | |||
| If voice_spec is NULL then all voices are listed. | |||
| If voice spec is give, then only the voices which are compatible with the voice_spec | |||
| If voice spec is given, then only the voices which are compatible with the voice_spec | |||
| are listed, and they are listed in preference order. | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
| espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
| /* Searches for a voice with a matching "name" field. Language is not considered. | |||
| "name" is a UTF8 string. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -529,7 +539,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
| espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
| /* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | |||
| fields may be set: | |||
| @@ -549,7 +559,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||
| espeak_VOICE *espeak_GetCurrentVoice(void); | |||
| /* Returns the espeak_VOICE data for the currently selected voice. | |||
| This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | |||
| */ | |||
| @@ -557,12 +567,12 @@ ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
| espeak_ERROR espeak_Cancel(void); | |||
| /* Stop immediately synthesis and audio output of the current text. When this | |||
| function returns, the audio output is fully stopped and the synthesizer is ready to | |||
| synthesize a new message. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -570,25 +580,25 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API int espeak_IsPlaying(void); | |||
| int espeak_IsPlaying(void); | |||
| /* Returns 1 if audio is played, 0 otherwise. | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
| espeak_ERROR espeak_Synchronize(void); | |||
| /* This function returns when all data have been spoken. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
| espeak_ERROR espeak_Terminate(void); | |||
| /* last function to be called. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -596,9 +606,8 @@ ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API const char *espeak_Info(void* ptr); | |||
| const char *espeak_Info(void* ptr); | |||
| /* Returns the version number string. | |||
| The parameter is for future use, and should be set to NULL | |||
| */ | |||
| #endif | |||
| @@ -34,6 +34,7 @@ | |||
| #define ESPEAK_API __declspec(dllexport) | |||
| #define LIBRARY | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -37,6 +37,7 @@ | |||
| //#define USE_PORTAUDIO | |||
| //#define USE_NANOSLEEP | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -144,6 +144,10 @@ SOURCE=.\src\setlengths.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\speak_lib.cpp | |||
| # End Source File | |||
| # Begin Source File | |||
| @@ -237,6 +241,10 @@ SOURCE=.\src\sintab.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\sonic.h | |||
| # End Source File | |||
| # Begin Source File | |||
| SOURCE=.\src\speak_lib.h | |||
| # End Source File | |||
| # Begin Source File | |||
| @@ -261,8 +261,8 @@ static int ConvertRate(int new_rate) | |||
| int rate; | |||
| static int rate_table[21] = {80,110,124,133,142,151,159,168,174,180,187, | |||
| 196,208,220,240,270,300,335,369,390,450 }; | |||
| static int rate_table[21] = {80,110,124,135,145,155,165,173,180,187,196, | |||
| 208,220,245,270,300,335,370,410,450,500 }; | |||
| rate = new_rate + master_rate; | |||
| if(rate < -10) rate = -10; | |||
| @@ -6,7 +6,7 @@ INCDIR=$(PREFIX)/include/espeak | |||
| LIBDIR=$(PREFIX)/lib | |||
| DATADIR=$(PREFIX)/share/espeak-data | |||
| RELEASE = 1.43 | |||
| RELEASE = 1.44 | |||
| BIN_NAME = speak | |||
| BIN2_NAME = espeak | |||
| LIB_NAME = libespeak.so | |||
| @@ -80,10 +80,10 @@ all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
| $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
| $(BIN_NAME): $(OBJS1) | |||
| $(CXX) -o $@ $(OBJS1) $(LIBS1) | |||
| $(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1) | |||
| $(BIN2_NAME): $(OBJS3) $(LIB_NAME) | |||
| $(CXX) -o $@ $(OBJS3) $(LIBS3) | |||
| $(CXX) $(LDFLAGS) -o $@ $(OBJS3) $(LIBS3) | |||
| @@ -92,7 +92,8 @@ x_%.o: %.cpp | |||
| -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | |||
| $(LIB_NAME): $(OBJS2) | |||
| $(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) | |||
| $(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \ | |||
| $(OBJS2) $(LIBS2) | |||
| $(STATIC_LIB_NAME): $(OBJS2) | |||
| $(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) | |||
| @@ -140,6 +140,7 @@ static keywtab_t k_properties[] = { | |||
| {"isNotVowel", 0, i_isNotVowel}, | |||
| {"isFinalVowel", 0, i_isFinalVowel}, | |||
| {"isVoiced", 0, i_isVoiced}, // voiced consonant, or vowel | |||
| {"isFirstVowel", 0, i_isFirstVowel}, | |||
| {NULL, 0, 0} | |||
| }; | |||
| @@ -3259,7 +3260,7 @@ static void CompileEquivalents() | |||
| } | |||
| *p_equivalence++ = 0; | |||
| p_equivalence = (char *)((int)(p_equivalence + 3) & ~0x3); // align to word boundary | |||
| p_equivalence = (char *)((long int)(p_equivalence + 3) & ~0x3); // align to word boundary | |||
| n_bytes = p_equivalence - p_start; | |||
| p_start[1] = remove_stress; | |||
| n_bytes = n_bytes / 4; | |||
| @@ -1111,6 +1111,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
| char ph_tens[50]; | |||
| char ph_digits[50]; | |||
| char ph_and[12]; | |||
| char ph_ord_suffix[20]; | |||
| units = value % 10; | |||
| tens = value / 10; | |||
| @@ -1202,12 +1203,20 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
| else | |||
| { | |||
| if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
| if((control & 1) && | |||
| ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||
| { | |||
| sprintf(string,"_%dX%c", tens, ord_type); | |||
| if(Lookup(tr, string, ph_tens) != 0) | |||
| { | |||
| found_ordinal = 1; | |||
| if((units != 0) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) | |||
| { | |||
| // Use the ordinal form of tens as well as units. Add the ordinal ending | |||
| Lookup(tr, "_ord", ph_ord_suffix); | |||
| strcat(ph_tens, ph_ord_suffix); | |||
| } | |||
| } | |||
| } | |||
| if(found_ordinal == 0) | |||
| @@ -1290,6 +1299,10 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
| 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.numbers2 & NUM2_MULTIPLE_ORDINAL) | |||
| ph_and[0] = 0; | |||
| if(tr->langopts.numbers & NUM_SWAP_TENS) | |||
| sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | |||
| else | |||
| @@ -1355,7 +1368,8 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
| char ph_thousands[50]; | |||
| char ph_hundred_and[12]; | |||
| char ph_thousand_and[12]; | |||
| char ph_ord_suffix[20]; | |||
| ordinal = control & 0x22; | |||
| hundreds = value / 100; | |||
| tensunits = value % 100; | |||
| @@ -1422,22 +1436,29 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
| suppress_null = 1; | |||
| found = 0; | |||
| if(tensunits == 0) | |||
| if((ordinal) | |||
| && ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||
| { | |||
| // is there a special pronunciation for exactly n00 ? | |||
| // ordinal number | |||
| sprintf(string, "_%dCo", hundreds); | |||
| found = Lookup(tr, string, ph_digits); | |||
| if(ordinal) | |||
| if((tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL) && (tensunits > 0)) | |||
| { | |||
| // ordinal number | |||
| sprintf(string, "_%dCo", hundreds); | |||
| found = Lookup(tr, string, ph_digits); | |||
| } | |||
| if(!found) | |||
| { | |||
| sprintf(string,"_%dC0",hundreds); | |||
| found = Lookup(tr, string, ph_digits); | |||
| // Use ordinal form of hundreds, as well as for tens and units | |||
| // Add ordinal suffix to the hundreds | |||
| Lookup(tr, "_ord", ph_ord_suffix); | |||
| strcat(ph_digits, ph_ord_suffix); | |||
| } | |||
| } | |||
| if((!found) && (tensunits == 0)) | |||
| { | |||
| // is there a special pronunciation for exactly n00 ? | |||
| sprintf(string,"_%dC0",hundreds); | |||
| found = Lookup(tr, string, ph_digits); | |||
| } | |||
| if(!found) | |||
| { | |||
| sprintf(string,"_%dC",hundreds); | |||
| @@ -140,6 +140,7 @@ void SetSpeed(int control) | |||
| int s1; | |||
| int wpm; | |||
| int wpm2; | |||
| double wpm_inc; | |||
| speed.loud_consonants = 0; | |||
| speed.min_sample_len = 450; | |||
| @@ -150,6 +151,21 @@ void SetSpeed(int control) | |||
| if(control == 2) | |||
| wpm = embedded_value[EMBED_S2]; | |||
| // fast_settings[0] wpm where speedup starts | |||
| // fast_settings[1] wpm for maximum espeak speed | |||
| // fast_settings[2] maximum espeak speed | |||
| sonicSpeed = 1.0; | |||
| if(wpm > speed.fast_settings[0]) | |||
| { | |||
| wpm2 = wpm; | |||
| wpm_inc = (double)(speed.fast_settings[2] - speed.fast_settings[0]) / (double)(speed.fast_settings[1] - speed.fast_settings[0]); | |||
| wpm_inc = (wpm2 - speed.fast_settings[0]) * wpm_inc; | |||
| wpm = speed.fast_settings[0] + (int)wpm_inc; | |||
| sonicSpeed = ((double)wpm2)/wpm; | |||
| } | |||
| #ifdef TEST_SPEED | |||
| if(wpm > 1000) | |||
| { | |||
| @@ -262,18 +278,6 @@ void SetSpeed(int control) | |||
| if((speed.clause_pause_factor = speed.pause_factor) < 16) | |||
| speed.clause_pause_factor = 16; | |||
| } | |||
| if(wpm >= 370) | |||
| { | |||
| // TESTING | |||
| // use experimental fast settings if they have been specified in the Voice | |||
| if(speed.fast_settings[0] > 0) | |||
| speed.pause_factor = speed.fast_settings[0]; | |||
| if(speed.fast_settings[1] > 0) | |||
| speed.wav_factor = speed.fast_settings[1]; | |||
| if(speed.fast_settings[2] > 0) | |||
| speed.lenmod_factor = speed.lenmod2_factor = speed.fast_settings[2]; | |||
| } | |||
| } | |||
| #ifdef TEST_SPEED | |||
| @@ -289,7 +289,7 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
| static int WavegenFile(void) | |||
| {//========================= | |||
| int finished; | |||
| unsigned char wav_outbuf[512]; | |||
| unsigned char wav_outbuf[1024]; | |||
| char fname[210]; | |||
| out_ptr = out_start = wav_outbuf; | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.44.04 14.Sep.10"; | |||
| const char *version_string = "1.44.13 17.Nov.10"; | |||
| const int version_phdata = 0x014404; | |||
| int option_device_number = -1; | |||
| @@ -593,6 +593,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| int which; | |||
| unsigned int data; | |||
| int instn2; | |||
| int count; | |||
| PHONEME_TAB *ph; | |||
| PHONEME_LIST *plist_this; | |||
| static int ph_position[8] = {0, 1, 2, 3, 2, 0, 1, 3}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel, next2PhW | |||
| @@ -737,6 +738,18 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| case 12: // isVoiced | |||
| return((ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED)); | |||
| } | |||
| case 13: // isFirstVowel | |||
| count = 0; | |||
| for(;;) | |||
| { | |||
| if(plist->ph->type == phVOWEL) | |||
| count++; | |||
| if(plist->sourceix != 0) | |||
| break; | |||
| plist--; | |||
| } | |||
| return(count==1); | |||
| break; | |||
| } | |||
| @@ -326,6 +326,7 @@ typedef struct { | |||
| #define i_isNotVowel 0x8a | |||
| #define i_isFinalVowel 0x8b | |||
| #define i_isVoiced 0x8c | |||
| #define i_isFirstVowel 0x8d | |||
| // place of articulation | |||
| #define i_isVel 0x28 | |||
| @@ -535,6 +536,7 @@ extern t_espeak_callback* synth_callback; | |||
| extern int option_log_frames; | |||
| extern const char *version_string; | |||
| extern const int version_phdata; | |||
| extern double sonicSpeed; | |||
| #define N_SOUNDICON_TAB 80 // total entries in soundicon_tab | |||
| #define N_SOUNDICON_SLOTS 4 // number of slots reserved for dynamic loading of audio files | |||
| @@ -328,6 +328,9 @@ Translator *SelectTranslator(const char *name) | |||
| int name2 = 0; | |||
| Translator *tr; | |||
| static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
| static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 }; | |||
| static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,22, 22,21 }; | |||
| static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
| @@ -355,6 +358,17 @@ Translator *SelectTranslator(const char *name) | |||
| } | |||
| break; | |||
| case L('a','m'): // Amharic, Ethiopia | |||
| { | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| } | |||
| break; | |||
| case L('a','r'): // Arabic | |||
| tr->letter_bits_offset = OFFSET_ARABIC; | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| @@ -496,7 +510,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; | |||
| tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands | |||
| tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands | |||
| if(name2 == L_grc) | |||
| { | |||
| @@ -550,6 +564,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; | |||
| if(name2 == L('c','a')) | |||
| { | |||
| @@ -611,16 +626,12 @@ Translator *SelectTranslator(const char *name) | |||
| case L('f','r'): // french | |||
| { | |||
| static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
| static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 18,18 }; | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
| tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.accents = 2; // Say "Capital" after the letter. | |||
| tr->langopts.vowel_pause = 0; | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_AFTER | NUM_VIGESIMAL | NUM_DFRACTION_4; | |||
| SetLetterVowel(tr,'y'); | |||
| @@ -685,7 +696,6 @@ Translator *SelectTranslator(const char *name) | |||
| case L('h','t'): // Haitian Creole | |||
| // static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 240}; | |||
| // memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
| @@ -427,11 +427,13 @@ typedef struct { | |||
| // bit27= Roman numbers are ordinal numbers | |||
| int numbers; | |||
| #define NUM2_MULTIPLE_ORDINAL 0x1000 | |||
| // bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
| // bit6=(LANG=pl) two forms of plural, M or MA | |||
| // bit7=(LANG-ru) use MB for 1 thousand, million, etc | |||
| // bit8=(LANG=cs,sk) two forms of plural, M or MA | |||
| // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | |||
| // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units | |||
| int numbers2; | |||
| #define BREAK_THOUSANDS 0x49249248 | |||
| @@ -152,7 +152,7 @@ static MNEM_TAB keyword_tab[] = { | |||
| {"mbrola", V_MBROLA}, | |||
| {"consonants", V_CONSONANTS}, | |||
| {"klatt", V_KLATT}, | |||
| {"fast_test", V_FAST}, | |||
| {"fast_test2", V_FAST}, | |||
| {"speed", V_SPEED}, | |||
| // these just set a value in langopts.param[] | |||
| @@ -410,7 +410,10 @@ void VoiceReset(int tone_only) | |||
| voice->consonant_ampv = 100; | |||
| voice->samplerate = 22050; | |||
| memset(voice->klattv,0,sizeof(voice->klattv)); | |||
| memset(speed.fast_settings,0,sizeof(speed.fast_settings)); | |||
| speed.fast_settings[0] = 250; | |||
| speed.fast_settings[1] = 600; | |||
| speed.fast_settings[2] = 300; | |||
| #ifdef PLATFORM_RISCOS | |||
| voice->roughness = 1; | |||
| @@ -28,11 +28,13 @@ | |||
| #include <math.h> | |||
| #include "speak_lib.h" | |||
| #include "speech.h" | |||
| #include "phoneme.h" | |||
| #include "synthesize.h" | |||
| #include "voice.h" | |||
| #include "sonic.h" | |||
| //#undef INCLUDE_KLATT | |||
| @@ -134,7 +136,7 @@ int wcmdq_tail=0; | |||
| // pitch,speed, | |||
| int embedded_default[N_EMBEDDED_VALUES] = {0, 50,175,100,50, 0, 0, 0,175,0,0,0,0,0,0}; | |||
| static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,600,300,99,99,99, 0,600,0,0,0,0,4,0}; | |||
| static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,750,300,99,99,99, 0,750,0,0,0,0,4,0}; | |||
| #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | |||
| int current_source_index=0; | |||
| @@ -148,7 +150,8 @@ static PortAudioStream *pa_stream=NULL; | |||
| static PaStream *pa_stream=NULL; | |||
| #endif | |||
| static sonicStream sonicSpeedupStream = NULL; | |||
| double sonicSpeed = 1.0; | |||
| // 1st index=roughness | |||
| // 2nd index=modulation_type | |||
| @@ -256,8 +259,6 @@ unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = { | |||
| 217,220,223,226,229,232,236,239, | |||
| 242,246,249,252, 254,255 }; | |||
| int WavegenFill(int fill_zeros); | |||
| #ifdef LOG_FRAMES | |||
| static void LogMarker(int type, int value) | |||
| @@ -413,6 +414,10 @@ static int userdata[4]; | |||
| static PaError pa_init_err=0; | |||
| static int out_channels=1; | |||
| unsigned char *outbuffer = NULL; | |||
| int outbuffer_size = 0; | |||
| #if USE_PORTAUDIO == 18 | |||
| static int WaveCallback(void *inputBuffer, void *outputBuffer, | |||
| unsigned long framesPerBuffer, PaTimestamp outTime, void *userData ) | |||
| @@ -425,9 +430,26 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| int ix; | |||
| int result; | |||
| unsigned char *p; | |||
| unsigned char *out_buf; | |||
| unsigned char *out_end2; | |||
| int pa_size; | |||
| out_ptr = out_start = (unsigned char *)outputBuffer; | |||
| out_end = out_ptr + framesPerBuffer*2; | |||
| pa_size = framesPerBuffer*2; | |||
| // make a buffer 3x size of the portaudio output | |||
| ix = pa_size*3; | |||
| if(ix > outbuffer_size) | |||
| { | |||
| outbuffer = (unsigned char *)realloc(outbuffer, ix); | |||
| if(outbuffer == NULL) | |||
| { | |||
| fprintf(stderr, "espeak: out of memory\n"); | |||
| } | |||
| outbuffer_size = ix; | |||
| out_ptr = out_start = outbuffer; | |||
| out_end = out_start + outbuffer_size; | |||
| } | |||
| out_end2 = &outbuffer[pa_size]; // top of data needed for the portaudio buffer | |||
| #ifdef LIBRARY | |||
| event_list_ix = 0; | |||
| @@ -435,6 +457,24 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| result = WavegenFill(1); | |||
| // copy from the outbut buffer into the portaudio buffer | |||
| if(result && (out_ptr > out_end2)) | |||
| { | |||
| result = 0; // don't end yet, there is more data in the buffer than can fit in portaudio | |||
| } | |||
| while(out_ptr < out_end2) | |||
| *out_ptr++ = 0; // fill with zeros up to the size of the portaudio buffer | |||
| memcpy(outputBuffer, outbuffer, pa_size); | |||
| // move the remaining contents of the start of the output buffer | |||
| for(p = out_end2; p < out_end; p++) | |||
| { | |||
| p[-pa_size] = p[0]; | |||
| } | |||
| out_ptr -= pa_size; | |||
| #ifdef LIBRARY | |||
| count_samples += framesPerBuffer; | |||
| if(synth_callback) | |||
| @@ -455,14 +495,15 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| { | |||
| // swap the order of bytes in each sound sample in the portaudio buffer | |||
| int c; | |||
| out_ptr = (unsigned char *)outputBuffer; | |||
| out_end = out_ptr + framesPerBuffer*2; | |||
| while(out_ptr < out_end) | |||
| unsigned char *buf_end; | |||
| out_buf = (unsigned char *)outputBuffer; | |||
| buf_end = out_buf + framesPerBuffer*2; | |||
| while(out_buf < buf_end) | |||
| { | |||
| c = out_ptr[0]; | |||
| out_ptr[0] = out_ptr[1]; | |||
| out_ptr[1] = c; | |||
| out_ptr += 2; | |||
| c = out_buf[0]; | |||
| out_buf[0] = out_buf[1]; | |||
| out_buf[1] = c; | |||
| out_buf += 2; | |||
| } | |||
| } | |||
| #endif | |||
| @@ -471,12 +512,12 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| { | |||
| // sound output can only do stereo, not mono. Duplicate each sound sample to | |||
| // produce 2 channels. | |||
| out_ptr = (unsigned char *)outputBuffer; | |||
| out_buf = (unsigned char *)outputBuffer; | |||
| for(ix=framesPerBuffer-1; ix>=0; ix--) | |||
| { | |||
| p = &out_ptr[ix*4]; | |||
| p[3] = p[1] = out_ptr[ix*2 + 1]; | |||
| p[2] = p[0] = out_ptr[ix*2]; | |||
| p = &out_buf[ix*4]; | |||
| p[3] = p[1] = out_buf[ix*2 + 1]; | |||
| p[2] = p[0] = out_buf[ix*2]; | |||
| } | |||
| } | |||
| @@ -1791,8 +1832,7 @@ void Write4Bytes(FILE *f, int value) | |||
| int WavegenFill(int fill_zeros) | |||
| int WavegenFill2(int fill_zeros) | |||
| {//============================ | |||
| // Pick up next wavegen commands from the queue | |||
| // return: 0 output buffer has been filled | |||
| @@ -1930,6 +1970,46 @@ int WavegenFill(int fill_zeros) | |||
| } | |||
| return(0); | |||
| } // end of WavegenFill | |||
| } // end of WavegenFill2 | |||
| /* Speed up the audio samples with libsonic. */ | |||
| static int SpeedUp(short *outbuf, int length, int end_of_text) | |||
| {//=========================================================== | |||
| if(sonicSpeedupStream != NULL && sonicGetSpeed(sonicSpeedupStream) != sonicSpeed) | |||
| { | |||
| sonicDestroyStream(sonicSpeedupStream); | |||
| sonicSpeedupStream = NULL; | |||
| } | |||
| if(sonicSpeedupStream == NULL) | |||
| { | |||
| sonicSpeedupStream = sonicCreateStream(sonicSpeed, 22050); | |||
| } | |||
| sonicWriteShortToStream(sonicSpeedupStream, outbuf, length); | |||
| if(end_of_text) | |||
| { | |||
| sonicFlushStream(sonicSpeedupStream); | |||
| } | |||
| return sonicReadShortFromStream(sonicSpeedupStream, outbuf, length); | |||
| } // end of SpeedUp | |||
| /* Call WavegenFill2, and then speed up the output samples. */ | |||
| int WavegenFill(int fill_zeros) | |||
| {//============================ | |||
| int finished; | |||
| unsigned char *p_start; | |||
| p_start = out_ptr; | |||
| // fill_zeros is ignored. It is now done in the portaudio cakkback | |||
| finished = WavegenFill2(0); | |||
| if(sonicSpeed > 1.0 && out_ptr > p_start) | |||
| { | |||
| out_ptr = p_start + 2*SpeedUp((short *)p_start, (out_ptr-p_start)/2, finished); | |||
| } | |||
| return finished; | |||
| } // end of WavegenFill | |||