Browse Source

Lang=hr, transliterate Cyrillic characters to Latin using TranslateChar().

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-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
e24c5b339d
52 changed files with 446 additions and 196 deletions
  1. 4
    1
      dictsource/en_list
  2. 6
    4
      dictsource/en_rules
  3. 44
    0
      dictsource/hr_rules
  4. 107
    40
      dictsource/pt_list
  5. 18
    18
      dictsource/pt_rules
  6. 1
    1
      dictsource/ru_rules
  7. 85
    52
      dictsource/sv_rules
  8. 2
    2
      phsource/compile_report
  9. 2
    0
      phsource/mbrola/in1
  10. 1
    0
      phsource/mbrola/sv
  11. 10
    3
      phsource/ph_croatian
  12. 2
    2
      phsource/ph_czech
  13. 9
    9
      phsource/ph_slovak
  14. 0
    1
      phsource/phonemes
  15. BIN
      phsource/vdiph/ai_7
  16. BIN
      phsource/vdiph/ei
  17. BIN
      phsource/vdiph/vowelchart.png
  18. BIN
      phsource/vdiph2/vowelchart.png
  19. BIN
      phsource/vowel/e_e
  20. BIN
      phsource/vowel/vowelchart.png
  21. 1
    1
      phsource/vowelcharts/en
  22. BIN
      phsource/vowelcharts/en.png
  23. 1
    1
      phsource/vowelcharts/en_n
  24. BIN
      phsource/vowelcharts/en_n.png
  25. 1
    1
      phsource/vowelcharts/en_rp
  26. BIN
      phsource/vowelcharts/en_rp.png
  27. 2
    2
      phsource/vowelcharts/en_sc
  28. BIN
      phsource/vowelcharts/en_sc.png
  29. 1
    1
      phsource/vowelcharts/en_us
  30. BIN
      phsource/vowelcharts/en_us.png
  31. 1
    1
      phsource/vowelcharts/en_wm
  32. BIN
      phsource/vowelcharts/en_wm.png
  33. 2
    2
      phsource/vowelcharts/fi
  34. BIN
      phsource/vowelcharts/fi.png
  35. 4
    4
      phsource/vowelcharts/fr
  36. BIN
      phsource/vowelcharts/fr.png
  37. 4
    4
      phsource/vowelcharts/fr_ca
  38. BIN
      phsource/vowelcharts/fr_ca.png
  39. 1
    1
      phsource/vowelcharts/hi
  40. BIN
      phsource/vowelcharts/hi.png
  41. 1
    0
      phsource/vowelcharts/ru
  42. BIN
      phsource/vowelcharts/ru.png
  43. 1
    1
      phsource/vowelcharts/vi
  44. BIN
      phsource/vowelcharts/vi.png
  45. 45
    20
      src/dictionary.cpp
  46. 3
    1
      src/intonation.cpp
  47. 1
    1
      src/synthdata.cpp
  48. 50
    10
      src/tr_languages.cpp
  49. 1
    1
      src/tr_languages.h
  50. 30
    7
      src/translate.cpp
  51. 4
    3
      src/translate.h
  52. 1
    1
      src/voices.cpp

+ 4
- 1
dictsource/en_list View File

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

+ 6
- 4
dictsource/en_rules View File

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

+ 44
- 0
dictsource/hr_rules View File

ó 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


+ 107
- 40
dictsource/pt_list View File


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






+ 18
- 18
dictsource/pt_rules View File

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








+ 1
- 1
dictsource/ru_rules View File



.group л .group л
_) л (_ El^ _) л (_ El^
л (_ l^
// л (_ l^ // rule removed
л (Y l^ л (Y l^
л l л l



+ 85
- 52
dictsource/sv_rules View File

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:

+ 2
- 2
phsource/compile_report View File

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

+ 2
- 0
phsource/mbrola/in1 View File

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




+ 1
- 0
phsource/mbrola/sv View File

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

+ 10
- 3
phsource/ph_croatian View File



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

+ 2
- 2
phsource/ph_czech View File

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



+ 9
- 9
phsource/ph_slovak View File

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



+ 0
- 1
phsource/phonemes View File

phonemetable no base phonemetable no base
include ph_norwegian include ph_norwegian



phonemetable vi base phonemetable vi base
include ph_vi include ph_vi



BIN
phsource/vdiph/ai_7 View File


BIN
phsource/vdiph/ei View File


BIN
phsource/vdiph/vowelchart.png View File


BIN
phsource/vdiph2/vowelchart.png View File


BIN
phsource/vowel/e_e View File


BIN
phsource/vowel/vowelchart.png View File


+ 1
- 1
phsource/vowelcharts/en View File

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

BIN
phsource/vowelcharts/en.png View File


+ 1
- 1
phsource/vowelcharts/en_n View File

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

BIN
phsource/vowelcharts/en_n.png View File


+ 1
- 1
phsource/vowelcharts/en_rp View File

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

BIN
phsource/vowelcharts/en_rp.png View File


+ 2
- 2
phsource/vowelcharts/en_sc View File

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

BIN
phsource/vowelcharts/en_sc.png View File


+ 1
- 1
phsource/vowelcharts/en_us View File

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

BIN
phsource/vowelcharts/en_us.png View File


+ 1
- 1
phsource/vowelcharts/en_wm View File

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

BIN
phsource/vowelcharts/en_wm.png View File


+ 2
- 2
phsource/vowelcharts/fi View File

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

BIN
phsource/vowelcharts/fi.png View File


+ 4
- 4
phsource/vowelcharts/fr View File

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

BIN
phsource/vowelcharts/fr.png View File


+ 4
- 4
phsource/vowelcharts/fr_ca View File

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

BIN
phsource/vowelcharts/fr_ca.png View File


+ 1
- 1
phsource/vowelcharts/hi View File

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

BIN
phsource/vowelcharts/hi.png View File


+ 1
- 0
phsource/vowelcharts/ru View File

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

BIN
phsource/vowelcharts/ru.png View File


+ 1
- 1
phsource/vowelcharts/vi View File

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

BIN
phsource/vowelcharts/vi.png View File


+ 45
- 20
src/dictionary.cpp View File

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

+ 3
- 1
src/intonation.cpp View File

{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},





+ 1
- 1
src/synthdata.cpp View File

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

+ 50
- 10
src/tr_languages.cpp View File

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

+ 1
- 1
src/tr_languages.h View File

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



+ 30
- 7
src/translate.cpp View File

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 != '\''))
{ {

+ 4
- 3
src/translate.h View File

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



+ 1
- 1
src/voices.cpp View File

{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

Loading…
Cancel
Save