diff --git a/Makefile.am b/Makefile.am index fc5f42f9..e131aac2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -141,17 +141,15 @@ android: android/res/raw/espeakdata.zip android/res/raw/espeakdata_version dictionaries: src/espeak \ espeak-data/af_dict \ - espeak-data/ak_dict \ espeak-data/am_dict \ espeak-data/an_dict \ - espeak-data/az_dict \ espeak-data/bg_dict \ + espeak-data/bn_dict \ espeak-data/ca_dict \ espeak-data/cs_dict \ espeak-data/cy_dict \ espeak-data/da_dict \ espeak-data/de_dict \ - espeak-data/dv_dict \ espeak-data/el_dict \ espeak-data/en_dict \ espeak-data/eo_dict \ @@ -162,9 +160,7 @@ dictionaries: src/espeak \ espeak-data/fr_dict \ espeak-data/ga_dict \ espeak-data/grc_dict \ - espeak-data/hbs_dict \ espeak-data/hi_dict \ - espeak-data/ht_dict \ espeak-data/hu_dict \ espeak-data/hy_dict \ espeak-data/id_dict \ @@ -172,7 +168,6 @@ dictionaries: src/espeak \ espeak-data/it_dict \ espeak-data/jbo_dict \ espeak-data/ka_dict \ - espeak-data/kk_dict \ espeak-data/kl_dict \ espeak-data/kn_dict \ espeak-data/ko_dict \ @@ -182,20 +177,17 @@ dictionaries: src/espeak \ espeak-data/lv_dict \ espeak-data/mk_dict \ espeak-data/ml_dict \ - espeak-data/mt_dict \ + espeak-data/ms_dict \ espeak-data/nci_dict \ espeak-data/ne_dict \ espeak-data/nl_dict \ espeak-data/no_dict \ - espeak-data/nso_dict \ espeak-data/pa_dict \ espeak-data/pap_dict \ espeak-data/pl_dict \ - espeak-data/prs_dict \ espeak-data/pt_dict \ espeak-data/ro_dict \ espeak-data/ru_dict \ - espeak-data/rw_dict \ espeak-data/si_dict \ espeak-data/sk_dict \ espeak-data/sl_dict \ @@ -203,13 +195,9 @@ dictionaries: src/espeak \ espeak-data/sv_dict \ espeak-data/sw_dict \ espeak-data/ta_dict \ - espeak-data/te_dict \ - espeak-data/tn_dict \ espeak-data/tr_dict \ - espeak-data/tt_dict \ espeak-data/ur_dict \ espeak-data/vi_dict \ - espeak-data/wo_dict \ espeak-data/zh_dict \ espeak-data/zhy_dict @@ -219,12 +207,6 @@ dictsource/af_extra: espeak-data/af_dict: src/espeak espeak-data/phontab dictsource/af_list dictsource/af_rules dictsource/af_extra cd dictsource && ../src/espeak --compile=af && cd .. -ak: espeak-data/ak_dict -dictsource/ak_extra: - touch dictsource/ak_extra -espeak-data/ak_dict: src/espeak espeak-data/phontab dictsource/ak_rules dictsource/ak_extra - cd dictsource && ../src/espeak --compile=ak && cd .. - am: espeak-data/am_dict dictsource/am_extra: touch dictsource/am_extra @@ -237,12 +219,6 @@ dictsource/an_extra: espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra cd dictsource && ../src/espeak --compile=an && cd .. -az: espeak-data/az_dict -dictsource/az_extra: - touch dictsource/az_extra -espeak-data/az_dict: src/espeak espeak-data/phontab dictsource/az_list dictsource/az_rules dictsource/az_extra - cd dictsource && ../src/espeak --compile=az && cd .. - bg: espeak-data/bg_dict dictsource/bg_extra: touch dictsource/bg_extra @@ -255,12 +231,6 @@ dictsource/bn_extra: espeak-data/bn_dict: src/espeak espeak-data/phontab dictsource/bn_list dictsource/bn_rules dictsource/bn_extra cd dictsource && ../src/espeak --compile=bn && cd .. -bo: espeak-data/bo_dict -dictsource/bo_extra: - touch dictsource/bo_extra -espeak-data/bo_dict: src/espeak espeak-data/phontab dictsource/bo_rules dictsource/bo_extra - cd dictsource && ../src/espeak --compile=bo && cd .. - ca: espeak-data/ca_dict dictsource/ca_extra: touch dictsource/ca_extra @@ -291,12 +261,6 @@ dictsource/de_extra: espeak-data/de_dict: src/espeak espeak-data/phontab dictsource/de_list dictsource/de_rules dictsource/de_extra cd dictsource && ../src/espeak --compile=de && cd .. -dv: espeak-data/dv_dict -dictsource/dv_extra: - touch dictsource/dv_extra -espeak-data/dv_dict: src/espeak espeak-data/phontab dictsource/dv_list dictsource/dv_rules dictsource/dv_extra - cd dictsource && ../src/espeak --compile=dv && cd .. - el: espeak-data/el_dict dictsource/el_extra: touch dictsource/el_extra @@ -357,24 +321,12 @@ dictsource/grc_extra: espeak-data/grc_dict: src/espeak espeak-data/phontab dictsource/grc_list dictsource/grc_rules dictsource/grc_extra cd dictsource && ../src/espeak --compile=grc && cd .. -hbs: espeak-data/hbs_dict -dictsource/hbs_extra: - touch dictsource/hbs_extra -espeak-data/hbs_dict: src/espeak espeak-data/phontab dictsource/hbs_list dictsource/hbs_rules dictsource/hbs_extra - cd dictsource && ../src/espeak --compile=hbs && cd .. - hi: espeak-data/hi_dict dictsource/hi_extra: touch dictsource/hi_extra espeak-data/hi_dict: src/espeak espeak-data/phontab dictsource/hi_list dictsource/hi_rules dictsource/hi_extra cd dictsource && ../src/espeak --compile=hi && cd .. -ht: espeak-data/ht_dict -dictsource/ht_extra: - touch dictsource/ht_extra -espeak-data/ht_dict: src/espeak espeak-data/phontab dictsource/ht_list dictsource/ht_rules dictsource/ht_extra - cd dictsource && ../src/espeak --compile=ht && cd .. - hu: espeak-data/hu_dict dictsource/hu_extra: touch dictsource/hu_extra @@ -417,12 +369,6 @@ dictsource/ka_extra: espeak-data/ka_dict: src/espeak espeak-data/phontab dictsource/ka_list dictsource/ka_rules dictsource/ka_extra cd dictsource && ../src/espeak --compile=ka && cd .. -kk: espeak-data/kk_dict -dictsource/kk_extra: - touch dictsource/kk_extra -espeak-data/kk_dict: src/espeak espeak-data/phontab dictsource/kk_list dictsource/kk_rules dictsource/kk_extra - cd dictsource && ../src/espeak --compile=kk && cd .. - kl: espeak-data/kl_dict dictsource/kl_extra: touch dictsource/kl_extra @@ -477,11 +423,11 @@ dictsource/ml_extra: espeak-data/ml_dict: src/espeak espeak-data/phontab dictsource/ml_list dictsource/ml_rules dictsource/ml_extra cd dictsource && ../src/espeak --compile=ml && cd .. -mt: espeak-data/mt_dict -dictsource/mt_extra: - touch dictsource/mt_extra -espeak-data/mt_dict: src/espeak espeak-data/phontab dictsource/mt_list dictsource/mt_rules dictsource/mt_extra - cd dictsource && ../src/espeak --compile=mt && cd .. +ms: espeak-data/ms_dict +dictsource/ms_extra: + touch dictsource/ms_extra +espeak-data/ms_dict: src/espeak espeak-data/phontab dictsource/ms_list dictsource/ms_rules dictsource/ms_extra + cd dictsource && ../src/espeak --compile=ms && cd .. nci: espeak-data/nci_dict dictsource/nci_extra: @@ -507,12 +453,6 @@ dictsource/no_extra: espeak-data/no_dict: src/espeak espeak-data/phontab dictsource/no_list dictsource/no_rules dictsource/no_extra cd dictsource && ../src/espeak --compile=no && cd .. -nso: espeak-data/nso_dict -dictsource/nso_extra: - touch dictsource/nso_extra -espeak-data/nso_dict: src/espeak espeak-data/phontab dictsource/nso_list dictsource/nso_rules dictsource/nso_extra - cd dictsource && ../src/espeak --compile=nso && cd .. - pa: espeak-data/pa_dict dictsource/pa_extra: touch dictsource/pa_extra @@ -531,12 +471,6 @@ dictsource/pl_extra: espeak-data/pl_dict: src/espeak espeak-data/phontab dictsource/pl_list dictsource/pl_rules dictsource/pl_extra cd dictsource && ../src/espeak --compile=pl && cd .. -prs: espeak-data/prs_dict -dictsource/prs_extra: - touch dictsource/prs_extra -espeak-data/prs_dict: src/espeak espeak-data/phontab dictsource/prs_list dictsource/prs_rules dictsource/prs_extra - cd dictsource && ../src/espeak --compile=prs && cd .. - pt: espeak-data/pt_dict dictsource/pt_extra: touch dictsource/pt_extra @@ -555,12 +489,6 @@ dictsource/ru_extra: espeak-data/ru_dict: src/espeak espeak-data/phontab dictsource/ru_list dictsource/ru_rules dictsource/ru_extra cd dictsource && ../src/espeak --compile=ru && cd .. -rw: espeak-data/rw_dict -dictsource/rw_extra: - touch dictsource/rw_extra -espeak-data/rw_dict: src/espeak espeak-data/phontab dictsource/rw_list dictsource/rw_rules dictsource/rw_extra - cd dictsource && ../src/espeak --compile=rw && cd .. - si: espeak-data/si_dict dictsource/si_extra: touch dictsource/si_extra @@ -603,30 +531,12 @@ dictsource/ta_extra: espeak-data/ta_dict: src/espeak espeak-data/phontab dictsource/ta_list dictsource/ta_rules dictsource/ta_extra cd dictsource && ../src/espeak --compile=ta && cd .. -te: espeak-data/te_dict -dictsource/te_extra: - touch dictsource/te_extra -espeak-data/te_dict: src/espeak espeak-data/phontab dictsource/te_list dictsource/te_rules dictsource/te_extra - cd dictsource && ../src/espeak --compile=te && cd .. - -tn: espeak-data/tn_dict -dictsource/tn_extra: - touch dictsource/tn_extra -espeak-data/tn_dict: src/espeak espeak-data/phontab dictsource/tn_list dictsource/tn_rules dictsource/tn_extra - cd dictsource && ../src/espeak --compile=tn && cd .. - tr: espeak-data/tr_dict dictsource/tr_extra: touch dictsource/tr_extra espeak-data/tr_dict: src/espeak espeak-data/phontab dictsource/tr_list dictsource/tr_rules dictsource/tr_extra cd dictsource && ../src/espeak --compile=tr && cd .. -tt: espeak-data/tt_dict -dictsource/tt_extra: - touch dictsource/tt_extra -espeak-data/tt_dict: src/espeak espeak-data/phontab dictsource/tt_list dictsource/tt_rules dictsource/tt_extra - cd dictsource && ../src/espeak --compile=tt && cd .. - ur: espeak-data/ur_dict dictsource/ur_extra: touch dictsource/ur_extra @@ -639,12 +549,6 @@ dictsource/vi_extra: espeak-data/vi_dict: src/espeak espeak-data/phontab dictsource/vi_list dictsource/vi_rules dictsource/vi_extra cd dictsource && ../src/espeak --compile=vi && cd .. -wo: espeak-data/wo_dict -dictsource/wo_extra: - touch dictsource/wo_extra -espeak-data/wo_dict: src/espeak espeak-data/phontab dictsource/wo_list dictsource/wo_rules dictsource/wo_extra - cd dictsource && ../src/espeak --compile=wo && cd .. - zh: espeak-data/zh_dict dictsource/zh_extra: touch dictsource/zh_extra diff --git a/dictsource/ak_rules b/dictsource/ak_rules deleted file mode 100644 index 2ee9444b..00000000 --- a/dictsource/ak_rules +++ /dev/null @@ -1,113 +0,0 @@ -// This file is UTF8 encoded -// Spelling to phoneme rules for Akan (Ghana) - - -.group a - a a - -.group b - b b - -.group c - c k - c (e s - c (i s - -.group d - d d - dw dZ - dw (i dZ; - -.group e - e e - -.group f - f f - -.group g - g g - gy dz; - -.group h - h h - h (i C - hw (i Cw - hy C - -.group i - i i - -.group j - j dZ - -.group k - k k - ky tS; - -.group l - l l - -.group m - m m - -.group n - n n - n (k N - ng N: - ng (i n^ - nj n^ - nw N:w - nw (i n^ - ny (i n^: - nny (i n^: - -.group o - o o - -.group p - p p - -.group ɛ - ɛ E - -.group q - q k - qu kw - -.group r - r R - -.group s - s s - -.group t - t t - t (i tC - -.group u - u u - -.group v - v v - -.group w - w w - -.group ɔ - ɔ O - -.group x - x ks - _) x z - -.group y - y j - K) y (K i - -.group z - z z - -.group - $ dOlaR - - diff --git a/dictsource/an_list b/dictsource/an_list index 1274823f..43df719e 100644 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -14,7 +14,7 @@ _acu akT'ento aQ'uDo _ac2 d'Ople||aQ'uDo _brv br'eu _ced TeD'il^a -_cir Tirkumfl'ekso +_cir Tirkumfl'eSo _dia djEr'esi _dac d'Ople||aQ'uDo _dot p'unto @@ -30,6 +30,7 @@ _tld t'il^a // letter names b be c Te +ç Te||TetjEl^a d de f Efe g ge @@ -59,7 +60,7 @@ ll 'El^e á 'a||akTEntw'aDa é 'e||akTEntw'aDa í 'i||akTEntw'aDa -_ó 'o||akTEntw'aDa +ó 'o||akTEntw'aDa ú 'u||akTEntw'aDa ü ,uDjEr'Esi @@ -82,8 +83,8 @@ _12 d'oTe _13 tr'eTe _14 kat'orTe _15 k'inTe -_20 B'inte -_2X B,int +_20 b'inte +_2X b,int _3X tr'enta _4X kwar'anta _5X Tinkw'anta @@ -101,7 +102,6 @@ _7C sjEteTj'Entos _8C gwitoTj'Entos _9C nowTj'Entos _0M1 m'il -_1M1 m'il _0M2 mil^'ons _1M2 un||mil^'on _0M4 bil^'ons @@ -112,41 +112,40 @@ _dpt kon // ordinal numbers -_#º o -_#ª a -//_ord eno +_#º %'eno +_#ª %'ena +_x#º %o // for 1º 2º 3º +_x#ª %a +º orDin'al||maskul'in +ª orDin'al||femen'in _1ox prim'Er _2ox seQ'und _3ox tErT'Er -_1o un'en -_2o dos'en -_3o tres'en -_4o kwatr'en -_5o Tink'en -_6o seIs'en -_7o sEt'en -_8o gwit'en -_9o nU'en -_11o onT'en -_12o DoT'en -_13o tReT'en -_14o katorT'en -_15o kinT'en -_16o sET'en -_10o DET'en -_20o Bint'en -_30o trent'en -_40o kwarant'en -_50o Tinkwant'en -_60o siSant'en -_70o sEtant'en -_80o gwitant'en -_90o noBant'en +_4o kwatr +_5o Tink +_7o sEt +_8o gwit +_9o nU +_11o onT +_12o doT +_13o tReT +_14o katorT +_15o kinT +_16o sET +_10o dET +_20o bint +_30o trent +_40o kwarant +_50o Tinkwant +_60o siSant +_70o sEtant +_80o gwitant +_90o noBant -_1Xo DeTi -_2Xo Binti +_1Xo deTi +_2Xo binti _3Xo trentaI _4Xo kwarantaI _5Xo TinkwantaI @@ -154,38 +153,63 @@ _6Xo siSantaI _7Xo sEtantaI _8Xo gwitantaI _9Xo noBantaI -_1Co TEnt'en -_2Co dosTEnt'en -_3Co tresTEnt'en -_4Co kw,atroTEnt'en -_5Co T,inkoTEnt'en -_6Co seIsTEnt'en -_7Co sjEtTEnt'en -_8Co gw,eItoTEnt'en -_9Co nweUTEnt'en +_0Co Tent +_1Co TEnt +_2Co dosTEnt +_3Co tresTEnt +_6Co seIsTEnt +_7Co sjEtTEnt +_8Co gw,eItoTEnt +_9Co nweUTEnt -_0M1o mil'en -_1M1 mil'en -_0M2o mil^on'en -_1M2o mil^on'en +_0M1o mil + + +// characters +$ d'olar +€ eUros +£ liBras +* asterisko +& ampers'an +@ aRRoBa +# sin^'alDenum'ero +% porTj'En ++ mas += iQwal +/ baRRa +\ kontraBaRRa +| b'aRRaBertik'al + +_- gj'on +! TaRR'ar||eksklamaTj'on +_¡ uBr'ir||eksklamaTj'on +_? TaRR'ar||interroQaTj'on +_¿ uBr'ir||interroQaTj'on +_[ uBr'ir||Qaf'et +_] TaRR'ar||Qaf'et +_( uBr'ir||parent'esi +_) TaRR'ar||parent'esi +_{ uBr'ir||kl'aU +_} TaRR'ar||kl'aU // unstressed words -o $u -o $atend -a $u -a $atend -os $u -os $atend -as $u -as $atend +o $u+ +a $u+ +os $u+ +as $u+ lo $u la $u los $u las $u +ro $u +ra $u +ros $u +ras $u ne $u nes $u + me $u te $u se $u @@ -199,7 +223,251 @@ os $u les $u lis $u +con $u +de $u +en $u $brk +mi $u +pa $u +por $u $brk +pues $u +pos $u +ta $u $brk +tu $u +sin $u +su $u +ye $u +el $u +es $u +els $u +ers $u +mis $u +tus $u +sus $u +bell $u +bel $u +bella $u +bells $u +bels $u +bellas $u +bellos $u +que $u +qui $u +quien $u +como $u +quan $u +quando $u +on $u +aon $u +porque $u +per $u +pus $u +ni $u +ibi $u +bi $u +i $u+ +ie $u +hu $u +sant $u + + +//abbreviations +abs $abbrev +ac $abbrev +acb $abbrev +acm $abbrev +acs $abbrev +acup $abbrev +adn $abbrev +adsl $abbrev +aea $abbrev +aeci $abbrev +aek $abbrev +aepd $abbrev +afp $abbrev +ai $abbrev +akp $abbrev +amd $abbrev +anb $abbrev +anp $abbrev +anv $abbrev +ap $abbrev +apec $abbrev +aqu $abbrev +atp $abbrev +ats $abbrev +avl $abbrev +avs $abbrev +avt $abbrev +avv $abbrev +bbva $abbrev +bce $abbrev +bme $abbrev +bop $abbrev +bopv $abbrev +ca $abbrev +cav $abbrev +cbuc $abbrev +ccaa $abbrev +ccoo $abbrev +ccuc $abbrev +cee $abbrev +ceoe $abbrev +cepyme $abbrev +cesid $abbrev +cicr $abbrev +cidui $abbrev +ciemat $abbrev +cis $abbrev +cne $abbrev +cni $abbrev +csic $abbrev +csif $abbrev +dgaia $abbrev +dlsi $abbrev +dni $abbrev +dogc $abbrev +dogv $abbrev +dya $abbrev +eads $abbrev +eaed $abbrev +eb $abbrev +ebb $abbrev +eees $abbrev +eei $abbrev +egb $abbrev +eln $abbrev +emt $abbrev +eoc $abbrev +epsv $abbrev +erc $abbrev +ets $abbrev +euia $abbrev +facua $abbrev +fao $abbrev +fapae $abbrev +fbi $abbrev +fci $abbrev +feb $abbrev +fed $abbrev +fib $abbrev +finul $abbrev +fmi $abbrev +fuoc $abbrev +gatt $abbrev +iaaf $abbrev +ibm $abbrev +icaa $abbrev +icde $abbrev +icv $abbrev +iec $abbrev +iee $abbrev +ieo $abbrev +imc $abbrev +ims $abbrev +in3 $abbrev +inc $abbrev +inem $abbrev +ing $abbrev +inm $abbrev +ip $abbrev +ipc $abbrev +ipca $abbrev +iqua $abbrev +isaf $abbrev +itcat $abbrev +itv $abbrev +iu $abbrev +iun $abbrev +ko $abbrev +lotc $abbrev +mibor $abbrev +mit $abbrev +mnac $abbrev +nba $abbrev +nyse $abbrev +ocde $abbrev +ocu $abbrev +oea $abbrev +oiea $abbrev +olp $abbrev +omc $abbrev +omg $abbrev +oms $abbrev +ong $abbrev +op $abbrev +pce $abbrev +pda $abbrev +pde $abbrev +pdi $abbrev +pec $abbrev +pga $abbrev +pge $abbrev +pgou $abbrev +pib $abbrev +pid $abbrev +pse $abbrev +psoe $abbrev +psuc $abbrev +racc $abbrev +raf $abbrev +rba $abbrev +ree $abbrev +rfec $abbrev +rne $abbrev +rsa $abbrev +rtve $abbrev +samu $abbrev +sdat $abbrev +sec $abbrev +smi $abbrev +sod $abbrev +sos $abbrev +summa $abbrev +tor $abbrev +tpi $abbrev +tse $abbrev +tsja $abbrev +tve $abbrev +ua $abbrev +uab $abbrev +uaw $abbrev +udc $abbrev +udg $abbrev +udl $abbrev +ue $abbrev +uem $abbrev +ugt $abbrev +uhf $abbrev +uib $abbrev +uicn $abbrev +uimp $abbrev +uji $abbrev +um $abbrev +umd $abbrev +ump $abbrev +upc $abbrev +upd $abbrev +upf $abbrev +upn $abbrev +ups $abbrev +upv $abbrev +url $abbrev +urss $abbrev +urv $abbrev +usb $abbrev +usfp $abbrev +uss $abbrev +uv $abbrev +uveg $abbrev +uz $abbrev +vih $abbrev +vpo $abbrev +wap $abbrev +witsa $abbrev + + // exceptions +barça b'arsa holio x'olio jazz dZ'as @@ -220,6 +488,7 @@ iphone 'aIfon (i pod) 'aIpod ipod 'aIpod hardware x'ardwer +linux $1 live l'aIB messenger m'esendZer mozilla moT'ila @@ -229,5 +498,8 @@ skype esk'aIp software s'oftwer thunderbird Tanderb'ird twitter tw'iter +unix j'uniks whatsapp was'app windows w'indows + +//mobile _^_EN diff --git a/dictsource/an_rules b/dictsource/an_rules index 7f0e1ecb..731e9acc 100644 --- a/dictsource/an_rules +++ b/dictsource/an_rules @@ -17,6 +17,8 @@ au aU au (X 'aU + _) a' %a + .group b b b @@ -38,6 +40,10 @@ ch tS + +.group ç + ç T + .group d d d _) d d // phoneme definition may change it to [D] @@ -52,6 +58,9 @@ n) d (_ = // silent, but stress on last vowel + _) d' (AP2 d + _) de' d%e + .group e e e @@ -66,6 +75,9 @@ u) e E y) e E + _) ent' (AP4 ent + _) enta' ,ent%a + .group f f f @@ -92,11 +104,12 @@ .group h h // silent - + hu (e gw + hu (i gw .group i i i - i (u i + i (u_ i i (A j @@ -116,6 +129,9 @@ .group m m m + _) m' (AP2 m + _) mo' m%o + .group n n n @@ -141,10 +157,15 @@ u) o O y) o O + .group p p p _) ps s + _) p' (AP2 p + _) pa' p%a + _) pe' p%e + .group q qu (A kw @@ -174,6 +195,8 @@ s s &) s (_S1 s + _) s' (AP2 s + .group t t t @@ -186,15 +209,20 @@ ui) t (_ t# s) t (_ = // silent, but stress on last vowel + _) t' (AP2 t + _) ta' t%a + _) to' t%o + .group u u u + uix uS u (u u u (i u + r) uix uS + r) u (A u u (A w _) u (A gw - uix uS - .group v // same as 'b' @@ -228,9 +256,13 @@ .group + ' á ''a é ''e í ''i ó ''o ú ''u + __) - (_D m'enos + D_) - (_D m'enos + diff --git a/dictsource/az_list b/dictsource/az_list deleted file mode 100644 index f174747c..00000000 --- a/dictsource/az_list +++ /dev/null @@ -1,80 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Azerbaijani - - -// Numbers -_0 s@f'@R -_1 b'iR -_2 ic'i -_3 'ytS -_4 d'WRd -_5 b'eS -_6 alt'@ -_7 jedd'i -_8 s&Cc'iz -_9 dogg'uz -_1X 'on -_2X ijiRm'i -_3X ot'uz -_4X g'@Rx -_5X &ll'i -_6X altm'@S -_7X jetm'iS -_8X s&Cs'&n -_9X doxs'an -_0C j'yz -_0M1 m'in -_0M2 milj'on -_0M3 milj'aRd -_dpt _viRg,yl_| // ?? - - -// Function words - // personal pronouns -mən $u+ -sən $u+ -o $u+ -biz $u+ -siz $u+ -onlar $u+ - - // possessive pronouns -mənim $u+ -sənin $u+ -onun $u+ -bizim $u+ -sizin $u+ -onların $u+ - - - -// Character names -b be -c dZe -ç tSe -d de -f fe -g Je -ğ Qe -h he -x xe -j Ze -k ka -q ge -l el -m em -n en -_o o -p pe -r eR -s se -ş Se -t te -v ve -w dubElv'E -y je -z ze - - - diff --git a/dictsource/az_rules b/dictsource/az_rules deleted file mode 100644 index 3d208745..00000000 --- a/dictsource/az_rules +++ /dev/null @@ -1,111 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Azerbaijani - -// Stress rule: Right-most vowel, but stop before the vowel which is -// marked as unstressed [%]. - - -.group a - a a - -.group b - b b - -.group c - c dZ - -.group ç - ç tS - -.group d - d d - -.group e - e e - -.group ə - ə & - -.group f - f f - -.group g - g J - -.group ğ - ğ Q - -.group h - h h - -.group x - x x - -.group ı - ı @ - -.group i - i i - -.group j - j Z - -.group k - k c - k (K C - -.group q - q g - -.group l - l l - -.group m - m m - -.group n - n n - -.group o - o o - -.group ö - ö W - -.group p - p p - -.group r - r R - A) r (A * - -.group s - s s - -.group ş - ş S - -.group t - t t - -.group u - u u - -.group ü - ü y - -.group v - v v - -.group w - w w - -.group y - y j - -.group z - z z - -.group - ä & diff --git a/dictsource/bn_list b/dictsource/bn_list index cedd2668..c7c52e38 100644 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -3,179 +3,166 @@ // Numbers devanagari numbers are changed to latin characters before translation -_0 S'u:n.nV'o: -_1 a'k -_2 d:UI -_3 t'i:n -_4 c'a:@'r -_5 ,pa~c -_6 c#'O:j -_7 S'a:t -_8 'a:t.# -_9 n'O:j +_0 S'unjO +_1 '&k +_2 duj +_3 t'in +_4 tS'ar +_5 p'a~tS +_6 tS#'Oj +_7 S'at +_8 'at.# +_9 n'Oj -_10 d'O:S -_11 a'g'a:rO: -_12 b'a:rO: -_13 t'a:rO: -_14 c#:O:d'dO: -_15 p'O:n'e:rO: -_16 S'o:lO: -_17 SO:t'e:rO: -_18 a:t#'e:rO: -_19 U'n'IS +_10 d'OS +_11 '&garo +_12 b'arO +_13 t'erO +_14 tS'owddO +_15 p'OnerO +_16 S'olO +_17 S'OterO +_18 'at.#arO +_19 'uniS -_20 kU:'ri -_21 e:kU'S -_22 b'a:IS -_23 t'e:IS -_24 c'O:b'bIS -_25 pa~O:c'IS -_26 c#'a:'bb'IS -_27 Sa:ta:S -_28 at#'a:S -_29 Unt'rIs -_30 t'i:rIS +_20 k'uri // or b'iS ?? +_21 'ekuS +_22 b'ajS +_23 t'ejS +_24 tS'ObbiS +_25 p'O~tSiS +_26 tSh'ObbiS +_27 S'ataS +_28 'at.#aS +_29 'untriS -_31 e:k't:rIS -_32 bat:'rIS -_33 tE't'rIS -_34 ca~o:u:t'rIS -_35 pa~O:it'rIS -_36 c#a'trIS -_37 Sa~it'rIS -_38 at'tr'IS -_39 U'nO:cO:l'IS +_30 t'iriS +_31 'ektriS +_32 b'OtriS +_33 t'etriS +_34 tSowtriS +_35 pO~jtriS +_36 tS#'OtriS +_37 S'a~itriS +_38 'at.riS +_39 'unOtSOlliS -_40 co:l'lIS -_41 e:k'co:l'lIS -_42 bi'al'lIS -_43 te:ta:l'lIS -_44 cu:a:l'lIS -_45 paI'nta:l'lIS -_46 c#e:co:l'lIS -_47 Sat'co:l'lIs -_48 at'co:l'lIS -_49 Uno:pan'ca:S +_40 tS'OlliS +_41 'ektSOlliS +_42 b'ialliS +_43 t'etalliS +_44 tS'oalliS +_45 p'O~jtalliS +_46 tS'etSOlliS +_47 S'atSOllis +_48 'atSOlliS +_49 'unOpO~tSaS -_50 p@n'ca:s -_51 e:ka:n'no: -_52 ba:h@n'no: -_53 t'Ip'pan'no: -_54 cu:wan'no: -_55 po:n'ca:n'no: -_56 c#h@p:'an'no: -_57 Sa:ta:n'no: -_58 at#'a:n'no: -_59 Uno:s'at# +// numbers above 50 need to be corrected +_50 p'O~tSaS +_5X p'O~tSaS +_59 'unOsat. -_60 s'a:t.# -_61 e:k'so:t'tI -_62 ba:so:t'tI -_63 te:so:t'tI -_64 ca~o:u:so:t'tI -_65 pa~I'so:t'tI -_66 c#e:so:t'tI -_67 Sat'so:t'tI -_68 atso:t'ti -_69 ,Uno:Sat'to:r +_60 s'at. +_6X s'at. +_69 'unOS'OttOr -_70 So:t'to:r -_71 e:kat'to:r -_72 ba:hat'to:r -_73 tIat'to:r -_74 cu:at'to:r -_75 pa~c#at'to:r -_76 c#I'at:to:r -_77 Sa:t@'t:o:r -_78 atat'to:r -_79 ,Uno:a:Si: +_70 S'OttOr +_7X S'OttOr +_79 'unOaSi -_80 a:Si -_81 e:ka:Si: -_82 bI'ra:Si: -_83 tIra:Si: -_84 cu:ra:Si: -_85 pa~ca:Si: -_86 c#Ia:Si: -_87 Sa:ta:Si: -_88 O:sto:a:Si: -_89 Uno:no:b'bo:I +_80 'aSi +_8X 'aSi +_89 'unOnObbOj -_90 no:b:bo:I -_91 e:ka:no:b'bo:I -_92 bIra:no:b'bo:I -_93 tIr'a:no:b'bo:I -_94 cu:r'a:no:b'bo:I -_95 pa~ca:no:b'bo:I -_96 c#Ia:no:b'bo:I -_97 S@ta:no:b'bo:I -_98 ata:no:b'bo:I -_99 nIra:no:b'bo:I +_90 n'ObbOj +_9X n'ObbOj + +_0C S'o +_0M1 h'ajar +_0M2 l'ak# +_0M3 k'ot.i +_0M4 'Orbud +_dpt dOsomik -_0C SO: -_0M1 h@z'a:r -_0M2 l'a:k# -_0M3 ko:tI -_0M4 o:r'bu:d -_dpt d@so:mIk // Single consonants -ক k@ -খ k#@ -গ g@ -ঘ g#@ -ঙ N'g -চ c@ -ছ c#@ -জ J@ -ঝ J#@ -ঞ n^@ -ট t.@ -ঠ t.#@ -ড d.@ -ঢ d.#@ -ণ n.@ // retroflex n.@ -ত t@ -থ t#@ -দ d@ -ধ d#@ -ন n@ -প p@ -ফ p#@ -ব b@ -ভ b#@ -ম m@ -য় O:j -য J@ -র r@ -ড় r-@ -ঢ় hr@ -ল l@ -শ S@ -ষ s.@ // retroflex [S] -স s@ -হ H@ -ৎ t@ +ক 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#ennO +ত tO +থ t#O +দ dO +ধ d#O +ন d'ontennO +প 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 +শ taleboS:O +ষ mud#en:oS:O +স d'onteS:O +হ hO +ৎ kh'Ond.otO +// full vowels +অ O +আ a +ই hrOS:o'i +ঈ dirg#o'i +উ hrOS:o'u +ঊ dirg#o'u +ঋ ri +এ e +ঐ oj +ও o +ঔ ow // combining vowel signs -ा #X2a: -ि #X1I -ी #X2i: -ূ #X1U -ू #X2u: -ृ #X1rI -ে #X1e: -ৈ #X2E: -ো #X1o: -ৌ #X1O: -ॐ #X1o~m +া '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 // Punctuation । dVn.d.V + // Pronouns আমি $u // main: I আমায় $u @@ -198,7 +185,7 @@ _dpt d@so:mIk তোর $u এ $u // he/she/it -একে $u +আপনি $u এটার $u এর $u @@ -264,6 +251,9 @@ _dpt d@so:mIk // Verbs +হয় $u + + ছিল $u // chilo: past aux ছিলেন $u // chilen @@ -274,5 +264,3 @@ _dpt d@so:mIk // Exceptions -ক্রিকেট krIk'Et -সাইবার s'aIb@r diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 862261c0..64fb2305 100644 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -7,9 +7,6 @@ // C consonants // Y vowel letters and vowel signs -// conditional rules -// ?2 use diphthong for "ai" -// ?3 use diphthong for "au" .replace @@ -29,289 +26,355 @@ .group অ - অ a + অ V + অঁ O~ .group আ - আ a: + আ a + আঁ a~ .group ই - ই I + ই i ইঁ i~ - ইং I'ng + .group ঈ - ঈ i: - ঈ (_ i + ঈ i + ঈঁ i~ + .group উ - উ U + উ u + উঁ u~ + .group ঊ - ঊ u: - ঊং u~ // + anusvara - ঊঁ u~ // + candrabinbu + ঊ u + ঊঁ u~ .group ঋ - ঋ rI - -.group এঁ - এঁ E // candra e - -.group ঐ - ঐ e + ঋ ri + ঋঁ ri~ +.group ঌ + ঌ l- + + .group এ - এ e: + এ & + এঁ &~ + .group ঐ - ঐ E: // ?? [aI] [E:] [&:] - ঐং E~ - ঐঁ E~ -?2 ঐ aI // ?? [aI] [E:] [&:] + ঐ oj + ঐঁ o~j + +.group এ + এ e + এঁ e~ -.group ওঁ - ওঁ O // candra O - -.group ঔ - ঔ o .group ও - ও o: - ওং o~ // +anusvara - ওঁ o~ // +candrabindu + ও o + ওঁ o~ + .group ঔ - ঔ O: // ?? [aU] [O:] - ঔঁ O~ // +candrabindu + ঔ ow + ঔঁ o~w +.group ও //?? + ও o: + + + // Vowel Signs .group া - া a: + া a + াঁ a~ .group ি - ি I + ি i + িঁ i~ .group ী - ী i: - ী (_ i + ী i + ীঁ i~ .group ূ - ূ U + ূ u + ূঁ u~ .group ু - ু u: + ু u + ুঁ u~ .group ৃ - ৃ rI + ৃ ri + ৃঁ ri~ + .group ে - ে e: + ে e + েঁ e~ + েউ ew + .group ৈ - ৈ E: // ?? [aI] [E:] [&:] + ৈ oj + ৈঁ o~j .group ো - ো o: + ো o + োঁ o~ .group ৌ - ৌ O: // [O:] or [aU] ?? + ৌ ow + ৌঁ o~w -.group ॐ - ॐ o~m - + // Consonants .group ক - ক k@ + ক kV ক (B k - ক্য (्য kja: - ক্ষ k#'@ + .group খ খ k#V - খ (B k#@ - + খ (B k# + + .group গ গ gV - গ (B g@ - ঈ)গ (ল g@ + গ (B g + .group ঘ ঘ g#V - ঘ (B g# + ঘ (B g# + .group ঙ - ঙ N'g + ঙ NV ঙ্ (B N - গা)ঙ (চি Ng@ + .group চ - চ cV - চ (B c - ্য) চ্য c'j@ + চ tSV + চ (B tS + .group ছ - ছ c#V - ছ (B c#@ + ছ tS#V + ছ (B tS# + .group জ - জ J@ - জ (B J@ - ্) জ zV - জ (B J@ + জ JV + জ (B J + + জ্ব JV + জ্ব (B J + জ্ঞ ggo~ + জ্ঞ (B gg + .group ঝ - ঝ J#@ - ঝ (B J#@ + ঝ J#V + ঝ (B J# + .group ঞ - ঞ n^V - ঞ্ (B n^ - + ঞ nV + ঞ্ (B n + .group ট ট t.V - ট (B t.V - ট (्য় t.j@ + ট (B t. + .group ঠ ঠ t.#V ঠ (B t.# + .group ড ড d.V ড (B d. + ড় r.V // nukta + ড় (B r. + + .group ঢ - ঢ d.#V - ঢ (B d.# + ঢ d.#V + ঢ (B d.# + + ঢ় hr.V + ঢ় (B hr. + + .group ণ - ণ n.V // (temporary) same as dental [n] - ণ (B n. - ণ্ম n.m + ণ nV // should be [n.] if adjacent to t. or d. ? + ণ (B n + .group ত - ত t@ - ত (B t@ - + ত tV + ত (B t + + .group থ - থ t#@ + থ t#V থ (B t# - ক) থ (ন t#@ + .group দ - দ d@ + দ dV দ (B d - ব) দ (ল d@ + .group ধ - ধ d#@ + ধ d#V ধ (B d# - সা) ধ (ন d#@ - -.group ন - ন n@ - ন (B n@ - ্) ন (্ n@ - র্) ন (_ r.n // r +virama অর্ণব .group ন - ন n: // should this be a long [n] ? + ন nV + ন (B n + .group প - প p@ + প pV প (B p - প্য (्য p: + .group ফ - ফ p#@ - ফ (B p#@ - ফ p#@ + ফ fV // or [p#] ? + ফ (B f .group ব - ব b@ - ব (B b@ + ব bV + ব (B b + .group ভ - ভ b#@ - ভ (B b#@ + ভ b#V + ভ (B b# + .group ম ম mV - ्) ম (_ mV - র্) ম (_ r.m@ // r +virama - ন্) ম (_ n.m // n +virama + ম (B m + .group য় - য় jV - য় (B jV - -.group য - য J@ - য (B J@ - ्) য (_ ja + য় jV + য় (B j + +.group য + য dZV + য (B dZ + + য় jV // nukta + য় (B j + + .group র র rV র (B r - ्) র (_ r@ - + .group ল - ল l - ল (B l@ - ক) ল (ম l@ + ল lV + ল (B l + .group শ - শ S@ - শ (B S@ + শ SV // or [s] ? + শ (B S + + + শ (্ল s + .group ষ - ষ s - ষ (B s //?? + ষ SV + ষ (B S -.group স - স s@ - স (B s. - -.group হ - হ H@ - হ (B H@ - হ্ব v@ -.group হ্ব - B) হ্ব (B v@ +.group স + স SV // or [s] ?? + স (B S + + স (্থ s + স (্ত s + + _) স্ব SV // shb + _) স্ব (B S + + +.group হ + হ hV + হ (B h + + +.group হ্ব + হ্ব vV + হ্ব (B v + + .group ৎ - ৎ (B t@t + ৎ t +.group ড় // can be ড plus nukta + ড় r.V + ড় (B r. - // nukta, modifies a consonant + +.group ঢ় // can be ঢ plus nukta + ঢ় hr.V + ঢ় (B hr. + -.group ্যা // ja'falaa - ্যা a -.group ँ - ँ n // candrabindu +.group ঁ + ঁ O~ // candrabindu, nasalize the previous vowel .group ং - ং aN'g // anusvara + ং N // anusvara/onushshor -.group ः - ः H // visarga +.group ঃ // visarga/bishorgo + ঃ // doubles the following consonant + ঃ (_ H -.group ্ // virama +.group ্ // virama/hoshonto ্ +.group ় + ় // nukta, modifies a consonant +.group + // obsolete letters + ঋ r- + ৠ r- + ঌ l- + ৡ l- + ৃ r- + ৄ r- + ৢ l- + ৣ l- diff --git a/dictsource/bo_rules b/dictsource/bo_rules deleted file mode 100644 index 3dd786ea..00000000 --- a/dictsource/bo_rules +++ /dev/null @@ -1,409 +0,0 @@ -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Tibetan - -.replace -༠ 0 -༡ 1 -༢ 2 -༣ 3 -༤ 4 -༥ 5 -༦ 6 -༧ 7 -༨ 8 -༩ 9 - - - -.group ཀ - ཀ ka - ཀ (B k - @) ཀ (_ k - -.group ཁ - ཁ k#a - ཁ (B k# - @) ཁ (_ k# - -.group ག - ག ga - ག (B g - @) ག (_ g - -.group གྷ - གྷ g#a - གྷ (B g# - @) གྷ (_ g# - -.group ང - ང Na - ང (B N - @) ང (_ N - -.group ཅ - ཅ ca - ཅ (B c - @) ཅ (_ c - -.group ཆ - ཆ c#a - ཆ (B c# - @) ཆ (_ c# - -.group ཇ - ཇ Ja - ཇ (B J - @) ཇ (_ J - -.group ཉ - ཉ n^a - ཉ (B n^ - @) ཉ (_ n^ - -.group ཊ - ཊ t.a - ཊ (B t. - @) ཊ (_ t. - -.group ཋ - ཋ t.#a - ཋ (B t.# - @) ཋ (_ t.# - -.group ཌ - ཌ d.a - ཌ (B d. - @) ཌ (_ d. - -.group ཌྷ - ཌྷ d.#a - ཌྷ (B d.# - @) ཌྷ (_ d.# - -.group ཎ - ཎ n.a - ཎ (B n. - @) ཎ (_ n. - -.group ཏ - ཏ ta - ཏ (B t - @) ཏ (_ t - -.group ཐ - ཐ t#a - ཐ (B t# - @) ཐ (_ t# - -.group ད - ད da - ད (B d - @) ད (_ d - -.group དྷ - དྷ d#a - དྷ (B d# - @) དྷ (_ d# - -.group ན - ན na - ན (B n - @) ན (_ n - -.group པ - པ pa - པ (B p - @) པ (_ p - -.group ཕ - ཕ p#a - ཕ (B p# - @) ཕ (_ p# - -.group བ - བ ba - བ (B b - @) བ (_ b - -.group བྷ - བྷ b#a - བྷ (B b# - @) བྷ (_ b# - -.group མ - མ ma - མ (B m - @) མ (_ m - -.group ཙ - ཙ tsa - ཙ (B ts - @) ཙ (_ ts - -.group ཚ - ཚ ts#a - ཚ (B ts# - @) ཚ (_ ts# - -.group ཛ - ཛ dza - ཛ (B dz - @) ཛ (_ dz - -.group ཛྷ - ཛྷ dz#a - ཛྷ (B dz# - @) ཛྷ (_ dz# - -.group ཝ - ཝ wa - ཝ (B w - @) ཝ (_ w - -.group ཞ - ཞ Za - ཞ (B Z - @) ཞ (_ Z - -.group ཟ - ཟ za - ཟ (B z - @) ཟ (_ z - -.group འ - འ ?a - འ (B ? - @) འ (_ ? - -.group ཡ - ཡ ja - ཡ (B j - @) ཡ (_ j - -.group ར - ར ra - ར (B r - @) ར (_ r - -.group ལ - ལ la - ལ (B l - @) ལ (_ l - -.group ཤ - ཤ Sa - ཤ (B S - @) ཤ (_ S - -.group ཥ - ཥ s.a - ཥ (B s. - @) ཥ (_ s. - -.group ས - ས sa - ས (B s - @) ས (_ s - -.group ཧ - ཧ Ha - ཧ (B H - @) ཧ (_ H - -.group ཨ - ཨ ?a - ཨ (B ? - @) ཨ (_ ? - -.group ཀྵ - ཀྵ ks.a - ཀྵ (B ks. - @) ཀྵ (_ ks. - - -// vowel signs -// Give the utf8 codes in octal, because these characters don't -// display correctly without a letter to attach to. -.group 0xe0bd - 0xe0bdb1 a: - 0xe0bdb2 i - 0xe0bdb3 i: - 0xe0bdb4 u - 0xe0bdb5 u: - 0xe0bdb6 r- - 0xe0bdb7 r-: - 0xe0bdb8 l- - 0xe0bdb9 l-: - 0xe0bdba e - 0xe0bdbb e: - 0xe0bdbc o - 0xe0bdbd o: - -// subjoined letters -.group 0xe0be // characters which start with UTF-8 bytes: [e0 be] - ྐ ka - ྐ (B k - @) ྐ (_ k - - ྑ k#a - ྑ (B k# - @) ྑ (_ k# - - ྒ ga - ྒ (B g - @) ྒ (_ g - - ྒྷ g#a - @) ྒྷ (_ g# - - ྔ Na - ྔ (B N - @) ྔ (_ N - - ྕ ca - ྕ (B c - @) ྕ (_ c - - ྖ c#a - ྖ (B c# - @) ྖ (_ c# - - ྗ Ja - ྗ (B J - @) ྗ (_ J - - ྙ n^a - ྙ (B n^ - @) ྙ (_ n^ - - ྚ t.a - ྚ (B t. - @) ྚ (_ t. - - ྛ t.#a - ྛ (B t.# - @) ྛ (_ t.# - - ྜ d.a - ྜ (B d. - @) ྜ (_ d. - - ྜྷ d.#a - ྜྷ (B d.# - @) ྜྷ (_ d.# - - ྞ n.a - ྞ (B n. - @) ྞ (_ n. - - ྟ ta - ྟ (B t - @) ྟ (_ t - - ྠ t#a - ྠ (B t# - @) ྠ (_ t# - - ྡ da - ྡ (B d - @) ྡ (_ d - - ྡྷ d#a - ྡྷ (B d# - @) ྡྷ (_ d# - - ྣ na - ྣ (B n - @) ྣ (_ n - - ྤ pa - ྤ (B p - @) ྤ (_ p - - ྥ p#a - ྥ (B p# - @) ྥ (_ p# - - ྦ ba - ྦ (B b - @) ྦ (_ b - - ྦྷ b#a - ྦྷ (B b# - @) ྦྷ (_ b# - - ྨ ma - ྨ (B m - @) ྨ (_ m - - ྩ tsa - ྩ (B ts - @) ྩ (_ ts - - ྪ ts#a - ྪ (B ts# - @) ྪ (_ ts# - - ྫ dza - ྫ (B dz - @) ྫ (_ dz - - ྫྷ dz#a - ྫྷ (B dz# - @) ྫྷ (_ dz# - - ྭ wa - ྭ (B w - @) ྭ (_ w - - ྮ Za - ྮ (B Z - @) ྮ (_ Z - - ྯ za - ྯ (B z - @) ྯ (_ z - - ྰ ?a - ྰ (B ? - @) ྰ (_ ? - - ྱ ja - ྱ (B j - @) ྱ (_ j - - ྲ ra - ྲ (B r - @) ྲ (_ r - - ླ la - ླ (B l - @) ླ (_ l - - ྴ Sa - ྴ (B S - @) ྴ (_ S - - ྵ s.a - ྵ (B s. - @) ྵ (_ s. - - ྶ sa - ྶ (B s - @) ྶ (_ s - - ྷ Ha - ྷ (B H - @) ྷ (_ H - - ྸ ?a - ྸ (B ? - @) ྸ (_ ? - - ྐྵ ks.a - ྐྵ (B ks. - @) ྐྵ (_ ks. - - -.group - $ dolar diff --git a/dictsource/dv_list b/dictsource/dv_list deleted file mode 100644 index 4ce2ae63..00000000 --- a/dictsource/dv_list +++ /dev/null @@ -1,174 +0,0 @@ - -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Divehi (Maldives) - -// Numbers - -_0 s'umeI -_1 e'keI -_2 d'eI -_3 tineI -_4 ha't#a'reI -_5 fa'heI -_6 ha'eI -_7 ha't#eI -_8 a'SeI -_9 n'uaeI -_10 d'ihaeI - -_11 e'gj'a:r@1 //egaara -_12 b'ar@2 //baara -_13 t'E:r@2 //theyra -_14 c#'O:d@2 //saada (d like in _2) -_15 p'Vndr@2 //fanara -_16 s'o:l@2 //soalha lh like in ޅ -_17 s'Vt:r@2 //sathaara -_18 Vt.#:'a:r@2 //ashaara -_19 Unn'Is //navaara - -_20 b'i:s //vihi (we he) -_21 Ik:'Is //eka wees -_22 b'a:Is //baa wees -_23 t'e:Is //tei wees -_24 c'O:bIs sav wees -_25 p@c:'Is //fansavees -_26 c#@bb'i:rs // sabbees -_27 s@t:'a:Is // sathawees -_28 at#:'a:Is // asha wees -_29 Unt'Is // ona thirees -_30 t'i:s // thirees - -_31 Ik@t:'Is // thirees eke --from hence it starts with the 10th digit and follows with the single digit. -_32 bat:'Is // eg. 32 = thirees (30) eke (1) -_33 tE~t'Is // E~ ? -_34 cO~t'Is -_35 pE~t'Is -_36 c#aT'tIs -_37 sE~t'Is -_38 art'Is -_39 Unta:l'Is - -_40 ca:l'Is //saalhees -_41 Ikta:l'Is -_42 baIa:l'Is -_43 tE~ta:l'Is -_44 cO:wa:l'Is -_45 paI'nta:l'Is -_46 c#hIja:l'Is -_47 sE~ta:l'Is -_48 arta:l'Is -_49 'Un^ca:s - -_50 p@c'a:s //fansaas -_51 Ikj'a:wVn -_52 b'a:wVn -_53 t'IrpVn -_54 c'Ou:wVn -_55 p'ac#pVn -_56 c#h@p:'Vn -_57 sVt:'a:w@n -_58 at#:'a:w@n -_59 Uns'Vt# - -_60 s'a:t.# //fas dho (ދ) lhas -_61 'Iks@t.# -_62 b'a:s@t.# -_63 t'Irs@t.# -_64 c'O~s@t.# -_65 paIns@t.# -_66 c#'Ija:s@t.# -_67 s'Vrs@t.# -_68 ars@t.# -_69 Un@h,at:'Vr: - -_70 sat:'Vr: // hai dhiha -_71 Ik#at:'Vr: -_72 b@hat:'Vr: -_73 tIhat:'Vr: -_74 cO:hat:'Vr: -_75 pac#,at:'Vr: -_76 c#Ihat:'Vr: -_77 s@t@hat:'Vr: -_78 at#hat:'Vr: -_79 ,Un^Ia:s'i: - -_80 ,Vss'i: // addiha -_81 Ikja:s'i: -_82 baIa:s'i: -_83 tIra:s'i: -_84 cO:ra:s'i: -_85 pI'ca:s'i: -_86 c#Ija:s'i: -_87 sVt:a:s'i: -_88 at#:a:s'i: -_89 nVwa:s'i: - -_90 nVb:'e: nuvadhiha -_91 Ikj'a:n@we: -_92 b'a:n@we: -_93 tIr'a:n@we: -_94 cO:r'a:m@we: -_95 p@c'a:n@we: -_96 c#Ij'a:n@we: -_97 s@t:'a:n@we: -_98 at#:'a:n@we: -_99 nIn^j'a:n@we: - -_0C sa't#eIka //satheyka (th like them) -_0M1 h@z'a:r (haas) -_0M2 l'a:kh // lakka -_0M3 cr'ore //curoadu - -// letter names -ހ h'a: -ށ s.'avijani -ނ n'u:nu -ރ R'a: -ބ b'a: -ޅ l.'av,ijani -ކ k'a:fu -އ 'alifu -ވ v'a:vu -މ m'i:mu -ފ f'a:fu -ދ d'a:lu -ތ t'a: -ލ l'a:mu -ގ g'a:fu -ޏ n^'avijani -ސ s'i:nu -ޑ d.'avijani -ޒ z'avijani -ޓ t.'avijani -ޔ j'a: -ޕ p'avijani -ޖ dZ'avijani -ޗ tS'avijani -ޘ T'a: -ޙ hh'a: -ޚ x'a: -ޛ D'a:lu -ޜ z'a: -ޝ S'i:nu -ޞ s'a:du -ޟ d'a:du -ޠ t'o -ޡ z'o -ޢ a'inu -ޣ Qa'inu -ޤ q'a:fu -ޥ w'a:vu -ޱ n'a||vijani - ަ 'aba||f,ili - ާ 'a:ba:||f,ili - ި 'ibi||f,ili - ީ 'i:bi:||f,ili - ު 'ubu||f,ili - ޫ 'u:bu:||f,ili - ެ 'ebe||f,ili - ޭ 'e:be:||f,ili - ޮ 'obo||f,ili - ޯ 'o:bo:||f,ili - ް s'ukun - - diff --git a/dictsource/dv_rules b/dictsource/dv_rules deleted file mode 100644 index a975f20f..00000000 --- a/dictsource/dv_rules +++ /dev/null @@ -1,189 +0,0 @@ - -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Divehi (Maldives) - -.group ހ - ހ h - -.group ށ - ށ s. - -.group ނ - ނ n - ން (ނ nn - ން (މ mm - ން (ޏ n^n^ - -.group ރ - ރ R - -.group ބ - ބ b - -.group ޅ - ޅ l. - -.group ކ - ކ k - -.group އ - އ // alifu - އް (_ eh - އް (ހ h - އް (ށ h - އް (ހ s. - އް (ނ n - އް (ރ R - އް (ބ b - އް (ޅ l. - އް (ކ k - އް (ކ v - އް (މ m - އް (ދ d - އް (ތ t - އް (ލ l - އް (ގ g - އް (ޏ N - އް (ސ s - އް (ޑ d. - އް (ޒ z - އް (ޓ t. - އް (ޔ j - އް (ޕ p - އް (ޖ dZ - އް (ޗ tS - އް (ޜ Z - -.group ވ - ވ v - -.group މ - މ m - -.group ފ - ފ f - -.group ދ - ދ d - -.group ތ - ތ t - -.group ލ - ލ l - -.group ގ - ގ g - -.group ޏ - ޏ n^ - -.group ސ - ސ s - -.group ޑ - ޑ d. - -.group ޒ - ޒ z - -.group ޓ - ޓ t. - -.group ޔ - ޔ j - -.group ޕ - ޕ p - -.group ޖ - ޖ dZ - -.group ޗ - ޗ tS - -.group ޘ - ޘ T - -.group ޙ - ޙ h - -.group ޚ - ޚ x - -.group ޛ - ޛ D - - - -.group ޜ - ޜ Z - -.group ޝ - ޝ S - -.group ޞ - ޞ s - -.group ޟ - ޟ d - -.group ޠ - ޠ t - -.group ޡ - ޡ z - -.group ޢ - ޢ ? - -.group ޣ - ޣ Q - -.group ޤ - ޤ q - -.group ޥ - ޥ w - - -.group ަ - ަ a - -.group ާ - ާ a: - -.group ި - ި i - -.group ީ - ީ i: - -.group ު - ު u - -.group ޫ - ޫ u: - -.group ެ - ެ e - -.group ޭ - ޭ e: - -.group ޮ - ޮ o - -.group ޯ - ޯ o: - -.group ް - ް // sukun - -.group ޱ - ޱ n. - -.group - $ dolaR - - diff --git a/dictsource/en_list b/dictsource/en_list index bc412af6..2ae975c8 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -61,6 +61,7 @@ a eI $atend // use the $accent attribute here to force the use of the // accent table when speaking the name of the character. à $accent $atend // this can be a word +á $accent $atend ç $accent é $accent ê $accent @@ -149,12 +150,14 @@ _¨ daIa#r'i:sIs _ª fEmI2nIn'O@dI2n@L _« lEft'gIl@mEt _­ makr0n +² tu: +³ Tri: +_¹ su:p@skrIptw'0n _² su:p@skrIptt'u: _³ su:p@skrIptT'ri: _´ a#kju:taksEnt _· mId@Ld0t _¸ sEd'Il@ -_¹ su:p@skrIptw'0n //_º maskjUlIn'O@dI2n@L _º dI2gr'i:z _» raIt'gIl@mEt @@ -510,6 +513,7 @@ agm $abbrev ai $abbrev amd $abbrev aol $abbrev +aph $abbrev api $abbrev apr apr@ asap $abbrev @@ -941,7 +945,7 @@ blancmange bl@m0nZ blase blA:z'eI blasé blA:z'eI bleh blEh -blockade $2 +blockade bl0k'eId blouse blaUz bluest blu:@st blurry bl3:rI @@ -1051,6 +1055,7 @@ caterer keIt3r3 cathedral $alt3 catholic kaTlIk carotid $alt3 +cartel kA@t'El cavalier $3 caveat kavIat ?3 caveat kavIA:t @@ -1156,6 +1161,7 @@ colonel k3:n@L colosseum k0l@s'i@m comanche k@mantSi combat k0mbat // combating +?3 combative k@mbatIv combo k0mboU comely kVmlI // comeliness comer kVm3 @@ -1275,6 +1281,7 @@ dais deIIs dandelion dandI2laI@n ddu DI $only // Welsh de d@ $only +(de jure) deIdZ'U@ri debacle deIb'A:k@L debrief di:br'i:f debris dEbri: @@ -1425,6 +1432,8 @@ ember Emb3 emphasis Emf@sIs $only empire $1 emu i:mju: +(en masse) 0n||m'as +(en route) 0n||r'u:t enroute 0nr'u:t ensemble 0ns'0mb@L entendre 0nt'0ndr@- @@ -1625,6 +1634,7 @@ goodday $2 goodnight $2 gorilla g3rIl@ gospel g0sp@L +gossamer g0s@m3 goto goUtu: gourmand gU@mA:nd gourmet gU@meI @@ -1669,6 +1679,7 @@ hello h@loU henceforth hEnsfo@T ?3 herb 3:b hercules h3:kjUli:z +?3 hereford h3:f3d heretical hI2rEtI2k@L hereto hi@3'tu: heretofore hi@3t2Ufo@ @@ -1692,6 +1703,7 @@ holme hoUm holster hoUlst3 homeowner hoUmoUn3 homepage hoUmpeIdZ +homily h0m@li hominem h0mInEm ?3 hominem h0m@n@m hooah h'u:'A: @@ -1780,6 +1792,7 @@ interim $1 intermediate Int3m'i:di@t intern Int3:n $noun interrogatory $3 +intestine I2ntEstI#n inventory Inv@ntri ?3 inventory Inv@nto:ri interface $1 @@ -1796,6 +1809,8 @@ interven Int3v'i:n // for intervening intray IntreI intro $1 ?3 investigative Inv,EstI2g'eItIv +ipad aIpad +iphone aIfoUn irate aIr'eIt iris aIrIs iron aI3n @@ -1843,6 +1858,7 @@ laboratory la#b'0r@trI labor leIb3 labored leIb@d laborer leIb@r3 +laborious $alt3 labyrinth lab3rInT lager lA:g3 laity leI@ti @@ -1875,6 +1891,7 @@ lemonade $3 leo li:oU leona li:'oUn@ leopard lEp3d +leprechaun lEpr@kO:n lesion li:Z@n lethal li:T@L liaison li:'eIz0n @@ -1970,6 +1987,7 @@ mausoleum mO:s@'li:@m mayhem meIhEm meant mEnt meadow mEdoU +medallion $alt3 mediaeval mEdI'i:v@L medicine mEds@n ?3 medicine mEd@s@n @@ -2380,6 +2398,7 @@ pythagoras paIT'ag@r@s python paIT@n pyramidal pI2r'amId@L +qaeda kaId@ quadrilateral $3 quash kw0S quaternary kw@t3:n@rI @@ -2812,6 +2831,7 @@ tonne tVn torment $1 torment $2 $verb tornado tO@n'eIdoU +torrential t@rEnS@L tortilla tO@t'i:a# touche tu:SeI $only toupee tu:peI @@ -2825,6 +2845,8 @@ trajectory tr@dZEkt@rI traverse $alt3 travesty trav@sti treatise tri:tIz +trebuchet trEbUSeI +tremendous $alt3 triage tri:A:Z tribunal traIb'ju:n@L triceratops traIs'Er@t0ps @@ -3007,6 +3029,7 @@ yessir jEss3: yoghurt j0g3t ?3 yoghurt joUg3t ?3 yogurt joUg3t +?3 youtube ju:t2u:b yoyo joUjoU zavala $alt3 @@ -3020,6 +3043,7 @@ Altrincham O:ltrIN@m Anglesey aNg@Lsi Argyle A@g'aIl Argyll A@g;aIl +Armagh A@m'A: Bacup beIk@p Berwick bErIk Betws bEtUs @@ -3203,6 +3227,7 @@ Korean kOr'i:@n Kosovo k0s@voU Kuala kwA:la# Lagos leIg0s +Lebanon lEb@n0n Leipzig laIpsIg Leone li:'oUn Lesotho l@s'u:tu: @@ -3323,6 +3348,7 @@ Tokyo toUkIoU Topeka toUp'i:k@ Toronto t@r0ntoU Toulouse tu:l'u:z +Trafalgar $alt3 ?3 Tunisia tu:n'i:Z@ Tripoli trIp@li tuareg twA@rEg @@ -3486,6 +3512,7 @@ Evette I2vEt Fainne fan;@ Freda fri:d@ Fírinne fi:rIn;@ +Gareth gar@T Gary gari Geraint gEraInt Gerhard ge@hA@t @@ -3658,6 +3685,7 @@ Susanne $2 Suzy su:zi Tatiana tatI'A:n@ ?3 Tatiana tA:tj'A:n@ +Terese t@reIz Theresa t@ri:z@ Therese t@ri:z Thomas t0m@s @@ -3748,9 +3776,7 @@ zhivago ZI2vA:goU -(de jure) deIdZ'U@ri -(en masse) ,0n||m'as -(en route) ,0n||r'u:t + (each of) i:tS||@v $pause (far more) f'A@_m,o@ (few more) f'ju:m,o@ @@ -3761,9 +3787,9 @@ zhivago ZI2vA:goU (most of) moUst||@v (such as) sVtS||_a#z $pause -(too few) t'u:||f,ju: -(too many) t'u:||m,Eni -(too much) t'u:||m,VtS +(too few) t'u:||fju: +(too many) t'u:||mEni +(too much) t'u:||mVtS //************************************************************************* // COMMON WORDS @@ -3896,8 +3922,8 @@ would $u+ $verbf $only $strend2 (would have) w%Udh%a#v $pastf (would have) wUdhav $pastf $atend (would have to) wUdhavt@5 $u2 $verbf $strend2 -(wouldn't have) wUdnt@v $u1 $pastf $strend2 -(wouldn't have to) ,wUdntavt@5 $verbf $strend2 +(wouldn't have) wUd@-nt@v $u1 $pastf $strend2 +(wouldn't have to) ,wUd@-ntavt@5 $verbf $strend2 won't woUnt $u+ $verbf $strend2 $only wouldst $u+ (won't have) woUnta#v $pastf $u1 @@ -3908,18 +3934,18 @@ must $verbf (must have) mVsta#v $pastf $1 (must have) mVsthav $pastf $atend (must have to) m,Vstavt@5 $pastf -mustn't mVsnt $verbf -(mustn't have) mVsntha#v $pastf $u1+ -(mustn't have to) m'Vsnthavt@5 $pastf +mustn't mVs@-nt $verbf +(mustn't have) mVs@-ntha#v $pastf $u1+ +(mustn't have to) m'Vs@-nthavt@5 $pastf shall ,Sal $verbf $only $strend2 shalt ,Salt $verbf $only should ,SUd $verbf $only $strend2 (should have) SUd@v $pastf $u1+ (should have to) SUdhavt@5 $u2 $verbf $strend2 -shouldn't ,SUdnt $verbf $strend2 $only -(shouldn't have) SUdnth@v $pastf $u1+ -(shouldn't have to) 'SUdntavt@5 $verbf $strend2 +shouldn't ,SUd@-nt $verbf $strend2 $only +(shouldn't have) SUd@-nth@v $pastf $u1+ +(shouldn't have to) 'SUd@-ntavt@5 $verbf $strend2 shalln't ,SA:nt $verbf $strend2 shan't ,SA:nt $verbf $strend2 @@ -3935,9 +3961,9 @@ could %kUd $verbf $strend2 $only (could have) ,kUda#v $pastf (could have) kUdhav $pastf $atend (could have to) kUdhavt@5 $u2 $verbf $strend2 -couldn't ,kUd@nt $verbf $strend2 -(couldn't have) kUd@nt@v $pastf $u1+ -(couldn't have to) 'kUd@ntavt@5 $verbf $strend2 +couldn't ,kUd@-nt $verbf $strend2 +(couldn't have) kUd@-nt@v $pastf $u1+ +(couldn't have to) 'kUd@-ntavt@5 $verbf $strend2 may meI $verbf $strend2 (may have) meIha#v $pastf $u1+ @@ -3968,9 +3994,9 @@ had ,had $atend (had it) h,adI2t (had them) h,adDEm having ,havIN $strend2 $pastf $only -haven't hav@nt $pastf -hadn't had@nt $pastf -hasn't haz@nt $pastf +haven't hav@-nt $pastf +hadn't had@-nt $pastf +hasn't haz@-nt $pastf get %gEt $strend2 $pastf $only getting ,gEtIN $strend2 $pastf $only @@ -4076,8 +4102,8 @@ his hIz $u $nounf $only $strend2 her h3: $u $nounf $only hers h3:z $u $strend2 its Its $u $nounf -our aU@ $u $nounf $onlys -?3 our aU3 $u $nounf $onlys +our aU@ $u $nounf $only +?3 our aU3 $u $nounf $only your jO@ $u $nounf $only ?6 your jU@ $u $nounf $only their De@ $u $nounf $only diff --git a/dictsource/en_rules b/dictsource/en_rules index a55f7b09..30a4b5cf 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1190,6 +1190,9 @@ au (_ aU _) auch %O:x aud (_ 'O:d + audio O:dI2oU + _) aud (iolo O:d + _) aud (iom O:d augh O: l) augh aaf sl) augh O: @@ -3824,7 +3827,8 @@ nk Nk ?7 nk nk // ?? Scottish n (kn n - n't nt + n't @-nt + A) n't nt E) n (_ @n B) n (_ @n g) n (ing+ n @@ -4311,6 +4315,7 @@ d) or (_ o@ _f) or (@ O@ _f) ore (A O@ + _f) ore (kn O@, f) or (k O@ _f) or (s@ %O@ ch) or (d O@ @@ -4844,7 +4849,7 @@ pro (vid pr@ pro (viden pr0 pro (vis pr@ - pro (voc pr@ + pro (voc pr%0# pro (vok pr@ pro (sec pr0 pro (fil proU @@ -5248,7 +5253,7 @@ te (rrest t2@ r) tga (g gI @) t (ia S - s) t (l ? + s) t (l to (morr t@ _) to (nn tV t (ooth t2 @@ -5403,6 +5408,8 @@ s) uag weIdZ @g) ua (ge wI u (al_ ju: + g) u (al_ w + n) u (al_ ju: g) ua (rA a g) uar (d A@ uary (_ ju:@ri @@ -6037,6 +6044,7 @@ χ tS'aI_ ψ ps'aI_ ω 'oUmIg@_ +?3 ω oUm'eIg@_ ώ 'oUmIg@_ ό 'oUmIkr0n_ diff --git a/dictsource/es_list b/dictsource/es_list index b7b3063d..9fc6458e 100644 --- a/dictsource/es_list +++ b/dictsource/es_list @@ -338,6 +338,7 @@ ll 'El^e é 'e||aTEntw'aDa í 'i||aTEntw'aDa _ó 'o||aTEntw'aDa +ó 'o||aTEntw'aDa $atend ú 'u||aTEntw'aDa ü ,uDj'ErEsis diff --git a/dictsource/ga_list b/dictsource/ga_list index c1e3da64..e67f39c9 100644 --- a/dictsource/ga_list +++ b/dictsource/ga_list @@ -37,11 +37,12 @@ y waI z zEd _á eI||f0d[@ _é i:||f0d[@ +_í aI||f0d[@ _ó o:||f0d[@ _ú ju:||f0d[@ _#32 spA:s - +_cap m'o:r // accent names diff --git a/dictsource/ht_list b/dictsource/ht_list deleted file mode 100644 index 094b8799..00000000 --- a/dictsource/ht_list +++ /dev/null @@ -1,167 +0,0 @@ -// Haitian Creole translation rules -// This file is UTF-8 encoded - - - -// numbers -_0 zewo -_1 E~ -_2 de -_3 twa -_4 kat -_5 sE~k -_6 sis -_7 sEt -_8 yit -_9 nEf -_10 dis -_11 O~z -_12 duz -_13 trEz -_14 katOz -_15 kE~z -_16 sEz -_17 disEt -_18 dizyit -_19 diznEf -_20 vE~ -_21 vE~te;E~ -_2X vE~n -_28 vE~tyit -_29 vE~tnEf -_30 trA~t -_31 trA~te;E~ -_3X trA~n -_38 trA~tyit -_39 trA~tnEf -_40 karA~t -_41 karA~te;E~ -_4X karA~n -_48 karA~tyit -_49 karA~tnEf -_50 sE~kA~t -_51 sE~kA~te;E~ -_5X sE~kA~n -_58 sE~kA~tyit -_59 sE~kA~tnEf - -_60 swasA~t -_61 swasA~te;E~ -_6X swasA~n -_70 swasA~tdis -_71 swasA~te;O~z -_8X katrevE~ -_81 katrevE~tE~ -_91 katrevE~tO~z - -_0C sA~ -_0M1 mil -_1M1 mil -_0M2 miljon -_0M3 milja -_0M4 biljon -_dpt _pwE~ - - -// Common function words -//====================== - -// Articles -on $u -yon $u - -la $u -lan $u -a $u -an $u - -sa $u - - -// Pronouns -mwen $u -ou $u -li $u -nou $u -yo $u - -ki $u - - -// Verbs -se $u // to be -vin $u - -te $u // tense markers -tap $u -(t ap) tap $u -ap $u -a $u -pral $u -ta $u - - -// Prepositions -ak $u $brk -nan $u -pou $u - - -// Conjunctions -epi $u $pause - - -// Adverbs -kèk $u // some - - -// Characters -% pusA~ $max3 -* asteris $max3 -+ plis $max3 -= egal $max3 -/ slaS $max3 -\ A~tislaS $max3 -# aSaj $max3 - -_, vigil -_; pwE~vigil -_. pwE~ - - -// Letter names -// (note: some letters must be distinguished from one-letter words) -_a a -a a $atstart $atend -b bi -c si -d di -e e -è egr'av -f Ef -g ge -h aS -i i -j Zi -k ka -_l el -l el $atend -_m em -m em $atend -_n en -n en $atend -o o -ò ogr'av -p pi -q kju -r ara -s Es -_t ta -t ta $atend -u u -v va -_w dubv'a -w dubv'a $atend -_y ipsil'on -y ipsil'on $atend -z zed diff --git a/dictsource/ht_rules b/dictsource/ht_rules deleted file mode 100644 index ef14b21f..00000000 --- a/dictsource/ht_rules +++ /dev/null @@ -1,104 +0,0 @@ -// Haitian Creole translation rules -// This file is UTF-8 encoded - -.group a - a a - an (K A~ - -.group à - à a - -.group b - b b - -.group c - ch S - c k - c (Y s - -.group d - d d - -.group e - e e - en (K E~ - -.group è - è E - -.group f - f f - -.group g - g g - -.group h - h // silent ? - -.group i - i i - -.group j - j Z - -.group k - k k - -.group l - l l - -.group m - m m - -.group n - n n - ng N - -.group o - o o - on (K O~ - ou u - -.group ò - ò O - -.group p - p p - -.group q - q k - -.group r - r r - -.group s - s s - -.group t - t t - tch tS - -.group u - u u - ui yi - -.group v - v v - -.group w - w w - -.group x - x ks - -.group y - y j - K) y (K i // not next to a vowel - -.group z - z z - -.group - ç s - $ dola - diff --git a/dictsource/hu_rules b/dictsource/hu_rules index d2672bb4..9b6ff0e7 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -462,6 +462,7 @@ shetlan) d (szige d vé) d (jeggy d své) d (zseb d csalá) d (szer d + szaba) d (sajt d .group dz fogó) dz (kod ts @@ -820,6 +821,12 @@ _megsz) í (vatta i szabad) ítsz its: sz) í (vemészt i: vesz) ítsz i:ts: +progressz) í (ve i: + sz) í (vemel i: + sz) í (vere i: + sz) í (veré i: + sz) í (verő i: + sz) í (vevő i: .group j j j @@ -948,7 +955,6 @@ bagate) ll (iz l szí) n (ját n szí) n (józan n nyj n^n^ - _) nem (- nEm // has $combine attribute in hu_list, combine with the next word me) nny (ország n^ pihe) nj (_S2 n^ @@ -1028,6 +1034,12 @@ szivárvá) ny (játsz n^ haszo) n (jár n boszorká) ny (jelet n^ káno) n (jog n + legé) ny (jár n^ + szé) n (jelek n +teljesítmé) ny (j n^ + nem-lts n'Em||_!'Ellt,e:,ES //without this rule Espeak spokening the nem LTS text with one word, because general in hu_list have a $combine attribute the nem word. + + n'Em _!'Ellt,e:,ES .group o o o @@ -1172,6 +1184,8 @@ _tetszé) s S kolbászo) s S feldolgozá) s S _ki) s (szín S + kérdé) s S + végzé) s S .group ss ssz ss2 @@ -1707,6 +1721,8 @@ szállodá) ssz Ss visszaélé) ssz Ss esé) ssz (erű Ss webe) ssz Ss +beleve) ssz (en s: + .group sz sz s @@ -1915,6 +1931,7 @@ szögle) t (szob t _robo) t (szoftve t diva) t (cirk t álla) t (cirk t + szen) t (szob t .group tj C) tj c @@ -2003,6 +2020,8 @@ _tisztele) tj (el tj szen) tj (akab tj közérze) tj (aví tj ké) tj (átszm tj +szavaza) tj (og tj +szavaza) tj (eg tj .group ts ts (_S2 tS //general rule with word end of ts letters @@ -2220,6 +2239,9 @@ felira) ts (áv t|S _cha) tsz (ob t|s robo) ts (of t|S merényle) ts (or t|S +szavaza) ts (o t|S + szige) ts (ej t|S + szige) ts (o t|S .group tt @@ -2497,3 +2519,4 @@ csatlako) z (tok s ç tS ñ n^ ø Y + diff --git a/dictsource/kk_list b/dictsource/kk_list deleted file mode 100644 index 36aa86c3..00000000 --- a/dictsource/kk_list +++ /dev/null @@ -1,68 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Kazakh - -б be -в ve -г ge -ғ Ge -д de -ж Ze -з ze -й q8sqA'i -к kA -қ qA -л El -м Em -н En -ң EN -п pe -р Er -с Es -т te -ф Ef -х XA -һ hA -ц tse -ч tSe -ш Sa -щ StSa -ъ Aj8ru -ь ZINISkelIk - -//numbers -_0 n'Yl -_1 b'Ir -_2 ek'I -_3 u#S -_4 t'Yrt -_5 b'es -_6 Alt'8 -_7 Z'et'I -_8 seg'Iz -_9 toG'8z -_1X 'on -_2X Zi'8rmA -_3X 'ot8z -_4X q'8r8q -_5X 'el;u -_6X 'Alp8s -_7X Z'etpIs -_8X s'eksen -_9X t'oqsAn -_0C Z'u#z -_0M1 m'8N -_0M2 milli'on -_0M3 milli'Ard -_dpt _b,u#tIn - -// used after decimal point -_0Z1 'onnAn // tenths -_0Z2 Z'u#zden // hundredths -_0Z3 m'8NnAn -_0Z4 'on||m,8NnAn -_0Z5 Z'u#z||m,8NnAn -_0Z6 milli'onnAn -_0Z7 'on||milli,onnAn -_0Z8 Z'u#z||milli'onnAn -_0Z9 milli'ArdtAn diff --git a/dictsource/kk_rules b/dictsource/kk_rules deleted file mode 100644 index 0b8ef9b8..00000000 --- a/dictsource/kk_rules +++ /dev/null @@ -1,130 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Kazakh - -.group а - а A - а (й a - -.group ә - ә & - -.group б - б b - -.group в - в v - -.group г - г g - -.group ғ - ғ G - -.group д - д d - -.group е - е e - -.group ё - ё ;o - -.group ж - ж Z - -.group з - з z - -.group и - и i - -.group й - й j - -.group к - к k - -.group қ - қ q - -.group л - л l - -.group м - м m - -.group н - н n - -.group ң - ң N - -.group о - о o - -.group ө - ө Y - -.group п - п p - -.group р - р r - -.group с - с s - -.group т - т t - -.group у - у u - A) у w - у (A w - -.group ұ - ұ U - -.group ү - ү u# - -.group ф - ф f - -.group х - х X - -.group һ - һ h - -.group ц - ц ts - -.group ч - ч tS - -.group ш - ш S - -.group щ - щ StS - -.group ы - ы 8 // oU ?? - -.group і - і I - -.group э - э E - -.group ю - ю ;u - -.group я - я ;a - -.group - ъ - ь diff --git a/dictsource/kl_rules b/dictsource/kl_rules index 52210281..59c2a441 100644 --- a/dictsource/kl_rules +++ b/dictsource/kl_rules @@ -52,8 +52,9 @@ .group g - g j - gg j: + g Q + gg x: + gg (i C: .group h @@ -74,8 +75,8 @@ .group k - k g - kk g: + k k + kk k: .group l @@ -91,6 +92,7 @@ .group n n n na na + naa na: nn n: ng N nng N: @@ -104,8 +106,8 @@ .group p - p b - p b: + p p + pp p: .group q @@ -124,10 +126,10 @@ .group t - t d - ti ti - te te - tt d + t t + t (i ts + i) t (_ tS; + tt t: tl tl# ts ts diff --git a/dictsource/ko_rules b/dictsource/ko_rules index 6190cbe0..2ca039a5 100644 --- a/dictsource/ko_rules +++ b/dictsource/ko_rules @@ -260,7 +260,7 @@ ᇂ (A .group ᆯ // ㄹ - ᆯ rr + ᆯ L ᆯᄅ l ᆯ (A * diff --git a/dictsource/ms_list b/dictsource/ms_list new file mode 100644 index 00000000..47e49155 --- /dev/null +++ b/dictsource/ms_list @@ -0,0 +1,784 @@ +// Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com) +// This file is UTF8 encoded +// Spelling-to-phoneme words for Malay + +a e: +b bi: +c si: +d di: +e i: +f Ef +g dZi: +h etS +i aI +j dZe +k ke +l El +m Em +n En +o o: +p pi: +q kju: +r ar +s Es +t ti: +u ju: +v vi: +w d'ab@liu: +x Eks +y waI +z zEd + + +// numeric +_0 k'osoN +_1 s'atu +_2 d'u@ +_3 t'ig@ +_4 '@mpat +_5 l'im@ +_6 '@nam +_7 t'udZ%oh +_8 l'apan +_9 s@mb'ilan +_10 s@p'uluh +_11 s'@b@las +_12 d'u@b@las +_13 t'ig@b@las +_14 '@mpatb@las +_15 l'im@b@las +_16 '@namb@las +_17 t'udZ%ohb@las +_18 l'apanb@las +_19 s@mb'ilanb@las +_2X d'u@puloh +_3X t'ig@puloh +_4X 'Empatpuloh +_5X l'im@puloh +_6X 'Enampuloh +_7X t'udZ%ohpuloh +_8X l'apanpuloh +_9X s@mb'ilanpuloh +_0C R'atus_| +_1C s@*'atus_| +_0M1 R'ibu_ +_1M1 s@r'ibu_ +_0M2 dZ'ut@_ +_1M2 s@dZ'ut@_ +_0M3 b'ili@n +_1M3 s@b'ili@n +_dpt _p'@rpul'uhan_ + + +_cap b'EsaR // after the letter +_?? k,odeh'uR2uf + +// accented letters +_lig d'aIgRaf +_acu akj'ut +_ac2 dub@lakj'ut +_brv bR2'i:v +_ced s@d'ila +_cir t'opi +_dia 'umlaUt +_dot d'Ot +_grv gR2'av +_hac h'atSEk +_mcn m'akR2On +_ogo 'OgonEk +_rng R2'iNg +_stk stR'ok +_tld t'ild@ + +// punctuation +_! t,anda||s'ER2u +_" t,andak'utip +£ ponst'E*RliN +% p@*Ratus +^ t,andat'opi +& d'an +_* b'intaN +_( k,uR2uN||b'uk@ +_) k,uR2uN||t'utup +__ g,aR2is||b'awah +_- t,andah'ubuN ++ c'ampor += s,am@||d'@Nan +_{ k,uR2uN||kuR2'awal +_} k,uR2uN||kuR2,awal||t'utup +_[ k,uR2uN||s'iku +_] k,uR2uN||s,iku||t'utup +_: t,iti?||d'u@ +_; t,iti?||k'om@ +@ a||k'EOng +_' k,utip||t'uNgal +~ t'ilde +# p'agaR +_< k,uR2aN||d'aR2i +_> l,Ebih||d'aR2i +_, k'om@ +_. t'iti? +_? t,and@||t'an^@ +/ stR2'ok +_\ 'bEkslES + + + + + +// exceptions +// (use phoneme [E2] for an unstressed 'e' which does not reduce to [@] ) + +bebek bEbE2? +becek bEtSE2? +//bekas $2 +perang $2 + + +// ABBREVIATIONS +//************** +abd 'abdul $dot +agenda ag'enda +bhd b'@Rhad $dot +cimb $abbrev +cm s@ntim'et@r +com d'Ot||kOm +(co ltd) k'amp@ni||lim'it@d +dr d'okt@R $dot +drp daR2ip'ad@ +dun d'un +dymm d'uli||jang||mah'a||m'uli@ +exco 'Eksko +en 'intSek $dot +felda f'elda +hb h,arib'ulan +hj h'adZi $dot +ir $abbrev $dot +klci $abbrev +km kilom'et@r +kol kol'on@l $dot +ltd lim'it@d $dot +m'sia malaysia $text +md moh'amad $dot +mm milim'et@r +mohd moh'amad $dot +mr m'ist@r $dot +mw m'egawat +pas p'a:s +pibg $abbrev +prof prof'es@r $dot +pte p'raiv@t +rm R'iNget +sdn s@ndiR2'ian $dot +sdr saUd'aR@ $dot +umno 'amno: +upm $abbrev +utk unto? +yab jang||amat||b@rh'ormat +yb jang||b@rh'ormat +ym jang|m'uli@ +yg jang + + +// MAIN WORD DICTIONARY +//********************* + +// e(pepet)-a +banteras bant'@Ras + membanteras m@mbant'@Ras +bedah b'@dah +bekas b'@kas +belah b'@lah + perbelanjaan p@Rb,@landZ'a|an + sebelah s@b'@lah +benar b'@nar + sebenar s@b'@nar +benda b'@nd@ + kecelaruan k@tS,@laR'uan +berhad b'@Rhad +besar b'@sar + membesar m@mb'@sar + pembesar p@mb'@sar + sebesar s@b'@sar + terbesar t@Rb'@sar +cegah tS'@gah + mencegah m@ntS'@gah + pencegah p@ntS'@gah +cepat tS'@pat + dipercepat dip@RtS'@pat + secepat s@tS'@pat +dekat d'@kat + terdekat t@Rd'@kat +demam d'@mam +denda d'@nd@ + didenda did'@nd@ +dengan d'@Nan +dengar d'@Nar + didengar did'@Nar + mendengar m@nd'@Nar +depan d'@pan + berdepan b@Rd'@pan +dera d'@R@ + pendera p@nd'@R@ +deras d'@Ras +desak d'@sak + mendesak m@nd'@sak + terdesak t@Rd'@sak +empat '@mpat +engkau '@NkaU +gelar g'@lar + bergelar b@Rg'@lar +gemar g'@mar + penggemar p@Ng'@mar +gesa g'@s@ + menggesa m@Ng'@s@ + tergesa t@Rg'@s@ +hendak h'@nda? + dikehendaki dik,@h@nd'aki + kehendak k@h'@nda? +kelas k'@las + sekelas s@k'@las +kemas k'@mas +keras k'@Ras + berkeras b@Rk'@Ras +kertas k'@Rtas +kesan k'@san + dikesan dik'@san +lembah l'@mbah +letak l'@tak + diletak dil'@tak +emak '@mak +emas '@mas +enam '@nam + keenam k@'@nam +enggan '@Ngan +gerak g'@ra? + bergerak b@Rg'@ra? + penggerak p@Ng'@ra? +jebak dZ'@bak + terjebak t@RdZ'@bak +jejas dZ'@dZas + terjejas t@RdZ'@dZas +jelas dZ'@las +kejar k'@dZar + dikejar dik'@dZar +kekal k'@kal +kelam k'@lam + mengembalikan m@N,@mbal'ikan +kembang k'@mbaN + mengembang m@N'@mbaN + perkembangannya p@Rk,@mbaN'ann^@ +kelak k'@lak +kena k'@n@ +kenal k'@nal + dikenal dik'@nal + terkenal t@Rk'@nal +kerap k@Rap +kerja k'@RdZ@ + bekerja b@k'@RdZ@ + bekerjasama b@k,@RdZ@s'am@ + kerjasama k@RdZ@s'am@ + pekerja p@k'@RdZ@ + sekerja s@k'@RdZ@ +kesal k'@sal + menyesal m@n^'@sal +kesan k'@san + berkesan b@Rk'@san + keberkesanan k@b,@Rk@s'anan +kesat k'@sat + mengesat m@N'@sat +lekas l'@kas + lelakinya l@lak'in^@ +lekat l'@kat + melekat m@l'@kat +lemah l'@mah +lembaga l@mb'aga + berperlembagaan b@Rp@Rl,@mbag'a|an +lengan l'@Nan +lepas l'@pas + berlepas b@Rl'@pas + terlepas t@Rl'@pas +letak l'@ta? + peletakan p@l@t'akan + terletak t@Rl'@tak +menang m'@naN + pemenang p@m'@naN +mentah m'@ntah +mesra m'@sR@ +pecah p'@tSah + berpecah b@Rp'@tSah +peka p'@k@ +pegang p'@gaN + dipegang dip'@gaN + memegang m@m'@gaN +pentas p'@ntas +pernah p'@rnah +pesat p'@sat +petang p'@taN +rendah R'@ndah + terendah t@R'@ndah +rentak R'@ntak + berentak b@R'@ntak +retak r'@tak + keretakan k@R@t'akan +rentak r'@ntak + serentak s@r'@ntak +sebak s'@ba? + kesebakan k@s@b'akan +sebentar s@b'@ntar +sedang s'@daN +sedar s'@dar + tersedar t@Rs'@dar +segera s@g'@R@ + disegerakan dis@g@R'@kan + menyegerakan m@n^,@g@R'@kan +sejahtera s@dZaht'@R@ + kesejahteraan k@s@dZ,aht@R'@an +sejak s'@dZak +sekat s'@kat + menyekat m@n^'@kat +selam s'@lam + penyelam p@n^'@lam + keselamatan k@s,@lam'atan +selaras s@l'aRas + keselarasan k@s@laR'asan +selepas s@l'@pas + kesesuaian k@s@su'aIan +sembah s'@mbah + persembahannya p@Rs,@mbah'ann^@ +sempat s'@mpat + berkesempatan b@Rk,@s@mp'atan +sempena s@mp'@n@ + beserta b@s'@Rt@ + peserta p@s'@Rt@ + sertai s@Rt'a|i +serang s'@RaN + diserang dis'@RaN + menyerang m@n^'@raN + penyerang p@n^'@raN +serba s'@Rb@ +tegang t'@gaN + bertegang b'@Rt@gaN +tegas t'@gas +tekak t'@kak + menekak m@n'@kak +tekan t'@kan + menekan m@n'@kan +telah t'@lah +teman t'@man +tempa t'@mp@ + ditempa dit'@mp@ + menempa m@n'@mp@ +tempah t'@mpah + menempah m@n'@mpah +tempat t'@mpat + bertempat b@rt'@mpat +tenang t'@naN + bertenang b@Rt'@naN +tengah t'@Nah + menengah m@n'@Nah + sesetengah s@s@t'@Nah +tengkar t'@Nkar + bertengkar b@Rt'@Nkar +tentang t'@ntaN + ditentang dit'@ntaN + menentang m@n'@ntaN + penentang p@n'@ntaN +tepat t'@pat + juruterbang dZuRut'@RbaN +teram t'@Ram + ketenteraman k@t@nt@R'aman +terkam t'@Rkam + diterkam dit'@Rkam + menerkam m@n'@Rkam +tetap t'@tap + bertetap b@Rt'@tap + menetap m@n'@tap + + +// exceptions +kehebatan k@heb'atan +dibelenggu dib@l'@Ngu +perbendaharaan p@Rb@nd,@haR'a|an +kejayaan k,@dZaj'a|an +galakan gal'akan +setong s@t'oN +aneh 'anE2h +menyelamatkan m@n^,@lam'atkan +//berbaur b@Rb'aUr +gementar g@m'@ntar +hebatnya hEb'atn^@ +diedarkan diEd'aRkan +//berkeliaran b@Rk@li'aRan +//bersebelahan b@Rs@b@l'ahan +//sebaik s@b'aIk +cedera tS@d'@R@ + kecederaan k@tS,@d@r'a|an + tercedera t@RtS@d'@R@ +//ekoran Ek'oRan +kekecewaan k@k,@tSew'a|an +//bermain b@Rm'aIn +//kedai k'@daI + //pekedai p@k'@daI +disertai dis@Rt'ai +persediaan p@Rs,@di'a|an +//bergaul b@Rg'aul +elakkan El'akkan +kebanyakan k@ban^'akan +anda 'anda +//berkepentingan b@Rk,@p@nt'iNan +//berleluasa b@Rl@lu'as@ +iaitu ja|'itu +masalah mas'alah +masakan mas'akan +mengelakkan m@NE2l'akkan +menyelesaikan m@n^,@l@s'aIkan +pergolakan p@Rgol'akan +perempuan p@R@mp'uan + perempuannya p@R,@mpu'ann^@ +pesta p'esta + berpesta b@Rp'esta + menyalah m@n^'alah +setengah s@t'@Nah +berpengalaman b@Rp@Nal'aman +kesemuanya k@s,@mu'@nn^@ +selesema s@l@s'@m@ +tindakan tind'akan +pesalah p@s'alah +wanita wan'ita +bersalah b@Rs'alah +//persetujuan p@Rs,@tudZ'uan +//persetujuannya p@Rs@tudZu'ann^@ +//keseluruhan k@s,@luR'ohan +memberitahu m@mb,@Rit'ahu +//persekutuan p@Rs,@kut'uan +tema t'Ema +kepercayaan k@p,@RtSaj'a|an +dendangan dEnd'aNan +peperiksaan p@p,@Reks'a|an +kebebasan k@bEb'asan +//cerai tS'@RaI +//berbaik b@Rb'aIk +menyembunyikan m@n^,@mbun^'ikan +bermesyuarat b@Rm,@Su'aRat +//pengetahuan p@N,@tah'uan +mengenai m@N@n'ai +penyelesaian p@n^,@l@s'aIan +diselesaikan dis,@l@s'aIkan +ditanya dit'an^@ +prestasi pREst'asi +pembelajaran p@mb,@ladZ'aRan +kepong k'@poN +demikian d@mik'ian +piket p'ikEt +kempennya kEmp'enn^@ +jentera dZ@nt'@R@ +perlembagaan p@Rl,@mbag'a|an +bersesuaian b@Rs,@su'aIan +bumiputera bumip'ut?Ra +kecemerlangan k@tS,@Rm@l'aNan +merdeka m@Rd'eka + kemerdekaan k@m,@Rdek'a|an +kelewatan k@lew'atan +menyelesaikannya m@n^@l@saIk'ann^@ + + +// english derived words +akta 'akta +album 'Elb@m +aspek 'aspE2k +balada bal'ada +digit di'dZit +digital didZ'it@l +doktor d'okt@r +dolar d'Ol@r +domestik dOm'Estik +entiti Ent'iti +flora fl'ora +frekuensi fRiku'@nsi +imej 'imedZ +indeks 'indEks +insentif ins'E2ntif +jean dZ'in +jeneral dZEn'@R@l +kabinet kEb'in@t +kamera kEm'@R@ +kes k'es +komponen komp'on@n +komprehensif kompRih'ensif +koroner koR'on@r +laser l'es@r +majoriti mEdZor'iti +meter m'it@r +muzik m'iuzek +muzium m'iuzi@m +nasional nESh'@n@l +negatif nEg'@tif +nostalgia nost'aldZja +november nov'Emb@r +oktober okt'ob@r +polis p'olis +personaliti p@Rs,@nal'iti +presiden pRE2s'id@n +profesor pRof'E2s@r +produk pR'odak +prospek pR'ospE2k +republik Rip'abli? +saintis s'aIntis +sesi s'esi +subjek s'abdZE2k +surcaj s'@RtSadZ +radio R'edio +realiti Rial'iti +sentimen sEnt'im@n +september sEpt'@mb@r +teater ti'et@r +teknik t'Eknik +teknikal tEkn'ikal +telefon tel'ifon +tenis t'Enis +tiara ti'aRa +unit j'unit +universiti jun,iv@Rs'iti +virus v'aIR@s +zoo zu: + +// place names +Australia _^_EN +Arsenal _^_EN +Asia as'ia +Barcelona b'aRs@l'ona +Borneo _^_EN +Britain _^_EN +Brunei b'R2unaI +Cheras tS'@ras +Coast _^_EN +Commonwealth _^_EN +Denmark _^_EN +England _^_EN +Eropah Er'opah +France _^_EN +George _^_EN +Georgetown _^_EN +Indonesia indon'eIsi@ +Ireland _^_EN +Jamaica _^_EN +Kingdom _^_EN +Korea _^_EN +Liverpool _^_EN +London _^_EN +New _^_EN +Nigeria _^_EN +Macau _^_EN +Malaysia m@l'esi@ +Melbourne _^_EN +Guinea _^_EN +Penang pin'EN +Perak p'erak +Phuket ph'ukEt +Putrajaya putR2@dZ'aj@ +Republic _^_EN +Scotland _^_EN +Seputeh s@p'uteh +Seremban s@R'@mban +Setar s?tar +Sydney _^_EN +Temerloh t@m'@Rloh +Tonga t'onga +Town _^_EN +United _^_EN +Valencia vel'@nsia +Zambia z'ambia +Zealand _^_EN + +// person names +Azura az'uR2a +Barack _^_EN +David _^_EN +Davidson _^_EN +Douglas _^_EN +Edward _^_EN +Karen _^_EN +Jason _^_EN +Lee _^_EN +Leela l'ila +Linda l'inda +Mahathir mah'ater +Michael _^_EN +Merican m'erikan +Ng '@N +Nora n'oRa +Nurhaliza n,uRhal'iza +Obama ob'ama +Ong ON +Ramlee R'amli +Saleh s'aleh +Seha s'eha +Shafie Saf'i?i +Sidek s'idek +Syed s'aId +Teresa t@R2'isa +Tony _^_EN +Yaacob j'a?kob +Yew jiu +Zakaria zak'aRja +Zaleha zal'eha + + +// English words +(& co) En||k'amp@ni +american _^_EN +bank b'Enk +banking b'EnkiN +commerce _^_EN +corp _^_EN $dot +city _^_EN +company _^_EN +consortium _^_EN +daily _^_EN +distribution _^_EN +east _^_EN +education _^_EN +engineering _^_EN +euro _^_EN +girl _^_EN +grand gR2End +genre _^_EN +government _^_EN +group _^_EN +hero h'iR2o +idea 'aIdi@ +island _^_EN +jazz dZ'E:s +international _^_EN +internet _^_EN +left _^_EN +land lEnd +malayan _^_EN +malaysian m@l'esi@n +media _^_EN +methodist _^_EN +multi _^_EN +north _^_EN +pound _^_EN +right _^_EN +school _^_EN +speaker _^_EN +south _^_EN +the _^_EN +enterprise _^_EN +omnibus 'omnibas +online _^_EN +power _^_EN +punk _^_EN +serius _^_EN +service _^_EN +street _^_EN +technologies _^_EN +tender _^_EN +trading _^_EN +trend _^_EN +unity _^_EN +union _^_EN +wall _^_EN +west _^_EN + + +// brands +afp $abbrev +(air asia) 'E:_'e:si@_ +(air france) _^_EN +airbus _^_EN +boeing _^_EN +eon 'ion +firefly _^_EN +iphone aI||fon +ipod aI||pod +malaysiakini m@l'esi@||k'ini +maybank m'eib'Enk +reuters _^_EN +(sime darby) _^_EN +toyota toj'ota +wikipedia wik,ip'idja + + + +// unstressed words +//suatu $u +dari $u +pada $u +daripada $u +ke k@ $u +di $u +si $u +sang $u +hang $u +yang $u +//dan $u +//atau $u +//untuk $u +ialah $u +adalah $u +sebagai $u +bahwa $u +per p@r $u + + +// conjunctions +agar $pause +apabila ap@bil@ $pause +apatah ap@t'ah $pause +atau $pause +ataupun $pause +bagi $pause +bahkan $pause +(bukan sahaja) $pause +dan $pause $u +(di mana) $pause +hanya $pause +jika $pause +kalau $pause +kerana $pause +ketika $pause +mahupun $pause +maka $pause +malah $pause +malahan $pause +manakala $pause +meskipun $pause +misalnya $pause +namun $pause +(sama ada) $pause +sambil $pause +sebab s'@bab $pause +sedangkan $pause +sehingga $pause +selain s@l'ain $pause +semasa $pause +serta s'@rt@ $pause +setelah s@t'@lah $pause +seperti $pause +sepertimana s@p,@Rtim'an@ $pause +supaya $pause +tapi $pause +tetapi $pause +walau $pause +walaupun $pause +untuk $pause +//yang $pause $u +(yang mana) $pause + + +// nuances +anugerah an'ug*Rah +dilaksanakan dil,aksan'@kan +kementerian k@m,@ntR2'ian +sebahagian s@b'ah?gian +mewarnai m@warn'a|i +mulai mul'a|i +meraikan m@Ra|'ikan +sibuk s'ebok +terengganu tR2@Ng'anu +dirasai diRas'a|i +direka diR'ek@ +negeri n'@gR2i diff --git a/dictsource/ms_rules b/dictsource/ms_rules new file mode 100644 index 00000000..a512f336 --- /dev/null +++ b/dictsource/ms_rules @@ -0,0 +1,233 @@ +// Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com) +// This file is UTF8 encoded +// Spelling-to-phoneme rules for Malay + +.group a + a a + a) a _|a + A_) a _|a + au) a _|a + ai aI + au aU + + + _) au o // (automatik) + + @) a (_ @ // (pula) + @) a (kah_ '@ // (apakah) + @) a (kan_ '@ // (bukakan) + @) a (lah_ '@ // (mintalah) + @) a (nya_ '@ // (puncanya) + @) a (pun_ '@ // (bagaimanapun) + + +.group b + b b + + _) be (@@ b@ + + _) ber (@@ b@R // (berdasarkan) + _) ber (CaiX b@R // (bermain) + _) ber (CauX b@R // (bergaul, berbaur) + _) berke (@@ b@Rk@ // (berkeliaran, berkesempatan) + _) berle (@@ b@Rl@ // (berleluasa) + _) berper (@@ b@Rp@R // + _) berse (@@ b@Rs@ // (bersebelahan) + _) bh b // added (kota bharu) + +.group c + c tS + + //************* + + ch tS // (kuching) + //************** + +.group d + d d + dj dZ // Dutch + +.group e + e E //jason: E changed to E2 + e) e _|E + A_) e _|E // *** to check on this *** + e (_ e + + +// ********************* + _) e (Co@ E2 // e-o (ekoran) + + e (CaiX '@ // e-ai (kedai, petai, belai, cerai) + + e (CiX '@ // e-i (betik, ketil, lebih, kerisik, kesedihan, sering, seri, segi, seni) + e (CCiX '@ // e-i (penting, jentik) + e (CCuX '@ // e-u (dibendung, bentuk) + e (CuX '@ // e-u (belut, telur, perut, ketulan, bertemu) + e (CCuX '@ // e-u (perlu, merdu) + e (CCCuX '@ // e-u (tengku, tengkuk) + + e (nyuX '@ // e-u (senyum) + eCC) e (X e // e-e (pendek, benteng) + eC) e (X e // e-e (belek, gelek, leceh, geleng) + e (Ce e // e-e (kelecehan) + oC) e (X e // o-e (oleh, boleh, celoteh, topeng) + oCC) e (X e // o-e (ponteng) + + C) e (CCCoCkan_ e // (bengkokkan) + m) e (_ @ // (autisme) + + + +// ****************** + + +.group f + f f + ff f + +.group g + g g + +.group h + h h + +.group i + i i + i) i _|i + A_) i _|i + + + @) i (CX e // (tekik, masing, masin) + @) i (Cnya_ 'e // (masinnya) + @) i (CCaan_ e // (pemeriksaan) + +.group j + j dZ + +.group k + k k + k (_ ? + kh x + + _) ke (@@ k@ + @@) k (annya_ k' + + _) kese (@@ k@s@ // keseluruhannya + + + +.group l + l l + ll l + +.group m + m m + + _) me (@@ m@ + _) mempe (@ m@mp@ + + //***************** + _) mem (@@ m@m + _) mene (@@ m@n@ // (menerajui) + _) menge (@@ m@N@ // (mengenepikan) + _) mempenge (@@ m@mp@N@ // (mempengerusikan) + //**************** + +.group n + n n + ng N + ny n^ +// nj n^ + +.group o + o o + o) o _|o + A_) o _|o + o (r O + oe u // Dutch spelling + +.group p + p p + pp p + + _) pe (@@ p@ + + + _) pe (CaiX p@ // (pemain, pesaing) + _) peme (@@ p@m@ // (pemeriksaan) + _) pene (@@ p@n@ // (penerokaan) + _) penge (@@ p@N@ // (pengetahuan) + _) penje (@@ p@ndZ@ // (penjenamaan) + _) perse (@@ p@Rs@ // (persetujuan) + + +.group q + q k + qu kw + +.group r + r R //(jason change: R2 to r) + r (K r //(jason change: R to r) + e) r (K *r //(jason change: *R to r) + + r (_ r // jason: added (silent r at the end) + +.group s + s s + ss s + sy S // perhaps [S;] ?? + sj S + + _) se (@@ s@ + + //************* + _) se (CaiX s@ // (sebaik) + sh S + //*************** + + +.group t + t t + tj tS // Dutch + + _) ter (@@ t@*R + + //*************** + _) ter (@ t'@*R // ter- (terbaik, teruk) + //****************** + +.group u + u u + u) u _|u + A_) u _|u + + @) u (CX o // (puluh, tudung) + @) u (Cnya_ 'o // (bentuknya) + @) u (CCnya_ 'o // (tudungnya) + +.group v + v v + +.group w + w w + +.group x + x ks + _) x z + +.group y + y j + +.group z + z z + +.group + $ dOl@R + + + __) - (_D n'eg@tif + + * b'intaN + *) * (* + ** + **) * (_ _:: diff --git a/dictsource/mt_list b/dictsource/mt_list deleted file mode 100644 index 48630e0a..00000000 --- a/dictsource/mt_list +++ /dev/null @@ -1,319 +0,0 @@ - -// This file in UTF8 encoded - -// Letters maltese - - - -a a -b b@ -c ka -ċ tS@e -d dee -e e -f effe -g gie -ġ dZe -h akka -ħ h'@ -i i -j ie -k k'@ -l elle -m emme -n enne -o o -p pe -q '@ -r erre -s esse -t te -u u -v ve -w u'@ -x eSSe -y y -z tsee -ż z'@ - - - - - - -_. punt -_, koma -_! punt ta’ esklamazzjoni -_? mistoqsija -_" kwoUts -_# hash -_$ dollaru: -_% procentuali: -_& u -_' accent -_: koUl@n -_; semIk'oUl@n -€ ewro -_( parentezi tondi -_) parentezi tondi -_[ parentezi kwadri -_] parentezi kwadri -_{ alkua:lto -_} lop:ua:lto -_< iz'@ minn -_> akbar minn -_- haIf@n -__ alavi:va -+ plus $max3 -* stil:a $max3 -= i:kw@lz $max3 -/ kaut:a -\ keno -£ sterlina -@ _at -~ tilde - - - -// numbers maltese - - - -_0 z'e*o -_1 ui:h'@d -_2 nei:n -_3 tli:eta -_4 erba -_5 h'@amsa -_6 si:t:a -_7 seba: -_8 tmi:ni:a -_9 dydin'asa -_10 a'@ra -_11 h'@daSe -_12 tnaSe -_13 tletaSe -_14 erbataSe -_15 h'@mistaSe -_16 sitaSe -_17 sbataSe -_18 tmintaSe -_19 tsetaSe -_2X oSerin -_3X tl'@ti:n -_4X erbai:n -_5X h'@amsi:n -_6X sit:i:n -_7X s'@bei:n -_8X tmeni:n -_9X d,ydin'isei:n -_0C mi:a -_1C mi:au -_0M1 elf -_1M1 -_2M1 elfeiun -3000 tlet: elef -4000 erbatelef -_0M2 m'iliun -2000000 z'@euge m'iliuni -_0M3 bi'li'un -_2M3 z'@euge bi'li'uni -_3M3 tlet: bi'li'uni -_4M3 erba bi'li'uni -_5M3 h'@ames bi'li'uni - - - - -// articles - - -// pronouns maltese -jiena iuena $u -inti inti: $u -huwa ua $u -hija i:a $u -aħna ah'@na $u -intom i:ntom $u -huma u:ma $u - - - - - - -// possessives maltese - - -tiegħi ti:ai: $u -tiegħek ti:ake $u -tiegħu ti:u: $u -tagħha tah'@a $u -tagħna tana: $u -tagħkom takom $u -tagħhom tahom $u - - -// prepositions -ta ta: -għal al: -lil li:l: -ġo dZeo -mal mal: -mingħajr mi:nai:r -madwar madua:r -il-quddiem il-di:m:'@ -qabel a:bel -wara uara -minbarra minba:ra: -bejn bei:n -flimkien flimkin: -viċin vi:S@i:n -minn mi:n -minn fejn mi:n fei:n -isfel isfel -fil-mija fi:l-mi:a -permezz permets -lejn lein: -fuq fu'@ -taħt taht -fi fi: -mingħajr mi:nair -madwar madu:ar -kontra contra -quddiem '@udi:m -fost fost -qabel abel -wara uara -taħt taht -lil hinn lil:in: -ħdejn h'@dein -bejn bei:n -flimkien flinki:m -qrib ri:p -minn hemm min:em: - - - - - - - -// conjunctions - - -minkejja minCeia -u u -kif Ci:f -għax aS -darba dar:ba -jew ieu: -iżda i:z'@da -jekk ietSe -minkejja mintSei:a -minflok minflotSe -irrespettivament ir:espetivament -mindu mindu: -b’hekk betSe -għalkemm altSem: -kull darba kul: darba -kull min kul: mi:n -tkun xi tkun tkun Si tkun -waqt ua:t - - - - - - -// negative maltese - -ma $u - - - - - -// auxillary verbs - - -ikun icu:n: -kien Ci:n -qiegħed ied -huwa u:a -huma uma -ma kienx ma CieS -kienu Cienu -mhux muS -mhumiex umumiS -ma kienux ma CienuS -għamel amel -għandhom andom -ghandu jkollhom andu kolum -ma jridux ikunu mrdS kunu -għandu andu -m'għandux m'anduS -jista ista -ma jistax ma istaS -għandi andi -għandha an:a -kienet ki:net -ikseb i:kseb -mur mu:r -tmur tmur -sejjer sei:er -mort mort -agħmel a:mel -tagħmilx ta:milS -jagħmel ia:mel -għamel a:mel -għamilt amilt -tpoġġi tpodZi: -poġġi odZi: -issir is:ir -saret sa:ret -għamel a:mel - - - - - - -// adverbs - -biss bis: -qatt at: -issa is:a -dalwaqt daluat -xorta Sorta -diġa didZa -mhux mu:S -kull cul: -bosta bosta -xi Si: -dan dan -dak dak -dawn dau:n -dawk dau:k -hemm em: -minn min: - - - - - - - -// Abbreviations maltese - -$textmode -eċċ etSetra -mm milim'etri -cm tSentim'etri -km kilom'etri -ml milil'itri -mg miligr'am:i -kg kilogr'am:i - - - diff --git a/dictsource/mt_rules b/dictsource/mt_rules deleted file mode 100644 index 7aea2957..00000000 --- a/dictsource/mt_rules +++ /dev/null @@ -1,205 +0,0 @@ -// Maltese translation rules -// This file is UTF-8 encoded - - -.group a - a a - aa a: - au au - ax aS - - - -.group b - b b - bb b: - be b'@ - br br'@ - bi bi: - bie bi'@ - -.group c - - c c - - -.group ċ - ċ tS@ - ċa tS@a - ċe tS@e - ċi tS@i - ċw tS@u'@ - -.group d - d de - dd d: - - - -.group e - e e - eu eu: - ew eu - - -.group f - f f - ff f: - fo fo - -.group g - g g - gg g: - ge gie - gi gi: - għ : - -.group ġ - ġ dZ - ġo dZo - -.group h - - h : - - -.group ħ - - ħ h - ħu h:u: - ħt ht -.group i - i I - iu Iu - ie i: - - - -.group j - j iu - jj i: - jo io - je ie - ja ia - - -.group k - k ke - ka ka - ke ke - ki ki: - kie ki:e - ku ku: - ko co - -.group l - l l - - -.group m - m m - m (n im - m (p im - m (r im - -.group n - n n - nu nu: - - - -.group o - o o - - -.group p - p p - pp p: - - _ole) p (a p: - _ota) p (a p: - - kam) p (anj p: - - sam) p (oo p: - sham) p (o p: - - -.group q - q '@ - qa a - qe e - qo o - qu - - -.group r - r r - rie ri:e - ro ro: - ra ra: - - -.group s - s s - sie si:e - saqq sa - saq sa - - -.group t - t t - tt t: - - - - -.group u - u u - ux uS - - -.group v - v v - - -.group w - w u - - -.group x - x Se - xie Sei: - - - -.group y - y y - yy y: - yi yi - yö yY - - -.group z - z tse - K) zh Z - - - - -.group ż - ż z'@ - ża za - że ze - żie zi:e - żgħ za - -// default group for "non of the above" - -.group - ż z'@ - ċ tS@ -// non-ascii characters with specified pronunciations - - - diff --git a/dictsource/nl_list b/dictsource/nl_list index 26c5dfa1..9c2428dd 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -1544,6 +1544,10 @@ spektakel $2 tegennatuur $4 travestie $3 verderop $3 +verre vEr@ +verrekijker vEr@kEIk@r +verste vErst@ +verte vErt@ volledig $2 vrouwengek $alt3 waarschijnlijk $2 diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 288abacc..917b7373 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -254,6 +254,11 @@ @) es (_S2qd 'Es // double the previous vowel @) es (_$w_alt2S1 s // just remove 's' KAC) es (_S2e @s + mb) es (_S1 s + nd) es (_S1 s + rd) es (_S1 s + gt) es (_S1 s + wt) es (_S1 s es (ie_ e:z @) essen (_S5qd 'Es@n @) eres (_S4qd @r'Es @@ -734,8 +739,8 @@ _) inn (@P2 'I // ?? inneren u (x 8 uu y ui Wy - uw yU - uw (_ yU + uw (A yw + uw (K yU _) uit (@P3 'Wyt uul (_ 'yl // from -ule @@ -755,6 +760,7 @@ _) inn (@P2 'I // ?? inneren _) ver (@P3 v@r _) ver (sie_ vEr _) verder vErd@r + _) verge (@P5 vErg@ _) verge (le v@rQ'e: _) voort (@P5 v'O:rt diff --git a/dictsource/nso_list b/dictsource/nso_list deleted file mode 100644 index e3d28f79..00000000 --- a/dictsource/nso_list +++ /dev/null @@ -1,206 +0,0 @@ -// Northern Sotho translation list -// This file is UTF-8 encoded. - -// letters (just guesses) -a a -b bi:i: -c si:i: -d di:i: -e i:i: -f e:fu -g x2@ -h eitSi -j dZ'ei -k kei -l e:li -m 'emu -n 'eni -o o:o: -p p'i:i: -q kju -r aR3e -s 'e:si -t t'i:i: -u u:u: - -v v'i:i: -w dabalju -x ek'ese -y w'ai -z z'e:ti - - - - -// numbers -_0 lef'e:la -_1 tee -_2 p'edi -_3 t'a:R3o -_4 'n-ne -_5 l#'a:no -_6 ts'e:la -_7 S'u:pa -_8 sisw'a:i -_9 sen^'ane -_1X les'o:me -_2X mas'o:mepedi -_3X mas'o:met'a:R3o -_4X mas'o:me'n-ne -_5X mas'o:mel#'a:no -_6X mas'o:mets'e:la -_7X mas'o:meS'u:pa -_8X mas'o:mesisw'a:i -_9X mas'o:mesen^'ane -_0C lekX'olo -//_1C m,iam'oJa -_2C _|makX'olopedi -_3C _|makX'olot'a:R3o -_4C _|makX'olo'n-ne -_5C _|makX'olol#'a:no -_6C _|makX'olots'e:la -_7C makX'oloS'u:pa -_8C makX'olosisw'a:i -_9C makX'olosen^'ane -_0M1 's-'ikete -_1M1 _|'s-'ikete -_2M1 dik'etep'edi -_3M1 dik'etet'a:R3o -_4M1 dik'eten-ne -_5M1 dik'etel#'a:no -_6M1 dik'etets'e:la -_7M1 dik'eteSu:pa -_8M1 dik'etesisw'a:i -_9M1 dik'etesen^'ane -_1M2 dik'etetSelekX'o:lo -_2M2 dik'etetSemakX'o:lop'edi -_3M2 dik'etetSemakX'o:lot'a:R3o -_4M2 dik'etetSemakX'o:lon-ne -_5M2 dik'etetSemakX'o:lol#'ano -_6M2 dik'etetSemakX'o:lots'e:la -_7M2 dik'etetSemakX'o:loSu:pa -_8M2 dik'etetSemakX'o:losisw'a:i -_9M2 dik'etetSemakX'o:losen^'ane -_0M3 _|mili'oni // 1,000,000 -_0M4 _|bili'oni -_dpt fe:Xelu'a:na - - -bona $u // they,them -yona $u+ // it -wena $u+ //you - -nna $u+ // i -yena $u+ // him, her, it - -lena $u+ //ploral to wena -rena $u+ // we,us - - -//accents -_cir k'efa - -// pronouns -mimi $u+ -sisi $u+ -wewe $u+ -nyinyi $u+ -yeye $u+ -wao $u+ - -hii $u // this, these -hilo $u+ // this,that (previously menioned) - -wake $u+ // his,her,its -yake $u+ -zake $u+ - - -// prepositions -wa $u $brk // of -ya $u $brk // of,by they,them -la $u $brk // of -cha $u $brk // of -vya $u $brk // of -za $u $brk // of -pa $u $brk // of -kwa $u $brk // of -mwa $u $brk // of - -bi $u $brk // in -fi $u $brk // in,on -pa $u $brk // at - -min $u $brk // from -toka $u $brk // from -katika $u $brk // from, out of -kuanzia $brk // from,since -tangu Su $brk // from,between -hata $u $pause // until -baada $u $brk // after -bila $u $pause // without -hadi $u $pause // up to -huko $u $brk // there, as when - -kwacho $pause // by means of which -kwalo $pause // by means of which -kwao $pause // by means of which -kwavyo $pause // by means of which -kwaye $pause // by means of which - -kwa $u $brk // with -mwenye $u $brk // with -wenye $u $brk // with -yenye $u $brk // with -1enye $u $brk // with -chenye $u $brk // with -vyenye $u $brk // with -zenye $u $brk // with - - -// conjunctions -na $u $pause // and -ama $u $pause // or -ao $u $pause // or -au $u $pause // or -aidha $pause // and -bali $u $pause // but -ila $pause // but,except -angao $pause // although -badalaya $pause // instead -basi $u+ $pause // so,then -ili $u+ $pause // so that -ilikwamba $pause // so that -ijapo $pause // although, even if -ijapokuwa $pause // although -ingawa $pause // although -iwapo $pause // when -japo $pause -(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 -kwamba $u $pause // that -lakini $pause // however -walakini $pause // however -pamoja $pause // together with -panapo $pause // when it is -pindi $u+ $pause // if,when -taraa $u+ $pause // if -wala $pause // either,neither -yaani $pause // i.e. -//Northern Sotho words -bja vvJ'a - -raloka R3%al'U:ka -sekolo sek'U:lU -taba t_'a:ba -thaba t'a:ba - - - - - - diff --git a/dictsource/nso_rules b/dictsource/nso_rules deleted file mode 100644 index 52c9a44a..00000000 --- a/dictsource/nso_rules +++ /dev/null @@ -1,150 +0,0 @@ - -// Northern Sotho translation rules -// This file is UTF-8 encoded - - -.group a - a a - _C) a a - _) a (C a - a (_ a - a (s a: - -.group b - b B - - -.group c - c k - ch tS - -.group d - d d - dh D - -.group e - e e - ee i;e: - s) e i - - -.group f - f f - -.group g - g X - _k) g x2 - - gh Q - - -.group h - h h - hl l# - - -.group i - i i - ii i: - -.group j - j J - -.group k - k k - kh x - -.group l - l l - -.group m - m m - _) m m- - m (A m - K) m (@@ _|m - K) m (C m- - K) m (b@@ _|m - K) m (v@@ _|m - K) m (w@@ _|m - -.group n - n n - _) n n- - n (A n - n (@@ n - ny n^ - n (ch n^ - n (j n^ - ng' N - n (k N - _) n (k N- - _) n (k@@ N- - n (g N - _) n (g N- - _) n (g@@ N- - ng N - -.group o - o U - oo o: - -.group p - p p - -.group q - q k - -.group r - r R3 - -.group s - s s - s (e s- - _t) se si: -// sh S - -.group t - t t - th th - tsen ts'e:n - tlh K - tl l# - - -.group u - u u - uu u: - _d) u u: - -.group v - v v - -.group w - w w - -.group x - x ks - -.group y - y j - -.group z - z z - - -.group - $ dola - % asilimia - - * n^ota - *) * (* - ** - **) * (_ _:: - - š S - -_t) š tS - _p) š (h S - - ê E - ô o diff --git a/dictsource/pa_list b/dictsource/pa_list index 4c5e41f6..538d31b4 100644 --- a/dictsource/pa_list +++ b/dictsource/pa_list @@ -110,7 +110,7 @@ _0M3 k'VRoR // 10,000,000 _0M4 'VR@b // 1,000,000,000 _0M5 k#'VR@b // 100,000,000,000 -_dpt _dOt# // ?? +_dpt _d@s@ml'o: // character names @@ -144,9 +144,14 @@ _ਔ 'ERV||kVnOR'a ੌ kVn'ORa - // Punctuation +_?? 'Vk#:@R । d.'Vnd.i ++ J'Vuma += b@R'ab@R +% pR'VtIS@t +* t'aRa + // Pronouns // ਪੁਰਖਵਾਚੀ ਪੜਨਾਂਵ diff --git a/dictsource/pa_rules b/dictsource/pa_rules index 04b7cc58..5a160b57 100644 --- a/dictsource/pa_rules +++ b/dictsource/pa_rules @@ -436,9 +436,9 @@ @) ਜ਼ (_ z .group ੜ - ੜ R2V - ੜ (B R2 - @) ੜ (_ R2 + ੜ r.V + ੜ (B r. + @) ੜ (_ r. .group ਫ਼ ਫ਼ fV diff --git a/dictsource/prs_list b/dictsource/prs_list deleted file mode 100644 index 37b1fefa..00000000 --- a/dictsource/prs_list +++ /dev/null @@ -1,69 +0,0 @@ - -// This file in UTF8 encoded -// For persian (Dari) language - - -//numeric -_0 sE'fEr -_1 j'Ak -_2 d'u: -_3 s'E:h -_4 tS'Ahr -_5 pA'ndZ -_6 SE'S -_7 h'Aft -_8 h'ASt -_9 n'o -// _۱۱ j'AzdAh // what's this ? - -_1X d'Ah -_2X b'ist -_3X s'i -_4X tS'Ehl -_5X p'indZAh -_6X S'Ast -_7X h'AftAd -_8X h'AStAd -_9X nAv'Ad - - -_0C s'Ad - -_0and o - -//alphabets -ا Al'Ef -ب b'E: -پ p'E: -ت t'E: -ث s'E: -ج dZ'im -چ tS'E: -ح h'E: -خ X'E: -د d'Al -ذ z'Al -ر r'E: -ز z'E: -س s'in -ش S'in -ص s'Ad -ض z'Ad -ط t'A: -ظ z'A: -ع 'eIn -غ R'eIn -ف f'E: -ق R'Af -ک k'Af -گ g'Af -ل l'Am -م m'im -ن n'un -و w'o:w -ه h'E:dotSASm -ء hAmz'E: -ی j'A: - - - diff --git a/dictsource/prs_rules b/dictsource/prs_rules deleted file mode 100644 index e267a17b..00000000 --- a/dictsource/prs_rules +++ /dev/null @@ -1,235 +0,0 @@ -// This file is UTF-8 encoded -// Text to phoneme rules for Dari - -// replace Arabic character numbers with Latin character numbers -.replace -٠ 0 -١ 1 -٢ 2 -٣ 3 -٤ 4 -٥ 5 -٦ 6 -٧ 7 -٨ 8 -٩ 9 - - -//all vowels -.L01 َ ِ ُ ً ٍ و ا ه ی ة ي - -//commonly unwritten vowels -.L02 َ ِ ُ - -//list of consonants -.L03 ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی - -.group ا - _) ا (L01 - ا A - ا (_ A - اً An - اٍ En - -.group ب - ب (L01 b - ب bA - ب (_ b - L03) ب (L03 b - -.group پ - پ (L01 p - پ pA - پ (_ p - L03) پ (L03 p - -.group ة - ة (L01 h - ة hA - ة (_ @ - -.group ت - ت (L01 t - ت tA - ت (_ t - -.group ث - ث (L01 s - ث sA - ث (_ s - -.group ج - ج (L01 dZ - ج dZA - ج (_ dZ - - -.group چ - چ (L01 tS - چ tSA - چ (_ tS - -.group ح - ح (L01 h - ح hA - ح (_ h - -.group خ - خ (L01 X - خ XA - خ (_ X - -.group د - د (L01 d - د dA - د (_ d - -.group ذ - ذ (L01 z - ذ zA - ذ (_ z - -.group ر - ر (L01 R - ر RA - ر (_ R - -.group ز - ز (L01 z - ز zA - ز (_ z - -.group ژ - ژ (L01 Z - ژ ZA - ژ (_ Z - -.group س - س (L01 s - س sA - س (_ s - L03) س (L03 s - L02) س (L03 s - -.group ش - ش (L01 S - ش SA - ش (_ S - -.group ص - ص (L01 s - ص sA - ص (_ s - -.group ض - ض (L01 z - ض zA - ض (_ z - -.group ط - ط (L01 t - ط tA - ط (_ t - -.group ظ - ظ (L01 z - ظ zA - ظ (_ z - -.group ع - ع (L01 - ع A - ع (_ @_: - -.group غ - غ (L01 R - غ RA - غ (_ R - -.group ـ - ـ - -.group ف - ف (L01 f - ف fA - ف (_ f - -.group ق - ق (L01 R - ق RA - ق (_ R - -.group ک - ک (L01 k - ک kA - L02) ک (L03 k - L03) ک (L03 k - ک (_ k - -.group گ - گ (L01 g - گ gA - گ (_ g - -.group ل - ل (L01 l - ل lA - ل (_ l - -.group م - م (L01 m - م mA - م (_ m - -.group ن - ن (L01 n - ن (_ n - L02) ن (L03 n - L03) ن (L03 n - ن nA - -.group ه - ه (L01 h - ه hA - ه (_ @ - -.group و - و (L01 v - و (_ u - L03) و (L03 u - و vA - -.group ی - ی i - _) ی jA - -.group ي - ي i - _) ي jA - -.group - $ dol@ - -.group ء - ء @ - ء (L01 - -.group ّ - ّ : - -.group آ - آ A - -//vowels that are not usually written: - -.group َ - َ A - -.group ِ - ِ E - -.group ُ - ُ o - - - diff --git a/dictsource/pt_list b/dictsource/pt_list index a625c789..092d663c 100644 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -337,7 +337,7 @@ la $u lo $u las $u los $u -//se $u +se $u ?2 este $u+ $nounf 'estSi // this ?2 estes $u+ $nounf 'estSis // these @@ -369,7 +369,7 @@ sua $u+ $nounf ?2 nossas $u+ $nounf n'Os&s dele dely $u1+ dela $u+ -deles $u+ +deles delys $u1+ delas $u+ nele nely $u1+ @@ -637,7 +637,6 @@ acertos $alt2 acordo $alt $verb acervo $alt2 adepto $alt -adereço $alt2 adore $alt adorno $alt $verb albatrozes $alt @@ -654,8 +653,8 @@ apego $alt2 $noun apelo $alt $verb aposto $alt $verb aperto $alt2 $noun -apoio $alt $verb -aprovo $alt +apneia $alt +apoio $alt $verb arredores $alt arremesso $alt2 $noun arroz $alt2 @@ -668,6 +667,8 @@ atrozes $alt autora $alt2 avesso $alt2 axé aSE +azeda $alt $verb +azedo $alt $verb baqueta $alt2 beco $alt2 belo $alt @@ -675,7 +676,6 @@ besta $alt2 bilhete $alt2 boca $alt2 bochecha $alt2 -boio $alt bojo $alt2 boleia $alt bolero $alt @@ -683,13 +683,14 @@ bolo $alt2 bolo $alt $verb borboleta $alt2 bordo $alt +bosque $alt boto $alt2 $noun bromelha $alt -cabeça $alt2 cabresto $alt2 cacete $alt2 cachorra $alt2 caderneta $alt2 +cadete $alt2 camiseta $alt2 cantora $alt2 capacete $alt2 @@ -704,6 +705,7 @@ cateto $alt2 catorze $alt2 cebola $alt2 cefaleia $alt +centopeia $alt cerca $alt cerca $alt2 $noun cerco $alt $verb @@ -717,7 +719,6 @@ chovesse $alt2 chupeta $alt2 clamores $alt2 clero $alt -crepe $alt coco $alt2 cofre $alt cogumelo $alt @@ -729,9 +730,10 @@ colher $alt $noun colheres $alt $noun colmeia $alt colore $alt -começo $alt2 $noun +começo $alt $verb comodo $alt2 concerto $alt2 $noun +concertos $alt2 concordo $alt conforto $alt $verb congelo $alt @@ -739,6 +741,7 @@ consolo $alt2 $noun controle $alt2 $noun controlo $alt2 $noun coreia $alt +coreto $alt2 corneta $alt2 cornos $alt corpos $alt @@ -748,6 +751,7 @@ corvos $alt coto $alt2 cratera $alt crede $alt2 +crepe $alt decore $alt desapego $alt2 $noun descabelo $alt @@ -756,12 +760,14 @@ desemprego $alt2 desemprego $alt $verb desespero $alt2 $noun desfecho $alt2 +desmantelo $alt $verb desprezo $alt2 $noun desse $alt2 desse $alt $verb deste $alt2 deste $alt $verb desterro $alt2 +destroem $alt deveras $alt dez $alt diarreia $alt @@ -775,12 +781,13 @@ dueto $alt2 elixir eliSir elo $alt emprego $alt2 $noun +empregos $alt2 encosto $alt $verb -endereço $alt2 endereço $alt $verb enforco $alt engordo $alt enredo $alt $verb +enrosco $alt $verb enterro $alt2 $noun enumerem $alt envelope $alt @@ -793,6 +800,7 @@ erros $alt2 esboço $alt $verb escopeta $alt2 escova $alt2 $noun +escovas $alt2 escovo $alt escroto $alt2 esforço $alt $verb @@ -805,20 +813,23 @@ espiroqueta $alt2 espoleta $alt2 esposa $alt2 esqueleto $alt2 +estilete $alt2 estrela $alt2 estrofe $alt estorno $alt $verb estorvo $alt $verb etiqueta $alt2 europa $alt +europeia $alt exagero $alt $verb explore $alt faceta $alt2 +fantoche $alt farelo $alt farofa $alt febre $alt -feitora $alt2 fera $alt +feitora $alt2 ferozes $alt fezes $alt ?1 fixe fiSy @@ -834,9 +845,7 @@ forca $alt2 força $alt2 $noun forças $alt2 forço $alt -fossem $alt2 forro $alt $verb -fosse $alt2 frevo $alt2 galera $alt galileia $alt @@ -865,11 +874,13 @@ ideia $alt interesse $alt2 $noun jogo $alt2 $noun joguete $alt2 +lagosta $alt2 lambreta $alt2 lebre $alt lembrete $alt2 leste $alt2 $verb lopes $alt +macete $alt2 maior $alt maleta $alt2 marcelo $alt @@ -892,6 +903,7 @@ minueto $alt2 miolo $alt2 miolos $alt moeda $alt +mofo $alt $verb molho $alt2 $noun monera $alt morcego $alt2 @@ -899,10 +911,10 @@ morda $alt2 moreia $alt mortos $alt motora $alt2 -mulher $alt mui mwi muito mw'iNtU // -s is included as a suffix muita mw'iNt& +mulher $alt mulheres $alt mureta $alt2 mutreta $alt2 @@ -915,11 +927,13 @@ obstetra $alt odisseia $alt onu $1 olho $alt2 $noun +onomatopeia $alt opereta $alt2 ordens $alt osso $alt2 ossos $alt ostra $alt2 +ovelha $alt2 ovos $alt pachorra $alt2 paexa paeSa @@ -935,6 +949,7 @@ pastora $alt2 pedra $alt pela $alt $verb pelego $alt2 +pela $alt $verb pelo $alt $verb peso $alt $verb piloto $alt2 $noun @@ -946,32 +961,32 @@ plateia $alt plebeia $alt polca $alt porcos $alt -porrete $alt2 porra $alt2 +porrete $alt2 porto $alt2 portos $alt pose $alt2 povos $alt poxa p'oS& primavera $alt -provo $alt +prosopopeia $alt quarteto $alt2 queda $alt quede $alt2 quinteto $alt2 -recomeço $alt2 $noun +raposa $alt2 +recomeço $alt $verb recordo $alt recorto $alt rede $alt2 redor $alt reembolso $alt $verb -reforços $alt reforço $alt $verb +reforços $alt refresco $alt $verb reitora $alt2 relevo $alt2 $noun remorso $alt -reprovo $alt retorno $alt $verb rixa x'iS& rocha $alt @@ -982,7 +997,7 @@ rota $alt2 rota $alt $noun rumores $alt2 saleta $alt2 -sarjeta $alt +sarjeta $alt2 seborreia $alt seca $alt2 $noun secas $alt2 @@ -1019,6 +1034,7 @@ topo $alt $verb torno $alt $verb torre $alt2 $noun torres $alt2 +torro $alt tortos $alt traqueia $alt travesso $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 58442a4c..36d23b68 100644 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -1,3 +1,4 @@ + // translation rules Brazilian // translation rules Brazilian // translation rules Brazilian // This file is UTF-8 encoded @@ -178,8 +179,6 @@ e (co_ E e (ctA_ E e (ctAm_ E - e (çA_ E - e (çAm_ E e (de_ E e (dem_ E @@ -353,20 +352,22 @@ tiv) e (L05_ E // es- _com) e (L05_ e _pud) e (L05_ E + _tem) e (L05_ e _coub) e (L05_ E _exag) e (L05_ E _houv) e (L05_ E _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E + _trem) e (L05_ e diss) e (L06_ E // contra- + fend) e (L06_ e // de- o- tend) e (L06_ e // a- con- en- es- vend) e (L06_ e // re- _mord) e (L06_ e _rend) e (L06_ e prend) e (L06_ e // a- rea- des- desa- _arrepend) e (L06_ e -_defend) e (L06_ e _depend) e (L06_ e _escond) e (L06_ e preend) e (L06_ e // com- a- re- sur- @@ -383,6 +384,7 @@ respond) e (L06_ e // cor- colh) e (L07_ e // & es- corr) e (L07_ e // per- con- in- so- dis- ench) e (L07_ e // pre- + fend) e (L07_ e // de- o- nasc) e (L07_ e // re- tend) e (L07_ e // en- con- a- es- torc) e (L07_ e // con- @@ -396,6 +398,7 @@ respond) e (L06_ e // cor- _morr) e (L07_ e _perd) e (L07_ e _sofr) e (L07_ e + _trem) e (L07_ e merec) e (L07_ e // des- padec) e (L07_ e // com- parec) e (L07_ e // a- rea- com- desa- @@ -410,8 +413,8 @@ _amanhec) e (L07_ e _amolec) e (L07_ e _anoitec) e (L07_ e _arrepend) e (L07_ e +_atrev) e (L07_ e _cresc) e (L07_ e -_defend) e (L07_ e _depend) e (L07_ e _desguarnec) e (L07_ e _emagrec) e (L07_ e @@ -442,17 +445,22 @@ preend) e (L07_ e // sur- com- proteg) e (L07_ e // des- respond) e (L07_ e // cor- qu) e (brL04_ E + _cel) e (brL04_ E + _enr) e (dL01_ E + _arr) e (dL03_ E + _depr) e (dL03_ E _hosp) e (dL03_ E _gr) e (gL03_ e _gal) e (gL03_ e _n) e (grL03_ e - _estr) ei (L03_ EI + estr) ei (L04_ EI _inv) e (jL04_ E tr) e (pL04_ E // es- _dec) e (pL04_ E _in) e (ptL03_ E _p) e (quL02_ E _s) e (quL02_ E + ad) e (quL04_ E l) e (que_ E _imp) e (rL03_ E _sev) e (rL03_ E @@ -468,6 +476,7 @@ respond) e (L07_ e // cor- _tol) e (rL04_ E _ven) e (rL04_ E acel) e (rL04_ E // des- + _apod) e (rL04_ E _coop) e (rL04_ E _temp) e (rL04_ E _recup) e (rL04_ E @@ -483,13 +492,14 @@ _refrig) e (rL04_ E _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e - _p) e (sL01_ E + _refr) e (scL01_ E _d) e (scL02_ E _cr) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E _d) e (spL02_ E _p) e (squL02_ E + _refr) e (squL02_ E _l) e (ssL02_ e _esp) e (ssL03_ e _c) e (stL03_ e @@ -510,43 +520,10 @@ _obsol) e (tL03_ e _despr) e (zL04_ E _embel) e (zL04_ E _menospr) e (zL04_ E -_emagr) e (çL03 - pr) e (çL03_ e // a- - aqu) e (çL03_ e // re- - mer) e (çL03_ e // des- - pad) e (çL03_ e // com- - par) e (çL03_ e // a- re- com- rea- desa- - _ado) e (çL03_ e - _car) e (çL03_ e - _per) e (çL03_ e_ - conh) e (çL03_ e // re- - obed) e (çL03_ e // des- - _esqu) e (çL03_ e - _forn) e (çL03_ e - _ofer) e (çL03_ e - abast) e (çL03_ e // re- -_aborr) e (çL03_ e -_acont) e (çL03_ e -_agrad) e (çL03_ e -_amanh) e (çL03_ e -_amort) e (çL03_ e -_anoit) e (çL03_ e -_arref) e (çL03_ e -_desguarn) e (çL03_ e -_desguarnec) e (çL03_ e -_enfraqu) e (çL03_ e -_enlouqu) e (çL03_ e -_enraiv) e (çL03_ e -_enriqu) e (çL03_ e -_entrist) e (çL03_ e -_envaid) e (çL03_ e -_envelh) e (çL03_ e -_esclar) e (çL03_ e -_espair) e (çL03_ e -_estrem) e (çL03_ e -_fortal) e (çL03_ e -_rejuven) e (çL03_ e -estabel) e (çL03_ e // re- + com) e (çL01_ E + p) e (çL03_ E + _m) e (çL03_ E +_entorp) e (çL03_ e //endsort @@ -595,7 +572,12 @@ estabel) e (çL03_ e // re- ?3 g (_C g_ g (Y Z // ge gi gu (Y g -?1 guen (C gw'eIN // aguenta, etc. + a) gu (ent gw + enxa) gu (e gw + lin) gu (e gw + lin) gu (i gw + san) gu (ín gw + san) gu (in gw ?1 n) gu (A gw // eg: língua, etc. ?1 man) gu (ei g // mangueira ?1 gu (ém_ g // eg: alguém, ninguém, etc... @@ -837,12 +819,15 @@ estabel) e (çL03_ e // re- ?1 v) o (lt O //sort - _f) o (L06_ o + _f) o (L05_ o + _f) o (L07_ o _engl) o (bL01_ O _s) o (bL02_ O _esn) o (bL04_ O + br) o (chL04_ O _deb) o (chL04_ O -_desabr) o (chL04_ O + _m) o (fL01_ O + _m) o (fL02_ O _s) o (frL02_ O r) o (gL04_ O // inter- _j) o (gL04_ O @@ -850,6 +835,8 @@ _desabr) o (chL04_ O _adv) o (gL04_ O _ref) o (gL04_ O _ap) oi (L01_ OI + _ap) oi (L02_ OI + _b) oi (L04_ OI _t) o (lL03_ o c) o (lhL02_ O // es- en- re- _t) o (lhL02_ O @@ -864,19 +851,29 @@ _desabr) o (chL04_ O _ens) o (pL04_ O _s) o (prL04_ O _) o (ptL04_ O + _defl) o (rL02_ O + _impl) o (rL02_ O _inod) o (rL03_ O _inson) o (rL03_ O _comem) o (rL04 O _remem) o (rL04_ O + f) o (rmL03_ O _enf) o (rquL02_ O + _ext) o (rquL02_ O c) o (rrL01_ o // escorra, incorra, corra, recorra _m) o (rrL01_ o p) o (rtL03_ O // im- trans- de- re- com- a- ex- + t) o (rçL01_ O // con- _r) o (snL04_ O _c) o (spL02_ O + _enr) o (squL02_ O p) ostos (_ Ost=Us# // dispostos etc. _gar) o (tL03_ o + pr) o (vL03_ O _g) o (zL04_ O + _esb) o (çL01_ O + _r) o (çL03_ O + tr) o (çL03_ O // des- _ad) o (çL03_ O _end) o (çL03_ O //endsort @@ -929,8 +926,16 @@ _remem) o (rL04_ O ?1 _) qua kwa // quatro, etc. ?1 _) que ke // quente, etc. ?1 _) quei (C k'eI // queira, queima, etc -?1 C) quen (C kw'eIN // cinquenta, etc. -?1 A) quen (C kw'eIN // frequência, etc. + A) quên (C kw'eIN // frequência, etc. + ade) qu (e kw + e) qu (estr kw + _e) qu (in kw + fre) qu (ent kw + li) qu (id kw + lí) qu (id kw + n) qu (en kw + se) qu (en kw + tran) qu (il kw ?1 quec kes // esquece, etc. ?1 queç kes // esqueça. ?1 A) que (nA_ ke // pequeno, etc. @@ -1162,5 +1167,6 @@ _remem) o (rL04_ O __) - (_D m'enUs + D_) - (_D m'enUs A_) - (_D _ C_) - (_D _ diff --git a/dictsource/rw_list b/dictsource/rw_list deleted file mode 100644 index 3c9f0b04..00000000 --- a/dictsource/rw_list +++ /dev/null @@ -1,83 +0,0 @@ - -// This file is UTF8 encoded -// Spelling-to-phoneme words for Kinyarwanda - -a a: -b ba: -c ca: -d da: -e e: -f fa: -g ga: -h ha: -i i: -j dZa: -k ka: -l la: -m ma: -n na: -o o: -p pa: -q kwa: -r *a: -s sa: -t ta: -u u: -v va: -w wa: -x eks -y ja: -z za: - - -// numbers -_0 z'e*u -_1 R'imwe -_2 kaB'i*i -_3 gat'atu -_4 k'ane -_5 gat'anu -_6 gatand'atu -_7 ka*'indwi -_8 umun'ani -_9 ikj'enda - -_1X itS'umi -_2X makumjaB'i*i -_3X mi*,oNgwit'atu -_4X mi*,oNgw'ine -_5X mi*,oNgwit'anu -_6X mi*,oNgitand'atu -_7X mi*,oNgwi*'indwi -_8X mi*,oNgwin'ani -_9X mi*,oNgwej'enda - -_1C idZ'ana -_2C mag,anaB'i*i -_3C mag,anat'atu -_4C mag,an'ane -_5C mag,anat'anu -_6C mag,anatand'atu -_7C mag,ana*'indwi -_8C mag,anin'ani -_9C mag,anakj'enda - -_0M1 iBih'umbi -_1M1 iJih'umbi -_2M1 iBih'umbibiB'i*i -_3M1 iBih'umbibit'atu -_4M1 iBih'umbib'ine -_5M1 iBih'umbibit'anu -_6M1 iBih'umbibitand'atu -_7M1 iBih'umbibi*'indwi - -_0M2 milij'oni -_1M2 milij'on'imwe -_2M2 milij'oneBj'i*i -_3M2 milij'oneS'atu -_4M2 m,ilij'on'en^e - -_0and na -_dpt _niB'itSe - - diff --git a/dictsource/rw_rules b/dictsource/rw_rules deleted file mode 100644 index b9e787ea..00000000 --- a/dictsource/rw_rules +++ /dev/null @@ -1,105 +0,0 @@ - -// Kinyarwanda translation rules -// This file is UTF-8 encoded - -.group a - a a - -.group b - b B - _) b b - m) b b - -.group c - c tS - cy kj - -.group d - d d - -.group e - e e - -.group f - f f - -.group g - g g - g (e J - g (i J - -.group h - h h - -.group i - i i - -.group j - j dZ - jy Jj - -.group k - k k - k (e c - k (i c - -.group l - l l - -.group m - m m - mp mh - -.group n - n n - n (g N - n (ge n^ - n (gi n^ - nk Nx - nt nh - ny n^ - -.group o - o o - -.group p - p p - -.group q - q q - -.group r - r * // try ** - _) r R - -.group s - s s - sh S - shy S; - -.group t - t t - -.group u - u u - -.group v - v c - -.group w - w w - b) w g - -.group x - x ks - _) x z - -.group y - y j - -.group z - z z - -.group - $ dola*a // just a guess - diff --git a/dictsource/si_list b/dictsource/si_list index 146a69a1..84d602a6 100644 --- a/dictsource/si_list +++ b/dictsource/si_list @@ -105,34 +105,34 @@ _dpt d'aS@m#@ // Consonants ක k@ -ඛ kh@ +ඛ k#@ ග g@ -ඝ gh@ +ඝ g#@ ඞ N@ ඟ N#g@ ච tS@ -ඡ tSh@ +ඡ tS#@ ජ dZ@ -ඣ dZh@ +ඣ dZ#@ ඤ n^@ ඥ gn@ ඦ n^#dZ@ ට t.@ -ඨ t.h@ +ඨ t.#@ ඩ d.@ -ඪ d.h@ +ඪ d.#@ ණ n.@ ඬ n.#d.@ ත t@ -ථ th@ +ථ t#@ ද d@ -ධ dh@ +ධ d#@ න n@ ඳ n#d@ ප p@ -ඵ ph@ +ඵ p#@ බ b@ -භ bh@ +භ b#@ ම m@ ඹ m#b@ ය j@ @@ -153,7 +153,7 @@ _, k'oma:v@ ? pr'a:Sna:rt,@j@ ! v'iSm#@j,a:rt@j@ _“ 'udrut,@pa:t.,@a:r,@mb@j@ -_” 'udhrut,@pa:t.h,@@w,@s.a:n,@j@ +_” 'ud#rut,@pa:t.#,@@w,@s.a:n,@j@ _: t'itkom,a:v@ _; d'etit@ $ do:l.ar $max3 diff --git a/dictsource/si_rules b/dictsource/si_rules index a27479fe..80f44fb3 100644 --- a/dictsource/si_rules +++ b/dictsource/si_rules @@ -19,16 +19,16 @@ ක (B k .group ඛ - ඛ kha - ඛ (B kh + ඛ k#a + ඛ (B k# .group ග ග ga ග (B g .group ඝ - ඝ gha - ඝ (B gh + ඝ g#a + ඝ (B g# .group ඞ ඞ Na @@ -71,8 +71,8 @@ ට (B t. .group ඨ - ඨ t.ha - ඨ (B t.h + ඨ t.#a + ඨ (B t.# .group ඩ ඩ d.a @@ -95,16 +95,16 @@ ත (B t .group ථ - ථ tha - ථ (B th + ථ t#a + ථ (B t# .group ද ද da ද (B d .group ධ - ධ dha - ධ (B dh + ධ d#a + ධ (B d# .group න න na @@ -119,16 +119,16 @@ ප (B p .group ඵ - ඵ pha - ඵ (B ph + ඵ p#a + ඵ (B p# .group බ බ ba බ (B b .group භ - භ bha - භ (B bh + භ b#a + භ (B b# .group ම ම ma diff --git a/dictsource/sw_rules b/dictsource/sw_rules index c393caa2..6f617bef 100644 --- a/dictsource/sw_rules +++ b/dictsource/sw_rules @@ -70,7 +70,7 @@ _) n (k N- _) n (k@@ N- n (g N - _) n (g N- + K) n (g N- _) n (g@@ N- .group o diff --git a/dictsource/te_list b/dictsource/te_list deleted file mode 100644 index 9f2a78e6..00000000 --- a/dictsource/te_list +++ /dev/null @@ -1,171 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Telugu - - - -// speak Latin letters as English -a e:j -b bi: -c si: -d di: -e i: -f Ef -g dZi: -h e:tS -i a:j -j dZe:j -k ke:j -l El -m Em -n En -o o: -p pi: -q kju: -r a:r -s Es -t t#i: -u ju: -v vi: -w dVbVlju: -x Eks -y wa:j -z zEd - - - -// numbers -_0 sunna -_1 okat.i -_1a oka -_2 rend.u -_3 mu:d.u -_4 na:lgu -_5 aIdu -_6 a:ru -_7 e:d.u -_8 ;enimidi -_9 tommidi -_1X padi -_11 padakond.u -_12 pannemd.u -_13 padamu:d.u: -_14 pad#na:lugu -_15 padihe:nu -_16 padaha:ru -_17 padihe:d.u -_18 padd#enimidi -_19 pamdommadi -_2X iravaI -_3X muppaI -_4X nalub#aI -_5X ja:b#aI -_6X aravaI -_7X d.eb#baI -_8X jenab#aI -_9X tomb#aI -_0C vandala -_0C0 vandalu -_1C okavanda -_0M1 vela -_0M1x velu -_1M1 okavejji -_0M2 laks.ala -_0M2x laks.alu -_1M2 laks.a -_0M3 kotla -_0M3x kotlu -_1M3 koti -_dpt _d,aS;a:mkam - - -// symbols -_?? aks.aram // 'unknown character' -% S;a:tam -+ ku:d.ika -* naks.atra -\ bja:kasla:s. -/ sla:s. -© ka:pi:raIt. -¶ ve:ra: - -_, ka:ma: -_; semi:ko:lan -_: ko:lan -_! a:S;carja:rt#aka -_? praS;na:rt#aka -_- haIfan -__ amd.ar||sko:r - - -// unstressed function words -// articles -ద $u -అ $u+ -ఆ $u+ -ఒక $u - - -// letter names -U+c01 am -U+c02 an -U+c03 ah -U+c4d vottu - - // consonants with virama -క్ ik -ఖ్ ik# -గ్ ig -ఘ్ ig# -ఙ్ iN -చ్ ic -ఛ్ ic# -జ్ iJ -ఝ్ iJ# -ఞ్ in^ -ట్ it. -ఠ్ it.# -డ్ id. -ఢ్ id.# -ణ్ in. -త్ it -థ్ it# -ద్ id -ధ్ id# -న్ in -ప్ ip -ఫ్ ip# -బ్ ib -భ్ ib# -మ్ im -య్ ij -ర్ ir -ఱ్ ir -ల్ il -ళ్ il. -వ్ iv -శ్ iS; -ష్ is. -స్ is -హ్ ih -ౘ్ its -ౙ్ idz - - - // combining vowels, precede by a click so they - // can be distinguished from stand-alone vowels -ా #X2a:: -ి #X1i -ీ #X2i:: -ు #X1u -ూ #X2u:: -ృ #X1ru -ౄ #X2ru: -ె #X1e -ే #X2e:: -ై #X2aI -ొ #X1o -ో #X2o:: -ౌ #X2aU - - diff --git a/dictsource/te_rules b/dictsource/te_rules deleted file mode 100644 index 2ceb5476..00000000 --- a/dictsource/te_rules +++ /dev/null @@ -1,277 +0,0 @@ - -// This file is UTF8 encoded -// Spelling to phoneme rules for Telugu - -// A means vowel letters (not vowel signs) -// B means a combining vowel sign or a virama - - -.replace -౦ 0 // Convert Telugu numbers -౧ 1 -౨ 2 -౩ 3 -౪ 4 -౫ 5 -౬ 6 -౭ 7 -౮ 8 -౯ 9 - - -.group క - క ka - క (B k - -.group ఖ - ఖ k#a - ఖ (B k# - -.group గ - గ ga - గ (B g - -.group ఘ - ఘ g#a - ఘ (B g# - -.group ఙ - ఙ Na - ఙ (B N - -.group చ - చ ca - చ (B c - -.group ఛ - ఛ c#a - ఛ (B c# - -.group జ - జ Ja - జ (B J - -.group ఝ - ఝ J#a - ఝ (B J# - -.group ఞ - ఞ n^a - ఞ (B n^ - -.group ట - ట t.a - ట (B t. - -.group ఠ - ఠ t.#a - ఠ (B t.# - -.group డ - డ d.a - డ (B d. - -.group ఢ - ఢ d.#a - ఢ (B d.# - -.group ణ - ణ n.a - ణ (B n. - -.group త - త ta - త (B t - -.group థ - థ t#a - థ (B t# - -.group ద - ద da - ద (B d - -.group ధ - ధ d#a - ధ (B d# - -.group న - న na - న (B n - -.group ప - ప pa - ప (B p - -.group ఫ - ఫ p#a - ఫ (B p# - -.group బ - బ ba - బ (B b - -.group భ - భ b#a - భ (B b# - -.group మ - మ ma - మ (B m - -.group య - య ja - య (B j - -.group ర - ర ra - ర (B r - -.group ఱ - ఱ ra - ఱ (B r - -.group ల - ల la - ల (B l - -.group ళ - ళ l.a - ళ (B l. - -.group వ - వ va - వ (B v - -.group శ - శ S;a - శ (B S; - -.group ష - ష s.a - ష (B s. - -.group స - స sa - స (B s - -.group హ - హ ha - హ (B h - -.group ౘ - ౘ tsa - ౘ (B ts - -.group ౙ - ౙ dza - ౙ (B dz - -.group ౠ - ౠ ru - -.group ౡ - ౡ l- - - -// Stand-alone vowels -.group అ - అ a - -.group ఆ - ఆ a: - -.group ఇ - ఇ i - -.group ఈ - ఈ i: - -.group ఉ - ఉ u - -.group ఊ - ఊ u: - -.group ఋ - ఋ ru - -.group ఌ - ఌ l- - -.group ఎ - ఎ e - _) ఎ ;e - -.group ఏ - ఏ e: - -.group ఐ - ఐ aI - -.group ఒ - ఒ o - -.group ఓ - ఓ o: - -.group ఔ - ఔ aU - - - -.group 0xe0b0 // characters which start with UTF-8 bytes: [e0 b0] - -. ఁ n // candrabindu - - ం m // anusvara (this should nasalize the vowel) - - ః h // visarga - -// combining vowel signs - - ా a: - - ి i - - -.group 0xe0b1 // characters which start with UTF-8 bytes: [e0 b1] - - ీ i: - - ు u - - ూ u: - - ృ ru - - ౄ r-: - - ె e - - ే e: - - ై aI - - ొ o - - ో o: - - ౌ aU - - ్ // virama - - ౕ : // length mark ?? - ౖ : // ai length mark ?? - - -.group 0xe0a4 // devanagari - 0xe0a4 _^_HI // switch to hindi voice for devanagari characters -.group 0xe0a5 // devanagari - 0xe0a5 _^_HI - - -.group - $ d.a:lar - - diff --git a/dictsource/tn_list b/dictsource/tn_list deleted file mode 100644 index 4cdf9b72..00000000 --- a/dictsource/tn_list +++ /dev/null @@ -1,149 +0,0 @@ -// maintainer: Sternly K Simon -// email:sternly_simon@yahoo.com -// setswana translation list -// This file is UTF-8 encoded. - -// letters (just guesses) -a a -b bi:i: -c si:i: -d di:i: -e i:i: -f e:fo -g gi:i -h eitSi -j dZ'ei -k kei -l e:li -m 'emu -n 'eni -o o:o: -p p'i:i: -q kju -r aR3e -s 'e:si -t t'i:i: -u u:u: -v v'i:i: -x ek'ese -w dabolju -y w'ai -z z'e:ti - - -// numbers -_0 lef'e:la -_1 n'ngwe: -_2 p'edi -_3 t'a:R3o -_4 'n-ne -_5 l#'a:no -_6 th'ataro -_7 s'u:pa -_8 roba'bobedi -_9 roba'n'ngwe -_1X les'o:me -_2X mas'o:mepedi -_3X mas'o:me'ama:R3o -_4X mas'o:me'ama:ne -_5X mas'o:me'amal#'a:no -_6X mas'o:me'ath'ataro -_7X mas'o:me'a'S'u:pa -_8X mas'o:me'abo'roba'bedi: -_9X mas'o:me'a'roba'bo'ngwe - -//number plurals - -//numbers money wise -_0C lekX'olo -_1C0 lekX'olo -_2C _|makX'olopedi -_3C _|makX'olot'a:R3o -_4C _|makX'olo'n-ne -_5C _|makX'olol#'a:no -_6C _|makX'olo'th'ataro -_7C makX'oloS'u:pa -_8C makX'olo'a'ma'roba'bobedi: -_9C makX'olo'a'ma'roba'bo'n'ngwe -_0M1 's-'ikete -_1M1 _|'s-'ikete -_2M1 dik'etep'edi -_3M1 dik'etet'a:R3o -_4M1 dik'eten-ne -_5M1 dik'etel#'a:no -_6M1 dik'etets'e'th'ataro -_7M1 dik'eteSu:pa -_8M1 dik'ete'tse'bo'roba'bobedi -_9M1 dik'ete'tse'bo'roba'bo'ngwe -_1M2 dik'etetSelekX'o:lo -_2M2 dik'etetSemakX'o:lop'edi -_3M2 dik'etetSemakX'o:lot'a:R3o -_4M2 dik'etetSemakX'o:lon-ne -_5M2 dik'etetSemakX'o:lol#'ano -_6M2 dik'etetSemakX'o:lo'th'a'taro -_7M2 dik'etetSemakX'o:loSu:pa -_8M2 dik'etetSemakX'o:lo'bo'roba'bobedi: -_9M2 dik'etetSemakX'o:lo'bo'roba'bo'ngwe -_0M3 _|mili'oni // 1,000,000 -_0M4 _|bili'oni -_dpt fe:Xelu'a:na -_0and _|na - -bona $u $brk // they,them -yona $u+ $brk // it -wena $u+ $brk //you - -nna $u+ $brk // i -yona $u+ $brk // him, her, it -ene $u+ $brk // him, her -lona $u+ //ploral to wena -rona $u+ // we,us - -//number of chances/probabilities - - -//Days - - -//accents - -_cir k'efa - -lenna $u+ // and me -waka $u+ // mine or lying -gaka $u+ // mine -tshaka $u+ // plural of mine -dilo $u+ // things -mole $u+ // that -naya $u+ // give - -//nouns - -// prepositions -wa $u $brk // of -ya $u $brk // of,by they,them -la $u $brk // of -fa $u $brk // of -kwa $u $brk // at - -mo $u $brk // in -fa $u $brk // in,on - -kgolo $u $pause // dig -konte $u $pause // without - -kwala $pause // by means of which -kwa $u $brk // with - - -// conjunctions -le $u $pause // and -kana $u $pause // or -ao $u $pause // or -mme $u $pause // but -ntswa $u $pause // although -kuwa $u $pause // shout - - - - diff --git a/dictsource/tn_rules b/dictsource/tn_rules deleted file mode 100644 index 4525f234..00000000 --- a/dictsource/tn_rules +++ /dev/null @@ -1,147 +0,0 @@ -// maintainer: Sternly K Simon -// email:sternly_simon@yahoo.com -// setswana translation rules -// with support from Jonathan Duddington - -//2-letter groupds that represent classes of setswana nouns -// mo, ba, mo, me, le, ma, se, di, lo, bo, go, fa, ko, mo - -.group a - a a - _C) a a - _) a (C a - a (_ a - a (s a: - aa a: - -.group b - b b - b B - -.group c - c k - ch tS - -.group d - d d - dh D - -.group e - e e - ee e: - s) e i - -.group f - f f - -.group g - g g - _k) g g x2 - gh Q - - -.group h - h h - hl l# - -.group i - i i - ii i: - -.group j - j J - -.group k - k k - kh x - -.group l - l l - -.group m - m m - _) m m- - m (A m - K) m (@@ _|m - K) m (C m- - K) m (b@@ _|m - K) m (v@@ _|m - K) m (w@@ _|m - -.group n - n n - _) n n- - n (A n - n (@@ n - ny n^ - n (ch n^ - n (j n^ - ng' N - n (k N - _) n (k N- - _) n (k@@ N- - n (g N - _) n (g N- - _) n (g@@ N- - -.group o - o o - oo o: - -.group p - p p - -.group q - q k - -.group r - r r - r R - r R3 - A) r (A R - C) r (A @-* - rr RR - -.group s - s s - sh S - s (e s- - _t) se si: - -.group t - t t - th T - tsen ts'e:n - tlh K - tl l# - -.group u - u u - uu u: - _d) u u: - -.group v - v v - -.group w - w w - -.group x - x ks - -.group y - y j - -.group z - z z - -.group - $ dola - % asilimia - - * n^ota - *) * (* - ** - **) * (_ _:: - - diff --git a/dictsource/tt_list b/dictsource/tt_list deleted file mode 100644 index b34ce97d..00000000 --- a/dictsource/tt_list +++ /dev/null @@ -1,83 +0,0 @@ -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Tatar - - -// Letters -б be -в we -г ge -д de -е je -ё jo -ж Ze -җ Z;e -з ze -и i -й kVsk,A'i -к kA -л el -м em -н en -ң eN -о o: -ө W: -п pe -р er -с es -т te -у u -ү y -ф ef -х xA -һ he -ц tse -ч S;e -ш SA -щ SS;A -ъ kAlVnl,Vqbilges'e -ы V: -ь neS;k&l,ekbilges'e -э e|: -ю ju -я jA - - -// Numbers -_0 n'ul? -_1 b'er -_2 ik'e -_3 'WS; -_4 d'yrt -_5 b'iS -_6 Alt'V -_7 Z;id'e -_8 sig'ez -_9 tug'Vz -_10 'un -_11 unb'er -_12 unik'e -_13 un'WS; -_14 und'yrt -_15 unb'iS -_16 unAlt'V -_17 unZ;id'e -_18 unsig'ez -_19 untug'Vz -_2X egerm'e -_3X ut'Vz -_4X kVr'Vk -_5X ill'e -_6X Altm'VS -_7X Z;itm'eS -_8X siks'&n -_9X tuks'An -_0C j'Wz -_0M1 m'eN -_0M2 milli'on -_1M2 milli'on -_0M3 milli'Ard -_1M3 milli'Ard -_0M4 billi'on -_1M4 billi'on - -_dpt _bWt,en diff --git a/dictsource/tt_rules b/dictsource/tt_rules deleted file mode 100644 index 2923bff1..00000000 --- a/dictsource/tt_rules +++ /dev/null @@ -1,134 +0,0 @@ -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Tatar - - -.group а - а A - -.group ә - ә & - әе e: // 'әнкәен' - -.group б - б b - -.group в - в w // [v] in Russian words - -.group г - г g // changes to [Q] or [Q"] - -.group д - д d - -.group е - _) е je2 // changes to [je] or [jV] - е e - -.group ё - ё jo - -.group ж - ж Z - -.group җ - җ Z; - -.group з - з z - -.group и - и i - A) и j - -.group й - й j - K) й (K I // not next to a vowel - -.group к - к k - -.group л - л l - -.group м - м m - -.group н - н n -// н (к N - н (г N - н (х N - -.group ң - ң N - -.group о - о o - -.group ө - ө W - -.group п - п p - -.group р - р r - -.group с - с s - -.group т - т t - -.group у - у u // or w - A) у w - -.group ү - ү y // or w - A) ү w - -.group ф - ф f - -.group х - х x - -.group һ - һ h - -.group ц - ц ts - -.group ч - ч S; - -.group ш - ш S - -.group щ - щ SS; - -.group ъ - ъ ? - -.group ы - ы V - ый Vj // need a diphthong phoneme ?? - -.group ь - ь ? - -.group э - э e - -.group ю - ю ju2 // changes to ju or jy - -.group я - я ja // changes to jA or j& - -.group - $ dolAR - diff --git a/dictsource/wo_list b/dictsource/wo_list deleted file mode 100644 index c8b3a8ea..00000000 --- a/dictsource/wo_list +++ /dev/null @@ -1,43 +0,0 @@ - -// Spelling-to-phoneme rules for Wolof (Senegal, Gambia) -// This file is UTF-8 encoded - -// Numbers -_0 t'us -_1 b'En: -_2 n^'a:R2 -_3 n^'Et: -_4 n^'E:nt -_5 J'uR2o:m -_6 J'uR2o:mbEn: -_7 J'uR2o:mn^a:R2 -_8 J'uR2o:mn^Et: -_9 J'uR2o:mn^E:nt -_1X f'uk: -_2X n^'a:R2fuk: -_3X n^'Et:fuk: -_4X n^'E:ntfuk: -_5X J'uR2o:mfuk: -_6X J'uR2o:mbEn:fuk: -_7X J'uR2o:mn^a:R2fuk: -_8X J'uR2o:mn^Et:fuk: -_9X J'uR2o:mn^E:ntfuk: -_0C t'e:me:R2 -_1C t'e:me:R2 -_0M1 J'un:i -_0M2 t'amndaR2E:t -_0and %ak - -// Letter names - - -// Symbols - - -// Unstressed words - - -// Exceptions - - - diff --git a/dictsource/wo_rules b/dictsource/wo_rules deleted file mode 100644 index 9db5b03e..00000000 --- a/dictsource/wo_rules +++ /dev/null @@ -1,128 +0,0 @@ - -// Spelling-to-phoneme rules for Wolof (Senegal, Gambia) -// This file is UTF-8 encoded - -.group a - a a - aa a: - -.group b - b b - bb b: - -.group c - c c - cc c: - -.group d - d d - dd d: - -.group e - e E - ee E: - -.group é - é e - ée e: - éé e: - -.group ë - ë @ - ëe @: - ëë @: - -.group f - f f - -.group g - g g - gg g: - -.group h - h h - -.group i - i i - ii i: - -.group j - j J - j J: - -.group k - k k - kk k: - -.group l - l l - -.group m - m m - mm m: - K) m (K m- - -.group n - n n - nn n: - K) n (K n- - -.group ŋ - ŋ N - ŋŋ N: - K) ŋ (K N- - -.group ñ - ñ n^ - -.group o - o O - oo O: - -.group ó - ó o - óo o: - óó o: - -.group p - p p - pp p: - -.group q - q q - qq q: - -.group r - r R2 - r (r R - -.group s - s s - ss ss2 - -.group t - t t - tt t: - -.group u - u u - uu u: - -.group v - v v - -.group w - w w - -.group x - x x - -.group y - y j - -.group z - z z - - -.group - $ dOlaR2 diff --git a/dictsource/zhy_rules b/dictsource/zhy_rules index 17e19035..280f3b81 100644 --- a/dictsource/zhy_rules +++ b/dictsource/zhy_rules @@ -3,7 +3,7 @@ // condition ?1 Speak English letters as English words // condition ?2 Speak English letter as jyutping romanisation - +//voice=zh-yue // to find the voice for this dictionary .group a ?1 a _^_EN diff --git a/docs/commands.html b/docs/commands.html index 92eaab00..fcf46181 100644 --- a/docs/commands.html +++ b/docs/commands.html @@ -29,22 +29,12 @@ Some Linux distrubitions (eg. SuSe 10) have version 19 of PortAudio which has a The speak program may be compiled without using PortAudio, by removing the line
   #define USE_PORTAUDIO
 
in the file speech.h.

 


-

2.1.2 Use with KDE Text-to-Speech (KTTS)

-To add to KDE-Text-to-Speech Manager (KTTSMgr), use it as a "Command" talker -with "command for speaking texts" set to:
- cat %f | espeak --stdin -w %w -v en -s190 -

-In this example, "en" is the voice name, "190" is the speed. -

-Note: -

-

 


-

2.1.3 Windows

-The installer: setup_espeak.exe installs the SAPI5 version of eSpeak. It also installs a command line program espeak in the espeak directory. +

2.1.2 Windows

+The installer: setup_espeak.exe installs the SAPI5 version of eSpeak. +During installation you need to specify which voices you want to appear in SAPI5 voice menus. +

+It also installs a command line program espeak in the espeak program directory.

 


2.2 COMMAND OPTIONS

@@ -176,7 +166,13 @@ The same as --compile, but source line numbers from the *_rules

--ipa
-Writes phonemes to stdout, using the International Phonetic Alphabet (IPA). +Writes phonemes to stdout, using the International Phonetic Alphabet (IPA).
+If a phoneme name contains more than one letter (eg. [tS]) an optional parameter can be used to distinguish +this from separate phonemes. +
+--pho=1 Use a tie character (U+0361) before subsequence letters. +
+--pho=2 Use a zero-width-joiner (U+200D) before subsequent letters.

