From cd145d025109f2fdd17935255ca8f1be0da0a34b Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 14 Sep 2012 20:11:11 +0000 Subject: [PATCH 1/5] [1.46.25] Changes to: pt, tt, ko. Phoneme definitions: added NOT operator, eg: IF NOT nextPh(isVowel) THEN git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@290 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/de_rules | 2 +- dictsource/dict_phonemes | 29 +++--- dictsource/en_list | 1 + dictsource/es_rules | 5 +- dictsource/ko_list | 41 +++++++++ dictsource/ko_rules | 36 ++++---- dictsource/pt_list | 22 ++++- dictsource/pt_rules | 12 ++- dictsource/tt_list | 8 +- dictsource/tt_rules | 16 ++-- phsource/compile_report | 191 ++++++++++++++++++++------------------- phsource/ph_bulgarian | 15 +-- phsource/ph_english | 6 +- phsource/ph_tatar | 181 +++++++++++++++++++++++-------------- phsource/phonemes | 23 +++++ src/compiledata.cpp | 18 +++- src/dictionary.cpp | 2 +- src/synthdata.cpp | 21 +++-- src/synthesize.h | 1 + src/tr_languages.cpp | 2 + src/translate.cpp | 3 +- 21 files changed, 394 insertions(+), 241 deletions(-) diff --git a/dictsource/de_rules b/dictsource/de_rules index fb141b56..e3896f33 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -256,7 +256,7 @@ e) chen (_ C@n ü) chen (_ C@n - chs ks (_ + chs ks chance SA~s@ chara (kt k%ara _) ch (ic S diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 691c270f..8d75b59b 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -78,7 +78,7 @@ S s2 t t2 tS ts v w z Z -Dictionary de_dict 2012-06-27 +Dictionary de_dict 2012-09-13 3 @ @- a A A: aI aU A~ E E2 E: e: EI i I @@ -102,7 +102,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2012-09-08 +Dictionary en_dict 2012-09-14 0 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 aI@ @@ -376,7 +376,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2012-09-11 +Dictionary pt_dict 2012-09-14 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -508,11 +508,11 @@ i i. i[ iA iE io iou N- o o- ong ou u u@ ua uai uei uo y y& y@ yE yi yu -; C f h j k kh l -l# m n N p ph Q q -Q" Q^ r R R2 R3 s s. -S; t th ts ts. ts. tS; tS; -tsh v w x X z. +; C f h j J^ k kh +l l# m n N p ph Q +q Q" Q^ r R R2 R3 s +s. S; t th ts ts. ts. tS; +tS; tsh v w x X z. Dictionary zhy_dict 2009-01-19 @@ -814,10 +814,10 @@ tS ts tS; v x z Z z; Z; -Dictionary tt_dict 2012-09-11 +Dictionary tt_dict 2012-09-14 -a A A2 e e2 i I o -u u2 V W y +& a A e e2 e: i I +o u u2 V W y : ? b d f g h j k l m n N p q r @@ -825,10 +825,11 @@ R s S S; t w x z Z Z; -Dictionary ko_dict 2012-06-14 +Dictionary ko_dict 2012-09-14 @ a e E i o u u- * - ; b d dZ; g h -j k k- kh l m n p -p- ph s t t- tS tS; w +j k k- kh l m n N +p p- ph q r s t t- +tS tS; w diff --git a/dictsource/en_list b/dictsource/en_list index 74ca29b9..e1d79dbe 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -3054,6 +3054,7 @@ Katie keIti Keighli keIli Keanu kI'A:nu: Kieran ki@r@n +Kris krIs Laurence l0r@ns Lawrence l0r@ns Leann li:'an diff --git a/dictsource/es_rules b/dictsource/es_rules index b9b0ea9d..e040bb71 100644 --- a/dictsource/es_rules +++ b/dictsource/es_rules @@ -1,4 +1,4 @@ -// translation rules for Spanish +// translation rules for Spanish // This file is UTF-8 encoded // Conditional rules @@ -128,8 +128,9 @@ ll (_ l .group m m m + @) m (_ =m _) mn (em n -_) mb (A mb + _) mb (A mb .group n diff --git a/dictsource/ko_list b/dictsource/ko_list index 2cb02d83..00082ddf 100644 --- a/dictsource/ko_list +++ b/dictsource/ko_list @@ -1,5 +1,6 @@ $textmode +// Number forms: _0 ᅧᆼ _1 ᅵᆯ _2 ᅵ @@ -23,6 +24,46 @@ _0C 백 _0M1 천 _1M1 천 +$phonememode +_0M2 m'an // 10^4 +_1M2 m'an +_0M3 tSh-@n||m'an // 10^7 +_1M3 tSh-@n||m'an +_0M4 '@q // 10^8 +_1M4 '@q +_0M5 tSh-@n||'@q // 10^11 +_1M5 tSh-@n||'@q +_0M6 tS;'o // 10^12 +_1M6 tS;'o +_0M7 tSh-@n||tS;'o +_1M7 tSh-@n||tS;'o +_0M8 gj'@nN +_1M8 gj'@nN +$textmode + + +// Character names: +ㄱ ㄱㅣㅇㅕㄱ +ㄲ ㅆㅏㅇㄱㅣㅇㅕㄱ +ㄴ ㄴㅣㅇㅡㄴ +ㄷ ㄷㅣㄱㅡㄷ +ㄸ ㅆㅏㅇㄷㅣㄱㅡㄷ +ㄹ ㄹㅣㅇㅡㄹ +ㅁ ㅁㅣㅇㅡㅁ +ㅂ ㅂㅣㅇㅡㅂ +ㅃ ㅆㅏㅇㅂㅣㅇㅡㅂ +ㅅ ㅅㅣㅇㅗㅅ +ㅆ ㅆㅏㅇㅅㅣㅇㅗㅅ +ㅇ ㅇㅣㅇㅡㅇ +ㅈ ㅈㅣㅇㅡㅈ +ㅉ ㅆㅏㅇㅈㅣㅇㅡㅈ +ㅊ ㅊㅣㅇㅡㅊ +ㅋ ㅋㅣㅇㅡㅋ +ㅌ ㅌㅣㅇㅡㅌ +ㅍ ㅍㅣㅇㅡㅍ +ㅎ ㅎㅣㅇㅡㅎ + +// Misc: // 사ᅵ시ᅩᆺ 고랫재 고랟째 귓밥 귇빱 diff --git a/dictsource/ko_rules b/dictsource/ko_rules index 328e5a33..12d89194 100644 --- a/dictsource/ko_rules +++ b/dictsource/ko_rules @@ -19,20 +19,20 @@ // Order: ㄱㄲㅋ ㄷㄸㅌ ㅂㅃㅍ ㅅㅆㅈㅉㅊ ㄴㅁ ㄹ ㅎ .group ᄀ // ㄱ - ᄀ g - _) ᄀ k + ᄀ q + _) ᄀ g L01) ᄀ k- L03) ᄀ kh .group ᄁ // ㄲ - ᄁ k- + ᄁ q- .group ᄏ // ㅋ ᄏ kh .group ᄃ // ㄷ ᄃ d - _) ᄃ t + _) ᄃ d L01) ᄃ t- L03) ᄃ th @@ -55,7 +55,7 @@ ᄑ ph .group ᄉ // ㅅ - ᄉ s + ᄉ |s L01) ᄉ s- .group ᄊ // ㅆ @@ -68,16 +68,16 @@ L03) ᄌ tSh; .group ᄍ // ㅉ - ᄍ tS;- // TODO: phoneme + ᄍ 'tS;- // TODO: phoneme .group ᄎ // ㅊ - ᄎ tSh; // TODO: phoneme + ᄎ tSh- // TODO: phoneme .group ᄂ // ㄴ - ᄂ n + ᄂ ;n .group ᄆ // ㅁ - ᄆ m + ᄆ ;m .group ᄅ // ㄹ ᄅ * // TODO: alveolar flap [ɾ] @@ -87,7 +87,7 @@ ᄒ h // TODO: [ɦ] _) ᄒ h -// Medials +// Medials or vowels .group ᅡ // ㅏ ᅡ a @@ -157,7 +157,7 @@ // Order: ㄱㄳㄲㅋ ㄷㅌ ㅂㅍ ㅅㅆㅈㅊ ㄴㅁ ㅇㅎ ㄹ .group ᆨ // ㄱ - ᆨ k // TODO: final stops + ᆨ q // It is actually q, as using k adds unnecessary sound. ᆨᄒ kh .group ᆪ // ㄳ @@ -175,14 +175,14 @@ ᆿ (A kh .group ᆮ // ㄷ - ᆮ t + ᆮ d- // Actually a soft D. ᆮᄂ nn ᆮᄆ mm ᆮᄒ th ᆮ (L02 dZ; .group ᇀ // ㅌ - ᇀ t + ᇀ t- ᇀᄂ nn ᇀᄆ mm ᇀ (A th @@ -202,14 +202,14 @@ ᇁ (A ph .group ᆺ // ㅅ - ᆺ t + ᆺ t- ᆺᄂ nn ᆺᄆ mm ᆺ (A s ᆺᄒ s- .group ᆻ // ㅆ - ᆻ t + ᆻ t- ᆻᄂ nn ᆻᄆ mm ᆻ (A s- @@ -241,14 +241,14 @@ ᆷ m .group ᆼ // ㅇ - ᆼ ng + ᆼ nN .group ᇂ // ㅎ - ᇂ t + ᇂ t- ᇂ (A .group ᆯ // ㄹ - ᆯ l + ᆯ rr ᆯᄅ l ᆯ (A * diff --git a/dictsource/pt_list b/dictsource/pt_list index 0c125207..f9a2b59d 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -644,6 +644,7 @@ governo gov'ernU $noun // $alt changes stressed [e] or [o] phoneme to open [E] or [O] // $alt2 changes stressed [E] or [O] phoneme to close [e] or [o] +aborto $alt $verb acerto $alt2 $noun adereço $alt2 adore $alt @@ -659,10 +660,12 @@ ameba $alt amores $alt2 anoiteça $alt2 anoiteço $alt2 +apego $alt2 apreço $alt2 aperto $alt2 $noun apoio $alt $verb aprendeste $alt2 +arremesso $alt2 $noun assembleia $alt atrozes $alt austera $alt @@ -676,11 +679,13 @@ boleia $alt bolo $alt2 borboleta $alt2 bordo $alt +bromelha $alt cabeça $alt2 cacete $alt2 cachorra $alt2 camiseta $alt2 cantora $alt2 +caractere $alt casebre $alt catorze $alt2 cefaleia $alt @@ -714,9 +719,12 @@ crede $alt2 cresce $alt crescem $alt der $alt +desapego $alt2 $noun desce $alt descem $alt +descordo $alt descova $alt2 +desespero $alt2 $noun desfecho $alt2 desprezo $alt $verb deva $alt2 @@ -727,8 +735,11 @@ discordo $alt dobro $alt2 $noun doce $alt2 droga $alt +emprego $alt2 $noun endereço $alt2 enumerem $alt +enredo $alt $verb +enterro $alt2 $noun enxerto $alt2 $noun epopeia $alt eritreia $alt @@ -740,7 +751,7 @@ esforços $alt esperma $alt espeto $alt2 $noun espiroqueta $alt2 -enterro $alt2 $noun +esqueleto $alt2 estiverdes $alt estiveres $alt estrofe $alt @@ -750,6 +761,7 @@ expeça $alt2 expeço $alt2 farofa $alt febre $alt +fera $alt fere $alt ferem $alt fezes $alt @@ -758,6 +770,7 @@ Fizeram $alt fizerem $alt fizerdes $alt fizeres $alt +folga $alt fogos $alt fores $alt2 forro $alt $verb @@ -765,6 +778,7 @@ fosse $alt2 fossem $alt2 foste $alt2 frevo $alt2 +galera $alt gameta $alt2 geleia $alt gelo $alt $verb @@ -850,10 +864,12 @@ povos $alt poxa p'oS& preta $alt2 preto $alt2 +primavera $alt profere $alt proferem $alt puder $alt puserdes $alt +recomeço $alt2 $noun recordo $alt recorto $alt rede $alt2 @@ -874,11 +890,14 @@ sincero $alt sobe $alt sobem $alt soco $alt2 +soco $alt $verb sofrem $alt sofre $alt sofreste $alt2 +sogra $alt sopre $alt soprem $alt +sopro $alt $verb sorvete $alt2 sossego $alt2 $noun souber $alt @@ -889,6 +908,7 @@ sugere $alt sugerem $alt suor swOr tapete $alt2 +tempero $alt $verb teta $alt2 tiver $alt tiveres $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 227096e9..f25f31b2 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -16,7 +16,7 @@ // endings .L01 a am o -.L02 a am e em o +.L02 a am e em o ue uem .L03 a am .group a @@ -367,6 +367,13 @@ _compar) e (çL01_ e _desapar) e (çL01_ e _esclar) e (çL01_ e _reapar) e (çL01_ e + _sol) e (trL01_ E +_acont) e (çL03_ e +_envaid) e (çL01_ e + _ofer) e (çL01_ e +_enriqu) e (çL01_ e +_descr) e (vL01_ e +_enfraqu) e (çL01_ e //endsort .group é @@ -653,11 +660,14 @@ _reapar) e (çL01_ e ?1 f) o (rmulá u // eg: formulário, formulários. ?1 v) o (lt O +//sort _m) o (lhL02_ O + _ref) o (gL02_ O c) o (rrL03_ o // escorra, incorra, corra, recorra _m) o (rrL03_ o _ap) oi (L03_ OI p) ostos (_ Ost=Us# // dispostos etc. +//endsort .group ô ô ''o diff --git a/dictsource/tt_list b/dictsource/tt_list index 340e2c8f..b34ce97d 100644 --- a/dictsource/tt_list +++ b/dictsource/tt_list @@ -36,8 +36,8 @@ щ SS;A ъ kAlVnl,Vqbilges'e ы V: -ь neS;kal,ekbilges'e -э e: +ь neS;k&l,ekbilges'e +э e|: ю ju я jA @@ -69,7 +69,7 @@ _4X kVr'Vk _5X ill'e _6X Altm'VS _7X Z;itm'eS -_8X siks'an +_8X siks'&n _9X tuks'An _0C j'Wz _0M1 m'eN @@ -80,4 +80,4 @@ _1M3 milli'Ard _0M4 billi'on _1M4 billi'on -_dpt bWt,en +_dpt _bWt,en diff --git a/dictsource/tt_rules b/dictsource/tt_rules index 09d21a83..2923bff1 100755 --- a/dictsource/tt_rules +++ b/dictsource/tt_rules @@ -6,7 +6,8 @@ а A .group ә - ә a + ә & + әе e: // 'әнкәен' .group б б b @@ -15,13 +16,13 @@ в w // [v] in Russian words .group г - г g // may be [Q] or [r"] ?? + г g // changes to [Q] or [Q"] .group д д d .group е - _) е je2 // may be [je] [jV] + _) е je2 // changes to [je] or [jV] е e .group ё @@ -38,6 +39,7 @@ .group и и i + A) и j .group й й j @@ -54,7 +56,7 @@ .group н н n - н (к N +// н (к N н (г N н (х N @@ -81,9 +83,11 @@ .group у у u // or w + A) у w .group ү ү y // or w + A) ү w .group ф ф f @@ -120,10 +124,10 @@ э e .group ю - ю ju2 // or jy + ю ju2 // changes to ju or jy .group я - я jA2 // or ja + я ja // changes to jA or j& .group $ dolAR diff --git a/phsource/compile_report b/phsource/compile_report index 6b7406f3..38e51190 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,88 +1,88 @@ 83 phoneme tables new total - base 107 107 -consonants 10 116 - base2 26 123 - en 53 153 - en-n 33 153 - en-us 41 154 - en-sc 40 155 - en-rp 34 153 - en-wm 31 153 - en-wi 30 153 - af 39 136 - cy 29 132 - de 41 139 - eo 13 114 - jbo 2 114 - nci 3 123 - fi 41 133 - et 40 133 - fr 64 144 - fr-ca 11 144 - hi 57 148 - ta 23 152 - kn 17 148 - ml 21 151 - hu 25 122 - lt 44 137 - lv 29 125 - nl 35 128 - pl 22 120 - sk 28 135 - cs 7 135 - hr 25 140 - mk 3 141 - sr 14 142 - ru 49 137 - bg 14 123 - it 19 127 - la 21 124 - es 15 123 - es-la 1 123 - ca 11 125 - pt 29 138 - pt-pt 20 138 - ro 36 146 - el 10 123 - grc 12 127 - sv 22 127 - no 28 132 - is 42 139 - vi 41 139 - zhy 41 136 - zh 64 153 - sw 9 108 - tr 19 126 - ku 18 127 - id 15 125 - sq 33 126 - hy 23 117 - da 27 120 - ka 19 112 - rw 15 130 - ne 18 156 - pa 15 150 - prs 8 111 - sl 10 135 - gd 6 107 - nso 12 111 - ht 11 144 - az 10 127 - ak 8 109 - am 15 112 - wo 18 118 - dv 14 148 - te 16 148 - si 24 154 - tn 27 119 - mt 32 127 - bo 10 152 - kk 20 117 - fa 9 110 - ga 21 125 - tt 18 116 - ko 15 114 + base 109 109 +consonants 10 118 + base2 26 125 + en 53 155 + en-n 33 155 + en-us 41 156 + en-sc 40 157 + en-rp 34 155 + en-wm 31 155 + en-wi 30 155 + af 39 138 + cy 29 134 + de 41 141 + eo 13 116 + jbo 2 116 + nci 3 125 + fi 41 135 + et 40 135 + fr 64 146 + fr-ca 11 146 + hi 57 150 + ta 23 154 + kn 17 150 + ml 21 153 + hu 25 124 + lt 44 139 + lv 29 127 + nl 35 130 + pl 22 122 + sk 28 137 + cs 7 137 + hr 25 142 + mk 3 143 + sr 14 144 + ru 49 139 + bg 14 124 + it 19 129 + la 21 126 + es 15 125 + es-la 1 125 + ca 11 127 + pt 29 140 + pt-pt 20 140 + ro 36 148 + el 10 125 + grc 12 129 + sv 22 129 + no 28 134 + is 42 141 + vi 41 141 + zhy 41 138 + zh 64 155 + sw 9 110 + tr 19 128 + ku 18 129 + id 15 127 + sq 33 127 + hy 23 119 + da 27 122 + ka 19 114 + rw 15 132 + ne 18 158 + pa 15 152 + prs 8 113 + sl 10 137 + gd 6 109 + nso 12 113 + ht 11 146 + az 10 129 + ak 8 111 + am 15 114 + wo 18 120 + dv 14 150 + te 16 150 + si 24 156 + tn 27 121 + mt 32 129 + bo 10 154 + kk 20 118 + fa 9 112 + ga 21 127 + tt 23 120 + ko 15 116 Data file Used by b/b [b] base @@ -417,7 +417,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [hæu] base +l/l@ [h1ø] base [l#] base [l] fr [l/2] fr @@ -451,7 +451,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [hæu] base +l/la [h1ø] base [l#] base [l] fr [l/2] fr @@ -459,7 +459,7 @@ l/la [h [K] tn l/l_a [l/3] base [l/] fr -l/le [hæu] base +l/le [h1ø] base [l#] base [l] fr [l/2] fr @@ -471,7 +471,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [hæu] base +l/li [h1ø] base [l#] base [l] fr [l/2] fr @@ -481,11 +481,11 @@ l/li [h l/l_i [l/3] base [l/] fr [i] sq -ll/ll [L] bg -ll/_ll [L] bg +ll/ll [L] base +ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [hæu] base +l/lo [h1ø] base [l#] base [l/2] fr [K] nso @@ -496,7 +496,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [hæu] base +l/lu [h1ø] base [l#] base [l] fr [l/2] fr @@ -505,7 +505,7 @@ l/lu [h l/l_u [l/3] base [l/] fr l/l_vi [l] vi -ll/xll [L] bg +ll/xll [L] base l/l_y [l/] fr l/tl [l] base [l] fr @@ -1493,7 +1493,7 @@ vowel/@_2 [@] vi [@] sq [V] sq [@/] sq -vowel/&_2 [a] tt + [V] tt vowel/@_3 [@#] en [@] en-sc [I] en-sc @@ -1655,7 +1655,6 @@ vowel/aa [a:] et [aa] zhy [a] hy [a] az - [A] tt vowel/aa# [O] en-us [0] en-wi [a2] fi @@ -1682,6 +1681,7 @@ vowel/aa_8 [0] en-us [A1] et [A] nl [a:] is + [A] tt [a] ko vowel/aa_9 [a] fi [a] et @@ -1749,6 +1749,7 @@ vowel/e_3 [i] en-n vowel/e_5 [i] en-sc vowel/e_6 [e] ht [e] ak + [e:] tt vowel/e_7 [e:] et vowel/e_8 [E:] de [e] fr @@ -1756,6 +1757,7 @@ vowel/e_8 [E:] de vowel/ee [E] en-n [E] sv [e] ka + [&] tt vowel/e_e [E] en-sc [E:] is vowel/ee# [E#] pl @@ -2083,7 +2085,6 @@ vowel/o-_2 [V] en-n vowel/o_3 [oU] en-sc [o] kk vowel/o-_3 [U] en-rp - [V] tt vowel/o-_4 [o] ro [o] am vowel/o_5 [O] da diff --git a/phsource/ph_bulgarian b/phsource/ph_bulgarian index 4a56e0fb..005c03f7 100644 --- a/phsource/ph_bulgarian +++ b/phsource/ph_bulgarian @@ -72,20 +72,7 @@ phoneme l endphoneme phoneme L // velar L - liquid - lengthmod 7 - - IF nextPh(isNotVowel) THEN - ChangePhoneme(l/2) // use 'dark' [l] after a vowel - ENDIF - - VowelEnding(ll/xll, -40) - - IF prevPh(isPause) THEN - FMT(ll/_ll) - ENDIF - - FMT(ll/ll) + import_phoneme base/L endphoneme diff --git a/phsource/ph_english b/phsource/ph_english index 088a6e57..566f3536 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -51,8 +51,7 @@ phoneme l // use dark [l/2] before not-vowel liquid lengthmod 7 - IF nextPhW(isVowel) THEN - ELSE + IF NOT nextPhW(isVowel) THEN IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN ChangePhoneme(l/2) ELSE @@ -110,8 +109,7 @@ phoneme z/2 // used for 's suffix InsertPhoneme(I2) ENDIF - IF prevPh(isVoiced) THEN - ELSE + IF NOT prevPh(isVoiced) THEN ChangePhoneme(s) ENDIF ChangePhoneme(z) diff --git a/phsource/ph_tatar b/phsource/ph_tatar index a6e6b1ff..d37d3e34 100644 --- a/phsource/ph_tatar +++ b/phsource/ph_tatar @@ -1,6 +1,6 @@ -// use 'flag1' for front vowels +// use 'flag1' for front vowels, 'flag2' for back vowels phoneme i vowel flag1 starttype #i endtype #i @@ -15,11 +15,87 @@ phoneme y endphoneme phoneme u - vowel starttype #u endtype #u + vowel flag2 starttype #u endtype #u length 180 FMT(vowel/u) endphoneme + +phoneme e + vowel flag1 starttype #@ endtype #@ + length 110 + FMT(vowel/ii#) +endphoneme + + +phoneme W + vowel flag1 starttype #@ endtype #@ + length 110 + FMT(vowel/oe) +endphoneme + +phoneme o + vowel flag2 starttype #o endtype #o + length 110 + FMT(vowel/o_mid) +endphoneme + +phoneme V + vowel flag2 starttype #@ endtype #@ + length 110 + ipa ɯ + FMT(vowel/@_2) +endphoneme + + +phoneme & + vowel flag1 starttype #e endtype #e + length 180 + FMT(vowel/ee) +endphoneme + +phoneme A + vowel flag2 starttype #a endtype #a + length 180 + IF NOT nextPhW(w) AND NOT thisPh(isTranslationGiven) THEN + IF thisPh(isFirstVowel) THEN + ChangePhoneme(0) + ENDIF + IF prevVowel(0) AND thisPh(isSecondVowel) THEN + ChangePhoneme(0) + ENDIF + ENDIF + FMT(vowel/aa_8) +endphoneme + +phoneme 0 + vowel flag2 starttype #o endtype #o + length 180 + FMT(vowel/0_3) +endphoneme + + +phoneme e: + vowel flag1 starttype #e endtype #e + length 240 + FMT(vowel/e_6) +endphoneme + +phoneme I + vowel flag1 starttype #i endtype #i + length 110 + FMT(vowel/ii) +endphoneme + +phoneme a // letter 'я' + vowel starttype #a endtype #a + length 180 + IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN // front vowels + ChangePhoneme(&) + ENDIF + ChangePhoneme(A) +endphoneme + phoneme u2 // letter 'ю' vowel starttype #u endtype #u length 180 @@ -30,78 +106,14 @@ phoneme u2 // letter 'ю' ENDIF endphoneme -phoneme e - vowel flag1 starttype #@ endtype #@ - length 100 - FMT(vowel/ii#) -endphoneme - phoneme e2 // 'e' at start of word vowel starttype #@ endtype #@ length 100 - IF nextVowel(isFlag1) THEN + IF nextVowel(isFlag2) THEN + ChangePhoneme(V) + ELSE ChangePhoneme(e) ENDIF - ChangePhoneme(V) -endphoneme - -phoneme W - vowel flag1 starttype #@ endtype #@ - length 100 - FMT(vowel/oe) -endphoneme - -phoneme o - vowel starttype #o endtype #o - length 100 - FMT(vowel/o_mid) -endphoneme - -phoneme V - vowel starttype #@ endtype #@ - length 100 - FMT(vowel/o-_3) -endphoneme - - -phoneme a - vowel flag1 starttype #a endtype #a - length 180 - FMT(vowel/&_2) -endphoneme - -phoneme A - vowel starttype #a endtype #a - length 180 - IF thisPh(isFirstVowel) THEN - ChangePhoneme(0) - ENDIF - IF prevVowel(0) THEN - ChangePhoneme(0) - ENDIF - FMT(vowel/aa) -endphoneme - -phoneme A2 // letter 'я' - vowel starttype #a endtype #a - length 180 - IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN - ChangePhoneme(a) - ENDIF - ChangePhoneme(A) -endphoneme - -phoneme 0 - vowel starttype #o endtype #o - length 180 - FMT(vowel/0_3) -endphoneme - - -phoneme I - vowel flag1 starttype #i endtype #i - length 100 - FMT(vowel/ii) endphoneme @@ -113,10 +125,39 @@ phoneme r endphoneme phoneme t - import_phoneme base/t[ + import_phoneme base2/t endphoneme phoneme d import_phoneme base/d[ endphoneme +phoneme k + vls vel stop + IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN // back vowels + ChangePhoneme(q) + ENDIF + CALL base/k +endphoneme + +phoneme G + import_phoneme base/Q" +endphoneme + +phoneme g + vcd vel frc + IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN + ChangePhoneme(G) + ELSE + ChangePhoneme(Q) + ENDIF +endphoneme + + +phoneme l + liquid + IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN + ChangePhoneme(L) + ENDIF + CALL base/l +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index dab4c599..0b536b85 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -576,6 +576,29 @@ phoneme l. endphoneme +phoneme L/ + import_phoneme base/l/2 +endphoneme + +phoneme L // velar L + liquid + lengthmod 7 + + IF nextPh(isNotVowel) THEN + ChangePhoneme(L/) // use 'dark' [l] after a vowel + ENDIF + + VowelEnding(ll/xll, -40) + + IF prevPh(isPause) THEN + FMT(ll/_ll) + ENDIF + + FMT(ll/ll) +endphoneme + + + phoneme w liquid diff --git a/src/compiledata.cpp b/src/compiledata.cpp index d0f005b1..de977964 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -71,6 +71,7 @@ typedef struct { #define k_AND 1 #define k_OR 2 #define k_THEN 3 +#define k_NOT 4 #define kTHISSTRESS 0x800 @@ -90,6 +91,7 @@ static keywtab_t k_conditions[] = { {"AND", 0, k_AND}, {"OR", 0, k_OR}, {"THEN", 0, k_THEN}, + {"NOT", 0, k_NOT}, {"prevPh", tWHICH_PHONEME, 0}, {"prevPhW", tWHICH_PHONEME, 5}, {"thisPh", tWHICH_PHONEME, 1}, @@ -2257,10 +2259,11 @@ int CompileIf(int elif) int key; int finish = 0; int word = 0; - int word2 = 0; + int word2; int data; int bitmap; int brackets; + int not_flag; USHORT *prog_last_if = NULL; then_count = 2; @@ -2268,6 +2271,8 @@ int CompileIf(int elif) while(!finish) { + not_flag = 0; + word2 = 0; if(prog_out >= prog_out_max) { error("Phoneme program too large", NULL); @@ -2277,6 +2282,13 @@ int CompileIf(int elif) if((key = NextItem(tCONDITION)) < 0) error("Expected a condition, not '%s'",item_string); + if((item_type == 0) && (key == k_NOT)) + { + not_flag = 1; + if((key = NextItem(tCONDITION)) < 0) + error("Expected a condition, not '%s'",item_string); + } + if(item_type == tWHICH_PHONEME) { // prevPh(), thisPh(), nextPh(), next2Ph() etc @@ -2331,7 +2343,9 @@ int CompileIf(int elif) *prog_out++ = word | i_CONDITION; if(word2 != 0) - *prog_out++ = word2; + *prog_out++ = word2; + if(not_flag) + *prog_out++ = i_NOT; // expect AND, OR, THEN switch(NextItem(tCONDITION)) diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 85a4ead6..0aa1d63c 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -521,7 +521,7 @@ sprintf(outptr,"* "); unsigned short ipa1[96] = { 0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, 0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, -0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x4c,0x271,0x14b,0x254, +0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, 0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f diff --git a/src/synthdata.cpp b/src/synthdata.cpp index eb557105..d39d90d5 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.24 11.Sep.12"; +const char *version_string = "1.46.25 14.Sep.12"; const int version_phdata = 0x014624; int option_device_number = -1; @@ -929,6 +929,7 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ int instn2; int or_flag; bool truth; + bool truth2; int data; int end_flag; int ix; @@ -1044,14 +1045,20 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ while((instn & 0xe000) == 0x2000) { // process a sequence of conditions, using boolean accumulator - if(or_flag) - truth = (truth || InterpretCondition(tr, control, plist, prog, worddata)); - else - truth = (truth && InterpretCondition(tr, control, plist, prog, worddata)); - or_flag = instn & 0x1000; + truth2 = InterpretCondition(tr, control, plist, prog, worddata); prog += NumInstnWords(prog); + if(*prog == i_NOT) + { + truth2 = truth2 ^ 1; + prog++; + } + + if(or_flag) + truth = truth || truth2; + else + truth = truth && truth2; + or_flag = instn & 0x1000; instn = *prog; -// instn = *(++prog); } if(truth == false) diff --git a/src/synthesize.h b/src/synthesize.h index 10151e09..b7041b72 100644 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -273,6 +273,7 @@ typedef struct { #define i_RETURN 0x0001 #define i_CONTINUE 0x0002 +#define i_NOT 0x0003 // Group 0 instrcutions with 8 bit operand. These values go into bits 8-15 of the instruction #define i_CHANGE_PHONEME 0x01 diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 7f0b9b69..eb6ca4b4 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -957,6 +957,8 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.numbers = NUM_OMIT_1_HUNDRED; + tr->langopts.break_numbers = 0x9999998; + tr->langopts.max_digits = 20; } break; diff --git a/src/translate.cpp b/src/translate.cpp index aa06eed1..fdc7e40c 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -3206,7 +3206,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre break; *pn++ = c; - if((--nx > 0) && (tr->langopts.break_numbers & (1 << nx))) + nx--; + if((nx > 0) && (tr->langopts.break_numbers & (1 << nx))) { memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers From 736e6deb285f28a310803ee5f8665fbfb4945ec7 Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 17 Sep 2012 21:04:16 +0000 Subject: [PATCH 2/5] Numbers: Support "myriad" (10^4) based number systems (lang=ko). Lang=pt: fix ordinal numbers 11-19. Lang=en-us: minor vowel changes. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@291 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 2 +- dictsource/ko_list | 114 +++++++++++++++++++-------------------- dictsource/ko_rules | 14 ++++- dictsource/pt_list | 2 +- docs/phonemes.html | 11 ++-- phsource/compile_report | 16 +++--- phsource/ph_english_us | 2 +- phsource/vdiph/aae | Bin 2921 -> 2921 bytes phsource/vowel/V_6 | Bin 6239 -> 6755 bytes phsource/vowel/aa_8 | Bin 2156 -> 2758 bytes phsource/vwl_en_us/3_us | Bin 1348 -> 1692 bytes phsource/vwl_en_us/3_us2 | Bin 1671 -> 2101 bytes phsource/vwl_en_us/ee | Bin 3352 -> 3782 bytes src/numbers.cpp | 82 +++++++++++++++++++++------- src/synthdata.cpp | 50 +++++++++++------ src/synthesize.h | 1 + src/tr_languages.cpp | 5 +- src/translate.h | 8 ++- src/vowelchart.cpp | 31 ++--------- 19 files changed, 196 insertions(+), 142 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 8d75b59b..4f3bf635 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -825,7 +825,7 @@ R s S S; t w x z Z Z; -Dictionary ko_dict 2012-09-14 +Dictionary ko_dict 2012-09-15 @ a e E i o u u- diff --git a/dictsource/ko_list b/dictsource/ko_list index 00082ddf..8f7a1e71 100644 --- a/dictsource/ko_list +++ b/dictsource/ko_list @@ -1,68 +1,64 @@ -$textmode +// eSpeak Korean rules. Changed pronunciation, as numbers were not announced. + // Number forms: -_0 ᅧᆼ -_1 ᅵᆯ -_2 ᅵ -_3 삼 -_4 사 -_5 ᅩ -_6 ᅲᆨ -_7 칠 -_8 팔 -_9 구 -_1X 십 -_2X ᅵ십 -_3X 삼십 -_4X 사십 -_5X ᅩ십 -_6X ᅲᆨ십 -_7X 칠십 -_8X 팔십 -_9X 구십 -_0C 백 -_0M1 천 -_1M1 천 - -$phonememode -_0M2 m'an // 10^4 -_1M2 m'an -_0M3 tSh-@n||m'an // 10^7 -_1M3 tSh-@n||m'an -_0M4 '@q // 10^8 -_1M4 '@q -_0M5 tSh-@n||'@q // 10^11 -_1M5 tSh-@n||'@q -_0M6 tS;'o // 10^12 -_1M6 tS;'o -_0M7 tSh-@n||tS;'o -_1M7 tSh-@n||tS;'o -_0M8 gj'@nN -_1M8 gj'@nN -$textmode +_0 j'@N_! +_1 'iR_! +_2 'i_! +_3 s'am_! +_4 s'a_! +_5 'o_! +_6 j'uq_! +_7 tS'h'iR_! +_8 ph'aR_! +_9 g'u_! +_1X s'ip_! +_2X 'i_!||s'ip_! +_3X s'am_!||s'ip_! +_4X s'a_!||s'ip_! +_5X 'o_!||s'ip_! +_6X j'uq_!||s'ip_! +_7X tS'h'iR_!s'ip_! +_8X ph'aR_!||s'ip_! +_9X g'u_!||s'ip_! +_0C p'Eq_! +// Larger numbers +_0M0 tS'h-@n // 10^3 +_1M0 tS'h-@n +_0M1 m'an // 10^4 +_1M1 m'an +_0M2 '@q // 10^8 +_1M2 '@q +_0M3 tS;'o // 10^12 +_1M3 tS;'o +_0M4 gj'@N +_1M4 gj'@N // Character names: -ㄱ ㄱㅣㅇㅕㄱ -ㄲ ㅆㅏㅇㄱㅣㅇㅕㄱ -ㄴ ㄴㅣㅇㅡㄴ -ㄷ ㄷㅣㄱㅡㄷ -ㄸ ㅆㅏㅇㄷㅣㄱㅡㄷ -ㄹ ㄹㅣㅇㅡㄹ -ㅁ ㅁㅣㅇㅡㅁ -ㅂ ㅂㅣㅇㅡㅂ -ㅃ ㅆㅏㅇㅂㅣㅇㅡㅂ -ㅅ ㅅㅣㅇㅗㅅ -ㅆ ㅆㅏㅇㅅㅣㅇㅗㅅ -ㅇ ㅇㅣㅇㅡㅇ -ㅈ ㅈㅣㅇㅡㅈ -ㅉ ㅆㅏㅇㅈㅣㅇㅡㅈ -ㅊ ㅊㅣㅇㅡㅊ -ㅋ ㅋㅣㅇㅡㅋ -ㅌ ㅌㅣㅇㅡㅌ -ㅍ ㅍㅣㅇㅡㅍ -ㅎ ㅎㅣㅇㅡㅎ +ᄀ gij'@q +ᄁ 's-aNq,ij@q +ᄂ ni;'u-n +ᄃ diq'u-d- +ᄄ 's-aNd,iqu-d- +ᄅ *i;'u-rr +ᄆ mi;'u-m +ᄇ pi;'u-p +ᄈ 's-aNb,i;u-p +ᄉ si;'ot- +ᄊ 's-aNs,i;ot- +ᄋ i;'u-N +ᄌ tS;i;'u-t +ᄍ 's-aNdZ;,i;u-t +ᄎ tSh-'i;u-t +ᄏ khi;'u-k +ᄐ thi;'u-t- +ᄑ phi;'u-p +ᄒ hi;'u-t- +// end of character names. + +$textmode // Misc: // 사ᅵ시ᅩᆺ 고랫재 고랟째 diff --git a/dictsource/ko_rules b/dictsource/ko_rules index 12d89194..6190cbe0 100644 --- a/dictsource/ko_rules +++ b/dictsource/ko_rules @@ -1,5 +1,14 @@ +// eSpeak Korean rules // This file is UTF8 encoded +// char names (mostly to catch "ng" sound): +.group ᄋ +ᄋ i;'u-N + + + + + .replace // Note: These specific range of "normalized" unicode characters of Korean are @@ -15,6 +24,9 @@ // h-finals: ㅎ ㄶㅀ .L03 ᇂ ᆭ ᆶ +// Char names: + + // Initials // Order: ㄱㄲㅋ ㄷㄸㅌ ㅂㅃㅍ ㅅㅆㅈㅉㅊ ㄴㅁ ㄹ ㅎ @@ -241,7 +253,7 @@ ᆷ m .group ᆼ // ㅇ - ᆼ nN + ᆼ N .group ᇂ // ㅎ ᇂ t- diff --git a/dictsource/pt_list b/dictsource/pt_list index f9a2b59d..76fcb2fd 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -217,7 +217,7 @@ _6o s'est _7o s'EtSim _8o oIt'av _9o n'on -_10o d'Esim +_1Xo d'Esim _2Xo viZ'Ezim _3Xo tRiZ'Ezim _4Xo kwad*aZ'Ezim diff --git a/docs/phonemes.html b/docs/phonemes.html index 0c3f80e4..c0ab5fc7 100644 --- a/docs/phonemes.html +++ b/docs/phonemes.html @@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to espeak -[p] -[b] +[p] +[b] [t] [d] @@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[@] -alphaschwa +alphaschwa
[3] betterrhotic schwa. In British English this is the same as [@], but it includes 'r' colouring in American and other rhotic accents. In these cases a separate [r] should not be included unless it is followed immediately by another vowel. @@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[a]trap
[aa]bathThis is [a] in some accents, [A:] in others. -
[a2]aboutThis may be [@] or may be a more open schwa. +
[a#]aboutThis may be [@] or may be a more open schwa.
[A:]palm
[A@]start

@@ -161,7 +161,8 @@ Other languages will have their own vowel definitions, eg:

- +

+ [:] can be used to lengthen a vowel, eg [e:] diff --git a/phsource/compile_report b/phsource/compile_report index 38e51190..fad5477c 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -417,7 +417,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h1ø] base +l/l@ [hÖ{] base [l#] base [l] fr [l/2] fr @@ -451,7 +451,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h1ø] base +l/la [hÖ{] base [l#] base [l] fr [l/2] fr @@ -459,7 +459,7 @@ l/la [h1 [K] tn l/l_a [l/3] base [l/] fr -l/le [h1ø] base +l/le [hÖ{] base [l#] base [l] fr [l/2] fr @@ -471,7 +471,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h1ø] base +l/li [hÖ{] base [l#] base [l] fr [l/2] fr @@ -485,7 +485,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [h1ø] base +l/lo [hÖ{] base [l#] base [l/2] fr [K] nso @@ -496,7 +496,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [h1ø] base +l/lu [hÖ{] base [l#] base [l] fr [l/2] fr @@ -1088,11 +1088,11 @@ vdiph2/uu@ [U@] en [U@] en-n [U@] en-wm [u@] vi -vdiph2/uw [u:] en-us vdiph2/uw_2 [u:] en vdiph2/uw_3 [yU] ro vdiph2/uw_4 [u:] en-n -vdiph2/uw_6 [u#] kk +vdiph2/uw_6 [u:] en-us + [u#] kk vdiph2/y@ [y@] zh vdiph2/y#@ [Y@] af vdiph2/ye [yE] sq diff --git a/phsource/ph_english_us b/phsource/ph_english_us index edf8229f..e564ce9b 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -235,7 +235,7 @@ endphoneme phoneme u: vowel starttype #u endtype #u length 190 - FMT(vdiph2/uw) + FMT(vdiph2/uw_6) endphoneme diff --git a/phsource/vdiph/aae b/phsource/vdiph/aae index 92973c8e94f65a7dd48469273b125c13ab663ef4..29232deceb1d97ab4df1288f698ee9555bdd3602 100644 GIT binary patch delta 423 zcmaDU_EKzuZ@mm-12+@%Jf=tn1_lsjV31*UkaA&?VTuB>L70Kz4a)%u8Kx;rJwP@H zGcXu&IS4#pe89-U$iM)?3=9Rl4ZNr#|M(g>QAIXLA7BEBd;#hJVFreZ$>*4@C$lro zV_YzK8KXSST=VWf@vf<7+5mKo0keEPHzNc0J0|3?;b(S`2to-P71jnZ2b8dp;d0+p@14h^!Knt5$(hcZgv-uqJY<2){Hc=7) delta 423 zcmaDU_EKzuZ@mN~1J^vJc}$TE3=AO5!0>?SfVd2k3{w=44Z;iz8(0oVPGOqD)B|LL zFayI4P6qx5j1L%D7#SEqn1P{ymw^ve#D<@N8&$+Xx&f%?0pk~-4iIKwsF-|?*?KZN z<2=Tm$;%k!Y37=D|A}`^J<|rp36l+&L9RK#i5WIin3gai!sZPTVdKH;Ab=VYZ}^A^ Lo6YB#XR`wUs4-I# diff --git a/phsource/vowel/V_6 b/phsource/vowel/V_6 index 3e8a2a976ea0a0af0eeda87ca4f2c6bbf09319fa..ccf454d1f7b0cc5467fb8b5fbd95a70c7cdb6b68 100644 GIT binary patch delta 1223 zcmchW!7Bt&9LK-!H#_xqX;$GN<+9S|BstmLkR&&2sa+RW2g!1AP~<2j|ABDaiFD!J~2UL~pn1z5C(__=5# z=^?*49G?ZYwDosquVF2h$U3uAL6~!9)tjn!M<+hLg>QPMw0(MuM)_yGOzj&0G3oQe zpyY@=GC*85pm!nb8Eu5VGAdC4%SuK|`UJX_jNW96P&3*$TE!n_WZMl$+%(rE;E^z? zgn30`MV~=jk+5aIPr@`RKPOQS0`LVAak4(!wZki=Rt6r%?K(g#5FezT0G(NR~}XERVM?_wI9J%^-6tFi?vBT z$>)^Br}ek6k_yEw+Gm7ui|o8h+I8|`Kl0MTaPp?*<1cw#!p-XxZeF*r@)WaGKk;lT zQ?~Ao4jtVL?{~KGF3Op`jdkf`f7^y(*xS%s9Wh+EeXc48l(*i9}z8b2v+C(uuscALgP)}A5 z8k4Gt>BWP}MNb}jpfNEdew-RThzAojF%lCKY&FHa9?R;Trr-q*A?^?~N}fO?c;_2_^Os!zQdX3gjh>op9CW*}wSAbd`ee2M>g=>pd+=WG2jo2}CPVsrW zC7i|M66q4zz&l*7bt?Yz_B-ELZN1oUYre={EHGeD_MMRvWVemklR=H{g~3R?n!!kX ze;MTTAo>nb30L%*p4a#KL`ymamwuGWSOQ(}7=S?$Iv2?PX-G^%;56r>mO%!E>tK;Z z|3mDot&B8WT6jwuZEJ0wr??umn|X7NsBZgd(pF1~s049!mckFueQ1UCV!wLUkQe>S zH=t1V&EZ)Jyc|^&N~O)JN+^}?g@RN~VZSS3fNUP28qVl46kgF+`bsm2PRB{P0GMk&2&3R`vG@BF5=DhQ1Xfkvp{ini{q1v;1Hm~jTY(Aog>Gq>k z!By7R`Unb(5b(vKdeB2LhmjuMwbS2K^(WO)jDrtkQ( zz|?_RW%Uh#1_&7n&AdAUMMKHV=0vdKa4FvTDb*iv_}L5Ozk7JGvTq(=g+t#i4jIc~ zDa4_K=cuzC;xM#}!=}48hcEY)LxEZtqZ)>FPA}?Jea?iwh{_{O2h*22S!VL~!ex*y zG^Zz-&kHb^WzVrZ2>DYw1+7-9!F01$t9BHP%}h3(CN49z<7jR2-ppe2?WmdhF&)c% Ok1|oUe2X$xT>k=<3Qi;d delta 880 zcmb7?ze@sP9LAq}y--fGLJZ5x#ViY#vdn&fMoCdthJiyv89_l{4GuP4EkR?QOF`Ju zW*|8tG7`{Cu~zMtoPpBMXQyDc7z%&f&Dt1N(IawBNO z)|qWokWr-@2ZSedfztqlNs0O906ke@Dhii4jk6Y&WeiwV1~#1~+`JgGmfymO7l^9MgEm4H9CG-0d_KFhF0xZ_)((COrYs%DxKqS+ZQN zhm~dhS%5YR(3{ndDfnsNMWk?yLpsW@EZz(qBE!7?9|JihRlM4@N7mm<>97Nvu zCOBw^)R*X>4dY2#X%$Bs#*@7A(hjqBMyfXqzZ!O}+pr;wBZvTvnW5h^ay0IW_+TpT g_BJ?lDh@HlL8d%Hs)~cJ!J+(z!=sLa=;JQG0N>KJ=l}o! diff --git a/phsource/vwl_en_us/3_us b/phsource/vwl_en_us/3_us index b390b26c720fa9ba81a8c647c4aa991090065929..e6eee317bd7d633a3cd67e451515e5d10db83aa0 100644 GIT binary patch literal 1692 zcmeH`y>Aj>9LK+R-j##nfY#blTQP`YeXE2T+lZB?1tQW!X+Xu7r0QUFkU?Xjg9$pQ zgVw~^!J&hTTStdZrh@~6e*md*?_koznAGoc94!akOgHbB-}CZ&Uh?Goxo@eM%aluV zNe#gG{NqO&ZgSNA3H_%t71~m3v{@^#a@nb_Z!ACRCi@G z7H_Mhp+`|QC8F%pt&yYn1lQ@G3&b^G>y%-YEv;w8IQ0kjEUVcun=EaFw$PmA#0kSVWCl zC#ic9N0ETQ4RSh1E~l7NT+5Q)ZD&;Ao(M*$=MeSXPnDa>N=*ZHSkzdukYv0z8G}qL zG8p8UDB}PQA;xxqRD# zL!?M%jH<=>_s2P#A-!pOB!Oe}$#L?S`>ib2BSC3)?ZP hcQO0e#jNf@z)dL2$G9sW_^eK5wO#+2Nop--e*qcf&j0`b delta 538 zcmbQkdxT3kIKb68B-k~Og@J*=IKH%)g&}gHuxb7G|9uP%>?@cIn1JF84;YIDWtbi? zg4kPFr9|48BEaH#94-P686n~kJWqHb?C<~c__lCAhKj36JFvpo6>@4!Ft&y=gzdqQ zz!1gI%h1FS%#gw03B(}`X_I9c*JoX@C*KVW45YYWau3sudOZ$g>#iVqc?pu2Kd?LU z!@TUllgI;OPvVQ~`T{fV*Q39|Mv*8kos)2LQ8~cCr8f diff --git a/phsource/vwl_en_us/3_us2 b/phsource/vwl_en_us/3_us2 index c79e3c81490f1db7d6c0f9fc53d6ec1318435a3a..673df821eeb0fc114fc0a808b23a6cfb1362d891 100644 GIT binary patch literal 2101 zcmd^9J5Ll*7(KJ@>~m%xxbkpu6<1gAfdq^Y5%-PG%&~O9 z(yiFME9c@`NCzVR<+_4a(A*jz9hf&n*omxdw1q6gi2(cJ!XuHN+#wx!oB+S%L|T(6 z2huAS*-vYEu-OmcD$h5E7nr~;oTE?TCSKtg29ZGzPN5rFT*MgrlQ_=y82c>e8OF{d zjTCmF0ef%=El3~=KO(4OZ@`2PUe3J;(hYh;w}c2WTyvM-k!*KLYGcTKf0L zC69eVp|2E*M-}b`*guO3HVGGQl>Q{2o`vPv4i13r=Aaux7{^`AF#CO&;w;C^j^YUx zVKLX8%zGyeqXPn0$kQ3}a)RE+*dW=vRvHa+O#;o#XA|?gmsu`mR^~Kho5>tYE+jL4 zn;9QDG08y#_q5RV;~&a@EJeq7Jb8>%r{ms;`8eUdP3^;iy-+3UPo`a~;#%Il{ z(#Bg|#AX$3SUyD6d;iE-HdSOaB!ViEj6?sTC_!pNMWi+=$X43;cX;{!bg9J4dr_oA zxGTJrvFi+#YgW7OHQ-bA@<~ITTC)~)#9k`A{P3z33dk9vszN;oiNLD1>Zog}INV=r zcu^6_O9k1Amo^OJH1Gde+{PVrv1$!a8U1WWSbd-49(t*mcHZVBt5S-y0jjE>wW|Y1 zSig=^Cp{dG(6X#!y>!7HyLrgi3?QzNw~-xlP1f_$H0o77Q&JJaj6oE4dqt)tp&7DtyQzNG++z|HauK{d)tY delta 637 zcmdlg(9SCo9N_9466_kt%D}*29A8>&#L5skQN*{mA4-HUl&(FCbaDfRzCr;}_T&_+ZvV@G!uw?BHWSva*4hkd*)< Cnv3E9 diff --git a/phsource/vwl_en_us/ee b/phsource/vwl_en_us/ee index bd9f69371381880e389da12335e808ff2170062f..a0ced591c82e94fe4e068bae40e82bb06d0ab3a4 100644 GIT binary patch delta 1015 zcmb`FKS&!<9LK-!cS-KNBX=n#QtX+*fMjs686(73MH=JMk`5Z`pQ-KCO^CIa6ITZv z1jj%}2Nl<}WD-ZA&`vEGx&@rBorLsVF21`&DGq(`d++YU?~dQ+{eDNI7h_ua#r)i> z^2^+TR;WR&S?yBn*K|$G;#|fG?TP?g=CX<)6)dXXL;w>sL3@IT&_@__pF|iCVQup# zwM}4&mdGa}5p@e_P$NX#QJ=WtEBBe$fNDB~x+I$klW8xhyRx?r@;p18q}ub|Yp25* zj4Q?NndE5|MdHZ>U6F56R4-wxPU@qm(l^-|I*veZ4!2l~`E{4f19}(dRzSSpTNXFM zWKL_@O~oVbyrJMuerZtTZ+>VxdaqS`=GZ$1ic zyR84fM%*z2@+G0Ly4BPJ;@#V!jfh9&Y;`)-^xcjW9@>#@E$3@|hhyx^vHHx`uue$6 zkrHm~RN*nCs#3z$+Cl<}puo504YuM4Nq8mKEoVSt!RCPk!;DC}PvYqVB|bei=r1S& Bx>W!G delta 681 zcmX>mJ41>iIKb68B-k}@B8OeQ6UPY#28MS`@0enlni*o57#O}Veqr=xzsBIr&cL9? zq{hU+CC13W1!2GDyT|mJkAWeADFUdHfnfnZ1H&GsJz(}1DFnMh4#Cz?hOj5>jFfed^WBSHq#T3V&z{DUVz;uDhgZ%`< z1GWXCH9!j+IajlYa2*hS!1#dCi*F)R3$F)1hz)Uw2RDT6%<(|xATvz7Lavqx#@0~w z0<(LyJ#}8_y6gAqH|uTHiPN6CnVm(NsXh^84g<^)%1n81M<}t^v%(y)n%#pN<_I}1 zX-1eM)(ccKF5rhbf`NgcBMiNbei-MN?lzriGTlhqaR27-Z1PO?b{v-(9JrmCzcIaL ztYmOt>K3*JhQe32&D;~%0z|8Tq2SHFhe3qvfgs3N!CZG4N_qG2f!O;5n1K#>$p!Q6 zR2gm-2>bv43b}ZsP_P5D|B4#ON~`v02570NcgmZJ@W_7E*tq#Mrz}(bb%qA+iOe!g zdl};y5}3q9(tu9*!nT3gfsH}50_cP<9It^+U=RQqpU(G(p_*48>;ylangopts.numbers2 & NUM2_NO_TEEN_ORDINALS)) + { + // don't use numbers 10-99 to make ordinals, always use _1Xo etc (lang=pt) + } + else + { + sprintf(string,"_%d",value); + found = Lookup(tr, string, ph_digits); + } } } } @@ -1251,7 +1262,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) else { - if((control & 1) && + if((is_ordinal) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) { sprintf(string,"_%dX%c", tens, ord_type); @@ -1300,7 +1311,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) sprintf(string,"_%df",units); found = Lookup(tr, string, ph_digits); } - if((control & 1) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0)) + if((is_ordinal) && ((tr->langopts.numbers & NUM_SWAP_TENS) == 0)) { // ordinal sprintf(string,"_%d%c",units,ord_type); @@ -1335,7 +1346,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) } } - if((control & 1) && (found_ordinal == 0) && (ph_ordinal[0] == 0)) + if((is_ordinal) && (found_ordinal == 0) && (ph_ordinal[0] == 0)) { if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) Lookup(tr, "_ord20", ph_ordinal); @@ -1347,7 +1358,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) { Lookup(tr, "_0and", ph_and); - if((control & 1) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) + if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) ph_and[0] = 0; if(tr->langopts.numbers & NUM_SWAP_TENS) @@ -1406,6 +1417,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null int ix; int exact; int ordinal; + int tplex; int say_zero_hundred=0; char string[12]; // for looking up entries in **_list char buf1[100]; @@ -1465,10 +1477,16 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null if ((value % 1000) == 0) exact = 1; - if(LookupThousands(tr, hundreds / 10, thousandplex+1, exact | ordinal, ph_10T) == 0) + tplex = thousandplex+1; + if(tr->langopts.numbers2 & NUM2_MYRIADS) + { + tplex = 0; + } + + if(LookupThousands(tr, hundreds / 10, tplex, exact | ordinal, ph_10T) == 0) { x = 0; - if(tr->langopts.numbers2 & (1 << (thousandplex+1))) + if(tr->langopts.numbers2 & (1 << tplex)) x = 8; // use variant (feminine) for before thousands and millions LookupNum2(tr, hundreds/10, x, ph_digits); } @@ -1615,6 +1633,23 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } // end of LookupNum3 +bool CheckThousandsGroup(char *word, int group_len) +{//================================================ +// Is this a group of 3 digits which looks like a thousands group? + int ix; + + if(isdigit(word[group_len]) || isdigit(-1)) + return(false); + + for(ix=0; ix < group_len; ix++) + { + if(!isdigit(word[ix])) + return(false); + } + return(true); +} + + static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control) {//===================================================================================================================== // Number translation with various options @@ -1640,6 +1675,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int decimal_mode; int suffix_ix; int skipwords = 0; + int group_len; char *p; char string[32]; // for looking up entries in **_list char buf1[100]; @@ -1662,8 +1698,12 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned n_digits = ix; value = this_value = atoi(word); + group_len = 3; + if(tr->langopts.numbers2 & NUM2_MYRIADS) + group_len = 4; + // is there a previous thousands part (as a previous "word") ? - if((n_digits == 3) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3])) + if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3])) { prev_thousands = 1; } @@ -1777,14 +1817,19 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned // a "thousand"/"million" suffix to this one digix = n_digits + thousands_inc; - while(((wtab[thousandplex+1].flags & FLAG_MULTIPLE_SPACES) == 0) && - isdigit(word[digix]) && isdigit(word[digix+1]) && isdigit(word[digix+2]) && !isdigit(word[digix+3]) && !isdigit(word[digix-1])) + while(((wtab[thousandplex+1].flags & FLAG_MULTIPLE_SPACES) == 0) && CheckThousandsGroup(&word[digix], group_len)) { - if((word[digix] != '0') || (word[digix+1] != '0') || (word[digix+2] != '0')) - thousands_exact = 0; + for(ix=0; ixlangopts.thousands_sep) || ((tr->langopts.numbers & NUM_ALLOW_SPACE) && (word[digix] == ' '))) { suffix_ix = digix+2; @@ -1820,7 +1865,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { if(thousands_inc > 0) { - if((thousandplex > 0) && (value < 1000)) + if(thousandplex > 0) +// if((thousandplex > 0) && (value < 1000)) { if((suppress_null == 0) && (LookupThousands(tr,value,thousandplex, thousands_exact, ph_append))) { diff --git a/src/synthdata.cpp b/src/synthdata.cpp index d39d90d5..40fadfe4 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -881,39 +881,57 @@ static void SwitchOnVowelType(PHONEME_LIST *plist, PHONEME_DATA *phdata, USHORT } // end of SwitchVowelType -static int NumInstnWords(USHORT *prog) -{//=================================== +int NumInstnWords(USHORT *prog) +{//============================ int instn; int instn2; int instn_type; int n; - static const char n_words[16] = {1,1,0,0,1,1,1,1,1,2,4,0,0,0,0,0}; + int type2; + static const char n_words[16] = {0,1,0,0,1,1,0,1,1,2,4,0,0,0,0,0}; instn = *prog; instn_type = instn >> 12; if((n = n_words[instn_type]) > 0) return(n); - if(instn_type < 4) + switch(instn_type) { + case 0: + if(((instn & 0xf00) >> 8) == i_IPA_NAME) + { + n = ((instn & 0xff) + 1) / 2; + return(n+1); + } + return(1);; + + case 6: + type2 = (instn & 0xf00) >> 9; + if((type2 == 5) || (type2 == 6)) + return(12); // switch on vowel type + return(1); + + case 2: + case 3: // a condition, check for a 2-word instruction if(((n = instn & 0x0f00) == 0x600) || (n == 0x0d00)) return(2); return(1); - } - // instn_type 11 to 15, 2 words - instn2 = prog[2]; - if((instn2 >> 12) == 0xf) - { - // This instruction is followed by addWav(), 2 more words - return(4); + default: + // instn_type 11 to 15, 2 words + instn2 = prog[2]; + if((instn2 >> 12) == 0xf) + { + // This instruction is followed by addWav(), 2 more words + return(4); + } + if(instn2 == i_CONTINUE) + { + return(3); + } + return(2); } - if(instn2 == i_CONTINUE) - { - return(3); - } - return(2); } // end of NumInstnWords diff --git a/src/synthesize.h b/src/synthesize.h index b7041b72..fb9c7e7a 100644 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -571,6 +571,7 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L int PauseLength(int pause, int control); int LookupPhonemeTable(const char *name); unsigned char *GetEnvelope(int index); +int NumInstnWords(USHORT *prog); void InitBreath(void); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index eb6ca4b4..dfd15b3b 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -957,7 +957,8 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.numbers = NUM_OMIT_1_HUNDRED; - tr->langopts.break_numbers = 0x9999998; + tr->langopts.numbers2 = NUM2_MYRIADS; + tr->langopts.break_numbers = 0x1111110; tr->langopts.max_digits = 20; } break; @@ -1115,7 +1116,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; - tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; + tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; SetLetterVowel(tr,'y'); ResetLetterBits(tr,0x2); SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y diff --git a/src/translate.h b/src/translate.h index 9beb3e78..a8192956 100644 --- a/src/translate.h +++ b/src/translate.h @@ -445,7 +445,9 @@ typedef struct { int numbers; #define NUM2_MULTIPLE_ORDINAL 0x1000 -#define NUM2_ENGLISH_NUMERALS 0x2000 +#define NUM2_NO_TEEN_ORDINALS 0x2000 +#define NUM2_MYRIADS 0x4000 +#define NUM2_ENGLISH_NUMERALS 0x8000 #define NUM2_THOUSANDS_VAR1 0x40 #define NUM2_THOUSANDS_VAR2 0x80 #define NUM2_THOUSANDS_VAR3 0xc0 @@ -455,7 +457,9 @@ typedef struct { // bits 6-8 use different forms of thousand, million, etc (M MA MB) // bit9=(LANG=rw) say "thousand" and "million" before its number, not after // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units - // bit13=(LANG=ne) speak (non-replaced) English numerals in English + // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals + // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) + // bit15=(LANG=ne) speak (non-replaced) English numerals in English int numbers2; #define BREAK_THOUSANDS 0x49249248 diff --git a/src/vowelchart.cpp b/src/vowelchart.cpp index 642bd66c..b555afb9 100644 --- a/src/vowelchart.cpp +++ b/src/vowelchart.cpp @@ -525,42 +525,17 @@ static void FindVowelFmt(int prog_start, int length) prog_end = prog_start + length; n_vowelfmt_addr = 0; - for(prog = &phoneme_index[prog_start]; prog < &phoneme_index[prog_end]; prog++) + for(prog = &phoneme_index[prog_start]; prog < &phoneme_index[prog_end]; prog += NumInstnWords(prog)) { instn = *prog; - switch(instn >> 12) + if((instn >> 12) == 11) { - case 2: - case 3: - // conditions - while((instn & 0xe000) == 0x2000) - { - instn = *(++prog); - } - prog--; - break; - - case 10: // Vowelin, Vowelout - prog += 3; - break; - - case 9: - case 12: // WAV - case 13: // VowelStart - case 14: // VowelEnd - case 15: // addWav - prog++; - break; - - case 11: // FMT + // FMT instruction if(n_vowelfmt_addr < N_VOWELFMT_ADDR) { vowelfmt_addr[n_vowelfmt_addr++] = ((instn & 0xf) << 18) + (prog[1] << 2); } - prog++; - - break; } } } // end of FindVowelFmt From e1fd37b94c5f779c36c02a8978a081aad73dff20 Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 17 Sep 2012 22:32:13 +0000 Subject: [PATCH 3/5] [1.46.26] espeakedit: Change from wxMDI to wxNotebook for prosody and vowel pages. espeakedit: (linux) change to wxWidgets 2.8. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@292 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 8 +- phsource/compile_report | 12 +- src/Makefile.espeakedit | 10 +- src/espeakedit.cpp | 270 +++++++++++++++++++++------------------ src/formantdlg.cpp | 12 +- src/main.h | 29 +++-- src/menus.cpp | 191 ++++++++++++++------------- src/prosodydisplay.cpp | 117 ++++++----------- src/prosodydisplay.h | 18 +-- src/spect.h | 4 +- src/spectdisplay.cpp | 75 +++-------- src/synthdata.cpp | 2 +- src/transldlg.cpp | 14 +- 13 files changed, 352 insertions(+), 410 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 4f3bf635..ad6dae2b 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -376,7 +376,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2012-09-14 +Dictionary pt_dict 2012-09-17 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -825,11 +825,11 @@ R s S S; t w x z Z Z; -Dictionary ko_dict 2012-09-15 +Dictionary ko_dict 2012-09-17 @ a e E i o u u- * - ; b d dZ; g h j k k- kh l m n N -p p- ph q r s t t- -tS tS; w +p p- ph q r R s t +t- tS tS; w diff --git a/phsource/compile_report b/phsource/compile_report index fad5477c..1463045d 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -417,7 +417,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [hÖ{] base +l/l@ [h6r] base [l#] base [l] fr [l/2] fr @@ -451,7 +451,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [hÖ{] base +l/la [h6r] base [l#] base [l] fr [l/2] fr @@ -459,7 +459,7 @@ l/la [h [K] tn l/l_a [l/3] base [l/] fr -l/le [hÖ{] base +l/le [h6r] base [l#] base [l] fr [l/2] fr @@ -471,7 +471,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [hÖ{] base +l/li [h6r] base [l#] base [l] fr [l/2] fr @@ -485,7 +485,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [hÖ{] base +l/lo [h6r] base [l#] base [l/2] fr [K] nso @@ -496,7 +496,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [hÖ{] base +l/lu [h6r] base [l#] base [l] fr [l/2] fr diff --git a/src/Makefile.espeakedit b/src/Makefile.espeakedit index 07f93094..281fbaf5 100644 --- a/src/Makefile.espeakedit +++ b/src/Makefile.espeakedit @@ -10,17 +10,17 @@ SRCS= compiledata.cpp compiledict.cpp debug.cpp dictionary.cpp espeak_command.cp OBJS=$(patsubst %.cpp,%.o,$(SRCS)) -WX_LIBS = -pthread -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 \ - -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 +WX_LIBS = -pthread -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 \ + -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 LIBS=-lstdc++ -lportaudio -CPPFLAGS = -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.6 - -I/usr/include/wx-2.6 \ +CPPFLAGS = -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 + -I/usr/include/wx-2.8 \ -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT -CXXFLAGS = -O2 -Wall -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 \ +CXXFLAGS = -O2 -Wall -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 \ -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT all: espeakedit diff --git a/src/espeakedit.cpp b/src/espeakedit.cpp index 6f5a22e0..2fe14c59 100644 --- a/src/espeakedit.cpp +++ b/src/espeakedit.cpp @@ -21,7 +21,6 @@ #include "wx/wfstream.h" -#include "wx/notebook.h" #include "wx/image.h" #include "wx/filename.h" #include "wx/numdlg.h" @@ -74,8 +73,6 @@ extern void VowelChart(int control, char *fname); extern void MakeVowelLists(void); extern void MakeWordFreqList(); -extern const char *dict_name; - extern wxMenu *speak_menu; extern wxMenu *data_menu; @@ -83,15 +80,16 @@ extern wxMenu *data_menu; MyFrame *myframe = NULL; SpectDisplay *currentcanvas = NULL; -ChildFrProsody *prosodyframe = NULL; ProsodyDisplay *prosodycanvas = NULL; wxNotebook *notebook = NULL; +wxNotebook *screenpages = NULL; + wxProgressDialog *progress; int progress_max; int gui_flag = 0; int frame_x, frame_y, frame_w, frame_h; -wxList my_children; +int adding_page = 0; // fix for wxWidgets (2,8,7) bug, adding first page to a wxNotebook gives emptystring for GetPageTex() in Notebook_Page_Changed event. wxFont FONT_SMALL(8,wxSWISS,wxNORMAL,wxNORMAL); wxFont FONT_MEDIUM(9,wxSWISS,wxNORMAL,wxNORMAL); @@ -166,7 +164,7 @@ if(argc > 1) if((frame_w == 0) || (frame_h == 0)) { - frame_w = 1024; + frame_w = 800; frame_h = 768; } @@ -191,7 +189,7 @@ if(argc > 1) return TRUE; } -BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) +BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_CHAR(MyFrame::OnKey) EVT_MENU(MENU_ABOUT, MyFrame::OnAbout) EVT_MENU(MENU_DOCS, MyFrame::OnAbout) @@ -213,7 +211,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) EVT_MENU(MENU_SORT_DICTIONARY, MyFrame::OnTools) EVT_MENU(MENU_COMPILE_MBROLA, MyFrame::OnTools) EVT_MENU(MENU_COMPILE_INTONATION, MyFrame::OnTools) - EVT_MENU(MENU_CLOSE_ALL, MyFrame::OnQuit) EVT_MENU(MENU_QUIT, MyFrame::OnQuit) EVT_MENU(MENU_SPEAK_TRANSLATE, MyFrame::OnSpeak) EVT_MENU(MENU_SPEAK_RULES, MyFrame::OnSpeak) @@ -238,14 +235,22 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) EVT_MENU(MENU_TEST, MyFrame::OnTools) EVT_MENU(MENU_TEST2, MyFrame::OnTools) + EVT_MENU(SPECTSEQ_SAVE, MyFrame::PageCmd) + EVT_MENU(SPECTSEQ_SAVEAS, MyFrame::PageCmd) + EVT_MENU(SPECTSEQ_SAVESELECT, MyFrame::PageCmd) + EVT_MENU(SPECTSEQ_CLOSE, MyFrame::PageCmd) + EVT_MENU(SPECTSEQ_SAVEPITCH, MyFrame::PageCmd) + EVT_MENU(MENU_CLOSE_ALL, MyFrame::PageCmd) + + + EVT_NOTEBOOK_PAGE_CHANGED(ID_SCREENPAGES, MyFrame::OnPageChanged) EVT_TIMER(1, MyFrame::OnTimer) - EVT_SIZE(MyFrame::OnSize) - EVT_SASH_DRAGGED(ID_WINDOW_LEFT, MyFrame::OnSashDrag) END_EVENT_TABLE() MyFrame::~MyFrame(void) {//==================== + myframe->Maximize(false); myframe->Show(false); myframe->Iconize(false); // os=Windows, get the non-iconsized size myframe->GetPosition(&frame_x, &frame_y); @@ -254,7 +259,7 @@ MyFrame::~MyFrame(void) MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): - wxMDIParentFrame(parent, id, title, pos, size, style) + wxFrame(parent, id, title, pos, size, style) {//=================================================================================================================== // Main Frame constructor @@ -262,16 +267,7 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c int result; int param; - // Another window to the left of the client window - m_leftWindow = new wxSashLayoutWindow(this, ID_WINDOW_LEFT, - wxDefaultPosition, wxSize(298, 30), - wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); - m_leftWindow->SetDefaultSize(wxSize(310, 1000)); - m_leftWindow->SetOrientation(wxLAYOUT_VERTICAL); - m_leftWindow->SetAlignment(wxLAYOUT_LEFT); - m_leftWindow->SetSashVisible(wxSASH_RIGHT, TRUE); - - notebook = new wxNotebook(m_leftWindow,-1); + notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxSize(312,760)); // notebook->AddPage(voicedlg,_T("Voice"),FALSE); formantdlg = new FormantDlg(notebook); notebook->AddPage(formantdlg,_T(" Spect"),FALSE); @@ -281,6 +277,29 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c notebook->AddPage(transldlg,_T("Text"),TRUE); + screenpages = new wxNotebook(this, ID_SCREENPAGES, wxDefaultPosition, wxSize(554,702)); + + wxBoxSizer *framesizer = new wxBoxSizer( wxHORIZONTAL ); + + + framesizer->Add( + notebook, + 0, // make horizontally stretchable + wxEXPAND | // make vertically stretchable + wxALL, // and make border all around + 4 ); // set border width + + framesizer->Add( + screenpages, + 1, // make horizontally stretchable + wxEXPAND | // make vertically stretchable + wxALL, // and make border all around + 4 ); // set border width + + SetSizer( framesizer ); // use the sizer for layout + framesizer->SetSizeHints( this ); // set size hints to honour minimum size + SetSize(pos.x, pos.y, size.GetWidth(), size.GetHeight()); + LoadConfig(); WavegenInitSound(); @@ -310,7 +329,7 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c for(param=0; paramGetSelection(); + + switch(event.GetId()) + { + case SPECTSEQ_SAVE: + currentcanvas->Save(currentcanvas->savepath); + break; + case SPECTSEQ_SAVEAS: + currentcanvas->Save(); + break; + case SPECTSEQ_SAVESELECT: + currentcanvas->Save(_T(""), 1); + break; + case SPECTSEQ_CLOSE: + if(screenpages->GetPageText(pagenum) != _T("Prosody")) + { + currentcanvas->OnActivate(0); + } + screenpages->DeletePage(pagenum); + + if((n_pages = screenpages->GetPageCount()) > 0) + { + if(pagenum >= n_pages) + pagenum--; + page = (SpectDisplay *)screenpages->GetPage(pagenum); + + if(screenpages->GetPageText(pagenum) == _T("Prosody")) + { + MakeMenu(3, NULL); + } + else + { + page->OnActivate(1); + MakeMenu(2, NULL); + } + } + else + { + MakeMenu(1, NULL); + } + break; + + case MENU_CLOSE_ALL: + n_pages = screenpages->GetPageCount(); + for(ix=n_pages-1; ix>=0; ix--) + { + screenpages->DeletePage(ix); + } + currentcanvas = NULL; + MakeMenu(1, NULL); + break; + case SPECTSEQ_SAVEPITCH: + currentcanvas->SavePitchenv(currentcanvas->spectseq->pitchenv); + break; + } + } +} + + + +void MyFrame::OnPageChanged(wxNotebookEvent& event) +{//================================================= + int pagenum; + wxString title; + SpectDisplay *page; + + pagenum = event.GetSelection(); + + if(event.GetId() == ID_SCREENPAGES) + { + title = screenpages->GetPageText(pagenum); + + if((title != _T("Prosody")) && (adding_page != 2)) + { + page = (SpectDisplay *)screenpages->GetPage(pagenum); + + if(page != currentcanvas) + { + if(currentcanvas != NULL) + { + currentcanvas->OnActivate(0); + } + page->OnActivate(1); + } + MakeMenu(2, NULL); + } + else + { + MakeMenu(3, NULL); + } + } + adding_page = 0; // work around for wxNotebook bug (version 2.8.7) +} + + void MyFrame::OnKey(wxKeyEvent& event) { int key; @@ -624,7 +747,7 @@ void MyFrame::OnTools(wxCommandEvent& event) case MENU_COMPILE_INTONATION: CompileIntonation(); break; - + case MENU_COMPILE_DICT_DEBUG: debug_flag =1; // and drop through to next case case MENU_COMPILE_DICT: @@ -729,105 +852,4 @@ void MyFrame::OnSpeak(wxCommandEvent& event) } -void MyFrame::OnSashDrag(wxSashEvent& event) -{ - int w, h; - - if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE) - return; - - GetClientSize(&w, &h); - - switch (event.GetId()) - { - case ID_WINDOW_LEFT: - { - m_leftWindow->SetDefaultSize(wxSize(event.GetDragRect().width, h)); - break; - } - } - wxLayoutAlgorithm layout; - layout.LayoutMDIFrame(this); - - // Leaves bits of itself behind sometimes - GetClientWindow()->Refresh(); -} - - - -void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - wxLayoutAlgorithm layout; - layout.LayoutMDIFrame(this); -} - -// Note that SASHTEST_NEW_WINDOW and SASHTEST_ABOUT commands get passed -// to the parent window for processing, so no need to -// duplicate event handlers here. - -BEGIN_EVENT_TABLE(MyChild, wxMDIChildFrame) - EVT_MENU(SPECTSEQ_CLOSE, MyChild::OnQuit) - EVT_MENU(SPECTSEQ_SAVE, MyChild::OnSave) - EVT_MENU(SPECTSEQ_SAVEAS, MyChild::OnSaveAs) - EVT_MENU(SPECTSEQ_SAVESELECT, MyChild::OnSaveSelect) - EVT_MENU(SPECTSEQ_SAVEPITCH, MyChild::OnSavePitchenv) - - EVT_ACTIVATE(MyChild::OnActivate) -END_EVENT_TABLE() - -MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, -const long style): - wxMDIChildFrame(parent, -1, title, pos, size, style) -{ - canvas = NULL; - my_children.Append(this); -} - -MyChild::~MyChild(void) -{ - canvas = NULL; -#ifndef PLATFORM_WINDOWS - wxWindow *w; - // bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow - w = myframe->GetClientWindow(); - w->RemoveChild(this); -#endif - my_children.DeleteObject(this); -} - -//extern void CloseCanvas(); - -void MyChild::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Destroy(); - -} - -void MyChild::OnSave(wxCommandEvent& WXUNUSED(event)) -{ - canvas->Save(canvas->savepath); -} - -void MyChild::OnSaveAs(wxCommandEvent& WXUNUSED(event)) -{ - canvas->Save(); -} - -void MyChild::OnSaveSelect(wxCommandEvent& WXUNUSED(event)) -{ - canvas->Save(_T(""),1); -} - -void MyChild::OnSavePitchenv(wxCommandEvent& WXUNUSED(event)) -{ - canvas->SavePitchenv(canvas->spectseq->pitchenv); -} - -void MyChild::OnActivate(wxActivateEvent& event) -{ - if(canvas) - canvas->OnActivate(event.GetActive()); - - -} diff --git a/src/formantdlg.cpp b/src/formantdlg.cpp index 96d20b07..a7795b0c 100644 --- a/src/formantdlg.cpp +++ b/src/formantdlg.cpp @@ -97,7 +97,7 @@ void FormantDlg::OnSpin(wxSpinEvent& event) currentcanvas->SetFocus(); } -FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,wxSize(400,1000)) +FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,wxSize(400,800)) {//============================================================================================= int ix; int y; @@ -395,7 +395,7 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) { value.Printf(_T("%3d"),peak->klt_bp); t_klt_bp[ix]->SetValue(value); - } + } } } @@ -469,12 +469,12 @@ void ByteGraph::DrawSpectrum(wxDC& dc) numframes = seq->numframes; if(numframes == 0) return; - + GetClientSize(&width,&height); if(((length = seq->frames[numframes-1]->time)==0) && (numframes>1)) length = seq->frames[numframes-2]->time; - + length = length - seq->frames[0]->time; yscale = height/3000.0; @@ -518,7 +518,7 @@ void ByteGraph::OnDraw(wxDC &dc) double xscale, yscale; if(show_spectrum) DrawSpectrum(dc); - + if(npoints==0) return; GetClientSize(&width,&height); @@ -559,7 +559,7 @@ void ByteGraph::OnMouse(wxMouseEvent& event) wxPoint pt(event.GetLogicalPosition(dc)); t0 = t2 = seq->frames[0]->time; time = (double(pt.x) / spectrum_scale) + t0; - + for(ix=1; ixnumframes; ix++) { t1=t2; diff --git a/src/main.h b/src/main.h index 80632ce7..0402f15b 100755 --- a/src/main.h +++ b/src/main.h @@ -2,6 +2,7 @@ #include "wx/toolbar.h" #include "wx/laywin.h" #include "wx/progdlg.h" +#include "wx/notebook.h" typedef unsigned short USHORT; typedef unsigned char UCHAR; @@ -32,44 +33,45 @@ class MyApp: public wxApp }; // Define a new frame -class MyFrame: public wxMDIParentFrame +class MyFrame: public wxFrame { public: MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); ~MyFrame(void); - void OnSize(wxSizeEvent& event); + void OnAbout(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnOptions(wxCommandEvent& event); - void OnSpeak(wxCommandEvent& event); + void OnSpeak(wxCommandEvent& event); void OnTools(wxCommandEvent& event); - void OnSashDrag(wxSashEvent& event); void OnKey(wxKeyEvent& event); void OnTimer(wxTimerEvent& event); void LoadWavFile(void); void OnNewWindow(wxCommandEvent& event); void OnProsody(wxCommandEvent& event); + void PageCmd(wxCommandEvent& event); void SetVoiceTitle(char *voice_name); - + void OnPageChanged(wxNotebookEvent& event); protected: - wxSashLayoutWindow* m_leftWindow; wxTimer m_timer; DECLARE_EVENT_TABLE() }; -class MyChild: public wxMDIChildFrame + +#ifdef deleted +class MyChild: public wxPanel { public: SpectDisplay *canvas; - MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); + MyChild(wxNotebook *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); ~MyChild(void); void OnActivate(wxActivateEvent& event); - + void OnQuit(wxCommandEvent& event); void OnSave(wxCommandEvent& event); void OnSaveAs(wxCommandEvent& event); @@ -79,7 +81,7 @@ class MyChild: public wxMDIChildFrame DECLARE_EVENT_TABLE() }; - +#endif class TranslDlg : public wxPanel @@ -103,6 +105,7 @@ private: }; extern MyFrame *myframe; +extern wxNotebook* screenpages; extern TranslDlg *transldlg; extern wchar_t ipa1[256]; @@ -171,10 +174,12 @@ enum { SPECTSEQ_SAVEAS, SPECTSEQ_SAVESELECT, SPECTSEQ_SAVEPITCH, - SPECTSEQ_VOICEDLG + SPECTSEQ_VOICEDLG, + + ID_SCREENPAGES, + ID_NOTEBOOK }; -#define ID_WINDOW_LEFT 101 diff --git a/src/menus.cpp b/src/menus.cpp index 50db8d1a..b405b71a 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -24,10 +24,13 @@ wxMenu *speak_menu; wxMenu *data_menu = NULL; +wxMenuBar *menu_bar = NULL; + wxMenuBar *MakeMenu(int type, const char *dict_name) -{//================================================= +{//=================================================== char buf[100]; + wxMenu *old_menu; wxMenu *file_menu; wxMenu *help_menu; wxMenu *option_menu = NULL; @@ -42,118 +45,126 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) file_menu->Append(MENU_SPECTRUM, _("&Open...")); file_menu->Append(MENU_SPECTRUM2, _("O&pen2...")); // file_menu->Append(MENU_PROSODY, _T("&Prosody window")); - if(type==0) + if(type<=1) { - } - else - if(type==1) - { - file_menu->Append(SPECTSEQ_SAVE, _("&Save")); - file_menu->Append(SPECTSEQ_SAVEAS, _("Save &As...")); - file_menu->Append(SPECTSEQ_SAVESELECT, _("Save Selection")); - file_menu->Append(SPECTSEQ_SAVEPITCH, _T("Save Pitch &Envelope")); - file_menu->Append(SPECTSEQ_CLOSE, _("&Close")); -// file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); } else if(type==2) { file_menu->Append(SPECTSEQ_SAVE, _("&Save")); file_menu->Append(SPECTSEQ_SAVEAS, _("Save &As...")); -// file_menu->Append(SPECTSEQ_SAVEPITCH, _T("Save Pitch &Envelope")); + file_menu->Append(SPECTSEQ_SAVESELECT, _("Save Selection")); + file_menu->Append(SPECTSEQ_SAVEPITCH, _T("Save Pitch &Envelope")); file_menu->Append(SPECTSEQ_CLOSE, _("&Close")); -// file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); + file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); + } + else + if(type==3) + { +// file_menu->Append(SPECTSEQ_SAVE, _("&Save")); +// file_menu->Append(SPECTSEQ_SAVEAS, _("Save &As...")); + file_menu->Append(SPECTSEQ_CLOSE, _("&Close")); + file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); } file_menu->Append(MENU_QUIT, _("&Quit")); - // SPEAK_MENU - speak_menu = new wxMenu; - speak_menu->Append(MENU_SPEAK_TRANSLATE, _("&Translate")); - speak_menu->Append(MENU_SPEAK_RULES, _("Show &Rules")); - speak_menu->Append(MENU_SPEAK_IPA, _("Show &IPA")); - speak_menu->Append(MENU_SPEAK_TEXT, _("&Speak")); - speak_menu->AppendSeparator(); - speak_menu->Append(MENU_SPEAK_FILE, _("Speak &file...")); - speak_menu->Append(MENU_SPEAK_PAUSE, _("&Pause")); - speak_menu->Append(MENU_SPEAK_STOP, _("St&op")); + if(type==0) + { + // Initialization, make all the menus + // SPEAK_MENU + speak_menu = new wxMenu; + speak_menu->Append(MENU_SPEAK_TRANSLATE, _("&Translate")); + speak_menu->Append(MENU_SPEAK_RULES, _("Show &Rules")); + speak_menu->Append(MENU_SPEAK_IPA, _("Show &IPA")); + speak_menu->Append(MENU_SPEAK_TEXT, _("&Speak")); + speak_menu->AppendSeparator(); + speak_menu->Append(MENU_SPEAK_FILE, _("Speak &file...")); + speak_menu->Append(MENU_SPEAK_PAUSE, _("&Pause")); + speak_menu->Append(MENU_SPEAK_STOP, _("St&op")); - // VOICE MENU - voice_menu = new wxMenu; - voice_menu->Append(MENU_SPEAK_VOICE, _("Select &Voice..")); - voice_menu->Append(MENU_SPEAK_VOICE_VARIANT, _("Select Voice Va&riant...")); + // VOICE MENU + voice_menu = new wxMenu; + voice_menu->Append(MENU_SPEAK_VOICE, _("Select &Voice..")); + voice_menu->Append(MENU_SPEAK_VOICE_VARIANT, _("Select Voice Va&riant...")); - // DATA MENU - data_menu = new wxMenu; - data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); - data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); - data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); - data_menu->AppendSeparator(); - data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); - data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); - data_menu->AppendSeparator(); - data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file")); - data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file")); + // DATA MENU + data_menu = new wxMenu; + data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); + data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); + data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); + data_menu->AppendSeparator(); + data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); + data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); + data_menu->AppendSeparator(); + data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file")); + data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file")); - sprintf(buf,"Compile &dictionary '%s'",dict_name); - data_menu->SetLabel(MENU_COMPILE_DICT, wxString(buf,wxConvLocal)); - sprintf(buf,"&Layout '%s_rules' file",dict_name); - data_menu->SetLabel(MENU_FORMAT_DICTIONARY, wxString(buf,wxConvLocal)); - sprintf(buf,"&Sort '%s_rules' file",dict_name); - data_menu->SetLabel(MENU_SORT_DICTIONARY, wxString(buf,wxConvLocal)); + sprintf(buf,"Compile &dictionary '%s'",dict_name); + data_menu->SetLabel(MENU_COMPILE_DICT, wxString(buf,wxConvLocal)); + sprintf(buf,"&Layout '%s_rules' file",dict_name); + data_menu->SetLabel(MENU_FORMAT_DICTIONARY, wxString(buf,wxConvLocal)); + sprintf(buf,"&Sort '%s_rules' file",dict_name); + data_menu->SetLabel(MENU_SORT_DICTIONARY, wxString(buf,wxConvLocal)); - // OPTIONS MENU - paths_menu = new wxMenu; - paths_menu->Append(MENU_PATH0, _("Master phonemes file...")); - paths_menu->Append(MENU_PATH1, _("Phoneme data source...")); - paths_menu->Append(MENU_PATH2, _("Dictionary data source...")); - paths_menu->Append(MENU_PATH3, _("Synthesized sound WAV file...")); - paths_menu->AppendSeparator(); - paths_menu->Append(MENU_PATH4, _("Voice file to modify formant peaks...")); + // OPTIONS MENU + paths_menu = new wxMenu; + paths_menu->Append(MENU_PATH0, _("Master phonemes file...")); + paths_menu->Append(MENU_PATH1, _("Phoneme data source...")); + paths_menu->Append(MENU_PATH2, _("Dictionary data source...")); + paths_menu->Append(MENU_PATH3, _("Synthesized sound WAV file...")); + paths_menu->AppendSeparator(); + paths_menu->Append(MENU_PATH4, _("Voice file to modify formant peaks...")); - option_menu = new wxMenu; - option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); - option_menu->Append(MENU_OPT_SPEED, _("Speed...")); - option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation")); - option_menu->Append(MENU_OPT_SPELL, _("Speak character names")); + option_menu = new wxMenu; + option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); + option_menu->Append(MENU_OPT_SPEED, _("Speed...")); + option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation")); + option_menu->Append(MENU_OPT_SPELL, _("Speak character names")); - // TOOLS - vowelchart_menu = new wxMenu; - vowelchart_menu->Append(MENU_VOWELCHART1, _("From compiled phoneme data")); -// vowelchart_menu->Append(MENU_VOWELCHART2, _("From list of formants...")); - vowelchart_menu->Append(MENU_VOWELCHART3, _("From directory of vowel files...")); + // TOOLS + vowelchart_menu = new wxMenu; + vowelchart_menu->Append(MENU_VOWELCHART1, _("From compiled phoneme data")); + // vowelchart_menu->Append(MENU_VOWELCHART2, _("From list of formants...")); + vowelchart_menu->Append(MENU_VOWELCHART3, _("From directory of vowel files...")); - lexicon_menu = new wxMenu; - lexicon_menu->Append(MENU_LEXICON_RU, _("Russian")); - lexicon_menu->Append(MENU_LEXICON_BG, _("Bulgarian")); - lexicon_menu->Append(MENU_LEXICON_DE, _("German")); - lexicon_menu->Append(MENU_LEXICON_IT, _("Italian")); -// lexicon_menu->Append(MENU_LEXICON_TEST, _("Test")); + lexicon_menu = new wxMenu; + lexicon_menu->Append(MENU_LEXICON_RU, _("Russian")); + lexicon_menu->Append(MENU_LEXICON_BG, _("Bulgarian")); + lexicon_menu->Append(MENU_LEXICON_DE, _("German")); + lexicon_menu->Append(MENU_LEXICON_IT, _("Italian")); + // lexicon_menu->Append(MENU_LEXICON_TEST, _("Test")); - tools_menu = new wxMenu; - tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu); -// tools_menu->Append(MENU_LOAD_WAV, _T("Analyse WAV file")); - tools_menu->Append(MENU_LEXICON, _("Process &Lexicon"), lexicon_menu); - tools_menu->Append(MENU_TO_UTF8, _("Convert file to &UTF8...")); - tools_menu->Append(MENU_COUNT_WORDS, _("Count word &frequencies...")); - tools_menu->Append(MENU_TEST , _("Test (temporary)")); -// tools_menu->Append(MENU_TEST2 , _T("Test2")); + tools_menu = new wxMenu; + tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu); + // tools_menu->Append(MENU_LOAD_WAV, _T("Analyse WAV file")); + tools_menu->Append(MENU_LEXICON, _("Process &Lexicon"), lexicon_menu); + tools_menu->Append(MENU_TO_UTF8, _("Convert file to &UTF8...")); + tools_menu->Append(MENU_COUNT_WORDS, _("Count word &frequencies...")); + tools_menu->Append(MENU_TEST , _("Test (temporary)")); + // tools_menu->Append(MENU_TEST2 , _T("Test2")); - // HELP MENU - help_menu = new wxMenu; - help_menu->Append(MENU_DOCS, _("eSpeak &Documentation")); - help_menu->Append(MENU_ABOUT, _("&About")); + // HELP MENU + help_menu = new wxMenu; + help_menu->Append(MENU_DOCS, _("eSpeak &Documentation")); + help_menu->Append(MENU_ABOUT, _("&About")); - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, _("&File")); - menu_bar->Append(speak_menu, _("&Speak")); - menu_bar->Append(voice_menu, _("&Voice")); - menu_bar->Append(option_menu, _("&Options")); - menu_bar->Append(tools_menu, _("&Tools")); - menu_bar->Append(data_menu, _("&Compile")); - menu_bar->Append(help_menu, _("&Help")); + menu_bar = new wxMenuBar; + menu_bar->Append(file_menu, _("&File")); + menu_bar->Append(speak_menu, _("&Speak")); + menu_bar->Append(voice_menu, _("&Voice")); + menu_bar->Append(option_menu, _("&Options")); + menu_bar->Append(tools_menu, _("&Tools")); + menu_bar->Append(data_menu, _("&Compile")); + menu_bar->Append(help_menu, _("&Help")); + } + else + { + // Just replace the File menu + old_menu = menu_bar->Replace(0, file_menu, _("&File")); + delete old_menu; + } return(menu_bar); } // end of MakeMenu diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index f7706e35..a6735ec6 100644 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -31,7 +31,6 @@ #include "translate.h" extern MyFrame *myframe; -extern ChildFrProsody *prosodyframe; extern ProsodyDisplay *prosodycanvas; wxMenu *menu_prosody; @@ -60,6 +59,7 @@ ProsodyDisplay::ProsodyDisplay(wxWindow *parent, const wxPoint& pos, const wxSiz scalex = 0.5; scaley = double(LINESEP*6)/150.0; selected_ph = -1; + SetBackgroundColour(wxColour(245,245,245)); } // end of ProsodyDisplay::ProsodyDisplay @@ -119,7 +119,7 @@ void ProsodyDisplay::RefreshLine(int line) int ProsodyDisplay::GetWidth(PHONEME_LIST *p) {//======================================== int w; - + if(p->ph == NULL) return(0); @@ -279,7 +279,7 @@ void ProsodyDisplay::OnKey(wxKeyEvent& event) {//======================================== PHONEME_LIST *p; int display=1; - + if(selected_ph < 0) selected_ph = 0; @@ -301,7 +301,7 @@ void ProsodyDisplay::OnKey(wxKeyEvent& event) if(selected_ph < (numph-2)) selected_ph++; break; - + case WXK_UP: if(event.ControlDown()) ChangePh(-1,2); @@ -360,7 +360,7 @@ void ProsodyDisplay::DrawEnv(wxDC& dc, int x1, int y1, int width, PHONEME_LIST * PHONEME_DATA phdata_tone; if(width <= 0) return; - + if((pitchr = ph->pitch2 - ph->pitch1) < 0) { pitchr = -pitchr; @@ -425,6 +425,7 @@ void ProsodyDisplay::DrawPitchline(wxDC& dc, int line, int x1, int x2) y = LINEBASE+LINESEP; dc.SetPen(*wxLIGHT_GREY_PEN); +// dc.SetPen(*wxCYAN_PEN); for(ix=0; ix<5; ix++) { dc.DrawLine(0,offy-y,linewidth,offy-y); @@ -520,6 +521,12 @@ void ProsodyDisplay::OnDraw(wxDC& dc) int line, start, end; + GetClientSize(&x1, &y1); + if(x1 != linewidth) + { + LayoutData(NULL, 0); + } + wxRegionIterator upd(GetUpdateRegion()); // get the update rect list while (upd) @@ -549,15 +556,18 @@ void ProsodyDisplay::LayoutData(PHONEME_LIST *ph_list, int n_ph) int xpos; int w; int ix; + int height; PHONEME_LIST *p; - - - numph = n_ph; - phlist = ph_list; + if(ph_list != NULL) + { + numph = n_ph; + phlist = ph_list; + } num_lines = 0; linetab[0] = 1; + GetClientSize(&linewidth, &height); xpos = linewidth; // could improve this to do 'wordwrap' - only split on word boundary @@ -584,86 +594,35 @@ void ProsodyDisplay::LayoutData(PHONEME_LIST *ph_list, int n_ph) } // end of ProsodyDisplay::LayoutData +extern int adding_page; void MyFrame::OnProsody(wxCommandEvent& WXUNUSED(event)) {//===================================================== - // Open the Prosody display window - // Make another frame, containing a canvas + int width, height; + int ix, npages; - int h, w, w2; - - if(prosodyframe != NULL) + if(prosodycanvas != NULL) { // The Prosody window is already open - prosodyframe->Activate(); + + // ?? select the prosody page ?? + npages = screenpages->GetPageCount(); + for(ix=0; ixGetPage(ix) == (wxWindow*)prosodycanvas) + { + screenpages->ChangeSelection(ix); + break; + } + } return; } - m_leftWindow->GetSize(&w2, &h); - GetClientSize(&w, &h); - prosodyframe = new ChildFrProsody(myframe, _T(""), - wxPoint(0, 100), wxSize(w-w2, 420), - wxDEFAULT_FRAME_STYLE | - wxNO_FULL_REPAINT_ON_RESIZE); - - prosodyframe->SetTitle(_T("Prosody")); - - // Give it a status line - prosodyframe->CreateStatusBar(); - - int width, height; - wxMDIClientWindow *clientwin = (wxMDIClientWindow *)this->GetClientWindow(); - clientwin->GetClientSize(&width, &height); - -#ifdef deleted - wxPanel *panel = new wxPanel(prosodyframe,-1,wxPoint(0,0), wxSize(width,50)); - ProsodyDisplay *canvas = new ProsodyDisplay(prosodyframe, wxPoint(0, 50), wxSize(width-2, height-50)); -#else - ProsodyDisplay *canvas = new ProsodyDisplay(prosodyframe, wxPoint(0, 50), wxSize(width-10, height)); -#endif - - prosodycanvas = canvas; - - // Associate the menu bar with the frame - prosodyframe->SetMenuBar(MakeMenu(2,translator->dictionary_name)); - prosodyframe->prosodycanvas = canvas; - prosodyframe->Show(TRUE); + screenpages->GetClientSize(&width, &height); + prosodycanvas = new ProsodyDisplay(screenpages, wxPoint(0, 50), wxSize(width-10, height)); + adding_page = 2; // work around for wxNotebook bug (version 2.8.7) + screenpages->AddPage(prosodycanvas, _T("Prosody"), true); } -BEGIN_EVENT_TABLE(ChildFrProsody, wxMDIChildFrame) - EVT_MENU(SPECTSEQ_CLOSE, ChildFrProsody::OnQuit) - -// EVT_ACTIVATE(ChildFrProsody::OnActivate) -END_EVENT_TABLE() - -extern wxList my_children; - -ChildFrProsody::ChildFrProsody(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, -const long style): - wxMDIChildFrame(parent, -1, title, pos, size, style) -{ - my_children.Append(this); -} - -ChildFrProsody::~ChildFrProsody(void) -{ - wxWindow *w; - my_children.DeleteObject(this); - prosodycanvas = NULL; - prosodyframe = NULL; - -#ifndef PLATFORM_WINDOWS - // bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow - w = myframe->GetClientWindow(); - w->RemoveChild(this); -#endif -} - -void ChildFrProsody::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - - diff --git a/src/prosodydisplay.h b/src/prosodydisplay.h index 0351954f..e2c1ce09 100644 --- a/src/prosodydisplay.h +++ b/src/prosodydisplay.h @@ -15,7 +15,7 @@ class ProsodyDisplay: public wxScrolledWindow public: ProsodyDisplay(wxWindow *parent, const wxPoint& pos, const wxSize& size); ~ProsodyDisplay(); - + virtual void OnDraw(wxDC& dc); void OnMouse(wxMouseEvent& event); void OnKey(wxKeyEvent& event); @@ -32,7 +32,7 @@ class ProsodyDisplay: public wxScrolledWindow int GetWidth(PHONEME_LIST *p); void ChangePh(int pitch1, int pitch2); void SelectPh(int index); - + int linewidth; // height for drawing pitch double scalex; // scale length values double scaley; // scale pitch values @@ -47,18 +47,4 @@ class ProsodyDisplay: public wxScrolledWindow }; // end class ProsodyDisplay -class ChildFrProsody: public wxMDIChildFrame -{ - public: - ProsodyDisplay *prosodycanvas; - ChildFrProsody(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - ~ChildFrProsody(void); - void OnActivate(wxActivateEvent& event); - - void OnQuit(wxCommandEvent& event); - void OnSave(wxCommandEvent& event); - void OnSaveAs(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; diff --git a/src/spect.h b/src/spect.h index e415d01e..ed365860 100644 --- a/src/spect.h +++ b/src/spect.h @@ -121,7 +121,7 @@ typedef struct { PEAKS7 peak_data[7]; unsigned char data[1]; /* firstly harmonic data, then f3,f4,f5 data */ } CYCLE; /* VARIABLE LENGTH Structure */ - + extern int SPC2_size_cycle(CYCLE *cy); //============================================================================================== @@ -142,7 +142,7 @@ public: void CopyPeaks(SpectFrame *sf); void ToggleMarker(int n); void ApplyVoiceMods(); - + void MakeWaveF(int peaks, PitchEnvelope &pitch, int amplitude, int duration); void MakeHtab(int numh, int *htab, int pitch); double GetRms(int amp); diff --git a/src/spectdisplay.cpp b/src/spectdisplay.cpp index 376fdd61..080ed3fd 100644 --- a/src/spectdisplay.cpp +++ b/src/spectdisplay.cpp @@ -42,9 +42,6 @@ extern MyFrame *frame ; #define SCROLLUNITS 20 -#define N_CANVASLIST 50 -static int canvaslistix=0; -static SpectDisplay *canvaslist[N_CANVASLIST]; SpectSeq *clipboard_spect=NULL; wxMenu *menu_spectdisplay=NULL; @@ -77,37 +74,14 @@ SpectDisplay::SpectDisplay(wxWindow *parent, const wxPoint& pos, const wxSize& s pk_num = 1; SetExtent(); - - if(canvaslistix < N_CANVASLIST-1) - canvaslist[canvaslistix++] = this; -// WavegenInitPkData(0); + } // end of SpectDisplay::SpectDisplay SpectDisplay::~SpectDisplay() {//========================== - // delete this from the canvaslist - int ix; - - for(ix=0; ix 0) - currentcanvas = canvaslist[0]; - else - currentcanvas = NULL; - } + // ?? change currentcanvas } @@ -174,6 +148,7 @@ void SpectDisplay::OnActivate(int active) { formantdlg->GetValues(spectseq, sframe); ReadDialogValues(); + currentcanvas = NULL; } } @@ -209,7 +184,7 @@ int GetNumeric(wxTextCtrl *t) void SpectDisplay::WriteDialogLength() {//=================================== wxString string; - + string.Printf(_T("%d mS"),int(spectseq->GetKeyedLength()+0.5)); formantdlg->t_orig_seq->SetLabel(string); } @@ -220,7 +195,7 @@ void SpectDisplay::WriteDialogValues() //{=============================== { wxString string; - + SetSpinCtrl(formantdlg->t_amplitude,spectseq->amplitude); string.Printf(_T("%d - %d Hz %d mS"), @@ -229,7 +204,7 @@ void SpectDisplay::WriteDialogValues() pitchgraph->SetData(128,spectseq->pitchenv.env); voicedlg->SetFromSpect(spectseq); - + WriteDialogLength(); } @@ -456,15 +431,13 @@ void SpectDisplay::SavePitchenv(PitchEnvelope &pitch) } // end of SpectDisplay::SavePitchenv -// WX_DECLARE_LIST(MyChild,ChildList); -// WX_DEFINE_LIST(ChildList); void SpectDisplay::PlayChild(int number, PitchEnvelope pitchenv) {//========================================================= +#ifdef deleted SpectSeq *seq; - if(number >= canvaslistix) return; if((seq = canvaslist[number]->spectseq) == NULL) @@ -472,6 +445,7 @@ void SpectDisplay::PlayChild(int number, PitchEnvelope pitchenv) ReadDialogValues(); seq->MakeWave(0,seq->numframes-1,pitchenv); +#endif } // end of PlayChild @@ -481,7 +455,7 @@ void SpectDisplay::SetKeyframe(SpectFrame *sf, int yes) sf->keyframe = yes; pitchgraph->Refresh(); - + WriteDialogLength(); } @@ -731,7 +705,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) spectseq->bass_reduction ^= 1; Refresh(); break; - + case 0x1043: // CTRL-C spectseq->ClipboardCopy(); break; @@ -923,6 +897,7 @@ void SpectDisplay::OnMouse(wxMouseEvent& event) int frame; int ix; + SetFocus(); if(event.RightDown()) { PopupMenu(menu_spectdisplay); @@ -935,7 +910,7 @@ void SpectDisplay::OnMouse(wxMouseEvent& event) wxPoint pt(event.GetLogicalPosition(dc)); if(spectseq->numframes==0) return; - + frame = (int)(pt.y/(FRAME_HEIGHT*zoomy)); if(!event.ControlDown()) @@ -1018,30 +993,16 @@ void MyFrame::OnNewWindow(wxCommandEvent& event) else path_spectload2 = path.GetPath(); - // Make another frame, containing a canvas + + GetClientSize(&width, &height); - MyChild *subframe = new MyChild(myframe, _T("Spectrum"), - wxPoint(10, 0), wxSize(500, height), - wxDEFAULT_FRAME_STYLE | - wxNO_FULL_REPAINT_ON_RESIZE); - - subframe->SetTitle(leaf); - - // Give it a status line - subframe->CreateStatusBar(); - - subframe->GetClientSize(&width, &height); - SpectDisplay *canvas = new SpectDisplay(subframe, wxPoint(0, 0), wxSize(width, height), spectseq); + SpectDisplay *canvas = new SpectDisplay(screenpages, wxDefaultPosition, wxSize(width, height), spectseq); + screenpages->AddPage(canvas, leaf, true); canvas->savepath = filename; - currentcanvas = canvas; - - // Associate the menu bar with the frame - subframe->SetMenuBar(MakeMenu(1,translator->dictionary_name)); - subframe->canvas = canvas; - subframe->Show(TRUE); - + currentcanvas = canvas; } + void InitSpectrumDisplay() {//======================= wxMenu *menu_markers = new wxMenu; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 40fadfe4..e70a4e48 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.25 14.Sep.12"; +const char *version_string = "1.46.26 17.Sep.12"; const int version_phdata = 0x014624; int option_device_number = -1; diff --git a/src/transldlg.cpp b/src/transldlg.cpp index fce227c1..c095a4e3 100644 --- a/src/transldlg.cpp +++ b/src/transldlg.cpp @@ -325,12 +325,12 @@ void TranslDlg::SpeakFile(void) wxFileName fname; FILE *f_text; char buf[200]; - + fname = wxFileName(path_speaktext); file = wxFileSelector(_T("Text file to speak"),fname.GetPath(),fname.GetName(),_T(""),_T("*"),wxOPEN); if(file == wxEmptyString) return; - + strcpy(buf,file.mb_str(wxConvLocal)); f_text = fopen(buf,"r"); if(f_text == NULL) @@ -338,9 +338,9 @@ void TranslDlg::SpeakFile(void) wxLogError(_T("Failed to read: ")+file); return; } - + path_speaktext = file; - + InitText(0); SpeakNextClause(f_text,NULL,0); return; @@ -465,11 +465,9 @@ void TranslDlg::OnCommand(wxCommandEvent& event) case T_PROCESS: case MENU_SPEAK_TEXT: - if(prosodycanvas == NULL) - { - myframe->OnProsody(event); - } + myframe->OnProsody(event); prosodycanvas->LayoutData(ph_list,n_ph_list); + myframe->Refresh(); option_phoneme_events = espeakINITIALIZE_PHONEME_EVENTS; option_log_frames = 1; MakeWave2(ph_list,n_ph_list); From 066a8985489d4835522d7fa7d74217de7c8d0814 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 21 Oct 2012 13:05:45 +0000 Subject: [PATCH 4/5] [1.46.27] Changes to: cy, de, ne, pt, ta. Lang: pt (brazil) change initial 'r' to [h]. Lang: si, say '%' before the number. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@293 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/cy_rules | 6 +- dictsource/de_list | 4 + dictsource/de_rules | 12 ++- dictsource/dict_phonemes | 25 +++-- dictsource/en_list | 3 +- dictsource/en_rules | 2 +- dictsource/ka_list | 3 +- dictsource/ne_list | 22 ++-- dictsource/ne_rules | 182 +++++++++++++++++----------------- dictsource/pt_list | 36 +++++-- dictsource/pt_rules | 114 ++++++++++++--------- dictsource/ta_list | 3 +- dictsource/ta_rules | 93 +++++++++++++---- phsource/compile_report | 27 +++-- phsource/ph_english_rp | 2 +- phsource/ph_pt_brazil | 6 +- phsource/phonemes | 4 + phsource/vowel/uu#_2 | Bin 0 -> 14611 bytes phsource/vowel/vowelchart.png | Bin 73845 -> 74081 bytes src/compiledata.cpp | 24 ++++- src/numbers.cpp | 16 +++ src/synthdata.cpp | 2 +- src/tr_languages.cpp | 6 +- src/translate.h | 11 +- 24 files changed, 399 insertions(+), 204 deletions(-) create mode 100755 phsource/vowel/uu#_2 diff --git a/dictsource/cy_rules b/dictsource/cy_rules index d6cfebd8..a658d7b4 100644 --- a/dictsource/cy_rules +++ b/dictsource/cy_rules @@ -1,6 +1,8 @@ // translation rules for Welsh language // This file is UTF-8 encoded +.L01 ch dd ff ll th // digraph consonants + .group a _) a (_ A: a A: @@ -21,7 +23,7 @@ ae AY ai aI au aY - @) au (_ a +// @) au (_ a aw (+ aU @@ -80,6 +82,7 @@ g g gwl gw@-l gwn gw@-n + gwr gw@-r .group h _) h (_ hA: @@ -230,6 +233,7 @@ w (dd u: w (A w + _) w (l wy uY .group x diff --git a/dictsource/de_list b/dictsource/de_list index 65be4682..c120992f 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -472,6 +472,7 @@ run _^_EN scanner _^_EN science _^_EN server _^_EN +seven _^_EN sex _^_EN sexy _^_EN shirt _^_EN @@ -482,6 +483,7 @@ slum _^_EN small _^_EN snob _^_EN song _^_EN +sorry _^_EN source _^_EN spam _^_EN spirit _^_EN @@ -496,6 +498,7 @@ trip _^_EN tuner _^_EN unix _^_EN venture _^_EN +website _^_EN window _^_EN word _^_EN @@ -598,6 +601,7 @@ häuschen hOYsC@n hausier haUz'i:r heimat $1 herberg hErbErg +hi haI historie $alt hm h@m horsam hO3zA:m diff --git a/dictsource/de_rules b/dictsource/de_rules index e3896f33..dbe9b8ed 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -236,6 +236,7 @@ _) cow _^_EN crew _^_EN cup _^_EN + c (y s _) cyber saIb3 @@ -562,6 +563,7 @@ ge (mal g@ _) ge (mK gE _) ge (nK gE + _) ge (L01K gE ge (tr g@ general ge:nEr'al general (is ge:n@ral @@ -1056,6 +1058,13 @@ formal) ie =I@ _ver) st St ste (ll StE a) ste (ll stE + st (ah St + st (ä St + st (eh St + st (ö St + st (ü St + st (uh St + st (ung st _) safe _^_EN &) schaft (_S6 Saft @@ -1288,6 +1297,7 @@ formal) ie =I@ _) viel (@P4 f'i:l _) vier (g@P4 f'i:r _) viet vIEt + _) volks fOlks _) voll (C@P4 f'Ol _) voll (br f%Ol _) voll (end f%Ol_| @@ -1343,7 +1353,7 @@ formal) ie =I@ y (x y _) y (A j A) y (A j - @) y (_ I + @) y (_ i: t) y (_ _^_EN .group z diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index ad6dae2b..e7fa4745 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -40,7 +40,7 @@ s S t tS ts v x z Z -Dictionary cy_dict 2010-05-24 +Dictionary cy_dict 2012-10-10 @ @- @I @Y a A: aI aU AY aY E e: eU I i: Iu @@ -78,7 +78,7 @@ S s2 t t2 tS ts v w z Z -Dictionary de_dict 2012-09-13 +Dictionary de_dict 2012-10-17 3 @ @- a A A: aI aU A~ E E2 E: e: EI i I @@ -102,7 +102,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2012-09-14 +Dictionary en_dict 2012-10-21 0 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 aI@ @@ -203,7 +203,7 @@ q r r. s S s. t T t. th th. v w x z -Dictionary ta_dict 2012-09-11 +Dictionary ta_dict 2012-10-17 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -376,7 +376,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2012-09-17 +Dictionary pt_dict 2012-09-21 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -550,7 +550,7 @@ r R r. R2 s s. S; t t. th th. tS v w z -Dictionary ne_dict 2012-07-17 +Dictionary ne_dict 2012-09-19 @ @/ @2 @3 a a: aI aU a~ e E e: E: eI e~ E~ @@ -730,7 +730,7 @@ s s. S; t t. th th. tS v w z -Dictionary ka_dict 2012-07-12 +Dictionary ka_dict 2012-10-17 @ @- a e i o u @@ -825,6 +825,17 @@ R s S S; t w x z Z Z; +Dictionary kl_dict 2012-10-21 + +& a aI e i o O u +W + +: b C d f g h j +k l l# m n N p Q +q r s t tl# ts v w +X z + + Dictionary ko_dict 2012-09-17 @ a e E i o u u- diff --git a/dictsource/en_list b/dictsource/en_list index e1d79dbe..f507c231 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -193,7 +193,7 @@ _₠ jU@roU \ bakslaS $max3 / slaS $max3 * ast@rIsk $max3 -% p3sEnt $max3 +% p3s'Ent $max3 ?5 % pVRs'Ent $max3 = _:i:kw@Lz_: $max3 ¢ sEnts @@ -3012,6 +3012,7 @@ Fainne fan;@ Fírinne fi:rIn;@ Gary gari Geraint gEraInt +Gerhard ge@hA@t Gibbs gIbz Gillian dZIli:@n Gladys gladIs diff --git a/dictsource/en_rules b/dictsource/en_rules index b32dc2ee..9badffd1 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -3896,7 +3896,7 @@ @) o (ist oU oix (_ wa o (ky_ oU - @) ometer '0mIt@ + @) ometer '0mIt3 ?3 g) o (ng O ?3 r) o (ng O ?3 s) o (ng O diff --git a/dictsource/ka_list b/dictsource/ka_list index 7807c48b..eae83a09 100755 --- a/dictsource/ka_list +++ b/dictsource/ka_list @@ -1,4 +1,4 @@ - + // translation rules for Georgian // This file is UTF-8 encoded @@ -59,6 +59,7 @@ _0M2x m'ilioni _0and d%a _dpt mt#eli_ +_roman m'esame _0Z1 me'at#edi _0Z2 me'asedi diff --git a/dictsource/ne_list b/dictsource/ne_list index e2cf3f94..8649eb69 100644 --- a/dictsource/ne_list +++ b/dictsource/ne_list @@ -1,5 +1,5 @@ -// Nepali Language. -// This list file is prepared by Him Prasad Gautam (Nepal). +// Nepali Language. +// This ne_list file is prepared by Him Prasad Gautam < himjee@yahoo.com >. // This file is UTF-8 encoded. // letter groups: @@ -214,17 +214,17 @@ _dpt _th'o:plo_ तर t'ar@, $pause पर p'ar@, वर w'ar@: -मेरो $pause +मेरो $brk म m@2,, $u $brk नि $pause -त t@, +त t@, $pause र $u $pause पो $u $pause हो $u $brk के k'e,: $brk दुःख d'u,,kh@ सुख s'u=kh@ -जव J'a@ +जव J'Vv@ राष्ट्रिय r'a:S,t.rI:j@2 $2 सित s'it@ होइन h'oi:n@2 @@ -232,5 +232,15 @@ _dpt _th'o:plo_ गएन g'Vj'en@2 खाएन khaj'en@2 दिएन d'ij'en@2 - +छुन ch'un'@ +बाट b'a:t.@ +अथवा $pause +वा $pause +उप u'p@ $brk + + + + + + // diff --git a/dictsource/ne_rules b/dictsource/ne_rules index 74c351d6..3a8f5ea1 100644 --- a/dictsource/ne_rules +++ b/dictsource/ne_rules @@ -1,5 +1,5 @@ // Nepali Language. -// This rules file is prepared by Him Prasad Gautam (nepal). +// This ne_rules file is prepared by Him Prasad Gautam < himjee@yahoo.com >. // This file is UTF-8 encoded. // letter groups: @@ -393,15 +393,15 @@ // Independent (Alphabetic) Vowels .group ऄ - ऄ e~ + ऄ e~' .group अ अ V - अँ V~ + अँ V~' .group आ आ a: - आँ a~' + आँ a~'' आइ a:I आउ a:U आऊ a:U' @@ -409,21 +409,21 @@ .group इ इ I - इँ i~ + इँ i~' .group ई ई I: ई (_ i: - ईँ i~' + ईँ i~'' .group उ उ U - उँ u~: + उँ u~' .group ऊ ऊ U - ऊँ u~: + ऊँ u~' .group ऋ ऋ rI @@ -442,15 +442,15 @@ .group ऎ ऎ e - ऎँ e~: + ऎँ e~' .group ए ए e: - एँ e~, + एँ e~', .group ऐ ऐ VI - ऐँ E~: + ऐँ E~' ?2 ऐ aI // ?? [aI] [E:] [&:] .group ऑ @@ -461,18 +461,18 @@ .group ओ ओ o: - ओँ o~ + ओँ o~' .group औ औ VU // ?? [aU] [O:] - औँ O~ + औँ O~' ?3 औ aU // ?? [aU] [O:] .group ॐ - ॐ o~'m + ॐ o~''m .group ॲ - ॲ V~: + ॲ V~' // Dependent (Symbolic) Vowel @@ -481,29 +481,29 @@ ा a:,k'a::r@ // If not followed to a Consonant. C) ा a: ाव aU - C) ाँ a~: + C) ाँ a~' .group ि ि i'k'a::r@ // If not followed to a Consonant. C) ि I - C) िँ i~: + C) िँ i~' .group ी ी i:,=k'a::r@ // If not followed to a Consonant. C) ी (_ i: C) ी I: - C) ीँ i~: + C) ीँ i~' .group ु ु U'k'a::r@ // If not followed to a Consonant. अन) ु u,- C) ु u - C) ुँ u~: + C) ुँ u~' .group ू ू wu:,=k'a::r@ // If not followed to a Consonant. C) ू u: - C) ूँ u~: + C) ूँ u~' .group ृ ृ ri:,k'a:r@ // If not followed to a Consonant. @@ -515,7 +515,7 @@ .group ॅ ॅ E,ci:n'h@: - C) ॅ V~ + C) ॅ V~' .group ॆ ॆ e'k'a::r@/ // If not followed to a Consonant. @@ -524,12 +524,12 @@ .group े े e:'k'a::r@ // If not followed to a Consonant. C) े e: - C) ेँ e~: + C) ेँ e~' .group ै ै VI:'k'a::r@ // If not followed to a Consonant. C) ै E: // ?? [aI] [E:] [&:] - C) ैँ E~ + C) ैँ E~' ?2 C) ै aI // ?? [aI] [E:] [&:] .group ॉ @@ -543,12 +543,12 @@ .group ो ो o:,k'a::r@ // If not followed to a Consonant. C) ो o: - C) ोँ o~: + C) ोँ o~' .group ौ ौ O:uka::r@ // If not followed to a Consonant. C) ौ O: // [O:] or [aU] ?? - C) ौँ O~: + C) ौँ O~' ?3 C) ौ aU // [O:] or [aU] ?? .group ॢ @@ -562,8 +562,8 @@ .group क क kV - कँ kV~: - कॅ kV~ + कँ kV~' + कॅ kV~' क (B k ?1 क (_k ्) क (_ k@/ @@ -577,8 +577,8 @@ ?1 ख (_ kh ्) ख (_ kh@/ ख (्ख kh, - खँ khV~: - खॅ khV~ + खँ khV~' + खॅ khV~' .group ग ग gV @@ -586,8 +586,8 @@ ?1 ग (_ g ग (्ग g, ्) ग (_ g@/ - गँ gV~: - गॅ gV~ + गँ gV~' + गॅ gV~' .group घ घ ghV @@ -595,8 +595,8 @@ ?1 घ (_ gh घ (्घ gh, ्) घ (_ gh@/ - घँ ghV~: - घॅ ghV~ + घँ ghV~' + घॅ ghV~' .group ङ // Phoneme adjustment suggested @@ -612,31 +612,31 @@ च (्च c, च (्य c: ्) च (_ c@/ - चँ cV~: - चॅ cV~ + चँ cV~' + चॅ cV~' .group छ छ chV छ (B ch ्) छ (C ch@ छ (_ ch@ - छँ chV~: - छॅ chV~ + छँ chV~' + छॅ chV~' .group ज ज JV ज (B J ?1 ज (_ J ज (्ज J, - जँ JV~: - जॅ JV~ + जँ JV~' + जॅ JV~' ्) ज (_ J@/ .group झ // Phoneme adjustment suggested. झ JhV झ (B Jh - झँ JhV~: - झॅ JhV~ + झँ JhV~' + झॅ JhV~' झ (्झ J, झ (_ Jh @@ -650,8 +650,8 @@ .group ट ट t.V ट (B t. - टँ t.V~: - टॅ t.V~ + टँ t.V~' + टॅ t.V~' ट (्ट t., ?1 ट (_ t. ्) ट (_ t.@/ @@ -661,8 +661,8 @@ .group ठ ठ th.V ठ (B th. - ठँ t.hV~: - ठॅ t.hV~ + ठँ t.hV~' + ठॅ t.hV~' ठ (्ठ th., ्) ठ (_ th.@/ ?1 ठ (_ t.h @@ -670,22 +670,22 @@ .group ड ड d.V ड (B d. - डँ d.V~: - डॅ d.V~ + डँ d.V~' + डॅ d.V~' ड (्ड d., ड (्य d.: ्) ड (_ d.@/ ?1 ड (_ d. ड़ d.V: ड़ (B d.: - ड़ँ d.:V~: - ड़ॅ d.:V~ + ड़ँ d.:V~' + ड़ॅ d.:V~' .group ढ ढ dh.V ढ (B dh. - ढँ d.hV~: - ढॅ d.hV~ + ढँ d.hV~' + ढॅ d.hV~' ्) ढ (_ dh.@/ ?1 ढ (_ d.h ढ़ d.hV: // nukta @@ -701,8 +701,8 @@ .group त त tV त (B t - तँ tV~: - तॅ tV~ + तँ tV~' + तॅ tV~' ्) त (_ t@/ त (्त t, त (्य t: @@ -710,8 +710,8 @@ .group थ थ thV - थँ thV~: - थॅ thV~ + थँ thV~' + थॅ thV~' थ (B th ्) थ (_ th@/ थ (्य th, @@ -719,8 +719,8 @@ .group द द dV - दँ dV~: - दॅ dV~ + दँ dV~' + दॅ dV~' द (B d द (्द d, द (्व d: @@ -730,16 +730,16 @@ .group ध ध dhV - धँ dhV~: - धॅ dhV~ + धँ dhV~' + धॅ dhV~' ध (B dh ?1 ध (_ dh ्) ध (_ dh@/ .group न न nV - नँ nV~: - नॅ nV~ + नँ nV~' + नॅ nV~' न (B n ?1 न (_ n ्) न (_ n@/ @@ -754,8 +754,8 @@ .group प प pV - पँ pV~: - पॅ pV~ + पँ pV~' + पॅ pV~' प (B p ?1 प (_ p प (्प p, @@ -764,8 +764,8 @@ .group फ फ phV - फँ phV~: - फॅ phV~ + फँ phV~' + फॅ phV~' फ (B ph फ (्न ph: ?1 फ (_ ph @@ -773,8 +773,8 @@ .group ब ब bV - बँ bV~: - बॅ bV~ + बँ bV~' + बॅ bV~' ब (B b ब (्ब b: ?1 ब (_ b @@ -782,8 +782,8 @@ .group भ भ bhV - भँ bhV~: - भॅ bhV~ + भँ bhV~' + भॅ bhV~' भ (B bh ?1 भ (_ bh भ (्य bh, @@ -791,8 +791,8 @@ .group म म mV - मँ mV~: - मॅ mV~ + मँ mV~' + मॅ mV~' म (B m म (्म m, म (्य m: @@ -800,16 +800,16 @@ .group य य jV - यँ jV~: - यॅ jV~ + यँ jV~' + यॅ jV~' य (B j ?1 य (_ j@2 ्) य (_ j@/ .group र र rV - रँ rV~: - रॅ rV~ + रँ rV~' + रॅ rV~' र (B r ्) र (c r'v: @@ -826,8 +826,8 @@ .group ल ल lV - लँ lV~: - लॅ lV~ + लँ lV~' + लॅ lV~' ल (B l ?1 ल (_ l ्) ल (_ l@/ @@ -845,15 +845,15 @@ .group व व wV - वँ vV~: - _) वँ wV~: - वॅ vV~ - व (B w + वँ vV~' + _) वँ wV~' + वॅ vV~' + व (B w' _) व wV _) व (B w _) व (् v - C्) व w: - ह्) व w: + C्) व w' + ह्) व w' ध्) व (_ 'wV ध्) व (B w' ध्) व (C w'V @@ -861,8 +861,8 @@ .group श श SV - शँ SV~: - शॅ SV~ + शँ SV~' + शॅ SV~' श (B S श (्च S: ?1 श (_ S @@ -870,8 +870,8 @@ .group ष ष s.V - षँ s.V~: - षॅ s.V~ + षँ s.V~' + षॅ s.V~' ष (B s. ष (्ट s., ष (्ठ s., @@ -880,8 +880,8 @@ .group स स sV - सँ SV~: - सॅ SV~ + सँ SV~' + सॅ SV~' स (B s स (्स s, ?1 स (_ s @@ -889,8 +889,8 @@ .group ह ह hV - हँ hV~: - हॅ hV~ + हँ hV~' + हॅ hV~' ह (B h ्) ह (_ h@/ diff --git a/dictsource/pt_list b/dictsource/pt_list index 76fcb2fd..f3d797f0 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -644,6 +644,7 @@ governo gov'ernU $noun // $alt changes stressed [e] or [o] phoneme to open [E] or [O] // $alt2 changes stressed [E] or [O] phoneme to close [e] or [o] +abordo $alt aborto $alt $verb acerto $alt2 $noun adereço $alt2 @@ -667,13 +668,17 @@ apoio $alt $verb aprendeste $alt2 arremesso $alt2 $noun assembleia $alt +atmosfera $alt atrozes $alt austera $alt austero $alt autora $alt2 +bebeste $alt2 beco $alt2 belo $alt besta $alt2 +bezerro $alt2 +bilhete $alt2 boca $alt2 boleia $alt bolo $alt2 @@ -683,9 +688,12 @@ bromelha $alt cabeça $alt2 cacete $alt2 cachorra $alt2 +caderneta $alt2 camiseta $alt2 cantora $alt2 caractere $alt +careta $alt2 +carreta $alt2 casebre $alt catorze $alt2 cefaleia $alt @@ -699,7 +707,10 @@ coco $alt2 cofre $alt colmeia $alt começo $alt2 $noun +comera $alt2 comeres $alt2 +comeste $alt2 +conheceste $alt2 conheço $alt2 copa $alt copo $alt @@ -715,6 +726,7 @@ couber $alt couberem $alt couberdes $alt couberes $alt +cratera $alt crede $alt2 cresce $alt crescem $alt @@ -737,13 +749,17 @@ doce $alt2 droga $alt emprego $alt2 $noun endereço $alt2 +enforco $alt +engordo $alt enumerem $alt enredo $alt $verb enterro $alt2 $noun +envolto $alt2 enxerto $alt2 $noun epopeia $alt eritreia $alt erro $alt2 $noun +erros $alt2 escopeta $alt2 escroto $alt2 esforço $alt $verb @@ -765,13 +781,9 @@ fera $alt fere $alt ferem $alt fezes $alt -fizer $alt -Fizeram $alt -fizerem $alt -fizerdes $alt -fizeres $alt folga $alt fogos $alt +forca $alt2 fores $alt2 forro $alt $verb fosse $alt2 @@ -785,6 +797,7 @@ gelo $alt $verb germe $alt gesso $alt2 gonorreia $alt +gorda $alt2 gozo $alt $verb grego $alt2 grelha $alt @@ -808,10 +821,12 @@ mantiveres $alt marreta $alt2 martelo $alt merda $alt +megera $alt mexa m'eS& mexi meS'i mexo m'eSU miolo $alt2 +moeda $alt modo $alt modos $alt molho $alt2 $noun @@ -831,6 +846,9 @@ mutreta $alt2 naquele $alt2 negro $alt2 novos $alt +obstera $alt +obsoleta $alt2 +obsoleto $alt2 odisseia $alt onu $1 opereta $alt2 @@ -856,6 +874,7 @@ peso $alt2 $noun pirueta $alt2 plateia $alt plebeia $alt +porcos $alt porrete $alt2 porra $alt2 portos $alt @@ -868,6 +887,7 @@ primavera $alt profere $alt proferem $alt puder $alt +punheta $alt puserdes $alt recomeço $alt2 $noun recordo $alt @@ -881,6 +901,7 @@ resolvem $alt rixa x'iS& rogas $alt saleta $alt2 +sarjeta $alt seborreia $alt seco $alt2 $noun selo $alt $verb @@ -900,12 +921,10 @@ soprem $alt sopro $alt $verb sorvete $alt2 sossego $alt2 $noun -souber $alt souberdes $alt -souberes $alt -souberem $alt sugere $alt sugerem $alt +suporto $alt suor swOr tapete $alt2 tempero $alt $verb @@ -920,6 +939,7 @@ travesso $alt2 trevo $alt2 troco $alt2 $noun tropeço $alt2 $noun +trombeta $alt2 valeta $alt2 vanessa $alt2 verbo $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index f25f31b2..e114c47e 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -15,9 +15,12 @@ // K not a vowel // endings -.L01 a am o -.L02 a am e em o ue uem -.L03 a am +.L01 a am +.L02 e em +.L03 a am o +.L04 a am e em o ue uem +.L05 r ra ram re rem rdes + .group a _) a (_ a @@ -335,47 +338,59 @@ ?1 l) e (ta 'E // eg: bicicleta, atleta. //sort - qu) e (brL02_ E - _hosp) e (dL01_ E - _estr) ei (L01_ EI - _inv) e (jL02_ E - _dec) e (pL02_ E - _g) e (rL02_ E - _op) e (rL02_ E - _qu) e (rL02_ E - _alt) e (rL02_ E - _inv) e (rtL01_ e - _f) e (rvL01_ e - _p) e (scL01_ E - _m) e (sclL02_ E - _com) e (tL01_ e - _derr) e (tL01_ e - _prom) e (tL01_ e - _atr) e (vL01_ e - _escr) e (vL01_ e - _pr) e (zL02_ E - _ado) e (çL01_ e - _aqu) e (çL01_ e - _car) e (çL01_ e - _mer) e (çL01_ e - _pad) e (çL01_ e - _per) e (çL01_ e - _esqu) e (çL01_ e - _obed) e (çL01_ e -_aborr) e (çL01_ e -_compar) e (çL01_ e -_desapar) e (çL01_ e -_esclar) e (çL01_ e -_reapar) e (çL01_ e - _sol) e (trL01_ E -_acont) e (çL03_ e -_envaid) e (çL01_ e - _ofer) e (çL01_ e -_enriqu) e (çL01_ e -_descr) e (vL01_ e -_enfraqu) e (çL01_ e + qu) e (brL04_ E + _hosp) e (dL03_ E + _estr) ei (L03_ EI + _inv) e (jL04_ E + _dec) e (pL04_ E + _g) e (rL04_ E + _op) e (rL04_ E + _qu) e (rL04_ E + _alt) e (rL04_ E + _inv) e (rtL03_ e + _f) e (rvL03_ e + _p) e (scL03_ E + _m) e (sclL04_ E + _m) e (tL03_ e + _com) e (tL03_ e + _rem) e (tL03_ e + _derr) e (tL03_ e + _prom) e (tL03_ e + _subm) e (tL03_ e +_comprom) e (tL03_ e + _sol) e (trL03_ E + _atr) e (vL03_ e + _escr) e (vL03_ e +_descr) e (vL03_ e +_embel) e (zL01_ e + _pr) e (zL04_ E +_acont) e (çL01_ e + _ado) e (çL03_ e + _aqu) e (çL03_ e + _car) e (çL03_ e + _mer) e (çL03_ e + _pad) e (çL03_ e + _per) e (çL03_ e + _esqu) e (çL03_ e + _obed) e (çL03_ e + _ofer) e (çL03_ e +_aborr) e (çL03_ e +_compar) e (çL03_ e +_desapar) e (çL03_ e +_enfraqu) e (çL03_ e +_enriqu) e (çL03_ e +_envaid) e (çL03_ e +_esclar) e (çL03_ e +_reapar) e (çL03_ e +_reconh) e (çL03_ e //endsort + _exag) e (L05_ E + _fiz) e (L05_ E + _houv) e (L05_ E + _soub) e (L05_ E + + .group é é ''E éi ''EI @@ -661,11 +676,16 @@ _enfraqu) e (çL01_ e ?1 v) o (lt O //sort - _m) o (lhL02_ O - _ref) o (gL02_ O - c) o (rrL03_ o // escorra, incorra, corra, recorra - _m) o (rrL03_ o - _ap) oi (L03_ OI + _engl) o (bL01_ O + _r) o (gL04_ O + _adv) o (gL04_ O + _ref) o (gL04_ O + _ap) oi (L01_ OI + _m) o (lhL04_ O + _abs) o (lvL02_ O + _env) o (lvL02_ O + c) o (rrL01_ o // escorra, incorra, corra, recorra + _m) o (rrL01_ o p) ostos (_ Ost=Us# // dispostos etc. //endsort diff --git a/dictsource/ta_list b/dictsource/ta_list index 17fd2b94..2936a78c 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -259,7 +259,6 @@ tamil தமிழ் $text பண்தம் $alt பவனி $alt பாபா $alt -போண்டா $alt பாதாம் $alt போகம் $alt போதனை $alt @@ -288,7 +287,6 @@ tamil தமிழ் $text பால்ய $alt பில் $alt பந்த் $alt -பில்லி $alt பம்பளிமாஸ் $alt பைக்கை $alt பெட்டின் $alt @@ -468,6 +466,7 @@ tamil தமிழ் $text சாரு $alt பிரசார் prVsa:r சாயா $alt +சோ $alt கக $alt // initial க as [g] diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 9e09328c..d8c59a82 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -143,6 +143,8 @@ //sort + + _) க (ங்கபாடி gV _) க (ங்கர gV _) க (ங்கா gV @@ -215,7 +217,7 @@ _) க (வுனை gV _) க (வுன்கள gV _) க (வுர gV - _) க (ாசியாபாத் g + _) காச (ியாபாத ga:z _) க (ாண்டாமிருக g _) க (ாண்டீப g _) காண்டேக (ர ga:n.d.e:kV @@ -348,21 +350,15 @@ _மன்மதக்) க (ுகை g _) க (ுணவதி g _) க (ுணவான g _) க (ுணா g + _) க (ுண்ட g _) குண்ட (க்கல gun.t.V# - _) க (ுண்டடி g - _) க (ுண்டன g - _) க (ுண்டம்மா g - _) க (ுண்டர g - _) க (ுண்டாக g - _) க (ுண்டாதி g + _) க (ுண்டங் k + _) க (ுண்டத் k + _) க (ுண்டம k + _) க (ுண்டல k _) குண்டாந்த (டி gun.d.a:ntV - _) க (ுண்டாய g - _) க (ுண்டின g - _) க (ுண்டு g - _) க (ுண்டூசி g + _) க (ுண்டி k _) குண்ட (ூர gun.t.V# - _) க (ுண்டை g - _) க (ுண்டோதர g _) க (ுதிக் g _) க (ுதிச் g _) க (ுதித் g @@ -509,6 +505,7 @@ _மன்மதக்) க (ுகை g _) க (ோவிந்த g _) க (ோஷ g _) கௌசிக kaUsikV# + _) க (ௌட g _) கௌத gaUtV# _) க (ௌனை g _) க (ௌன்கள g @@ -696,9 +693,12 @@ _டா) குமெண்ட kUmen.tV# L03து) க (ுறித்த k அரை) க (ுறை k _கீழ்) க (ுல k + அரச) க (ுல k ராஜ) க (ுல k _குரு) க (ுல k _கோ) க (ுல k + _வேத) க (ுல k + _மனித) க (ுல k _மேல்) க (ுல k _மன்னர்) க (ுல k _டிரா) க (ுலா k @@ -739,6 +739,7 @@ _நினைவு) க (ூர k _பக்த) க (ோடி k _தேவ) க (ோட்ட k _தேவி) க (ோட்ட k +_ஸ்ரீஹரி) க (ோட்ட k அஷ்ட) க (ோணல k வீண்) க (ோப k _நாகர்) க (ோயில k @@ -755,6 +756,7 @@ _விவே) க் (_ k _வர்) க்க ggV# _சொர்) க்க ggV# _ஸ்வர்) க்க ggV# +_தீர்) க்க (_சுமங்கலி ggV _கை) க்க (டிகார kgV L03) க்க (ண்ட ggV _துணை) க்க (ண்ட ggV @@ -909,6 +911,8 @@ _மீனலோ) ச (னி tSV _) ச (ப்பி tSV _) ச (ப்பு tSV _) ச (ப்பெ tSV + _நா) ச (ர zV + _ரே) ச (ர zV _டின்) ச (ர tSV _பங்) ச (ர tSV _பன்) ச (ர tSV @@ -916,6 +920,9 @@ _மீனலோ) ச (னி tSV _) சர்ச (ி tSVrtS _) ச (ர்ச்சில tSV _) ச (ர்ச்சு tSV + _) ச (ர்தாரி_ zV + _) ச (ர்தாரிய zV + அ) ச (ர்பை zV _) ச (ர்மிளா s.V அஃப்) ச (ல zV மருதா) ச (ல tSV @@ -947,6 +954,7 @@ _தணிகா) ச (ல tSV _) ச (ாப்டர tS _) சாப் (ளின tSa:p _) ச (ாமுண்ட tS + _மொ) ச (ாம்பி z _) ச (ாயாவ tS _) ச (ாய்ஸ tS அப) ச (ார tS @@ -1026,6 +1034,7 @@ _பக்தி_) சிரத் (தை srVd _பா) ச (ில z _ஃபா) ச (ில z _) சி (லாகி s + _நியூ) ச (ிலாந்த z _) ச (ிலிய tS _) சி (லேட s _) ச (ில்ற tS @@ -1039,12 +1048,16 @@ _பக்தி_) சிரத் (தை srVd _) ச (ீனாவ tS _) ச (ீனிவா s சீ (னிவாச sri: + _ந) ச (ீம z + _ஹ) ச (ீம z + _ந) ச (ீர z _) ச (ீஸு tS _) ச (ீஸை tS _) ச (ீஸ்_ tS _ஈ) சு s _) ச (ுடிதார tS _) ச (ுட்டிப் tS + ஆ) சுப (த்திரி spV _) சு (ருதி s இ) சு (லா s _) சு (லோக s @@ -1056,6 +1069,7 @@ _ஜலகண்டே) சு (வ s அர்த்தனாரீ) சு (வ s _சனீ) சு (வர s ராஜே) சு (வர s +_மங்களே) சு (வர s அகிலாண்டே) சு (வர s இராவணே) சு (வர s ராவணே) சு (வர s @@ -1128,6 +1142,9 @@ _ஜலகண்டே) சு (வ s _) ச (ைனீஸ tS _) ச (ோட்டா tS ஓ) ச (ோன z + _) ச (ோன்ன tS + _) ச (ோவு tS + _) ச (ோவெ tS _) ச (ௌக்கிதார tS _) ச (ௌதரி tS _) ச (ௌதிரி tS @@ -1182,8 +1199,6 @@ _ஜலகண்டே) சு (வ s ஸ்) ட (B t. //sort - - _டே) ட t.V# _பேண்) ட t.V# _வால்) ட t.V# @@ -1322,6 +1337,7 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ரான்ஸ்வேல t. _) டிராபிக் t.ra:fik _) டிராப் t.ra:p + _) டி (ராமா d. _) டி (ராமில t. _) டி (ராமை t. _) டி (ராம் t. @@ -1364,6 +1380,7 @@ _செண்) டிமெண்ட t.imen.t.V# _) ட (ீசல d. _காண்) ட (ீன t. _கேண்) ட (ீன t. + _) ட (ீல d. _) டுட (ோரியல t.ut. _) ட (ுனிசியா t. _) ட (ுனிஸ t. @@ -1421,6 +1438,7 @@ _லான்_) ட (ென்னிஸ t. ளு) ட (ோனிய t. _) டோரண்ட (ோ t.o:rVn.t. _ப்ரி) ட (ோரிய t. + _) டோர்னமெண்ட t.o:rnVmen.t.V# _லே) ட் t. @மெண்) ட் t. // -ment _பேண்) ட் t. @@ -1577,6 +1595,7 @@ _நடுரோ) ட் (ல t. _) த (ட்சன dV _) த (ட்சிண dV _) த (ண்டக் dV + _) த (ண்டச்சோற dV _) த (ண்டத் dV _) த (ண்டன dV _) த (ண்டபாணி dV @@ -1989,7 +2008,9 @@ _பரிவர்) த்த (ன ddV அர்) த்தராத்த (ிரி ddVra:dd _விரு) த்தாச (ல dda:tSV அ) த்த (ாசி dd + _நிர்) த்த (ாட்சண்ய dd _சி) த்தாந்த dda:ntV# + _புனரு) த்த (ாரண dd சி) த்த (ார் dd பு) த்த (ி dd _விரு) த்த (ி dd @@ -2005,6 +2026,7 @@ _பரிவர்) த்த (ன ddV L03) த்த (ினி+ tt ம) த்த (ிய dd வா) த்த (ிய dd + அசா) த்த (ிய dd வை) த்த (ிய dd உபா) த்த (ிய dd _நைவே) த்த (ிய dd @@ -2213,6 +2235,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (யபக்தி bV _) ப (யப் bV _) ப (யப்பத pV + _) ப (யப்பன pV _) ப (யப்பவை pV _) ப (யம bV _) ப (யாலஜி bV @@ -2266,10 +2289,12 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லப்பம bV _) ப (லப்பரீட்சை bV _) ப (லமணைத்த bV + _) ப (லமற்ற bV _) ப (லமாகC் bV _) ப (லமாகவ bV _) ப (லமாகவே bV _) ப (லமாகி bV + _) ப (லமாக்க bV _) ப (லமாச்ச bV _) ப (லமான bV _) ப (லமாய் bV @@ -2279,6 +2304,8 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லமுடைந்த bV _) ப (லமுடைய bV _) ப (லமும bV + _) ப (லமுறு bV + _) ப (லமுற்ற bV _) ப (லமுள்ள bV _) ப (லமூட்ட bV _) ப (லராம bV @@ -2349,6 +2376,7 @@ _டெட்_) ப (ாடி b _) ப (ாடியை b _) பா (ட்டரி be: _) ப (ாட்டலியன b + _) பா (ட்டிங் be: _L12_) ப (ாட்டில b // bottle _) ப (ாட்டிலி b _) ப (ாட்டிலுக் b @@ -2436,6 +2464,7 @@ _விளையாடு_) ப (ாம்பே p _ரூம்_) ப (ாய b _) ப (ாய்லர b _) ப (ாரங்கள b + _) ப (ாரடே f _) ப (ாரத b _) ப (ாரதி b _) ப (ாரத்த b @@ -2448,6 +2477,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ார்கவ b _) ப (ார்டர b _) பார்ப (டா ba:rbV + _) ப (ார்பர b _) ப (ார்மL04ி f _) ப (ார்முல f _) ப (ார்லிய b @@ -2459,6 +2489,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலன b _) பாலப (ாட ba:lVp _) ப (ாலப்பாட b + _) ப (ாலமித்திர b _) ப (ாலமுர b _) ப (ாலம்மாள b _) ப (ாலய்யா b @@ -2466,6 +2497,8 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலாசூர b _) ப (ாலாஜி b _) ப (ாலாபிஷேக p + _) ப (ாலாமணி b + _) ப (ாலாம்பாள b _) ப (ாலாம்பிக b _) ப (ாலாவ b _) ப (ாலின் p @@ -2475,6 +2508,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலுசாமி b _) ப (ாலுசுவாமி b _) ப (ாலுடன் p + _) ப (ாலுமகேந்திர b _) ப (ாலும்_ p _) ப (ாலுவ b _) ப (ாலே_L25 b @@ -2547,6 +2581,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ியர b இயற்) ப (ியல b _) பி (யூனஸ்_ b + _) பி (ரகடன p _) ப (ிரகதீ b _) பி (ரகதீ b _) பி (ரகலாதன p @@ -2569,11 +2604,13 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரச்சனை p _) பி (ரச்சார p _) பி (ரச்சினை p - _) பிரச (்னை prVtS + _) பிரச் (னை prVtS:i _) பி (ரஜ p _) பி (ரணவ p _) பி (ரணாப p _) பிர (ண்ட்ஸ fre + _) பி (ரதக்ஷண p + _) பி (ரதட்சண p _) பி (ரதம p _) பி (ரதர்_ b _) பி (ரதர்_ b @@ -2688,6 +2725,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரியர p _) பி (ரியா_ p _) ப (ிரியாணி b + _) பி (ரியாமணி p _) பி (ரியாவிடம p _) பி (ரியாவின p _) பி (ரியாவு p @@ -2700,6 +2738,7 @@ _விளையாடு_) ப (ாம்பே p _) பிரு (கன்நளை bri _) பி (ருகு b _) பிரு (ந்தா bri + _) பிரு (மாண்ட brVm _) ப (ிருஷ்ட b _) பிரெஞ்ச fren^tSV# _) பி (ரெட் b @@ -2728,7 +2767,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ில்டிங் b _) ப (ில்ம f _) ப (ில்லா b - _) ப (ில்லியன b + _) ப (ில்லி b _) ப (ில்லு b _) ப (ில்லை b _) பி (ளவுஸ b @@ -2817,6 +2856,7 @@ _பெனசீர்_) ப (ுட்டோ b _) பு (ரவுச b _) ப (ுருடா b _) பு (ருனாய b + _) புரூப pru:fV# _) புரொப (சர profV _) புரொபொ (சர profV _) பு (ரோகித p @@ -2891,6 +2931,7 @@ _பெனசீர்_) ப (ுட்டோ b _) பெத் (ல bet _) ப (ெந்தகோஸ்த b _) ப (ெனசீர b + _) பெனாச (ீர bena:z _) பெப்ப (ே bebb _) ப (ெப்ரவரி f _) ப (ெயில f @@ -2945,6 +2986,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ைண்ட b _) ப (ைனாக b _) ப (ைனாமி b + _) ப (ைபர f _) பைப (ாஸ baIp _) ப (ைபிள b _) ப (ைரன b @@ -2981,6 +3023,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோட்டோக்க f _) போட்டோக்ராப (ர fo:t.t.o:gra:fV _) ப (ோட்டோதான f + _) ப (ோண்டா b _) ப (ோண்டி b _) ப (ோதகன b _) ப (ோதகர b @@ -3029,6 +3072,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ௌத்த b _) ப (ௌராணி b _) ப (ௌலிங் b + _) ப (ௌளிங் b _) ப (ௌஷ b சு) ப்பி (ரமணி b _) ப் (ரசல்ஸ b @@ -3069,6 +3113,7 @@ _பெனசீர்_) ப (ுட்டோ b //endsort //sort + _ப்ரூ) ப fV# இடர்) ப pV# நடை) ப pV# _கேம்) ப pV# @@ -3080,6 +3125,7 @@ _பெனசீர்_) ப (ுட்டோ b _பயன்) ப pV# _விகல்) ப pV# அடால்) ப fV# +_செயல்) ப pV# _ருடால்) ப fV# _ஷரீ) ப (+ fV# _ஷெரீ) ப (+ fV# @@ -3127,6 +3173,7 @@ _விரகதா) ப (+ bV# _ஹஸ்) ப (ண்ட bV _லஜ்) பத pVtV# _சிவ) ப (த pV + _குளிர்) ப (தன pV _கல்) ப (தரு pV கஜ) பதி pVti கண) பதி pVti @@ -3162,6 +3209,7 @@ _ராஷ்டிர) ப (தி pV _தா) ப (த்த bV வீர) ப (த்தினி pV _ரிஷி) ப (த்தினி pV + உ) ப (நிஷ pV _கால்) ப (ந்த pV _சொந்த) ப (ந்த bV _தா) ப (ந்தான bV @@ -3195,6 +3243,8 @@ _சொந்த) ப (ந்த bV _பம்) ப (ர்_ pV _கன்) ப (ர்ம fV கரம்) ப (ற் pV + _தீ) ப (ற்ற pV + _மின்) ப (ற்ற pV ப (ற்றி_ pV _தேக) ப (ல bV _பக்க) ப (ல bV @@ -3401,6 +3451,7 @@ L03ந்தப்) பி (ராய p சிறு) ப (ிள்ளை p ஆண்) ப (ிள்ளை p பெண்) ப (ிள்ளை p + அச்சா) ப (ீ f உப) ப (ீட p விக்கி) ப (ீடியா p இம்) ப (ீரியல p @@ -3470,8 +3521,10 @@ _கோலாலம்) ப (ூர p _பை_) ப (ை b அம்) ப (ையர p _தவிடு) ப (ொடி p + எரி) ப (ொரு p _வன்) ப (ொரு p _மென்) ப (ொரு p +_ வெடி) ப (ொரு p _பழம்) ப (ொருள p _தொல்) ப (ொருள p வீண்) ப (ொழுத p @@ -3493,6 +3546,7 @@ _கோலாலம்) ப (ூர p ப (ோகும்_ p பொழுது) ப (ோக் p _வீண்) ப (ோக்க p + _கம்) ப (ோச p இம்) ப (ோசிஷன p _காம்) ப (ோசிஷன p _கை) ப (ோட p @@ -3566,6 +3620,7 @@ _மைக்ரோசா) ப் (ட f உ) ப்ப (லான bbV _கள) ப்ப (லி bbV உயிர்) ப்ப (லி bbV + _உ) ப்ப (ல்_ bbV L03) ப்ப (ஸ bbV _ட) ப்ப (ா bb அடி) ப்ப (ாக bb @@ -3575,6 +3630,7 @@ _மைக்ரோசா) ப் (ட f _ஜ) ப்ப (ார bb அ) ப்ப (ாஸ bb உ) ப்ப (ி_ bb + _ட) ப்ப (ிங் bb உ) ப்ப (ின_ bb உ) ப்ப (ிப் bb உ) ப்ப (ிய bb @@ -3720,8 +3776,8 @@ _சந்தேக) ப்ப (ுத்தி bb ல lV ல (B l - _செய) ல்ப RpV# _காவ) ல் (துறை t. + _க) லி (யாண l .group ள @@ -3838,6 +3894,7 @@ _சந்தேக) ப்ப (ுத்தி bb இ (லமூரிய இ (லயி இ (லவங்க + இ (லாகவ இ (லாப இ (லாவண்ய இலேக்க (ிய le:gg diff --git a/phsource/compile_report b/phsource/compile_report index 1463045d..13c9a888 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -83 phoneme tables +84 phoneme tables new total base 109 109 consonants 10 118 @@ -83,6 +83,7 @@ consonants 10 118 ga 21 127 tt 23 120 ko 15 116 + kl 14 115 Data file Used by b/b [b] base @@ -417,7 +418,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h6r] base +l/l@ [] base [l#] base [l] fr [l/2] fr @@ -451,7 +452,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h6r] base +l/la [] base [l#] base [l] fr [l/2] fr @@ -459,7 +460,7 @@ l/la [h6r] base [K] tn l/l_a [l/3] base [l/] fr -l/le [h6r] base +l/le [] base [l#] base [l] fr [l/2] fr @@ -471,7 +472,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h6r] base +l/li [] base [l#] base [l] fr [l/2] fr @@ -485,7 +486,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [h6r] base +l/lo [] base [l#] base [l/2] fr [K] nso @@ -496,7 +497,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [h6r] base +l/lu [] base [l#] base [l] fr [l/2] fr @@ -810,6 +811,7 @@ ufric/sx_sv [sx] sv ufric/th [T] base ufric/th_ [T] base ufric/tl# [tl#] is + [tl#] kl ufric/tlh [K] nso [K] tn ufric/x [x] base @@ -1148,6 +1150,7 @@ vdiph/ai [aI] base2 [aI] hy [aI] da [aI] te + [aI] kl vdiph/ai_2 [aI] en [aI] cy [aY] cy @@ -1550,6 +1553,7 @@ vowel/a [a] base [a] id [a] sl [a] bo + [a] kl vowel/a# [a] base2 [a/] base2 [a#] en-sc @@ -1733,8 +1737,10 @@ vowel/e [e] base [e:] dv [e:] te [e:] ga + [e] kl vowel/e# [I] en-sc [e] et + [e] kl vowel/e_2 [eI] en-sc [e:] de [e] hi @@ -1903,6 +1909,7 @@ vowel/i [i] base [i] fa [i:] ga [i] tt + [i] kl vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -2073,6 +2080,7 @@ vowel/o [o] base2 [o:] te [o] bo [o:] ga + [o] kl vowel/o_2 [o:] cy [o:] hi [o:] hu @@ -2242,8 +2250,7 @@ vowel/u_5 [U1] et [u] az [u] tn vowel/u#_5 [y] vi -vowel/u_6 [u:] en-rp - [u] ta +vowel/u_6 [u] ta [u2] ta [u:] ta [U] pt-pt @@ -2298,6 +2305,7 @@ vowel/u_bck2 [u] et [u] es [u] ht [u] fa + [u] kl vowel/u_bck3 [u:] et [u] kk vowel/uu [U] en @@ -2311,6 +2319,7 @@ vowel/uu_2 [U] base2 [U] ca [U] tr [U] kk +vowel/uu#_2 [u:] en-rp vowel/uu_3 [u] af [y] zh vowel/uu_4 [U] fi diff --git a/phsource/ph_english_rp b/phsource/ph_english_rp index b4e82192..caf4cccf 100644 --- a/phsource/ph_english_rp +++ b/phsource/ph_english_rp @@ -193,7 +193,7 @@ endphoneme phoneme u: vowel starttype #u endtype #u length 190 - FMT(vowel/u_6) + FMT(vowel/uu#_2) endphoneme diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index 6de680c6..432b6abe 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -189,8 +189,12 @@ endphoneme phoneme x // this is [R] from Slovak/Czech liquid trill - ipa r + ipa ʁ lengthmod 6 + IF thisPh(isWordStart) THEN + ChangePhoneme(h) // Change by Cleverson 22.09.2012 + ENDIF + Vowelin f1=0 f2=1700 -300 300 f3=-300 80 Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk FMT(r3/r_trill) addWav(r3/r_trill.wav, 50) diff --git a/phsource/phonemes b/phsource/phonemes index 0b536b85..10ba6e5b 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1927,3 +1927,7 @@ include ph_tatar phonemetable ko base include ph_korean +phonemetable kl base +include ph_greenlandic + + diff --git a/phsource/vowel/uu#_2 b/phsource/vowel/uu#_2 new file mode 100755 index 0000000000000000000000000000000000000000..67bf9b564c3edbaf3abad8914f9d63a4a6a4f236 GIT binary patch literal 14611 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 literal 73845 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

VC9_xkVShu?O8r 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.numbers2 & NUM2_PERCENT_BEFORE) && (prev_thousands == 0)) + { + // LANG=si, say "percent" before the number + p2 = word; + while((*p2 != ' ') && (*p2 != 0)) + { + p2++; + } + if(p2[1] == '%') + { + Lookup(tr, "%", ph_out); + ph_out += strlen(ph_out); + p2[1] = ' '; + } + } } LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index e70a4e48..60ef6e46 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.26 17.Sep.12"; +const char *version_string = "1.46.27 21.Oct.12"; const int version_phdata = 0x014624; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index dfd15b3b..4132d627 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -915,7 +915,7 @@ SetLengthMods(tr,3); // all equal tr->letter_bits_offset = OFFSET_GEORGIAN; // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.max_initial_consonants = 7; - tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5; + tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; } break; @@ -1207,7 +1207,9 @@ SetLengthMods(tr,3); // all equal tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4a; //virama - tr->langopts.numbers = NUM_OMIT_1_THOUSAND ; + tr->langopts.numbers = NUM_OMIT_1_THOUSAND; + tr->langopts.numbers2 = NUM2_PERCENT_BEFORE; + tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi } break; diff --git a/src/translate.h b/src/translate.h index a8192956..76075f6f 100644 --- a/src/translate.h +++ b/src/translate.h @@ -444,15 +444,17 @@ typedef struct { // bit27= Roman numbers are ordinal numbers int numbers; -#define NUM2_MULTIPLE_ORDINAL 0x1000 -#define NUM2_NO_TEEN_ORDINALS 0x2000 -#define NUM2_MYRIADS 0x4000 -#define NUM2_ENGLISH_NUMERALS 0x8000 #define NUM2_THOUSANDS_VAR1 0x40 #define NUM2_THOUSANDS_VAR2 0x80 #define NUM2_THOUSANDS_VAR3 0xc0 #define NUM2_THOUSANDS_VAR4 0x100 #define NUM2_THOUSANDS_VAR5 0x140 + +#define NUM2_MULTIPLE_ORDINAL 0x1000 +#define NUM2_NO_TEEN_ORDINALS 0x2000 +#define NUM2_MYRIADS 0x4000 +#define NUM2_ENGLISH_NUMERALS 0x8000 +#define NUM2_PERCENT_BEFORE 0x10000 // bits 1-4 use variant form of numbers before thousands,millions,etc. // bits 6-8 use different forms of thousand, million, etc (M MA MB) // bit9=(LANG=rw) say "thousand" and "million" before its number, not after @@ -460,6 +462,7 @@ typedef struct { // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) // bit15=(LANG=ne) speak (non-replaced) English numerals in English + // bit16=(LANG=si) say "%" before the number int numbers2; #define BREAK_THOUSANDS 0x49249248 From c35cd3efe4db982488bd2d9c06aca4951c808a0e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 22 Oct 2012 18:04:33 +0100 Subject: [PATCH 5/5] 1.46.27 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/kl_list | 43 ++++++++++ dictsource/kl_rules | 152 +++++++++++++++++++++++++++++++++ docs/phonemes.html | 11 ++- espeak-data/voices/mb/mb-de3 | 8 ++ espeak-data/voices/test/kl | 5 ++ phsource/ph_greenlandic | 86 +++++++++++++++++++ phsource/vowel/uu#_2 | Bin 13493 -> 14611 bytes phsource/vowelcharts/en-rp | 2 +- phsource/vowelcharts/en-rp.png | Bin 35774 -> 35767 bytes 9 files changed, 300 insertions(+), 7 deletions(-) create mode 100644 dictsource/kl_list create mode 100644 dictsource/kl_rules create mode 100644 espeak-data/voices/mb/mb-de3 create mode 100644 espeak-data/voices/test/kl create mode 100644 phsource/ph_greenlandic diff --git a/dictsource/kl_list b/dictsource/kl_list new file mode 100644 index 00000000..dd5cd12e --- /dev/null +++ b/dictsource/kl_list @@ -0,0 +1,43 @@ + +// This file is UTF8 encoded +// Spelling to phoneme rules for Greenlandic + +b be +c se +d de +f ef +g ge +h ha +j je +k ka +l el +m em +n en +p pe +q qa: +r er +s es +t te +v ve +w we +x iks +z ze + +// y +// æ +// ø +// å + +_0 n'u:lu +_1 at'a:seq +_2 m'arluk +_3 p'iNasut +_4 s'isamat +_5 t'al#imat +_6 arf'inil#it +_7 arfineqm'arluk +_8 arfineqp'iNasut +_9 quliNil'uat +_10 q'uilit + +_dpt kom:a diff --git a/dictsource/kl_rules b/dictsource/kl_rules new file mode 100644 index 00000000..30611c7e --- /dev/null +++ b/dictsource/kl_rules @@ -0,0 +1,152 @@ + +// This file is UTF8 encoded +// Spelling to phoneme rules for Greenlandic + + +.group a + a a + aa a: + ai (_ aI + + +.group b + b b + + +.group c + c k + c (e s + c (i s + + +.group d + d d + + +.group e + e e + ee e: + + +.group f + f f + ff f: + + +.group g + g Q + gg C: + + +.group h + h h + hh h: + + +.group i + i i + ii i: + + +.group j + j j + jj j: + + +.group k + k k + kk k: + + +.group l + l l + ll l# + + +.group m + m m + mm m: + + +.group n + n n + nn n: + ng N + nng N: + + +.group o + o o + oo o: + + +.group p + p p + p p: + + +.group q + q q + qq q: + + +.group r + r r + rr X: + + +.group s + s s + ss s: + + +.group t + t t + tt t: + tl tl# + ts ts + + +.group u + u u + uu u: + + +.group v + v v + vv v: + + +.group w + w w + + +.group x + x ks + + +.group y + y j + K) y (K i // not before or after a vowel + + +.group z + z z + + +.group æ + æ & + + +.group ø + ø W + + +.group å + å O + + +.group + $ d'olar + + \ No newline at end of file diff --git a/docs/phonemes.html b/docs/phonemes.html index c0ab5fc7..0c3f80e4 100644 --- a/docs/phonemes.html +++ b/docs/phonemes.html @@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to espeak -[p] -[b] +[p] +[b] [t] [d] @@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[@] -alphaschwa +alphaschwa
[3] betterrhotic schwa. In British English this is the same as [@], but it includes 'r' colouring in American and other rhotic accents. In these cases a separate [r] should not be included unless it is followed immediately by another vowel. @@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[a]trap
[aa]bathThis is [a] in some accents, [A:] in others. -
[a#]aboutThis may be [@] or may be a more open schwa. +
[a2]aboutThis may be [@] or may be a more open schwa.
[A:]palm
[A@]start

@@ -161,8 +161,7 @@ Other languages will have their own vowel definitions, eg:

-

- [:] can be used to lengthen a vowel, eg [e:] + diff --git a/espeak-data/voices/mb/mb-de3 b/espeak-data/voices/mb/mb-de3 new file mode 100644 index 00000000..d2ff8dd7 --- /dev/null +++ b/espeak-data/voices/mb/mb-de3 @@ -0,0 +1,8 @@ +name german-mbrola-3 +language de 6 +gender female +voicing 80 +pitch 140 220 + +mbrola de3 de2_phtrans + diff --git a/espeak-data/voices/test/kl b/espeak-data/voices/test/kl new file mode 100644 index 00000000..eeb33e65 --- /dev/null +++ b/espeak-data/voices/test/kl @@ -0,0 +1,5 @@ +name greenlandic +language kl + +stressrule 2 // penultimate (for testing) + diff --git a/phsource/ph_greenlandic b/phsource/ph_greenlandic new file mode 100644 index 00000000..c0a050c2 --- /dev/null +++ b/phsource/ph_greenlandic @@ -0,0 +1,86 @@ + + +// vowels + +phoneme a + vowel starttype #a endtype #a + length 150 + FMT(vowel/a) +endphoneme + +phoneme e + vowel starttype #e endtype #e + length 150 + IF thisPh(isWordEnd) THEN + FMT(vowel/e#) + ENDIF + FMT(vowel/e) +endphoneme + +phoneme i + vowel starttype #i endtype #i + length 150 + FMT(vowel/i) +endphoneme + +phoneme o + vowel starttype #o endtype #o + length 150 + FMT(vowel/o) +endphoneme + +phoneme u + vowel starttype #u endtype #u + length 150 + FMT(vowel/u_bck2) +endphoneme + +phoneme aI + vowel starttype #a endtype #i + length 250 + FMT(vdiph/ai) +endphoneme + + +phoneme & + import_phoneme da/& +endphoneme + +phoneme W + import_phoneme da/W +endphoneme + +phoneme O + import_phoneme da/O +endphoneme + +phoneme : // lengthen previous vowel by "length" + virtual + length 120 +endphoneme + + + +// consonants + +phoneme r + import_phoneme base/r" +endphoneme + + +phoneme tl# + vls alv stop + lengthmod 2 + ipa tl# + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + WAV(ufric/tl#, 50) +endphoneme + + +phoneme ts + import_phoneme consonants/ts +endphoneme + + + diff --git a/phsource/vowel/uu#_2 b/phsource/vowel/uu#_2 index 598eb73040c85f7a5b3148fb03c81d46528d106b..67bf9b564c3edbaf3abad8914f9d63a4a6a4f236 100644 GIT binary patch delta 2809 zcmcIme{2**82x5vt`2VR_M)fK0n{TQfd*@O6$vIZ_0D3vo-v4Gg9;Mqp{2q0 z5=|r(jdh#Sh(SY*ifz2=K>`BO7(+;u#E=I6tCdR=G^P@B(H4#CH@kbcJA0<#{&17a zP2SDy%)9r#_s#KV_1#tN(GBZ2x5w7_0ASCank{Smkien+3{*AtiQzFwu}_qKr31$u zu!STbLLkJIX&eDAsAc=0m8G;fGN>Ft5Dwdo|t^N=t%%h_~7Y!`$WzzSuBP3Izi2`+LAvFMDdt6@|Hh%0f$LK?Jt zS%U^}S~+ba;t>08u@I9^3vMImxFAHLJY3^O7NV0m%aG69M9;XsmRsVSz*qJc#AzpQ zzzKZm(tP`-wa;UD5eLJJv#D5~Q`!UZ}6e^Y?@LL_{_ zcR`utx?Xi9v`OkzXkQ9GE(Jw-U?ez(5;YX%qJ|ug;aN&i=eH2L?%Kfzro=jQ-O$w! zZP%^aFpkJM<(!=j&13}PxM2?C$cnmO={-d7dY4=xR@8mKJD^qK^@`dE<$gDdW!jId z3A4d*rr25Hm5(}^SIo=?hv|aV^w(m+E2GSbmm{x%&Q6<`qI4r7SXdFhj*P=9iB}mr zOeT?+lX=5D2Cqq(_cHQ|NSSvf(8H3bmz;Tv-I?d`5|ixUz{8Y~c{eOW|6Tk3;TQDY z+b#d44Y?)Nkt!m$q)W7dv`Q`M5P#ZJPutOda!VQyv=r4-+K^h3@L$^SwxqOi{VgeT z^BscE?EAm#{deX0$oc>|N<=+5z8j@`LDuIj-Uh>xK2NA&*evNowMsL^-TI`B_!3vU z$@6hRCc_f+sa~F>{@0tL!gUbw8NO=Ub~A=d%TG2E*>)rJDYzop?j!z)$9B)CwI18m zYFd%)W{e`+;r5rHXLxZdm1+M60~eQ(L9)x&o_w)~%PwlTA@aT}#aA6=<`w#u?<);N!QIM*jXp~Np) vb&PIG$0xH_phEj~JU<*dN z+oVm5rVTiV7L%rw1Z{vWakQ0!anq#4HtIL9~~dD6sf z4g>p1cBY2?MJ;RJTQ^Y}@&4|ssvdqJamU&^ixN)Qjja#+>uXpEs7M^B?Ukd&nT?m| z*D%gxC&aV-QLBbo#jxGPjFqX9 zhLx$L7D`~eY$w}I34As=6(g{pesxmBcdt~)}3RoDIHkxSp)V6Uv){MGYY0^bGIUBe1lu^aP`KJZ56Cc8USS~Wu1 zOmGvN7xhC>59OcOgBY7$bRB(4YGIqsrbEbsWQ%s{GvY6N84aajv&n`viLoxlLdo_7 zTz6ck+M*PVK%veik^cluQ#Pzc zP7?{<*IVQr%BDhZk=xe8d@I$)XpyIvY!LvXMS5%})0V9ato}FWaiPyMRDQ2=Y|EH3 znZelfO%ORh(;bSaMnrOu0~rJ4I<_HWfSe((#3Ry3oiYZ$muA!RT3%lR$7$&XBnH3`D(e-$=Dd$0QwxU+%TO6aXT2=d_-#C zw64uAAse>q+F;QhYgA2}h#E{YbYg5wY-mHWq%7q8*4duj?Aqrh1-9bR^~p+Sb_2FV zf9j(K(dJE16EbM?u4p={I4Xvjg|T&3l3K{qbsH_b_z_@3S9=5$@0wPOZ{82d zUlzNYX4R{79~<@-gpoyeYY4vzL%J+C$VIrJyCu;iOS)ToQ@Zfp6vLHS)g1P-i)5KK KW$7z9i2nngo8Mpn diff --git a/phsource/vowelcharts/en-rp b/phsource/vowelcharts/en-rp index 541028e5..62b35677 100644 --- a/phsource/vowelcharts/en-rp +++ b/phsource/vowelcharts/en-rp @@ -22,7 +22,7 @@ O: 0 512 860 2648 512 860 2648 O 0 465 836 2640 530 1001 2620 O@ 0 512 860 2648 512 860 2648 o@ 0 465 836 2640 530 1001 2620 -u: 0 320 940 2360 320 900 2360 +u: 0 320 1100 2260 320 1020 2200 aU 0 904 1420 2440 536 940 2300 oU 0 568 1620 2340 376 1255 2243 aI 0 904 1342 2700 440 1969 2500 diff --git a/phsource/vowelcharts/en-rp.png b/phsource/vowelcharts/en-rp.png index cea8bae8448c8954e47e1d8ec3f5b476b11f4eb0..bb009dd3ec74e87ae0b3ecae4bfd22fc8da19e47 100644 GIT binary patch literal 35767 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 TW@sTx2Bo95Tl2wooAdu4^EN$y literal 35774 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