From 6f58bb4d5b973fb389b964c6889b347a8cf71b8f Mon Sep 17 00:00:00 2001 From: jonsd Date: Sat, 27 Apr 2013 11:34:56 +0000 Subject: [PATCH 1/3] lang=de: Revert change of "ier" sound (eg. "vier"). git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@350 d46cf337-b52f-0410-862d-fd96e6ae7743 --- phsource/ph_german | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phsource/ph_german b/phsource/ph_german index 8699b23e..db423f1a 100755 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -127,7 +127,7 @@ phoneme i: ENDIF IF nextPh(r) AND next2Ph(isNotVowel) THEN - ChangePhoneme(iR) +// ChangePhoneme(iR) ENDIF FMT(vowel/i_2) endphoneme From adcb83fcf960e4e81a69ba582fd33ba5fdcbaf78 Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 29 Apr 2013 22:59:27 +0000 Subject: [PATCH 2/3] [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}, From b92a1fc3f1c0318cac234e81137b47116893f2fb Mon Sep 17 00:00:00 2001 From: jonsd Date: Tue, 30 Apr 2013 07:43:00 +0000 Subject: [PATCH 3/3] [1.47.09] Files missing from svn. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@352 d46cf337-b52f-0410-862d-fd96e6ae7743 --- phsource/r3/@tap_rfx_ | Bin 0 -> 3975 bytes phsource/ustop/th_rfx.wav | Bin 0 -> 3910 bytes phsource/ustop/tsh_unasp.wav | Bin 0 -> 2468 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 phsource/r3/@tap_rfx_ create mode 100755 phsource/ustop/th_rfx.wav create mode 100644 phsource/ustop/tsh_unasp.wav diff --git a/phsource/r3/@tap_rfx_ b/phsource/r3/@tap_rfx_ new file mode 100755 index 0000000000000000000000000000000000000000..61b715e3a9e05521fba8b884fc64b42a4bb099c5 GIT binary patch literal 3975 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 literal 0 HcmV?d00001 diff --git a/phsource/ustop/tsh_unasp.wav b/phsource/ustop/tsh_unasp.wav new file mode 100644 index 0000000000000000000000000000000000000000..7d91920fe689baa9d16b18a55b6bf5e5a7c7969a GIT binary patch literal 2468 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 literal 0 HcmV?d00001