From dfb316c05debbd89db54bd3ecc880583fbd16ebe Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 16 Nov 2012 10:02:19 +0000 Subject: [PATCH] [1.46.28] Ignore character U+00AD (soft hyphen) in text. Added stress rule code for Lang=kl (Greenlandic). Changes to languages: it, ta, si git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@294 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/de_list | 2 + dictsource/dict_phonemes | 35 +++++----- dictsource/en_list | 4 +- dictsource/en_rules | 3 +- dictsource/it_listx | 2 +- dictsource/it_rules | 4 +- dictsource/ta_list | 4 +- dictsource/ta_rules | 89 +++++++++++++++++++++++--- phsource/compile_report | 18 +++--- phsource/mbrola/de2 | 5 +- phsource/mbrola/de4 | 2 +- phsource/mbrola/de6 | 2 +- phsource/ph_greenlandic | 102 ++++++++++++++++++++++++++++++ platforms/windows/make_espeak.iss | 7 +- src/dictionary.cpp | 34 ++++++++++ src/numbers.cpp | 68 ++++++++++++++++---- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 12 +++- src/translate.h | 3 + 19 files changed, 339 insertions(+), 59 deletions(-) create mode 100755 phsource/ph_greenlandic diff --git a/dictsource/de_list b/dictsource/de_list index c120992f..1d10a2a9 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -423,6 +423,7 @@ couch _^_EN cursor _^_EN debugger _^_EN dj _^_EN +download _^_EN email _^_EN enterprise _^_EN event _^_EN @@ -497,6 +498,7 @@ terminal _^_EN trip _^_EN tuner _^_EN unix _^_EN +update _^_EN venture _^_EN website _^_EN window _^_EN diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index e7fa4745..07602ef2 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-10-17 +Dictionary de_dict 2012-10-22 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-10-21 +Dictionary en_dict 2012-11-11 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-10-17 +Dictionary ta_dict 2012-11-15 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -252,7 +252,7 @@ n^# p Q r R r# R2 s S s2 t T tl# v x z -Dictionary it_dict 2011-01-15 +Dictionary it_dict 2012-11-10 @- a a/ aI aU e E eI i I i# o O u @@ -741,15 +741,16 @@ t# tS ts ts# v w x z Z -Dictionary si_dict 2011-12-05 +Dictionary si_dict 2012-11-05 & &: @ a a: aI aU e -E e: i i: o o: u u: +e: i i: o o: u u: -b d d. dZ f g h j -k l l. m m# n N n# -N# n. n.# n^ n^# p r s -S t t. th tS v w z +b bh d d. dh dZ f g +gh h j k kh l l. m +m# n N n# N# n. n.# n^ +n^# p ph r s S s. t +t. th tS v w Dictionary et_dict 2012-06-12 @@ -825,15 +826,15 @@ R s S S; t w x z Z Z; -Dictionary kl_dict 2012-10-21 +Dictionary kl_dict 2012-11-15 -& a aI e i o O u -W +& 3 @ @- a aI e E +i o O u V W y -: 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 +* : b d D f g h +j k l l# m n N p +Q q r R s t tl# ts +v w X z Dictionary ko_dict 2012-09-17 diff --git a/dictsource/en_list b/dictsource/en_list index f507c231..69d9788d 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -1426,6 +1426,7 @@ imperative Imp'Er@tIv imperfect Imp'3:fEkt impi $1 impinging Imp'IndZIN +implacable Impl'ak@b@L imprecise ImprIs'aIs impregnable Impr'Egn@b@L inanimate In'anIm@t @@ -1471,7 +1472,8 @@ interim $1 intermediate Int3m'i:di@t intern Int3:n $noun interrogatory $3 -inventory Inv@ntrI +inventory Inv@ntri +?3 inventory Inv@nto:ri interface $1 intermin Int'3:mIn // interminable intern $1 $onlys diff --git a/dictsource/en_rules b/dictsource/en_rules index 9badffd1..884e44f9 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1402,7 +1402,8 @@ me) ch (a k mi) ch (a k chica (n SI2keI - ch (irA k + chi (rA kaI + _) chi (ropA kI2 a) ch (il k bra) ch k te) ch (K k diff --git a/dictsource/it_listx b/dictsource/it_listx index a30b04ee..2488e8cd 100644 --- a/dictsource/it_listx +++ b/dictsource/it_listx @@ -1078,7 +1078,7 @@ cortes $2 cortile $2 cortisol $3 cortocircuito kO@-*totSi@-*k'uito -cosa $2 +cosa $alt cosc $alt coscia $alt cosen $alt2 diff --git a/dictsource/it_rules b/dictsource/it_rules index e1652f5b..6cc802aa 100644 --- a/dictsource/it_rules +++ b/dictsource/it_rules @@ -8,7 +8,7 @@ // Y front vowels: e i (& accents) .L01 a à o ò ó u ù .L02 e é è - +.L03 b d g l m n r v // 's' is [z] before these .group a a a @@ -321,6 +321,7 @@ s s _) s s A) s (A z + s (L03 z l) s s p) s s @@ -377,6 +378,7 @@ .group z z ts A) zz ts: + A) z (A ts: _) z (i dz _) z (ì dz diff --git a/dictsource/ta_list b/dictsource/ta_list index 2936a78c..509e757b 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -375,6 +375,7 @@ tamil தமிழ் $text பூந்தி $alt பாவிக்க $alt பார்ல $alt +பாட்டனி $alt // initial த as [d] @@ -534,8 +535,7 @@ tamil தமிழ் $text // p as [f] போன் fo:n போனில் fo:nil -பைல் faIl -பைலை faIlaI +//பைலை faIlaI பாதர் fa:dVr பாதரிடம் fa:dVrid.Vm பாதருடன் fa:dVrUd.Vn diff --git a/dictsource/ta_rules b/dictsource/ta_rules index d8c59a82..de1d7bf7 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -95,7 +95,7 @@ .L19 தம்பி தங்க // words after கோரப் [go:rVb] -.L20 பல் பற் போர போர +.L20 பல் பற் போர போர பசி // words before பாவ+ .L21 நேய ராக சகோதர சாந்த சிநேக சினேக முக முகத்தின் ராகங்களின் ராகத்தின் சம சமமான சமமாக சமநிலை @@ -113,7 +113,7 @@ .L25 நடன டான்ஸ நாட்டிய // words after கேஸ் -.L26 சிலிண்டர ஸ்டவ் கனெக் +.L26 சிலிண்டர ஸ்டவ் கனெக் அடுப்ப // consonants @@ -152,6 +152,7 @@ _) க (ங்குலி gV _) க (ங்கூலி gV _) க (ங்கை gV + _) க (ங்கோத gV _) க (ஞ்சா gV _) க (டகட gV _) க (டத்தில gV @@ -160,6 +161,7 @@ _) க (டப்பாரை gV _) க (டிகார gV _) க (டோத்கஜ gV + _) க (ட்காரி gV _) க (ணபதி gV _) க (ணீர gV _) க (ணே gV @@ -217,6 +219,7 @@ _) க (வுனை gV _) க (வுன்கள gV _) க (வுர gV + _) காங்டாக் ga:Nt.a:k _) காச (ியாபாத ga:z _) க (ாண்டாமிருக g _) க (ாண்டீப g @@ -255,6 +258,7 @@ _) கி (ரய k _) கி (ரவுண்ட g _) கி (ரஹ g + _) கி (ராL04 k _) கிராஃபைட gra:faIt.V# _) கி (ராக்கா k _) கி (ராக்கி g @@ -292,6 +296,7 @@ _) க (ிருஹஸ்தர g _) கி (ரேக்க g _) கி (ரேய k + _) கி (ரை k _) கி (ரைண்டர g _) கி (ரௌண்ட g _) க (ிர்ரெ g @@ -357,7 +362,11 @@ _மன்மதக்) க (ுகை g _) க (ுண்டம k _) க (ுண்டல k _) குண்டாந்த (டி gun.d.a:ntV + _) க (ுண்டானில k + _) க (ுண்டானை k + _) க (ுண்டான் k _) க (ுண்டி k + _) க (ுண்டின g _) குண்ட (ூர gun.t.V# _) க (ுதிக் g _) க (ுதிச் g @@ -388,10 +397,12 @@ _மன்மதக்) க (ுகை g _) க (ுருநா g _) க (ுருபகவான g _) குருப (த்தினி gurupV + _) க (ுருபர g _) குருப (ாத gurup _) குருப (ீட gurup _) குருப (ூ gurup _) க (ுருபூஜை g + _) குருப்பி (ரசாத gurupp _) க (ுருப்பெயர g _) க (ுருமார g _) க (ுருமூர்த்தி g @@ -417,6 +428,7 @@ _மன்மதக்) க (ுகை g _) குவ (ாலிபிகேஷன kw _) கு (வாலியர g _) க (ுஸ்தி g + _) க (ுஹ g _) க (ூகிள g _) க (ூகுள g _) க (ூடலூர g @@ -492,6 +504,7 @@ _மன்மதக்) க (ுகை g _) க (ோரத்தால g _) க (ோரத்தை g _) க (ோரப்_L20 g + _) க (ோரப்பசி g _) க (ோரப்பற் g _) க (ோரப்பல் g _) க (ோரப்போர g @@ -525,6 +538,7 @@ _மன்மதக்) க (ுகை g //endsort //sort + _கோபி) க kV# _ஸ்டா) க kV# _ஜமாய்) க kV# @@ -682,10 +696,15 @@ _தொன்ம) க (ால k மன்னார்) கு (டி ku2 நற்) க (ுண g _சற்) க (ுண g + _நாற்) க (ுண g + _கற்) க (ுண்டில g + _கற்) க (ுண்டு g + _கற்) க (ுண்டை g ஏறிக்) க (ுதி g க (ுமரன k _கண்ணியா) க (ுமரி k க (ுமார k + _சு) க (ுமார g _டா) குமெண்ட kUmen.tV# அழு) க (ுரல k _மெர்) க (ுரி k @@ -704,6 +723,7 @@ _மன்னர்) க (ுல k _டிரா) க (ுலா k _ட்ரா) க (ுலா k _கங்) க (ுலி g + _கை) க (ுலு k _) குல்க (ந்த gulkV _மெரு) க (ூட்ட g _தயை) க (ூர k @@ -756,7 +776,6 @@ _விவே) க் (_ k _வர்) க்க ggV# _சொர்) க்க ggV# _ஸ்வர்) க்க ggV# -_தீர்) க்க (_சுமங்கலி ggV _கை) க்க (டிகார kgV L03) க்க (ண்ட ggV _துணை) க்க (ண்ட ggV @@ -976,6 +995,7 @@ _தணிகா) ச (ல tSV _ரீ) ச (ார்ஜ tS _டிஸ்) ச (ார்ஜ tS _) ச (ார்ஜை tS + _மொ) ச (ார்ட z _) ச (ார்மினார tS _) ச (ார்லஸ tS _) ச (ார்லி tS @@ -1021,6 +1041,7 @@ _தணிகா) ச (ல tSV _) ச (ிப்பு tS _) ச (ிப்பை tS _) ச (ிப்ஸ tS + _) ச (ிம்னி tS _மலே) ச (ிய s. இந்தோனே) ச (ிய s. _பக்தி_) சிரத் (தை srVd @@ -1171,6 +1192,7 @@ _மங்களே) சு (வர s அ) ஜ (ாருதீன z _நா) ஜ (ி z _) ஜ (ியா z + _) ஜ (ீரோ z _) ஜ (ுல்ஃபி z _) ஜ (ுல்பி z _) ஜு (வால dZ @@ -1254,6 +1276,7 @@ _ஷிஃப்) ட t.V# இண்) ட (ர் t.V _) டர்பண்ட (ைன t.VrpVn.t. எண்) டர்பி (ரைL04 t.Vrp + _) ட (ர்பைன t.V _மெண்) ட (ல t.V _) ட (வர t.V _) ட (வல t.V @@ -1263,6 +1286,7 @@ _ஷிஃப்) ட t.V# அல்) ட (ா t. உல்) ட (ா t. _மால்) ட (ா t. + _டெல்) ட (ா t. _) டாக் (_ t.a:k _) ட (ாக்க t. // talkies _) டாக்குமெண்ட d.a:kkUmen.t.V# @@ -1341,6 +1365,7 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ராமில t. _) டி (ராமை t. _) டி (ராம் t. + _) டி (ராய d. _) டி (ராயிங் d. கொலஸ்) டி (ரால _|t. _) டி (ராலி t. @@ -1352,6 +1377,7 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ரிங்க் d. _) டிரிப் t.rip _) டி (ரிம் t. + _) டி (ரில d. _) டி (ரில்லியன t. _) டிரீட் t.ri:t. _) டி (ரெண் t. @@ -1403,6 +1429,7 @@ _ப்ளஸ்_) டூ t.u: _) ட (ெசோ t. _) ட (ெண்டர t. _) ட (ெண்டுல்கர t. + _) டெண்ட் t.en.t. _) டென்ச (ன t.ens.V _) டென்டுல்க (ர t.ent.UlkV _) ட (ென்னிஸ t. @@ -1411,6 +1438,7 @@ _லான்_) ட (ென்னிஸ t. _) ட (ென்ஷன t. _) டெம்ப (ர t.empV _) டெம்ப (ோ t.emp + _) டெம்ப்லேட் t.emple:t. _) ட (ெய்லர t. _) ட (ெர t. _) டெலஸ்கோப் t.elVsko:p @@ -1558,6 +1586,7 @@ _நடுரோ) ட் (ல t. // exceptions, த as [d] //sort + _) த (L04ா dV _) த (L08னா d _) த (கதக dV @@ -1644,6 +1673,7 @@ _நடுரோ) ட் (ல t. _) த (ரிசி dV _) தரித்த (ிர_ dVridd _) தரித்த (ிரத்த dVridd + _) தரித்த (ிரன dVridd _) த (ரித்திரம dV _) தரித்த (ிரம் dVridd _) த (ருமங் dV @@ -1801,6 +1831,7 @@ _அகாலி_) த (ள dV _) த (ீரரை d _) த (ீர்க d _) த (ீர்க்க t +_) தீர்க்க (_சுமங்கலி dirggV _) தீர்க்க (தரிச di:rggV _) தீர்க்க (த்துடன di:rggV# _) த (ீர்க்கமா d @@ -1976,6 +2007,7 @@ _பிரசார்_பார) த (ி t _ஜோ) திக (ா tik _கார்) திக் tik சட்ட) த (ிட்ட t + _நி) த (ின t எ) தியோப (ிய tijo:p எ) த (ியோப்பிய t _பிர) த (ீ t @@ -1987,8 +2019,14 @@ _பிரசார்_பார) த (ி t வீண்) த (ேவை t _நி) த (ேஷ t _நிவேதி) த (ை t + L03து) த (ொட t வீண்) த (ொல்லை t _தான்) த (ோன்ற t + _சந்) த (ோஷிட t + _சந்) த (ோஷின t + _சந்) த (ோஷு t + _சந்) த (ோஷை t + _சந்) த (ோஷ்_ t _சோவிய) த் t அம்பே) த்க tkV# _வா) த் (சல்ய t @@ -2023,6 +2061,7 @@ _பரிவர்) த்த (ன ddV சில) த்த (ினங் dd பல) த்த (ினங் dd வர்) த்த (ினி dd +_மL06ிஷாசுரமர்) த்த (ினி dd L03) த்த (ினி+ tt ம) த்த (ிய dd வா) த்த (ிய dd @@ -2046,6 +2085,7 @@ L03வ்வு) த்த (ியோக dd _சூ) த்த (ிரரி dd _சூ) த்த (ிரர் dd ஆதி) த்தி (ராவிட dd + _சேஷா) த்த (ிரி dd _வை) த்தீசு (வ ddi:s _வை) த்த (ீஸ்வ dd ராஜ) த்து (ரோக dd @@ -2216,6 +2256,7 @@ _சொந்த_) ப (ந்த bV _) ப (னாரச bV _) ப (னாரஸ bV _) ப (னியன bV + _) ப (ன்சல bV _) ப (ன்னாரி bV _டீயும்_) ப (ன்னும்_ bV _) ப (ன்னும்_டீயும் bV @@ -2225,6 +2266,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ப்ளிமாஸ bV _) ப (ம்பர bV _) ப (ம்பாய bV + _) ப (ய_உணர் bV _) ப (யங் bV _) ப (யங்கர bV _) ப (யத் bV @@ -2315,6 +2357,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லஹீன bV _) பலாத்க (ார bVla:dk _) ப (லிகடா bV + _) ப (லிகள bV _) ப (லிகொ bV _) ப (லிக்கடா bV _) ப (லிக்குச் bV @@ -2333,6 +2376,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ளு bV _) ப (வநகர bV _) ப (வன bV + _) ப (வன்குமார pV _) ப (வாணி bV _) ப (வானி bV _) பவுண்ட (ன faUn.t.V @@ -2374,6 +2418,7 @@ _டெட்_) ப (ாடி b _) ப (ாடி_பில்டிங் b _) ப (ாடிக்கு b _) ப (ாடியை b + _) ப (ாட்டனிய b _) பா (ட்டரி be: _) ப (ாட்டலியன b _) பா (ட்டிங் be: @@ -2566,6 +2611,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ிங்கர்_ f _) ப (ிசிக்ஸ f _) ப (ிசினஸ b + _) ப (ிசினெஸ b _) ப (ிசிய b _) ப (ிஜிலி b _) ப (ிடில f @@ -2648,6 +2694,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரயோஜன p _) பி (ரலய p _) பி (ரளய p + _) பி (ரவகி p _) பி (ரவாக p _) பி (ரவீண p _) பி (ரவீன p @@ -2747,6 +2794,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரெயில b _) பி (ரெய்ல b _) பி (ரெஷ் f + _) பி (ரெஸ p _) பி (ரே p _) பி (ரேக்க b _) பிரேச (ில bre:z @@ -2847,6 +2895,7 @@ _பெனசீர்_) ப (ுட்டோ b _) புத்த (ம்_புதிய puttV _) புத்த (ம்_புது puttV _) புத்த (ரிசி puttV + _) புத்த (ழக puttV _) ப (ுத்திக் b _) ப (ுத்திசாலி b _) ப (ுத்திய b @@ -2932,9 +2981,12 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெந்தகோஸ்த b _) ப (ெனசீர b _) பெனாச (ீர bena:z + _) ப (ெனாமி b + _) ப (ென்னட் b _) பெப்ப (ே bebb _) ப (ெப்ரவரி f _) ப (ெயில f + _) பெரோஸ fero:zV# _) பெர்ட் (ரண்ட bert. _) ப (ெர்த் b _) ப (ெர்னாட்ஷா b @@ -2955,9 +3007,11 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ேச்சிலர b _) ப (ேச்சுலர b _) ப (ேஜார b + _) ப (ேட்ஜ b _) ப (ேட்டரி b _) ப (ேட்டா b _) ப (ேட்டிங் b + _) ப (ேட்ஸ்மேன b _) ப (ேதங் b _) ப (ேதமி b _) ப (ேதமு b @@ -2992,8 +3046,8 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ைரன b _) ப (ைரவ b _) ப (ைராகி b - _) ப (ைலில f - _) ப (ைலு f + _) ப (ைல f + _) ப (ைலட் p _) ப (ொக்கே b _) ப (ொம்மன b _) ப (ொம்மனாட்டி p @@ -3041,9 +3095,11 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோனியாக b _) ப (ோனியை b _) ப (ோனில f + _) ப (ோனிலும் f _) ப (ோனுக்க f _) ப (ோனுடைய f _) ப (ோனுல f + _) ப (ோனை f _) ப (ோன்கள f _) ப (ோன்ஸ்லே b _) போப (ால bo:p @@ -3055,6 +3111,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோரும்_அடி b _) ப (ோர்_அடி b _) ப (ோர்ஜரி f + _) ப (ோர்ட b _) ப (ோர்தான்_அடி b _) ப (ோர்மேன f _) ப (ோர்வெல் b @@ -3175,6 +3232,7 @@ _விரகதா) ப (+ bV# _சிவ) ப (த pV _குளிர்) ப (தன pV _கல்) ப (தரு pV + உயர்) ப (தவி pV கஜ) பதி pVti கண) பதி pVti பசு) பத (ி pVt @@ -3274,6 +3332,7 @@ _முனிசி) ப (ல pV ஆல்) ப (ா f _ஷில்) ப (ா p _முஸ்த) ப (ா f + _ஹனி) ப (ா f _போதும்) ப (ா p _போலாம்) ப (ா p _வேண்டாம்) ப (ா p @@ -3292,6 +3351,7 @@ _வெளிப்) ப (ாக b ஈடு) ப (ாட p இடி) ப (ாட p _கட்டு) ப (ாட p + _மாசு) ப (ாட p _வசை) ப (ாட p _வழி) ப (ாட p இசை) ப (ாட p @@ -3336,7 +3396,9 @@ _வெளிப்) ப (ாக b _சரி) ப (ார p எதிர்) ப (ார p _பிளாட்) ப (ார f + _யுக) ப (ாரதி b இன்) ப (ார்ம f + _யூனி) ப (ார்ம f அ) பார்மெண்ட pa:rment.V# கண்) ப (ார்வை p இம்) ப (ால f @@ -3441,6 +3503,9 @@ L03ந்தப்) பி (ராய p ப (ிறகு+ p தேய்) ப (ிறை p வளர்) ப (ிறை p + ஈ) ப (ில f + _ரீ) ப (ில f + _ரை) ப (ில f _) பிலிப filipV# _) பி (லெட்சர f _சிம்) ப (ிள p @@ -3523,6 +3588,7 @@ _கோலாலம்) ப (ூர p _தவிடு) ப (ொடி p எரி) ப (ொரு p _வன்) ப (ொரு p + _மறை) ப (ொரு p _மென்) ப (ொரு p _ வெடி) ப (ொரு p _பழம்) ப (ொருள p @@ -3537,6 +3603,7 @@ _ வெடி) ப (ொரு p ப (ொழுதும்_+ p ப (ொழுதே_+ p ப (ொழுதோ_+ p +_விலை) ப (ோ p _ஏக) ப (ோக b ராஜ) ப (ோக b ப (ோக_ p @@ -3556,6 +3623,7 @@ _ வெடி) ப (ொரு p _மை) ப (ோட p அசை) ப (ோட p _சத்தம்) ப (ோட p + _திரை) ப (ோட p ப (ோதிலுமே_+ p ப (ோதிலும்+ p ஒம்) ப (ோது _ b @@ -3641,6 +3709,7 @@ _யாதவ) ப்பி (ரகாச pp _வெளி) ப்பி (ரகார pp அதிக) ப்பி (ரசங்க pp _நில) ப்பி (ரபு pp +_சத்திய) ப்பி (ரமா pp மன) ப்பி (ரமை bb _பர) ப்பி (ரம்ம pb _மணி) ப்பி (ரவா pp @@ -3653,6 +3722,7 @@ _வெளி) ப்பி (ரகார pp இரத்த) ப்பி (ரவாக pp _ஒL10ி) ப்பி (ரவாக pp தேச) ப்பி (ரஷ்ட pp + _ஜாதி) ப்பி (ரஷ்ட pp ஆ) ப்பி (ரிக்க f தென்னா) ப்பி (ரிக்க fV _கஜ) ப்ப (ிருஷ்ட bb @@ -3732,9 +3802,7 @@ _சந்தேக) ப்ப (ுத்தி bb மகா) ப (ாரத b L03க்க) ப (ாலி b - _) ப (ோனை f - _) ப (ைல்கள f - _) ப (ோனிலும் f + _சோ) ப (ா f // sofa _ஆ) ப (ீஸ f // office _ஆ) ப (ீச f // office @@ -3813,6 +3881,9 @@ _சந்தேக) ப்ப (ுத்தி bb ஸ sV ஸ (B s + _உ) ஸ்பெக் zbek + _நவா) ஸ zV# + .group ஹ ஹ HV @@ -3828,6 +3899,8 @@ _சந்தேக) ப்ப (ுத்தி bb ஃக gQV ஃக (B gQ + _) ஃபி (ரான் f + // vowel letters .group இ diff --git a/phsource/compile_report b/phsource/compile_report index 13c9a888..d26fe088 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -83,7 +83,7 @@ consonants 10 118 ga 21 127 tt 23 120 ko 15 116 - kl 14 115 + kl 18 119 Data file Used by b/b [b] base @@ -418,7 +418,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [] base +l/l@ [h&z] base [l#] base [l] fr [l/2] fr @@ -452,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 [] base +l/la [h&z] base [l#] base [l] fr [l/2] fr @@ -460,7 +460,7 @@ l/la [] base [K] tn l/l_a [l/3] base [l/] fr -l/le [] base +l/le [h&z] base [l#] base [l] fr [l/2] fr @@ -472,7 +472,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [] base +l/li [h&z] base [l#] base [l] fr [l/2] fr @@ -486,7 +486,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [] base +l/lo [h&z] base [l#] base [l/2] fr [K] nso @@ -497,7 +497,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [] base +l/lu [h&z] base [l#] base [l] fr [l/2] fr @@ -1737,10 +1737,10 @@ vowel/e [e] base [e:] dv [e:] te [e:] ga - [e] kl + [E] kl vowel/e# [I] en-sc [e] et - [e] kl + [E] kl vowel/e_2 [eI] en-sc [e:] de [e] hi diff --git a/phsource/mbrola/de2 b/phsource/mbrola/de2 index 694cd7f6..2aac03d3 100644 --- a/phsource/mbrola/de2 +++ b/phsource/mbrola/de2 @@ -37,7 +37,8 @@ 0 V# NULL 0 R 0 UR NULL 60 U R -0 eI NULL 60 E j +0 eI VWL 60 E j +0 eI NULL 0 e: 0 oU NULL 0 o: 0 W~ NULL 0 E~ 0 A~ NULL 0 a~ @@ -49,7 +50,7 @@ 0 @5 NULL 0 @ 0 a# NULL 0 @ 0 I2 NULL 0 I -0 i NULL 0 I +0 i NULL 0 i: 0 aa NULL 0 a 0 V NULL 0 a: 0 0 NULL 0 O diff --git a/phsource/mbrola/de4 b/phsource/mbrola/de4 index 65ed0148..e8a5ec6f 100644 --- a/phsource/mbrola/de4 +++ b/phsource/mbrola/de4 @@ -59,7 +59,7 @@ 0 @5 NULL 0 @ 0 a# NULL 0 @ 0 I2 NULL 0 I -0 i NULL 0 I +0 i NULL 0 i: 0 aa NULL 0 a 0 V NULL 0 a: 0 0 NULL 0 O diff --git a/phsource/mbrola/de6 b/phsource/mbrola/de6 index 1564267c..d2818910 100644 --- a/phsource/mbrola/de6 +++ b/phsource/mbrola/de6 @@ -41,7 +41,7 @@ 0 @5 NULL 0 @ 0 a# NULL 0 @ 0 I2 NULL 0 I -0 i NULL 0 I +0 i NULL 0 i: 0 aa NULL 0 a 0 V NULL 0 a: 0 0 NULL 0 a: diff --git a/phsource/ph_greenlandic b/phsource/ph_greenlandic new file mode 100755 index 00000000..d0b4a339 --- /dev/null +++ b/phsource/ph_greenlandic @@ -0,0 +1,102 @@ + + +// 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 e + import_phoneme da/e +endphoneme + +phoneme & + import_phoneme da/& +endphoneme + +phoneme V + import_phoneme da/V +endphoneme + +phoneme O + import_phoneme da/O +endphoneme + +phoneme y + import_phoneme da/y +endphoneme + +phoneme W + import_phoneme da/W +endphoneme + +phoneme 3 + import_phoneme da/3 +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/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 8ff80129..43128588 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.23 +AppVerName=eSpeak version 1.46.28 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -220,6 +220,7 @@ begin 'et': value := $425; 'eu': value := $42d; 'fi': value := $40b; + 'fil': value := $464; 'fr': value := $40c; 'ga': value := $83c; 'gu': value := $447; @@ -250,15 +251,19 @@ begin 'rw': value := $487; 'si': value := $45b; 'sk': value := $41b; + 'sl': value := $424; 'sq': value := $41c; 'sr': value := $81a; 'sv': value := $41d; 'sw': value := $441; 'ta': value := $449; 'te': value := $44a; + 'tg': value := $45e; // 'am' + 'tl': value := $464; 'tn': value := $432; 'tr': value := $41f; 'tt': value := $444; + 'ur': value := $420; 'vi': value := $42a; 'wo': value := $488; 'zh': value := $804; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 0aa1d63c..09a5c2be 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1129,6 +1129,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int stressflags; int dflags = 0; int first_primary; + int long_vowel; signed char vowel_stress[N_WORD_PHONEMES/2]; char syllable_weight[N_WORD_PHONEMES/2]; @@ -1444,6 +1445,39 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, vowel_stress[ix] = 4; } break; + + case 12: // LANG=kl (Greenlandic) + long_vowel = 0; + for(ix=1; ix < vowel_count; ix++) + { + if(vowel_stress[ix] == 4) + vowel_stress[ix] = 3; // change marked stress (consonant clusters) to secondary (except the last) + + if(vowel_length[ix] > 0) + { + long_vowel = ix; + vowel_stress[ix] = 3; // give secondary stress to all long vowels + } + } + + // 'stressed_syllable' gives the last marked stress + if(stressed_syllable == 0) + { + // no marked stress, choose the last long vowel + if(long_vowel > 0) + stressed_syllable = long_vowel; + else + { + // no long vowels or consonant clusters + if(vowel_count > 4) + stressed_syllable = vowel_count - 3; + else + stressed_syllable = vowel_count - 1; + } + } + vowel_stress[stressed_syllable] = 4; + max_stress = 4; + break; } /* now guess the complete stress pattern */ diff --git a/src/numbers.cpp b/src/numbers.cpp index 90a246ed..c2a30153 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -1146,6 +1146,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out // control bit 3: use feminine form of '2' (for thousands // control bit 4: speak zero tens // control bit 5: variant of ordinal number (lang=hu) +// bit 8 followed by decimal fraction int found; int ix; @@ -1385,6 +1386,22 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out } } + if(tr->langopts.numbers & NUM_SINGLE_STRESS_L) + { + // only one primary stress, on the first part (tens) + found = 0; + for(ix=0; ix < (signed)strlen(ph_out); ix++) + { + if(ph_out[ix] == phonSTRESS_P) + { + if(found) + ph_out[ix] = phonSTRESS_3; + else + found = 1; + } + } + } + else if(tr->langopts.numbers & NUM_SINGLE_STRESS) { // only one primary stress @@ -1410,6 +1427,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null // control bit 0, previous thousands // bit 1, ordinal number // bit 5 variant form of ordinal number +// bit 8 followed by decimal fraction int found; int hundreds; int tensunits; @@ -1610,7 +1628,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null x = 8; // use variant (feminine) for before thousands and millions } - if(LookupNum2(tr, tensunits, x, buf2) != 0) + if(LookupNum2(tr, tensunits, x | control & 0x100, buf2) != 0) { if(tr->langopts.numbers & NUM_SINGLE_AND) ph_hundred_and[0] = 0; // don't put 'and' after 'hundred' if there's 'and' between tens and units @@ -1858,7 +1876,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { // this "word" ends with a decimal point Lookup(tr, "_dpt", ph_append); - decimal_point = 1; + decimal_point = 0x100; } else if(suppress_null == 0) @@ -1913,6 +1931,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned // if((buf_digit_lookup[0] == 0) && (*p != '0') && (dot_ordinal==0)) if((buf_digit_lookup[0] == 0) && (*p != '0')) { + // LANG=hu ? // not found, lookup only the last digit (?? but not if dot-ordinal has been found) if(LookupDictList(tr, &p, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // don't match '0', or entries with $only { @@ -1920,24 +1939,38 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } } - if((tr->langopts.numbers2 & NUM2_PERCENT_BEFORE) && (prev_thousands == 0)) + if(prev_thousands == 0) { - // LANG=si, say "percent" before the number - p2 = word; - while((*p2 != ' ') && (*p2 != 0)) + if((decimal_point == 0) && (ordinal == 0)) { - p2++; + // Look for special pronunciation for this number in isolation (LANG=kl) + sprintf(string, "_%dn", value); + if(Lookup(tr, string, ph_out)) + { + return(1); + } } - if(p2[1] == '%') + + if(tr->langopts.numbers2 & NUM2_PERCENT_BEFORE) { - Lookup(tr, "%", ph_out); - ph_out += strlen(ph_out); - p2[1] = ' '; + // 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); + LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal | decimal_point); if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200)) sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_append,ph_buf2,ph_buf); // say "thousands" before its number else @@ -2005,6 +2038,17 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned n_digits += decimal_count; } break; + + case NUM_DFRACTION_7: + // alternative form of decimal fraction digits, except the final digit + while(decimal_count-- > 1) + { + sprintf(string,"_%cd", word[n_digits]); + if(Lookup(tr, string, buf1) == 0) + break; + n_digits++; + strcat(ph_out, buf1); + } } } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 60ef6e46..1e65d1bf 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.27 21.Oct.12"; +const char *version_string = "1.46.28 16.Nov.12"; const int version_phdata = 0x014624; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 4132d627..dc4b3938 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -113,12 +113,14 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last) // ignore these characters static const unsigned short chars_ignore_default[] = { + 0xad, 1, // soft hyphtn 0x200c, 1, // zero width non-joiner 0x200d, 1, // zero width joiner 0, 0 }; // alternatively, ignore characters but allow zero-width-non-joiner (lang-fa) static const unsigned short chars_ignore_zwnj_hyphen[] = { + 0xad, 1, // soft hyphen 0x200c, '-', // zero width non-joiner, replace with hyphen 0x200d, 1, // zero width joiner 0, 0 }; @@ -943,6 +945,14 @@ SetLengthMods(tr,3); // all equal } break; + case L('k','l'): // Greenlandic + { + tr->langopts.stress_rule = 12; + tr->langopts.stress_flags = S_NO_AUTO_2; + tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL; + } + break; + case L('k','o'): // Korean, TEST { static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels @@ -1207,7 +1217,7 @@ 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 | NUM_SINGLE_STRESS_L | NUM_DFRACTION_7; 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 } diff --git a/src/translate.h b/src/translate.h index 76075f6f..b88f0b13 100644 --- a/src/translate.h +++ b/src/translate.h @@ -402,6 +402,7 @@ typedef struct { #define NUM_DFRACTION_4 0x8000 #define NUM_DFRACTION_5 0xa000 #define NUM_DFRACTION_6 0xc000 +#define NUM_DFRACTION_7 0xe000 // lang=si, alternative form of number for decimal fraction digits (except the last) #define NUM_ORDINAL_DOT 0x10000 #define NUM_NOPAUSE 0x20000 #define NUM_AND_HUNDRED 0x40000 @@ -414,6 +415,7 @@ typedef struct { #define NUM_ROMAN_CAPITALS 0x2000000 #define NUM_ROMAN_AFTER 0x4000000 #define NUM_ROMAN_ORDINAL 0x8000000 +#define NUM_SINGLE_STRESS_L 0x10000000 // bits0-1=which numbers routine to use. // bit2= thousands separator must be space @@ -442,6 +444,7 @@ typedef struct { // bit25= Roman numbers only if upper case // bit26= say "roman" after the number, not before // bit27= Roman numbers are ordinal numbers + // bit28= only one primary stress in tens+units (on the tens) int numbers; #define NUM2_THOUSANDS_VAR1 0x40