From 4eb335011a9385ab7fc615f2624d830eb86d963e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Fri, 20 Sep 2013 22:38:26 +0100 Subject: [PATCH 1/7] autotools: re-enable building om -- building it no longer intermittently crashes --- Makefile.am | 7 +++++++ mkdictlist | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7feca9f4..22d7cdd4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -218,6 +218,7 @@ dictionaries: \ espeak-data/ne_dict \ espeak-data/nl_dict \ espeak-data/no_dict \ + espeak-data/om_dict \ espeak-data/pa_dict \ espeak-data/pap_dict \ espeak-data/pl_dict \ @@ -496,6 +497,12 @@ dictsource/no_extra: espeak-data/no_dict: src/espeak espeak-data/phontab dictsource/no_list dictsource/no_rules dictsource/no_extra cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=no && cd .. +om: espeak-data/om_dict +dictsource/om_extra: + touch dictsource/om_extra +espeak-data/om_dict: src/espeak espeak-data/phontab dictsource/om_list dictsource/om_rules dictsource/om_extra + cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=om && cd .. + pa: espeak-data/pa_dict dictsource/pa_extra: touch dictsource/pa_extra diff --git a/mkdictlist b/mkdictlist index e80e62c1..a7073e94 100755 --- a/mkdictlist +++ b/mkdictlist @@ -16,8 +16,7 @@ special_voices = { 'zh-yue': 'zhy', } -# The 'om' voice file intimitently crashes when compiling on some platforms. -exclude_voices = ['om'] +exclude_voices = [] def find_voices(path): for filename in os.listdir(path): From 10bd23b3b455b4fa1d429ba461c2384cb9d92b15 Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 23 Sep 2013 14:20:26 +0000 Subject: [PATCH 2/7] [1.47.12] Change program code for espeak/libespeak to C, remove C++ features. Language changes: af, ga, grc, hu, nl, sw, ta git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@364 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/af_list | 81 ++++- dictsource/af_rules | 27 +- dictsource/de_list | 4 +- dictsource/de_rules | 2 +- dictsource/dict_phonemes | 52 ++- dictsource/en_list | 51 ++- dictsource/en_rules | 37 +- dictsource/ga_list | 42 ++- dictsource/ga_rules | 98 +++++- dictsource/grc_list | 8 +- dictsource/grc_rules | 135 +++---- dictsource/hu_list | 4 +- dictsource/hu_rules | 743 ++++++++++++++++++++++++++++++++------- dictsource/nl_list | 32 +- dictsource/nl_rules | 47 ++- dictsource/sl_list | 2 +- dictsource/sw_list | 15 +- dictsource/sw_rules | 31 +- dictsource/ta_list | 7 +- dictsource/ta_rules | 135 ++++++- phsource/compile_report | 57 ++- phsource/m/mu | Bin 1328 -> 1614 bytes phsource/ph_irish | 2 +- phsource/ph_swahili | 218 +++++++++++- phsource/phonemes | 9 + src/compiledata.cpp | 11 + src/compiledict.cpp | 15 +- src/dictionary.cpp | 39 +- src/espeak.cpp | 1 + src/event.cpp | 116 +++--- src/fifo.cpp | 62 ++-- src/intonation.cpp | 32 +- src/numbers.cpp | 73 ++-- src/readclause.cpp | 56 +-- src/speak.cpp | 1 + src/speak_lib.cpp | 5 +- src/speak_lib.h | 9 +- src/spectdisplay.cpp | 18 +- src/speech.h | 2 +- src/synthdata.cpp | 6 +- src/synthesize.cpp | 20 +- src/tr_languages.cpp | 20 +- src/translate.cpp | 51 ++- src/voices.cpp | 20 +- src/wavegen.cpp | 28 +- 45 files changed, 1847 insertions(+), 577 deletions(-) diff --git a/dictsource/af_list b/dictsource/af_list index e8469c67..7351f49d 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -227,6 +227,7 @@ bainskloof beInsklo@f bangladesj baNglad'ES barcelona bars@l'o@na barkly _^_EN +batavië bat'A:vi@ bellevue b&lvju: bermuda $2 bethlehem bEt_liEm @@ -260,7 +261,7 @@ denemarke de@n@mark@ djakarta dZak'arta doebaai $2 duitswes dYytsv'Es -eastgate _^_EN + eastgate _^_EN efese e@f@s@ ermelo &rm@lo@ florida flOrida @@ -344,7 +345,6 @@ rhône _^_FR richardsbaai ritS@dsb'AI riviersonderend r@fi:rsOn@r_'Ent robertson _^_EN -saldanha sald'ana salvador salvadO:r santiago santi;'A:gu secunda s@kunda @@ -387,8 +387,10 @@ zulu zulu // Kwazulu-Natal abdullah abd'ula Abiméleg abin'e@lEx2 abraham A:bram +achilles ak'il@s ackerman ak@rman adam adam +adonis ad'o@n@s adriaan A:drijan adrie A:dri agnes _^_EN @@ -628,6 +630,7 @@ lucretia lukr'i:Sja lucas lukas lukas lukas lulu lulu +lydia lIdia mabalêl mabal'&l mabel _^_EN macgill m@gjil @@ -693,6 +696,7 @@ oedipus o@dipWs ogden _^_EN olga Olga ontong OntON +pamela _^_EN patrick _^_EN petoors p@to@rs phillips fIl@ps @@ -984,6 +988,67 @@ dis $u (nie waar nie) n,i||v,A:r||n'i (sy aan sy) s,eI||an||s'eI +// Latin terms +ab _^_LA +actio _^_LA +ad _^_LA +alterius _^_LA +amico _^_LA +amicus _^_LA +beneficium _^_LA +bona _^_LA +bono _^_LA +contestatio _^_LA +cum _^_LA +curiae _^_LA +(de facto) _^_LA +(de jure) _^_LA +delicti _^_LA +delicto _^_LA +deo _^_LA +directus _^_LA +divisionis _^_LA +dolus _^_LA +domicilium _^_LA +eventualis _^_LA +exclusio _^_LA +executandi _^_LA +excussionis _^_LA +extremis _^_LA +facto _^_LA +factum _^_LA +fide _^_LA +fides _^_LA +forma _^_LA +grata _^_LA +habitatio _^_LA +inclusio _^_LA +(in debiti) _^_LA +(in absentia) _^_LA +(in extremis) _^_LA +initio _^_LA +inter _^_LA +ipsa _^_LA +jus _^_LA +laude _^_LA +litis _^_LA +loquitur _^_LA +luna _^_LA +mercatrix _^_LA +mutandi _^_LA +mutatis _^_LA +nisi _^_LA +pauperis _^_LA +persona _^_LA +publica _^_LA +restitutio _^_LA +sine _^_LA +unius _^_LA +usufruct _^_LA +usufructus _^_LA +usus _^_LA +vivendi _^_LA +vivos _^_LA // main word list @@ -1029,6 +1094,7 @@ aversie av'&rsi babelaas bab@lA:s barrikade $3 +bedewete be@d@ve@t@ beide beId@ bekaf b&kaf belangriker b@laNr@k,Ir @@ -1039,6 +1105,7 @@ bestes bEst@s beta be@ta $only betlehemster bEtli:Emst&r bewe be@v@ +bewebeen be@v@be@n bewend be@v@nt bewering b@ve@rIN biopsie bi'Opsi @@ -1076,6 +1143,7 @@ crèche krES dadelik dA:d@lIk dagorde dax2_Ord@ dagster dax2st&r +dagure dax2_yr@ daisy deIzi darem dar@m dawidster dA:v@tst&r @@ -1150,6 +1218,7 @@ genesis x2e@n@s@s //gesamentlik x2@sA:m@ntl@k gentleman _^_EN germolene dZI:m@l'i:n +geseling x2e@s@l@N gevallene x2@fal@n@ gewellys x2e@v@lleIs gladiator x2ladi'A:tOr @@ -1159,6 +1228,7 @@ gooi x2OI gomorra x2@mOra graffiti graf'iti gratis x2r'A:t@s +groepeer $2 grondys x2rO:nt_eIs hallo h'Il,@U @@ -1233,6 +1303,7 @@ kritiek krIt'ik kulture $2 kunsmatige kWnsm'A:t@x2@ kwansuis $2 +kweekwal kwe@kval lasagne las'anj@ legaat l@x2A:t @@ -1251,6 +1322,7 @@ macaroni makar'o@ni macho matS@U madame mad'A:m madamoiselle _^_FR +manalleen man_ale@n maskering mask'e@r@N $only massaal $2 massale $2 @@ -1287,6 +1359,8 @@ namate $2 negeer n@x2e@r negering n@x2e@r@N negester ne@x2@st&r +nekaar n&k_A:r +nekare n&k_A:r@ netjies nE:icis netjiese nEicis@ netsowel nEtso@v&l @@ -1493,6 +1567,7 @@ verregaande f&r@x2'A:nd@ verreweg f&r@v&x2 verse f&:rs@ vers f&:rs +versene f&rs@n@ versindaba f&:rs_@ndA:ba verste f&rst@ verte f&rt@ @@ -1506,6 +1581,7 @@ volspoed $1 volswanger $1 volte $1 voluit fOl_Yyt + voorbene fo@rbe@n@ voorgee fo@rx2e@ voorkeer $1 voorkom $2 $only @@ -1530,6 +1606,7 @@ watwou vatv@U weergalm $2 weerklink $2 weervoorspelling $1 +wegeb v&x2_Eb weggewens v&x2@v'E:ns welaf v&l_af weleer v&l_'e@r diff --git a/dictsource/af_rules b/dictsource/af_rules index 7864d4c0..eeaf3f8d 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -851,6 +851,7 @@ karoo) d d // but Karoodorp/Karoodoring/Karoodistrik, etc. du (pliC du // duplikaat/dupliseer duvet d%uveI: // duvet/-s/duvetoortreksel, etc. + @) d (yster t_ // fix d sound, pause: bind-/brand-/vuurherd-/smeedyster... .group de de (flasi d%e@ // fix e sound: deflasie(beleid)/deflasionêr/deflasionisties @@ -952,6 +953,7 @@ blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese _eend) e (CA @ // fix e sound: eendedam/-dans/-kuil/-pastei... _eend) e (lig e@ // but: eendelig/-e/-heid + @C) elys @leIs // fix e sound: beskuldigde-/debiteure-/dividende-/geskenkelys _meid) e (C @ // fix e sound: meidekamer/-naaier/-praatjies pous) e (C @ // fix e sound: pousebrood/-klok/-tyd, etc. _siel) e (@ @ // fix e sound: sielesmart/-troos/-wroeging... @@ -1425,7 +1427,7 @@ nl) eer e@r // restore default stress: kernleerplan and compounds rl) eer e@r // move default stress: agterleer/burgerleer/kelderleer/solderleer sl) eer e@r // words containing sleer take default stress: seemsleer/volstruisleer - ep) eer e@r // default stress: (harde-/wilde-)peer and compounds + Cep) eer e@r // default stress: (harde-/wilde-)peer and compounds, but (ge)groepeer Cs) eer e@r // words containing seer (meaning pain) take default stress ks) eer 'e@r // annekseer/indekseer/lakseer/takseer and their compounds ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc. @@ -1641,7 +1643,7 @@ gas (ig x2A:s // long a and no pause: gasig/-e/-heid gauteng x2%aUtEN //Gauteng and compounds _) gh g - gh (_ k + gh (_ x2 // Tulbagh and similar @) gheid x2eIt // traagheid/leegheid/droogheid/stugheid ghi (ta g%i // move default stress: ghitaar and compounds/ghitare ght _^_EN @@ -1716,6 +1718,7 @@ ge x2@ C) ge (_ g@ _) gebede x2@be@d@ // fix stress and vowel sounds: gebedeboek/-e/-tafel/-s + gegesel x2@x2e@s@l // fix middle e sound K) gele (_ x2e@l@ // fix stress and e sound: (eier)gele _) geler x2e@l@r // stress and 1st e sound: geler/gelerig gemel (d x2@m&l // fix e sound: bo-/bowe-/laas-/meergemeld/-e @@ -2012,6 +2015,7 @@ _) ig (lo ig // fix i and g sounds: iglo(e) @) ika (_ =%ik%a // logika/dinamika &) ike (_S3 @k@ + &C) ikes (_ @k@s // fix penultimate e sound: (on)belangrikes C) iking @k@N imbe (s @mb@ // fix stress: imbesiel/-e _) immer (@P5 'Im@r_ // immerafhanklik/immeringesteld, etc. @@ -2090,7 +2094,7 @@ w) it (A It // fix i sound: eiwitafskeiding/witagtig/kwiteer/grondserwituut itali (a %it%al%i // move default stress: Italianer/-s and compounds item itEm // fix e sound in item and compounds - @) iteit it'eIt // stress on iteit endings + iteit it'eIt // stress on iteit endings: universiteit/outoriteit @C) itis (_ 'it@s // stress: many diseases ending in -itis C) iveer if'e@r // always takes stress C) iver (A if'e@r // always takes stress: aktiverende/motivering @@ -2341,6 +2345,7 @@ .group ka @A) kaa (t k'A: // advokaatstoga/fabrikaat/sertifikaatjie/triplikaat and many similar @) kate (_ k'A:t@ // plurals of some of the above + advo) kate (C 'kA:t@ // fix e sound and stress: advokatekamer/s/-latyn kabare (t k%ab%arE // fix stress and 1st a sound: kabaret/-te and compounds kabel kA:b@l //stress and e sound kabeljou kab@lj'@U //kabeljou and compounds @@ -2733,6 +2738,7 @@ manier m@ni:r //manier and compounds manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer mani (ku m%an%i // fix stress and a sound: manikuur and compounds + manilla (C m%anIl%a // fix stress and a sounds: manillakoevert/-papier, etc. manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie manji (fie m%anj@ // fix stress and i sound: manjifiek/-e man (moe m%an // move default stress: manmoedig/-e/-heid @@ -2964,7 +2970,6 @@ ng (eeR Nx2 // diftongeer/gedistingeerde/rangeer and compounds ngees nx2e@s // split n/g: leuen-/span-/sportman-/wengees e) n (goeC n // split ng: lakengoed/-goeters and similar - n (_g N ng (ent Nx2 // kontingent/tangent and derivatives CA) nger N@r // compounds of vinger/slinger; hangertjie/hongersnood/langeraad/swangerskap/tengerste @) nges (_ N@s // banges/langes/dinges @@ -3268,6 +3273,7 @@ @) otomie (_N %o@t%um'i // fix o sounds and stress of medical terms: laparotomie, etc. @) otomie (ë %o@t%um'i: // fix o sounds and stress of plurals of medical terms: leukotomieë/nefrotomieë, etc. _) outo (@P4 @Utu // fix stress and o sound: outomaat/-mate/-maties/outomobiel, etc. + outo (psie %@UtO // fix stress and O sound: outopsie/-s and compounds out (okra %@Ut // to handle outokraat and derivatives oux 'u //in surnames like tredoux, leroux etc. _) o (va@ %o@ // move default stress: ovaal/ovale/ovaalvormig @@ -3609,6 +3615,7 @@ pale (stA p%al@ // fix stress and a sound: Palestina/Palestyn and derivatives pale (t p%alE // fix stress and a sound: palet/-te and compounds palin (dro p%al@n // fix stress and a sound: palindroom/-drome/-dromies + palissade p%al%isA:d@ // fix a and i sounds and stress: palissade and compounds _) palja (K palj''a // fix stress on -jas: (ge)paljas/paljasse/paljasagtig/-e pal (miet p%al // move default stress: palmiet and compounds panado p@nA:d@U: // fix stress and vowel sounds: panado/-'s @@ -3721,6 +3728,7 @@ per (so p@r // persoon/persone pers (om p&rs_ // fix e sound, pause: persombudsman/-ne and compounds perso (neel p%&rs%u // personeel and compounds + perspex pIrspEks // prevent English translation of compounds: perspexvenster/-ruit pervers p@rf&rs // pervers/perversie pervert p@rf&rt // fix stress and e sounds: pervert/-e and compounds runder) pes pEs // fix e sound: runderpes and compounds @@ -3991,6 +3999,7 @@ @@@) s (_S1 s // to correctly handle plural s i) s (_ s // exceptions to rule: @@@) s (_S1 s sahara sah'A:ra // fix stress and a sound: Sahara/-woestyn and similar compounds + saldanha s%aldan%a // Saldanha(baai) sangere (K s%aN@rE //sangeres and compounds: opera-/popsangeres o) s (_ s // exceptions to rule: @@@) s (_S1 s u) s (_ s // exceptions to rule: @@@) s (_S1 s @@ -4115,6 +4124,7 @@ slag (off slax2_ // short a sound, insert pause: misdaadslagoffer and similar compounds sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds sla (we slA: // fix stress and a sound: slawearbeid/-er, etc. + slawe (k slA:v@ // fix e sound: slawe(ketting/-kind(ers)/-kos slop (emmer slOp_ // fix o sound and insert pause: slopemmer/-s @) sering s'e@r@N // analisering/kategorisering @) ses (_ s@s // fix 2 slb. words ending in ses @@ -4211,6 +4221,7 @@ spesi (a sp%ES%i // spesiaal/spesiale/spesialis spesialis (A spESialis spesialis spESal'Is + spesialis (een spESal'Is_ // fix stress, paus: spesialiseenheid/-eenhede spesi (f sp%Es%I // spesifiek/spesifiseer spine (t sp%inE // move default stress: spinet/-te and compounds _) sub (a sWb_ // subagent/subartikel/subatomies, etc. @@ -4442,6 +4453,7 @@ struktu (rerAn str%Wkt%y // fix stress: (her)strukturering(skoste)/strukturerende, etc. studen (t st%ydEn // fix stress: student/regstudent/studentesentrum, etc. stu (de st%y // fix stress and e sound: bestuderend/bestudering + _) stuurdere (KK st%yrd@rE // fix stress and e sound: bestuurderes/-se/-sie styfge (@P6 st'eIfx2@ // fix e sound: styfgewen/-de @@ -4988,6 +5000,7 @@ verf (@ f&rf // verfkwas/-voorraad/-emmer and similar _) verf (lou f@rf // verflou/-ing _) verf (o f@rf // verfoei(lik)/verfomfaai/verfoes, etc.; see rule: verf + verf (raai f@rf // fix e sound and stress: verfraai(ing) verf (rom f@rf // verfrommel/-de/-ing; see rule: verf verf f&rf _) vergesog f'&:r;x2@sOx2 @@ -5088,6 +5101,7 @@ nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal Cod) w v // fix w sound: godwelgevallig/godweet/godwees k) w w + werk) week ve@k // fix last w sound: (vyf-/sesdag)werkweek k) w (erC v // fix w sound: wrakwerf/-werwe volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc. k) w (And v // fix w sound: buikwand/rukwinde @@ -5133,7 +5147,6 @@ yd) w v // fix w sound: sluittydwerk/(wa)wydwakker C) w (eerder v // fix w sound: insek-/muskiet-/reuk-/sweetweerder and similar s) w (eerder w // but: eed-/geesbe-/saamsweerder and similar - luk) wens ve~ns // fix w sound: gelukwens(brief...)/gelukwensing, etc. w (ese_ v //words ending in wese wed (ren vEt // fix e and d sounds: (perde)wedren and other compounds @C) w (eë v // fix w sound: duikweë/staatsweë/uitweë, etc. @@ -5246,11 +5259,13 @@ welbehaaglik v%&lb@hA:x2l@k // move default stress: welbehaaglik/-e/-er/-ste _) wel (edel v%&l_ // fix e sound and stress, insert pause: weledel/-e welf (_ v&lf // fix e sound: omwelf/oorwelf + _) wel (op v&l_ // fix e sound, pause: welopgevoede/-opgeleide, etc. wel (skape v%&l // move default stress: welskape/-nheid wel (spreken v%&l // move default stress: welsprekend/-e @) wendig v'End@x2 // inwendig/noodwendig/uitwendig &) wene (_ v@n@ // fix penultimate e sound: afgestorwene/-s/ingeskrewene/verdorwene/verhewene fees) wens ve~ns // fix w and e sounds: kersfeeswens/-e + luk) wens ve~ns // fix w sound: gelukwens(brief...)/gelukwensing, etc. A) wer (AA v@r // fix e sound: beyweraar/keweruitroeiing/nyweraar/oewereienaar ge) were ve@r@ // fix e sound in compounds ending in gewere werk (stelli v%&rk // fix stress: bewerkstellig and derivatives diff --git a/dictsource/de_list b/dictsource/de_list index 503937e2..247ce3b6 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -768,6 +768,6 @@ Neumexiko $2 Neuseeland $2 Rwanda rU'andA: Sri sr,i: -Tom tOm -Tim tIm +Tom tOm $only +Tim tIm $only diff --git a/dictsource/de_rules b/dictsource/de_rules index dbe9b8ed..9bd42c2b 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -315,7 +315,7 @@ _) deme de:mE demo (g de:mo: demo (k de:mo: - design _^_EN + design (_ d%IzaIn dge (_ _^_EN _) dia d,i:a _) diver d%i:vEr diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 86722dc8..867acb05 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -1,7 +1,7 @@ Phonemes which are used in the *_rules and *_list files -Dictionary af_dict 2011-11-22 +Dictionary af_dict 2013-09-22 & &: 3: @ @- @L @U a A: aI AI aU A~ E e: e@ @@ -124,7 +124,7 @@ r R R3 s S t T tS v w x z Z -Dictionary de_dict 2013-04-27 +Dictionary de_dict 2013-09-22 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-06-11 +Dictionary en_dict 2013-09-08 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -236,7 +236,7 @@ p2 r r2 s S t t2 t3 tS v z Z z2 z3 -Dictionary ga_dict 2013-05-18 +Dictionary ga_dict 2013-09-21 0 0# @ a a# A: aI aI# aU aU# e E E# e: eI i @@ -250,7 +250,7 @@ t t[ tS v w x X z Z -Dictionary grc_dict 2008-03-03 +Dictionary grc_dict 2013-07-25 a aI aU e E EI eU EU i o O oI OI OU u y @@ -288,7 +288,7 @@ Q q r r. s S s. t t# t. t.# v w x z -Dictionary hu_dict 2013-06-10 +Dictionary hu_dict 2013-09-21 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -513,7 +513,7 @@ r r. s S s. t t# t. t.# v w x z -Dictionary nl_dict 2013-06-11 +Dictionary nl_dict 2013-09-23 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -643,7 +643,7 @@ s S t t; tS ts v w x z Z -Dictionary sl_dict 2013-06-10 +Dictionary sl_dict 2013-07-02 @ @- a e E E# i o O o+ u y @@ -679,10 +679,10 @@ k l m n N p R s S s. S; sx t v w z -Dictionary sw_dict 2013-06-04 +Dictionary sw_dict 2013-06-22 -@- a a/ e i m- n- N- -o u +@- a e i m- n- N- o +u * : b d D f g h j J k l m n N n^ @@ -690,7 +690,7 @@ p Q R s S t T tS v w x z -Dictionary ta_dict 2013-05-18 +Dictionary ta_dict 2013-09-23 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -779,3 +779,31 @@ oi ong ou u ui yu b c d f g h j k l m n N p r s t tS v w z + + +Dictionary as_dict 2013-09-21 + +& a a~ e e~ i i~ l- +o O o: O~ o~ r- u u~ +V + +: b b# d d# d. d.# dZ +f g g# h H j J J# +k k# l m n N n. p +r r. s S t t# t. t.# +tS tS# v w ~ + + +Dictionary gu_dict 2013-09-17 + +@ @- @2 @3 a a: aI aU +a~ e E e: E: e~ E~ i +I i: i~ l- o O o: O: +O~ o~ u U u: u~ V + +* - : ; 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 diff --git a/dictsource/en_list b/dictsource/en_list index 39afce2d..d95786b6 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -16,7 +16,7 @@ // ?7 Scottish // ?8 Use full vowel, not schwa in some word endings -// $alt1 use strong ending (-an, -ance, -ative, -table, -inal, -ier) +// $alt1 use strong ending (-an, -ance, -ative, -table, -inal, -ier -ored) // $alt2 use weak ending (ard, ate, ery, ess, ile, men, on) // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] // $alt4 separate 'h', not 'th' @@ -422,6 +422,8 @@ _zh tS'aIni:z ֹ o ֻ u ּ d'agES +U+5c1 SInd0t_ +U+5c2 sInd0t_ // phonetic modifiers @@ -520,6 +522,7 @@ _90o n'aInti@ // ABBREVIATIONS //************** +aaa $abbrev $allcaps abc $abbrev ac $abbrev adf $abbrev @@ -717,6 +720,7 @@ adware 'adw,e@ adze adz aegis i:dZIs aerate e@r'eIt +aerogel e@roUdZEl aether i:T@ afar a#fA@ affirmation af3m'eIS@n @@ -835,6 +839,7 @@ apropos apr@p'oU appal a#pO:l apparatus ap@r'eIt@s ?3 apparatus ap@r'at@s +appellate a#pEl@t apprentice a#prEnt2Is approximate a#pr0ksIm@t $only approximate a#pr0ksImeIt $verb @@ -849,6 +854,7 @@ arcane $2 arch A@tS arches A@tSI#z archimedes A@kIm'i:di:z +archiso A@tS'aIsoU archway $1 arena a#ri:n@ argon A@g0n @@ -979,6 +985,7 @@ bleh blEh blockade bl0k'eId blouse blaUz bluest blu:@st +bluish blu:IS blurry bl3:rI ?5 blurry blVRrI boing bOIN @@ -1142,6 +1149,7 @@ cholesterol k@lEst@r0l chorizo tSOr'i:zoU christmas krIsm@s chromosome kroUm@soUm +chrysalis krIs@lIs ciao tSaU cigar sI2gA@ cigarette sIg@'rEt @@ -1159,7 +1167,8 @@ cleanse klEnz cleanser klEnz3 ?!3 clerk klA@k cliche kli:SeI -?3 cliche kli:S'eI +cliched kli:S'eId +?3 cliche kli:S'eI clientele $2 clitoris klIt3rI#s close kloUs $only @@ -1248,6 +1257,7 @@ consort $verb constitute $1 construct $1 $onlys construct $verb +consummate $1 contemplative $2 content $1 $onlys content $verb $past @@ -1272,7 +1282,7 @@ convict $2 $verb convolute k0nv@l'u:t coop ku:p cooper ku:p3 -coordinate koU'O:dI2neIt $verb +coordinate koU'O@dI2neIt $verb copier k0pi@3 copilot koUpaIl@t coral k0r@L @@ -1342,7 +1352,7 @@ declaration dEkl@'reIS@n decolletage deIk0lt'A:Z decor deIkO@ ?3 decor deIk'O@ -decorative dEkr@tIv +decorative dEk@r@tIv decoy di:kOI decry dI2kraI defect di:fEkt @@ -1395,6 +1405,7 @@ diameter daI'amI2t3 diaper daIp3 diaphanous daI'af@n@s diaspora daI'asp@r@ +dieback daIbak diehard daIhA@d dielectric daI@l'EktrIk diesel di:z@L @@ -1547,6 +1558,7 @@ evenings i:vnINz evit EvI2t // inevitable exalt Egz'0lt execute EksI2kju:t // not $2 +executable $3 exile $1 exodus Eks@d@s expedite Eksp@daIt // expedited @@ -1815,6 +1827,7 @@ iconbar aIk0nbA@ idly aIdlI ignoramus Igno@r'eIm@s illiterate $alt2 +imagery ImIdZri imagine I2madZI2n impedance Imp'i:d@ns imperative Imp'Er@tIv @@ -1894,6 +1907,7 @@ iris aIrIs iron aI3n irony aIr@nI isosceles aIs'0s@li:z +?3 issuance ISu:@ns ja jA: jagged dZagI#d @@ -1931,6 +1945,7 @@ kosher koUS3 kowtow kaUt2aU la ,la $only +la $abbrev $allcaps (la vie) la||v'i: laboratory la#b'0r@trI ?3 laboratory labr@tO:ri @@ -2022,6 +2037,7 @@ lunatic lu:n@tIk lunchroom lVntS||ru:m luxury lVkS3ri lychee li:tSi: +lyin laIIn macabre m@kA:br@ macadamia mak@d'eImi@ @@ -2376,6 +2392,7 @@ philistine fIlI2staIn phoenix fi:nIks photographer f@t'0gr@f@ photography f@t'0gr@fi +photolysis foUt'0l@sIs piano pI'anoU pecan pI#kA:n piecemeal p'i:sm,i:l @@ -2585,6 +2602,7 @@ reining reInIN reindeer reIndi@3 rekey r,i:k'i: relative rEl@tIv +relay ri:leI relic rElIk relish rElI2S rely rI2laI @@ -2706,9 +2724,12 @@ seabed si:bEd sealion si:laI@n seance seI0ns secant si:k@nt -seconded sEk'0ndI#d +seconded s@k0ndI#d +secondment s@k0ndm@nt secrecy si:kr@si secret si:kr@t +secrete sI2kri:t +secretion sI2kri:S@n secretive si:kr@tIv secretary sEkr@trI sedan sI2dan @@ -2717,6 +2738,7 @@ sega seIg@ segue sEgweI separate sEp@-r@t separate sEp3reIt $verb +semaphored $alt1 semen si:m@n ?3 semi sEmaI semibreve $1 @@ -2739,6 +2761,7 @@ severely sI2v'i@3lI $verbf sewn soUn sex sEks // sexism several sEvr@L +severest s@vi@r@st shallow SaloU shampoo $2 shepherd SEp@d @@ -2772,6 +2795,7 @@ singly sINglI $verbf sincerest sIns'i@r@st sinew sInju: sinus saIn@s +siphon $alt2 sir s,3: $only ?5 sir s,VR $only site saIt // for sited @@ -2806,7 +2830,6 @@ souvenir su:v@n'i@3 sorbet sO@beI soyabean sOI@bi:n spaghetti spa#gEti -spasm spas@m specific sp@sIfIk specimen spEsI2m@n spraycan spreIkan @@ -2980,6 +3003,7 @@ trophy troUfi troubadour tru:b@do@ truely tru:lI $verbf truest tru:@st +tryin traIIn tryst trIst tudor tju:d3 turntable $alt1 @@ -3003,6 +3027,7 @@ unable Vn'eIb@L unaware Vn@w'e@ uncle VNk@L undeny VndIn'aI +undercarriage $1 underground $1 $noun underling $1 underlings Vnd3lINz @@ -3082,7 +3107,10 @@ viola vaI'oUl@ violin $2 viral vaI3r@L virginal $alt1 +(vis à vis) vi:za#v'i: +(vis a vis) vi:za#v'i: visa vi:z@ +vitalis vaIt'alI#s vitamin vIt@mI#n ?3 vitamin vaIt@mI#n vitriol vItri:@l @@ -3231,6 +3259,7 @@ Alamo al@moU Albuquerque alb@k3:ki Algiers $2 Altura O:lt'U@r@ +?3 Amazon ama#z0n Amman a#m'A:n Andes andi:z Angeles andZ@li:s @@ -3273,6 +3302,7 @@ Budapest bu:d@p'Est Buenos bweIn0s Burundi bUr'Undi Brazil $alt3 +Brunei bru:n'aI Cadiz $alt3 Cairo kaIroU Calcutta $2 @@ -3426,6 +3456,7 @@ Nepal nEp'O:l Nevada nI2vA:d@ ?3 Nevada nI2vad@ Newfoundland nju:f@ndla#nd +Nineveh nInIv@ Noumea nu:m'eI@ Oahu oU'A:hu: Oklahoma oUkla#h'oUm@ @@ -3445,6 +3476,7 @@ Persia p3:Z@ Peru p@ru: Philippine fIlI2pi:n Philipine fIlI2pi:n // misspell +Phnom pn0m Polish poUlIS $capital $only Portugal po@tS@g@L Portuguese po@tS@g'i:z @@ -3508,6 +3540,7 @@ Ural ju:@r@L Utah ju:t2A: ?3 Utah ju:t2O Utrecht ju:trECt +Valencia $alt3 Vancouver $2 Vegas veIg@s Vermont $2 @@ -3563,7 +3596,7 @@ Angela andZ@l@ Angelika $2 Anita $alt3 Annamaria an@ma#r'i:@ -Anthony ant@ni +?!3 Anthony ant@ni Anton ant0n Aoife i:f@ Aoiffe i:f@ @@ -3616,9 +3649,11 @@ Connell k0n@l Connie k0ni Connor k0n3 Conrad $1 +Corinne k@ri:n Crichton kraIt@n Curtis k3:tI#s ?5 Curtis kVRtI#s +Cyrus saIr@s Dana deIn@ Daphne dafni Darryl dar@L @@ -3775,6 +3810,7 @@ Michele mI2SEl Michelle mI2SEl Miguel mi:Q'El Mildred mIldrI2d +Mimi mi:mi Mindy mIndi Minerva mI2n3:v@ Mirabel mIr@bEl @@ -3906,6 +3942,7 @@ Emory Em3ri Ferguson f3:g@s@n Fleming flEmIN Folger foUldZ3 +Gallagher gal@g3 Genghis dZENgIs Gibson gIbs@n Guinness gInIs diff --git a/dictsource/en_rules b/dictsource/en_rules index c3cdec4c..d470272e 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -600,7 +600,7 @@ b) al (d+ O:l b) al (k O:l f) al (k 0l - alkali ak@laI + alkali alk@laI b) all (K O:l &b) all (er_ O:l _c) al (e al @@ -1093,7 +1093,7 @@ _) as (trolog a#s _) as (trono a#s &) as (ty_ a#s - ass (ym as + _) as (ym eIs purch) as (e Is ph) ase (_ eIz r) ase (_ eIz @@ -1330,6 +1330,7 @@ be (see bI2 be (sie bI2 _) be (sto bI2 + _) bestse (ll bEsts'E _) beta b,i:t@ ?3 _) beta b,eIt@ _) be (th bE @@ -1514,7 +1515,7 @@ _ta) ch k ta) ch tS sta) ch S - e) ch (o k + _e) ch (o k bron) ch k ch (ute S ch (ure S @@ -1527,6 +1528,8 @@ _) co (con k,oU _) co (eCP2 k,oU _) coe (l si: + _) co (g k0 + _) cogno k0gn@ co (hab k%oU co (llab k@ co (llap k@ @@ -1744,6 +1747,7 @@ _) deni (a dI2naI deni (tri d%i:naI _) de (no dI2 + _) de (nu dI2 _) de (o d%i: _) de (p@ dI2 de (per d%i: @@ -1757,6 +1761,7 @@ de (reg d%i: de (rel dE de (riC dI2 + _) de (rAX dE de (rog dI2 de (rACatio dE _) des (@ dI2s @@ -2260,11 +2265,14 @@ &) ency (_ @ns%i ency (cli %EnsI k) en (d_ En + t) en (d_ En en (dA_ 'En _) en (d En _) en (da %En eg) en (d @n en (dea %En + en (der En + cal) en (der @n en (dous En _) endo EndoU @) en (do_ 'En @@ -2307,6 +2315,7 @@ en (ter En en (tert ,En enthra (l %EnTrO: + en (tia_+ 'En &) entice %EntaIs _) en (ti %En _c) enti EntI @@ -2407,6 +2416,7 @@ mb) er (_ 3 lin) er (_S1 3 lin) ers (_S2 3z + nc) er (_S1 3 er 3: er (A 3:r _) er (A I2r @@ -2560,7 +2570,8 @@ _) es (pl Es _) es (tab I2s es (tate I2s - @) esc (enC 'Es + @) esc (ent_ 'Es + @) esc (ence_ 'Es pr) es (ent Ez es (iA i:z es (ian_ 'i:z @@ -3024,6 +3035,7 @@ &) ia (_N =i|@ &) ia (_ =i@ @@) ia (_ =i@ + @) iae (_ =Ii: @) ian (cy I|@n l) iais I|eIz p) ia (no Ia @@ -3307,6 +3319,7 @@ _) in (flo In _) in (flu In _) in (fo_ In + _) info (t ,InfoU _) infra (P5 ,Infr@ _) infra (c %Infra in (ga_ 'IN @@ -3604,6 +3617,7 @@ _sp) it (e aIt cr) it (e_ It wr) ite aIt + it (ee_ aIt _s) it (e aIt _t) it (an aIt x) ite (_ aIt @@ -3994,6 +4008,7 @@ br) oa (d O: oar o@ oar (_ o@ + _h) o 0 cr) o (at oU X) o (ba oU t) o (bacc @ @@ -4443,7 +4458,7 @@ or (ig 0r or (ix 'O@r &) ored (_ 3d - h) ored (_S1 d + &) ored (_$w_alt1S1 d _f) ore (C O@ f) ore (clo %o@ f) ore (st 0rI @@ -4537,6 +4552,7 @@ hyp) ost 0st osure 'oUZ3 X) os (y oUz + @) os (y_ @s .group ou ou aU @@ -5005,6 +5021,7 @@ rrhea r'i@ rrhoea r'i@ _) ru (bL01 ru: + _) rule (@ ru:l _) run (a rVn _) run (o rVn &ant) ry (_S2 r%I @@ -5214,6 +5231,7 @@ A) sh (A_ =S &) ship (_S4 SIp &) ships (_S5 SIps + &) shipe (_ SIp &) shire (_S5 S3 //?3 &) shire (_S5 Si@ sia (_ =zi@ @@ -5238,6 +5256,7 @@ u) sin (_ z@n A) s (itiv z _) size (C@ saIz + s (mK z a) s (m z o) s (m z L07) s (mAn_ z @@ -5446,8 +5465,9 @@ &s) tian (_ tS@n _) tian tjan &) tial S@L - &s) tial tj@L + s) tial tj@L &) ti (ali SI + s) ti (ali tI i) tia (liL06 S@ &) tien S@n &) tience S@ns @@ -5691,6 +5711,7 @@ _) un (A_ ju:n _) unn %Vnn @) un (al 'ju:n + un (A_ 'u:n une (_ ju:n ?3 d) une (_ u:n j) un (A u:n @@ -5711,7 +5732,7 @@ _) uni ju:nI _) un (ide ,Vn _) un (inP2 ,Vn - _) un (il ,ju:n + _) uni (l ,ju:nI _) un (io ju:n _) un (iq %ju:n unit (e ju:n'aIt @@ -5803,6 +5824,7 @@ _) vehem vi@m _) vibra (t v%aIbreI ?3 _) vibra (t v'aIbreI + video vIdI2oU vivi (@ vIvI viv (_ vaIv @@ -6185,6 +6207,7 @@ ä E ë E ï i: + ó (n '0 ö 3: ör 3: ü u: diff --git a/dictsource/ga_list b/dictsource/ga_list index 1e5d314b..a81e5f90 100755 --- a/dictsource/ga_list +++ b/dictsource/ga_list @@ -1,13 +1,13 @@ // Irish Gaeilge dictionary // written by Ronan McGuirk // 2013 -// version 2.7 +// version 2.8.2 // Please send comments and suggestions to espeak.gaeilge@gmail.com // This file is UTF8 encoded // letters -// letter names, as they are spoken as a single character in text +// letter namesd, as they are spoken as a single character in text // precede by _ to distinguish from pronunciation as a language word _a eI @@ -135,9 +135,25 @@ _dpt pO#nk //delete +// old script +ċur x'Ur +ḃ b,i:b'u:ltS@ +ċ s,i:b'u:ltS@ +ḋ d,i:b'u:ltS@ +ḟ ,Efb'u:ltS@ +ġ dZ,i:b'u:ltS@ +ṁ ,Emb'ultS@ +ṗ p,i:b'u:ltS@ +ṫ t,i:b'u:ltS@ + + + + + // words a @ +ab @b abhaile @w'0l;E ach 0x $u ag Eg $verbf $u @@ -146,15 +162,17 @@ anam '0n@m aige @g'E air Er acu 0k'U -ar Er $u +ar Er arsa @rs@ agaibh 0g@Iv -agus 0g@s +agus 0g@s $u aisfhilleadh ,aS'Il;@ amach @m'0x amárach @m'A:r@x amuigh @mu1'I amháin @w'A:in +hamháin h@w'A:in + am aUm anaithnid '0nah@nIdZ anonn @naUn @@ -172,6 +190,8 @@ aschurtha '0sxUrh@ atá @t['A: $u baill bu1'i:l bhaill vu1'i:l +beadh b;'@X +bheadh v;'@X beidh bEg bhfuil w'Il bheas v'e:@s @@ -201,6 +221,7 @@ faic f@ak faigh faIg feadh fag fear f'ar +féin h'e:n gcathair g0h@r gan g0n $u gheall jaUl @@ -212,7 +233,9 @@ in In $u ina In@ $u ins Ins $u inniu Inj'u:v - irish _^_EN +iontach 'i:nt[@x +hiontach h'i:nt[@x + irish _^_EN is 'Is $u (is ea) IS'a isteach IstS'0x @@ -227,12 +250,14 @@ mhuigh vu1'i: mhama w'0m@ maith m'0 mhaith w'0 +mhaithe w'0h;E + mbeadh m;O#X mo mO# $u mura mUr@ $u ná nA: $u nigh ni: - níorbh ni:rv + níorbh ni:@r@vv $u nó nu: $u nollag n@l@g nolaig nO#lig @@ -247,7 +272,10 @@ rímhaith R'i:w0 (s é) S'e: (s í) S'i: san s@n - seo S@_ + san s'an $capital +seo SU_ $u +(sinn féin) S'In||f'e:n + tabhair t'u:@r (tiocfaidh ár lá) tSO#ki:|'A:r|l'A: diff --git a/dictsource/ga_rules b/dictsource/ga_rules index 1f19d38e..33bc1d48 100755 --- a/dictsource/ga_rules +++ b/dictsource/ga_rules @@ -1,8 +1,7 @@ - -// translation rules for Irish Gaeilge +f// translation rules for Irish Gaeilge // This file is UTF-8 encoded // written by Ronan McGuirk 2013 -// Version 2.7 +// Version 2.8.3 // Please send comments and suggestions to espeak.gaeilge@gmail.com @@ -23,7 +22,7 @@ .L12 á é ó eo ua // when followed by i .L13 oc omb .L14 río dún gnío // followed with mh -.L15 c ch f bhf m d dh g gc gh mh // aoi following +.L15 c ch f bhf fh m d dh g gc gh mh // aoi following .L16 b c bh ch gr ghr t th // for inn word ending .L17 l le li niste nn .L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar @@ -33,6 +32,20 @@ .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann .L23 ea eo i .L24 b mb bh g gh p ph bp m mh +.replace + ḃ bh + ċ ch +ḋ dh +ḟ fh +ġ gh +ṁ mh +ṗ ph +ṫ th + + + + + ċ ch .group a a 0# @@ -68,12 +81,14 @@ _) ath 0h a (rraige a ai (m_ @ - aí i: + aí 'i: + aí (_ %i: aoi @i: _) aoi i: ath) aoi (r 'i:@ r) aoi (nín 'e:@ aoicht (_ 'i:@xt[ + d) aoine (_ @i:n;%i: C) ao (C @e:@ _L24) ao (C w'e:@ C) ao (th_ @e: @@ -86,6 +101,7 @@ arraing arIng _) ath (@@P3 ,0_ _) athr '0hr + _) ard (@P3 A:rd[ .group á á A: @@ -118,9 +134,11 @@ _L04) ai (L18_++ u1'I//words like bain c) ai (t_ u1'I s) ai (bh E + sh) ai (bh E aighre aIr@ X) aigh 'aI - aigh aI# L04) aill (_ wi:l + aigh aI# + _L04) aill (_ wi:l aing (_ Ing ailleach '0l;@x ai (llimh++ '0 // words like Gaillimh @@ -150,6 +168,9 @@ _) beann (@ ba#n _) bheann (@ va#n _) bun (C@P3 b,Un +?1 _m_) bun (C@P3 ,Un + _) bpríomh (@P7 bR,i:v + .group c c k @@ -164,12 +185,19 @@ _) chabhr x'aUr _) ceann (C@P5 k;,aUn _) cheann (C@P6 C;,aUn + _) comh (@@P4 k,o: + _) chomh (@@P5 x,o: + comhar k'o:@r + chomhar x'o:@r + comhair k'o:@r + chomhair x'o:@r .group d d d[ // broad L01) d dZ // slender d (L22 dZ // slender d (L01 d; // slender + d (CL01 dZ i) d (i dZ ?1 _n_) d (@ dh Q // broad @@ -186,6 +214,8 @@ _) d (_'fh d d'fh (L01 d + + dhaoine Q@i:n;%i: i) dh (_ g a) dh (_ X o) dh (_ X @@ -195,6 +225,7 @@ dheartháir gr@h'A:r deirfiúr d;r@f'u:r dheirfiúr g;r@f'u:r + domhan d[aU@n _) do (Ch@@P2 d[,U_ _) dí (C@@P2 d,i: dícheall d;'i:Ca#l @@ -220,6 +251,7 @@ d) eo (ch O# dh) eo (ch O# _) eo (ch O# + _h) eo (ch O# s) eo (_ @ @@ -242,7 +274,7 @@ ea (ltaine aU g) ea (ll aU l) eamh (n aU - dr) ea (m aU + Kdr) ea (m aU X) ea (ch 0 _L04) ea (g @ _L04) ea (dh_ @ @@ -250,6 +282,7 @@ L04) eaga (_ @g@ eaghl aIl eabhra aUr@ // words like Feabhra + eabhs aUs eanbhean 'an@v,an eadhb aIb @@ -262,6 +295,7 @@ fh (L22 ; // slender @) f (L06_ h fios fIs + faoi fw'i: fhios Is _) fo (C@@P2 f,U _) fogh f'aU @@ -269,13 +303,14 @@ _) foc (@++ fOk ?1 _bh_) f (@ ?1 _bh_) f (L22 ; + _) fíor (@P4 f,i:r .group g g g // broad g (L01 g; // slender ?1 _n_) g (@ - _) gh Q" + gh Q" _) gh (L01 Q"j _) gc g // urú broad _) gc (L01 g; // urú slender @@ -287,8 +322,11 @@ gh (n X@ gheobh j'o: gabh gaU - _) gearr (C@P5 g;,aR - _) ghearr (C@P6 Q"j,aR + ghabh Q"aU + _) gearr (C@@P5 g;,aR + _) ghearr (C@@P6 Q"j,aR + _) gnáth (@@P5 g@n,A: + _) ghnáth (@P6 X@n,A: .group h h h // silent @@ -301,6 +339,8 @@ iu U ia (tha i: io O# + iond O#n@d[ + ioml O#m@l io (dá I _) io (nadh u:// words like ionadh s) io (mb I @@ -315,6 +355,8 @@ iú u: m) i (d_ i: // verb ending _) in (@@P2 ,In_ + _) inn In + _) in (tinn 'In _) ionad (C@@P5 ,Ona#d[ .group í @@ -324,6 +366,7 @@ í (_ i: ín (_ i:n ío i:@ + íle (_ 'i:lE .group l @@ -334,6 +377,7 @@ ll (L23 l; l (g l@ l (b l@ + L01) l (b l;@ ll (b l _) lorg (@@P4 l,Or@g _) lán (@@P3 l,A:n @@ -352,7 +396,9 @@ _) mh (n v@ léir) mheas vas r) m @m // words like gorm + r) m (L20 @m; _) mear (@@P4 m,ar + _) mí (C@@P2 m,i: .group n n n // broad @@ -360,8 +406,8 @@ ?1 _) n (_L01 n; _) nd n // urú _) nd (L01 n; // urú slender - _) ng N - _) ng (L01 N; + ng N + ng (L01 N; ?1 _) n (_d n // urú ?1 _) n (_dL01 n; // urú slender ?1 _) n (_g N @@ -386,19 +432,22 @@ _C) omh o: _CC) omh o: omha o:@ + omhai o:@ o (ll_ aU C) o (nn_ aU r) o (nn_ O# C) ogh aU - omhan (_ aU@n + omhain (_ aUIn odha aU opaic @pIk C) odh (_ o: odl (a O#l oí i: - + o (rd_ o: + o (ird_ o: + _) oll (@@P3 ,Ol .group ó ó 'o: @@ -426,14 +475,16 @@ oi (mis @ ois (++ O#S n) ois (_++ IS - oill w'i:l + oill (+ w'i:l _) oi (leá 'I oidh aI oir (_ 'ERR + l) oic (_ Ek _sc) oi (r O oigh (ea aI oighn aIXn - + oinse (_ @i:nS@ + oi (nte @i: .group p p p // broad @@ -441,12 +492,15 @@ p (L22 p; // slender ph (L20 f; // slender ?1 _b_) p (@ + _) príomh (@P6 pR,i:v + _) phríomh (@P7 fR,i:v + .group r r r // broad L01) r R // slender - _) r (L01 R + r (L01 R L12i) r (e_ Z L12i) r (t_ Z rr R @@ -473,6 +527,8 @@ s (lL01 S _') s (_ s // 's in poems etc _) sain (@P4 s,an + _) sean (@@P4 S,an + .group t t t[ // broad @@ -496,11 +552,14 @@ ao) th (_ thne (_ h@nE A) th (_ // silent th at word end + c) th (e_ ih // guta cúnta + K) th (as_ @h // guta cúnta .group u u U# ua u@ + ua (_ u:@ uai u@ uai (g ui uai (d ui @@ -520,8 +579,12 @@ g) ui (gh_ @i: gh) ui (gh_ @i: uí i: + uíomh 'i:@vv + uachai 'ux@ _) uimhir (C@P6 ,IvIR + uibhne (_ @'i:n;E + uibhneach (_ @'i:n@x .group ú @@ -531,6 +594,7 @@ úi u: úinn (_ u:IN úibh (_ u:Iv + úi (g u:i diff --git a/dictsource/grc_list b/dictsource/grc_list index 38ecac38..3af2a11d 100644 --- a/dictsource/grc_list +++ b/dictsource/grc_list @@ -2,12 +2,12 @@ ?1 _0lang _^_EN // speak numbers in English // articles -hο $u // ὁ +ɦο $u // ὁ τὼ $u // τώ -οhι $u // οἱ -hη $u // ἡ +οɦι $u // οἱ +ɦη $u // ἡ τὰ $u // τά -αhι $u // αἱ +αɦι $u // αἱ τὸ $u // τό τοὺ $u // τοῦ diff --git a/dictsource/grc_rules b/dictsource/grc_rules index 3e7b3e26..b69cbe1f 100644 --- a/dictsource/grc_rules +++ b/dictsource/grc_rules @@ -3,7 +3,7 @@ // Preliminary character substitution: // Convert tonos, oxia and perispomeni to varia // Remove psili (soft breathing) -// Convert dasia accent to a separate prefix character ("h") +// Convert dasia accent to a separate prefix character ("ɦ") NOTE: using U+0266 because it's above eSpeak's Latin character limit of 0x250. // Remove iota subscripts // Replace Latin characters by same-shape Greek characters @@ -61,32 +61,32 @@ w ω // (long o; not standard transliteration but may be easier to type ᾷ ᾲ ἀ α -ἁ hα +ἁ ɦα ἂ ὰ -ἃ hὰ +ἃ ɦὰ ἄ ὰ -ἅ hὰ +ἅ ɦὰ ἆ ὰ -ἇ hὰ +ἇ ɦὰ ᾀ ᾳ -ᾁ hᾳ +ᾁ ɦᾳ ᾂ ᾲ -ᾃ hᾲ +ᾃ ɦᾲ ᾄ ᾲ -ᾅ hᾲ +ᾅ ɦᾲ ᾆ ᾲ -ᾇ hᾲ +ᾇ ɦᾲ // epsilon έ ὲ έ ὲ ἐ ε -ἑ hε +ἑ ɦε ἒ ὲ -ἓ hὲ +ἓ ɦὲ ἔ ὲ -ἕ hὲ +ἕ ɦὲ // eta ή ὴ @@ -96,22 +96,22 @@ w ω // (long o; not standard transliteration but may be easier to type ῇ ῂ ἠ η -ἡ hη +ἡ ɦη ἢ ὴ -ἣ hὴ +ἣ ɦὴ ἤ ὴ -ἥ hὴ +ἥ ɦὴ ἦ ὴ -ἧ hὴ +ἧ ɦὴ ᾐ ῃ -ᾑ hῃ +ᾑ ɦῃ ᾒ ῂ -ᾓ hῂ +ᾓ ɦῂ ᾔ ῂ -ᾕ hῂ +ᾕ ɦῂ ᾖ ῂ -ᾗ hῂ +ᾗ ɦῂ //iota ί ὶ @@ -119,13 +119,13 @@ w ω // (long o; not standard transliteration but may be easier to type ῖ ὶ ἰ ι -ἱ hι +ἱ ɦι ἲ ὶ -ἳ hὶ +ἳ ɦὶ ἴ ὶ -ἵ hὶ +ἵ ɦὶ ἶ ὶ -ἷ hὶ +ἷ ɦὶ ΐ ῒ ῗ ῒ @@ -134,11 +134,11 @@ w ω // (long o; not standard transliteration but may be easier to type ό ὸ ό ὸ ὀ ο -ὁ hο +ὁ ɦο ὂ ὸ -ὃ hὸ +ὃ ɦὸ ὄ ὸ -ὅ hὸ +ὅ ɦὸ // upsilon ύ ὺ @@ -146,13 +146,13 @@ w ω // (long o; not standard transliteration but may be easier to type ῦ ὺ ὐ υ -ὑ hυ +ὑ ɦυ ὒ ὺ -ὓ hὺ +ὓ ɦὺ ὔ ὺ -ὕ hὺ +ὕ ɦὺ ὖ ὺ -ὗ hὺ +ὗ ɦὺ ΰ ῢ ῧ ῢ @@ -165,26 +165,26 @@ w ω // (long o; not standard transliteration but may be easier to type ῷ ῲ ὠ ω -ὡ hω +ὡ ɦω ὢ ὼ -ὣ hὼ +ὣ ɦὼ ὤ ὼ -ὥ hὼ +ὥ ɦὼ ὦ ὼ -ὧ hὼ +ὧ ɦὼ ᾠ ῳ -ᾡ hῳ +ᾡ ɦῳ ᾢ ῲ -ᾣ hῲ +ᾣ ɦῲ ᾤ ῲ -ᾥ hῲ +ᾥ ɦῲ ᾦ ῲ -ᾧ hῲ +ᾧ ɦῲ // rho ῤ ρ -ῥ hρ +ῥ ɦρ .group α @@ -193,10 +193,10 @@ w ω // (long o; not standard transliteration but may be easier to type αὶ 'aI αυ aU αὺ 'aU - αhι haI - αhὶ 'haI - αhυ haU - αhὺ 'haU + αɦι haI + αɦὶ 'haI + αɦυ haU + αɦὺ 'haU .group β β b @@ -216,10 +216,10 @@ w ω // (long o; not standard transliteration but may be easier to type εὶ 'e: ευ eU εὺ 'eU - εhι he: - εhὶ 'he: - εhυ heU - εhὺ 'heU + εɦι he: + εɦὶ 'he: + εɦυ heU + εɦὺ 'heU .group ζ ζ z @@ -231,10 +231,10 @@ w ω // (long o; not standard transliteration but may be easier to type ηὶ 'EI: ηυ EU: ηὺ 'EU: - ηhι hEI: - ηhὶ 'hEI: - ηhυ hEU: - ηhὺ 'hEU: + ηɦι hEI: + ηɦὶ 'hEI: + ηɦυ hEU: + ηɦὺ 'hEU: .group θ θ T @@ -274,10 +274,10 @@ w ω // (long o; not standard transliteration but may be easier to type οὶ 'oI ου u: οὺ 'u: - οhι hoI - οhὶ 'hoI - οhυ hu: - οhὺ 'hu: + οɦι hoI + οɦὶ 'hoI + οɦυ hu: + οɦὺ 'hu: .group π π p @@ -303,15 +303,15 @@ w ω // (long o; not standard transliteration but may be easier to type υ y υι yI υὶ 'yI - υhι hyI - υhὶ 'hyI + υɦι hyI + υɦὶ 'hyI .group ϋ ϋ y ϋι yI ϋὶ 'yI - ϋhι hyI - ϋhὶ 'hyI + ϋɦι hyI + ϋɦὶ 'hyI .group φ φ f @@ -331,15 +331,15 @@ w ω // (long o; not standard transliteration but may be easier to type ωὶ 'OI: ωυ OU: ωὺ 'OU: - ωhι hOI: - ωhὶ 'hOI: - ωhυ hOU: - ωhὺ 'hOU: + ωɦι hOI: + ωɦὶ 'hOI: + ωɦυ hOU: + ωɦὺ 'hOU: -.group h // dasia (rough breathing) - h h +.group ɦ // dasia (rough breathing) + ɦ h // Latin letters to equivalent Greek sounds (plus 'q = η' 'w = ω' @@ -366,6 +366,9 @@ w ω // (long o; not standard transliteration but may be easier to type g g gg Ng +.group h + h h + .group i i i diff --git a/dictsource/hu_list b/dictsource/hu_list index 269dbdf2..7377f8ee 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -411,7 +411,7 @@ _tld tildE _#9 tAb _#32 s'o:kYz _cap n'AJ_| -_?? kAR2AktEr // unknown characters (change this) +_?? kAR2AktER2 // unknown characters (change this) // Abbreviations @@ -4255,7 +4255,7 @@ belőniük $unstressend árban $unstressend (boltok ajánlatai) boltok_'||Aja:nlAtAi $unstressend valaki $unstressend -(kellene biztosítani) kEl:Ene_||bistosi:tAni $unstressend +(kellene biztosítani) kEl:EnE_||bistoSi:tAni $unstressend (már lehetséges) ma:R2_||lEhEtS:e:gES $unstressend (is támogatja) iS_||ta:mogAc:A $unstressend (lehet használni) lEhEt_||hAsna:lni $unstressend diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 82cf4a52..9d30a444 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -175,10 +175,37 @@ udvaron) c (ser ts licen) ccs ts|tS nyol) c (csat ts pokró) c (sá ts -barká) cs (zen tS -kalapá) cs (zon tS -_kapol) cs tS -lán) c (sor ts + barká) cs (zen tS +kalapá) cs (zon tS +_kapol) cs tS + lán) c (sor ts + daró) c (cs ts +oroszlán) cs (or tS +harmin) c (sor ts + he) cc (sajt ts + ccsz ts|s + ifjon) c (csap ts + kapo) cs (zár tS + ketre) c (cs ts + ketre) c (so ts + kul) cs (zen tS + lán) c (seb ts + lidér) c (cs ts + mala) c (cs ts + matra) c (sor ts + nyol) c (sark ts + nyol) c (sej ts + nyol) c (sug ts + párdu) c (cs ts + kar) c (sor ts +szendvi) cs (zab tS + tán) cs (i tS + tanon) c (cs ts + titán) cs tS + torná) c (sor ts +ujjper) c (cs ts + ccsz ts|s + _ér) c (saru ts .group ch anar) ch (i h @@ -216,8 +243,36 @@ diszti) ch (on h almana) ch h kronoszti) ch (on h arca) ch (on h -sza) ch (arid h -szto) ch (aszti h + sza) ch (arid h + szto) ch (aszti h + a) ch (aem h + a) ch (át h + a) ch (illes h + ti) ch (on h + arca) ch (on h + ba) ch h +blaskovi) ch tS +?1 chip tSip +?1 damjani) ch tS + eu) ch (arisz h + eunu) ch h + fa) ch h + fis) ch (er + forgá) ch tS +grassalkovi) ch tS + ri) ch (ter C +jurisi) chcs tS: +jurisi) ch tS +keglevi) ch tS + s) ch (illing + le) ch (ner h + mala) ch (it h +metterni) ch C + pé) ch (y tS +pejacsevi) ch tS + kra) ch h + tri) ch (in h + e) ch (ó h .group d d d @@ -469,23 +524,31 @@ shetlan) d (szige d své) d (zseb d csalá) d (szer d szaba) d (sajt d -szomszé) d (jog d -elő) d (szerv d -árká) d (szerű d -csalá) d (sztor d -harminca) d (sze d -hol) d (szond d -kó) d (szöve d -lipi) d (szint d -máso) d (szava d -_ná) d (szeg d -nyárá) d (szere d -rú) d (szerű d -tize) d (szed d -_va) d (szerb d -va) d (tyúk d -bőrön) d (sze d -stran) d (szett d +szomszé) d (jog d + elő) d (szerv d + árká) d (szerű d + csalá) d (sztor d +harminca) d (sze d + hol) d (szond d + kó) d (szöve d + lipi) d (szint d + máso) d (szava d + _ná) d (szeg d + nyárá) d (szere d + rú) d (szerű d + tize) d (szed d + _va) d (szerb d + va) d (tyúk d + bőrön) d (sze d + stran) d (szett d + pa) d (szomszé d + akkor) d (játsz d + harma) d (szándék d + rekor) d (szer d + rekor) d (szezo d + va) d (szállí d + cső) d (szerű d + hol) d (szputnyik d .group dz fogó) dz (kod ts @@ -542,8 +605,8 @@ burkoló) dz z 000_-) el (_ REl // double R for 1000-el 000000_-) el (_ El // ... but not 1000000-el _) ehhez EhEz - egyezség EJ:ESSe:g - egyezségg EJ:ESSe:g: + egyezség EJ:ESSe:g + egyezségg EJ:ESSe:g: .group é é e: @@ -609,7 +672,7 @@ burkoló) dz z fo) g (gyűrű g fo) g (gyö g kuplun) g (gyár g - bélye) g (gyűjt g + bélye) g (gy g jo) g (gyakor g dö) g (gyapjú g fo) g (gyalu g @@ -625,7 +688,6 @@ ritkasá) g (gyűjt g é) gh (ajla kh pro) g (gyak g arcüre) g (gyulladás g - bete) g (gyógyász g szöve) g (gyűjt g ta) g (gyűl g gu) gg (ol g @@ -675,19 +737,72 @@ doppin) g (gy g baromsá) g (gy g tehetsé) g (gy g bete) g (gy g -egysé) g (gy g -átla) g (gy g -szőnye) g (gyár g -hűsé) g (gy g -_ma) g (gyűjt g -népessé) g (gy g -öröksé) g (gy g -_sze) g (gyár g -szö) g (gyors g -tisztsé) g (gy g -szúnyo) g (gy g -szala) g (gyakor g -szala) g (gyűjt g + egysé) g (gy g + átla) g (gy g +szőnye) g (gy g + hűsé) g (gy g + _ma) g (gyűjt g +népessé) g (gy g +öröksé) g (gy g + _sze) g (gyár g + szö) g (gyors g +tisztsé) g (gy g +szúnyo) g (gy g + szala) g (gyakor g + szala) g (gyűjt g +azonossá) g (gy g +barlan) g (gy g +betegsé) g (gy g +bizottsá) g (gy g +boldogsá) g (gy g +bumerán) g (gy g +szövetsé) g (gy g + cé) g (gyil g + cé) g (gyűr g +cukisá) g (gy g + me) ggy (önte J: + dö) g (gyár g +dömpin) g (gy g +dramatur) g (gy g +egyvele) g (gy g +ellensé) g (gy g +érdekessé) g (gy g + fére) g (gy g +feszültsé) g (gy g + gyalo) g (gy g + sere) g (gy g +hangszala) g (gy g + haran) g (gy g +híressé) g (gy g + hólya) g (gy g + horo) g (gy g +hülyesé) g (gy g + in) g (gyár g + jé) g (gyűr g + jo) g (gyűjt g + jo) g (gyüm g +közönsé) g (gy g + lé) g (gyár g + ma) g (gyár g + vé) g (gyant g + mássá) g (gy g + me) ggy (asz J: + me) ggy (ill J: + me) ggy (ültet J: + szala) g (gyár g + anya) g (gy g +nemzetsé) g (gy g + ördö) g (gy g +részle) g (gy g + réte) g (gy g + ru) g (gyant g +sebessé) g (gy g + szlen) g (gy g + ta) g (gyül g +tisztasá) g (gy g + újsá) g (gy g + végta) g (gy g + ele) ggy (el J: .group gy gy J @@ -813,8 +928,8 @@ _huszone) gy (e J: száze) gy (edik J: védje) gy (straté J na) gy (sor J -e) gy (esít J: -ve) gy (érték J + e) gy (esít J: + ve) gy (érték J .group h h h @@ -870,8 +985,8 @@ progressz) í (ve i: sz) í (verő i: sz) í (vevő i: expressz) í (v i: -recessz) í (ve i: -v) í (zener i: +recessz) í (ve i: + v) í (zener i: .group j j j @@ -924,7 +1039,7 @@ v) í (zener i: k (-k k: //for example marok-körző word need cut one k letter and need spokening k: phoneme only k-) k //silent with second k phoneme _játé) kk (liens k: //exceptiof for kk (L01 rule -községg kYS:e:g: + községg kYS:e:g: .group l @@ -976,6 +1091,9 @@ keresztü) l (j l lly (-L01 j //if have consonants after - character, need spokening one j letter with first part ll (-L01 l bagate) ll (iz l + fü) l (lyuk l + levé) l (lyuk l + nyé) l (lyuk l .group m m m @@ -1087,16 +1205,50 @@ teljesítmé) ny (j n^ n'Em _!'Ellt,e:,ES porcelá) n (ny n -részvé) ny (jegy n^ -agyo) n (játsz n -kölcsö) n (nyak n -dohá) ny (jöv n^ -elektro) n (ny n -magá) n (nyar n -igé) ny (jog n^ -szé) n (nyom n -verse) ny (játsz n^ -ár) ny (játé n^ +részvé) ny (jegy n^ + agyo) n (játsz n +kölcsö) n (nyak n + dohá) ny (jöv n^ +elektro) n (ny n + magá) n (nyar n + igé) ny (jog n^ + szé) n (nyom n + verse) ny (játsz n^ + ár) ny (játé n^ + arzé) n ((ny n + bá) n (nyíre n + benzi) n (ny n + nny (elv n|n^ + kö) nny (elv n^: + +elektro) n (ny n + szé) n (nyom n + haszo) n (ny n +ingatla) n (nyil n + io) n (ny n + karbo) n (ny n + kazá) n (ny n + kokai) n (ny n +kölcsö) n (ny n + kupo) n (ny n + vászo) n (ny n +marato) n (ny n + mediá) n (ny n +telefo) n (ny n + morfi) n (ny n + mikro) n (ny n +neutro) n (ny n + oxigé) n (ny n + _ö) n (nyug n +panteo) n (ny n + sablo) n (ny n +skanze) n (ny n +szentivá) n (ny n + szé) n (nyom n + ta) n (nyomd n + vagyo) n (ny n + külö) n (jára n + szí) n (jeles n .group o o o @@ -1242,10 +1394,29 @@ feldolgozá) s S _ki) s (szín S kérdé) s S végzé) s S -blue) s (zen S -fúvó) s (zené S -települé) s (zón S -adá) s (zár S + blue) s (zen S + fúvó) s (zené S +települé) s (zón S + _adá) s (zár S +basszu) s (zen S + blue) s (zon S +egyene) s (zár S + fázi) s (zár S +konfliktu) s (zón S +kortár) s (zen S + kóru) s (zen S +mikulá) s (zacs S +mulató) s (zen S + orvo) s (zseb S + ő) s (száj S + ő) s (szám S + ő) s (szava S + ő) s (szent S + ő) s (szó S + rugó) s (zárj S + szeku) s (zen S + töré) s (zón S +verbunko) s (zen S .group ss ssz ss2 @@ -1765,7 +1936,7 @@ kattintá) ssz Ss közlekedé) ssz Ss laká) ssz Ss légzé) ssz Ss - _le) ssz (ab Ss + le) ssz (ab Ss meglepeté) ssz Ss nyila) ssz Ss pszichológu) ssz Ss @@ -1805,43 +1976,317 @@ születé) ssz (ám S|s zsarolá) ssz (er S|s dőlé) ssz (ab S|s települé) ssz (isz Ss -vallá) ssz Ss -folyá) ssz (er Ss -_katyva) ssz s: -mitugrá) ssz (al s: -basszu) ssz Ss -buká) ssz Ss -erőlködé) ssz Ss -szarva) ssz Ss -ricinu) ssz Ss -települé) ssz Ss -utalá) ssz Ss -erősíté) ssz Ss -fázi) ssz Ss -fejleszté) ssz Ss -fúvó) ssz Ss -autó) ssz Ss -nyomá) ssz Ss -hatá) ssz Ss -effektu) ssz Ss -pulzu) ssz Ss -jelenté) ssz Ss -váltá) ssz Ss -mondá) ssz Ss -fázá) ssz Ss -ve) ssz (ők s: -_ő) ssz (láv Ss -periódu) ssz Ss -pólu) ssz Ss -rová) ssz Ss -utasítá) ssz Ss -tudá) ssz Ss -turizmu) ssz Ss -hajó) ssz (leng Ss -vezeté) ssz Ss -_vonó) ssz (iv Ss -ülé) ssz Ss -motoro) ssz Ss + vallá) ssz Ss + folyá) ssz (er Ss +_katyva) ssz s: +mitugrá) ssz (al s: +basszu) ssz Ss + buká) ssz Ss +erőlködé) ssz Ss +szarva) ssz Ss +ricinu) ssz Ss +települé) ssz Ss + utalá) ssz Ss +erősíté) ssz Ss + fázi) ssz Ss +fejleszté) ssz Ss + fúvó) ssz Ss + autó) ssz Ss + nyomá) ssz Ss + hatá) ssz Ss +effektu) ssz Ss + pulzu) ssz Ss +jelenté) ssz Ss + váltá) ssz Ss + mondá) ssz Ss + fázá) ssz Ss + ve) ssz (ők s: + _ő) ssz (láv Ss +periódu) ssz Ss + pólu) ssz Ss + rová) ssz Ss +utasítá) ssz Ss + tudá) ssz Ss +turizmu) ssz Ss + hajó) ssz (leng Ss +vezeté) ssz Ss + _vonó) ssz (iv Ss + ülé) ssz Ss +motoro) ssz Ss + adá) ssz Ss + adó) ssz Ss +aktivitá) ssz Ss +akusztiku) ssz Ss + arco) ssz Ss +alkotá) ssz Ss +állomá) ssz Ss + típu) ssz Ss +analízi) ssz Ss + anyó) ssz Ss +áramlá) ssz Ss +emelkedé) ssz Ss + árré) ssz Ss +árveré) ssz Ss +áttöré) ssz Ss +autizmu) ssz Ss +autoritá) ssz Ss +metszé) ssz Ss +mutatkozá) ssz Ss + blue) ssz (al s: + blue) ssz Ss +bombázá) ssz Ss +bukfencezé) ssz Ss + bunyó) ssz Ss +büfögé) ssz Ss + carie) ssz Ss + ciklu) ssz Ss + cipru) ssz Ss +ciripelé) ssz Ss + citru) ssz Ss +csevegé) ssz Ss +csicsergé) ssz Ss +diakónu) ssz Ss +díjszabá) ssz Ss +dinamiku) ssz Ss +dobolá) ssz Ss + dózi) ssz Ss +dzsidá) ssz Ss + egymá) ssz Ss +elbeszélé) ssz Ss +elektroniku) ssz Ss +ellátá) ssz Ss +eltolá) ssz Ss +emigrán) ssz Ss + éneke) ssz Ss +epilógu) ssz Ss + építé) ssz (ab Ss +erőforrá) ssz Ss +erszénye) ssz Ss +érvelé) ssz Ss + esé) ssz Ss +észlelé) ssz Ss + evező) ssz Ss +evolven) ssz Ss + fagyá) ssz Ss + fá) ssz (er Ss + dísze) ssz Ss +fejlődé) ssz Ss +fékezé) ssz Ss +lángolá) ssz Ss +feltevé) ssz Ss +felvoná) ssz Ss + féti) ssz Ss + foga) ssz Ss +fordítá) ssz Ss + fotó) ssz Ss +földmíve) ssz Ss +földműve) ssz Ss + rengé) ssz Ss + főzé) ssz Ss +fuvaro) ssz Ss + hú) ssz (er Ss +gerjeszté) ssz Ss +gesztu) ssz Ss + szűré) ssz Ss + gulyá) ssz Ss +gyártá) ssz Ss +gyülekezé) ssz Ss + gyűlé) ssz Ss + hajtá) ssz Ss +hangzá) ssz Ss +hányado) ssz Ss +háztartá) ssz Ss + hente) ssz Ss +hitelesíté) ssz Ss +hivatá) ssz Ss + horga) ssz Ss +horkolá) ssz Ss + hú) ssz (ál Ss + hú) ssz (ekt Ss + hú) ssz (eml Ss + hú) ssz (int Ss + hú) ssz (örny Ss + hú) ssz (üksé Ss + hűté) ssz Ss +identitá) ssz Ss +igazgatá) ssz Ss +inciden) ssz Ss +indítá) ssz Ss +intriku) ssz Ss + írá) ssz Ss +játéko) ssz Ss +jelölé) ssz Ss + jézu) ssz Ss + júdá) ssz Ss + kaka) ssz Ss +kántálá) ssz Ss +kapacitá) ssz Ss +kapitalizmu) ssz Ss +karbantartá) ssz Ss +kárpito) ssz Ss + ver) ssz (er Ss +kerékpáro) ssz Ss + döfé) ssz Ss + ké) ssz (án Ss + ké) ssz (ár Ss + ké) ssz (er Ss + kette) ssz Ss +kézműve) ssz Ss +kidolgozá) ssz Ss +kifejezé) ssz Ss + ki) ssz (eke Ss + ro) ssz (abb s: +konfliktu) ssz Ss +konstan) ssz Ss +kontinen) ssz Ss + kóro) ssz (en Ss +kortár) ssz Ss + kóru) ssz Ss + _ko) ssz (er Ss + köle) ssz Ss +könyve) ssz (é s: +könyvtáro) ssz Ss + körö) ssz (e Ss + kőrö) ssz (eg Ss +kreativitá) ssz Ss + krízi) ssz Ss +kubiko) ssz Ss +kulturáli) ssz Ss + kurzu) ssz Ss +kutatá) ssz Ss +labirintu) ssz Ss +lakato) ssz Ss + lángo) ssz Ss + ömlé) ssz Ss +lebegé) ssz Ss +leképezé) ssz Ss + nyúlá) ssz Ss +rohaná) ssz Ss +levelezé) ssz Ss + fo) ssz (ín Ss +libbené) ssz Ss +likviditá) ssz Ss +lobbaná) ssz Ss + lövé) ssz (ám Ss +lövöldözé) ssz Ss + maga) ssz (int Ss +magatartá) ssz Ss + mágu) ssz Ss + érzé) ssz Ss +jegyzé) ssz (er Ss + lepé) ssz (er Ss +művelé) ssz Ss +megoldá) ssz Ss +rendelé) ssz Ss +megtorlá) ssz Ss + méhka) ssz (er Ss +mellka) ssz Ss + mentő) ssz Ss +mérgezé) ssz Ss +mestersége) ssz Ss +meteorológu) ssz Ss + mósu) ssz (er Ss + mután) ssz Ss +működé) ssz Ss + náda) ssz Ss + négye) ssz Ss +nyaralá) ssz Ss + nyögé) ssz Ss +oktatá) ssz Ss +olvasá) ssz Ss + órá) ssz Ss +orgazmu) ssz Ss +gyilko) ssz Ss + orvo) ssz Ss + ölelé) ssz Ss +ellenőrzé) ssz Ss +önkénte) ssz Ss +öntözé) ssz Ss +összeomlá) ssz Ss + ötvö) ssz Ss + pálo) ssz (en Ss + lámpá) ssz Ss +pazarlá) ssz Ss +pedagógu) ssz Ss + pesti) ssz Ss +pirami) ssz Ss + postá) ssz Ss +pörsené) ssz Ss + pré) ssz (ak Ss + prímá) ssz Ss +prioritá) ssz Ss +próbálkozá) ssz Ss + ré) ssz (ele Ss +részesedé) ssz Ss +reziden) ssz Ss + rítu) ssz Ss +robbaná) ssz Ss +robbantá) ssz Ss +röfögé) ssz Ss +rögtönzé) ssz Ss + rugó) ssz Ss +sakkozá) ssz Ss + sa) ssz (ikl Ss + sa) ssz (imb Ss + sa) ssz (obr Ss + sa) ssz (obor Ss +sercegé) ssz Ss + _sor) ssz (ab Ss + sörha) ssz Ss + száza) ssz Ss + szedé) ssz Ss + széle) ssz Ss +játszá) ssz Ss +szintetiku) ssz Ss +dobbaná) ssz Ss +szociáli) ssz Ss +szolgáltatá) ssz Ss + szövé) ssz Ss + taktu) ssz Ss +tanulá) ssz Ss +tapsolá) ssz Ss +társulá) ssz Ss + teknő) ssz Ss + telje) ssz Ss +teremté) ssz Ss + terhe) ssz Ss + termé) ssz Ss +tervezé) ssz Ss +tetoválá) ssz Ss + textu) ssz Ss +tizede) ssz Ss + tölté) ssz Ss + töré) ssz Ss +trombitálá) ssz Ss + trónu) ssz Ss + tűré) ssz Ss +tüsszögé) ssz Ss +unikorni) ssz Ss + uta) ssz Ss +uzsorá) ssz Ss +űrhajó) ssz Ss +ütközé) ssz Ss + vágá) ssz Ss + ütő) ssz Ss +választá) ssz Ss +vállalkozá) ssz Ss + varrá) ssz Ss +esztergályo) ssz Ss +verbunko) ssz Ss +versengé) ssz Ss +villámlá) ssz Ss + vívá) ssz Ss + bizto) ssz Ss +vonaglá) ssz Ss + voná) ssz Ss +zaklatá) ssz Ss +zászló) ssz Ss +zöldsége) ssz Ss + emlő) ssz (erű Ss + kapá) ssz (őlő Ss + kuva) ssz (al s: +szertartá) ssz (erű Ss +csipogá) ssz Ss .group sz sz s @@ -1904,13 +2349,16 @@ ellenállá) sz (ón Sz ré) sz (árás Sz _te) szts (or st|S serté) szs (ir S|Z -tava) sz (áról s -te) sztsz (ezon st|s -balla) szts (úly st|S -kere) sztsz (ala st|s -para) szts (alá st|S -para) szts (ere st|S -para) szts (orb st|S + tava) sz (áról s + te) sztsz (ezon st|s + balla) szts (úly st|S + kere) sztsz (ala st|s + para) szts (alá st|S + para) szts (ere st|S + para) szts (orb st|S + csömö) sz (öl s + enyve) szs (in S|Z + li) sztsz (emek st|s .group t t t @@ -2059,26 +2507,34 @@ szögle) t (szob t álla) t (cirk t szen) t (szob t koncer) t (jeg t -tesz) t (cikl t -tesz) t (járm t -tesz) t (játék t -interne) t (jog t -á) tsz (orzás t|s -bará) t (szeren t -bi) t (széles t -spor) t (sér t -sej) t (szinte t -cson) t (sová t -direk) t (szorza t -ese) t (szétvá t -gondola) t (szond t -karsz) t (járat t -klariné) t (sz t -látsza) t (jóin t -metsze) t (sor t -mosza) t (sejt t -sej) t (sűrű t -vilaje) t (szék t + tesz) t (cikl t + tesz) t (járm t + tesz) t (játék t +interne) t (jog t + á) tsz (orzás t|s + bará) t (szeren t + bi) t (széles t + spor) t (sér t + sej) t (szinte t + cson) t (sová t + direk) t (szorza t + ese) t (szétvá t +gondola) t (szond t + karsz) t (járat t +klariné) t (sz t +látsza) t (jóin t +metsze) t (sor t + mosza) t (sejt t + sej) t (sűrű t +vilaje) t (szék t +csopor) t (sorsol t + saj) t (salát t + kama) t (jövedel t +tisztele) t (jeggy t + épüle) t (szobrá t +eszkor) t (szolgál t +foszfá) t (jövedel t + gráni) t (szob t .group tj C) tj c @@ -2169,7 +2625,8 @@ közérze) tj (aví tj ké) tj (átszm tj szavaza) tj (og tj szavaza) tj (eg tj -vona) tj (eggy tj + vona) tj (eggy tj +billentyűze) tj (áté tj .group ts ts (_S2 tS //general rule with word end of ts letters @@ -2409,6 +2866,8 @@ keresz) tt (űz t: bennszülö) tt (jelmez t krike) tt (ját t szé) tt (rancsír t: +elláto) tt (jog t + felnő) tt (játszó t .group ty mindszen) ty t|i @@ -2512,7 +2971,7 @@ lefeje) z (ték s _ré) zs (ó zS ő) zs (uta zS _vá) zs (or zS -szára) zs (ág SS + szára) zs (ág SS _nehé) zs (ely zS _) zürich tsyR2i C tí) zsz (er s: @@ -2656,12 +3115,34 @@ csatlako) z (tok s _tí) z (shill z topá) z z dör) zsz (ör Z|z - raj) z (sa z -tí) z (seb z + raj) z (sa z + tí) z (seb z egészségkö) z (pont s -leme) z (slá z -raj) z (sor z -ri) zs (zab Z + leme) z (slá z + raj) z (sor z + ri) zs (zab Z + vá) z (sér z + ví) z z + leme) z z + eszkö) z z + gá) z (zsám z + gá) z (seb z + gá) z (ster z + gá) z (súr z + gá) z (sűr z + gá) z (süt z + gá) z (sát z + halma) z z + gá) z (síp z +masszá) zs (zuh Z + ő) z (salát z + ő) z (sírá z + raj) z (skic z + raj) z (st z + ré) z (zsan z + tí) z (sch z + ví) z (zsák z + ví) z (zsong z .group $ dolla:R2 diff --git a/dictsource/nl_list b/dictsource/nl_list index b260ea04..d08ea200 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -156,7 +156,7 @@ de d@ het h@t $only een @n $only ən @-n // char.replacement for 'n -ət t // char.replacement for 't +ət @t // char.replacement for 't een e:n $atend (de een) d@||e:n (het een) h@t||e:n @@ -399,9 +399,15 @@ zegen $alt trokken $alt zeten $alt +// -emen is not a stressed ending +boezemen $alt +ademen $alt +bliksemen $alt +wasemen $alt // words where -er is not a stressed verb ending + diller $alt // bediller schepper $alt // opschepper steller $alt // aansteller @@ -875,7 +881,7 @@ waaier $alt wakker $alt wapper $alt water $alt -wedijver $alt +wedijver v#Ed'EIv@r $alt weelder $alt wegwijzer $alt weiger $alt @@ -1622,6 +1628,7 @@ aldus Ald'8s alles Al@s amino $1 amnestie $3 +antenne $2 $alt2 april a:pr'Il armand _^_FR augustus VUQ'8st8s @@ -1665,6 +1672,7 @@ crèches krES@s damascering damA;s'e:rIN december $2 desillusie dEsIlyzi +desondanks dEsOnd'ANks detail de:t'Aj dieet $2 diesel diz@l @@ -1681,8 +1689,10 @@ embouchuur A~buS'yr // embouchure enorm $2 enquête A~k'Et@ $alt2 erosie e:r'o:zi +evangelie e:vANQ'e:li eucharistie $4 explosie $2 +extern Ekst'Ern februari fe:bry'a:ri fiche fiS@ franchise frA'Si:z@ @@ -1692,6 +1702,9 @@ gelig Qe:l@Q gouache Qu'AS gefrituurd $3 hysterie hIstI:r'i +ideaal ide:j'a:l +ideale ide:j'a:l@ +immens Im'Ens impregnering Impr,EQn'e:IN inductie $2 informatieve InfOrma:t'iv@ @@ -1702,11 +1715,13 @@ ingevolge $3 ingrediënt $4 ingenieur Inzj@nj'Y:r informatie $3 +intern Int'Ern invasie $2 januari $3 jury Zyri kadaster $2 kleinzerig klEInz'e:r@Q +kredietwaardig $3 leesregel le:sre:Q@l levendig le:v@nd@Q lunch l8nS @@ -1742,7 +1757,10 @@ miszit $1 mysterie mIst'I:ri nabij nab'EI new nyU +noordelijk no:rd@l@k november $2 +oceaan o:se:j'a:n +oceanen o:se:j'a:n@n oktober $2 oliesel o:lis@l omver o:mv'Er @@ -1753,10 +1771,12 @@ ongemakkelijk $3 //ongelukkig $3 ongerieflijk $3 //ongrondwettig $3 +oostelijk o:st@l@k partijvoorzitters $2 periferie pI:rifI:r'i perron $2 pistache pist'AS +premie $1 privilege privil'e:Z@ $alt2 proces $2 projectielen $3 @@ -1777,6 +1797,7 @@ sms'jes EsEm'Es_j@s spektakel $2 sportief $2 sportieve $2 +stream stri:m tegennatuur $4 tralie $1 travestie $3 @@ -1784,6 +1805,7 @@ verderop $3 vergezicht vErQ@zIxt verre vEr@ verrekijker vEr@kEIk@r +versa vErs'a: verste vErst@ verte vErt@ volledig $2 @@ -1796,8 +1818,13 @@ wanluidend $2 wanschapen $2 wantrouwend $2 weliswaar v#ElIsw'a:r +werelden v#I:r@ld@n werktuigelijk $2 +westelijk v#Est@l@k +zeeën ze:@n ziekenhuisbevalling zi:k@nhWysb@vAlIN +zuiden zWyd@n +zuidelijk zWyd@l@k @@ -1834,6 +1861,7 @@ google gu:g@l alexandrië $3 Benin be:n'in canada kAna:da: +Genua Qe:nyv#a: Kinshasa kInS'a:sa: Nairobi nAjr'o:bi Napel $alt diff --git a/dictsource/nl_rules b/dictsource/nl_rules index a46e8c01..8bba181d 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -40,6 +40,7 @@ _) adres (@P5 a:dr'Es _) af (C@P2 'Af _) affich %AfiS + _) af (rika a:f age (_ 'a:Z@ ages (_S1 s age (_$w_alt a:Q@ @@ -55,6 +56,7 @@ @) ant (e_ 'Ant @) ant (en_ 'Ant @) ant (er_ 'Ant + ao (_ 'VU // cacao @) ares (_ a:r'Es aris (_ 'a:rIs arissen (_ 'a:rIs@n @@ -211,6 +213,7 @@ el) e (_+S1qd @ er) e (_+S1qd @ ig) e (_+S1qdm @ + lijk) e (_S1m @ ea (_ 'e:a: eau 'o: //words with French origin @@ -218,6 +221,7 @@ @) ee (_ 'e: @) ee (X_ 'e: @) ee (r_ 'I + h) ee (r_ I: @) ee (rt_ 'I @) ee (rd_ 'I @) ee (rde_ 'I @@ -244,8 +248,12 @@ @) elen (_ 'e:l@n @) el (en_$p_alt2 @L + @) elds (_ @lts &) elijks @l@ks + &) em (_ @m + &) emen (_$w_alt @m@n + waarn) em e:m &) e (ment @ eden (_ e:d@n // ?? @@ -285,7 +293,9 @@ &) en (_S2qd @n KAC) en (_S2e @n // flag 'e' means double the previous vowel KAj) en (_S2 @n + KAx) en (_S2 @n and) en (_S2 @n + ie) en (_S2 @n el) en (_+S2qd @n er) en (_+S2qd @n @@ -313,7 +323,7 @@ @) er (ingen_ 'I:r &) er (_$p_alt =@r &) er (e_$p_alt =@r - &) er (en_$p_alt =@r + &) er (en_$p_alt =@r // where 'eren' is not a verb ending &) er (t_$p_alt =@r &) er (d_$p_alt =@r &) er (de_$p_alt =@r @@ -330,7 +340,6 @@ _) er (@P2 Er &) er (_ @r &) ere (_ @r@ - &) er (en_$p_alt @r // where 'eren' is not a verb ending eren (_ 'I:r@n erend (_ 'I:r@nd @) eres (_S4qd @r'Es @@ -388,6 +397,8 @@ gg Q s) g x + _) gast (@ Q'Ast + _) gasten (@P6 Q'Ast@n g (é Z g (ee_ Z _lo) g (eer Z @@ -412,6 +423,7 @@ gener (aal Q,e:n@r _) gelijk Q@lEIk _) gemeente (@P8 Q@m'e:nt@ + genre ZA~r@ _) ge (lC QE _) ge (rC QE _) ge (lenL02 Qe: @@ -430,9 +442,13 @@ h h C) h (K + C) hand (_S4 h'Ant _) handicap hEndikEp _) her (@P3 hEr + _) her (der hEr + _) her (ds hEr _) her (en hI:r + _) herfst (@P6 h'Erfst _) herinn h%ErIn // herinneren _) hersen h'Ers@n &) heid (_S4 hEIt @@ -487,6 +503,7 @@ CAss) ie (_ =i @) ig (_S2dq =@Q @) ige (_S1m @ + _) ige (_ @Q@ // when a prefix is removed, eg "herfstige" @) igen (_ =@Q@n @) iger (_ =@Q@r @) igere (_ =@Q@r@ @@ -501,12 +518,14 @@ &) iko (_ =iko: fam) i (lie 'i _) in (C@P2 'In + _) ing (eC_ IN // bewerkingen _) in (do In _) in (forma In ine (_ 'in@ ines (_ 'in@s _) informatie (@P10 InfOrm'a:tsi - _) inn (@P2 'I // ?? inneren + _) inn (er 'In // ?? inneren + _) inn (ig In _) inter Int@r io (nage iO io (de_ i'o: @@ -518,10 +537,12 @@ @) isme (_ 'Ism@ @) ist (_ 'Ist @) isten (_ 'Ist@n + Ar) ia (_ =ia: + Ar) ium (_ =i8m .group j j j - + _) jaar (@P4 j'a:r jaar (lijk ja:r jou (rna Zu @@ -539,13 +560,13 @@ kokkerel kOk@r'El _) koning k'o:nIN // in compounds _) koningin ko:nIQ'In + _) krediet (@P7 kr@d'it .group l l l l) l &) lijk (_S4 l@k - &) lijke (_S5 l@k@ &) lijken (_S6 l@k@n &) lijker (_S6 l@k@r &) lijkere (_S7 l@k@r@ @@ -557,6 +578,9 @@ &) laan (_S4 la:n _) lange (@P5 laN@ + _) land (@P4 l'And + _) land (e l'And + _) lente (@P5 l'Ent@ _) liefdes (@P7 l'ifd@s detai) ll @) loog (_ lo:x @@ -575,6 +599,7 @@ _) mee (rC mI: menu (_ m@ny _) mi (cro mi + _) milieu mIlj'Y: _) mi (s@ m%I _) mis (anC miz _) mis (commP3 m'Is @@ -659,6 +684,7 @@ _) op (enen+ 'o:p _) openings (P8 'o:p@nINs _) op (era 'o:p + _) opper Op@r _) op (tion Op os (_ Os ou (che_ u @@ -760,6 +786,7 @@ sch sx sch (_ s sch (e_ s + sch (er_ s _) sch (n S _) sh S sh (K S @@ -825,6 +852,7 @@ _) trans (@P5 tr,Ans .group te + _) tege (lijk t@Q@ _) tegen (P5 t'e:Q@n _) terug (P5 t@r'8x _) te (gelijkP2 t@ @@ -871,6 +899,7 @@ v v s) v f + _) vakantie (@P8 va:k'Antsi _) van (@P3 v%An _) vanzelf (@P7 vAnz,Elf _) vang vAN @@ -905,9 +934,14 @@ _) weg (@P3 v#'EQ _) weg (en v#e:Q _) weg (e_ v#e:Q // bewegelijk + _) weg (ing v#e:Q // bewegingen + _) wereld (@P6 v#'I:r@lt _) werk (@P4 v#'Erk _) werk (el v#'Erk + _) werk (ing v#'Erk _) west (@P4 v#Est + _) wets (@P4 v#'Ets + _) winter (@P6 v#'Int@r _) woon (@P4 v#'o:n _) wr (@ vr @@ -928,9 +962,12 @@ z (z s) z + _) zee (@P3 z'e: + _) zeeuw zeU zele (_S4 ze:l@ // common suffix for cities. @) zelf (_S4 s'Elf _) zoge (@P4 z,o:Q@ + _) zomer (@P5 z'o:m@r _) zuid (@P4 zWyt diff --git a/dictsource/sl_list b/dictsource/sl_list index 3599f878..4d4b5652 100755 --- a/dictsource/sl_list +++ b/dictsource/sl_list @@ -91,7 +91,7 @@ _cyr tsiR'i:litSni @ 'a:fna # l'e:stvitsa $ d'o:laR -% Otst'o:tOw +% Otst'o:tkOw & 'i:n * zv'e:ditsa + plu:s diff --git a/dictsource/sw_list b/dictsource/sw_list index e4fa5e79..922a96e1 100644 --- a/dictsource/sw_list +++ b/dictsource/sw_list @@ -25,8 +25,6 @@ y jai z zedi - - // numbers _0 sif'uRi _1 m'oJa @@ -150,7 +148,7 @@ kwao $pause // by means of which kwavyo $pause // by means of which kwaye $pause // by means of which -kwa $u $brk // with +kwa $u // with mwenye $u $brk // with wenye $u $brk // with yenye $u $brk // with @@ -158,6 +156,8 @@ yenye $u $brk // with chenye $u $brk // with vyenye $u $brk // with zenye $u $brk // with +malipo $unstressend + // conjunctions @@ -178,12 +178,12 @@ ijapokuwa $pause // although ingawa $pause // although iwapo $pause // when japo $pause -(juu ya) J,u:ja/ $pause // as for +(juu ya) J,u:ja $pause // as for kama $u+ $pause // if,like kisha $pause // moreover kusudi $pause // in order to kuwa $u $pause // that -(kwa kuwa) kwa||k,uwa/ $pause // becuse +(kwa kuwa) kwa||k,uwa $pause // becuse kwamba $u $pause // that lakini $pause // however walakini $pause // however @@ -195,5 +195,10 @@ wala $pause // either,neither yaani $pause // i.e. +// exceptions + +mantiki ma_|nt'iki $u1+ +zanzibar $3 + diff --git a/dictsource/sw_rules b/dictsource/sw_rules index 07b92274..4b23b52d 100644 --- a/dictsource/sw_rules +++ b/dictsource/sw_rules @@ -5,8 +5,7 @@ .group a a a - aa a: - + .group b b b @@ -20,8 +19,7 @@ .group e e e - ee e: - + .group f f f @@ -35,18 +33,20 @@ .group i i i - ii i: - + .group j j J + j (w J .group k k k + K) k (@@ _|k kh x .group l l l + .group m m m _) m m- @@ -54,7 +54,7 @@ K) m (@@ _|m K) m (C m- K) m (b@@ _|m - K) m (v@@ _|m + K) m (v@ _|m K) m (w@@ _|m .group n @@ -63,19 +63,19 @@ n (A n n (@@ n ny n^ - n (ch n^ + n (ch n- n (j n^ - ng' N + ng (' N n (k N _) n (k N- _) n (k@@ N- n (g N - K) n (g N- - _) n (g@@ N- + + .group o o o - oo o: + .group p p p @@ -99,15 +99,16 @@ .group u u u - uu u: + + .group v v v .group w w w - j) w %u - ny) w %u + j) w %u + ny) w %u .group x x ks diff --git a/dictsource/ta_list b/dictsource/ta_list index 21ae589e..14735ee7 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -85,8 +85,8 @@ _; a:raIb||pul.l.i // ஆரைப் புள்ளி _: mukka:l||pul.l.i // முக்கால் புள்ளி _( id.V||piRaI // இட பிறை _) vVlV||piRaI // வல பிறை -_[ id.V||sadUrVm // இட சதுரம் -_] vVlV||sadUrVm // வல சதுரம் +_[ id.VppVgVrVm // இடப்பகரம் +_] vVlVppVgVrVm // வலப்பகரம். _{ id.V||gVn.Vm // இட கணம் _} vVlV||gVn.Vm // வல கணம் < kuRaIvU // குறைவு @@ -385,6 +385,8 @@ tamil தமிழ் $text புசு $alt புஸு $alt பாதிக்காம $alt +பனியா $alt +பாம் $alt // initial த as [d] @@ -452,6 +454,7 @@ tamil தமிழ் $text தாயம் $alt திமு $alt தாவா $alt +துருவா $alt // initial ட diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 8afdfb07..ca9c444c 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -128,7 +128,7 @@ .L30 மெடல பிஷ ஃபிஷ // endings after போர்ட (board) -.L31 ் ிங் ின ை ுக்க ில ும +.L31 ்_ ிங் ின ை ுக்க ில ும // consonants @@ -157,9 +157,7 @@ க் (_க k //sort - - - + _) க (ஃபார gV _) க (ங்கபாடி gV _) க (ங்கர gV _) க (ங்கா gV @@ -195,13 +193,16 @@ _) க (தியை gV _) க (ந்தக gV _) க (ந்தகிரி kV + _) க (ந்தக்கோட்ட kV _) க (ந்தர்வ gV _) கனக (ச்சித gVnVkV _) க (னக்க gV _) க (னத் gV _) க (னபாடி gV + _) க (னப்ப gV _) க (னம gV _) க (னரக gV + _) கப (ார gVf _) கப் (L04ா gVp _) கப்ச (ிப் gVptS _) க (ப்புன gV @@ -253,6 +254,7 @@ _) க (ாந்தத் g _) க (ாந்தப் g _) க (ாந்தமா g + _) க (ாந்தர்வ g _) க (ாந்தார g _) க (ாந்தி g _) க (ானங் g @@ -265,6 +267,8 @@ க (ாரன k _) க (ார்டன g _) க (ார்டியன g + _) க (ால்ஃப் g + _) கால்ப் ga:lf _) க (ிஃப்ட g _) கிட (ார git. _) க (ிடுகிடு g @@ -331,6 +335,7 @@ _) கி (றித்த k _) கி (றிஸ்டல k _) கி (றிஸ்த k + _) கி (லேசியர g _) க (ில்மா g _) கி (ளப்_ k _) கிளப்ப (ில kl.Vbb @@ -342,6 +347,7 @@ _) கி (ளாL04ு k _) கி (ளாL04ை k _) கி (ளாமர g + _) கிளார்க் kl.a:rk _) கி (ளாஸ்_ g _) கி (ளாஸ்_மேட k _) கிளாஸ்க (ோ gl.a:sg @@ -372,7 +378,9 @@ _மன்மதக்) க (ுகை g _) க (ுஜால g _) க (ுடியாத்த g _) க (ுடுகுடு g + _) க (ுணக் g _) க (ுணங் g + _) க (ுணசாலி g _) குணச (ித்திர gun.VtS _) க (ுணசீல g _) க (ுணசேகர g @@ -429,11 +437,10 @@ _மன்மதக்) க (ுகை g _) க (ுருகுல g _) க (ுருக்கள g _) க (ுருக்குல g - _) க (ுருக்ஷேத்திர g _) க (ுருசாமி g - _) குருச (ேத்திர gurUs. _) க (ுருஜி g _) க (ுருதேவ g + _) க (ுருத்வார g _) க (ுருநா g _) க (ுருபகவான g _) குருப (த்தினி gurupV @@ -442,13 +449,16 @@ _மன்மதக்) க (ுகை g _) குருப (ீட gurup _) குருப (ூ gurup _) க (ுருபூஜை g + _) க (ுருபோத g _) குருப்பி (ரசாத gurupp _) க (ுருப்பெயர g + _) க (ுருப்யோ g _) க (ுருமார g _) க (ுருமூர்த்தி g _) க (ுருரா g _) க (ுருவடி g _) க (ுருவம்ச g + _) க (ுருவம்மா g _) க (ுருவருள g _) க (ுருவா g _) க (ுருவாய g @@ -460,7 +470,6 @@ _மன்மதக்) க (ுகை g _) க (ுருவை g _) க (ுருவோ g _) க (ுருவோட g - _) க (ுருஷேத்திர g _) கு (ரூப் g _) க (ுலாப g _) க (ுலாம g @@ -486,6 +495,7 @@ _மன்மதக்) க (ுகை g _) க (ெட்டிக்கனும k _) க (ெட்டிக்கி k _) க (ெட்டிரு k + _) க (ெட்டில k _) க (ெத் g _) க (ெரில்லா g _) கெள (தம gaU @@ -504,6 +514,8 @@ _மன்மதக்) க (ுகை g _) க (ேமை g _) க (ேம்ஸ g _) கேரண்ட ge:rVn.t.V# + _) கேலக (்சி ge:lVk + _) க (ேலக்ஸி g _) க (ேலரி g _) க (ேலி g _) க (ேஸ்_L26 g @@ -584,6 +596,7 @@ _மன்மதக்) க (ுகை g _) க் (ரீன g _) க் (ரூப g _) க் (ரௌண்ட g + _) க் (லேசியர g _) க் (ளாமர g _) க் (ளாஸ்_ g _) க்வ (A kw @@ -630,6 +643,8 @@ _தலைக்) க (ன gV _தர்ம) க (ர்த kV _குல்) க (ர்னி kV விஸ்வ) க (ர்மா kV + உரை) க (ற் kV + _மைல்) க (ற் kV _விண்) க (ற் kV _லோ) க (ல kV _மெடி) க (ல kV @@ -644,6 +659,8 @@ _சித்திர) க (லா kV _சூரிய) க (லா kV _யூ) க (லிப்டஸ kV _ஜீவ) க (லை kV + உரை) க (ல் kV + _மைல்) க (ல் kV _காய) கல்ப kVlpV# பஞ்ச) க (ல்யாண kV _ரண) க (ள kV @@ -690,6 +707,7 @@ _ஹன்L04ி) க (ா k _கண்) க (ாணா k _கர்ம) க (ாண்ட g உத்திரா) க (ாண்ட k + அ) காத (மி ka:d.V _ராம) க (ாதை k இராம) க (ாதை k _ஸ்ரீ) காந்த ka:ntV# @@ -793,10 +811,12 @@ _மன்னர்) க (ுல k _கை) க (ுலு k _) குல்க (ந்த gulkV _மெரு) க (ூட்ட g + _லா) க (ூர H _தயை) க (ூர k _தயவு) க (ூர k அருள்) க (ூர k _நினைவு) க (ூர k + _மு) க (ூர்த H _குறை) க (ூற k அறை) க (ூவ k _மார்) கெட் ket. @@ -877,6 +897,7 @@ _தேவா) க்க (ினை gg அயோ) க்க (ிய gg ஆரோ) க்க (ிய gg வைரா) க்க (ிய gg + _மூல) க்கி (ர gg அநு) க்கி (ர gg அனு) க்கி (ர gg _கர்ப்ப) க்கி (ர gg @@ -940,6 +961,7 @@ _துப்பாக்கி) க்க (ுண்ட gg என்சை) க்லோப (ீடியா klo:p _சு) க் (ள k _ஷு) க் (ள k + _து) க்ளக் kl.Vk க் (ஸ k _எ) க் (ஸாம g _மெ) க்ஸிக (ோ ksik @@ -967,8 +989,8 @@ _துப்பாக்கி) க்க (ுண்ட gg ஞ்) ச dZV ஞ்) ச (B dZ ச் (_N tS - ச்_) ச tSV // previous word ends in ச் - ச்_) ச (B tS + ச் (_ச tS + ச்_) ச (++ :V# // previous word ends in ச் _) சாம்ப (ியன tSa:mp //sort @@ -998,6 +1020,7 @@ _துப்பாக்கி) க்க (ுண்ட gg _) ச (த்ரபதி tSV _) ச (த்ரு tSV ச (ந்தர tSV + _வ) ச (ந்தர sV _) ச (ந்தர்ப sV அ) ச (ந்தர்ப sV ச (ந்திர tSV @@ -1018,6 +1041,7 @@ _மீனலோ) ச (னி tSV _) ச (ப்பி tSV _) ச (ப்பு tSV _) ச (ப்பெ tSV + _) ச (ம்பல்பூர tSV _) சம்ப (ாரன tSVmp _நா) ச (ர zV _ரே) ச (ர zV @@ -1081,15 +1105,19 @@ _தணிகா) ச (ல tSV விப) ச (ார tS _கிரL06) ச (ார tS _குணா) ச (ார tS +_பிரிவுப) ச (ார tS +_விருந்துப) ச (ார tS ராஜோப) ச (ார tS ஆ) ச (ார_ tS ஆ) ச (ாரங்கள tS _வி) ச (ாரங்கள tS ஆ) ச (ாரத் tS _வி) ச (ாரத்த tS + ஆ) ச (ாரப்பட tS ஆ) ச (ாரம tS _வி) ச (ாரம tS _சிவா) ச (ாரி tS + _சுகா) ச (ாரி tS _ரங்கா) ச (ாரி tS _வரதா) ச (ாரி tS _வேதா) ச (ாரி tS @@ -1120,6 +1148,7 @@ _மத்வா) ச (ாரி tS _) ச (ார்ஜை tS _மொ) ச (ார்ட z _) ச (ார்மினார tS + ஆ) ச (ார்ய tS _) ச (ார்லஸ tS _) ச (ார்லி tS _) ச (ாலக்குடி tS @@ -1172,6 +1201,7 @@ _மத்வா) ச (ாரி tS _மலே) ச (ிய s. இந்தோனே) ச (ிய s. _) ச (ியர்ஸ tS + _) சி (யாம s. _பக்தி_) சிரத் (தை srVd _) சிரத்த (ைL27 srVdd சி (ரம s @@ -1220,6 +1250,7 @@ L28ரங்க) ச (ீப z _கபாலீ) சு (வ s _ஜலகண்டே) சு (வ s அர்த்தனாரீ) சு (வ s + _) சு (வமேத s _சனீ) சு (வர s ராஜே) சு (வர s _மங்களே) சு (வர s @@ -1289,6 +1320,7 @@ _வெனி) ச (ுவேல z _) ச (ேஞ்ச tS _) ச (ேட்டன tS _) ச (ேட்டர்ஜி tS + _குரு) ச (ேத்திர s. _) ச (ேனல tS _) ச (ேரி tS _தல) ச (ேரி tS @@ -1317,6 +1349,7 @@ _வெனி) ச (ுவேல z _) சௌப (ாத்தி tSaUp _) ச (ௌபே tS _) ச (ௌஹான tS + _ந) ச் (னு tS _கா) ச்மூச tSmu:tSV# //endsort @@ -1327,6 +1360,7 @@ _வெனி) ச (ுவேல z ஜ (B dZ //sort _கெ) ஜ (ட் zV + _ட) ஜ (ன zV _டின்) ஜ (ர tSV _) ஜ (ர்தாரி zV _க) ஜ (லா zV @@ -1337,12 +1371,14 @@ _வெனி) ச (ுவேல z _) ஜ (ாக்கீர z _ரம்) ஜ (ான z _நி) ஜ (ாம z + _) ஜ (ாம்பிய z _ப) ஜ (ார z அ) ஜ (ாருதீன z _நா) ஜ (ி z _) ஜிப்(_ zip _) ஜ (ிப்ப z _) ஜ (ிப்பா dZ + _) ஜ (ிம்பாப்வே z _) ஜ (ியா_ z _) ஜ (ியாவ z _) ஜ (ீனத் z @@ -1351,6 +1387,7 @@ _வெனி) ச (ுவேல z _) ஜ (ுல்ஃபி z _) ஜ (ுல்பி z _) ஜு (வால dZ + _) ஜ (ூலு z _) ஜ (ெனித் z _) ஜ (ெராக்ஸ z //endsort @@ -1380,6 +1417,7 @@ _வெனி) ச (ுவேல z //sort _டே) ட t.V# + _மால்) ட t.V# _பேண்) ட t.V# _வால்) ட t.V# _கமெண்) ட t.V# @@ -1641,6 +1679,7 @@ _லான்_) ட (ென்னிஸ t. _) டோர்னமெண்ட t.o:rnVmen.t.V# _) ட (ோலிவுட் t. _லே) ட் t. + _ஹி) ட் t. @மெண்) ட் t. // -ment _பேண்) ட் t. _ஹெல்மெ) ட் t. @@ -1653,9 +1692,13 @@ _டோலிவு) ட்ட d.d.V# _பாலிவு) ட்ட d.d.V# _மாலிவு) ட்ட d.d.V# _ஹாலிவு) ட்ட d.d.V# + _ரெ) ட்ட (ிகள d.d. _ரெ) ட்ட (ிய d.d. + _ஷெ) ட்ட (ில d.d. இ) ட்ட (ிலி d.d. _ஜி) ட்ட (ு d.d. + _ஷெ) ட்ட (ு d.d. + _ஷெ) ட்ட (ை d.d. அப்பாயிண்) ட்மெண்ட t.men.t.V# _) ட் (யூசன t. _) ட் (யூன t. @@ -1696,6 +1739,7 @@ _ஹாலிவு) ட்ட d.d.V# எண்) ட் (ரி t. _) ட்ரிக (ர t.riggV _) ட்ரிக் t.rik + _ஹா) ட்ரிக் t.rik _) ட்ரிக்க (ர t.riggV _) ட் (ரிங்_ t. _நியூ) ட் (ரின t. @@ -1778,6 +1822,8 @@ _நடுரோ) ட் (ல t. _) த (கன dV _) த (கி dV _) த (க்க்ஷிண dV + _) த (க்ஷக dV + _) த (க்ஷசீல dV _) த (க்ஷன dV _) த (க்ஷிண dV _) த (க்ஷிணா dV @@ -1834,6 +1880,7 @@ _நடுரோ) ட் (ல t. _) தத்த (ியா dVdd _) த (னகோடி dV _) த (னசேகரன dV + _) த (னத்த dV _) த (னன்ஜெயன dV _) த (னபால dV _) த (னராச dV @@ -1841,7 +1888,9 @@ _நடுரோ) ட் (ல t. _) த (னலக்ஷ்மி dV _) த (னலட்சுமி dV _) த (னவந்த dV + _) த (னாதிகார dV _) த (னுச dV + _) த (னுர dV _) த (னுஷ dV _) த (ன்மந்திரி dV _) த (ன்ய dV @@ -2216,6 +2265,7 @@ _ஸ்வர்ணல) த (ா t _முல்) த (ான t _சாந்) த (ானு tV# _சி) த (ார t + _நயன்) த (ாரா t _சரி) த (ாவ t _ஹரி) த (ாஸ்_ d _சும) த (ி t @@ -2489,9 +2539,11 @@ _சி) த்ரலேக (ா trVle:k _) ப (ட்டக்ஸ bV _) ப (ட்டன bV _) ப (ட்டன_ pV + _) ப (ட்டனப்பாக்க pV _) ப (ட்டாசாரி bV _) ப (தில bV _) பத்த (ிரகாளி bVdd + _) பத்த (ிரபாகு bVdd _) பத்திரப் (_ bVttirVp _) பத்திரப் (_பதி pVttirVp _) ப (த்திரப்பட bV @@ -2499,6 +2551,7 @@ _சி) த்ரலேக (ா trVle:k _) பத்த (ிரி_ bVdd _) பத்த (ிரிக்கு bVdd _) பத்த (ிரிய bVdd + _) ப (த்ரபாகு bV _) ப (த்ரி bV _) பத் (ரிக்க pVt _சொந்த_) ப (ந்த bV @@ -2520,6 +2573,8 @@ _சொந்த_) ப (ந்த bV _) ப (னாரச bV _) ப (னாரஸ bV _) ப (னியன bV + _) ப (னியாக்கள bV + _) ப (னியாவ bV _) ப (ன்சல bV _) ப (ன்னாரி bV _டீயும்_) ப (ன்னும்_ bV @@ -2588,6 +2643,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லத்தின bV _) ப (லத்தினா bV _) ப (லத்தினுட bV + _) ப (லத்திற்க bV _) ப (லத்தில bV _) ப (லத்துக் bV _) ப (லத்துச் bV @@ -2601,6 +2657,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லப்பத்த bV _) ப (லப்பம bV _) ப (லப்பரீட்சை bV + _) பலப்பி (ரயோ bVlVpp _) ப (லமணைத்த bV _) ப (லமற்ற bV _) ப (லமாகC் bV @@ -2696,6 +2753,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ாசு b _) பாசுப (த pa:sUpV _) ப (ாசுர p + _) பாட (னி ba:t.V _டெட்_) ப (ாடி b _) ப (ாடி_பில்டர b _) ப (ாடி_பில்டிங் b @@ -2711,6 +2769,7 @@ _டெட்_) ப (ாடி b _) ப (ாட்டிலுடன b _) ப (ாட்டிலை b _) ப (ாட்டில்கள b + _) பாட்மிண்ட (ன ba:d.min.t.V _) ப (ாணங் b _) ப (ாணமு b _) ப (ாணர b @@ -2750,6 +2809,8 @@ _டெட்_) ப (ாடி b _) ப (ாதிப்படையுமெ b _) ப (ாதிப்படைவ b _) ப (ாதிப்பதா b + _) ப (ாதிப்பதுண்ட b + _) ப (ாதிப்பதும b _) ப (ாதிப்பதை b _) ப (ாதிப்பவை b _) ப (ாதிப்பாகி b @@ -2765,12 +2826,15 @@ _டெட்_) ப (ாடி b _) ப (ாதிப்புண்ட b _) ப (ாதிப்பும b _) ப (ாதிப்புள்ள b + _) ப (ாதிப்பென b _) ப (ாதிப்பேர p _) ப (ாதிப்பை b + _) ப (ாதிப்போ b _) பாத (ிமா fa:t _) ப (ாதுஷா b _) ப (ாத்திமா f _) பாத்த (ியதை ba:dd + _) பாத்த (ியப் ba:dd _) பாத்த (ியம்_ ba:dd _) ப (ாத்யதை b _) ப (ாத்ரூம b @@ -2791,7 +2855,11 @@ _டெட்_) ப (ாடி b _டைம்_) ப (ாம b _) ப (ாமாவ b _) ப (ாமினி b + _) ப (ாமிரு b _) ப (ாமிலி f + _) ப (ாமில்ல b + _) ப (ாமை b + _) ப (ாம்கள b _) ப (ாம்பே b _ஆடு_) ப (ாம்பே p _விளையாடு_) ப (ாம்பே p @@ -2838,6 +2906,9 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலாம்பாள b _) ப (ாலாம்பிக b _) ப (ாலாவ b + _) ப (ாலாவி_ p + _) ப (ாலாவிய p + _) ப (ாலித்_தீவ b _) ப (ாலின் p _) ப (ாலியத்த b _) ப (ாலிவுட் b @@ -2868,6 +2939,7 @@ _விளையாடு_) ப (ாம்பே p முகத்திலிருந்து_) ப (ாவ b _) ப (ாவனா b _) ப (ாவனை b + _) ப (ாவமும்_நானே b _) ப (ாவிக்கப்பட b _) ப (ாவிக்கல b _) ப (ாவிக்கவில்ல b @@ -2975,6 +3047,8 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரதேஷ p _) பி (ரதோஷ p _) பி (ரத்தியேக p + _) பிரத் (யக்ஷ prVt + _) பிரத் (யட்ச prVt _) பிரத் (யேக prVt _) பி (ரனாப p _) பி (ரப p @@ -3029,6 +3103,7 @@ _விளையாடு_) ப (ாம்பே p _) பிராஞ்ச bra:n^tS _) பி (ராடாக f _) பி (ராட்_ f + _) பி (ராட்டஸ்ட p _) பி (ராட்டிஸ்லாவ b _) பி (ராட்வே b _) பி (ராண_ p @@ -3078,6 +3153,7 @@ _விளையாடு_) ப (ாம்பே p _) பிரித (ிவ prit _) ப (ிரித்தானி b _) பி (ரித்தானி b + _) பி (ரின்L04ிபல p _) பிரின்சிப (ால prinsip _) பி (ரிமிய p _) பி (ரியங்கள p @@ -3118,6 +3194,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரே p _) பி (ரேக்க b _) பிரேச (ில bre:z + _) பி (ரேயில b _) பி (ரைல b _) பிரைவேட praIve:t.V# _) பி (ரோகிதர p @@ -3139,6 +3216,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ில்லி b _) ப (ில்லு b _) ப (ில்லை b + _) பி (ளவர f _) பி (ளவுஸ b _) பி (ளஸ p _) பி (ளஸ்_ p @@ -3146,7 +3224,8 @@ _விளையாடு_) ப (ாம்பே p _) பிளாக் bla:k _) பி (ளாட்பார p _) பிளாப் fl.a:p - _) பி (ளாஸ்க் f // flask + _) பி (ளாஷ f + _) பி (ளாஸ்க f // flask _) பி (ளீஸ p _) பிள (ைட் fl. _) பி (ளௌஸ b @@ -3222,6 +3301,7 @@ _பெனசீர்_) ப (ுட்டோ b _) புத்த (ம்_புதிய puttV _) புத்த (ம்_புது puttV _) புத்த (ரிசி puttV + _) புத்த (ள puttV _) புத்த (ழக puttV _) ப (ுத்திக் b _) ப (ுத்திசாலி b @@ -3234,6 +3314,7 @@ _பெனசீர்_) ப (ுட்டோ b _) பு (ருனாய b _) புரூப pru:fV# _) புரொப (சர profV + _) புரொப (ஸர profV _) புரொபொ (சர profV _) பு (ரோகித p _) ப (ுரோக்கர b @@ -3244,6 +3325,7 @@ _பெனசீர்_) ப (ுட்டோ b _) பு (ரௌச b _) ப (ுல்_L15 f _) புல்க (ா fulk + _) புல்க (ான pulg _) ப (ுல்டோசர b _) ப (ுல்லட் b _) ப (ுல்லா_ f @@ -3336,6 +3418,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ேகத் b _) ப (ேகம b _) ப (ேக்கரி b + _) ப (ேக்கிங்_சோடா b _) ப (ேக்டர f _) ப (ேங்க் b _) ப (ேச்சலர b @@ -3390,6 +3473,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ொம்மனாட்டி p _) ப (ொம்மல b _) ப (ொம்மை b + _) ப (ொலிவிய b _) ப (ோஃபர்ஸ b _) ப (ோஃபோர் b _) ப (ோக_L13 b @@ -3510,8 +3594,11 @@ _பெனசீர்_) ப (ுட்டோ b _) ப்ரோட (ான pro:t _) ப் (ரௌச b _) ப் (ரௌன b + _) ப் (ளவர f _) ப் (ளவுஸ b _) ப்ளாப் fl.a:p + _) ப் (ளாஷ f + _) ப் (ளாஸ்க f _) ப் (ளூஸ b _) ப் (ளோரிடா f _) ப் (ளௌஸ b @@ -3524,17 +3611,21 @@ _பெனசீர்_) ப (ுட்டோ b நடை) ப pV# _கேம்) ப pV# _பிரதீ) ப pV# + அஷ்ர) ப fV# ஒலிம்) ப pV# சங்கல்) ப pV# _சொல்) ப pV# _நிலை) ப pV# _பயன்) ப pV# _விகல்) ப pV# + _ஸ்டம்) ப pV# அடால்) ப fV# அஷ்ரா) ப fV# _ஒL10ி) ப pV# _செயல்) ப pV# +_முஷார) ப fV# _ருடால்) ப fV# +_ஸ்டாம்) ப pV# _ஷரீ) ப (+ fV# _ஷெரீ) ப (+ fV# _ஸ்தா) ப (+ bV# @@ -3561,6 +3652,7 @@ _விரகதா) ப (+ bV# தென்) ப (குதி pV அக்கம்) ப (க்க bV ப (க்கK pV + _தா) ப (க்கணல bV பரம) ப (க்த bV ராம) ப (க்த bV _தா) ப (ங்கள bV @@ -3676,6 +3768,7 @@ _ஜெனி) ப (ர fV _பக்கப்) ப (ல bV ஆன்ம) ப (ல bV படைப்) ப (ல bV +_பிரின்L04ி) ப (ல p _முனிசி) ப (ல pV ஆயுதப்) ப (ல bV _சம) ப (லங்கள bV @@ -3694,6 +3787,7 @@ _முனிசி) ப (ல pV த) ப (ஸ bV _வா) ப (ஸ pV ஆக்டோ) ப (ஸ pV + _ப்ரொ) ப (ஸர fV _தீ) ப (ா p _கலி) ப (ா f _கலீ) ப (ா f @@ -3766,6 +3860,7 @@ _வெளிப்) ப (ாக b _) பாபவிமோசன pa:bVvimo:tSV _சாயி) பாப (ா ba:b _சாய்) பாப (ா ba:b + அலி) பாப (ா ba:b அலை) ப (ாய p அ) பாயிண்ட்மெண்ட pa:jin.t.ment.V# அல்) ப (ாயு p @@ -3774,6 +3869,7 @@ _வெளிப்) ப (ாக b எதிர்) ப (ார p _பிளாட்) ப (ார f _யுக) ப (ாரதி b +_டி) பார்ட்மெண்ட pa:rt.men.t.V# இன்) ப (ார்ம f _யூனி) ப (ார்ம f அ) பார்மெண்ட pa:rment.V# @@ -3859,6 +3955,7 @@ _கன்னா) ப (ின்னா p _மா) ப (ியா f _கன்) பி (யுச f _பெர்) பி (யூம f + _கடற்) பி (ர p _வரப்) பி (ரL04ாத p _ஞான) பிரக (ா prVk _ஞானப்) பிரக (ா prVk @@ -3880,6 +3977,7 @@ _ஞானப்) பிரக (ா prVk _சொற்) பி (ரயோக p L03ந்தப்) பி (ரளய p _சொற்) பி (ரவாக p + உட்) பி (ரவேச p எக்ஸ்) பிர (ஸ pre ஆ) பி (ரஹாம b பயப்) பி (ராந்தி b @@ -3915,6 +4013,7 @@ _ஷண்முக) பி (ரிய p ஆண்) ப (ிள்ளை p பெண்) ப (ிள்ளை p அச்சா) ப (ீ f +_தபாலா) ப (ீ f _ர) பீக் fi:k உப) ப (ீட p விக்கி) ப (ீடியா p @@ -3940,6 +4039,7 @@ _ஷண்முக) பி (ரிய p _மர) ப (ுரிமை b இன்) ப (ுற b _துன்) ப (ுற b + _நம்) ப (ுற b ப (ுறK p _பா) ப (ுலர p _) பு (ளோரன்ஸ f @@ -3961,6 +4061,7 @@ _கோலாலம்) ப (ூர p _வட) ப (ெண்ணை p _தென்) ப (ெண்ணை p _கம்) ப (ெனி p + _மறு) ப (ெயர p இடம்) ப (ெயர p _புலம்) ப (ெயர p மொழி) ப (ெயர் p @@ -4088,9 +4189,11 @@ _மைக்ரோசா) ப் (ட f _ச) ப்த (மிய ptV _ச) ப் (தரிஷி p _ச) ப் (தஸ்வர p + _லு) ப் (தான f _ஹி) ப்னாட (ிச pna:t. கர்) ப்ப bbV# _நவா) ப்ப bbV# + _நகர்) ப்ப ppV# _ராமசு) ப்ப bbV# L03) ப்ப (ங்களா bbV L03) ப்ப (தில bbV @@ -4132,6 +4235,7 @@ _யாதவ) ப்பி (ரகாச pp _வெளி) ப்பி (ரகார pp அதிக) ப்பி (ரசங்க pp L03) ப்பிரச (ார pprVtS + _மலை) ப்பி (ரதேச pp _வன) ப்பி (ரதேச pp _காட்டு) ப்பி (ரதேச pp _நில) ப்பி (ரபு pp @@ -4174,12 +4278,14 @@ _சந்தேக) ப்ப (ுத்தி bb _யூ) ப்ரட (ீஸ frVt. _சு) ப் (ரியா p _ஸ்ரீ) ப் (ரியா p + அ) ப் (ரீதி f _சு) ப் (ரீம p _) ப் (ரீயா f _கம்) ப் (ரெஸ p இம்) ப் (ரெஸ p _) ப் (லெட்சர f _மா) ப் (ள p + _ம) ப் (ளர f ஏரோ) ப் (ளேன p _) ப் (ளோரன்ஸ f ப் (ஸ p @@ -4298,6 +4404,7 @@ _சந்தேக) ப்ப (ுத்தி bb வ (B v _) வி (யா v வி (யூக v +இண்டர்) வி (யூ v .group ஶ @@ -4369,6 +4476,13 @@ _சந்தேக) ப்ப (ுத்தி bb இ (ரவைகள இ (ரவையை இ (ராக + இ (ராக்_ i + இ (ராக்_கால + இ (ராக்கிட i + இ (ராக்கின i + இ (ராக்கில i + இ (ராக்கு i + இ (ராக்கை i இ (ராச இ (ராஜ இராஞ்ச ra:n^tSV# @@ -4407,6 +4521,7 @@ _சந்தேக) ப்ப (ுத்தி bb இ (லவங்க இ (லவங்காய i இ (லாகவ + இலாக (ூர la:H இ (லாப இ (லாவண்ய இலேக்க (ிய le:gg diff --git a/phsource/compile_report b/phsource/compile_report index 73cae512..a8ca1a0a 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -89 phoneme tables +91 phoneme tables new total base 109 109 consonants 11 119 @@ -61,7 +61,7 @@ consonants 11 119 vi-sgn 18 151 zhy 41 138 zh 64 155 - sw 9 110 + sw 19 109 tr 20 129 ku 18 129 id 16 128 @@ -83,6 +83,8 @@ consonants 11 119 dv 14 149 te 18 149 si 24 155 + gu 1 149 + as 12 152 tn 27 121 mt 32 129 bo 10 153 @@ -223,6 +225,7 @@ dzh/dzh_ [dZ] base dzh/dzh2 [dZ] hr [dZ;] hr dzh/dz_pzd [J] base + [J] sw [J] tr [J] ku dzh/dz_pzd_ [J] base @@ -296,6 +299,7 @@ g/g [g] base [g] ru [g;] bg [g] es + [g] sw g/g_ [g] base [g-] en [g] cy @@ -312,6 +316,7 @@ g/xg [g] base [g] ru [g;] bg [g] es + [g] sw g/xgr [g] fr h/h_ [h] base [h] fi @@ -409,6 +414,7 @@ klatt/b [b] base [b] fr klatt/bh [B] base klatt/dz_pzd [J] base + [J] sw [J] tr klatt/dz_pzd_ [J] base klatt/m [m] base @@ -420,9 +426,12 @@ klatt/n [n] base [n] fr klatt/n^ [n^] base [n#] ru + [n^] sw klatt/n^@ [n^] base [n#] ru + [n^] sw klatt/nn [N] base + [N] sw klatt/nn_ [N] base klatt/nr [n.] base klatt/n-syl [n-] base @@ -589,9 +598,11 @@ n^/_n^ [n^] base n^/n^_ [n^] base [n;] lt [n#] ru + [n^] sw n^/n^@ [n^] base [n;] lt [n#] ru + [n^] sw n^/n^#_ [n^#] is n/_n [n] base [n] fr @@ -605,6 +616,7 @@ n/n#_ [n#] is n^/n^a [n^] base [n;] lt [n#] ru + [n^] sw n/na [n] base [n] fr [n#] is @@ -612,6 +624,7 @@ n/na [n] base n^/n^e [n^] base [n;] lt [n#] ru + [n^] sw n/ne [n] base [n] fr [n#] is @@ -619,6 +632,7 @@ n/ne [n] base n^/n^i [n^] base [n;] lt [n#] ru + [n^] sw n/ni [n] base [n] fr [n#] is @@ -632,32 +646,40 @@ n/n_long_ [n] fr nn/_nn [N] base [N] zh nn/nn_ [N] base + [N] sw nn/nn@ [N] base [N#] is [N] zh + [N] sw nn/nn#_ [N#] is nn/nn2_ [N] zh [N-] zh nn/nna [N] base [N#] is [N] zh + [N] sw nn/nne [N] base [N#] is [N] zh + [N] sw nn/nni [N] base [N#] is [N] zh + [N] sw nn/nnj [N] base nn/nno [N] base [N#] is [N] zh + [N] sw nn/nn-syl [N-] base nn/nnu [N] base [N#] is [N] zh + [N] sw n^/n^o [n^] base [n;] lt [n#] ru + [n^] sw n/no [n] base [n] fr [n#] is @@ -675,6 +697,7 @@ n/n-syl [n-] base n^/n^u [n^] base [n;] lt [n#] ru + [n^] sw n/nu [n] base [n] fr [n#] is @@ -823,6 +846,7 @@ ufric/s_ [s] base [z] fr [s] es [z;] ro + [s] sw [z] sq ufric/s! [s] base [s] fr @@ -836,6 +860,7 @@ ufric/sh_ [S] base [S] fr ufric/sh3 [S] hr [Z] hr + [S] sw ufric/sh_pzd [S;] base [Z;] base [S;] ro @@ -851,11 +876,13 @@ ufric/s_pal [s^] et ufric/s_pzd [s;] base [z;] base [s;] ro + [z] sw ufric/s_pzd_ [s;] base [z;] base ufric/sx_sv [sx] sv ufric/th [T] base ufric/th_ [T] base + [T] sw ufric/tl# [tl#] is [tl#] kl ufric/tlh [K] nso @@ -883,6 +910,7 @@ ustop/k_ [k] base [k] fr [k] lv [k] el + [k] sw [k] sq [k] sl ustop/k_asp [k#] consonants @@ -946,6 +974,7 @@ ustop/null [?] base ustop/p [p] base [p2] fr [p] zhy + [p] sw [p] da ustop/p_ [p] base [ph] consonants @@ -1021,6 +1050,7 @@ ustop/t_dnt [t] base [t] sl ustop/t_dnt2 [t] base2 [d] kn +ustop/t_hard [t] sw ustop/t_hi [t[] base [t] et [t^] et @@ -1556,6 +1586,7 @@ voc/z_pzd [Z;] base [z;] base voc/z_pzd_ [Z;] base [z;] base + [z] sw vowel/@ [@] base [@] en [@] en-rp @@ -1590,7 +1621,6 @@ vowel/0 [0] en [O] grc vowel/0_2 [0] en-n [O] pt-pt - [o] sw [O] sl [o] nso [o] tn @@ -1606,6 +1636,7 @@ vowel/@_2 [@:] vi [@/] sq [V] tt vowel/&_2 [&] bn + [&] as vowel/@_3 [@#] en [@] en-sc [I] en-sc @@ -1695,7 +1726,6 @@ vowel/a#_2 [A] nl [&] hr [a] sv [a] is - [a/] sw [a] tr [a] ka [a] nso @@ -1718,6 +1748,7 @@ vowel/a_3 [a] en-sc [a] sq [a] ka [a:] si + [a] as vowel/a#_3 [a#] en [a#] en-n [a#] en-us @@ -1856,6 +1887,7 @@ vowel/e [e] base [e] dv [e:] dv [e:] te + [e] as [E] kl vowel/e# [I] en-sc [e] et @@ -2074,6 +2106,7 @@ vowel/i_6 [i] bn [i] dv [i] te [i] si + [i] as vowel/i#_6 [i.] zh vowel/i_7 [i:] et [i] pl @@ -2212,6 +2245,7 @@ vowel/o [o] base2 [o:] wo [o] te [o:] te + [o] as [o] bo [o] kl vowel/o_2 [o:] cy @@ -2226,6 +2260,7 @@ vowel/o-_2 [V] en-n vowel/o_3 [oU] en-sc [o] kk vowel/o-_3 [U] en-rp +vowel/o_4 [o] sw vowel/o-_4 [o] ro [o] am vowel/o_5 [o] vi-sgn @@ -2327,6 +2362,7 @@ vowel/oo_5 [O] bn [O] pl [O] is [O] sq + [O] as vowel/oo_en [O] en [O:] en [O@] en @@ -2368,6 +2404,7 @@ vowel/u [u] base [u] prs [u] ak [u:] wo + [u] as [u] bo [u] tt vowel/u# [u:] en-sc @@ -2392,7 +2429,6 @@ vowel/u#_4 [U] en-sc [y] ml [y] vi-sgn vowel/u_5 [U1] et - [u] sw [u] nso [u] tn vowel/u#_5 [y] vi @@ -2449,6 +2485,7 @@ vowel/u_bck2 [u] et [u:] fr [u:] la [u] es + [u] sw [u] fa [u] ht [u] kl @@ -2724,17 +2761,22 @@ w/w_ [w] base w/w@ [w] base [w] fr [w/] fr + [w] sw w/w2 [w2] base2 [w] pl + [w] sw [w] sq w/wa [w] base + [w] sw w/we [w] base [w] fr [w/] fr + [w] sw w/wi [w] base [w] fr [w/] fr [i] vi + [w] sw w/wi2 [i:] en [i:] en-n [i:] en-sc @@ -2746,11 +2788,14 @@ w/wi2 [i:] en w/wo [w] base [w] fr [w/] fr + [w] sw w/wu [w] base [w] fr [w/] fr + [w] sw w/xw [w] base [w/] fr + [w] sw x/b [b] base [b] fr [b;] ro @@ -2798,6 +2843,7 @@ x/dzh_ [dZ] base [dZ;] lt [dZ;] mk [dZ;] ru + [J] sw x/dz_pzd [dZ;] base [dZ;] mk [dZ;] ko @@ -2814,5 +2860,6 @@ x/g2 [g] base [g;] bg [g] es [g] is + [g] sw x/g2_ [g-] en x/g3 [g] ru diff --git a/phsource/m/mu b/phsource/m/mu index 9d60e925a7d9788e516022382941f4706afe669b..fe3d91b460d799744e75ab158b05312fd7fba10b 100644 GIT binary patch literal 1614 zcmd6n%WD%+6vn@q%p~(jCNE7)6Kic^8=+cLLB)z4T7?$6s3r@m;3|lsB8Ur@!G&)0 zFL2{dSN;W2X5msnq3*MHUZuqnIyOnbYTwXKEC@PIlp|jy>)S|)4sH%1Gsz7 zK$rdK$2Z^j;oLW${#uB&ZH%6Hhn~Bu`Pw%3NdosZm|wA=UFBF3=oo=r(+8T|72fy5 zLSmo|G(!Uj<=gvyQhk5ld^`Ld(ID0)2?c*Z zsP`WdYG4b?I7%WVOp#KJafo>wisdyOV6fqHM62eI$rCN(Oj1u}1gk*dp_E4m)^K9h0&wIB3 zdq>+D@z4jr5+(M~M;%UA@9JY7GHZHGAM?~Rf zS=kfU|EAmX#+7FtQsc@@H84eqU#!1*!!F|yZsR#N@Dg{>!U9fWNo5Ns7>kS+PILV_ zR?$X>YiC&bvp7Nr6j|%=?WIJvuV>b{jo8v_J>v)rPfx_)~>Zbv=*&2V5@>fR05)cAP8QH zsEE{yc=S|y5Dy+iu!kr;cv0%zgNOVHJ$TZBe&1}S&7nv0cr)L5^JcUAnKv^#Gk&T# zJANSq;P!nJ*V)(peCv}RjD2gVIg+1HDQY&Ba(QR8e}< z&W9^TpywQzT3>dzb-TCBj3DPh9w>*(@@m-E5$Fz_#vr<}7cEG`hJ!dZ4p2VJyms=rBiN zYMXsT^&$2qU1qJVHllJzey^7!@(J**&#JF&wqu&*Bw4QQz;e?5KP)G0&9W0SIF25& z%c7M$bF?=40USgg9<50+Nt0{?*|@YMY1PvjXic;f$q92IX>QG@)mZ4+^f*~3Xfd^0 z(#xJmD{d)rCW&f#!dFa)ibYjx^9i*qzpe!weRIj~Q_{C|tjMuc@{hlpxasCXAJqJc z@wmR%SW&fj)f!D#s&%$$-$`iw#)&vuzi?NhS}%A%w`zB%x*S3Y*YFg#$gT|oti}Nx z!Z7CW5)auHa2Q>*4vb-*)C;WPF6?J^KhEM3CNRXvAXjyhq({P8wrNF9_yxp-fkWnw zs#=K$CMUpA`yxAIQ)Or#ceRPSk(S}Jvb2#u@9NG}X|1;_QPcRAj?FR}+y!MUXDUWX zQCl@$d!?%WZdLM{PF-xHS?gDh()=K_C-TwpgA)JT+ diff --git a/phsource/ph_irish b/phsource/ph_irish index 8cdc4602..ee7360b2 100755 --- a/phsource/ph_irish +++ b/phsource/ph_irish @@ -1,6 +1,6 @@ // Irish Phonemes //Please contact espeak.gaeilge@gmail.com -// Version 2.7 2013 +// Version 2.8 2013 // short vowels diff --git a/phsource/ph_swahili b/phsource/ph_swahili index fe3c7ac0..c87cb045 100644 --- a/phsource/ph_swahili +++ b/phsource/ph_swahili @@ -7,42 +7,34 @@ phoneme i vowel starttype #i endtype #i - length 165 + length 200 FMT(vowel/i) endphoneme phoneme e vowel starttype #e endtype #e - length 180 + length 210 FMT(vowel/e_mid2) endphoneme -phoneme a/ - vowel starttype #@ endtype #@ - length 180 - FMT(vowel/a#_2) -endphoneme - - phoneme a vowel starttype #a endtype #a - length 180 - ChangeIfUnstressed(a/) + length 210 FMT(vowel/a_5) endphoneme phoneme o vowel starttype #o endtype #o - length 180 - FMT(vowel/0_2) + length 210 + FMT(vowel/o_4) endphoneme phoneme u vowel starttype #u endtype #u - length 170 - FMT(vowel/u_5) + length 200 + FMT(vowel/u_bck2) endphoneme @@ -57,5 +49,201 @@ phoneme d // dental variant of /d/ import_phoneme base2/d endphoneme +phoneme z + vcd alv frc sibilant + voicingswitch s + lengthmod 6 + Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 + + IF KlattSynth THEN + Vowelin f1=0 f2=1390 -300 300 f3=0 0 + Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk + ENDIF + + + FMT(voc/z_pzd_) addWav(ufric/s_pzd, 75) +endphoneme + +phoneme t + vls alv stop + voicingswitch d + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + WAV(ustop/t_hard, 70) +endphoneme + +phoneme T + vls dnt frc + voicingswitch D + lengthmod 3 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + WAV(ufric/th_,50) +endphoneme + +phoneme S + vls pla frc sibilant + voicingswitch Z + lengthmod 3 + Vowelin f1=0 f2=2100 100 300 f3=-100 80 + Vowelout f1=0 f2=2100 100 300 f3=-100 80 + + + WAV(ufric/sh3) +endphoneme + +phoneme s + vls alv frc sibilant + voicingswitch z + lengthmod 3 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + + WAV(ufric/s_,60) +endphoneme + +phoneme p + vls blb stop + voicingswitch b + lengthmod 2 + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 + + + WAV(ustop/p) +endphoneme + + + + + +phoneme n^ + vcd pal nasal palatal + ipa ɲ + Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate + lengthmod 4 + + IF KlattSynth THEN + VowelStart(klatt/n^@) + FMT(klatt/n^) + ENDIF + + NextVowelStarts + VowelStart(n^/n^@) + VowelStart(n^/n^a) + VowelStart(n^/n^e) + VowelStart(n^/n^i) + VowelStart(n^/n^o) + VowelStart(n^/n^u) + EndSwitch + + + FMT(n^/n^_) + +endphoneme + +phoneme N + vcd vel nasal + Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk + lengthmod 8 // longer than 'n' + + IF KlattSynth THEN + Vowelin f1=0 f2=2100 50 300 f3=0 80 + FMT(klatt/nn) + ENDIF + + NextVowelStarts + VowelStart(nn/nn@) + VowelStart(nn/nna) + VowelStart(nn/nne) + VowelStart(nn/nni) + VowelStart(nn/nno) + VowelStart(nn/nnu) + EndSwitch + + + FMT(nn/nn_,50) + +endphoneme + + + +phoneme w + liquid + lengthmod 7 + + + NextVowelStarts + VowelStart(w/w@) + VowelStart(w/wa) + VowelStart(w/we) + VowelStart(w/wi) + VowelStart(w/wo) + VowelStart(w/wu) + EndSwitch + + VowelEnding(w/xw, -30) + + + FMT(w/w2) + + +endphoneme + + +phoneme k + vls vel stop + voicingswitch g + lengthmod 2 + Vowelin f1=0 f2=2300 200 300 f3=-200 80 + Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 + + IF KlattSynth THEN + Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 + ENDIF + + + WAV(ustop/k_,50) +endphoneme + + +phoneme J + vcd pal afr sibilant palatal + voicingswitch c + lengthmod 5 + Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 + Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1 + + + + IF KlattSynth THEN + FMT(klatt/dz_pzd) addWav(x/dzh_, 45) + ENDIF + + IF nextPh(isNotVowel) THEN + FMT(dzh/dz_pzd) addWav(x/dzh_, 45) + ELSE + FMT(dzh/dz_pzd) addWav(x/dzh_, 45) + ENDIF + +endphoneme + +phoneme g + vcd vel stop + voicingswitch k + lengthmod 5 + Vowelin f1=2 f2=2300 200 300 f3=-300 80 + Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk + + IF PreVoicing THEN + FMT(g/xg) + ENDIF + + + FMT(g/g) addWav(x/g2, 50) +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 1d59c748..2e63bc09 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1928,6 +1928,15 @@ include ph_telugu phonemetable si hi include ph_sinhala +phonemetable gu hi +include ph_gujarati + +phonemetable as bn +include ph_assamese + + + + phonemetable tn base include ph_setswana diff --git a/src/compiledata.cpp b/src/compiledata.cpp index b633057a..662e5087 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -1639,6 +1639,12 @@ int LoadSpect(const char *path, int control) } spectseq->Load(stream); + if(spectseq->frames == NULL) + { + error("Bad vowel file, no frames: '%s'",path); + return(0); + } + // do we need additional klatt data ? for(frame=0; frame < spectseq->numframes; frame++) { @@ -3616,6 +3622,11 @@ make_envs(); "# ------- ---------\n"); + fprintf(f_errors, "Source data path = '%s'\n", path_source); + strncpy0(fname,path_phfile.mb_str(wxConvLocal),sizeof(fname)); + fprintf(f_errors, "Master phonemes file = '%s'\n", fname); + fprintf(f_errors, "Output to '%s/'\n\n", path_home); + sprintf(fname,"%s/%s",path_home,"phondata"); f_phdata = fopen_log(f_errors,fname,"wb"); diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 337e3aa6..bfec9aca 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -919,8 +919,8 @@ int isHexDigit(int c) } -static void copy_rule_string(char *string, int &state) -{//=================================================== +static void copy_rule_string(char *string, int *state_out) +{//======================================================= // state 0: conditional, 1=pre, 2=match, 3=post, 4=phonemes static char *outbuf[5] = {rule_cond, rule_pre, rule_match, rule_post, rule_phonemes}; static int next_state[5] = {2,2,4,4,4}; @@ -934,6 +934,7 @@ static void copy_rule_string(char *string, int &state) int value; int literal; int hexdigit_input = 0; + int state = *state_out; MNEM_TAB *mr; if(string[0] == 0) return; @@ -1174,7 +1175,7 @@ static void copy_rule_string(char *string, int &state) if(c == 0) break; } - state = next_state[state]; + *state_out = next_state[state]; } // end of copy_rule_string @@ -1213,14 +1214,14 @@ static char *compile_rule(char *input) case ')': // end of prefix section *p = 0; state = 1; - copy_rule_string(buf,state); + copy_rule_string(buf,&state); p = buf; break; case '(': // start of suffix section *p = 0; state = 2; - copy_rule_string(buf,state); + copy_rule_string(buf,&state); state = 3; p = buf; if(input[ix+1] == ' ') @@ -1234,14 +1235,14 @@ static char *compile_rule(char *input) case '\r': case 0: // end of line *p = 0; - copy_rule_string(buf,state); + copy_rule_string(buf,&state); finish=1; break; case '\t': // end of section section case ' ': *p = 0; - copy_rule_string(buf,state); + copy_rule_string(buf,&state); p = buf; break; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 87ef77b0..940b9b44 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -526,7 +526,7 @@ unsigned short ipa1[96] = { 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f }; -#define N_PHON_OUT 500 +#define N_PHON_OUT 500 // realloc increment static char *phon_out_buf = NULL; static int phon_out_size = 0; @@ -965,7 +965,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) -static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int &vowel_count, int &stressed_syllable, int control) +static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int *vowel_count, int *stressed_syllable, int control) {//================================================================================================================================================= // control = 1, set stress to 1 for forced unstressed vowels unsigned char phcode; @@ -992,7 +992,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * { /* primary stress on preceeding vowel */ j = count - 1; - while((j > 0) && (stressed_syllable == 0) && (vowel_stress[j] < 4)) + while((j > 0) && (*stressed_syllable == 0) && (vowel_stress[j] < 4)) { if((vowel_stress[j] != 0) && (vowel_stress[j] != 1)) { @@ -1018,7 +1018,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * } else { - if((ph->std_length < 4) || (stressed_syllable == 0)) + if((ph->std_length < 4) || (*stressed_syllable == 0)) { stress = ph->std_length; @@ -1058,14 +1058,14 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * *ph_out = 0; /* has the position of the primary stress been specified by $1, $2, etc? */ - if(stressed_syllable > 0) + if(*stressed_syllable > 0) { - if(stressed_syllable >= count) - stressed_syllable = count-1; // the final syllable + if(*stressed_syllable >= count) + *stressed_syllable = count-1; // the final syllable - vowel_stress[stressed_syllable] = 4; + vowel_stress[*stressed_syllable] = 4; max_stress = 4; - primary_posn = stressed_syllable; + primary_posn = *stressed_syllable; } if(max_stress == 5) @@ -1090,8 +1090,8 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * max_stress = 4; } - stressed_syllable = primary_posn; - vowel_count = count; + *stressed_syllable = primary_posn; + *vowel_count = count; return(max_stress); } // end of GetVowelStress @@ -1113,7 +1113,7 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress) signed char vowel_stress[N_WORD_PHONEMES/2]; strcpy((char *)phonetic,word); - max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 0); + max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 0); if(new_stress >= 4) { @@ -1240,7 +1240,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, unstressed_word = 1; } - max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); + max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1); if((max_stress < 0) && dictionary_flags) { max_stress = 0; @@ -1542,6 +1542,17 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, vowel_stress[stressed_syllable] = 4; max_stress = 4; break; + + case 13: // LANG=ml, 1st unless 1st vowel is short and 2nd is long + if(stressed_syllable == 0) + { + stressed_syllable = 1; + if((vowel_length[1] == 0) && (vowel_count > 2) && (vowel_length[2] > 0)) + stressed_syllable = 2; + vowel_stress[stressed_syllable] = 4; + max_stress = 4; + } + break; } /* now guess the complete stress pattern */ @@ -3040,7 +3051,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(tr->transpose_min > 0) { strncpy0(word_buf,word, N_WORD_BYTES); - wlen = TransposeAlphabet(tr, word_buf); + wlen = TransposeAlphabet(tr, word_buf); // bit 6 indicates compressed characters word = word_buf; } else diff --git a/src/espeak.cpp b/src/espeak.cpp index 2e769e0b..dbd83f22 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -80,6 +80,7 @@ static const char *help_text = "--split=\"\"\n" "\t Starts a new WAV file every . Used with -w\n" "--stdout Write speech output to stdout\n" +"--version Shows version number and date, and location of espeak-data\n" "--voices=\n" "\t List the available voices for the specified language.\n" "\t If is omitted, then list all voices.\n"; diff --git a/src/event.cpp b/src/event.cpp index fe2aa9b0..e143891d 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -41,7 +41,7 @@ // event=0x%x\n",event); @@ -147,17 +147,17 @@ ENTER("event_display"); static espeak_EVENT* event_copy (espeak_EVENT* event) { ENTER("event_copy"); - + if (event==NULL) { return NULL; } - + espeak_EVENT* a_event=(espeak_EVENT*)malloc(sizeof(espeak_EVENT)); if (a_event) { memcpy(a_event, event, sizeof(espeak_EVENT)); - + switch(event->type) { case espeakEVENT_MARK: @@ -167,14 +167,14 @@ static espeak_EVENT* event_copy (espeak_EVENT* event) a_event->id.name = strdup(event->id.name); } break; - + default: break; } } - + event_display(a_event); - + return a_event; } @@ -288,7 +288,7 @@ ENTER("event_declare"); return EE_INTERNAL_ERROR; } - int a_status = pthread_mutex_lock(&my_mutex); + int a_status = pthread_mutex_lock(&my_mutex); espeak_ERROR a_error = EE_OK; if (!a_status) @@ -310,7 +310,7 @@ ENTER("event_declare"); // // if (!a_status && !my_event_is_running && (a_error == EE_OK)) // { -// // quit when command is actually started +// // quit when command is actually started // // (for possible forthcoming 'end of command' checks) SHOW_TIME("event_declare > post my_sem_start_is_required\n"); sem_post(&my_sem_start_is_required); @@ -400,18 +400,18 @@ ENTER("sleep_until_timeout_or_stop_request"); add_time_in_ms( &ts, time_in_ms); - SHOW("polling_thread > sleep_until_timeout_or_stop_request > start sem_timedwait from %d.%09lu to %d.%09lu \n", + SHOW("polling_thread > sleep_until_timeout_or_stop_request > start sem_timedwait from %d.%09lu to %d.%09lu \n", to.tv_sec, to.tv_nsec, ts.tv_sec, ts.tv_nsec); - while ((err = sem_timedwait(&my_sem_stop_is_required, &ts)) == -1 + while ((err = sem_timedwait(&my_sem_stop_is_required, &ts)) == -1 && errno == EINTR) { continue; // Restart when interrupted by handler } assert (gettimeofday(&tv, NULL) != -1); - SHOW("polling_thread > sleep_until_timeout_or_stop_request > stop sem_timedwait %d.%09lu \n", + SHOW("polling_thread > sleep_until_timeout_or_stop_request > stop sem_timedwait %d.%09lu \n", tv.tv_sec, tv.tv_usec*1000); if (err == 0) @@ -425,7 +425,7 @@ ENTER("sleep_until_timeout_or_stop_request"); //> // unlocked\n"); a_stop_is_required=0; - a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required); - if ((a_status==0) && a_stop_is_required) + a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required); // NOTE: may set a_stop_is_required to -1 + if ((a_status==0) && (a_stop_is_required > 0)) { SHOW("polling_thread > stop required (%d)\n", __LINE__); while(0 == sem_trywait(&my_sem_stop_is_required)) @@ -514,27 +514,27 @@ ENTER("polling_thread"); } // In this loop, my_event_is_running = 1 - while (head && !a_stop_is_required) + while (head && (a_stop_is_required <= 0)) { SHOW_TIME("polling_thread > check head\n"); while(0 == sem_trywait(&my_sem_start_is_required)) { }; - + espeak_EVENT* event = (espeak_EVENT*)(head->data); assert(event); - + uint32_t time_in_ms = 0; - - int err = get_remaining_time((uint32_t)event->sample, - &time_in_ms, + + int err = get_remaining_time((uint32_t)event->sample, + &time_in_ms, &a_stop_is_required); - if (a_stop_is_required) + if (a_stop_is_required > 0) { break; } else if (err != 0) - { + { // No available time: the event is deleted. SHOW("polling_thread > %s\n","audio device down"); a_status = pthread_mutex_lock(&my_mutex); @@ -548,22 +548,22 @@ ENTER("polling_thread"); if (my_callback) { event_notify(event); - // the user_data (and the type) are cleaned to be sure + // the user_data (and the type) are cleaned to be sure // that MSG_TERMINATED is called twice (at delete time too). event->type=espeakEVENT_LIST_TERMINATED; event->user_data=NULL; } - + a_status = pthread_mutex_lock(&my_mutex); SHOW_TIME("polling_thread > locked\n"); event_delete( (espeak_EVENT*)pop()); a_status = pthread_mutex_unlock(&my_mutex); SHOW_TIME("polling_thread > unlocked\n"); - + a_stop_is_required=0; a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required); - - if ((a_status==0) && a_stop_is_required) + + if ((a_status==0) && (a_stop_is_required > 0)) { SHOW("polling_thread > stop required (%d)\n", __LINE__); while(0 == sem_trywait(&my_sem_stop_is_required)) @@ -580,17 +580,17 @@ ENTER("polling_thread"); a_stop_is_required = sleep_until_timeout_or_stop_request(time_in_ms); } } - + a_status = pthread_mutex_lock(&my_mutex); SHOW_TIME("polling_thread > locked\n"); - + SHOW_TIME("polling_thread > my_event_is_running = 0\n"); my_event_is_running = 0; - - if(!a_stop_is_required) + + if(a_stop_is_required <= 0) { a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required); - if ((a_status==0) && a_stop_is_required) + if ((a_status==0) && (a_stop_is_required > 0)) { SHOW("polling_thread > stop required (%d)\n", __LINE__); while(0 == sem_trywait(&my_sem_stop_is_required)) @@ -606,8 +606,8 @@ ENTER("polling_thread"); a_status = pthread_mutex_unlock(&my_mutex); SHOW_TIME("polling_thread > unlocked\n"); - if (a_stop_is_required) - { + if (a_stop_is_required > 0) + { SHOW("polling_thread > %s\n","stop required!"); // no mutex required since the stop command is synchronous // and waiting for my_sem_stop_is_acknowledged @@ -643,13 +643,13 @@ static espeak_ERROR push(void* the_data) SHOW("event > push > %s\n", "EE_BUFFER_FULL"); return EE_BUFFER_FULL; } - + node *n = (node *)malloc(sizeof(node)); if (n == NULL) { return EE_INTERNAL_ERROR; } - + if (head == NULL) { head = n; @@ -660,13 +660,13 @@ static espeak_ERROR push(void* the_data) tail->next = n; tail = n; } - + tail->next = NULL; tail->data = the_data; - + node_counter++; SHOW("event > push > counter=%d (uid=%d)\n",node_counter,((espeak_EVENT*)the_data)->unique_identifier); - + return EE_OK; } @@ -674,9 +674,9 @@ static void* pop() { ENTER("event > pop"); void* the_data = NULL; - + assert((!head && !tail) || (head && tail)); - + if (head != NULL) { node* n = head; @@ -686,12 +686,12 @@ static void* pop() node_counter--; SHOW("event > pop > event=0x%x (counter=%d, uid=%d)\n",the_data, node_counter,((espeak_EVENT*)the_data)->unique_identifier); } - + if(head == NULL) { tail = NULL; } - + return the_data; } @@ -699,10 +699,10 @@ static void* pop() static void init() { ENTER("event > init"); - + while (event_delete( (espeak_EVENT*)pop() )) {} - + node_counter = 0; } @@ -711,7 +711,7 @@ static void init() void event_terminate() { ENTER("event_terminate"); - + if (my_thread) { pthread_cancel(my_thread); diff --git a/src/fifo.cpp b/src/fifo.cpp index bf9cc83f..445919d5 100644 --- a/src/fifo.cpp +++ b/src/fifo.cpp @@ -43,7 +43,7 @@ //> // post my_sem_start_is_required\n"); sem_post(&my_sem_start_is_required); int val=1; - while (val) + while (val > 0) { usleep(50000); // TBD: event? sem_getvalue(&my_sem_start_is_required, &val); @@ -148,8 +148,8 @@ espeak_ERROR fifo_add_command (t_espeak_command* the_command) espeak_ERROR fifo_add_commands (t_espeak_command* command1, t_espeak_command* command2) { ENTER("fifo_add_command"); - - int a_status = pthread_mutex_lock(&my_mutex); + + int a_status = pthread_mutex_lock(&my_mutex); espeak_ERROR a_error = EE_OK; if (!a_status) @@ -172,12 +172,12 @@ espeak_ERROR fifo_add_commands (t_espeak_command* command1, t_espeak_command* co if (!a_status && !my_command_is_running && (a_error == EE_OK)) { - // quit when one command is actually started + // quit when one command is actually started // (for possible forthcoming 'end of command' checks) SHOW_TIME("fifo_add_command > post my_sem_start_is_required\n"); sem_post(&my_sem_start_is_required); int val=1; - while (val) + while (val > 0) { usleep(50000); // TBD: event? sem_getvalue(&my_sem_start_is_required, &val); @@ -275,9 +275,9 @@ static int sleep_until_start_request_or_inactivity() int a_start_is_required=0; // Wait for the start request (my_sem_start_is_required). - // Besides this, if the audio stream is still busy, - // check from time to time its end. - // The end of the stream is confirmed by several checks + // Besides this, if the audio stream is still busy, + // check from time to time its end. + // The end of the stream is confirmed by several checks // for filtering underflow. // int i=0; @@ -306,18 +306,18 @@ static int sleep_until_start_request_or_inactivity() add_time_in_ms( &ts, INACTIVITY_TIMEOUT); - SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n", + SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n", to.tv_sec, to.tv_nsec, ts.tv_sec, ts.tv_nsec); - while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1 + while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1 && errno == EINTR) { continue; } assert (gettimeofday(&tv, NULL) != -1); - SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err, + SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err, tv.tv_sec, tv.tv_usec*1000); if (err==0) @@ -336,8 +336,8 @@ static void close_stream() { SHOW_TIME("fifo > close_stream > ENTER\n"); - // Warning: a wave_close can be already required by - // an external command (espeak_Cancel + fifo_stop), if so: + // Warning: a wave_close can be already required by + // an external command (espeak_Cancel + fifo_stop), if so: // my_stop_is_required = 1; int a_status = pthread_mutex_lock(&my_mutex); @@ -359,7 +359,7 @@ static void close_stream() a_stop_is_required = my_stop_is_required; a_status = pthread_mutex_unlock(&my_mutex); - + if (a_stop_is_required) { // acknowledge the stop request @@ -438,7 +438,7 @@ static void* say_thread(void*) }; if (my_stop_is_required) - { + { SHOW_TIME("say_thread > my_command_is_running = 0\n"); my_command_is_running = 0; } @@ -454,7 +454,7 @@ static void* say_thread(void*) } if (my_stop_is_required) - { + { // no mutex required since the stop command is synchronous // and waiting for my_sem_stop_is_acknowledged init(1); @@ -464,16 +464,16 @@ static void* say_thread(void*) while(0==sem_trywait(&my_sem_start_is_required)) { }; - + // acknowledge the stop request SHOW_TIME("say_thread > post my_sem_stop_is_acknowledged\n"); int a_status = sem_post(&my_sem_stop_is_acknowledged); assert( a_status != -1); } // and wait for the next start - SHOW_TIME("say_thread > wait for my_sem_start_is_required\n"); + SHOW_TIME("say_thread > wait for my_sem_start_is_required\n"); } - + return NULL; } @@ -517,7 +517,7 @@ static espeak_ERROR push(t_espeak_command* the_command) { return EE_INTERNAL_ERROR; } - + if (head == NULL) { head = n; @@ -528,7 +528,7 @@ static espeak_ERROR push(t_espeak_command* the_command) tail->next = n; tail = n; } - + tail->next = NULL; tail->data = the_command; @@ -564,7 +564,7 @@ static t_espeak_command* pop() } display_espeak_command(the_command); - + return the_command; } diff --git a/src/intonation.cpp b/src/intonation.cpp index b6dfa71e..e4c68bc4 100644 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -338,7 +338,7 @@ static void count_pitch_vowels(int start, int end, int clause_end) number_body = 0; number_tail = 0; /* number between tonic syllable and next primary */ last_primary = -1; - + for(ix=start; ixonset << 8; used_onset = 1; - } + } if(n_steps > tune->head_max_steps) n_steps = tune->head_max_steps; @@ -697,7 +697,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t n_primary--; if((tn->backwards) && (n_primary < 2)) { - pitch = tn->backwards[n_primary] << 8; + pitch = tn->backwards[n_primary] << 8; } } @@ -745,7 +745,7 @@ static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_ if(n_increments <= 0) return; - + if(n_increments > 1) { increment = increment / n_increments; @@ -802,7 +802,7 @@ static int calc_pitches2(int start, int end, int tune_number) if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE) { - tone_posn = tone_posn2; // put tone on the penultimate stressed word + tone_posn = tone_posn2; // put tone on the penultimate stressed word } ix = SetHeadIntonation(tune, ix, tone_posn, 0); @@ -811,7 +811,7 @@ static int calc_pitches2(int start, int end, int tune_number) /* tonic syllable */ /******************/ - + // if(tn->flags & T_EMPH) // { // syllable_tab[ix].flags |= SYL_EMPHASIS; @@ -836,7 +836,7 @@ static int calc_pitches2(int start, int end, int tune_number) /* tail, after the tonic syllable */ /**********************************/ - + SetPitchGradient(ix, end, tune->tail_start, tune->tail_end); return(tone_pitch_env); @@ -877,7 +877,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE) { - tone_posn = tone_posn2; // put tone on the penultimate stressed word + tone_posn = tone_posn2; // put tone on the penultimate stressed word } ix = calc_pitch_segment(ix,tone_posn, th, tn, PRIMARY, continuing); // ix = SetBodyIntonation(&tunes[0], ix, tone_posn, 0); @@ -887,7 +887,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) /* tonic syllable */ /******************/ - + if(tn->flags & T_EMPH) { syllable_tab[ix].flags |= SYL_EMPHASIS; @@ -912,7 +912,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) /* tail, after the tonic syllable */ /**********************************/ - + SetPitchGradient(ix, end, tn->tail_start, tn->tail_end); return(tone_pitch_env); @@ -1037,7 +1037,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) if(tph->mnemonic == 0x343132) // [214] prev_p->tone_ph = PhonemeCode2('3','5'); else - prev_p->tone_ph = PhonemeCode2('2','1'); + prev_p->tone_ph = PhonemeCode2('2','1'); } if((prev_tph->mnemonic == 0x3135) && (tph->mnemonic == 0x3135)) // [51] + [51] { @@ -1176,7 +1176,7 @@ void CalcPitches(Translator *tr, int clause_type) } else { - group_tone = tr->punct_to_tone[option][clause_type]; + group_tone = tr->punct_to_tone[option][clause_type]; group_tone_emph = tr->punct_to_tone[option][5]; // emphatic form of statement group_tone_comma = tr->punct_to_tone[option][1]; // emphatic form of statement } @@ -1283,14 +1283,14 @@ void CalcPitches(Translator *tr, int clause_type) calc_pitches(option, st_start, st_ix, group_tone); } - + // unpack pitch data st_ix=0; for(ix=ph_start; ix < ph_end; ix++) { p = &phoneme_list[ix]; p->stresslevel = syllable_tab[st_ix].stress; - + if(p->synthflags & SFLAG_SYLLABLE) { syl = &syllable_tab[st_ix]; @@ -1327,11 +1327,11 @@ if(p->tone_ph) { p->stresslevel |= 8; // emphasized } - + st_ix++; } } } // end of CalcPitches - + diff --git a/src/numbers.cpp b/src/numbers.cpp index 4e21ae2b..aec0dcbf 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -847,47 +847,50 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) // speak in the language for this alphabet (or English) ph_buf[2] = SetTranslator2(WordToString2(language)); - if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af)) + if(translator2 != NULL) { - // Special case for Korean letters. - // break a syllable hangul into 2 or 3 individual jamo - - hangul_buf[0] = ' '; - p3 = &hangul_buf[1]; - if((initial = (code/28)/21) != 11) + if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af)) { - p3 += utf8_out(initial + 0x1100, p3); + // Special case for Korean letters. + // break a syllable hangul into 2 or 3 individual jamo + + hangul_buf[0] = ' '; + p3 = &hangul_buf[1]; + if((initial = (code/28)/21) != 11) + { + p3 += utf8_out(initial + 0x1100, p3); + } + utf8_out(((code/28) % 21) + 0x1161, p3); // medial + utf8_out((code % 28) + 0x11a7, &p3[3]); // final + p3[6] = ' '; + p3[7] = 0; + ph_buf[3] = 0; + TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL); + SetWordStress(translator2, &ph_buf[3], NULL, -1, 0); + } + else + { + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); } - utf8_out(((code/28) % 21) + 0x1161, p3); // medial - utf8_out((code % 28) + 0x11a7, &p3[3]); // final - p3[6] = ' '; - p3[7] = 0; - ph_buf[3] = 0; - TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL); - SetWordStress(translator2, &ph_buf[3], NULL, -1, 0); - } - else - { - LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); - } - if(ph_buf[3] == phonSWITCH) - { - // another level of language change - ph_buf[2] = SetTranslator2(&ph_buf[4]); - LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); - } + if(ph_buf[3] == phonSWITCH) + { + // another level of language change + ph_buf[2] = SetTranslator2(&ph_buf[4]); + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + } - SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table + SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table - if(ph_buf[3] != 0) - { - ph_buf[0] = phonPAUSE; - ph_buf[1] = phonSWITCH; - len = strlen(&ph_buf[3]) + 3; - ph_buf[len] = phonSWITCH; // switch back - ph_buf[len+1] = tr->phoneme_tab_ix; - ph_buf[len+2] = 0; + if(ph_buf[3] != 0) + { + ph_buf[0] = phonPAUSE; + ph_buf[1] = phonSWITCH; + len = strlen(&ph_buf[3]) + 3; + ph_buf[len] = phonSWITCH; // switch back + ph_buf[len+1] = tr->phoneme_tab_ix; + ph_buf[len+2] = 0; + } } } } diff --git a/src/readclause.cpp b/src/readclause.cpp index 4305c0ab..c2d69272 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -1259,7 +1259,7 @@ static const char *VoiceFromStack() -static void ProcessParamStack(char *outbuf, int &outix) +static void ProcessParamStack(char *outbuf, int *outix) {//==================================================== // Set the speech parameters from the parameter stack int param; @@ -1308,8 +1308,8 @@ static void ProcessParamStack(char *outbuf, int &outix) } speech_parameters[param] = new_parameters[param]; - strcpy(&outbuf[outix],buf); - outix += strlen(buf); + strcpy(&outbuf[*outix],buf); + *outix += strlen(buf); } } } // end of ProcessParamStack @@ -1333,7 +1333,7 @@ static PARAM_STACK *PushParamStack(int tag_type) } // end of PushParamStack -static void PopParamStack(int tag_type, char *outbuf, int &outix) +static void PopParamStack(int tag_type, char *outbuf, int *outix) {//============================================================== // unwind the stack up to and including the previous tag of this type int ix; @@ -1503,10 +1503,14 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) if((tail[0]=='s') && (tail[1]=='t')) { +#ifdef PLATFORM_RISCOS + *value_out = 100; +#else double x; // convert from semitones to a frequency percentage - x = pow(double(2.0),double((value*sign)/12)) * 100; + x = pow((double)2.0,(double)((value*sign)/12)) * 100; *value_out = (int)x; +#endif return(2); // percentage } @@ -1734,7 +1738,7 @@ static void SetProsodyParameter(int param_type, wchar_t *attr1, PARAM_STACK *sp) } // end of SetProsodyParemeter -static int ReplaceKeyName(char *outbuf, int index, int &outix) +static int ReplaceKeyName(char *outbuf, int index, int *outix) {//=========================================================== // Replace some key-names by single characters, so they can be pronounced in different languages static MNEM_TAB keynames[] = { @@ -1753,14 +1757,14 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix) if((letter = LookupMnem(keynames, p)) != 0) { ix = utf8_out(letter, p); - outix = index + ix; + *outix = index + ix; return(letter); } return(0); } -static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outbuf, int self_closing) +static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, int self_closing) {//================================================================================================== // xml_buf is the tag and attributes with a zero terminator in place of the original '>' // returns a clause terminator value. @@ -1845,7 +1849,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb // closing tag if((tag_type = LookupMnem(ssmltags,&tag_name[1])) != HTML_NOSPACE) { - outbuf[outix++] = ' '; + outbuf[(*outix)++] = ' '; } tag_type += SSML_CLOSE; } @@ -1854,7 +1858,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if((tag_type = LookupMnem(ssmltags,tag_name)) != HTML_NOSPACE) { // separate SSML tags from the previous word (but not HMTL tags such as which can occur inside a word) - outbuf[outix++] = ' '; + outbuf[(*outix)++] = ' '; } if(self_closing && ignore_if_self_closing[tag_type]) @@ -1954,22 +1958,22 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb } sprintf(buf,"%c%dY",CTRL_EMBEDDED,value); - strcpy(&outbuf[outix],buf); - outix += strlen(buf); + strcpy(&outbuf[*outix],buf); + *outix += strlen(buf); - sayas_start = outix; + sayas_start = *outix; sayas_mode = value; // punctuation doesn't end clause during SAY-AS break; case SSML_SAYAS + SSML_CLOSE: if(sayas_mode == SAYAS_KEY) { - outbuf[outix] = 0; + outbuf[*outix] = 0; ReplaceKeyName(outbuf, sayas_start, outix); } - outbuf[outix++] = CTRL_EMBEDDED; - outbuf[outix++] = 'Y'; + outbuf[(*outix)++] = CTRL_EMBEDDED; + outbuf[(*outix)++] = 'Y'; sayas_mode = 0; break; @@ -1978,7 +1982,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb { // use the alias rather than the text ignore_text = 1; - outix += attrcopy_utf8(&outbuf[outix],attr1,n_outbuf-outix); + *outix += attrcopy_utf8(&outbuf[*outix],attr1,n_outbuf-*outix); } break; @@ -2008,8 +2012,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if((index = AddNameData(buf,0)) >= 0) { sprintf(buf,"%c%dM",CTRL_EMBEDDED,index); - strcpy(&outbuf[outix],buf); - outix += strlen(buf); + strcpy(&outbuf[*outix],buf); + *outix += strlen(buf); } } break; @@ -2036,8 +2040,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if(index >= 0) { sprintf(buf,"%c%dI",CTRL_EMBEDDED,index); - strcpy(&outbuf[outix],buf); - outix += strlen(buf); + strcpy(&outbuf[*outix],buf); + *outix += strlen(buf); sp->parameter[espeakSILENCE] = 1; } } @@ -2049,8 +2053,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if(uri_callback(1,uri,xmlbase) == 0) { sprintf(buf,"%c%dU",CTRL_EMBEDDED,index); - strcpy(&outbuf[outix],buf); - outix += strlen(buf); + strcpy(&outbuf[*outix],buf); + *outix += strlen(buf); sp->parameter[espeakSILENCE] = 1; } } @@ -2080,8 +2084,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if(value < 3) { // adjust prepause on the following word - sprintf(&outbuf[outix],"%c%dB",CTRL_EMBEDDED,value); - outix += 3; + sprintf(&outbuf[*outix],"%c%dB",CTRL_EMBEDDED,value); + *outix += 3; terminator = 0; } value = break_value[value]; @@ -2428,7 +2432,7 @@ f_input = f_in; // for GetC etc self_closing = 1; } - terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing); + terminator = ProcessSsmlTag(xml_buf,buf,&ix,n_buf,self_closing); if(terminator != 0) { diff --git a/src/speak.cpp b/src/speak.cpp index be869a09..f7f41c0b 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -114,6 +114,7 @@ static const char *help_text = "--split=\"\"\n" "\t Starts a new WAV file every . Used with -w\n" "--stdout Write speech output to stdout\n" +"--version Shows version number and date, and location of espeak-data\n" "--voices=\n" "\t List the available voices for the specified language.\n" "\t If is omitted, then list all voices.\n"; diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index dfbbd687..8319d47c 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -765,10 +765,11 @@ ENTER("espeak_Initialize"); #ifdef PLATFORM_RISCOS setlocale(LC_CTYPE,"ISO8859-1"); #else - if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL) + if(setlocale(LC_CTYPE,"C.UTF-8") == NULL) { if(setlocale(LC_CTYPE,"UTF-8") == NULL) - setlocale(LC_CTYPE,""); + if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL) + setlocale(LC_CTYPE,""); } #endif diff --git a/src/speak_lib.h b/src/speak_lib.h index 65d153c1..8a0b0406 100644 --- a/src/speak_lib.h +++ b/src/speak_lib.h @@ -314,10 +314,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then this pause is suppressed. - unique_identifier: message identifier; helpful for identifying later - data supplied to the callback. + unique_identifier: This must be either NULL, or point to an integer variable to + which eSpeak writes a message identifier number. + eSpeak includes this number in espeak_EVENT messages which are the result of + this call of espeak_Synth(). - user_data: pointer which will be passed to the callback function. + user_data: a pointer (or NULL) which will be passed to the callback function in + espeak_EVENT messages. Return: EE_OK: operation achieved EE_BUFFER_FULL: the command can not be buffered; diff --git a/src/spectdisplay.cpp b/src/spectdisplay.cpp index 080ed3fd..efeb8978 100644 --- a/src/spectdisplay.cpp +++ b/src/spectdisplay.cpp @@ -675,7 +675,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) break; case '[': // width-- - pk->pkright -= 1; + pk->pkright -= 10; if(pk->pkright < 0) pk->pkright = 0; display = 1; @@ -683,7 +683,21 @@ void SpectDisplay::OnKey(wxKeyEvent& event) break; case ']': // width++ - pk->pkright += 1; + pk->pkright += 10; + display = 1; + field = 4; + break; + + case '{': // width-- + pk->pkright -= 2; + if(pk->pkright < 0) + pk->pkright = 0; + display = 1; + field = 4; + break; + + case '}': // width++ + pk->pkright += 2; display = 1; field = 4; break; diff --git a/src/speech.h b/src/speech.h index 23fc7242..539678bc 100644 --- a/src/speech.h +++ b/src/speech.h @@ -43,7 +43,7 @@ //#define USE_PORTAUDIO //#define USE_PULSEAUDIO #define USE_NANOSLEEP -#define __cdecl +#define __cdecl //#define ESPEAK_API extern "C" #ifdef LIBRARY diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 81f654b0..1811bfab 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.11d 11.Jun.13"; +const char *version_string = "1.47.12 23.Sep.13"; const int version_phdata = 0x014709; int option_device_number = -1; @@ -67,7 +67,7 @@ int vowel_transition[4]; int vowel_transition0; int vowel_transition1; -int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which); +int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which); @@ -277,7 +277,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, // do we need to modify a frame for blending with a consonant? if((this_ph->type == phVOWEL) && (fmt_params->fmt2_addr == 0) && (fmt_params->use_vowelin)) { - seq_len_adjust += FormantTransition2(frames,nf,fmt_params->transition0,fmt_params->transition1,NULL,which); + seq_len_adjust += FormantTransition2(frames,&nf,fmt_params->transition0,fmt_params->transition1,NULL,which); } length1 = 0; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index a2444fc1..69db0ed5 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -336,7 +336,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q = wcmdq[wcmdq_tail]; q[0] = WCMD_WAVE2; q[1] = length | (wav_length << 16); // length in samples - q[2] = long64(&wavefile_data[index]); + q[2] = (long64)(&wavefile_data[index]); q[3] = wav_scale + (amp << 8); WcmdqInc(); return(length); @@ -357,7 +357,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q = wcmdq[wcmdq_tail]; q[0] = WCMD_WAVE; q[1] = x; // length in samples - q[2] = long64(&wavefile_data[index]); + q[2] = (long64)(&wavefile_data[index]); q[3] = wav_scale + (amp << 8); WcmdqInc(); @@ -372,7 +372,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q = wcmdq[wcmdq_tail]; q[0] = WCMD_WAVE; q[1] = len4*2; // length in samples - q[2] = long64(&wavefile_data[index+x]); + q[2] = (long64)(&wavefile_data[index+x]); q[3] = wav_scale + (amp << 8); WcmdqInc(); @@ -388,7 +388,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q = wcmdq[wcmdq_tail]; q[0] = WCMD_WAVE; q[1] = length; // length in samples - q[2] = long64(&wavefile_data[index+x]); + q[2] = (long64)(&wavefile_data[index+x]); q[3] = wav_scale + (amp << 8); WcmdqInc(); } @@ -613,7 +613,7 @@ static int VowelCloseness(frame_t *fr) } -int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which) +int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which) {//============================================================================================================================== int ix; int formant; @@ -639,7 +639,7 @@ static short vcolouring[N_VCOLOUR][5] = { frame_t *fr = NULL; - if(n_frames < 2) + if(*n_frames < 2) return(0); len = (data1 & 0x3f) * 2; @@ -714,8 +714,8 @@ if(voice->klattv[0]) if(flags & 8) { - fr = CopyFrame(seq[n_frames-1].frame,0); - seq[n_frames-1].frame = fr; + fr = CopyFrame(seq[*n_frames-1].frame,0); + seq[*n_frames-1].frame = fr; rms = RMS_GLOTTAL1; // degree of glottal-stop effect depends on closeness of vowel (indicated by f1 freq) @@ -723,7 +723,7 @@ if(voice->klattv[0]) } else { - fr = DuplicateLastFrame(seq,n_frames++,len); + fr = DuplicateLastFrame(seq,(*n_frames)++,len); if(len > 36) seq_len_adjust += (len - 36); @@ -737,7 +737,7 @@ if(voice->klattv[0]) if((vcolour > 0) && (vcolour <= N_VCOLOUR)) { - for(ix=0; ixlangopts.max_digits = 22; tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS; } + else + if(name2 == L('o','r')) + { + tr->letter_bits_offset = OFFSET_ORIYA; + } SetIndicLetters(tr); } break; @@ -1455,8 +1464,8 @@ SetLengthMods(tr,3); // all equal break; case L('t','a'): // Tamil - case L('m','l'): // Malayalam case L('k','n'): // Kannada + case L('m','l'): // Malayalam case L('m','r'): // Marathi case L('t','e'): // Telugu { @@ -1464,7 +1473,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; // use 'diminished' for unstressed final syllable tr->langopts.spelling_stress = 1; tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 @@ -1483,9 +1492,12 @@ SetLengthMods(tr,3); // all equal else if(name2 == L('m','l')) { + static const short stress_lengths_ml[8] = {180, 160, 240, 240, 0, 0, 260, 260}; + SetupTranslator(tr,stress_lengths_ml, stress_amps_equal); tr->letter_bits_offset = OFFSET_MALAYALAM; tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_OMIT_1_HUNDRED; tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY; + tr->langopts.stress_rule = 13; // 1st syllable, unless 1st vowel is short and 2nd is long } else if(name2 == L('k','n')) diff --git a/src/translate.cpp b/src/translate.cpp index b65d0ae9..8ae8c7e3 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -457,6 +457,8 @@ int IsSpace(unsigned int c) return(0); if((c >= 0x2500) && (c < 0x25a0)) return(1); // box drawing characters + if((c >= 0xfff9) && (c <= 0xffff)) + return(1); // unicode specials // if(wcschr(chars_space,c)) // return(1); return(iswspace(c)); @@ -859,6 +861,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt int wflags; int wmark; int was_unpronouncable = 0; + int loopcount; WORD_TAB wtab_null[8]; // translate these to get pronunciations of plural 's' suffix (different forms depending on @@ -1194,7 +1197,7 @@ if(end_type & SUFX_UNPRON) found = 0; confirm_prefix = 1; - for (int loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++) + for (loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++) { // Found a standard prefix, remove it and retranslate // loopcount guards against an endless loop @@ -1726,7 +1729,7 @@ int SetTranslator2(const char *new_language) translator2 = SelectTranslator(new_language); strcpy(translator2_language,new_language); - if(LoadDictionary(translator2, new_language, 0) != 0) + if(LoadDictionary(translator2, translator2->dictionary_name, 0) != 0) { SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table new_phoneme_tab = -1; @@ -2048,7 +2051,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa pre_pause = 1; } - plist2 = &ph_list2[n_ph_list2]; stress = 0; next_stress = 1; srcix = 0; @@ -2076,6 +2078,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa tr->prev_dict_flags[0] = 0; tr->prev_dict_flags[1] = 0; } + plist2 = &ph_list2[n_ph_list2]; if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER)) { @@ -2292,8 +2295,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa -static int EmbeddedCommand(unsigned int &source_index) -{//=================================================== +static int EmbeddedCommand(unsigned int *source_index_out) +{//======================================================= // An embedded command to change the pitch, volume, etc. // returns number of commands added to embedded_list @@ -2304,6 +2307,7 @@ static int EmbeddedCommand(unsigned int &source_index) unsigned char c; char *p; int cmd; + int source_index = *source_index_out; c = source[source_index]; if(c == '+') @@ -2351,6 +2355,7 @@ static int EmbeddedCommand(unsigned int &source_index) } embedded_list[embedded_ix++] = cmd + sign + (value << 8); + *source_index_out = source_index; return(1); } // end of EmbeddedCommand @@ -2758,7 +2763,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t } else { - embedded_count += EmbeddedCommand(source_index); + embedded_count += EmbeddedCommand(&source_index); prev_in_save = prev_in; // replace the embedded command by spaces memset(&source[srcix],' ',source_index-srcix); @@ -2928,19 +2933,25 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } } - letter_count++; - - if(tr->letter_bits_offset > 0) + if(c != ' ') { - if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) || - ((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250))) + letter_count++; + + if(tr->letter_bits_offset > 0) { - // Don't mix native and Latin characters in the same word - // Break into separate words - c = ' '; - space_inserted = 1; - word_flags |= FLAG_HYPHEN_AFTER; - next_word_flags |= FLAG_HYPHEN; + if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) || + ((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250))) + { + // Don't mix native and Latin characters in the same word + // Break into separate words + if(IsAlpha(prev_out)) + { + c = ' '; + space_inserted = 1; + word_flags |= FLAG_HYPHEN_AFTER; + next_word_flags |= FLAG_HYPHEN; + } + } } } @@ -2979,6 +2990,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre { int next2_in; utf8_in(&next2_in,&source[source_index + next_in_nbytes]); + + if((tr->translator_name == L('n','l')) && (letter_count==2) && (c == 'j') && (prev_in == 'I')) + { + // Dutch words may capitalise initial IJ, don't split + } + else if(IsAlpha(next2_in)) { // changing from upper to lower case, start new word at the last uppercase, if 3 or more letters diff --git a/src/voices.cpp b/src/voices.cpp index 4e8470a1..55cb68a1 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -177,7 +177,7 @@ static MNEM_TAB keyword_tab[] = { #define N_VOICE_VARIANTS 12 const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; -const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,6,7,0}; +const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,6,0}; const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0}; const char *variant_lists[3] = {variants_either, variants_male, variants_female}; @@ -248,11 +248,11 @@ static void SetToneAdjust(voice_t *voice, int *tone_pts) height2 = tone_pts[pt+1]; if((freq2 - freq1) > 0) { - rate = double(height2-height1)/(freq2-freq1); + rate = (double)(height2-height1)/(freq2-freq1); for(ix=freq1; ix 255) y = 255; voice->tone_adjust[ix] = y; @@ -488,11 +488,11 @@ static void VoiceFormant(char *p) return; if(freq >= 0) - voice->freq[formant] = int(freq * 2.56001); + voice->freq[formant] = (int)(freq * 2.56001); if(height >= 0) - voice->height[formant] = int(height * 2.56001); + voice->height[formant] = (int)(height * 2.56001); if(width >= 0) - voice->width[formant] = int(width * 2.56001); + voice->width[formant] = (int)(width * 2.56001); voice->freqadd[formant] = freqadd; } @@ -804,7 +804,7 @@ voice_t *LoadVoice(const char *vname, int control) n = sscanf(p,"%d %d",&pitch1,&pitch2); voice->pitch_base = (pitch1 - 9) << 12; voice->pitch_range = (pitch2 - pitch1) * 108; - factor = double(pitch1 - 82)/82; + factor = (double)(pitch1 - 82)/82; voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch } break; @@ -1067,7 +1067,6 @@ voice_t *LoadVoice(const char *vname, int control) if((ix = SelectPhonemeTableName(phonemes_name)) < 0) { fprintf(stderr,"Unknown phoneme table: '%s'\n",phonemes_name); - ix = 0; } voice->phoneme_tab_ix = ix; new_translator->phoneme_tab_ix = ix; @@ -1586,6 +1585,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) vp = voices[ix]; // is the main voice the required gender? skip=0; + if((gender != 0) && (vp->gender != gender)) { skip=1; @@ -1594,6 +1594,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) { skip=1; } + if(skip==0) { voices2[ix2++] = vp; @@ -1868,7 +1869,8 @@ espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector) void FreeVoiceList() {//================= - for(int ix=0; ixn_harmonic_peaks; ix++) { peaks[ix].freq1 += peaks[ix].freq_inc; - peaks[ix].freq = int(peaks[ix].freq1); + peaks[ix].freq = (int)peaks[ix].freq1; peaks[ix].height1 += peaks[ix].height_inc; - if((peaks[ix].height = int(peaks[ix].height1)) < 0) + if((peaks[ix].height = (int)peaks[ix].height1) < 0) peaks[ix].height = 0; peaks[ix].left1 += peaks[ix].left_inc; - peaks[ix].left = int(peaks[ix].left1); + peaks[ix].left = (int)peaks[ix].left1; if(ix < 3) { peaks[ix].right1 += peaks[ix].right_inc; - peaks[ix].right = int(peaks[ix].right1); + peaks[ix].right = (int)peaks[ix].right1; } else { @@ -1038,10 +1038,10 @@ static void AdvanceParameters() if(ix < 7) { peaks[ix].freq1 += peaks[ix].freq_inc; - peaks[ix].freq = int(peaks[ix].freq1); + peaks[ix].freq = (int)peaks[ix].freq1; } peaks[ix].height1 += peaks[ix].height_inc; - if((peaks[ix].height = int(peaks[ix].height1)) < 0) + if((peaks[ix].height = (int)peaks[ix].height1) < 0) peaks[ix].height = 0; } @@ -1157,7 +1157,7 @@ static int ApplyBreath(void) if((amp = wvoice->breath[ix]) != 0) { amp *= (peaks[ix].height >> 14); - value += int(resonator(&rbreath[ix],noise) * amp); + value += (int)resonator(&rbreath[ix],noise) * amp; } } #endif @@ -1255,7 +1255,7 @@ int Wavegen() for(pk=wvoice->n_harmonic_peaks+1; pk> 5]) * harmspect[h]); + total += ((int)sin_tab[theta >> 5] * harmspect[h]); theta += waveph; } while(h<=maxh) { - total -= (int(sin_tab[theta >> 5]) * harmspect[h]); + total -= ((int)sin_tab[theta >> 5] * harmspect[h]); theta += waveph; h++; } @@ -1807,27 +1807,27 @@ if(option_log_frames) if(ix < 7) { peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; - peaks[ix].freq = int(peaks[ix].freq1); + peaks[ix].freq = (int)peaks[ix].freq1; next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; peaks[ix].freq_inc = ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4; // lower headroom for fixed point math } peaks[ix].height1 = (fr1->fheight[ix] * v->height[ix]) << 6; - peaks[ix].height = int(peaks[ix].height1); + peaks[ix].height = (int)peaks[ix].height1; next = (fr2->fheight[ix] * v->height[ix]) << 6; peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2; if((ix <= 5) && (ix <= wvoice->n_harmonic_peaks)) { peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10; - peaks[ix].left = int(peaks[ix].left1); + peaks[ix].left = (int)peaks[ix].left1; next = (fr2->fwidth[ix] * v->width[ix]) << 10; peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length2; if(ix < 3) { peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10; - peaks[ix].right = int(peaks[ix].right1); + peaks[ix].right = (int)peaks[ix].right1; next = (fr2->fright[ix] * v->width[ix]) << 10; peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2; } From 8f98a0755c376065a43e4b1b46fd70e028229945 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 23 Sep 2013 22:26:38 +0100 Subject: [PATCH 3/7] 1.47.12 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/as_list | 323 +++++++++++++++++++++++++ dictsource/as_rules | 388 ++++++++++++++++++++++++++++++ dictsource/gu_list | 167 +++++++++++++ dictsource/gu_rules | 468 +++++++++++++++++++++++++++++++++++++ espeak-data/voices/test/as | 4 + espeak-data/voices/test/gu | 3 + phsource/ph_assamese | 94 ++++++++ phsource/ph_gujarati | 4 + 8 files changed, 1451 insertions(+) create mode 100644 dictsource/as_list create mode 100644 dictsource/as_rules create mode 100644 dictsource/gu_list create mode 100644 dictsource/gu_rules create mode 100644 espeak-data/voices/test/as create mode 100644 espeak-data/voices/test/gu create mode 100644 phsource/ph_assamese create mode 100644 phsource/ph_gujarati diff --git a/dictsource/as_list b/dictsource/as_list new file mode 100644 index 00000000..11a5429b --- /dev/null +++ b/dictsource/as_list @@ -0,0 +1,323 @@ +// Translation rules for Bengali +// This file is UTF8 encoded + +// Numbers +// Bengali numbers are changed to latin characters before translation +_0 S'unjO +_1 '&k +_2 d'uj +_3 t'in +_4 tS'ar +_5 p'a~tS +_6 tS#'Oj +_7 S'at +_8 'at.# +_9 n'Oj + +_2a d'u // with hundreds etc. +_6a tS#'a +_9a n'O + + +_10 d'OS +_11 '&garo +_12 b'arO +_13 t'erO +_14 tS'oddO +_15 p'OnerO +_16 S'olO +_17 S'OterO +_18 'at.#arO +_19 'uniS + +_20 k'uri // or b'iS ?? +_21 ek'uS +_22 b'ajS +_23 t'ejS +_24 tS'ObbiS +_25 p'O~tSiS +_26 tSh'abbiS +_27 Sat'aS +_28 'at.#aS +_29 unOtr'iS + +_30 tr'iS +_31 ekOtr'iS +_32 bOtr'iS +_33 tetr'iS +_34 tSowtr'iS +_35 pO~jtr'iS +_36 tS#'Otr'iS +_37 Sa~itr'iS +_38 at.tr'iS +_39 'unOtSOll'iS + +_40 tSOll'iS +_41 ektSOll'iS +_42 biall'iS +_43 tetall'iS +_44 tSoall'iS +_45 pO~jtall'iS +_46 tSetSOll'iS +_47 SatSOll'is +_48 atSOll'iS +_49 unOpO~tSaS + +_50 pO~tS'aS +_51 &kann'o +_52 bajann'o +_53 tepann'o +_54 tSujann'o +_55 pontSann'o +_56 tS#apann'o +_57 Satann'o +_58 at.ann'o +_59 unOS'at. + + +_60 s'at. +_61 ekSOt.t.'i +_62 baSOt.t.'i +_63 teSOt.t.'i +_64 tSowSOt.t.'i +_65 pojSOt.t.'i +_66 SeSOt.t.'i +_67 SatSOt.t.'i +_68 at.SOt.t.'i +_6X sat.t.'i +_69 unOSOtt'ur + +_70 SOtt'Or +_71 ekatt'Or +_72 bahatt'Or +_73 tehatt'Or +_74 tSuhatt'Or +_75 pOtSatt'Or +_76 tS#ijatt'Or +_77 Satatt'Or +_78 at.att'Or +_79 unOaS'i + +_80 aS'i +_81 &kaS'i +_82 beraS'i +_83 teraS'i +_84 tSuraS'i +_85 po~tSaS'i +_86 tS#ijaS'i +_87 SataS'i +_88 at.aS'i +_89 ,unOnObb'oj + +_90 nObb'oj +_91 &kanObb'oj +_92 beranObb'oj +_93 teranObb'oj +_94 tSuranObb'oj +_95 pOtSanObb'oj +_96 tS#ijanObb'oj +_97 SatanObb'oj +_98 at.anObb'oj +_99 niranObb'oj + +_0C S'o +_0M1 h'ajar +_0M2 l'ak# +_0M3 k'ot.i +_0M4 'Orbud +_dpt _d'Osomik_ + + +// Single consonants +ক kO +খ k#O +গ gO +ঘ g#O +ঙ 'uNO~ +চ tSO +ছ tShO // [h] to distinguish from [tS] +জ JO +ঝ J#O +ঞ 'iNO~ +ট t.O +ঠ t.#O +ড d.O +ঢ d.#O +ণ m,odd#en.n.'O +ত tO +থ t#O +দ dO +ধ d#O +ন d,ontenn'O +প pO +ফ fO // or [p#O] ? +ব bO +ভ b#O +ম mO +য় Oj +য ,ontostedZ'O +র rO +ড় r.O +ড় r.O // (d. + nukta) +ঢ় hr.O +ঢ় hr.O // (d#. + nukta) +ল lO +শ t,aleboS:'O +ষ m,ud#en:oS:'O +স d,onteS:'O +হ hO +ৎ kh,Ond.ot'O +ক্ষ k,ojmud#en:oS:'O + + +// full vowels +অ O +আ a +ই hrOS:o'i +ঈ dirg#o'i +উ hrOS:o'u +ঊ dirg#o'u +ঋ ri +ঔ ow + +এ e $u+ // word 'it' +ঐ oj $u+ // word 'that' +ও o $u+ $brk // 'and' +_এ e +_ঐ oj +_ও o + + +// combining vowel signs +া 'akar +ি r'oS:ikar +ী d'irg#ikar +ূ r'oS:ukar +ু d'irg#ukar +ৃ r'ikar +ে 'ekar +ৈ 'ojkar +ো 'okar +ৌ 'owkar + +// signs +্ h'OSonto +ং 'OnuSSOr +ঃ b'iSOrgo +ঁ tS'Ondrobindu +় b'indu + +$ d.Olar +% SOtk'Ora ++ jOg += SOman + + + +// Punctuation +। dVn.d.V +_, koma +_? pr'oSnOtSihnO + +// Pronouns +আমি $u // main: I +আমায় $u +আমার $u + +আমরা $u // we +আমাদের $u + +আপনি $u // you(formal) +আপনাকে $u +আপনার $u + +তুমি $u // you (informal) +তোমায় $u +তোমার $u +তোমাদের $u + +তুই $u // you (informal) +তোকে $u +তোর $u + +এ $u // he/she/it +আপনি $u +এটার $u +এর $u + +ইনি $u // they +এনাকে $u +এনার $u + +ও $u // he/she/it +সে $u +ওর $u +তার $u + +ওরা $u // they +তারা $u +ওদের $u // unheṃ: them +তাদের $u + +এই $u // e:I this/it +এটা $u // e:ta: this/it +এটার $u // e:ta:'r this/it +এর $u // e:r this/it + +ওটা $u // o:ta: that +ওটাকে $u // o:ta:ke: to that +ওটার $u // o:ta:'r of that + +ওগুলো $u // o:gu:lo: those +ওগুলোকে $u // o:gu:lo:ke: to those +ওগুলোর $u // o:gu:lo:'r of those + + + +// Prepositions/Postpositions +মধ্যে $u // moddhe in +উপর $u // upor on, above +নীচে $u // niche below + +পূর্ব্বে $u // purbe before, prior +পর্য্যন্ত $u // parjonto till +অব্দি $u // abdi till +বিনা $u // bina without + + + +// Questions +কেন $u $pause // kano why interrogative particle +কি $u $pause // ki what +কোথায় $u $pause // kothaay where +কখন $u $pause // kakhon when +কে $u $pause // ke who + +// Conjunctions + +এবং $u $pause // ebong: and +আর $u $pause // aar: and +অথবা $u $pause // athoba: or +কিন্তু $u $pause // kintu: but +যদি $pause // jodi: if +তবু $pause // tobu: still, yet +তবে $pause // tabe: if...then +অথচ $u // athacho: yet + + +// Verbs + +হয় $u + + +ছিল $u // chilo: past aux +ছিলেন $u // chilen + + +করছি $u // korchi: continuous +করছিলাম $u // korchilam: past indefinite +করেছি $u // korechi: past + + +// Exceptions +এত &to diff --git a/dictsource/as_rules b/dictsource/as_rules new file mode 100644 index 00000000..66b685af --- /dev/null +++ b/dictsource/as_rules @@ -0,0 +1,388 @@ + +// This file is UTF8 encoded + +// letter groups: +// A vowel letters and vowel signs +// B vowel signs and virama ् +// C consonants +// Y vowel letters and vowel signs + + + +.replace + ০ 0 + ১ 1 + ২ 2 + ৩ 3 + ৪ 4 + ৫ 5 + ৬ 6 + ৭ 7 + ৮ 8 + ৯ 9 + + +// Vowels + + +.group অ + অ V + অঁ O~ + অ্যা & // V,ja in [æmiba] + + +.group আ + আ a + আঁ a~ + +.group ই + ই i + ইঁ i~ + + +.group ঈ + ঈ i + ঈঁ i~ + + +.group উ + উ u + উঁ u~ + + +.group ঊ + ঊ u + ঊঁ u~ + +.group ঋ + ঋ ri + ঋঁ ri~ + +.group ঌ + ঌ l- + + +.group এ + এ & + এঁ &~ + + +.group ঐ + ঐ oj + ঐঁ o~j + + +.group এ + এ e + এঁ e~ + + এ্যা & // e,ja [ækademi] + + +.group ও + ও o + ওঁ o~ + + +.group ঔ + ঔ ow + ঔঁ o~w + +.group ও //?? + ও o: + + + + +// Vowel Signs + +.group া + া a + াঁ a~ + +.group ি + ি i + িঁ i~ + +.group ী + ী i + ীঁ i~ + +.group ূ + ূ u + ূঁ u~ + +.group ু + ু u + ুঁ u~ + +.group ৃ + ৃ ri + ৃঁ ri~ + + +.group ে + ে e + েঁ e~ + েউ ew + + +.group ৈ + ৈ oj + ৈঁ o~j + +.group ো + ো o + োঁ o~ + +.group ৌ + ৌ ow + ৌঁ o~w + + +// Consonants + +.group ক + ক kV + ক (B k + + +.group খ + খ k#V + খ (B k# + + +.group গ + গ gV + গ (B g + + +.group ঘ + ঘ g#V + ঘ (B g# + + +.group ঙ + ঙ NV + ঙ্ (B N + + +.group চ + চ tSV + চ (B tS + + +.group ছ + ছ tS#V + ছ (B tS# + + +.group জ + জ JV + জ (B J + + জ্ব JV + জ্ব (B J + জ্ঞ ggo~ + জ্ঞ (B gg + + +.group ঝ + ঝ J#V + ঝ (B J# + + +.group ঞ + ঞ nV + ঞ্ (B n + + +.group ট + ট t.V + ট (B t. + + +.group ঠ + ঠ t.#V + ঠ (B t.# + + +.group ড + ড d.V + ড (B d. + + ড় r.V // nukta + ড় (B r. + + +.group ঢ + ঢ d.#V + ঢ (B d.# + + ঢ় hr.V + ঢ় (B hr. + + +.group ণ + ণ nV // should be [n.] if adjacent to t. or d. ? + ণ (B n + + + +.group ত + ত tV + ত (B t + + +.group থ + থ t#V + থ (B t# + + +.group দ + দ dV + দ (B d + + +.group ধ + ধ d#V + ধ (B d# + + +.group ন + ন nV + ন (B n + + +.group প + প pV + প (B p + + +.group ফ + ফ fV // or [p#] ? + ফ (B f + + +.group ব + ব bV + ব (B b + + +.group ভ + ভ b#V + ভ (B b# + + +.group ম + ম mV + ম (B m + + +.group য় + য় jV + য় (B j + + +.group য + য dZV + য (B dZ + + য় jV // nukta + য় (B j + + ্) য (C & // ব্যস্ত [bæsto] + ্) যা & // ব্যাকরণ [bækɔron] + + +.group র + র rV + র (B r + + +.group ল + ল lV + ল (B l + + + +.group শ + শ SV // or [s] ? + শ (B S + + + শ (্ল s + + +.group ষ + ষ SV + ষ (B S + + +.group স + স SV // or [s] ?? + স (B S + + স (্থ s + স (্ত s + + _) স্ব SV // shb + _) স্ব (B S + + +.group হ + হ hV + হ (B h + + +.group হ্ব + হ্ব vV + হ্ব (B v + + +.group ৎ + ৎ t + + +.group ড় // can be ড plus nukta + ড় r.V + ড় (B r. + + +.group ঢ় // can be ঢ plus nukta + ঢ় hr.V + ঢ় (B hr. + + + +.group ঁ + ঁ O~ // candrabindu, nasalize the previous vowel + +.group ং + ং N // anusvara/onushshor + +.group ঃ // visarga/bishorgo + ঃ // doubles the following consonant + ঃ (_ H + +.group ্ // virama/hoshonto + ্ + +.group ় + ় // nukta, modifies a consonant + + + +.group + // obsolete letters + ঋ r- + ৠ r- + ঌ l- + ৡ l- + ৃ r- + ৄ r- + ৢ l- + ৣ l- + + __) - (_D bij'og + D_) - (_D bij'og diff --git a/dictsource/gu_list b/dictsource/gu_list new file mode 100644 index 00000000..0b7bb0e5 --- /dev/null +++ b/dictsource/gu_list @@ -0,0 +1,167 @@ +// This file is written by Him Prasad Gautam (Nepal) +// This file is UTF8 encoded + +// Numbers +// Gujarati numbers are changed to latin characters before translation + +_0 S'u:nj@- +_1 'e:k +_2 b'e: +_3 tr'@n.V +_4 c'a:r +_5 p'a:n^c +_6 c#'@ +_7 s'a:t +_8 'a:,t.# +_9 n'aw +_10 d'@s: +_11 'ag'Ija:r +_12 b'a:r +_13 t'e:r +_14 c'O:d +_15 p'Vnd@r +_16 s'o:d. +_17 s'@t@r +_18 'Vd.#a:r +_19 ,o:gn.'i:s +_20 w'i:s +_21 ,e:kw'i:s +_22 baU'i:s +_23 tre:w'i:s +_24 co:w'i:s +_25 p,@c'i:s +_26 c#@3w'i:s +_27 s,@tjaU'i:s +_28 ,Vt.#jaU'i:s +_29 ,o:g@n.tr'i:s +_30 tr'i:s +_31 ,e:k@tr'i:s +_32 b@tr'i:s +_33 te:tr'i:s +_34 co:tr'i:s +_35 pa:ntr'i:s +_36 c#@3tr'i:s +_37 s,a:d.tr'i:s +_38 ,a:d.tr'i:s +_39 ,o:g@n.ca:l'i:s +_40 ca:l'i:s +_41 ,e:kta:l'i:s +_42 b,e:ta:l'i:s +_43 t,e:ta:l'Is +_44 c,Uma:l'i:s +_45 p,Ista:l'i:s +_46 c#,e:ta:l'i:s +_47 s,@d.ta:l'i:s +_48 ,Vd.ta:l'i:s +_49 o:g'Vn.,p@c'a:s +_50 p@c'a:s +_51 e:k'aUn +_52 b'aUn +_53 tre:p'Vn +_54 co:p'Vn +_55 p@n^c'aUn +_56 c#@3p:'Vn +_57 s@t'aUn +_58 Vt.#'aUn +_59 ,o:g@n.sa:'It.# +_60 sa:'It.# +_61 ,e:k@s'Vt.# +_62 ba:s'Vt.# +_63 tre:s'Vt.# +_64 co:s'Vt.# +_65 pa:s'Vt.# +_66 c#a:s'Vt.# +_67 s,@d.@s'Vt.# +_68 ,Vd.@s'Vt.# +_69 ,o:g@n.s'i:te:r +_70 s'i:te:r +_71 e:k'o:te:r +_72 b'o:te:r +_73 t'o:te:r +_74 cUm'o:te:r +_75 p@n^c'o:te:r +_76 c#'o:te:r +_77 s@t'o:te:r +_78 Vt.#'o:te:r +_79 ,o:g@n.'e:si; +_80 'e:nsi; +_81 ,e:kj'a:si +_82 b'j'a:si +_83 tr@2j'a:si +_84 c,o:*j'a:si +_85 p,@cj'a:si +_86 c#@3j'a:si +_87 s,@tj'a:si; +_88 ,Vt.#j'a:si +_89 n,e:wj'a:si +_90 n'e:wU +_91 e:k'a:n.U +_92 b'a:n.U +_93 tr'a:n.U +_94 co:r'a:n.U +_95 p@n^c'a:n.U +_96 c#'VnnU +_97 s@t'a:n.U +_98 Vt.#'a:n.U +_99 n@w'a:n.U + +_0C s'o: +_0M1 h'VJa:r +_0M2 l'a:k# +_0M3 k@r'o:r.V +_0M4 'VrVb +_0M5 k#'VrVb +_dpt p'u:r'n.'a:,Nk + +// Single consonants +ક k@ +ક઼ q@ +ખ k#@ +ખ઼ x@ +ગ g@ +ગ઼ Q@ +ઘ g#@ +ઙ N@ +ચ c@ +છ c#@ +જ J@ +જ઼ z@ +ઝ J#@ +ઞ n^@ +ટ t.@ +ઠ t.#@ +ડ d.@ +ડ઼ r.@ +ઢ d.#@ +ણ n.@ // retroflex n.@ +ત t@ +થ t#@ +દ d@ +ધ d#@ +ન n@ +પ p@ +ફ p#@ +ફ઼ f@ +બ b@ +ભ b#@ +મ m@ +ય j@ +ર r@ +લ l@ +ળ l.@ +વ v@ +શ S@ +ષ s.@ // retroflex [S] +સ s@ +હ H@ + + + +// Punctuation +। p'urn'a,b'ira:m +૱ r'u:p'i:ja: +$ d@l@r ++ plVs += bVr'a:b@r +* ta:r'a:Nk@n + diff --git a/dictsource/gu_rules b/dictsource/gu_rules new file mode 100644 index 00000000..9a3a7e8c --- /dev/null +++ b/dictsource/gu_rules @@ -0,0 +1,468 @@ + // This file is developed by Him Prasad Gautam (Nepal) +// This file is UTF8 encoded + +// letter groups: +// A vowel letters and vowel signs +// B vowel signs and virama ્ +// C consonants +// Y vowel letters and vowel signs + +// conditional rules +// ?2 use diphthong for "ai" +// ?3 use diphthong for "au" + + +.replace + ૦ 0 + ૧ 1 + ૨ 2 + ૩ 3 + ૪ 4 + ૫ 5 + ૬ 6 + ૭ 7 + ૮ 8 + ૯ 9 + + +// Vowels + +.group અ + અ V + અ (હ E // (h + અહ) અ E + +.group આ + આ a: + +.group ઇ + ઇ I + ઇઁ i~ + ઇં i~ + +.group ઈ + ઈ i: + ઈ (_ i + +.group ઉ + ઉ U + +.group ઊ + ઊ u + ઊં (_ u~ // + anusvara + ઊઁ (_ u~ // + candrabinbu + +.group ઋ + ઋ rI + +.group ઌ + ઌ l-ri: // vocalic l + +.group ઍ + ઍ E // candra e + +.group એ + એ e: + એઁ e~: + એં (_ e~: + ા) એઁ (_ j + +.group ઐ + ઐ E: // ?? [aI] [E:] [&:] + ઐં (_ E~ + ઐઁ (_ E~ +?2 ઐ aI // ?? [aI] [E:] [&:] + + +.group ઑ + ઑ O // candra O + +.group ઓ + ઓ o: + ઓં (_ o~ // +anusvara + ઓઁ (_ o~ // +candrabindu + ા) ઓં (_ w // +anusvara + ા) ઓઁ (_ w + + +.group ઔ + ઔ O: // ?? [aU] [O:] + ઔં (_ O~ // +anusvara + ઔઁ (_ O~ // +candrabindu +?3 ઔ aU // ?? [aU] [O:] + + +// Vowel Signs + +.group ા + ા k'a:n'o + C) ા a: + C) ા (ઁ a~ + C) ાઁ (_ a~ + C) ાં (_ a~ + +.group િ + િ i,c'i:nh'a + C) િ i + C) િઁ i~ + C) િં i~ + +.group ી + ી d'i:rg#@i:,c'i:n'h'a + C) ી i: + C) ી (_ i + C)ી (ઁ i~ + C) ીઁ (_ i~ + C) ીં (_ i~ + +.group ુ + ુ u,c'i:n'h'a + C) ુ U + C) ુ (ઁ u~ + C) ું (_ u~ + C) ુઁ (_ u~ + +.group ૂ + ૂ d'i:rg#@u:,c'i:n'h'a + C) ૂ u: + C) ૂ (ઁ u~ + C) ૂં (_ u~ // or O~ ?? + C) ૂઁ (_ u~ + +.group ૃ + ૃ r'I,c'i:n'h'a + C) ૃ rI + +.group ૄ + ૄ d'i:rg#@r'I,c'i:n'h'a + C) ૄ rI + +.group ૅ + ૅ 'e,c'i:n'h'a + C) ૅ E + +.group ે + ે 'e:,c'i:n'h'a + C) ે e: + C) ે (ઁ e~ + C) ેં (_ e~: + C) ેઁ (_ e~: + +.group ૈ + ૈ E:,c'i:n'h'a + C) ૈ E: // ?? [aI] [E:] [&:] + C) ૈં E~ + C) ૈ (ઁ E~ + C) ૈં (_ E~ + C) ૈઁ (_ E~ +?2 C) ૈ aI // ?? [aI] [E:] [&:] + +.group ૉ + ૉ O,c'i:n'h'a + C) ૉ O + +.group ો + ો o:,c'i:n'h'a + C) ો o: + C) ો (ઁ o~ + C) ોં (_ o~ + C) ોઁ (_ o~ + +.group ૌ + ૌ aU,c'i:n'h'a // [O:] or [aU] ?? + C) ૌ O: + C) ૌ (ઁ O~ // [O:] or [aU] ?? + C) ૌં (_ O~ + C) ૌઁ (_ O~ +?3 C) ૌ aU // [O:] or [aU] ?? + +.group ૢ // vowel sign l + _) ૢ (_ l'ri:,c'i:n'h'a + ૢ l- + +.group ૣ // vowel sign ll + _) ૣ (_ d'i:rg#,l'ri:,c'i:n'h'a + ૣ l-: + +.group ૐ + ૐ o~m + +// Consonants + +.group ક + ક kV + ક (B k + ક (્ય k: + ક઼ qV + ક઼ (B q + + ક્ક k:V // kk -> k: + ક્ક (B k: + ક્ષ kSV + ક્ષ (B kS + +.group ખ + ખ k#V + ખ (B k# + ખ઼ xV + ખ઼ (B x + +.group ગ + ગ gV + ગ (B g + ગ઼ QV + ગ઼ (B Q + +.group ઘ + ઘ g#V + ઘ (B g# + +.group ઙ + ઙ NV + ઙ (B N + ્) ઙ (_ N@ + +.group ચ + ચ cV + ચ (B c + ચ (્ય c: + +.group છ + છ c#V + છ (B c# + +.group જ + જ JV + જ (B J + જ઼ zV + જ઼ (B z + + જ્ઞ gjV + જ્ઞ (B gj + +.group ઝ + ઝ J#V + ઝ (B J# + + +.group ઞ + ઞ n^V + ઞ (B n^ + ્) ઞ (_ n^@ + + +.group ટ + ટ 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. + + ડ઼ r.V + ડ઼ (B r. + +.group ઢ + ઢ d.#V + ઢ (B d.# + ઢ઼ r.hV // nukta (should retroflex flap) + ઢ઼ (B r.h // nukta + +.group ણ + ણ n.V + ણ (B n. + ્) ણ (_ n.@ + +.group ત + ત tV + ત (B t + ત (્ય t: + + ત્ત t:V // tt -> t: + ત્ત (B t: + +.group થ + થ t#V + થ (B t# + +.group દ + દ dV + દ (B d + +.group ધ + ધ d#V + ધ (B d# + +.group ન + ન nV + ન (B n + ્) ન (_ n@ + ર્) ન (_ n // r +virama + + +.group પ + પ pV + પ (B p + પ (્ય p: + પ્પ p:V // pp -> p: + પ્પ (B p: + +.group ફ + ફ p#V + ફ (B p# + ફ઼ fV + ફ઼ (B f + +.group બ + બ bV + બ (B b + +.group ભ + ભ b#V + ભ (B b# + +.group મ + મ mV + મ (B m + ્) મ (_ m@ + ર્) મ (_ m // r +virama + ન્) મ (_ m // n +virama + +.group ય + ય jV + ય (B j + C) ય (_ Ej // [Ej] not [@j] + ્) ય (_ j@ + +.group ર + ર rV + ર (B r + ર (_ r + ્) ર (_ r@ + +.group લ + લ lV + લ (B l + ્) લ (_ l@ + +.group ળ + ળ l.V + ળ (B l. + ્) ળ (_ l.@ + + + +.group વ + વ wV + વ (B w + _) વ wV + _) વ (B w + _) વ (્ w // +virma + વ (_ w + +.group શ + શ SV + શ (B S + +.group ષ + ષ s.V + ષ (B s. + +.group સ + સ sV + સ (B s + +.group હ + હ HV + હ (B H + +.group ઼ + ઼ t.'Vp,k'u: + A) ઼ + C) ઼ + +.group ઽ // avagraha, lengthens a vowel ?? + ઽ 'Vn'un'a:s'i:k + A) ઽ : + C) ઽ : + +.group ઁ + ઁ 'ard.'a,c'Vndr'a // candrabindu + C) ઁ n + A) ઁ n + +.group ં + ં 'Vn'Uswa:r + A) ં n + C) ં n + ં (પ m + ં (ફ m + ં (બ m + ં (ભ m + ં (મ m + + ં (ટ n. + ં (ઠ n. + ં (ડ n. + ં (ઢ n. + ં (ણ n. + + ં (ચ n^ + ં (છ n^ + ં (જ n^ + ં (ઝ n^ + ં (ઞ n^ + ં (ય n^ + + ં (ક N + ં (ખ N + ં (ગ N + ં (ઘ N + ં (ઙ N + + +.group ઃ + ઃ g'ur'u,v'ir'a:m + A) ઃ H // visarga + C) ઃ H // visarga + ઁ) ઃ H + ં) ઃ H + +.group ્ // virama + ્ k#'od.o + C) ્ + +// Extra consonants + + +.group ૠ // rr + ૠ V-rr + +.group ૡ // ll + ૡ l-: // long syllabic l + +.group % + % p'Vrs'ent. + 0) % t.'Vkk'a: + 1) % t.'Vkk'a: + 2) % t.'Vkk'a: + 3) % t.'Vkk'a: + 4) % t.'Vkk'a: + 5) % t.'Vkk'a: + 6) % t.'Vkk'a: + 7) % t.'Vkk'a: + 8) % t.'Vkk'a: + 9) % t.'Vkk'a: + \ No newline at end of file diff --git a/espeak-data/voices/test/as b/espeak-data/voices/test/as new file mode 100644 index 00000000..109f92c8 --- /dev/null +++ b/espeak-data/voices/test/as @@ -0,0 +1,4 @@ +name assamese-test +language as + + \ No newline at end of file diff --git a/espeak-data/voices/test/gu b/espeak-data/voices/test/gu new file mode 100644 index 00000000..4d983c68 --- /dev/null +++ b/espeak-data/voices/test/gu @@ -0,0 +1,3 @@ +name gujarati-test +language gu + diff --git a/phsource/ph_assamese b/phsource/ph_assamese new file mode 100644 index 00000000..f7863016 --- /dev/null +++ b/phsource/ph_assamese @@ -0,0 +1,94 @@ + +//==================================================== +// Bengali, inherits from Hindi +//==================================================== + + +phoneme V // inherent vowel, can be [O] or [o] + vowel flag1 starttype #o endtype #o + length 200 + + IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isVowel) THEN + ChangePhoneme(NULL) + ENDIF + + IF thisPh(isFirstVowel) THEN + IF nextVowel(i) OR nextVowel(u) THEN + ChangePhoneme(o) + ENDIF + + IF prevPhW(r) THEN + ChangePhoneme(o) + ENDIF + ENDIF + + ChangePhoneme(O) +endphoneme + + +phoneme a + vowel starttype #a endtype #a + length 225 + FMT(vowel/a_3) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 210 + FMT(vowel/i_6) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 210 + FMT(vowel/u) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 210 + FMT(vowel/e) +endphoneme + + +phoneme & + vowel starttype #a endtype #a + length 210 + FMT(vowel/&_2) +endphoneme + + +phoneme o + vowel starttype #o endtype #o + length 210 + IF nextPhW(w) THEN + length 170 + ENDIF + FMT(vowel/o) +endphoneme + + +phoneme O + vowel starttype #o endtype #o + length 200 + FMT(vowel/oo_5) +endphoneme + + +phoneme tS + import_phoneme base/tS +endphoneme + + +phoneme tS# + import_phoneme base/tS +endphoneme + + +phoneme ~ + virtual +endphoneme + diff --git a/phsource/ph_gujarati b/phsource/ph_gujarati new file mode 100644 index 00000000..00f84522 --- /dev/null +++ b/phsource/ph_gujarati @@ -0,0 +1,4 @@ + +// Phonemes for gujarati +// This inherits from ph_hindi + From ca8a9a4495e6e2cb2bbe9567657817da343a54f9 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 23 Sep 2013 22:29:38 +0100 Subject: [PATCH 4/7] autotools: build the 'as' and 'gu' dictionaries --- Makefile.am | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Makefile.am b/Makefile.am index 22d7cdd4..e4d287b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -178,6 +178,7 @@ dictionaries: \ espeak-data/af_dict \ espeak-data/am_dict \ espeak-data/an_dict \ + espeak-data/as_dict \ espeak-data/az_dict \ espeak-data/bg_dict \ espeak-data/bn_dict \ @@ -196,6 +197,7 @@ dictionaries: \ espeak-data/fr_dict \ espeak-data/ga_dict \ espeak-data/grc_dict \ + espeak-data/gu_dict \ espeak-data/hi_dict \ espeak-data/hu_dict \ espeak-data/hy_dict \ @@ -257,6 +259,12 @@ dictsource/an_extra: espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=an && cd .. +as: espeak-data/as_dict +dictsource/as_extra: + touch dictsource/as_extra +espeak-data/as_dict: src/espeak espeak-data/phontab dictsource/as_list dictsource/as_rules dictsource/as_extra + cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=as && cd .. + az: espeak-data/az_dict dictsource/az_extra: touch dictsource/az_extra @@ -365,6 +373,12 @@ dictsource/grc_extra: espeak-data/grc_dict: src/espeak espeak-data/phontab dictsource/grc_list dictsource/grc_rules dictsource/grc_extra cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=grc && cd .. +gu: espeak-data/gu_dict +dictsource/gu_extra: + touch dictsource/gu_extra +espeak-data/gu_dict: src/espeak espeak-data/phontab dictsource/gu_list dictsource/gu_rules dictsource/gu_extra + cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=gu && cd .. + hi: espeak-data/hi_dict dictsource/hi_extra: touch dictsource/hi_extra From 9ccbdf0c5ef3ead779e470d188c56e0ff5f9535c Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Tue, 24 Sep 2013 18:00:22 +0100 Subject: [PATCH 5/7] .gitignore: ignore the compile file (generated by autotools) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ab902e4..e70c837b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ Makefile Makefile.in aclocal.m4 autom4te.cache/ +compile config.* configure depcomp From b8a8cfba3b9fa31c6a189b9b9137087c79637f46 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Tue, 24 Sep 2013 18:01:25 +0100 Subject: [PATCH 6/7] README.md: Add documentation on installing the needed build dependencies. --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 9b380902..752b8e7c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # eSpeak Text-to-Speech +- [Build Dependencies](#build-dependencies) + - [Debian](#debian) - [Building](#building) - [Testing](#testing) - [Installing](#installing) @@ -22,6 +24,31 @@ This does the following things: This branch also contains some bug fixes and improvements that get sent back upstream. +## Build Dependencies + +In order to build eSpeak, you need: + +1. a functional autotools system (`make`, `autoconf`, `automake`, `libtool` + and `pkg-config`); +2. a functional c++ compiler; +3. wxWidgets development libraries (needed to build and run espeakedit + to compile the phoneme data). + +Optionally, you need: + +1. the pulseaudio development library to enable pulseaudio output; +2. the portaudio development library to enable portaudio output. + +### Debian + +| Dependency | Install | +|---------------|------------------------------------------------------------------| +| autotools | `sudo apt-get install make autoconf automake libtool pkg-config` | +| c++ compiler | `sudo apt-get install gcc g++` | +| wxWidgets | `sudo apt-get install libwxgtk2.8-dev` | +| pulseaudio | `sudo apt-get install libpulse-dev` | +| portaudio | `sudo apt-get install libportaudio-dev` | + ## Building The espeak and espeakedit programs, along with the espeak voices, can From e3290d296d4719d59998d9f2fd5ab6c5733e4af4 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Tue, 24 Sep 2013 22:54:27 +0100 Subject: [PATCH 7/7] README.md: Add bugs and license information sections. --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 752b8e7c..67fb25bd 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ - [Building Voices](#building-voices) - [Adding New Voices](#adding-new-voices) - [Historical Releases](#historical-releases) +- [Bugs](#bugs) +- [License Information](#license-information) ---------- @@ -134,3 +136,12 @@ __NOTE:__ The source releases contain the big_endian, espeak-edit, praat-mod, riskos, windows_dll and windows_sapi folders. These do not appear in the source repository until later releases, so have been excluded from the historical commits to align them better with the 1.24.02 source commit. + +## Bugs + +Report bugs to the [espeak issues](https://github.com/rhdunn/espeak/issues) +page on GitHub. + +## License Information + +eSpeak Text-to-Speech is released under the GPL version 3 or later license.