@@ -290,11 +290,9 @@ skinheads _^_EN | |||
street _^_EN | |||
boy _^_EN | |||
square _^_EN | |||
appeal _^_EN | |||
apple _^_EN | |||
beachbuggy _^_EN | |||
beachvolley _^_EN | |||
browser _^_EN | |||
chart _^_EN | |||
coach _^_EN | |||
coke _^_EN | |||
@@ -307,7 +305,6 @@ event _^_EN | |||
firewall _^_EN | |||
freak _^_EN | |||
friendly _^_EN | |||
groupie _^_EN | |||
homepage _^_EN | |||
hooligan _^_EN | |||
interface _^_EN | |||
@@ -371,7 +368,6 @@ bbc _^_EN $alt | |||
boston _^_EN $alt | |||
bronx _^_EN $alt | |||
boyle _^_EN $alt | |||
clarence _^_EN $alt | |||
cyrus _^_EN | |||
cia _^_EN $alt | |||
fox _^_EN | |||
@@ -383,7 +379,7 @@ montreal _^_EN $alt | |||
oregon _^_EN $alt | |||
piccadilly _^_EN | |||
reynolds _^_EN $alt | |||
purvis _^_EN | |||
//purvis _^_EN | |||
white _^_EN $alt | |||
// PB French words | |||
@@ -1496,6 +1492,7 @@ rentrice $alt | |||
renæssance $alt | |||
ressource $alt | |||
restance $alt | |||
revanche $alt | |||
romance $alt | |||
seance $alt | |||
service $alt | |||
@@ -2001,6 +1998,7 @@ spartan $alt | |||
srilankan $alt | |||
sudan $alt | |||
taiwan $alt | |||
texan $alt | |||
tibetan $alt | |||
tongan $alt | |||
trojan $alt | |||
@@ -2161,7 +2159,7 @@ etik $alt | |||
eugenik $alt | |||
excentrik $alt | |||
fabrik $alt | |||
falkeblik $alt | |||
//falkeblik $alt | |||
folkloristik $alt | |||
fonetik $alt | |||
fysik $alt | |||
@@ -2183,6 +2181,7 @@ heuristik $alt | |||
homiletik $alt | |||
hydraulik $alt | |||
informatik $alt | |||
journalistik $alt | |||
kamik $alt | |||
karakteristik $alt | |||
kasuistik $alt | |||
@@ -2794,6 +2793,7 @@ homofoni $alt | |||
ironi $alt | |||
kakofoni $alt | |||
kapellani $alt | |||
katatoni $alt | |||
kleptomani $alt | |||
koloni $alt | |||
kompagni $alt | |||
@@ -2801,7 +2801,6 @@ kosmogoni $alt | |||
kvadrofoni $alt | |||
litani $alt | |||
ludomani $alt | |||
makaroni m&k@r'Vni $alt | |||
mani $alt | |||
misogyni $alt | |||
monomani $alt | |||
@@ -6561,16 +6560,16 @@ kontingenter $alt | |||
kontinuer $alt | |||
kontraher $alt | |||
kontrasigner $alt | |||
kontraster $alt | |||
kontrastere $alt | |||
kontribuer $alt | |||
kontroller $alt | |||
kontrollere $alt | |||
konturere $alt | |||
konvener $alt | |||
konverger $alt | |||
konverser $alt | |||
konverter $alt | |||
konvojere $alt | |||
konvoluter $alt | |||
konvolutere $alt | |||
kooperer $alt | |||
koordiner $alt | |||
kopiere $alt | |||
@@ -6628,7 +6627,7 @@ lakser $alt | |||
lamenter $alt | |||
laminer $alt | |||
lancer $alt | |||
lasere $alt | |||
//lasere $alt | |||
latiniser $alt | |||
lavpasteuriser $alt | |||
legaliser $alt | |||
@@ -6825,6 +6824,7 @@ patentere $alt | |||
patiner $alt | |||
patroniser $alt | |||
patruljere $alt | |||
afpatruljer $alt | |||
pausere $alt | |||
pelleter $alt | |||
pendulere $alt | |||
@@ -7175,7 +7175,7 @@ stoltser $alt | |||
strabadsere $alt | |||
stranguler $alt | |||
stratificer $alt | |||
strukturer $alt | |||
strukturere $alt | |||
omstrukturer $alt | |||
studere $alt | |||
indstudere $alt | |||
@@ -7218,7 +7218,7 @@ taktere $alt | |||
taktreguler $alt | |||
taljere $alt | |||
tamburer $alt | |||
tamponer $alt | |||
tamponere $alt | |||
tangere $alt | |||
tapetser $alt | |||
tarer $alt | |||
@@ -9623,6 +9623,7 @@ interferon $alt | |||
futon $alt | |||
føljeton fWljet'Vn $alt | |||
facon $alt | |||
kamæleon $alt | |||
lazaron $alt | |||
makron $alt | |||
melon $alt | |||
@@ -10232,6 +10233,7 @@ palæontolog $alt | |||
patolog $alt | |||
politolog $alt | |||
prolog $alt | |||
proktolog $alt | |||
psykolog $alt | |||
radiolog $alt | |||
runolog $alt | |||
@@ -10399,6 +10401,7 @@ zoologi $alt | |||
økologi $alt | |||
// final -ose - stressed o | |||
acidose $alt | |||
antibiose $alt | |||
apoteose $alt | |||
asbestose $alt | |||
@@ -10717,6 +10720,7 @@ processor $alt | |||
professor $alt | |||
provisor $alt | |||
revisor $alt | |||
sektor $alt | |||
sensor $alt | |||
sponsor $alt | |||
successor $alt | |||
@@ -11209,6 +11213,7 @@ fx fVegsemp@l // PB "fx" is short for 'for eksempel' | |||
emp $abbrev | |||
hbo $abbrev // TV station | |||
usa $abbrev | |||
kfum $abbrev | |||
who $abbrev $allcaps // PB World Health Organization | |||
ussr $abbrev $allcaps // Sovjet Union | |||
vsop $abbrev | |||
@@ -11234,6 +11239,8 @@ bh $abbrev | |||
(bh'er) b,e:h'O:V | |||
(l'chaim) l&kr'ajm | |||
scsi skVsi // PB | |||
ike ajk // PB name | |||
ikes ajks // PB | |||
// Try to catch errors | |||
@@ -53,7 +53,7 @@ p r s S t T v w | |||
x z | |||
Dictionary da_dict 2011-05-05 | |||
Dictionary da_dict 2011-07-21 | |||
& &# 0 3 @ @- a A | |||
aI e E i o O u V | |||
@@ -62,11 +62,11 @@ W W# y Y | |||
* - : ? b B d D | |||
dZ f g h j J k l | |||
l/2 l/3 m n N p r R | |||
s S t T tS v w x | |||
z Z | |||
R3 s S t T tS v w | |||
x z Z | |||
Dictionary hu_dict 2011-06-25 | |||
Dictionary hu_dict 2011-08-19 | |||
a A a: E e: i i: o | |||
o: u u: Y y y: Y: | |||
@@ -101,7 +101,7 @@ p Q r R s s; t T | |||
ts v x z | |||
Dictionary en_dict 2011-06-21 | |||
Dictionary en_dict 2011-08-17 | |||
0 3 3: @ @- @2 @5 @L | |||
a a# A: A@ aa aI aI@ aU | |||
@@ -151,7 +151,7 @@ l m n N p r s S | |||
s2 t v w Z | |||
Dictionary fr_dict 2011-05-21 | |||
Dictionary fr_dict 2011-08-14 | |||
@ @- a A~ e E E: E~ | |||
i I o O O~ u u: w | |||
@@ -201,17 +201,17 @@ q r r. s S s. t T | |||
t. th th. v w x z | |||
Dictionary ta_dict 2011-06-25 | |||
Dictionary ta_dict 2011-08-21 | |||
a a: aI aU e E e: i | |||
I i: o o: u U u2 u: | |||
U: V V# | |||
#X1 #X2 : ; b C d d. | |||
dZ f g h H j k l | |||
l. m n N n. n^ p Q | |||
r R s S s. t T t. | |||
th tS v w z z. | |||
# #X1 #X2 : ; b C d | |||
d. dZ f g h H j k | |||
l l. m n N n. n^ p | |||
Q r R s S s. t T | |||
t. th tS v w z z. | |||
Dictionary hy_dict 2008-12-22 | |||
@@ -326,7 +326,7 @@ k l m n p R s S | |||
t tS v w x | |||
Dictionary nl_dict 2011-06-08 | |||
Dictionary nl_dict 2011-07-23 | |||
8 @ @- a A a: A~ e | |||
E e# E2 e: EI eU i I | |||
@@ -388,7 +388,7 @@ S s# s; t T tS ts v | |||
w x z Z | |||
Dictionary ro_dict 2011-03-10 | |||
Dictionary ro_dict 2011-07-21 | |||
@ @- @I @U a aI aU e | |||
ea eI eo eU i i/ I^ iI | |||
@@ -416,7 +416,7 @@ t; ts tS; v x z Z z; | |||
Z; | |||
Dictionary sk_dict 2010-03-12 | |||
Dictionary sk_dict 2011-08-08 | |||
& @- a a: e e: i i: | |||
l- l: o o: oU r- r: u | |||
@@ -425,8 +425,8 @@ u: | |||
* ; b d d; dZ dz f | |||
g h j k l l^ m n | |||
N n^ p r R R^ R^/ s | |||
S t t; tS ts v x z | |||
Z | |||
S t t; tS ts v w x | |||
z Z | |||
Dictionary sq_dict 2008-12-22 | |||
@@ -524,14 +524,14 @@ l m n N p r s t | |||
tS v w z | |||
Dictionary am_dict 2010-10-02 | |||
Dictionary am_dict 2011-08-23 | |||
@ a e i o u y | |||
? b d dZ f g h j | |||
k l m n N n^ p R | |||
s S t tS ts v w x | |||
z Z | |||
: ? b d dZ f g h | |||
j k k` l m n N n^ | |||
p p` r R s S t t` | |||
tS tS` v w x z Z | |||
Dictionary ml_dict 2011-04-25 | |||
@@ -748,3 +748,28 @@ b d d. dZ f g h j | |||
k l l. m m# n N n# | |||
N# n. n.# n^ n^# p r s | |||
S t t. th tS v w z | |||
Dictionary et_dict 2011-07-01 | |||
& &: &i 8 8: 8u a A1 | |||
a: e E1 e: i I I1 i1 | |||
i: o O1 o: u U1 u: Y | |||
y Y: y: Yi yi | |||
: b d d^ dZ f g h | |||
j k l l^ m n N n^ | |||
p r R s S s2 s^ t | |||
t^ v w z Z | |||
Dictionary mt_dict 2011-07-29 | |||
@ a ai au e ei eu i | |||
I ie iu l- o u U ui | |||
y yi yY | |||
* : b c C d dZ f | |||
g h j k l m n p | |||
q r s S t tS v w | |||
x z Z |
@@ -46,7 +46,6 @@ u ju: | |||
v vi: | |||
w d'Vb@Lju: | |||
x Eks | |||
y waI | |||
z zEd | |||
?3 z zi: | |||
@@ -151,7 +150,8 @@ _´ a#kju:taksEnt | |||
_· mId@Ld0t | |||
_¸ sEd'Il@ | |||
_¹ su:p@skrIptw'0n | |||
_º maskjUlIn'O@dI2n@L | |||
//_º maskjUlIn'O@dI2n@L | |||
_º dI2gr'i:z | |||
_» raIt'gIl@mEt | |||
_¿ %Inv,3:tI2dkw'EstS@n | |||
@@ -391,6 +391,7 @@ ufo $abbrev | |||
ui $abbrev | |||
uk $abbrev | |||
un $abbrev $allcaps | |||
unhcr $abbrev | |||
url $abbrev | |||
usa $abbrev | |||
usb $abbrev | |||
@@ -570,7 +571,6 @@ anniversary anIv'3:s@ri | |||
anon a#n0n | |||
anonymous $2 | |||
another a#nVD3 | |||
answer aans3 | |||
ante anti | |||
antecedent antIs'i:d@nt | |||
antibody $1 | |||
@@ -950,6 +950,7 @@ customer k'Vst@m3 | |||
cutaway kVt@weI | |||
cutoff kVt0f | |||
cutout kVtaUt | |||
cwm kUm | |||
cyan saI'an | |||
cymru kVmri | |||
@@ -957,6 +958,7 @@ dahlia deIli:@ | |||
dais deIIs | |||
damaged d'amI2dZd | |||
dandelion dandI2laI@n | |||
ddu DI // Welsh | |||
de d@ $only | |||
debacle deIb'A:k@L | |||
debrief di:br'i:f | |||
@@ -1056,6 +1058,7 @@ dugout dVgaUt | |||
dungaree dVNga#r'i: | |||
duvet du:veI | |||
d'ye dj@ | |||
dynamo $1 | |||
ebook i:bUk | |||
eweek i:wi:k | |||
@@ -1187,6 +1190,7 @@ flexible flEksIb@L | |||
flier flaI3 | |||
flourish flVrI2S | |||
?3 flourish fl3:I2S | |||
flyby flaIbaI | |||
focus foUk@s // ed,ing | |||
foothold fUthoUld | |||
forage f0rI2dZ | |||
@@ -1436,6 +1440,7 @@ labor leIb3 | |||
labored leIb@d | |||
laborer leIb@r3 | |||
lager lA:g3 | |||
laity leI@ti | |||
landowner l'and,oUn3 | |||
las ,las | |||
?3 las ,lA:s | |||
@@ -1476,8 +1481,8 @@ liter li:t3 | |||
literature lItrI2tS3 | |||
live laIv $onlys | |||
live lIv $verb | |||
lived lIvd | |||
livecd l'aIvsi:d'i: | |||
livestock l'aIvst,0k | |||
lively laIvlI | |||
llama lA:m@ | |||
locale loUk'aal | |||
@@ -1528,7 +1533,6 @@ margarine mA@dZ@ri:n | |||
marijuana marI2w'A:n@ | |||
marshall mA@S@L | |||
martinet $3 | |||
massacre mas@k3 | |||
massage masA:Z | |||
mausoleum mO:s@li:@m | |||
mayhem meIhEm | |||
@@ -1565,6 +1569,7 @@ million mIli@n | |||
minibus mInIbVs | |||
mining maInIN // not mini | |||
minuet mInju:'Et | |||
minus maIn@s | |||
minute mInIt $onlys | |||
mirage mIrA:Z | |||
misery mIz@rI | |||
@@ -1934,6 +1939,7 @@ record rEkO@d $onlys | |||
record $verb | |||
redcross $2 | |||
redeye r'Ed,aI | |||
redial ri:daI@l | |||
redo ri:du: | |||
redone ri:d'Vn | |||
reference rEfr@ns | |||
@@ -2049,7 +2055,6 @@ sceptre sEpt3 | |||
sclera skli@r | |||
scourge sk3:dZ | |||
scrotum skroUt@m | |||
scythe saID | |||
seabed si:bEd | |||
sealion si:laI@n | |||
seance seI0ns | |||
@@ -2087,6 +2092,7 @@ sex sEks // sexism | |||
several sEvr@L | |||
shallow SaloU | |||
shampoo $2 | |||
shepherd SEp@d | |||
sheriff S'ErI2f | |||
shew SoU | |||
shia Si:@ | |||
@@ -2458,6 +2464,7 @@ Dumfries dVmfr'i:s | |||
Dyfed d'VvId | |||
Edinburgh EdInb%Vr@ | |||
Ely i:li | |||
Enfield $1 | |||
Exeter EksIt3 | |||
Exmoor EksmU@ | |||
Fylde faIld | |||
@@ -3002,6 +3009,7 @@ Carnegie kA@nEgi | |||
Cohen koU@n | |||
Cthulhu k@-Tu:l#u: | |||
Chrysler kraIzl3 | |||
Dante danteI | |||
Disney dIzni | |||
Dolce d0ltSeI | |||
Dvorak d@-vo@Zak |
@@ -52,6 +52,7 @@ | |||
sw) a (B 0 | |||
a (Be# eI | |||
w) a (Be# eI | |||
a (Cee+ a | |||
a (BeCo_ a | |||
a (BerA a | |||
a (BerC a | |||
@@ -86,7 +87,7 @@ | |||
w) a (d 0 | |||
ow) a (d @ | |||
ae i: | |||
aea i@ | |||
aea 'i@ | |||
@) aed (_S2 d | |||
ae (l eI | |||
h) ae (m i: | |||
@@ -164,6 +165,7 @@ | |||
@) awi (_ 'A:wI | |||
_) aw (k O: | |||
_) aw (ok a#w | |||
awr (_ aU@ | |||
C) a (x+ a | |||
_) a (x+ a | |||
ay eI | |||
@@ -306,6 +308,7 @@ | |||
acou (st a#ku: | |||
ac (quie ,a | |||
_) acre eIk@ | |||
mass) acre @k3 | |||
_) ac (ri ak | |||
ac (ro ak | |||
m) acro (@ akr@ | |||
@@ -456,6 +459,7 @@ | |||
ai (_ aI | |||
aic (_ 'eIIk | |||
aic (al 'eIIk | |||
aie eI@ | |||
ai (i aI | |||
@) ai (Ca_ 'eI | |||
aig (n 'eI | |||
@@ -640,7 +644,7 @@ | |||
@erd) am (_ am | |||
?!3 &h) am (_N @m | |||
&s) am (_ @m | |||
@r) am (a 'A:m | |||
@r) am (a_ 'A:m | |||
_) am (al a#m | |||
amateur am@t3 | |||
amaz a#meIz | |||
@@ -777,6 +781,7 @@ | |||
tr) an (si an | |||
tr) ansis anz'Is | |||
tr) an (som an | |||
answ (er aans | |||
ante (nn ant'E | |||
_) anti (@P4 ,antI // prefix | |||
ant (iq ant | |||
@@ -868,11 +873,13 @@ | |||
&h) ar (d_ 3 | |||
&ch) ar (d 3 | |||
&k) ar (d_ 3 | |||
&p) ar (d_ 3 | |||
&st) ar (d_ 3 | |||
&w) ar (d_ 3 | |||
aw) ar (d O@ | |||
eot) ar (d_ A@ | |||
&z) ar (d_ 3 | |||
ar (dry 3 | |||
h) ar (ass @r | |||
&m) aran @ran | |||
sep) ar (at 3r | |||
@@ -1456,7 +1463,7 @@ | |||
co (mpou k0 | |||
co (mprehen k0 | |||
co (mprom k0 | |||
co (mpt k0 | |||
_) comp (tr k%0m | |||
co (mputa k,0 | |||
_) co (mr k0 | |||
_) con (@ k%0n | |||
@@ -2206,7 +2213,6 @@ | |||
&) en (ce_ @n | |||
?8 &) en (ce_ En | |||
f) en (ce_ En | |||
g) ener (al En@r | |||
_) en (ough I2n | |||
.group eo | |||
@@ -2246,6 +2252,7 @@ | |||
%C) ers (_S4 3z | |||
?8 %C) ers (_S4 a#z | |||
ss) er (_S2 3 | |||
ss) ers (_S3 3z | |||
all) er (_ 3 | |||
mb) er (_ 3 | |||
lin) er (_S1 3 | |||
@@ -2255,8 +2262,10 @@ | |||
_) er (A I2r | |||
_) er 3: | |||
_) err (A Er | |||
@) eral (ity @r'al | |||
&) eram (ent r@m | |||
X) era (_ i@r@ | |||
cam) era @-r@ | |||
XC) err Er | |||
erre 'e@ | |||
erred (_ '3:d | |||
@@ -2717,6 +2726,7 @@ | |||
&) ico (_ =I2koU | |||
i (cus_ =I | |||
_) i (d aI | |||
up) i (de I | |||
ir) i (d I | |||
acc) i (d I | |||
c) i (dal 'aI | |||
@@ -3096,7 +3106,7 @@ | |||
inte (llec Int@ | |||
_) inter (@P5 ,Int3 // prefix | |||
_) inter (AP5 ,Int@r | |||
inter (est Int@r | |||
inter (est Intr | |||
interfer Int@f'i@3 | |||
_) int (erio+ %Int | |||
_) inter (n_ %Int3: | |||
@@ -3183,7 +3193,6 @@ | |||
inism (_ InIz@m | |||
infor (matio Inf3 | |||
ino (_ 'i:noU | |||
_m) in (us aIn | |||
_m) inu (te aIn'ju: | |||
_m) inute (m InIt | |||
_) intra Intr@ | |||
@@ -3203,7 +3212,7 @@ | |||
n) ion =i@n | |||
v) io (l aI@ | |||
ione (_ 'aI@ni | |||
g) io (n @ | |||
g) io (n+ @ | |||
m) io (n I20 | |||
sh) io (n @ | |||
_) io (n aI0 | |||
@@ -3230,6 +3239,7 @@ | |||
ir (at %aIr | |||
ir (ate =i@r | |||
ire aI@ | |||
ir (ee aI@ | |||
?8 ire aIa# | |||
s) ir (en aI@ | |||
c) ire (n aIr@ | |||
@@ -3307,7 +3317,6 @@ | |||
.group it | |||
_) it' %It | |||
_m) it (o aIt | |||
it (a_N 'i:t | |||
it (o_ 'i:t | |||
@@ -3363,7 +3372,7 @@ | |||
@) iv (e Iv | |||
iv (e# aIv | |||
h) iv (e_ aIv | |||
l) ive (l aIv | |||
_l) ive (B aIv | |||
l) iv (en aIv | |||
r) ival aIv@L | |||
ct) iv (al 'aIv | |||
@@ -3456,6 +3465,7 @@ | |||
Al) l (_ | |||
&) lim (ent lIm | |||
&B) ling (_ lIN | |||
&B) lings (_ lINz | |||
ng) ling (_ @-lIN | |||
&t) ling (_ _lIN | |||
&l) ling (_S4vd IN | |||
@@ -3679,6 +3689,7 @@ | |||
X) o (By_ oU | |||
_) o (Cy+ 0 | |||
o (Be# oU | |||
oi (ce# OI | |||
o (BeCo_ 0 | |||
o (BenC oU | |||
o (Beon 'oU | |||
@@ -3891,7 +3902,6 @@ | |||
@@) ol (ar 'oUl | |||
h) ol (ar 0l | |||
m) ole (st @lE | |||
b) ol (t oUl | |||
c) ol (our Vl | |||
@@) ol (us 'oUl | |||
contr) ol oUl | |||
@@ -3924,7 +3934,7 @@ | |||
olm (_ oUm | |||
olo (gi '0l@ | |||
olo (gic @l'0 | |||
v) olt oUlt | |||
olt oUlt | |||
w) olv Ulv | |||
N_p) oly ,0lI | |||
@@ -4173,7 +4183,7 @@ | |||
os (al_ 'oUz | |||
_l) os (e u:z | |||
ose (_ oUz | |||
purp) ose (_ @s | |||
purp) ose @s | |||
_r) os (e# oUz | |||
c) os (ec oUs | |||
c) os (ine_ oUs | |||
@@ -4329,6 +4339,7 @@ | |||
y) ou (t_ aU | |||
ou (v u: | |||
oux (_ u: | |||
ou (z u: | |||
.group ov | |||
@) ov (al u:v | |||
@@ -4439,6 +4450,7 @@ | |||
_) pt (Y t | |||
ph f | |||
ph (am_ p | |||
phenome (n fI2n0mI | |||
phenyl f,i:naIl | |||
p (haza p | |||
@@ -4651,12 +4663,10 @@ | |||
&ant) ry (_S2 r%I | |||
.group re | |||
// _) re (@P2 %ri: | |||
_) re (C@ rI2 | |||
// _) re (A rI2 | |||
&Ct) red (_ @d | |||
&B) red (_ r@d | |||
noeuv) re @ | |||
uv) re @ | |||
rer (_ r@ | |||
re (_ 3 | |||
A) re (_ r@ | |||
@@ -4792,7 +4802,7 @@ | |||
_) scar (A ske@ | |||
_) scar (a skar | |||
scarc ske@s | |||
sc (i s | |||
sc (L02 s | |||
sci (b s@ | |||
sci (_ =skaI | |||
scis (_ =skIs | |||
@@ -5154,14 +5164,15 @@ | |||
@) u (late =jU | |||
u (le_ ju: | |||
s) u (le_ ju: | |||
f) ul (fil %Vl | |||
f) ul (fil %Ul | |||
j) u (li u: | |||
@) uli (_ =jUlaI | |||
b) ull Ul | |||
f) ull Ul | |||
p) ull Ul | |||
b) ully UlI | |||
_f) ully UlI | |||
_f) u (lC U | |||
f) u (lcr V | |||
&f) ully (_ @l%I | |||
?8 &f) ully (_ Vl%I | |||
&) u (lous_ =jU | |||
@@ -5291,7 +5302,7 @@ | |||
p) un (ish Vn | |||
r) un (i u:n | |||
un (A Vn | |||
un (er ju:n | |||
C) un (er ju:n | |||
_) un (reC@P2 ,Vn | |||
un (regi %Vn | |||
@@ -5381,6 +5392,7 @@ | |||
_) wr (Y r | |||
C) w (_ w@ | |||
C) w (X U // Welsh names | |||
wh w | |||
wr r | |||
C) we (_ =wI | |||
@@ -5424,6 +5436,8 @@ | |||
xure (_ kS%U@ | |||
.group y | |||
_) y (_ waI | |||
-) y (- @ // Welsh names | |||
y j | |||
_) y' (CP2 j@ | |||
y (C_ I | |||
@@ -5644,6 +5658,7 @@ | |||
Ette (_ 'Et | |||
E (tic_ E | |||
Eus (_ I2@s | |||
Ew (_ u: | |||
ob) Ey (_ eI | |||
@@ -1,7 +1,7 @@ | |||
// French translation rules for Espeak | |||
// *************************************************************************** | |||
// * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||
// * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
// * email: [email protected] * | |||
// * * | |||
// * This program is free software; you can redistribute it and/or modify * | |||
@@ -27,7 +27,7 @@ | |||
// http://www.fluxnic.net/cicero | |||
// | |||
// Rules are now maintained by Michel Such <[email protected]> | |||
// Last update: 2011-05-20 Michel Such <[email protected]> | |||
// Last update: 2011-08-13 Michel Such <[email protected]> | |||
// | |||
// Letter classes: | |||
@@ -63,7 +63,7 @@ | |||
// When these diphtonges are after a consonant folllowing e, e is not mute | |||
.L10 ia ie io ua ue ui uo | |||
.L11 b p | |||
.L12 é è aï al ib ie l om on ré | |||
.L12 é è aï al ib ie iq l om on ym ré | |||
// Words ending "son" pust sound english if preceded by L13 | |||
.L13 d g k l p er hn | |||
@@ -1486,6 +1486,7 @@ A) wn _^_en | |||
_) yahoo (P5 ja'u | |||
ym (L11 E~ // tympan | |||
ym (_ E~ // thym | |||
X) ys (_ is | |||
yn (K E~ // laryngite |
@@ -447,7 +447,8 @@ WC ve:tse: $allcaps | |||
LST ElESte: $allcaps | |||
BAR bAR2 $allcaps | |||
//SS EsEs $allcaps | |||
ALT Alt $allcaps | |||
TAB tAb $allcaps | |||
(a . m .) An^n^i||m'int $hasdot | |||
ún u:JnEvEzEt: $hasdot | |||
dr doktoR2 $hasdot | |||
@@ -1773,6 +1774,84 @@ fajták $unstressend | |||
körülményei $unstressend | |||
bízva $unstressend | |||
száma $unstressend | |||
képes $unstressend | |||
számoltak $unstressend | |||
fakadó $unstressend | |||
firtatta $unstressend | |||
ítélték $unstressend | |||
itélték $unstressend | |||
fogják $unstressend | |||
bennem $unstressend | |||
állhat $unstressend | |||
lényege $unstressend | |||
derített $unstressend | |||
gyártotta $unstressend | |||
beszélni $unstressend | |||
számítógéppel $unstressend | |||
változást $unstressend | |||
lettek $unstressend | |||
tapasztalattal $unstressend | |||
súlyát $unstressend | |||
hatnak $unstressend | |||
rugalmas $unstressend | |||
anyagok $unstressend | |||
tárgyak $unstressend | |||
váltak $unstressend | |||
szűrő $unstressend | |||
szűrők $unstressend | |||
vitát $unstressend | |||
tevő $unstressend | |||
lévő $unstressend | |||
ajánlat $unstressend | |||
jelentkezhetnek $unstressend | |||
léphessen $unstressend | |||
építeni $unstressend | |||
darabra $unstressend | |||
figyelmesek $unstressend | |||
láttuk $unstressend | |||
hullott $unstressend | |||
szóltak $unstressend | |||
hallatszott $unstressend | |||
keresték $unstressend | |||
gépeket $unstressend | |||
követte $unstressend | |||
keresik $unstressend | |||
éreztem $unstressend | |||
vitatta $unstressend | |||
vitatja $unstressend | |||
útját $unstressend | |||
nehézségeket $unstressend | |||
város $unstressend | |||
polgármester $unstressend | |||
elkezdődött $unstressend | |||
vezető $unstressend | |||
feladatokat $unstressend | |||
jelzem $unstressend | |||
valósul $unstressend | |||
készül $unstressend | |||
megbízatást $unstressend | |||
polgármestert $unstressend | |||
nyertek $unstressend | |||
került $unstressend | |||
jelezte $unstressend | |||
végezni $unstressend | |||
tartunk $unstressend | |||
személy $unstressend | |||
fizetni $unstressend | |||
Éva $unstressend | |||
bánik $unstressend | |||
kiszolgáló $unstressend | |||
alapul $unstressend | |||
jelezni $unstressend | |||
fogadta $unstressend | |||
kapcsolat $unstressend | |||
tervet $unstressend | |||
szolgáltatását $unstressend | |||
segíti $unstressend | |||
felkerültek $unstressend | |||
mutatni $unstressend | |||
korlátozott $unstressend | |||
// word pairs | |||
(hogy a) h,oJ,A |
@@ -44,7 +44,7 @@ | |||
bb (L01 b // only speak one b if followed by a consonant | |||
bbr bR2 //special exception with always need executing | |||
bbj bj //special exception with always need executing | |||
.group c | |||
c ts | |||
@@ -109,7 +109,17 @@ fegyen) c (csoport ts | |||
cs (-sz tS|s //need spokening single ts and single s phoneme | |||
ccs (-sz tS|s //need spokening single ts and single s phoneme | |||
licen) c (sértés ts | |||
_fil) c (csík ts | |||
_pia) c (csarnok ts | |||
_pol) c (csat ts | |||
_mala) c (sivít ts | |||
_kilen) c (csöv ts | |||
_kilen) c (csomó ts | |||
szanité) c (cs ts | |||
pokró) c (cs ts | |||
kul) cs (zörg tS | |||
kartá) cs (zápo tS | |||
ínyen) c (ség ts | |||
.group ch | |||
anar) ch (i h | |||
@@ -285,6 +295,10 @@ standar) d (jegy d | |||
harma) d (szint d | |||
kó) d (jel d | |||
harma) d (sor d | |||
beszé) d (javít d | |||
rekor) d (sugár d | |||
máso) d (szaká d //For example másodszakács, másodszakáccsá words need spokening single d phoneme before s phoneme | |||
_ná) d (söv d //for example nádsövénnyé word | |||
.group dz | |||
fogó) dz (kod ts | |||
@@ -332,6 +346,7 @@ smarag) dz (öld d|z | |||
kapáló) dz z | |||
_ó) dz (ko ts | |||
gyűrű) dz (ik z | |||
burkoló) dz z | |||
.group e | |||
e E | |||
@@ -374,7 +389,9 @@ kapáló) dz z | |||
ggb gb //special exception with always need executing | |||
ggr gR2 //special exception with always need executing | |||
?1 _) goeth gY:tE | |||
_me) ggy (en_ J: //Single meggyen word need spokening longer J: phoneme | |||
me) g (gy g | |||
ggy (L01 J | |||
ggyb Jb //special exception with always need executing | |||
ggyr JR2 //special exception with always need executing | |||
@@ -423,6 +440,17 @@ arcüre) g (gyulladás g | |||
szöve) g (gyűjt g | |||
ta) g (gyűl g | |||
gu) gg (ol g | |||
orszá) g (gyarapod g | |||
anya) g (gyár g | |||
anya) g (gyűjt g | |||
végi) g (gya g | |||
me) ggy (mag J | |||
me) ggy (íz J: | |||
bádo) g (gy g | |||
szö) g (gyár g | |||
han) g (gyakor g | |||
ele) ggy (é J: | |||
_jé) g (gyár g | |||
.group gy | |||
gy J | |||
@@ -530,6 +558,8 @@ harmince) gy (edik J: | |||
e) gy (összeg J: | |||
e) gys (ík J|S //for example egysíkú word need spokening single J and S phoneme | |||
_e) gy (öntet J: | |||
tár) gy (sor J | |||
.group h | |||
h h | |||
@@ -562,6 +592,7 @@ harmince) gy (edik J: | |||
_sz) í (vattak i | |||
_sz) í (vattákk i | |||
_sz) í (vató i | |||
_v) í (zi i //for example vízipipa, vízimentők beginning words need spokening i, not i: phoneme | |||
.group j | |||
j j | |||
@@ -613,6 +644,7 @@ harmince) gy (edik J: | |||
_) közt kYst | |||
k (-k k: //for example marok-körző word need cut one k letter and need spokening k: phoneme only | |||
k-) k //silent with second k phoneme | |||
_játé) kk (liens k: //exceptiof for kk (L01 rule | |||
.group l | |||
@@ -702,7 +734,6 @@ bagate) ll (iz l | |||
bű) n (jel n | |||
negyve) n (yard n | |||
ötve) n (yard n | |||
benzi) n (jegy n | |||
elle) n (javaslat n | |||
késő) n (jövő n | |||
közbe) n (jár n | |||
@@ -745,6 +776,10 @@ helybe) n (jár n | |||
idé) ny (jel n^ | |||
vagyo) n (nyilatkozat n //for example vagyonnyilatkozat word need spokening single n phoneme before n^ phoneme, not two n^n^ phoneme. | |||
szí) n (jelzés n | |||
kormá) ny (jelentés n^ | |||
benzi) nj nj | |||
mikrofo) n (nyílás n | |||
szí) n (nyom n | |||
.group o | |||
o o | |||
@@ -835,6 +870,9 @@ működé) s (zava S | |||
viselkedé) s (zava S | |||
alkalmazá) s (szerver S | |||
fá) s (szárú S | |||
ritmu) s (zavar S | |||
pedagógu) s (sztrájk S | |||
.group ss | |||
ssz ss2 | |||
@@ -843,6 +881,7 @@ alkalmazá) s (szerver S | |||
_má) ssz (ó Ss | |||
mennydörgé) ssz (erű Ss | |||
robbaná) ss S: | |||
hamva) ssz s: | |||
robbaná) ssz (er Ss | |||
danubiu) ss s: //a radio station name | |||
danubiu) ssz s: //a radio station name | |||
@@ -936,7 +975,7 @@ megállapodá) ssz (erű Ss | |||
meglepeté) ssz (erű Ss | |||
motoro) ssz (án Ss | |||
ülé) ssz (ak Ss | |||
tölté) ssz (abályoz Sss | |||
tölté) ssz (abályoz Ss | |||
orvo) ssz (övetség Ss | |||
orvo) ssz (akértő Ss | |||
orvo) ssz (emély Ss | |||
@@ -1022,6 +1061,11 @@ települé) ssz (er Ss //for example településszerkezet word need spok | |||
gyor) ssz (űr Ss //for example gyorsszűrő word need spokening single S and s phoneme | |||
_a) ssz (iszt s //for example the asszisztens word need spokening one s phoneme | |||
eltu) ss (ol S | |||
ellátá) ssz (er Ss | |||
égé) ssz (ag Ss | |||
csapá) ssz (erű Ss | |||
menekülé) ssz (erű Ss | |||
_ökrö) ssz (ekere Ss | |||
.group sz | |||
sz s | |||
@@ -1056,6 +1100,12 @@ rongyo) szs (ák SZ | |||
_ka) sztsze st|sE | |||
szemete) szs (ák SZ | |||
dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme | |||
_búzá) szs (ák SZ | |||
_szene) szs (ák SZ | |||
_szalmá) szs (ák SZ | |||
va) szs (anér SZ | |||
gaboná) szs (ák SZ | |||
va) sz (ápor Sz | |||
.group t | |||
t t | |||
@@ -1175,6 +1225,7 @@ interne) tj (egy tj | |||
álla) tj (ólét tj | |||
dolgoza) tj (avít tj | |||
természe) tj (ár tj | |||
terüle) tj (elöl tj | |||
.group ts | |||
ts (_S2 tS //general rule with word end of ts letters | |||
@@ -1377,7 +1428,7 @@ terüle) ts (áv t|S | |||
_hé) tsz (ob t|s //same as prewious rule | |||
gyakorla) ts (oroz t|S | |||
támogato) ts (ág tS: | |||
já) tsz (hass ts | |||
.group tt | |||
tt t: | |||
@@ -1501,7 +1552,7 @@ _szára) zs (ág SS | |||
találko) z (t s | |||
eszkö) z (sor z | |||
gő) z (síp z | |||
matró) z (sapka z | |||
matró) z (sapk z | |||
nehé) z (súly z | |||
tör) zsz (ászló Z|z | |||
zsz z|s //general exception. Need difference first z and second sz phoneme. eg: rajzszög, rajzszeg, mézszín words. | |||
@@ -1575,6 +1626,14 @@ magyará) z (kod s | |||
pofo) z (kod s | |||
ezkö) z (sáv z | |||
eszkö) z (sáv z | |||
_mé) z (sárg z | |||
tű) z (sáv z | |||
_tí) z (sor z | |||
_szá) z (sor z | |||
ré) z (sisak z | |||
matró) z (zsák z | |||
ré) z (sodrony z | |||
há) z (sarkot z | |||
.group | |||
$ dolla:R2 |
@@ -150,22 +150,23 @@ een @n $only | |||
ən @-n // char.replacement for 'n | |||
ət t // char.replacement for 't | |||
// pronouns | |||
ik $u | |||
me $u | |||
jij $u | |||
je $u | |||
gij $u | |||
ge $u | |||
u $u | |||
hij $u | |||
zij $u | |||
ze $u | |||
wij $u | |||
we $u | |||
// pronouns (may have -zelf suffix) | |||
ik %Ik | |||
me m@ | |||
jij j%EI | |||
je j@ | |||
gij Q%EI | |||
ge g@ | |||
u %y | |||
hij h%EI | |||
zij z%EI | |||
ze z@ | |||
wij v#%EI | |||
we v#@ | |||
jullie $u | |||
hen $u | |||
zich $u | |||
hen h%En | |||
zich z%Ix | |||
onszelf Ons'Elf | |||
// possessives | |||
mijn $u | |||
@@ -229,7 +230,7 @@ dat $u $pause // that | |||
hoewel $pause // although | |||
of $u $pause // whether | |||
omdat $pause // because | |||
nadat $u $pause // after | |||
nadat $u2 $pause // after | |||
nudat $pause // now that | |||
sinds $pause // since | |||
tenzij $pause // unless | |||
@@ -953,6 +954,7 @@ mokkel $alt | |||
mormel $alt | |||
mortel $alt | |||
morzel $alt | |||
navel $alt | |||
obstakel $alt | |||
parabel $alt | |||
partikel $alt | |||
@@ -1451,9 +1453,9 @@ onderhandelingsnota ,ond@r'hAnd@lINs,no:ta: | |||
ongastvrij OnQAstvr'EI | |||
ongelooflijk $3 | |||
ongemakkelijk $3 | |||
ongelukkig $3 | |||
//ongelukkig $3 | |||
ongerieflijk $3 | |||
ongrondwettig $3 | |||
//ongrondwettig $3 | |||
partijvoorzitters $2 | |||
pistache pist'AS | |||
proces $2 | |||
@@ -1478,6 +1480,9 @@ vrouwengek $alt3 | |||
waarschijnlijk $2 | |||
wanen v#a:n@n | |||
wangen v#AN@n | |||
wanluidend $2 | |||
wanschapen $2 | |||
wantrouwend $2 | |||
ziekenhuisbevalling zi:k@nhWysb@vAlIN | |||
@@ -1495,6 +1500,7 @@ Ingrid IN@-*It | |||
Justine Zyst'in | |||
kennedy kEn@dE | |||
Laurent lo:r'An^ | |||
Naomi $2 | |||
Nys nEIsd'WyzEnt | |||
//Trademarks | |||
@@ -1508,7 +1514,24 @@ google gu:g@l | |||
alexandrië $3 | |||
canada kAna:da: | |||
Kinshasa kInS'a:sa: | |||
Nairobi nAjr'o:bi | |||
Napel $alt | |||
Rochefort roS'for | |||
Zelzate zelzat@ | |||
(vond dat de) vOn_tA_t@ | |||
nadelig $2 // nadelig(e) | |||
nadelige $2 | |||
naderhand $3 | |||
nadien $2 $only | |||
nadrukke $2 // nadrukkelijk | |||
nafta nAfta: | |||
nalatig $2 // nalatig(e) | |||
nalatige $2 | |||
nasaal $2 | |||
nasi nAsi | |||
navoel $2 // navoelbaar(/bare) | |||
navulbaar $2 | |||
@@ -1,6 +1,8 @@ | |||
// translation rules for Dutch | |||
// This file is UTF-8 encoded | |||
// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant | |||
.L01 g k | |||
@@ -34,7 +36,6 @@ | |||
aire (_ 'E:r@ | |||
air (_ 'Er | |||
@) agne (_ 'An^@ | |||
ale (_ 'a:l@ | |||
@) ant (_ 'Ant | |||
@) ant (e_ 'Ant | |||
@) ant (en_ 'Ant | |||
@@ -51,7 +52,8 @@ | |||
bs (_N ps | |||
baan ba:n | |||
&) baar (_ =ba:r | |||
&) baar (_S4 =ba:r | |||
&) bare (_S4 =ba:r@ | |||
_) bij (C@P3 b'EI | |||
_) binnen (P6 b'In@n | |||
_) boven (P5 b'o:v@n | |||
@@ -145,7 +147,7 @@ | |||
.group e | |||
e e# // [e:] but change to [@] in unstressed syllables | |||
X) e e: // first syllable in a word | |||
&C) e (_S1qd @ | |||
e (_ @ | |||
e (CK E | |||
e (x E | |||
@@ -157,6 +159,12 @@ | |||
eeuw eU | |||
eu Y: | |||
&C) e (_S1qd @ | |||
KAC) e (_S1e @ // remove 'e' and double the vowel | |||
el) e (_+S1qd @ | |||
er) e (_+S1qd @ | |||
ig) e (_+S1qd @ | |||
ea (_ 'e:a: | |||
eau o: //words with French origin | |||
@) ee (_ 'e: | |||
@@ -188,12 +196,17 @@ | |||
&) em (_ @m | |||
&) e (ment @ | |||
&) e (nissen_ @ | |||
&) en (_S2qd @n | |||
&) en (_S2qd @n // double the previous vowel | |||
KAC) en (_S2e @n | |||
el) en (_+S2qd @n | |||
er) en (_+S2qd @n | |||
&) ens (_S3q @ns | |||
ll) en (_S3 @n | |||
&) end (_ @nd | |||
&) ende (_ @nd@ | |||
&) enden (_ @nd@n | |||
&) ende (_S1 @ | |||
&) enden (_S2 @n | |||
eden e:d@n | |||
&) ent (_$w_alt =@nt | |||
@) ent (_ 'Ent | |||
@@ -205,7 +218,8 @@ | |||
@) ent (ste_ 'Ent | |||
ag) ent 'Ent | |||
@j) es (_ @s | |||
@) es (_S2qd 'Es | |||
@) es (_S2qd 'Es // double the previous vowel | |||
KAC) es (_S2e @s | |||
@) essen (_S5qd 'Es@n | |||
@) eres (_S4qd @r'Es | |||
@) eressen (_S7sq @r'Es@n | |||
@@ -268,6 +282,7 @@ | |||
.group g | |||
g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | |||
gg Q | |||
s) g x | |||
_) ge (@P2 Q@ | |||
ge (bied Q@ | |||
@@ -335,13 +350,13 @@ | |||
ie (CtjeX_ 'i | |||
ie (ren_ 'i | |||
ie (rd_ 'i | |||
@) ig (_S2dq @x | |||
@) ige (_S3dq @Q@ | |||
@) igen (_ @Q@n | |||
@) iger (_ @Q@r | |||
@) igere (_ @Q@r@ | |||
@) igst (_ @Qst | |||
@) igste (_ @Qst@ | |||
@) ig (_S2dq =@x | |||
@) ige (_S3dq =@Q@ | |||
@) igen (_ =@Q@n | |||
@) iger (_ =@Q@r | |||
@) igere (_ =@Q@r@ | |||
@) igst (_ =@Qst | |||
@) igste (_ =@Qst@ | |||
ij (_ 'EI | |||
ij (e_ 'EI | |||
@) ij (n_ 'EI | |||
@@ -410,10 +425,21 @@ _) inn (@P2 'I // ?? inneren | |||
n (k$w_alt3 n | |||
_) na (C@@P2 n'a: | |||
_) na (tion na: | |||
_) na (C@ n'a: | |||
_) na (C% nA | |||
_) na (cht nA | |||
_) narci (s n%ArsI | |||
_) na (rc n%A | |||
_) na (der na: | |||
_) na (tion na: | |||
_) nano (@P4 n'a:no: | |||
_) na (polA n%a: | |||
napoleon n%a:po:l@jOn | |||
_) natuur na:t'yr | |||
naturel na:tyr'El | |||
na (tur n%a: | |||
na (vig n%a: | |||
_) na (vr na: | |||
_) na (volg@ n%a: | |||
_) noord (@P5 no:rd | |||
_) nieuws (@P6 n'iws | |||
@@) nis (_S3 nIs | |||
@@ -442,11 +468,13 @@ _) inn (@P2 'I // ?? inneren | |||
_) on (@P2 %On | |||
oo (X 'o: | |||
oon 'o:n // in compounds, eg. telefoongesprek | |||
oo (C_ 'o: | |||
_) oost (@P4 o:st | |||
_) op (@@P2 'Op | |||
_) open (@P4 'o:p@n | |||
_) op (era 'o:p | |||
_) op (tion Op | |||
@at) or (_ 'o:r | |||
ou (che_ u | |||
ouch (en_ uS | |||
_) over (@P4 ,o:v@r | |||
@@ -525,7 +553,7 @@ _) inn (@P2 'I // ?? inneren | |||
s (s | |||
A) s (A z | |||
s (b z | |||
s (g z | |||
s (d z | |||
sc s | |||
sch sx | |||
sch (_ s | |||
@@ -536,6 +564,8 @@ _) inn (@P2 'I // ?? inneren | |||
sj S | |||
@@) s (_S1 s | |||
sc (oop sk | |||
sc (opi sk | |||
&) sel (_ =s@l | |||
&) selen (_ =s@l@n | |||
@) si (o S | |||
@@ -623,6 +653,7 @@ _) inn (@P2 'I // ?? inneren | |||
.group v | |||
v v | |||
s) v f | |||
_) van (@P3 v%An | |||
_) vanzelf (@P7 vAnz,Elf | |||
@@ -642,7 +673,14 @@ _) inn (@P2 'I // ?? inneren | |||
_) wan (@P3 v#'An | |||
_) wan (L01@P3 v#'AN | |||
_) wan (del v#An | |||
_) wanhopig v#Anh'o:p@Q | |||
_) wan (kel v#AN | |||
_) wann (eer v#An | |||
_) wanordelijk v#An_|'Ord@l@k | |||
_) wansmakelijk v#Ansm'a:k@l@k | |||
_) wanstaltig v#Anst'Alt@Q | |||
_) wantrouwig v#Antr'VU@Q | |||
_) wanvoeglijk v#Anv'uxl@k | |||
_) weg (@P3 v#'EQ | |||
_) weg (en v#e:Q | |||
_) weg (e_ v#e:Q // bewegelijk | |||
@@ -664,7 +702,10 @@ _) inn (@P2 'I // ?? inneren | |||
.group z | |||
z z | |||
z (z | |||
s) z | |||
zele (_S4 ze:l@ // common suffix for cities. | |||
@) zelf (_S4 s'Elf | |||
_) zoge (@P4 z,og@ | |||
_) zuid (@P4 zWyt | |||
@@ -329,6 +329,7 @@ | |||
ou (_N 'oU | |||
ou (_ ou | |||
o (AAA o | |||
@C) o (riii_ 'o | |||
.group p |
@@ -261,6 +261,9 @@ dlh dl-h | |||
stĺp stl:p | |||
plch pl-x | |||
čln tSl-n | |||
plť pl-t; | |||
tĺk tl:k | |||
vlk vl-k | |||
// don't soften (d,n,t) before e,i | |||
aktívni $alt |
@@ -89,6 +89,8 @@ _[ id.V||sadUrVm // இட சதுரம் | |||
_] vVlV||sadUrVm // வல சதுரம் | |||
_{ id.V||gVn.Vm // இட கணம் | |||
_} vVlV||gVn.Vm // வல கணம் | |||
< kuRaIvU // குறைவு | |||
> migUdi // மிகுதி | |||
_" me:Rgo:l. // மேற்கோள் | |||
_' ot.RaI||m'e:Rgo:l. // ொற்றை மேற்கோள் | |||
__ ad.ig||ko:d.U // அடிக் கோடு | |||
@@ -111,6 +113,8 @@ U+bf9 ru:ba:j | |||
// abbreviations | |||
ரூ ru:ba:j $dot $only | |||
(பி . ஏ) bije: $dot | |||
(கி . மீ) kilo:mi:t.t.Vr $dot | |||
// numbers | |||
_0 suz.ijVm // சுழியம் | |||
@@ -182,9 +186,50 @@ _1M3 orUko:d.ie: | |||
_dpt _pul.l.i | |||
// drop final [U] when followed by an ordinal suffix | |||
_1o onR | |||
_2o irVn.d. | |||
_3o mu:nR | |||
_4o na:ng | |||
_5o aInd | |||
_6o a:R | |||
_7o ;e:l | |||
_8o ;et.t. | |||
_9o onbVd. | |||
_10o patt | |||
_11o patinonR | |||
_12o pVnnirVn.d. | |||
_19o pattonbVd | |||
_20o irUbVd | |||
_30o muppVd // முப்பது | |||
_40o na:RpVd | |||
_50o aImbVd | |||
_60o aRUbVd | |||
_70o ;ez.UbVd | |||
_80o ;en.bVd | |||
_90o ton.n.u:R | |||
_1Co nu:R | |||
_2Co irUnu:R | |||
_3Co munnu:R | |||
_4Co na:nu:R | |||
_5Co aInu:R | |||
_6Co aRUnu:R | |||
_7Co ;ez.Unu:R | |||
_8Co ;en.n.u:R | |||
_#ம் a:m // ordinal suffix | |||
_#-ம் a:m // ordinal suffix | |||
_#ல் il | |||
_#வது a:vVdU | |||
_#வதும் a:vVdUm | |||
_#வதுமாக a:vVdUma:gV | |||
_#-ம் a:m // ordinal suffix with hyphen | |||
_#-ல் il | |||
_#-வது a:vVdU | |||
_#-வதும் a:vVdUm | |||
_#-வதுமாக a:vVdUma:gV | |||
// English words | |||
tamil தமிழ் $text | |||
@@ -305,7 +350,9 @@ tamil தமிழ் $text | |||
பந்தா $alt | |||
பிரா bra: | |||
ப்ரா $alt | |||
(பி . ஏ) bije: | |||
பலம் $alt | |||
பலமாக $alt | |||
பலமா $alt | |||
// initial த as [d] | |||
@@ -366,6 +413,8 @@ tamil தமிழ் $text | |||
தின $alt | |||
தில் $alt | |||
தன $alt | |||
தடியா $alt | |||
தட $alt | |||
// initial ட | |||
@@ -440,6 +489,7 @@ tamil தமிழ் $text | |||
களிலும் $alt | |||
கடம் $alt | |||
காட் $alt | |||
கிடு $alt | |||
@@ -465,7 +515,6 @@ tamil தமிழ் $text | |||
பைக்கில் baIkkIl | |||
தாங்ஸ் Ta:Nks // thanks | |||
டிபுடி d.EpjUt.i // deputy | |||
டிபன் t.ifVn | |||
ஆகா a:Ha: | |||
ஓகோ o:Ho: | |||
கப் kVp |
@@ -1,9 +1,9 @@ | |||
language variant | |||
name female1 | |||
gender female | |||
gender female 70 | |||
pitch 145 200 | |||
flutter 7 | |||
pitch 140 200 | |||
flutter 8 | |||
roughness 4 | |||
formant 0 115 80 150 | |||
formant 1 120 80 180 | |||
@@ -15,4 +15,4 @@ formant 6 105 80 150 | |||
formant 7 110 70 150 | |||
formant 8 110 70 150 | |||
stressAdd -10 -10 -20 -20 0 0 40 70 | |||
stressAdd -10 -10 -20 -20 0 0 40 60 |
@@ -3,7 +3,7 @@ name male1 | |||
gender male 70 | |||
pitch 75 109 | |||
flutter 4 | |||
flutter 5 | |||
roughness 4 | |||
consonants 80 100 | |||
@@ -13,5 +13,4 @@ formant 6 90 50 100 | |||
formant 7 100 50 100 | |||
formant 8 100 50 100 | |||
voicing 155 | |||
fast_test 0 45 75 | |||
@@ -1,5 +1,6 @@ | |||
name english | |||
language en-uk 2 | |||
language en-gb 2 | |||
language en 2 | |||
gender male | |||
@@ -1,6 +1,7 @@ | |||
name lancashire | |||
language en-uk-north | |||
language en-uk 3 | |||
language en 5 | |||
gender male | |||
phonemes en-n |
@@ -1,6 +1,7 @@ | |||
name english_rp | |||
language en-uk-rp | |||
language en-uk 4 | |||
language en 5 | |||
gender male | |||
phonemes en-rp |
@@ -1,6 +1,7 @@ | |||
name en-westindies | |||
language en-wi | |||
language en-uk 4 | |||
language en 10 | |||
gender male | |||
phonemes en-wi |
@@ -1,5 +1,7 @@ | |||
name english_wmids | |||
language en-uk-wmids | |||
language en-uk 9 | |||
language en 9 | |||
gender male | |||
phonemes en-wm |
@@ -1,6 +1,7 @@ | |||
name spanish-latin-american | |||
language es-la | |||
language es-mx 6 | |||
language es 6 | |||
gender male | |||
phonemes es-la |
@@ -1,5 +1,6 @@ | |||
language fr-be | |||
name french (Belgium) | |||
language fr-be | |||
language fr 8 | |||
gender male | |||
dictrules 2 |
@@ -1,9 +1,3 @@ | |||
name hindi-test | |||
name hindi | |||
language hi | |||
gender male | |||
translator hi | |||
phonemes hi | |||
dictionary hi | |||
dictrules 1 |
@@ -1,5 +1,6 @@ | |||
name armenian-west | |||
language hy-west | |||
language hy 8 | |||
gender male | |||
// change consonants for West Armenian pronunciation |
@@ -1,5 +1,5 @@ | |||
name en-german-5 | |||
language en | |||
language en 9 | |||
gender female | |||
pitch 140 220 |
@@ -1,5 +1,5 @@ | |||
name en-greek | |||
language en 7 | |||
language en 9 | |||
gender male | |||
pitch 82 117 |
@@ -1,5 +1,5 @@ | |||
name en-swedish-f | |||
language en | |||
language en 10 | |||
gender female | |||
pitch 140 220 |
@@ -1,5 +1,6 @@ | |||
name portugal | |||
language pt-pt | |||
language pt 6 | |||
gender male | |||
phonemes pt-pt | |||
@@ -1,4 +1,4 @@ | |||
74 phoneme tables | |||
76 phoneme tables | |||
new total | |||
base 107 107 | |||
consonants 10 116 | |||
@@ -17,10 +17,11 @@ consonants 10 116 | |||
jbo 2 114 | |||
nci 3 123 | |||
fi 40 133 | |||
et 47 139 | |||
fr 59 140 | |||
fr-ca 11 140 | |||
hi 57 148 | |||
ta 22 151 | |||
ta 23 152 | |||
kn 17 148 | |||
ml 21 151 | |||
hu 25 122 | |||
@@ -31,7 +32,7 @@ consonants 10 116 | |||
cs 7 135 | |||
hr 25 140 | |||
mk 3 141 | |||
sr 14 140 | |||
sr 14 142 | |||
ru 49 137 | |||
bg 14 123 | |||
it 19 127 | |||
@@ -68,12 +69,13 @@ consonants 10 116 | |||
ht 11 140 | |||
az 10 127 | |||
ak 8 109 | |||
am 8 123 | |||
am 14 112 | |||
wo 18 118 | |||
dv 14 148 | |||
te 16 148 | |||
si 24 154 | |||
tn 27 119 | |||
mt 32 127 | |||
Data file Used by | |||
b/b [b] base | |||
@@ -99,6 +101,8 @@ d/d [d] base | |||
[d[] base | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d^] et | |||
[d] fr | |||
[d] kn | |||
[d] hu | |||
@@ -106,10 +110,13 @@ d/d [d] base | |||
[d;] pl | |||
[d] hr | |||
[d] sq | |||
[d] mt | |||
d/d_ [d] base | |||
[d[] base | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d^] et | |||
[d] fr | |||
[d.] hi | |||
[d] kn | |||
@@ -118,11 +125,14 @@ d/d_ [d] base | |||
[d;] pl | |||
[d] hr | |||
[d] sq | |||
[d] mt | |||
d/d_dnt [d] sr | |||
d/dr [*] base | |||
[d[] base | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d^] et | |||
[d] fr | |||
[d.] hi | |||
[dh.] hi | |||
@@ -132,6 +142,7 @@ d/dr [*] base | |||
[d;] pl | |||
[d] hr | |||
[d] sq | |||
[d] mt | |||
d/tap [*;] ro | |||
d/tap1 [*] base | |||
d/tap2 [t#] en | |||
@@ -143,6 +154,7 @@ d/xd [d] base | |||
[dz] consonants | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d] fr | |||
[z] fr | |||
[dh] hi | |||
@@ -152,8 +164,10 @@ d/xd [d] base | |||
[d] hr | |||
[d] sr | |||
[d] sq | |||
[d] mt | |||
d/xd3 [dh] hi | |||
d/xd_pzd [d;] pl | |||
d/xd_pzd [d^] et | |||
[d;] pl | |||
d/xdr [d] fr | |||
[d.] hi | |||
[dh.] hi | |||
@@ -247,25 +261,37 @@ g/xg [g] base | |||
g/xgr [g] fr | |||
h/h_ [h] base | |||
[h] fi | |||
[h] et | |||
[<h>] la | |||
[h] mt | |||
h/h@ [h] base | |||
[h] fi | |||
[h] sr | |||
[h] et | |||
[h#] sr | |||
[<h>] la | |||
[h] mt | |||
h/ha [h] base | |||
[h] fi | |||
[h] et | |||
[<h>] la | |||
[h] mt | |||
h/he [h] base | |||
[h] fi | |||
[h] et | |||
[<h>] la | |||
[h] mt | |||
h/hi [h] base | |||
[h] fi | |||
[h] et | |||
[<h>] la | |||
[h] mt | |||
h/ho [h] base | |||
[<h>] la | |||
h/hu [h] base | |||
[<h>] la | |||
h/hu_fi [h] fi | |||
[h] et | |||
[h] mt | |||
j2/_j2 [;] base | |||
j2/j2@ [;] base | |||
j2/j2a [;] base | |||
@@ -368,8 +394,8 @@ l/l_ [l] base | |||
[l/] fr | |||
l/l_@ [l/3] base | |||
[l/] fr | |||
l/l@ [l#] base | |||
[”¦] base | |||
l/l@ [h1ô] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
@@ -402,16 +428,16 @@ l/L2_oL [l/2] base | |||
l/L2_uL [l/2] base | |||
l/l_3 [l/] de | |||
l/l_4 [ll] sq | |||
l/la [l#] base | |||
[”¦] base | |||
l/la [h1ô] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
[K] tn | |||
l/l_a [l/3] base | |||
[l/] fr | |||
l/le [l#] base | |||
[”¦] base | |||
l/le [h1ô] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
@@ -422,8 +448,8 @@ l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
l/l_front_ [l/4] sq | |||
l/li [l#] base | |||
[”¦] base | |||
l/li [h1ô] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[l] zh | |||
@@ -436,8 +462,8 @@ ll/ll [L] bg | |||
ll/_ll [L] bg | |||
l/l_long [l] base | |||
[l] fr | |||
l/lo [l#] base | |||
[”¦] base | |||
l/lo [h1ô] base | |||
[l#] base | |||
[l/2] fr | |||
[K] nso | |||
[K] tn | |||
@@ -446,8 +472,8 @@ l/l_o [l/3] base | |||
l^/l_rfx [l.] base | |||
[l] ru | |||
[l^] ru | |||
l/lu [l#] base | |||
[”¦] base | |||
l/lu [h1ô] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
@@ -584,9 +610,11 @@ r2/r2u [r-] en | |||
[r-] tn | |||
r3/r_ [r/] base | |||
[r/] af | |||
[r] et | |||
[r/] tn | |||
r3/r#_ [r#] is | |||
r3/r_n [r/] base | |||
[r] et | |||
r3/r_ru [R4] ru | |||
r3/r_ru2 [R4] ru | |||
r3/r_trill [R2] base | |||
@@ -606,8 +634,10 @@ r3/r_trill3.wav [R3] base | |||
[r] af | |||
[r] tn | |||
r3/r_trill_short [R2] fi | |||
[R2] et | |||
r3/r_trill.wav [R2] base | |||
[R2] fi | |||
[R2] et | |||
[R2] lv | |||
[R] pl | |||
[r*] sr | |||
@@ -620,6 +650,7 @@ r3/r_uvl.wav [r"] base | |||
r3/rx [*] base | |||
[r/] base | |||
[r/] af | |||
[r] et | |||
[r/] fr | |||
[R] fr-ca | |||
[x] pt-pt | |||
@@ -684,8 +715,8 @@ r/xr [r] base | |||
ufric/ch [C] base | |||
[J^] base | |||
ufric/ch_ [C] base | |||
ufric/ch_sr [h] sr | |||
[x] sr | |||
ufric/ch_sr [h#] sr | |||
[x#] sr | |||
ufric/f [f] base | |||
[pF] de | |||
[f] fr | |||
@@ -735,6 +766,7 @@ ufric/sh_pzd2 [S] sr | |||
[S;] zh | |||
ufric/sh_rfx [s.] base | |||
[s.] zh | |||
ufric/s_pal [s^] et | |||
ufric/s_pzd [s;] base | |||
[z;] base | |||
[s;] ro | |||
@@ -753,8 +785,8 @@ ufric/x2 [x2] af | |||
ufric/x_hr [x] base | |||
[x] hr | |||
[x] ru | |||
ufric/x_sr [h] sr | |||
[x] sr | |||
ufric/x_sr [h#] sr | |||
[x#] sr | |||
ufric/xx [X] base | |||
[Q"] base | |||
ustop/c [c] base | |||
@@ -772,9 +804,11 @@ ustop/k_asp [kh] consonants | |||
[kh] zh | |||
[kh] tn | |||
ustop/k_asp2 [k#] ka | |||
ustop/k_ejc [k`] am | |||
ustop/ki [k] base | |||
[k] base2 | |||
[c] af | |||
[k] et | |||
[k] fr | |||
[k] lv | |||
[k^] mk | |||
@@ -786,6 +820,7 @@ ustop/ki [k] base | |||
ustop/kl [k] base | |||
[kh] consonants | |||
[k] base2 | |||
[k] et | |||
[k] fr | |||
[k] lv | |||
[k] el | |||
@@ -794,11 +829,13 @@ ustop/kl [k] base | |||
[kh] tn | |||
ustop/kr [k] base | |||
[k] base2 | |||
[k] et | |||
[k] el | |||
[k] zhy | |||
ustop/k_unasp [k] base | |||
[k-] consonants | |||
[k] base2 | |||
[k] et | |||
[k] lv | |||
[k] el | |||
[k] zhy | |||
@@ -845,6 +882,7 @@ ustop/p_unasp [p] base | |||
[p] zh | |||
[p] sq | |||
[p] da | |||
[p`] am | |||
ustop/p_unasp_ [p-] consonants | |||
[p] base2 | |||
[p] fr | |||
@@ -865,10 +903,12 @@ ustop/t_ [t] base | |||
[t] lv | |||
[t] sk | |||
[th] zh | |||
[t`] am | |||
ustop/t_dnt [t] base | |||
[t[] base | |||
[t] base2 | |||
[t] en-us | |||
[t] et | |||
[dh] hi | |||
[th] hi | |||
[t] hu | |||
@@ -877,7 +917,10 @@ ustop/t_dnt [t] base | |||
ustop/t_dnt2 [t] base2 | |||
[d] kn | |||
ustop/t_hi [t[] base | |||
[t] et | |||
[t`] am | |||
ustop/t_pzd [c] base | |||
[t^] et | |||
[t;] pl | |||
ustop/tr [t] base | |||
[t] en-us | |||
@@ -913,6 +956,7 @@ ustop/t_short_ [t] fr | |||
ustop/tsh_pzd [tS;] zh | |||
ustop/tsh_pzd_unasp [tS;] zh | |||
ustop/tsh_sr [tS] sr | |||
ustop/tsh_unasp [tS`] am | |||
ustop/ts_pzd [tS;] base | |||
[Jh] hi | |||
[tS;] ru | |||
@@ -956,6 +1000,7 @@ vdiph2/i@ [i@] en-n | |||
vdiph2/i@_2 [i@] en-wm | |||
vdiph2/ie [i@] en-wi | |||
[ie] fi | |||
[ie] mt | |||
vdiph2/ie_2 [ie] lv | |||
vdiph2/ii@ [i@] en | |||
[i@3] en | |||
@@ -968,10 +1013,12 @@ vdiph2/iu [iU] base2 | |||
[iu] zhy | |||
vdiph2/iu_2 [iu] fi | |||
[iu] lv | |||
[iu] mt | |||
vdiph2/iu_3 [iu] af | |||
vdiph2/iu_4 [Iu] cy | |||
[Yu] cy | |||
vdiph2/iy [iy] fi | |||
[iy] mt | |||
vdiph2/o@ [o@] af | |||
[u@] zh | |||
vdiph2/oa [Oa] ro | |||
@@ -982,6 +1029,7 @@ vdiph2/o_oo [o@] en-wi | |||
vdiph2/u#@ [U@] en-sc | |||
vdiph2/uaa [uo] lv | |||
vdiph2/uo [uo] fi | |||
[uo] mt | |||
vdiph2/uu@ [U@] en | |||
[U@] en-n | |||
[U@] en-wm | |||
@@ -997,7 +1045,9 @@ vdiph2/yu [yU] nl | |||
[yu] zh | |||
vdiph2/y-y# [yY] fi | |||
[y@] vi | |||
[yY] mt | |||
vdiph/8u [oU] en-us | |||
[8u] et | |||
[ou] zh | |||
vdiph/aae [aI] en-us | |||
vdiph/aai [ai] lv | |||
@@ -1007,10 +1057,12 @@ vdiph/aai [ai] lv | |||
vdiph/aai_2 [AI] af | |||
[AY] cy | |||
vdiph/aai_3 [ai] fi | |||
[ai] mt | |||
vdiph/aau [au] fi | |||
[au] lv | |||
[aU] is | |||
[aU:] is | |||
[au] mt | |||
vdiph/aau_2 [aU] en-wi | |||
[VU] nl | |||
[aU] la | |||
@@ -1083,6 +1135,7 @@ vdiph/eei_2 [eI] eo | |||
[ei] fi | |||
[ei] lv | |||
[eI] id | |||
[ei] mt | |||
vdiph/eei_3 [eI] sk | |||
[eI] ku | |||
vdiph/eeu [EU] pt | |||
@@ -1095,6 +1148,7 @@ vdiph/eeu_3 [aU] en-n | |||
[aU] en-wm | |||
[eU] ku | |||
vdiph/eey [ey] fi | |||
[ey] mt | |||
vdiph/ei [eI] base2 | |||
[e:] nl | |||
[eI] la | |||
@@ -1112,10 +1166,14 @@ vdiph/eu [eU] base2 | |||
[eU] vi | |||
[eU] ne | |||
vdiph/eu_2 [eu] fi | |||
vdiph/@i [@I] vi | |||
[eu] mt | |||
vdiph/@i [Yi] et | |||
[@I] vi | |||
[@:I] vi | |||
vdiph/&i [&i] fi | |||
[&i] et | |||
[aI] hi | |||
[i] mt | |||
vdiph/@i_2 [eI] af | |||
[@I] cy | |||
[@Y] cy | |||
@@ -1144,6 +1202,7 @@ vdiph/ooi [OI] en | |||
[oi] lv | |||
[OI] no | |||
[oi] zhy | |||
[oi] mt | |||
vdiph/ooi_2 [OI] af | |||
[oI] eo | |||
vdiph/ooi_3 [OI] en-rp | |||
@@ -1155,6 +1214,7 @@ vdiph/oou [oU] cs | |||
vdiph/ou [ou] fi | |||
[ou] zhy | |||
[oU] ne | |||
[ou] mt | |||
vdiph/ou_2 [oU] sk | |||
[oU] ro | |||
vdiph/ou_3 [oU] is | |||
@@ -1178,6 +1238,7 @@ vdiph/ui_2 [uI] af | |||
vdiph/ui_3 [uI] cy | |||
[uY] cy | |||
vdiph/ui_4 [ui] fi | |||
[ui] mt | |||
vdiph/Vi [VI] ne | |||
vdiph/Vu [@U] af | |||
[VU] ne | |||
@@ -1185,13 +1246,17 @@ vdiph/Vu_2 [oU] en-wm | |||
vdiph/&y [&y] fi | |||
[Wy] nl | |||
vdiph/yi [yi] fi | |||
[yi] et | |||
[yI] grc | |||
[u-I] no | |||
[yi] zh | |||
[yi] mt | |||
vdiph/y#i [Yi] fi | |||
[Yi] mt | |||
vdiph/y#i_2 [Yy] is | |||
[Yy:] is | |||
vdiph/y#y [Yy] fi | |||
[Yy] mt | |||
vdiph/y#y_2 [Yy] af | |||
[eoi] zhy | |||
vdiph/y#y_3 [Y:] nl | |||
@@ -1248,14 +1313,18 @@ voc/Q_less [Q] nl | |||
voc/Q_ulv [Q"] base | |||
voc/v [v] base | |||
[v] fi | |||
[v] et | |||
[v] fr | |||
[v;] ro | |||
[v] mt | |||
voc/v_ [B] base | |||
[v] base | |||
[v] fi | |||
[v] et | |||
[v] fr | |||
[v#] es | |||
[v;] ro | |||
[v] mt | |||
voc/v# [v#] base | |||
voc/v#_ [v#] base | |||
voc/v2 [v#] es | |||
@@ -1317,6 +1386,8 @@ vowel/@- [@-] base | |||
[r*] hr | |||
vowel/& [a] en-rp | |||
[&] fi | |||
[&] et | |||
[&:] et | |||
[&:] hi | |||
[&] lv | |||
[&:] lv | |||
@@ -1365,11 +1436,13 @@ vowel/@_6 [@] en | |||
[W2] fr | |||
vowel/8 [o-] zh | |||
vowel/8_2 [U] en-us | |||
[8] et | |||
[8] sv | |||
vowel/8_3 [eo] zhy | |||
vowel/8_5 [8] ku | |||
vowel/8_6 [V] sq | |||
vowel/8_7 [@] lv | |||
vowel/8_7 [8:] et | |||
[@] lv | |||
vowel/a [a] base | |||
[a] en | |||
[aa] en | |||
@@ -1392,7 +1465,6 @@ vowel/a [a] base | |||
[a] zh | |||
[a] id | |||
[a] sl | |||
[a] am | |||
vowel/a# [a] base2 | |||
[a/] base2 | |||
[a#] en-sc | |||
@@ -1478,11 +1550,14 @@ vowel/a_5 [a:] ta | |||
[a] tn | |||
vowel/a_6 [a] ca | |||
[a:] vi | |||
[a] am | |||
[a:] wo | |||
vowel/a_7 [a] en | |||
[a] fr | |||
[a] sk | |||
[a] ht | |||
vowel/aa [A] fr-ca | |||
vowel/aa [a:] et | |||
[A] fr-ca | |||
[A] no | |||
[A:] no | |||
[aa] zhy | |||
@@ -1510,13 +1585,17 @@ vowel/aa_6 [A] de | |||
[A:] de | |||
vowel/aa_8 [0] en-us | |||
[A:] en-us | |||
[A] et | |||
[A1] et | |||
[A] nl | |||
[a:] is | |||
vowel/aa_9 [a] fi | |||
[a] et | |||
[a:] hi | |||
[a] ne | |||
[a] pa | |||
[a] ak | |||
[a] mt | |||
vowel/@_bck [@] hi | |||
[@] bg | |||
[@] zh | |||
@@ -1573,6 +1652,8 @@ vowel/e_3 [i] en-n | |||
vowel/e_5 [i] en-sc | |||
vowel/e_6 [e] ht | |||
[e] ak | |||
vowel/e_7 [e] et | |||
[e:] et | |||
vowel/e_8 [E:] de | |||
[e] fr | |||
vowel/ee [E] en-n | |||
@@ -1598,12 +1679,15 @@ vowel/ee_2 [E] cy | |||
[E] pa | |||
vowel/ee#_2 [E-] sv | |||
[E#] sq | |||
[@] am | |||
[e] tn | |||
vowel/ee_3 [&] af | |||
[&:] af | |||
[E] pt | |||
[E] vi | |||
vowel/ee_4 [E] sq | |||
vowel/ee_4 [E] et | |||
[E1] et | |||
[E] sq | |||
vowel/ee_5 [E] en | |||
[E] ak | |||
[E] wo | |||
@@ -1665,6 +1749,7 @@ vowel/e_mid2 [E] af | |||
[e] am | |||
[e] te | |||
[e:] si | |||
[e] mt | |||
vowel/@_fnt [@] en-wi | |||
[@2] en-wi | |||
[@2] hr | |||
@@ -1699,7 +1784,6 @@ vowel/i [i] base | |||
[i] prs | |||
[i] nso | |||
[i] ak | |||
[i] am | |||
[i:] wo | |||
[i:] dv | |||
[i:] te | |||
@@ -1707,11 +1791,14 @@ vowel/i [i] base | |||
vowel/i# [y:] cy | |||
vowel/i_2 [i2] de | |||
[i:] de | |||
[i] et | |||
[i] nl | |||
[i:] la | |||
[i:] sv | |||
vowel/i#_2 [y] am | |||
vowel/i_3 [i] af | |||
[I] et | |||
[I1] et | |||
[i:] sk | |||
vowel/i_4 [i] fi | |||
[i] hu | |||
@@ -1719,6 +1806,7 @@ vowel/i_4 [i] fi | |||
[i:] is | |||
[i] vi | |||
[i] da | |||
[i] mt | |||
vowel/i_5 [i:] en-sc | |||
vowel/i#_5 [y] pt-pt | |||
[i/] pt-pt | |||
@@ -1734,11 +1822,13 @@ vowel/i_6 [i] hi | |||
[i] tr | |||
[i] ku | |||
[i] id | |||
[i] am | |||
[i] dv | |||
[i] te | |||
[i] si | |||
vowel/i#_6 [i.] zh | |||
vowel/i_7 [i] pl | |||
vowel/i_7 [i:] et | |||
[i] pl | |||
[i] sq | |||
vowel/i#_7 [i[] zh | |||
vowel/i_8 [i] fr | |||
@@ -1770,6 +1860,7 @@ vowel/ii# [Y] cy | |||
[i] sq | |||
vowel/ii_2 [I] en | |||
[i] zh | |||
[I] mt | |||
vowel/ii#_2 [y] pl | |||
vowel/ii_3 [I] cy | |||
[I] fi | |||
@@ -1785,7 +1876,8 @@ vowel/ii#_3 [I2] en-us | |||
vowel/ii_4 [I2] en | |||
[I] en-us | |||
[I2] tn | |||
vowel/ii_5 [i] ta | |||
vowel/ii_5 [i1] et | |||
[i] ta | |||
[i] bg | |||
[I] la | |||
[i] zh | |||
@@ -1819,7 +1911,6 @@ vowel/@_low [@] en-rp | |||
[@/] ne | |||
[@] pa | |||
[V] pa | |||
[@] am | |||
[@] si | |||
vowel/@_low2 [@/] en-us | |||
[@2] en-us | |||
@@ -1829,6 +1920,7 @@ vowel/o [o] base2 | |||
[oU] en-wi | |||
[o:] de | |||
[o] eo | |||
[o:] et | |||
[o] fr | |||
[o] hi | |||
[o] ta | |||
@@ -1881,6 +1973,9 @@ vowel/oe [W] af | |||
vowel/oe_2 [W] no | |||
vowel/oe_4 [W] sv | |||
vowel/o_mid [U@] en-rp | |||
[O] et | |||
[o] et | |||
[O1] et | |||
[O] fr | |||
[o] hu | |||
[o] bg | |||
@@ -1929,6 +2024,7 @@ vowel/oo_1 [O:] en-n | |||
[o] si | |||
[o:] si | |||
[O] tn | |||
[o] mt | |||
vowel/oo_2 [0] en-sc | |||
[O] cy | |||
[o] cs | |||
@@ -1993,12 +2089,16 @@ vowel/u_2 [u1] fi | |||
[u] am | |||
[u] wo | |||
vowel/u#_2 [u-] sv | |||
vowel/u_3 [u] et | |||
[u:] et | |||
vowel/u#_3 [U] ta | |||
[U:] ta | |||
vowel/u#_4 [U] en-sc | |||
[u:] en-sc | |||
[y] ml | |||
vowel/u_5 [u] sw | |||
vowel/u_5 [U] et | |||
[U1] et | |||
[u] sw | |||
[u] nso | |||
[u] az | |||
[u] tn | |||
@@ -2048,6 +2148,7 @@ vowel/u_bck [u] base2 | |||
[u#] rw | |||
[u] ne | |||
[u] pa | |||
[u] mt | |||
vowel/u_bck2 [u] fr | |||
[u:] fr | |||
[u:] la | |||
@@ -2065,6 +2166,7 @@ vowel/uu_3 [u] af | |||
[y] zh | |||
vowel/uu_4 [U] fi | |||
[U] sv | |||
[U] mt | |||
vowel/uu_bck [U] en-wi | |||
[U] fr-ca | |||
[U] hi | |||
@@ -2097,6 +2199,8 @@ vowel/V_6 [V] en-us | |||
vowel/y [y] base2 | |||
[y:] de | |||
[y] fi | |||
[y] et | |||
[y:] et | |||
[y] fr | |||
[y:] hu | |||
[y] nl | |||
@@ -2105,16 +2209,20 @@ vowel/y [y] base2 | |||
[y] sq | |||
[y] da | |||
[y] az | |||
[y] mt | |||
vowel/y# [Y] base2 | |||
[3:] en-wm | |||
[Y:] de | |||
[Y] fi | |||
[Y] et | |||
[Y:] et | |||
[Y] fr | |||
[Y:] hu | |||
[8] nl | |||
[Y] ro | |||
[oe] zhy | |||
[W] tr | |||
[Y] mt | |||
vowel/y## [y] is | |||
vowel/y_2 [y:] la | |||
[y] zh | |||
@@ -2341,6 +2449,7 @@ x/d_ [d] base | |||
[d[] base | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d] fr | |||
[d.] hi | |||
[d] kn | |||
@@ -2348,13 +2457,17 @@ x/d_ [d] base | |||
[d] hr | |||
[d] is | |||
[d] sq | |||
[d] mt | |||
x/d_dnt [d[] base | |||
[d] base2 | |||
[d] fi | |||
[d] et | |||
[d] kn | |||
[d] hu | |||
[d] pl | |||
x/d_pzd [d;] pl | |||
[d] mt | |||
x/d_pzd [d^] et | |||
[d;] pl | |||
x/dzh [J] base | |||
[dZ] base | |||
x/dzh_ [dZ] base |
@@ -350,9 +350,12 @@ phoneme t | |||
voicingswitch d | |||
lengthmod 2 | |||
IF prevPh(isVowel) OR prevPh(n) THEN | |||
IF nextPh(isVowel) AND nextPh(isUnstressed) AND thisPh(notWordStart) AND nextPh(notWordStart) THEN | |||
ChangePhoneme(t#) | |||
IF prevPhW(isVowel) OR prevPhW(n) THEN | |||
IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN | |||
IF next2Ph(n) AND next2Ph(notWordStart) THEN | |||
ELSE | |||
ChangePhoneme(t#) | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
@@ -63,7 +63,8 @@ endphoneme | |||
// This is for letter "h" at the beginning of a word | |||
phoneme x | |||
// Use [x] from lang=hr, request by Gašić Dajan 27.06.2011 | |||
phoneme x# | |||
vls vel frc | |||
lengthmod 3 | |||
IF nextPh(#i) OR nextPh(#e) THEN | |||
@@ -76,7 +77,8 @@ endphoneme | |||
// This is for letter "h" not at the beginning of word | |||
phoneme h | |||
// Use standard [h], request by Gašić Dajan 27.06.2011 | |||
phoneme h# | |||
vls vel frc | |||
lengthmod 3 | |||
IF nextPh(#@) THEN |
@@ -31,9 +31,14 @@ phoneme e: | |||
FMT(vowel/e_mid) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 120 | |||
IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN | |||
FMT(vowel/a_7) | |||
ENDIF | |||
FMT(vowel/a) | |||
endphoneme | |||
@@ -29,13 +29,12 @@ endphoneme | |||
phoneme V# // omit if the next phoneme is a vowel | |||
vowel starttype #@ endtype #@ | |||
length 130 | |||
IF nextPhW(isVowel) THEN | |||
IF nextPhW(isVowel) OR nextPhW(#) THEN | |||
ChangePhoneme(NULL) | |||
ENDIF | |||
ChangePhoneme(V) | |||
endphoneme | |||
phoneme a: | |||
vowel starttype #a endtype #a | |||
length 300 | |||
@@ -155,3 +154,8 @@ phoneme : // Lengthen previous vowel by "length" | |||
length 50 | |||
endphoneme | |||
phoneme # // a NULL phoneme for 'virama' | |||
virtual | |||
ChangePhoneme(NULL) | |||
endphoneme | |||
@@ -1425,7 +1425,7 @@ endphoneme | |||
phoneme q | |||
vls uvl stop | |||
lengthmod 2 | |||
Vowelin f1=1 f2=1700 0 200 f3=-300 80 paus f4 rms=30 | |||
Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 | |||
Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | |||
IF nextPh(isPause2) THEN | |||
@@ -1682,6 +1682,9 @@ include ph_nahuatl | |||
phonemetable fi base | |||
include ph_finnish | |||
phonemetable et base | |||
include ph_estonian | |||
phonemetable fr base | |||
include ph_french | |||
@@ -1857,7 +1860,7 @@ include ph_azerbaijani | |||
phonemetable ak base | |||
include ph_akan | |||
phonemetable am base2 | |||
phonemetable am base | |||
include ph_amhari | |||
phonemetable wo base | |||
@@ -1874,3 +1877,7 @@ include ph_sinhala | |||
phonemetable tn base | |||
include ph_setswana | |||
phonemetable mt base | |||
include ph_maltese |
@@ -2,7 +2,7 @@ | |||
[Setup] | |||
AppName=eSpeak | |||
AppVerName=eSpeak version 1.45.01 | |||
AppVerName=eSpeak version 1.45.05 | |||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
WindowVisible=yes | |||
@@ -145,6 +145,7 @@ begin | |||
$1d: Result := 'sv'; | |||
$1f: Result := 'tr'; | |||
$21: Result := 'id'; | |||
$25: Result := 'et'; | |||
$26: Result := 'lv'; | |||
$2a: Result := 'vi'; | |||
$2b: Result := 'hy'; | |||
@@ -153,6 +154,7 @@ begin | |||
$2f: Result := 'mk'; | |||
$36: Result := 'af'; | |||
$39: Result := 'hi'; | |||
//$3a: Result := 'mt'; | |||
$41: Result := 'sw'; | |||
$49: Result := 'ta'; | |||
$4b: Result := 'kn'; | |||
@@ -230,6 +232,7 @@ begin | |||
'mk': value := $42f; | |||
'ml': value := $44c; | |||
'mn': value := $450; | |||
'mt': value := $43a; | |||
'ne': value := $461; | |||
'nl': value := $413; | |||
'no': value := $414; | |||
@@ -238,6 +241,7 @@ begin | |||
'ro': value := $418; | |||
'ru': value := $419; | |||
'rw': value := $487; | |||
'si': value := $45b; | |||
'sk': value := $41b; | |||
'sq': value := $41c; | |||
'sr': value := $81a; |
@@ -1,7 +1,7 @@ | |||
[Setup] | |||
AppName=eSpeakEdit | |||
AppVerName=eSpeakEdit version 1.45.01 | |||
AppVerName=eSpeakEdit version 1.45.05 | |||
DefaultDirName={pf}\eSpeak | |||
DefaultGroupName=eSpeak | |||
OutputBaseFilename=setup_espeakedit |
@@ -26,6 +26,8 @@ LN_SF = /bin/ln -sf | |||
MKDIR = mkdir -p | |||
AUDIO = portaudio | |||
#AUDIO = portaudio0 | |||
#AUDIO = portaudio2 | |||
#AUDIO = pulseaudio | |||
#AUDIO = sada | |||
@@ -39,6 +41,16 @@ WAVE=wave.cpp | |||
LIB_AUDIO=-lportaudio | |||
USE_AUDIO=-DUSE_PORTAUDIO | |||
else | |||
ifeq ($(AUDIO),portaudio0) | |||
WAVE=wave.cpp | |||
LIB_AUDIO=/usr/lib/libportaudio.so.0 | |||
USE_AUDIO=-DUSE_PORTAUDIO | |||
else | |||
ifeq ($(AUDIO),portaudio2) | |||
WAVE=wave.cpp | |||
LIB_AUDIO=/usr/lib/libportaudio.so.2 | |||
USE_AUDIO=-DUSE_PORTAUDIO | |||
else | |||
ifeq ($(AUDIO),sada) | |||
WAVE=wave_sada.cpp | |||
USE_AUDIO=-DUSE_SADA | |||
@@ -47,6 +59,8 @@ WAVE=wave.cpp | |||
endif | |||
endif | |||
endif | |||
endif | |||
endif | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ |
@@ -350,7 +350,7 @@ static keywtab_t keywords[] = { | |||
{"glstop", tTRANSITION, 8}, | |||
{"lenadd", tTRANSITION, 9}, | |||
{"f4", tTRANSITION, 10}, | |||
{"paus", tTRANSITION, 11}, | |||
{"gpaus", tTRANSITION, 11}, | |||
{"colr=", tTRANSITION, 12}, | |||
{"amp=", tTRANSITION, 13}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) | |||
@@ -617,8 +617,8 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out) | |||
*/ | |||
int ix; | |||
int len; | |||
int max_len; | |||
unsigned int len; | |||
unsigned int max_len; | |||
int phon_out_ix=0; | |||
int stress; | |||
unsigned int c; | |||
@@ -2928,7 +2928,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
const char *word_end; | |||
const char *word1; | |||
int wflags = 0; | |||
int wflags2; | |||
// int wflags2; | |||
char word_buf[N_WORD_BYTES+1]; | |||
if(wtab != NULL) | |||
@@ -3497,6 +3497,17 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) | |||
if(end_type & SUFX_E) | |||
{ | |||
if(tr->translator_name == L('n','l')) | |||
{ | |||
if(((word_end[0] & 0x80) == 0) && ((word_end[-1] & 0x80) == 0) && IsVowel(tr, word_end[-1]) && IsLetter(tr, word_end[0], LETTERGP_C) && !IsVowel(tr, word_end[-2])) | |||
{ | |||
//double the vowel before the (ascii) final consonant | |||
word_end[1] = word_end[0]; | |||
word_end[0] = word_end[-1]; | |||
word_end[2] = ' '; | |||
} | |||
} | |||
else | |||
if(tr->translator_name == L('e','n')) | |||
{ | |||
// add 'e' to end of stem |
@@ -123,6 +123,7 @@ static void close_pipes(int p1[2], int p2[2], int p3[2]) | |||
static int start_mbrola(const char *voice_path) | |||
{ | |||
int error, p_stdin[2], p_stdout[2], p_stderr[2]; | |||
ssize_t written; | |||
char charbuf[20]; | |||
if (mbr_state != MBR_INACTIVE) { | |||
@@ -151,7 +152,7 @@ static int start_mbrola(const char *voice_path) | |||
dup2(p_stderr[1], 2) == -1) { | |||
snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | |||
"dup2(): %s\n", strerror(errno)); | |||
write(p_stderr[1], mbr_errorbuf, strlen(mbr_errorbuf)); | |||
written = write(p_stderr[1], mbr_errorbuf, strlen(mbr_errorbuf)); | |||
_exit(1); | |||
} | |||
@@ -168,7 +169,7 @@ static int start_mbrola(const char *voice_path) | |||
/* if execution reaches this point then the exec() failed */ | |||
snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | |||
"mbrola: %s\n", strerror(errno)); | |||
write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||
written = write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||
_exit(1); | |||
} | |||
@@ -1590,13 +1590,13 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
int suffix_ix; | |||
int skipwords = 0; | |||
char *p; | |||
char string[20]; // for looking up entries in **_list | |||
char string[32]; // for looking up entries in **_list | |||
char buf1[100]; | |||
char ph_append[50]; | |||
char ph_buf[200]; | |||
char ph_buf2[50]; | |||
char ph_zeros[50]; | |||
char suffix[20]; | |||
char suffix[30]; // string[] must be long enough for sizeof(suffix)+2 | |||
char buf_digit_lookup[50]; | |||
static const char str_pause[2] = {phonPAUSE_NOLINK,0}; |
@@ -190,9 +190,11 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
if(regression & 0x2) | |||
{ | |||
// [v] amd [v;] don't cause regression, or [R^] | |||
if((ph->mnemonic == 'v') || (ph->mnemonic == ((';'<<8)+'v')) || ((ph->mnemonic & 0xff)== 'R')) | |||
if(((ph->mnemonic & 0xff) == 'v') || ((ph->mnemonic & 0xff)== 'R')) | |||
{ | |||
stop_propagation = 1; | |||
if(regression & 0x10) | |||
voicing = 0; | |||
} | |||
} | |||
@@ -247,7 +249,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
// stop propagation at a word boundary | |||
voicing = 0; | |||
} | |||
if(regression & 0x10) | |||
if(regression & 0x100) | |||
{ | |||
// devoice word-final consonants, unless propagating voiced | |||
if(voicing == 0) |
@@ -164,7 +164,7 @@ static const unsigned int punct_attributes [] = { 0, | |||
// frame 0 is for the defaults, before any ssml tags. | |||
typedef struct { | |||
int tag_type; | |||
int voice_variant; | |||
int voice_variant_number; | |||
int voice_gender; | |||
int voice_age; | |||
char voice_name[40]; | |||
@@ -175,6 +175,8 @@ typedef struct { | |||
static int n_ssml_stack; | |||
static SSML_STACK ssml_stack[N_SSML_STACK]; | |||
static espeak_VOICE base_voice; | |||
static char base_voice_variant_name[40] = {0}; | |||
static char current_voice_id[40] = {0}; | |||
@@ -1037,19 +1039,21 @@ static const char *VoiceFromStack() | |||
// Use the voice properties from the SSML stack to choose a voice, and switch | |||
// to that voice if it's not the current voice | |||
int ix; | |||
const char *p; | |||
SSML_STACK *sp; | |||
const char *v_id; | |||
int voice_name_specified; | |||
int voice_found; | |||
espeak_VOICE voice_select; | |||
char voice_name[40]; | |||
static char voice_name[40]; | |||
char language[40]; | |||
char buf[80]; | |||
strcpy(voice_name,ssml_stack[0].voice_name); | |||
strcpy(language,ssml_stack[0].language); | |||
voice_select.age = ssml_stack[0].voice_age; | |||
voice_select.gender = ssml_stack[0].voice_gender; | |||
voice_select.variant = ssml_stack[0].voice_variant; | |||
voice_select.variant = ssml_stack[0].voice_variant_number; | |||
voice_select.identifier = NULL; | |||
for(ix=0; ix<n_ssml_stack; ix++) | |||
@@ -1069,15 +1073,32 @@ static const char *VoiceFromStack() | |||
if(sp->language[0] != 0) | |||
{ | |||
strcpy(language, sp->language); | |||
// is this language provided by the base voice? | |||
p = base_voice.languages; | |||
while(*p++ != 0) | |||
{ | |||
if(strcmp(p, language) == 0) | |||
{ | |||
// yes, change the language to the main language of the base voice | |||
strcpy(language, &base_voice.languages[1]); | |||
break; | |||
} | |||
p += (strlen(p) + 1); | |||
} | |||
if(voice_name_specified == 0) | |||
voice_name[0] = 0; // forget a previous voice name if a language is specified | |||
} | |||
if(sp->voice_gender != 0) | |||
{ | |||
voice_select.gender = sp->voice_gender; | |||
} | |||
if(sp->voice_age != 0) | |||
voice_select.age = sp->voice_age; | |||
if(sp->voice_variant != 0) | |||
voice_select.variant = sp->voice_variant; | |||
if(sp->voice_variant_number != 0) | |||
voice_select.variant = sp->voice_variant_number; | |||
} | |||
voice_select.name = voice_name; | |||
@@ -1085,6 +1106,14 @@ static const char *VoiceFromStack() | |||
v_id = SelectVoice(&voice_select, &voice_found); | |||
if(v_id == NULL) | |||
return("default"); | |||
if((strchr(v_id, '+') == NULL) && ((voice_select.gender == 0) || (voice_select.gender == base_voice.gender)) && (base_voice_variant_name[0] != 0)) | |||
{ | |||
// a voice variant has not been selected, use the original voice variant | |||
sprintf(buf, "%s+%s", v_id, base_voice_variant_name); | |||
strncpy0(voice_name, buf, sizeof(voice_name)); | |||
return(voice_name); | |||
} | |||
return(v_id); | |||
} // end of VoiceFromStack | |||
@@ -1389,8 +1418,8 @@ int AddNameData(const char *name, int wide) | |||
} // end of AddNameData | |||
void SetVoiceStack(espeak_VOICE *v) | |||
{//================================ | |||
void SetVoiceStack(espeak_VOICE *v, const char *variant_name) | |||
{//========================================================== | |||
SSML_STACK *sp; | |||
sp = &ssml_stack[0]; | |||
@@ -1402,10 +1431,12 @@ void SetVoiceStack(espeak_VOICE *v) | |||
if(v->languages != NULL) | |||
strcpy(sp->language,v->languages); | |||
if(v->name != NULL) | |||
strcpy(sp->voice_name,v->name); | |||
sp->voice_variant = v->variant; | |||
strncpy0(sp->voice_name, v->name, sizeof(sp->voice_name)); | |||
sp->voice_variant_number = v->variant; | |||
sp->voice_age = v->age; | |||
sp->voice_gender = v->gender; | |||
strncpy0(base_voice_variant_name, variant_name, sizeof(base_voice_variant_name)); | |||
memcpy(&base_voice, ¤t_voice_selected, sizeof(base_voice)); | |||
} | |||
@@ -1467,7 +1498,7 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type) | |||
attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); | |||
attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name)); | |||
ssml_sp->voice_variant = attrnumber(variant,1,0)-1; | |||
ssml_sp->voice_variant_number = attrnumber(variant,1,0)-1; | |||
ssml_sp->voice_age = attrnumber(age,0,0); | |||
ssml_sp->voice_gender = attrlookup(gender,mnem_gender); | |||
ssml_sp->tag_type = tag_type; | |||
@@ -1647,6 +1678,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb | |||
{"reduced",2}, | |||
{"moderate",3}, | |||
{"strong",4}, | |||
{"x-strong",5}, | |||
{NULL,-1}}; | |||
static const char *prosody_attr[5] = { | |||
@@ -1735,14 +1767,16 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb | |||
if(translator->langopts.tone_language == 1) | |||
{ | |||
static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,90}; | |||
static unsigned char emphasis_to_volume[] = {100,100,70,110,140,140}; | |||
static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,100}; | |||
static unsigned char emphasis_to_volume[] = {100,100,70,110,135,150}; | |||
// tone language (eg.Chinese) do emphasis by increasing the pitch range. | |||
sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value]; | |||
sp->parameter[espeakVOLUME] = emphasis_to_volume[value]; | |||
} | |||
else | |||
{ | |||
static unsigned char emphasis_to_volume2[] = {100,100,75,100,120,150}; | |||
sp->parameter[espeakVOLUME] = emphasis_to_volume2[value]; | |||
sp->parameter[espeakEMPHASIS] = value; | |||
} | |||
ProcessParamStack(outbuf, outix); |
@@ -428,7 +428,7 @@ static int initialise(void) | |||
fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | |||
} | |||
LoadConfig(); | |||
SetVoiceStack(NULL); | |||
SetVoiceStack(NULL, ""); | |||
SynthesizeInit(); | |||
for(param=0; param<N_SPEECH_PARAM; param++) |
@@ -47,7 +47,6 @@ | |||
#include "wave.h" | |||
unsigned char *outbuf=NULL; | |||
extern espeak_VOICE voice_selected; | |||
espeak_EVENT *event_list=NULL; | |||
int event_list_ix=0; | |||
@@ -391,8 +390,8 @@ static int initialise(int control) | |||
fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | |||
} | |||
memset(&voice_selected,0,sizeof(voice_selected)); | |||
SetVoiceStack(NULL); | |||
memset(¤t_voice_selected,0,sizeof(current_voice_selected)); | |||
SetVoiceStack(NULL, ""); | |||
SynthesizeInit(); | |||
InitNamedata(); | |||
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.45.31 25.Jun.11"; | |||
const char *version_string = "1.45.40 23.Aug.11"; | |||
const int version_phdata = 0x014500; | |||
int option_device_number = -1; | |||
@@ -512,6 +512,7 @@ void LoadConfig(void) | |||
} | |||
} | |||
} | |||
fclose(f); | |||
} // end of LoadConfig | |||
@@ -762,7 +762,7 @@ if(voice->klattv[0]) | |||
} | |||
if(flags & 0x40) | |||
DoPause(12,0); // add a short pause after the consonant | |||
DoPause(20,0); // add a short pause after the consonant | |||
if(flags & 16) | |||
return(len); |
@@ -342,7 +342,7 @@ Translator *SelectTranslator(const char *name) | |||
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 }; | |||
static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,22, 22,21 }; | |||
static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; | |||
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; | |||
@@ -379,6 +379,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | |||
} | |||
break; | |||
@@ -394,7 +395,7 @@ Translator *SelectTranslator(const char *name) | |||
SetCyrillicLetters(tr); | |||
SetLetterVowel(tr,0x2a); | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x17; // devoice at end of word, and change voicing to match a following consonant (except v) | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) | |||
tr->langopts.param[LOPT_REDUCE] = 2; | |||
tr->langopts.stress_rule = STRESSPOSN_2R; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS ; | |||
@@ -468,7 +469,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.word_gap = 0x8; // don't use linking phonemes | |||
tr->langopts.vowel_pause = 0x30; | |||
tr->langopts.param[LOPT_PREFIXES] = 1; | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||
tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; | |||
@@ -954,6 +955,14 @@ SetLengthMods(tr,3); // all equal | |||
} | |||
break; | |||
case L('m','t'): // Maltese | |||
{ | |||
tr->charset_a0 = charsets[3]; // ISO-8859-3 | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||
tr->langopts.stress_rule = STRESSPOSN_2R; // penultimate | |||
tr->langopts.numbers = 1; | |||
} | |||
break; | |||
case L('n','l'): // Dutch | |||
{ | |||
@@ -963,7 +972,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.vowel_pause = 0x30; // ?? | |||
tr->langopts.param[LOPT_DIERESES] = 1; | |||
tr->langopts.param[LOPT_PREFIXES] = 1; | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||
SetLetterVowel(tr,'y'); | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_1900 | NUM_ORDINAL_DOT; | |||
@@ -1005,7 +1014,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
tr->langopts.stress_rule = STRESSPOSN_2R; | |||
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x8; | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | |||
tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | |||
tr->langopts.numbers2 = 0x40; | |||
@@ -1123,7 +1132,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | |||
tr->langopts.stress_flags = 0x20; | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x13; | |||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | |||
tr->langopts.numbers2 = 0x100; // plural forms of millions etc | |||
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator |
@@ -1563,6 +1563,39 @@ static int CountSyllables(unsigned char *phonemes) | |||
} | |||
void Word_EmbeddedCmd() | |||
{//==================== | |||
// Process embedded commands for emphasis, sayas, and break | |||
int embedded_cmd; | |||
int value; | |||
do | |||
{ | |||
embedded_cmd = embedded_list[embedded_read++]; | |||
value = embedded_cmd >> 8; | |||
switch(embedded_cmd & 0x1f) | |||
{ | |||
case EMBED_Y: | |||
option_sayas = value; | |||
break; | |||
case EMBED_F: | |||
option_emphasis = value; | |||
break; | |||
case EMBED_B: | |||
// break command | |||
if(value == 0) | |||
pre_pause = 0; // break=none | |||
else | |||
pre_pause += value; | |||
break; | |||
} | |||
} while(((embedded_cmd & 0x80) == 0) && (embedded_read < embedded_ix)); | |||
} // end of Word_EmbeddedCmd | |||
int SetTranslator2(const char *new_language) | |||
{//========================================= | |||
// Set translator2 to a second language | |||
@@ -1603,8 +1636,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
int next_tone=0; | |||
unsigned char *p; | |||
int srcix; | |||
int embedded_cmd; | |||
int value; | |||
int found_dict_flag; | |||
unsigned char ph_code; | |||
PHONEME_LIST2 *plist2; | |||
@@ -1646,30 +1677,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
{ | |||
embedded_flag = SFLAG_EMBEDDED; | |||
do | |||
{ | |||
embedded_cmd = embedded_list[embedded_read++]; | |||
value = embedded_cmd >> 8; | |||
switch(embedded_cmd & 0x1f) | |||
{ | |||
case EMBED_Y: | |||
option_sayas = value; | |||
break; | |||
case EMBED_F: | |||
option_emphasis = value; | |||
break; | |||
case EMBED_B: | |||
// break command | |||
if(value == 0) | |||
pre_pause = 0; // break=none | |||
else | |||
pre_pause += value; | |||
break; | |||
} | |||
} while((embedded_cmd & 0x80) == 0); | |||
Word_EmbeddedCmd(); | |||
} | |||
if((word[0] == 0) || (word_flags & FLAG_DELETE_WORD)) | |||
@@ -3208,7 +3216,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
if((dict_flags & (FLAG_ALLOW_DOT | FLAG_NEEDS_DOT)) && (ix == word_count-1) && (terminator & CLAUSE_DOT)) | |||
if((dict_flags & (FLAG_ALLOW_DOT | FLAG_NEEDS_DOT)) && (ix == word_count - 1 - dictionary_skipwords) && (terminator & CLAUSE_DOT)) | |||
{ | |||
// probably an abbreviation such as Mr. or B. rather than end of sentence | |||
clause_pause = 10; | |||
@@ -3227,6 +3235,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
if(embedded_read < embedded_ix) | |||
{ | |||
// any embedded commands not yet processed? | |||
Word_EmbeddedCmd(); | |||
} | |||
for(ix=0; ix<2; ix++) | |||
{ | |||
// terminate the clause with 2 PAUSE phonemes |
@@ -266,10 +266,12 @@ extern const int param_defaults[N_SPEECH_PARAM]; | |||
#define LOPT_PREFIXES 3 | |||
// non-zero, change voiced/unoiced to match last consonant in a cluster | |||
// bit 0=use regressive voicing | |||
// bit 1=LANG=cz,bg don't propagate over [v] | |||
// bit 2=don't propagate acress word boundaries | |||
// bit 3=LANG=pl, propagate over liquids and nasals | |||
// bit 4=devoice word-final consonants | |||
// bit 4=LANG=cz,sk don't progagate to [v] | |||
// bit 8=devoice word-final consonants | |||
#define LOPT_REGRESSIVE_VOICING 4 | |||
// 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') | |||
@@ -666,7 +668,7 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); | |||
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); | |||
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change); | |||
void SetVoiceStack(espeak_VOICE *v); | |||
void SetVoiceStack(espeak_VOICE *v, const char *variant_name); | |||
void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata); | |||
void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); | |||
@@ -69,6 +69,7 @@ typedef struct { | |||
// percentages shown to user, ix=N_PEAKS means ALL peaks | |||
extern USHORT voice_pcnt[N_PEAKS+1][3]; | |||
extern espeak_VOICE current_voice_selected; | |||
extern voice_t *voice; | |||
extern int tone_points[12]; |
@@ -66,7 +66,7 @@ static int n_voices_list = 0; | |||
static espeak_VOICE *voices_list[N_VOICES_LIST]; | |||
static int len_path_voices; | |||
espeak_VOICE voice_selected; | |||
espeak_VOICE current_voice_selected; | |||
enum { | |||
@@ -564,9 +564,9 @@ voice_t *LoadVoice(const char *vname, int control) | |||
int pitch1; | |||
int pitch2; | |||
static char voice_identifier[40]; // file name for voice_selected | |||
static char voice_name[40]; // voice name for voice_selected | |||
static char voice_languages[100]; // list of languages and priorities for voice_selected | |||
static char voice_identifier[40]; // file name for current_voice_selected | |||
static char voice_name[40]; // voice name for current_voice_selected | |||
static char voice_languages[100]; // list of languages and priorities for current_voice_selected | |||
strcpy(voicename,vname); | |||
if(voicename[0]==0) | |||
@@ -635,9 +635,9 @@ voice_t *LoadVoice(const char *vname, int control) | |||
voice_name[0] = 0; | |||
voice_languages[0] = 0; | |||
voice_selected.identifier = voice_identifier; | |||
voice_selected.name = voice_name; | |||
voice_selected.languages = voice_languages; | |||
current_voice_selected.identifier = voice_identifier; | |||
current_voice_selected.name = voice_name; | |||
current_voice_selected.languages = voice_languages; | |||
} | |||
else | |||
{ | |||
@@ -720,11 +720,11 @@ voice_t *LoadVoice(const char *vname, int control) | |||
case V_GENDER: | |||
{ | |||
int age; | |||
int age = 0; | |||
char vgender[80]; | |||
sscanf(p,"%s %d",vgender,&age); | |||
voice_selected.gender = LookupMnem(genders,vgender); | |||
voice_selected.age = age; | |||
current_voice_selected.gender = LookupMnem(genders,vgender); | |||
current_voice_selected.age = age; | |||
} | |||
break; | |||
@@ -1029,23 +1029,26 @@ voice_t *LoadVoice(const char *vname, int control) | |||
} // end of LoadVoice | |||
static char *ExtractVoiceVariantName(char *vname, int variant_num) | |||
{//=============================================================== | |||
static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir) | |||
{//=========================================================================== | |||
// Remove any voice variant suffix (name or number) from a voice name | |||
// Returns the voice variant name | |||
char *p; | |||
static char variant_name[20]; | |||
static char variant_name[40]; | |||
char variant_prefix[5]; | |||
variant_name[0] = 0; | |||
sprintf(variant_prefix,"!v%c",PATHSEP); | |||
if(add_dir == 0) | |||
variant_prefix[0] = 0; | |||
if(vname != NULL) | |||
{ | |||
if((p = strchr(vname,'+')) != NULL) | |||
{ | |||
// The voice name has a +variant suffix | |||
variant_num = 0; | |||
*p++ = 0; // delete the suffix from the voice name | |||
if(isdigit(*p)) | |||
{ | |||
@@ -1054,8 +1057,7 @@ static char *ExtractVoiceVariantName(char *vname, int variant_num) | |||
else | |||
{ | |||
// voice variant name, not number | |||
strcpy(variant_name,variant_prefix); | |||
strncpy0(&variant_name[3],p,sizeof(variant_name)-3); | |||
sprintf(variant_name, "%s%s", variant_prefix, p); | |||
} | |||
} | |||
} | |||
@@ -1083,7 +1085,7 @@ voice_t *LoadVoiceVariant(const char *vname, int variant_num) | |||
char buf[60]; | |||
strncpy0(buf,vname,sizeof(buf)); | |||
variant_name = ExtractVoiceVariantName(buf,variant_num); | |||
variant_name = ExtractVoiceVariantName(buf,variant_num, 1); | |||
if((v = LoadVoice(buf,0)) == NULL) | |||
return(NULL); | |||
@@ -1319,15 +1321,17 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int | |||
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) | |||
{//===================================================================== | |||
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2) | |||
{//====================================================================== | |||
int ix; | |||
int match_fname = -1; | |||
int match_fname2 = -1; | |||
int match_name = -1; | |||
const char *id; | |||
const char *id; // this is the filename within espeak-data/voices | |||
char *variant_name; | |||
int last_part_len; | |||
char last_part[41]; | |||
char name[40]; | |||
if(voices == NULL) | |||
{ | |||
@@ -1336,6 +1340,13 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) | |||
voices = voices_list; | |||
} | |||
strncpy0(name, name2, sizeof(name)); | |||
if((variant_name = strchr(name, '+')) != NULL) | |||
{ | |||
*variant_name = 0; | |||
variant_name++; | |||
} | |||
sprintf(last_part,"%c%s",PATHSEP,name); | |||
last_part_len = strlen(last_part); | |||
@@ -1347,14 +1358,17 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) | |||
break; | |||
} | |||
else | |||
if(strcmp(name,id = voices[ix]->identifier)==0) | |||
{ | |||
match_fname = ix; // matching identifier, use this if no matching name | |||
} | |||
else | |||
if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||
{ | |||
match_fname2 = ix; | |||
id = voices[ix]->identifier; | |||
if(strcmp(name, id)==0) | |||
{ | |||
match_fname = ix; // matching identifier, use this if no matching name | |||
} | |||
else | |||
if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||
{ | |||
match_fname2 = ix; | |||
} | |||
} | |||
} | |||
@@ -1414,7 +1428,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
} | |||
strncpy0(buf,voice_select2.name,sizeof(buf)); | |||
variant_name = ExtractVoiceVariantName(buf,0); | |||
variant_name = ExtractVoiceVariantName(buf,0,0); | |||
vp = SelectVoiceByName(voices_list,buf); | |||
if(vp != NULL) | |||
@@ -1425,7 +1439,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
{ | |||
if(variant_name[0] != 0) | |||
{ | |||
sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); // omit the !v/ from variant_name | |||
sprintf(voice_id,"%s+%s", vp->identifier, variant_name); | |||
return(voice_id); | |||
} | |||
@@ -1512,8 +1526,8 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
if(vp->variant != 0) | |||
{ | |||
variant_name = ExtractVoiceVariantName(NULL,vp->variant); | |||
sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); | |||
variant_name = ExtractVoiceVariantName(NULL, vp->variant, 0); | |||
sprintf(voice_id,"%s+%s", vp->identifier, variant_name); | |||
return(voice_id); | |||
} | |||
@@ -1671,7 +1685,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
static char buf[60]; | |||
strncpy0(buf,name,sizeof(buf)); | |||
variant_name = ExtractVoiceVariantName(buf,0); | |||
variant_name = ExtractVoiceVariantName(buf, 0, 1); | |||
memset(&voice_selector,0,sizeof(voice_selector)); | |||
// voice_selector.name = buf; | |||
@@ -1688,7 +1702,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
} | |||
DoVoiceChange(voice); | |||
SetVoiceStack(&voice_selector); | |||
SetVoiceStack(&voice_selector, variant_name); | |||
return(EE_OK); | |||
} | |||
@@ -1704,7 +1718,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
LoadVoice(variant_name,2); | |||
} | |||
DoVoiceChange(voice); | |||
SetVoiceStack(&voice_selector); | |||
SetVoiceStack(&voice_selector, variant_name); | |||
return(EE_OK); | |||
} | |||
} | |||
@@ -1725,7 +1739,7 @@ espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector) | |||
LoadVoiceVariant(voice_id,0); | |||
DoVoiceChange(voice); | |||
SetVoiceStack(voice_selector); | |||
SetVoiceStack(voice_selector, ""); | |||
return(EE_OK); | |||
} // end of SetVoiceByProperties | |||
@@ -1795,7 +1809,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | |||
{//================================================== | |||
return(&voice_selected); | |||
return(¤t_voice_selected); | |||
} | |||
#pragma GCC visibility pop |