From adcb83fcf960e4e81a69ba582fd33ba5fdcbaf78 Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 29 Apr 2013 22:59:27 +0000 Subject: [PATCH] [1.47.09] Fix: lookup in *_list occasionally find the wrong word. Languages changes: hi, ne, sl. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@351 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/bn_list | 4 +- dictsource/bn_rules | 4 +- dictsource/de_list | 4 +- dictsource/dict_phonemes | 32 ++--- dictsource/en_list | 10 +- dictsource/en_rules | 4 + dictsource/hi_list | 182 +++++++++++++------------- dictsource/hi_rules | 18 ++- dictsource/ne_rules | 8 +- dictsource/sl_list | 34 ++--- dictsource/sl_rules | 5 + phsource/compile_report | 20 ++- phsource/ph_bengali | 27 +++- phsource/ph_german | 6 +- phsource/ph_hindi | 74 +++++++---- phsource/ph_slovenian | 9 ++ phsource/phonemes | 4 + platforms/windows/make_espeak.iss | 6 +- platforms/windows/make_espeakedit.iss | 2 +- src/dictionary.cpp | 5 +- src/extras.cpp | 4 +- src/readclause.cpp | 2 + src/synthdata.cpp | 4 +- src/tr_languages.cpp | 4 +- 24 files changed, 285 insertions(+), 187 deletions(-) diff --git a/dictsource/bn_list b/dictsource/bn_list index e2ab79c7..5d1942dd 100755 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -9,7 +9,7 @@ _0 S'unjO _1 '&k _2 d'uj _3 t'in -_4 tSh'ar +_4 tS#'ar _5 p'a~tS _6 tS#'Oj _7 S'at @@ -25,7 +25,7 @@ _10 d'OS _11 '&garo _12 b'arO _13 t'erO -_14 tSh'oddO +_14 tS#'oddO _15 p'OnerO _16 S'olO _17 S'OterO diff --git a/dictsource/bn_rules b/dictsource/bn_rules index c3077287..d16f18fd 100755 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -176,8 +176,8 @@ .group ছ - ছ tShV - ছ (B tSh + ছ tS#V + ছ (B tS# .group জ diff --git a/dictsource/de_list b/dictsource/de_list index 071a62a7..503937e2 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -695,8 +695,8 @@ pochier pOS'i:r pochs pOxs präsident $3 prämie $alt -privatisier pri:vati:z'i:r -problematisier pro:ble:m'a:tIzi:r +privatisier $4 +problematisier $3 //pro:ble:m'a:tIzi:r reliquie $alt risik $1 diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 7d37f9c3..30cb81fe 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -58,7 +58,7 @@ s; t t; tS ts v x z Z z; -Dictionary bn_dict 2013-04-25 +Dictionary bn_dict 2013-04-29 & a a~ e e~ i i: i~ l- o O o: O~ o~ r- u @@ -124,7 +124,7 @@ r R R3 s S t T tS v w x z Z -Dictionary de_dict 2013-04-25 +Dictionary de_dict 2013-04-27 3 @ @- a A A: aI aU A~ E E2 E: e: EI i I @@ -148,7 +148,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-04-26 +Dictionary en_dict 2013-04-29 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -272,18 +272,18 @@ N n^ p r R R2 s S t tS ts tS; v x z Z -Dictionary hi_dict 2013-04-10 +Dictionary hi_dict 2013-04-29 -@ @2 a a: aI aU a~ e +@ @- a a: aI aU a~ e E e: E: e~ E~ i I i: i~ l- o O o: O: O~ o~ r- u U u: u~ V -#X1 #X2 - : b b# c c# -d d# d. d.# f g g# h -H j J J# k k# l l. -m n N n. n^ p p# Q -q r r. s S s. t T +#X1 #X2 * - : b b# c +c# d d# d. d.# f g g# +h H j J J# k k# l +l. m n N n. n^ p p# +Q q r r. s S s. t t# t. t.# v w x z @@ -496,7 +496,7 @@ k l m n p R s S t tS v w x -Dictionary ne_dict 2013-03-09 +Dictionary ne_dict 2013-04-28 @ @/ @2 @3 a a: aI aU a~ e E e: E: eI e~ E~ @@ -641,15 +641,15 @@ s S t t; tS ts v w x z Z -Dictionary sl_dict 2013-01-30 +Dictionary sl_dict 2013-04-28 @ @- a a: e E e: i i: o O o: u u: y -: b d dZ dz f g h -j k l l^ m n N n^ -p R R^ s S t tS ts -v v# w x z Z +* : b d dZ dz f g +h j k l l^ m n N +n^ p R R^ s S t tS +ts tS; v v# w x z Z Dictionary sq_dict 2008-12-22 diff --git a/dictsource/en_list b/dictsource/en_list index 1ff69b6a..ad62031a 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -566,6 +566,7 @@ i.e aIi:_! $pause imo $abbrev inlb $abbrev ios $abbrev +ipa $abbrev irc $abbrev irs $abbrev isbn $abbrev @@ -1433,6 +1434,7 @@ duvet du:veI d'ye dj@ dynamo $1 +earlobe i@3loUb early 3:lI eavesdrop i:vzdr0p ebay i:beI @@ -2819,6 +2821,7 @@ taffeta tafI#t@ takel tak@L talent tal@nt tallyho talI'hoU +timbre tamb3 tampon tamp0n tangerine tandZ@r'i:n taoiseach ti:S@x @@ -3001,6 +3004,7 @@ vertices v3:tIsi:z vestige vEstI2dZ vex vEks // for vexed viagra vaI'agr@ +vibrato vI2brA:toU vicar vIk3 vigilante vIdZI2l'anti vignette vInj'Et @@ -3448,11 +3452,8 @@ Abe eIb Abu abu: Abraham eIbr@ham Ada eId@ $onlys -Andrea $2 Adrian eIdri@n Agatha aga#T@ -Angela andZ@l@ -Angelika $2 Aggie agi Agnes agn@s Aguilera agi:l'e@r@ @@ -3477,7 +3478,8 @@ Amy eImi Andre 0ndreI Andrea andri@ Andreas A:ndr'eI@s -Angela ang@l@ +Angela andZ@l@ +Angelika $2 Anita $alt3 Anthony ant@ni Anton ant0n diff --git a/dictsource/en_rules b/dictsource/en_rules index ec5ad6b7..ecd117e5 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -988,6 +988,7 @@ ?3 _) ar (istocrat a#r log) ar (i @r marg) ar (AtA_ 3r' + _l) ar (yn ar m) ar (it ar p) ar (i ar p) ar (in e@ @@ -1035,6 +1036,8 @@ &sp) ass (_ @s rr) ass @s &v) ass (_ @s + as (al eIz + b) as (al as ascii askI f) asc (ia eIS f) asci (s aSI @@ -4895,6 +4898,7 @@ pro (voc pr%0# pro (vok pr@ pro (sec pr0 + _) prose (l pr0s pro (fil proU pro (gra proU pro (log proU diff --git a/dictsource/hi_list b/dictsource/hi_list index f77a850f..1da8c838 100755 --- a/dictsource/hi_list +++ b/dictsource/hi_list @@ -2,124 +2,124 @@ // Numbers // devanagari numbers are changed to latin characters before translation -_0 s'u:n.jV +_0 S'u:nj@- _1 'e:k _2 d'o: _3 t'i:n -_4 c:'a:r: +_4 c'a:r _5 'pa~c -_6 c#'@2 +_6 c#'VH _7 s'a:t _8 'a:t.# _9 n'O: ?3 _9 n'aU _10 d'Vs -_11 gj'a:r-ah -_12 b'a:rah -_13 t'e:r@2h -_14 c#'O:d@2h -_15 p'Vndr@2h -_16 s'o:l@2h -_17 sVtr@2h -_18 a:t#:arah +_11 gj'a:*VH +_12 b'a:rVH +_13 t'e:rVH +_14 c'O:dVH +_15 p'VndrVH +_16 s'o:lVH +_17 sVtrVh +_18 Vt.#'a:rVH _19 Unn'Is _20 b'i:s -_21 Ik:'Is -_22 b'a:Is -_23 t'ue:Is -_24 c'O:bIs -_25 p@c:'Is -_26 c#@bb'i:rs -_27 s@t:'a:Is -_28 at#:'a:Is -_29 ,Unt'Is +_21 Ik:'is +_22 b'a:is +_23 t'e:is +_24 c'O:bis +_25 p'Vc:is +_26 c#Vbb'is +_27 s@t:'a:is +_28 at#:'a:is +_29 'Untis _30 t'i:s -_31 Ik@t:'Is -_32 b'at:'I'S -_33 tE~t'Is // E~ ? -_34 cO~t'Is -_35 pE~t'Is -_36 c#aT'tIs -_37 sE~t'Is -_38 art'Is -_39 Unta:l'Is +_31 Ik@t'is +_32 b'at:is +_33 t'E~tis // E~ ? +_34 c'O~tis +_35 p'E~tis +_36 c#'Vt:is +_37 s'E~tis +_38 'Vrtis +_39 Unt'a:lis -_40 ca:l'Is -_41 Ikta:l'Is -_42 baIa:l'Is -_43 tE~ta:l'Is -_44 cO:wa:l'Is -_45 paI'nta:l'Is -_46 c#hIja:l'Is -_47 sE~ta:l'Is -_48 arta:l'Is -_49 'Un^ca:s +_40 c'a:lis +_41 Ikt'a:lis +_42 baI'a:lis +_43 tE~t'a:lis +_44 cO:v'a:lis +_45 paInt'a:lis +_46 c#Ij'a:lis +_47 sE~t'a:lis +_48 Vrt'a:lis +_49 'Unca:s -_50 p@c'a:s +_50 pVc'a:s _51 Ikj'a:wVn _52 b'a:wVn -_53 t'IrpVn -_54 c'Ou:wVn -_55 p'ac#pVn -_56 c#h@p:'Vn -_57 santa:'w@n -_58 at#:a:'w@n -_59 Uns'Vt# +_53 t'Ire:pVn +_54 c'O:wVn +_55 p'VcpVn +_56 c#'Vp:Vn +_57 sVt'a:w@n +_58 at.#:'a:w@n +_59 'UnsVt.# _60 s'a:t.# -_61 'Iks@t.# -_62 b'a:s@t.# -_63 t'Irs@t.# -_64 cO:'s@t.# -_65 paI's@t.# -_66 c#'Ija:s@t.# -_67 s'Vrs@t.# -_68 ars@t.# -_69 Un@h,at:'Vr: +_61 'IksVt.# +_62 b'a:sVt.# +_63 t'Ire:sVt.# +_64 c'O~sVt.# +_65 p'E~sVt.# +_66 c#Ij'a:sVt.# +_67 s'Vr.sVt.# +_68 Vr.sVt.# +_69 'UnVht:Vr -_70 sat:'Vr: -_71 Ik#at:'Vr: -_72 b@hat:'Vr: -_73 tIhat:'Vr: -_74 cO:hat:'Vr: -_75 pac#,at:'Vr: -_76 c#Ihat:'Vr: -_77 s@t@hat:'Vr: -_78 at#hat:'Vr: -_79 ,Un^Ia:s'i: +_70 s'Vt:Vr +_71 'IkHVt:Vr +_72 'bVhVt:Vr +_73 t'IhVt:Vr +_74 cO:H'Vt:Vr +_75 pVcH'Vt:Vr +_76 c#IH'Vt:Vr +_77 sVtH'Vt:Vr +_78 VtH'Vt:Vr +_79 Un'a:si -_80 ,Vss'i: -_81 Ikja:s'i -_82 baIa:s'i -_83 tIra:s'i -_84 cO:ra:s'i -_85 pI'ca:s'i -_86 c#Ija:s'i -_87 sVt:a:s'i -_88 at#:a:s'i -_89 nVwa:s'i +_80 'Vssi: +_81 Ikj'a:si +_82 bVj'a:si +_83 tIr'a:si +_84 cO:r'a:si +_85 pVc'a:si +_86 c#Ij'a:si +_87 sVt:'a:si +_88 at#:'a:si +_89 nVw'a:si -_90 nVb:'e: -_91 Ikj'a:n@we: -_92 b'a:n@we: -_93 tIr'a:n@we: -_94 cO:r'a:m@we: -_95 p@c'a:n@we: -_96 c#Ij'a:n@we: -_97 s@t:'a:n@we: -_98 at#:'a:n@we: -_99 nIn^j'a:n@we: +_90 n'Vb:e: +_91 Ik:j'a:n@be: +_92 b'a:n@be: +_93 tIr'a:n@be: +_94 cO:r'a:m@be: +_95 pVnc'a:n@be: +_96 c#Ij'a:n@be: +_97 sVt:'a:n@be: +_98 Vt#:'a:n@be: +_99 nIn^j'a:n@be: _0C s'O: -_0M1 h@J,a:r +_0M1 h'VJa:r _0M2 l'a:k# -_0M3 k@ro:r.V -_0M4 'Vr@b -_0M5 k#'Vr@b -_dpt _d@s@ml'o:_ // ?? what is Hi for "." ? +_0M3 k@r'o:r.V +_0M4 'VrVb +_0M5 k#'VrVb +_dpt _d@s@ml'o:_ // Single consonants क k@ diff --git a/dictsource/hi_rules b/dictsource/hi_rules index 992967df..eb43fe00 100755 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -158,6 +158,7 @@ .group ै ै E: // ?? [aI] [E:] [&:] + ैं E~ ै (ँ E~ ैं (_ E~ ैँ (_ E~ @@ -203,6 +204,8 @@ क़ qV क़ (B q + क्क k:V // kk -> k: + क्क (B k: क्ष kSV क्ष (B kS @@ -260,11 +263,18 @@ ट t.V ट (B t. ट (्य t.: + ट्ट t.:V // t.t. -> t.: + ट्ट (B t.: + ट्ठ t.#:V // t.t.# -> t.#: + ट्ठ (B t.#: .group ठ ठ t.#V ठ (B t.# - + + ठ्ठ t.#:V // t.#t.# -> t.#: + ठ्ठ (B t.#: + .group ड ड d.V ड (B d. @@ -288,6 +298,9 @@ त (B t त (्य t: + त्त t:V // tt -> t: + त्त (B t: + .group थ थ t#V थ (B t# @@ -314,6 +327,9 @@ प pV प (B p प (्य p: + + प्प p:V // pp -> p: + प्प (B p: .group फ फ p#V diff --git a/dictsource/ne_rules b/dictsource/ne_rules index 6f36f225..11635eea 100644 --- a/dictsource/ne_rules +++ b/dictsource/ne_rules @@ -1,4 +1,5 @@ -// Nepali Language. + +// Nepali Language. // This ne_rules file is prepared by Him Prasad Gautam < himjee@yahoo.com >. // This file is UTF-8 encoded. @@ -402,9 +403,6 @@ .group आ आ a: आँ a~'' - आइ a:I - आउ a:U - आऊ a:U' .group इ @@ -480,7 +478,6 @@ .group ा ा a:,k'a::r@ // If not followed to a Consonant. C) ा a: - ाव aU C) ाँ a~' .group ि @@ -1150,4 +1147,3 @@ // The Latin letter a-z are automatically translated into English. - diff --git a/dictsource/sl_list b/dictsource/sl_list index 65b62fff..521910f2 100755 --- a/dictsource/sl_list +++ b/dictsource/sl_list @@ -31,7 +31,7 @@ q ku w dv#'ojniv,@ x iks y 'ipsilon -ć m'ehkitS,@ +ć m'ehki||tS,@ đ dZ@ ä $accent @@ -48,13 +48,13 @@ _0 n'itS _1 'Ena _2 dv#'a _3 tR'i -_4 St'iRi +_4 St'i*i _5 p'et -_6 S'est -_7 s'edem -_8 'osem -_9 d'evet -_10 d'eset +_6 S'Est +_7 s'edEm +_8 'Os@m +_9 d@v'Et +_10 d@s'Et _11 'e'najst _12 dv#'anajst _13 tR'inajst @@ -62,16 +62,16 @@ _14 St'iRinajst _15 p'etnajst _16 S'estnajst _17 s'edemnajst -_18 'osemnajst -_19 d'evetnajst -_2X dv#'ajset -_3X tR'ideset -_4X St'iRideset -_5X p'etdeset -_6X S'estdeset -_7X s'edemdeset -_8X 'osemdeset -_9X d'evetdeset +_18 'Osemnajst +_19 d'evEtnajst +_2X dv#'ajsEt +_3X tR'id@sEt +_4X St'i*id@sEt +_5X p'etd@sEt +_6X S'estd@sEt +_7X s'edemd@sEt +_8X 'Os@md@sEt +_9X d'evEtd@sEt _2C dv'esto _0C sto _0M1 t'isotS diff --git a/dictsource/sl_rules b/dictsource/sl_rules index 182b78dc..9986c0d2 100755 --- a/dictsource/sl_rules +++ b/dictsource/sl_rules @@ -17,6 +17,9 @@ .group č č tS +.group ć + ć tS; + .group d d d dz dz @@ -103,6 +106,7 @@ .group r r R rr R + A) r (A * K) r (K @R @@ -130,6 +134,7 @@ v (-A+ v // preposition 'v' before a vowel A) v (K w K) v (K %u + K) v (r v L01) v (A v# diff --git a/phsource/compile_report b/phsource/compile_report index 1c070aad..40f75253 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -72,7 +72,7 @@ consonants 11 119 fa 9 112 rw 15 132 prs 8 113 - sl 10 137 + sl 11 137 gd 6 109 nso 12 113 ht 11 146 @@ -741,6 +741,7 @@ r3/@tap [**] base r3/@tap2 [**] base [*] ko r3/@tap_rfx [r.] base +r3/@tap_rfx_ [r.] base r/a_ [r] da [3-] da r/aa [R] da @@ -987,7 +988,6 @@ ustop/q_u [q] base ustop/t [t] base [t] en-us [d.#] hi - [t.#] hi [d.#] ml [t] zhy [t] da @@ -1018,6 +1018,7 @@ ustop/t_hi [t[] base [t^] et [t[] vi [t`] am +ustop/th_rfx [t.#] hi ustop/t_pzd [c] base [t^] et [t;] lt @@ -1048,10 +1049,13 @@ ustop/tsh [tS] base [c] zhy [tS] tn ustop/tsh_ [tS] base + [c] hi + [tS] bn [c] zhy [tS] tn ustop/tsh2 [tS] hr [dZ] hr +ustop/tsh_asp [tS#] bn ustop/t_short [t-] consonants [t] fr [t2] fr @@ -1062,7 +1066,8 @@ ustop/t_short_ [t] fr ustop/tsh_pzd [tS;h] zh ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_sr [tS] sr -ustop/tsh_unasp [tS`] am +ustop/tsh_unasp [c] hi + [tS`] am ustop/ts_pzd [tS;] base [J#] hi [J#] ml @@ -1669,6 +1674,7 @@ vowel/a_2 [a] base2 [a] rw vowel/a#_2 [A] nl [a:] nl + [a] bn [a] kn [a#] pl [&] hr @@ -1828,6 +1834,7 @@ vowel/e [e] base [?e] da [e] rw [e#] rw + [e:] sl [e] wo [e:] wo [e] dv @@ -2033,8 +2040,7 @@ vowel/i_5 [i:] en-sc vowel/i#_5 [y] pt-pt [i/] pt-pt [y] ro -vowel/i_6 [i] hi - [i] bn +vowel/i_6 [i] bn [i] ta [i] kn [i] ml @@ -2119,12 +2125,14 @@ vowel/ii_5 [i] ta vowel/ii_6 [I] en-wm [I] en-wi [I2] en-wi + [i] hi [I] sr [I] pt [y] pt [i/] pt [i] is [I] sq + [i] sl [i] wo vowel/ii_7 [i] en [i] ga @@ -2466,12 +2474,14 @@ vowel/V_2 [V] en [V#] ru [V] ku vowel/V_3 [V] en-rp + [@] hi [V] hi [V] pa [V] ta [a] bg vowel/V_4 [V] en-sc [O] ga + [V] hi [V] da [?V] da vowel/V_6 [V] en-us diff --git a/phsource/ph_bengali b/phsource/ph_bengali index abd9c057..626e1ffa 100755 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -32,6 +32,9 @@ endphoneme phoneme a vowel starttype #a endtype #a length 225 + IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN + FMT(vowel/a#_2) + ENDIF FMT(vowel/a_3) endphoneme @@ -82,15 +85,35 @@ endphoneme phoneme tS - import_phoneme base/tS + vls pla afr sibilant + voicingswitch dZ + lengthmod 2 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + + IF nextPh(isPause2) THEN + WAV(ustop/tsh_) + ENDIF + WAV(ustop/tsh_) endphoneme phoneme tS# - import_phoneme base/tS + vls pla afr sibilant + voicingswitch dZ + lengthmod 2 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + + IF nextPh(isPause2) THEN + WAV(ustop/tsh_asp) + ENDIF + WAV(ustop/tsh_asp, 120) endphoneme + + + + phoneme ~ virtual endphoneme diff --git a/phsource/ph_german b/phsource/ph_german index db423f1a..60be13a3 100755 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -126,9 +126,9 @@ phoneme i: VowelStart(w/wi2) ENDIF - IF nextPh(r) AND next2Ph(isNotVowel) THEN +// IF nextPh(r) AND next2Ph(isNotVowel) THEN // ChangePhoneme(iR) - ENDIF +// ENDIF FMT(vowel/i_2) endphoneme @@ -346,7 +346,7 @@ phoneme iR // TEST "vier" = [f'iR] not successful vowel starttype #i endtype #@ ipa iɐ flag1 - length 230 + length 240 FMT(vdiph2/i@_3) endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index f922c77b..315e6180 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -16,13 +16,16 @@ phoneme @ IF nextPh(H) OR prevPh(H) THEN FMT(vowel/@_low) ENDIF + IF nextPh(j) THEN + FMT(vowel/V_3) + ENDIF FMT(vowel/@_bck) endphoneme phoneme V vowel flag1 starttype #@ endtype #@ - length 130 + length 140 IF thisPh(isWordStart) THEN FMT(vowel/V_3) @@ -30,12 +33,14 @@ phoneme V ENDIF IF thisPh(isNotStressed) THEN - IF prevPh(H) THEN - ChangePhoneme(@) + length 130 + + IF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN + ChangePhoneme(NULL) ENDIF - IF thisPh(isWordEnd) THEN - ChangePhoneme(NULL) + IF prevPh(H) THEN + ChangePhoneme(@) ENDIF IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN @@ -45,20 +50,22 @@ phoneme V ChangePhoneme(NULL) ENDIF ENDIF - ENDIF - IF prevPh(isPalatal) THEN - ChangePhoneme(@3) - ELSEIF prevPh(r) THEN - ChangePhoneme(@2) - ELSE - IF thisPh(isNotStressed) THEN + IF prevPh(isPalatal) AND NOT nextPh(H) THEN + ChangePhoneme(@3) + ELSEIF prevPh(r) THEN + ChangePhoneme(@2) + ELSE ChangePhoneme(@) ENDIF + ENDIF + + IF nextPh(H) OR prevPh(H) THEN + FMT(vowel/@_low) + ENDIF - IF nextPh(H) OR prevPh(H) THEN - FMT(vowel/@_low) - ENDIF + IF prevPh(w) THEN + FMT(vowel/V_4) ENDIF FMT(vowel/V_3) @@ -84,6 +91,9 @@ endphoneme phoneme i: vowel long starttype #i endtype #i length 230 + IF thisPh(isUnstressed) THEN + ChangePhoneme(i) + ENDIF IfNextVowelAppend(;) FMT(vowel/i_fnt) endphoneme @@ -92,7 +102,7 @@ phoneme i // as [i:] but not marked as 'long' vowel starttype #i endtype #i length 230 IfNextVowelAppend(;) - FMT(vowel/i_6) + FMT(vowel/ii_6) endphoneme phoneme I @@ -110,7 +120,7 @@ endphoneme phoneme e vowel starttype #e endtype #e - length 130 + length 140 FMT(vowel/e_2) endphoneme @@ -122,7 +132,7 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 130 + length 140 FMT(vowel/e_mid) endphoneme @@ -135,7 +145,7 @@ endphoneme phoneme a: vowel long starttype #a endtype #a - length 190 + length 200 IF nextPhW(j) THEN FMT(vowel/a_5) ENDIF @@ -144,7 +154,7 @@ endphoneme phoneme a vowel long starttype #a endtype #a - length 130 + length 140 FMT(vowel/a#_3) endphoneme @@ -157,7 +167,7 @@ endphoneme phoneme o vowel starttype #o endtype #o - length 130 + length 140 FMT(vowel/o) endphoneme @@ -170,14 +180,14 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 130 + length 140 FMT(vowel/0) endphoneme phoneme U vowel starttype #u endtype #u - length 120 + length 140 FMT(vowel/uu_bck) endphoneme @@ -388,8 +398,11 @@ phoneme t.# voicingswitch d.# Vowelin f1=0 f2=1800 -300 300 f3=-400 80 Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 -// WAV(ustop/th_rfx) - WAV(ustop/t) + + IF nextPhW(t.#) THEN + ChangePhoneme(t.) + ENDIF + WAV(ustop/th_rfx) endphoneme phoneme d. @@ -437,10 +450,19 @@ endphoneme // also try [tS] and [dZ] phoneme c - import_phoneme base/c + vls pla afr sibilant + voicingswitch dZ + lengthmod 2 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + + IF nextPh(isPause2) THEN + WAV(ustop/tsh_) + ENDIF + WAV(ustop/tsh_unasp) endphoneme + phoneme c# CALL base/tS; ipa cU+02B0 diff --git a/phsource/ph_slovenian b/phsource/ph_slovenian index 436e8c5c..bd5154ce 100644 --- a/phsource/ph_slovenian +++ b/phsource/ph_slovenian @@ -9,6 +9,9 @@ phoneme i vowel starttype #i endtype #i length 140 IfNextVowelAppend(;) + IF thisPh(isStressed) AND NOT nextPhW(isRhotic) THEN + FMT(vowel/ii_6) + ENDIF FMT(vowel/ii_3) endphoneme @@ -33,6 +36,12 @@ phoneme e FMT(vowel/e_2) endphoneme +phoneme e: + vowel starttype #e endtype #e + length 240 + FMT(vowel/e) +endphoneme + phoneme E vowel starttype #e endtype #e diff --git a/phsource/phonemes b/phsource/phonemes index c5bb7480..2a143571 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -907,6 +907,10 @@ phoneme r. // retroflex lengthmod 3 Vowelout f1=3 f2=1400 -400 300 f3=-400 80 rms=35 len=15 colr=2 Vowelin f1=2 f2=1400 -400 300 f3=-400 80 len=20 + + IF nextPh(isNotVowel) THEN + FMT(r3/@tap_rfx_) + ENDIF FMT(r3/@tap_rfx) endphoneme diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index c43183f0..01a4845b 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.47.08 +AppVerName=eSpeak version 1.47.09 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -107,6 +107,10 @@ ne.v1=भित्र्याउन चाहेको आवाजको च ne.v2=अथवा यसमा निर्धारण गरिएको आवाजलाई नै चयन गर्ने हो भने ईन्टर कुञ्जीलाई दबाउनु होस् । ne.v3=आवाजको नाम प्रविष्टी गर्नु होस् , जस्तै: नेपालीका लागि ne, अथवा स्वरको पनि चयन गर्ने हो भने ne+f3 +hi.v1=स्थापना करने के लिए पसन्दिदा आवाजों को चयन करें । +hi.v2=अगर आप कि चयन इसमें निर्दारित आवाज हि हो तो केवल ईन्टर कुञ्जी दबाए । +hi.v3=आवाज कि नाम प्रविष्टी करें, जैसा कि हिन्दी के लिए hi, और किसि स्वर भि चयन करना चाहते हो तो hi+f3 + [Code] var UILanguage: Integer; diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index 9521f0e6..2cc29654 100755 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,7 +1,7 @@ [Setup] AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.47.08 +AppVerName=eSpeakEdit version 1.47.09 DefaultDirName={pf}\eSpeak DefaultGroupName=eSpeak OutputBaseFilename=setup_espeakedit diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 456a0871..cf33a6f3 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -2980,8 +2980,9 @@ int TransposeAlphabet(Translator *tr, char *text) *p2++ = (acc << (8-bits)); } *p2 = 0; - strcpy(text, buf); - return((p2 - buf) | 0x40); // bit 6 indicates compressed characters + ix = p2 - buf; + memcpy(text, buf, ix); + return(ix | 0x40); // bit 6 indicates compressed characters } else { diff --git a/src/extras.cpp b/src/extras.cpp index 89e7cad3..fa6ac3b3 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -1684,7 +1684,7 @@ void ConvertToUtf8() while(!feof(f_in)) { - c = fgetc(f_in); + c = fgetc(f_in) & 0xff; if(c >= 0xa0) c = translator->charset_a0[c-0xa0]; @@ -1696,7 +1696,7 @@ void ConvertToUtf8() wxLogStatus(_T("Written to: ")+fname+_T("_1")); -} // end of ConvertToItf8 +} // end of ConvertToUtf8 //****************************************************************************************************** diff --git a/src/readclause.cpp b/src/readclause.cpp index 4b883ef2..2fcc5d87 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -92,6 +92,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x061f, // Arabic ? 0x06d4, // Arabic . + 0x0df4, // Singhalese Kunddaliya 0x0f0d, // Tibet Shad 0x0f0e, @@ -142,6 +143,7 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_QUESTION, // Arabic question mark CLAUSE_PERIOD, // Arabic full stop + CLAUSE_PERIOD+0x8000, // Singhalese period CLAUSE_PERIOD+0x8000, // Tibet period CLAUSE_PARAGRAPH, diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 19e983c2..35705473 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.08 26.Apr.13"; -const int version_phdata = 0x014701; +const char *version_string = "1.47.09 29.Apr.13"; +const int version_phdata = 0x014709; int option_device_number = -1; FILE *f_logespeak = NULL; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index cc36033a..31084a48 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -79,7 +79,7 @@ ALPHABET alphabets [] = { {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, - {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0}, + {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), AL_WORDS}, {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, @@ -87,7 +87,7 @@ ALPHABET alphabets [] = { {"_te", OFFSET_TELUGU, 0xc00, 0xc7f, L('t','e'), 0}, {"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), AL_WORDS}, {"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), AL_WORDS}, - {"_si", OFFSET_SINHALA, 0xd80, 0xdff, 0, 0}, + {"_si", OFFSET_SINHALA, 0xd80, 0xdff, L('s','i'), AL_WORDS}, {"_th", OFFSET_THAI, 0xe00, 0xe7f, 0, 0}, {"_lo", OFFSET_LAO, 0xe80, 0xeff, 0, 0}, {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0},