Browse Source

[1.42.03 release]

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-fd96e6ae7743
master
jonsd 15 years ago
parent
commit
de52d78665

+ 40
- 2
dictsource/af_list View File

@@ -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&lt
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

+ 940
- 872
dictsource/af_rules
File diff suppressed because it is too large
View File


+ 14
- 1
dictsource/dict_phonemes View File

@@ -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.

+ 4
- 1
dictsource/en_list View File

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

+ 2
- 3
dictsource/en_rules View File

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

+ 33
- 0
dictsource/hu_list View File

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


+ 50
- 32
dictsource/hu_rules View File

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

+ 4
- 1
dictsource/ta_list View File

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

+ 118
- 24
dictsource/ta_rules View File

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

+ 23
- 22
platforms/windows/windows_dll/src/speak_lib.h View File

@@ -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
*/

+ 18
- 3
src/compiledata.cpp View File

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

+ 20
- 8
src/compiledict.cpp View File

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

+ 35
- 6
src/dictionary.cpp View File

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

+ 10
- 5
src/extras.cpp View File

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

+ 2
- 0
src/numbers.cpp View File

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

+ 9
- 5
src/readclause.cpp View File

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

+ 1
- 1
src/synthdata.cpp View File

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

+ 8
- 2
src/tr_languages.cpp View File

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

+ 8
- 7
src/translate.h View File

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

Loading…
Cancel
Save