TranslateChar() can now substitute a character by two replacement characters. Lang=cs, more difference between long and short vowels, less length differnence beteeen stressed and unstressed syllables. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@7 d46cf337-b52f-0410-862d-fd96e6ae7743master
imagine I2madZI2n | imagine I2madZI2n | ||||
impedance I2mpi:d@ns | impedance I2mpi:d@ns | ||||
imperative I2mpEr@tIv | imperative I2mpEr@tIv | ||||
impi $1 | |||||
imprecise I2mprIs'aIs | imprecise I2mprIs'aIs | ||||
inappropriate ,Ina2proUpri@t | inappropriate ,Ina2proUpri@t | ||||
incense Ins'Ens $verb | incense Ins'Ens $verb | ||||
rebel rI2bEl $verb | rebel rI2bEl $verb | ||||
recall ri:kO:l | recall ri:kO:l | ||||
recall $2 $verb | recall $2 $verb | ||||
recalled rI2kO:ld | |||||
recess ri:sEs | recess ri:sEs | ||||
recipe rEsIpi: | recipe rEsIpi: | ||||
reciprocal rI2sIpr@k@L | reciprocal rI2sIpr@k@L | ||||
san ,san | san ,san | ||||
sardine $2 | sardine $2 | ||||
satan seIt@n | satan seIt@n | ||||
satellite sat@laIt | |||||
saucepan sO:sp@n | saucepan sO:sp@n | ||||
saudi saUdI2 | saudi saUdI2 | ||||
says sEz | says sEz | ||||
Cheshire tSES3 | Cheshire tSES3 | ||||
Chiswick tSIzIk | Chiswick tSIzIk | ||||
Dolgellau d0lg'EClaI | Dolgellau d0lg'EClaI | ||||
Dover doUv3 | |||||
Dumfries dVmfr'i:s | Dumfries dVmfr'i:s | ||||
Dyfed d'VvId | Dyfed d'VvId | ||||
Edinburgh EdInb%Vr@ | Edinburgh EdInb%Vr@ | ||||
(might have to) ,maIth'avt@5 $verbf $atend | (might have to) ,maIth'avt@5 $verbf $atend | ||||
have %hav $pastf $only | have %hav $pastf $only | ||||
haves havz | |||||
(have been) %hav%bIn $pastf | (have been) %hav%bIn $pastf | ||||
(have to) havtU $atend | (have to) havtU $atend | ||||
has %ha2z $pastf $only | has %ha2z $pastf $only |
_it_separ) ate (_ @t | _it_separ) ate (_ @t | ||||
par) ates (_ eIt|s | par) ates (_ eIt|s | ||||
@) ated (++_ eItId | @) ated (++_ eItId | ||||
_s) atel (l at@ | |||||
@) ati (_ 'A:tI | @) ati (_ 'A:tI | ||||
at (im_ 'eIt | at (im_ 'eIt | ||||
@) ating (++_ eItIN | @) ating (++_ eItIN | ||||
ise (_ aIz | ise (_ aIz | ||||
iser (_ aIz3 | iser (_ aIz3 | ||||
@) ism (_$3de Iz@m | @) ism (_$3de Iz@m | ||||
an) ism (_$3d Iz@m | |||||
@iB) ism (_$3d Iz@m | @iB) ism (_$3d Iz@m | ||||
is (er+_ aIz | is (er+_ aIz | ||||
iz (er_ aIz | iz (er_ aIz | ||||
ch) or (d O@ | ch) or (d O@ | ||||
l) or (d O@ | l) or (d O@ | ||||
_m) or O@ | _m) or O@ | ||||
_m) orr 0r | |||||
_m) ore o@ | _m) ore o@ | ||||
nd) or (_ 3 | nd) or (_ 3 | ||||
nt) or (_ o@ | nt) or (_ o@ | ||||
'll (_$3 @L | 'll (_$3 @L | ||||
.group 0xce | |||||
// $group (++ _^_EL | |||||
.group 0xce // Greek letters | |||||
// 0xce is the first byte of the utf-8 code for these characters | |||||
α 'alf@_ | α 'alf@_ | ||||
ά 'alf@_ | ά 'alf@_ | ||||
ξ ks'aI_ | ξ ks'aI_ | ||||
ο oUm'aIkr0n_ | ο oUm'aIkr0n_ | ||||
.group 0xcf | |||||
// $group (++ _^_EL | |||||
.group 0xcf // Greek letters | |||||
π p'aI_ | π p'aI_ | ||||
ρ r'oU_ | ρ r'oU_ |
ó o: | ó o: | ||||
ú u: | ú u: | ||||
ä _^_DE // use German voice | |||||
ö _^_DE | |||||
ü _^_DE | |||||
ß _^_DE | |||||
$ dol&r | $ dol&r | ||||
. totSk& | . totSk& | ||||
= (== | = (== | ||||
=) = (= | =) = (= | ||||
==) = (_ _:: | ==) = (_ _:: | ||||
.group 0xce // Greek letters | |||||
α alf&_ | |||||
ά alf&_||tonos | |||||
β b'et&_ | |||||
γ g&m&_ | |||||
δ delt&_ | |||||
ε Epsilon | |||||
έ Epsilon||tonos | |||||
ζ zet&_ | |||||
η et&_ | |||||
ή et&_||tonos | |||||
θ txet&_ | |||||
ι jot&_ | |||||
ί jot&_||tonos | |||||
κ k&p&_ | |||||
λ l&md&_ | |||||
μ mi_ | |||||
ν ni_ | |||||
ξ k_si_ | |||||
ο omi_k@-*on_ | |||||
.group 0xcf // Greek letters | |||||
π pi_ | |||||
ρ @-*o_ | |||||
σ sigm&_ | |||||
ς grtSko_||z&vrS@no_||sigm&_ | |||||
τ t&U_ | |||||
υ grtSki_||IpsIlon_ | |||||
ύ grtSki||IpsIlon_||tonos | |||||
φ fi_ | |||||
χ h_i | |||||
ψ pss'I | |||||
ω omeg&_ | |||||
ώ omeg&_||tonos | |||||
ό omi_k@-*on_||tonos | |||||
| |||||
// This file in UTF8 encoded | // This file in UTF8 encoded | ||||
// Options | // Options | ||||
_5 s'iNku | _5 s'iNku | ||||
?1_6 s'eIS | ?1_6 s'eIS | ||||
?2_6 s'eIs | ?2_6 s'eIs | ||||
?1_7 s'Et | |||||
?1_7 s'Ety | |||||
?2_7 s'EtSi | ?2_7 s'EtSi | ||||
_8 'oItu | _8 'oItu | ||||
?1_9 n'Ov | |||||
?1_9 n'Ovy | |||||
?2_9 n'Ovi | ?2_9 n'Ovi | ||||
?1_10 d'ES | ?1_10 d'ES | ||||
?2_10 d'Ez | ?2_10 d'Ez | ||||
?1_11 'oNz | |||||
?1_11 'oNzy | |||||
?2_11 'oNzi | ?2_11 'oNzi | ||||
?1_12 d'oz | |||||
?1_12 d'ozy | |||||
?2_12 d'ozi | ?2_12 d'ozi | ||||
?1_13 t:r'ez | |||||
?1_13 t:r'ezy | |||||
?2_13 t@-*'ezi | ?2_13 t@-*'ezi | ||||
?1_14 k&t'Orz | |||||
?1_14 k&t'orzy | |||||
?2_14 kat'Orzi | ?2_14 kat'Orzi | ||||
?1_15 k'iNz | |||||
?1_15 k'iNzy | |||||
?2_15 k'iNzi | ?2_15 k'iNzi | ||||
?1_16 dyz&s'eiS | ?1_16 dyz&s'eiS | ||||
?2_16 d,ezes'eIs | ?2_16 d,ezes'eIs | ||||
?1_17 dyz&s'Et | |||||
?1_17 dyz&s'Ety | |||||
?2_17 d,ezes'EtSi | ?2_17 d,ezes'EtSi | ||||
?1_18 dyz'Oitu | ?1_18 dyz'Oitu | ||||
?2_18 dez'oItu | ?2_18 dez'oItu | ||||
?1_19 dyz&n'Ov | |||||
?1_19 dyz&n'Ovy | |||||
?2_19 dezen'Ovi | ?2_19 dezen'Ovi | ||||
?1_2X v'iNt | |||||
?1_2X v'iNty | |||||
?2_2X v'iNtSi | ?2_2X v'iNtSi | ||||
?1_3X tr'iNt& | ?1_3X tr'iNt& | ||||
?2_3X t@-*'iNt& | ?2_3X t@-*'iNt& | ||||
?1_7X syt'eINt& | ?1_7X syt'eINt& | ||||
?2_7X set'eINt& | ?2_7X set'eINt& | ||||
_8X oIt'eINt& | _8X oIt'eINt& | ||||
_9X nov'eINt& | |||||
?1 _9X nuv'eINt& | |||||
?2 _9X nov'eINt& | |||||
_1C0 s'eIN | _1C0 s'eIN | ||||
?1_0C s'eINtuS | ?1_0C s'eINtuS | ||||
?2_0C s'eINtuz | ?2_0C s'eINtuz | ||||
// ABBREVIATIONS | // ABBREVIATIONS | ||||
//************** | //************** | ||||
aapp $abbrev | |||||
abadv $abbrev | abadv $abbrev | ||||
abc $abbrev | |||||
a.c 'as'e | a.c 'as'e | ||||
adsl $abbrev | adsl $abbrev | ||||
ae $abbrev | |||||
aids $abbrev | |||||
apedv $abbrev | apedv $abbrev | ||||
?1 apedv ,a,pe,,E,de've | |||||
avc $abbrev | |||||
bios b'i,OS | bios b'i,OS | ||||
d.c d,es'e | d.c d,es'e | ||||
cne $abbrev | |||||
cpu $abbrev | cpu $abbrev | ||||
//?1 cpu ,se,pe'u | |||||
?1 cpuc ,se,pe,u'se | |||||
cpuc $abbrev | |||||
dpoc $abbrev | |||||
ecg $abbrev | |||||
edp $abbrev | edp $abbrev | ||||
?1 etc ,ets'Et:r& | ?1 etc ,ets'Et:r& | ||||
?2 etc ,ets'Ete*& | ?2 etc ,ets'Ete*& | ||||
?2 (http ://) ag,atete'pe_ | |||||
hiv $abbrev | |||||
(http ://) ag,atete'pe_ | |||||
icc $abbrev | |||||
IEEE $abbrev // Institute of Electrical and Electronics Engineers | |||||
iss $abbrev | |||||
jpeg Z,Ot&p'Eg | |||||
mpeg ,Emp'Eg | |||||
nba $abbrev | |||||
nvda $abbrev | nvda $abbrev | ||||
oms $abbrev | |||||
omt $abbrev | |||||
osi $abbrev | |||||
?1 sa ,Esj'a | |||||
?1 sos ,Esj,O'Es | |||||
ue $abbrev | |||||
unts $abbrev | unts $abbrev | ||||
unts $abbrev | |||||
?1 usb ,u,Esy'be | |||||
?2 usb $abbrev | |||||
usb $abbrev | |||||
// articles | // articles | ||||
abacaxi abakaSi | abacaxi abakaSi | ||||
axé aSE | axé aSE | ||||
elixir eliSir | elixir eliSir | ||||
?1 fixe fiSe | |||||
?1 fixe f'iSy | |||||
lixo l'iSu | lixo l'iSu | ||||
roxo x'oSu | roxo x'oSu | ||||
// foreign words | // foreign words | ||||
?1 alt 'alt | ?1 alt 'alt | ||||
?1 bacalhau b,&k&lj'aU | ?1 bacalhau b,&k&lj'aU | ||||
?1 caps k'aps | |||||
ctrl k'oNt:r,Ol | |||||
?1 delete dil'i:t | |||||
?1 design diz'aIn | |||||
?1 down d'aUn | |||||
?1 download d'aUnloUd | |||||
?1 back _^_EN | |||||
?1 blind _^_EN | |||||
?1 braille b:r'aily | |||||
?1 cancel _^_EN | |||||
?1 caps _^_EN | |||||
?1 ctrl k'oNt:r,Ol | |||||
?2 ctrl k'oNt:r,OU | |||||
?1 delete _^_EN | |||||
?1 design _^_EN | |||||
?1 down _^_EN | |||||
?1 download _^_EN | |||||
?1 end _^_EN | |||||
?1 escape Sk'eIpy | ?1 escape Sk'eIpy | ||||
?1 eyes w'aIz | |||||
?1 eyes _^_EN | |||||
?1 gmail g,em'eIl | |||||
?1 google g'u:g&l | ?1 google g'u:g&l | ||||
hardware h'ardwe@ | |||||
?1 kernel k'ErnEl | |||||
?1 hardware _^_EN | |||||
?2hardware h'ardwe@ | |||||
?1 home _^_EN | |||||
?1 hotmail _^_EN | |||||
?1 install _^_EN | |||||
?1 kernel k'Ern,El | |||||
?2 kernel k'ErnEU | ?2 kernel k'ErnEU | ||||
?1 line l'aIn | |||||
?1 line _^_EN | |||||
layout l'eI,aUt | layout l'eI,aUt | ||||
?1 lock _^_EN | ?1 lock _^_EN | ||||
?1 mail meIl | |||||
?1 mail _^_EN | |||||
?2 mail m'eja | ?2 mail m'eja | ||||
?1 menu mEnU | |||||
?1 menu menu | |||||
?1 next _^_EN | |||||
ok Ok'eI | ok Ok'eI | ||||
?1 pause p'au:z | ?1 pause p'au:z | ||||
?1 page p'eIdZ | |||||
?1 page _^_EN | |||||
?1 scanner _^_EN | |||||
?1 shift S'ift | |||||
?1 scroll _^_EN | ?1 scroll _^_EN | ||||
site s'aIt | site s'aIt | ||||
software s'Oftwe@ | software s'Oftwe@ | ||||
?1 up _^_EN | |||||
?1 upload _^_EN | |||||
?1 space _^_EN | |||||
?1 sporting sp'Ort,ing | |||||
?1 tab t'ab | |||||
?1 up _^_EN | |||||
?1 upload _^_EN | |||||
?1 window _^_EN | ?1 window _^_EN | ||||
?1 yes j'Es | |||||
?1 yahoo _^_EN | |||||
?1 yes _^_EN | |||||
// common person names | // common person names | ||||
alan 'al@n | alan 'al@n | ||||
louis _^_FR | |||||
// foreign product names | // foreign product names | ||||
?1 access 'aksEs | |||||
debian d'Ebj&~N | |||||
?1 access _^_EN | |||||
?1 adobe &d'Oby | |||||
?1 debian _^_EN | |||||
?2 debian d'Ebj&~N | |||||
?1 excel _^_EN | |||||
?1 express _^_EN | |||||
espeak isp'i:k | espeak isp'i:k | ||||
espeakedit isp'i:k,Ed,it | espeakedit isp'i:k,Ed,it | ||||
firefox f'ai@foks | |||||
?1 hal hal | |||||
?1 fedora _^_EN | |||||
?1 firefox _^_EN | |||||
?2 firefox f'ai@foks | |||||
?1 front _^_EN | |||||
?1 hal _^_EN | |||||
?1 jaws dZ'au:z | ?1 jaws dZ'au:z | ||||
?1 linux l,in'uks | ?1 linux l,in'uks | ||||
?2 linux l'inuks | ?2 linux l'inuks | ||||
?1 live _^_EN | |||||
?1 maker _^_EN | |||||
?1 media _^_EN | |||||
?1 messenger _^_EN | |||||
?1 microsoft m,ik:r'os,Oft | |||||
?1 movie _^_EN | |||||
?1 nero n'E:ru | |||||
?1 office _^_EN | |||||
openoffice 'opeIN|'Ofis | openoffice 'opeIN|'Ofis | ||||
?1 outlook _^_EN | |||||
?1 paint p'aint | |||||
?1 player _^_EN | |||||
?1 point _^_EN | |||||
?1 power _^_EN | |||||
?1 product _^_EN | |||||
?1 Publisher _^_EN | |||||
?1 reader _^_EN | ?1 reader _^_EN | ||||
?1 setup _^_EN | |||||
?1 scout _^_EN // Nero Scout | |||||
?1 skype _^_EN | |||||
slackware sl'akwe@ | slackware sl'akwe@ | ||||
?1 smart _^_EN // nero StartSmart | |||||
speak spi:k | speak spi:k | ||||
suse z'u:ts@ | suse z'u:ts@ | ||||
?1 start _^_EN // nero StartSmart | |||||
?1 time _^_EN // nero show time | |||||
ubuntu ub'untu | ubuntu ub'untu | ||||
?1 unix ,u:n'iks | ?1 unix ,u:n'iks | ||||
?2 unix j'u:niks | ?2 unix j'u:niks | ||||
?1 windows _^_EN | ?1 windows _^_EN | ||||
?1 WinRAR _^_EN | |||||
volkmann f'Olkman | volkmann f'Olkman | ||||
// translation rules Brazilian | |||||
// translation rules Brazilian | |||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// Options | // Options | ||||
?1 C) ecç 'E's // eg: selecção, etc... | ?1 C) ecç 'E's // eg: selecção, etc... | ||||
?1 C) e (ã i // leão, panteão, etc. | ?1 C) e (ã i // leão, panteão, etc. | ||||
?1 C) e (a i // oceano, etc. | ?1 C) e (a i // oceano, etc. | ||||
?1 _C) e (CACA y //definições. | |||||
?1 _C) e (CCACAr y // desligar. | |||||
?1 C) e (CCAC y // eg: deslocamento, etc... | |||||
?1 _C) e (CKAr y // fechar | |||||
?1 _C) e (CCACAr y // terminar. | |||||
?1 _C) e (CACC y // recicla, reciclagem, etc... | |||||
?1 _f) e (rrament y // ferramenta, ferramentas. | |||||
?1 _d) e (fini y //definições. | |||||
?1 _d) e (slig y // desligar. | |||||
?1 _d) e (sloc y // eg: deslocamento, etc... | |||||
?1 _f) e (ch y // fechar | |||||
?1 _t) e (rmin y // terminar. | |||||
?1 _r) e (cicl y // recicla, reciclagem, etc... | |||||
?1 _f) e (rramenta y // ferramenta, ferramentas. | |||||
?1 _p) e (squ y // pesquisar | |||||
?1 hip) e (r ,E // eg: hiper | ?1 hip) e (r ,E // eg: hiper | ||||
?1 sup) e (r ,E // super | ?1 sup) e (r ,E // super | ||||
?1 int) e (rC 'E // Interno | |||||
?1 int) e (rr E // eg: Enterra | |||||
?1 int) e (rn ,E // Interno | |||||
?1 n) e (t ,E // eg: net | ?1 n) e (t ,E // eg: net | ||||
?1 e (l_ ,E // eg: possível, manuel, etc... | ?1 e (l_ ,E // eg: possível, manuel, etc... | ||||
gu (Y g | gu (Y g | ||||
?1 guen (C gw'eIN // aguenta, etc. | ?1 guen (C gw'eIN // aguenta, etc. | ||||
?1 n) gu (A gw // eg: língua, etc. | ?1 n) gu (A gw // eg: língua, etc. | ||||
?1 gu (ém_ g // eg: alguém, ninguém, etc... | |||||
.group h | .group h | ||||
?1 _) h (_ &g'a | |||||
?2 _) h (_ ag'a | |||||
_) h (_ ag'a | |||||
h // silent | h // silent | ||||
n n | n n | ||||
n (n | n (n | ||||
nh n^ | nh n^ | ||||
?1 A) nn n //drop “n” in European Portuguese (eg: connosco). | |||||
?1 A) nn n //drop “n” (eg: connosco). | |||||
.group o | .group o | ||||
?2 ol (K Ow | ?2 ol (K Ow | ||||
?2 olh olj | ?2 olh olj | ||||
?1 om (_ 'om | |||||
?2 om (_ oN | |||||
om (_ oN | |||||
o (ma_ o | o (ma_ o | ||||
?1 om (C 'om | |||||
?2 om (C om | |||||
om (C om | |||||
on (K oN | on (K oN | ||||
o (na_ o | o (na_ o | ||||
onh on^ | onh on^ | ||||
?1 A) que (nA_ ke // pequeno, etc. | ?1 A) que (nA_ ke // pequeno, etc. | ||||
?1 C) quê (_ ke // porquê, etc. | ?1 C) quê (_ ke // porquê, etc. | ||||
?1 que (l ke // aquele, etc. | ?1 que (l ke // aquele, etc. | ||||
?1 que (r_ ke // qualquer, etc. | |||||
?1 que (r_ kE // qualquer, etc. | |||||
?1 qui ki // quinta, esquilo, etc. | ?1 qui ki // quinta, esquilo, etc. | ||||
?1 _) quind kuind // quindecágono, etc. | ?1 _) quind kuind // quindecágono, etc. | ||||
?1 tran) qui kui // tranquilo, etc. | ?1 tran) qui kui // tranquilo, etc. | ||||
.group л | .group л | ||||
_) л (_ El^ | _) л (_ El^ | ||||
л (_ l^ | |||||
// л (_ l^ // rule removed | |||||
л (Y l^ | л (Y l^ | ||||
л l | л l | ||||
a (vb A: | a (vb A: | ||||
a (vd A: | a (vd A: | ||||
a (va a | a (va a | ||||
a (rt_ A: | |||||
a (rt_ A: | |||||
a (vg A: | |||||
a (r_ a | a (r_ a | ||||
a (r_ a | |||||
b) a (r_ A: | |||||
bb) a (r_ a | |||||
p)a (d_ a | |||||
b) a (r_ A: | |||||
bb) a (r_ a | |||||
a (CC a | a (CC a | ||||
a (_ a | a (_ a | ||||
&) a (_ a2 | &) a (_ a2 | ||||
a (re_ a | |||||
a (rn A: | |||||
a (rna a | |||||
l) a (rs A: | |||||
a (re_ a | |||||
a (rn A: | |||||
a (rna a | |||||
l) a (rs A: | |||||
k) a (ta ,a | k) a (ta ,a | ||||
m) a (j a | |||||
om) a (t A: | |||||
st) a (rt A: | |||||
gr) a (m a | |||||
a (x a | |||||
p) a (nel a | |||||
k) a (n a | |||||
j) a (n a | |||||
r) a (de a | |||||
eg) a (n a | |||||
er) a (d a | |||||
er) a (t a | |||||
d) a (n_ a | |||||
m) a (j a | |||||
om) a (t A: | |||||
_m) a (ter a | |||||
st) a (rt A: | |||||
gr) a (m a | |||||
a (x a | |||||
p) a (nel a | |||||
a (uto a | |||||
k) a (n a | |||||
n) a (d a | |||||
j) a (n a | |||||
r) a (de a | |||||
eg) a (n a | |||||
er) a (d a | |||||
er) a (t a | |||||
d) a (n_ a | |||||
st) a (t_ a | |||||
tot) a (l 'A: | tot) a (l 'A: | ||||
v) a (ld A: | |||||
v) a (rd A: | |||||
sm) a (rt A: | |||||
r) a (t A: | |||||
s) a (maC a | |||||
ng) a (d a | |||||
m) a (n a | |||||
t) a (t A: | |||||
ent) a (r A: | |||||
a (t_ a | |||||
a (st a | |||||
s) a (s_ a | |||||
s) a (d_ a | |||||
er) a (t_ a | |||||
åg) a (n a | |||||
t) a (n_ a | |||||
el) a (d a | |||||
nn) a (n a | |||||
mell) a (n a | |||||
arbet arbe:t | |||||
v) a (ld A: | |||||
v) a (rd A: | |||||
sm) a (rt A: | |||||
r) a (t A: | |||||
s) a (maC a | |||||
ng) a (d a | |||||
m) a (n a | |||||
t) a (t A: | |||||
ent) a (r A: | |||||
a (t_ a | |||||
ast ast | |||||
s) a (s_ a | |||||
s) a (d_ a | |||||
er) a (t_ a | |||||
åg) a (n a | |||||
t) a (n_ a | |||||
el) a (d a | |||||
nn) a (n a | |||||
mell) a (n a | |||||
_sk) a (d A: | |||||
ansv) a (r A: | |||||
ll) a (de a | |||||
_v) a (nl A: | |||||
d) a (d_ a | |||||
tt) a (C_ a | |||||
dd) a (C_ a | |||||
arbet arbe:t | |||||
.group b | .group b | ||||
b b | b b | ||||
.group d | .group d | ||||
d d | d d | ||||
d (d | d (d | ||||
dagen dA:gEn | |||||
dagen dA:gEn | |||||
disken dIskEn | |||||
djup j'u-p | |||||
djur j'u-r | |||||
dum d8m | |||||
.group e | .group e | ||||
e e: | e e: | ||||
d) e (lv e: | d) e (lv e: | ||||
d) e (ln e: | d) e (ln e: | ||||
d) e (lt e: | d) e (lt e: | ||||
d) e (bat E | |||||
s) e (kund E | |||||
ch) e (f E: | |||||
e (ta E | e (ta E | ||||
e (x E | e (x E | ||||
&) e (_ E | &) e (_ E | ||||
nyh) e (t e: | nyh) e (t e: | ||||
r) e (sul E | r) e (sul E | ||||
r) e (sur E | r) e (sur E | ||||
r) e (dak E | |||||
v) e (ta e: | |||||
r) e (ta e: | |||||
pr) e (n E | pr) e (n E | ||||
_) e (tik E | _) e (tik E | ||||
r) e (ce E | r) e (ce E | ||||
h h | h h | ||||
h (h | h (h | ||||
hj j | hj j | ||||
hög hY:g | |||||
heading _^_EN | heading _^_EN | ||||
.group i | .group i | ||||
_) k (ö S; | _) k (ö S; | ||||
k (öp S; | k (öp S; | ||||
karta kA:rta | karta kA:rta | ||||
kategori katEg,u:ri: | |||||
kalend kal'End | |||||
känsl SEnsl | |||||
kategori katEg,u:ri: | |||||
kalend kal'End | |||||
känsl S;Ensl | |||||
.group l | .group l | ||||
l l | l l | ||||
.group m | .group m | ||||
m m | m m | ||||
m (m | m (m | ||||
menu _^_EN | |||||
människ m'EnIsx, | |||||
medlem m'e:dlEm | |||||
maga maga | |||||
menu _^_EN | |||||
människ m'EnIsx, | |||||
medlem m'e:dlEm | |||||
maga maga | |||||
meny mEn'y: | |||||
minimera mIni:m'e:ra2 | |||||
maximera maksi:m'e:ra2 | |||||
motor m'u:tOr | motor m'u:tOr | ||||
motorer m'Otu:rEr | motorer m'Otu:rEr | ||||
model mOd'El | |||||
musik mu-s'i:k | |||||
.group n | .group n | ||||
n n | n n | ||||
ng N | ng N | ||||
n (k N | n (k N | ||||
network _^_EN | network _^_EN | ||||
normal nOrmA:l | |||||
normal nOrmA:l | |||||
natur n'at'u-r | |||||
.group o | .group o | ||||
o u: | o u: | ||||
och 'Ok | och 'Ok | ||||
k) o (ns O | k) o (ns O | ||||
pr) o (cent O | pr) o (cent O | ||||
p) o (lis O | |||||
p) o (pu O | |||||
.group p | .group p | ||||
p p | p p | ||||
p (p | p (p | ||||
paket pak'e:t | paket pak'e:t | ||||
parentes par@nt,e:s | |||||
.group q | .group q | ||||
q k | q k | ||||
u (n 8 | u (n 8 | ||||
u (tl u- | u (tl u- | ||||
r) u (m_ 8: | r) u (m_ 8: | ||||
utmärk 'u-tm@rk | |||||
.group v | .group v | ||||
v v | v v | ||||
å o: | å o: | ||||
å (CC O | å (CC O | ||||
tr) å (d 'o: | tr) å (d 'o: | ||||
v) å (rt 'o: | |||||
v) å (r 'o: | |||||
h) å (r 'o: | |||||
.group ä | .group ä | ||||
ä E: | ä E: |
pl 17 102 | pl 17 102 | ||||
sk 22 117 | sk 22 117 | ||||
cs 6 118 | cs 6 118 | ||||
hr 15 121 | |||||
hr 16 121 | |||||
ru 36 119 | ru 36 119 | ||||
it 28 111 | it 28 111 | ||||
es 7 111 | es 7 111 | ||||
1 vowel/oe_4 sv | 1 vowel/oe_4 sv | ||||
2 vowel/o_mid hu ro | 2 vowel/o_mid hu ro | ||||
8 vowel/oo en_sc de eo es el sv no zh_yue | 8 vowel/oo en_sc de eo es el sv no zh_yue | ||||
10 vowel/oo_1 en_n en_rp en_wm af fi sk vi | |||||
11 vowel/oo_1 en_n en_rp en_wm af fi sk hr vi | |||||
3 vowel/oo_2 en_sc cy cs | 3 vowel/oo_2 en_sc cy cs | ||||
1 vowel/oo_3 af | 1 vowel/oo_3 af | ||||
2 vowel/oo_4 hi pl | 2 vowel/oo_4 hi pl |
0 n^ NULL 0 N | 0 n^ NULL 0 N | ||||
0 j NULL 0 y | 0 j NULL 0 y | ||||
0 S NULL 0 sh | 0 S NULL 0 sh | ||||
0 s. NULL 0 sh | |||||
0 S; NULL 0 C | 0 S; NULL 0 C | ||||
0 sx NULL 0 S | 0 sx NULL 0 S | ||||
0 S NULL 0 rs | 0 S NULL 0 rs | ||||
0 s. NULL 0 rs | |||||
0 u- NULL 0 }: | 0 u- NULL 0 }: | ||||
0 Y: NULL 0 2: | 0 Y: NULL 0 2: | ||||
0 y NULL 0 Y | 0 y NULL 0 Y |
phoneme a | phoneme a | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 140 | |||||
length 150 | |||||
formants vowel/a | formants vowel/a | ||||
reduceto & 4 | reduceto & 4 | ||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 130 | |||||
length 140 | |||||
formants vowel/e_mid | formants vowel/e_mid | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 130 | |||||
length 140 | |||||
formants vowel/e | formants vowel/e | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme o | |||||
vowel starttype (o) endtype (o) | |||||
length 140 | |||||
formants vowel/oo_1 | |||||
endphoneme | |||||
phoneme u | phoneme u | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 130 | length 130 |
phoneme e | phoneme e | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 130 | |||||
length 120 | |||||
formants vowel/e_mid | formants vowel/e_mid | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 130 | |||||
length 120 | |||||
formants vowel/oo_2 | formants vowel/oo_2 | ||||
endphoneme | endphoneme | ||||
phoneme i | phoneme i | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 120 | |||||
length 110 | |||||
formants vowel/ii_3 | formants vowel/ii_3 | ||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
phoneme i: | phoneme i: | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 230 | |||||
length 260 | |||||
formants vowel/i_3 | formants vowel/i_3 | ||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
phoneme & | phoneme & | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 130 | |||||
length 120 | |||||
formants vowel/ee_6 | formants vowel/ee_6 | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 130 | |||||
length 120 | |||||
formants vowel/e_mid2 | formants vowel/e_mid2 | ||||
endphoneme | endphoneme | ||||
phoneme e: | phoneme e: | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 280 | |||||
length 290 | |||||
formants vowel/e_mid | formants vowel/e_mid | ||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 140 | |||||
length 120 | |||||
formants vowel/a | formants vowel/a | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 130 | |||||
length 120 | |||||
formants vowel/oo_1 | formants vowel/oo_1 | ||||
endphoneme | endphoneme | ||||
phoneme o: | phoneme o: | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 280 | |||||
length 290 | |||||
formants vowel/oo_1 | formants vowel/oo_1 | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 130 | |||||
length 110 | |||||
formants vowel/u_2 | formants vowel/u_2 | ||||
endphoneme | endphoneme | ||||
phonemetable no base | phonemetable no base | ||||
include ph_norwegian | include ph_norwegian | ||||
phonemetable vi base | phonemetable vi base | ||||
include ph_vi | include ph_vi | ||||
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
a 784 1180 2680 768 1220 2680 | a 784 1180 2680 768 1220 2680 | ||||
a2 760 1420 2600 736 1380 2540 | a2 760 1420 2600 736 1380 2540 | ||||
aa 784 1180 2680 768 1220 2680 | aa 784 1180 2680 768 1220 2680 | ||||
E 518 1882 2540 581 1810 2540 | |||||
E 518 1920 2540 581 1810 2540 | |||||
I 504 1700 2560 504 1700 2560 | I 504 1700 2560 504 1700 2560 | ||||
i 520 2000 2540 520 2000 2540 | i 520 2000 2540 520 2000 2540 | ||||
0 566 890 2641 566 890 2641 | 0 566 890 2641 566 890 2641 | ||||
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
VR 648 1180 2595 640 1140 2460 | VR 648 1180 2595 640 1140 2460 | ||||
A~ 640 1120 2640 640 1120 2640 | A~ 640 1120 2640 640 1120 2640 | ||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 480 839 2760 480 839 2780 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
y: 280 1720 2340 280 1720 2340 | y: 280 1720 2340 280 1720 2340 | ||||
Y: 448 1520 2420 463 1520 2400 | Y: 448 1520 2420 463 1520 2400 |
u1 344 800 2360 344 800 2360 | u1 344 800 2360 344 800 2360 | ||||
U 368 800 2660 368 800 2660 | U 368 800 2660 368 800 2660 | ||||
y 280 1720 2340 280 1720 2340 | y 280 1720 2340 280 1720 2340 | ||||
ai 664 1040 2800 312 2240 2940 | |||||
&i 744 1540 2500 355 2222 2720 | |||||
ai 688 1064 2806 312 2300 2820 | |||||
&i 744 1540 2500 328 2280 2720 | |||||
oi 545 780 2780 310 2002 2300 | oi 545 780 2780 310 2002 2300 | ||||
ei 547 1855 2536 320 2300 2740 | ei 547 1855 2536 320 2300 2740 | ||||
Yi 448 1520 2420 355 2222 2720 | Yi 448 1520 2420 355 2222 2720 |
e 464 1980 2520 464 1980 2520 | e 464 1980 2520 464 1980 2520 | ||||
E 647 1778 2530 647 1778 2530 | E 647 1778 2530 647 1778 2530 | ||||
i 280 2280 2820 200 2398 2820 | i 280 2280 2820 200 2398 2820 | ||||
o 454 812 2559 432 824 2520 | |||||
O 670 946 2620 630 902 2700 | |||||
o 464 820 2559 440 820 2600 | |||||
O 480 800 2700 480 800 2700 | |||||
u 320 860 2360 320 860 2360 | u 320 860 2360 320 860 2360 | ||||
y 272 1820 2280 272 1800 2260 | y 272 1820 2280 272 1800 2260 | ||||
Y 448 1520 2420 463 1520 2400 | Y 448 1520 2420 463 1520 2400 | ||||
W 525 1320 2200 525 1320 2200 | W 525 1320 2200 525 1320 2200 | ||||
w^i 280 1832 2436 200 2398 2820 | w^i 280 1832 2436 200 2398 2820 | ||||
A~ 640 1120 2640 640 1120 2640 | |||||
A~ 600 1060 2640 600 1060 2640 | |||||
E~ 694 1360 2624 694 1360 2624 | E~ 694 1360 2624 694 1360 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 381 700 2960 381 700 2960 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
I 280 2280 2820 200 2398 2820 | I 280 2280 2820 200 2398 2820 | ||||
U 320 860 2360 320 860 2360 | U 320 860 2360 320 860 2360 |
e 464 1980 2520 464 1980 2520 | e 464 1980 2520 464 1980 2520 | ||||
E 584 1820 2560 584 1820 2560 | E 584 1820 2560 584 1820 2560 | ||||
i 280 2280 2820 200 2398 2820 | i 280 2280 2820 200 2398 2820 | ||||
o 454 812 2559 432 824 2520 | |||||
O 670 946 2620 630 902 2700 | |||||
o 464 820 2559 440 820 2600 | |||||
O 480 800 2700 480 800 2700 | |||||
u 320 740 2400 320 740 2400 | u 320 740 2400 320 740 2400 | ||||
y 272 1820 2280 272 1800 2260 | y 272 1820 2280 272 1800 2260 | ||||
Y 448 1520 2420 463 1520 2400 | Y 448 1520 2420 463 1520 2400 | ||||
W 525 1320 2200 525 1320 2200 | W 525 1320 2200 525 1320 2200 | ||||
w^i 280 1832 2436 200 2398 2820 | w^i 280 1832 2436 200 2398 2820 | ||||
A~ 640 1120 2640 640 1120 2640 | |||||
A~ 600 1060 2640 600 1060 2640 | |||||
E~ 672 1660 2624 672 1660 2624 | E~ 672 1660 2624 672 1660 2624 | ||||
O~ 512 880 2624 512 880 2620 | |||||
O~ 381 700 2960 381 700 2960 | |||||
W~ 694 1360 2624 694 1360 2624 | W~ 694 1360 2624 694 1360 2624 | ||||
I 384 2030 2610 384 2030 2610 | I 384 2030 2610 384 2030 2610 | ||||
U 368 880 2440 368 900 2440 | U 368 880 2440 368 900 2440 |
u: 320 740 2400 320 740 2400 | u: 320 740 2400 320 740 2400 | ||||
u2: 320 860 2360 320 860 2360 | u2: 320 860 2360 320 860 2360 | ||||
l- 352 1240 3020 352 1200 3020 | l- 352 1240 3020 352 1200 3020 | ||||
aI 744 1540 2500 355 2222 2720 | |||||
aI 744 1540 2500 328 2280 2720 | |||||
aU 724 1130 2760 472 780 2500 | aU 724 1130 2760 472 780 2500 |
V# 659 1278 2583 659 1278 2583 | V# 659 1278 2583 659 1278 2583 | ||||
Y 452 1709 2460 452 1709 2460 | Y 452 1709 2460 452 1709 2460 | ||||
a 925 1320 2700 896 1340 2660 | a 925 1320 2700 896 1340 2660 | ||||
a# 658 1408 2460 658 1408 2460 |
i 296 2220 2820 200 2398 2820 | i 296 2220 2820 200 2398 2820 | ||||
O 664 1000 2731 664 1020 2731 | O 664 1000 2731 664 1020 2731 | ||||
o 512 860 2648 512 860 2648 | o 512 860 2648 512 860 2648 | ||||
u 392 740 2760 392 720 2760 | |||||
u 392 736 2760 392 736 2760 | |||||
y 448 1520 2420 463 1520 2400 | y 448 1520 2420 463 1520 2400 | ||||
@: 686 1280 2595 686 1280 2595 | @: 686 1280 2595 686 1280 2595 | ||||
aI 672 1460 2430 400 2000 2700 | aI 672 1460 2430 400 2000 2700 |
int final_ph; | int final_ph; | ||||
int mnem; | int mnem; | ||||
int post_tonic; | int post_tonic; | ||||
int opt_length; | |||||
unsigned char vowel_stress[N_WORD_PHONEMES/2]; | unsigned char vowel_stress[N_WORD_PHONEMES/2]; | ||||
char syllable_type[N_WORD_PHONEMES/2]; | char syllable_type[N_WORD_PHONEMES/2]; | ||||
tonic = langopts.unstressed_wd2; /* more than one syllable, used secondary stress as the main stress */ | tonic = langopts.unstressed_wd2; /* more than one syllable, used secondary stress as the main stress */ | ||||
} | } | ||||
if(tonic >= 0) | |||||
max_stress = 0; | |||||
max_stress_posn = 0; | |||||
for(v=1; v<vowel_count; v++) | |||||
{ | { | ||||
/* find position of highest stress, and replace it by 'tonic' */ | |||||
max_stress = 0; | |||||
max_stress_posn = 0; | |||||
for(v=1; v<vowel_count; v++) | |||||
if(vowel_stress[v] >= max_stress) | |||||
{ | { | ||||
if(vowel_stress[v] >= max_stress) | |||||
{ | |||||
max_stress = vowel_stress[v]; | |||||
max_stress_posn = v; | |||||
} | |||||
max_stress = vowel_stress[v]; | |||||
max_stress_posn = v; | |||||
} | } | ||||
} | |||||
if(tonic >= 0) | |||||
{ | |||||
/* find position of highest stress, and replace it by 'tonic' */ | |||||
/* don't disturb an explicitly set stress by 'unstress-at-end' flag */ | /* don't disturb an explicitly set stress by 'unstress-at-end' flag */ | ||||
if((tonic > max_stress) || (max_stress <= 4)) | if((tonic > max_stress) || (max_stress <= 4)) | ||||
break; | break; | ||||
} | } | ||||
if(langopts.param[LOPT_IT_LENGTHEN] && (*p == phonLENGTHEN)) | |||||
if(vowel_stress[v] > max_stress) | |||||
{ | |||||
max_stress = vowel_stress[v]; | |||||
} | |||||
if((*p == phonLENGTHEN) && ((opt_length = langopts.param[LOPT_IT_LENGTHEN]) != 0)) | |||||
{ | { | ||||
// remove lengthen indicator from non-stressed syllables | // remove lengthen indicator from non-stressed syllables | ||||
int shorten=0; | |||||
if(opt_length & 0x10) | |||||
{ | |||||
// only allow lengthen indicator on the highest stress syllable in the word | |||||
if(v != max_stress_posn) | |||||
shorten = 1; | |||||
} | |||||
else | |||||
if(v_stress < 4) | if(v_stress < 4) | ||||
{ | |||||
// only allow lengthen indicator if stress >= 4. | |||||
shorten = 1; | |||||
} | |||||
if(((opt_length & 0xf)==2) && (v != (vowel_count - 2))) | |||||
shorten = 1; // LANG=Italian, remove lengthen indicator from non-penultimate syllables | |||||
if(shorten) | |||||
p++; | p++; | ||||
else | |||||
if((langopts.param[LOPT_IT_LENGTHEN]==2) && (v != (vowel_count - 2))) | |||||
p++; // LANG=Italian, remove lengthen indicator from non-penultimate syllables | |||||
} | } | ||||
if(vowel_stress[v] > max_stress) | |||||
{ | |||||
max_stress = vowel_stress[v]; | |||||
} | |||||
v++; | v++; | ||||
} | } | ||||
int letter_group; | int letter_group; | ||||
int distance_right; | int distance_right; | ||||
int distance_left; | int distance_left; | ||||
int lg_pts; | |||||
MatchRecord match; | MatchRecord match; | ||||
static MatchRecord best; | static MatchRecord best; | ||||
letter_group = *rule++ - 'A'; | letter_group = *rule++ - 'A'; | ||||
if(IsLetter(letter_w,letter_group)) | if(IsLetter(letter_w,letter_group)) | ||||
{ | { | ||||
match.points += (20-distance_right); | |||||
lg_pts = 20; | |||||
if(letter_group==2) | |||||
lg_pts = 19; // fewer points for C, general consonant | |||||
match.points += (lg_pts-distance_right); | |||||
post_ptr += letter_xbytes; | post_ptr += letter_xbytes; | ||||
} | } | ||||
else | else | ||||
letter_group = *rule++ - 'A'; | letter_group = *rule++ - 'A'; | ||||
if(IsLetter(letter_w,letter_group)) | if(IsLetter(letter_w,letter_group)) | ||||
{ | { | ||||
match.points += (20-distance_left); | |||||
lg_pts = 20; | |||||
if(letter_group==2) | |||||
lg_pts = 19; // fewer points for C, general consonant | |||||
match.points += (lg_pts-distance_left); | |||||
pre_ptr -= letter_xbytes; | pre_ptr -= letter_xbytes; | ||||
} | } | ||||
else | else |
{PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | {PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | ||||
20, 25, 34, 20, drops_0, 3, 3, 15, 25, 0}, | 20, 25, 34, 20, drops_0, 3, 3, 15, 25, 0}, | ||||
{PITCHdrop, 38, 1, PITCHdrop, 42,25, // exclamation | |||||
// {PITCHdrop, 38, 1, PITCHdrop, 42,25, // exclamation | |||||
// 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | |||||
{PITCHfall, 30, 5, PITCHfall, 30, 7, // statement | |||||
20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | ||||
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.24.04 08.May.07"; | |||||
const char *version_string = "1.24.06 10.May.07"; | |||||
const int version_phdata = 0x012201; | const int version_phdata = 0x012201; | ||||
int option_device_number = -1; | int option_device_number = -1; |
case L('h','i'): | case L('h','i'): | ||||
{ | { | ||||
static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f}; | static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f}; | ||||
static wchar_t replace_chars_hi[11] = {0x966,0x967,0x968,0x969,0x96a,0x96b,0x96c,0x96d,0x96e,0x96f,0}; // digits 0-9 | |||||
static wchar_t replacement_chars_hi[11] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0}; | |||||
static const wchar_t replace_chars_hi[11] = {0x966,0x967,0x968,0x969,0x96a,0x96b,0x96c,0x96d,0x96e,0x96f,0}; // digits 0-9 | |||||
static const unsigned int replacement_chars_hi[11] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0}; | |||||
static int stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; | static int stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; | ||||
static int stress_amps_hi[8] = {17,14, 20,20, 20,24, 24,22 }; | static int stress_amps_hi[8] = {17,14, 20,20, 20,24, 24,22 }; | ||||
{ | { | ||||
static int stress_amps_hu[8] = {16,16, 20,20, 20,24, 24,22 }; | static int stress_amps_hu[8] = {16,16, 20,20, 20,24, 24,22 }; | ||||
static int stress_lengths_hu[8] = {180,150, 200,180, 0,0, 230,270}; | static int stress_lengths_hu[8] = {180,150, 200,180, 0,0, 230,270}; | ||||
static wchar_t replace_chars_hu[] = {0xd4,0xf4,0xdb,0xfb,0}; | |||||
static wchar_t replacement_chars_hu[] = {0x150,0x151,0x170,0x171,0}; // allow o,u-circumflex for o,u-double-acute | |||||
static const wchar_t replace_chars_hu[] = {0xd4,0xf4,0xdb,0xfb,0}; | |||||
static const unsigned int replacement_chars_hu[] = {0x150,0x151,0x170,0x171,0}; // allow o,u-circumflex for o,u-double-acute | |||||
tr = new Translator(); | tr = new Translator(); | ||||
SetupTranslator(tr,stress_lengths_hu,stress_amps_hu); | SetupTranslator(tr,stress_lengths_hu,stress_amps_hu); | ||||
} | } | ||||
break; | break; | ||||
case L('i','s'): // Icelandic | |||||
{ | |||||
static int stress_amps_is[] = {16,16, 20,20, 20,24, 24,22 }; | |||||
static int stress_lengths_is[8] = {180,140, 200,200, 0,0, 240,260}; | |||||
static const wchar_t is_L08[] = {'c','f','h','k','p','s','t','x',0xfe,0}; // voiceless conants, including 'þ' | |||||
tr = new Translator(); | |||||
SetupTranslator(tr,stress_lengths_is,stress_amps_is); | |||||
tr->langopts.stress_rule = 1; | |||||
tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels | |||||
SetLetterBits(tr,4,"kpst"); // Letter group F | |||||
SetLetterBits(tr,3,"jvr"); // Letter group H | |||||
tr->letter_groups[8] = is_L08; | |||||
SetLetterVowel(tr,'y'); | |||||
tr->langopts.numbers = 0xe9; | |||||
tr->langopts.numbers2 = 0x2; | |||||
} | |||||
break; | |||||
case L('i','t'): // Italian | case L('i','t'): // Italian | ||||
{ | { | ||||
static int stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320}; | static int stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320}; | ||||
{ | { | ||||
static int stress_lengths_ro[8] = {170, 170, 180, 180, 0, 0, 240, 260}; | static int stress_lengths_ro[8] = {170, 170, 180, 180, 0, 0, 240, 260}; | ||||
static int stress_amps_ro[8] = {15,13, 18,18, 20,22, 22,22 }; | static int stress_amps_ro[8] = {15,13, 18,18, 20,22, 22,22 }; | ||||
static wchar_t replace_chars_ro[5] = {0x218,0x219,0x21a,0x21b,0}; | |||||
static wchar_t replacement_chars_ro[5] = {0x15e,0x15f,0x162,0x163,0}; // replace s-comma, t-comma by s-cedilla, t-cedilla | |||||
static const wchar_t replace_chars_ro[5] = {0x218,0x219,0x21a,0x21b,0}; | |||||
static const unsigned int replacement_chars_ro[5] = {0x15e,0x15f,0x162,0x163,0}; // replace s-comma, t-comma by s-cedilla, t-cedilla | |||||
tr = new Translator(); | tr = new Translator(); | ||||
SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | ||||
case L('c','s'): // Czech | case L('c','s'): // Czech | ||||
case L('h','r'): // Croatian | case L('h','r'): // Croatian | ||||
{ | { | ||||
static const wchar_t replace_chars_hr[] = | |||||
{0x430,0x431,0x446,0x45b,0x447,0x434,0x452,0x45f, | |||||
0x435,0x444,0x433,0x445,0x438,0x458,0x43a,0x43b, | |||||
0x459,0x43c,0x43d,0x45a,0x43e,0x43f,0x440,0x441, | |||||
0x448,0x442,0x443,0x432,0x437,0x436, | |||||
0x453,0x455,0x45c,0}; // ѓ ѕ ќ | |||||
static const unsigned int replacement_chars_hr[] = | |||||
{'a','b','c',0x107,0x10d,'d',0x111,'d'+(0x17e<<16), | |||||
'e','f','g','h','i','j','k','l', | |||||
'l'+('j'<<16),'m','n','n'+('j'<<16),'o','p','r','s', | |||||
0x161,'t','u','v','z',0x17e, | |||||
0x111,'d'+('z'<<16),0x107,0}; | |||||
static int stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; | static int stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; | ||||
static int stress_lengths_sk[8] = {180,180, 200,180, 0,0, 220,230}; | |||||
static char *sk_voiced = "bdgjlmnrvwzaeiouy"; | |||||
// static int stress_lengths_sk[8] = {180,180, 200,200, 0,0, 210,220}; | |||||
static int stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||||
static char *sk_voiced = "bdgjlmnrvwzaeiouy"; | |||||
tr = new Translator(); | tr = new Translator(); | ||||
SetupTranslator(tr,stress_lengths_sk,stress_amps_sk); | SetupTranslator(tr,stress_lengths_sk,stress_amps_sk); | ||||
tr->langopts.numbers = 0x1c0d + 0x84000; | tr->langopts.numbers = 0x1c0d + 0x84000; | ||||
if(name2 == L('h','r')) | if(name2 == L('h','r')) | ||||
{ | |||||
tr->langopts.numbers2 = 0xa; // variant numbers before thousands,milliards | tr->langopts.numbers2 = 0xa; // variant numbers before thousands,milliards | ||||
tr->langopts.replace_chars = replace_chars_hr; | |||||
tr->langopts.replacement_chars = replacement_chars_hr; | |||||
} | |||||
if(name2 == L('c','s')) | if(name2 == L('c','s')) | ||||
tr->langopts.numbers2 = 0x8; // variant numbers before milliards | tr->langopts.numbers2 = 0x8; // variant numbers before milliards | ||||
} | } | ||||
int Translator_Afrikaans::TranslateChar(char *ptr, int prev_in, int c, int next_in) | |||||
{//=============================================================================== | |||||
int Translator_Afrikaans::TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert) | |||||
{//============================================================================================= | |||||
// look for 'n and replace by a special character (unicode: schwa) | // look for 'n and replace by a special character (unicode: schwa) | ||||
if(!iswalpha(prev_in)) | if(!iswalpha(prev_in)) |
public: | public: | ||||
Translator_Afrikaans(); | Translator_Afrikaans(); | ||||
private: | private: | ||||
int TranslateChar(char *ptr, int prev_in, int c, int next_in); | |||||
int TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert); | |||||
}; // end of class Translator_Afrikaans | }; // end of class Translator_Afrikaans | ||||
SetLetterBits(this,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w | SetLetterBits(this,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w | ||||
SetLetterBits(this,2,"bcdfghjklmnpqrstvwxz"); // C all consonants | SetLetterBits(this,2,"bcdfghjklmnpqrstvwxz"); // C all consonants | ||||
SetLetterBits(this,3,"hlmnr"); // H 'soft' consonants | SetLetterBits(this,3,"hlmnr"); // H 'soft' consonants | ||||
SetLetterBits(this,4,"cfhkpqstx"); // F voiceless consonants | |||||
SetLetterBits(this,5,"bdgjlmnrvwyz"); // G voiced | SetLetterBits(this,5,"bdgjlmnrvwyz"); // G voiced | ||||
SetLetterBits(this,6,"eiy"); // Letter group Y, front vowels | SetLetterBits(this,6,"eiy"); // Letter group Y, front vowels | ||||
SetLetterBits(this,7,"aeiouy"); // vowels, including y | SetLetterBits(this,7,"aeiouy"); // vowels, including y | ||||
int Translator::TranslateChar(char *ptr, int prev_in, int c, int next_in) | |||||
{//====================================================================== | |||||
int Translator::TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert) | |||||
{//=================================================================================== | |||||
// To allow language specific examination and replacement of characters | // To allow language specific examination and replacement of characters | ||||
const wchar_t *p; | const wchar_t *p; | ||||
unsigned int new_c; | |||||
if(c == 0) return(0); | |||||
if(langopts.replace_chars != NULL) | if(langopts.replace_chars != NULL) | ||||
{ | { | ||||
// there is a list of character codes to be substituted with alternative codes | // there is a list of character codes to be substituted with alternative codes | ||||
if((p = wcschr(langopts.replace_chars,c)) != NULL) | if((p = wcschr(langopts.replace_chars,c)) != NULL) | ||||
{ | { | ||||
return(langopts.replacement_chars[p - langopts.replace_chars]); | |||||
new_c = langopts.replacement_chars[p - langopts.replace_chars]; | |||||
if(new_c & 0xffe00000) | |||||
{ | |||||
// there is a second character to be inserted | |||||
*insert = (new_c >> 16); | |||||
new_c &= 0xffff; | |||||
} | |||||
return(new_c); | |||||
} | } | ||||
} | } | ||||
return(c); | return(c); | ||||
int prev_out2; | int prev_out2; | ||||
int prev_in2=0; | int prev_in2=0; | ||||
int next_in; | int next_in; | ||||
int char_inserted=0; | |||||
int clause_pause; | int clause_pause; | ||||
int pre_pause=0; | int pre_pause=0; | ||||
int pre_pause_add=0; | int pre_pause_add=0; | ||||
utf8_in(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; | utf8_in(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; | ||||
} | } | ||||
prev_source_index = source_index; | prev_source_index = source_index; | ||||
source_index += utf8_in(&cc,&source[source_index],0); // cc = source[source_index++]; | |||||
c = cc; | |||||
if(char_inserted) | |||||
{ | |||||
c = char_inserted; | |||||
char_inserted = 0; | |||||
} | |||||
else | |||||
{ | |||||
source_index += utf8_in(&cc,&source[source_index],0); // cc = source[source_index++]; | |||||
c = cc; | |||||
} | |||||
utf8_in(&next_in,&source[source_index],0); | utf8_in(&next_in,&source[source_index],0); | ||||
if((c == CTRL_EMBEDDED) || (c == ctrl_embedded)) | if((c == CTRL_EMBEDDED) || (c == ctrl_embedded)) | ||||
{ | { | ||||
// start of embedded command in the text | // start of embedded command in the text | ||||
c = '\''; | c = '\''; | ||||
} | } | ||||
c = TranslateChar(&source[source_index],prev_in,c,next_in); // optional language specific function | |||||
c = TranslateChar(&source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function | |||||
if(char_inserted) | |||||
next_in = char_inserted; | |||||
if(!IsAlpha(c) && !iswspace(c) && (c != '\'')) | if(!IsAlpha(c) && !iswspace(c) && (c != '\'')) | ||||
{ | { |
#define N_LOPTS 12 | #define N_LOPTS 12 | ||||
#define LOPT_DIERESES 1 | #define LOPT_DIERESES 1 | ||||
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables | // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables | ||||
// bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word | |||||
#define LOPT_IT_LENGTHEN 2 | #define LOPT_IT_LENGTHEN 2 | ||||
// 1=german | // 1=german | ||||
#define LOPT_PREFIXES 3 | #define LOPT_PREFIXES 3 | ||||
char tone_numbers; | char tone_numbers; | ||||
char ideographs; // treat as separate words | char ideographs; // treat as separate words | ||||
int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | ||||
const wchar_t *replace_chars; // characters to be substitutes | |||||
const wchar_t *replacement_chars; // substitutes for replace_chars | |||||
const wchar_t *replace_chars; // characters to be substitutes | |||||
const unsigned int *replacement_chars; // substitutes for replace_chars | |||||
} LANGUAGE_OPTIONS; | } LANGUAGE_OPTIONS; | ||||
virtual int Unpronouncable(char *word); | virtual int Unpronouncable(char *word); | ||||
virtual void SetWordStress(char *output, unsigned int dictionary_flags, int tonic, int prev_stress); | virtual void SetWordStress(char *output, unsigned int dictionary_flags, int tonic, int prev_stress); | ||||
virtual int RemoveEnding(char *word, int end_type, char *word_copy); | virtual int RemoveEnding(char *word, int end_type, char *word_copy); | ||||
virtual int TranslateChar(char *ptr, int prev_in, int c, int next_in); | |||||
virtual int TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert); | |||||
virtual int TranslateNumber(char *word1, char *ph_out, unsigned int *flags, int wflags); | virtual int TranslateNumber(char *word1, char *ph_out, unsigned int *flags, int wflags); | ||||
virtual int ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch); | virtual int ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch); | ||||
{NULL, 0 }}; | {NULL, 0 }}; | ||||
//int tone_points[10] = {250,140, 1200,110, -1,0, -1,0, -1,0}; | //int tone_points[10] = {250,140, 1200,110, -1,0, -1,0, -1,0}; | ||||
int tone_points[10] = {600,180, 1200,140, 2000,110, 3000,110, -1,0}; | |||||
int tone_points[10] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; | |||||
// limit the rate of change for each formant number | // limit the rate of change for each formant number | ||||
//static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate | //static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate |