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

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

+ 6
- 4
dictsource/en_rules View File

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

+ 44
- 0
dictsource/hr_rules View File

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


+ 107
- 40
dictsource/pt_list View File

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




+ 18
- 18
dictsource/pt_rules View File

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





+ 1
- 1
dictsource/ru_rules View File

@@ -285,7 +285,7 @@

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


+ 85
- 52
dictsource/sv_rules View File

@@ -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:

+ 2
- 2
phsource/compile_report View File

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

+ 2
- 0
phsource/mbrola/in1 View File

@@ -46,4 +46,6 @@
0 n^ NULL 0 N
0 j NULL 0 y
0 S NULL 0 sh
0 s. NULL 0 sh



+ 1
- 0
phsource/mbrola/sv View File

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

+ 10
- 3
phsource/ph_croatian View File

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

+ 2
- 2
phsource/ph_czech View File

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


+ 9
- 9
phsource/ph_slovak View File

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


+ 0
- 1
phsource/phonemes View File

@@ -1174,7 +1174,6 @@ include ph_swedish
phonemetable no base
include ph_norwegian


phonemetable vi base
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

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

BIN
phsource/vowelcharts/en.png View File


+ 1
- 1
phsource/vowelcharts/en_n View File

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

BIN
phsource/vowelcharts/en_n.png View File


+ 1
- 1
phsource/vowelcharts/en_rp View File

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

BIN
phsource/vowelcharts/en_rp.png View File


+ 2
- 2
phsource/vowelcharts/en_sc View File

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

BIN
phsource/vowelcharts/en_sc.png View File


+ 1
- 1
phsource/vowelcharts/en_us View File

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

BIN
phsource/vowelcharts/en_us.png View File


+ 1
- 1
phsource/vowelcharts/en_wm View File

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

BIN
phsource/vowelcharts/en_wm.png View File


+ 2
- 2
phsource/vowelcharts/fi View File

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

BIN
phsource/vowelcharts/fi.png View File


+ 4
- 4
phsource/vowelcharts/fr View File

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

BIN
phsource/vowelcharts/fr.png View File


+ 4
- 4
phsource/vowelcharts/fr_ca View File

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

BIN
phsource/vowelcharts/fr_ca.png View File


+ 1
- 1
phsource/vowelcharts/hi View File

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

BIN
phsource/vowelcharts/hi.png View File


+ 1
- 0
phsource/vowelcharts/ru View File

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

BIN
phsource/vowelcharts/ru.png View File


+ 1
- 1
phsource/vowelcharts/vi View File

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

BIN
phsource/vowelcharts/vi.png View File


+ 45
- 20
src/dictionary.cpp View File

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

+ 3
- 1
src/intonation.cpp View File

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



+ 1
- 1
src/synthdata.cpp View File

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

+ 50
- 10
src/tr_languages.cpp View File

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

+ 1
- 1
src/tr_languages.h View File

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


+ 30
- 7
src/translate.cpp View File

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

+ 4
- 3
src/translate.h View File

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


+ 1
- 1
src/voices.cpp View File

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

Loading…
Cancel
Save