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-fd96e6ae7743master
* : 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 |
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 |
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: | ||||
_> 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: |
.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 |
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 |
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/ |
phoneme Y: | phoneme Y: | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 240 | |||||
length 270 | |||||
formants vowel/y# | formants vowel/y# | ||||
endphoneme | endphoneme | ||||
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 |
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 | |||||
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 | ||||
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); |
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); |
} | } | ||||
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) | ||||
{//========================================= | {//========================================= |
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); |
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")); |
// 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; | ||||
#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; |
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; | ||||
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==' ')) | ||||
{ | { |