--path [="<directory path>"]
diff --git a/docs/dictionary.html b/docs/dictionary.html index c3a58521..0ef87afe 100644 --- a/docs/dictionary.html +++ b/docs/dictionary.html @@ -311,6 +311,10 @@ S<number> may be followed by additonal letters (eg. S2ei ). Some of these f the suffix means the next word is likely to be a verb. + + m + after this suffix has been removed, additional suffixes may be removed. + diff --git a/docs/docindex.html b/docs/docindex.html index f0180864..5ec6713c 100644 --- a/docs/docindex.html +++ b/docs/docindex.html @@ -46,7 +46,7 @@ The list of phoneme mnemonics for English, for use in the Pronunciation Dictiona The tables of the phonemes used by each language, with their properties and sound production.

Intonation

Different intonation "tunes" may be defined for different languages for clauses which end in full-stop, comma, question-mark, and exclamation-mark. -

eSpeak Libary API

+

eSpeak Library API

API definition and header file for a shared library version of eSpeak.

Markup tags

SSML (Speech Synthesis Markup Language) and HTML tags recognized by eSpeak. diff --git a/docs/phontab.html b/docs/phontab.html index 96112213..2bd9e01d 100644 --- a/docs/phontab.html +++ b/docs/phontab.html @@ -228,31 +228,50 @@ where the ELSE and multiple ELSE parts are optional.

