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