street _^_EN | street _^_EN | ||||
boy _^_EN | boy _^_EN | ||||
square _^_EN | square _^_EN | ||||
appeal _^_EN | |||||
apple _^_EN | apple _^_EN | ||||
beachbuggy _^_EN | beachbuggy _^_EN | ||||
beachvolley _^_EN | beachvolley _^_EN | ||||
browser _^_EN | |||||
chart _^_EN | chart _^_EN | ||||
coach _^_EN | coach _^_EN | ||||
coke _^_EN | coke _^_EN | ||||
firewall _^_EN | firewall _^_EN | ||||
freak _^_EN | freak _^_EN | ||||
friendly _^_EN | friendly _^_EN | ||||
groupie _^_EN | |||||
homepage _^_EN | homepage _^_EN | ||||
hooligan _^_EN | hooligan _^_EN | ||||
interface _^_EN | interface _^_EN | ||||
boston _^_EN $alt | boston _^_EN $alt | ||||
bronx _^_EN $alt | bronx _^_EN $alt | ||||
boyle _^_EN $alt | boyle _^_EN $alt | ||||
clarence _^_EN $alt | |||||
cyrus _^_EN | cyrus _^_EN | ||||
cia _^_EN $alt | cia _^_EN $alt | ||||
fox _^_EN | fox _^_EN | ||||
oregon _^_EN $alt | oregon _^_EN $alt | ||||
piccadilly _^_EN | piccadilly _^_EN | ||||
reynolds _^_EN $alt | reynolds _^_EN $alt | ||||
purvis _^_EN | |||||
//purvis _^_EN | |||||
white _^_EN $alt | white _^_EN $alt | ||||
// PB French words | // PB French words | ||||
renæssance $alt | renæssance $alt | ||||
ressource $alt | ressource $alt | ||||
restance $alt | restance $alt | ||||
revanche $alt | |||||
romance $alt | romance $alt | ||||
seance $alt | seance $alt | ||||
service $alt | service $alt | ||||
srilankan $alt | srilankan $alt | ||||
sudan $alt | sudan $alt | ||||
taiwan $alt | taiwan $alt | ||||
texan $alt | |||||
tibetan $alt | tibetan $alt | ||||
tongan $alt | tongan $alt | ||||
trojan $alt | trojan $alt | ||||
eugenik $alt | eugenik $alt | ||||
excentrik $alt | excentrik $alt | ||||
fabrik $alt | fabrik $alt | ||||
falkeblik $alt | |||||
//falkeblik $alt | |||||
folkloristik $alt | folkloristik $alt | ||||
fonetik $alt | fonetik $alt | ||||
fysik $alt | fysik $alt | ||||
homiletik $alt | homiletik $alt | ||||
hydraulik $alt | hydraulik $alt | ||||
informatik $alt | informatik $alt | ||||
journalistik $alt | |||||
kamik $alt | kamik $alt | ||||
karakteristik $alt | karakteristik $alt | ||||
kasuistik $alt | kasuistik $alt | ||||
ironi $alt | ironi $alt | ||||
kakofoni $alt | kakofoni $alt | ||||
kapellani $alt | kapellani $alt | ||||
katatoni $alt | |||||
kleptomani $alt | kleptomani $alt | ||||
koloni $alt | koloni $alt | ||||
kompagni $alt | kompagni $alt | ||||
kvadrofoni $alt | kvadrofoni $alt | ||||
litani $alt | litani $alt | ||||
ludomani $alt | ludomani $alt | ||||
makaroni m&k@r'Vni $alt | |||||
mani $alt | mani $alt | ||||
misogyni $alt | misogyni $alt | ||||
monomani $alt | monomani $alt | ||||
kontinuer $alt | kontinuer $alt | ||||
kontraher $alt | kontraher $alt | ||||
kontrasigner $alt | kontrasigner $alt | ||||
kontraster $alt | |||||
kontrastere $alt | |||||
kontribuer $alt | kontribuer $alt | ||||
kontroller $alt | |||||
kontrollere $alt | |||||
konturere $alt | konturere $alt | ||||
konvener $alt | konvener $alt | ||||
konverger $alt | konverger $alt | ||||
konverser $alt | konverser $alt | ||||
konverter $alt | konverter $alt | ||||
konvojere $alt | konvojere $alt | ||||
konvoluter $alt | |||||
konvolutere $alt | |||||
kooperer $alt | kooperer $alt | ||||
koordiner $alt | koordiner $alt | ||||
kopiere $alt | kopiere $alt | ||||
lamenter $alt | lamenter $alt | ||||
laminer $alt | laminer $alt | ||||
lancer $alt | lancer $alt | ||||
lasere $alt | |||||
//lasere $alt | |||||
latiniser $alt | latiniser $alt | ||||
lavpasteuriser $alt | lavpasteuriser $alt | ||||
legaliser $alt | legaliser $alt | ||||
patiner $alt | patiner $alt | ||||
patroniser $alt | patroniser $alt | ||||
patruljere $alt | patruljere $alt | ||||
afpatruljer $alt | |||||
pausere $alt | pausere $alt | ||||
pelleter $alt | pelleter $alt | ||||
pendulere $alt | pendulere $alt | ||||
strabadsere $alt | strabadsere $alt | ||||
stranguler $alt | stranguler $alt | ||||
stratificer $alt | stratificer $alt | ||||
strukturer $alt | |||||
strukturere $alt | |||||
omstrukturer $alt | omstrukturer $alt | ||||
studere $alt | studere $alt | ||||
indstudere $alt | indstudere $alt | ||||
taktreguler $alt | taktreguler $alt | ||||
taljere $alt | taljere $alt | ||||
tamburer $alt | tamburer $alt | ||||
tamponer $alt | |||||
tamponere $alt | |||||
tangere $alt | tangere $alt | ||||
tapetser $alt | tapetser $alt | ||||
tarer $alt | tarer $alt | ||||
futon $alt | futon $alt | ||||
føljeton fWljet'Vn $alt | føljeton fWljet'Vn $alt | ||||
facon $alt | facon $alt | ||||
kamæleon $alt | |||||
lazaron $alt | lazaron $alt | ||||
makron $alt | makron $alt | ||||
melon $alt | melon $alt | ||||
patolog $alt | patolog $alt | ||||
politolog $alt | politolog $alt | ||||
prolog $alt | prolog $alt | ||||
proktolog $alt | |||||
psykolog $alt | psykolog $alt | ||||
radiolog $alt | radiolog $alt | ||||
runolog $alt | runolog $alt | ||||
økologi $alt | økologi $alt | ||||
// final -ose - stressed o | // final -ose - stressed o | ||||
acidose $alt | |||||
antibiose $alt | antibiose $alt | ||||
apoteose $alt | apoteose $alt | ||||
asbestose $alt | asbestose $alt | ||||
professor $alt | professor $alt | ||||
provisor $alt | provisor $alt | ||||
revisor $alt | revisor $alt | ||||
sektor $alt | |||||
sensor $alt | sensor $alt | ||||
sponsor $alt | sponsor $alt | ||||
successor $alt | successor $alt | ||||
emp $abbrev | emp $abbrev | ||||
hbo $abbrev // TV station | hbo $abbrev // TV station | ||||
usa $abbrev | usa $abbrev | ||||
kfum $abbrev | |||||
who $abbrev $allcaps // PB World Health Organization | who $abbrev $allcaps // PB World Health Organization | ||||
ussr $abbrev $allcaps // Sovjet Union | ussr $abbrev $allcaps // Sovjet Union | ||||
vsop $abbrev | vsop $abbrev | ||||
(bh'er) b,e:h'O:V | (bh'er) b,e:h'O:V | ||||
(l'chaim) l&kr'ajm | (l'chaim) l&kr'ajm | ||||
scsi skVsi // PB | scsi skVsi // PB | ||||
ike ajk // PB name | |||||
ikes ajks // PB | |||||
// Try to catch errors | // Try to catch errors | ||||
x z | x z | ||||
Dictionary da_dict 2011-05-05 | |||||
Dictionary da_dict 2011-07-21 | |||||
& &# 0 3 @ @- a A | & &# 0 3 @ @- a A | ||||
aI e E i o O u V | aI e E i o O u V | ||||
* - : ? b B d D | * - : ? b B d D | ||||
dZ f g h j J k l | dZ f g h j J k l | ||||
l/2 l/3 m n N p r R | 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 | a A a: E e: i i: o | ||||
o: u u: Y y y: Y: | o: u u: Y y y: Y: | ||||
ts v x z | ts v x z | ||||
Dictionary en_dict 2011-06-21 | |||||
Dictionary en_dict 2011-08-17 | |||||
0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
a a# A: A@ aa aI aI@ aU | a a# A: A@ aa aI aI@ aU | ||||
s2 t v w Z | s2 t v w Z | ||||
Dictionary fr_dict 2011-05-21 | |||||
Dictionary fr_dict 2011-08-14 | |||||
@ @- a A~ e E E: E~ | @ @- a A~ e E E: E~ | ||||
i I o O O~ u u: w | i I o O O~ u u: w | ||||
t. th th. v w x z | 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 | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
U: V V# | 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 | Dictionary hy_dict 2008-12-22 | ||||
t tS v w x | t tS v w x | ||||
Dictionary nl_dict 2011-06-08 | |||||
Dictionary nl_dict 2011-07-23 | |||||
8 @ @- a A a: A~ e | 8 @ @- a A a: A~ e | ||||
E e# E2 e: EI eU i I | E e# E2 e: EI eU i I | ||||
w x z Z | w x z Z | ||||
Dictionary ro_dict 2011-03-10 | |||||
Dictionary ro_dict 2011-07-21 | |||||
@ @- @I @U a aI aU e | @ @- @I @U a aI aU e | ||||
ea eI eo eU i i/ I^ iI | ea eI eo eU i i/ I^ iI | ||||
Z; | Z; | ||||
Dictionary sk_dict 2010-03-12 | |||||
Dictionary sk_dict 2011-08-08 | |||||
& @- a a: e e: i i: | & @- a a: e e: i i: | ||||
l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
* ; b d d; dZ dz f | * ; b d d; dZ dz f | ||||
g h j k l l^ m n | g h j k l l^ m n | ||||
N n^ p r R R^ R^/ s | 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 | Dictionary sq_dict 2008-12-22 | ||||
tS v w z | tS v w z | ||||
Dictionary am_dict 2010-10-02 | |||||
Dictionary am_dict 2011-08-23 | |||||
@ a e i o u y | @ 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 | Dictionary ml_dict 2011-04-25 | ||||
k l l. m m# n N n# | k l l. m m# n N n# | ||||
N# n. n.# n^ n^# p r s | N# n. n.# n^ n^# p r s | ||||
S t t. th tS v w z | 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 |
v vi: | v vi: | ||||
w d'Vb@Lju: | w d'Vb@Lju: | ||||
x Eks | x Eks | ||||
y waI | |||||
z zEd | z zEd | ||||
?3 z zi: | ?3 z zi: | ||||
_· mId@Ld0t | _· mId@Ld0t | ||||
_¸ sEd'Il@ | _¸ sEd'Il@ | ||||
_¹ su:p@skrIptw'0n | _¹ su:p@skrIptw'0n | ||||
_º maskjUlIn'O@dI2n@L | |||||
//_º maskjUlIn'O@dI2n@L | |||||
_º dI2gr'i:z | |||||
_» raIt'gIl@mEt | _» raIt'gIl@mEt | ||||
_¿ %Inv,3:tI2dkw'EstS@n | _¿ %Inv,3:tI2dkw'EstS@n | ||||
ui $abbrev | ui $abbrev | ||||
uk $abbrev | uk $abbrev | ||||
un $abbrev $allcaps | un $abbrev $allcaps | ||||
unhcr $abbrev | |||||
url $abbrev | url $abbrev | ||||
usa $abbrev | usa $abbrev | ||||
usb $abbrev | usb $abbrev | ||||
anon a#n0n | anon a#n0n | ||||
anonymous $2 | anonymous $2 | ||||
another a#nVD3 | another a#nVD3 | ||||
answer aans3 | |||||
ante anti | ante anti | ||||
antecedent antIs'i:d@nt | antecedent antIs'i:d@nt | ||||
antibody $1 | antibody $1 | ||||
cutaway kVt@weI | cutaway kVt@weI | ||||
cutoff kVt0f | cutoff kVt0f | ||||
cutout kVtaUt | cutout kVtaUt | ||||
cwm kUm | |||||
cyan saI'an | cyan saI'an | ||||
cymru kVmri | cymru kVmri | ||||
dais deIIs | dais deIIs | ||||
damaged d'amI2dZd | damaged d'amI2dZd | ||||
dandelion dandI2laI@n | dandelion dandI2laI@n | ||||
ddu DI // Welsh | |||||
de d@ $only | de d@ $only | ||||
debacle deIb'A:k@L | debacle deIb'A:k@L | ||||
debrief di:br'i:f | debrief di:br'i:f | ||||
dungaree dVNga#r'i: | dungaree dVNga#r'i: | ||||
duvet du:veI | duvet du:veI | ||||
d'ye dj@ | d'ye dj@ | ||||
dynamo $1 | |||||
ebook i:bUk | ebook i:bUk | ||||
eweek i:wi:k | eweek i:wi:k | ||||
flier flaI3 | flier flaI3 | ||||
flourish flVrI2S | flourish flVrI2S | ||||
?3 flourish fl3:I2S | ?3 flourish fl3:I2S | ||||
flyby flaIbaI | |||||
focus foUk@s // ed,ing | focus foUk@s // ed,ing | ||||
foothold fUthoUld | foothold fUthoUld | ||||
forage f0rI2dZ | forage f0rI2dZ | ||||
labored leIb@d | labored leIb@d | ||||
laborer leIb@r3 | laborer leIb@r3 | ||||
lager lA:g3 | lager lA:g3 | ||||
laity leI@ti | |||||
landowner l'and,oUn3 | landowner l'and,oUn3 | ||||
las ,las | las ,las | ||||
?3 las ,lA:s | ?3 las ,lA:s | ||||
literature lItrI2tS3 | literature lItrI2tS3 | ||||
live laIv $onlys | live laIv $onlys | ||||
live lIv $verb | live lIv $verb | ||||
lived lIvd | |||||
livecd l'aIvsi:d'i: | livecd l'aIvsi:d'i: | ||||
livestock l'aIvst,0k | |||||
lively laIvlI | lively laIvlI | ||||
llama lA:m@ | llama lA:m@ | ||||
locale loUk'aal | locale loUk'aal | ||||
marijuana marI2w'A:n@ | marijuana marI2w'A:n@ | ||||
marshall mA@S@L | marshall mA@S@L | ||||
martinet $3 | martinet $3 | ||||
massacre mas@k3 | |||||
massage masA:Z | massage masA:Z | ||||
mausoleum mO:s@li:@m | mausoleum mO:s@li:@m | ||||
mayhem meIhEm | mayhem meIhEm | ||||
minibus mInIbVs | minibus mInIbVs | ||||
mining maInIN // not mini | mining maInIN // not mini | ||||
minuet mInju:'Et | minuet mInju:'Et | ||||
minus maIn@s | |||||
minute mInIt $onlys | minute mInIt $onlys | ||||
mirage mIrA:Z | mirage mIrA:Z | ||||
misery mIz@rI | misery mIz@rI | ||||
record $verb | record $verb | ||||
redcross $2 | redcross $2 | ||||
redeye r'Ed,aI | redeye r'Ed,aI | ||||
redial ri:daI@l | |||||
redo ri:du: | redo ri:du: | ||||
redone ri:d'Vn | redone ri:d'Vn | ||||
reference rEfr@ns | reference rEfr@ns | ||||
sclera skli@r | sclera skli@r | ||||
scourge sk3:dZ | scourge sk3:dZ | ||||
scrotum skroUt@m | scrotum skroUt@m | ||||
scythe saID | |||||
seabed si:bEd | seabed si:bEd | ||||
sealion si:laI@n | sealion si:laI@n | ||||
seance seI0ns | seance seI0ns | ||||
several sEvr@L | several sEvr@L | ||||
shallow SaloU | shallow SaloU | ||||
shampoo $2 | shampoo $2 | ||||
shepherd SEp@d | |||||
sheriff S'ErI2f | sheriff S'ErI2f | ||||
shew SoU | shew SoU | ||||
shia Si:@ | shia Si:@ | ||||
Dyfed d'VvId | Dyfed d'VvId | ||||
Edinburgh EdInb%Vr@ | Edinburgh EdInb%Vr@ | ||||
Ely i:li | Ely i:li | ||||
Enfield $1 | |||||
Exeter EksIt3 | Exeter EksIt3 | ||||
Exmoor EksmU@ | Exmoor EksmU@ | ||||
Fylde faIld | Fylde faIld | ||||
Cohen koU@n | Cohen koU@n | ||||
Cthulhu k@-Tu:l#u: | Cthulhu k@-Tu:l#u: | ||||
Chrysler kraIzl3 | Chrysler kraIzl3 | ||||
Dante danteI | |||||
Disney dIzni | Disney dIzni | ||||
Dolce d0ltSeI | Dolce d0ltSeI | ||||
Dvorak d@-vo@Zak | Dvorak d@-vo@Zak |
sw) a (B 0 | sw) a (B 0 | ||||
a (Be# eI | a (Be# eI | ||||
w) a (Be# eI | w) a (Be# eI | ||||
a (Cee+ a | |||||
a (BeCo_ a | a (BeCo_ a | ||||
a (BerA a | a (BerA a | ||||
a (BerC a | a (BerC a | ||||
w) a (d 0 | w) a (d 0 | ||||
ow) a (d @ | ow) a (d @ | ||||
ae i: | ae i: | ||||
aea i@ | |||||
aea 'i@ | |||||
@) aed (_S2 d | @) aed (_S2 d | ||||
ae (l eI | ae (l eI | ||||
h) ae (m i: | h) ae (m i: | ||||
@) awi (_ 'A:wI | @) awi (_ 'A:wI | ||||
_) aw (k O: | _) aw (k O: | ||||
_) aw (ok a#w | _) aw (ok a#w | ||||
awr (_ aU@ | |||||
C) a (x+ a | C) a (x+ a | ||||
_) a (x+ a | _) a (x+ a | ||||
ay eI | ay eI | ||||
acou (st a#ku: | acou (st a#ku: | ||||
ac (quie ,a | ac (quie ,a | ||||
_) acre eIk@ | _) acre eIk@ | ||||
mass) acre @k3 | |||||
_) ac (ri ak | _) ac (ri ak | ||||
ac (ro ak | ac (ro ak | ||||
m) acro (@ akr@ | m) acro (@ akr@ | ||||
ai (_ aI | ai (_ aI | ||||
aic (_ 'eIIk | aic (_ 'eIIk | ||||
aic (al 'eIIk | aic (al 'eIIk | ||||
aie eI@ | |||||
ai (i aI | ai (i aI | ||||
@) ai (Ca_ 'eI | @) ai (Ca_ 'eI | ||||
aig (n 'eI | aig (n 'eI | ||||
@erd) am (_ am | @erd) am (_ am | ||||
?!3 &h) am (_N @m | ?!3 &h) am (_N @m | ||||
&s) am (_ @m | &s) am (_ @m | ||||
@r) am (a 'A:m | |||||
@r) am (a_ 'A:m | |||||
_) am (al a#m | _) am (al a#m | ||||
amateur am@t3 | amateur am@t3 | ||||
amaz a#meIz | amaz a#meIz | ||||
tr) an (si an | tr) an (si an | ||||
tr) ansis anz'Is | tr) ansis anz'Is | ||||
tr) an (som an | tr) an (som an | ||||
answ (er aans | |||||
ante (nn ant'E | ante (nn ant'E | ||||
_) anti (@P4 ,antI // prefix | _) anti (@P4 ,antI // prefix | ||||
ant (iq ant | ant (iq ant | ||||
&h) ar (d_ 3 | &h) ar (d_ 3 | ||||
&ch) ar (d 3 | &ch) ar (d 3 | ||||
&k) ar (d_ 3 | &k) ar (d_ 3 | ||||
&p) ar (d_ 3 | |||||
&st) ar (d_ 3 | &st) ar (d_ 3 | ||||
&w) ar (d_ 3 | &w) ar (d_ 3 | ||||
aw) ar (d O@ | aw) ar (d O@ | ||||
eot) ar (d_ A@ | eot) ar (d_ A@ | ||||
&z) ar (d_ 3 | &z) ar (d_ 3 | ||||
ar (dry 3 | |||||
h) ar (ass @r | h) ar (ass @r | ||||
&m) aran @ran | &m) aran @ran | ||||
sep) ar (at 3r | sep) ar (at 3r | ||||
co (mpou k0 | co (mpou k0 | ||||
co (mprehen k0 | co (mprehen k0 | ||||
co (mprom k0 | co (mprom k0 | ||||
co (mpt k0 | |||||
_) comp (tr k%0m | |||||
co (mputa k,0 | co (mputa k,0 | ||||
_) co (mr k0 | _) co (mr k0 | ||||
_) con (@ k%0n | _) con (@ k%0n | ||||
&) en (ce_ @n | &) en (ce_ @n | ||||
?8 &) en (ce_ En | ?8 &) en (ce_ En | ||||
f) en (ce_ En | f) en (ce_ En | ||||
g) ener (al En@r | |||||
_) en (ough I2n | _) en (ough I2n | ||||
.group eo | .group eo | ||||
%C) ers (_S4 3z | %C) ers (_S4 3z | ||||
?8 %C) ers (_S4 a#z | ?8 %C) ers (_S4 a#z | ||||
ss) er (_S2 3 | ss) er (_S2 3 | ||||
ss) ers (_S3 3z | |||||
all) er (_ 3 | all) er (_ 3 | ||||
mb) er (_ 3 | mb) er (_ 3 | ||||
lin) er (_S1 3 | lin) er (_S1 3 | ||||
_) er (A I2r | _) er (A I2r | ||||
_) er 3: | _) er 3: | ||||
_) err (A Er | _) err (A Er | ||||
@) eral (ity @r'al | |||||
&) eram (ent r@m | &) eram (ent r@m | ||||
X) era (_ i@r@ | X) era (_ i@r@ | ||||
cam) era @-r@ | |||||
XC) err Er | XC) err Er | ||||
erre 'e@ | erre 'e@ | ||||
erred (_ '3:d | erred (_ '3:d | ||||
&) ico (_ =I2koU | &) ico (_ =I2koU | ||||
i (cus_ =I | i (cus_ =I | ||||
_) i (d aI | _) i (d aI | ||||
up) i (de I | |||||
ir) i (d I | ir) i (d I | ||||
acc) i (d I | acc) i (d I | ||||
c) i (dal 'aI | c) i (dal 'aI | ||||
inte (llec Int@ | inte (llec Int@ | ||||
_) inter (@P5 ,Int3 // prefix | _) inter (@P5 ,Int3 // prefix | ||||
_) inter (AP5 ,Int@r | _) inter (AP5 ,Int@r | ||||
inter (est Int@r | |||||
inter (est Intr | |||||
interfer Int@f'i@3 | interfer Int@f'i@3 | ||||
_) int (erio+ %Int | _) int (erio+ %Int | ||||
_) inter (n_ %Int3: | _) inter (n_ %Int3: | ||||
inism (_ InIz@m | inism (_ InIz@m | ||||
infor (matio Inf3 | infor (matio Inf3 | ||||
ino (_ 'i:noU | ino (_ 'i:noU | ||||
_m) in (us aIn | |||||
_m) inu (te aIn'ju: | _m) inu (te aIn'ju: | ||||
_m) inute (m InIt | _m) inute (m InIt | ||||
_) intra Intr@ | _) intra Intr@ | ||||
n) ion =i@n | n) ion =i@n | ||||
v) io (l aI@ | v) io (l aI@ | ||||
ione (_ 'aI@ni | ione (_ 'aI@ni | ||||
g) io (n @ | |||||
g) io (n+ @ | |||||
m) io (n I20 | m) io (n I20 | ||||
sh) io (n @ | sh) io (n @ | ||||
_) io (n aI0 | _) io (n aI0 | ||||
ir (at %aIr | ir (at %aIr | ||||
ir (ate =i@r | ir (ate =i@r | ||||
ire aI@ | ire aI@ | ||||
ir (ee aI@ | |||||
?8 ire aIa# | ?8 ire aIa# | ||||
s) ir (en aI@ | s) ir (en aI@ | ||||
c) ire (n aIr@ | c) ire (n aIr@ | ||||
.group it | .group it | ||||
_) it' %It | |||||
_m) it (o aIt | _m) it (o aIt | ||||
it (a_N 'i:t | it (a_N 'i:t | ||||
it (o_ 'i:t | it (o_ 'i:t | ||||
@) iv (e Iv | @) iv (e Iv | ||||
iv (e# aIv | iv (e# aIv | ||||
h) iv (e_ aIv | h) iv (e_ aIv | ||||
l) ive (l aIv | |||||
_l) ive (B aIv | |||||
l) iv (en aIv | l) iv (en aIv | ||||
r) ival aIv@L | r) ival aIv@L | ||||
ct) iv (al 'aIv | ct) iv (al 'aIv | ||||
Al) l (_ | Al) l (_ | ||||
&) lim (ent lIm | &) lim (ent lIm | ||||
&B) ling (_ lIN | &B) ling (_ lIN | ||||
&B) lings (_ lINz | |||||
ng) ling (_ @-lIN | ng) ling (_ @-lIN | ||||
&t) ling (_ _lIN | &t) ling (_ _lIN | ||||
&l) ling (_S4vd IN | &l) ling (_S4vd IN | ||||
X) o (By_ oU | X) o (By_ oU | ||||
_) o (Cy+ 0 | _) o (Cy+ 0 | ||||
o (Be# oU | o (Be# oU | ||||
oi (ce# OI | |||||
o (BeCo_ 0 | o (BeCo_ 0 | ||||
o (BenC oU | o (BenC oU | ||||
o (Beon 'oU | o (Beon 'oU | ||||
@@) ol (ar 'oUl | @@) ol (ar 'oUl | ||||
h) ol (ar 0l | h) ol (ar 0l | ||||
m) ole (st @lE | m) ole (st @lE | ||||
b) ol (t oUl | |||||
c) ol (our Vl | c) ol (our Vl | ||||
@@) ol (us 'oUl | @@) ol (us 'oUl | ||||
contr) ol oUl | contr) ol oUl | ||||
olm (_ oUm | olm (_ oUm | ||||
olo (gi '0l@ | olo (gi '0l@ | ||||
olo (gic @l'0 | olo (gic @l'0 | ||||
v) olt oUlt | |||||
olt oUlt | |||||
w) olv Ulv | w) olv Ulv | ||||
N_p) oly ,0lI | N_p) oly ,0lI | ||||
os (al_ 'oUz | os (al_ 'oUz | ||||
_l) os (e u:z | _l) os (e u:z | ||||
ose (_ oUz | ose (_ oUz | ||||
purp) ose (_ @s | |||||
purp) ose @s | |||||
_r) os (e# oUz | _r) os (e# oUz | ||||
c) os (ec oUs | c) os (ec oUs | ||||
c) os (ine_ oUs | c) os (ine_ oUs | ||||
y) ou (t_ aU | y) ou (t_ aU | ||||
ou (v u: | ou (v u: | ||||
oux (_ u: | oux (_ u: | ||||
ou (z u: | |||||
.group ov | .group ov | ||||
@) ov (al u:v | @) ov (al u:v | ||||
_) pt (Y t | _) pt (Y t | ||||
ph f | ph f | ||||
ph (am_ p | |||||
phenome (n fI2n0mI | phenome (n fI2n0mI | ||||
phenyl f,i:naIl | phenyl f,i:naIl | ||||
p (haza p | p (haza p | ||||
&ant) ry (_S2 r%I | &ant) ry (_S2 r%I | ||||
.group re | .group re | ||||
// _) re (@P2 %ri: | |||||
_) re (C@ rI2 | _) re (C@ rI2 | ||||
// _) re (A rI2 | |||||
&Ct) red (_ @d | &Ct) red (_ @d | ||||
&B) red (_ r@d | &B) red (_ r@d | ||||
noeuv) re @ | |||||
uv) re @ | |||||
rer (_ r@ | rer (_ r@ | ||||
re (_ 3 | re (_ 3 | ||||
A) re (_ r@ | A) re (_ r@ | ||||
_) scar (A ske@ | _) scar (A ske@ | ||||
_) scar (a skar | _) scar (a skar | ||||
scarc ske@s | scarc ske@s | ||||
sc (i s | |||||
sc (L02 s | |||||
sci (b s@ | sci (b s@ | ||||
sci (_ =skaI | sci (_ =skaI | ||||
scis (_ =skIs | scis (_ =skIs | ||||
@) u (late =jU | @) u (late =jU | ||||
u (le_ ju: | u (le_ ju: | ||||
s) u (le_ ju: | s) u (le_ ju: | ||||
f) ul (fil %Vl | |||||
f) ul (fil %Ul | |||||
j) u (li u: | j) u (li u: | ||||
@) uli (_ =jUlaI | @) uli (_ =jUlaI | ||||
b) ull Ul | b) ull Ul | ||||
f) ull Ul | f) ull Ul | ||||
p) ull Ul | p) ull Ul | ||||
b) ully UlI | b) ully UlI | ||||
_f) ully UlI | |||||
_f) u (lC U | |||||
f) u (lcr V | |||||
&f) ully (_ @l%I | &f) ully (_ @l%I | ||||
?8 &f) ully (_ Vl%I | ?8 &f) ully (_ Vl%I | ||||
&) u (lous_ =jU | &) u (lous_ =jU | ||||
p) un (ish Vn | p) un (ish Vn | ||||
r) un (i u:n | r) un (i u:n | ||||
un (A Vn | un (A Vn | ||||
un (er ju:n | |||||
C) un (er ju:n | |||||
_) un (reC@P2 ,Vn | _) un (reC@P2 ,Vn | ||||
un (regi %Vn | un (regi %Vn | ||||
_) wr (Y r | _) wr (Y r | ||||
C) w (_ w@ | C) w (_ w@ | ||||
C) w (X U // Welsh names | |||||
wh w | wh w | ||||
wr r | wr r | ||||
C) we (_ =wI | C) we (_ =wI | ||||
xure (_ kS%U@ | xure (_ kS%U@ | ||||
.group y | .group y | ||||
_) y (_ waI | |||||
-) y (- @ // Welsh names | |||||
y j | y j | ||||
_) y' (CP2 j@ | _) y' (CP2 j@ | ||||
y (C_ I | y (C_ I | ||||
Ette (_ 'Et | Ette (_ 'Et | ||||
E (tic_ E | E (tic_ E | ||||
Eus (_ I2@s | Eus (_ I2@s | ||||
Ew (_ u: | |||||
ob) Ey (_ eI | ob) Ey (_ eI | ||||
// French translation rules for Espeak | // French translation rules for Espeak | ||||
// *************************************************************************** | // *************************************************************************** | ||||
// * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
// * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||||
// * email: [email protected] * | // * email: [email protected] * | ||||
// * * | // * * | ||||
// * This program is free software; you can redistribute it and/or modify * | // * This program is free software; you can redistribute it and/or modify * | ||||
// http://www.fluxnic.net/cicero | // http://www.fluxnic.net/cicero | ||||
// | // | ||||
// Rules are now maintained by Michel Such <[email protected]> | // 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: | // Letter classes: | ||||
// When these diphtonges are after a consonant folllowing e, e is not mute | // When these diphtonges are after a consonant folllowing e, e is not mute | ||||
.L10 ia ie io ua ue ui uo | .L10 ia ie io ua ue ui uo | ||||
.L11 b p | .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 | // Words ending "son" pust sound english if preceded by L13 | ||||
.L13 d g k l p er hn | .L13 d g k l p er hn | ||||
_) yahoo (P5 ja'u | _) yahoo (P5 ja'u | ||||
ym (L11 E~ // tympan | ym (L11 E~ // tympan | ||||
ym (_ E~ // thym | |||||
X) ys (_ is | X) ys (_ is | ||||
yn (K E~ // laryngite | yn (K E~ // laryngite |
LST ElESte: $allcaps | LST ElESte: $allcaps | ||||
BAR bAR2 $allcaps | BAR bAR2 $allcaps | ||||
//SS EsEs $allcaps | //SS EsEs $allcaps | ||||
ALT Alt $allcaps | |||||
TAB tAb $allcaps | |||||
(a . m .) An^n^i||m'int $hasdot | (a . m .) An^n^i||m'int $hasdot | ||||
ún u:JnEvEzEt: $hasdot | ún u:JnEvEzEt: $hasdot | ||||
dr doktoR2 $hasdot | dr doktoR2 $hasdot | ||||
körülményei $unstressend | körülményei $unstressend | ||||
bízva $unstressend | bízva $unstressend | ||||
száma $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 | // word pairs | ||||
(hogy a) h,oJ,A | (hogy a) h,oJ,A |
bb (L01 b // only speak one b if followed by a consonant | bb (L01 b // only speak one b if followed by a consonant | ||||
bbr bR2 //special exception with always need executing | bbr bR2 //special exception with always need executing | ||||
bbj bj //special exception with always need executing | |||||
.group c | .group c | ||||
c ts | c ts | ||||
cs (-sz tS|s //need spokening single ts and single s phoneme | cs (-sz tS|s //need spokening single ts and single s phoneme | ||||
ccs (-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 | 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 | .group ch | ||||
anar) ch (i h | anar) ch (i h | ||||
harma) d (szint d | harma) d (szint d | ||||
kó) d (jel d | kó) d (jel d | ||||
harma) d (sor 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 | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
kapáló) dz z | kapáló) dz z | ||||
_ó) dz (ko ts | _ó) dz (ko ts | ||||
gyűrű) dz (ik z | gyűrű) dz (ik z | ||||
burkoló) dz z | |||||
.group e | .group e | ||||
e E | e E | ||||
ggb gb //special exception with always need executing | ggb gb //special exception with always need executing | ||||
ggr gR2 //special exception with always need executing | ggr gR2 //special exception with always need executing | ||||
?1 _) goeth gY:tE | ?1 _) goeth gY:tE | ||||
_me) ggy (en_ J: //Single meggyen word need spokening longer J: phoneme | |||||
me) g (gy g | me) g (gy g | ||||
ggy (L01 J | ggy (L01 J | ||||
ggyb Jb //special exception with always need executing | ggyb Jb //special exception with always need executing | ||||
ggyr JR2 //special exception with always need executing | ggyr JR2 //special exception with always need executing | ||||
szöve) g (gyűjt g | szöve) g (gyűjt g | ||||
ta) g (gyűl g | ta) g (gyűl g | ||||
gu) gg (ol 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 | .group gy | ||||
gy J | gy J | ||||
e) gy (összeg J: | e) gy (összeg J: | ||||
e) gys (ík J|S //for example egysíkú word need spokening single J and S phoneme | e) gys (ík J|S //for example egysíkú word need spokening single J and S phoneme | ||||
_e) gy (öntet J: | _e) gy (öntet J: | ||||
tár) gy (sor J | |||||
.group h | .group h | ||||
h h | h h | ||||
_sz) í (vattak i | _sz) í (vattak i | ||||
_sz) í (vattákk i | _sz) í (vattákk i | ||||
_sz) í (vató i | _sz) í (vató i | ||||
_v) í (zi i //for example vízipipa, vízimentők beginning words need spokening i, not i: phoneme | |||||
.group j | .group j | ||||
j j | j j | ||||
_) közt kYst | _) 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 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 | k-) k //silent with second k phoneme | ||||
_játé) kk (liens k: //exceptiof for kk (L01 rule | |||||
.group l | .group l | ||||
bű) n (jel n | bű) n (jel n | ||||
negyve) n (yard n | negyve) n (yard n | ||||
ötve) n (yard n | ötve) n (yard n | ||||
benzi) n (jegy n | |||||
elle) n (javaslat n | elle) n (javaslat n | ||||
késő) n (jövő n | késő) n (jövő n | ||||
közbe) n (jár n | közbe) n (jár n | ||||
idé) ny (jel 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. | 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 | 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 | .group o | ||||
o o | o o | ||||
viselkedé) s (zava S | viselkedé) s (zava S | ||||
alkalmazá) s (szerver S | alkalmazá) s (szerver S | ||||
fá) s (szárú S | fá) s (szárú S | ||||
ritmu) s (zavar S | |||||
pedagógu) s (sztrájk S | |||||
.group ss | .group ss | ||||
ssz ss2 | ssz ss2 | ||||
_má) ssz (ó Ss | _má) ssz (ó Ss | ||||
mennydörgé) ssz (erű Ss | mennydörgé) ssz (erű Ss | ||||
robbaná) ss S: | robbaná) ss S: | ||||
hamva) ssz s: | |||||
robbaná) ssz (er Ss | robbaná) ssz (er Ss | ||||
danubiu) ss s: //a radio station name | danubiu) ss s: //a radio station name | ||||
danubiu) ssz s: //a radio station name | danubiu) ssz s: //a radio station name | ||||
meglepeté) ssz (erű Ss | meglepeté) ssz (erű Ss | ||||
motoro) ssz (án Ss | motoro) ssz (án Ss | ||||
ülé) ssz (ak Ss | ülé) ssz (ak Ss | ||||
tölté) ssz (abályoz Sss | |||||
tölté) ssz (abályoz Ss | |||||
orvo) ssz (övetség Ss | orvo) ssz (övetség Ss | ||||
orvo) ssz (akértő Ss | orvo) ssz (akértő Ss | ||||
orvo) ssz (emély Ss | orvo) ssz (emély Ss | ||||
gyor) ssz (űr Ss //for example gyorsszűrő word need spokening single S and s phoneme | 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 | _a) ssz (iszt s //for example the asszisztens word need spokening one s phoneme | ||||
eltu) ss (ol S | 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 | .group sz | ||||
sz s | sz s | ||||
_ka) sztsze st|sE | _ka) sztsze st|sE | ||||
szemete) szs (ák SZ | szemete) szs (ák SZ | ||||
dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme | 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 | .group t | ||||
t t | t t | ||||
álla) tj (ólét tj | álla) tj (ólét tj | ||||
dolgoza) tj (avít tj | dolgoza) tj (avít tj | ||||
természe) tj (ár tj | természe) tj (ár tj | ||||
terüle) tj (elöl tj | |||||
.group ts | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
_hé) tsz (ob t|s //same as prewious rule | _hé) tsz (ob t|s //same as prewious rule | ||||
gyakorla) ts (oroz t|S | gyakorla) ts (oroz t|S | ||||
támogato) ts (ág tS: | támogato) ts (ág tS: | ||||
já) tsz (hass ts | |||||
.group tt | .group tt | ||||
tt t: | tt t: | ||||
találko) z (t s | találko) z (t s | ||||
eszkö) z (sor z | eszkö) z (sor z | ||||
gő) z (síp z | gő) z (síp z | ||||
matró) z (sapka z | |||||
matró) z (sapk z | |||||
nehé) z (súly z | nehé) z (súly z | ||||
tör) zsz (ászló Z|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. | zsz z|s //general exception. Need difference first z and second sz phoneme. eg: rajzszög, rajzszeg, mézszín words. | ||||
pofo) z (kod s | pofo) z (kod s | ||||
ezkö) z (sáv z | ezkö) z (sáv z | ||||
eszkö) 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 | .group | ||||
$ dolla:R2 | $ dolla:R2 |
ən @-n // char.replacement for 'n | ən @-n // char.replacement for 'n | ||||
ət t // char.replacement for 't | ə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 | jullie $u | ||||
hen $u | |||||
zich $u | |||||
hen h%En | |||||
zich z%Ix | |||||
onszelf Ons'Elf | |||||
// possessives | // possessives | ||||
mijn $u | mijn $u | ||||
hoewel $pause // although | hoewel $pause // although | ||||
of $u $pause // whether | of $u $pause // whether | ||||
omdat $pause // because | omdat $pause // because | ||||
nadat $u $pause // after | |||||
nadat $u2 $pause // after | |||||
nudat $pause // now that | nudat $pause // now that | ||||
sinds $pause // since | sinds $pause // since | ||||
tenzij $pause // unless | tenzij $pause // unless | ||||
mormel $alt | mormel $alt | ||||
mortel $alt | mortel $alt | ||||
morzel $alt | morzel $alt | ||||
navel $alt | |||||
obstakel $alt | obstakel $alt | ||||
parabel $alt | parabel $alt | ||||
partikel $alt | partikel $alt | ||||
ongastvrij OnQAstvr'EI | ongastvrij OnQAstvr'EI | ||||
ongelooflijk $3 | ongelooflijk $3 | ||||
ongemakkelijk $3 | ongemakkelijk $3 | ||||
ongelukkig $3 | |||||
//ongelukkig $3 | |||||
ongerieflijk $3 | ongerieflijk $3 | ||||
ongrondwettig $3 | |||||
//ongrondwettig $3 | |||||
partijvoorzitters $2 | partijvoorzitters $2 | ||||
pistache pist'AS | pistache pist'AS | ||||
proces $2 | proces $2 | ||||
waarschijnlijk $2 | waarschijnlijk $2 | ||||
wanen v#a:n@n | wanen v#a:n@n | ||||
wangen v#AN@n | wangen v#AN@n | ||||
wanluidend $2 | |||||
wanschapen $2 | |||||
wantrouwend $2 | |||||
ziekenhuisbevalling zi:k@nhWysb@vAlIN | ziekenhuisbevalling zi:k@nhWysb@vAlIN | ||||
Justine Zyst'in | Justine Zyst'in | ||||
kennedy kEn@dE | kennedy kEn@dE | ||||
Laurent lo:r'An^ | Laurent lo:r'An^ | ||||
Naomi $2 | |||||
Nys nEIsd'WyzEnt | Nys nEIsd'WyzEnt | ||||
//Trademarks | //Trademarks | ||||
alexandrië $3 | alexandrië $3 | ||||
canada kAna:da: | canada kAna:da: | ||||
Kinshasa kInS'a:sa: | Kinshasa kInS'a:sa: | ||||
Nairobi nAjr'o:bi | |||||
Napel $alt | |||||
Rochefort roS'for | Rochefort roS'for | ||||
Zelzate zelzat@ | Zelzate zelzat@ | ||||
(vond dat de) vOn_tA_t@ | (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 | |||||
// translation rules for Dutch | // translation rules for Dutch | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant | |||||
.L01 g k | .L01 g k | ||||
aire (_ 'E:r@ | aire (_ 'E:r@ | ||||
air (_ 'Er | air (_ 'Er | ||||
@) agne (_ 'An^@ | @) agne (_ 'An^@ | ||||
ale (_ 'a:l@ | |||||
@) ant (_ 'Ant | @) ant (_ 'Ant | ||||
@) ant (e_ 'Ant | @) ant (e_ 'Ant | ||||
@) ant (en_ 'Ant | @) ant (en_ 'Ant | ||||
bs (_N ps | bs (_N ps | ||||
baan ba:n | baan ba:n | ||||
&) baar (_ =ba:r | |||||
&) baar (_S4 =ba:r | |||||
&) bare (_S4 =ba:r@ | |||||
_) bij (C@P3 b'EI | _) bij (C@P3 b'EI | ||||
_) binnen (P6 b'In@n | _) binnen (P6 b'In@n | ||||
_) boven (P5 b'o:v@n | _) boven (P5 b'o:v@n | ||||
.group e | .group e | ||||
e e# // [e:] but change to [@] in unstressed syllables | e e# // [e:] but change to [@] in unstressed syllables | ||||
X) e e: // first syllable in a word | X) e e: // first syllable in a word | ||||
&C) e (_S1qd @ | |||||
e (_ @ | e (_ @ | ||||
e (CK E | e (CK E | ||||
e (x E | e (x E | ||||
eeuw eU | eeuw eU | ||||
eu Y: | 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: | ea (_ 'e:a: | ||||
eau o: //words with French origin | eau o: //words with French origin | ||||
@) ee (_ 'e: | @) ee (_ 'e: | ||||
&) em (_ @m | &) em (_ @m | ||||
&) e (ment @ | &) e (ment @ | ||||
&) e (nissen_ @ | &) 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 | &) ens (_S3q @ns | ||||
ll) en (_S3 @n | ll) en (_S3 @n | ||||
&) end (_ @nd | &) end (_ @nd | ||||
&) ende (_ @nd@ | |||||
&) enden (_ @nd@n | |||||
&) ende (_S1 @ | |||||
&) enden (_S2 @n | |||||
eden e:d@n | eden e:d@n | ||||
&) ent (_$w_alt =@nt | &) ent (_$w_alt =@nt | ||||
@) ent (_ 'Ent | @) ent (_ 'Ent | ||||
@) ent (ste_ 'Ent | @) ent (ste_ 'Ent | ||||
ag) ent 'Ent | ag) ent 'Ent | ||||
@j) es (_ @s | @j) es (_ @s | ||||
@) es (_S2qd 'Es | |||||
@) es (_S2qd 'Es // double the previous vowel | |||||
KAC) es (_S2e @s | |||||
@) essen (_S5qd 'Es@n | @) essen (_S5qd 'Es@n | ||||
@) eres (_S4qd @r'Es | @) eres (_S4qd @r'Es | ||||
@) eressen (_S7sq @r'Es@n | @) eressen (_S7sq @r'Es@n | ||||
.group g | .group g | ||||
g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | ||||
gg Q | gg Q | ||||
s) g x | |||||
_) ge (@P2 Q@ | _) ge (@P2 Q@ | ||||
ge (bied Q@ | ge (bied Q@ | ||||
ie (CtjeX_ 'i | ie (CtjeX_ 'i | ||||
ie (ren_ 'i | ie (ren_ 'i | ||||
ie (rd_ '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 (_ 'EI | ||||
ij (e_ 'EI | ij (e_ 'EI | ||||
@) ij (n_ 'EI | @) ij (n_ 'EI | ||||
n (k$w_alt3 n | n (k$w_alt3 n | ||||
_) na (C@@P2 n'a: | _) 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 (der na: | ||||
_) na (tion na: | |||||
_) nano (@P4 n'a:no: | |||||
_) na (polA n%a: | |||||
napoleon n%a:po:l@jOn | |||||
_) natuur na:t'yr | _) 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 | _) noord (@P5 no:rd | ||||
_) nieuws (@P6 n'iws | _) nieuws (@P6 n'iws | ||||
@@) nis (_S3 nIs | @@) nis (_S3 nIs | ||||
_) on (@P2 %On | _) on (@P2 %On | ||||
oo (X 'o: | oo (X 'o: | ||||
oon 'o:n // in compounds, eg. telefoongesprek | oon 'o:n // in compounds, eg. telefoongesprek | ||||
oo (C_ 'o: | |||||
_) oost (@P4 o:st | _) oost (@P4 o:st | ||||
_) op (@@P2 'Op | _) op (@@P2 'Op | ||||
_) open (@P4 'o:p@n | _) open (@P4 'o:p@n | ||||
_) op (era 'o:p | _) op (era 'o:p | ||||
_) op (tion Op | _) op (tion Op | ||||
@at) or (_ 'o:r | |||||
ou (che_ u | ou (che_ u | ||||
ouch (en_ uS | ouch (en_ uS | ||||
_) over (@P4 ,o:v@r | _) over (@P4 ,o:v@r | ||||
s (s | s (s | ||||
A) s (A z | A) s (A z | ||||
s (b z | s (b z | ||||
s (g z | |||||
s (d z | |||||
sc s | sc s | ||||
sch sx | sch sx | ||||
sch (_ s | sch (_ s | ||||
sj S | sj S | ||||
@@) s (_S1 s | @@) s (_S1 s | ||||
sc (oop sk | |||||
sc (opi sk | |||||
&) sel (_ =s@l | &) sel (_ =s@l | ||||
&) selen (_ =s@l@n | &) selen (_ =s@l@n | ||||
@) si (o S | @) si (o S | ||||
.group v | .group v | ||||
v v | v v | ||||
s) v f | |||||
_) van (@P3 v%An | _) van (@P3 v%An | ||||
_) vanzelf (@P7 vAnz,Elf | _) vanzelf (@P7 vAnz,Elf | ||||
_) wan (@P3 v#'An | _) wan (@P3 v#'An | ||||
_) wan (L01@P3 v#'AN | _) wan (L01@P3 v#'AN | ||||
_) wan (del v#An | _) wan (del v#An | ||||
_) wanhopig v#Anh'o:p@Q | |||||
_) wan (kel v#AN | _) 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 (@P3 v#'EQ | ||||
_) weg (en v#e:Q | _) weg (en v#e:Q | ||||
_) weg (e_ v#e:Q // bewegelijk | _) weg (e_ v#e:Q // bewegelijk | ||||
.group z | .group z | ||||
z z | z z | ||||
z (z | z (z | ||||
s) z | |||||
zele (_S4 ze:l@ // common suffix for cities. | zele (_S4 ze:l@ // common suffix for cities. | ||||
@) zelf (_S4 s'Elf | |||||
_) zoge (@P4 z,og@ | _) zoge (@P4 z,og@ | ||||
_) zuid (@P4 zWyt | _) zuid (@P4 zWyt | ||||
ou (_N 'oU | ou (_N 'oU | ||||
ou (_ ou | ou (_ ou | ||||
o (AAA o | o (AAA o | ||||
@C) o (riii_ 'o | |||||
.group p | .group p |
stĺp stl:p | stĺp stl:p | ||||
plch pl-x | plch pl-x | ||||
čln tSl-n | čln tSl-n | ||||
plť pl-t; | |||||
tĺk tl:k | |||||
vlk vl-k | |||||
// don't soften (d,n,t) before e,i | // don't soften (d,n,t) before e,i | ||||
aktívni $alt | aktívni $alt |
_] vVlV||sadUrVm // வல சதுரம் | _] vVlV||sadUrVm // வல சதுரம் | ||||
_{ id.V||gVn.Vm // இட கணம் | _{ id.V||gVn.Vm // இட கணம் | ||||
_} vVlV||gVn.Vm // வல கணம் | _} vVlV||gVn.Vm // வல கணம் | ||||
< kuRaIvU // குறைவு | |||||
> migUdi // மிகுதி | |||||
_" me:Rgo:l. // மேற்கோள் | _" me:Rgo:l. // மேற்கோள் | ||||
_' ot.RaI||m'e:Rgo:l. // ொற்றை மேற்கோள் | _' ot.RaI||m'e:Rgo:l. // ொற்றை மேற்கோள் | ||||
__ ad.ig||ko:d.U // அடிக் கோடு | __ ad.ig||ko:d.U // அடிக் கோடு | ||||
// abbreviations | // abbreviations | ||||
ரூ ru:ba:j $dot $only | ரூ ru:ba:j $dot $only | ||||
(பி . ஏ) bije: $dot | |||||
(கி . மீ) kilo:mi:t.t.Vr $dot | |||||
// numbers | // numbers | ||||
_0 suz.ijVm // சுழியம் | _0 suz.ijVm // சுழியம் | ||||
_dpt _pul.l.i | _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 | ||||
_#-ம் 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 | // English words | ||||
tamil தமிழ் $text | tamil தமிழ் $text | ||||
பந்தா $alt | பந்தா $alt | ||||
பிரா bra: | பிரா bra: | ||||
ப்ரா $alt | ப்ரா $alt | ||||
(பி . ஏ) bije: | |||||
பலம் $alt | |||||
பலமாக $alt | |||||
பலமா $alt | |||||
// initial த as [d] | // initial த as [d] | ||||
தின $alt | தின $alt | ||||
தில் $alt | தில் $alt | ||||
தன $alt | தன $alt | ||||
தடியா $alt | |||||
தட $alt | |||||
// initial ட | // initial ட | ||||
களிலும் $alt | களிலும் $alt | ||||
கடம் $alt | கடம் $alt | ||||
காட் $alt | காட் $alt | ||||
கிடு $alt | |||||
பைக்கில் baIkkIl | பைக்கில் baIkkIl | ||||
தாங்ஸ் Ta:Nks // thanks | தாங்ஸ் Ta:Nks // thanks | ||||
டிபுடி d.EpjUt.i // deputy | டிபுடி d.EpjUt.i // deputy | ||||
டிபன் t.ifVn | |||||
ஆகா a:Ha: | ஆகா a:Ha: | ||||
ஓகோ o:Ho: | ஓகோ o:Ho: | ||||
கப் kVp | கப் kVp |
language variant | language variant | ||||
name female1 | name female1 | ||||
gender female | |||||
gender female 70 | |||||
pitch 145 200 | |||||
flutter 7 | |||||
pitch 140 200 | |||||
flutter 8 | |||||
roughness 4 | roughness 4 | ||||
formant 0 115 80 150 | formant 0 115 80 150 | ||||
formant 1 120 80 180 | formant 1 120 80 180 | ||||
formant 7 110 70 150 | formant 7 110 70 150 | ||||
formant 8 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 |
gender male 70 | gender male 70 | ||||
pitch 75 109 | pitch 75 109 | ||||
flutter 4 | |||||
flutter 5 | |||||
roughness 4 | roughness 4 | ||||
consonants 80 100 | consonants 80 100 | ||||
formant 7 100 50 100 | formant 7 100 50 100 | ||||
formant 8 100 50 100 | formant 8 100 50 100 | ||||
voicing 155 | voicing 155 | ||||
fast_test 0 45 75 | |||||
name english | name english | ||||
language en-uk 2 | language en-uk 2 | ||||
language en-gb 2 | |||||
language en 2 | language en 2 | ||||
gender male | gender male | ||||
name lancashire | name lancashire | ||||
language en-uk-north | language en-uk-north | ||||
language en-uk 3 | language en-uk 3 | ||||
language en 5 | |||||
gender male | gender male | ||||
phonemes en-n | phonemes en-n |
name english_rp | name english_rp | ||||
language en-uk-rp | language en-uk-rp | ||||
language en-uk 4 | language en-uk 4 | ||||
language en 5 | |||||
gender male | gender male | ||||
phonemes en-rp | phonemes en-rp |
name en-westindies | name en-westindies | ||||
language en-wi | language en-wi | ||||
language en-uk 4 | language en-uk 4 | ||||
language en 10 | |||||
gender male | gender male | ||||
phonemes en-wi | phonemes en-wi |
name english_wmids | name english_wmids | ||||
language en-uk-wmids | language en-uk-wmids | ||||
language en-uk 9 | |||||
language en 9 | |||||
gender male | gender male | ||||
phonemes en-wm | phonemes en-wm |
name spanish-latin-american | name spanish-latin-american | ||||
language es-la | language es-la | ||||
language es-mx 6 | language es-mx 6 | ||||
language es 6 | |||||
gender male | gender male | ||||
phonemes es-la | phonemes es-la |
language fr-be | |||||
name french (Belgium) | name french (Belgium) | ||||
language fr-be | |||||
language fr 8 | |||||
gender male | gender male | ||||
dictrules 2 | dictrules 2 |
name hindi-test | |||||
name hindi | |||||
language hi | language hi | ||||
gender male | gender male | ||||
translator hi | |||||
phonemes hi | |||||
dictionary hi | |||||
dictrules 1 |
name armenian-west | name armenian-west | ||||
language hy-west | language hy-west | ||||
language hy 8 | |||||
gender male | gender male | ||||
// change consonants for West Armenian pronunciation | // change consonants for West Armenian pronunciation |
name en-german-5 | name en-german-5 | ||||
language en | |||||
language en 9 | |||||
gender female | gender female | ||||
pitch 140 220 | pitch 140 220 |
name en-greek | name en-greek | ||||
language en 7 | |||||
language en 9 | |||||
gender male | gender male | ||||
pitch 82 117 | pitch 82 117 |
name en-swedish-f | name en-swedish-f | ||||
language en | |||||
language en 10 | |||||
gender female | gender female | ||||
pitch 140 220 | pitch 140 220 |
name portugal | name portugal | ||||
language pt-pt | language pt-pt | ||||
language pt 6 | |||||
gender male | gender male | ||||
phonemes pt-pt | phonemes pt-pt | ||||
74 phoneme tables | |||||
76 phoneme tables | |||||
new total | new total | ||||
base 107 107 | base 107 107 | ||||
consonants 10 116 | consonants 10 116 | ||||
jbo 2 114 | jbo 2 114 | ||||
nci 3 123 | nci 3 123 | ||||
fi 40 133 | fi 40 133 | ||||
et 47 139 | |||||
fr 59 140 | fr 59 140 | ||||
fr-ca 11 140 | fr-ca 11 140 | ||||
hi 57 148 | hi 57 148 | ||||
ta 22 151 | |||||
ta 23 152 | |||||
kn 17 148 | kn 17 148 | ||||
ml 21 151 | ml 21 151 | ||||
hu 25 122 | hu 25 122 | ||||
cs 7 135 | cs 7 135 | ||||
hr 25 140 | hr 25 140 | ||||
mk 3 141 | mk 3 141 | ||||
sr 14 140 | |||||
sr 14 142 | |||||
ru 49 137 | ru 49 137 | ||||
bg 14 123 | bg 14 123 | ||||
it 19 127 | it 19 127 | ||||
ht 11 140 | ht 11 140 | ||||
az 10 127 | az 10 127 | ||||
ak 8 109 | ak 8 109 | ||||
am 8 123 | |||||
am 14 112 | |||||
wo 18 118 | wo 18 118 | ||||
dv 14 148 | dv 14 148 | ||||
te 16 148 | te 16 148 | ||||
si 24 154 | si 24 154 | ||||
tn 27 119 | tn 27 119 | ||||
mt 32 127 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
[d[] base | [d[] base | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d^] et | |||||
[d] fr | [d] fr | ||||
[d] kn | [d] kn | ||||
[d] hu | [d] hu | ||||
[d;] pl | [d;] pl | ||||
[d] hr | [d] hr | ||||
[d] sq | [d] sq | ||||
[d] mt | |||||
d/d_ [d] base | d/d_ [d] base | ||||
[d[] base | [d[] base | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d^] et | |||||
[d] fr | [d] fr | ||||
[d.] hi | [d.] hi | ||||
[d] kn | [d] kn | ||||
[d;] pl | [d;] pl | ||||
[d] hr | [d] hr | ||||
[d] sq | [d] sq | ||||
[d] mt | |||||
d/d_dnt [d] sr | d/d_dnt [d] sr | ||||
d/dr [*] base | d/dr [*] base | ||||
[d[] base | [d[] base | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d^] et | |||||
[d] fr | [d] fr | ||||
[d.] hi | [d.] hi | ||||
[dh.] hi | [dh.] hi | ||||
[d;] pl | [d;] pl | ||||
[d] hr | [d] hr | ||||
[d] sq | [d] sq | ||||
[d] mt | |||||
d/tap [*;] ro | d/tap [*;] ro | ||||
d/tap1 [*] base | d/tap1 [*] base | ||||
d/tap2 [t#] en | d/tap2 [t#] en | ||||
[dz] consonants | [dz] consonants | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d] fr | [d] fr | ||||
[z] fr | [z] fr | ||||
[dh] hi | [dh] hi | ||||
[d] hr | [d] hr | ||||
[d] sr | [d] sr | ||||
[d] sq | [d] sq | ||||
[d] mt | |||||
d/xd3 [dh] hi | d/xd3 [dh] hi | ||||
d/xd_pzd [d;] pl | |||||
d/xd_pzd [d^] et | |||||
[d;] pl | |||||
d/xdr [d] fr | d/xdr [d] fr | ||||
[d.] hi | [d.] hi | ||||
[dh.] hi | [dh.] hi | ||||
g/xgr [g] fr | g/xgr [g] fr | ||||
h/h_ [h] base | h/h_ [h] base | ||||
[h] fi | [h] fi | ||||
[h] et | |||||
[<h>] la | [<h>] la | ||||
[h] mt | |||||
h/h@ [h] base | h/h@ [h] base | ||||
[h] fi | [h] fi | ||||
[h] sr | |||||
[h] et | |||||
[h#] sr | |||||
[<h>] la | [<h>] la | ||||
[h] mt | |||||
h/ha [h] base | h/ha [h] base | ||||
[h] fi | [h] fi | ||||
[h] et | |||||
[<h>] la | [<h>] la | ||||
[h] mt | |||||
h/he [h] base | h/he [h] base | ||||
[h] fi | [h] fi | ||||
[h] et | |||||
[<h>] la | [<h>] la | ||||
[h] mt | |||||
h/hi [h] base | h/hi [h] base | ||||
[h] fi | [h] fi | ||||
[h] et | |||||
[<h>] la | [<h>] la | ||||
[h] mt | |||||
h/ho [h] base | h/ho [h] base | ||||
[<h>] la | [<h>] la | ||||
h/hu [h] base | h/hu [h] base | ||||
[<h>] la | [<h>] la | ||||
h/hu_fi [h] fi | h/hu_fi [h] fi | ||||
[h] et | |||||
[h] mt | |||||
j2/_j2 [;] base | j2/_j2 [;] base | ||||
j2/j2@ [;] base | j2/j2@ [;] base | ||||
j2/j2a [;] base | j2/j2a [;] base | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [l#] base | |||||
[”¦] base | |||||
l/l@ [h1ô] base | |||||
[l#] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [l#] base | |||||
[”¦] base | |||||
l/la [h1ô] base | |||||
[l#] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[K] tn | [K] tn | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [l#] base | |||||
[”¦] base | |||||
l/le [h1ô] base | |||||
[l#] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [l#] base | |||||
[”¦] base | |||||
l/li [h1ô] base | |||||
[l#] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[l] zh | [l] zh | ||||
ll/_ll [L] bg | ll/_ll [L] bg | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [l#] base | |||||
[”¦] base | |||||
l/lo [h1ô] base | |||||
[l#] base | |||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[K] tn | [K] tn | ||||
l^/l_rfx [l.] base | l^/l_rfx [l.] base | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [l#] base | |||||
[”¦] base | |||||
l/lu [h1ô] base | |||||
[l#] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[r-] tn | [r-] tn | ||||
r3/r_ [r/] base | r3/r_ [r/] base | ||||
[r/] af | [r/] af | ||||
[r] et | |||||
[r/] tn | [r/] tn | ||||
r3/r#_ [r#] is | r3/r#_ [r#] is | ||||
r3/r_n [r/] base | r3/r_n [r/] base | ||||
[r] et | |||||
r3/r_ru [R4] ru | r3/r_ru [R4] ru | ||||
r3/r_ru2 [R4] ru | r3/r_ru2 [R4] ru | ||||
r3/r_trill [R2] base | r3/r_trill [R2] base | ||||
[r] af | [r] af | ||||
[r] tn | [r] tn | ||||
r3/r_trill_short [R2] fi | r3/r_trill_short [R2] fi | ||||
[R2] et | |||||
r3/r_trill.wav [R2] base | r3/r_trill.wav [R2] base | ||||
[R2] fi | [R2] fi | ||||
[R2] et | |||||
[R2] lv | [R2] lv | ||||
[R] pl | [R] pl | ||||
[r*] sr | [r*] sr | ||||
r3/rx [*] base | r3/rx [*] base | ||||
[r/] base | [r/] base | ||||
[r/] af | [r/] af | ||||
[r] et | |||||
[r/] fr | [r/] fr | ||||
[R] fr-ca | [R] fr-ca | ||||
[x] pt-pt | [x] pt-pt | ||||
ufric/ch [C] base | ufric/ch [C] base | ||||
[J^] base | [J^] base | ||||
ufric/ch_ [C] base | ufric/ch_ [C] base | ||||
ufric/ch_sr [h] sr | |||||
[x] sr | |||||
ufric/ch_sr [h#] sr | |||||
[x#] sr | |||||
ufric/f [f] base | ufric/f [f] base | ||||
[pF] de | [pF] de | ||||
[f] fr | [f] fr | ||||
[S;] zh | [S;] zh | ||||
ufric/sh_rfx [s.] base | ufric/sh_rfx [s.] base | ||||
[s.] zh | [s.] zh | ||||
ufric/s_pal [s^] et | |||||
ufric/s_pzd [s;] base | ufric/s_pzd [s;] base | ||||
[z;] base | [z;] base | ||||
[s;] ro | [s;] ro | ||||
ufric/x_hr [x] base | ufric/x_hr [x] base | ||||
[x] hr | [x] hr | ||||
[x] ru | [x] ru | ||||
ufric/x_sr [h] sr | |||||
[x] sr | |||||
ufric/x_sr [h#] sr | |||||
[x#] sr | |||||
ufric/xx [X] base | ufric/xx [X] base | ||||
[Q"] base | [Q"] base | ||||
ustop/c [c] base | ustop/c [c] base | ||||
[kh] zh | [kh] zh | ||||
[kh] tn | [kh] tn | ||||
ustop/k_asp2 [k#] ka | ustop/k_asp2 [k#] ka | ||||
ustop/k_ejc [k`] am | |||||
ustop/ki [k] base | ustop/ki [k] base | ||||
[k] base2 | [k] base2 | ||||
[c] af | [c] af | ||||
[k] et | |||||
[k] fr | [k] fr | ||||
[k] lv | [k] lv | ||||
[k^] mk | [k^] mk | ||||
ustop/kl [k] base | ustop/kl [k] base | ||||
[kh] consonants | [kh] consonants | ||||
[k] base2 | [k] base2 | ||||
[k] et | |||||
[k] fr | [k] fr | ||||
[k] lv | [k] lv | ||||
[k] el | [k] el | ||||
[kh] tn | [kh] tn | ||||
ustop/kr [k] base | ustop/kr [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] et | |||||
[k] el | [k] el | ||||
[k] zhy | [k] zhy | ||||
ustop/k_unasp [k] base | ustop/k_unasp [k] base | ||||
[k-] consonants | [k-] consonants | ||||
[k] base2 | [k] base2 | ||||
[k] et | |||||
[k] lv | [k] lv | ||||
[k] el | [k] el | ||||
[k] zhy | [k] zhy | ||||
[p] zh | [p] zh | ||||
[p] sq | [p] sq | ||||
[p] da | [p] da | ||||
[p`] am | |||||
ustop/p_unasp_ [p-] consonants | ustop/p_unasp_ [p-] consonants | ||||
[p] base2 | [p] base2 | ||||
[p] fr | [p] fr | ||||
[t] lv | [t] lv | ||||
[t] sk | [t] sk | ||||
[th] zh | [th] zh | ||||
[t`] am | |||||
ustop/t_dnt [t] base | ustop/t_dnt [t] base | ||||
[t[] base | [t[] base | ||||
[t] base2 | [t] base2 | ||||
[t] en-us | [t] en-us | ||||
[t] et | |||||
[dh] hi | [dh] hi | ||||
[th] hi | [th] hi | ||||
[t] hu | [t] hu | ||||
ustop/t_dnt2 [t] base2 | ustop/t_dnt2 [t] base2 | ||||
[d] kn | [d] kn | ||||
ustop/t_hi [t[] base | ustop/t_hi [t[] base | ||||
[t] et | |||||
[t`] am | |||||
ustop/t_pzd [c] base | ustop/t_pzd [c] base | ||||
[t^] et | |||||
[t;] pl | [t;] pl | ||||
ustop/tr [t] base | ustop/tr [t] base | ||||
[t] en-us | [t] en-us | ||||
ustop/tsh_pzd [tS;] zh | ustop/tsh_pzd [tS;] zh | ||||
ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
ustop/tsh_sr [tS] sr | ustop/tsh_sr [tS] sr | ||||
ustop/tsh_unasp [tS`] am | |||||
ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
[Jh] hi | [Jh] hi | ||||
[tS;] ru | [tS;] ru | ||||
vdiph2/i@_2 [i@] en-wm | vdiph2/i@_2 [i@] en-wm | ||||
vdiph2/ie [i@] en-wi | vdiph2/ie [i@] en-wi | ||||
[ie] fi | [ie] fi | ||||
[ie] mt | |||||
vdiph2/ie_2 [ie] lv | vdiph2/ie_2 [ie] lv | ||||
vdiph2/ii@ [i@] en | vdiph2/ii@ [i@] en | ||||
[i@3] en | [i@3] en | ||||
[iu] zhy | [iu] zhy | ||||
vdiph2/iu_2 [iu] fi | vdiph2/iu_2 [iu] fi | ||||
[iu] lv | [iu] lv | ||||
[iu] mt | |||||
vdiph2/iu_3 [iu] af | vdiph2/iu_3 [iu] af | ||||
vdiph2/iu_4 [Iu] cy | vdiph2/iu_4 [Iu] cy | ||||
[Yu] cy | [Yu] cy | ||||
vdiph2/iy [iy] fi | vdiph2/iy [iy] fi | ||||
[iy] mt | |||||
vdiph2/o@ [o@] af | vdiph2/o@ [o@] af | ||||
[u@] zh | [u@] zh | ||||
vdiph2/oa [Oa] ro | vdiph2/oa [Oa] ro | ||||
vdiph2/u#@ [U@] en-sc | vdiph2/u#@ [U@] en-sc | ||||
vdiph2/uaa [uo] lv | vdiph2/uaa [uo] lv | ||||
vdiph2/uo [uo] fi | vdiph2/uo [uo] fi | ||||
[uo] mt | |||||
vdiph2/uu@ [U@] en | vdiph2/uu@ [U@] en | ||||
[U@] en-n | [U@] en-n | ||||
[U@] en-wm | [U@] en-wm | ||||
[yu] zh | [yu] zh | ||||
vdiph2/y-y# [yY] fi | vdiph2/y-y# [yY] fi | ||||
[y@] vi | [y@] vi | ||||
[yY] mt | |||||
vdiph/8u [oU] en-us | vdiph/8u [oU] en-us | ||||
[8u] et | |||||
[ou] zh | [ou] zh | ||||
vdiph/aae [aI] en-us | vdiph/aae [aI] en-us | ||||
vdiph/aai [ai] lv | vdiph/aai [ai] lv | ||||
vdiph/aai_2 [AI] af | vdiph/aai_2 [AI] af | ||||
[AY] cy | [AY] cy | ||||
vdiph/aai_3 [ai] fi | vdiph/aai_3 [ai] fi | ||||
[ai] mt | |||||
vdiph/aau [au] fi | vdiph/aau [au] fi | ||||
[au] lv | [au] lv | ||||
[aU] is | [aU] is | ||||
[aU:] is | [aU:] is | ||||
[au] mt | |||||
vdiph/aau_2 [aU] en-wi | vdiph/aau_2 [aU] en-wi | ||||
[VU] nl | [VU] nl | ||||
[aU] la | [aU] la | ||||
[ei] fi | [ei] fi | ||||
[ei] lv | [ei] lv | ||||
[eI] id | [eI] id | ||||
[ei] mt | |||||
vdiph/eei_3 [eI] sk | vdiph/eei_3 [eI] sk | ||||
[eI] ku | [eI] ku | ||||
vdiph/eeu [EU] pt | vdiph/eeu [EU] pt | ||||
[aU] en-wm | [aU] en-wm | ||||
[eU] ku | [eU] ku | ||||
vdiph/eey [ey] fi | vdiph/eey [ey] fi | ||||
[ey] mt | |||||
vdiph/ei [eI] base2 | vdiph/ei [eI] base2 | ||||
[e:] nl | [e:] nl | ||||
[eI] la | [eI] la | ||||
[eU] vi | [eU] vi | ||||
[eU] ne | [eU] ne | ||||
vdiph/eu_2 [eu] fi | vdiph/eu_2 [eu] fi | ||||
vdiph/@i [@I] vi | |||||
[eu] mt | |||||
vdiph/@i [Yi] et | |||||
[@I] vi | |||||
[@:I] vi | [@:I] vi | ||||
vdiph/&i [&i] fi | vdiph/&i [&i] fi | ||||
[&i] et | |||||
[aI] hi | [aI] hi | ||||
[i] mt | |||||
vdiph/@i_2 [eI] af | vdiph/@i_2 [eI] af | ||||
[@I] cy | [@I] cy | ||||
[@Y] cy | [@Y] cy | ||||
[oi] lv | [oi] lv | ||||
[OI] no | [OI] no | ||||
[oi] zhy | [oi] zhy | ||||
[oi] mt | |||||
vdiph/ooi_2 [OI] af | vdiph/ooi_2 [OI] af | ||||
[oI] eo | [oI] eo | ||||
vdiph/ooi_3 [OI] en-rp | vdiph/ooi_3 [OI] en-rp | ||||
vdiph/ou [ou] fi | vdiph/ou [ou] fi | ||||
[ou] zhy | [ou] zhy | ||||
[oU] ne | [oU] ne | ||||
[ou] mt | |||||
vdiph/ou_2 [oU] sk | vdiph/ou_2 [oU] sk | ||||
[oU] ro | [oU] ro | ||||
vdiph/ou_3 [oU] is | vdiph/ou_3 [oU] is | ||||
vdiph/ui_3 [uI] cy | vdiph/ui_3 [uI] cy | ||||
[uY] cy | [uY] cy | ||||
vdiph/ui_4 [ui] fi | vdiph/ui_4 [ui] fi | ||||
[ui] mt | |||||
vdiph/Vi [VI] ne | vdiph/Vi [VI] ne | ||||
vdiph/Vu [@U] af | vdiph/Vu [@U] af | ||||
[VU] ne | [VU] ne | ||||
vdiph/&y [&y] fi | vdiph/&y [&y] fi | ||||
[Wy] nl | [Wy] nl | ||||
vdiph/yi [yi] fi | vdiph/yi [yi] fi | ||||
[yi] et | |||||
[yI] grc | [yI] grc | ||||
[u-I] no | [u-I] no | ||||
[yi] zh | [yi] zh | ||||
[yi] mt | |||||
vdiph/y#i [Yi] fi | vdiph/y#i [Yi] fi | ||||
[Yi] mt | |||||
vdiph/y#i_2 [Yy] is | vdiph/y#i_2 [Yy] is | ||||
[Yy:] is | [Yy:] is | ||||
vdiph/y#y [Yy] fi | vdiph/y#y [Yy] fi | ||||
[Yy] mt | |||||
vdiph/y#y_2 [Yy] af | vdiph/y#y_2 [Yy] af | ||||
[eoi] zhy | [eoi] zhy | ||||
vdiph/y#y_3 [Y:] nl | vdiph/y#y_3 [Y:] nl | ||||
voc/Q_ulv [Q"] base | voc/Q_ulv [Q"] base | ||||
voc/v [v] base | voc/v [v] base | ||||
[v] fi | [v] fi | ||||
[v] et | |||||
[v] fr | [v] fr | ||||
[v;] ro | [v;] ro | ||||
[v] mt | |||||
voc/v_ [B] base | voc/v_ [B] base | ||||
[v] base | [v] base | ||||
[v] fi | [v] fi | ||||
[v] et | |||||
[v] fr | [v] fr | ||||
[v#] es | [v#] es | ||||
[v;] ro | [v;] ro | ||||
[v] mt | |||||
voc/v# [v#] base | voc/v# [v#] base | ||||
voc/v#_ [v#] base | voc/v#_ [v#] base | ||||
voc/v2 [v#] es | voc/v2 [v#] es | ||||
[r*] hr | [r*] hr | ||||
vowel/& [a] en-rp | vowel/& [a] en-rp | ||||
[&] fi | [&] fi | ||||
[&] et | |||||
[&:] et | |||||
[&:] hi | [&:] hi | ||||
[&] lv | [&] lv | ||||
[&:] lv | [&:] lv | ||||
[W2] fr | [W2] fr | ||||
vowel/8 [o-] zh | vowel/8 [o-] zh | ||||
vowel/8_2 [U] en-us | vowel/8_2 [U] en-us | ||||
[8] et | |||||
[8] sv | [8] sv | ||||
vowel/8_3 [eo] zhy | vowel/8_3 [eo] zhy | ||||
vowel/8_5 [8] ku | vowel/8_5 [8] ku | ||||
vowel/8_6 [V] sq | vowel/8_6 [V] sq | ||||
vowel/8_7 [@] lv | |||||
vowel/8_7 [8:] et | |||||
[@] lv | |||||
vowel/a [a] base | vowel/a [a] base | ||||
[a] en | [a] en | ||||
[aa] en | [aa] en | ||||
[a] zh | [a] zh | ||||
[a] id | [a] id | ||||
[a] sl | [a] sl | ||||
[a] am | |||||
vowel/a# [a] base2 | vowel/a# [a] base2 | ||||
[a/] base2 | [a/] base2 | ||||
[a#] en-sc | [a#] en-sc | ||||
[a] tn | [a] tn | ||||
vowel/a_6 [a] ca | vowel/a_6 [a] ca | ||||
[a:] vi | [a:] vi | ||||
[a] am | |||||
[a:] wo | [a:] wo | ||||
vowel/a_7 [a] en | vowel/a_7 [a] en | ||||
[a] fr | [a] fr | ||||
[a] sk | |||||
[a] ht | [a] ht | ||||
vowel/aa [A] fr-ca | |||||
vowel/aa [a:] et | |||||
[A] fr-ca | |||||
[A] no | [A] no | ||||
[A:] no | [A:] no | ||||
[aa] zhy | [aa] zhy | ||||
[A:] de | [A:] de | ||||
vowel/aa_8 [0] en-us | vowel/aa_8 [0] en-us | ||||
[A:] en-us | [A:] en-us | ||||
[A] et | |||||
[A1] et | |||||
[A] nl | [A] nl | ||||
[a:] is | [a:] is | ||||
vowel/aa_9 [a] fi | vowel/aa_9 [a] fi | ||||
[a] et | |||||
[a:] hi | [a:] hi | ||||
[a] ne | [a] ne | ||||
[a] pa | [a] pa | ||||
[a] ak | [a] ak | ||||
[a] mt | |||||
vowel/@_bck [@] hi | vowel/@_bck [@] hi | ||||
[@] bg | [@] bg | ||||
[@] zh | [@] zh | ||||
vowel/e_5 [i] en-sc | vowel/e_5 [i] en-sc | ||||
vowel/e_6 [e] ht | vowel/e_6 [e] ht | ||||
[e] ak | [e] ak | ||||
vowel/e_7 [e] et | |||||
[e:] et | |||||
vowel/e_8 [E:] de | vowel/e_8 [E:] de | ||||
[e] fr | [e] fr | ||||
vowel/ee [E] en-n | vowel/ee [E] en-n | ||||
[E] pa | [E] pa | ||||
vowel/ee#_2 [E-] sv | vowel/ee#_2 [E-] sv | ||||
[E#] sq | [E#] sq | ||||
[@] am | |||||
[e] tn | [e] tn | ||||
vowel/ee_3 [&] af | vowel/ee_3 [&] af | ||||
[&:] af | [&:] af | ||||
[E] pt | [E] pt | ||||
[E] vi | [E] vi | ||||
vowel/ee_4 [E] sq | |||||
vowel/ee_4 [E] et | |||||
[E1] et | |||||
[E] sq | |||||
vowel/ee_5 [E] en | vowel/ee_5 [E] en | ||||
[E] ak | [E] ak | ||||
[E] wo | [E] wo | ||||
[e] am | [e] am | ||||
[e] te | [e] te | ||||
[e:] si | [e:] si | ||||
[e] mt | |||||
vowel/@_fnt [@] en-wi | vowel/@_fnt [@] en-wi | ||||
[@2] en-wi | [@2] en-wi | ||||
[@2] hr | [@2] hr | ||||
[i] prs | [i] prs | ||||
[i] nso | [i] nso | ||||
[i] ak | [i] ak | ||||
[i] am | |||||
[i:] wo | [i:] wo | ||||
[i:] dv | [i:] dv | ||||
[i:] te | [i:] te | ||||
vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
vowel/i_2 [i2] de | vowel/i_2 [i2] de | ||||
[i:] de | [i:] de | ||||
[i] et | |||||
[i] nl | [i] nl | ||||
[i:] la | [i:] la | ||||
[i:] sv | [i:] sv | ||||
vowel/i#_2 [y] am | vowel/i#_2 [y] am | ||||
vowel/i_3 [i] af | vowel/i_3 [i] af | ||||
[I] et | |||||
[I1] et | |||||
[i:] sk | [i:] sk | ||||
vowel/i_4 [i] fi | vowel/i_4 [i] fi | ||||
[i] hu | [i] hu | ||||
[i:] is | [i:] is | ||||
[i] vi | [i] vi | ||||
[i] da | [i] da | ||||
[i] mt | |||||
vowel/i_5 [i:] en-sc | vowel/i_5 [i:] en-sc | ||||
vowel/i#_5 [y] pt-pt | vowel/i#_5 [y] pt-pt | ||||
[i/] pt-pt | [i/] pt-pt | ||||
[i] tr | [i] tr | ||||
[i] ku | [i] ku | ||||
[i] id | [i] id | ||||
[i] am | |||||
[i] dv | [i] dv | ||||
[i] te | [i] te | ||||
[i] si | [i] si | ||||
vowel/i#_6 [i.] zh | vowel/i#_6 [i.] zh | ||||
vowel/i_7 [i] pl | |||||
vowel/i_7 [i:] et | |||||
[i] pl | |||||
[i] sq | [i] sq | ||||
vowel/i#_7 [i[] zh | vowel/i#_7 [i[] zh | ||||
vowel/i_8 [i] fr | vowel/i_8 [i] fr | ||||
[i] sq | [i] sq | ||||
vowel/ii_2 [I] en | vowel/ii_2 [I] en | ||||
[i] zh | [i] zh | ||||
[I] mt | |||||
vowel/ii#_2 [y] pl | vowel/ii#_2 [y] pl | ||||
vowel/ii_3 [I] cy | vowel/ii_3 [I] cy | ||||
[I] fi | [I] fi | ||||
vowel/ii_4 [I2] en | vowel/ii_4 [I2] en | ||||
[I] en-us | [I] en-us | ||||
[I2] tn | [I2] tn | ||||
vowel/ii_5 [i] ta | |||||
vowel/ii_5 [i1] et | |||||
[i] ta | |||||
[i] bg | [i] bg | ||||
[I] la | [I] la | ||||
[i] zh | [i] zh | ||||
[@/] ne | [@/] ne | ||||
[@] pa | [@] pa | ||||
[V] pa | [V] pa | ||||
[@] am | |||||
[@] si | [@] si | ||||
vowel/@_low2 [@/] en-us | vowel/@_low2 [@/] en-us | ||||
[@2] en-us | [@2] en-us | ||||
[oU] en-wi | [oU] en-wi | ||||
[o:] de | [o:] de | ||||
[o] eo | [o] eo | ||||
[o:] et | |||||
[o] fr | [o] fr | ||||
[o] hi | [o] hi | ||||
[o] ta | [o] ta | ||||
vowel/oe_2 [W] no | vowel/oe_2 [W] no | ||||
vowel/oe_4 [W] sv | vowel/oe_4 [W] sv | ||||
vowel/o_mid [U@] en-rp | vowel/o_mid [U@] en-rp | ||||
[O] et | |||||
[o] et | |||||
[O1] et | |||||
[O] fr | [O] fr | ||||
[o] hu | [o] hu | ||||
[o] bg | [o] bg | ||||
[o] si | [o] si | ||||
[o:] si | [o:] si | ||||
[O] tn | [O] tn | ||||
[o] mt | |||||
vowel/oo_2 [0] en-sc | vowel/oo_2 [0] en-sc | ||||
[O] cy | [O] cy | ||||
[o] cs | [o] cs | ||||
[u] am | [u] am | ||||
[u] wo | [u] wo | ||||
vowel/u#_2 [u-] sv | vowel/u#_2 [u-] sv | ||||
vowel/u_3 [u] et | |||||
[u:] et | |||||
vowel/u#_3 [U] ta | vowel/u#_3 [U] ta | ||||
[U:] ta | [U:] ta | ||||
vowel/u#_4 [U] en-sc | vowel/u#_4 [U] en-sc | ||||
[u:] en-sc | [u:] en-sc | ||||
[y] ml | [y] ml | ||||
vowel/u_5 [u] sw | |||||
vowel/u_5 [U] et | |||||
[U1] et | |||||
[u] sw | |||||
[u] nso | [u] nso | ||||
[u] az | [u] az | ||||
[u] tn | [u] tn | ||||
[u#] rw | [u#] rw | ||||
[u] ne | [u] ne | ||||
[u] pa | [u] pa | ||||
[u] mt | |||||
vowel/u_bck2 [u] fr | vowel/u_bck2 [u] fr | ||||
[u:] fr | [u:] fr | ||||
[u:] la | [u:] la | ||||
[y] zh | [y] zh | ||||
vowel/uu_4 [U] fi | vowel/uu_4 [U] fi | ||||
[U] sv | [U] sv | ||||
[U] mt | |||||
vowel/uu_bck [U] en-wi | vowel/uu_bck [U] en-wi | ||||
[U] fr-ca | [U] fr-ca | ||||
[U] hi | [U] hi | ||||
vowel/y [y] base2 | vowel/y [y] base2 | ||||
[y:] de | [y:] de | ||||
[y] fi | [y] fi | ||||
[y] et | |||||
[y:] et | |||||
[y] fr | [y] fr | ||||
[y:] hu | [y:] hu | ||||
[y] nl | [y] nl | ||||
[y] sq | [y] sq | ||||
[y] da | [y] da | ||||
[y] az | [y] az | ||||
[y] mt | |||||
vowel/y# [Y] base2 | vowel/y# [Y] base2 | ||||
[3:] en-wm | [3:] en-wm | ||||
[Y:] de | [Y:] de | ||||
[Y] fi | [Y] fi | ||||
[Y] et | |||||
[Y:] et | |||||
[Y] fr | [Y] fr | ||||
[Y:] hu | [Y:] hu | ||||
[8] nl | [8] nl | ||||
[Y] ro | [Y] ro | ||||
[oe] zhy | [oe] zhy | ||||
[W] tr | [W] tr | ||||
[Y] mt | |||||
vowel/y## [y] is | vowel/y## [y] is | ||||
vowel/y_2 [y:] la | vowel/y_2 [y:] la | ||||
[y] zh | [y] zh | ||||
[d[] base | [d[] base | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d] fr | [d] fr | ||||
[d.] hi | [d.] hi | ||||
[d] kn | [d] kn | ||||
[d] hr | [d] hr | ||||
[d] is | [d] is | ||||
[d] sq | [d] sq | ||||
[d] mt | |||||
x/d_dnt [d[] base | x/d_dnt [d[] base | ||||
[d] base2 | [d] base2 | ||||
[d] fi | [d] fi | ||||
[d] et | |||||
[d] kn | [d] kn | ||||
[d] hu | [d] hu | ||||
[d] pl | [d] pl | ||||
x/d_pzd [d;] pl | |||||
[d] mt | |||||
x/d_pzd [d^] et | |||||
[d;] pl | |||||
x/dzh [J] base | x/dzh [J] base | ||||
[dZ] base | [dZ] base | ||||
x/dzh_ [dZ] base | x/dzh_ [dZ] base |
voicingswitch d | voicingswitch d | ||||
lengthmod 2 | 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 | ||||
ENDIF | ENDIF | ||||
// This is for letter "h" at the beginning of a word | // 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 | vls vel frc | ||||
lengthmod 3 | lengthmod 3 | ||||
IF nextPh(#i) OR nextPh(#e) THEN | IF nextPh(#i) OR nextPh(#e) THEN | ||||
// This is for letter "h" not at the beginning of word | // 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 | vls vel frc | ||||
lengthmod 3 | lengthmod 3 | ||||
IF nextPh(#@) THEN | IF nextPh(#@) THEN |
FMT(vowel/e_mid) | FMT(vowel/e_mid) | ||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 120 | length 120 | ||||
IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN | |||||
FMT(vowel/a_7) | |||||
ENDIF | |||||
FMT(vowel/a) | FMT(vowel/a) | ||||
endphoneme | endphoneme | ||||
phoneme V# // omit if the next phoneme is a vowel | phoneme V# // omit if the next phoneme is a vowel | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 130 | length 130 | ||||
IF nextPhW(isVowel) THEN | |||||
IF nextPhW(isVowel) OR nextPhW(#) THEN | |||||
ChangePhoneme(NULL) | ChangePhoneme(NULL) | ||||
ENDIF | ENDIF | ||||
ChangePhoneme(V) | ChangePhoneme(V) | ||||
endphoneme | endphoneme | ||||
phoneme a: | phoneme a: | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 300 | length 300 | ||||
length 50 | length 50 | ||||
endphoneme | endphoneme | ||||
phoneme # // a NULL phoneme for 'virama' | |||||
virtual | |||||
ChangePhoneme(NULL) | |||||
endphoneme | |||||
phoneme q | phoneme q | ||||
vls uvl stop | vls uvl stop | ||||
lengthmod 2 | 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 | Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | ||||
IF nextPh(isPause2) THEN | IF nextPh(isPause2) THEN | ||||
phonemetable fi base | phonemetable fi base | ||||
include ph_finnish | include ph_finnish | ||||
phonemetable et base | |||||
include ph_estonian | |||||
phonemetable fr base | phonemetable fr base | ||||
include ph_french | include ph_french | ||||
phonemetable ak base | phonemetable ak base | ||||
include ph_akan | include ph_akan | ||||
phonemetable am base2 | |||||
phonemetable am base | |||||
include ph_amhari | include ph_amhari | ||||
phonemetable wo base | phonemetable wo base | ||||
phonemetable tn base | phonemetable tn base | ||||
include ph_setswana | include ph_setswana | ||||
phonemetable mt base | |||||
include ph_maltese |
[Setup] | [Setup] | ||||
AppName=eSpeak | 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). | AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | ||||
WindowVisible=yes | WindowVisible=yes | ||||
$1d: Result := 'sv'; | $1d: Result := 'sv'; | ||||
$1f: Result := 'tr'; | $1f: Result := 'tr'; | ||||
$21: Result := 'id'; | $21: Result := 'id'; | ||||
$25: Result := 'et'; | |||||
$26: Result := 'lv'; | $26: Result := 'lv'; | ||||
$2a: Result := 'vi'; | $2a: Result := 'vi'; | ||||
$2b: Result := 'hy'; | $2b: Result := 'hy'; | ||||
$2f: Result := 'mk'; | $2f: Result := 'mk'; | ||||
$36: Result := 'af'; | $36: Result := 'af'; | ||||
$39: Result := 'hi'; | $39: Result := 'hi'; | ||||
//$3a: Result := 'mt'; | |||||
$41: Result := 'sw'; | $41: Result := 'sw'; | ||||
$49: Result := 'ta'; | $49: Result := 'ta'; | ||||
$4b: Result := 'kn'; | $4b: Result := 'kn'; | ||||
'mk': value := $42f; | 'mk': value := $42f; | ||||
'ml': value := $44c; | 'ml': value := $44c; | ||||
'mn': value := $450; | 'mn': value := $450; | ||||
'mt': value := $43a; | |||||
'ne': value := $461; | 'ne': value := $461; | ||||
'nl': value := $413; | 'nl': value := $413; | ||||
'no': value := $414; | 'no': value := $414; | ||||
'ro': value := $418; | 'ro': value := $418; | ||||
'ru': value := $419; | 'ru': value := $419; | ||||
'rw': value := $487; | 'rw': value := $487; | ||||
'si': value := $45b; | |||||
'sk': value := $41b; | 'sk': value := $41b; | ||||
'sq': value := $41c; | 'sq': value := $41c; | ||||
'sr': value := $81a; | 'sr': value := $81a; |
[Setup] | [Setup] | ||||
AppName=eSpeakEdit | AppName=eSpeakEdit | ||||
AppVerName=eSpeakEdit version 1.45.01 | |||||
AppVerName=eSpeakEdit version 1.45.05 | |||||
DefaultDirName={pf}\eSpeak | DefaultDirName={pf}\eSpeak | ||||
DefaultGroupName=eSpeak | DefaultGroupName=eSpeak | ||||
OutputBaseFilename=setup_espeakedit | OutputBaseFilename=setup_espeakedit |
MKDIR = mkdir -p | MKDIR = mkdir -p | ||||
AUDIO = portaudio | AUDIO = portaudio | ||||
#AUDIO = portaudio0 | |||||
#AUDIO = portaudio2 | |||||
#AUDIO = pulseaudio | #AUDIO = pulseaudio | ||||
#AUDIO = sada | #AUDIO = sada | ||||
LIB_AUDIO=-lportaudio | LIB_AUDIO=-lportaudio | ||||
USE_AUDIO=-DUSE_PORTAUDIO | USE_AUDIO=-DUSE_PORTAUDIO | ||||
else | 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) | ifeq ($(AUDIO),sada) | ||||
WAVE=wave_sada.cpp | WAVE=wave_sada.cpp | ||||
USE_AUDIO=-DUSE_SADA | USE_AUDIO=-DUSE_SADA | ||||
endif | endif | ||||
endif | endif | ||||
endif | endif | ||||
endif | |||||
endif | |||||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | ||||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ |
{"glstop", tTRANSITION, 8}, | {"glstop", tTRANSITION, 8}, | ||||
{"lenadd", tTRANSITION, 9}, | {"lenadd", tTRANSITION, 9}, | ||||
{"f4", tTRANSITION, 10}, | {"f4", tTRANSITION, 10}, | ||||
{"paus", tTRANSITION, 11}, | |||||
{"gpaus", tTRANSITION, 11}, | |||||
{"colr=", tTRANSITION, 12}, | {"colr=", tTRANSITION, 12}, | ||||
{"amp=", tTRANSITION, 13}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) | {"amp=", tTRANSITION, 13}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) | ||||
*/ | */ | ||||
int ix; | int ix; | ||||
int len; | |||||
int max_len; | |||||
unsigned int len; | |||||
unsigned int max_len; | |||||
int phon_out_ix=0; | int phon_out_ix=0; | ||||
int stress; | int stress; | ||||
unsigned int c; | unsigned int c; | ||||
const char *word_end; | const char *word_end; | ||||
const char *word1; | const char *word1; | ||||
int wflags = 0; | int wflags = 0; | ||||
int wflags2; | |||||
// int wflags2; | |||||
char word_buf[N_WORD_BYTES+1]; | char word_buf[N_WORD_BYTES+1]; | ||||
if(wtab != NULL) | if(wtab != NULL) | ||||
if(end_type & SUFX_E) | 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')) | if(tr->translator_name == L('e','n')) | ||||
{ | { | ||||
// add 'e' to end of stem | // add 'e' to end of stem |
static int start_mbrola(const char *voice_path) | static int start_mbrola(const char *voice_path) | ||||
{ | { | ||||
int error, p_stdin[2], p_stdout[2], p_stderr[2]; | int error, p_stdin[2], p_stdout[2], p_stderr[2]; | ||||
ssize_t written; | |||||
char charbuf[20]; | char charbuf[20]; | ||||
if (mbr_state != MBR_INACTIVE) { | if (mbr_state != MBR_INACTIVE) { | ||||
dup2(p_stderr[1], 2) == -1) { | dup2(p_stderr[1], 2) == -1) { | ||||
snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | ||||
"dup2(): %s\n", strerror(errno)); | "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); | _exit(1); | ||||
} | } | ||||
/* if execution reaches this point then the exec() failed */ | /* if execution reaches this point then the exec() failed */ | ||||
snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | ||||
"mbrola: %s\n", strerror(errno)); | "mbrola: %s\n", strerror(errno)); | ||||
write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
written = write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
_exit(1); | _exit(1); | ||||
} | } | ||||
int suffix_ix; | int suffix_ix; | ||||
int skipwords = 0; | int skipwords = 0; | ||||
char *p; | char *p; | ||||
char string[20]; // for looking up entries in **_list | |||||
char string[32]; // for looking up entries in **_list | |||||
char buf1[100]; | char buf1[100]; | ||||
char ph_append[50]; | char ph_append[50]; | ||||
char ph_buf[200]; | char ph_buf[200]; | ||||
char ph_buf2[50]; | char ph_buf2[50]; | ||||
char ph_zeros[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]; | char buf_digit_lookup[50]; | ||||
static const char str_pause[2] = {phonPAUSE_NOLINK,0}; | static const char str_pause[2] = {phonPAUSE_NOLINK,0}; |
if(regression & 0x2) | if(regression & 0x2) | ||||
{ | { | ||||
// [v] amd [v;] don't cause regression, or [R^] | // [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; | stop_propagation = 1; | ||||
if(regression & 0x10) | |||||
voicing = 0; | |||||
} | } | ||||
} | } | ||||
// stop propagation at a word boundary | // stop propagation at a word boundary | ||||
voicing = 0; | voicing = 0; | ||||
} | } | ||||
if(regression & 0x10) | |||||
if(regression & 0x100) | |||||
{ | { | ||||
// devoice word-final consonants, unless propagating voiced | // devoice word-final consonants, unless propagating voiced | ||||
if(voicing == 0) | if(voicing == 0) |
// frame 0 is for the defaults, before any ssml tags. | // frame 0 is for the defaults, before any ssml tags. | ||||
typedef struct { | typedef struct { | ||||
int tag_type; | int tag_type; | ||||
int voice_variant; | |||||
int voice_variant_number; | |||||
int voice_gender; | int voice_gender; | ||||
int voice_age; | int voice_age; | ||||
char voice_name[40]; | char voice_name[40]; | ||||
static int n_ssml_stack; | static int n_ssml_stack; | ||||
static SSML_STACK ssml_stack[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}; | static char current_voice_id[40] = {0}; | ||||
// Use the voice properties from the SSML stack to choose a voice, and switch | // Use the voice properties from the SSML stack to choose a voice, and switch | ||||
// to that voice if it's not the current voice | // to that voice if it's not the current voice | ||||
int ix; | int ix; | ||||
const char *p; | |||||
SSML_STACK *sp; | SSML_STACK *sp; | ||||
const char *v_id; | const char *v_id; | ||||
int voice_name_specified; | int voice_name_specified; | ||||
int voice_found; | int voice_found; | ||||
espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
char voice_name[40]; | |||||
static char voice_name[40]; | |||||
char language[40]; | char language[40]; | ||||
char buf[80]; | |||||
strcpy(voice_name,ssml_stack[0].voice_name); | strcpy(voice_name,ssml_stack[0].voice_name); | ||||
strcpy(language,ssml_stack[0].language); | strcpy(language,ssml_stack[0].language); | ||||
voice_select.age = ssml_stack[0].voice_age; | voice_select.age = ssml_stack[0].voice_age; | ||||
voice_select.gender = ssml_stack[0].voice_gender; | 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; | voice_select.identifier = NULL; | ||||
for(ix=0; ix<n_ssml_stack; ix++) | for(ix=0; ix<n_ssml_stack; ix++) | ||||
if(sp->language[0] != 0) | if(sp->language[0] != 0) | ||||
{ | { | ||||
strcpy(language, sp->language); | 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) | if(voice_name_specified == 0) | ||||
voice_name[0] = 0; // forget a previous voice name if a language is specified | voice_name[0] = 0; // forget a previous voice name if a language is specified | ||||
} | } | ||||
if(sp->voice_gender != 0) | if(sp->voice_gender != 0) | ||||
{ | |||||
voice_select.gender = sp->voice_gender; | voice_select.gender = sp->voice_gender; | ||||
} | |||||
if(sp->voice_age != 0) | if(sp->voice_age != 0) | ||||
voice_select.age = sp->voice_age; | 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; | voice_select.name = voice_name; | ||||
v_id = SelectVoice(&voice_select, &voice_found); | v_id = SelectVoice(&voice_select, &voice_found); | ||||
if(v_id == NULL) | if(v_id == NULL) | ||||
return("default"); | 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); | return(v_id); | ||||
} // end of VoiceFromStack | } // end of VoiceFromStack | ||||
} // end of AddNameData | } // end of AddNameData | ||||
void SetVoiceStack(espeak_VOICE *v) | |||||
{//================================ | |||||
void SetVoiceStack(espeak_VOICE *v, const char *variant_name) | |||||
{//========================================================== | |||||
SSML_STACK *sp; | SSML_STACK *sp; | ||||
sp = &ssml_stack[0]; | sp = &ssml_stack[0]; | ||||
if(v->languages != NULL) | if(v->languages != NULL) | ||||
strcpy(sp->language,v->languages); | strcpy(sp->language,v->languages); | ||||
if(v->name != NULL) | 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_age = v->age; | ||||
sp->voice_gender = v->gender; | 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)); | |||||
} | } | ||||
attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); | attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); | ||||
attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name)); | 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_age = attrnumber(age,0,0); | ||||
ssml_sp->voice_gender = attrlookup(gender,mnem_gender); | ssml_sp->voice_gender = attrlookup(gender,mnem_gender); | ||||
ssml_sp->tag_type = tag_type; | ssml_sp->tag_type = tag_type; | ||||
{"reduced",2}, | {"reduced",2}, | ||||
{"moderate",3}, | {"moderate",3}, | ||||
{"strong",4}, | {"strong",4}, | ||||
{"x-strong",5}, | |||||
{NULL,-1}}; | {NULL,-1}}; | ||||
static const char *prosody_attr[5] = { | static const char *prosody_attr[5] = { | ||||
if(translator->langopts.tone_language == 1) | 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. | // tone language (eg.Chinese) do emphasis by increasing the pitch range. | ||||
sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value]; | sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value]; | ||||
sp->parameter[espeakVOLUME] = emphasis_to_volume[value]; | sp->parameter[espeakVOLUME] = emphasis_to_volume[value]; | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
static unsigned char emphasis_to_volume2[] = {100,100,75,100,120,150}; | |||||
sp->parameter[espeakVOLUME] = emphasis_to_volume2[value]; | |||||
sp->parameter[espeakEMPHASIS] = value; | sp->parameter[espeakEMPHASIS] = value; | ||||
} | } | ||||
ProcessParamStack(outbuf, outix); | ProcessParamStack(outbuf, outix); |
fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | ||||
} | } | ||||
LoadConfig(); | LoadConfig(); | ||||
SetVoiceStack(NULL); | |||||
SetVoiceStack(NULL, ""); | |||||
SynthesizeInit(); | SynthesizeInit(); | ||||
for(param=0; param<N_SPEECH_PARAM; param++) | for(param=0; param<N_SPEECH_PARAM; param++) |
#include "wave.h" | #include "wave.h" | ||||
unsigned char *outbuf=NULL; | unsigned char *outbuf=NULL; | ||||
extern espeak_VOICE voice_selected; | |||||
espeak_EVENT *event_list=NULL; | espeak_EVENT *event_list=NULL; | ||||
int event_list_ix=0; | int event_list_ix=0; | ||||
fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | 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(); | SynthesizeInit(); | ||||
InitNamedata(); | InitNamedata(); | ||||
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014500; | ||||
int option_device_number = -1; | int option_device_number = -1; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
fclose(f); | |||||
} // end of LoadConfig | } // end of LoadConfig | ||||
} | } | ||||
if(flags & 0x40) | 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) | if(flags & 16) | ||||
return(len); | return(len); |
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | 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_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_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}; | static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | 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.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.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | |||||
} | } | ||||
break; | break; | ||||
SetCyrillicLetters(tr); | SetCyrillicLetters(tr); | ||||
SetLetterVowel(tr,0x2a); | SetLetterVowel(tr,0x2a); | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word | 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.param[LOPT_REDUCE] = 2; | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | 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 ; | 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 ; | ||||
tr->langopts.word_gap = 0x8; // don't use linking phonemes | tr->langopts.word_gap = 0x8; // don't use linking phonemes | ||||
tr->langopts.vowel_pause = 0x30; | tr->langopts.vowel_pause = 0x30; | ||||
tr->langopts.param[LOPT_PREFIXES] = 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 | |||||
tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; | 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; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; | ||||
} | } | ||||
break; | 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 | case L('n','l'): // Dutch | ||||
{ | { | ||||
tr->langopts.vowel_pause = 0x30; // ?? | tr->langopts.vowel_pause = 0x30; // ?? | ||||
tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
tr->langopts.param[LOPT_PREFIXES] = 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'); | 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; | 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; | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | 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.max_initial_consonants = 7; // for example: wchrzczony :) | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | ||||
tr->langopts.numbers2 = 0x40; | tr->langopts.numbers2 = 0x40; | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | ||||
tr->langopts.stress_flags = 0x20; | 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.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.numbers2 = 0x100; // plural forms of millions etc | ||||
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator | tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator |
} | } | ||||
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) | int SetTranslator2(const char *new_language) | ||||
{//========================================= | {//========================================= | ||||
// Set translator2 to a second language | // Set translator2 to a second language | ||||
int next_tone=0; | int next_tone=0; | ||||
unsigned char *p; | unsigned char *p; | ||||
int srcix; | int srcix; | ||||
int embedded_cmd; | |||||
int value; | |||||
int found_dict_flag; | int found_dict_flag; | ||||
unsigned char ph_code; | unsigned char ph_code; | ||||
PHONEME_LIST2 *plist2; | PHONEME_LIST2 *plist2; | ||||
{ | { | ||||
embedded_flag = SFLAG_EMBEDDED; | 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)) | if((word[0] == 0) || (word_flags & FLAG_DELETE_WORD)) | ||||
} | } | ||||
} | } | ||||
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 | // probably an abbreviation such as Mr. or B. rather than end of sentence | ||||
clause_pause = 10; | clause_pause = 10; | ||||
} | } | ||||
} | } | ||||
if(embedded_read < embedded_ix) | |||||
{ | |||||
// any embedded commands not yet processed? | |||||
Word_EmbeddedCmd(); | |||||
} | |||||
for(ix=0; ix<2; ix++) | for(ix=0; ix<2; ix++) | ||||
{ | { | ||||
// terminate the clause with 2 PAUSE phonemes | // terminate the clause with 2 PAUSE phonemes |
#define LOPT_PREFIXES 3 | #define LOPT_PREFIXES 3 | ||||
// non-zero, change voiced/unoiced to match last consonant in a cluster | // 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 1=LANG=cz,bg don't propagate over [v] | ||||
// bit 2=don't propagate acress word boundaries | // bit 2=don't propagate acress word boundaries | ||||
// bit 3=LANG=pl, propagate over liquids and nasals | // 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 | #define LOPT_REGRESSIVE_VOICING 4 | ||||
// 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') | // 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') | ||||
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); | 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); | 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 InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata); | ||||
void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); | void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); | ||||
// percentages shown to user, ix=N_PEAKS means ALL peaks | // percentages shown to user, ix=N_PEAKS means ALL peaks | ||||
extern USHORT voice_pcnt[N_PEAKS+1][3]; | extern USHORT voice_pcnt[N_PEAKS+1][3]; | ||||
extern espeak_VOICE current_voice_selected; | |||||
extern voice_t *voice; | extern voice_t *voice; | ||||
extern int tone_points[12]; | extern int tone_points[12]; |
static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
static int len_path_voices; | static int len_path_voices; | ||||
espeak_VOICE voice_selected; | |||||
espeak_VOICE current_voice_selected; | |||||
enum { | enum { | ||||
int pitch1; | int pitch1; | ||||
int pitch2; | 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); | strcpy(voicename,vname); | ||||
if(voicename[0]==0) | if(voicename[0]==0) | ||||
voice_name[0] = 0; | voice_name[0] = 0; | ||||
voice_languages[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 | else | ||||
{ | { | ||||
case V_GENDER: | case V_GENDER: | ||||
{ | { | ||||
int age; | |||||
int age = 0; | |||||
char vgender[80]; | char vgender[80]; | ||||
sscanf(p,"%s %d",vgender,&age); | 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; | break; | ||||
} // end of LoadVoice | } // 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 | // Remove any voice variant suffix (name or number) from a voice name | ||||
// Returns the voice variant name | // Returns the voice variant name | ||||
char *p; | char *p; | ||||
static char variant_name[20]; | |||||
static char variant_name[40]; | |||||
char variant_prefix[5]; | char variant_prefix[5]; | ||||
variant_name[0] = 0; | variant_name[0] = 0; | ||||
sprintf(variant_prefix,"!v%c",PATHSEP); | sprintf(variant_prefix,"!v%c",PATHSEP); | ||||
if(add_dir == 0) | |||||
variant_prefix[0] = 0; | |||||
if(vname != NULL) | if(vname != NULL) | ||||
{ | { | ||||
if((p = strchr(vname,'+')) != NULL) | if((p = strchr(vname,'+')) != NULL) | ||||
{ | { | ||||
// The voice name has a +variant suffix | // The voice name has a +variant suffix | ||||
variant_num = 0; | |||||
*p++ = 0; // delete the suffix from the voice name | *p++ = 0; // delete the suffix from the voice name | ||||
if(isdigit(*p)) | if(isdigit(*p)) | ||||
{ | { | ||||
else | else | ||||
{ | { | ||||
// voice variant name, not number | // 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); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
char buf[60]; | char buf[60]; | ||||
strncpy0(buf,vname,sizeof(buf)); | strncpy0(buf,vname,sizeof(buf)); | ||||
variant_name = ExtractVoiceVariantName(buf,variant_num); | |||||
variant_name = ExtractVoiceVariantName(buf,variant_num, 1); | |||||
if((v = LoadVoice(buf,0)) == NULL) | if((v = LoadVoice(buf,0)) == NULL) | ||||
return(NULL); | return(NULL); | ||||
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) | |||||
{//===================================================================== | |||||
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2) | |||||
{//====================================================================== | |||||
int ix; | int ix; | ||||
int match_fname = -1; | int match_fname = -1; | ||||
int match_fname2 = -1; | int match_fname2 = -1; | ||||
int match_name = -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; | int last_part_len; | ||||
char last_part[41]; | char last_part[41]; | ||||
char name[40]; | |||||
if(voices == NULL) | if(voices == NULL) | ||||
{ | { | ||||
voices = voices_list; | 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); | sprintf(last_part,"%c%s",PATHSEP,name); | ||||
last_part_len = strlen(last_part); | last_part_len = strlen(last_part); | ||||
break; | break; | ||||
} | } | ||||
else | 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; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
strncpy0(buf,voice_select2.name,sizeof(buf)); | strncpy0(buf,voice_select2.name,sizeof(buf)); | ||||
variant_name = ExtractVoiceVariantName(buf,0); | |||||
variant_name = ExtractVoiceVariantName(buf,0,0); | |||||
vp = SelectVoiceByName(voices_list,buf); | vp = SelectVoiceByName(voices_list,buf); | ||||
if(vp != NULL) | if(vp != NULL) | ||||
{ | { | ||||
if(variant_name[0] != 0) | 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); | return(voice_id); | ||||
} | } | ||||
if(vp->variant != 0) | 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); | return(voice_id); | ||||
} | } | ||||
static char buf[60]; | static char buf[60]; | ||||
strncpy0(buf,name,sizeof(buf)); | strncpy0(buf,name,sizeof(buf)); | ||||
variant_name = ExtractVoiceVariantName(buf,0); | |||||
variant_name = ExtractVoiceVariantName(buf, 0, 1); | |||||
memset(&voice_selector,0,sizeof(voice_selector)); | memset(&voice_selector,0,sizeof(voice_selector)); | ||||
// voice_selector.name = buf; | // voice_selector.name = buf; | ||||
} | } | ||||
DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
SetVoiceStack(&voice_selector); | |||||
SetVoiceStack(&voice_selector, variant_name); | |||||
return(EE_OK); | return(EE_OK); | ||||
} | } | ||||
LoadVoice(variant_name,2); | LoadVoice(variant_name,2); | ||||
} | } | ||||
DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
SetVoiceStack(&voice_selector); | |||||
SetVoiceStack(&voice_selector, variant_name); | |||||
return(EE_OK); | return(EE_OK); | ||||
} | } | ||||
} | } | ||||
LoadVoiceVariant(voice_id,0); | LoadVoiceVariant(voice_id,0); | ||||
DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
SetVoiceStack(voice_selector); | |||||
SetVoiceStack(voice_selector, ""); | |||||
return(EE_OK); | return(EE_OK); | ||||
} // end of SetVoiceByProperties | } // end of SetVoiceByProperties | ||||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | ||||
{//================================================== | {//================================================== | ||||
return(&voice_selected); | |||||
return(¤t_voice_selected); | |||||
} | } | ||||
#pragma GCC visibility pop | #pragma GCC visibility pop |