Allow .txt release for *_rules and *_list files. Rules lookup, consider multi-byte characters when calculating matchign points. Fix bug in Roman Number translation. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@232 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -220,17 +220,21 @@ amanzimtoti $4 | |||
| antwerpen antv&rp@n | |||
| babilon babilOn | |||
| bangladesj baNglad'ES | |||
| barcelona bars@l'o@na | |||
| barkly _^_EN | |||
| bellevue b&lvju: | |||
| bermuda $2 | |||
| bethlehem bEt_liEm | |||
| boedapest budapEst | |||
| boekarest bukarEst | |||
| bogotá bOgOt'A: | |||
| bolivië bul'Ivi:@ | |||
| bonnievale _^_EN | |||
| bordeaux bOrd'@U | |||
| boston _^_EN | |||
| brittanje $2 | |||
| brooklyn _^_EN | |||
| (buenos aires) bwEnOs_'aIrEs | |||
| burundi bur'undi | |||
| caledon kalidOn | |||
| carolina karul'ina | |||
| @@ -246,6 +250,7 @@ colesberg ko@lsb&rx2 | |||
| constantia $2 | |||
| christiana kr@stij'A:na | |||
| damaskus d@maskWs | |||
| denemarke de@n@mark@ | |||
| djakarta dZak'arta | |||
| doebaai $2 | |||
| duitswes dYytsv'Es | |||
| @@ -253,6 +258,7 @@ ermelo &rm@lo@ | |||
| franschhoek frA~nsh'uk | |||
| gadara x2@dA:ra | |||
| galilea x2al@l'i:a | |||
| genève Z@nE:v | |||
| germiston _^_EN | |||
| getsémané x2Ets'e@mani | |||
| gonubie g@nu:bi | |||
| @@ -268,6 +274,7 @@ hirosjima hiruS'ima | |||
| israel IsraI:l | |||
| italië it'A:li;@ | |||
| jeffreysbaai dZEfrisb'AI | |||
| junín x2un'in | |||
| kalafong kalaf'ON | |||
| kanada kanad%a | |||
| kanaän kA:nA:an | |||
| @@ -302,14 +309,21 @@ moorreesburg mur'e@sbWrx2 | |||
| europa Y@r'o@pa | |||
| nigel _^_EN | |||
| nineve nIn@fi | |||
| oklahoma @Ukl@h'@Uma | |||
| outeniekwa @Ut@n'ikwa | |||
| oxford _^_EN | |||
| palermo pal'&rmu | |||
| pelindaba p&l@nd'A:ba | |||
| perú p@ru | |||
| piketberg p@kEtb&rx2 | |||
| portugal pOrtyx2al | |||
| potchefstroom pOtSIfstr'o@m | |||
| rhône _^_FR | |||
| richardsbaai ritS@dsb'AI | |||
| robertson _^_EN | |||
| sahara sah'A:ra | |||
| salvador salvadO:r | |||
| santiago santi;'A:gu | |||
| secunda s@kunda | |||
| senekal se@n@kal | |||
| seychelle seIS'&l@ | |||
| @@ -334,6 +348,7 @@ washington _^_EN | |||
| wellington wEliNt@n | |||
| wolseley wulsli | |||
| uganda ug'anda | |||
| uruguay urugwaI | |||
| zimbabwe zI:mb'ab_wE | |||
| zulu zulu // Kwazulu-Natal | |||
| @@ -353,7 +368,9 @@ annalet anal'Et | |||
| André 'andreI | |||
| annette an'Et | |||
| antoinette antun'Et | |||
| archimedes arx2im'e@dEs | |||
| aristoteles arist'o@t@lEs | |||
| arthur _^_EN | |||
| badenhorst bA:d@nhOrst | |||
| barbara bA:b@ra | |||
| basson $2 | |||
| @@ -376,6 +393,7 @@ bredenkamp bre@d@nkamp | |||
| bruwer bruw'&:r | |||
| caesar siz@r | |||
| carl kA:r@L | |||
| carlyle _^_EN | |||
| carol _^_EN | |||
| casanova kasan'o@va | |||
| cecil sEs@l | |||
| @@ -415,7 +433,9 @@ derick dErik | |||
| deventer d'e@v@nt@r | |||
| diana dij'A:na | |||
| donaldson _^_EN | |||
| dostojewski dOstOj'Evski | |||
| du $u | |||
| duncan daNk@-n | |||
| (du pisanie) du||pis'A:ni | |||
| (du plessis) du||pl@s'i | |||
| (du plooy) d@||ploI | |||
| @@ -442,6 +462,7 @@ farao fA:ro@ | |||
| ferreira f@r&:r@ | |||
| filemon f'il@mOn | |||
| fischer fiS@r | |||
| flaubert _^_FR | |||
| floris $1 | |||
| fouché fuS'e@ | |||
| fourie fur'i | |||
| @@ -457,8 +478,10 @@ gerhardus $2 | |||
| gertruida $2 | |||
| gilbert _^_EN | |||
| gloria glO:ria | |||
| gordon _^_EN | |||
| grange x2rA:nsi | |||
| grové x2ruv'e@ | |||
| gulliver _^_EN | |||
| gustav gustaf | |||
| guy _^_EN | |||
| hamlet _^_EN | |||
| @@ -472,6 +495,7 @@ henry _^_EN | |||
| herklaas $1 | |||
| herkules $1 | |||
| hilde hild@ | |||
| ibsen ibs@n | |||
| ilse 'ilz@ | |||
| ingrid iNgr@d | |||
| isabel is@b&l | |||
| @@ -490,6 +514,8 @@ jordaan $2 | |||
| joris $1 | |||
| josef jo@s@f | |||
| josephina jo@s@f'ina | |||
| josé _^_ES | |||
| juan x2wan | |||
| juanita juan'ita | |||
| julia _^_EN | |||
| khayyam kaj'am | |||
| @@ -510,6 +536,7 @@ levi le@fi | |||
| liesbet lisbEt | |||
| louis luI | |||
| louise luw'i:z | |||
| lukas lukas | |||
| mackintosh _^_EN | |||
| madelene mad@l'e@n | |||
| mbeki mbE:ki | |||
| @@ -533,6 +560,7 @@ mary _^_EN | |||
| mathilda mat'Ilda | |||
| matteus mat'i:Ws | |||
| matthee mat'e@ | |||
| mattheüs mat'i:Ws | |||
| matthéüs mat'i:Ws | |||
| maureen _^_EN | |||
| mefistofeles mEfist'o@f@l@s | |||
| @@ -566,9 +594,10 @@ petronella pe@trun'&la | |||
| petrus pe@trWs | |||
| phoebe fi:bi | |||
| picasso pik'asu | |||
| piketberg pik'Etb&rx2 | |||
| pinokkio pin'Oki;u | |||
| pretorius pr@to@riWs | |||
| pythagoras pit'A:x2o@ras | |||
| quijote kix2'OtE | |||
| quixote kix2'OtE | |||
| rachmaninoff rax2m'aninOf | |||
| rademeyer rA:d@meI@r | |||
| @@ -607,6 +636,7 @@ sophia suf'i:ja | |||
| sophie _^_EN | |||
| stephan ste@fan | |||
| stephanus st@fA:nWs | |||
| stevenson _^_EN | |||
| strauss straUs | |||
| stockenström stOk@nstro@m | |||
| suzanne suz'A:n | |||
| @@ -624,6 +654,7 @@ totius to@SiWs | |||
| trudie trudi | |||
| versfeld f&rsf< | |||
| veronica _^_EN | |||
| victor _^_EN | |||
| victoria _^_EN | |||
| viljoen $2 | |||
| villiers vIli@rs | |||
| @@ -668,6 +699,7 @@ peugeot pW:Z@U | |||
| porsche pOrS@ | |||
| port pOrt $1 | |||
| rover _^_EN | |||
| sorbonne _^_FR | |||
| sotho su:tu | |||
| toyota $2 | |||
| venda vEnda | |||
| @@ -905,12 +937,14 @@ effense Ef@ns@ | |||
| eks Eks | |||
| ekself %&ks'&lf | |||
| elders &ld@rs | |||
| elementale El@mEnt'A:l@ | |||
| elite il'i:t | |||
| encore A~NkO:r | |||
| enige e@nIx2@ | |||
| eone $2 | |||
| era e@ra | |||
| erger &rg@r | |||
| ergering &rg@r@N | |||
| espeak i:;spi:k | |||
| (et cetera) Ets'Et@ra | |||
| euro Y@ru | |||
| @@ -934,6 +968,7 @@ geldelike x2&ld@l@k@ | |||
| genade $2 | |||
| genesis x2e@n@s@s | |||
| //gesamentlik x2@sA:m@ntl@k | |||
| gentleman _^_EN | |||
| gewellys x2e@v@lleIs | |||
| gladiator x2ladi'A:tOr | |||
| globale x2lo@b'A:l@ | |||
| @@ -973,6 +1008,7 @@ impromptu impr'Omptu | |||
| inagneming @nax2ne@m@N | |||
| indien Indin $verb | |||
| induna ind'u:na | |||
| infame @nfA:m@ | |||
| ingevolge $3 | |||
| inkatha iNk'A:ta | |||
| inkluis $2 | |||
| @@ -1008,6 +1044,7 @@ lokaas lOk_A:s | |||
| londense lOnd@ns@ | |||
| lord _^_EN | |||
| luidop lYyt_Op | |||
| lykwaak leIkvA:k | |||
| macaroni makar'o@ni | |||
| madame mad'A:m | |||
| @@ -1065,6 +1102,7 @@ ommekeer Om@ke@r | |||
| omrede $2 | |||
| omtrent Omtr'Ent | |||
| onbegrip $1 | |||
| onbruik $1 | |||
| onderrig On@r'Ix2 $verb | |||
| ondersoek $3 $verb | |||
| onderweg $3 | |||
| @@ -1150,6 +1188,7 @@ sedertdien $3 | |||
| sektore $2 | |||
| sinagoge s@n@x2o@x2@ | |||
| senatore s@nat'o@r@ | |||
| siesta si;'Esta | |||
| singenot sInx2@nOt | |||
| sir _^_EN | |||
| skepsele skEps@l@ | |||
| @@ -1205,7 +1244,6 @@ veraf f&r_af | |||
| verafgeleë f&rafx2@le@@ | |||
| verby f@rbeI | |||
| verdere f&rd@r@ | |||
| vererger f@r&rg@r | |||
| ver f'&:r | |||
| vereduifie fe@r@dYyfi | |||
| verg f&rx2 | |||
| @@ -89,7 +89,7 @@ Y: | |||
| * : ; b C C2 d D | |||
| dZ f g h j k l m | |||
| n N p pF r s S t | |||
| tS ts v x z Z | |||
| tS ts v w x z Z | |||
| Dictionary el_dict | |||
| @@ -612,3 +612,16 @@ oi ong ou u ui yu | |||
| b c d f g h j k | |||
| l m n N p r s t | |||
| tS v w z | |||
| Dictionary ur_dict | |||
| @ a a: aI aU E e: i | |||
| I i: O o: U u: | |||
| : b bh c ch d D d. | |||
| dh dh. dZ f g gh H j | |||
| J Jh k kh l m n N | |||
| p ph Q q R r. s S | |||
| s. t T t. th th. v x | |||
| z Z z. | |||
| @@ -567,7 +567,7 @@ antigen $1 | |||
| antihero $1 | |||
| antilog $1 | |||
| antimatter $1 | |||
| antinomy ant'In@mI | |||
| antimony $2 | |||
| antioch $1 | |||
| antipathy ant'Ip@TI | |||
| antiphonal ant'If@n@L | |||
| @@ -1347,6 +1347,7 @@ japan dZ@pan | |||
| jasmine dZazmIn | |||
| jesus dZi:z@s | |||
| joky dZoUkI | |||
| jour ZU@ // french | |||
| jukebox dZu:kb0ks | |||
| july dZu:l'aI | |||
| @@ -2606,10 +2607,12 @@ Dinah daIn@ | |||
| Dominic d0mI2nIk | |||
| Donaghy d0n'hi: | |||
| Doris d0rIs | |||
| Dorothy dO@r@Ti | |||
| Dougall du:g@L | |||
| Dylan dIl@n | |||
| Edith i:dIT | |||
| Elizabeth I2lIz@b@T | |||
| Emily EmI2lI | |||
| Emma Em@ | |||
| Emmy EmI | |||
| Etheridge ET@-rIdZ | |||
| @@ -4004,7 +4004,6 @@ | |||
| r) ouge u:Z | |||
| _) ough O: | |||
| ough (t O: | |||
| ough (* OI | |||
| ough oU | |||
| b) ough aU | |||
| b) ough (t O: | |||
| @@ -4447,6 +4446,7 @@ | |||
| _) re (emP2 r%i: | |||
| _) re (enP2 r%i: | |||
| _) re (eqP2 r%i: | |||
| _) re (esP2 r%i: | |||
| _) re (exP2 r%i: | |||
| referend rEf@r'End | |||
| re (fug rE | |||
| @@ -5102,7 +5102,7 @@ | |||
| ?5 ss) wor (d wVR | |||
| wor (th_ w3: | |||
| ?5 wor (th_ wVR | |||
| s) w (ick | |||
| As) w (ick | |||
| .group x | |||
| _) x (C Eks | |||
| @@ -5123,7 +5123,6 @@ | |||
| _) y (n@ V | |||
| _) y (s@ V | |||
| C) y (abl I2 | |||
| y (y | |||
| y (C I | |||
| C) y %I | |||
| y (ar j | |||
| @@ -825,6 +825,39 @@ velem $unstressend | |||
| velünk $unstressend | |||
| veletek $unstressend | |||
| velük $unstressend | |||
| közt $unstressend | |||
| hiszik $unstressend | |||
| hiszitek $unstressend | |||
| önt $unstressend | |||
| benn $unstressend | |||
| kinn $unstressend | |||
| kés $unstressend | |||
| néz $unstressend | |||
| vont $unstressend | |||
| fiút $unstressend | |||
| von $unstressend | |||
| nézett $unstressend | |||
| rám $unstressend | |||
| rád $unstressend | |||
| mód $unstressend | |||
| győz $unstressend | |||
| repült $unstressend | |||
| ül $unstressend | |||
| gyújt $unstressend | |||
| hajt $unstressend | |||
| köp $unstressend | |||
| látni $unstressend | |||
| sült $unstressend | |||
| roncs $unstressend | |||
| is $unstressend | |||
| fut $unstressend | |||
| ló $unstressend | |||
| véljük $unstressend | |||
| vélik $unstressend | |||
| vélem $unstressend | |||
| véled $unstressend | |||
| véli $unstressend | |||
| vélitek $unstressend | |||
| // word pairs | |||
| @@ -31,7 +31,7 @@ | |||
| biz (A biz, // bizalmas etc. | |||
| biedermeier bi:dER2ma:jER2 | |||
| _) batthiány bAc:a:n^i | |||
| _) batthiány bAc:a:n^i | |||
| .group c | |||
| c ts | |||
| @@ -147,7 +147,8 @@ hierar) ch (i h | |||
| rövi) d (zárlat d | |||
| sarja) d (zik d | |||
| nyála) d (z d | |||
| ren) dsz (erint d|s | |||
| ren) dsz (erint d|s | |||
| szaba) d (szájú d | |||
| .group dz | |||
| fogó) dz (kod ts | |||
| @@ -276,6 +277,7 @@ _minde) gy (ik J: | |||
| e) gy (sínű J | |||
| e) gy (sor J | |||
| né) gy (sor J | |||
| e) gy (es-egyedül J //need one J phoneme with this word, not J: phoneme | |||
| .group h | |||
| h h | |||
| @@ -291,8 +293,8 @@ _minde) gy (ik J: | |||
| .group í | |||
| í i: | |||
| íts i:tS: | |||
| ítsd i:tSd | |||
| ítsd i:tSd | |||
| t) í (zen i | |||
| t) í (zet i | |||
| v) í (zen i | |||
| @@ -410,9 +412,11 @@ negyve) n (yard n | |||
| pero) n (jegy n | |||
| ö) n (járó n | |||
| tulajdo) n (jog n | |||
| ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
| ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
| me) nj (_S2 n^ | |||
| be) nn (szülött n | |||
| éle) n (jár n | |||
| magá) n (jelleg n | |||
| .group o | |||
| o o | |||
| @@ -453,7 +457,7 @@ ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
| _) richa (rd R2iCa: | |||
| _) richá (rd R2iCa: | |||
| reichsmarschall R2EjsmAR2SAl: | |||
| ?!2 _) roose (velt R2u:z@ | |||
| ?!2 _) roose (velt R2u:z | |||
| .group s | |||
| @@ -635,6 +639,12 @@ köhögé) ssz (erű Ss | |||
| vi) ssz (hang s | |||
| felelő) ss (ég S | |||
| égzengé) ssz (erű Ss | |||
| világo) ssz (ürke Ss | |||
| motoro) ssz (emüveg Ss | |||
| bőgé) ssz (erű Ss | |||
| kavará) ssz (erű Ss | |||
| _sa) ssz (eg Ss | |||
| .group sz | |||
| sz s | |||
| @@ -796,20 +806,23 @@ passzá) t (szél t | |||
| épüle) t (sarok t | |||
| mene) t (sor t | |||
| skó) t (sapka t | |||
| lé) t (jogosultsága t | |||
| bérle) t (jegy t | |||
| csapa) t (játék t | |||
| ese) t (jog t | |||
| fejeze) t (jel t | |||
| ké) t (jegyű t | |||
| krike) tt (játék t: | |||
| mene) t (jegy t | |||
| szüne) t (jel t | |||
| ú) t (jelző t | |||
| ú) t (jog t | |||
| gondola) t (jel t | |||
| helyze) t (jel t | |||
| lé) t (jogosultsága t | |||
| bérle) t (jegy t | |||
| csapa) t (játék t | |||
| ese) t (jog t | |||
| fejeze) t (jel t | |||
| ké) t (jegyű t | |||
| krike) tt (játék t: | |||
| mene) t (jegy t | |||
| szüne) t (jel t | |||
| ú) t (jelző t | |||
| ú) t (jog t | |||
| gondola) t (jel t | |||
| helyze) t (jel t | |||
| folyama) t (sáv t | |||
| ada) t (szolgáltat t | |||
| _ú) t (sáv t | |||
| négyze) t (centi t | |||
| .group ts | |||
| ts (_S2 tS //general rule with word end of ts letters | |||
| @@ -819,6 +832,7 @@ helyze) t (jel t | |||
| já) tsz ts: | |||
| já) tssz ts: | |||
| já) tsz (m ts | |||
| já) tsz (hat ts | |||
| tsz (_S3 ts: | |||
| tsz (é ts: | |||
| tsz (o ts: | |||
| @@ -884,6 +898,7 @@ indula) tsz (ó t|s | |||
| .group ú | |||
| ú u: | |||
| h) ú (szan u | |||
| .group ü | |||
| ü y | |||
| @@ -893,6 +908,7 @@ indula) tsz (ó t|s | |||
| .group ű | |||
| ű y: | |||
| t) ű (zijáték y | |||
| .group v | |||
| v v | |||
| @@ -993,16 +1009,18 @@ találko) z (t s | |||
| nehé) z (súly z | |||
| raj) z (szeg z | |||
| raj) z (szög z | |||
| pén) z (t s | |||
| rende) z (ked s | |||
| kocká) z (tat s | |||
| hibá) z (tat s | |||
| különbö) z (tet s | |||
| válto) z (tat s | |||
| válto) z (tass s | |||
| tájéko) z (tat s | |||
| tájéko) z (tass s | |||
| pén) z (t s | |||
| rende) z (ked s | |||
| kocká) z (tat s | |||
| hibá) z (tat s | |||
| különbö) z (tet s | |||
| válto) z (tat s | |||
| válto) z (tass s | |||
| tájéko) z (tat s | |||
| tájéko) z (tass s | |||
| mé) z (szín z | |||
| bi) z (tat s | |||
| rá) z (kód s | |||
| .group | |||
| @@ -206,7 +206,7 @@ tamil தமிழ் $text | |||
| போனஸ் $alt | |||
| போகி $alt | |||
| பாபா ba:ba: | |||
| புத்த buddV | |||
| //புத்த buddV | |||
| // initial த as [d] | |||
| @@ -246,6 +246,9 @@ tamil தமிழ் $text | |||
| கட $alt | |||
| கோ $alt | |||
| கதி $alt | |||
| கோபி $alt | |||
| கச்சாமி $alt | |||
| குரு $alt | |||
| பப pVpV | |||
| @@ -39,6 +39,9 @@ | |||
| க்க (B kk | |||
| ற்) க _kV | |||
| ற்) க (B _k | |||
| ட்) க kV | |||
| ட்) க (B k | |||
| க (ிரு k | |||
| க (ீத g | |||
| க (ஜ gV | |||
| @@ -55,7 +58,6 @@ | |||
| _) க (ாந்த g | |||
| _) க (ுண்ட g | |||
| _) க (ோபுர g | |||
| _) க (ுரு g | |||
| _) க (ுகன g | |||
| _) க (ணபதி gV | |||
| _) க (ணீர gV | |||
| @@ -66,13 +68,28 @@ | |||
| _) க (தியில் gV | |||
| _) க (டிகார gV | |||
| வி) க்ட (ோரியா kt. // victoria | |||
| க (ோப g | |||
| க (ாரன k | |||
| க (ாரர k | |||
| _) க (ோபம k | |||
| _) கோப (ித்து ko:b | |||
| _) க (ோபப் k | |||
| _) க (ெட்டி g | |||
| _) க (வண gV | |||
| _) க (ோகுல g | |||
| கோப (ால go:p | |||
| _) க (ோபிய g | |||
| _) க (ோபிநா g | |||
| _) க (ோபிசெட் g | |||
| _) க (ூடலூர g | |||
| _) க (ுடியாத்த g | |||
| _) க (வன gV | |||
| _) க (ுருவின g | |||
| _) க (ுருவிட g | |||
| _) க (ுருக்கள g | |||
| _) க (ுருவோட g | |||
| _) க (ுருவுடை g | |||
| _) க (ுருரா g | |||
| _) க (ுருநா g | |||
| _) க (ுருவாய g | |||
| .group ங | |||
| @@ -99,9 +116,13 @@ | |||
| _) ச (ிட் tS | |||
| _) ச (ின் tS | |||
| _) ச (ேரி tS | |||
| _) ச (ப்பாத்தி tSV | |||
| _) சிரு (ஷ்டி sri | |||
| ச (ாந்தி s. | |||
| ச (ண்மு s.V | |||
| .group ஜ | |||
| ஜ dZV | |||
| @@ -154,6 +175,7 @@ | |||
| _) த (ுஷ் d | |||
| _) த (க்ஷிணா dV | |||
| _) த (ண்ட dV | |||
| _) த (ண்டவாள tV | |||
| _) த (ருமி dV | |||
| _) த (ர்பை dV | |||
| _) த (ாவா d | |||
| @@ -167,7 +189,7 @@ | |||
| _) த (ினுச d | |||
| _) த (ாராவி d | |||
| _) த (ர்க dV | |||
| _) த (ான d | |||
| // _) த (ான d | |||
| _) த (ேக d | |||
| _) த (ேக்கு t | |||
| _) த (ேக்கிலை t | |||
| @@ -222,12 +244,49 @@ | |||
| _) த (ன்ராஜ dV | |||
| _) த (ாராபுர d | |||
| _) த (டி_மாட dV | |||
| _) த (ேவன d | |||
| _) த (ேவி d | |||
| _) த (ேவர்க d | |||
| _) த (ேவதை d | |||
| _) த (ேவாம்ச d | |||
| _) த (ிவ்ய d | |||
| _) த (ிண்டிவன d | |||
| _) த (ுறை d | |||
| _) த (ிண்டுக்கல d | |||
| _) த (மயந்தி dV | |||
| _) த (ுரோண d | |||
| _) த (ுரியோதனன d | |||
| _) த (ுச்சாதனன d | |||
| _) த (ிரௌபதி d | |||
| யு) த்த ddV | |||
| யு) த்த(B dd | |||
| பு) த்த (ி dd | |||
| பு) த்த (ியி dd | |||
| பு) த்த (ர ddV | |||
| பு) த்த (ன ddV | |||
| _சாந்) த (ி t | |||
| _சும) த (ி t | |||
| _வசந்) த (ி t | |||
| _சுகந்) த (ி t | |||
| _வனி) த (ா t | |||
| _சுனி) த (ா t | |||
| _ல) த (ா t | |||
| பிரேமல) த (ா t | |||
| _ரேவ) த (ி t | |||
| _வினி) த (ா t | |||
| _வசந்) த tV | |||
| _பார்வ) த (ி t | |||
| பிரபாவ) த (ி t | |||
| _கோம) த (ி t | |||
| _பிர) த (ீ t | |||
| _) திரு (ஷ்டி dri | |||
| _) திரு (திரா dri | |||
| _) துர (ோண tr | |||
| _) திர (ௌபதி tr | |||
| .group ந | |||
| ந nV | |||
| @@ -264,46 +323,46 @@ | |||
| த) ப (ா p | |||
| த) ப (B b | |||
| பத (ி pVt | |||
| @) பத (ி pVt | |||
| ப (ுர p | |||
| ப (ால p | |||
| ப (ாள p | |||
| ம்) ப (ா b | |||
| _) ப (ால b | |||
| _) ப (ால் p | |||
| // _) ப (ால b | |||
| _) ப (ால் p | |||
| _) ப (ாலின் p | |||
| _) ப (ாலை p | |||
| _) ப (ாலில் p | |||
| // _) ப (ாலில் p | |||
| _) ப (ாலுடன் p | |||
| _) ப (ாலினுடைய p | |||
| // _) ப (ாலினுடைய p | |||
| _) ப (ாலாபிஷேக p | |||
| _) ப (ாலு b | |||
| _) ப (ானு b | |||
| _) ப (ீம b | |||
| _) ப (ாலு b | |||
| _) ப (ானு b | |||
| _) ப (ீம b | |||
| _) ப (காசுர bV | |||
| _) ப (ோஜ b | |||
| _) ப (தில bV | |||
| _) ப (ஜ bV | |||
| _) ப (ோஜ b | |||
| _) ப (தில bV | |||
| _) ப (ஜ bV | |||
| _) ப (ைரவ b | |||
| _) ப (யம bV | |||
| _) ப (யம bV | |||
| _) ப (ார்கவி b | |||
| _) ப (ூதேவி b | |||
| _) ப (ம்பாய bV | |||
| _) ப (ாதுஷா b | |||
| _) ப (க்த bV | |||
| _) ப (லம bV | |||
| _) ப (க்த bV | |||
| _) ப (லம bV | |||
| _) ப (லவான bV | |||
| _) ப (ிராமண b | |||
| _) ப (ிரம்ம b | |||
| _) ப (ம்பர bV | |||
| _) ப (லூன bV | |||
| _) ப (ூமி b | |||
| _) ப (ம்பர bV | |||
| _) ப (லூன bV | |||
| _) ப (ூமி b | |||
| _) ப (ூலோக b | |||
| _) ப (ூகோல b | |||
| _) ப (ூத b | |||
| _) ப (ூத b | |||
| _) ப (ுதன b | |||
| _) ப (லி bV | |||
| _) ப (கவான bV | |||
| @@ -321,9 +380,44 @@ | |||
| _) ப (ோபால b | |||
| _) ப (ெங்களூர b | |||
| _) ப (ூபாள b | |||
| _) ப (ுத்த b | |||
| _) புத்த(K buddV | |||
| _) புத் (தJ_புத+ put | |||
| _) ப (னியன bV | |||
| கோ) ப (ி p | |||
| _) ப (ாலச b | |||
| _) ப (ாலக b | |||
| _) ப (ாலமு b | |||
| _) ப (ாலதண் b | |||
| _) ப (ூவுலக b | |||
| _) ப (ிரகஸ்பதி b | |||
| _) ப (ிரகதீ b | |||
| _) ப (ொம்மை b | |||
| _) ப (ொம்மல b | |||
| _) ப (ாக்கி b | |||
| _) ப (ஸ bV | |||
| _) ப (ாஷை b | |||
| _) ப (ிரம்மை b | |||
| _) ப (ாரம b | |||
| _) ப (ங்களா bV | |||
| _) ப (ங்கம bV | |||
| _) ப (ுட்டி b | |||
| _) பிர (ம்மன brV | |||
| _) பிர (ாமணன br | |||
| _) பிர (கஸ்பதி brV | |||
| _) பிர (கதீ brV | |||
| _) பிர (கலாதன prV | |||
| _) பிர (காஷ prV | |||
| _) பிர (காச prV | |||
| _) பிர (சாத prV | |||
| _) பிர (ே pr | |||
| _) பிரு (கன்நளை bri | |||
| _) பிர (சாந்தி prV | |||
| _) பிர (ம்மை brV | |||
| _) பிர (சன்ன prV | |||
| _) பிர (ச்சனை prV | |||
| _) பிர (ப prV | |||
| _) பிர (தீ prV | |||
| // musical notes | |||
| @@ -24,6 +24,7 @@ | |||
| /* This is the header file for the library version of espeak */ | |||
| /* */ | |||
| /*************************************************************/ | |||
| #define ESPEAK_API __declspec(dllexport) | |||
| #include <stdio.h> | |||
| @@ -151,7 +152,7 @@ typedef enum { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
| ESPEAK_API 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. | |||
| @@ -170,7 +171,7 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
| ESPEAK_API 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. | |||
| @@ -198,7 +199,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
| ESPEAK_API 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 | |||
| @@ -239,7 +240,7 @@ int UriCallback(int type, const char *uri, const char *base); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Synth(const void *text, | |||
| ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| size_t size, | |||
| unsigned int position, | |||
| espeak_POSITION_TYPE position_type, | |||
| @@ -295,7 +296,7 @@ espeak_ERROR espeak_Synth(const void *text, | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| size_t size, | |||
| const char *index_mark, | |||
| unsigned int end_position, | |||
| @@ -319,7 +320,7 @@ espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Key(const char *key_name); | |||
| ESPEAK_API 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. | |||
| @@ -333,7 +334,7 @@ espeak_ERROR espeak_Key(const char *key_name); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Char(wchar_t character); | |||
| ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
| /* Speak the name of the given character | |||
| Return: EE_OK: operation achieved | |||
| @@ -378,7 +379,7 @@ typedef enum { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
| ESPEAK_API 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. | |||
| @@ -414,7 +415,7 @@ espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int rela | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
| ESPEAK_API 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() | |||
| */ | |||
| @@ -422,7 +423,7 @@ int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| ESPEAK_API 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". | |||
| @@ -437,7 +438,7 @@ espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| ESPEAK_API 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 | |||
| @@ -449,7 +450,7 @@ void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
| ESPEAK_API 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. | |||
| @@ -502,19 +503,19 @@ typedef struct { | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
| ESPEAK_API 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 given, then only the voices which are compatible with the voice_spec | |||
| If voice spec is give, 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_ERROR espeak_SetVoiceByName(const char *name); | |||
| ESPEAK_API 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. | |||
| @@ -527,7 +528,7 @@ espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
| ESPEAK_API 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: | |||
| @@ -547,7 +548,7 @@ espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_VOICE *espeak_GetCurrentVoice(void); | |||
| ESPEAK_API 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> | |||
| */ | |||
| @@ -555,7 +556,7 @@ espeak_VOICE *espeak_GetCurrentVoice(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Cancel(void); | |||
| ESPEAK_API 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. | |||
| @@ -568,14 +569,14 @@ espeak_ERROR espeak_Cancel(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| int espeak_IsPlaying(void); | |||
| ESPEAK_API int espeak_IsPlaying(void); | |||
| /* Returns 1 if audio is played, 0 otherwise. | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Synchronize(void); | |||
| ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
| /* This function returns when all data have been spoken. | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| @@ -584,7 +585,7 @@ espeak_ERROR espeak_Synchronize(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| espeak_ERROR espeak_Terminate(void); | |||
| ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
| /* last function to be called. | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| @@ -594,7 +595,7 @@ espeak_ERROR espeak_Terminate(void); | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| const char *espeak_Info(void* ptr); | |||
| ESPEAK_API const char *espeak_Info(void* ptr); | |||
| /* Returns the version number string. | |||
| The parameter is for future use, and should be set to NULL | |||
| */ | |||
| @@ -2085,6 +2085,7 @@ wxString CompileAllDictionaries() | |||
| wxString filename; | |||
| wxFileName fname; | |||
| wxString dictstr; | |||
| wxString filetype; | |||
| wxString report = _T(""); | |||
| int err; | |||
| int errors = 0; | |||
| @@ -2135,18 +2136,32 @@ wxString CompileAllDictionaries() | |||
| fprintf(f_phused,"Phonemes which are used in the *_rules and *_list files\n"); | |||
| } | |||
| bool cont = dir.GetFirst(&filename, _T("*_rules"), wxDIR_FILES); | |||
| bool cont = dir.GetFirst(&filename, _T("*_rules*"), wxDIR_FILES); | |||
| while ( cont ) | |||
| { | |||
| fname = wxFileName(filename); | |||
| filetype = fname.GetName().AfterLast('_'); | |||
| if((filetype != _T("rules")) && (filetype != _T("rules.txt"))) | |||
| { | |||
| cont = dir.GetNext(&filename); | |||
| continue; | |||
| } | |||
| dictstr = fname.GetName().BeforeLast('_'); | |||
| strcpy(dictname,dictstr.mb_str(wxConvLocal)); | |||
| dict_count++; | |||
| strcpy(voicename,dictname); | |||
| // read the *_rules file to see if a phoneme table is specified though a voice name | |||
| sprintf(path,"%s%s_rules",path_dsource,dictname); | |||
| if((f_in = fopen(path,"r")) != NULL) | |||
| sprintf(path,"%s%s_rules.txt",path_dsource,dictname); | |||
| if((f_in = fopen(path,"r")) == NULL) | |||
| { | |||
| sprintf(path,"%s%s_rules",path_dsource,dictname); | |||
| f_in = fopen(path,"r"); | |||
| } | |||
| if(f_in != NULL) | |||
| { | |||
| unsigned int ix; | |||
| unsigned int c; | |||
| @@ -690,9 +690,14 @@ static int compile_dictlist_file(const char *path, const char* filename) | |||
| text_mode = 0; | |||
| sprintf(fname,"%s%s",path,filename); | |||
| // try with and without '.txt' extension | |||
| sprintf(fname,"%s%s.txt",path,filename); | |||
| if((f_in = fopen(fname,"r")) == NULL) | |||
| return(-1); | |||
| { | |||
| sprintf(fname,"%s%s",path,filename); | |||
| if((f_in = fopen(fname,"r")) == NULL) | |||
| return(-1); | |||
| } | |||
| fprintf(f_log,"Compiling: '%s'\n",fname); | |||
| @@ -860,6 +865,9 @@ static void copy_rule_string(char *string, int &state) | |||
| case 'X': | |||
| c = RULE_NOVOWELS; | |||
| break; | |||
| case 'J': | |||
| c = RULE_SKIPCHARS; | |||
| break; | |||
| case 'L': | |||
| // expect two digits | |||
| c = *p++ - '0'; | |||
| @@ -1659,14 +1667,18 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| if(f_log == NULL) | |||
| f_log = stderr; | |||
| // try with and without '.txt' extension | |||
| sprintf(path,"%s%s_",dsource,dict_name); | |||
| sprintf(fname_in,"%srules",path); | |||
| f_in = fopen_log(fname_in,"r"); | |||
| if(f_in == NULL) | |||
| sprintf(fname_in,"%srules.txt",path); | |||
| if((f_in = fopen(fname_in,"r")) == NULL) | |||
| { | |||
| if(fname_err) | |||
| strcpy(fname_err,fname_in); | |||
| return(-1); | |||
| sprintf(fname_in,"%srules",path); | |||
| if((f_in = fopen_log(fname_in,"r")) == NULL) | |||
| { | |||
| if(fname_err) | |||
| strcpy(fname_err,fname_in); | |||
| return(-1); | |||
| } | |||
| } | |||
| sprintf(fname_out,"%s%c%s_dict",path_home,PATHSEP,dict_name); | |||
| @@ -1648,7 +1648,7 @@ static char *DecodeRule(const char *group_chars, int group_length, char *rule) | |||
| static char output[60]; | |||
| static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ', | |||
| '@','&','%','+','#','S','D','Z','A','L',' ',' ',' ',' ',' ','N','K','V',' ','T','X','?','W'}; | |||
| '@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'}; | |||
| static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; | |||
| @@ -1998,7 +1998,8 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
| if((letter == rb) || ((letter==(unsigned char)REPLACED_E) && (rb=='e'))) | |||
| { | |||
| add_points = 21; | |||
| if((letter & 0xc0) != 0x80) | |||
| add_points = 21; // don't add point for non-initial UTF-8 bytes | |||
| consumed++; | |||
| } | |||
| else | |||
| @@ -2148,6 +2149,27 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
| } | |||
| break; | |||
| case RULE_SKIPCHARS: | |||
| { | |||
| // Used for lang=Tamil, used to match on the next word after an unknown word ending | |||
| // only look until the end of the word (including the end-of-word marker) | |||
| // Jx means 'skip characters until x', where 'x' may be '_' for 'end of word' | |||
| char *p = post_ptr + letter_xbytes; | |||
| char *p2 = p; | |||
| int rule_w; // skip characters until this | |||
| utf8_in(&rule_w,rule); | |||
| while((letter_w != rule_w) && (letter_w != RULE_SPACE)) | |||
| { | |||
| p2 = p; | |||
| p += utf8_in(&letter_w,p); | |||
| } | |||
| if(letter_w == rule_w) | |||
| { | |||
| post_ptr = p2; | |||
| } | |||
| } | |||
| break; | |||
| case RULE_INC_SCORE: | |||
| add_points = 20; // force an increase in points | |||
| break; | |||
| @@ -2180,10 +2202,11 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
| default: | |||
| if(letter == rb) | |||
| { | |||
| if(letter == RULE_SPACE) | |||
| add_points = (21-distance_right); | |||
| else | |||
| if((letter & 0xc0) != 0x80) | |||
| { | |||
| // not for non-initial UTF-8 bytes | |||
| add_points = (21-distance_right); | |||
| } | |||
| } | |||
| else | |||
| failed = 1; | |||
| @@ -2348,7 +2371,13 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
| if(letter == RULE_SPACE) | |||
| add_points = 4; | |||
| else | |||
| add_points = (21-distance_left); | |||
| { | |||
| if((letter & 0xc0) != 0x80) | |||
| { | |||
| // not for non-initial UTF-8 bytes | |||
| add_points = (21-distance_left); | |||
| } | |||
| } | |||
| } | |||
| else | |||
| failed = 1; | |||
| @@ -1344,14 +1344,19 @@ void FormatDictionary(const char *dictname) | |||
| const int tab2 = 18; | |||
| const int tab3 = 28; | |||
| sprintf(fname_in,"%s/%s_rules",path_dsource,dictname); | |||
| sprintf(fname_out,"%s_formatted",fname_in); | |||
| // try with and without '.txt' extension | |||
| sprintf(fname_in,"%s/%s_rules.txt",path_dsource,dictname); | |||
| if((f_in = fopen(fname_in,"r")) == NULL) | |||
| { | |||
| wxLogError(_T("Can't open rules file: ") + wxString(fname_in,wxConvLocal)); | |||
| return; | |||
| sprintf(fname_in,"%s/%s_rules",path_dsource,dictname); | |||
| if((f_in = fopen(fname_in,"r")) == NULL) | |||
| { | |||
| wxLogError(_T("Can't open rules file: ") + wxString(fname_in,wxConvLocal)); | |||
| return; | |||
| } | |||
| } | |||
| sprintf(fname_out,"%s/%s_rules_formatted",path_dsource,dictname); | |||
| if((f_out = fopen(fname_out,"w")) == NULL) | |||
| { | |||
| wxLogError(_T("Can't write to file: ") + wxString(fname_out,wxConvLocal)); | |||
| @@ -813,6 +813,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| prev = 0; | |||
| subtract = 0x7fff; | |||
| ph_out[0] = 0; | |||
| flags[0] = 0; | |||
| flags[1] = 0; | |||
| if((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) | |||
| return(0); | |||
| @@ -92,6 +92,9 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
| 0x055e, // Armenian question | |||
| 0x055b, // Armenian emphasis mark | |||
| 0x0b1b, // Arabic ; | |||
| 0x061f, // Arabic ? | |||
| 0x1362, // Ethiopic period | |||
| 0x1363, | |||
| 0x1364, | |||
| @@ -131,6 +134,9 @@ static const unsigned int punct_attributes [] = { 0, | |||
| CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question | |||
| CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark | |||
| CLAUSE_SEMICOLON, // Arabic ; | |||
| CLAUSE_QUESTION, // Arabic question mark | |||
| CLAUSE_PERIOD, // Ethiopic period | |||
| CLAUSE_COMMA, // Ethiopic comma | |||
| CLAUSE_SEMICOLON, // Ethiopic semicolon | |||
| @@ -570,6 +576,7 @@ static const char *LookupSpecial(Translator *tr, const char *string, char* text_ | |||
| char phonemes2[55]; | |||
| char *string1 = (char *)string; | |||
| flags[0] = flags[1] = 0; | |||
| if(LookupDictList(tr,&string1,phonemes,flags,0,NULL)) | |||
| { | |||
| SetWordStress(tr, phonemes, flags, -1, 0); | |||
| @@ -2406,14 +2413,11 @@ if(option_ssml) parag=1; | |||
| // Because of an xml tag, we are waiting for the | |||
| // next non-blank character to decide whether to end the clause | |||
| // i.e. is dot followed by an upper-case letter? | |||
| if(c1 == '\n') | |||
| { | |||
| // end_clause_after_tag &= ~CLAUSE_DOT; | |||
| } | |||
| if(!iswspace(c1)) | |||
| { | |||
| if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
| if(!IsAlpha(c1) || !iswlower(c1)) | |||
| // if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
| { | |||
| UngetC(c2); | |||
| ungot_char2 = c1; | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.42.02 30.Nov.09"; | |||
| const char *version_string = "1.42.03 08.Dec.09"; | |||
| const int version_phdata = 0x014200; | |||
| int option_device_number = -1; | |||
| @@ -279,7 +279,6 @@ Translator *SelectTranslator(const char *name) | |||
| break; | |||
| case L('a','r'): // Arabic | |||
| case L('u','r'): // Urdu | |||
| tr->letter_bits_offset = OFFSET_ARABIC; | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| break; | |||
| @@ -538,7 +537,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | |||
| tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||
| tr->langopts.numbers = NUM_SWAP_TENS; | |||
| tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
| tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
| tr->letter_bits_offset = OFFSET_DEVANAGARI; | |||
| if(name2 == L('p','a')) | |||
| @@ -1034,6 +1033,13 @@ SetLengthMods(tr,3); // all equal | |||
| } | |||
| break; | |||
| case L('u','r'): // Urdu | |||
| tr->letter_bits_offset = OFFSET_ARABIC; | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| tr->langopts.numbers = NUM_SWAP_TENS; | |||
| tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
| break; | |||
| case L('v','i'): // Vietnamese | |||
| { | |||
| static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240}; | |||
| @@ -135,18 +135,19 @@ | |||
| #define RULE_LINENUM 8 // next 2 bytes give a line number, for debugging purposes | |||
| #define RULE_SPACE 32 // ascii space | |||
| #define RULE_SYLLABLE 9 | |||
| #define RULE_STRESSED 10 | |||
| #define RULE_DOUBLE 11 | |||
| #define RULE_INC_SCORE 12 | |||
| #define RULE_DEL_FWD 13 | |||
| #define RULE_ENDING 14 | |||
| #define RULE_SYLLABLE 9 // @ | |||
| #define RULE_STRESSED 10 // & | |||
| #define RULE_DOUBLE 11 // % | |||
| #define RULE_INC_SCORE 12 // + | |||
| #define RULE_DEL_FWD 13 // # | |||
| #define RULE_ENDING 14 // S | |||
| #define RULE_DIGIT 15 // D digit | |||
| #define RULE_NONALPHA 16 // Z non-alpha | |||
| #define RULE_LETTERGP 17 // A B C H F G Y letter group number | |||
| #define RULE_LETTERGP2 18 // L + letter group number | |||
| #define RULE_CAPITAL 19 // word starts with a capital letter | |||
| #define RULE_CAPITAL 19 // ! word starts with a capital letter | |||
| #define RULE_REPLACEMENTS 20 // section for character replacements | |||
| #define RULE_SKIPCHARS 23 // J | |||
| #define RULE_NO_SUFFIX 24 // N | |||
| #define RULE_NOTVOWEL 25 // K | |||
| #define RULE_IFVERB 26 // V | |||