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
antwerpen antv&rp@n | antwerpen antv&rp@n | ||||
babilon babilOn | babilon babilOn | ||||
bangladesj baNglad'ES | bangladesj baNglad'ES | ||||
barcelona bars@l'o@na | |||||
barkly _^_EN | barkly _^_EN | ||||
bellevue b&lvju: | bellevue b&lvju: | ||||
bermuda $2 | bermuda $2 | ||||
bethlehem bEt_liEm | bethlehem bEt_liEm | ||||
boedapest budapEst | boedapest budapEst | ||||
boekarest bukarEst | boekarest bukarEst | ||||
bogotá bOgOt'A: | |||||
bolivië bul'Ivi:@ | bolivië bul'Ivi:@ | ||||
bonnievale _^_EN | bonnievale _^_EN | ||||
bordeaux bOrd'@U | bordeaux bOrd'@U | ||||
boston _^_EN | |||||
brittanje $2 | brittanje $2 | ||||
brooklyn _^_EN | brooklyn _^_EN | ||||
(buenos aires) bwEnOs_'aIrEs | |||||
burundi bur'undi | burundi bur'undi | ||||
caledon kalidOn | caledon kalidOn | ||||
carolina karul'ina | carolina karul'ina | ||||
constantia $2 | constantia $2 | ||||
christiana kr@stij'A:na | christiana kr@stij'A:na | ||||
damaskus d@maskWs | damaskus d@maskWs | ||||
denemarke de@n@mark@ | |||||
djakarta dZak'arta | djakarta dZak'arta | ||||
doebaai $2 | doebaai $2 | ||||
duitswes dYytsv'Es | duitswes dYytsv'Es | ||||
franschhoek frA~nsh'uk | franschhoek frA~nsh'uk | ||||
gadara x2@dA:ra | gadara x2@dA:ra | ||||
galilea x2al@l'i:a | galilea x2al@l'i:a | ||||
genève Z@nE:v | |||||
germiston _^_EN | germiston _^_EN | ||||
getsémané x2Ets'e@mani | getsémané x2Ets'e@mani | ||||
gonubie g@nu:bi | gonubie g@nu:bi | ||||
israel IsraI:l | israel IsraI:l | ||||
italië it'A:li;@ | italië it'A:li;@ | ||||
jeffreysbaai dZEfrisb'AI | jeffreysbaai dZEfrisb'AI | ||||
junín x2un'in | |||||
kalafong kalaf'ON | kalafong kalaf'ON | ||||
kanada kanad%a | kanada kanad%a | ||||
kanaän kA:nA:an | kanaän kA:nA:an | ||||
europa Y@r'o@pa | europa Y@r'o@pa | ||||
nigel _^_EN | nigel _^_EN | ||||
nineve nIn@fi | nineve nIn@fi | ||||
oklahoma @Ukl@h'@Uma | |||||
outeniekwa @Ut@n'ikwa | outeniekwa @Ut@n'ikwa | ||||
oxford _^_EN | oxford _^_EN | ||||
palermo pal'&rmu | |||||
pelindaba p&l@nd'A:ba | pelindaba p&l@nd'A:ba | ||||
perú p@ru | |||||
piketberg p@kEtb&rx2 | |||||
portugal pOrtyx2al | portugal pOrtyx2al | ||||
potchefstroom pOtSIfstr'o@m | potchefstroom pOtSIfstr'o@m | ||||
rhône _^_FR | |||||
richardsbaai ritS@dsb'AI | richardsbaai ritS@dsb'AI | ||||
robertson _^_EN | robertson _^_EN | ||||
sahara sah'A:ra | sahara sah'A:ra | ||||
salvador salvadO:r | |||||
santiago santi;'A:gu | |||||
secunda s@kunda | secunda s@kunda | ||||
senekal se@n@kal | senekal se@n@kal | ||||
seychelle seIS'&l@ | seychelle seIS'&l@ | ||||
wellington wEliNt@n | wellington wEliNt@n | ||||
wolseley wulsli | wolseley wulsli | ||||
uganda ug'anda | uganda ug'anda | ||||
uruguay urugwaI | |||||
zimbabwe zI:mb'ab_wE | zimbabwe zI:mb'ab_wE | ||||
zulu zulu // Kwazulu-Natal | zulu zulu // Kwazulu-Natal | ||||
André 'andreI | André 'andreI | ||||
annette an'Et | annette an'Et | ||||
antoinette antun'Et | antoinette antun'Et | ||||
archimedes arx2im'e@dEs | |||||
aristoteles arist'o@t@lEs | aristoteles arist'o@t@lEs | ||||
arthur _^_EN | |||||
badenhorst bA:d@nhOrst | badenhorst bA:d@nhOrst | ||||
barbara bA:b@ra | barbara bA:b@ra | ||||
basson $2 | basson $2 | ||||
bruwer bruw'&:r | bruwer bruw'&:r | ||||
caesar siz@r | caesar siz@r | ||||
carl kA:r@L | carl kA:r@L | ||||
carlyle _^_EN | |||||
carol _^_EN | carol _^_EN | ||||
casanova kasan'o@va | casanova kasan'o@va | ||||
cecil sEs@l | cecil sEs@l | ||||
deventer d'e@v@nt@r | deventer d'e@v@nt@r | ||||
diana dij'A:na | diana dij'A:na | ||||
donaldson _^_EN | donaldson _^_EN | ||||
dostojewski dOstOj'Evski | |||||
du $u | du $u | ||||
duncan daNk@-n | |||||
(du pisanie) du||pis'A:ni | (du pisanie) du||pis'A:ni | ||||
(du plessis) du||pl@s'i | (du plessis) du||pl@s'i | ||||
(du plooy) d@||ploI | (du plooy) d@||ploI | ||||
ferreira f@r&:r@ | ferreira f@r&:r@ | ||||
filemon f'il@mOn | filemon f'il@mOn | ||||
fischer fiS@r | fischer fiS@r | ||||
flaubert _^_FR | |||||
floris $1 | floris $1 | ||||
fouché fuS'e@ | fouché fuS'e@ | ||||
fourie fur'i | fourie fur'i | ||||
gertruida $2 | gertruida $2 | ||||
gilbert _^_EN | gilbert _^_EN | ||||
gloria glO:ria | gloria glO:ria | ||||
gordon _^_EN | |||||
grange x2rA:nsi | grange x2rA:nsi | ||||
grové x2ruv'e@ | grové x2ruv'e@ | ||||
gulliver _^_EN | |||||
gustav gustaf | gustav gustaf | ||||
guy _^_EN | guy _^_EN | ||||
hamlet _^_EN | hamlet _^_EN | ||||
herklaas $1 | herklaas $1 | ||||
herkules $1 | herkules $1 | ||||
hilde hild@ | hilde hild@ | ||||
ibsen ibs@n | |||||
ilse 'ilz@ | ilse 'ilz@ | ||||
ingrid iNgr@d | ingrid iNgr@d | ||||
isabel is@b&l | isabel is@b&l | ||||
joris $1 | joris $1 | ||||
josef jo@s@f | josef jo@s@f | ||||
josephina jo@s@f'ina | josephina jo@s@f'ina | ||||
josé _^_ES | |||||
juan x2wan | |||||
juanita juan'ita | juanita juan'ita | ||||
julia _^_EN | julia _^_EN | ||||
khayyam kaj'am | khayyam kaj'am | ||||
liesbet lisbEt | liesbet lisbEt | ||||
louis luI | louis luI | ||||
louise luw'i:z | louise luw'i:z | ||||
lukas lukas | |||||
mackintosh _^_EN | mackintosh _^_EN | ||||
madelene mad@l'e@n | madelene mad@l'e@n | ||||
mbeki mbE:ki | mbeki mbE:ki | ||||
mathilda mat'Ilda | mathilda mat'Ilda | ||||
matteus mat'i:Ws | matteus mat'i:Ws | ||||
matthee mat'e@ | matthee mat'e@ | ||||
mattheüs mat'i:Ws | |||||
matthéüs mat'i:Ws | matthéüs mat'i:Ws | ||||
maureen _^_EN | maureen _^_EN | ||||
mefistofeles mEfist'o@f@l@s | mefistofeles mEfist'o@f@l@s | ||||
petrus pe@trWs | petrus pe@trWs | ||||
phoebe fi:bi | phoebe fi:bi | ||||
picasso pik'asu | picasso pik'asu | ||||
piketberg pik'Etb&rx2 | |||||
pinokkio pin'Oki;u | pinokkio pin'Oki;u | ||||
pretorius pr@to@riWs | pretorius pr@to@riWs | ||||
pythagoras pit'A:x2o@ras | |||||
quijote kix2'OtE | |||||
quixote kix2'OtE | quixote kix2'OtE | ||||
rachmaninoff rax2m'aninOf | rachmaninoff rax2m'aninOf | ||||
rademeyer rA:d@meI@r | rademeyer rA:d@meI@r | ||||
sophie _^_EN | sophie _^_EN | ||||
stephan ste@fan | stephan ste@fan | ||||
stephanus st@fA:nWs | stephanus st@fA:nWs | ||||
stevenson _^_EN | |||||
strauss straUs | strauss straUs | ||||
stockenström stOk@nstro@m | stockenström stOk@nstro@m | ||||
suzanne suz'A:n | suzanne suz'A:n | ||||
trudie trudi | trudie trudi | ||||
versfeld f&rsf< | versfeld f&rsf< | ||||
veronica _^_EN | veronica _^_EN | ||||
victor _^_EN | |||||
victoria _^_EN | victoria _^_EN | ||||
viljoen $2 | viljoen $2 | ||||
villiers vIli@rs | villiers vIli@rs | ||||
porsche pOrS@ | porsche pOrS@ | ||||
port pOrt $1 | port pOrt $1 | ||||
rover _^_EN | rover _^_EN | ||||
sorbonne _^_FR | |||||
sotho su:tu | sotho su:tu | ||||
toyota $2 | toyota $2 | ||||
venda vEnda | venda vEnda | ||||
eks Eks | eks Eks | ||||
ekself %&ks'&lf | ekself %&ks'&lf | ||||
elders &ld@rs | elders &ld@rs | ||||
elementale El@mEnt'A:l@ | |||||
elite il'i:t | elite il'i:t | ||||
encore A~NkO:r | encore A~NkO:r | ||||
enige e@nIx2@ | enige e@nIx2@ | ||||
eone $2 | eone $2 | ||||
era e@ra | era e@ra | ||||
erger &rg@r | erger &rg@r | ||||
ergering &rg@r@N | |||||
espeak i:;spi:k | espeak i:;spi:k | ||||
(et cetera) Ets'Et@ra | (et cetera) Ets'Et@ra | ||||
euro Y@ru | euro Y@ru | ||||
genade $2 | genade $2 | ||||
genesis x2e@n@s@s | genesis x2e@n@s@s | ||||
//gesamentlik x2@sA:m@ntl@k | //gesamentlik x2@sA:m@ntl@k | ||||
gentleman _^_EN | |||||
gewellys x2e@v@lleIs | gewellys x2e@v@lleIs | ||||
gladiator x2ladi'A:tOr | gladiator x2ladi'A:tOr | ||||
globale x2lo@b'A:l@ | globale x2lo@b'A:l@ | ||||
inagneming @nax2ne@m@N | inagneming @nax2ne@m@N | ||||
indien Indin $verb | indien Indin $verb | ||||
induna ind'u:na | induna ind'u:na | ||||
infame @nfA:m@ | |||||
ingevolge $3 | ingevolge $3 | ||||
inkatha iNk'A:ta | inkatha iNk'A:ta | ||||
inkluis $2 | inkluis $2 | ||||
londense lOnd@ns@ | londense lOnd@ns@ | ||||
lord _^_EN | lord _^_EN | ||||
luidop lYyt_Op | luidop lYyt_Op | ||||
lykwaak leIkvA:k | |||||
macaroni makar'o@ni | macaroni makar'o@ni | ||||
madame mad'A:m | madame mad'A:m | ||||
omrede $2 | omrede $2 | ||||
omtrent Omtr'Ent | omtrent Omtr'Ent | ||||
onbegrip $1 | onbegrip $1 | ||||
onbruik $1 | |||||
onderrig On@r'Ix2 $verb | onderrig On@r'Ix2 $verb | ||||
ondersoek $3 $verb | ondersoek $3 $verb | ||||
onderweg $3 | onderweg $3 | ||||
sektore $2 | sektore $2 | ||||
sinagoge s@n@x2o@x2@ | sinagoge s@n@x2o@x2@ | ||||
senatore s@nat'o@r@ | senatore s@nat'o@r@ | ||||
siesta si;'Esta | |||||
singenot sInx2@nOt | singenot sInx2@nOt | ||||
sir _^_EN | sir _^_EN | ||||
skepsele skEps@l@ | skepsele skEps@l@ | ||||
verafgeleë f&rafx2@le@@ | verafgeleë f&rafx2@le@@ | ||||
verby f@rbeI | verby f@rbeI | ||||
verdere f&rd@r@ | verdere f&rd@r@ | ||||
vererger f@r&rg@r | |||||
ver f'&:r | ver f'&:r | ||||
vereduifie fe@r@dYyfi | vereduifie fe@r@dYyfi | ||||
verg f&rx2 | verg f&rx2 |
* : ; b C C2 d D | * : ; b C C2 d D | ||||
dZ f g h j k l m | dZ f g h j k l m | ||||
n N p pF r s S t | n N p pF r s S t | ||||
tS ts v x z Z | |||||
tS ts v w x z Z | |||||
Dictionary el_dict | Dictionary el_dict | ||||
b c d f g h j k | b c d f g h j k | ||||
l m n N p r s t | l m n N p r s t | ||||
tS v w z | 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. |
antihero $1 | antihero $1 | ||||
antilog $1 | antilog $1 | ||||
antimatter $1 | antimatter $1 | ||||
antinomy ant'In@mI | |||||
antimony $2 | |||||
antioch $1 | antioch $1 | ||||
antipathy ant'Ip@TI | antipathy ant'Ip@TI | ||||
antiphonal ant'If@n@L | antiphonal ant'If@n@L | ||||
jasmine dZazmIn | jasmine dZazmIn | ||||
jesus dZi:z@s | jesus dZi:z@s | ||||
joky dZoUkI | joky dZoUkI | ||||
jour ZU@ // french | |||||
jukebox dZu:kb0ks | jukebox dZu:kb0ks | ||||
july dZu:l'aI | july dZu:l'aI | ||||
Dominic d0mI2nIk | Dominic d0mI2nIk | ||||
Donaghy d0n'hi: | Donaghy d0n'hi: | ||||
Doris d0rIs | Doris d0rIs | ||||
Dorothy dO@r@Ti | |||||
Dougall du:g@L | Dougall du:g@L | ||||
Dylan dIl@n | Dylan dIl@n | ||||
Edith i:dIT | Edith i:dIT | ||||
Elizabeth I2lIz@b@T | Elizabeth I2lIz@b@T | ||||
Emily EmI2lI | |||||
Emma Em@ | Emma Em@ | ||||
Emmy EmI | Emmy EmI | ||||
Etheridge ET@-rIdZ | Etheridge ET@-rIdZ |
r) ouge u:Z | r) ouge u:Z | ||||
_) ough O: | _) ough O: | ||||
ough (t O: | ough (t O: | ||||
ough (* OI | |||||
ough oU | ough oU | ||||
b) ough aU | b) ough aU | ||||
b) ough (t O: | b) ough (t O: | ||||
_) re (emP2 r%i: | _) re (emP2 r%i: | ||||
_) re (enP2 r%i: | _) re (enP2 r%i: | ||||
_) re (eqP2 r%i: | _) re (eqP2 r%i: | ||||
_) re (esP2 r%i: | |||||
_) re (exP2 r%i: | _) re (exP2 r%i: | ||||
referend rEf@r'End | referend rEf@r'End | ||||
re (fug rE | re (fug rE | ||||
?5 ss) wor (d wVR | ?5 ss) wor (d wVR | ||||
wor (th_ w3: | wor (th_ w3: | ||||
?5 wor (th_ wVR | ?5 wor (th_ wVR | ||||
s) w (ick | |||||
As) w (ick | |||||
.group x | .group x | ||||
_) x (C Eks | _) x (C Eks | ||||
_) y (n@ V | _) y (n@ V | ||||
_) y (s@ V | _) y (s@ V | ||||
C) y (abl I2 | C) y (abl I2 | ||||
y (y | |||||
y (C I | y (C I | ||||
C) y %I | C) y %I | ||||
y (ar j | y (ar j |
velünk $unstressend | velünk $unstressend | ||||
veletek $unstressend | veletek $unstressend | ||||
velük $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 | // word pairs | ||||
biz (A biz, // bizalmas etc. | biz (A biz, // bizalmas etc. | ||||
biedermeier bi:dER2ma:jER2 | biedermeier bi:dER2ma:jER2 | ||||
_) batthiány bAc:a:n^i | |||||
_) batthiány bAc:a:n^i | |||||
.group c | .group c | ||||
c ts | c ts | ||||
rövi) d (zárlat d | rövi) d (zárlat d | ||||
sarja) d (zik d | sarja) d (zik d | ||||
nyála) d (z d | nyála) d (z d | ||||
ren) dsz (erint d|s | |||||
ren) dsz (erint d|s | |||||
szaba) d (szájú d | |||||
.group dz | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
e) gy (sínű J | e) gy (sínű J | ||||
e) gy (sor J | e) gy (sor J | ||||
né) 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 | .group h | ||||
h h | h h | ||||
.group í | .group í | ||||
í i: | í i: | ||||
íts i:tS: | íts i:tS: | ||||
ítsd i:tSd | |||||
ítsd i:tSd | |||||
t) í (zen i | t) í (zen i | ||||
t) í (zet i | t) í (zet i | ||||
v) í (zen i | v) í (zen i | ||||
pero) n (jegy n | pero) n (jegy n | ||||
ö) n (járó n | ö) n (járó n | ||||
tulajdo) n (jog 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 | .group o | ||||
o o | o o | ||||
_) richa (rd R2iCa: | _) richa (rd R2iCa: | ||||
_) richá (rd R2iCa: | _) richá (rd R2iCa: | ||||
reichsmarschall R2EjsmAR2SAl: | reichsmarschall R2EjsmAR2SAl: | ||||
?!2 _) roose (velt R2u:z@ | |||||
?!2 _) roose (velt R2u:z | |||||
.group s | .group s | ||||
vi) ssz (hang s | vi) ssz (hang s | ||||
felelő) ss (ég S | felelő) ss (ég S | ||||
égzengé) ssz (erű Ss | é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 | .group sz | ||||
sz s | sz s | ||||
épüle) t (sarok t | épüle) t (sarok t | ||||
mene) t (sor t | mene) t (sor t | ||||
skó) t (sapka 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 | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
já) tsz ts: | já) tsz ts: | ||||
já) tssz ts: | já) tssz ts: | ||||
já) tsz (m ts | já) tsz (m ts | ||||
já) tsz (hat ts | |||||
tsz (_S3 ts: | tsz (_S3 ts: | ||||
tsz (é ts: | tsz (é ts: | ||||
tsz (o ts: | tsz (o ts: | ||||
.group ú | .group ú | ||||
ú u: | ú u: | ||||
h) ú (szan u | |||||
.group ü | .group ü | ||||
ü y | ü y | ||||
.group ű | .group ű | ||||
ű y: | ű y: | ||||
t) ű (zijáték y | |||||
.group v | .group v | ||||
v v | v v | ||||
nehé) z (súly z | nehé) z (súly z | ||||
raj) z (szeg z | raj) z (szeg z | ||||
raj) z (szög 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 | .group |
போனஸ் $alt | போனஸ் $alt | ||||
போகி $alt | போகி $alt | ||||
பாபா ba:ba: | பாபா ba:ba: | ||||
புத்த buddV | |||||
//புத்த buddV | |||||
// initial த as [d] | // initial த as [d] | ||||
கட $alt | கட $alt | ||||
கோ $alt | கோ $alt | ||||
கதி $alt | கதி $alt | ||||
கோபி $alt | |||||
கச்சாமி $alt | |||||
குரு $alt | |||||
பப pVpV | பப pVpV |
க்க (B kk | க்க (B kk | ||||
ற்) க _kV | ற்) க _kV | ||||
ற்) க (B _k | ற்) க (B _k | ||||
ட்) க kV | |||||
ட்) க (B k | |||||
க (ிரு k | |||||
க (ீத g | க (ீத g | ||||
க (ஜ gV | க (ஜ gV | ||||
_) க (ாந்த g | _) க (ாந்த g | ||||
_) க (ுண்ட g | _) க (ுண்ட g | ||||
_) க (ோபுர g | _) க (ோபுர g | ||||
_) க (ுரு g | |||||
_) க (ுகன g | _) க (ுகன g | ||||
_) க (ணபதி gV | _) க (ணபதி gV | ||||
_) க (ணீர gV | _) க (ணீர gV | ||||
_) க (தியில் gV | _) க (தியில் gV | ||||
_) க (டிகார gV | _) க (டிகார gV | ||||
வி) க்ட (ோரியா kt. // victoria | வி) க்ட (ோரியா kt. // victoria | ||||
க (ோப g | |||||
க (ாரன k | க (ாரன k | ||||
க (ாரர k | க (ாரர k | ||||
_) க (ோபம k | |||||
_) கோப (ித்து ko:b | _) கோப (ித்து ko:b | ||||
_) க (ோபப் k | _) க (ோபப் k | ||||
_) க (ெட்டி g | _) க (ெட்டி g | ||||
_) க (வண gV | |||||
_) க (ோகுல g | |||||
கோப (ால go:p | |||||
_) க (ோபிய g | |||||
_) க (ோபிநா g | |||||
_) க (ோபிசெட் g | |||||
_) க (ூடலூர g | |||||
_) க (ுடியாத்த g | |||||
_) க (வன gV | |||||
_) க (ுருவின g | |||||
_) க (ுருவிட g | |||||
_) க (ுருக்கள g | |||||
_) க (ுருவோட g | |||||
_) க (ுருவுடை g | |||||
_) க (ுருரா g | |||||
_) க (ுருநா g | |||||
_) க (ுருவாய g | |||||
.group ங | .group ங | ||||
_) ச (ிட் tS | _) ச (ிட் tS | ||||
_) ச (ின் tS | _) ச (ின் tS | ||||
_) ச (ேரி tS | |||||
_) ச (ப்பாத்தி tSV | _) ச (ப்பாத்தி tSV | ||||
_) சிரு (ஷ்டி sri | |||||
ச (ாந்தி s. | |||||
ச (ண்மு s.V | |||||
.group ஜ | .group ஜ | ||||
ஜ dZV | ஜ dZV | ||||
_) த (ுஷ் d | _) த (ுஷ் d | ||||
_) த (க்ஷிணா dV | _) த (க்ஷிணா dV | ||||
_) த (ண்ட dV | _) த (ண்ட dV | ||||
_) த (ண்டவாள tV | |||||
_) த (ருமி dV | _) த (ருமி dV | ||||
_) த (ர்பை dV | _) த (ர்பை dV | ||||
_) த (ாவா d | _) த (ாவா d | ||||
_) த (ினுச d | _) த (ினுச d | ||||
_) த (ாராவி d | _) த (ாராவி d | ||||
_) த (ர்க dV | _) த (ர்க dV | ||||
_) த (ான d | |||||
// _) த (ான d | |||||
_) த (ேக d | _) த (ேக d | ||||
_) த (ேக்கு t | _) த (ேக்கு t | ||||
_) த (ேக்கிலை t | _) த (ேக்கிலை t | ||||
_) த (ன்ராஜ dV | _) த (ன்ராஜ dV | ||||
_) த (ாராபுர d | _) த (ாராபுர d | ||||
_) த (டி_மாட dV | _) த (டி_மாட dV | ||||
_) த (ேவன d | |||||
_) த (ேவி d | |||||
_) த (ேவர்க d | |||||
_) த (ேவதை d | |||||
_) த (ேவாம்ச d | |||||
_) த (ிவ்ய d | |||||
_) த (ிண்டிவன d | |||||
_) த (ுறை d | |||||
_) த (ிண்டுக்கல d | |||||
_) த (மயந்தி dV | |||||
_) த (ுரோண d | |||||
_) த (ுரியோதனன d | |||||
_) த (ுச்சாதனன d | |||||
_) த (ிரௌபதி d | |||||
யு) த்த ddV | |||||
யு) த்த(B dd | |||||
பு) த்த (ி dd | பு) த்த (ி dd | ||||
பு) த்த (ியி dd | பு) த்த (ியி dd | ||||
பு) த்த (ர ddV | பு) த்த (ர ddV | ||||
பு) த்த (ன ddV | பு) த்த (ன ddV | ||||
_சாந்) த (ி t | |||||
_சும) த (ி t | |||||
_வசந்) த (ி t | |||||
_சுகந்) த (ி t | |||||
_வனி) த (ா t | |||||
_சுனி) த (ா t | |||||
_ல) த (ா t | |||||
பிரேமல) த (ா t | |||||
_ரேவ) த (ி t | |||||
_வினி) த (ா t | |||||
_வசந்) த tV | |||||
_பார்வ) த (ி t | |||||
பிரபாவ) த (ி t | |||||
_கோம) த (ி t | |||||
_பிர) த (ீ t | |||||
_) திரு (ஷ்டி dri | |||||
_) திரு (திரா dri | |||||
_) துர (ோண tr | |||||
_) திர (ௌபதி tr | |||||
.group ந | .group ந | ||||
ந nV | ந nV | ||||
த) ப (ா p | த) ப (ா p | ||||
த) ப (B b | த) ப (B b | ||||
பத (ி pVt | |||||
@) பத (ி pVt | |||||
ப (ுர p | ப (ுர p | ||||
ப (ால p | ப (ால p | ||||
ப (ாள p | ப (ாள p | ||||
ம்) ப (ா b | ம்) ப (ா b | ||||
_) ப (ால b | |||||
_) ப (ால் p | |||||
// _) ப (ால b | |||||
_) ப (ால் p | |||||
_) ப (ாலின் p | _) ப (ாலின் p | ||||
_) ப (ாலை p | _) ப (ாலை p | ||||
_) ப (ாலில் p | |||||
// _) ப (ாலில் p | |||||
_) ப (ாலுடன் p | _) ப (ாலுடன் p | ||||
_) ப (ாலினுடைய p | |||||
// _) ப (ாலினுடைய p | |||||
_) ப (ாலாபிஷேக p | _) ப (ாலாபிஷேக p | ||||
_) ப (ாலு b | |||||
_) ப (ானு b | |||||
_) ப (ீம b | |||||
_) ப (ாலு b | |||||
_) ப (ானு b | |||||
_) ப (ீம b | |||||
_) ப (காசுர bV | _) ப (காசுர bV | ||||
_) ப (ோஜ b | |||||
_) ப (தில bV | |||||
_) ப (ஜ bV | |||||
_) ப (ோஜ b | |||||
_) ப (தில bV | |||||
_) ப (ஜ bV | |||||
_) ப (ைரவ b | _) ப (ைரவ b | ||||
_) ப (யம bV | |||||
_) ப (யம bV | |||||
_) ப (ார்கவி b | _) ப (ார்கவி b | ||||
_) ப (ூதேவி b | _) ப (ூதேவி b | ||||
_) ப (ம்பாய bV | _) ப (ம்பாய bV | ||||
_) ப (ாதுஷா b | _) ப (ாதுஷா b | ||||
_) ப (க்த bV | |||||
_) ப (லம bV | |||||
_) ப (க்த bV | |||||
_) ப (லம bV | |||||
_) ப (லவான bV | _) ப (லவான bV | ||||
_) ப (ிராமண b | _) ப (ிராமண b | ||||
_) ப (ிரம்ம b | _) ப (ிரம்ம b | ||||
_) ப (ம்பர bV | |||||
_) ப (லூன bV | |||||
_) ப (ூமி b | |||||
_) ப (ம்பர bV | |||||
_) ப (லூன bV | |||||
_) ப (ூமி b | |||||
_) ப (ூலோக b | _) ப (ூலோக b | ||||
_) ப (ூகோல b | _) ப (ூகோல b | ||||
_) ப (ூத b | |||||
_) ப (ூத b | |||||
_) ப (ுதன b | _) ப (ுதன b | ||||
_) ப (லி bV | _) ப (லி bV | ||||
_) ப (கவான bV | _) ப (கவான bV | ||||
_) ப (ோபால b | _) ப (ோபால b | ||||
_) ப (ெங்களூர b | _) ப (ெங்களூர b | ||||
_) ப (ூபாள b | _) ப (ூபாள b | ||||
_) ப (ுத்த b | |||||
_) புத்த(K buddV | |||||
_) புத் (தJ_புத+ put | |||||
_) ப (னியன bV | _) ப (னியன bV | ||||
கோ) ப (ி p | கோ) ப (ி 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 | // musical notes |
/* This is the header file for the library version of espeak */ | /* This is the header file for the library version of espeak */ | ||||
/* */ | /* */ | ||||
/*************************************************************/ | /*************************************************************/ | ||||
#define ESPEAK_API __declspec(dllexport) | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* 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. | output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Must be called before any synthesis functions are called. | ||||
This specifies a function in the calling program which is called when a buffer of | 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. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* 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 | <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 | encountered and allows the calling program to indicate whether the sound file which | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_ERROR espeak_Synth(const void *text, | |||||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||||
size_t size, | size_t size, | ||||
unsigned int position, | unsigned int position, | ||||
espeak_POSITION_TYPE position_type, | espeak_POSITION_TYPE position_type, | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
size_t size, | size_t size, | ||||
const char *index_mark, | const char *index_mark, | ||||
unsigned int end_position, | unsigned int end_position, | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Speak the name of a keyboard key. | ||||
If key_name is a single character, it speaks the name of the character. | If key_name is a single character, it speaks the name of the character. | ||||
Otherwise, it speaks key_name as a text string. | Otherwise, it speaks key_name as a text string. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_ERROR espeak_Char(wchar_t character); | |||||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||||
/* Speak the name of the given character | /* Speak the name of the given character | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Sets the value of the specified parameter. | ||||
relative=0 Sets the absolute value of the parameter. | relative=0 Sets the absolute value of the parameter. | ||||
relative=1 Sets a relative value of the parameter. | relative=1 Sets a relative value of the parameter. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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=0 Returns the default value of the specified parameter. | ||||
current=1 Returns the current value of the specified parameter, as set by SetParameter() | current=1 Returns the current value of the specified parameter, as set by SetParameter() | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Specified a list of punctuation characters whose names are to be spoken when the | ||||
value of the Punctuation parameter is set to "some". | value of the Punctuation parameter is set to "some". | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Controls the output of phoneme symbols for the text | ||||
value=0 No phoneme output (default) | value=0 No phoneme output (default) | ||||
value=1 Output the translated phoneme symbols for the text | value=1 Output the translated phoneme symbols for the text | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Compile pronunciation dictionary for a language which corresponds to the currently | ||||
selected voice. The required voice should be selected before calling this function. | selected voice. The required voice should be selected before calling this function. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | ||||
The list is terminated by a NULL pointer | The list is terminated by a NULL pointer | ||||
If voice_spec is NULL then all voices are listed. | 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. | are listed, and they are listed in preference order. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Searches for a voice with a matching "name" field. Language is not considered. | ||||
"name" is a UTF8 string. | "name" is a UTF8 string. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | ||||
fields may be set: | fields may be set: | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
/* Returns the espeak_VOICE data for the currently selected voice. | /* 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> | This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* 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 | function returns, the audio output is fully stopped and the synthesizer is ready to | ||||
synthesize a new message. | synthesize a new message. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
int espeak_IsPlaying(void); | |||||
ESPEAK_API int espeak_IsPlaying(void); | |||||
/* Returns 1 if audio is played, 0 otherwise. | /* Returns 1 if audio is played, 0 otherwise. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_ERROR espeak_Synchronize(void); | |||||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||||
/* This function returns when all data have been spoken. | /* This function returns when all data have been spoken. | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
espeak_ERROR espeak_Terminate(void); | |||||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||||
/* last function to be called. | /* last function to be called. | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
const char *espeak_Info(void* ptr); | |||||
ESPEAK_API const char *espeak_Info(void* ptr); | |||||
/* Returns the version number string. | /* Returns the version number string. | ||||
The parameter is for future use, and should be set to NULL | The parameter is for future use, and should be set to NULL | ||||
*/ | */ |
wxString filename; | wxString filename; | ||||
wxFileName fname; | wxFileName fname; | ||||
wxString dictstr; | wxString dictstr; | ||||
wxString filetype; | |||||
wxString report = _T(""); | wxString report = _T(""); | ||||
int err; | int err; | ||||
int errors = 0; | int errors = 0; | ||||
fprintf(f_phused,"Phonemes which are used in the *_rules and *_list files\n"); | 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 ) | while ( cont ) | ||||
{ | { | ||||
fname = wxFileName(filename); | fname = wxFileName(filename); | ||||
filetype = fname.GetName().AfterLast('_'); | |||||
if((filetype != _T("rules")) && (filetype != _T("rules.txt"))) | |||||
{ | |||||
cont = dir.GetNext(&filename); | |||||
continue; | |||||
} | |||||
dictstr = fname.GetName().BeforeLast('_'); | dictstr = fname.GetName().BeforeLast('_'); | ||||
strcpy(dictname,dictstr.mb_str(wxConvLocal)); | strcpy(dictname,dictstr.mb_str(wxConvLocal)); | ||||
dict_count++; | dict_count++; | ||||
strcpy(voicename,dictname); | strcpy(voicename,dictname); | ||||
// read the *_rules file to see if a phoneme table is specified though a voice name | // 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 ix; | ||||
unsigned int c; | unsigned int c; |
text_mode = 0; | 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) | 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); | fprintf(f_log,"Compiling: '%s'\n",fname); | ||||
case 'X': | case 'X': | ||||
c = RULE_NOVOWELS; | c = RULE_NOVOWELS; | ||||
break; | break; | ||||
case 'J': | |||||
c = RULE_SKIPCHARS; | |||||
break; | |||||
case 'L': | case 'L': | ||||
// expect two digits | // expect two digits | ||||
c = *p++ - '0'; | c = *p++ - '0'; | ||||
if(f_log == NULL) | if(f_log == NULL) | ||||
f_log = stderr; | f_log = stderr; | ||||
// try with and without '.txt' extension | |||||
sprintf(path,"%s%s_",dsource,dict_name); | 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); | sprintf(fname_out,"%s%c%s_dict",path_home,PATHSEP,dict_name); |
static char output[60]; | static char output[60]; | ||||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ', | 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'}; | static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; | ||||
if((letter == rb) || ((letter==(unsigned char)REPLACED_E) && (rb=='e'))) | 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++; | consumed++; | ||||
} | } | ||||
else | else | ||||
} | } | ||||
break; | 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: | case RULE_INC_SCORE: | ||||
add_points = 20; // force an increase in points | add_points = 20; // force an increase in points | ||||
break; | break; | ||||
default: | default: | ||||
if(letter == rb) | 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); | add_points = (21-distance_right); | ||||
} | |||||
} | } | ||||
else | else | ||||
failed = 1; | failed = 1; | ||||
if(letter == RULE_SPACE) | if(letter == RULE_SPACE) | ||||
add_points = 4; | add_points = 4; | ||||
else | else | ||||
add_points = (21-distance_left); | |||||
{ | |||||
if((letter & 0xc0) != 0x80) | |||||
{ | |||||
// not for non-initial UTF-8 bytes | |||||
add_points = (21-distance_left); | |||||
} | |||||
} | |||||
} | } | ||||
else | else | ||||
failed = 1; | failed = 1; |
const int tab2 = 18; | const int tab2 = 18; | ||||
const int tab3 = 28; | 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) | 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) | if((f_out = fopen(fname_out,"w")) == NULL) | ||||
{ | { | ||||
wxLogError(_T("Can't write to file: ") + wxString(fname_out,wxConvLocal)); | wxLogError(_T("Can't write to file: ") + wxString(fname_out,wxConvLocal)); |
prev = 0; | prev = 0; | ||||
subtract = 0x7fff; | subtract = 0x7fff; | ||||
ph_out[0] = 0; | ph_out[0] = 0; | ||||
flags[0] = 0; | |||||
flags[1] = 0; | |||||
if((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) | if((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) | ||||
return(0); | return(0); |
0x055e, // Armenian question | 0x055e, // Armenian question | ||||
0x055b, // Armenian emphasis mark | 0x055b, // Armenian emphasis mark | ||||
0x0b1b, // Arabic ; | |||||
0x061f, // Arabic ? | |||||
0x1362, // Ethiopic period | 0x1362, // Ethiopic period | ||||
0x1363, | 0x1363, | ||||
0x1364, | 0x1364, | ||||
CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question | CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question | ||||
CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark | CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark | ||||
CLAUSE_SEMICOLON, // Arabic ; | |||||
CLAUSE_QUESTION, // Arabic question mark | |||||
CLAUSE_PERIOD, // Ethiopic period | CLAUSE_PERIOD, // Ethiopic period | ||||
CLAUSE_COMMA, // Ethiopic comma | CLAUSE_COMMA, // Ethiopic comma | ||||
CLAUSE_SEMICOLON, // Ethiopic semicolon | CLAUSE_SEMICOLON, // Ethiopic semicolon | ||||
char phonemes2[55]; | char phonemes2[55]; | ||||
char *string1 = (char *)string; | char *string1 = (char *)string; | ||||
flags[0] = flags[1] = 0; | |||||
if(LookupDictList(tr,&string1,phonemes,flags,0,NULL)) | if(LookupDictList(tr,&string1,phonemes,flags,0,NULL)) | ||||
{ | { | ||||
SetWordStress(tr, phonemes, flags, -1, 0); | SetWordStress(tr, phonemes, flags, -1, 0); | ||||
// Because of an xml tag, we are waiting for the | // Because of an xml tag, we are waiting for the | ||||
// next non-blank character to decide whether to end the clause | // next non-blank character to decide whether to end the clause | ||||
// i.e. is dot followed by an upper-case letter? | // i.e. is dot followed by an upper-case letter? | ||||
if(c1 == '\n') | |||||
{ | |||||
// end_clause_after_tag &= ~CLAUSE_DOT; | |||||
} | |||||
if(!iswspace(c1)) | if(!iswspace(c1)) | ||||
{ | { | ||||
if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||||
if(!IsAlpha(c1) || !iswlower(c1)) | |||||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||||
{ | { | ||||
UngetC(c2); | UngetC(c2); | ||||
ungot_char2 = c1; | ungot_char2 = c1; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014200; | ||||
int option_device_number = -1; | int option_device_number = -1; |
break; | break; | ||||
case L('a','r'): // Arabic | case L('a','r'): // Arabic | ||||
case L('u','r'): // Urdu | |||||
tr->letter_bits_offset = OFFSET_ARABIC; | tr->letter_bits_offset = OFFSET_ARABIC; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
break; | break; | ||||
tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | 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.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | ||||
tr->langopts.numbers = NUM_SWAP_TENS; | 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; | tr->letter_bits_offset = OFFSET_DEVANAGARI; | ||||
if(name2 == L('p','a')) | if(name2 == L('p','a')) | ||||
} | } | ||||
break; | 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 | case L('v','i'): // Vietnamese | ||||
{ | { | ||||
static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240}; | static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240}; |
#define RULE_LINENUM 8 // next 2 bytes give a line number, for debugging purposes | #define RULE_LINENUM 8 // next 2 bytes give a line number, for debugging purposes | ||||
#define RULE_SPACE 32 // ascii space | #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_DIGIT 15 // D digit | ||||
#define RULE_NONALPHA 16 // Z non-alpha | #define RULE_NONALPHA 16 // Z non-alpha | ||||
#define RULE_LETTERGP 17 // A B C H F G Y letter group number | #define RULE_LETTERGP 17 // A B C H F G Y letter group number | ||||
#define RULE_LETTERGP2 18 // L + 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_REPLACEMENTS 20 // section for character replacements | ||||
#define RULE_SKIPCHARS 23 // J | |||||
#define RULE_NO_SUFFIX 24 // N | #define RULE_NO_SUFFIX 24 // N | ||||
#define RULE_NOTVOWEL 25 // K | #define RULE_NOTVOWEL 25 // K | ||||
#define RULE_IFVERB 26 // V | #define RULE_IFVERB 26 // V |