Browse Source

[1.26.05] Fix count of upper-case letters in a word to consider multibyte characters.

Mbrola translations, option to not match across a word boundary.
Mbrola translations, allow check of lengthen indicator [:].
espeakedit, add operation to apply a voice's formants modifications to a keyframe.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@47 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
188b0d7c11

+ 26
- 2
dictsource/dict_phonemes View File



* : b c C d dZ f * : b c C d dZ f
g h j J k l m n g h j J k l m n
N n^ p r R s S s2
t tS ts v z Z z2
N n^ p r R R2 s S
s2 t tS ts v z Z z2




Dictionary it_dict Dictionary it_dict
m m# n N n# N# n^ n^# m m# n N n# N# n^ n^#
p Q r R r# R2 s S p Q r R r# R2 s S
t T tl# v x z t T tl# v x z


Dictionary la_dict

@- a a: aI aU E e: EU
I i: O o: OI U u: y
y:

* : <h> b d f g h
j k l m n N p r
R s t w z


Dictionary sr_dict

& @ @- @2 a A a: aI
aU E e e: E~ i I i:
l- o o: oU r- u U u:
y

* b d dZ dZ; f g h
j k l l^ m n N n^
p r R s S t tS ts
tS; v x z Z

+ 16
- 2
dictsource/hu_list View File

mm milime:tER mm milime:tER


a.m An^n^i||m'int $dot a.m An^n^i||m'int $dot
dr doktoR $dot
gpu $abbrev gpu $abbrev
id idY:SEb: $dot
ill illEdvE $dot ill illEdvE $dot
ifj ifjAb: $dot
mta $abbrev mta $abbrev
pl pe:lda:ul $dot pl pe:lda:ul $dot
stb SAtYb:i $dot stb SAtYb:i $dot
ú.n u:JnEvEzEt:
vö v'EZd||_'Yss2E vö v'EZd||_'Yss2E


ii kEttY: $abbrev
iii ha:Rom $abbrev
iv ne:J $abbrev
vi hAt $abbrev
vii he:t $abbrev
viii n^olts $abbrev




// Articles // Articles
ra $u ra $u
re $u re $u
ik $u ik $u
as $u
es $u es $u
os $u os $u
ós $u ós $u




// Names // Names
ricárd RiCArd
Engels ENgEls
Kéthly ke:thli
ricárd RiCARd
richard RiCARd richard RiCARd

Szamuelly sAmuElli
Szamuely sAmuElli

+ 9
- 6
dictsource/hu_rules View File

cc ts: cc ts:
cs tS cs tS
ccs tS: ccs tS:
cz ts


anar) ch (i C anar) ch (i C
hierar) ch (i C hierar) ch (i C
.group k .group k
k k k k
kk k: kk k:
_) köz kYz


.group l .group l
l l l l
.group m .group m
m m m m


ko) mm (unis m
ko) mm (uni m




.group n .group n
qu kv qu kv


.group r .group r
r R
A) r (A *
C) r (A R
r (C R
rr R*
r R2
A) r (A R2
C) r (A R2
r (C R2
rr R2*


.group s .group s
s S s S


hel) s (inki z hel) s (inki z
ki) s (ebb SS ki) s (ebb SS
_munká) s S
_o) slo slo: _o) slo slo:
_o) sló slo: _o) sló slo:



+ 10
- 8
dictsource/it_list View File

_> kj,uza'angolo _> kj,uza'angolo
_? p'untointeRogat'ivo _? p'untointeRogat'ivo
_@ ki'otS:ola _@ ki'otS:ola
_[ ap'eRtakw'ad@-*a
_[ ap'eRtakw2'ad@-*a
_\ bakslaS _\ bakslaS
_] kj,uzakw'ad@-*a
_] kj,uzakw2'ad@-*a
_^ kap:utS:o _^ kap:utS:o
__ 'undeRskoRe __ 'undeRskoRe
_` bakp@-*aIm _` bakp@-*aIm
_1 'uno _1 'uno
_2 d'ue _2 d'ue
_3 tR'e _3 tR'e
_4 kw'at:Ro
_5 tS'inkwe
_4 kw2'at:Ro
_5 tS'inkw2e
_6 s'ej _6 s'ej
_7 s'Et:e _7 s'Et:e
_8 'Ot:o _8 'Ot:o
_11 'unditSi _11 'unditSi
_12 d'oditSi _12 d'oditSi
_13 t@-*'editSi _13 t@-*'editSi
_14 kwat:'ORditSi
_15 kw'imditSi
_14 kw2at:'ORditSi
_15 kw2'imditSi
_16 s'editSi _16 s'editSi
_17 ditSas:'Et:e _17 ditSas:'Et:e
_18 ditS'Ot:o _18 ditS'Ot:o
_19 ditSann'ove _19 ditSann'ove
_2X v'ente _2X v'ente
_3X t@-*'enta _3X t@-*'enta
_4X kwaR'anta
_5X tSinkw'anta
_4X kw2aR'anta
_5X tSinkw2'anta
_6X sess'anta _6X sess'anta
_7X set:'anta _7X set:'anta
_8X ot'anta _8X ot'anta
// If a letter has a "word" pronunciation which is different from its // If a letter has a "word" pronunciation which is different from its
// "letter" name, then include the letter name here, with the letter // "letter" name, then include the letter name here, with the letter
// prefixed by a _ character. // prefixed by a _ character.
_a a:
a a: $atend
_e e: _e e:
e e: $atend e e: $atend
_i i: _i i:

+ 2
- 2
dictsource/it_rules View File



.group q .group q
_) q(_ ku: _) q(_ ku:
q kw
qu kw
q kw2
qu kw2


.group r .group r
_) r(_ ER*e _) r(_ ER*e

+ 48
- 47
phsource/compile_report View File

35 phoneme tables
37 phoneme tables
new total new total
base 96 96 base 96 96
base2 24 114 base2 24 114
hu 24 114 hu 24 114
nl 26 117 nl 26 117
pl 15 107 pl 15 107
sk 26 124
cs 5 124
hr 25 133
sk 29 125
cs 5 125
hr 19 129
sr 2 129
ru 36 124 ru 36 124
it 12 114 it 12 114
la 21 114
es 6 114 es 6 114
pt 28 131 pt 28 131
pt_pt 20 131 pt_pt 20 131
1 l^/j2u base 1 l^/j2u base
1 l^/_l^ base 1 l^/_l^ base
1 l^/l^ base 1 l^/l^ base
7 l/l base en af sk ru pt ro
10 l/_l base en af de fr sk ru pt ro
8 l/l base en af sk ru la pt ro
11 l/_l base en af de fr sk ru la pt ro
1 l/l_ base 1 l/l_ base
2 l/l@ base 2 l/l@ base
1 l/L1_aL base 1 l/L1_aL base
2 l/le base 2 l/le base
1 l/L_eL_af af 1 l/L_eL_af af
2 l/li base 2 l/li base
3 l/l_long base fr ro
4 l/l_long base fr la ro
2 l/lo base 2 l/lo base
2 l/lu base 2 l/lu base
8 l/tl base en af fr sk ru pt ro
9 l/tl base en af fr sk ru la pt ro
6 l/xl base 6 l/xl base
2 m/_m base ro 2 m/_m base ro
2 m/m_ base ro 2 m/m_ base ro
2 ufric/ch base de 2 ufric/ch base de
3 ufric/f base de ro 3 ufric/f base de ro
2 ufric/f_ base ro 2 ufric/f_ base ro
4 ufric/h_ base fi hi
5 ufric/h@ base fi hi
4 ufric/ha base fi hi
4 ufric/he base fi hi
4 ufric/hi base fi hi
3 ufric/ho base hi
3 ufric/hu base hi
5 ufric/h_ base fi hi la
6 ufric/h@ base fi hi la
5 ufric/ha base fi hi la
5 ufric/he base fi hi la
5 ufric/hi base fi hi la
4 ufric/ho base hi la
4 ufric/hu base hi la
2 ufric/hu_fi fi 2 ufric/hu_fi fi
2 ufric/ll base is 2 ufric/ll base is
3 ufric/s base es pt 3 ufric/s base es pt
1 ufric/x_hr hr 1 ufric/x_hr hr
1 ustop/c base 1 ustop/c base
5 ustop/k base en fr hi sw 5 ustop/k base en fr hi sw
9 ustop/k_ base base2 en fi fr hi hu el sw
12 ustop/ki base base2 en af fi fr hi hu is sw
10 ustop/kl base base2 en fi fr hi hu el sw
11 ustop/kr base base2 en fi fr hi hu el sw
9 ustop/k_unasp base base2 fi hi hu el
10 ustop/k_ base base2 en fi fr hi hu sk el sw
13 ustop/ki base base2 en af fi fr hi hu sk is sw
11 ustop/kl base base2 en fi fr hi hu sk el sw
12 ustop/kr base base2 en fi fr hi hu sk el sw
10 ustop/k_unasp base base2 fi hi hu sk el
2 ustop/p base hi 2 ustop/p base hi
2 ustop/p_ base hi 2 ustop/p_ base hi
1 ustop/percus10 base 1 ustop/percus10 base
8 ustop/pl base base2 fi hi hu hr ro
8 ustop/pr base base2 fi hi hu ro
7 ustop/p_unasp base base2 fi hi hu hr ro
6 ustop/p_unasp_ base2 fi hi hu hr ro
9 ustop/pl base base2 fi hi hu sk la ro
9 ustop/pr base base2 fi hi hu la ro
8 ustop/p_unasp base base2 fi hi hu sk la ro
7 ustop/p_unasp_ base2 fi hi hu sk la ro
3 ustop/t base en hi 3 ustop/t base en hi
6 ustop/t_ base en hi sk el 6 ustop/t_ base en hi sk el
27 ustop/t_dnt base base2 en fi fr hi hu pl hr ru ro vi ++ 27 ustop/t_dnt base base2 en fi fr hi hu pl hr ru ro vi ++
2 vdiph/aai_2 af cy 2 vdiph/aai_2 af cy
1 vdiph/aai_3 fi 1 vdiph/aai_3 fi
1 vdiph/aau fi 1 vdiph/aau fi
3 vdiph/aau_2 de nl zh_yue
4 vdiph/aau_2 de nl la zh_yue
1 vdiph/aau_3 hi 1 vdiph/aau_3 hi
1 vdiph/aau_4 vi 1 vdiph/aau_4 vi
1 vdiph/ae fr_ca 1 vdiph/ae fr_ca
1 vdiph/ae_2 en_n 1 vdiph/ae_2 en_n
6 vdiph/ai base2 eo hr it pt vi
7 vdiph/ai base2 eo sk hr it pt vi
3 vdiph/ai_2 en_us cy 3 vdiph/ai_2 en_us cy
1 vdiph/ai_3 no 1 vdiph/ai_3 no
1 vdiph/ai_4 af 1 vdiph/ai_4 af
1 vdiph/ai_5 de
2 vdiph/ai_5 de la
1 vdiph/ai_6 en_rp 1 vdiph/ai_6 en_rp
5 vdiph/ai_7 en_sc is 5 vdiph/ai_7 en_sc is
1 vdiph/ai_en en 1 vdiph/ai_en en
3 vdiph/eei_3 en_us en_rp sk 3 vdiph/eei_3 en_us en_rp sk
1 vdiph/eei_4 nl 1 vdiph/eei_4 nl
3 vdiph/eeu pt vi zh_yue 3 vdiph/eeu pt vi zh_yue
1 vdiph/eeu_2 pt_pt
2 vdiph/eeu_2 la pt_pt
2 vdiph/eeu_3 en_n en_wm 2 vdiph/eeu_3 en_n en_wm
1 vdiph/eey fi 1 vdiph/eey fi
6 vdiph/ei base2 nl pt is vi zh_yue
1 vdiph/ei_2 hr
7 vdiph/ei base2 nl la pt is vi zh_yue
8 vdiph/eu base2 en cy eo nl sk pt vi 8 vdiph/eu base2 en cy eo nl sk pt vi
1 vdiph/eu_2 fi 1 vdiph/eu_2 fi
2 vdiph/&i fi hi 2 vdiph/&i fi hi
3 vdiph/@i_3 en_wm ro zh_yue 3 vdiph/@i_3 en_wm ro zh_yue
1 vdiph/&i_3 vi 1 vdiph/&i_3 vi
1 vdiph/@i_4 vi 1 vdiph/@i_4 vi
2 vdiph/ii hr ro
1 vdiph/ii ro
1 vdiph/i#i ro 1 vdiph/i#i ro
5 vdiph/oi base2 en_wm de it vi
6 vdiph/oi base2 en_wm de it la vi
1 vdiph/oi_2 af 1 vdiph/oi_2 af
10 vdiph/ooi en en_n en_us en_rp cy eo fi no zh_yue 10 vdiph/ooi en en_n en_us en_rp cy eo fi no zh_yue
1 vdiph/ooi_2 af 1 vdiph/ooi_2 af
2 vdiph/ooi_3 en_wm hr
1 vdiph/ooi_3 en_wm
2 vdiph/ou fi zh_yue 2 vdiph/ou fi zh_yue
2 vdiph/ou_2 sk ro 2 vdiph/ou_2 sk ro
2 vdiph/ou_3 is 2 vdiph/ou_3 is
1 vdiph/u-i vi 1 vdiph/u-i vi
1 vdiph/ui_2 af 1 vdiph/ui_2 af
2 vdiph/ui_3 cy 2 vdiph/ui_3 cy
1 vdiph/ui_4 hr
1 vdiph/Vi vi 1 vdiph/Vi vi
1 vdiph/Vu af 1 vdiph/Vu af
1 vdiph/Vu_2 en_wm 1 vdiph/Vu_2 en_wm
1 vowel/3_2 en_n 1 vowel/3_2 en_n
1 vowel/3_3 en_rp 1 vowel/3_3 en_rp
3 vowel/3_en en en_wm af 3 vowel/3_en en en_wm af
2 vowel/@_4 nl hr
1 vowel/@_4 nl
2 vowel/8_2 en_us sv 2 vowel/8_2 en_us sv
1 vowel/8_3 zh_yue 1 vowel/8_3 zh_yue
11 vowel/a en_n cy de hu nl pl sk hr
13 vowel/a en_n cy de hu nl pl sk hr sr la
5 vowel/a# base2 en_sc it pt 5 vowel/a# base2 en_sc it pt
7 vowel/a_2 base2 eo it pt pt_pt ro vi
8 vowel/a_2 base2 eo it la pt pt_pt ro vi
4 vowel/a#_2 hr sv is sw 4 vowel/a#_2 hr sv is sw
6 vowel/a_3 en_sc cs is 6 vowel/a_3 en_sc cs is
12 vowel/a#_3 en en_n en_us en_wm de hi ru pt_pt vi zh_yue 12 vowel/a#_3 en en_n en_us en_wm de hi ru pt_pt vi zh_yue
1 vowel/aa_7 nl 1 vowel/aa_7 nl
4 vowel/a_en en fr 4 vowel/a_en en fr
1 vowel/@_bck hi 1 vowel/@_bck hi
14 vowel/e base2 en en_n af cy eo fr hu hr it pt pt_pt ++
15 vowel/e base2 en en_n af cy eo fr hu hr it la pt ++
2 vowel/e# en_sc 2 vowel/e# en_sc
6 vowel/e_2 en_sc de hi sv no 6 vowel/e_2 en_sc de hi sv no
1 vowel/e_3 hu 1 vowel/e_3 hu
1 vowel/e_5 en_sc 1 vowel/e_5 en_sc
3 vowel/ee fr pl sv 3 vowel/ee fr pl sv
2 vowel/e_e en_sc is 2 vowel/e_e en_sc is
7 vowel/ee_1 base2 en en_n pl sv no zh_yue
8 vowel/ee_1 base2 en en_n pl la sv no zh_yue
3 vowel/ee_2 en cy nl 3 vowel/ee_2 en cy nl
1 vowel/ee#_2 sv 1 vowel/ee#_2 sv
3 vowel/ee_3 af pt vi 3 vowel/ee_3 af pt vi
1 vowel/@_hgh no 1 vowel/@_hgh no
19 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++ 19 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++
1 vowel/i# cy 1 vowel/i# cy
3 vowel/i_2 de nl sv
4 vowel/i_2 de nl la sv
2 vowel/i_3 af sk 2 vowel/i_3 af sk
3 vowel/i_4 fi hu is 3 vowel/i_4 fi hu is
5 vowel/i_5 en_sc 5 vowel/i_5 en_sc
2 vowel/i_fnt hi 2 vowel/i_fnt hi
10 vowel/ii en_wm cy de fr_ca nl is zh_yue 10 vowel/ii en_wm cy de fr_ca nl is zh_yue
3 vowel/ii# cy pl ru 3 vowel/ii# cy pl ru
1 vowel/ii_2 la
7 vowel/ii_3 en_rp fi hi sk hr sv no 7 vowel/ii_3 en_rp fi hi sk hr sv no
2 vowel/ii_4 en_rp 2 vowel/ii_4 en_rp
6 vowel/ii_en en en_n 6 vowel/ii_en en en_n
5 vowel/@_low hi ro no 5 vowel/@_low hi ro no
10 vowel/o base2 en en_wm de fr hi it pt_pt sv
11 vowel/o base2 en en_wm de fr hi it la pt_pt sv
4 vowel/o_2 cy hi hu no 4 vowel/o_2 cy hi hu no
2 vowel/o-_2 en_n en_wm 2 vowel/o-_2 en_n en_wm
2 vowel/o_3 en_sc 2 vowel/o_3 en_sc
1 vowel/oe_2 no 1 vowel/oe_2 no
1 vowel/oe_4 sv 1 vowel/oe_4 sv
2 vowel/o_mid fr hu 2 vowel/o_mid fr hu
8 vowel/oo en_sc de eo es el sv no zh_yue
9 vowel/oo en_sc de eo la es el sv no zh_yue
11 vowel/oo_1 en_n en_rp en_wm af fi sk hr 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
3 vowel/oo_4 hi pl it
1 vowel/oo_5 is 1 vowel/oo_5 is
6 vowel/oo_en en en_n en_rp 6 vowel/oo_en en en_n en_rp
2 vowelr/aa_r en_sc 2 vowelr/aa_r en_sc
4 vowelr/r-voc hi sk hr 4 vowelr/r-voc hi sk hr
2 vowelr/V3_r en en_sc 2 vowelr/V3_r en en_sc
1 vowelr/V_r en 1 vowelr/V_r en
7 vowel/u en_n cy de eo fr cs
8 vowel/u en_n cy de eo fr cs la
5 vowel/u# en en_sc 5 vowel/u# en en_sc
4 vowel/u_2 fi sk hr ro 4 vowel/u_2 fi sk hr ro
1 vowel/u#_2 sv 1 vowel/u#_2 sv
1 vowel/u_7 vi 1 vowel/u_7 vi
16 vowel/u_bck base2 cy fi fr_ca hi hu nl pl sk hr it pt ++ 16 vowel/u_bck base2 cy fi fr_ca hi hu nl pl sk hr it pt ++
2 vowel/uu en en_wm 2 vowel/uu en en_wm
2 vowel/uu_2 base2 de
3 vowel/uu_2 base2 de la
1 vowel/uu_3 af 1 vowel/uu_3 af
2 vowel/uu_4 fi sv 2 vowel/uu_4 fi sv
7 vowel/uu_bck fr_ca hi hu pt no zh_yue 7 vowel/uu_bck fr_ca hi hu pt no zh_yue
1 vowel/yy fr_ca 1 vowel/yy fr_ca
1 vowel/yy_2 no 1 vowel/yy_2 no
1 vowel/yy_3 sv 1 vowel/yy_3 sv
3 vowel/yy_4 de hu is
5 vowel/yy_4 de hu la is
1 vwl_af/@ af 1 vwl_af/@ af
1 vwl_af/I af 1 vwl_af/I af
2 vwl_af/r@ af 2 vwl_af/r@ af
1 w/wa base 1 w/wa base
1 w/we base 1 w/we base
3 w/wi base vi zh_yue 3 w/wi base vi zh_yue
10 w/wi2 en en_n en_us en_sc en_rp en_wm de nl sv no
11 w/wi2 en en_n en_us en_sc en_rp en_wm de nl la sv no
1 w/wo base 1 w/wo base
1 w/wu base 1 w/wu base
5 w/xw base 5 w/xw base

+ 1
- 49
phsource/ph_croatian View File

length 140 length 140
endphoneme endphoneme


phoneme @3 // Schwa (raised)
vowel starttype (@) endtype (@)
formants vowel/@_4
length 140
endphoneme



phoneme a phoneme a
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
reduceto U 4 reduceto U 4
endphoneme endphoneme



phoneme U phoneme U
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 140 length 140
// formants vowel/uu_bck
formants vowel/u_2 formants vowel/u_2
endphoneme endphoneme


endphoneme endphoneme




phoneme eI
vowel starttype (e) endtype (i)
length 250
formants vdiph/ei_2
linkout ;
endphoneme


phoneme iI
vowel starttype (i) endtype (i)
length 250
formants vdiph/ii
linkout ;
endphoneme


phoneme oI
vowel starttype (o) endtype (i)
length 250
formants vdiph/ooi_3
linkout ;
endphoneme


phoneme uI
vowel starttype (u) endtype (i)
length 250
formants vdiph/ui_4
linkout ;
endphoneme


phoneme p
vls blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
lengthmod 2
wave ustop/p_unasp%120
before _ ustop/p_unasp_%80
before l ustop/pl
switchvoicing b
endphoneme




phoneme t // dental variant of /t/ phoneme t // dental variant of /t/

+ 1
- 1
phsource/ph_hungarian View File



phoneme Y: phoneme Y:
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 240
length 270
formants vowel/y# formants vowel/y#
endphoneme endphoneme



+ 1
- 1
phsource/ph_italian View File

phoneme O phoneme O
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 170 length 170
// formants vowel/oo_4
formants vowel/oo_4
// formants vowel/0 // formants vowel/0
reduceto o 4 // [O] only in stressed syllables reduceto o 4 // [O] only in stressed syllables
endphoneme endphoneme

+ 32
- 0
phsource/ph_slovak View File

formants vdiph/ou_2 formants vdiph/ou_2
endphoneme endphoneme



phoneme aI
vowel starttype (a) endtype (i)
length 270
formants vdiph/ai
endphoneme

phoneme eI phoneme eI
vowel starttype (e) endtype (i) vowel starttype (e) endtype (i)
length 260 length 260
switchvoicing d switchvoicing d
endphoneme endphoneme


phoneme p
vls blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
lengthmod 2
wave ustop/p_unasp%120
before _ ustop/p_unasp_%80
before l ustop/pl
switchvoicing b
endphoneme


phoneme k
vls vel stop
vowelin f1=0 f2=2300 200 400 f3=-100 80
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
lengthmod 2
wave ustop/k_unasp%60 // weaker
before _ ustop/k_
before r ustop/kr
before l ustop/kl
before (i) ustop/ki
switchvoicing g
endphoneme




+ 6
- 0
phsource/phonemes View File

phonemetable hr sk phonemetable hr sk
include ph_croatian include ph_croatian


phonemetable sr hr
include ph_serbian

phonemetable ru base phonemetable ru base
include ph_russian include ph_russian


phonemetable it base2 phonemetable it base2
include ph_italian include ph_italian


phonemetable la base
include ph_latin

phonemetable es base2 phonemetable es base2
include ph_spanish include ph_spanish



+ 1
- 1
src/menus.cpp View File

menu_bar->Append(voice_menu, _T("&Voice")); menu_bar->Append(voice_menu, _T("&Voice"));
menu_bar->Append(option_menu, _T("&Options")); menu_bar->Append(option_menu, _T("&Options"));
menu_bar->Append(tools_menu, _T("&Tools")); menu_bar->Append(tools_menu, _T("&Tools"));
menu_bar->Append(data_menu, _T("&Data"));
menu_bar->Append(data_menu, _T("&Compile"));
menu_bar->Append(help_menu, _T("&Help")); menu_bar->Append(help_menu, _T("&Help"));


return(menu_bar); return(menu_bar);

+ 23
- 9
src/readclause.cpp View File

int c; int c;
int c1; int c1;
int c2; int c2;
int cbuf[4];
int ix;
int n_bytes; int n_bytes;
unsigned char m; unsigned char m;
static int ungot2 = 0;
static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07}; static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07};
static const unsigned char mask2[4] = {0,0x80,0x20,0x30}; static const unsigned char mask2[4] = {0,0x80,0x20,0x30};


return(c1); return(c1);
} }


c1 = GetC_get();
if(ungot2 != 0)
{
c1 = ungot2;
ungot2 = 0;
}
else
{
c1 = GetC_get();
}

if(option_multibyte == espeakCHARS_WCHAR) if(option_multibyte == espeakCHARS_WCHAR)
{ {
count_characters++; count_characters++;
if(((c1 & 0xf8) == 0xf0) && ((c1 & 0x0f) <= 4)) if(((c1 & 0xf8) == 0xf0) && ((c1 & 0x0f) <= 4))
n_bytes = 3; n_bytes = 3;


if(n_bytes > 0)
if((ix = n_bytes) > 0)
{ {
c = c1 & mask[n_bytes];
m = mask2[n_bytes];
while(n_bytes > 0)
c = c1 & mask[ix];
m = mask2[ix];
while(ix > 0)
{ {
c2 = GetC_get();
if(c2 == 0)
if((c2 = cbuf[ix] = GetC_get()) == 0)
{ {
if(option_multibyte==espeakCHARS_AUTO) if(option_multibyte==espeakCHARS_AUTO)
option_multibyte=espeakCHARS_8BIT; // change "auto" option to "no" option_multibyte=espeakCHARS_8BIT; // change "auto" option to "no"


if((c2 & 0xc0) != 0x80) if((c2 & 0xc0) != 0x80)
{ {
// This is not UTF8. Change to 8-bit characterset.
if(n_bytes > 1)
ungot2 = cbuf[2];
GetC_unget(c2); GetC_unget(c2);
break; break;
} }
m = 0x80; m = 0x80;
c = (c << 6) + (c2 & 0x3f); c = (c << 6) + (c2 & 0x3f);
n_bytes--;
ix--;
} }
if(n_bytes == 0)
if(ix == 0)
{ {
count_characters++; count_characters++;
return(c); return(c);

+ 15
- 0
src/spect.cpp View File

} }




void SpectFrame::ApplyVoiceMods()
{//==============================
// apply the modifications to the formants which are defined in the current voice
int pk;

for(pk=0; pk<N_PEAKS; pk++)
{
peaks[pk].pkfreq = (peaks[pk].pkfreq * voice->freq2[pk])/256;
peaks[pk].pkheight = (peaks[pk].pkheight * voice->height2[pk])/256;
peaks[pk].pkwidth = (peaks[pk].pkwidth * voice->width2[pk])/256;
peaks[pk].pkright = (peaks[pk].pkright * voice->width2[pk])/256;
}
}




double SpectFrame::GetRms(int seq_amplitude) double SpectFrame::GetRms(int seq_amplitude)
{//========================================= {//=========================================

+ 1
- 0
src/spect.h View File

void ZeroPeaks(); void ZeroPeaks();
void CopyPeaks(SpectFrame *sf); void CopyPeaks(SpectFrame *sf);
void ToggleMarker(int n); void ToggleMarker(int n);
void ApplyVoiceMods();
void MakeWave(int peaks, PitchEnvelope &pitch, int amplitude, int duration); void MakeWave(int peaks, PitchEnvelope &pitch, int amplitude, int duration);
void MakeHtab(int numh, int *htab, int pitch); void MakeHtab(int numh, int *htab, int pitch);

+ 7
- 1
src/spectdisplay.cpp View File

int code; int code;
wxKeyEvent keyevent; wxKeyEvent keyevent;
SpectFrame *sf; SpectFrame *sf;
static int key[] = {0x1044,0x3044,0x104e,0x1047,0x105a,0x1051,0x3051,WXK_F1,WXK_F2,0x1049};
static int key[] = {0x1044,0x3044,0x104e,0x1047,0x105a,0x1051,0x3051,WXK_F1,WXK_F2,0x1049,WXK_F10};


id = event.GetId(); id = event.GetId();


display = 2; display = 2;
break; break;


case WXK_F10:
sf->ApplyVoiceMods();
display = 2;
break;

case WXK_F2: case WXK_F2:
// make and play sequence // make and play sequence
ReadDialogValues(); ReadDialogValues();
menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q")); menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q"));
menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z")); menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z"));
menu_spectdisplay->Append(210,_T("Toggle Marker"),menu_markers); menu_spectdisplay->Append(210,_T("Toggle Marker"),menu_markers);
menu_spectdisplay->Append(211,_T("Apply the formant adjustments from current voice"));
menu_spectdisplay->AppendSeparator(); menu_spectdisplay->AppendSeparator();
menu_spectdisplay->Append(208,_T("Play Selected Frame F1")); menu_spectdisplay->Append(208,_T("Play Selected Frame F1"));
menu_spectdisplay->Append(209,_T("Play All F2")); menu_spectdisplay->Append(209,_T("Play All F2"));

+ 9
- 0
src/synth_mbrola.cpp View File

// bit 0 skip the next phoneme // bit 0 skip the next phoneme
// bit 1 match this and Previous phoneme // bit 1 match this and Previous phoneme
// bit 2 only at the start of a word // bit 2 only at the start of a word
// bit 4 don't match two phonemes across a word boundary


pr = mbrola_tab; pr = mbrola_tab;
while(pr->name != 0) while(pr->name != 0)
if(pr->next_phoneme == 0) if(pr->next_phoneme == 0)
found = 1; found = 1;
else else
if((pr->next_phoneme == ':') && (plist->synthflags & SFLAG_LENGTHEN))
{
found = 1;
}
else
{ {
if(pr->control & 2) if(pr->control & 2)
other_ph = ph_prev; other_ph = ph_prev;
else
if((pr->control & 8) && ((plist+1)->newword))
other_ph = phoneme_tab[phPAUSE]; // don't match the next phoneme over a word boundary
else else
other_ph = ph_next; other_ph = ph_next;



+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.26.04 13.Jun.07";
const char *version_string = "1.26.05 14.Jun.07";
const int version_phdata = 0x012601; const int version_phdata = 0x012601;


int option_device_number = -1; int option_device_number = -1;

+ 5
- 0
src/tr_languages.cpp View File





case L('h','r'): // Croatian case L('h','r'): // Croatian
case L('s','r'): // Serbian
{ {
static const wchar_t replace_chars_hr[] = static const wchar_t replace_chars_hr[] =
{0x430,0x431,0x446,0x45b,0x447,0x434,0x452,0x45f, {0x430,0x431,0x446,0x45b,0x447,0x434,0x452,0x45f,
tr = new Translator(); tr = new Translator();
tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron
tr->langopts.stress_rule = 2; tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x21;
tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_DIERESES] = 1;
} }
break; break;



+ 6
- 1
src/translate.cpp View File

int dict_flags; // returned from dictionary lookup int dict_flags; // returned from dictionary lookup
int word_flags; // set here int word_flags; // set here
int embedded_count = 0; int embedded_count = 0;
int letter_count = 0;
char *word; char *word;
char *p; char *p;
int j, k; int j, k;
{ {
if(!IsAlpha(prev_out) || (langopts.ideographs && (c >= 0x3000))) if(!IsAlpha(prev_out) || (langopts.ideographs && (c >= 0x3000)))
{ {
letter_count = 0;

if((prev_out != ' ') && (prev_out != '\'')) if((prev_out != ' ') && (prev_out != '\''))
{ {
// start of word, insert space if not one there already // start of word, insert space if not one there already
} }
} }


letter_count++;

if(iswupper(c)) if(iswupper(c))
{ {
c = towlower(c); c = towlower(c);
source_index = prev_source_index; // unget source_index = prev_source_index; // unget
} }
#endif #endif
if((all_upper_case) && ((ix - words[word_count].start) > 1))
if((all_upper_case) && (letter_count > 2))
{ {
if((c == 's') && (next_in==' ')) if((c == 's') && (next_in==' '))
{ {

Loading…
Cancel
Save