Multiple conditions may be joined with AND or OR, but not a mixture of ANDs and ORs.

+A condition may be preceded by NOT. For example: +

+  IF <condition> AND NOT <condition> THEN
+    <statements>
+  ENDIF
+
+

Condition Can be:


@@ -240,7 +266,7 @@ speak command.
default
-
This voice is used if none is specified in the speak command. Copy your preferred voice to "default" so you can use the speak command without the need to specify a voice.
+
This voice is used if none is specified in the speak command. You can copy your preferred voice to "default" so you can use the speak command without the need to specify a voice.
For a list of voices provided for English and other languages see Languages. diff --git a/espeak-data/voices/asia/ms b/espeak-data/voices/asia/ms new file mode 100644 index 00000000..90a38a37 --- /dev/null +++ b/espeak-data/voices/asia/ms @@ -0,0 +1,17 @@ +// Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com) +name malay +language ms +gender male +phonemes id + +translator id + +stressLength 160 200 180 180 0 0 220 240 +stressAmp 16 18 18 18 0 0 22 21 +intonation 3 // Less intonation, and comma does not raise the pitch. + +// Nuance - Peninsula Malaysia +// replace 3 a @ // change 'saya' to 'saye' + // (only the last phoneme of a word, only in unstressed syllables) + +consonants 80 80 diff --git a/espeak-data/voices/asia/pa b/espeak-data/voices/asia/pa index 2ce846b7..4cd585d1 100644 --- a/espeak-data/voices/asia/pa +++ b/espeak-data/voices/asia/pa @@ -1,2 +1,2 @@ -name punjabi-test +name punjabi language pa diff --git a/espeak-data/voices/europe/an b/espeak-data/voices/europe/an index 248a9710..7bf245e0 100644 --- a/espeak-data/voices/europe/an +++ b/espeak-data/voices/europe/an @@ -1,4 +1,3 @@ -name aragon +name aragonese language an - - +gender male diff --git a/espeak-data/voices/europe/fr-be b/espeak-data/voices/europe/fr-be index c2bb5357..4a741820 100644 --- a/espeak-data/voices/europe/fr-be +++ b/espeak-data/voices/europe/fr-be @@ -1,4 +1,4 @@ -name french (Belgium) +name french-Belgium language fr-be language fr 8 gender male diff --git a/espeak-data/voices/europe/nl b/espeak-data/voices/europe/nl index 6a8d5efd..beef33fa 100644 --- a/espeak-data/voices/europe/nl +++ b/espeak-data/voices/europe/nl @@ -1,3 +1,3 @@ language nl -name dutch-test +name dutch gender male diff --git a/espeak-data/voices/test/bn b/espeak-data/voices/test/bn new file mode 100644 index 00000000..1e99fa8c --- /dev/null +++ b/espeak-data/voices/test/bn @@ -0,0 +1,3 @@ +name bengali +language bn +gender male diff --git a/espeak-data/voices/test/nci b/espeak-data/voices/test/nci index d0864f3d..6ce7eee4 100644 --- a/espeak-data/voices/test/nci +++ b/espeak-data/voices/test/nci @@ -1,4 +1,4 @@ -name nahuatl - classical +name nahuatl-classical language nci gender male diff --git a/mkdictlist b/mkdictlist index 2b7a1403..4457f266 100755 --- a/mkdictlist +++ b/mkdictlist @@ -8,28 +8,64 @@ import sys import os +voices = set() dictionaries = {} +# Map voice names to dictionaries when these do not match. +special_voices = { + 'zh-yue': 'zhy', +} + +def find_voices(path): + for filename in os.listdir(path): + voice_path = os.path.join(path, filename) + if os.path.isdir(voice_path): + if not filename in ['!v', 'mb']: + find_voices(voice_path) + else: + if filename in special_voices.keys(): + voices.add(special_voices[filename]) + else: + voices.add(filename) + +find_voices('espeak-data/voices') + for filename in os.listdir('dictsource'): if filename.endswith('_rules') or filename.endswith('_list') or filename.endswith('_listx'): dic, cat = filename.split('_') - if not dic in dictionaries.keys(): - dictionaries[dic] = [] - dictionaries[dic].append('dictsource/%s' % filename) + if dic in voices: + if not dic in dictionaries.keys(): + dictionaries[dic] = [] + dictionaries[dic].append('dictsource/%s' % filename) -print '##### dictionaries:' -print -print 'dictionaries: \\' -for n, name in enumerate(sorted(dictionaries.keys())): - if not name in ['bo']: # espeak fails to read these voices - if n == len(dictionaries.keys()) - 1: - print '\tespeak-data/%s_dict' % name - else: - print '\tespeak-data/%s_dict \\' % name -for name, files in sorted(dictionaries.items()): - print - print '%s: espeak-data/%s_dict' % (name, name) - print 'dictsource/%s_extra:' % name - print '\ttouch dictsource/%s_extra' % name - print 'espeak-data/%s_dict: src/espeak espeak-data/phontab %s dictsource/%s_extra' % (name, ' '.join(sorted(files)), name) - print '\tcd dictsource && ../src/espeak --compile=%s && cd ..' % name +def write_dictionary_make_rules(f): + f.write('##### dictionaries:\n') + f.write('\n') + f.write('dictionaries: \\\n') + for n, name in enumerate(sorted(dictionaries.keys())): + if not name in ['bo']: # espeak fails to read these voices + if n == len(dictionaries.keys()) - 1: + f.write('\tespeak-data/%s_dict\n' % name) + else: + f.write('\tespeak-data/%s_dict \\\n' % name) + for name, files in sorted(dictionaries.items()): + f.write('\n') + f.write('%s: espeak-data/%s_dict\n' % (name, name)) + f.write('dictsource/%s_extra:\n' % name) + f.write('\ttouch dictsource/%s_extra\n' % name) + f.write('espeak-data/%s_dict: src/espeak espeak-data/phontab %s dictsource/%s_extra\n' % (name, ' '.join(sorted(files)), name)) + f.write('\tcd dictsource && ../src/espeak --compile=%s && cd ..\n' % name) + +try: + filename = sys.argv[1] +except: + filename = None + +if filename: + with open(filename, 'r') as f: + prelude = f.read().split('##### dictionaries:\n')[0] + with open(filename, 'w') as f: + f.write(prelude) + write_dictionary_make_rules(f) +else: + write_dictionary_make_rules(sys.stdout) diff --git a/phsource/mbrola/id1 b/phsource/mbrola/id1 index 3fe9587a..a55ab95f 100644 --- a/phsource/mbrola/id1 +++ b/phsource/mbrola/id1 @@ -1,6 +1,5 @@ -// CR1 doesn't like same phonemes twice -0 e E 5 e _ +// ID1 and MS1 don't like same phonemes twice 0 s s 5 s _ 0 ? k 5 k _ 0 t t 5 t _ @@ -8,6 +7,10 @@ 0 n n 5 n _ 0 p p 5 p _ 0 l/ l 5 l _ +0 h h 5 h _ +0 k k 5 k _ +0 z z 5 z _ +0 D D 5 z _ 0 l/2 NULL 0 l 0 l/ NULL 0 l @@ -28,10 +31,13 @@ 0 a NULL 0 V 0 E NULL 0 e +0 E2 NULL 0 e 0 i NULL 0 I 0 o NULL 0 Q 0 O NULL 0 Q 0 u NULL 0 U +// 'id1' has phonemes OI aI aU + 0 n^ NULL 0 nY 0 ? NULL 0 k @@ -40,3 +46,35 @@ 0 R NULL 0 r 0 x NULL 0 h +// some English phonemes +0 A: NULL 60 V r +0 A@ NULL 60 V r +0 eI NULL 0 e +0 oU NULL 60 Q U +0 u: NULL 0 U +0 i: NULL 0 I +0 I2 NULL 0 I +0 I# NULL 0 I +0 3 NULL 0 @ +0 3: NULL 0 @ +0 e@ NULL 0 e +0 i@ NULL 60 I @ +0 i@3 NULL 60 I r +0 o@ NULL 60 Q @ +0 O@ NULL 60 Q @ +0 O: NULL 80 Q @ +0 U@ NULL 60 U @ +0 0 NULL 0 Q +0 a# NULL 0 @ +0 aa NULL 0 V +0 @L NULL 50 @ l +0 aI @ 5 aI _ +0 aI 3 5 aI _ +0 aU @ 5 aU _ +0 aI@ NULL 75 V @ +0 aI3 NULL 75 V r +0 aU@ NULL 75 V @ + +0 Z NULL 60 z j +0 T NULL 0 t +0 D NULL 0 z diff --git a/phsource/ph_bengali b/phsource/ph_bengali index 1fceed4b..7b93cc90 100644 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -3,35 +3,92 @@ // Bengali, inherits from Hindi //==================================================== -phoneme @ - vowel flag1 starttype #@ endtype #@ - length 65 - ChangeIfDiminished(@-) - IF nextPh(H) THEN - FMT(vowel/@_low) +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 - FMT(vowel/@_bck) + + 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 V - vowel flag1 starttype #@ endtype #@ - length 180 - CALL hi/V -endphoneme - - -phoneme a: - vowel long starttype #a endtype #a - length 230 +phoneme a + vowel starttype #a endtype #a + length 225 FMT(vowel/aa_9) endphoneme -phoneme o: - vowel long starttype #o endtype #o - length 220 - FMT(vowel/o_2) +phoneme i + vowel starttype #i endtype #i + length 200 + FMT(vowel/i_6) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 200 + FMT(vowel/u) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 200 + FMT(vowel/e) +endphoneme + + +phoneme & + vowel starttype #a endtype #a + length 200 + FMT(vowel/&_2) +endphoneme + + +phoneme o + vowel starttype #o endtype #o + length 200 + IF nextPhW(w) THEN + length 160 + 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_english b/phsource/ph_english index d6f0ccd5..f0e54f71 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -145,10 +145,7 @@ phoneme @2 // Schwa, changes to I before a vowel IF nextPh(isVowel) THEN ChangePhoneme(I2) ENDIF - IF nextPh(isVowel) THEN - FMT(vowel/ii_4) - ENDIF - FMT(vowel/@) + ChangePhoneme(@) endphoneme @@ -159,7 +156,7 @@ phoneme @5 // Schwa, changes to U before a vowel IF nextPh(isVowel) OR nextPh(isPause) THEN ChangePhoneme(U) ENDIF - FMT(vowel/@) + ChangePhoneme(@) endphoneme diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index a4637e41..c3d04e8c 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -36,7 +36,7 @@ phoneme @2 // Schwa, changes to I before a vowel IF nextPh(isVowel) THEN ChangePhoneme(I2) ENDIF - FMT(vowel/@_3) + ChangePhoneme(@) endphoneme @@ -47,7 +47,7 @@ phoneme @5 // Schwa, changes to U before a vowel IF nextPh(isVowel) OR nextPh(isPause) THEN ChangePhoneme(U) ENDIF - FMT(vowel/@_3) + ChangePhoneme(@) endphoneme diff --git a/phsource/ph_german b/phsource/ph_german index 1e1e1b73..8699b23e 100644 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -342,12 +342,12 @@ endphoneme -phoneme iR +phoneme iR // TEST "vier" = [f'iR] not successful vowel starttype #i endtype #@ ipa iɐ flag1 - length 180 - FMT(vdiph2/i@_2) + length 230 + FMT(vdiph2/i@_3) endphoneme diff --git a/phsource/ph_indonesian b/phsource/ph_indonesian index 38dee3a6..d45adec2 100644 --- a/phsource/ph_indonesian +++ b/phsource/ph_indonesian @@ -3,6 +3,9 @@ phoneme @ vowel starttype #@ endtype #@ unstressed length 140 + IF prevPh(@) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/@_low) endphoneme @@ -11,6 +14,9 @@ endphoneme phoneme a vowel starttype #a endtype #a length 180 + IF prevPh(a) THEN + InsertPhoneme(_|) + ENDIF ChangeIfUnstressed(a/) FMT(vowel/a) endphoneme @@ -19,6 +25,9 @@ endphoneme phoneme E vowel starttype #e endtype #e length 180 + IF prevPh(#e) THEN + InsertPhoneme(_|) + ENDIF ChangeIfUnstressed(@) FMT(vowel/e_mid) endphoneme @@ -26,6 +35,9 @@ endphoneme phoneme E2 // as [E] but don't reduce to [@] vowel starttype #e endtype #e length 180 + IF prevPh(#e) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/e_mid) endphoneme @@ -33,6 +45,9 @@ endphoneme phoneme e vowel starttype #e endtype #e length 180 + IF prevPh(#e) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/e) endphoneme @@ -40,7 +55,9 @@ endphoneme phoneme i vowel starttype #i endtype #i length 180 - IfNextVowelAppend(;) + IF prevPh(i) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/i_6) endphoneme @@ -48,6 +65,9 @@ endphoneme phoneme O vowel starttype #o endtype #o length 180 + IF prevPh(#o) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/oo) endphoneme @@ -55,6 +75,9 @@ endphoneme phoneme o vowel starttype #o endtype #o length 180 + IF prevPh(#o) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/o) endphoneme @@ -62,6 +85,9 @@ endphoneme phoneme u vowel starttype #u endtype #u length 180 + IF prevPh(u) THEN + InsertPhoneme(_|) + ENDIF FMT(vowel/u) endphoneme @@ -69,6 +95,12 @@ endphoneme phoneme aI vowel starttype #a endtype #i length 240 + IF prevPh(isVowel) THEN + InsertPhoneme(_|) + ENDIF + IF nextPh(isVowel) THEN + AppendPhoneme(_|) + ENDIF FMT(vdiph/ai) endphoneme @@ -78,9 +110,27 @@ phoneme eI FMT(vdiph/eei_2) endphoneme +phoneme OI + vowel starttype #o endtype #i + length 240 + IF prevPh(isVowel) THEN + InsertPhoneme(_|) + ENDIF + IF nextPh(isVowel) THEN + AppendPhoneme(_|) + ENDIF + FMT(vdiph/ooi) +endphoneme + phoneme aU vowel starttype #a endtype #u length 240 + IF prevPh(isVowel) THEN + InsertPhoneme(_|) + ENDIF + IF nextPh(isVowel) THEN + AppendPhoneme(_|) + ENDIF FMT(vdiph/au_4) endphoneme diff --git a/phsource/ph_irish b/phsource/ph_irish index f1fcca86..a7d0eb3c 100644 --- a/phsource/ph_irish +++ b/phsource/ph_irish @@ -6,17 +6,17 @@ phoneme @ // Schwa, but always unstressed vowel starttype #@ endtype #@ unstressed - length 100 + length 110 IF nextPh(i:) THEN - Length 70 + Length 80 FMT(vwl_af/r@) ENDIF IF nextPh(I) THEN - Length 70 + Length 80 FMT(vwl_af/r@) ENDIF IF nextPh(e:) THEN - Length 70 + Length 80 FMT(vwl_af/r@) ENDIF FMT(vwl_af/@) @@ -25,14 +25,14 @@ endphoneme phoneme @/ vowel starttype #@ endtype #@ - length 120 + length 130 FMT(vowel/@) endphoneme phoneme a vowel starttype #a endtype #a - length 150 + length 165 FMT(vowel/a_4) endphoneme @@ -40,7 +40,7 @@ endphoneme phoneme a# vowel starttype #@ endtype #@ ipa ɐ - length 120 + length 130 ChangeIfStressed(a) FMT(vowel/a#_3) endphoneme @@ -48,13 +48,13 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 140 + length 155 FMT(vowel/e_mid) endphoneme phoneme E# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(E) ChangePhoneme(@/) endphoneme @@ -62,27 +62,27 @@ endphoneme phoneme I vowel starttype #i endtype #i - length 120 + length 130 FMT(vowel/ii_2) endphoneme phoneme i // non syllabic i for end of words vowel starttype #i endtype #i ipa iU+032F - length 40 + length 45 FMT(vowel/ii_7) endphoneme phoneme O vowel starttype #a endtype #@ - length 140 + length 155 FMT(vowel/V_4) endphoneme phoneme O# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(O) ChangePhoneme(a#) endphoneme @@ -90,13 +90,13 @@ endphoneme phoneme U vowel starttype #u endtype #u - length 140 + length 155 FMT(vowel/uu) endphoneme phoneme U# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(U) ChangePhoneme(@/) endphoneme @@ -104,20 +104,20 @@ endphoneme phoneme u1 vowel starttype #u endtype #u ipa uU+0306 - length 50 + length 55 FMT(vowel/u) endphoneme phoneme 0 vowel starttype #a endtype #a - length 180 + length 195 ipa A FMT(vowel/aa_8) endphoneme phoneme 0# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(0) ChangePhoneme(a#) endphoneme @@ -125,7 +125,7 @@ endphoneme phoneme o: vowel starttype #o endtype #o - length 190 + length 210 FMT(vowel/o) endphoneme @@ -134,21 +134,21 @@ endphoneme phoneme A: vowel starttype #a endtype #a - length 200 + length 220 FMT(vowel/aa_2) endphoneme phoneme e: vowel starttype #e endtype #e - length 210 + length 230 FMT(vowel/e) endphoneme phoneme i: vowel starttype #i endtype #i - length 210 + length 230 FMT(vowel/i) endphoneme @@ -157,7 +157,7 @@ endphoneme phoneme u: vowel starttype #u endtype #u - length 210 + length 230 FMT(vowel/u_bck) endphoneme @@ -167,44 +167,44 @@ endphoneme phoneme @U vowel starttype #@ endtype #u - length 240 + length 260 FMT(vdiph/@u_3) endphoneme phoneme i@ vowel starttype #i endtype #@ - length 240 + length 260 FMT(vdiph2/i@) endphoneme phoneme u@ vowel starttype #u endtype #@ - length 240 + length 260 FMT(vdiph2/u@) endphoneme phoneme aI vowel starttype #a endtype #i - length 250 + length 275 FMT(vdiph/ai) endphoneme phoneme aI# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(aI) ChangePhoneme(a#) endphoneme phoneme aU vowel starttype #a endtype #u - length 270 + length 300 FMT(vdiph/au_4) endphoneme phoneme aU# vowel starttype #@ endtype #@ - length 120 + length 130 ChangeIfStressed(aU) FMT(vdiph/au_4) endphoneme @@ -237,3 +237,7 @@ phoneme ; // linking j, used between (i) vowels and a following vowel ENDIF endphoneme + +phoneme eI + import_phoneme en/eI +endphoneme diff --git a/phsource/ph_portugal b/phsource/ph_portugal index a31660c4..37f51ed7 100644 --- a/phsource/ph_portugal +++ b/phsource/ph_portugal @@ -133,6 +133,18 @@ phoneme w endphoneme +phoneme x // [r] for Portugal + liquid + trill + ipa ʁ + lengthmod 7 + Vowelin f1=0 f2=1500 -400 400 f3=-400 80 + IF nextPh(isNotVowel) THEN + ChangePhoneme(r/) + ENDIF + FMT(vwl_fr/@R) addWav(r3/rx, 120) +endphoneme + phoneme R // for Portugal this is same the as [r] import_phoneme pt/r diff --git a/phsource/ph_sinhala b/phsource/ph_sinhala index d606b32e..cee7ba6f 100644 --- a/phsource/ph_sinhala +++ b/phsource/ph_sinhala @@ -6,7 +6,7 @@ phoneme @ vowel starttype #a endtype #a - length 130 + length 150 FMT(vowel/@_low) endphoneme @@ -14,7 +14,7 @@ endphoneme phoneme a vowel long starttype #a endtype #a ipa ɐ - length 130 + length 150 ChangeIfNotStressed(@) FMT(vowel/a#_2) endphoneme @@ -29,42 +29,42 @@ endphoneme phoneme & vowel starttype #e endtype #e - length 130 + length 150 FMT(vowel/ee_6) endphoneme phoneme &: vowel starttype #e endtype #e - length 270 + length 300 FMT(vowel/ee_6) endphoneme phoneme e vowel starttype #e endtype #e - length 130 + length 150 FMT(vowel/e_mid) endphoneme phoneme e: vowel starttype #e endtype #e - length 270 + length 300 FMT(vowel/e_mid2) endphoneme phoneme i vowel starttype #i endtype #i - length 130 + length 150 FMT(vowel/i_6) endphoneme phoneme i: vowel starttype #i endtype #i - length 270 + length 300 FMT(vowel/i) endphoneme @@ -72,7 +72,7 @@ endphoneme phoneme o vowel starttype #o endtype #o - length 130 + length 150 FMT(vowel/oo_1) endphoneme @@ -86,13 +86,13 @@ endphoneme phoneme u vowel starttype #u endtype #u - length 110 + length 130 FMT(vowel/u_6) endphoneme phoneme u: vowel starttype #u endtype #u - length 280 + length 300 FMT(vowel/u_6) endphoneme @@ -100,13 +100,13 @@ endphoneme phoneme aI vowel long starttype #a endtype #i - length 280 + length 300 FMT(vdiph/ai_8) endphoneme phoneme aU vowel long starttype #a endtype #u - length 270 + length 300 FMT(vdiph/au) endphoneme @@ -130,21 +130,26 @@ endphoneme // temporary, map [n#] etc. to [n] etc. phoneme m# - import_phoneme base/m + ipa U+1D50 + CALL base/m endphoneme phoneme n# - import_phoneme base/n + ipa U+207F + CALL base/n endphoneme phoneme n.# - import_phoneme base/n. + ipa U+1DAF + CALL base/n. endphoneme phoneme n^# - import_phoneme base/n^ + ipa U+1DAE + CALL base/n^ endphoneme phoneme N# - import_phoneme base/N + ipa U+1D51 + CALL base/N endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 86c6cbec..a7587850 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1864,6 +1864,20 @@ include ph_georgian phonemetable fa base include ph_farsi +// experimental + +phonemetable ko base +include ph_korean + +phonemetable kl base +include ph_greenlandic + +phonemetable am base +include ph_amhari + +phonemetable si hi +include ph_sinhala + //************************************************************************************** // The following lines are experimental, for future additions. @@ -1882,61 +1896,49 @@ include ph_kinyarwanda //phonemetable mn base //include ph_mongolian -phonemetable prs base -include ph_dari +//phonemetable prs base +//include ph_dari phonemetable sl sk include ph_slovenian -phonemetable gd base -include ph_s_gaelic +//phonemetable gd base +//include ph_s_gaelic -phonemetable nso base -include ph_northern-sotho +//phonemetable nso base +//include ph_northern-sotho -phonemetable ht fr -include ph_haitian +//phonemetable ht fr +//include ph_haitian -phonemetable az tr -include ph_azerbaijani +//phonemetable az tr +//include ph_azerbaijani -phonemetable ak base -include ph_akan +//phonemetable ak base +//include ph_akan -phonemetable am base -include ph_amhari +//phonemetable wo base +//include ph_wolof -phonemetable wo base -include ph_wolof +//phonemetable dv hi +//include ph_divehi -phonemetable dv hi -include ph_divehi +//phonemetable te hi +//include ph_telugu -phonemetable te hi -include ph_telugu - -phonemetable si hi -include ph_sinhala - -phonemetable tn base -include ph_setswana +//phonemetable tn base +//include ph_setswana -phonemetable mt base -include ph_maltese +//phonemetable mt base +//include ph_maltese -phonemetable bo hi -include ph_tibetan +//phonemetable bo hi +//include ph_tibetan -phonemetable kk base -include ph_kazakh +//phonemetable kk base +//include ph_kazakh -phonemetable tt base -include ph_tatar - -phonemetable ko base -include ph_korean - -phonemetable kl base -include ph_greenlandic +//phonemetable tt base +//include ph_tatar diff --git a/phsource/vdiph2/i@_3 b/phsource/vdiph2/i@_3 index 32266d60..f2b7531a 100644 Binary files a/phsource/vdiph2/i@_3 and b/phsource/vdiph2/i@_3 differ diff --git a/phsource/vowel/a b/phsource/vowel/a index 7c362b12..d4c64565 100644 Binary files a/phsource/vowel/a and b/phsource/vowel/a differ diff --git a/phsource/vowel/oo_5 b/phsource/vowel/oo_5 index ad18bde5..98b4651a 100644 Binary files a/phsource/vowel/oo_5 and b/phsource/vowel/oo_5 differ diff --git a/phsource/vwl_fr/trr b/phsource/vwl_fr/trr index af1e45af..7555690a 100644 Binary files a/phsource/vwl_fr/trr and b/phsource/vwl_fr/trr differ diff --git a/platforms/big_endian/README b/platforms/big_endian/README index 7889b414..3fbc16b9 100644 --- a/platforms/big_endian/README +++ b/platforms/big_endian/README @@ -14,5 +14,5 @@ The 'phondata-manifest' file is produced by espeakedit when it compiles the phoneme data. If it is not present here, find it in the espeak-data directory. NOTE: -The format of espeak-data/phondata changed in eSpeak version 1.43. The utility +The format of espeak-data/phondata changed in eSpeak version 1.47. The utility has been modified for this. [jonsd] diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 938d61a4..439e913b 100644 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -1,8 +1,8 @@ -; This is the script for "Inno Setup 5" to create the setup_espeak.exe installer for Windows +; This is the script for "Inno Setup 5" to create the setup_espeak.exe installer for Windows [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.47 +AppVerName=eSpeak version 1.47.01 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -48,18 +48,24 @@ Root: HKLM; Subkey: "Software\Microsoft\Speech\PhoneConverters\Tokens\eSpeak"; F [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" +Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl" Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" +Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" Name: "de"; MessagesFile: "compiler:Languages\German.isl" Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "fa"; MessagesFile: "compiler:Languages\Farsi.isl" Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" Name: "fr"; MessagesFile: "compiler:Languages\French.isl" +Name: "hi"; MessagesFile: "compiler:Languages\Hindi.islu" Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl" Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" -Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl" +Name: "ka"; MessagesFile: "compiler:Languages\Georgian.islu" +Name: "lv"; MessagesFile: "compiler:Languages\Latvian.isl" +Name: "ne"; MessagesFile: "compiler:Languages\Nepali.islu" Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" @@ -67,9 +73,9 @@ Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" -Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl" Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" +Name: "vi"; MessagesFile: "compiler:Languages\Vietnamese.isl" Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl" [CustomMessages] @@ -77,26 +83,29 @@ v1=Select which voices to install v2=or press Enter to accept defaults v3=Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+f3 -bs.v1=Odaberite jezik kojeg želite instalirati +bs.v1=Odaberite jezik kojeg želite instalirati bs.v2=ili pritisnite Enter za prihvat zadanih. -bs.v3=Upišite, npr. bs (za Bosanski) ili s varjantom: bs+f3 +bs.v3=Upišite, npr. bs (za Bosanski) ili s varjantom: bs+f3 -fr.v1=Sélectionnez les voix à installer -fr.v2=ou appuyez sur Entrée pour accepter les valeurs par défaut. -fr.v3=Entrez le nom des voix, ex : (pour le Français) fr, ou avec une variante ex : fr+f3 +fr.v1=Sélectionnez les voix à installer +fr.v2=ou appuyez sur Entrée pour accepter les valeurs par défaut. +fr.v3=Entrez le nom des voix, ex : (pour le Français) fr, ou avec une variante ex : fr+f3 -hr.v1=Odaberite jezik kojeg želite instalirati +hr.v1=Odaberite jezik kojeg želite instalirati hr.v2=ili pritisnite Enter za prihvat zadanih. -hr.v3=Upišite, npr. hr (za Hrvatski) ili s varjantom: hr+f3 +hr.v3=Upišite, npr. hr (za Hrvatski) ili s varjantom: hr+f3 pt.v1=Seleccione as vozes que pretende instalar pt.v2=ou precione enter para aceitar as predefinidas. pt.v3=Introduza os nomes das vozes, ex: (Brazil) pt (ou Portugal) pt-pt, ou com outras caracter?sticas, ex: pt+f3 -sr.v1=Molimo vas da odaberete glasove, koje želite da instalirate +sr.v1=Molimo vas da odaberete glasove, koje želite da instalirate sr.v2=ili pritisnite Enter za instalaciju podrazumevanih glasova. -sr.v3=Da odaberete glas, unesite ime glasa kojeg želite instalirati, na primer sr, ili sr+f3 +sr.v3=Da odaberete glas, unesite ime glasa kojeg želite instalirati, na primer sr, ili sr+f3 +ne.v1=भित्र्याउन चाहेको आवाजको चयन गर्नु होस् । +ne.v2=अथवा यसमा निर्धारण गरिएको आवाजलाई नै चयन गर्ने हो भने ईन्टर कुञ्जीलाई दबाउनु होस् । +ne.v3=आवाजको नाम प्रविष्टी गर्नु होस् , जस्तै: नेपालीका लागि ne, अथवा स्वरको पनि चयन गर्ने हो भने ne+f3 [Code] var diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index de906cce..f2dee7df 100644 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,57 +1,58 @@ - -[Setup] -AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.46.02 -DefaultDirName={pf}\eSpeak -DefaultGroupName=eSpeak -OutputBaseFilename=setup_espeakedit -Compression=lzma -SolidCompression=yes -DirExistsWarning=no -ShowLanguageDialog=auto - -[Icons] -Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized -Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}" - -[InstallDelete] -Type: filesandordirs; Name: "{app}\phsource\vowelcharts" - - -[Files] -Source: "espeakedit.exe"; DestDir: "{app}" -;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs -Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs -Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs -Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs -Source: "License.txt"; DestDir: "{app}"; -;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme - - -[Languages] -Name: "en"; MessagesFile: "compiler:Default.isl" -Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" -Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" -Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" -Name: "de"; MessagesFile: "compiler:Languages\German.isl" -Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" -Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" -Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" -Name: "fr"; MessagesFile: "compiler:Languages\French.isl" -Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" -Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" -Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl" -Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" -Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl" -Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" -Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" -Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" -Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" -Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" -Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" -Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" -;Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl" -Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" -Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" -Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl" - + +[Setup] +AppName=eSpeakEdit +AppVerName=eSpeakEdit version 1.47.01 +DefaultDirName={pf}\eSpeak +DefaultGroupName=eSpeak +OutputBaseFilename=setup_espeakedit +Compression=lzma +SolidCompression=yes +DirExistsWarning=no +ShowLanguageDialog=auto + +[Icons] +Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized +Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}" + +[InstallDelete] +Type: filesandordirs; Name: "{app}\phsource\vowelcharts" +Type: filesandordirs; Name: "{app}\espeakedit" + + +[Files] +Source: "espeakedit.exe"; DestDir: "{app}" +;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs +Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs +Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs +Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs +Source: "License.txt"; DestDir: "{app}"; +;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme + + +[Languages] +Name: "en"; MessagesFile: "compiler:Default.isl" +Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" +Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" +Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" +Name: "de"; MessagesFile: "compiler:Languages\German.isl" +Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" +Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" +Name: "fr"; MessagesFile: "compiler:Languages\French.isl" +Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" +Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" +Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl" +Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" +Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl" +Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" +Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" +Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" +Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" +Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" +Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" +Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" +;Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl" +Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" +Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" +Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl" + diff --git a/platforms/windows/windows_cmd/src/speech.h b/platforms/windows/windows_cmd/src/speech.h index 5e1fd383..a5e7d7a0 100644 --- a/platforms/windows/windows_cmd/src/speech.h +++ b/platforms/windows/windows_cmd/src/speech.h @@ -30,6 +30,7 @@ #define __WIN32__ #define NEED_WCSTOF #define NEED_GETOPT +#define USE_MBROLA_LIB #define PATHSEP '\\' #define USE_PORTAUDIO diff --git a/src/Makefile.am b/src/Makefile.am index 5e30013f..cf919be6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,7 +6,7 @@ DATADIR=${PREFIX}/share/espeak-data # remove -fno-exceptions if it causes problems with stdio library on some platforms (ARM) -RELEASE = 1.46 +RELEASE = 1.47 SPEAK = speak ESPEAK = espeak ESPEAKEDIT = espeakedit diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 3fe9a2ed..82eca4d5 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -104,9 +104,8 @@ static keywtab_t k_conditions[] = { {"next2PhW", tWHICH_PHONEME, 6}, {"nextVowel",tWHICH_PHONEME, 7}, {"prevVowel",tWHICH_PHONEME, 8}, -// {"next2PhW", tWHICH_PHONEME, 0x800}, - -// {"numVowels", tTEST, 0x000}, + {"next3PhW", tWHICH_PHONEME, 9}, + {"prev2PhW", tWHICH_PHONEME, 10}, {"PreVoicing", tTEST, 0xf01}, {"KlattSynth", tTEST, 0xf02}, @@ -1051,8 +1050,13 @@ static wxString CompileAllDictionaries() fclose(f_in); } - LoadVoice(voicename,0); - + if(LoadVoice(voicename,1) == NULL) + { + wxLogError(wxString::Format(_T("Can't find voice '%s' for dictionary '%s'"), wxString(voicename, wxConvLocal).c_str(), dictstr.c_str())); + report = report + dictstr + _T(" No Voice, "); + errors ++; + } + else if((err = CompileDictionary(path_dsource, dictname,log,NULL,0)) > 0) { report = report + dictstr + wxString::Format(_T(" %d, "),err); @@ -2742,6 +2746,7 @@ int CompilePhoneme(int compile_phoneme) int count; int c; char *p; + int vowel_length_factor = 100; // for testing char number_buf[12]; char ipa_buf[N_ITEM_STRING+1]; PHONEME_TAB phoneme_out2; @@ -2844,6 +2849,11 @@ int CompilePhoneme(int compile_phoneme) case i_SET_LENGTH: value = NextItemMax(511); + if(phoneme_out->type == phVOWEL) + { + value = (value * vowel_length_factor)/100; + } + if(after_if == 0) { phoneme_out->std_length = value/2; diff --git a/src/compiledict.cpp b/src/compiledict.cpp index f360a084..eb4e1409 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -470,12 +470,12 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) } ix = 0; - if(isdigit(*p)) + if(IsDigit09(*p)) { ix += (*p-'0'); p++; } - if(isdigit(*p)) + if(IsDigit09(*p)) { ix = ix*10 + (*p-'0'); p++; @@ -542,7 +542,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) case 1: if((c == '-') && multiple_words) { - if(isdigit(word[0])) + if(IsDigit09(word[0])) { multiple_numeric_hyphen = 1; } @@ -1156,7 +1156,7 @@ static void copy_rule_string(char *string, int &state) sxflags |= SUFX_M; break; default: - if(isdigit(c)) + if(IsDigit09(c)) value = (value*10) + (c - '0'); break; } @@ -1575,7 +1575,7 @@ static int compile_lettergroup(char *input, FILE *f_out) char item_length[N_LETTERGP_ITEMS]; p = input; - if(!isdigit(p[0]) || !isdigit(p[1])) + if(!IsDigit09(p[0]) || !IsDigit09(p[1])) { fprintf(f_log,"%5d: Expected 2 digits after '.L'\n",linenum); error_count++; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 8553c39c..08463906 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -611,7 +611,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int break; // # is subscript-h, but only for consonants // ignore digits after the first character - if(!first && isdigit(c)) + if(!first && IsDigit09(c)) continue; if((c >= 0x20) && (c < 128)) @@ -1499,8 +1499,8 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, else { // no long vowels or consonant clusters - if(vowel_count > 4) - stressed_syllable = vowel_count - 3; + if(vowel_count > 5) + stressed_syllable = vowel_count - 3; // more than 4 syllables else stressed_syllable = vowel_count - 1; } @@ -2698,7 +2698,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c { if(tr->langopts.alt_alphabet == alphabet->offset) { - sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); + sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(tr->langopts.alt_alphabet_lang)); return(0); } if(alphabet->flags & AL_WORDS) @@ -2988,6 +2988,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor const char *word_end; const char *word1; int wflags = 0; + int lookup_symbol; char word_buf[N_WORD_BYTES+1]; char dict_flags_buf[80]; @@ -2996,6 +2997,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor wflags = wtab->flags; } + lookup_symbol = flags[1] & FLAG_LOOKUP_SYMBOL; word1 = word; if(tr->transpose_min > 0) { @@ -3182,9 +3184,9 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor continue; } - if((dictionary_flags2 & FLAG_ATEND) && (word_end < translator->clause_end)) + if((dictionary_flags2 & FLAG_ATEND) && (word_end < translator->clause_end) && (lookup_symbol==0)) { - // only use this pronunciation if it's the last word of the clause + // only use this pronunciation if it's the last word of the clause, or called from Lookup() continue; } @@ -3196,7 +3198,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if((dictionary_flags2 & FLAG_SENTENCE) && !(translator->clause_terminator & CLAUSE_BIT_SENTENCE)) { - // only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :} + // only if this clause is a sentence , i.e. terminator is {. ? !} not {, : :} continue; } @@ -3364,7 +3366,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f if(((c = *word1++)==0) || (c == ' ')) break; - if((c=='.') && (length > 0) && (isdigit(word[length-1]))) + if((c=='.') && (length > 0) && (IsDigit09(word[length-1]))) break; // needed for lang=hu, eg. "december 2.-ig" word[length] = c; @@ -3475,7 +3477,8 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f int Lookup(Translator *tr, const char *word, char *ph_out) {//=================================================== unsigned int flags[2]; - flags[0] = flags[1] = 0; + flags[0] = 0; + flags[1] = FLAG_LOOKUP_SYMBOL; char *word1 = (char *)word; return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL)); } diff --git a/src/espeak.cpp b/src/espeak.cpp index f9669a9e..5fd81d45 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -128,13 +128,16 @@ void DisplayVoices(FILE *f_out, char *language) const char *p; int len; int count; + int c; + int j; const espeak_VOICE *v; const char *lang_name; char age_buf[12]; + char buf[80]; const espeak_VOICE **voices; espeak_VOICE voice_select; - static char genders[4] = {' ','M','F',' '}; + static char genders[4] = {'-','M','F','-'}; if((language != NULL) && (language[0] != 0)) { @@ -150,7 +153,7 @@ void DisplayVoices(FILE *f_out, char *language) voices = espeak_ListVoices(NULL); } - fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); + fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); for(ix=0; (v = voices[ix]) != NULL; ix++) { @@ -168,8 +171,16 @@ void DisplayVoices(FILE *f_out, char *language) if(count==0) { - fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", - p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); + for(j=0; j < sizeof(buf); j++) + { + // replace spaces in the name + if((c = v->name[j]) == ' ') + c = '_'; + if((buf[j] = c) == 0) + break; + } + fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", + p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); } else { diff --git a/src/numbers.cpp b/src/numbers.cpp index ae84f3ca..de332e44 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -608,7 +608,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) char ph_buf[80]; char ph_buf2[80]; char ph_alphabet[80]; - char hexbuf[6]; + char hexbuf[12]; static char pause_string[] = {phonPAUSE, 0}; ph_buf[0] = 0; @@ -695,6 +695,9 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(ph_buf[0] == 0) { + if((al_offset != 0) && (al_offset == translator->langopts.alt_alphabet)) + language = translator->langopts.alt_alphabet_lang; + else if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) language = alphabet->language; else @@ -797,7 +800,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) len = strlen(phonemes); - if(tr->langopts.accents & 2) + if(tr->langopts.accents & 2) // 'capital' before or after the word ? sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,ph_buf,capital); else sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,capital,ph_buf); // the 0xff marker will be removed or replaced in SetSpellingStress() @@ -877,6 +880,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) // Numbers static char ph_ordinal2[12]; +static char ph_ordinal2x[12]; static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman) @@ -981,7 +985,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) flags[0] = 0; flags[1] = 0; - if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || isdigit(word[-2])) + if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2])) return(0); // not '2xx' word_start = word; @@ -1020,7 +1024,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) n_digits++; } - if(isdigit(word[0])) + if(IsDigit09(word[0])) return(0); // eg. 'xx2' acc += prev; @@ -1303,7 +1307,11 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out if(control & 4) { sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits - found = Lookup(tr, string, ph_digits); + if((found = Lookup(tr, string, ph_digits)) != 0) + { + if(ph_ordinal2x[0] != 0) + strcpy(ph_ordinal, ph_ordinal2x); // alternate pronunciation (lang=an) + } } if(found == 0) { @@ -1363,8 +1371,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out else { - if((is_ordinal) && - ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) + if(is_ordinal) { sprintf(string,"_%dX%c", tens, ord_type); if(Lookup(tr, string, ph_tens) != 0) @@ -1458,7 +1465,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out { Lookup(tr, "_0and", ph_and); - if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) + if((is_ordinal) && (tr->langopts.numbers2 & NUM2_ORDINAL_NO_AND)) ph_and[0] = 0; if(tr->langopts.numbers & NUM_SWAP_TENS) @@ -1607,9 +1614,9 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } if(tr->langopts.numbers2 & 0x200) - sprintf(ph_thousands,"%s%s",ph_10T,ph_digits); // say "thousands" before its number, not after + sprintf(ph_thousands,"%s%c%s%c",ph_10T,phonEND_WORD,ph_digits,phonEND_WORD); // say "thousands" before its number, not after else - sprintf(ph_thousands,"%s%s",ph_digits,ph_10T); + sprintf(ph_thousands,"%s%c%s%c",ph_digits,phonEND_WORD,ph_10T,phonEND_WORD); hundreds %= 10; if((hundreds == 0) && (say_zero_hundred == 0)) @@ -1742,7 +1749,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } } - sprintf(ph_out,"%s%s%s",buf1,ph_hundred_and,buf2); + sprintf(ph_out,"%s%s%c%s",buf1,ph_hundred_and,phonEND_WORD,buf2); return(0); } // end of LookupNum3 @@ -1753,12 +1760,12 @@ bool CheckThousandsGroup(char *word, int group_len) // Is this a group of 3 digits which looks like a thousands group? int ix; - if(isdigit(word[group_len]) || isdigit(-1)) + if(IsDigit09(word[group_len]) || IsDigit09(-1)) return(false); for(ix=0; ix < group_len; ix++) { - if(!isdigit(word[ix])) + if(!IsDigit09(word[ix])) return(false); } return(true); @@ -1790,6 +1797,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int suffix_ix; int skipwords = 0; int group_len; + int len; char *p; char string[32]; // for looking up entries in **_list char buf1[100]; @@ -1808,7 +1816,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned digit_lookup = buf_digit_lookup; number_control = control; - for(ix=0; isdigit(word[ix]); ix++) ; + for(ix=0; IsDigit09(word[ix]); ix++) ; n_digits = ix; value = this_value = atoi(word); @@ -1817,14 +1825,14 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned group_len = 4; // is there a previous thousands part (as a previous "word") ? - if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3])) + if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && IsDigit09(word[-3])) { prev_thousands = 1; } else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE)) { // thousands groups can be separated by spaces - if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && isdigit(word[-2])) + if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && IsDigit09(word[-2])) { prev_thousands = 1; } @@ -1846,7 +1854,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } } - if((word[ix] == '.') && !isdigit(word[ix+1]) && !isdigit(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE)) + if((word[ix] == '.') && !IsDigit09(word[ix+1]) && !IsDigit09(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE)) { // remove dot unless followed by another number word[ix] = 0; @@ -1875,7 +1883,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { ordinal = 2; } - else if(!isdigit(suffix[0])) // not _#9 (tab) + else if(!IsDigit09(suffix[0])) // not _#9 (tab) { sprintf(string,"_#%s",suffix); if(Lookup(tr, string, ph_ordinal2)) @@ -1884,6 +1892,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned ordinal = 2; flags[0] |= FLAG_SKIPWORDS; skipwords = 1; + sprintf(string,"_x#%s",suffix); + Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation? } } } @@ -1898,7 +1908,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep)) { - if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7])) + if((n_digits == 2) && (word[3] == ':') && IsDigit09(word[5]) && isspace(word[7])) { // looks like a time 02:30, omit the leading zero } @@ -1967,7 +1977,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } } - if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1])) + if((word[n_digits] == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1])) { // this "word" ends with a decimal point Lookup(tr, "_dpt", ph_append); @@ -2012,8 +2022,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned char *p2; // look for combinations of the number with the next word p = word; - while(isdigit(p[1])) p++; // just use the last digit - if(isdigit(p[-1])) + while(IsDigit09(p[1])) p++; // just use the last digit + if(IsDigit09(p[-1])) { p2 = p - 1; if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits @@ -2066,9 +2076,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal | decimal_point); if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200)) - sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_append,ph_buf2,ph_buf); // say "thousands" before its number + sprintf(ph_out,"%s%s%c%s%s",ph_zeros,ph_append,phonEND_WORD,ph_buf2,ph_buf); // say "thousands" before its number else - sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_buf2,ph_buf,ph_append); + sprintf(ph_out,"%s%s%s%c%s",ph_zeros,ph_buf2,ph_buf,phonEND_WORD,ph_append); while(decimal_point) @@ -2076,7 +2086,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned n_digits++; decimal_count = 0; - while(isdigit(word[n_digits+decimal_count])) + while(IsDigit09(word[n_digits+decimal_count])) decimal_count++; // if(decimal_count > 1) @@ -2095,7 +2105,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned decimal_count--; n_digits++; } - if((decimal_count <= max_decimal_count) && isdigit(word[n_digits])) + if((decimal_count <= max_decimal_count) && IsDigit09(word[n_digits])) { LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0); strcat(ph_out,buf1); @@ -2146,19 +2156,20 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } } - while(isdigit(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10))) + while(IsDigit09(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10))) { // speak any remaining decimal fraction digits individually value = word[n_digits++] - '0'; LookupNum2(tr, value, 2, buf1); - strcat(ph_out,buf1); + len = strlen(ph_out); + sprintf(&ph_out[len],"%c%s", phonEND_WORD, buf1); } // something after the decimal part ? if(Lookup(tr, "_dpt2", buf1)) strcat(ph_out,buf1); - if((c == tr->langopts.decimal_sep) && isdigit(word[n_digits+1])) + if((c == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1])) { Lookup(tr, "_dpt", buf1); strcat(ph_out,buf1); @@ -2178,7 +2189,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) utf8_in(&next_char,p); - if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) + if(!iswalpha(next_char) && (thousands_exact==0)) +// if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. } diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index cd7e478c..3905865f 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -124,6 +124,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) int alternative; int delete_count; int word_start; + int inserted; PHONEME_DATA phdata; int n_ph_list3; @@ -341,9 +342,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { plist3 = &ph_list3[j]; - if(plist3->sourceix != 0) - word_start = j; - + inserted = 0; if(insert_ph != 0) { // we have a (linking) phoneme which we need to insert here @@ -374,10 +373,14 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) ph = phoneme_tab[insert_ph]; plist3->ph = ph; insert_ph = 0; + inserted = 1; // don't insert the same phoneme repeatedly } else { // otherwise get the next phoneme from the list + if(plist3->sourceix != 0) + word_start = j; + ph = phoneme_tab[plist3->phcode]; plist3[0].ph = ph; @@ -394,7 +397,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata); - if((alternative = phdata.pd_param[pd_INSERTPHONEME]) > 0) + if(((alternative = phdata.pd_param[pd_INSERTPHONEME]) > 0) && (inserted == 0)) { // PROBLEM: if we insert a phoneme before a vowel then we loose the stress. PHONEME_TAB *ph2; diff --git a/src/readclause.cpp b/src/readclause.cpp index 472aeb69..48eca79a 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -1292,10 +1292,10 @@ static int attrnumber(const wchar_t *pw, int default_value, int type) {//================================================================== int value = 0; - if((pw == NULL) || !isdigit(*pw)) + if((pw == NULL) || !IsDigit09(*pw)) return(default_value); - while(isdigit(*pw)) + while(IsDigit09(*pw)) { value = value*10 + *pw++ - '0'; } diff --git a/src/speak.cpp b/src/speak.cpp index 7ce8e70a..e1fa4b55 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -160,13 +160,16 @@ void DisplayVoices(FILE *f_out, char *language) const char *p; int len; int count; + int c; + int j; const espeak_VOICE *v; const char *lang_name; char age_buf[12]; + char buf[80]; const espeak_VOICE **voices; espeak_VOICE voice_select; - static char genders[4] = {' ','M','F',' '}; + static char genders[4] = {'-','M','F','-'}; if((language != NULL) && (language[0] != 0)) { @@ -182,7 +185,7 @@ void DisplayVoices(FILE *f_out, char *language) voices = espeak_ListVoices(NULL); } - fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); + fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); for(ix=0; (v = voices[ix]) != NULL; ix++) { @@ -200,8 +203,16 @@ void DisplayVoices(FILE *f_out, char *language) if(count==0) { - fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", - p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); + for(j=0; j < sizeof(buf); j++) + { + // replace spaces in the name + if((c = v->name[j]) == ' ') + c = '_'; + if((buf[j] = c) == 0) + break; + } + fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", + p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); } else { @@ -750,11 +761,22 @@ int main (int argc, char **argv) init_path(argv[0],data_path); initialise(); + if(voicename[0] == 0) + strcpy(voicename,"default"); + + if(SetVoiceByName(voicename) != EE_OK) + { + memset(&voice_select,0,sizeof(voice_select)); + voice_select.languages = voicename; + if(SetVoiceByProperties(&voice_select) != EE_OK) + { + fprintf(stderr,"%svoice '%s'\n",err_load,voicename); + exit(2); + } + } if(flag_compile) { - LoadVoice(voicename,5); - #ifdef PLATFORM_DOS char path_dsource[sizeof(path_home)+20]; strcpy(path_dsource,path_home); @@ -776,20 +798,6 @@ int main (int argc, char **argv) } - if(voicename[0] == 0) - strcpy(voicename,"default"); - - if(SetVoiceByName(voicename) != EE_OK) - { - memset(&voice_select,0,sizeof(voice_select)); - voice_select.languages = voicename; - if(SetVoiceByProperties(&voice_select) != EE_OK) - { - fprintf(stderr,"%svoice '%s'\n",err_load,voicename); - exit(2); - } - } - SetParameter(espeakRATE,speed,0); SetParameter(espeakVOLUME,amp,0); SetParameter(espeakCAPITALS,option_capitals,0); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 1b843f84..8d47553c 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.53 16.Mar.13"; -const int version_phdata = 0x014640; +const char *version_string = "1.47.03c 23.Mar.13"; +const int version_phdata = 0x014701; int option_device_number = -1; FILE *f_logespeak = NULL; @@ -615,6 +615,7 @@ static int CountVowelPosition(PHONEME_LIST *plist) static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, USHORT *p_prog, WORD_PH_DATA *worddata) {//======================================================================================================================== int which; + int ix; unsigned int data; int instn; int instn2; @@ -705,6 +706,21 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, return(false); // no previous vowel plist = &(worddata->prev_vowel); break; + + case 9: // next3PhW + for(ix=1; ix<=3; ix++) + { + if(plist[ix].sourceix) + return(false); + } + plist = &plist[3]; + break; + + case 10: // prev2PhW + if((plist[0].sourceix) || (plist[-1].sourceix)) + return(false); + plist-=2; + break; } if((which == 0) || (which == 5)) diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 07c86abe..066edfd5 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -103,6 +103,19 @@ ALPHABET alphabets [] = { }; +ALPHABET *AlphabetFromName(const char *name) +{//========================================== + ALPHABET *alphabet; + + for(alphabet=alphabets; alphabet->name != NULL; alphabet++) + { + if(strcmp(name, &alphabet->name[1]) == 0) + return(alphabet); + } + return(NULL); +} + + ALPHABET *AlphabetFromChar(int c) {//=============================== // Find the alphabet from a character. @@ -276,8 +289,8 @@ static const char transpose_map_latin[] = { tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2; // pauses when announcing bracket names tr->langopts.max_initial_consonants = 3; tr->langopts.replace_chars = NULL; - tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English - + tr->langopts.ascii_language[0] = 0; // Non-Latin alphabet languages, use this language to speak Latin words, default is English + tr->langopts.alt_alphabet_lang = L('e','n'); SetLengthMods(tr,201); // tr->langopts.length_mods = length_mods_en; @@ -526,9 +539,10 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->letter_bits_offset = OFFSET_BENGALI; SetIndicLetters(tr); // call this after setting OFFSET_BENGALI + SetLetterBitsRange(tr,LETTERGP_B,0x01,0x01); // candranindu SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama - tr->langopts.numbers = 0x1; + tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi } break; @@ -666,7 +680,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; - tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands + tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; // variant form of numbers before thousands if(name2 == L_grc) { @@ -720,7 +734,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; - tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; + tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; if(name2 == L('c','a')) { @@ -732,7 +746,7 @@ Translator *SelectTranslator(const char *name) if(name2 == L('a','n')) { tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; - tr->langopts.numbers2 = 0; + tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND; } else if(name2 == L_pap) @@ -828,6 +842,7 @@ Translator *SelectTranslator(const char *name) { tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.numbers = 1; + tr->langopts.accents = 2; // 'capital' after letter name } break; @@ -960,6 +975,7 @@ SetLengthMods(tr,3); // all equal break; case L('i','d'): // Indonesian + case L('m','s'): // Malay { static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240}; static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 }; @@ -1054,7 +1070,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; tr->langopts.alt_alphabet = OFFSET_CYRILLIC; - tr->langopts.alt_alphabet_lang = "ru"; + tr->langopts.alt_alphabet_lang = L('r','u'); } break; @@ -1084,6 +1100,7 @@ SetLengthMods(tr,3); // all equal case L('k','l'): // Greenlandic { + SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->langopts.stress_rule = 12; tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL; @@ -1263,7 +1280,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; - tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; + tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND; SetLetterVowel(tr,'y'); ResetLetterBits(tr,0x2); SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y @@ -1296,7 +1313,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable - + tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words. Need to allow "bw'" prefix tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; tr->langopts.numbers2 = 0x200; // say "thousands" before its number } @@ -1413,6 +1430,8 @@ SetLengthMods(tr,3); // all equal tr->langopts.vowel_pause = 1; tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; + tr->langopts.max_initial_consonants = 4; // for example: mwngi + tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 diff --git a/src/translate.cpp b/src/translate.cpp index 351a3786..fc02ce16 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -378,6 +378,7 @@ void SetLengthMods(Translator *tr, int value) } + int IsAlpha(unsigned int c) {//======================== // Replacement for iswalph() which also checks for some in-word symbols @@ -433,8 +434,8 @@ int IsAlpha(unsigned int c) return(0); } -static int IsDigit09(unsigned int c) -{//========================= +int IsDigit09(unsigned int c) +{//============================ if((c >= '0') && (c <= '9')) return(1); return(0); @@ -971,7 +972,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt } } } - else if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS)) + else if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS) && !(dictionary_flags[0] & FLAG_ABBREV)) { // grouped words, but no translation. Join the words with hyphens. wordx = word1; @@ -2315,10 +2316,10 @@ static int EmbeddedCommand(unsigned int &source_index) source_index++; } - if(isdigit(source[source_index])) + if(IsDigit09(source[source_index])) { value = atoi(&source[source_index]); - while(isdigit(source[source_index])) + while(IsDigit09(source[source_index])) source_index++; } @@ -3335,7 +3336,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre while(pn < &number_buf[sizeof(number_buf)-20]) { - if(!isdigit(c = *pw++) && (c != tr->langopts.decimal_sep)) + if(!IsDigit09(c = *pw++) && (c != tr->langopts.decimal_sep)) break; *pn++ = c; diff --git a/src/translate.h b/src/translate.h index e7460443..898cd9b7 100644 --- a/src/translate.h +++ b/src/translate.h @@ -83,6 +83,7 @@ #define FLAG_STEM 0x10000 // must have a suffix #define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ #define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause +#define FLAG_LOOKUP_SYMBOL 0x40000000 // to indicate called from Lookup() #define BITNUM_FLAG_ALLCAPS 0x2a #define BITNUM_FLAG_HYPHENATED 0x2c @@ -502,6 +503,7 @@ typedef struct { #define NUM2_THOUSANDS_VAR4 0x100 #define NUM2_THOUSANDS_VAR5 0x140 +#define NUM2_ORDINAL_NO_AND 0x800 #define NUM2_MULTIPLE_ORDINAL 0x1000 #define NUM2_NO_TEEN_ORDINALS 0x2000 #define NUM2_MYRIADS 0x4000 @@ -510,6 +512,7 @@ typedef struct { // bits 1-4 use variant form of numbers before thousands,millions,etc. // bits 6-8 use different forms of thousand, million, etc (M MA MB) // bit9=(LANG=rw) say "thousand" and "million" before its number, not after + // bit11=(LANG=es,an) don't say 'and' between tens and units for ordinal numbers // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) @@ -542,9 +545,9 @@ typedef struct { int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" int listx; // compile *_listx after *list const unsigned int *replace_chars; // characters to be substitutes - const char *ascii_language; // switch to this language for Latin characters + char ascii_language[8]; // switch to this language for Latin characters int alt_alphabet; // offset for another language to recognize - const char *alt_alphabet_lang; // language for the alt_alphabet + int alt_alphabet_lang; // language for the alt_alphabet int max_lengthmod; int lengthen_tonic; // lengthen the tonic syllable int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character @@ -706,6 +709,7 @@ void InitNamedata(void); void InitText(int flags); void InitText2(void); int IsDigit(unsigned int c); +int IsDigit09(unsigned int c); int IsAlpha(unsigned int c); int IsVowel(Translator *tr, int c); int isspace2(unsigned int c); @@ -713,6 +717,7 @@ int towlower2(unsigned int c); void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); const char *WordToString2(unsigned int word); ALPHABET *AlphabetFromChar(int c); +ALPHABET *AlphabetFromName(const char *name); Translator *SelectTranslator(const char *name); int SetTranslator2(const char *name); diff --git a/src/voices.cpp b/src/voices.cpp index 8b0ad43c..60119edc 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -110,6 +110,7 @@ enum { V_FAST, V_SPEED, V_DICTMIN, + V_ALPHABET2, // these need a phoneme table to have been specified V_REPLACE, @@ -161,6 +162,7 @@ static MNEM_TAB keyword_tab[] = { {"fast_test2", V_FAST}, {"speed", V_SPEED}, {"dict_min", V_DICTMIN}, + {"alphabet2", V_ALPHABET2}, // these just set a value in langopts.param[] {"l_dieresis", 0x100+LOPT_DIERESES}, @@ -396,10 +398,10 @@ void VoiceReset(int tone_only) // Set voice to the default values int pk; -// static unsigned char default_heights[N_PEAKS] = {140,128,120,110,90,90,128,128,128}; // changed for v.1.47 -// static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128}; - static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; // previous version + static unsigned char default_heights[N_PEAKS] = {130,128,120,116,100,100,128,128,128}; // changed for v.1.47 static unsigned char default_widths[N_PEAKS] = {140,128,128,160,171,171,128,128,128}; +// static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; // previous version +// static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128}; static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; @@ -420,7 +422,7 @@ void VoiceReset(int tone_only) voice->n_harmonic_peaks = 5; voice->peak_shape = 0; voice->voicing = 64; - voice->consonant_amp = 85; // change to 85 for v.1.47 was 100 + voice->consonant_amp = 90; // change to 85 for v.1.47 was 100 voice->consonant_ampv = 100; voice->samplerate = samplerate_native; memset(voice->klattv,0,sizeof(voice->klattv)); @@ -448,7 +450,6 @@ void VoiceReset(int tone_only) // adjust formant smoothing depending on sample rate formant_rate[pk] = (formant_rate_22050[pk] * 22050)/samplerate; } - voice->height[2] = 240; // reduce F2 slightly // This table provides the opportunity for tone control. // Adjustment of harmonic amplitudes, steps of 8Hz @@ -532,6 +533,21 @@ static int Read8Numbers(char *data_in,int *data) } +static unsigned int StringToWord2(const char *string) +{//====================================================== +// Convert a language name string to a word such as L('e','n') + int ix; + int c; + unsigned int value = 0; + + for(ix=0; (ix<4) & ((c = string[ix]) != 0); ix++) + { + value = (value << 8) | (c & 0xff); + } + return(value); +} + + voice_t *LoadVoice(const char *vname, int control) {//=============================================== // control, bit 0 1= no_default @@ -573,6 +589,7 @@ voice_t *LoadVoice(const char *vname, int control) int stress_lengths[8]; int stress_add[8]; char names[8][40]; + char name1[40]; char name2[80]; const char *voice_dir; @@ -583,11 +600,11 @@ voice_t *LoadVoice(const char *vname, int control) static char voice_name[40]; // voice name for current_voice_selected static char voice_languages[100]; // list of languages and priorities for current_voice_selected - // which directory to look for a named voice + // which directory to look for a named voice. List of voice names, must end in a space. static const char *voices_asia = - "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; + "fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue "; static const char *voices_europe = - "an bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; + "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; strncpy0(voicename, vname, sizeof(voicename)); @@ -962,12 +979,10 @@ voice_t *LoadVoice(const char *vname, int control) case V_MBROLA: { int srate = 16000; - char name[40]; - char phtrans[40]; - phtrans[0] = 0; - sscanf(p,"%s %s %d",name,phtrans,&srate); - if(LoadMbrolaTable(name,phtrans,srate) != EE_OK) + name2[0] = 0; + sscanf(p,"%s %s %d",name1,name2,&srate); + if(LoadMbrolaTable(name1,name2,srate) != EE_OK) { fprintf(stderr,"mbrola voice not found\n"); } @@ -990,6 +1005,28 @@ voice_t *LoadVoice(const char *vname, int control) sscanf(p,"%d",&dict_min); break; + case V_ALPHABET2: + { + ALPHABET *alphabet; + name1[0] = name2[0] = 0; + sscanf(p, "%s %s", name1, name2); + + if(strcmp(name1, "latin") == 0) + { + strncpy0(langopts->ascii_language,name2,sizeof(langopts->ascii_language)); + } + else if((alphabet = AlphabetFromName(name1)) != 0) + { + langopts->alt_alphabet = alphabet->offset; + langopts->alt_alphabet_lang = StringToWord2(name2); + } + else + { + fprintf(stderr,"alphabet name '%s' not found\n", name1); + } + } + break; + default: if((key & 0xff00) == 0x100) { @@ -1098,7 +1135,7 @@ static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir) // The voice name has a +variant suffix variant_num = 0; *p++ = 0; // delete the suffix from the voice name - if(isdigit(*p)) + if(IsDigit09(*p)) { variant_num = atoi(p); // variant number } @@ -1191,10 +1228,10 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s p = voice->languages; // list of languages+dialects for which this voice is suitable - if(strcmp(spec_language,"mbrola")==0) + if(spec_n_parts < 0) { - // only list mbrola voices - if(memcmp(voice->identifier,"mb/",3) == 0) + // match on the subdirectory + if(memcmp(voice->identifier, spec_language, spec_lang_len) == 0) return(100); return(0); } @@ -1327,6 +1364,7 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int int lang_len=0; espeak_VOICE *vp; char language[80]; + char buf[sizeof(path_home)+80]; // count number of parts in the specified language if((voice_select->languages != NULL) && (voice_select->languages[0] != 0)) @@ -1339,6 +1377,26 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int n_parts++; } } + + if((n_parts == 1) && (control & 1)) + { + if(strcmp(language, "mbrola") == 0) + { + language[2] = 0; // truncate to "mb" + lang_len = 2; + } + + sprintf(buf, "%s/voices/%s", path_home, language); + if(GetFileLength(buf) == -2) + { + // A subdirectory name has been specified. List all the voices in that subdirectory + language[lang_len++] = PATHSEP; + language[lang_len] = 0; + n_parts = -1; + } + + } + // select those voices which match the specified language nv = 0; for(ix=0; ixlanguages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) && (memcmp(v->identifier,"mb/",3) != 0)) + if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) + && (memcmp(v->identifier,"mb/",3) != 0) && (memcmp(v->identifier,"test/",5) != 0)) { voices[j++] = v; }