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
@@ -980,6 +980,7 @@ iconbar aIk0nbA@ | |||
imagine I2madZI2n | |||
impedance I2mpi:d@ns | |||
imperative I2mpEr@tIv | |||
impi $1 | |||
imprecise I2mprIs'aIs | |||
inappropriate ,Ina2proUpri@t | |||
incense Ins'Ens $verb | |||
@@ -1461,6 +1462,7 @@ rearm ri:'A@m | |||
rebel rI2bEl $verb | |||
recall ri:kO:l | |||
recall $2 $verb | |||
recalled rI2kO:ld | |||
recess ri:sEs | |||
recipe rEsIpi: | |||
reciprocal rI2sIpr@k@L | |||
@@ -1558,7 +1560,6 @@ saline seIlaIn | |||
san ,san | |||
sardine $2 | |||
satan seIt@n | |||
satellite sat@laIt | |||
saucepan sO:sp@n | |||
saudi saUdI2 | |||
says sEz | |||
@@ -1906,6 +1907,7 @@ Cheadle tSi:d@L | |||
Cheshire tSES3 | |||
Chiswick tSIzIk | |||
Dolgellau d0lg'EClaI | |||
Dover doUv3 | |||
Dumfries dVmfr'i:s | |||
Dyfed d'VvId | |||
Edinburgh EdInb%Vr@ | |||
@@ -2436,6 +2438,7 @@ might ,maIt $verbf $strend2 $only | |||
(might have to) ,maIth'avt@5 $verbf $atend | |||
have %hav $pastf $only | |||
haves havz | |||
(have been) %hav%bIn $pastf | |||
(have to) havtU $atend | |||
has %ha2z $pastf $only |
@@ -967,6 +967,7 @@ | |||
_it_separ) ate (_ @t | |||
par) ates (_ eIt|s | |||
@) ated (++_ eItId | |||
_s) atel (l at@ | |||
@) ati (_ 'A:tI | |||
at (im_ 'eIt | |||
@) ating (++_ eItIN | |||
@@ -2603,6 +2604,7 @@ | |||
ise (_ aIz | |||
iser (_ aIz3 | |||
@) ism (_$3de Iz@m | |||
an) ism (_$3d Iz@m | |||
@iB) ism (_$3d Iz@m | |||
is (er+_ aIz | |||
iz (er_ aIz | |||
@@ -3682,6 +3684,7 @@ | |||
ch) or (d O@ | |||
l) or (d O@ | |||
_m) or O@ | |||
_m) orr 0r | |||
_m) ore o@ | |||
nd) or (_ 3 | |||
nt) or (_ o@ | |||
@@ -5040,8 +5043,8 @@ | |||
'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@_ | |||
@@ -5063,8 +5066,7 @@ | |||
ξ ks'aI_ | |||
ο oUm'aIkr0n_ | |||
.group 0xcf | |||
// $group (++ _^_EL | |||
.group 0xcf // Greek letters | |||
π p'aI_ | |||
ρ r'oU_ |
@@ -123,6 +123,11 @@ | |||
ó o: | |||
ú u: | |||
ä _^_DE // use German voice | |||
ö _^_DE | |||
ü _^_DE | |||
ß _^_DE | |||
$ dol&r | |||
. totSk& | |||
@@ -143,3 +148,42 @@ | |||
= (== | |||
=) = (= | |||
==) = (_ _:: | |||
.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 | |||
@@ -1,4 +1,4 @@ | |||
| |||
// This file in UTF8 encoded | |||
// Options | |||
@@ -93,32 +93,32 @@ _¿ ,iNtex,ogas,&U~,iNvertS'id& | |||
_5 s'iNku | |||
?1_6 s'eIS | |||
?2_6 s'eIs | |||
?1_7 s'Et | |||
?1_7 s'Ety | |||
?2_7 s'EtSi | |||
_8 'oItu | |||
?1_9 n'Ov | |||
?1_9 n'Ovy | |||
?2_9 n'Ovi | |||
?1_10 d'ES | |||
?2_10 d'Ez | |||
?1_11 'oNz | |||
?1_11 'oNzy | |||
?2_11 'oNzi | |||
?1_12 d'oz | |||
?1_12 d'ozy | |||
?2_12 d'ozi | |||
?1_13 t:r'ez | |||
?1_13 t:r'ezy | |||
?2_13 t@-*'ezi | |||
?1_14 k&t'Orz | |||
?1_14 k&t'orzy | |||
?2_14 kat'Orzi | |||
?1_15 k'iNz | |||
?1_15 k'iNzy | |||
?2_15 k'iNzi | |||
?1_16 dyz&s'eiS | |||
?2_16 d,ezes'eIs | |||
?1_17 dyz&s'Et | |||
?1_17 dyz&s'Ety | |||
?2_17 d,ezes'EtSi | |||
?1_18 dyz'Oitu | |||
?2_18 dez'oItu | |||
?1_19 dyz&n'Ov | |||
?1_19 dyz&n'Ovy | |||
?2_19 dezen'Ovi | |||
?1_2X v'iNt | |||
?1_2X v'iNty | |||
?2_2X v'iNtSi | |||
?1_3X tr'iNt& | |||
?2_3X t@-*'iNt& | |||
@@ -130,7 +130,8 @@ _5X siNkw'eINt& | |||
?1_7X syt'eINt& | |||
?2_7X set'eINt& | |||
_8X oIt'eINt& | |||
_9X nov'eINt& | |||
?1 _9X nuv'eINt& | |||
?2 _9X nov'eINt& | |||
_1C0 s'eIN | |||
?1_0C s'eINtuS | |||
?2_0C s'eINtuz | |||
@@ -163,25 +164,42 @@ _0Z3 mil'Ezim& // 1000ths | |||
// ABBREVIATIONS | |||
//************** | |||
aapp $abbrev | |||
abadv $abbrev | |||
abc $abbrev | |||
a.c 'as'e | |||
adsl $abbrev | |||
ae $abbrev | |||
aids $abbrev | |||
apedv $abbrev | |||
?1 apedv ,a,pe,,E,de've | |||
avc $abbrev | |||
bios b'i,OS | |||
d.c d,es'e | |||
cne $abbrev | |||
cpu $abbrev | |||
//?1 cpu ,se,pe'u | |||
?1 cpuc ,se,pe,u'se | |||
cpuc $abbrev | |||
dpoc $abbrev | |||
ecg $abbrev | |||
edp $abbrev | |||
?1 etc ,ets'Et:r& | |||
?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 | |||
oms $abbrev | |||
omt $abbrev | |||
osi $abbrev | |||
?1 sa ,Esj'a | |||
?1 sos ,Esj,O'Es | |||
ue $abbrev | |||
unts $abbrev | |||
unts $abbrev | |||
?1 usb ,u,Esy'be | |||
?2 usb $abbrev | |||
usb $abbrev | |||
// articles | |||
@@ -539,66 +557,114 @@ era 'Er& | |||
abacaxi abakaSi | |||
axé aSE | |||
elixir eliSir | |||
?1 fixe fiSe | |||
?1 fixe f'iSy | |||
lixo l'iSu | |||
roxo x'oSu | |||
// foreign words | |||
?1 alt 'alt | |||
?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 eyes w'aIz | |||
?1 eyes _^_EN | |||
?1 gmail g,em'eIl | |||
?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 | |||
?1 line l'aIn | |||
?1 line _^_EN | |||
layout l'eI,aUt | |||
?1 lock _^_EN | |||
?1 mail meIl | |||
?1 mail _^_EN | |||
?2 mail m'eja | |||
?1 menu mEnU | |||
?1 menu menu | |||
?1 next _^_EN | |||
ok Ok'eI | |||
?1 pause p'au:z | |||
?1 page p'eIdZ | |||
?1 page _^_EN | |||
?1 scanner _^_EN | |||
?1 shift S'ift | |||
?1 scroll _^_EN | |||
site s'aIt | |||
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 yes j'Es | |||
?1 yahoo _^_EN | |||
?1 yes _^_EN | |||
// common person names | |||
alan 'al@n | |||
louis _^_FR | |||
// 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 | |||
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 linux l,in'uks | |||
?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 | |||
?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 setup _^_EN | |||
?1 scout _^_EN // Nero Scout | |||
?1 skype _^_EN | |||
slackware sl'akwe@ | |||
?1 smart _^_EN // nero StartSmart | |||
speak spi:k | |||
suse z'u:ts@ | |||
?1 start _^_EN // nero StartSmart | |||
?1 time _^_EN // nero show time | |||
ubuntu ub'untu | |||
?1 unix ,u:n'iks | |||
?2 unix j'u:niks | |||
?1 windows _^_EN | |||
?1 WinRAR _^_EN | |||
@@ -650,3 +716,4 @@ vogel f'o:g@l | |||
volkmann f'Olkman | |||
@@ -1,4 +1,4 @@ | |||
// translation rules Brazilian | |||
// translation rules Brazilian | |||
// This file is UTF-8 encoded | |||
// Options | |||
@@ -161,17 +161,17 @@ | |||
?1 C) ecç 'E's // eg: selecção, etc... | |||
?1 C) e (ã i // leão, panteão, 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 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 e (l_ ,E // eg: possível, manuel, etc... | |||
@@ -218,11 +218,11 @@ | |||
gu (Y g | |||
?1 guen (C gw'eIN // aguenta, etc. | |||
?1 n) gu (A gw // eg: língua, etc. | |||
?1 gu (ém_ g // eg: alguém, ninguém, etc... | |||
.group h | |||
?1 _) h (_ &g'a | |||
?2 _) h (_ ag'a | |||
_) h (_ ag'a | |||
h // silent | |||
@@ -319,7 +319,7 @@ | |||
n n | |||
n (n | |||
nh n^ | |||
?1 A) nn n //drop “n” in European Portuguese (eg: connosco). | |||
?1 A) nn n //drop “n” (eg: connosco). | |||
.group o | |||
@@ -341,11 +341,10 @@ | |||
?2 ol (K Ow | |||
?2 olh olj | |||
?1 om (_ 'om | |||
?2 om (_ oN | |||
om (_ oN | |||
o (ma_ o | |||
?1 om (C 'om | |||
?2 om (C om | |||
om (C om | |||
on (K oN | |||
o (na_ o | |||
onh on^ | |||
@@ -409,7 +408,7 @@ | |||
?1 A) que (nA_ ke // pequeno, etc. | |||
?1 C) quê (_ ke // porquê, 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 _) quind kuind // quindecágono, etc. | |||
?1 tran) qui kui // tranquilo, etc. | |||
@@ -606,3 +605,4 @@ | |||
@@ -285,7 +285,7 @@ | |||
.group л | |||
_) л (_ El^ | |||
л (_ l^ | |||
// л (_ l^ // rule removed | |||
л (Y l^ | |||
л l | |||
@@ -8,53 +8,65 @@ | |||
a (vb A: | |||
a (vd A: | |||
a (va a | |||
a (rt_ A: | |||
a (rt_ A: | |||
a (vg 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 (_ a | |||
&) 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 | |||
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: | |||
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 | |||
b b | |||
@@ -78,7 +90,11 @@ | |||
.group 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 | |||
e e: | |||
@@ -91,7 +107,9 @@ | |||
d) e (lv e: | |||
d) e (ln e: | |||
d) e (lt e: | |||
d) e (bat E | |||
s) e (kund E | |||
ch) e (f E: | |||
e (ta E | |||
e (x E | |||
&) e (_ E | |||
@@ -113,6 +131,9 @@ | |||
nyh) e (t e: | |||
r) e (sul E | |||
r) e (sur E | |||
r) e (dak E | |||
v) e (ta e: | |||
r) e (ta e: | |||
pr) e (n E | |||
_) e (tik E | |||
r) e (ce E | |||
@@ -140,6 +161,7 @@ espeak _^_EN | |||
h h | |||
h (h | |||
hj j | |||
hög hY:g | |||
heading _^_EN | |||
.group i | |||
@@ -172,9 +194,9 @@ espeak _^_EN | |||
_) k (ö S; | |||
k (öp S; | |||
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 | |||
l l | |||
@@ -185,12 +207,17 @@ espeak _^_EN | |||
.group 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 | |||
motorer m'Otu:rEr | |||
model mOd'El | |||
musik mu-s'i:k | |||
.group n | |||
n n | |||
@@ -198,7 +225,8 @@ espeak _^_EN | |||
ng N | |||
n (k N | |||
network _^_EN | |||
normal nOrmA:l | |||
normal nOrmA:l | |||
natur n'at'u-r | |||
.group o | |||
o u: | |||
@@ -229,11 +257,14 @@ espeak _^_EN | |||
och 'Ok | |||
k) o (ns O | |||
pr) o (cent O | |||
p) o (lis O | |||
p) o (pu O | |||
.group p | |||
p p | |||
p (p | |||
paket pak'e:t | |||
parentes par@nt,e:s | |||
.group q | |||
q k | |||
@@ -295,6 +326,7 @@ espeak _^_EN | |||
u (n 8 | |||
u (tl u- | |||
r) u (m_ 8: | |||
utmärk 'u-tm@rk | |||
.group v | |||
v v | |||
@@ -322,7 +354,8 @@ espeak _^_EN | |||
å o: | |||
å (CC O | |||
tr) å (d 'o: | |||
v) å (rt 'o: | |||
v) å (r 'o: | |||
h) å (r 'o: | |||
.group ä | |||
ä E: |
@@ -20,7 +20,7 @@ | |||
pl 17 102 | |||
sk 22 117 | |||
cs 6 118 | |||
hr 15 121 | |||
hr 16 121 | |||
ru 36 119 | |||
it 28 111 | |||
es 7 111 | |||
@@ -460,7 +460,7 @@ | |||
1 vowel/oe_4 sv | |||
2 vowel/o_mid hu ro | |||
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 | |||
1 vowel/oo_3 af | |||
2 vowel/oo_4 hi pl |
@@ -46,4 +46,6 @@ | |||
0 n^ NULL 0 N | |||
0 j NULL 0 y | |||
0 S NULL 0 sh | |||
0 s. NULL 0 sh | |||
@@ -19,6 +19,7 @@ | |||
0 S; NULL 0 C | |||
0 sx NULL 0 S | |||
0 S NULL 0 rs | |||
0 s. NULL 0 rs | |||
0 u- NULL 0 }: | |||
0 Y: NULL 0 2: | |||
0 y NULL 0 Y |
@@ -13,7 +13,7 @@ endphoneme | |||
phoneme a | |||
vowel starttype (a) endtype (a) | |||
length 140 | |||
length 150 | |||
formants vowel/a | |||
reduceto & 4 | |||
endphoneme | |||
@@ -35,14 +35,14 @@ endphoneme | |||
phoneme E | |||
vowel starttype (e) endtype (e) | |||
length 130 | |||
length 140 | |||
formants vowel/e_mid | |||
endphoneme | |||
phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 130 | |||
length 140 | |||
formants vowel/e | |||
endphoneme | |||
@@ -64,6 +64,13 @@ phoneme I | |||
endphoneme | |||
phoneme o | |||
vowel starttype (o) endtype (o) | |||
length 140 | |||
formants vowel/oo_1 | |||
endphoneme | |||
phoneme u | |||
vowel starttype (u) endtype (u) | |||
length 130 |
@@ -1,6 +1,6 @@ | |||
phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 130 | |||
length 120 | |||
formants vowel/e_mid | |||
endphoneme | |||
@@ -12,7 +12,7 @@ endphoneme | |||
phoneme o | |||
vowel starttype (o) endtype (o) | |||
length 130 | |||
length 120 | |||
formants vowel/oo_2 | |||
endphoneme | |||
@@ -1,39 +1,39 @@ | |||
phoneme i | |||
vowel starttype (i) endtype (i) | |||
length 120 | |||
length 110 | |||
formants vowel/ii_3 | |||
linkout ; | |||
endphoneme | |||
phoneme i: | |||
vowel starttype (i) endtype (i) | |||
length 230 | |||
length 260 | |||
formants vowel/i_3 | |||
linkout ; | |||
endphoneme | |||
phoneme & | |||
vowel starttype (e) endtype (e) | |||
length 130 | |||
length 120 | |||
formants vowel/ee_6 | |||
endphoneme | |||
phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 130 | |||
length 120 | |||
formants vowel/e_mid2 | |||
endphoneme | |||
phoneme e: | |||
vowel starttype (e) endtype (e) | |||
length 280 | |||
length 290 | |||
formants vowel/e_mid | |||
endphoneme | |||
phoneme a | |||
vowel starttype (a) endtype (a) | |||
length 140 | |||
length 120 | |||
formants vowel/a | |||
endphoneme | |||
@@ -45,19 +45,19 @@ endphoneme | |||
phoneme o | |||
vowel starttype (o) endtype (o) | |||
length 130 | |||
length 120 | |||
formants vowel/oo_1 | |||
endphoneme | |||
phoneme o: | |||
vowel starttype (o) endtype (o) | |||
length 280 | |||
length 290 | |||
formants vowel/oo_1 | |||
endphoneme | |||
phoneme u | |||
vowel starttype (u) endtype (u) | |||
length 130 | |||
length 110 | |||
formants vowel/u_2 | |||
endphoneme | |||
@@ -1174,7 +1174,6 @@ include ph_swedish | |||
phonemetable no base | |||
include ph_norwegian | |||
phonemetable vi base | |||
include ph_vi | |||
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -11,7 +11,7 @@ U 407 1500 2160 392 1500 2160 | |||
a 784 1180 2680 768 1220 2680 | |||
a2 760 1420 2600 736 1380 2540 | |||
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 520 2000 2540 520 2000 2540 | |||
0 566 890 2641 566 890 2641 | |||
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
VR 648 1180 2595 640 1140 2460 | |||
A~ 640 1120 2640 640 1120 2640 | |||
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 | |||
y: 280 1720 2340 280 1720 2340 | |||
Y: 448 1520 2420 463 1520 2400 |
@@ -12,8 +12,8 @@ u 320 740 2400 320 740 2400 | |||
u1 344 800 2360 344 800 2360 | |||
U 368 800 2660 368 800 2660 | |||
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 | |||
ei 547 1855 2536 320 2300 2740 | |||
Yi 448 1520 2420 355 2222 2720 |
@@ -4,16 +4,16 @@ a 925 1342 2700 925 1342 2700 | |||
e 464 1980 2520 464 1980 2520 | |||
E 647 1778 2530 647 1778 2530 | |||
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 | |||
y 272 1820 2280 272 1800 2260 | |||
Y 448 1520 2420 463 1520 2400 | |||
W 525 1320 2200 525 1320 2200 | |||
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 | |||
O~ 512 880 2624 512 880 2620 | |||
O~ 381 700 2960 381 700 2960 | |||
W~ 694 1360 2624 694 1360 2624 | |||
I 280 2280 2820 200 2398 2820 | |||
U 320 860 2360 320 860 2360 |
@@ -4,16 +4,16 @@ a 925 1342 2700 925 1342 2700 | |||
e 464 1980 2520 464 1980 2520 | |||
E 584 1820 2560 584 1820 2560 | |||
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 | |||
y 272 1820 2280 272 1800 2260 | |||
Y 448 1520 2420 463 1520 2400 | |||
W 525 1320 2200 525 1320 2200 | |||
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 | |||
O~ 512 880 2624 512 880 2620 | |||
O~ 381 700 2960 381 700 2960 | |||
W~ 694 1360 2624 694 1360 2624 | |||
I 384 2030 2610 384 2030 2610 | |||
U 368 880 2440 368 900 2440 |
@@ -26,5 +26,5 @@ U 368 880 2440 368 900 2440 | |||
u: 320 740 2400 320 740 2400 | |||
u2: 320 860 2360 320 860 2360 | |||
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 |
@@ -24,3 +24,4 @@ ja 485 1672 2340 795 1122 2580 | |||
V# 659 1278 2583 659 1278 2583 | |||
Y 452 1709 2460 452 1709 2460 | |||
a 925 1320 2700 896 1340 2660 | |||
a# 658 1408 2460 658 1408 2460 |
@@ -7,7 +7,7 @@ e 464 1980 2520 464 1980 2520 | |||
i 296 2220 2820 200 2398 2820 | |||
O 664 1000 2731 664 1020 2731 | |||
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 | |||
@: 686 1280 2595 686 1280 2595 | |||
aI 672 1460 2430 400 2000 2700 |
@@ -876,6 +876,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
int final_ph; | |||
int mnem; | |||
int post_tonic; | |||
int opt_length; | |||
unsigned char vowel_stress[N_WORD_PHONEMES/2]; | |||
char syllable_type[N_WORD_PHONEMES/2]; | |||
@@ -1143,19 +1144,20 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
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 */ | |||
if((tonic > max_stress) || (max_stress <= 4)) | |||
@@ -1303,20 +1305,36 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
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 | |||
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) | |||
{ | |||
// 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++; | |||
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++; | |||
} | |||
@@ -1553,6 +1571,7 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
int letter_group; | |||
int distance_right; | |||
int distance_left; | |||
int lg_pts; | |||
MatchRecord match; | |||
static MatchRecord best; | |||
@@ -1682,7 +1701,10 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
letter_group = *rule++ - 'A'; | |||
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; | |||
} | |||
else | |||
@@ -1830,7 +1852,10 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
letter_group = *rule++ - 'A'; | |||
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; | |||
} | |||
else |
@@ -267,7 +267,9 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = { | |||
{PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | |||
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}, | |||
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; |
@@ -241,8 +241,8 @@ Translator *SelectTranslator(const char *name) | |||
case L('h','i'): | |||
{ | |||
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_amps_hi[8] = {17,14, 20,20, 20,24, 24,22 }; | |||
@@ -269,8 +269,8 @@ Translator *SelectTranslator(const char *name) | |||
{ | |||
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 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(); | |||
SetupTranslator(tr,stress_lengths_hu,stress_amps_hu); | |||
@@ -290,6 +290,26 @@ Translator *SelectTranslator(const char *name) | |||
} | |||
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 | |||
{ | |||
static int stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320}; | |||
@@ -378,8 +398,8 @@ Translator *SelectTranslator(const char *name) | |||
{ | |||
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 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(); | |||
SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | |||
@@ -403,9 +423,24 @@ Translator *SelectTranslator(const char *name) | |||
case L('c','s'): // Czech | |||
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_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(); | |||
SetupTranslator(tr,stress_lengths_sk,stress_amps_sk); | |||
@@ -420,7 +455,12 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.numbers = 0x1c0d + 0x84000; | |||
if(name2 == L('h','r')) | |||
{ | |||
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')) | |||
tr->langopts.numbers2 = 0x8; // variant numbers before milliards | |||
@@ -835,8 +875,8 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator() | |||
} | |||
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) | |||
if(!iswalpha(prev_in)) |
@@ -51,7 +51,7 @@ class Translator_Afrikaans: public Translator | |||
public: | |||
Translator_Afrikaans(); | |||
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 | |||
@@ -393,7 +393,7 @@ Translator::Translator() | |||
SetLetterBits(this,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w | |||
SetLetterBits(this,2,"bcdfghjklmnpqrstvwxz"); // C all consonants | |||
SetLetterBits(this,3,"hlmnr"); // H 'soft' consonants | |||
SetLetterBits(this,4,"cfhkpqstx"); // F voiceless consonants | |||
SetLetterBits(this,5,"bdgjlmnrvwyz"); // G voiced | |||
SetLetterBits(this,6,"eiy"); // Letter group Y, front vowels | |||
SetLetterBits(this,7,"aeiouy"); // vowels, including y | |||
@@ -1470,18 +1470,28 @@ static int EmbeddedCommand(unsigned int &source_index) | |||
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 | |||
const wchar_t *p; | |||
unsigned int new_c; | |||
if(c == 0) return(0); | |||
if(langopts.replace_chars != NULL) | |||
{ | |||
// there is a list of character codes to be substituted with alternative codes | |||
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); | |||
@@ -1500,6 +1510,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
int prev_out2; | |||
int prev_in2=0; | |||
int next_in; | |||
int char_inserted=0; | |||
int clause_pause; | |||
int pre_pause=0; | |||
int pre_pause_add=0; | |||
@@ -1626,9 +1637,19 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
utf8_in(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; | |||
} | |||
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); | |||
if((c == CTRL_EMBEDDED) || (c == ctrl_embedded)) | |||
{ | |||
// start of embedded command in the text | |||
@@ -1705,7 +1726,9 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) | |||
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 != '\'')) | |||
{ |
@@ -212,6 +212,7 @@ extern const int param_defaults[N_SPEECH_PARAM]; | |||
#define N_LOPTS 12 | |||
#define LOPT_DIERESES 1 | |||
// 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 | |||
// 1=german | |||
#define LOPT_PREFIXES 3 | |||
@@ -295,8 +296,8 @@ typedef struct { | |||
char tone_numbers; | |||
char ideographs; // treat as separate words | |||
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; | |||
@@ -392,7 +393,7 @@ protected: | |||
virtual int Unpronouncable(char *word); | |||
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 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 ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch); | |||
@@ -48,7 +48,7 @@ MNEM_TAB genders [] = { | |||
{NULL, 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 | |||
//static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate |