mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[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
This commit is contained in:
@@ -157,8 +157,8 @@ o: u u: y Y y: Y:
|
||||
|
||||
* : b c C d dZ f
|
||||
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
|
||||
@@ -321,3 +321,27 @@ f g h j J k l l#
|
||||
m m# n N n# N# n^ n^#
|
||||
p Q r R r# R2 s S
|
||||
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
@@ -45,13 +45,23 @@ km kilo:me:tER
|
||||
mm milime:tER
|
||||
|
||||
a.m An^n^i||m'int $dot
|
||||
dr doktoR $dot
|
||||
gpu $abbrev
|
||||
id idY:SEb: $dot
|
||||
ill illEdvE $dot
|
||||
ifj ifjAb: $dot
|
||||
mta $abbrev
|
||||
pl pe:lda:ul $dot
|
||||
stb SAtYb:i $dot
|
||||
ú.n u:JnEvEzEt:
|
||||
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
|
||||
@@ -135,6 +145,7 @@ be $u
|
||||
ra $u
|
||||
re $u
|
||||
ik $u
|
||||
as $u
|
||||
es $u
|
||||
os $u
|
||||
ós $u
|
||||
@@ -251,6 +262,9 @@ _. pont
|
||||
|
||||
|
||||
// Names
|
||||
ricárd RiCArd
|
||||
Engels ENgEls
|
||||
Kéthly ke:thli
|
||||
ricárd RiCARd
|
||||
richard RiCARd
|
||||
|
||||
Szamuelly sAmuElli
|
||||
Szamuely sAmuElli
|
||||
|
||||
+9
-6
@@ -21,6 +21,7 @@
|
||||
cc ts:
|
||||
cs tS
|
||||
ccs tS:
|
||||
cz ts
|
||||
|
||||
anar) ch (i C
|
||||
hierar) ch (i C
|
||||
@@ -130,6 +131,7 @@ _minde) gy (ik J:
|
||||
.group k
|
||||
k k
|
||||
kk k:
|
||||
_) köz kYz
|
||||
|
||||
.group l
|
||||
l l
|
||||
@@ -143,7 +145,7 @@ _minde) gy (ik J:
|
||||
.group m
|
||||
m m
|
||||
|
||||
ko) mm (unis m
|
||||
ko) mm (uni m
|
||||
|
||||
|
||||
.group n
|
||||
@@ -183,11 +185,11 @@ _minde) gy (ik J:
|
||||
qu kv
|
||||
|
||||
.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
|
||||
s S
|
||||
@@ -196,6 +198,7 @@ _minde) gy (ik J:
|
||||
|
||||
hel) s (inki z
|
||||
ki) s (ebb SS
|
||||
_munká) s S
|
||||
_o) slo slo:
|
||||
_o) sló slo:
|
||||
|
||||
|
||||
+10
-8
@@ -29,9 +29,9 @@ _= ugwale
|
||||
_> kj,uza'angolo
|
||||
_? p'untointeRogat'ivo
|
||||
_@ ki'otS:ola
|
||||
_[ ap'eRtakw'ad@-*a
|
||||
_[ ap'eRtakw2'ad@-*a
|
||||
_\ bakslaS
|
||||
_] kj,uzakw'ad@-*a
|
||||
_] kj,uzakw2'ad@-*a
|
||||
_^ kap:utS:o
|
||||
__ 'undeRskoRe
|
||||
_` bakp@-*aIm
|
||||
@@ -47,8 +47,8 @@ _0 dz'eRo
|
||||
_1 'uno
|
||||
_2 d'ue
|
||||
_3 tR'e
|
||||
_4 kw'at:Ro
|
||||
_5 tS'inkwe
|
||||
_4 kw2'at:Ro
|
||||
_5 tS'inkw2e
|
||||
_6 s'ej
|
||||
_7 s'Et:e
|
||||
_8 'Ot:o
|
||||
@@ -57,16 +57,16 @@ _10 di'etSi
|
||||
_11 'unditSi
|
||||
_12 d'oditSi
|
||||
_13 t@-*'editSi
|
||||
_14 kwat:'ORditSi
|
||||
_15 kw'imditSi
|
||||
_14 kw2at:'ORditSi
|
||||
_15 kw2'imditSi
|
||||
_16 s'editSi
|
||||
_17 ditSas:'Et:e
|
||||
_18 ditS'Ot:o
|
||||
_19 ditSann'ove
|
||||
_2X v'ente
|
||||
_3X t@-*'enta
|
||||
_4X kwaR'anta
|
||||
_5X tSinkw'anta
|
||||
_4X kw2aR'anta
|
||||
_5X tSinkw2'anta
|
||||
_6X sess'anta
|
||||
_7X set:'anta
|
||||
_8X ot'anta
|
||||
@@ -348,6 +348,8 @@ facevano $u+
|
||||
// If a letter has a "word" pronunciation which is different from its
|
||||
// "letter" name, then include the letter name here, with the letter
|
||||
// prefixed by a _ character.
|
||||
_a a:
|
||||
a a: $atend
|
||||
_e e:
|
||||
e e: $atend
|
||||
_i i:
|
||||
|
||||
+2
-2
@@ -214,8 +214,8 @@
|
||||
|
||||
.group q
|
||||
_) q(_ ku:
|
||||
q kw
|
||||
qu kw
|
||||
q kw2
|
||||
qu kw2
|
||||
|
||||
.group r
|
||||
_) r(_ ER*e
|
||||
|
||||
+48
-47
@@ -1,4 +1,4 @@
|
||||
35 phoneme tables
|
||||
37 phoneme tables
|
||||
new total
|
||||
base 96 96
|
||||
base2 24 114
|
||||
@@ -19,11 +19,13 @@
|
||||
hu 24 114
|
||||
nl 26 117
|
||||
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
|
||||
it 12 114
|
||||
la 21 114
|
||||
es 6 114
|
||||
pt 28 131
|
||||
pt_pt 20 131
|
||||
@@ -104,8 +106,8 @@
|
||||
1 l^/j2u 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
|
||||
2 l/l@ base
|
||||
1 l/L1_aL base
|
||||
@@ -126,10 +128,10 @@
|
||||
2 l/le base
|
||||
1 l/L_eL_af af
|
||||
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/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
|
||||
2 m/_m base ro
|
||||
2 m/m_ base ro
|
||||
@@ -212,13 +214,13 @@
|
||||
2 ufric/ch base de
|
||||
3 ufric/f base de 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/ll base is
|
||||
3 ufric/s base es pt
|
||||
@@ -241,18 +243,18 @@
|
||||
1 ufric/x_hr hr
|
||||
1 ustop/c base
|
||||
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
|
||||
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
|
||||
6 ustop/t_ base en hi sk el
|
||||
27 ustop/t_dnt base base2 en fi fr hi hu pl hr ru ro vi ++
|
||||
@@ -297,16 +299,16 @@
|
||||
2 vdiph/aai_2 af cy
|
||||
1 vdiph/aai_3 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_4 vi
|
||||
1 vdiph/ae fr_ca
|
||||
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
|
||||
1 vdiph/ai_3 no
|
||||
1 vdiph/ai_4 af
|
||||
1 vdiph/ai_5 de
|
||||
2 vdiph/ai_5 de la
|
||||
1 vdiph/ai_6 en_rp
|
||||
5 vdiph/ai_7 en_sc is
|
||||
1 vdiph/ai_en en
|
||||
@@ -321,11 +323,10 @@
|
||||
3 vdiph/eei_3 en_us en_rp sk
|
||||
1 vdiph/eei_4 nl
|
||||
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
|
||||
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
|
||||
1 vdiph/eu_2 fi
|
||||
2 vdiph/&i fi hi
|
||||
@@ -334,13 +335,13 @@
|
||||
3 vdiph/@i_3 en_wm ro zh_yue
|
||||
1 vdiph/&i_3 vi
|
||||
1 vdiph/@i_4 vi
|
||||
2 vdiph/ii hr ro
|
||||
1 vdiph/ii 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
|
||||
10 vdiph/ooi en en_n en_us en_rp cy eo fi no zh_yue
|
||||
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_2 sk ro
|
||||
2 vdiph/ou_3 is
|
||||
@@ -352,7 +353,6 @@
|
||||
1 vdiph/u-i vi
|
||||
1 vdiph/ui_2 af
|
||||
2 vdiph/ui_3 cy
|
||||
1 vdiph/ui_4 hr
|
||||
1 vdiph/Vi vi
|
||||
1 vdiph/Vu af
|
||||
1 vdiph/Vu_2 en_wm
|
||||
@@ -417,12 +417,12 @@
|
||||
1 vowel/3_2 en_n
|
||||
1 vowel/3_3 en_rp
|
||||
3 vowel/3_en en en_wm af
|
||||
2 vowel/@_4 nl hr
|
||||
1 vowel/@_4 nl
|
||||
2 vowel/8_2 en_us sv
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -438,14 +438,14 @@
|
||||
1 vowel/aa_7 nl
|
||||
4 vowel/a_en en fr
|
||||
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
|
||||
6 vowel/e_2 en_sc de hi sv no
|
||||
1 vowel/e_3 hu
|
||||
1 vowel/e_5 en_sc
|
||||
3 vowel/ee fr pl sv
|
||||
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
|
||||
1 vowel/ee#_2 sv
|
||||
3 vowel/ee_3 af pt vi
|
||||
@@ -456,7 +456,7 @@
|
||||
1 vowel/@_hgh no
|
||||
19 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++
|
||||
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
|
||||
3 vowel/i_4 fi hu is
|
||||
5 vowel/i_5 en_sc
|
||||
@@ -466,11 +466,12 @@
|
||||
2 vowel/i_fnt hi
|
||||
10 vowel/ii en_wm cy de fr_ca nl is zh_yue
|
||||
3 vowel/ii# cy pl ru
|
||||
1 vowel/ii_2 la
|
||||
7 vowel/ii_3 en_rp fi hi sk hr sv no
|
||||
2 vowel/ii_4 en_rp
|
||||
6 vowel/ii_en en en_n
|
||||
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
|
||||
2 vowel/o-_2 en_n en_wm
|
||||
2 vowel/o_3 en_sc
|
||||
@@ -482,11 +483,11 @@
|
||||
1 vowel/oe_2 no
|
||||
1 vowel/oe_4 sv
|
||||
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
|
||||
3 vowel/oo_2 en_sc cy cs
|
||||
1 vowel/oo_3 af
|
||||
2 vowel/oo_4 hi pl
|
||||
3 vowel/oo_4 hi pl it
|
||||
1 vowel/oo_5 is
|
||||
6 vowel/oo_en en en_n en_rp
|
||||
2 vowelr/aa_r en_sc
|
||||
@@ -495,7 +496,7 @@
|
||||
4 vowelr/r-voc hi sk hr
|
||||
2 vowelr/V3_r en en_sc
|
||||
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
|
||||
4 vowel/u_2 fi sk hr ro
|
||||
1 vowel/u#_2 sv
|
||||
@@ -508,7 +509,7 @@
|
||||
1 vowel/u_7 vi
|
||||
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_2 base2 de
|
||||
3 vowel/uu_2 base2 de la
|
||||
1 vowel/uu_3 af
|
||||
2 vowel/uu_4 fi sv
|
||||
7 vowel/uu_bck fr_ca hi hu pt no zh_yue
|
||||
@@ -528,7 +529,7 @@
|
||||
1 vowel/yy fr_ca
|
||||
1 vowel/yy_2 no
|
||||
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/I af
|
||||
2 vwl_af/r@ af
|
||||
@@ -606,7 +607,7 @@
|
||||
1 w/wa base
|
||||
1 w/we base
|
||||
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/wu base
|
||||
5 w/xw base
|
||||
|
||||
+1
-49
@@ -10,12 +10,6 @@ phoneme @2 // Schwa (raised)
|
||||
length 140
|
||||
endphoneme
|
||||
|
||||
phoneme @3 // Schwa (raised)
|
||||
vowel starttype (@) endtype (@)
|
||||
formants vowel/@_4
|
||||
length 140
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme a
|
||||
vowel starttype (a) endtype (a)
|
||||
@@ -84,10 +78,10 @@ phoneme u
|
||||
reduceto U 4
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme U
|
||||
vowel starttype (u) endtype (u)
|
||||
length 140
|
||||
// formants vowel/uu_bck
|
||||
formants vowel/u_2
|
||||
endphoneme
|
||||
|
||||
@@ -99,48 +93,6 @@ phoneme aI
|
||||
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/
|
||||
|
||||
@@ -89,7 +89,7 @@ endphoneme
|
||||
|
||||
phoneme Y:
|
||||
vowel starttype (@) endtype (@)
|
||||
length 240
|
||||
length 270
|
||||
formants vowel/y#
|
||||
endphoneme
|
||||
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ endphoneme
|
||||
phoneme O
|
||||
vowel starttype (o) endtype (o)
|
||||
length 170
|
||||
// formants vowel/oo_4
|
||||
formants vowel/oo_4
|
||||
// formants vowel/0
|
||||
reduceto o 4 // [O] only in stressed syllables
|
||||
endphoneme
|
||||
|
||||
@@ -87,6 +87,13 @@ phoneme oU
|
||||
formants vdiph/ou_2
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme aI
|
||||
vowel starttype (a) endtype (i)
|
||||
length 270
|
||||
formants vdiph/ai
|
||||
endphoneme
|
||||
|
||||
phoneme eI
|
||||
vowel starttype (e) endtype (i)
|
||||
length 260
|
||||
@@ -176,4 +183,29 @@ phoneme t
|
||||
switchvoicing d
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -1188,6 +1188,9 @@ include ph_czech
|
||||
phonemetable hr sk
|
||||
include ph_croatian
|
||||
|
||||
phonemetable sr hr
|
||||
include ph_serbian
|
||||
|
||||
phonemetable ru base
|
||||
include ph_russian
|
||||
|
||||
@@ -1195,6 +1198,9 @@ include ph_russian
|
||||
phonemetable it base2
|
||||
include ph_italian
|
||||
|
||||
phonemetable la base
|
||||
include ph_latin
|
||||
|
||||
phonemetable es base2
|
||||
include ph_spanish
|
||||
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@ wxMenuBar *MakeMenu(int type)
|
||||
menu_bar->Append(voice_menu, _T("&Voice"));
|
||||
menu_bar->Append(option_menu, _T("&Options"));
|
||||
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"));
|
||||
|
||||
return(menu_bar);
|
||||
|
||||
+23
-9
@@ -239,8 +239,11 @@ static int GetC(void)
|
||||
int c;
|
||||
int c1;
|
||||
int c2;
|
||||
int cbuf[4];
|
||||
int ix;
|
||||
int n_bytes;
|
||||
unsigned char m;
|
||||
static int ungot2 = 0;
|
||||
static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07};
|
||||
static const unsigned char mask2[4] = {0,0x80,0x20,0x30};
|
||||
|
||||
@@ -250,7 +253,16 @@ static int GetC(void)
|
||||
return(c1);
|
||||
}
|
||||
|
||||
c1 = GetC_get();
|
||||
if(ungot2 != 0)
|
||||
{
|
||||
c1 = ungot2;
|
||||
ungot2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
c1 = GetC_get();
|
||||
}
|
||||
|
||||
if(option_multibyte == espeakCHARS_WCHAR)
|
||||
{
|
||||
count_characters++;
|
||||
@@ -271,14 +283,13 @@ static int GetC(void)
|
||||
if(((c1 & 0xf8) == 0xf0) && ((c1 & 0x0f) <= 4))
|
||||
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)
|
||||
option_multibyte=espeakCHARS_8BIT; // change "auto" option to "no"
|
||||
@@ -288,14 +299,17 @@ static int GetC(void)
|
||||
|
||||
if((c2 & 0xc0) != 0x80)
|
||||
{
|
||||
// This is not UTF8. Change to 8-bit characterset.
|
||||
if(n_bytes > 1)
|
||||
ungot2 = cbuf[2];
|
||||
GetC_unget(c2);
|
||||
break;
|
||||
}
|
||||
m = 0x80;
|
||||
c = (c << 6) + (c2 & 0x3f);
|
||||
n_bytes--;
|
||||
ix--;
|
||||
}
|
||||
if(n_bytes == 0)
|
||||
if(ix == 0)
|
||||
{
|
||||
count_characters++;
|
||||
return(c);
|
||||
|
||||
@@ -377,6 +377,21 @@ void SpectFrame::ToggleMarker(int n)
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
{//=========================================
|
||||
|
||||
@@ -98,6 +98,7 @@ public:
|
||||
void ZeroPeaks();
|
||||
void CopyPeaks(SpectFrame *sf);
|
||||
void ToggleMarker(int n);
|
||||
void ApplyVoiceMods();
|
||||
|
||||
void MakeWave(int peaks, PitchEnvelope &pitch, int amplitude, int duration);
|
||||
void MakeHtab(int numh, int *htab, int pitch);
|
||||
|
||||
@@ -468,7 +468,7 @@ void SpectDisplay::OnMenu(wxCommandEvent& event)
|
||||
int code;
|
||||
wxKeyEvent keyevent;
|
||||
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();
|
||||
|
||||
@@ -773,6 +773,11 @@ void SpectDisplay::OnKey(wxKeyEvent& event)
|
||||
display = 2;
|
||||
break;
|
||||
|
||||
case WXK_F10:
|
||||
sf->ApplyVoiceMods();
|
||||
display = 2;
|
||||
break;
|
||||
|
||||
case WXK_F2:
|
||||
// make and play sequence
|
||||
ReadDialogValues();
|
||||
@@ -1002,6 +1007,7 @@ void InitSpectrumDisplay()
|
||||
menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q"));
|
||||
menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z"));
|
||||
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->Append(208,_T("Play Selected Frame F1"));
|
||||
menu_spectdisplay->Append(209,_T("Play All F2"));
|
||||
|
||||
@@ -196,6 +196,7 @@ int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONE
|
||||
// bit 0 skip the next phoneme
|
||||
// bit 1 match this and Previous phoneme
|
||||
// bit 2 only at the start of a word
|
||||
// bit 4 don't match two phonemes across a word boundary
|
||||
|
||||
pr = mbrola_tab;
|
||||
while(pr->name != 0)
|
||||
@@ -205,9 +206,17 @@ int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONE
|
||||
if(pr->next_phoneme == 0)
|
||||
found = 1;
|
||||
else
|
||||
if((pr->next_phoneme == ':') && (plist->synthflags & SFLAG_LENGTHEN))
|
||||
{
|
||||
found = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pr->control & 2)
|
||||
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
|
||||
other_ph = ph_next;
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.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;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
@@ -271,6 +271,7 @@ Translator *SelectTranslator(const char *name)
|
||||
|
||||
|
||||
case L('h','r'): // Croatian
|
||||
case L('s','r'): // Serbian
|
||||
{
|
||||
static const wchar_t replace_chars_hr[] =
|
||||
{0x430,0x431,0x446,0x45b,0x447,0x434,0x452,0x45f,
|
||||
@@ -389,6 +390,10 @@ Translator *SelectTranslator(const char *name)
|
||||
tr = new Translator();
|
||||
tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron
|
||||
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;
|
||||
|
||||
|
||||
+6
-1
@@ -1601,6 +1601,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_
|
||||
int dict_flags; // returned from dictionary lookup
|
||||
int word_flags; // set here
|
||||
int embedded_count = 0;
|
||||
int letter_count = 0;
|
||||
char *word;
|
||||
char *p;
|
||||
int j, k;
|
||||
@@ -1854,6 +1855,8 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)
|
||||
{
|
||||
if(!IsAlpha(prev_out) || (langopts.ideographs && (c >= 0x3000)))
|
||||
{
|
||||
letter_count = 0;
|
||||
|
||||
if((prev_out != ' ') && (prev_out != '\''))
|
||||
{
|
||||
// start of word, insert space if not one there already
|
||||
@@ -1875,6 +1878,8 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)
|
||||
}
|
||||
}
|
||||
|
||||
letter_count++;
|
||||
|
||||
if(iswupper(c))
|
||||
{
|
||||
c = towlower(c);
|
||||
@@ -1909,7 +1914,7 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)
|
||||
source_index = prev_source_index; // unget
|
||||
}
|
||||
#endif
|
||||
if((all_upper_case) && ((ix - words[word_count].start) > 1))
|
||||
if((all_upper_case) && (letter_count > 2))
|
||||
{
|
||||
if((c == 's') && (next_in==' '))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user