From 1e518f1df28041e76b7f466345e5fe2052edadbe Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 8 Feb 2013 16:17:17 +0000 Subject: [PATCH 1/6] [1.46.33] Fix bug, some letter names spoken wrongly (eg. accented letters). Recognize Arabic full-stop (U+06D4). Changes to languages: en, pt, ka. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@299 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 24 ++--- dictsource/en_list | 220 ++++++++++++++++++++++++--------------- dictsource/en_rules | 109 ++++++++++++------- dictsource/ka_list | 2 + dictsource/pt_list | 78 +++++++++++--- dictsource/pt_rules | 8 +- phsource/compile_report | 23 ++-- phsource/ph_english_us | 4 +- phsource/ph_georgian | 14 ++- phsource/phonemes | 3 + src/dictionary.cpp | 45 ++++---- src/readclause.cpp | 4 +- src/synthdata.cpp | 2 +- 13 files changed, 354 insertions(+), 182 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 929946ad..06d3281c 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-01-30 +Dictionary en_dict 2013-02-08 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -377,7 +377,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-01-27 +Dictionary pt_dict 2013-02-08 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -467,7 +467,7 @@ p Q R s S t T tS v w x z -Dictionary sl_dict 2013-01-16 +Dictionary sl_dict 2013-01-30 @ @- a a: e E e: i i: o O o: u u: y @@ -502,7 +502,7 @@ p Q r s s. t t[ tS; v w x z Z z. -Dictionary zh_dict 2013-01-04 +Dictionary zh_dict 2013-01-25 @ @r a A ai Au E ei i i. i[ iA iE io iou N- @@ -600,17 +600,17 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2012-07-25 +Dictionary ur_dict 2013-02-08 -@ a a: aI aU E e: i -I i: O o: U u: +@ a a: aI aU e E e: +i I i: O o: U u: V : b bh c ch d D d. -dh dh. dZ f g gh h H -j J Jh k kh l m n -N p ph Q q R r. s +dh dh. f g gh h H j +J Jh k kh l m n N +p ph Q q r R r. s S s. t T t. th th. v -x z Z z. +w x z Z z. Dictionary bg_dict 2012-07-15 @@ -731,7 +731,7 @@ s s. S; t t. th th. tS v w z -Dictionary ka_dict 2012-10-17 +Dictionary ka_dict 2013-02-01 @ @- a e i o u diff --git a/dictsource/en_list b/dictsource/en_list index 922a783d..8925a438 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -1,5 +1,4 @@ - // You can use the en_extra file, rather than this one // to add your own pronunciation definitions. @@ -17,7 +16,7 @@ // ?7 Scottish // ?8 Use full vowel, not schwa in some word endings -// $alt use strong ending +// $alt1 use strong ending (-table, -inal) // $alt2 use weak ending // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] @@ -345,17 +344,22 @@ _90o n'aInti@ abc $abbrev ac $abbrev -adfs $abbrev +adf $abbrev (a . k . a .) aka#_! +agpl $abbrev agm $abbrev ai $abbrev +amd $abbrev aol $abbrev api $abbrev +apr apr@ asap $abbrev +ati $abbrev atm $abbrev awol eIw0l bvld bUl@vA@d ceo $abbrev +cet $abbrev cia $abbrev cio $abbrev ctrl k@ntroUl @@ -376,15 +380,19 @@ hmm h@m hiv $abbrev (http ://) eItSt2i:t2i:'pi:_ ibm $abbrev +ibmtts $abbrev id $abbrev ie aIi:_! $pause $only i.e aIi:_! $pause +imo $abbrev irc $abbrev irs $abbrev +itx $abbrev (km ²) skw,e@kIl'0mIt3z lapd $abbrev lbs paUndz LBS $abbrev +lotr $abbrev ltd lImI2tI2d //mc m@k $combine // combine with the following word mhz mEg@h3:ts @@ -397,16 +405,20 @@ nypd $abbrev nypsd $abbrev nyse $abbrev nyt $abbrev +oecd $abbrev oem $abbrev ok $abbrev omg $abbrev os $abbrev otoh $abbrev pcie $abbrev +pcmcia $abbrev riaa $abbrev riscos rIskoUEs +rnib $abbrev sae $abbrev scsi skVzi +ssip $abbrev st s@nt th T thu T3: // Thursday @@ -417,6 +429,7 @@ ui $abbrev uk $abbrev un $abbrev $allcaps unhcr $abbrev +upnp $abbrev url $abbrev usa $abbrev usb $abbrev @@ -458,7 +471,6 @@ abbey abi abdomen abd@m@n abed a#bEd abet a#bEt -abhor a#bho@ abler eIbl3 ablest eIbl@st ability a#bIl@ti @@ -474,6 +486,7 @@ abstemious a#bst'i:mi@s abstract abstrakt $only abstract a#bstr'akt $verb academe a#kad@mi +acapela aka#p'El@ access aksEs $onlys access aksEs $verb accouchement a#ku:SmO~ @@ -540,14 +553,12 @@ aisle aI@l ajar a#dZA@ ajax eIdZaks aka aka# -akin $2 alas a#l'as albeit O:lb'i:It alfalfa alf'alf@ alias eIli@s alibi al@baI alibis al@baIz -alkali alk@laI allay a#leI allegiance a#li:dZ@ns allele a#li:l @@ -568,6 +579,7 @@ altogether ,O:lt@gED3 always O:lweIz aluminium aljUm'Ini@m alzheimer altsaIm3 +?3 alzheimer A:ltshaIm3 amaryllis am@r'IlIs amass a#mas ambassador a#mbas@d3 @@ -670,11 +682,12 @@ attaches a#tatSI#z attorney a#t3:ni ?5 attorney a#tVRni attribute atrIbju:t -attribute $2 $verb +attribute $alt3 $verb au ,oU aubergine oUb3Zi:n auger O:g3 augmentation O:gmEnt'eIS@n +august O:g@st aurora $2 aussie 0zi austere O:st'i@3 @@ -723,11 +736,11 @@ bass beIs baste beIst bastion basti@n batman batman -?3 baton ba#t0n -battalion ba#tali@n -bazaar ba#zA@ +?3 baton $alt3 +battalion $alt3 +bazaar $alt3 bedouin bEdu:I#n -beize beIZ +beige beIZ belisha b@l'i:S@ bely bI2laI beryl bEr@L @@ -753,7 +766,7 @@ bison baIs@n ?!3 bitumen bItSu:m@n bizarre bI#z'A@ bizzare bI#z'A@ -blanc blO~nk +blanc blA~nk blancmange bl@m0nZ blase blA:z'eI blasé blA:z'eI @@ -804,8 +817,7 @@ buses bVsI#z busily bIzI2lI $verbf buxom bVks@m -cabal ka#bal -?3 cabal ka#bA:l +cabal $alt3 cabaret kab@reI cabernet kab3n'eI cabinet kabI#n@t @@ -813,14 +825,15 @@ cabriolet kabri:@l'eI cach kaS // cached cachet kaSeI cacti kaktaI -cadet ka#dEt +cadet $alt3 cadre kA:d3 caesar si:z3 cafe kafeI -cahoot ka#hu:t -cajole ka#dZoUl +cahoot $alt3 +cajole $alt3 cajun keIdZ@n caldera k0ld'e@r@ +caliche ka#li:tSi calix keIlIks calv kA:v // for calved, calving ?3 calv kav // for calved, calving @@ -840,7 +853,7 @@ canton kant0n canvas kanv@s capita kapIt@ capitol kapIt@L -caprice ka#pr'i:s +caprice ka#pri:s carafe ka#raf caramel kar@mEl caravan kar@van @@ -849,23 +862,24 @@ carburetor kA@b@r'Et3 career k@r'i@3 caress k@rEs carpel kA@p@l -cascade $2 +cascade $alt3 cashier kaS'i@3 cashmere kaSmi@3 ?3 cashmere kaZmi@3 -cassette ka#sEt -catastrophe ka#tastr@f%i +casino $alt3 +cassette $alt3 +catastrophe $alt3 catarrh k@tA@ caterer keIt3r3 cathedral $alt3 catholic kaTlIk -carotid ka#r0tI#d +carotid $alt3 cavalier $3 caveat kavIat ?3 caveat kavIA:t caviar kavIA@ caviare kavIA@ -cavort ka#v'O@t +cavort $alt3 cedar si:d3 celebrity $alt3 celidh keIli @@ -901,6 +915,7 @@ chiffron SIfr0n chihuahua tSI2wA:w@ chimera kaIm'i@r@ chimpanzee $3 +chipotle tSI2poUtleI chisel tSIz@L chloroplast $1 chocolate tS0kl@t @@ -1012,10 +1027,10 @@ contralto k@ntr'altoU contraption k@ntr'apS@n contrary k0ntr@rI ?3 contrary k0ntre@ri -contrast k0ntr'ast $verb -contrite k0ntr'aIt +contrast $2 $verb +contrite $2 controversy $1 -conven k0nv'i:n // convened +conven k0#nv'i:n // convened convent k0nv@nt converse $1 $only converse $verb @@ -1104,7 +1119,7 @@ demolish dI2m0lIS demon di:m@n demoness di:m@nEs demo dEmoU -demonstrative $2 +demonstrative $alt3 dengue dEngi denier dI2naI3 denouement deIn'u:mO~ @@ -1163,7 +1178,7 @@ disused dIs'ju:zd divan dI2van doable du:@b@L doctrine d0ktrI2n -doctrinal d0ktr'aIn@L +doctrinal $alt1 doer du:3 dogged d0gI#d doin du:In @@ -1193,6 +1208,7 @@ early 3:lI eavesdrop i:vzdr0p ebay i:beI ebook i:bUk +echelon ES@l0n ecommerce 'i:k,0m3:s eden i:d@n edict i:dIkt @@ -1245,9 +1261,12 @@ ere e@ $only eros i@r0s err 3: errand Er@nd +escallop Esk'A:l@p escapism Esk'eIpI2z@m escargot I2sk'A@goU +eschelon ES@l0n escort Esk'O@t $verb +escutcheon $2 eskimo $1 espionage EspI@nA:Z essential I2sEnS@L @@ -1300,9 +1319,9 @@ familiar f@mIli@3 famine famIn farewell $2 fasten faas@n -fatigue fa#ti:g +fatigue $alt3 fathom faD@m -(faux pas) f'oU||p'A: +(faux pas) f,oU||p'A: favorite feIv@-rI2t // sp. favourite feIv@-rI2t favorites feIv@-rI2ts // sp. @@ -1328,7 +1347,7 @@ fishnet fISnEt fiord fi:O@d fix fIks // for fixer flaccid flasId -flagellum fla#dZEl@m +flagellum $alt3 flamenco fla#mENkoU flexible flEksIb@L flier flaI3 @@ -1343,7 +1362,6 @@ foreshadow $2 foreshorten $2 forestall fo@st'O:l foretell fo@t'El -forever $2 forewarn $2 formid fO@m'Id // formidable formica fO@m'aIk@ @@ -1358,6 +1376,8 @@ frigate frIg@t fringer frIndZ3 // infringer fringing frIndZIN frontend fr'Vnt,End +frontier frVnti@3 +?3 frontier frVnt'i@3 frontpage fr'Vntp,eIdZ fruition fru:'IS@n frustrate $2 @@ -1372,7 +1392,7 @@ futon fu:t0n gala gA:l@ galaxy gala#ksi galileo galI2l'eIoU -galore ga#lo@ +galore $alt3 garish ge@rIS gases gasI#z gauche goUS @@ -1409,7 +1429,7 @@ gourmand gU@mA:nd gourmet gU@meI graduate gradju:@t graduate gradju:eIt $verb -graffiti gra#fi:ti +graffiti $alt3 gredient gri:di@nt // ingredient grenade gr@neId griffon grIf@n @@ -1421,7 +1441,7 @@ gui gu:i $onlys guinea gIni gurus gu:ru:z -habitual $2 +habitual $alt3 haggis hagIs haha hA:h'A: halleluiah halI2'lu:j@ @@ -1512,8 +1532,6 @@ impi $1 impinging Imp'IndZIN implacable Impl'ak@b@L imprecise ImprIs'aIs -impregnable Impr'Egn@b@L -impregnate $2 inanimate In'anIm@t inappropriate ,Ina#proUpri@t incense Ins'Ens $verb @@ -1592,7 +1610,7 @@ jour ZU@ // french jukebox dZu:kb0ks july dZu:l'aI -kaput ka#pUt +kaput $alt3 karate k@rA:ti kebab k@bab ?3 kebab k@bA:b @@ -1601,7 +1619,7 @@ hiatus haI'eIt@s kilo ki:loU kilometer kIl'0mI2t3 kilter kIlt3 -kinetic kI#nEtik +kinetic kI#nEtIk kiosk ki:0sk kiwi ki:wi: knavish neIvIS @@ -1695,7 +1713,7 @@ luxury lVkS3ri lychee li:tSi: macabre m@kA:br@ -macademia mak@d'eImi@ +macadamia mak@d'eImi@ machete ma#SEti machismo ma#tSIzmoU madame mad@m @@ -1732,12 +1750,11 @@ marcel mA@s'El marquee mA@k'i: margarine mA@dZ3ri:n ?3 margarine mA@dZ3r@n -marijuana marI2w'A:n@ marquis mA@rk'i: marshall mA@S@L martinet $3 massage masA:Z -?3 massage ma#sA:Z +?3 massage ma#sA:Z mausoleum mO:s@'li:@m mayhem meIhEm meant mEnt @@ -1751,6 +1768,7 @@ melee mEleI melon mEl@n memento $alt3 memo mEmoU +memorial $alt3 menagerie m@n'adZj@ri ménage meIn'A:Z menus mEnju:z @@ -1761,8 +1779,7 @@ merest mi@r@st meringue m@raN metabolic mEt@b'0lIk metaphor mEt@fO@ -metallic m@t'alIk -metastable $alt +metastable $alt1 miaou mi:'aU miaow mi:'aU mic maIk @@ -1774,6 +1791,8 @@ midterm m'Idt,3:m mildew mIldju: mileage maIlI2dZ milestone maIlstoUn +milieu mi:lj3: +?3 milieu mi:l'ju: militia m@lIS@ minibus mInIbVs mining maInIN // not mini @@ -1795,6 +1814,7 @@ misted mIstI#d mister mIst3 mitre maIt3 mixer mIks3 +moccasin m0k@sI#n mocha moUk@ modem moUdEm ?3 modem moUd@m @@ -1839,13 +1859,13 @@ naif naI'i:f naïve naI'i:v naivete naI'i:v@teI naked neIkI#d -narrate na#reIt +narrative nar@tIv nasa nasa# nascent neIs@nt -nativity $2 +nativity $alt3 natural natS@r@L nauseam nO:zi@m -navajo nav@hoU +navajo nA:v@hoU nazi nA:tsI nearby $2 $atend necklace nEkl@s @@ -1970,7 +1990,7 @@ pageant padZ@nt pajama $alt3 paltry pO:ltrI panacea pana#s'i:@ -panache $2 +panache $alt3 pancreas pankri@s papaya pa#paI;@ parabola p@rab@l@ @@ -1979,7 +1999,7 @@ parameter p@ramI2t3 parasite par@saIt paren pa#rEn // "parenthesis" pariah p@raI@ -parole pa#r'oUl +parole $alt3 passenger pasI2ndZ3 passerby pas3b'aI passersby pas3zb'aI @@ -2162,7 +2182,7 @@ rascal raask@L ratatouille rat@t'u:I ?!3 rather rA:D3 rationale raS@n'al -raton ra#t0n +raton $alt3 ravenous rav@n@s ravine r@vi:n rawest rO:@st @@ -2208,6 +2228,7 @@ refund ri:fVnd $noun reg rEdZ regal ri:g@L regime reIZ'i:m +?3 regina rI#dZi:n@ region ri:dZ@n // & regional reign reIn reiki reIki: @@ -2243,7 +2264,7 @@ reservation rEz3v'eIS@n reservoir rEz3vwA@ resin rEzIn restive rEstIv -respiration rEspI2r'eIS@n +respiration rEspI#r'eIS@n respiratory rI2spIr@t@rI ?3 respiratory rEspr@to:ri respite rEspaIt @@ -2296,8 +2317,8 @@ salad sal@d salami $alt3 saline seIlaIn ?3 saline seIli:n -?3 salon sa#l0n -saloon sa#lu:n +?3 salon $alt3 +saloon $alt3 san ,san $only sardine $2 satan seIt@n @@ -2348,7 +2369,7 @@ sens sEns // for sensible sentient sEnti@nt sequester $2 sequine si:kwI2n -series si@3ri:z +series si@3riz serenade sErI2n'eId serene s@ri:n sergeant sA@dZ@nt @@ -2396,6 +2417,7 @@ ski ski: skies skaIz skied ski:d skua sku:@ +skyrocket sk'aIr,0kIt slavish sleIvIS snooker snu:k3 sofa soUf@ @@ -2513,28 +2535,33 @@ teargas ti@3gas techy tEki teddybear t'EdIb,e@ telemetry t@lEm@tri -telephony tEl'Ef@ni +telepathy t@lEp@Ti +telephony t@l'Ef@ni +telephonist t@l'Ef@nIst ten tEn // untenable +tennis tEnI#s tequila t@ki:l@ termini t3:mInaI terrain t@reIn +terrific t3rIfIk testes tEsti:z -tobacco $2 telephon tElI2foUn // for telephoning temperature tEmprI2tS3 -temporary tEmpr@rI +?!3 temporary tEmpr@rI thereof ,De@'0v thereon ,De@'0n thereto ,De@'tu: thermos T3:m@s -thermostable $alt +thermostable $alt1 thesis Ti:sIs theta Ti:t@ tho DoU $only thousand TaUz@nd throughout $2 +thursday T3:zdeI tidal taId@L tidy taIdi +tierra tI'e@r@ tikka ti:k@ tilde tIld@ timetable taImteIb@L @@ -2569,6 +2596,7 @@ treatise tri:tIz triage tri:A:Z tribunal traIb'ju:n@L triceratops $2 +tricycle traIsIk@L trilogy trIl@dZi trio tri:oU trisquel trIsk'El @@ -2674,6 +2702,7 @@ vinyl vaInI2l viola vaI'oUl@ violin $2 viral vaI3r@L +virginal $alt1 visa vi:z@ vitamin vIt@mI#n ?3 vitamin vaIt@mI#n @@ -2722,7 +2751,7 @@ wordprocess $2 workshy w3:kSaI workstation w'3:kst,eIS@n ?5 workstation w'VRkst,eIS@n -worktable $alt +worktable $alt1 wound wu:nd wound waUnd $past (wound down) w,aUnd||'daUn @@ -2824,6 +2853,7 @@ Antarctica $2 Antigua ant'i:g@ Antilles ant'Ili:z Apennine ap@naIn +Arabia $alt3 Armageddon A@ma#g'Ed@n Arkansas A@k@nsO: Atlantis atl'antIs @@ -2852,8 +2882,8 @@ Bucharest bu:ka#r'Est Budapest bu:d@p'Est Buenos bweIn0s Burundi bUr'Undi -Brazil bra#zIl -Cadiz $2 +Brazil $alt3 +Cadiz $alt3 Cairo kaIroU Calcutta $2 Canada kan@d@ @@ -2869,16 +2899,16 @@ Cincinnati sInsIn'ati Cologne k@loUn Colorado k0l3r'A:doU Colombia k@lVmbi@ -Columbus $2 +Columbus $alt3 Congo k0NgoU Connecticut k@nEtI2k@t Copenhagen koUp@nh'eIg@n Cruz kru:z Cyprus saIpr@s -Dahomey $2 +Dahomey $alt3 Dallas dal@s -Damascus da#mask@s -Dakota da#koUt@ +Damascus $alt3 +Dakota $alt3 Danish deInIS Delhi dEli (Des moines) d@mOIn @@ -2918,7 +2948,7 @@ Ipanema Ipa#n'i:m@ Israeli Izr'eIli Istanbul ,Ist,anb'Ul Italia It'alI2@ // Italian(s) -Jakarta $2 +Jakarta $alt3 Jerusalem dZ@ru:s@l@m Johannesburg $2 Kalgoorlie kalgU@li @@ -2948,12 +2978,12 @@ Lvov l@-v0v Madagascar mad@g'ask3 Madras m@draas Madrid m@drId -Malawi ma#lA:wi +Malawi $alt3 Maldives mO:ld'i:v Mali mA:li Mandalay $3 Manhatten $2 -Manila ma#nIl@ +Manila $alt3 Massachusetts $3 Maya maI@ Mayan maI@n @@ -2965,6 +2995,7 @@ Miami maI'ami Michigan mISIg@n Milan $2 Mindanao mInd@n'aU +Mineola mIni:'oUl@ Minneapolis mIni:'ap@lI2s Missouri mIz'U@ri Mojave moUh'A:vi @@ -2990,7 +3021,7 @@ Ohio oUh'aIoU Omaha oUma#hA: Oman oUm'an Oregon 0rI2g@n -Pacific pa#sIfIk +Pacific $alt3 Palestine pal@staIn Palestinia pal@st'Ini:@ Panama pan@mA: @@ -3017,7 +3048,7 @@ Sahel sA:h'El Saigon saIg'0n Santiago santI'A:goU Savannah $alt3 -Savoy sa#vOI +Savoy $alt3 Seattle si:'at@L Seoul soUl Seville s@vIl @@ -3037,18 +3068,23 @@ Sumatran su:m'A:tr@n Suriname sU@rIn'am Taipei t,aIp'eI Taiwan taI'wA:n +Tawakoni ta#wA:k@ni +Tblisi t@-bli:si Tehran te@r'A:n (tel aviv) t,El||a#v'i:v Tenerife tEn3r'i:f Tennessee tEn@s'i: Texas tEks@s -Tblisi t@-bli:si -Toronto t@r0ntoU +Tijuana ti@w'A:n@ +Tikal tI2kA:l Timor ti:mo@ Tokyo toUkIoU +Toronto t@r0ntoU Toulouse tu:l'u:z ?3 Tunisia tu:n'i:Z@ Tripoli trIp@li +tuareg twA@rEg +Uighur wi:gU@ Ural ju:@r@L Utah ju:t2A: ?3 Utah ju:t2O @@ -3097,11 +3133,13 @@ Alison alIs@n Allyson alIs@n Alycen alIs@n Alyssa a#lIs@ -Amanda $2 +Amanda $alt3 Amos eIm0s Amy eImi Andre 0ndreI -Anita a#ni:t@ +Andrea andri@ +Andreas A:ndr'eI@s +Anita $alt3 Anthony ant@ni Anton ant0n Aoife i:f@ @@ -3109,7 +3147,7 @@ Aoiffe i:f@ Archibald A@tSIbO:ld Archie A@tSi Ares e@ri:z -Arianna arI'an@ +Arianna arI'A:n@ Astley astli Baez baI'Ez Bambi bambi: @@ -3122,8 +3160,6 @@ Bernard b3:n@d Betsy bEtsi Betsey bEtsi Bjarne bjA@n@ -Bjorn bjO@n -Bjørn bj3:n Boris b0rIs Brianna brI'an@ Brien braI@n @@ -3149,6 +3185,7 @@ Chris krIs Cleo kli:oU Cloe kloUi Colleen $2 +Conan koUn@n Connell k0n@l Connie k0ni Connor k0n3 @@ -3165,6 +3202,7 @@ Delia di:li@ Denise d@ni:s Dennis dEnI#s Derek dErIk +Devin dEvIn Di daI $capital Dinah daIn@ Dmitri d@mi:tri @@ -3181,6 +3219,7 @@ Dvina d@vi:n@ Dylan dIl@n Edith i:dIT Eduardo Edw'A@doU +Elijah I2laIdZ@ Elise I2li:z Elisabeth I2lIz@b@T Elizabeth I2lIz@b@T @@ -3245,7 +3284,7 @@ José hoUs'eI Jose hoUs'eI Judy dZu:di Karen kar@n -Karene ka#ri:n +Karene $alt3 Katherine kaTrI2n Katie keIti Katrina $alt3 @@ -3288,12 +3327,13 @@ Marian mari@n ?3 Mario mA@rIoU Margaret mA@gr@t Marilyn mar@lI2n -Matilda ma#tIld@ +Matilda $alt3 Matthew maTju: Maurice m0rIs Mavis meIvIs Megan mEg@n Mellisa $alt3 +Mellissa $alt3 Melissa $alt3 Michele mI2SEl Michelle mI2SEl @@ -3311,10 +3351,10 @@ Muhammad mohammad $text Moira mOIr@ Montgomery m0ntg'0m@ri Nadia nA:dj@ -Nadine neIdi:n +Nadine neId'i:n Nadja nA:dj@ Natalie nata#li -Natasha $2 +Natasha $alt3 Nathan neIT@n Neville nEvIl Nicholas nIk@l@s @@ -3347,15 +3387,15 @@ Roderick r0drIk Roni r0ni Rosario roUz'A@rIoU Russell rVs@L -Sabina sa#bi:n@ +Sabina $alt3 //sa#bi:n@ Sabine sa#b'i:n -Samantha s@manT@ +Samantha sa#manT@ (Santa claus) s'ant@||kl'O:z Saoirse si@S@ Sarah se@r@ Seamus SeIm@s Sean SO:n -Sebastian $2 +Sebastian $alt3 Sheila Si:l@ Simon saIm@n Sinead SI2neId @@ -3382,7 +3422,8 @@ Tracy treIsi Triani tri:'ani Trina tri:n@ Tricia trIS@ -Vanessa va#nEs@ +Vanessa $alt3 +Wallace w0lI#s Wally w0li Yves i:v Yvonne $2 @@ -3396,12 +3437,16 @@ Beowulf beI@wUlf Bogart boUgA@t Boswell b0zwEl Buchanan bju:k'an@n +Cabrillo ka#bri:oU Campbell kamb@l Carnegie kA@n@gi Cohen koU@n Cthulhu k@-Tu:l#u: Chrysler kraIsl3 +(da vinci) da#vIntSi Dante dA:nt2eI +Deslauriers dI2lo@rIeI +Deveraux dEv3roU Disney dIzni Dolce d0ltSeI Dvorak d@-vo@Zak @@ -3412,7 +3457,10 @@ Gibson gIbs@n Guinness gInIs Hades heIdi:z Hamilton ham@Lt@n +Jacobi dZa#koUbi Kendell kEnd@L +Kyocera kaI|@s'i@r@ +Lamaze la#mA:z Mackenna m@kEn@ Mackenzie m@kEnzi Medusa m@du:s@ @@ -3420,7 +3468,7 @@ Michelangelo maIk@L'andZ@loU Montague m0nt2@gju: Mozart moUtsA@t Niro ni@roU -Patel pa#tEl +Patel $alt3 Perez p3rEz Primavera pri:m@v'e@r@ Prentice prEnt2Is diff --git a/dictsource/en_rules b/dictsource/en_rules index b9eba7d1..38237195 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -35,6 +35,8 @@ .L03 a i o u // vowel, not 'e' .L05 c g k .L06 s z +.L07 b d g m n r bE dE lE nE // before voiced s in -sman +.L08 t d s z n x // dental, drop [j] before [u:] .L10 grap log met scop // scientific endings @@ -114,7 +116,7 @@ m) a (jes a m) a (jor_ eI m) a (jore eI - _) a (k@ a# + _) a (ki a# @) a (ki_ 'a @) ak (ia ak aku (_ 'A:ku: @@ -313,7 +315,7 @@ acne aknI acou (st a#ku: ac (quie ,a - _) acre eIk@ + _) acre eIk3 mass) acre @k3 _) ac (ri ak ac (ro ak @@ -448,7 +450,7 @@ m) ag (enta @dZ agh (_ @ agio (_ 'A:dZIoU - t) agi (o eIdZj + t) agi (o eIdZ _) ag (l@ a#g &) ag (on_ @g dr) agon ag@n @@ -519,6 +521,7 @@ _) alexan alIgz'aan _) alfa alf@ _) al (g al + _) algo (r alg@ &) al (iBe @l &) al (iBati @l al (ia eIl @@ -532,7 +535,6 @@ &) ali (sC_ @lI &) al (isCic @l _) al (k al - C) al (k O: _) all (@ a#l _) all (C@P3 O:l _) all (a al @@ -583,6 +585,7 @@ b) al (d+ O:l b) al (k O:l f) al (k 0l + alkali ak@laI b) all (K O:l &b) all (er_ O:l _c) al (e al @@ -593,7 +596,7 @@ ?3 h) al (f a s) al (f 0l @) algia (_ 'aldZ@ - g) al (i_ 'A:l + al (i_ 'A:l al (ity 'al p) al (et al qu) al (@ 0l @@ -605,7 +608,9 @@ qu) al (m A: equ) al @l ch) al (k O: + t) al (k O: w) al (C 0l + w) al (k O: all (_ O:l aller (_ O:l3 allers (_ O:l3z @@ -700,6 +705,7 @@ .group an @) ana (_ 'A:n@ _c) an (adi a#n + _) an (aem a#n ph) an (age @n C) an (c aan c) an (c an @@ -871,6 +877,7 @@ arr (_ A@ _) arr (@ a#r _) arr (ant ar + _n) arr (at a#r _) arr (o ar _) arro (g ar@ ar (i_ 'A:r @@ -929,6 +936,7 @@ &) ar (dy_ 3 h) ar (dy_ A@ are e@ + z) are (_ 'A@reI %C) ared (_ 3d %C) aring (_ 3rI2N area e@ri@ @@ -945,6 +953,7 @@ ar (iaC_ 'e@ ar (ia_ 'e@ @) arily (_ 'Er@l%I +?3 @) arily (_ 'e@r@l%I ch) ar (it ar ph) ar (i ar m) ar (i @r @@ -1037,7 +1046,7 @@ cl) ass (iC as ass (ag as &v) ass (_ @s - ass (et as + _) ass (et as _) ass (h as ass (on as ass (u @S @@ -1222,6 +1231,7 @@ b b _) bh b _) b (L01Y b // allow _bl _br + _) bj (A bj _) brz (e brz b (b @@ -1271,6 +1281,7 @@ beha (v bI2heI belly bElI2 be (mu bI2 + _) be (na bE _) bene bEnI benevo b@nEv@ _) be (o beI @@ -1381,6 +1392,7 @@ cism (_ sIz@m c (ish k e) cua kwa + _) cu (o kw _) cwm kUm czech tSEk @@ -1418,7 +1430,6 @@ ba) che tS@ tra) ch k cre) ch S - e) ch (el S cli) ch S fi) ch S ni) ch S @@ -1479,6 +1490,7 @@ colle (gi k@li: co (llis k@ co (llid k@ + collo (quiA k@loU co (llu k@ co (loss k@ _) co (m@ k@ @@ -1501,7 +1513,7 @@ co (mmerce k0 co (mmodor k0 common k0m@n - commun k0mju:n + commun k0#mju:n commun (a k@mju:n commun (ic k@mju:n co (mmuta k0 @@ -1544,6 +1556,7 @@ _) co (ngre k0 ?3 _) congress k0ngr@s congru k0ngru: + _) con (k k0#n _) co (ni k0 _) co (njug k0 _) co (njur kV @@ -1564,16 +1577,16 @@ _) co (nsul k0 _) co (nsult k%0# _) co (ntact k0 - _) co (ntempl k0 + _) co (ntempl k0# _) co (ntext k0 co (ntine k0 _) co (ntour k0 - _) co (ntrA k0 + _) co (ntrA k0# _) contra (C@P6 k,0ntr@ - _) contrast k0ntraast + _) contrast k0#ntraast contrac (t k%0#ntrak contrar k%0#ntre@ - _) co (ntrib k0 + _) co (ntrib k0# _) co (ntrov k,0 co (ntrol+ k@ conva (l k0nv@ @@ -1583,7 +1596,7 @@ _) co (nw k0 _) copy k0pI _) copoly k'oUp,0lI - coro (ll k0r0 + coro (ll k0#r0 co (rrect k@ correspo k,0rIsp'0 _) co (rri k0 @@ -1624,6 +1637,7 @@ _) du (p du: ?!3 du (pl dju: dur (A djU@ +?3 dur (A dU@ dur (_ djU@ ce) dure dZ3 _) dye daI @@ -1738,6 +1752,7 @@ _) dia daI|@ _) dia (gon daI'a _) dia (l daI@ + _) diamond daI@m@nd _) dia (n daI'a dicho (t daIk'0 di (chro daI @@ -2122,8 +2137,8 @@ ?8 &) el (s_ El ela (_ 'El@ ella (_ 'El@ - &C) eller (_ @l@ - &C) eler (_ @l@ + &C) eller (_ @l3 + &C) eler (_ @l3 @) elli (_ 'ElI &) elling @lI2N &) eling @lI2N @@ -2181,6 +2196,8 @@ sph) em @m sph) em (e 'i:m &) em (y_ @m + yst) em @m + yst) em (i Em .group en _) en (@ %En @@ -2426,7 +2443,7 @@ &) er (oCe_ =@r er (se 3: v) er (sal '3: - @) er (sial '3: + @) ersi (al '3:S @) er (sy 3: er (sib 3: er (sif 3: @@ -2541,7 +2558,7 @@ _m) et (ic @t etry (_S2 rI etries (_S4 rIz - @) et (_ I2t + &) et (_ I2t &Ar) et (_ @t rk) et It ll) et (_ It @@ -2919,6 +2936,7 @@ iza (tion aIzeI ?3 iza (tion @zeI ize (_ aIz + ial) ize (_S3 aIz ize (d_ aIz i (zen I2 iz (er_ aIz @@ -2936,7 +2954,7 @@ &) iary =j@r%I &l) iary =i@r%I _) ian i@n - @) ia (_ =i|@ + &) ia (_ =i|@ @@) ia (_ =i@ @) ian (cy I|@n l) iais I|eIz @@ -3028,6 +3046,7 @@ &) ie (t_ i@ @) ie (th i@ iesta i:'Est@ + iessa i:'Es@ ie (tt I2'E @) iety 'aI@t%I l) ieu u: @@ -3118,7 +3137,8 @@ im (portu ,Im impo (ten Imp@ _) im (pre@P2 %Im - im (pregna ,Im + impreg Impr'Eg + impreg (nat ImprEg im (presa ,Im im (provis Im im (pulse_ Im @@ -3248,6 +3268,7 @@ adm) ini InI m) iniatur InItS3 m) inera (l In@r@ + in (al_$w_alt 'aIn &m) in (al_ =In f) in (a aIn @g) in (a_ aIn @@ -3357,8 +3378,7 @@ ir (able 'aI3 m) ir (ac Ir sp) iral aI3r@L - @) ir (ation Ir - ir (at %aIr + @) ir (ation I#r ir (ate =i@r consp) ira (t Ir@ ire aI3 @@ -3412,6 +3432,7 @@ v) is (coun aI v) is (it Iz _d) is (e I2s + ial) ise (_S3 aIz ise (_ aIz ise (d_ aIz is (er+_ aIz @@ -3538,7 +3559,8 @@ jokull (_S6 j3:ku:th jökull (_S6 j3:ku:th - juan hwA:n + _) juan hwA:n + juan w'A:n .group k k k @@ -3692,6 +3714,7 @@ mEntary (_ m'Ent@r%I _) meta (@ m,Et@ _) metal (C mEt@L + _) metall (ic m@tal metabo m@t'ab0 _) meta (llu m%Eta _) mobile moUbaIl @@ -3850,7 +3873,7 @@ oar o@ oar (_ o@ cr) o (at oU - o (ba oU + X) o (ba oU t) o (bacc @ o (bed oU _r) o (ber 0 @@ -3878,7 +3901,7 @@ l) o (cat %oU _) o (ccasi @ _) o (cclu @ - _) o (ct 0 + X) o (ct 0 occur @k3: ?5 occur @kVR occurr @k3: @@ -4006,7 +4029,6 @@ p) o (tenti @ b) o (th oU betr) oth oUD -?3 m) o (th O ?3 cl) o (th O cl) othe oUD tr) othe oUD @@ -4259,12 +4281,14 @@ nt) or (_ o@ vent) or (_ 3 y) or (k O@ - &) or (ation @r + or (arL02 3r + &) or (ation 3r _) ora (to 0r@ @) or (ca_ 'O@ w) orce (st U &f) or (d_ 3 ore o@ + &) or (ene_ 3 or (esis O@ oresc @r'Es ora (cl 0r@ @@ -4302,7 +4326,7 @@ ?3 or (r O: bb) or (n 3 f) oreign 0r@n - f) or (ever O@ + f) or (ever 3 f) or (gAt 3 _f) org (Av @g fl) or (i 0r @@ -4667,7 +4691,6 @@ per (sis p3 persever p3:sIv'i@3 per (sp p3 - perspi (ra p3:sp@ per (su p3 per (tai p3 per (tu p3 @@ -4918,10 +4941,11 @@ re (solu rE re (son rE re (stl rE + re (stro rE res (ult rI2z re (tail ri: - re (tic rE - re (tina rE + re (ti rE + _) re (tir rI2 re (trib rE retro (P5 r,EtroU // prefix re (vel rE @@ -5019,7 +5043,7 @@ w) se z Co) s (Er z Co) s (En z - r) s (d z + e) s (d z _) se (clu sI2 secur sI2kjU@ self (_ 'sElf @@ -5055,13 +5079,13 @@ A) sion Z@n ?8 C) sion SVn ?8 A) sion ZVn - a) sin (_ s@n ai) sin (_ z@n u) sin (_ z@n A) s (itiv z _) size (C@ saIz a) s (m z o) s (m z + L07) s (mAn_ z _) socie (t s@saI@ _) soma (li s@mA: pri) s (o z @@ -5196,7 +5220,7 @@ tion (al S=@-n &) tious S=@s AC) tive (_ =tIv - s) t (l + s) t (l ? to (morr t@ _) to (nn tV t (ooth t2 @@ -5210,7 +5234,7 @@ _) tri (g trI _) tri (ni trI _) tri (vi trI - _) tri (xA trI + _) tri (xA trI tsch tS tse (_ tsi _) tsk t'@sk @@ -5221,8 +5245,12 @@ _sta) tu tSu: ?3 _sta) tu (to tS@ c) tu (al_ =tSu: + r) tue (_ tSu: ?3 tu (la_ tS@ @) tu (lat =tSU +?3 tu (Ant tSu: +?3 tu (Ancy tSu: + tu (ous tSu: @) tur (A tS@r @) tur (al_ tS=@r @) tur (y tS@r @@ -5311,6 +5339,8 @@ val) u ju: u (a ju: l) u (a u: +?3 L08) u (a u: + contin) u ju: _g) ua wA: _l) u (a u: r) u (aC+ u: @@ -5354,7 +5384,7 @@ g) u (i w r) u (i u: s) u (i u: -?3 t) u (i u: +?3 L08) u (i u: u (ki_ 'u: _) u (krain %ju: ll) u (l ju: @@ -5388,6 +5418,7 @@ u (ly u: d) u (ly ju: z) u (l_ 'u: + um (_ @m vol) u (m ju: u (ma_ 'u: h) u (man ju: @@ -5434,10 +5465,11 @@ .group ue ue ju: uee ju:i: +?3 L08) ue u: l) ue u: r) ue u: _s) ue u: -?3 t) ue u: +?3 _L08) ue (l u:@ _C) ue (l ju:@ _CC) ue (l u:@ ue (n ju:@ @@ -5649,6 +5681,7 @@ xis (_ =ksIs xu (a =kSu: lu) x (ur gZ +?3 lu) xu (r gZU@ xure (_ kS%U@ .group y @@ -5834,7 +5867,8 @@ ?8 Ening (_ EnI2N Ene (_ i:n Ened (_ @nd - E (nt_ @ + En (g @n + E (nt @ E (ning E E (nti 'E E (ntu 'E @@ -5962,6 +5996,7 @@ ë E ï i: ö 3: + ör 3: ü u: ç s ß s diff --git a/dictsource/ka_list b/dictsource/ka_list index eae83a09..7af1dff6 100755 --- a/dictsource/ka_list +++ b/dictsource/ka_list @@ -115,6 +115,8 @@ _ე e ჸ elifi უ u +v _^_EN // not 'roman' +x _^_EN % prots#enti $max3 + pliusi $max3 diff --git a/dictsource/pt_list b/dictsource/pt_list index 1dcd385d..7f079d00 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -314,12 +314,12 @@ umas $u $nounf // pronouns eu $u+ $verbf tu $u+ -você vos'e $u+ +você vose $u2+ ele 'ely $u+ ela $u+ nós $u+ vós $u+ -vocês $u+ +vocês $u2+ eles $u+ elas $u+ @@ -646,13 +646,14 @@ governo gov'ernU $noun abacaxi abakaSy abordo $alt -aborto $alt $verb +aborto $alt $verb acerto $alt2 $noun acertos $alt2 acervo $alt2 adepto $alt adereço $alt2 adore $alt +adorno $alt $verb albatrozes $alt alcateia $alt alferes $alt @@ -665,16 +666,19 @@ ameba $alt amores $alt2 anoiteça $alt2 anoiteço $alt2 -apego $alt2 +apego $alt2 $noun +apelo $alt $verb +aposto $alt $verb apreço $alt2 aperto $alt2 $noun -apoio $alt $verb +apoio $alt $verb aprendeste $alt2 aprovo $alt arredores $alt arremesso $alt2 $noun arroz $alt2 assembleia $alt +aterro $alt2 $noun atmosfera $alt atrozes $alt austera $alt @@ -690,10 +694,14 @@ bezerro $alt2 bilhete $alt2 boca $alt2 bochecha $alt2 +bojo $alt2 boleia $alt +bolero $alt bolo $alt2 +bolo $alt $verb borboleta $alt2 bordo $alt +boto $alt2 $noun bromelha $alt cabeça $alt2 cabresto $alt2 @@ -703,16 +711,18 @@ caderneta $alt2 camiseta $alt2 cantora $alt2 caractere $alt +caramelo $alt careta $alt2 carreta $alt2 casebre $alt castelo $alt cateto $alt2 catorze $alt2 +cebola $alt2 cefaleia $alt cerca $alt $verb cerco $alt $verb -cesta $alt +cesta $alt2 chamego $alt2 chefe $alt chinelo $alt @@ -729,9 +739,12 @@ comodo $alt2 comera $alt2 comeres $alt2 comeste $alt2 +concerto $alt2 $noun concordo $alt +conforto $alt $verb conheceste $alt2 conheço $alt2 +consolo $alt2 $noun contivermos $alt copa $alt copo $alt @@ -761,7 +774,7 @@ descordo $alt descova $alt2 desespero $alt2 $noun desfecho $alt2 -desprezo $alt $verb +desprezo $alt $verb deva $alt2 devo $alt2 deveras $alt @@ -771,14 +784,20 @@ discordo $alt dissermos $alt dobro $alt2 $noun doce $alt2 +doutoras $alt2 droga $alt +duelo $alt +dueto $alt2 elixir eliSir +elo $alt emprego $alt2 $noun +encosto $alt $verb endereço $alt2 +endereço $alt $verb enforco $alt engordo $alt enumerem $alt -enredo $alt $verb +enredo $alt $verb enterro $alt2 $noun envelope $alt envolto $alt2 @@ -787,10 +806,12 @@ epopeia $alt eritreia $alt erro $alt2 $noun erros $alt2 +esboço $alt $verb escopeta $alt2 escroto $alt2 -esforço $alt $verb +esforço $alt $verb esforços $alt +esgoto $alt2 $noun esperma $alt espeto $alt2 $noun espiroqueta $alt2 @@ -803,12 +824,16 @@ estiveres $alt estivermos $alt estrela $alt2 estrofe $alt +estorno $alt $verb +estorvo $alt $verb etiqueta $alt2 europa $alt exagero $alt $verb expeça $alt2 expeço $alt2 explore $alt +faceta $alt2 +farelo $alt farofa $alt febre $alt feitora $alt2 @@ -851,6 +876,7 @@ grozo $alt $verb hoje $alt2 houvermos $alt ideia $alt +insonoro $alt joga $alt jogam $alt jogos $alt @@ -867,6 +893,7 @@ maleta $alt2 mantiverdes $alt mantiveres $alt mantivermos $alt +marmelo $alt marreta $alt2 martelo $alt merda $alt @@ -895,6 +922,7 @@ muita mw'iNt& mulheres $alt mureta $alt2 mutreta $alt2 +namoro $alt2 $noun naquele $alt2 negra $alt2 negro $alt2 @@ -902,23 +930,28 @@ novos $alt obstetra $alt obsoleta $alt2 obsoleto $alt2 +pbvivera $alt obtivermos $alt odisseia $alt onu $1 opereta $alt2 ordens $alt osso $alt2 +ostra $alt2 ovos $alt +pachorra $alt2 padeceste $alt2 paexa paeSa -pangeia $alt palacete $alt2 palheta $alt2 +pangeia $alt +pantera $alt paralelo $alt parede $alt2 pastora $alt2 pedra $alt pelego $alt2 +pelo $alt $verb perde $alt perdem $alt perede $alt2 @@ -932,6 +965,7 @@ piloto $alt2 pirueta $alt2 plateia $alt plebeia $alt +polca $alt porcos $alt porrete $alt2 porra $alt2 @@ -948,29 +982,39 @@ provo $alt puder $alt punheta $alt puserdes $alt +quarteto $alt2 +quinteto $alt2 quisermos $alt recomeço $alt2 $noun recordo $alt recorto $alt rede $alt2 redor $alt +reembolso $alt $verb reforços $alt -refresco $alt $verb +reforço $alt $verb +refresco $alt $verb reitora $alt2 +relevo $alt2 $noun remorso $alt reprovo $alt resolve $alt resolvem $alt rixa x'iS& +rocha $alt +rock $alt rogas $alt +rolo $alt2 $noun saleta $alt2 sarjeta $alt severa $alt severo $alt seborreia $alt seco $alt2 $noun -selo $alt $verb +secos $alt2 +selo $alt $verb selvagem seUv'aZeIN +sexteto $alt2 ?1 senhora $alt2 sesta $alt2 sincera $alt @@ -991,18 +1035,26 @@ sorvete $alt2 sossego $alt2 $noun souberdes $alt soubermos $alt +suborno $alt $verb +sufoco $alt2 $noun sugere $alt sugerem $alt suporto $alt suor swOr tapete $alt2 -tempero $alt $verb +tempero $alt2 $noun teta $alt2 +tetra $alt tiver $alt +tivera $alt tiveres $alt tivermos $alt tocha $alt toga $alt +tola $alt2 +tolo $alt2 +topo $alt $verb +torno $alt $verb torres $alt2 tortos $alt traqueia $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 09d09eaf..77d410ca 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -216,6 +216,8 @@ @s) e (rAm_ E sp) e (rA_ E sp) e (rAm_ E + f) e (re_ E + f) e (rem_ E e (rgA_ E e (rgAm_ E @@ -391,15 +393,13 @@ _reconh) e (çL03_ e _sup) e (rL04_ E _imp) e (rL03_ E _temp) e (rL04_ E + _tol) e (rL04_ E _esp) e (ssL03_ e _l) e (ssL02_ e _perd) e (L05_ e _rend) e (L06_ e _atend) e (L06_ e _pen) e (trL04_ E - _Xref) e (rL02_ E - _desf) e (rL02_ E - _conf) e (rL02_ E _reit) e (rL03_ E par) e (çL01_ e // pareça, apareça _arref) e (çL01_ e @@ -859,6 +859,7 @@ _desenv) o (lvL02_ O r) u (_A u u (A_ 'u + u (am_ 'u u (em_ 'u ui uI ui (_ 'uI @@ -943,6 +944,7 @@ _desenv) o (lvL02_ O mo) x (a S _o) x (A S _o) x (i ks + _o) x (í ks pi) x (A S _pro) x (A S _pra) x (A S diff --git a/phsource/compile_report b/phsource/compile_report index b6a4c691..9f1e957c 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -85 phoneme tables +86 phoneme tables new total base 109 109 consonants 10 118 @@ -24,6 +24,7 @@ consonants 10 118 ta 23 154 kn 17 150 ml 21 153 + ur 6 150 hu 25 124 lt 44 139 lv 29 127 @@ -60,7 +61,7 @@ consonants 10 118 sq 33 127 hy 23 119 da 36 131 - ka 19 114 + ka 20 114 rw 15 132 ne 18 158 pa 15 152 @@ -419,7 +420,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h|] base +l/l@ [] base [l#] base [l] fr [l/2] fr @@ -453,7 +454,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h|] base +l/la [] base [l#] base [l] fr [l/2] fr @@ -461,7 +462,7 @@ l/la [h|] base [K] tn l/l_a [l/3] base [l/] fr -l/le [h|] base +l/le [] base [l#] base [l] fr [l/2] fr @@ -473,7 +474,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h|] base +l/li [] base [l#] base [l] fr [l/2] fr @@ -487,7 +488,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [h|] base +l/lo [] base [l#] base [l/2] fr [K] nso @@ -498,7 +499,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [h|] base +l/lu [] base [l#] base [l] fr [l/2] fr @@ -928,6 +929,8 @@ ustop/p_unasp_ [p-] consonants [p] lv [p] sq ustop/q [q] base +ustop/q2 [q] ka +ustop/q2_i [q] ka ustop/q_u [q] base ustop/t [t] base [t] en-us @@ -1505,6 +1508,7 @@ vowel/@_3 [@#] en [@2] en-sc [@5] en-sc [@3] hi + [@3] ur [@] da [@3] ne [@] am @@ -1698,6 +1702,7 @@ vowel/aa_9 [a] fi [a] mt [A] kk vowel/@_bck [@] hi + [@] ur [@] bg [@] zh [V] ne @@ -2043,6 +2048,8 @@ vowel/@_low [@] en-rp [V] hi [@2] hi [@] ml + [@] ur + [@2] ur [@] ro [a#] no [@] id diff --git a/phsource/ph_english_us b/phsource/ph_english_us index e564ce9b..540afc0e 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -130,7 +130,6 @@ phoneme 0 ChangeIfDiminished(@) IF nextPh(r) THEN ChangePhoneme(O:) -// FMT(vwl_en_us/oor) ENDIF FMT(vowel/aa_8) endphoneme @@ -366,7 +365,8 @@ phoneme t voicingswitch d lengthmod 2 - IF prevPhW(isVowel) OR prevPhW(n) THEN +// IF prevPhW(isVowel) OR prevPhW(n) THEN + IF prevPhW(isVowel) THEN // test, don't reduce [t] after [n] IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN IF next2Ph(n) AND next2Ph(notWordStart) THEN ELSE diff --git a/phsource/ph_georgian b/phsource/ph_georgian index f3613b8e..7d2675fd 100755 --- a/phsource/ph_georgian +++ b/phsource/ph_georgian @@ -113,10 +113,22 @@ phoneme k import_phoneme consonants/k- endphoneme +phoneme q + vls uvl stop + lengthmod 2 + Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 + Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 + + IF nextPh(#i) THEN + WAV(ustop/q2_i, 40) + ENDIF + WAV(ustop/q2, 48) +endphoneme + phoneme Q - import_phoneme base/Q" + import_phoneme base/r" endphoneme phoneme r diff --git a/phsource/phonemes b/phsource/phonemes index 85fdcd47..10c1ae5c 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1727,6 +1727,9 @@ include ph_kannada phonemetable ml hi include ph_malayalam +phonemetable ur hi +include ph_urdu + phonemetable hu base include ph_hungarian diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 85e05de2..be3b8c3b 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1495,21 +1495,24 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, stress = 3; - if((stressflags & 0x1000) && (vowel_count == 2)) + if(unstressed_word == 0) { - // Two syllable word, if one syllable has primary stress, then give the other secondary stress - if(vowel_stress[1] == 4) - vowel_stress[2] = 3; - if(vowel_stress[2] == 4) - vowel_stress[1] = 3; - } - - if((stressflags & 0x2000) && (vowel_stress[1] < 0)) - { - // If there is only one syllable before the primary stress, give it a secondary stress - if((vowel_count > 2) && (vowel_stress[2] >= 4)) + if((stressflags & 0x1000) && (vowel_count == 3)) { - vowel_stress[1] = 3; + // Two syllable word, if one syllable has primary stress, then give the other secondary stress + if(vowel_stress[1] == 4) + vowel_stress[2] = 3; + if(vowel_stress[2] == 4) + vowel_stress[1] = 3; + } + + if((stressflags & 0x2000) && (vowel_stress[1] < 0)) + { + // If there is only one syllable before the primary stress, give it a secondary stress + if((vowel_count > 3) && (vowel_stress[2] >= 4)) + { + vowel_stress[1] = 3; + } } } @@ -2873,13 +2876,15 @@ int TransposeAlphabet(Translator *tr, char *text) int max; const char *map; char *p = text; - char *p2 = text; + char *p2; int all_alpha=1; int bits; int acc; int pairs_start; const short *pairs_list; + char buf[N_WORD_BYTES]; + p2 = buf; offset = tr->transpose_min - 1; min = tr->transpose_min; max = tr->transpose_max; @@ -2926,8 +2931,8 @@ int TransposeAlphabet(Translator *tr, char *text) acc=0; bits=0; - p = text; - p2 = text; + p = buf; + p2 = buf; while((c = *p++) != 0) { if((pairs_list = tr->frequent_pairs) != NULL) @@ -2958,9 +2963,13 @@ int TransposeAlphabet(Translator *tr, char *text) *p2++ = (acc << (8-bits)); } *p2 = 0; - return((p2 - text) | 0x40); // bit 6 indicates compressed characters + strcpy(text, buf); + return((p2 - buf) | 0x40); // bit 6 indicates compressed characters + } + else + { + return(strlen(text)); } - return(p2 - text); } // end of TransposeAlphabet diff --git a/src/readclause.cpp b/src/readclause.cpp index c1be8a00..2aa2c4fa 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -85,8 +85,9 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x055e, // Armenian question 0x055b, // Armenian emphasis mark - 0x0b1b, // Arabic ; + 0x061b, // Arabic ; 0x061f, // Arabic ? + 0x06d4, // Arabic . 0x0f0d, // Tibet Shad 0x0f0e, @@ -133,6 +134,7 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_SEMICOLON, // Arabic ; CLAUSE_QUESTION, // Arabic question mark + CLAUSE_PERIOD, // Arabic full stop CLAUSE_PERIOD+0x8000, // Tibet period CLAUSE_PARAGRAPH, diff --git a/src/synthdata.cpp b/src/synthdata.cpp index a45c2e61..f3dd6871 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.32 30.Jan.13"; +const char *version_string = "1.46.33 08.Feb.13"; const int version_phdata = 0x014631; int option_device_number = -1; From 5e673ec2858cf2a7f0e793b15d3d5003d5a0c97f Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 11 Feb 2013 10:39:13 +0000 Subject: [PATCH 2/6] 1.46.33 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/ur_list | 22 +++-- dictsource/ur_rules | 175 ++++++++++++++++++++++++------------- espeak-data/voices/test/ur | 1 - phsource/ph_urdu | 45 ++++++++++ phsource/ustop/k_asp2.wav | Bin 4026 -> 5006 bytes phsource/ustop/q2.wav | Bin 0 -> 5392 bytes phsource/ustop/q2_i.wav | Bin 0 -> 6606 bytes 7 files changed, 172 insertions(+), 71 deletions(-) create mode 100644 phsource/ph_urdu create mode 100644 phsource/ustop/q2.wav create mode 100644 phsource/ustop/q2_i.wav diff --git a/dictsource/ur_list b/dictsource/ur_list index 63b6839e..b0fae0c2 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -1,9 +1,9 @@ - +// This ur_list file is prepared by Him Prasad Gautam (Kathmandu, Nepal) // This file is UTF8 encoded -// Spelling to phoneme exceptions for Urdu +// Letter Names, Numbers and exceptional pronounciation of Urdu -// Letter names +// The Letter names ا alIf ب be: پ pe: @@ -51,14 +51,14 @@ ُ pe:S -// numbers +// The numbers _0 s'IfaR _1 'e:k _2 'do: _3 t'i:n _4 c'a:R _5 p'a:Nc -_6 ch'aI +_6 ch'eh _7 s'a:t _8 'a:th _9 n'aU @@ -83,9 +83,9 @@ _27 sat:a:'i:s _28 stha:'i:s _29 Unt'i:s _30 t'i:s -_31 ikt'i:s +_31 ikVt'i:s _32 bat:'i:s -_33 taINt'i:s +_33 t'aINt'i:s _34 caUNt'i:s _35 paINt'i:s _36 chat:'i:s @@ -93,7 +93,7 @@ _37 saINt'i:s _38 aRt'i:s _39 Unta:l'i:s _40 ca:l'i:s -_41 Ikta:l'i:s +_41 IkVta:l'i:s _42 baja:l'i:s _43 te:Nta:l'i:s _44 cava:l'i:s @@ -158,6 +158,10 @@ _0M1 Haz'a:R _0M2 l'a:kh _0M3 kaR'o:R _0M4 'aRab +_0M5 'khaRab _dpt _ISaRI'Ia_ -jonathan dZ'Onathan + +// Exception of phonemes + +پاکستان p'a:k'i:st'a:n diff --git a/dictsource/ur_rules b/dictsource/ur_rules index 7de25ee0..18542979 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -1,7 +1,8 @@ - +// This ur_rules file is written by Him Prasad Gautam (Kathmandu, Nepal). // This file is UTF8 encoded -// Spelling to phoneme rules for Urdu +// phoneme rules for Urdu +// Letter group - l01: Vowels .replace ٠ 0 @@ -17,9 +18,10 @@ -// vowel signs, alif is silent at start of word if these follow +// vowel signs, alif acts as consonants at start of word if these follow .L01 َ ِ ُ و ی ع ا + // VOWELS .group َ @@ -40,22 +42,25 @@ ُع O .group ھ - ھ H + ھ HV + ھ (_ H: +ھ (l01 H .group ا ا a: - _) ا (L01 // silent before a vowel - _) ا a - _) او u: - _) ای i: + _) ا (L01 // Acts like Consonants if followed by a vowel but is silent. +_) ا a +_) او u: +_) ای i: .group آ آ a: + .group ع ع a: عا a: - _) ع a + _) ع a .group و @@ -63,13 +68,13 @@ وُ u: وٗ u: و (L01 v - _) و v + _) و v .group ی ی e: ی (L01 j ی (_ i: - _) ی j + _) ی j .group ے // yeh barree @@ -89,111 +94,148 @@ // CONSONANTS .group ب - ب b - بھ bh - + ب bV + بھ bhV + بھ (L01 bh + ب (L01 b .group پ - پ p - پھ ph + پ pV + پھ phV + پ (L01 p + پھ (L01 ph .group ت - ت t - تھ th - + ت tV + تھ thV + ت (L01 t + تھ (L01 th .group ٹ - ٹ t. - ٹھ th. - + ٹ t.V + ٹھ th.V + ٹ (L01 t. + ٹھ (L01 th. .group ث - ث s - + ث sV + ث (L01 s .group ج - ج J - جھ Jh + ج JV + جھ JhV + ج (L01 J + جھ (L01 Jh .group چ - چ c - چھ ch + چ cV + چھ chV + چ (L01 c + چھ (L01 ch .group ح - ح H + ح HV + ح (L01 H .group خ - خ x + خ xV + خ (L01 x .group د - د d - دھ dh + د dV + دھ dhV + د (L01 d + دھ (L01 dh .group ڈ - ڈ d. - ڈھ dh. + ڈ d.V + ڈھ dh.V + ڈ (L01 d. + ڈھ (L01 dh. .group ذ - ذ D + ذ DV + ذ (L01 D .group ر - ر R + ر RV + ر (L01 R .group ڑ - ڑ r. + ڑ r.V + ڑ (L01 r. .group ز - ز z + ز zV + ز (L01 z .group ژ - ژ Z + ژ ZV + ژ (L01 Z .group س - س s + س sV + س (L01 s .group ش - ش S + ش SV + ش (L01 S .group ص - ص s. + ص s.V + ص (L01 s. .group ض - ض z + ض zV + ض (L01 z .group ط - ط t - طھ th + ط tV + طھ thV + ط (L01 t + طھ (L01 th .group ظ - ظ z. + ظ z.V + ظ (L01 z. .group غ - غ Q + غ QV + غ (L01 Q .group ف - ف f + ف fV + ف (L01 f .group ق - ق q + ق qV + ق (L01 q .group ک - ک k - کھ kh + ک kV + کھ khV + ک (L01 k + کھ (L01 kh .group گ - گ g - گھ gh + گ gV + گھ ghV + گ (L01 g + گھ (L01 gh .group ل - ل l + ل lV + ل (L01 l .group م - م m + م mV + م (L01 m .group ن - ن n + ن nV + ن (L01 n .group ں ں n // this should nasalize the vowel @@ -206,10 +248,21 @@ ہ (_ a -.group 0xe0a4 // devanagari - 0xe0a4 _^_HI // switch to hindi voice -.group 0xe0a5 // devanagari - 0xe0a5 _^_HI +// Common symbols .group - $ do:l@R \ No newline at end of file + $ do:l@R + , sVkat.Vh // Sakata سکتہ + ! f'iJa:ja //Fijaya فجائیہ + ; w'ak't'a //Waqfa وقفہ + : r'a:b'tah//Rabtar رابطہ + ? saw'a:l'i:ja:n'is'a:nV // Sawaliya Nishan سوالیہ نشان + % f'i:sVd //Fisad فیصد + + + +.group 0xe0a4 // devanagari + 0xe0a4 _^_NE // switch to Nepali voice +.group 0xe0a5 // devanagari + 0xe0a5 _^_NE + diff --git a/espeak-data/voices/test/ur b/espeak-data/voices/test/ur index acc30a09..d4d113c4 100644 --- a/espeak-data/voices/test/ur +++ b/espeak-data/voices/test/ur @@ -1,6 +1,5 @@ name urdu-test language ur -phonemes hi stressrule 6 diff --git a/phsource/ph_urdu b/phsource/ph_urdu new file mode 100644 index 00000000..2dd61fb3 --- /dev/null +++ b/phsource/ph_urdu @@ -0,0 +1,45 @@ +//==================================================== +// Phonemes adjusted for Urdu by Him Prasad Gautam. +//==================================================== + + +phoneme : // Lengthen the previous vowel by "length" + virtual + length 120 +endphoneme + +phoneme @ + vowel flag1 starttype #@ endtype #@ + length 130 + + ChangeIfDiminished(@-) + IF nextPh(H) THEN + FMT(vowel/@_low) + ENDIF + FMT(vowel/@_bck) +endphoneme + + +phoneme V + vowel flag1 starttype #@ endtype #@ + length 150 + CALL hi/V +endphoneme + + +phoneme @2 + vowel flag1 starttype #@ endtype #@ + length 150 + FMT(vowel/@_low) +endphoneme + +phoneme @3 + vowel flag1 starttype #@ endtype #@ + length 150 + ChangeIfDiminished(@-) + FMT(vowel/@_3) +endphoneme + + +//==================================================== +// The rest Phonemes are inherted from Hindi. diff --git a/phsource/ustop/k_asp2.wav b/phsource/ustop/k_asp2.wav index a20748bb33527a238ec6fb967aff5fa27a170681..835213d7d387e263d025df4110815c9b9ddc133b 100644 GIT binary patch literal 5006 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 gar_%sgwJJ1>z$w;^+_*sDe2Up%_ssI20 literal 4026 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 diff --git a/phsource/ustop/q2.wav b/phsource/ustop/q2.wav new file mode 100644 index 0000000000000000000000000000000000000000..7584f6c7224477d2ca9d9147faf750cb55881b0b GIT binary patch literal 5392 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 eN=;wDY-wSN)H_b6L;3fYGN)JV1vO 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 literal 0 HcmV?d00001 From cd6a5c6834ad39f9c6ea5e5fee807154b3d79fb7 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Tue, 12 Feb 2013 19:19:48 +0000 Subject: [PATCH 3/6] 1.46.34 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/en_list | 94 +++++---- dictsource/en_rules | 54 ++++-- dictsource/pt_list | 21 +- dictsource/pt_rules | 23 ++- dictsource/vi_rules | 70 ++++--- phsource/envelopes.png | Bin 20340 -> 20195 bytes phsource/ph_english_us | 11 +- phsource/ph_pt_brazil | 8 +- phsource/ph_vietnam | 412 ++++++++++++++++++++++++++++++++++++++++ phsource/phonemes | 2 +- phsource/vdiph/eei_5 | Bin 0 -> 9899 bytes phsource/vietnam/_c.wav | Bin 0 -> 954 bytes phsource/vietnam/a | Bin 0 -> 5631 bytes phsource/vietnam/ch.wav | Bin 0 -> 2774 bytes phsource/vietnam/dd.wav | Bin 0 -> 2924 bytes phsource/vietnam/kh.wav | Bin 0 -> 2774 bytes phsource/vietnam/n.wav | Bin 0 -> 4288 bytes phsource/vietnam/nh.wav | Bin 0 -> 3834 bytes phsource/vietnam/nn | Bin 0 -> 4516 bytes phsource/vietnam/oe | Bin 0 -> 1986 bytes phsource/vietnam/oong | Bin 0 -> 3186 bytes phsource/vietnam/th.wav | Bin 0 -> 3076 bytes phsource/vietnam/tr.wav | Bin 0 -> 1534 bytes src/compiledata.cpp | 14 +- src/dictionary.cpp | 6 +- src/synthdata.cpp | 4 +- src/vowelchart.cpp | 8 +- 27 files changed, 610 insertions(+), 117 deletions(-) create mode 100644 phsource/ph_vietnam create mode 100644 phsource/vdiph/eei_5 create mode 100644 phsource/vietnam/_c.wav create mode 100644 phsource/vietnam/a create mode 100644 phsource/vietnam/ch.wav create mode 100644 phsource/vietnam/dd.wav create mode 100644 phsource/vietnam/kh.wav create mode 100644 phsource/vietnam/n.wav create mode 100644 phsource/vietnam/nh.wav create mode 100644 phsource/vietnam/nn create mode 100644 phsource/vietnam/oe create mode 100644 phsource/vietnam/oong create mode 100644 phsource/vietnam/th.wav create mode 100644 phsource/vietnam/tr.wav diff --git a/dictsource/en_list b/dictsource/en_list index 8925a438..3d09e013 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -345,6 +345,7 @@ _90o n'aInti@ abc $abbrev ac $abbrev adf $abbrev +afk $abbrev (a . k . a .) aka#_! agpl $abbrev agm $abbrev @@ -405,6 +406,7 @@ nypd $abbrev nypsd $abbrev nyse $abbrev nyt $abbrev +ocr $abbrev oecd $abbrev oem $abbrev ok $abbrev @@ -510,6 +512,7 @@ adieus a#dju:z adieux a#dju:z adios aDj'o:s admirable adm@r@b@L +admirably adm@r@bli admonition adm@n'IS@n ado a#du: adobe a#doUbi @@ -585,6 +588,7 @@ amass a#mas ambassador a#mbas@d3 ambidextrous $3 amen ,A:m'En $onlys +?3 amen ,eIm'En amok a#m0k amoral eIm'0r@L amount a#maUnt @@ -612,6 +616,7 @@ anonymous a#n0n@m@s another a#nVD3 ante anti: antecedent antIs'i:d@nt +?3 anti antaI antibody $1 antichrist $1 anticline $1 @@ -720,7 +725,8 @@ ballot bal@t baloney b@loUni bagel beIg@L banal beIn@L -banana b@nA:n@ +banana $alt3 +?3 banana ba#nan@ banged baNgd banquet baNkwI2t barbeque bA@b@kju: @@ -748,6 +754,7 @@ basal beIs@L best bEst bestest bEst@st beta bi:t@ +?3 beta beIt@ betake bI2teIk beverage bEv@rI2dZ bias baI@s @@ -829,6 +836,7 @@ cadet $alt3 cadre kA:d3 caesar si:z3 cafe kafeI +?3 caffeine $2 cahoot $alt3 cajole $alt3 cajun keIdZ@n @@ -839,6 +847,7 @@ calv kA:v // for calved, calving ?3 calv kav // for calved, calving calve kA:v ?3 calve kav +camaraderie kam@r'A:d@ri cameo kamIoU camouflage kam@flA:Z campus kamp@s // campuses @@ -986,6 +995,8 @@ commence k@mEns commend k@mEnd comment k0mEnt commentary k0m@ntrI +?3 commentary k0m@ntEri +commi k0mI commie k0mI committee k@mIti communique k@mju:nI2keI @@ -996,6 +1007,7 @@ competing k@mp'i:tIN competition k0mp@t'IS@n compromise k0mpr@maIz compound $2 $verb +?3 comrade k0mrad con k0n concert $1 $onlys concert $verb @@ -1074,6 +1086,7 @@ crooked krUkId cuckoo kUku: cupboard kVb@d curate kjU@reIt +?3 current k'3:@nt curse k3:s ?5 curse kVRs customer k'Vst@m3 @@ -1125,6 +1138,7 @@ denier dI2naI3 denouement deIn'u:mO~ deny dI2naI depot dEpoU +?3 depot di:poU derange dI2reIndZ descry dI2skreI desert dI2z3:t @@ -1132,6 +1146,7 @@ desert dEs3t $only desert dI2z3:t $verb desolate dEs@l@t desperate dEsp@r@t +?3 detail $2 detente deIt'0nt détente deIt'0nt detritus dI2traIt@s @@ -1142,6 +1157,7 @@ devotee dEvoUt'i: di d,I $only diabetes daI@b'i:ti:z diagnose $3 +?3 dialog daI|@lO:g diameter daI'amI2t3 diaper daIp3 diaphanous daI'af@n@s @@ -1244,6 +1260,8 @@ entrance Entr'aans $verb entree 0ntreI envelope Env@loUp $only envelopes Env@loUps +?3 envelope A:nv@loUp +?3 envelopes A:nv@loUps envelope $verb epaulet Ep@l'Et epiphany I2pIf@nI @@ -1260,6 +1278,7 @@ eraser I2reIz3 ere e@ $only eros i@r0s err 3: +?3 err e@ errand Er@nd escallop Esk'A:l@p escapism Esk'eIpI2z@m @@ -1367,6 +1386,7 @@ formid fO@m'Id // formidable formica fO@m'aIk@ fortunate fO@tS@n@t fortune fO@tSu:n +?3 fortune fO@tS@n foyer fOIeI freelance fri:laans freon fri:0n @@ -1393,6 +1413,7 @@ gala gA:l@ galaxy gala#ksi galileo galI2l'eIoU galore $alt3 +?3 garage ga#rA:Z garish ge@rIS gases gasI#z gauche goUS @@ -1466,6 +1487,7 @@ helium hi:li@m helix hi:lIks hello h@loU henceforth hEnsfo@T +?3 herb 3:b hercules h3:kjUli:z heretical hI2rEtI2k@L hereto hi@3'tu: @@ -1509,6 +1531,7 @@ hunger hVNg3 hurrah h@r'A: hurrah hVr'eI hurricane hVrI2keIn +?3 hurricane h3:@keIn hussar hVz'A@ huzza h@z'A: huzzah h@z'A: @@ -1560,6 +1583,7 @@ inherit Inh'ErIt // inherited innard In3d inner In3 innovative In@veItIv +?3 inquiry Inkw@ri insect $1 insert Ins3:t $onlys insert Ins'3:t $verb @@ -1591,6 +1615,7 @@ interval Int3v@L interven Int3v'i:n // for intervening intray IntreI intro $1 +?3 investigative Inv,EstI2g'eItIv irate aIr'eIt iris aIrIs iron aI3n @@ -1632,6 +1657,7 @@ kowtow kaUt2aU la ,la $only laboratory la#b'0r@trI +?3 laboratory labr@tO:ri labor leIb3 labored leIb@d laborer leIb@r3 @@ -1649,6 +1675,7 @@ lasso las'u: ?3 lasso lasoU latrine $alt3 latte lA:t2eI +?3 launch lA:ntS lawyer lOI3 lava lA:v@ le l@_| $only @@ -1705,6 +1732,7 @@ looser lu:z3 lorenz l0r@nts los ,l0s $only losing lu:zIN // misspell +?3 lost lOst lukewarm lu:kwO@m lullaby lVl@baI lunatic lu:n@tIk @@ -1734,6 +1762,7 @@ mall mal ?3 mall mO:l mama mA:ma# mammoth mam@T +manageress manI2dZ@r'Es mandate $2 $verb manganese $1 manger meIndZ3 @@ -1843,6 +1872,7 @@ moustache m@st'aaS mouths maUDz $only movies mu:vIz mozilla m@zIl@ +?3 multi mVltaI multitude $1 multiplexer $1 mundane $2 @@ -2003,10 +2033,12 @@ parole $alt3 passenger pasI2ndZ3 passerby pas3b'aI passersby pas3zb'aI +?3 pasta pA:st@ pasted peIstI#d pasting peIstIN pastry peIstri pate pat2eI +?3 patent pat@nt pathetic $alt3 pathos peIT0s patio patIoU @@ -2115,6 +2147,8 @@ pretrial pri:tr'aI|@L pretty prIti pretzel prEts@L primeval praIm'i:v@L +pristine $2 +?3 privacy praIv@si privation praIv'eIS@n privilege prIvI2lI2dZ privy prIvi @@ -2159,6 +2193,7 @@ pythagoras paIT'ag@r@s python paIT@n pyramidal pI2r'amId@L +quadrilateral $3 quash kw0S quaternary kw@t3:n@rI qubit kju:bIt @@ -2263,6 +2298,7 @@ requiem rEkwI2Em reservation rEz3v'eIS@n reservoir rEz3vwA@ resin rEzIn +?3 respite rEspI2t restive rEstIv respiration rEspI#r'eIS@n respiratory rI2spIr@t@rI @@ -2293,6 +2329,7 @@ robust roUb'Vst romance roUm'ans rotate $2 rotund roUt'Vnd +roundtable $alt1 rouse raUz rout raUt // for routed routine $2 @@ -2360,6 +2397,7 @@ segue sEgweI separate sEp@-r@t separate sEp3reIt $verb semen si:m@n +?3 semi sEmaI semibreve $1 semicircle $1 semicolon sEmIk'oUl@n @@ -2548,6 +2586,7 @@ testes tEsti:z telephon tElI2foUn // for telephoning temperature tEmprI2tS3 ?!3 temporary tEmpr@rI +?3 template tEmpl@t thereof ,De@'0v thereon ,De@'0n thereto ,De@'tu: @@ -2572,6 +2611,7 @@ tis tIz $only toboggan t@b0g@n today t@deI todo t@du: +?3 tomato t@meItoU ton tVn $onlys tonage tVnIdZ tone toUn @@ -2595,7 +2635,7 @@ travesty trav@sti treatise tri:tIz triage tri:A:Z tribunal traIb'ju:n@L -triceratops $2 +triceratops traIs'Er@t0ps tricycle traIsIk@L trilogy trIl@dZi trio tri:oU @@ -2777,6 +2817,7 @@ yoghurt j0g3t yoyo joUjoU zavala $alt3 +?3 zebra zi:br@ zulus zu:lu:z @@ -2925,8 +2966,11 @@ Euphrates ju:fr'eIti:z Eyjafjalla eIja#fjatla# Folkestone foUkstoUn Fuego fweIgoU +Gabon gab0n +?3 Gabon ga#boUn Geneva dZ@ni:v@ Gdansk g@-dansk +Gibraltar $2 Gomera goUm'e@r@ Harare ha#rA:ri Hanoi han'OI @@ -2948,6 +2992,7 @@ Ipanema Ipa#n'i:m@ Israeli Izr'eIli Istanbul ,Ist,anb'Ul Italia It'alI2@ // Italian(s) +Ithaca IT@k@ Jakarta $alt3 Jerusalem dZ@ru:s@l@m Johannesburg $2 @@ -3018,6 +3063,7 @@ Noumea nu:m'eI@ Oahu oU'A:hu: Oklahoma oUkla#h'oUm@ Ohio oUh'aIoU +Omagh oUmA: Omaha oUma#hA: Oman oUm'an Oregon 0rI2g@n @@ -3074,7 +3120,6 @@ Tehran te@r'A:n (tel aviv) t,El||a#v'i:v Tenerife tEn3r'i:f Tennessee tEn@s'i: -Texas tEks@s Tijuana ti@w'A:n@ Tikal tI2kA:l Timor ti:mo@ @@ -3161,6 +3206,7 @@ Betsy bEtsi Betsey bEtsi Bjarne bjA@n@ Boris b0rIs +Bremen brEm@n Brianna brI'an@ Brien braI@n Caiseal kaS@L @@ -3448,6 +3494,7 @@ Dante dA:nt2eI Deslauriers dI2lo@rIeI Deveraux dEv3roU Disney dIzni +?3 Dolby doUlbi Dolce d0ltSeI Dvorak d@-vo@Zak Emory Em3ri @@ -3461,6 +3508,7 @@ Jacobi dZa#koUbi Kendell kEnd@L Kyocera kaI|@s'i@r@ Lamaze la#mA:z +Laurell $2 Mackenna m@kEn@ Mackenzie m@kEnzi Medusa m@du:s@ @@ -3476,6 +3524,7 @@ Rameses ram@si:z Ramirez ra#mi@3rEz Reagan reIg@n Reid ri:d +Remi r@ni: Reuter rOIt3 Rivera rI2ve@r@ Rizzoli rI2zoUli @@ -3537,8 +3586,8 @@ of 0v $u $only ?6 (of which) VvwItS $2 $pause for fO@ $u -(for a) f@@ $nounf -(for an) f@@n $nounf +(for a) f3@ $nounf +(for an) f3@n $nounf (for the) f3D@2 $nounf (for a while) f@@||w'aIl (for one) fO@w0n $2 $atend @@ -3818,8 +3867,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 $only -?3 our aU3 $u $nounf $only +our aU@ $u $nounf $onlys +?3 our aU3 $u $nounf $onlys your jO@ $u $nounf $only ?6 your jU@ $u $nounf $only their De@ $u $nounf $only @@ -3962,35 +4011,4 @@ like laIk $strend2 ?3 virile vIr@L ?3 volatile v0la#t@L -?3 amen ,eIm'En -?3 anti antaI -?3 banana ba#nan@ -?3 beta beIt@ -?3 caffeine $2 -?3 comrade k0mrad -?3 commentary k0m@ntEri -?3 current k'3@nt -?3 depot di:poU -?3 detail $2 -?3 dialog daI|@lO:g -?3 envelope A:nv@loUp -?3 err e@ -?3 fortune fO@tS@n -?3 garage ga#rA:Z -?3 herb 3:b -?3 hurricane h3:@keIn -?3 inquiry Inkw@ri -?3 investigative Inv,EstI2g'eItIv -?3 laboratory labr@tO:ri -?3 launch lA:ntS -?3 lost lOst -?3 multi mVltaI -?3 pasta pA:st@ -?3 patent pat@nt -?3 privacy praIv@si -?3 respite rEspI2t -?3 semi sEmaI -?3 template tEmpl@t -?3 tomato t@meItoU -?3 zebra zi:br@ diff --git a/dictsource/en_rules b/dictsource/en_rules index 38237195..fc0bc044 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -60,6 +60,7 @@ a (Cee+ a a (BeCo_ a a (BerA a + a (BeroA# eI a (BerC a a (Bet a @) a (Bia 'eI @@ -448,7 +449,7 @@ @) age (ment I2dZ g) age (ment 'eIdZ m) ag (enta @dZ - agh (_ @ + agh (_ A:g agio (_ 'A:dZIoU t) agi (o eIdZ _) ag (l@ a#g @@ -575,7 +576,6 @@ _) al (y al alz alt|s &) al (_ @L - &) ally (_ @li ?8 &) al (_ a#l @) ally (_S2 %i @@c) ally (_S4 l%i @@ -678,6 +678,7 @@ _n) ame eIm &) am (ent @m amer (ic a#mEr + c) am (ero am c) am (el am am (i_ 'A:m ami (g a#mi: @@ -1265,6 +1266,7 @@ _) be (f bI2 _) beg (AnK b%Ig _) be (gg bE + _) belarus bEl@r'u:s _) be (lC bE _) be (lli bI2 _) be (sC bI2 @@ -1914,6 +1916,7 @@ discr) e (tion E eu ju: ?3 n) eu u: +?3 n) eu (r U@ r) eu (d OI eu (m_ 'i:@ s) eu (m_ 'i@ @@ -2463,6 +2466,7 @@ er (ve 3: s) er (van 3: ery (_ @r%i +?3 @@AC) ery (_ e@ri ery (A 3j _v) ery ErI2 qu) ery i@rI @@ -2731,6 +2735,7 @@ @) guay (_ gwaI gue (_ g gu (e g + _) gu (i g _) g (yn g o) g (y_ g g (ynous_ =dZ @@ -2954,7 +2959,8 @@ &) iary =j@r%I &l) iary =i@r%I _) ian i@n - &) ia (_ =i|@ + &) ia (_N =i|@ + &) ia (_ =i@ @@) ia (_ =i@ @) ian (cy I|@n l) iais I|eIz @@ -3108,7 +3114,7 @@ l) im Im _pr) im (a aIm sh) im (a_ 'i:m - im (age Im + image ImI2dZ l) ime aIm d) ime (ns aImE im (ent+ Im @@ -3378,7 +3384,7 @@ ir (able 'aI3 m) ir (ac Ir sp) iral aI3r@L - @) ir (ation I#r + @) ir (ation @r ir (ate =i@r consp) ira (t Ir@ ire aI3 @@ -3423,6 +3429,8 @@ prAm) is Is b) is (_ Is c) is (_ Is + @@m) is (_ Is + am) is (_S1 z @Cs) is (_ =Is &) is (abl aIz isa (tion aIzeI @@ -3839,6 +3847,7 @@ .group o o 0 + _) o 0 X) o 0# X) o ($w_alt3 %0# _) o'(P2 %oU // prefix @@ -3881,18 +3890,18 @@ o (bic_ 'oU n) o (bil oU _m) o (bil oU - o (bje %0# + o (bje %0 _) o (bl %0# n) o (bl oU o (bliga 0 o (bligato %0# o (blo 0 _r) o (bo oU - _) o (bs %0# - _) obs (er %0#bz + _) o (bs %0 + _) obs (er %0bz obso (l 0bs@ o (bstin 0 - _) o (bt %0# + _) o (bt %0 o (by_ oU f) o (cA oU _l) o (cA oU @@ -3920,7 +3929,6 @@ k) o (dA oU meth) o (d_ @ peri) o (d_ @ - o (da_ oU d) o (dec %oU m) o (del 0 m) o (der 0 @@ -4128,6 +4136,7 @@ @) ome (tre '0mI @) ome (try '0m@ &) omer (_ @m3 + c) omer (_ Vm3 gl) om (er 0m _p) om (e 0m _s) ome Vm @@ -4463,7 +4472,7 @@ c) ou (pl V &) our (_ 3 np) our (_ o@ - &) oured @d + &) oured 3d ev) our (ed aU@ our (n 3: ?5 our (n VR @@ -4680,7 +4689,11 @@ per (cus p3 _) peregrin pEr@grIn per (fec p3 + _) per (iC@@ p,Er + _) perini pErIn'i: per (iph p3r + _) per (isc pEr + _) per (ish pEr perme (a p3:mI per (miss p3 per (mit p3 @@ -5096,7 +5109,6 @@ ?8 ssion (_ =SVn 1_) st (_ _) st (_ s@nt - _) state (@ steIt stein staIn ti) ssue Su: _) s (u s @@ -5253,9 +5265,9 @@ tu (ous tSu: @) tur (A tS@r @) tur (al_ tS=@r - @) tur (y tS@r - @) tur (_ tS3 - ture (_ tS3 + &) tur (y tS@r + &) tur (_ tS3 + &) ture (_ tS3 tz ts tze (_ tsi @@ -5368,7 +5380,7 @@ ?3 n) uclear u:kli@3 ucul VkjUl @) u (da_ 'ju: -?3 @) u (da_ 'u: +?3 @L08) u (da_ 'u: b) u (ddh U u (esq ju: u (ga_ 'u: @@ -5418,7 +5430,7 @@ u (ly u: d) u (ly ju: z) u (l_ 'u: - um (_ @m + &) um (_ @m vol) u (m ju: u (ma_ 'u: h) u (man ju: @@ -5604,7 +5616,7 @@ @) ur (ation jUr ure (_ jU@ ur (ed_ jU@ - g) ured (_ @d + g) ured (_ 3d b) ur (e jU@r g) ure (_ 3 ?3 g) ure (_ j3 @@ -5678,7 +5690,9 @@ _) x (Y z xio (n kS@ xious =kS@s + xas (_ =ks@s xis (_ =ksIs + xus (_ =ks@s xu (a =kSu: lu) x (ur gZ ?3 lu) xu (r gZU@ @@ -5880,6 +5894,7 @@ Eri (A 'i@rI2 Er (ie_ @r Er (ic_ Er + Er (ous_ @r Er (_ 3 ad) Er (_S1 3 ad) Ers (_S2 3z @@ -5987,8 +6002,11 @@ // non-ascii characters with specified pronunciations // List the accented characters in en_list with the $accent attribute + á (X 'A: à a é eI + é (X 'eI + é (CA_ 'eI _) é %I ée i: ê E: diff --git a/dictsource/pt_list b/dictsource/pt_list index 7f079d00..1f39dd99 100644 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -493,10 +493,10 @@ era E*& $u1 // .. imperfect eram E*&U~ $u1 fui $u // .. preterite -foste $u +foste fostSy $u1 // & fostes foi $u fomos $u -fostes $u + fora $u // .. pluperfect fômamos $u @@ -723,17 +723,20 @@ cefaleia $alt cerca $alt $verb cerco $alt $verb cesta $alt2 +cesto $alt2 chamego $alt2 chefe $alt chinelo $alt choro $alt2 $noun chupeta $alt2 +clamores $alt2 coco $alt2 cofre $alt coice $alt2 colabore $alt colheste $alt2 colmeia $alt +colore $alt começo $alt2 $noun comodo $alt2 comera $alt2 @@ -784,7 +787,7 @@ discordo $alt dissermos $alt dobro $alt2 $noun doce $alt2 -doutoras $alt2 +doutora $alt2 droga $alt duelo $alt dueto $alt2 @@ -823,6 +826,7 @@ estiverdes $alt estiveres $alt estivermos $alt estrela $alt2 +estremeceste $alt2 estrofe $alt estorno $alt $verb estorvo $alt $verb @@ -854,7 +858,6 @@ fores $alt2 forro $alt $verb fosse $alt2 fossem $alt2 -foste $alt2 frevo $alt2 galera $alt gameta $alt2 @@ -867,6 +870,7 @@ gonorreia $alt gorda $alt2 gota $alt2 gozo $alt $verb +graveto $alt2 grego $alt2 grelha $alt grega $alt2 @@ -914,6 +918,7 @@ morcego $alt2 morda $alt2 moreia $alt mortos $alt +motora $alt2 ?2 mulher mulj'Er ?4 mulher mul^'Er mui mwi @@ -962,6 +967,7 @@ pesquem $alt peso $alt peso $alt2 $noun piloto $alt2 +pintora $alt2 pirueta $alt2 plateia $alt plebeia $alt @@ -1005,6 +1011,8 @@ rocha $alt rock $alt rogas $alt rolo $alt2 $noun +rosna $alt +rumores $alt2 saleta $alt2 sarjeta $alt severa $alt @@ -1016,7 +1024,7 @@ selo $alt $verb selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 -sesta $alt2 +senhores $alt2 sincera $alt sincero $alt sinopse $alt @@ -1031,12 +1039,14 @@ sogra $alt sopre $alt soprem $alt sopro $alt $verb +soro $alt2 sorvete $alt2 sossego $alt2 $noun souberdes $alt soubermos $alt suborno $alt $verb sufoco $alt2 $noun +sufocos $alt2 sugere $alt sugerem $alt suporto $alt @@ -1059,6 +1069,7 @@ torres $alt2 tortos $alt traqueia $alt travesso $alt2 +tremores $alt2 trevo $alt2 troco $alt2 $noun tropa $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 77d410ca..6cece1b7 100644 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -21,6 +21,7 @@ .L04 a am e em o ue uem .L05 r ra ram re rem rdes .L06 ra ram ste re rem +.L07 se sem te .group a @@ -366,7 +367,7 @@ _comprom) e (tL03_ e _sol) e (trL03_ E _atr) e (vL03_ e - _escr) e (vL03_ e + scr) e (vL03_ e // e- in- pre- ree- _descr) e (vL03_ e _embel) e (zL04_ E _pr) e (zL04_ E @@ -405,6 +406,26 @@ _reconh) e (çL03_ e _arref) e (çL01_ e _beb) e (ssL02_ e com) e (ssL02_ e + _corr) e (ssL02_ e + _morr) e (sL07_ e + _adoec) e (sL07_ e + _torc) e (sL07_ e + _viv) e (sL07_ e + _eleg) e (sL07_ e + respond) e (sL07_ e // & corres- + entend) e (sL07_ e +compreend) e (sL07_ e +interromp) e (sL07_ e +intromet) e (sL07_ e +_escond) e (sL07_ e + _bat) e (sL07_ e + _sofr) e (sL07_ e + l) e (que_ E + _p) e (quL02_ E + _s) e (quL02_ E + _) e (rguL02_ E + _enx) e (rguL02_ E + _alb) e (rguL02_ E //endsort _exag) e (L05_ E diff --git a/dictsource/vi_rules b/dictsource/vi_rules index bb58847a..6e8db88f 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -83,12 +83,12 @@ ỵ ỵ _) b _b .group c - c k + c g //k c (_ kh ch c // try [tS;] [tS] [c] .group d - d J // try [z] [J] [dZ] [dZ;] [J^] + d J^ // try [z] [J] [dZ] [dZ;] [J^] .group đ đ d @@ -101,13 +101,13 @@ ỵ ỵ .group g g Q // try [g] [Q] gh Q // or [g] [Q] - g (i D // try [D] [z] [j] [J^] [z;] [J] [dZ] - g (ì D - g (í D - g (ỉ D - g (ĩ D - g (ị D - gi D + g (i J^ // try [D] [z] [j] [J^] [z;] [J] [dZ] + g (ì J^ + g (í J^ + g (ỉ J^ + g (ĩ J^ + g (ị J^ + gi J^ .group h h h @@ -133,7 +133,7 @@ ỵ ỵ ng N ngh N nh n^ - + .group ñ ñ n^ @@ -144,7 +144,7 @@ ỵ ỵ .group q q k q (_ kh - qu kw + qu w //kw .group r r z. // try [z] [z.] [r] [z;] @@ -183,11 +183,11 @@ ỵ ỵ aĩ a:I5 aị a:I6 ay aI - aỳ aI2 + aỳ aI2 aý aI3 aỷ aI4 - aỹ aI5 - aỵ aI6 + aỹ aI5 + aỵ aI6 ao a:U aò a:U2 aó a:U3 @@ -402,64 +402,81 @@ ỵ ỵ //========================= .group o o O - o (A w + oa o@ // modify oa sound example: hoa,khoa // o (A w oi OI oì OI2 oí OI3 oỉ OI4 oĩ OI5 oị OI6 - + ong O# + oe o& // Adding oe sound example: lóe sáng,toét mắt .group ò ò O2 òi OI2 - ò (A w2 + òa o@2 //ò (A w2 + òng O#2 + òe o&2 .group ó ó O3 ói OI3 - ó (A w3 + óa o@3 //ó (A w3 + óng O#3 + óe o&3 .group ỏ ỏ O4 ỏi OI4 - ỏ (A w4 + ỏa o@4 //ỏ (A w4 + ỏng O#4 + ỏe o&4 .group õ õ O5 õi OI5 - õ (A w5 + õa o@5 //õ (A w5 + õng O#5 + õe o&5 .group ọ ọ O6 ọi OI6 - ọ (A w6 + ọa o@6 //ọ (A w6 + ọng O#6 + ọe o&6 //============================= .group ô ô o ôi oI + ông o# // ông sound .group ồ ồ o2 ồi oI2 + ồng o#2 .group ố ố o3 ối oI3 + ống o#3 .group ổ ổ o4 ổi oI4 + ổng o#4 .group ỗ ỗ o5 ỗi oI5 + ỗng o#5 .group ộ ộ o6 ội oI6 + ộng o#6 @@ -525,36 +542,41 @@ ỵ ỵ uổi u@j4 uỗi u@j5 uội u@j6 - + //ung u# .group ù ù u2 ù (A w2 ùi uI2 ùa u@2 + //ùng u#2 .group ú ú u3 ú (A w3 úi uI3 úa u@3 + //úng u#3 .group ủ ủ u4 ủ (A w4 ủi uI4 ủa u@4 + //ủng u#4 .group ũ ũ u5 ũ (A w5 ũi uI5 ũa u@5 + //ũng u#5 .group ụ ụ u6 ụ (A w6 ụi uI6 ụa u@6 + //ụng u#6 //============================= .group ư @@ -696,13 +718,13 @@ ỵ ỵ .group - % f'@2n||tS;'am + % f'@2n||cr'am ! _:c'@3m_|t'a:7n_: ! (\! // : koUl@n D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 $ d'o||l'a - != x,o1N_|_b'a2N_ + != x'o#_|_b'a2N_ >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N diff --git a/phsource/envelopes.png b/phsource/envelopes.png index aa95e8da0714d7689f8c3df3f1df72663a7a77f1..b5bc5213cf8a8d43f9fb66484b6053819a0ab45f 100644 GIT binary patch literal 20195 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�PhQ;4F9>UQT`uM68r==ct=Njd!k?59}fHs5H=Z& zjL_ugeJmy7v}Ye&Cp|ULY%_P@kKC5<4_b_r-+%2d6VCpd`|g16oc0DN-w{}P-pt7g z31GMXoxJeYpwg?&EwLtl)q9ltkD2<3{}DaECSOEEiTl=<{_EeqeY2s?|6G_IPd||1 zT)cE-OK2vZTIaMV;u?+rFUmPtk*w?wBb& z#J>J!ri327^k+G2=1In1i~Wn4Bjz=K{>gC|?u?Wu@d>6O+#`sUJ4Kykj5rSNFY zC8wm6jJi92e?9qGwL?~hmf&bZ!qWv7@^$$cidhg6p-_@DGOE5DZm7D≪M2sK4MzuL{Z{d4r@M-`zuKT-|D`wkiq+3X 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 N`X>!_^0hEQ{|5%BIynFU diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 540afc0e..c15b7ddd 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -41,14 +41,6 @@ phoneme @2 // Schwa, changes to I before a vowel FMT(vowel/@_low2) endphoneme -phoneme @L - vowel starttype #@ endtype l - ipa əl - unstressed - length 160 - FMT(vwl_en/@L) -endphoneme - phoneme a vowel starttype #e endtype #@ @@ -176,6 +168,7 @@ phoneme 3: vowel starttype #@ endtype #@ length 240 IfNextVowelAppend(r-) + ChangeIfDiminished(3) FMT(vwl_en_us/3_us2) endphoneme @@ -265,7 +258,7 @@ endphoneme phoneme eI vowel starttype #e endtype #i length 230 - FMT(vdiph2/ei_4) + FMT(vdiph/eei_5) endphoneme diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index 432b6abe..a6bba543 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -39,7 +39,6 @@ phoneme &~ vowel starttype #@ endtype #@ ipa ɐU+0303 length 180 -// ChangeIfNotStressed(&) FMT(vnasal/a#_n) endphoneme @@ -225,3 +224,10 @@ phoneme * endphoneme +// TESTING +phoneme &2~ + vowel starttype #@ endtype #@ + ipa ɐU+0303 + length 200 + FMT(vnasal/W_n) +endphoneme diff --git a/phsource/ph_vietnam b/phsource/ph_vietnam new file mode 100644 index 00000000..eef7563f --- /dev/null +++ b/phsource/ph_vietnam @@ -0,0 +1,412 @@ + +//==================================================== +// Vietnamese Phonemes +//==================================================== + + +phoneme 1 // ngang tone: level + stress + Tone(28, 32, envelope/p_level, NULL) +endphoneme + + +phoneme 2 // huyền tone: low falling + stress + Tone(20, 8, envelope/p_fall, NULL) //20 +endphoneme + + +phoneme 3 // sắc Tone(rising + stress + Tone(25, 50, envelope/p_rise, NULL) // 25 +endphoneme + + +phoneme 4 // hỏi Tone(curve (dipping rising) + stress + Tone(30, 5, envelope/p_fallrise, NULL) +endphoneme + + +phoneme 5 // ngã tone: broken (creaking rising) + stress + Tone(28,58, envelope/p_214, envelope/vi_5amp) // 28,58 +endphoneme + + +phoneme 6 // nặng Tone(drop (constricted) + stress + //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel + Tone(40, 20, envelope/p_512, envelope/vi_6amp) +endphoneme + + +phoneme 7 // Tone(1 (ngang) at end of clause + stress + Tone(40, 20, envelope/p_fall, NULL) +endphoneme + + + +// Vowels +//======= + + +phoneme a + vowel starttype #@ endtype #@ + length 120 + FMT(vowel/a_6) //a_4) +endphoneme + +phoneme a: + vowel starttype #a endtype #a + length 200 //280 + FMT(vietnam/a) //FMT(vowel/a_6) +endphoneme + + +phoneme E + vowel starttype #e endtype #e + length 200 + FMT(vowel/ee_3) +endphoneme + +phoneme e + vowel starttype #e endtype #e + length 200 + FMT(vowel/e) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 190 + IfNextVowelAppend(;) + IF prevPhW(w) THEN + VowelStart(w/wi) + ENDIF + FMT(vowel/i_4) +endphoneme + + +phoneme O + vowel starttype #o endtype #o + IF nextPh(kh) THEN + length 95 + ELSE + length 200 + ENDIF + FMT(vowel/aa_4) +endphoneme + +phoneme o + vowel starttype #o endtype #o + IF nextPh(kh) THEN + length 95 + ELSE + length 200 + ENDIF + FMT(vowel/o_2) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound + length 120 + ELSE + length 200 + ENDIF + FMT(vnasal/u_n) //vowel/u_7) +endphoneme + +phoneme y + vowel starttype #u endtype #u + IF nextPh(kh) OR nextPh(N) THEN + length 120 + ELSE + length 200 + ENDIF + FMT(vowel/u#_5) +endphoneme + + + +phoneme @ + vowel starttype #@ endtype #a + IF nextPh(kh) OR nextPh(N) THEN + length 120 + ELSE + length 170 + ENDIF + FMT(vowel/V) //vowel/@_2) +endphoneme + + +phoneme @: + vowel starttype #@ endtype #@ + length 280 + FMT(vowel/@_2) +endphoneme + + + +// Diphthongs +//=========== + +phoneme aI + vowel starttype #a endtype #i + length 200 //250 + FMT(vdiph/&y) +endphoneme + + +phoneme a:I + vowel starttype #a endtype #i + length 200 //250 + FMT(vdiph/ai) +endphoneme + + +phoneme @I + vowel starttype #@ endtype #i + length 200 //250 + FMT(vdiph/@i) +endphoneme + + +phoneme @:I + vowel starttype #@ endtype #i + length 200 //250 + FMT(vdiph/@i) +endphoneme + + +phoneme eI + vowel starttype #e endtype #i + length 200 + FMT(vdiph/ei) +endphoneme + + +phoneme EI + vowel starttype #e endtype #i + length 200 + FMT(vdiph/eei) +endphoneme + + +phoneme OI + vowel starttype #o endtype #i + length 200 + FMT(vdiph/0i) +endphoneme + + +phoneme oI + vowel starttype #o endtype #i + length 200 + FMT(vdiph/oi) +endphoneme + + +phoneme uI + vowel starttype #u endtype #i + length 200 + FMT(vdiph/ui) +endphoneme + +phoneme yI + vowel starttype #u endtype #i + length 200 + FMT(vdiph/u-i) +endphoneme + + + + +phoneme aU + vowel starttype #a endtype #u + length 210 + FMT(vdiph/aau_4) +endphoneme + + +phoneme a:U + vowel starttype #a endtype #u + length 230 //270 + FMT(vdiph/au) +endphoneme + + +phoneme eU + vowel starttype #e endtype #u + length 200 + FMT(vdiph/eu) +endphoneme + + +phoneme EU + vowel starttype #e endtype #u + length 200 + FMT(vdiph/eeu) +endphoneme + +phoneme iU + vowel starttype #i endtype #u + length 200 + FMT(vdiph2/iu) +endphoneme + +phoneme @U + vowel starttype #@ endtype #u + length 200 + FMT(vdiph/@u_3) +endphoneme + +phoneme @:U + vowel starttype #@ endtype #u + length 270 + FMT(vdiph/@u) +endphoneme + + + +phoneme i@ + vowel starttype #i endtype #@ + length 240 + FMT(vdiph2/ii@_3) +endphoneme + +phoneme y@ + vowel starttype #i endtype #@ + length 200 + FMT(vdiph2/y-y#) +endphoneme + +phoneme u@ + vowel starttype #u endtype #@ + length 200 + FMT(vdiph2/uu@) +endphoneme + +// Addition Dipthongs + +phoneme o# // ông + vowel starttype #o endtype #o + length 200 + FMT(vnasal/a#u_n) +endphoneme + +phoneme O# // ong + vowel starttype #o endtype #o + length 200 + FMT(vnasal/&u_n) +endphoneme + + +phoneme o@ + vowel starttype #o endtype #o + length 160 + FMT(vdiph2/oa) +endphoneme + +phoneme o& + vowel starttype #o endtype #o + length 160 + FMT(vietnam/oe) +endphoneme + +phoneme kh + vls vel frc + lengthmod 3 + Vowelin f1=0 f2=2300 200 400 f3=200 80 + Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 + WAV(vietnam/_c,5) //ufric/x, 50) +endphoneme + + +phoneme l + liquid + lengthmod 7 + //IF nextPh(isNotVowel) THEN + // ChangePhoneme(l/2) + //ENDIF + + //CALL vowelstart_l + + FMT(l/l_vi) +endphoneme + +phoneme t + vls alv stop + //voicingswitch d + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + WAV(vietnam/th, 50) +endphoneme + +phoneme cr + vls pla afr sibilant + //voicingswitch dZ + lengthmod 2 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + + + WAV(vietnam/tr,10) +endphoneme + +phoneme d + vcd alv stop + lengthmod 5 + + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk +WAV(vietnam/dd) + endphoneme + + phoneme c + vls pal stop palatal + //voicingswitch J + lengthmod 2 + length 75 + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 + + + WAV(vietnam/ch,5) +endphoneme + + +phoneme p + vls blb stop + lengthmod 2 + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 + + WAV(ustop/p_unasp_,10) + +endphoneme + +phoneme n + vcd alv nasal + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 + Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk + lengthmod 4 +FMT(n/n#_) +endphoneme + +phoneme t[ // dental variant of /t/ + vls dnt stop + voicingswitch d[ + lengthmod 2 + Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 + Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + + IF nextPh(isPause2) THEN + WAV(ustop/t_unasp2, 5) + ENDIF + WAV(ustop/t_hi, 70) +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 10c1ae5c..b83cf47b 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1812,7 +1812,7 @@ phonemetable is base include ph_icelandic phonemetable vi base -include ph_vi +include ph_vietnam phonemetable zhy base include ph_zh_yue diff --git a/phsource/vdiph/eei_5 b/phsource/vdiph/eei_5 new file mode 100644 index 0000000000000000000000000000000000000000..50214664c19e828117aee8c988375f4e25eea77c GIT binary patch literal 9899 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 literal 0 HcmV?d00001 diff --git a/phsource/vietnam/_c.wav b/phsource/vietnam/_c.wav new file mode 100644 index 0000000000000000000000000000000000000000..a4c52741c2df01b51c5bf0021297bff4e9331f2c GIT binary patch literal 954 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

WbHCIQ4`I$DUfKN}tHr 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 TA|p&8F+9m+*5uX293}n_5c@dh literal 0 HcmV?d00001 diff --git a/phsource/vietnam/dd.wav b/phsource/vietnam/dd.wav new file mode 100644 index 0000000000000000000000000000000000000000..b139bce6fd1a8f55e3f22a3c45d5bfbf443c47e8 GIT binary patch literal 2924 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 D5x30G literal 0 HcmV?d00001 diff --git a/phsource/vietnam/kh.wav b/phsource/vietnam/kh.wav new file mode 100644 index 0000000000000000000000000000000000000000..aa3b2b1d974433df5b72fb2cc3770069d1bcc78a GIT binary patch literal 2774 zcmWNTd3es(631ue{N6XDmY_vTRh8;vsg|bEmNXQxN8AugZqQ3;BbJ*ek;+YCsVyp& zqN>&4#=Zo()G6h-p>&dl83bN-v>EHiWF`D-&T3G^6=YPv_E8+N;Z;68^$% zBnB7b0{z{_*)T28d~To#SQp#i7x)*9#X%Sf2jFF3`#dK?b?So6bUFVam9PosKs%@d zGa(#`kM$Z>!5%VBV)2~0VUoeev!pFH)D3R9jnJmJ2d7e3)0{@YJxHSm!0wTX z@8x~tgF^SNv~doaZ*?grXfN79!=bjIRE82fhufgHM!-hX%M^2dV3hUC*D^zXw8r+< zdnU)Z4|k;qe{j~AOZwCvkpMlxGcp18KoZC4^X3qwb2l4o2Wu!ku9)uF7mRjuTL(6~b9g@lQ4#c_@0{_pS~7XL)}?5u%JH%UqbUX_ z=w#WcKf#-5@TlD2bm)Z1Iz#r$APjZ}!k2Cw-_o19TJPCK?tWP0Jf^dlj1yog)bVV+ z<%+J-yYP1`kuXk_o;cK`Vup;D{rVCX!zq5uXQ2Qd(0>0?e3eVhE#D%ZRer1dyv?Eq za`kCmV5AxEvrZ(Pl~OYP18|nx%OG38soLD_>F%Q;zIf^ZlXMzslThIH3Ue9x=vC^;iJP+wbkDjJ77w31xqS1{67 zWLUf7pOow=V5+BqLXE-Kw1BJYzx0Tgq1$}jz5!{bf%y#PYjxT{3#8PJ)CBD)0X1-i zJvEU_cXSUAgaf7)7T9XC4&S4>8fshfZ7jprxu&hI$FZ-8pdwAyG&qT|rXIe-*&6Ds zqwV~Odzi~;g-PYqif;C67()zGxCY;VyGAKS|0Yr9yuXGSptE&@=0j!br#0+6ceA@y zEUw{c6`)m|e|viTKwE2jr^t6sSJ^clJ8C=m{x2cReO)&=$-bX7s(fHY6&y-+?WT$h zZR(%opGKeQZEmC^%pD4~6Ds;~9ZGT5VhVo+9eoR_gGTED3DXj|%u55k-I^Y=9A_~4 zbSe#TCeux5CrP%d)YBx*g707|h585h#!&>0l>6KXzvos@gUiqIM!gDsAY3lPVrR3n z-kC=ySmYH`4M+22-YVIcZF1Cg8|WiCL?6O?+{IqxNG;LzS}GH?6YVf{X_t1@qd3f& zMK4G*&e7HIvhK1$cDJ~A9aB7Q_kkEar5io2Rn{UYgfP<*r*So{Nx^trCUFK^T?|L$ zYiL2I)rZT>uW(kEk&mu<)L(21rM^?Dk?uMHx$Axc9bu)d3-=+HpWx3lMo{Rz&NbtDQ+7) zrwOo3n+W4x8qS+-Ky!4umx(_$kJdsFPl3Z!0udgMdSY+51JmFeXbW%1^HN2tNfDox zc92M)V}BM7rh716+QLip6tm$&9&ICVmQxBJ+lO4wlsM1fcAgBzdsg?<&w&aJ8WE!-#Ty?s4Zw{Vz9w3T%f% z@B-e@A$ouYo0{5>FX}IFSV}D0Lz<0!bT*giJe;l(0`Mzl<8l~@v2-2^bS9*0PtKKd z-v552Z+o7O#fe_*(|N88fL|a@I`apRj)$d*6i7Cw>nhXPOvZ=aOS|zh9zvC^_J6jk z__U?u+f2PaH_D^n1LsxkXB)@^eZ{1jGS0NS zu)4FC`rw~>9iHJnnZr$S3)JR%ypwCoOlStZc%0radFDP8!|yc2CUjt0QfizKm6R$sWEssZcWTJ(m?C-SjCDL*2u46S7HtQ%iA@HfhdS`OA93^@h3i;K~3l<`3}zHIghh6D#~T%y^Ic zN1-k@=Bz-Tt)s=-0h()7?jpnJigVuUGU?KWru!`Ju%Fv)x)alMuiK6zC35 nf1-^mZ-(819=I(ZEO`<~U&5&Js6Yn3;~ey+uDSA0Ug-Zny0=ut literal 0 HcmV?d00001 diff --git a/phsource/vietnam/n.wav b/phsource/vietnam/n.wav new file mode 100644 index 0000000000000000000000000000000000000000..46aeaa1fc4f13c50f1668d14e589719fd57799a0 GIT binary patch literal 4288 zcmWkx2UHc;*52pL%)OU;X%Y(t#ixmiN}?Dgv7jP~CHkT$V2KrbiHi7CtihJxi(PC) z6D-eyL`7q-Q3Fb%f+dz%VgoF+%Pli=_WsYmX02JX)|uI7pZ%4+C$3j)?1?~t#OQ?X zMe_#{|IzUDA9TZU$ zY64dw4X(?`7wC7YraWp7KSB$5NIl^K{0eR09yNxkV9A%#AGH?YA1}7O*Aam4>O;F>0EEE~HlDSD z+H#k4@@2hQ5^R)JEx=NA<6vscR!(^CB zd+0nJ!?m~^L-qZy=cF<59Xy|4<@} zV5;2r46ULp;4BNuU z%CiinuVqylu-2?2i=_~3gx$nr(MVQv75vH8!Wg`bgcTUT8uAMEffC7s>4{{^Q@lgn zC0{Oq0ijfd&m^+fD2ji=qA8x1VNDz;5sjx9=tf=9Dl^R&tzj)Y06#zt@THUFC#!Q6 z{$ha);T-so8=FgnzJU{vNH6g-nZaV{FV8((Rwx(d&<>gfC&8cH1|%0vpd8_k3nkaL z$`e1A%b>wSV%XpD_wyj zum%%w8T`Svv-$8V7GXZbOJyEq(J%v36%3LS9%32;5uc>jN>7UZHKYs15YUr=RqAlMd~#|Mw(6+DUjAt0y_d5r3MP+8y%q~ z%%lLY!fuSiDY1UL?+Zp;$9~jAE@H7uZD&~XaBg?H>Z z^kBhq$79kL!muS2vuSigoW;MzIg{aP>cbi;;XGKPbPyMbVepUgR4L=r`9-jkSA>eM z&;{A-L-tsr)lsr~9{RAmJXc2CAYG>xM&NvEAbq`r;-sp7#|QMG>?Q5kX4x?^q?g{3 z>N^09_)7j1meN4kU4Fu?G?y*ri&zq==n)=FkvhBxT_j`M(`b52Q{X!m#Y5O8skJ(? z3awc>8wS;~lY~l_ER-C7M~`3>Pj1K9x3m}z#mVD2lv9yyWz)ZG-b&$TdhtfqH zJ_QfFp)F98eGGv#QD*Q4{iK%#aL$+GN7zMr&R48A{{_l10t(np)&lbJF~#y%ERrsZ zVle|#BqwcTn5(3wTk`?Z)05ahzD~N)Hh2p|;680+D|t3`5+C6P93pB8z(Op>U9^qw zP|nilqN(JE!aV%CQd>F116ex~_>D+3UsF1N0{=i6OQi)OfYyQ^>nGjzJRO(4`89ne zeRqqIZ^Yn6{9c@<^~zo)gO$Qf3c~JqpF&tI25=2Z`Il^`uws~G;T{^sZgD&BEm5(< zm!t|`I>@H6FO>dTcYa$Gn47RCpQhZT80m8}1(->)1K4N{bl~GDLCl3rHCeq0mt_7q zbU;LkaOvPng_ZX6Yw*3%$&7_t^f_Hqezc~k&B#M@)HZypam1W1cUa1gQ>y51)Y7+` zSJ?_!@2z3%=d;;IW;|}?!<1f10vkUJXOF-7s5^!w@x1{e}MoWjGW^$qKZP8p)&vbep>4Z{8&D zA-n_);FcP0t7dt|I`c4o01jTj@3AZq=c_9^{mEM^%h>ODM+7q$_kjyIlm+tysxq77Xr9Y!n33M@5M@1MeXQ-{$An#XdAkTZ zxs93nHkzs?DJIm139uPnn5O%h5obN@f7#crHNkJq6K0Un+RTFz=!ODDtAB|6$_CDz z?0?n}OmP>p=KjyDrJgXoqiu@M1oN3^H-B#F4>ipV@LowZ!>d&1N!J(7yWU53t>#w$ z;kInsc3UiER5Y)w$vRt$*ssdZj_dZetjN{RInmt7A7dNyK0Yvasa7V=qm6(91((9(0yGgj&Cd)1MxkeCLWz~afR z^6Jt23_F8Y@Gk$$vOo*xhoG*JQnjo)Ls)2^sHbGvlYKsSf{jNiQYfGXO%GPJ^qJw(C<@Unw6IN>qwf}V z`BO30eaIc52N(kl(>>n#L=U&-+SjTJ;HDC2b?`ApOS)}Mu-)NnaG#jYYuK78_ zE~h;HU9-{@m*SiBfzv)m)3u)LsmE}4q!M^!oYaVznFk0E*dhdL$ z|69)OiLgce$=Xv9W|?P`vu(w`il>#Qs&scD3F|t)QGOOn4>3kRZv^3Zb&#JeaGE_v zZO>lfO>?SI=$+uTn+HUUe#p~}^|LQl9iA8NN8sdV&CcHWqJod$ZgJ6U4|UX5{D_`s zw0E2hDzRihGvC=k=e66_yDM|N?aa$gUYTnA#hcM_S7hZT&u=`Ba$H&FbbGS>I)RvN zEez~yuf_u`)4sxS*Fu=;&7^buaCKyvpV5#1W1jcS_l)$mlAUl5G|>`OMb3m@|6|kZ_gE9sO)0dJawY>}$;MH1+&q%oK>{ z)%T7m{>L1Hd`??>P^?*`J+ZfD7mZV76Z6~wMmTL0i_MpMimO|7XK!0MPb%hDqNmc= zYFG|f4yb$OTvbOYRQoAzrHST++WJ-fKk7@zFOI)#&9u+S&#O80vP)$#&PJY7o@qug zYo)%WGVz{{;uLccF)hcZ&@bCB%VyC!s55vnoyJdj316w#sXk$B!9H$ucal@^S3aa*+QOZs01?`qDN$h%GS?BGC z6&75n_O)dBbn|QA-@=v!<=X#(^cssTQ+T4<8Vu= z-}8A@b$Nm(9(rhT_Hsu9p9aFI26eb`q9|f6+6Dp({qQ_l9U@$@V#Bqhd%M?Xddy# zSKfFXP*Pe|(|fi0sW Hc1-y{_-|_< literal 0 HcmV?d00001 diff --git a/phsource/vietnam/nh.wav b/phsource/vietnam/nh.wav new file mode 100644 index 0000000000000000000000000000000000000000..13f4f0d84d20bcefbff88958c20826cb0fa9f988 GIT binary patch literal 3834 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 G%Krht3Kwet literal 0 HcmV?d00001 diff --git a/phsource/vietnam/nn b/phsource/vietnam/nn new file mode 100644 index 0000000000000000000000000000000000000000..0e21b1f8f74e47c0bcc6d3728a35090491092ba5 GIT binary patch literal 4516 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 literal 0 HcmV?d00001 diff --git a/phsource/vietnam/oe b/phsource/vietnam/oe new file mode 100644 index 0000000000000000000000000000000000000000..887b009ceb9ea00ef70618c55d7c251a6e54b7fa GIT binary patch literal 1986 zcmcgtOKTHR6#g>Fq?7lfX`9C+O`D`fO`F<+m5OFi6dx^ETOkT6D8*VVwJM?@nw?!( zMBTZlf)8{df)olOGWrW#`|M9};X=iQ-@R#*NnKXW;m*1Dn|sepzVDnfqX%~F92*_! zQvghlt2jb${Tb>Pqq;U63(Gg^*btFD%P8;!(B_qS}8rB8VaZo$C(tW0-q3V-h3C(K?Ch$fAqB1#twp zvl%{mKZ4Riyf!mVh-i?gpWX*IcLW$W#gl0c9ql}wq$SYGXSVQO1f}n{%vt%ChWa^O zeO*JX@&?qgAt*Rr`!@qN_`;5|MTdE%(%h%KtLb3Jq7%^trEJmRm#Y$P9VhV;uQ7%mWXQTsKEjff7

PI`m;bcMf12hma>C z)Y7pL1+o`JjO!Tr^g=}wO@oJw`?&Vdyl}!r)XAB^Lex1YBXm$tp{R(Kq7pHwP#mQn zw|AS8Uqk&=krT3izdGS;1rzn~?{z5tp+iyo+d7mnjkmZ;ju)uJ82Rp!9Et1}Ec&TP z8?`B5FJ`F2862c4S;=0KI;@vDALJe{hl6apX&Uu#$@5}u=UnI@a1k>|wna^488ydf zNnSIxk`_Fs^!8|sIpD*cAzYjr{$R3x_x%SdDdQls3Dv)O#6yz+<(@8$HRraP1V!r{5CH2?< literal 0 HcmV?d00001 diff --git a/phsource/vietnam/oong b/phsource/vietnam/oong new file mode 100644 index 0000000000000000000000000000000000000000..31d235db6a44eb665d55a54b4f0757c0beb4faab GIT binary patch literal 3186 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[0] == NULL) - { - fprintf(stderr,"Error in %s_rules, no default rule group\n",name); - } // set up hash table for data_dictlist p = &(tr->data_dictlist[8]); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index f3dd6871..39e6d67d 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.33 08.Feb.13"; +const char *version_string = "1.46.34 12.Feb.13"; const int version_phdata = 0x014631; int option_device_number = -1; diff --git a/src/vowelchart.cpp b/src/vowelchart.cpp index b555afb9..aab1f2ce 100644 --- a/src/vowelchart.cpp +++ b/src/vowelchart.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -670,9 +670,9 @@ void MakeVowelLists(void) #define N_ENVELOPES 30 -int n_envelopes = 0; -char envelope_paths[N_ENVELOPES][80]; -unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; +extern int n_envelopes; +extern char envelope_paths[N_ENVELOPES][80]; +extern unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; #define HT_ENV 140 #define WD_ENV 128*2 From d07bc6bfa551e85b3cdb1afea4eca9533b79ee12 Mon Sep 17 00:00:00 2001 From: jonsd Date: Thu, 14 Feb 2013 09:04:31 +0000 Subject: [PATCH 4/6] [1.46.34] Changes to languages: pt, en, vi git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@300 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 17 ++-- dictsource/en_list | 94 +++++++++++------- dictsource/en_rules | 54 ++++++---- dictsource/pt_list | 21 +++- dictsource/pt_rules | 23 ++++- dictsource/vi_rules | 70 ++++++++----- phsource/compile_report | 42 +++++--- phsource/ph_english_us | 11 +-- phsource/ph_pt_brazil | 8 +- phsource/{ph_vi => ph_vietnam} | 174 +++++++++++++++++++++++++++------ phsource/phonemes | 2 +- src/compiledata.cpp | 14 +-- src/dictionary.cpp | 6 +- src/synthdata.cpp | 4 +- src/vowelchart.cpp | 8 +- 15 files changed, 379 insertions(+), 169 deletions(-) rename phsource/{ph_vi => ph_vietnam} (56%) mode change 100644 => 100755 diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 06d3281c..32e2dd66 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-02-08 +Dictionary en_dict 2013-02-12 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -377,7 +377,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-02-08 +Dictionary pt_dict 2013-02-11 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -489,16 +489,17 @@ p Q r R s S t tS v w z Z -Dictionary vi_dict 2010-05-11 +Dictionary vi_dict 2013-02-10 @ @: @:I @:U @I @U a a: a:I a:U aI aU e E eU EU -i i@ iU o O OI oI u -u@ uI y y@ yI +i i@ iU o O o# O# o& +o@ OI oI u u@ uI y y@ +yI -b c d D f g h j -J k kh l m n N n^ -p Q r s s. t t[ tS; +b c cr d D f g h +j J J^ k kh l m n +N n^ p Q s s. t t[ v w x z Z z. diff --git a/dictsource/en_list b/dictsource/en_list index 8925a438..3d09e013 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -345,6 +345,7 @@ _90o n'aInti@ abc $abbrev ac $abbrev adf $abbrev +afk $abbrev (a . k . a .) aka#_! agpl $abbrev agm $abbrev @@ -405,6 +406,7 @@ nypd $abbrev nypsd $abbrev nyse $abbrev nyt $abbrev +ocr $abbrev oecd $abbrev oem $abbrev ok $abbrev @@ -510,6 +512,7 @@ adieus a#dju:z adieux a#dju:z adios aDj'o:s admirable adm@r@b@L +admirably adm@r@bli admonition adm@n'IS@n ado a#du: adobe a#doUbi @@ -585,6 +588,7 @@ amass a#mas ambassador a#mbas@d3 ambidextrous $3 amen ,A:m'En $onlys +?3 amen ,eIm'En amok a#m0k amoral eIm'0r@L amount a#maUnt @@ -612,6 +616,7 @@ anonymous a#n0n@m@s another a#nVD3 ante anti: antecedent antIs'i:d@nt +?3 anti antaI antibody $1 antichrist $1 anticline $1 @@ -720,7 +725,8 @@ ballot bal@t baloney b@loUni bagel beIg@L banal beIn@L -banana b@nA:n@ +banana $alt3 +?3 banana ba#nan@ banged baNgd banquet baNkwI2t barbeque bA@b@kju: @@ -748,6 +754,7 @@ basal beIs@L best bEst bestest bEst@st beta bi:t@ +?3 beta beIt@ betake bI2teIk beverage bEv@rI2dZ bias baI@s @@ -829,6 +836,7 @@ cadet $alt3 cadre kA:d3 caesar si:z3 cafe kafeI +?3 caffeine $2 cahoot $alt3 cajole $alt3 cajun keIdZ@n @@ -839,6 +847,7 @@ calv kA:v // for calved, calving ?3 calv kav // for calved, calving calve kA:v ?3 calve kav +camaraderie kam@r'A:d@ri cameo kamIoU camouflage kam@flA:Z campus kamp@s // campuses @@ -986,6 +995,8 @@ commence k@mEns commend k@mEnd comment k0mEnt commentary k0m@ntrI +?3 commentary k0m@ntEri +commi k0mI commie k0mI committee k@mIti communique k@mju:nI2keI @@ -996,6 +1007,7 @@ competing k@mp'i:tIN competition k0mp@t'IS@n compromise k0mpr@maIz compound $2 $verb +?3 comrade k0mrad con k0n concert $1 $onlys concert $verb @@ -1074,6 +1086,7 @@ crooked krUkId cuckoo kUku: cupboard kVb@d curate kjU@reIt +?3 current k'3:@nt curse k3:s ?5 curse kVRs customer k'Vst@m3 @@ -1125,6 +1138,7 @@ denier dI2naI3 denouement deIn'u:mO~ deny dI2naI depot dEpoU +?3 depot di:poU derange dI2reIndZ descry dI2skreI desert dI2z3:t @@ -1132,6 +1146,7 @@ desert dEs3t $only desert dI2z3:t $verb desolate dEs@l@t desperate dEsp@r@t +?3 detail $2 detente deIt'0nt détente deIt'0nt detritus dI2traIt@s @@ -1142,6 +1157,7 @@ devotee dEvoUt'i: di d,I $only diabetes daI@b'i:ti:z diagnose $3 +?3 dialog daI|@lO:g diameter daI'amI2t3 diaper daIp3 diaphanous daI'af@n@s @@ -1244,6 +1260,8 @@ entrance Entr'aans $verb entree 0ntreI envelope Env@loUp $only envelopes Env@loUps +?3 envelope A:nv@loUp +?3 envelopes A:nv@loUps envelope $verb epaulet Ep@l'Et epiphany I2pIf@nI @@ -1260,6 +1278,7 @@ eraser I2reIz3 ere e@ $only eros i@r0s err 3: +?3 err e@ errand Er@nd escallop Esk'A:l@p escapism Esk'eIpI2z@m @@ -1367,6 +1386,7 @@ formid fO@m'Id // formidable formica fO@m'aIk@ fortunate fO@tS@n@t fortune fO@tSu:n +?3 fortune fO@tS@n foyer fOIeI freelance fri:laans freon fri:0n @@ -1393,6 +1413,7 @@ gala gA:l@ galaxy gala#ksi galileo galI2l'eIoU galore $alt3 +?3 garage ga#rA:Z garish ge@rIS gases gasI#z gauche goUS @@ -1466,6 +1487,7 @@ helium hi:li@m helix hi:lIks hello h@loU henceforth hEnsfo@T +?3 herb 3:b hercules h3:kjUli:z heretical hI2rEtI2k@L hereto hi@3'tu: @@ -1509,6 +1531,7 @@ hunger hVNg3 hurrah h@r'A: hurrah hVr'eI hurricane hVrI2keIn +?3 hurricane h3:@keIn hussar hVz'A@ huzza h@z'A: huzzah h@z'A: @@ -1560,6 +1583,7 @@ inherit Inh'ErIt // inherited innard In3d inner In3 innovative In@veItIv +?3 inquiry Inkw@ri insect $1 insert Ins3:t $onlys insert Ins'3:t $verb @@ -1591,6 +1615,7 @@ interval Int3v@L interven Int3v'i:n // for intervening intray IntreI intro $1 +?3 investigative Inv,EstI2g'eItIv irate aIr'eIt iris aIrIs iron aI3n @@ -1632,6 +1657,7 @@ kowtow kaUt2aU la ,la $only laboratory la#b'0r@trI +?3 laboratory labr@tO:ri labor leIb3 labored leIb@d laborer leIb@r3 @@ -1649,6 +1675,7 @@ lasso las'u: ?3 lasso lasoU latrine $alt3 latte lA:t2eI +?3 launch lA:ntS lawyer lOI3 lava lA:v@ le l@_| $only @@ -1705,6 +1732,7 @@ looser lu:z3 lorenz l0r@nts los ,l0s $only losing lu:zIN // misspell +?3 lost lOst lukewarm lu:kwO@m lullaby lVl@baI lunatic lu:n@tIk @@ -1734,6 +1762,7 @@ mall mal ?3 mall mO:l mama mA:ma# mammoth mam@T +manageress manI2dZ@r'Es mandate $2 $verb manganese $1 manger meIndZ3 @@ -1843,6 +1872,7 @@ moustache m@st'aaS mouths maUDz $only movies mu:vIz mozilla m@zIl@ +?3 multi mVltaI multitude $1 multiplexer $1 mundane $2 @@ -2003,10 +2033,12 @@ parole $alt3 passenger pasI2ndZ3 passerby pas3b'aI passersby pas3zb'aI +?3 pasta pA:st@ pasted peIstI#d pasting peIstIN pastry peIstri pate pat2eI +?3 patent pat@nt pathetic $alt3 pathos peIT0s patio patIoU @@ -2115,6 +2147,8 @@ pretrial pri:tr'aI|@L pretty prIti pretzel prEts@L primeval praIm'i:v@L +pristine $2 +?3 privacy praIv@si privation praIv'eIS@n privilege prIvI2lI2dZ privy prIvi @@ -2159,6 +2193,7 @@ pythagoras paIT'ag@r@s python paIT@n pyramidal pI2r'amId@L +quadrilateral $3 quash kw0S quaternary kw@t3:n@rI qubit kju:bIt @@ -2263,6 +2298,7 @@ requiem rEkwI2Em reservation rEz3v'eIS@n reservoir rEz3vwA@ resin rEzIn +?3 respite rEspI2t restive rEstIv respiration rEspI#r'eIS@n respiratory rI2spIr@t@rI @@ -2293,6 +2329,7 @@ robust roUb'Vst romance roUm'ans rotate $2 rotund roUt'Vnd +roundtable $alt1 rouse raUz rout raUt // for routed routine $2 @@ -2360,6 +2397,7 @@ segue sEgweI separate sEp@-r@t separate sEp3reIt $verb semen si:m@n +?3 semi sEmaI semibreve $1 semicircle $1 semicolon sEmIk'oUl@n @@ -2548,6 +2586,7 @@ testes tEsti:z telephon tElI2foUn // for telephoning temperature tEmprI2tS3 ?!3 temporary tEmpr@rI +?3 template tEmpl@t thereof ,De@'0v thereon ,De@'0n thereto ,De@'tu: @@ -2572,6 +2611,7 @@ tis tIz $only toboggan t@b0g@n today t@deI todo t@du: +?3 tomato t@meItoU ton tVn $onlys tonage tVnIdZ tone toUn @@ -2595,7 +2635,7 @@ travesty trav@sti treatise tri:tIz triage tri:A:Z tribunal traIb'ju:n@L -triceratops $2 +triceratops traIs'Er@t0ps tricycle traIsIk@L trilogy trIl@dZi trio tri:oU @@ -2777,6 +2817,7 @@ yoghurt j0g3t yoyo joUjoU zavala $alt3 +?3 zebra zi:br@ zulus zu:lu:z @@ -2925,8 +2966,11 @@ Euphrates ju:fr'eIti:z Eyjafjalla eIja#fjatla# Folkestone foUkstoUn Fuego fweIgoU +Gabon gab0n +?3 Gabon ga#boUn Geneva dZ@ni:v@ Gdansk g@-dansk +Gibraltar $2 Gomera goUm'e@r@ Harare ha#rA:ri Hanoi han'OI @@ -2948,6 +2992,7 @@ Ipanema Ipa#n'i:m@ Israeli Izr'eIli Istanbul ,Ist,anb'Ul Italia It'alI2@ // Italian(s) +Ithaca IT@k@ Jakarta $alt3 Jerusalem dZ@ru:s@l@m Johannesburg $2 @@ -3018,6 +3063,7 @@ Noumea nu:m'eI@ Oahu oU'A:hu: Oklahoma oUkla#h'oUm@ Ohio oUh'aIoU +Omagh oUmA: Omaha oUma#hA: Oman oUm'an Oregon 0rI2g@n @@ -3074,7 +3120,6 @@ Tehran te@r'A:n (tel aviv) t,El||a#v'i:v Tenerife tEn3r'i:f Tennessee tEn@s'i: -Texas tEks@s Tijuana ti@w'A:n@ Tikal tI2kA:l Timor ti:mo@ @@ -3161,6 +3206,7 @@ Betsy bEtsi Betsey bEtsi Bjarne bjA@n@ Boris b0rIs +Bremen brEm@n Brianna brI'an@ Brien braI@n Caiseal kaS@L @@ -3448,6 +3494,7 @@ Dante dA:nt2eI Deslauriers dI2lo@rIeI Deveraux dEv3roU Disney dIzni +?3 Dolby doUlbi Dolce d0ltSeI Dvorak d@-vo@Zak Emory Em3ri @@ -3461,6 +3508,7 @@ Jacobi dZa#koUbi Kendell kEnd@L Kyocera kaI|@s'i@r@ Lamaze la#mA:z +Laurell $2 Mackenna m@kEn@ Mackenzie m@kEnzi Medusa m@du:s@ @@ -3476,6 +3524,7 @@ Rameses ram@si:z Ramirez ra#mi@3rEz Reagan reIg@n Reid ri:d +Remi r@ni: Reuter rOIt3 Rivera rI2ve@r@ Rizzoli rI2zoUli @@ -3537,8 +3586,8 @@ of 0v $u $only ?6 (of which) VvwItS $2 $pause for fO@ $u -(for a) f@@ $nounf -(for an) f@@n $nounf +(for a) f3@ $nounf +(for an) f3@n $nounf (for the) f3D@2 $nounf (for a while) f@@||w'aIl (for one) fO@w0n $2 $atend @@ -3818,8 +3867,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 $only -?3 our aU3 $u $nounf $only +our aU@ $u $nounf $onlys +?3 our aU3 $u $nounf $onlys your jO@ $u $nounf $only ?6 your jU@ $u $nounf $only their De@ $u $nounf $only @@ -3962,35 +4011,4 @@ like laIk $strend2 ?3 virile vIr@L ?3 volatile v0la#t@L -?3 amen ,eIm'En -?3 anti antaI -?3 banana ba#nan@ -?3 beta beIt@ -?3 caffeine $2 -?3 comrade k0mrad -?3 commentary k0m@ntEri -?3 current k'3@nt -?3 depot di:poU -?3 detail $2 -?3 dialog daI|@lO:g -?3 envelope A:nv@loUp -?3 err e@ -?3 fortune fO@tS@n -?3 garage ga#rA:Z -?3 herb 3:b -?3 hurricane h3:@keIn -?3 inquiry Inkw@ri -?3 investigative Inv,EstI2g'eItIv -?3 laboratory labr@tO:ri -?3 launch lA:ntS -?3 lost lOst -?3 multi mVltaI -?3 pasta pA:st@ -?3 patent pat@nt -?3 privacy praIv@si -?3 respite rEspI2t -?3 semi sEmaI -?3 template tEmpl@t -?3 tomato t@meItoU -?3 zebra zi:br@ diff --git a/dictsource/en_rules b/dictsource/en_rules index 38237195..fc0bc044 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -60,6 +60,7 @@ a (Cee+ a a (BeCo_ a a (BerA a + a (BeroA# eI a (BerC a a (Bet a @) a (Bia 'eI @@ -448,7 +449,7 @@ @) age (ment I2dZ g) age (ment 'eIdZ m) ag (enta @dZ - agh (_ @ + agh (_ A:g agio (_ 'A:dZIoU t) agi (o eIdZ _) ag (l@ a#g @@ -575,7 +576,6 @@ _) al (y al alz alt|s &) al (_ @L - &) ally (_ @li ?8 &) al (_ a#l @) ally (_S2 %i @@c) ally (_S4 l%i @@ -678,6 +678,7 @@ _n) ame eIm &) am (ent @m amer (ic a#mEr + c) am (ero am c) am (el am am (i_ 'A:m ami (g a#mi: @@ -1265,6 +1266,7 @@ _) be (f bI2 _) beg (AnK b%Ig _) be (gg bE + _) belarus bEl@r'u:s _) be (lC bE _) be (lli bI2 _) be (sC bI2 @@ -1914,6 +1916,7 @@ discr) e (tion E eu ju: ?3 n) eu u: +?3 n) eu (r U@ r) eu (d OI eu (m_ 'i:@ s) eu (m_ 'i@ @@ -2463,6 +2466,7 @@ er (ve 3: s) er (van 3: ery (_ @r%i +?3 @@AC) ery (_ e@ri ery (A 3j _v) ery ErI2 qu) ery i@rI @@ -2731,6 +2735,7 @@ @) guay (_ gwaI gue (_ g gu (e g + _) gu (i g _) g (yn g o) g (y_ g g (ynous_ =dZ @@ -2954,7 +2959,8 @@ &) iary =j@r%I &l) iary =i@r%I _) ian i@n - &) ia (_ =i|@ + &) ia (_N =i|@ + &) ia (_ =i@ @@) ia (_ =i@ @) ian (cy I|@n l) iais I|eIz @@ -3108,7 +3114,7 @@ l) im Im _pr) im (a aIm sh) im (a_ 'i:m - im (age Im + image ImI2dZ l) ime aIm d) ime (ns aImE im (ent+ Im @@ -3378,7 +3384,7 @@ ir (able 'aI3 m) ir (ac Ir sp) iral aI3r@L - @) ir (ation I#r + @) ir (ation @r ir (ate =i@r consp) ira (t Ir@ ire aI3 @@ -3423,6 +3429,8 @@ prAm) is Is b) is (_ Is c) is (_ Is + @@m) is (_ Is + am) is (_S1 z @Cs) is (_ =Is &) is (abl aIz isa (tion aIzeI @@ -3839,6 +3847,7 @@ .group o o 0 + _) o 0 X) o 0# X) o ($w_alt3 %0# _) o'(P2 %oU // prefix @@ -3881,18 +3890,18 @@ o (bic_ 'oU n) o (bil oU _m) o (bil oU - o (bje %0# + o (bje %0 _) o (bl %0# n) o (bl oU o (bliga 0 o (bligato %0# o (blo 0 _r) o (bo oU - _) o (bs %0# - _) obs (er %0#bz + _) o (bs %0 + _) obs (er %0bz obso (l 0bs@ o (bstin 0 - _) o (bt %0# + _) o (bt %0 o (by_ oU f) o (cA oU _l) o (cA oU @@ -3920,7 +3929,6 @@ k) o (dA oU meth) o (d_ @ peri) o (d_ @ - o (da_ oU d) o (dec %oU m) o (del 0 m) o (der 0 @@ -4128,6 +4136,7 @@ @) ome (tre '0mI @) ome (try '0m@ &) omer (_ @m3 + c) omer (_ Vm3 gl) om (er 0m _p) om (e 0m _s) ome Vm @@ -4463,7 +4472,7 @@ c) ou (pl V &) our (_ 3 np) our (_ o@ - &) oured @d + &) oured 3d ev) our (ed aU@ our (n 3: ?5 our (n VR @@ -4680,7 +4689,11 @@ per (cus p3 _) peregrin pEr@grIn per (fec p3 + _) per (iC@@ p,Er + _) perini pErIn'i: per (iph p3r + _) per (isc pEr + _) per (ish pEr perme (a p3:mI per (miss p3 per (mit p3 @@ -5096,7 +5109,6 @@ ?8 ssion (_ =SVn 1_) st (_ _) st (_ s@nt - _) state (@ steIt stein staIn ti) ssue Su: _) s (u s @@ -5253,9 +5265,9 @@ tu (ous tSu: @) tur (A tS@r @) tur (al_ tS=@r - @) tur (y tS@r - @) tur (_ tS3 - ture (_ tS3 + &) tur (y tS@r + &) tur (_ tS3 + &) ture (_ tS3 tz ts tze (_ tsi @@ -5368,7 +5380,7 @@ ?3 n) uclear u:kli@3 ucul VkjUl @) u (da_ 'ju: -?3 @) u (da_ 'u: +?3 @L08) u (da_ 'u: b) u (ddh U u (esq ju: u (ga_ 'u: @@ -5418,7 +5430,7 @@ u (ly u: d) u (ly ju: z) u (l_ 'u: - um (_ @m + &) um (_ @m vol) u (m ju: u (ma_ 'u: h) u (man ju: @@ -5604,7 +5616,7 @@ @) ur (ation jUr ure (_ jU@ ur (ed_ jU@ - g) ured (_ @d + g) ured (_ 3d b) ur (e jU@r g) ure (_ 3 ?3 g) ure (_ j3 @@ -5678,7 +5690,9 @@ _) x (Y z xio (n kS@ xious =kS@s + xas (_ =ks@s xis (_ =ksIs + xus (_ =ks@s xu (a =kSu: lu) x (ur gZ ?3 lu) xu (r gZU@ @@ -5880,6 +5894,7 @@ Eri (A 'i@rI2 Er (ie_ @r Er (ic_ Er + Er (ous_ @r Er (_ 3 ad) Er (_S1 3 ad) Ers (_S2 3z @@ -5987,8 +6002,11 @@ // non-ascii characters with specified pronunciations // List the accented characters in en_list with the $accent attribute + á (X 'A: à a é eI + é (X 'eI + é (CA_ 'eI _) é %I ée i: ê E: diff --git a/dictsource/pt_list b/dictsource/pt_list index 7f079d00..1f39dd99 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -493,10 +493,10 @@ era E*& $u1 // .. imperfect eram E*&U~ $u1 fui $u // .. preterite -foste $u +foste fostSy $u1 // & fostes foi $u fomos $u -fostes $u + fora $u // .. pluperfect fômamos $u @@ -723,17 +723,20 @@ cefaleia $alt cerca $alt $verb cerco $alt $verb cesta $alt2 +cesto $alt2 chamego $alt2 chefe $alt chinelo $alt choro $alt2 $noun chupeta $alt2 +clamores $alt2 coco $alt2 cofre $alt coice $alt2 colabore $alt colheste $alt2 colmeia $alt +colore $alt começo $alt2 $noun comodo $alt2 comera $alt2 @@ -784,7 +787,7 @@ discordo $alt dissermos $alt dobro $alt2 $noun doce $alt2 -doutoras $alt2 +doutora $alt2 droga $alt duelo $alt dueto $alt2 @@ -823,6 +826,7 @@ estiverdes $alt estiveres $alt estivermos $alt estrela $alt2 +estremeceste $alt2 estrofe $alt estorno $alt $verb estorvo $alt $verb @@ -854,7 +858,6 @@ fores $alt2 forro $alt $verb fosse $alt2 fossem $alt2 -foste $alt2 frevo $alt2 galera $alt gameta $alt2 @@ -867,6 +870,7 @@ gonorreia $alt gorda $alt2 gota $alt2 gozo $alt $verb +graveto $alt2 grego $alt2 grelha $alt grega $alt2 @@ -914,6 +918,7 @@ morcego $alt2 morda $alt2 moreia $alt mortos $alt +motora $alt2 ?2 mulher mulj'Er ?4 mulher mul^'Er mui mwi @@ -962,6 +967,7 @@ pesquem $alt peso $alt peso $alt2 $noun piloto $alt2 +pintora $alt2 pirueta $alt2 plateia $alt plebeia $alt @@ -1005,6 +1011,8 @@ rocha $alt rock $alt rogas $alt rolo $alt2 $noun +rosna $alt +rumores $alt2 saleta $alt2 sarjeta $alt severa $alt @@ -1016,7 +1024,7 @@ selo $alt $verb selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 -sesta $alt2 +senhores $alt2 sincera $alt sincero $alt sinopse $alt @@ -1031,12 +1039,14 @@ sogra $alt sopre $alt soprem $alt sopro $alt $verb +soro $alt2 sorvete $alt2 sossego $alt2 $noun souberdes $alt soubermos $alt suborno $alt $verb sufoco $alt2 $noun +sufocos $alt2 sugere $alt sugerem $alt suporto $alt @@ -1059,6 +1069,7 @@ torres $alt2 tortos $alt traqueia $alt travesso $alt2 +tremores $alt2 trevo $alt2 troco $alt2 $noun tropa $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 77d410ca..6cece1b7 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -21,6 +21,7 @@ .L04 a am e em o ue uem .L05 r ra ram re rem rdes .L06 ra ram ste re rem +.L07 se sem te .group a @@ -366,7 +367,7 @@ _comprom) e (tL03_ e _sol) e (trL03_ E _atr) e (vL03_ e - _escr) e (vL03_ e + scr) e (vL03_ e // e- in- pre- ree- _descr) e (vL03_ e _embel) e (zL04_ E _pr) e (zL04_ E @@ -405,6 +406,26 @@ _reconh) e (çL03_ e _arref) e (çL01_ e _beb) e (ssL02_ e com) e (ssL02_ e + _corr) e (ssL02_ e + _morr) e (sL07_ e + _adoec) e (sL07_ e + _torc) e (sL07_ e + _viv) e (sL07_ e + _eleg) e (sL07_ e + respond) e (sL07_ e // & corres- + entend) e (sL07_ e +compreend) e (sL07_ e +interromp) e (sL07_ e +intromet) e (sL07_ e +_escond) e (sL07_ e + _bat) e (sL07_ e + _sofr) e (sL07_ e + l) e (que_ E + _p) e (quL02_ E + _s) e (quL02_ E + _) e (rguL02_ E + _enx) e (rguL02_ E + _alb) e (rguL02_ E //endsort _exag) e (L05_ E diff --git a/dictsource/vi_rules b/dictsource/vi_rules index bb58847a..6e8db88f 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -83,12 +83,12 @@ ỵ ỵ _) b _b .group c - c k + c g //k c (_ kh ch c // try [tS;] [tS] [c] .group d - d J // try [z] [J] [dZ] [dZ;] [J^] + d J^ // try [z] [J] [dZ] [dZ;] [J^] .group đ đ d @@ -101,13 +101,13 @@ ỵ ỵ .group g g Q // try [g] [Q] gh Q // or [g] [Q] - g (i D // try [D] [z] [j] [J^] [z;] [J] [dZ] - g (ì D - g (í D - g (ỉ D - g (ĩ D - g (ị D - gi D + g (i J^ // try [D] [z] [j] [J^] [z;] [J] [dZ] + g (ì J^ + g (í J^ + g (ỉ J^ + g (ĩ J^ + g (ị J^ + gi J^ .group h h h @@ -133,7 +133,7 @@ ỵ ỵ ng N ngh N nh n^ - + .group ñ ñ n^ @@ -144,7 +144,7 @@ ỵ ỵ .group q q k q (_ kh - qu kw + qu w //kw .group r r z. // try [z] [z.] [r] [z;] @@ -183,11 +183,11 @@ ỵ ỵ aĩ a:I5 aị a:I6 ay aI - aỳ aI2 + aỳ aI2 aý aI3 aỷ aI4 - aỹ aI5 - aỵ aI6 + aỹ aI5 + aỵ aI6 ao a:U aò a:U2 aó a:U3 @@ -402,64 +402,81 @@ ỵ ỵ //========================= .group o o O - o (A w + oa o@ // modify oa sound example: hoa,khoa // o (A w oi OI oì OI2 oí OI3 oỉ OI4 oĩ OI5 oị OI6 - + ong O# + oe o& // Adding oe sound example: lóe sáng,toét mắt .group ò ò O2 òi OI2 - ò (A w2 + òa o@2 //ò (A w2 + òng O#2 + òe o&2 .group ó ó O3 ói OI3 - ó (A w3 + óa o@3 //ó (A w3 + óng O#3 + óe o&3 .group ỏ ỏ O4 ỏi OI4 - ỏ (A w4 + ỏa o@4 //ỏ (A w4 + ỏng O#4 + ỏe o&4 .group õ õ O5 õi OI5 - õ (A w5 + õa o@5 //õ (A w5 + õng O#5 + õe o&5 .group ọ ọ O6 ọi OI6 - ọ (A w6 + ọa o@6 //ọ (A w6 + ọng O#6 + ọe o&6 //============================= .group ô ô o ôi oI + ông o# // ông sound .group ồ ồ o2 ồi oI2 + ồng o#2 .group ố ố o3 ối oI3 + ống o#3 .group ổ ổ o4 ổi oI4 + ổng o#4 .group ỗ ỗ o5 ỗi oI5 + ỗng o#5 .group ộ ộ o6 ội oI6 + ộng o#6 @@ -525,36 +542,41 @@ ỵ ỵ uổi u@j4 uỗi u@j5 uội u@j6 - + //ung u# .group ù ù u2 ù (A w2 ùi uI2 ùa u@2 + //ùng u#2 .group ú ú u3 ú (A w3 úi uI3 úa u@3 + //úng u#3 .group ủ ủ u4 ủ (A w4 ủi uI4 ủa u@4 + //ủng u#4 .group ũ ũ u5 ũ (A w5 ũi uI5 ũa u@5 + //ũng u#5 .group ụ ụ u6 ụ (A w6 ụi uI6 ụa u@6 + //ụng u#6 //============================= .group ư @@ -696,13 +718,13 @@ ỵ ỵ .group - % f'@2n||tS;'am + % f'@2n||cr'am ! _:c'@3m_|t'a:7n_: ! (\! // : koUl@n D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 $ d'o||l'a - != x,o1N_|_b'a2N_ + != x'o#_|_b'a2N_ >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N diff --git a/phsource/compile_report b/phsource/compile_report index 9f1e957c..91a83d40 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -5,7 +5,7 @@ consonants 10 118 base2 26 125 en 54 156 en-n 33 156 - en-us 41 157 + en-us 40 157 en-sc 40 158 en-rp 34 156 en-wm 31 156 @@ -43,15 +43,15 @@ consonants 10 118 es-la 1 125 ca 11 127 an 4 125 - pt 29 140 - pt-pt 20 140 + pt 30 141 + pt-pt 20 141 ro 36 148 el 10 125 grc 12 129 sv 22 129 no 28 134 is 42 141 - vi 41 141 + vi 52 146 zhy 41 138 zh 64 155 sw 9 110 @@ -555,6 +555,7 @@ n/n@ [n] base [n#] is [n] zh n/n#_ [n#] is + [n] vi n^/n^a [n^] base [n;] lt [n#] ru @@ -817,7 +818,6 @@ ufric/tl# [tl#] is ufric/tlh [K] nso [K] tn ufric/x [x] base - [kh] vi ufric/x2 [x2] af [x] ku [X] kk @@ -927,6 +927,7 @@ ustop/p_unasp_ [p-] consonants [p] base2 [p] fr [p] lv + [p] vi [p] sq ustop/q [q] base ustop/q2 [q] ka @@ -962,6 +963,7 @@ ustop/t_dnt2 [t] base2 ustop/t_hi [t[] base [t] et [t^] et + [t[] vi [t`] am ustop/t_pzd [c] base [t^] et @@ -1028,6 +1030,7 @@ ustop/ts_sr [tS;] sr ustop/ts_unasp [ts] zh ustop/t_unasp [t-] ko ustop/t_unasp2 [t] el + [t[] vi [t] zh vdiph/0i [OI] pt [OI] grc @@ -1045,8 +1048,7 @@ vdiph2/ee@ [e@] en-n vdiph2/ee@_2 [e@] en-rp vdiph2/ei_2 [eI] en-rp vdiph2/ei_3 [i:] en-wm -vdiph2/ei_4 [eI] en-us - [ei] zh +vdiph2/ei_4 [ei] zh [eI] sq vdiph2/eo [eo] ro vdiph2/e_u [e[u] ro @@ -1080,6 +1082,7 @@ vdiph2/iy [iy] fi vdiph2/o@ [o@] af [u@] zh vdiph2/oa [Oa] ro + [o@] vi [ua] zh vdiph2/o_oo [o@] en-wi [O:] is @@ -1207,6 +1210,7 @@ vdiph/eei_2 [eI] eo vdiph/eei_3 [eI] lt [eI] sk [eI] ku +vdiph/eei_5 [eI] en-us vdiph/eeu [EU] pt [EU] grc [EU] vi @@ -1254,7 +1258,6 @@ vdiph/i@_2 [e@] af vdiph/@i_3 [eI] en-wm [@I] ro [ai] zhy -vdiph/&i_3 [aI] vi vdiph/ii [iI] ro vdiph/i#i [yI] ro vdiph/oi [oI] base2 @@ -1296,10 +1299,10 @@ vdiph/ou_3 [oU] is [oU:] is vdiph/ou_4 [o:] nl vdiph/@u [u:] en-wm - [@U] vi [@:U] vi vdiph/@u_2 [oU] en-rp vdiph/@u_3 [@U] ro + [@U] vi [@U] ga vdiph/@u_en [oU] en [@U] id @@ -1322,6 +1325,7 @@ vdiph/Vu [@U] af vdiph/Vu_2 [oU] en-wm vdiph/&y [&y] fi [Wy] nl + [aI] vi vdiph/yi [yi] fi [yi] et [yI] grc @@ -1337,6 +1341,13 @@ vdiph/y#y [Yy] fi vdiph/y#y_2 [Yy] af [eoi] zhy vdiph/y#y_3 [Y:] nl +vietnam/a [a:] vi +vietnam/_c [kh] vi +vietnam/ch [c] vi +vietnam/dd [d] vi +vietnam/oe [o&] vi +vietnam/th [t] vi +vietnam/tr [cr] vi vnasal/aa_n [a~] hi vnasal/aa_n2 [A~] en vnasal/aa_n3 [A~] af @@ -1346,6 +1357,7 @@ vnasal/aa_n4 [A~] de vnasal/a#_n [&~] pt vnasal/a#u_n [&U~] pt [&U~] pt-pt + [o#] vi vnasal/ee_n [E~] fr-ca vnasal/ee_n2 [a] en-us [E~] hi @@ -1368,13 +1380,16 @@ vnasal/oo_n2 [O~] en [O~] nl [o] zh vnasal/oo_n3 [O~] pl +vnasal/&u_n [O#] vi vnasal/u_n [U~] hi [u~] hi [u~] pt + [u] vi [u] zh vnasal/V_n [V~] hi vnasal/W_n [E~] fr [W~] fr + [&2~] pt [E~] ht voc/bh [B] base voc/dh [D] base @@ -1496,8 +1511,7 @@ vowel/0_3 [O:] en-us [A] hu [A] fa [0] tt -vowel/@_2 [@] vi - [@:] vi +vowel/@_2 [@:] vi [@] sq [V] sq [@/] sq @@ -1634,7 +1648,6 @@ vowel/a#_3 [a#] en [a#] ga vowel/a_4 [a] es [a] el - [a] vi [a] ga vowel/a#_4 [a:] nl [a] bg @@ -1650,7 +1663,7 @@ vowel/a_5 [a:] ta [a] tn [a] kk vowel/a_6 [a] ca - [a:] vi + [a] vi [a] am [a:] wo vowel/a_7 [a] fr @@ -2279,7 +2292,6 @@ vowel/u_6 [u] ta [u:] te [u] si [u:] si -vowel/u_7 [u] vi vowel/u#_7 [@] tr [@] az vowel/u_bck [u] base2 @@ -2355,6 +2367,7 @@ vowel/uu_bck [U] en-wi [U] pa vowel/V [3] en-sc [@] bg + [@] vi [W#] da vowel/V_2 [V] en [a] af @@ -2441,7 +2454,6 @@ vwl_en/aU@ [aU@] en [aU@] en-sc [aU@] en-wm vwl_en/@L [@L] en - [@L] en-us [@L] af vwl_en/@L_2 [@L] en-sc vwl_en_n/O@ [O@] en-n diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 540afc0e..c15b7ddd 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -41,14 +41,6 @@ phoneme @2 // Schwa, changes to I before a vowel FMT(vowel/@_low2) endphoneme -phoneme @L - vowel starttype #@ endtype l - ipa əl - unstressed - length 160 - FMT(vwl_en/@L) -endphoneme - phoneme a vowel starttype #e endtype #@ @@ -176,6 +168,7 @@ phoneme 3: vowel starttype #@ endtype #@ length 240 IfNextVowelAppend(r-) + ChangeIfDiminished(3) FMT(vwl_en_us/3_us2) endphoneme @@ -265,7 +258,7 @@ endphoneme phoneme eI vowel starttype #e endtype #i length 230 - FMT(vdiph2/ei_4) + FMT(vdiph/eei_5) endphoneme diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index 432b6abe..a6bba543 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -39,7 +39,6 @@ phoneme &~ vowel starttype #@ endtype #@ ipa ɐU+0303 length 180 -// ChangeIfNotStressed(&) FMT(vnasal/a#_n) endphoneme @@ -225,3 +224,10 @@ phoneme * endphoneme +// TESTING +phoneme &2~ + vowel starttype #@ endtype #@ + ipa ɐU+0303 + length 200 + FMT(vnasal/W_n) +endphoneme diff --git a/phsource/ph_vi b/phsource/ph_vietnam old mode 100644 new mode 100755 similarity index 56% rename from phsource/ph_vi rename to phsource/ph_vietnam index cf6b6570..eef7563f --- a/phsource/ph_vi +++ b/phsource/ph_vietnam @@ -12,13 +12,13 @@ endphoneme phoneme 2 // huyền tone: low falling stress - Tone(20, 8, envelope/p_fall, NULL) + Tone(20, 8, envelope/p_fall, NULL) //20 endphoneme phoneme 3 // sắc Tone(rising stress - Tone(25, 50, envelope/p_rise, NULL) + Tone(25, 50, envelope/p_rise, NULL) // 25 endphoneme @@ -30,13 +30,13 @@ endphoneme phoneme 5 // ngã tone: broken (creaking rising) stress - Tone(28, 58, envelope/p_214, envelope/vi_5amp) + Tone(28,58, envelope/p_214, envelope/vi_5amp) // 28,58 endphoneme phoneme 6 // nặng Tone(drop (constricted) stress - length 75 // reduce the length of the vowel + //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel Tone(40, 20, envelope/p_512, envelope/vi_6amp) endphoneme @@ -54,14 +54,14 @@ endphoneme phoneme a vowel starttype #@ endtype #@ - length 130 - FMT(vowel/a_4) + length 120 + FMT(vowel/a_6) //a_4) endphoneme phoneme a: vowel starttype #a endtype #a - length 280 - FMT(vowel/a_6) + length 200 //280 + FMT(vietnam/a) //FMT(vowel/a_6) endphoneme @@ -91,26 +91,42 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 200 - FMT(vowel/aa_4) + IF nextPh(kh) THEN + length 95 + ELSE + length 200 + ENDIF + FMT(vowel/aa_4) endphoneme phoneme o vowel starttype #o endtype #o - length 200 + IF nextPh(kh) THEN + length 95 + ELSE + length 200 + ENDIF FMT(vowel/o_2) endphoneme phoneme u vowel starttype #u endtype #u - length 200 - FMT(vowel/u_7) + IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound + length 120 + ELSE + length 200 + ENDIF + FMT(vnasal/u_n) //vowel/u_7) endphoneme phoneme y vowel starttype #u endtype #u - length 200 + IF nextPh(kh) OR nextPh(N) THEN + length 120 + ELSE + length 200 + ENDIF FMT(vowel/u#_5) endphoneme @@ -118,8 +134,12 @@ endphoneme phoneme @ vowel starttype #@ endtype #a - length 130 - FMT(vowel/@_2) + IF nextPh(kh) OR nextPh(N) THEN + length 120 + ELSE + length 170 + ENDIF + FMT(vowel/V) //vowel/@_2) endphoneme @@ -136,28 +156,28 @@ endphoneme phoneme aI vowel starttype #a endtype #i - length 250 - FMT(vdiph/&i_3) + length 200 //250 + FMT(vdiph/&y) endphoneme phoneme a:I vowel starttype #a endtype #i - length 250 + length 200 //250 FMT(vdiph/ai) endphoneme phoneme @I vowel starttype #@ endtype #i - length 250 + length 200 //250 FMT(vdiph/@i) endphoneme phoneme @:I vowel starttype #@ endtype #i - length 250 + length 200 //250 FMT(vdiph/@i) endphoneme @@ -214,7 +234,7 @@ endphoneme phoneme a:U vowel starttype #a endtype #u - length 270 + length 230 //270 FMT(vdiph/au) endphoneme @@ -241,7 +261,7 @@ endphoneme phoneme @U vowel starttype #@ endtype #u length 200 - FMT(vdiph/@u) + FMT(vdiph/@u_3) endphoneme phoneme @:U @@ -270,27 +290,123 @@ phoneme u@ FMT(vdiph2/uu@) endphoneme +// Addition Dipthongs +phoneme o# // ông + vowel starttype #o endtype #o + length 200 + FMT(vnasal/a#u_n) +endphoneme + +phoneme O# // ong + vowel starttype #o endtype #o + length 200 + FMT(vnasal/&u_n) +endphoneme + + +phoneme o@ + vowel starttype #o endtype #o + length 160 + FMT(vdiph2/oa) +endphoneme + +phoneme o& + vowel starttype #o endtype #o + length 160 + FMT(vietnam/oe) +endphoneme phoneme kh vls vel frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=200 80 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 - WAV(ufric/x, 50) + WAV(vietnam/_c,5) //ufric/x, 50) endphoneme phoneme l liquid lengthmod 7 + //IF nextPh(isNotVowel) THEN + // ChangePhoneme(l/2) + //ENDIF - IF nextPh(isNotVowel) THEN - ChangePhoneme(l/2) - ENDIF - - CALL vowelstart_l + //CALL vowelstart_l FMT(l/l_vi) endphoneme +phoneme t + vls alv stop + //voicingswitch d + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + WAV(vietnam/th, 50) +endphoneme + +phoneme cr + vls pla afr sibilant + //voicingswitch dZ + lengthmod 2 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + + + WAV(vietnam/tr,10) +endphoneme + +phoneme d + vcd alv stop + lengthmod 5 + + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk +WAV(vietnam/dd) + endphoneme + + phoneme c + vls pal stop palatal + //voicingswitch J + lengthmod 2 + length 75 + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 + + + WAV(vietnam/ch,5) +endphoneme + + +phoneme p + vls blb stop + lengthmod 2 + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 + + WAV(ustop/p_unasp_,10) + +endphoneme + +phoneme n + vcd alv nasal + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 + Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk + lengthmod 4 +FMT(n/n#_) +endphoneme + +phoneme t[ // dental variant of /t/ + vls dnt stop + voicingswitch d[ + lengthmod 2 + Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 + Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + + IF nextPh(isPause2) THEN + WAV(ustop/t_unasp2, 5) + ENDIF + WAV(ustop/t_hi, 70) +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 10c1ae5c..b83cf47b 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1812,7 +1812,7 @@ phonemetable is base include ph_icelandic phonemetable vi base -include ph_vi +include ph_vietnam phonemetable zhy base include ph_zh_yue diff --git a/src/compiledata.cpp b/src/compiledata.cpp index b8d94e03..41340e88 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -661,9 +661,9 @@ static REF_HASH_TAB *ref_hash_tab[256]; #define N_ENVELOPES 30 -static int n_envelopes = 0; -static char envelope_paths[N_ENVELOPES][80]; -static unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; +int n_envelopes = 0; +char envelope_paths[N_ENVELOPES][80]; +unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; typedef struct { @@ -3408,13 +3408,9 @@ static void CompilePhonemeData2(const char *source) wxString report; wxString report_dict; -#ifdef MAKE_ENVELOPES -make_envs(); -#endif - n_envelopes = 0; error_count = 0; -memset(markers_used,0,sizeof(markers_used)); + memset(markers_used,0,sizeof(markers_used)); f_errors = stderr; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index be3b8c3b..8a525070 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -296,10 +296,6 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) // set up indices into data_dictrules InitGroups(tr); - if(tr->groups1[0] == NULL) - { - fprintf(stderr,"Error in %s_rules, no default rule group\n",name); - } // set up hash table for data_dictlist p = &(tr->data_dictlist[8]); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index f3dd6871..39e6d67d 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.33 08.Feb.13"; +const char *version_string = "1.46.34 12.Feb.13"; const int version_phdata = 0x014631; int option_device_number = -1; diff --git a/src/vowelchart.cpp b/src/vowelchart.cpp index b555afb9..aab1f2ce 100644 --- a/src/vowelchart.cpp +++ b/src/vowelchart.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -670,9 +670,9 @@ void MakeVowelLists(void) #define N_ENVELOPES 30 -int n_envelopes = 0; -char envelope_paths[N_ENVELOPES][80]; -unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; +extern int n_envelopes; +extern char envelope_paths[N_ENVELOPES][80]; +extern unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; #define HT_ENV 140 #define WD_ENV 128*2 From 62e163701b5ac0286902d0d58535184dd5472493 Mon Sep 17 00:00:00 2001 From: jonsd Date: Thu, 14 Feb 2013 22:23:32 +0000 Subject: [PATCH 5/6] [1.46.35] Added error detection in espeak_Synchronize(). Compile Phonemes: fixed resampling of WAV files to eSpeak's sample rate (needs 'sox'). Language changes: pt, en, fa. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@301 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/an_list | 19 +- dictsource/dict_phonemes | 8 +- dictsource/en_list | 33 +- dictsource/en_rules | 69 ++-- dictsource/fa_list | 861 ++++++++++++++++++++++++++++++++++++++- dictsource/fa_rules | 51 ++- dictsource/pt_list | 3 +- dictsource/pt_rules | 191 +++++---- phsource/compile_report | 21 +- phsource/ph_english_sc | 13 +- phsource/vowelr/e_r | Bin 6239 -> 7877 bytes phsource/vwl_en_us/ar | Bin 2460 -> 3148 bytes src/compiledata.cpp | 63 ++- src/compiledict.cpp | 8 +- src/dictionary.cpp | 10 + src/espeak.cpp | 8 +- src/espeakedit.cpp | 4 +- src/prosodydisplay.cpp | 6 +- src/speak_lib.cpp | 23 +- src/synthdata.cpp | 3 +- src/synthesize.h | 1 + src/translate.cpp | 13 +- src/translate.h | 2 +- src/wave.cpp | 15 +- src/wave.h | 2 +- src/wave_pulse.cpp | 6 +- src/wave_sada.cpp | 7 +- 27 files changed, 1217 insertions(+), 223 deletions(-) diff --git a/dictsource/an_list b/dictsource/an_list index 695e1152..5fa0cb12 100755 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -19,11 +19,11 @@ n Ene ñ En^e p pe q ku -r ERR2e +r ERR2e s Ese t te u u -v ,be||b'aIksa +v ,be||b'aSa w ,be||d'Ople x Se z Teta @@ -70,7 +70,10 @@ _7C sjEteTj'Entos _8C gwitoTj'Entos _9C nowTj'Entos _0M1 m'il -_0M2 mil^'ones +_0M2 mil^'ons +_1M2 un||mil^'on +_0M4 bil^'ons +_1M4 un||bil^'on _0and i _dpt kon @@ -78,3 +81,13 @@ _dpt kon // unstressed words lo $u +la $u +los $u +las $u +ne $u +nes $u +me $u +te $u +se $u +le $u +les $u \ No newline at end of file diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 32e2dd66..1519b180 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-02-12 +Dictionary en_dict 2013-02-13 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -377,7 +377,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-02-11 +Dictionary pt_dict 2013-02-14 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -849,7 +849,7 @@ p p- ph q r R s t t- tS tS; w -Dictionary fa_dict 2013-01-23 +Dictionary fa_dict 2013-02-13 a A e i o u @@ -859,7 +859,7 @@ r R s S t tS v w x z Z -Dictionary an_dict 2013-01-24 +Dictionary an_dict 2013-02-13 a aI aU e E eI eU i o O oI u diff --git a/dictsource/en_list b/dictsource/en_list index 3d09e013..ec42a441 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -324,11 +324,14 @@ _#rd d _#th T _ord T // default ending _1o f'3: +?5 _1o f'IR _2o s'Ek _3o T'3: +?5 _3o T'IR _5o f'If _20o tw'Enti@ _30o T'3:ti@ +?3 _30o T'IRti@ _40o f'o@ti@ _50o f'Ifti@ _60o s'Iksti@ @@ -649,6 +652,7 @@ apparatus ap@r'eIt@s apprentice a#prEnt2Is approximate a#pr0ksIm@t $only approximate a#pr0ksImeIt $verb +aqueduct akwI#dVkt arab ar@b arabic $1 arable ara#b@L @@ -819,6 +823,7 @@ buffet bVfeI bunion bVnI2@n bureaucracy bjU@'0kr@si bursar b3:s3 +?5 bursar bVRs3 bus bVs buses bVsI#z busily bIzI2lI $verbf @@ -976,6 +981,7 @@ cognac k0njak coincide koUIns'aId cojones k@hoUneIs coliseum k0l@s'i:@m +collage k0l'A:Z college k0lI2dZ collegiate k@li:dZI@t colloquial k@loUkwI@L @@ -991,6 +997,7 @@ combo k0mboU comely kVmlI // comeliness comer kVm3 comet k0mI2t +commandant $alt1 commence k@mEns commend k@mEnd comment k0mEnt @@ -1019,6 +1026,7 @@ conduct $1 conduct $verb cone koUn conical $1 +confidant $alt1 conflict $1 $onlys conflict $verb conger k0Ng3 @@ -1140,6 +1148,7 @@ deny dI2naI depot dEpoU ?3 depot di:poU derange dI2reIndZ +descant dEskant descry dI2skreI desert dI2z3:t desert dEs3t $only @@ -1413,8 +1422,12 @@ gala gA:l@ galaxy gala#ksi galileo galI2l'eIoU galore $alt3 +gallivant $alt1 ?3 garage ga#rA:Z garish ge@rIS +garote ga#r0t +garotte ga#r0t +garrot ga#r0t gases gasI#z gauche goUS gauge geIdZ @@ -2128,6 +2141,7 @@ predefine pri:dI2f'aIn predicate prEdI2keIt preface prEf@s preferably prEf@-r@blI $verbf +prelate prEl@t prelude prElju:d ?3 prelude preIlu:d premier prEmI3 @@ -2185,8 +2199,8 @@ pud pUd // and pudding punative pju:n@tIv puny pju:ni purist pju:r-Ist -purport p3:p'o@t -purportedly p3p'o@tI2dlI +purport $2 +purportedly $2 pyjama p@dZA:m@ pyrites paIr'aIti:z pythagoras paIT'ag@r@s @@ -2363,6 +2377,7 @@ satanist seIt@nIst saucepan sO:sp@n saudi saUdi saute sO:teI +?3 savant sa#vA:nt says sEz scaly skeIlI salmon sam@n @@ -2379,6 +2394,7 @@ sceptre sEpt3 sciatica saI'atIk@ sclera skli@r scourge sk3:dZ +?5 scourge skVRdZ scrotum skroUt@m seabed si:bEd sealion si:laI@n @@ -2461,6 +2477,7 @@ snooker snu:k3 sofa soUf@ soiree swA:reI sojourn soUdZ3:n +?5 sojourn soUdZVRn solder s0ld3 ?3 solder sA:d3 soldier soUldZ3 @@ -2512,6 +2529,7 @@ subsequent sVbsI2kw@nt subside s@bsaId subtly sVt@lI $verbf suede sweId +suerte swe@rteI suet su:I2t suffice s@faIs suffuse $2 @@ -2528,7 +2546,6 @@ supplier s@plaI3 suppose $2 suprise $2 // misspell surest SU@@st -surplus s3:pl@s surrogate sVr@geIt ?3 surrogate s3:@g@t survey s3:veI $onlys @@ -2598,6 +2615,7 @@ tho DoU $only thousand TaUz@nd throughout $2 thursday T3:zdeI +?5 thursday TVRzdeI tidal taId@L tidy taIdi tierra tI'e@r@ @@ -2648,7 +2666,7 @@ truely tru:lI $verbf truest tru:@st tryst trIst tudor tju:d3 -turntable t3:nt2eIb@L +turntable $alt1 tulip tju:lIp turnkey t3:nki: ?5 turnkey tVRnki: @@ -2789,6 +2807,7 @@ without $2 wordprocessor $2 wordprocess $2 workshy w3:kSaI +?5 workshy wVRkSaI workstation w'3:kst,eIS@n ?5 workstation w'VRkst,eIS@n worktable $alt1 @@ -3013,6 +3032,7 @@ Lagos leIg0s Leipzig laIpsIg Leone li:'oUn Lesotho l@s'u:tu: +Levant l@vant Liberia laIb'i@ri:@ Lima li:ma# Ljubljana lju:blj'A:n@ @@ -3124,6 +3144,7 @@ Tijuana ti@w'A:n@ Tikal tI2kA:l Timor ti:mo@ Tokyo toUkIoU +Topeka toUp'i:k@ Toronto t@r0ntoU Toulouse tu:l'u:z ?3 Tunisia tu:n'i:Z@ @@ -3198,6 +3219,7 @@ Baez baI'Ez Bambi bambi: Barack ba#rA:k Barbara bA@b@r@ +Bartholomew bA@T'0l@mju: Benjamin bEndZ@mI#n Benoit bEnw'A: Bernard b3:n@d @@ -3238,6 +3260,7 @@ Connor k0n3 Conrad $1 Crichton kraIt@n Curtis k3:tI#s +?5 Curtis kVRtI#s Dana deIn@ Daphne dafni Darryl dar@L @@ -3524,7 +3547,7 @@ Rameses ram@si:z Ramirez ra#mi@3rEz Reagan reIg@n Reid ri:d -Remi r@ni: +Remi r@mi: Reuter rOIt3 Rivera rI2ve@r@ Rizzoli rI2zoUli diff --git a/dictsource/en_rules b/dictsource/en_rules index fc0bc044..8a1af8a6 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -747,6 +747,7 @@ hum) an (_ @n &) an (ty_ @n &) an (t_ @n + &) an (t_$w_alt an ?8 &) an (t_ a#n _f) an (at a#n pl) an (t_ an @@ -1713,7 +1714,6 @@ de (rog dI2 de (rACatio dE _) des (@ dI2s - des (ca dE des (ec dEs des (eg d%i:s dese (l d,i:sI2 @@ -1865,6 +1865,7 @@ ch) eese i:z eeze (@ i:z d) e (fault i: + _) e (ffac %I e (ffec %I e (ffic %I efier (_ I2faI3 @@ -2490,7 +2491,8 @@ &ph) es (_S1 z neri) es (_S2i z &s) es (_S1 I#z - &us) es (_S2e I#z + us) es (_S2e I#z + lus) es (_S2 I#z &rus) es (_S2 I#z &tus) es (_S2 I#z &ss) es (_S2 I#z @@ -2668,6 +2670,9 @@ for (see f%O@ for (ward f'o@ // straightforward ft (en f + &) ful (_S3 f@L + &) fully (_S5 f@li + &) fulness (_S7 f@Ln@s .group g g g @@ -2704,9 +2709,11 @@ gh (an g gm (_ m gn (_ n + _poi) gn nj _) gnu g@nu: hun) g g g (ear g + gei (st_ gaI %A) g (er g g (et g g (ette_ dZ @@ -2715,6 +2722,8 @@ er) g (et dZ for) ge (t gE bo) g (Ey g + _) gia (@@ dZa# + _) g (iant dZ &) gia (_ dZ@ &) gia (C_ dZ@ go) g (ic_ g @@ -3114,7 +3123,7 @@ l) im Im _pr) im (a aIm sh) im (a_ 'i:m - image ImI2dZ + imag (e ImI2dZ l) ime aIm d) ime (ns aImE im (ent+ Im @@ -3431,6 +3440,7 @@ c) is (_ Is @@m) is (_ Is am) is (_S1 z + v) is (_ Is @Cs) is (_ =Is &) is (abl aIz isa (tion aIzeI @@ -3983,6 +3993,7 @@ oi (c oUI2 oi (ce OI oi (ck OI + oi (zA oUaI c) o (inci %oU o (ing oU d) o (ing u: @@ -4345,7 +4356,7 @@ pl) or o@ m) or (al 0r w) or (K 3: -?5 w) or VR +?5 w) or (K VR w) or (m 3: ?5 w) or (m VR w) or (se 3: @@ -4721,6 +4732,7 @@ _) pre (C@ pr%I _) pre (C% prE _) prea (ch pri: + _) pre (ad pr%i: _) pre (am pri: _) pre (cinc pri: pre (cio prE @@ -4728,7 +4740,7 @@ _) pre (coP3 pr,i: preda (to prEd@ prede (ces pri:dI - _) pre (diP3 pr%i + _) pre (diP3 pr%i: _) pre (dic pr%I _) pre (em pr%i: _) pre (fec pri: @@ -5211,27 +5223,7 @@ _) tera tEr@ te (rrest t2@ r) tga (g gI - &) tia (_ S@ - &s) tia (_ tS@ @) t (ia S - pi) t (ia t - is) t (ian+ t - &) tian (_ =S@n - _) tian tjan - &) tial S@L - &s) tial tj@L - &) ti (ali SI - i) tia (liL06 S@ - &) tien S@n - &) tience S@ns - t (ime_ t2 - &) tion S=@n - &s) tion tS@n -?8 &) tion S=Vn -?8 &s) tion tSVn - tion (al S=@-n - &) tious S=@s - AC) tive (_ =tIv s) t (l ? to (morr t@ _) to (nn tV @@ -5254,6 +5246,7 @@ _) two tu: ttu (r t@ @) tu (al tSu: + @) tu (at tSu: _sta) tu tSu: ?3 _sta) tu (to tS@ c) tu (al_ =tSu: @@ -5262,6 +5255,7 @@ @) tu (lat =tSU ?3 tu (Ant tSu: ?3 tu (Ancy tSu: + tu (ous tSu: @) tur (A tS@r @) tur (al_ tS=@r @@ -5321,6 +5315,30 @@ _) them D%Em _) the (mA Ti: +.group ti + &) tia (_ S@ + &s) tia (_ tS@ + propi) ti (a tI + ti (ac tI + &) tian (_ =S@n + &s) tian (_ tS@n + _) tian tjan + &) tial S@L + &s) tial tj@L + &) ti (ali SI + i) tia (liL06 S@ + &) tien S@n + &) tience S@ns + ti (me_ t2aI + &) tion S=@n + &s) tion tS@n +?8 &) tion S=Vn +?8 &s) tion tSVn + tion (al S=@-n + &) tious S=@s + AC) tive (_ =tIv + + .group u u V man) u ju: @@ -5823,6 +5841,7 @@ _) z (wY z @) zales (_ z'A:l@s + zei zaI zes (_ zI2z zh Z zu (_ =zu: diff --git a/dictsource/fa_list b/dictsource/fa_list index 99dac881..849dcc03 100755 --- a/dictsource/fa_list +++ b/dictsource/fa_list @@ -342,6 +342,7 @@ $ dolAR آصف Asef آغشت Aq1eSt آفرودیت AfRodit +آفرید AfaRid آفریقا AfRiq1A آفرین AfaRin آفرینش AfaRineS @@ -362,6 +363,7 @@ $ dolAR آمرزش AmoRzeS آمریکا AmRikA آمل Amol +آمنه Amene: آموخت Amuxt آموزش AmuzeS آمیخت Amixt @@ -377,6 +379,7 @@ $ dolAR آنفلوآنزا AnfeloAnzA آنقدر Anq1adR آنلاین AnlAjn +آنند Anand آنچنان AntSenAn آنکه Anke: آهسته Aheste: @@ -392,6 +395,7 @@ $ dolAR آپولن Apolon آپولون Apolon آکادمی AkAdemi +آکادمیک AkAdemik آکاردن AkARdeon آکاردون AkARdeon آکاپلا AkApellA @@ -400,6 +404,7 @@ $ dolAR آکمپانیمان AkompAnimAn آکواریوم AkvARijom آکورد AkoRd +آکومپانیمان AkompAnimAn آگاممنن AgAmemnon آگاممنون AgAmemnon آگاه A:gAh @@ -417,249 +422,611 @@ $ dolAR آیکون Ajkon ائتلاف e?telAf ابابصیر abAbasiR +ابابکر abAbakR +اباحه ebAhe: +اباحیگر ebAhigaR +اباعبدالله abA?abdellAh ابتدا ebtedA ابتلا ebtelA ابتکار ebtekAR +ابتیاع ebtijA? +ابخره abxeRe ابد abad +ابدا abadan ابداع ebdA? +ابدال ebdAl +ابدالدهر abadoddahR +ابرا ebRA +ابرار abRAR ابراز ebRAz +ابرام ebRAm ابراهیم ebRAhim ابرت e:bRat +ابررایانه abaRRAjAne: +ابررسانا abaRResAnA +ابررسانه abaRResAne: +ابرشرکت abaRSeRkat +ابرشهر abaRSahR +ابرقدرت abaRq1odRat +ابرقو abaRq1u +ابرمانند abRmAnand +ابرمرد abaRmaRd +ابرهارد abaRhARd +ابروان abRovAn +ابروکمان abRukamAn +ابرکامپیوتر abaRkAmpijuteR +ابرکوه abaRkuh +ابریشم abRiSam +ابریق ebRiq1 +ابزارنگر abzARnegaR ابطال ebtAl +ابقا ebq1A ابلاغ eblAq1 ابله ablah ابلیس eblis ابن ebn ابنیه abnije: ابهام ebhAm +ابهت obohhat +ابهررود abhaRRud ابهی abhA ابوا ebuA +ابوال abol +ابوالحسن abolhasan ابوالفضل abolfazl +ابوالهول abolhol +ابوبکر abubakR +ابوت abovvat +ابوحاتم abuhAtam +ابودجانه abudadZAne ابوذر abuzaRR +ابوسعید abusaid +ابوسفیان abusofjAn +ابوسلمه abusalame +ابوطیاره abutajjARe: +ابوظبی abuzabi ابوعطا abuatA +ابولهب abulahab +ابولی aboli +ابومسلم abumoslem +ابونعیم abunaim +ابونیت abonit +ابوی abavi +ابوین abavejn +ابژکتیو obZektiv +ابژکتیویسم obZektivism +ابیض abjaz +ابیورد abivaRd اتاق otA:q1 +اتان etAn +اتانال etAnAl +اتانل etAnol +اتاوا otAvA اتحاد ettehAd اتحادیه ettehAdije: اتخاذ ettexAz +اتر eteR +اترار otRAR +اتراق otRAq1 اتریش otRiS +اتساع ettesA? +اتصاف ettesAf اتصال ettesAl اتفاق ettefAq1 اتفاقا ettefAq1an +اتقان etq1An اتلاف etlAf +اتلال etlAl اتم atom اتمام etmAm اتمسفر atmosfeR اتموسفر atmosfeR +اتمیسم atomism +اتنولژی etnoloZi اتهام ettehAm اتو otu: اتوبوس otobus اتوبوسران otobusRAn +اتوبیوگرافی otobijogeRAfi +اتود etod +اتوریته otoRite: +اتوسرویس otoseRvis +اتوسکپ otoskop +اتومات otomAt اتوماتیک otomA'tik اتوماسیون otomAsijon اتومبیل otomobil اتومبیلران otomobilRAn +اتومکانیک otomekAnik +اتوپیا otopijA +اتوپیست otopist +اتوپیسم otopism +اتوکد otokad +اتوکراسی otokeRAsi +اتوکسید etoksid +اتوکش utukeS +اتوکلاو otokelAv اتّحاد ettehAd اتّحادیه ettehAdije: اتّخاز ettexAz اتّصال ettesAl اتّهام ettehAm اتکا ettekA +اتیل etil +اتیلن etilen +اتیلین etilin +اتین etin +اتیوپی etijopi +اتیکت etiket +اثاره esARe اثبات esbAt +اثباتا esbAtan اثر a:saR +اثناعشر asnA?aSaR اجابت edZAbat +اجار edZAR اجاره edZARe: +اجاز edZAz اجازه edZAze: اجاق odZAq1 +اجانب adZAneb اجبار edZbAR +اجبارا edZbARan +اجحاف edZhAf اجرا e:dZRA اجراء ?edZRA? +اجرانشده edZRAnaSode +اجراییات edZRAijAt +اجراییه edZRAije +اجرت odZRat +اجل adZal اجلاس edZlAs +اجله adZelle اجماع edZmA? +اجماعا edZmA?an اجمال edZmAl +اجمالا edZmAlan اجنه adZenne: +احاطه ehAte: +احاله ehAle: احبا ahebbA احبّا ahebbA احتراما ehteRAman +احتقان ehteq1An احتمالا ehtemAlan +احتوا ehtevA احتکار ehtekAR احتیاج ehtijAdZ +احتیاط ehtijAt +احتیاطا ehtijatan +احجار ahdZAR +احداث ehdAs احداس ehdAs +احدالناس ahadonnAs احراز ehRAz احساس ehsAs احسان ehsAn +احسنت ahsant +احصاء ehsA +احصاییه ehsAije احضار ehzAR +احفاد ahfAd احقاق ehq1Aq1 احمال ehmAl +احمدلو ahmadlu +احمدموسی ahmadmusA +احمدمیرزا ahmadmiRzA +احمدپناه ahmadpanAh +احوالپرسی ahvAlpoRsi احیا ehjA احیانا ahjAnan +اخت oxt اختاپوس oxtApus +اخترفیزیک axtaRfizik +اخترفیزیکدان axtaRfizikdAn +اختروش axtaRvaS +اختصارا extesARan اختصاصا extesAsan +اختفا extefA اختیار extijAR +اخرا oxRA اخراج exRAdZ +اخروی oxRavi اخص axas اخطار extAR +اخفا exfA اخلاص exlAs +اخلاط exlAt +اخلاقا axlAq1an اخلال exlAl اخوان axavAn +اخوانیات exvAnijAt +اخوانیه exvAnije +اخوت oxovvat +اخوی axavi اخیر axiR اخیرا axiRan +اخیرالتصویب axiRottasvib +اخیرالذکر axiRozzekR +اداء a ادار edAR اداره 'ed,ARe: ادامه edAme: +ادانشده adAnaSode ادب adab +ادبا odabA ادبیات adabijAt ادرار edRAR ادراک e:dRAk ادرنه adeRne: +ادرکنی adRekni +ادریس edRis ادعا edde?A ادغام edq1Am ادقام edq1Am +ادله adelle: +ادلۀ adelleje +ادموند edmond +ادهم adham ادوات adavAt +ادوارد edvARd +ادواردو edvARdo +ادونیست advenist +ادونیسم advenism ادویه advije: ادویۀ advijeje ادّعا edde?A ادکلن odkolon +ادیت edit +ادیتور editoR ادیسه odise: ادیسون edison +ادیپ odip اذعان ez?An اذن ezn +اذهان azhAn اذیت azjat ارائه eRAe: ارادت eRAdat اراده eRAde: اراذل 'aRAzel +ارانگوتان oRAngutAn ارایه ?eRA?e +اربیتال oRbitAl +ارتانزیا oRtAnzijA +ارتجالا eRtedZAlan +ارتحال eRtehAl ارتداد eRtedAd +ارتدوکس oRtodoks ارتدکس oRtodoks ارتش aRteS +ارتشاء eRteSA +ارتشبد aRteSbod +ارتشتار aRteStAR ارتقا eRteq1A +ارتودنسی oRtodensi ارتوپد oRtoped ارث eRs +ارثا eRsan ارجاع eRdZA? +ارد oRd اردبیل aRdebil اردشیر aRdaSiR اردن oRdon +اردنگ oRdang +اردهال aRdehAl اردو oRdu -اردواندیدار aRdavAn +اردوال aRdavAl +اردوان aRdavAn +اردوزبان oRduzabAn اردک oRdak اردکان aRdekAn اردیبهشت oRdibeheSt +ارزبر aRzbaR +ارزبگیر aRzbegiR ارزش aRzeS +ارس aRas ارسال 'eRsAl +ارسباران aRasbARAn +ارستد oRsted ارسطو aRastu +ارسموس aRasmus +ارسنات aRsenAt +ارسنید aRsenid +ارسنیک aRsenik ارشاد eRSAd ارشد aRSad +ارشمیدس aRaSmidos +ارشک aRaSk +ارصاد eRsAd ارضا eRzA ارطقا eRteq1A ارظش aRzeSmand ارعاب eR?Ab ارغوان aRq1avAn ارفاق eRfAq1 +ارفاقا eRfAq1an +ارل eRl ارم 'eRam +ارمک oRmak +اره aRRe +ارهاش eRhAS ارومیه oRumije: +اروندرود aRvandRud +اروندکنار aRvandkenAR اروپا oRupA ارکان aRkAn +ارکاندیشن eRkAndiSen ارکست oRkest -ارکستر oRkesteR +ارکستر oRkestR ارکستراسیون oRkestRAsijon +ارکسترال oRkestRAl ارکیده oRkide: ارگ oRg ارگاسم oR'gAsm ارگان oRgAn +ارگاندی oRgAndi +ارگانزا oRgAnzA +ارگانل oRgAnel +ارگانیزم oRgAnizm +ارگانیزه oRgAnize +ارگانیسم oRgAnism +ارگانیک oRgAnik +ارگوتین eRgotin +ارگوسترول eRgosteRol +ارگونومی eRgonomi +ارگونومیک eRgonomik اریان oRjAn +اریب oRib +اریتره eRitRe: +اریترومایسین eRitRomAjsin +اریستوکرات aRistokeRAt اریک e'Rik اریکسون eRikson +اریکه aRike: +اریکۀ aRikeje +اریگامی oRigAmi ازا ezA +ازبهر azbahRe ازبک ozbak ازت azat +ازتات azotAt +ازته azote: +ازجانب azdZAnebe +ازجمله azdZomle +ازحیث azhejse ازدحام ezdehAm +ازدنبال azdonbAle ازدواج ezdevAdZ ازدیاد ezdijAd ازش azaS +ازفرط azfaRte ازل azal ازم azam +ازملک azmalak +ازمیر ezmiR +ازن ozon +ازنظر aznazaRe +ازنو azno: +ازوالتماس ezzo_eltemAs +ازوجز ezzodZez +ازوچز ezzotSez +ازپی azpeje +ازگل ozgal +ازیریس oziRis اسارت esARat اساسا asAsan +اسام osAm +اسانس esAns اسایه ?esA?e اسبات esbAt است 'ast +استات asetAt +استاتور estAtoR استاتیک estAtik +استاجلو estAdZlu استاد ostAd استادان ostAdAn استادیوم estAdijom استار estAR استارت estARt +استارتر estARteR +استافیلوکوک estAfilokok +استالاگمیت estAlAgmit +استالدیید asetAldeid +استالونه estAlone استالین estAlin +استامپ estAmp +استامینوفن estAminofen استان os'tAn استانبول estAnbol استاندارد estAndARd +استانده estAnde +استانید estAnid +استاژ estAZ استبداد estebdAd +استبرق estabRaq1 +استبرک estabRak +استبل establ استثنا estesnA +استثنایا estesnAan +استحاله estehAle +استحسان estehsAn استخان ostoxAn استخر estaxR استخوان ostoxAn +استدعا ested?A +استدلالا estedlAlan استدیو estedijo +استر esteR +استراتسفر esteRAtesfeR +استراتوس esteRAtus استراتژی esteRAteZi استراتژیست esteRAteZist استراتژیک esteRAteZik استراحت esteRAhat +استراسبرگ esteRAsboRg +استراسبورک esteRAsboRk استرالیا osto'RAlijA +استربسکپ esteRoboskop +استربند estaRband استرداد esteRdAd استرس esteRes +استرسزا esteReszA +استرلاب ostoRlAb +استرلیزه esteRlize: +استرلینگ esteRling +استروژن esteRoZen +استرویید esteRoid +استرژن estoRoZen +استریل esteRil +استریلیزاسیون esteRilizAsijon +استریلیزه esteRilize: استریو esteRijo +استریکنین esteRiknin +استسقا estesq1A +استطرادا estetRAdan +استعانت este?Anat استعداد este?dAd +استعدادکش estedAdkoS استعفا este?fA +استعلا este?lA +استعماگر estemARgaR +استغنا esteq1nA استفاده estefAde: +استفان estefAn +استفانو estefAno +استفسار estefsAR +استفهام estefhAm +استقرا esteq1RA +استقصا esteq1sA +استلا estellA استمداد estemdAd +استمرار estemRAR استمنا estemnA +استمپ estamp +استن aseton +استنفورد estanfoRd +استهزا estehzA استوا ostovA استوار ostovAR استوانه ostovAne: +استوانک ostovAnak استوانۀ ostovAneje +استوخودوس ostoxoddus استودیو estedijo استوره ostuRe: +استوقدوس ostoq1oddus +استون aseton +استوپا estupA +استپ estep استکان estekAn استکهلم 'estokholm +استیجار estidZAR +استیحاش estihAS استیشن estejSen +استیصال estisAl استیضاح estizAh +استیفا estifA استیل estil +استیلا estilA +استیلن estilen +استیناف estinAf +استیو estiv +استیون estiven استیک estejk اسحاق eshAq1 اسد asad اسرا osaRA اسراء esRAR اسرائیل esRA?il +اسرارالتوحید asRARottovhid +اسراف esRAf +اسرافیل esRAfil اسراییل esRAi:l +اسطبل establ +اسطرلاب ostoRlAb +اسطقس ostoq1os +اسطوخودوس ostoxoddus اسطوره ostuRe: +اسف asaf +اسفالت esfAlt +اسفبار asafbAR اسفراین esfaRAjen +اسفرزه esfaRze: +اسفناج esfenAdZ +اسفنج esfandZ اسفند esfand -اسفهان esfAhAn +اسفهان esfahAn +اسقاط esq1At اسقف osq1of +اسلاف aslAf اسلام eslAm +اسلامبول eslAmbol +اسلاو eslAv +اسلاید eslAjd اسلو eslo +اسلوانی oslovAni +اسلواک eslovAk +اسلواکی eslovAki +اسلوب oslub +اسلوموشن eslomo:Sen اسم esm اسمائل esmAil +اسمارتیز esmARtiz اسماعیل esmA?il اسمایل esmAil اسمبل asembel +اسموکینگ esmoking +اسهال eshAl +اسواران asvARAn +اسوه osve: +اسپارت espARt +اسپارتا espARtA +اسپارتاکوس espARtAkus اسپاسم espAsm اسپانسرخطم espAnseR اسپانیا espAnijA +اسپانیول espAnjol +اسپاگتی espAgeti +اسپر espaR +اسپرانتو espeRAnto +اسپرم espeRm +اسپرماتوزوئید espeRmAtozo?id +اسپرماتوزویید espeRmAtozoi:d +اسپرماتید espeRmAtid +اسپرماهی espaRmAhi +اسپرک espaRak اسپری espeRej اسپرینوف espeRinof اسپشیال espeSiAl اسپم espam اسپند espand +اسپنسر espenseR +اسپهبد espahbod اسپورت espoRt +اسپکترم espektRom +اسپکتروم espektRom +اسپکتروگرام espektRogeRAm +اسپیریل espiRil اسپیس espejs اسپیلیتر espiliteR اسپیکر espikeR +اسکات eskAt +اسکاتلند eskAtland اسکار ?oskAR +اسکارلت eskARlet اسکان eskAn +اسکاندیناوی eskAndinAvi +اسکاندیناویایی eskAndinAvijii: +اسکانک eskAnk +اسکانیا eskAnijA +اسکاچ eskAtS اسکای eskAj اسکاینت eskAjnet اسکایپ eskAjp اسکرول eskRul +اسکریم eskeRim اسکرین eskRin اسکریپت eskRipt اسکلت eskelet @@ -668,41 +1035,88 @@ $ dolAR اسکن eskan اسکناس eskenAs اسکندر eskandaR +اسکندرون eskandaRun اسکنر eskaneR اسکو osku +اسکودو eskodo +اسکورت eskoRt اسکی eski اسکیت eskejt +اسکیتینگ eskejting اسکیزوفرنی ?eskizofeRni +اسکیزوفرنیک eskizofeRnik اسکیمو eskimu +اسکینر eskineR +اسی esi +اسیداوریک asiduRik +اسیدسیتریک asidsitRik +اسیدفولیک asidfulik +اسیدلاکتیک asidlAktik +اسیدوفیل asidofil +اسیدکربنیک asidkaRbonik +اسیلاتور asilAtoR +اسیلوسکپ asiloskop +اشارات eSARAt +اشارت eSARat اشاره eSARe: +اشاعه eSA?e +اشانتیون eSAntijon اشباع eSbA? اشتباه eStebAh +اشتباها eStebAhan +اشتداد eStedAd +اشتعالزا eSteAlzA +اشتغالزا eSteq1AlzA اشتها eStehA +اشتهاردی eStehARdi +اشتیاق eStijAq1 اشد aSad اشراف a:SRAf اشراق eSRAq1 اشعه aSa?e: اشغال eSq1Al +اشل eSel اشنویه oSnavijje: اشپیل eSpil اشک aSk +اشکاف eSkAf اشکال e:S'kAl +اشکبار aSkbAR +اشکدان aSkdAn +اشکفت eSkoft +اشکن eSkan +اشکناز aSknAz +اشکنک eSkanak +اشکوب oSkub اصابت esAbat اصالت esAlat +اصالتا esAlatan اصرار esRAR اصراف esRAf اصطلاح estelAh اصطلاحا estelAhan +اصغا esq1A اصفهان esfahAn اصلا aslan اصلاح eslAh +اصلیتا aslijatan +اصم asam +اصوات asvAt اصول osul اصولا osulan اصولاً osulan اضاف ezAf +اضرار ezRAR اضطراب ezteRAb اضطرار ezteRAR +اضطرارا ezteRARan +اضمحلال ezmehlAl اطاعت etA?at +اطاله etAle: +اطالۀ etAleje +اطبا atebbA +اطراق otRAq1 +اطعام et?Am اطفا etfA اطفائیه etfAijje: اطفائیّه etfAijje: @@ -716,14 +1130,21 @@ $ dolAR اطلاعات ettelA?At اطلاق etlAq1 اطمینان etminAn +اطناب etnAb اظهار ezhAR +اظهارنظر ezhARenazaR +اعتراضا e?teRAzan +اعتلا e?telA اعتماد e?temAd اعتنا e?tenA +اعتیاد etijAd اعجوبه o?dZube: اعداد a?dAd +اعدل adal اعراف e?RAf اعشار a?SAR اعصاب a?sAb +اعصار a?sAR اعضا 'a?zA اعظم a?zam اعلا a?lA @@ -734,36 +1155,87 @@ $ dolAR اعم a?am اعماق a?mAq1 اعمال a?mAl +اعیاد a?jAd +اعیان a?jAn +اغر oq1oR +اغراق eq1RAq1 اغفال eq1fAl اغما eq1mA +اغماض eq1mAz +اغوا eq1vA +افادات efAdAt افاده efAdeh +افاضات efAzAt +افاضه efAze +افاقه efAq1e: افت oft افتاد oftAd +افتان oftAn افتد oftad +افترا efteRA +افراخت afRAxt افراشت afRASt افراط efRAt +افروخت afRuxt افروز ?afRuz +افریقا efRiq1A افزاید afzAjad افزایش afzAjeS +افساد efsAd +افسارگسسته afsARgosaste +افسارگسیخته afsARgosixte +افسارگسیختگی afsARgosixtegi +افسرالملوک afsaRolmoluk افسرد afsoRd افشا efSA +افشان afSAn +افشر afSoR +افشرد afSoRd افطار eftAR افق ofoq1 افقه afq1ah +افلاس eflAs +افلیج eflidZ +افه efe: +افهام efhAm +افواها afvAhan افول oful +افونت ofunat افک ?efk افکت efekt +افکن afkan +افکند afkand +اق oq1 +اقارب aq1AReb +اقاله eq1Ale: اقامت eq1Amat +اقباض eq1bAz اقبال eq1bAl +اقتدا eq1tedA اقتدار eq1tedAR +اقتران eq1teRAn +اقتصاددان eq1tesAddAn +اقتضا eq1tezA اقدام eq1dAm +اقرا eq1RA اقرار eq1RAR +اقران aq1RAn +اقربا aq1RebA اقزایش afzAjeS +اقصا aq1sA اقصی aq1sA اقل aq1al +اقلا aq1allan +اقلیدوس oq1lidos اقلیم eq1lim اقناع eq1nA? +اقنوم oq1num +اقونیطون oq1unitun +اقوی aq1vA +اقویا aq1vijA اقیانوس oq1jAnus +الابختکی allAbaxtaki +الابختی allAbaxti الابهی alabhA الاجرا oledZRA الاذکار ol_azkAR @@ -772,15 +1244,23 @@ $ dolAR الاکلنگ allAkolang البته al'batte: البرز alboRz +البلاغه olbalAq1e: البها ol_bahA التحاب eltehAb التحصیل oltahsil +التذاذ eltezAz الترجمه oltaRdZome: الترجمۀ oltaRdZomeje +التزام eltezAm +التصاق eltesAq1 +التفات eltefAt التفاوت ottafAvot +التقا elteq1A +التقاط elteq1At التماس eltemAs التهاب eltehAb التیام eltijAm +التیماتوم oltimAtom الحاد elhAd الحاق elhAq1 الحام elhAm @@ -790,24 +1270,36 @@ $ dolAR الخروج olxoRudZ الدّین oddin الدین oddin -الذکار azkAR +الرحمان aRRahmAn الزام elzAm الزاما elzAman السادات ossAdAt +الساعه assA?e: +السالوادور elsAlvAdoR الست alast +السلطان ossoltAn +الشعاع oSSo?A? +الشعرا oSSo?aRA +الشفا oSSafA الشمس aSSams +الصاق elsAq1 العاده olAddeh العدل ol_adl العلاج ol?alAdZ +العلم al?elm العمل ol_amal العهد olahd الغا elq1A +الغاگری elq1AgaRi الف alef الفبا alefbA +الفت olfat القاعده alq1A?ede: +القاکننده elq1Akonande القدس olq1odos القول alq1o:l اللّه all:Ah +الم alam المان elemAn المثل ol'masal المثنی almosannA @@ -815,117 +1307,270 @@ $ dolAR المقدس olmoq1addas الملل ol'melal المنت element +الموت alamut المپ olamp المپیاد olampijAd المپیک olampik الناز elnAz -النهار onnhAR -النّهار onnhAR +النسا onnesA +النهار onnahAR +النّهار onnahAR +النگ alang النگو alangu +اله elAh الهام elhAm +الهدی olhodA +الهلال alhelAl الهه elAhe: الهی elAhi الهیه elAhije: +الهیون elAhijun الو alo: +الوان alvAn الوجود ol'vodZud الوقوع olvoq1u? +الوندکوه alvandkuh +الوهیت olohijjat الوکاله olvekAle: الّاکلنگ allAkolang الک alak +الکترا elekteRA الکترریسیتۀ elekteRisiteje الکترو elekteRo +الکترواستاتیک elekteRoestAtik +الکتروتراپی elekteRoteRApi +الکترود elekteRod +الکترودینامیک elektRodinAmik +الکتروسکپ elekteRoskop +الکتروشیمی elekteRoSimi +الکتروشیمیایی elekteRoSimiji +الکتروفورز elekteRofoRez +الکتروفیزیولوژی elekteRofizijoloZi +الکتروفیلتر elekteRofilteR +الکترولیت elekteRolit +الکترولیز elekteRoliz +الکترولیزه elekteRolize +الکترومتر elekteRometR الکترومغناطیس elekteRomeq1nAtis +الکتروموتور elekteRomotoR +الکترومکانیکی elekteRomekAniki الکترون elekteRon الکترونیک elekteRonik +الکتروپمپ elekteRopomp +الکتروکاردیوگراف elekteRokARdijogeRAf +الکتروکاردیوگرام elekteRokARdijogeRAm الکتریسیته elekteRisite: الکتریک elekteRik +الکس aleks +الکسا aleksA +الکساندر aleksAndeR +الکساندرو aleksAndRo الکل alkol +الکلاز alkolAz +الکلومتر alkolometR +الکلیز alkoliz +الکلیسم alkolism +الکلیک alkolik الگو olgu الگوریتم algoRitm الی elA الیاس eljAs الیزابت elizAbet +الینا elinA +الیناسیون elinAsjun الیه alajhe +الیور oliveR +الیگودرز aligudaRz اما 'a,mmA امارات emARAt +امارت emARat +اماله emAle: امام emAm +امانت amAnat امانوئل emAnuel اماکن amAken امبردست amboRdast امت omm'at امتحان emtehAn امتداد emtedAd +امتنان emtenAn امتیاز emtijAz امداد emdAd امدادرسان emdAdRasAn +امرا omaRA امرار emRAR +امربر amRbaR +امرداد amoRdAd امروز em'Ruz امریکا emRikA امسال emsAl +امساک emsAk امشب emSab +امشی emSi امضا emzA امضاء emzA +امل ommol املا emlA املت omlet امنا omanA +اموات amvAt امور omuR +امولسیون emolsijon +اموی omavi +امپراتریس empeRAteRis امپراتور empeRAtuR +امپراطریس empeRAteRis امپراطور empeRAtuR +امپرسیونیست ampeRsijonist +امپرسیونیسم ampeRsijonism +امپریال ampeRjAl +امپریالیزم ampeRjAlizm +امپریالیست ampeRjAlist +امپریالیسم ampeRjAlism امکان emkAn +امگا omegA +امی ommi امید omid امیدوار ?omidvAR امیر amiR +امیرارسلان amiRaRsalAn +امیراصلان amiRaslAn +امیراعلم amiRalam +امیه omajje: +اناالحق analhaq1 +اناث enAs +انباشت anbASt +انبر anboRa انبردست anboRdast انبوه anbuh +انتحال entehAl +انترن anteRn +انترناسیونال anteRnAsijonAl +انترناسیونالیست anteRnAsijonAlist +انترناسیونالیسم anteRnAsijonAlism انتها entehA انتهای entehAje انتگرال an'tegRAl +انجبین andZabin +انجم andZom انجمن andZoman انجیل endZil +انحصارطلبانه enhesARtalabAne +انحنا enhenA انداخت andAxt +اندازد andAzad اندازگیری andAzegiRi اندرز andaRz اندروید andRojd اندرید andRojd +اندلس andolos +انده andoh اندوخت anduxt اندونزی andonezi +اندونزیا andonezijA +اندوهزدا anduhzodA +اندوهگسار anduhgosAR +اندیش andiS +اندیمشک andimeSk +اندیکاتور andikAtoR +اندیکس andiks انرژی eneRZi +انرژیک eneRZik +انریکو enRiko +انزال enzAl انزوا enzevA +انس ons انسان en'sAn انستیتو anestito +انسداد ensedAd +انسولین ansolin +انسیه ensije: انشا enSA انشاءالله ?enSA?allAh انصاف ensAf انصافا ensAfan +انفارکتوس anfARktus +انفاق enfAq1 +انفال enfAl انفرادا enfeRAdan +انفرماتیک anfoRmAtik +انفس anfos انفورماتیک anfoRmAtik +انفورماسیون anfoRmAsijon +انفکسیون anfeksijon انقضا enq1ezA +انقیاد enq1ijAd +انم enom انهار ?anhAR +انورسادات anvaRsAdAt انوش anuS +انژیوگرافی anZijogeRAfi انکار enkAR +انکارنشدنی enkARnaSodani +انکارنکردنی enkARnakaRdani +انکرالاصوات ankaRolasvAt +انکسار enkesAR +انکوباتور ankubAtoR انگار engAR انگاشت engASt +انگبین angabin انگشت angoSt انگشتان angoStAn انگشتر angoStaR انگلستان engelestAn +انگلک angolak انگلیس engelis +انگلیکان engelikAn +انگم angom +انگیخت angixt +انگیزش angizeS انیشتین aniS'tajn +انیفرم onifoRm +انیفورم onifoRm +انیماتور animAtoR انیمیشن animejSen +اهانت ehAnat اهتکار ehtekAR اهدا ehdA +اهر ahaR +اهرم ahRom اهرمن ahReman +اهم ahamm +اهمال ehmAl اهمیت 'ahammi:,jat +اهورامزدا ahuRAmazdA او u: +اوا evA اواخر avAxeR اواسط avAset +اوامر avAmeR اوایل avAjel اوباش 'o:bAS +اوتار o:tAR +اوتاوا otAvA +اوتوپیا otopijA اوج 'o:dZ +اوجا udZA +اودکلن odokolon +اودیسه odise اوراق o:RAq1 +اورال oRAl +اورانگوتان uRAngutAn اورانیوم oRAnijom +اورت oveRt اورتور oveRtuR +اورتوپد oRtoped اورد ovoRd +اورنگ o:Rang +اورولوژی uRoloZi +اوروگویه oRogue +اورژینال oRZinAl +اورکت oveRkot +اوریک uRik +اوزان o:zAn +اوزاکا ozAkA +اوزن ozon +اوستا avestA اوصاف osAf اوضاع o:zA? اوقات o:q1At @@ -937,37 +1582,100 @@ $ dolAR اونس ons اونور 'unvaR اوّلین avvalin +اوپتیک optik +اوپن open اوپک opek اوکراین okRAjn اوی uj اویس ovejs اوین evin +اپال opAl +اپتومتر optometR +اپتیمم optimom اپتیک optik اپرا opeRA اپراتور opeRAtoR +اپرت opeRet +اپسیلن epsilon +اپسین opsin اپل apel اپلیکیشن aplikejSen +اپورتونیست opoRtunist +اپورتونیسم opoRtunism +اپوزسیون opozesijon اپوزیسیون opozisijon اپول epol +اپک opek +اپیدرم epideRm +اپیدمولوژی epidmoloZi +اپیدمولوژیکی epidmoloZiki اپیدمی epidemi +اپیدمیولوژی epidemijoloZi +اپیدمیک epidemik +اپیزود epizod +اپیلاسیون epilAsjon +اپیکور epikoR +اپیکوریسم epikuRism اژدها eZdehA +اژدهاکش eZdehAkoS اژه eZe: +اژیدهاک eZidehAk +اکازیون okAzijon +اکالیپتوس okAliptus +اکانت akAnt +اکباتان ekbAtAn +اکبیری ekbiRi +اکتان ektAn +اکتاو oktAv اکتبر oktobR +اکتت oktet اکتفا ektefA +اکتودرم ektodeRm +اکتوپلاسم ektopelAsm +اکتوپی ektopi اکثرا aksaRan +اکرام ekRAm اکران ekRAn اکراه ekRAh +اکراین okRAjAn +اکساسید oksAsid +اکسالات oksAlAt +اکسایش oksAjeS +اکساینده oksAjAnde +اکسایید oksAid +اکسل eksel +اکسپرس ekspeRes +اکسپرسیونیست ekspeRsijonist +اکسپرسیونیسم ekspeRsijonism اکسپلورر ekspeloReR اکسید oksid +اکسیداسیون oksidAsijon اکسیدان oksidAn +اکسیده okside اکسیر eksiR +اکسیژن oksiZen اکشن akSen +اکلیل aklil +اکمال ekmAl اکو eko: +اکوادر ekvAdoR اکوادور ekvAdoR +اکوسیستم ekosistem +اکولوژی ekoloZi +اکولوژیک ekoloZik +اکولژیست ekoloZist +اکونومی ekonomi اکونومیست ekonomist +اکونومیک ekonomik +اکیدا akidan +اکیپ ekip اگر ,a'gaR +اگرنه agaRna اگزما egzemA اگزوز 'egzoz +اگزیستانسیالیست egzistAnsijAlist +اگزیستانسیالیسم egzistAnsijAlism +ایاب ajjAb ایاز ajAz ایام a:jj'jAm ایبوک ibuk @@ -1001,6 +1709,8 @@ $ dolAR ایوان ejvAn ایوب ajjub باباطاهر bAbAtAheR +باتجربه bAtadZRobe: +باتجربۀ bAtadZRobeje باتقوا bAtaq1vA باخت 'bAxt بادمجان bAdemdZAn @@ -1026,6 +1736,7 @@ $ dolAR باسابقه bAsAbeq1e: باستانی bAstAni باشد bASad +باشکوه bASokuh باصفا bAsafA باطری bAtRi باطن bAten @@ -1061,6 +1772,7 @@ $ dolAR بایستیم be?istim بباسیل babAsil ببخش bebaxS +ببرد bebaRad ببرها babRhA ببرهای babRhAje ببرهایی babRhAi: @@ -1069,6 +1781,7 @@ $ dolAR ببین bebin بت bot بتر botR +بتوان betavAn بجا bedZA بجز bedZoz بجنورد bodZnuRd @@ -1093,6 +1806,7 @@ $ dolAR بدان bedAn بدانها bedAnhA بدبخت bad_baxt +بدتری badtaRi بدحجاب badhedZAb بدرستی bedoRosti بدرفتار badRaftAR @@ -1104,6 +1818,7 @@ $ dolAR بدل badal بدم bedam بدن badan +بدنام badnAm بدهکار bedehkAR بدهی bedehi بدوی badvi @@ -1133,6 +1848,9 @@ $ dolAR برتری baRtaRi برج boRdZ برجا baRdZA +برجست baRdZast +برجسته baRdZaste: +برجستۀ baRdZasteje برخاست baRxAst برخط baRxat برخواست baRxAst @@ -1220,6 +1938,7 @@ $ dolAR بستگانم bastegAnam بستگانمان bastegAnemAn بسر besaR +بسطام bastAm بسم besme: بسنده basande: بسوی besuje @@ -1241,6 +1960,7 @@ $ dolAR بشقاب boSq1Ab بشقابپرنده boSq1AbpaRande: بشقابپرندۀ boSq1AbpaRandeje +بشم beSam بشن beSan بشنود beSenavad بشنوم beSenavam @@ -1270,6 +1990,7 @@ $ dolAR بغرنج boq1RandZ بغض boq1q1z بغل baq1al +بفتا baftA بفرست befeRest بقال baq1q1Al بقایا baq1AjA @@ -1333,6 +2054,7 @@ $ dolAR بهانه bahAne: بهت behet بهتر behtaR +بهترون behtaRun بهترین behtaRin بهداشت behdASt بهرام bahRAm @@ -1371,7 +2093,7 @@ $ dolAR بکر bekR بکس boks بکسل boksel -بکش bekoS +بکش bekeS بکن bokon بکند bokonad بگم begam @@ -1402,6 +2124,7 @@ $ dolAR بیصبر bisabR بیصفا bisafA بیض bejz +بیضا bejzA بیفت bijoft بیفتاد bijoftAd بیفزا bijafzA @@ -1417,11 +2140,14 @@ $ dolAR بینجام bijandZAm بیند binad بینداز bijandAz +بینش bineS +بینظم binazm بینم binam بینند binand بینی bini بینید binid بینیم binim +بینیی bini: بیهنر bihonaR بیو bijo بیوه bive: @@ -1472,6 +2198,8 @@ $ dolAR تبعات taba?At تبعاتی taba?Ati تبعه tabaeje +تبعیات taba?ijjAt +تبعیت taba?ijjat تبعید tab?id تبق 'tabaq1 تبلت tablet @@ -1487,6 +2215,7 @@ $ dolAR تجاری tedZARi تجدیدنظرخواهی tadZdidenazaRxAhi تجربه tadZRobe +تجربۀ 'tadZRobeje تجربی tadZRobi تجریش tadZRiS تجسم tadZassom @@ -1500,9 +2229,11 @@ $ dolAR تخت t'axt تخم toxm تخمین taxmin +تخیر taxajjoR تخیل taxa'jjol تدارک tadARok تدارکات tadARokAt +تداوم tadAvom تدین tadajjon تدیّن tadajjon تذکر tazakoR @@ -1554,6 +2285,7 @@ $ dolAR تریو tRijo تریوله tRijule: تزئین taz?in +تزلزل tazalzol تست test تسویه tasvije: تسویۀ tasvijeje @@ -1580,6 +2312,7 @@ $ dolAR تف tof تفاهم tafAhom تفاوت ta'fAvot +تفتیش taftiS تفلیس teflis تفنگ tofang تفنگی tofangi @@ -1654,6 +2387,7 @@ $ dolAR توازن tavAzon توافق tavAfoq1 توالت tuAlet +توام to:?am توان 'tavAn توانا tavAnA تواند tavAnad @@ -1688,6 +2422,9 @@ $ dolAR تولد 'tavallod تولّد 'tavallod تولید to'lid +تونال tonAl +تونالیته tonAlite: +تونالیتۀ tonAliteje تونس tunes تونست tunest تونل tunel @@ -1769,6 +2506,7 @@ $ dolAR جذاب dZazzAb جر dZeR جرأت dZoR?'at +جرائم dZaRA?em جرات dZoR?'at جراح dZaRRAh جراحات dZeRAhAt @@ -1893,6 +2631,8 @@ $ dolAR حرمت hoRmat حروم haRum حرکات haRakAt +حرکاتش haRakAtaS +حرکاتم haRakAtam حرکت haRekat حزب hezb حزن hozn @@ -1942,6 +2682,7 @@ $ dolAR حوزوی ho:zavi حوصله ho:sele: حوصلگی ho:selegi +حوصلۀ ho:seleje حول ho:l حوله hole: حولۀ holeje @@ -2005,6 +2746,7 @@ $ dolAR خرت xaRat خرد xeRad خرداد xoRdAd +خردسال xoRdsAl خرده xoRde: خرس xeRs خرسند xoRsand @@ -2068,6 +2810,7 @@ $ dolAR خمین xomejn خنثی xonsA خنک xonak +خنگ xeng خنیا xonjA خواب x'Ab خوارج xa'vARedZ @@ -2079,11 +2822,13 @@ $ dolAR خوانین xa'vAnin خواه x'Ah خواهد xAhad +خواهدشد xAhadSod خواهر xAhaR خواهرزن xAhaRzan خواهرشوهر xAhaRSohaR خواهش 'xAheS خواهشمند xAheSmand +خواهیدشد xAhidSod خودکشی xodkoSi خورد xoRd خورش xoReS @@ -2145,6 +2890,7 @@ $ dolAR دخالت dexAlat دخانیات doxAnijAt دختر doxtaR +دخترا doxtaRA دخترخاله doxtaRxAle: دختردایی doxtaRdAi: دخترعمه doxtaRamme: @@ -2157,6 +2903,7 @@ $ dolAR درازا deRAzA درام deRAm درامد daRAmad +دراویش daRAviS دراپ deRAp درایت deRAjat درایو deRAjv @@ -2218,6 +2965,7 @@ $ dolAR دستمبو dastambu دستور dastuR دستوراتی dastuRAti +دستورالعمل dastuRol_amal دستوری dastuRi دستپخت dastpoxt دستکم dastekam @@ -2280,6 +3028,7 @@ $ dolAR دهشت dehSat دهقان dehq1An دهل dohol +دهلوی dehlavi دهلی dehli دهم 'dahom دهن dahan @@ -2379,6 +3128,7 @@ $ dolAR ذرت zoRRat ذغال zoq1Al ذلت zellat +ذلک zAlek ذلیلمرده zalilmoRde: ذلیلمردۀ zalilmoReje ذهن zehn @@ -2389,6 +3139,7 @@ $ dolAR ذکر zekR ذیل zejl ذیلا zejlan +رأیند Rajand رؤسا Ro?asA رئال ReA:l رئاکتور ReAktoR @@ -2616,10 +3367,13 @@ $ dolAR زودپز zudpaz زولال zolAl زکام zokAm +زکریا zakaRijA زیتون zejtun +زید zejd زیشعور ziSouR زینب zejnab زیگموند zigmond +سئوال so'Al ساخت s'Axt سادگی sAdegi سارافن sARAfon @@ -2634,6 +3388,7 @@ $ dolAR سالن sAlon سانت sAnt سانتریفیوژ sAntRifijuZ +سانتیمتر sAntimetR ساندویچ sAndevitS سانسیبل sAnsibl سانفرانسیسکو sAnfeRAnsisko: @@ -2664,6 +3419,7 @@ $ dolAR ستم setam ستیز setiz ستیغ setiq1 +سحرخیز sahaRxiz سحری sahaRi سخاوت sexAvat سخن soxan @@ -2685,6 +3441,7 @@ $ dolAR سردرگم saRdaRgom سرزمین saRzamin سرزنش saRzaneS +سرسخت saRsaxt سرسره soRsoRe: سرسرۀ soRsoReje سرش saRaS @@ -2697,6 +3454,7 @@ $ dolAR سرفه soRfe: سرقت seRq1at سرم saRam +سرمست saRmast سرمه soRme: سرمۀ soRmeje سرنخ saRnax @@ -2778,6 +3536,7 @@ $ dolAR سند sanad سندرم sandRom سنسور sensoR +سنش sennaS سنّتی sonnati سنگر sangaR سنگفرش sangfaRS @@ -2811,6 +3570,8 @@ $ dolAR سوق 'soq1 سولفژ solfeZ سولماز solmAz +سولو solo +سولیست solist سوم 'sevvom سومر sumeR سونات sonAt @@ -2844,6 +3605,7 @@ $ dolAR سکرین eskRin سکس seks سکنا soknA +سکنات sakanAt سکنه sakane: سکه sekke: سکولار sekulAR @@ -2910,6 +3672,7 @@ $ dolAR شبهات SobahAt شبهه Sobhe: شبکه Sabake: +شبکۀ Sabakeje شبیری SobejRi شبیه Sabih شتاب SetAb @@ -2951,6 +3714,8 @@ $ dolAR شعا SoA? شعار So?AR شعب So?a:b +شعبده So?bade: +شعبدۀ So?badeje شعبه So?be: شعر Se?R شعله So?le: @@ -2999,6 +3764,7 @@ $ dolAR شهره SohRe: شهرکرد SahRekoRd شهریور SahRivaR +شهوانی SahvAni شهوت Sahvat شهوتران SahvatRAn شوالیه SovAlije: @@ -3037,11 +3803,14 @@ $ dolAR شکن Sekan شکنجه SekandZe: شکند Sekand +شکه Soke: شکوفا Soku:'fA: شکوفایی SokufAi: +شکۀ Sokeje شگرد SegeRd شگرف SegeRf شگفت Segeft +شی Sej? شیء Sej? شیبان SejbAn شیخ Sejx @@ -3101,6 +3870,7 @@ $ dolAR صماغ somAq1 صماق somAq1 صمد samad +صمیمانه samimAne: صمیهثمیه somaje: صندق sandoq1 صندلی sandali @@ -3170,6 +3940,8 @@ $ dolAR عبارت ebARat عباس abbAs عبد a:bd +عبدا 'ebdA? +عبدال abdol عبدالبها abdol_bahA عبدالله abdollAh عبرت 'ebRat @@ -3336,6 +4108,7 @@ $ dolAR فراکسیون feRAksijon فرج faRadZ فرح faRah +فرخ faRRox فرخنده faRxonde فردوس feRdo:s فردوسی feRdo:si @@ -3380,6 +4153,7 @@ $ dolAR فریم feRejm فریمورک feRejmvoRk فساد fesAd +فستیوال festivAl فسفر fosfoR فسقلی fesq1eli فشار feSAR @@ -3414,6 +4188,8 @@ $ dolAR فمینیست feminist فمینیسم feminism فناور fannAvaR +فنجان fendZAn +فنجون fendZun فندق fandoq1 فهرست fehRest فهم fahm @@ -3440,7 +4216,7 @@ $ dolAR فکر 'fekR فیاض fajjAz فیبر fibR -فیتوپلاینکتون fitopelAjAnkton +فیتوپلاینکتون fitopelAjnkton فیزیولوژیک fizijoloZik فیزیکدان fizikdAn فیسبوک fejsbuk @@ -3477,6 +4253,7 @@ $ dolAR قدّوس q1ddus قدیس q1eddis قرآن q1oR?An +قراضه q1oRAze: قرب q1oRb قربان q1oRbAn قربون q1oRbun @@ -3509,6 +4286,7 @@ $ dolAR قطره q1atRe: قطعا q1at?'an قطعات q1ata?At +قطعاتی q1ataAti قطور q1atuR قفس q1afas قفص q1afas @@ -3533,6 +4311,7 @@ $ dolAR قلّه q1olle: قلّک q1ollak قلک q1ollak +قلی q1oli قم q1om قمار q1omAR قمر q1amaR @@ -3617,6 +4396,8 @@ $ dolAR لوز lo:z لوزی lozi لوستر lusteR +لوژ loZ +لوژیک loZik لوکس luks لوکیشن lokejSen لوگو logo @@ -3636,6 +4417,7 @@ $ dolAR مؤثر ,mo'a?seR مؤسس mo?asses مؤسسه mo?assese: +مؤلف mo'allef مؤمن mo?men مؤنث moannas مابقی mAbaq1i @@ -3708,6 +4490,8 @@ $ dolAR متافیزیک metAfizik متان metAn متبوع matbu? +متجلّی motedZalli +متجلی motedZalli متحد mottahed متحرک motehaRRek متر metR @@ -3813,6 +4597,7 @@ $ dolAR محدود mahdud محراب mehRAbe محرز mohRaz +محرمان mahRamAn محرمانگی mahRamAnegi محسن mohsen محسنات mohassanAt @@ -3861,6 +4646,7 @@ $ dolAR مختل moxtal مختلف moxtalef مخدر moxaddeR +مخدوش maxduS مخدّر moxaddeR مخرب moxaRReb مخرّب moxaRReb @@ -3896,6 +4682,7 @@ $ dolAR مدنی madani مدون modavvan مدّت moddat +مدیا medijA مدیترانه meditRAne: مدیتیشن meditejSen مدیر modiR @@ -3972,12 +4759,14 @@ $ dolAR مرگ maRg مرگبار maRgbAR مریخ meRRix +مرید moRid مریلند meRiland مریم maRjam مزاح mezAh مزاحم mozAhem مزاحمت mozA'hemat مزارعه mozARe?e: +مزایده mozAjede: مزد mozd مزدا mazdA مزدور mozduR @@ -3988,6 +4777,7 @@ $ dolAR مس mes مسؤول mas?ul مسئله mas_'a:le: +مسئلۀ mas?aleje مسابقات mosAbeq1At مسابقه mosAbeq1e: مساعد mosAed @@ -3998,6 +4788,7 @@ $ dolAR مساکن masAken مسایل masA?el مسبب mosabbeb +مسببان mosabbebAn مسبوق masbuq1 مستثنی mostasnA مستجاب mostadZAb @@ -4108,7 +4899,9 @@ $ dolAR مطلق motlaq1 مطلقا motlaq1an مطمئن 'mot,maen -مطمئنا motma?enan +مطمئنا motma??enan +مطمعن motmaen +مطمعنا motma??enan مطمین motmaen مطهر motahhaR مطهّر motahhaR @@ -4117,6 +4910,7 @@ $ dolAR معادل 'mo?Adel معادله 'mo?Adele: معادن ma?Aden +معاصر mo?AseR معاف mo?Af معالج mo?AledZ معامله mo?Amele: @@ -4148,6 +4942,7 @@ $ dolAR معضل mo?zal معطر mo?attaR معطل mo?attal +معظل mo?zal معظم mo?azzam معظّم mo?azzam معقر moq1a?:aR @@ -4252,10 +5047,12 @@ $ dolAR مملو mamlo مملکت mamlekat ممنون mamnun +مموری memoRi ممکن momken ممیز momajjez منا monA مناسب monAseb +مناسبتی monAsebati مناظره monAzeRe: منافق monAfeq1 مناقش monAq1eS @@ -4265,6 +5062,7 @@ $ dolAR منتاژ montAZ منتج montadZ منتخب montaxab +منتخبین montaxebin منتشر montaSeR منتظر montazeR منتفی montafi @@ -4320,6 +5118,7 @@ $ dolAR مهراب mehRAb مهراوه mehRAve: مهربون mehRabun +مهرنوش mehRnuS مهره mohRe: مهسا mahsA مهشید mahSid @@ -4343,8 +5142,10 @@ $ dolAR مواظب movAzeb موافق movAfeq1 موبایل 'mobAjl +موبد mubad موتور motoR موثر mo?asseR +موثق movassaq1 موج mo:dZ موجب modZeb موجه movadZdZah @@ -4355,6 +5156,7 @@ $ dolAR مورد moRed موز mo:z موزایک muzAi:k +موزه muze: موس 'mo:s موسس mo?asses موسسان mo?assesAn @@ -4381,6 +5183,7 @@ $ dolAR مولانا mo:lAnA مولتی molti مولد movalled +مولف mo'allef مولوتوف molotof مولوی mo:lavi مولّد movalled @@ -4408,6 +5211,7 @@ $ dolAR مکاشفات mokASefAt مکاشفه mokASefe: مکافات mokAfAt +مکالم mokAlem مکالمه mokAleme: مکانیز mekAniz مکانیزم mekAnizm @@ -4464,6 +5268,7 @@ $ dolAR میزند mizanad میسترس misteRes میسر mojassaR +میشوند miSavand میعان maja?An میل me:jl میله mile: @@ -4543,13 +5348,14 @@ $ dolAR نایل nA?el نباشد nabASad نبر nabaR -نبرد nabaRd +نبرد naboRd نبرده naboRde: نبردها nabaRdhA نبوت nabovvat نبوغ nobuq1 نبوی nabavi -نت net +نت not +نتوان natavAn نتیجتا natidZatan نتیجتاً natidZatan نجابت nedZAbat @@ -4582,6 +5388,7 @@ $ dolAR نرخ neRx نردبام naRdebAm نردبان naRdebAn +نرسید naResid نرسیده naReside: نرفت naRaft نرو naRo @@ -4654,6 +5461,7 @@ $ dolAR نقوش noq1uS نقوی naq1avi نلبکی nalbaki +نمابر namAbaR نماید namAjad نمایش namAjeS نمایند namAjand @@ -4698,6 +5506,7 @@ $ dolAR نو no: نواخت navAxt نواز navAz +نوازد navAzad نوامبر novAmbR نوبت no:bat نوبل nobel @@ -4753,6 +5562,7 @@ $ dolAR نکرد nakaRd نکشید nakeSid نکن nakon +نکند nakonad نکو neku نکوهش nekuheS نگاتیو negAtiv @@ -4792,6 +5602,7 @@ $ dolAR نیوتن nijoton نیوجرسی nijudZeRsi نیوز nijuz +نیومد najumad نیویورک nijojoRk نیکمنش nikmaneS هاتمیل hAtmejl @@ -4928,10 +5739,12 @@ $ dolAR هیپنوتیزم hipnotizm هیکل hejkal واترپلو vAteRpolo +واشنگتن vASangton واشینگتن vASington واقعا vAq1e?an والد vAled والدین vAledejn +والس vAls والله vallAh واللّه vallAh والنسیا vAlensijA @@ -4958,6 +5771,7 @@ $ dolAR وخامت vexAmat وداع ve'dA? وراث voRRAs +وراثت veRAsat ورای vaRAje ورث vaRas ورد veRd @@ -4992,6 +5806,7 @@ $ dolAR ولتاژ voltAZ ولخرج velxaRdZ ولد valad +ولز velz ولوله velvele: ولی vali وند vand @@ -5000,6 +5815,8 @@ $ dolAR ونک vanak وکالت vekAlat وکلا vokalA +وگر vagaR +وگرنه vagaR_na وی vej ویترین vitRin ویتنام vijetnAm @@ -5019,6 +5836,7 @@ $ dolAR ویولن vijolon ویژوال viZuAl پائین 'pAi:n +پابرجا pAbaRdZA پابند pAband پاتریوت pAtRijot پاتوق pAtoq1 @@ -5095,6 +5913,7 @@ $ dolAR پردیس paRdis پررفت poR_Raft پررو poRRu +پرزیدنت peRezident پرست paRast پرستار paRastAR پرستو paRastu @@ -5115,7 +5934,9 @@ $ dolAR پرسوجو po:Rso:'dZu: پرسپلیس peRspolis پرسپولیس peRspolis +پرسپکتیو peRespektiv پرسید poRsid +پرش paReS پرشیا peRSijA پرشین peR'Sijan پرفسورتلویزیون poRfosoR @@ -5197,6 +6018,7 @@ $ dolAR پلک pelk پلۀ pelleje پلیآف pelej?Af +پلیر pelejeR پلیس polis پلیور poliveR پماد pomAd @@ -5222,6 +6044,7 @@ $ dolAR پهلوی pahlavi پودر pudR پورت poRt +پورتال poRtAl پورنگ puRang پوزئیدون poze?idon پوزش puzeS @@ -5329,13 +6152,14 @@ $ dolAR چک tSek چکان tSekAn چکد tSekad -چکش tSkkoS -چکّش tSkkoS +چکش tSakkoS +چکّش tSakkoS چکید tSekid چگون tSegun چگونگی tSegunegi چیلر tSileR چیند tSinad +چینش tSineS چیه tSije: چیپست tSipset ژانر ZAnR @@ -5464,6 +6288,7 @@ $ dolAR کریستال keRistAl کریستین keRistijan کزوو kozovo +کس kas کساد kesAd کسالت kesAlat کسایی kasAi: @@ -5490,13 +6315,16 @@ $ dolAR کشتیی kaStii کشد keSad کشش keSeS +کشم keSam کشمش keSmeS کشمکش keSmakeS +کشند keSand کشنده koSande: کشو keSo کشور keSvaR کشید keSid کشیش keSiS +کشیم keSim کشیک keSik کفاش kaffAS کفایت kefAjat @@ -5530,6 +6358,7 @@ $ dolAR کلمبیا kolombijA کلمه 'kalame: کلنجار kalandZAR +کلنل kolonel کلنگ kolang کله kalle: کلهر kalhoR @@ -5582,6 +6411,7 @@ $ dolAR کنترلر kontoRoleR کنترپون kontRpuan کنتس kontes +کنتور kontoR کنج kondZ کنجد kondZed کنجکاو kondZkAv @@ -5638,6 +6468,7 @@ $ dolAR کوهپایه kuhpAje: کوپن kopen کوکاکولا kokAkulA +کوکب ko:kab کوکتل koktel کپر kapaR کپل kapal @@ -5684,6 +6515,7 @@ $ dolAR گرام geRAm گرامر geRAmeR گران geRAn +گرانبها geRAnbahA گرانسنگ geRAnsang گرانقدر geRAnq1adR گرایش geRAjeS @@ -5697,6 +6529,7 @@ $ dolAR گردسوز geRdsuz گردش gaRdeS گردنبند gaRdanband +گردهمایی geRdehamAi: گردو geRdu گرز goRz گرسن goRosn @@ -5729,6 +6562,7 @@ $ dolAR گزینش gozineS گزینه gozine: گزینۀ gozineje +گسار gosAR گستاخ gostAx گستر gostaR گسترد 'gostaRd @@ -5854,6 +6688,7 @@ $ dolAR یهود jahud یهیی jahjA یو ju +یوحنا juhannA یورش juReS یورو joRo یوزپلنگ juzpalang diff --git a/dictsource/fa_rules b/dictsource/fa_rules index 820e6570..c99ca859 100755 --- a/dictsource/fa_rules +++ b/dictsource/fa_rules @@ -127,6 +127,8 @@ _) اصغر (آL09L09P4@ asq1aR _) ابو (L04L09L09P3@ abu _) ابو (آL09L09P3@ abu + _) ابوال (L04L09L09P5@ abol' + _) ابوال (آL09L09P5@ abol' // Suffixes ا L09L04) الله (_Sm4 ollAh @@ -175,9 +177,6 @@ L09L04) انداز (_Sm5 andAz L09L04) انگیز (_Sm5 angiz L09L04) اباد (_Sm4 AbAd - L09L09) امیر (_Sm4 amiR - L09L09) اکبر (_Sm4 akbaR - L09L09) اصغر (_Sm4 asq1aR // Special passive pronouns eg. خوابانده l09l09l03) انده (_Sm4 Ande: l09l09l03) اندۀ (_Sm4 Andeje @@ -1150,8 +1149,8 @@ _) چار (آL09L09P3@ 'tSAR _) چهار (L04L09L09P4@ 'tSAhAR _) چهار (آL09L09P4@ 'tSAhAR - _) چند (L04L09L09P3@ 'tSAand - _) چند (آL09L09P3@ 'tSAand + _) چند (L04L09L09P3@ 'tSand + _) چند (آL09L09P3@ 'tSand // Suffixes چ L09L09L09) چی (_Sm2 tSi @@ -1473,6 +1472,12 @@ _) خویش (آL09L09P4@ xiS _) خان (L04L09L09P3@ xAn _) خان (آL09L09P3@ xAn + _) خواهش (L04L09L09P5@ xAheS + _) خواهش (آL09L09P5@ xAheS + _) خواهد (L04L09L09P5@ xAhad + _) خواهد (آL09L09P5@ xAhad + _) خواهید (L04L09L09P6@ xAhid + _) خواهید (آL09L09P6@ xAhid // suffixes خ L09L09) خر (_Sm2 xaR @@ -1488,6 +1493,7 @@ L09L09) خوش (_Sm3 xoS L09L09) خیز (_Sm3 xiz L09L09) خواست (_Sm5 xAst + L09L09) خواب (_Sm4 xAb // arabic form of words (Babs) خ //فواعل eg. جوامع @@ -1663,6 +1669,7 @@ L09L09) دست (_Sm3 dast L09L09) درد (_Sm3 daRd L09L09) دوش (_Sm3 duS + L09L09) دهی (_Sm3 dehi // arabic form of words (Babs) د //فواعل eg. جوامع @@ -2154,6 +2161,7 @@ L09L09) زده (_+Sm3 zade: L09L09) زدۀ (_+Sm3 zadeje L09L09) زدن (_Sm3 zadan + L09L09) زدا (_Sm3 zodA // arabic form of words (Babs) ز //فواعل eg. جوامع @@ -2816,8 +2824,8 @@ L09L09L09L09) ص (L03L09L09L09_ sa // Prefixes ص - _) صاحب (L04L09L09P4@ saheb - _) صاحب (آL09L09P4@ saheb + _) صاحب (L04L09L09P4@ sAheb + _) صاحب (آL09L09P4@ sAheb _) صدر (L04L09L09P5@ sadr _) صدر (آL09L09P5@ sadr @@ -3132,6 +3140,7 @@ // Suffixes ط L09L09) طلب (_Sm3 talab + L09L09) طلبان (_Sm5 talabAn // arabic form of words (Babs) ط //فواعل eg. جوامع @@ -3433,7 +3442,8 @@ // Prefixes ع _) عبد (L04L09L09P3@ 'a:bd _) عبد (آL09L09P3@ 'a:bd - + _) عبدال (L04L09L09P5@ abdol' + _) عبدال (آL09L09P5@ abdol' _) علی (L04L09L09P3@ a:li _) علی (آL09L09P3@ a:li @@ -4081,6 +4091,7 @@ L09L09) کنان (_Sm4 konAn L09L09) کننده (_Sm5 konande: L09L09) کنندۀ (_Sm5 konandeje + L09L09) کنندگان (_Sm7 konandegAn L09L09) کوچک (_Sm4 kutSak // arabic form of words (Babs) ک @@ -4285,6 +4296,7 @@ L09L09) گرفت (_Sm4 geReft L09L09) گشا (_Sm3 goSA L09L09) گریز (_Sm4 goRiz + L09L09) گسار (_Sm4 gosAR // arabic form of words (Babs) گ //فواعل eg. جوامع @@ -4444,8 +4456,8 @@ // Prefixes ل // Suffixes ل - L09L09) لوژ (_Sm3 lotZ - L09L09) لوژیک (_Sm5 lotZik + L09L09) لوژ (_Sm3 loZ + L09L09) لوژیک (_Sm5 loZik L09L09) لوگ (_Sm3 log // arabic form of words (Babs) ل @@ -4863,6 +4875,8 @@ L09L09L03) ند (_NSm2 and L09L09) نوشت (_Sm4 neveSt L09L09) نشین (_Sm4 neSin + L09L09) نکردن (_Sm5 nakaRdan + L09L09L09) نشدن (_Sm4 naSodan // arabic form of words (Babs) ن //فواعل eg. جوامع @@ -5189,9 +5203,8 @@ _) هم (آL09P2@ ham // suffixes ه - L09L03) ه (_++NSm1 e: - L09L01و) ه (_++NSm1 e: - L09) هٔ (_Sm2 eje + L09L03) ه (_++Sm1 e: + L09L01و) ه (_++Sm1 e: L09L09) ها (_NSm2 hA // Plural pronoun ها L09L09) های (_NSm3 h'Aje @@ -5286,7 +5299,7 @@ // Suffixes یی L09L01) یی (_Sm2 i: - L09L03) یی (_Sm2 ii + L09L03) یی (_Sm1 i L09L01) ییم (_NSm3 i:m L09L03) ییم (_NSm3 iim L09L09L01) یید (_NSm3 i:d @@ -5322,7 +5335,7 @@ L09و) ی (L01 j L09ا) ی (L03 j L09ا) ی (L01 j - L03) ی (وL03 j + L03) ی (وL03 ij //otherwise L02) ی (_ j _ع) ی (L03_ j @@ -5361,7 +5374,6 @@ L09L01) ی (_Sm1 j L09L09آ) ی (_Sm1 je L09L09ا) ی (_NSm1 je - L09L09ی) ی (_Sm1 je L09L01و) ی (_Sm1 i L09L03و) ی (_Sm1 je L09L01) یند (_Sm3 jand @@ -5496,6 +5508,11 @@ .group ء ء ? + // suffixes ء + L09L09L04) ء (_Sm1 ? + L09L09ا) ء (_Sm1 + L09L09آ) ء (_Sm1 + //this character "ٔ" is defrent of "ء" and "ۀ" for example "دانشنامهٔ " @@ -5504,7 +5521,7 @@ ٔ // suffixes ٔ - L09L09) ٔ (_Sm1 + L09L03) ٔ (_NSm1 je .group ّ diff --git a/dictsource/pt_list b/dictsource/pt_list index 1f39dd99..09ec4a4a 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -661,9 +661,11 @@ algozes $alt alicerce $alt amanheça $alt2 amanheço $alt2 +amanhecesse $alt2 amarelo $alt ameba $alt amores $alt2 +anoitecesse $alt2 anoiteça $alt2 anoiteço $alt2 apego $alt2 $noun @@ -1011,7 +1013,6 @@ rocha $alt rock $alt rogas $alt rolo $alt2 $noun -rosna $alt rumores $alt2 saleta $alt2 sarjeta $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 6cece1b7..96702e44 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -21,7 +21,7 @@ .L04 a am e em o ue uem .L05 r ra ram re rem rdes .L06 ra ram ste re rem -.L07 se sem te +.L07 sse ssem ste .group a @@ -345,100 +345,110 @@ sf) e (ra_ E // esfera, biosfera //sort - qu) e (brL04_ E - _hosp) e (dL03_ E - _estr) ei (L03_ EI - _inv) e (jL04_ E - _dec) e (pL04_ E - _g) e (rL04_ E - _op) e (rL04_ E - _qu) e (rL04_ E - _alt) e (rL04_ E - _inv) e (rtL03_ e - _f) e (rvL03_ e - _p) e (scL03_ E - _m) e (sclL04_ E - _m) e (tL03_ e - _com) e (tL03_ e - _rem) e (tL03_ e - _derr) e (tL03_ e - _prom) e (tL03_ e - _subm) e (tL03_ e + _fiz) e (L05_ E + _exag) e (L05_ E + _houv) e (L05_ E + _perd) e (L05_ e + _soub) e (L05_ E + _rend) e (L06_ e + _vend) e (L06_ e + _atend) e (L06_ e +_compreend) e (L06_ e +_entend) e (L06_ e +_estend) e (L06_ e +respond) e (L06_ e // cor- + com) e (L07_ e + _bat) e (L07_ e + _beb) e (L07_ e + _tem) e (L07_ e + _viv) e (L07_ e + colh) e (L07_ e // & es- + _corr) e (L07_ e + _eleg) e (L07_ e + _morr) e (L07_ e + _perd) e (L07_ e + _sofr) e (L07_ e + _torc) e (L07_ e + _venc) e (L07_ e + _adoec) e (L07_ e + _aperd) e (L07_ e + _merec) e (L07_ e + conhec) e (L07_ e // & re- + entend) e (L07_ e + preend) e (L07_ e // sur- com- + respond) e (L07_ e // cor- +_convenc) e (L07_ e +_entristec) e (L07_ e +_envaidec) e (L07_ e +_escond) e (L07_ e +_obedec) e (L07_ e +interromp) e (L07_ e +intromet) e (L07_ e + qu) e (brL04_ E + _hosp) e (dL03_ E + _estr) ei (L03_ EI + _inv) e (jL04_ E + _dec) e (pL04_ E + _p) e (quL02_ E + _s) e (quL02_ E + l) e (que_ E + _imp) e (rL03_ E + _reit) e (rL03_ E + _g) e (rL04_ E + _op) e (rL04_ E + _qu) e (rL04_ E + _alt) e (rL04_ E + _sup) e (rL04_ E + _tol) e (rL04_ E + _coop) e (rL04_ E + _temp) e (rL04_ E + _) e (rguL02_ E + _alb) e (rguL02_ E + _enx) e (rguL02_ E + _inv) e (rtL03_ e + _f) e (rvL03_ e + _p) e (scL03_ E + _m) e (sclL04 E + _l) e (ssL02_ e + _esp) e (ssL03_ e + _m) e (tL03_ e + _com) e (tL03_ e + _rem) e (tL03_ e + _derr) e (tL03_ e + _prom) e (tL03_ e + _subm) e (tL03_ e _comprom) e (tL03_ e - _sol) e (trL03_ E - _atr) e (vL03_ e - scr) e (vL03_ e // e- in- pre- ree- -_descr) e (vL03_ e -_embel) e (zL04_ E - _pr) e (zL04_ E -_acont) e (çL01_ e - _ado) e (çL03_ e - _aqu) e (çL03_ e - _car) e (çL03_ e - _mer) e (çL03_ e - _pad) e (çL03_ e - _per) e (çL03_ e - _esqu) e (çL03_ e - _obed) e (çL03_ e - _ofer) e (çL03_ e -_aborr) e (çL03_ e + _sol) e (trL03_ E + _pen) e (trL04_ E + scr) e (vL03_ e // e- in- pre- ree- + _atr) e (vL03_ e + _descr) e (vL03_ e + _pr) e (zL04_ E + _embel) e (zL04_ E + par) e (çL01_ e // pareça, apareça + _acont) e (çL01_ e + _arref) e (çL01_ e + _ado) e (çL03_ e + _aqu) e (çL03_ e + _car) e (çL03_ e + _mer) e (çL03_ e + _pad) e (çL03_ e + _per) e (çL03_ e + _esqu) e (çL03_ e + _obed) e (çL03_ e + _ofer) e (çL03_ e + _aborr) e (çL03_ e _compar) e (çL03_ e _desapar) e (çL03_ e _enfraqu) e (çL03_ e _enriqu) e (çL03_ e _envaid) e (çL03_ e -_esclar) e (çL03_ e +_esclar) e (çL03_ e _reapar) e (çL03_ e _reconh) e (çL03_ e - _coop) e (rL04_ E - _sup) e (rL04_ E - _imp) e (rL03_ E - _temp) e (rL04_ E - _tol) e (rL04_ E - _esp) e (ssL03_ e - _l) e (ssL02_ e - _perd) e (L05_ e - _rend) e (L06_ e - _atend) e (L06_ e - _pen) e (trL04_ E - _reit) e (rL03_ E - par) e (çL01_ e // pareça, apareça - _arref) e (çL01_ e - _beb) e (ssL02_ e - com) e (ssL02_ e - _corr) e (ssL02_ e - _morr) e (sL07_ e - _adoec) e (sL07_ e - _torc) e (sL07_ e - _viv) e (sL07_ e - _eleg) e (sL07_ e - respond) e (sL07_ e // & corres- - entend) e (sL07_ e -compreend) e (sL07_ e -interromp) e (sL07_ e -intromet) e (sL07_ e -_escond) e (sL07_ e - _bat) e (sL07_ e - _sofr) e (sL07_ e - l) e (que_ E - _p) e (quL02_ E - _s) e (quL02_ E - _) e (rguL02_ E - _enx) e (rguL02_ E - _alb) e (rguL02_ E //endsort - _exag) e (L05_ E - _fiz) e (L05_ E - _houv) e (L05_ E - _soub) e (L05_ E - _compreend) e (L06_ e - _correspond) e (L06_ e - _entend) e (L06_ e - _estend) e (L06_ e - _respond)e (L06_ e - _vend) e (L06_ e .group é é ''E @@ -727,22 +737,25 @@ _escond) e (sL07_ e //sort _engl) o (bL01_ O + _esn) o (bL04_ O + _deb) o (chL04_ O +_desabr) o (chL04_ O _r) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O _ap) oi (L01_ OI + _esc) o (lhL02_ O _m) o (lhL04_ O _abs) o (lvL02_ O _env) o (lvL02_ O - c) o (rrL01_ o // escorra, incorra, corra, recorra - _m) o (rrL01_ o - p) ostos (_ Ost=Us# // dispostos etc. - _esn) o (bL04_ O - _esc) o (lhL02_ O _rev) o (lvL02_ O _desenv) o (lvL02_ O _ent) o (pL02_ O + c) o (rrL01_ o // escorra, incorra, corra, recorra + _m) o (rrL01_ o + _r) o (snL01_ O _c) o (spL02_ O + p) ostos (_ Ost=Us# // dispostos etc. //endsort .group ô diff --git a/phsource/compile_report b/phsource/compile_report index 91a83d40..b4ca41db 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,3 +1,4 @@ + 86 phoneme tables new total base 109 109 @@ -6,7 +7,7 @@ consonants 10 118 en 54 156 en-n 33 156 en-us 40 157 - en-sc 40 158 + en-sc 41 158 en-rp 34 156 en-wm 31 156 en-wi 30 156 @@ -420,7 +421,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [] base +l/l@ [hFp] base [l#] base [l] fr [l/2] fr @@ -454,7 +455,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [] base +l/la [hFp] base [l#] base [l] fr [l/2] fr @@ -462,7 +463,7 @@ l/la [] base [K] tn l/l_a [l/3] base [l/] fr -l/le [] base +l/le [hFp] base [l#] base [l] fr [l/2] fr @@ -474,7 +475,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [] base +l/li [hFp] base [l#] base [l] fr [l/2] fr @@ -488,7 +489,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [] base +l/lo [hFp] base [l#] base [l/2] fr [K] nso @@ -499,7 +500,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [] base +l/lu [hFp] base [l#] base [l] fr [l/2] fr @@ -1039,8 +1040,7 @@ vdiph/0i_2 [OI] en-sc [OI] en-wi [AI] no vdiph2/8@ [U@] en -vdiph2/e@ [3:] en-sc - [e@] en-sc +vdiph2/e@ [e@] en-sc [e@] en-wi vdiph2/ea [eA] lt [ea] ro @@ -2224,9 +2224,10 @@ vowel/oo_en [O] en [O] en-rp vowelr/aa_r [A:] en-sc [A@] en-sc +vowelr/e_r [3:] en-sc vowelr/i_r [i@3] en-sc vowelr/oo_r [O@] en-sc -vowelr/o_r [o@] en-sc + [o@] en-sc vowelr/r-voc [r-] base [r-] sk [r:] sk diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index b7a3134a..ee3b2c97 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -113,6 +113,10 @@ phoneme I2 CALL I endphoneme +phoneme I# + vowel starttype #@ endtype #@ + ChangePhoneme(I2) +endphoneme phoneme i // optional variant of [I] for end of words vowel starttype #i endtype #e @@ -171,11 +175,10 @@ endphoneme phoneme 3: vowel starttype #e endtype #@ - length 210 + length 230 ChangeIfNotStressed(VR) // also need "replace 02 3: VR" in voice file ipa e - AppendPhoneme(r) - FMT(vdiph2/e@) + FMT(vowelr/e_r) endphoneme @@ -217,7 +220,7 @@ phoneme o@ length 230 ipa o AppendPhoneme(r) - FMT(vowelr/o_r) + FMT(vowelr/oo_r) endphoneme @@ -310,7 +313,7 @@ endphoneme phoneme i@3 vowel starttype #i endtype #@ ipa ɪ - length 220 + length 240 AppendPhoneme(r) FMT(vowelr/i_r) endphoneme diff --git a/phsource/vowelr/e_r b/phsource/vowelr/e_r index 0fb180026d0b3cd020fd1d2e030c9aeaf1d9b5cd..f5d3bb8fc2512101e87bb92c4cf45a0df2a6a064 100644 GIT binary patch delta 1423 zcmdUuO=uHA7>3{ZcGqO;xUP}}ZG$KYAvdL<_=6ZNQY{LWR7iWUNcGZV=|N8}7WC4C z(tt2gTMF1gTXqv;j+Tl3BC6Qi2{`7-o2wVZLYI`92(Y ze%wl5INj2bZg18AT4an2};nQ zB!lST=UER|L}!4`*2FZe2_QomQe@V=$!1L;PkD#PqbM~hQj(|SI3dxsJw7B!GUg@6 zD(9+S^7o=PkB>jn90!{((URlvmG-kDLwJmhISv_P82LaUw81u*a%kgGHplJAJey~# z;+FziSzw1trp$fplvxlisoZQwp;w6CLGvKFDH*fLCG{L8CiRC(B1kjvYLw~V9~$jO zR%(7V*jA=BIsl>EhRqI zvMAG0wkWfhs%6n;+`~X16<)7p(Zavu4KIY<|NKcTN{NEyl2LOvJ8RlL37~hgENohJ z2 z$ak@49G*H~i&e^r!Zz1s()^6WCK_A<#DgPEFe=3VuBr{>psLH?_Qu45bxYGyQl>Yg zWL^OxM>(fS7HA8zDHR!}A}N_O#%1*D*zPv^0Pkn_IZU_E4sk{M*5K89YCb@Ar+PT5 jkz|=bbTb)GOH}qGV+jwb8_btbpEi^ZHCI#l-$i}_1nnKS delta 787 zcmajdT}V@59LMqh^M5?LM~_d(m$SAt=WKH>E3ykkgCY{Kq`)zQb+y6*>2eqq1X~(- zA<@d9?po1BH}2+)g0WsH45Jub2^r321tF%ibWlm>QP1W@(B1duInU?(cwX(FX;J*W zU7daYE*}MeGr>^lb)_TxTJHs1zx!UgUsY>O)_l)qaU5va>b~!p@g|#_c3HHDG)luJG#GhoEiio2?E<5l{RV^a zQT~MnBf)K(7;UB^Ls5zhg&2%QQ^yvQde?fT?u&EQb;=gBg(c3~>o+Ztz~zmF zysm?5t?lL`6zSqvv_uW}itQi?(TX%W=?`?18wlorKG{*}B1}u5=JeyonT5P$uy(~e zc^MzbA1cMwkNG!f=e%4rfZG(?)+Vhtz`tHXOnSs$)DBuhbw8b|d&<+U#j4NIvGX>^ zKoUR}gjp;t5DrVHARD)E7{~uU-^FM9a&}|KNo^-3P13kc1R`leAq8KXq)k#gag{<^hy+DUP_=+E zlnKKCLMkAkEDVGUz`)cY2niuk5JLn5Wk3R?iU|m=uxg^0^>Tc71|12ZU??uX#uKFr}1Uc=j%!415F67EJHavXiwhy55pKSnubafZK5GItvD%q?Sr zIbBGjlXC!B6mS=xu+h%Bhf`K2M;KAWc#lGd#Z@OqFZQAvN#?cl8s{~t@`}G-eR)~^ zeU9 zs8Ehd?c+FzF%l?~!BJ*CL}t@`<`{;lW15+9=4P2!AhkU8jZp6tuPLRtMHWdUxHhP> z&ELBe;VdH-Gc9Je^Boqi5fuM;{f)1bwvO@hx+}6{eCVm|$4*1T<6acFGlMX$=}xwE zM+Vgf24m*3?KChLGnaDJ76$m&405=K`i`&@F5@LUjc@S*DmY0lgH$S`2=tK05E&Fn z=RB)_h9qW4;1urr?GC;<$E;rUYg~1U z&8!&nB8tLyPp&C-9pfj*mD$lZJ-z){iIIvIZKY7FZ8mj6t=3B6%V={aRINq|Kr;pD zgx#bt#A+U6H=M>LQg{KM<6}HVr#Z%&?%~L@y0aX6_V~zTb^qXF_^Nje8RE=CWw}OsTd@qh@ zW8@ZFv?0PhVK+JKXE)r-J>UoxewD8D5jN;g^HjP(0#dQvWRYh-3^Q|z-B6+aQ*@*< z7Rco!#;IgN`AnKR_E670DxYN}!RmJR1*!BXokylgm1T#J-9RX1m?L!fuXDON!eOK9 z>pBM)0~~$5zA|olE8!p-yPsAL=0D(Yv6%x}IN-nLaEKJ{r`wOS3$Ac{fpO==jO-CjQPGa z5P~{~`o5ImSv9X!0=`sZUGw- koQ=fsO?r>GQcU@eoQdR=+Cd+aokPyElGR3^k(G%*0YtKeJ^%m! delta 1037 zcmcJOKWGzC9LGO-In5=xrh|WwUg%)`lLo1^(OPZMh!#boB&1NW87epwTB<{aINga* z>8LM@U^D3;BGgF`hbj)I2zGSr=-}AN<$QO!>!tW7ILHn6;c?vie82DgKJR<7ORttE z&rek+D-ZQEmdhq^M`VS1VaA~-oS4U>8f?Tie0EY1H;s^81~VbUtQm2mKjPd#oAVSo z$z?9G%wsOG&I%=I#$HnaYt5?d#oGYe%nO!KZqXUUqwH$WmwVxGbzjs&hak1%N|0C(>oAs@+W82uRbs4*y>U>PKKEf0WSiDhJ LzD7lUOyB= 0) { close(fd_temp); - sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate_native,fname_temp); + sprintf(command,"sox \"%s%s.wav\" -c1 -t wav %s rate -h %d\n",path_source,fname,fname_temp,samplerate_native); if(system(command) < 0) { error("Failed to resample: %s",command); + remove(fname_temp); return(0); } } + if(GetFileLength(fname_temp) <= 0) + { + error("Failed to resample: %s",command); + remove(fname_temp); + return(0); + } + f = fopen(fname_temp,"rb"); if(f == NULL) { error("Can't read temp file: %s",fname_temp); return(0); } + if(f_report != NULL) + fprintf(f_report, "resampled %s\n", fname); + resample_count++; resample_wav = 1; fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length" } @@ -3408,9 +3415,13 @@ static void CompilePhonemeData2(const char *source) wxString report; wxString report_dict; +#ifdef MAKE_ENVELOPES +make_envs(); +#endif + n_envelopes = 0; error_count = 0; - memset(markers_used,0,sizeof(markers_used)); +memset(markers_used,0,sizeof(markers_used)); f_errors = stderr; @@ -3471,6 +3482,10 @@ static void CompilePhonemeData2(const char *source) if((f_errors = fopen_log(f_errors,fname,"w")) == NULL) f_errors = stderr; + sprintf(fname,"%s%s",path_source,"compile_report"); + f_report = fopen_log(f_errors, fname,"w"); + + sprintf(fname,"%s/%s",path_home,"phondata-manifest"); if((f_phcontents = fopen_log(f_phcontents,fname,"w")) == NULL) f_phcontents = stderr; @@ -3534,8 +3549,6 @@ static void CompilePhonemeData2(const char *source) fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references); fclose(f_in); fclose(f_phdata); - if(f_errors != stderr) - fclose(f_errors); if(f_prog_log != NULL) fclose(f_prog_log); fclose(f_phindex); @@ -3545,18 +3558,30 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references LoadPhData(); LoadVoice(voice_name2,0); + CompileReport(); report_dict = CompileAllDictionaries(); -//#ifdef deleted DrawEnvelopes(); -//#endif + if(gui_flag) { delete progress; } - report.Printf(_T("Compiled phonemes: %d errors."),error_count); + if(resample_count > 0) + { + fprintf(f_errors, "\n%d WAV files resampled to %d Hz\n", resample_count, samplerate_native); + report.Printf(_T("Compiled phonemes: %d errors, %d files resampled to %d Hz. "),error_count, resample_count, samplerate_native); + } + else + { + report.Printf(_T("Compiled phonemes: %d errors."),error_count); + } + + if(f_errors != stderr) + fclose(f_errors); + if(error_count > 0) { report += _T(" See file: 'phsource/error_log'."); @@ -3734,6 +3759,7 @@ void CompileIntonation() char buf[sizeof(path_source)+120]; error_count = 0; + resample_count = 0; sprintf(fname_errors,"%s%s",path_source,"error_intonation"); if((f_errors = fopen(fname_errors,"w")) == NULL) @@ -4002,7 +4028,6 @@ void CompileIntonation() fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out); fclose(f_in); fclose(f_out); - fclose(f_errors); report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tune_names, error_count); wxLogStatus(report); diff --git a/src/compiledict.cpp b/src/compiledict.cpp index f0a21a9c..c8c4f5ef 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2010 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -51,11 +51,15 @@ static char letterGroupsDefined[N_LETTER_GROUPS]; MNEM_TAB mnem_rules[] = { {"unpr", 0x01}, + {"w_alt1", 0x11}, {"w_alt2", 0x12}, {"w_alt3", 0x13}, +// {"w_alt4", 0x14}, {"w_alt", 0x11}, // note: put longer names before their sub-strings + {"p_alt1", 0x21}, {"p_alt2", 0x22}, {"p_alt3", 0x23}, +// {"p_alt4", 0x24}, {"p_alt", 0x21}, {NULL, -1} }; @@ -1586,7 +1590,7 @@ static int compile_lettergroup(char *input, FILE *f_out) items[n_items] = p_start = p; while((*p & 0xff) > ' ') { - if (*p == '_') *p = ' '; // allow '_' for word break + if (*p == '_') *p = ' '; // allow '_' for word break p++; } *p++ = 0; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 8a525070..f24f9f7c 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -296,6 +296,10 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) // set up indices into data_dictrules InitGroups(tr); + if(tr->groups1[0] == NULL) + { + fprintf(stderr,"Error in %s_rules, no default rule group\n",name); + } // set up hash table for data_dictlist p = &(tr->data_dictlist[8]); @@ -2732,6 +2736,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c if(word_flags & FLAG_UNPRON_TEST) return(match1.end_type | 1); +#ifdef deleted +// ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST + if((match1.end_type & SUFX_UNPRON) && !(word_flags & FLAG_SUFFIX_REMOVED)) + return(match1.end_type); +#endif + if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0)) { // an instruction to switch language, return immediately so we can re-translate diff --git a/src/espeak.cpp b/src/espeak.cpp index aa49195d..25bc9aac 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 to 2007 by Jonathan Duddington * + * Copyright (C) 2006 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -768,7 +768,11 @@ int main (int argc, char **argv) fclose(f_text); } - espeak_Synchronize(); + if(espeak_Synchronize() != EE_OK) + { + fprintf(stderr, "espeak_Synchronize() failed, maybe error when opening output device\n"); + exit(4); + } if(f_phonemes_out != stdout) fclose(f_phonemes_out); // needed for WinCE diff --git a/src/espeakedit.cpp b/src/espeakedit.cpp index 2fe14c59..39e26b60 100644 --- a/src/espeakedit.cpp +++ b/src/espeakedit.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2010 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -685,7 +685,7 @@ void DisplayErrorFile(const char *fname) if(len > 0) { if(len > 1500) - len = 1500; // restrict length to pppppevent crash in wxLogMessage() + len = 1500; // restrict length to prevent crash in wxLogMessage() msg = (char *)malloc(len+1); if(msg != NULL) { diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index a6735ec6..db31955d 100644 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -162,8 +162,8 @@ void ProsodyDisplay::SelectPh(int index) } y1 = p->pitch1; y2 = p->pitch2; - sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d %s PhFlags %.2x ", - emphasized,p->stresslevel&0x7,p->amp,p->length,y1,y2,name,p->ph->phflags); + sprintf(buf,"Stress %s%d Amp %2d StdLength %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x ", + emphasized,p->stresslevel&0x7,p->amp,p->std_length*2, p->length,y1,y2,name,p->ph->phflags); wxLogStatus(wxString(buf,wxConvLocal)); } diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index bdcc3275..6c8e8dc4 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -60,6 +60,7 @@ static espeak_AUDIO_OUTPUT my_mode=AUDIO_OUTPUT_SYNCHRONOUS; static int synchronous_mode = 1; static int out_samplerate = 0; static int voice_samplerate = 22050; +static espeak_ERROR err = EE_OK; t_espeak_callback* synth_callback = NULL; int (* uri_callback)(int, const char *, const char *) = NULL; @@ -114,7 +115,11 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) sleep(1); } out_samplerate = voice_samplerate; - wave_init(voice_samplerate); + if(!wave_init(voice_samplerate)) + { + err = EE_INTERNAL_ERROR; + return(-1); + } wave_set_callback_is_output_enabled( fifo_is_command_enabled); my_audio = wave_open("alsa"); event_init(); @@ -166,8 +171,8 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) } SHOW_TIME("LEAVE dispatch_audio\n"); - - return (a_wave_can_be_played==0); // 1 = stop synthesis + + return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error } @@ -373,6 +378,7 @@ static int initialise(int control) int param; int result; + err = EE_OK; LoadConfig(); WavegenInit(22050,0); // 22050 if((result = LoadPhData()) != 1) @@ -487,6 +493,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, { #ifdef USE_ASYNC finished = create_events((short *)outbuf, length, event_list, a_write_pos); + if(finished < 0) + return EE_INTERNAL_ERROR; length = 0; // the wave data are played once. #endif } @@ -516,7 +524,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, #ifdef USE_ASYNC if (my_mode==AUDIO_OUTPUT_PLAYBACK) { - dispatch_audio(NULL, 0, NULL); // TBD: test case + if(dispatch_audio(NULL, 0, NULL) < 0) // TBD: test case + return err = EE_INTERNAL_ERROR; } else { @@ -1198,6 +1207,7 @@ ESPEAK_API int espeak_IsPlaying(void) ESPEAK_API espeak_ERROR espeak_Synchronize(void) {//============================================= + espeak_ERROR berr = err; #ifdef USE_ASYNC SHOW_TIME("espeak_Synchronize > ENTER"); while (espeak_IsPlaying()) @@ -1205,8 +1215,9 @@ ESPEAK_API espeak_ERROR espeak_Synchronize(void) usleep(20000); } #endif + err = EE_OK; SHOW_TIME("espeak_Synchronize > LEAVE"); - return EE_OK; + return berr; } // end of espeak_Synchronize diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 39e6d67d..b68fd46b 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.34 12.Feb.13"; +const char *version_string = "1.46.35 14.Feb.13"; const int version_phdata = 0x014631; int option_device_number = -1; @@ -1215,6 +1215,7 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ memcpy(&worddata->prev_vowel, &plist[0], sizeof(PHONEME_LIST)); } + plist->std_length = phdata->pd_param[i_SET_LENGTH]; } // end of InterpretPhoneme diff --git a/src/synthesize.h b/src/synthesize.h index fb9c7e7a..6a83b8da 100644 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -220,6 +220,7 @@ typedef struct { unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence unsigned char pitch1; unsigned char pitch2; + unsigned char std_length; } PHONEME_LIST; diff --git a/src/translate.cpp b/src/translate.cpp index 02cb1350..c6071586 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -1135,6 +1135,17 @@ if((wmark > 0) && (wmark < 8)) return(0); } +#ifdef deleted +// ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST +if(end_type & SUFX_UNPRON) +{ + phonemes[0] = 0; // discard and retranslate as individual letters + SpeakIndividualLetters(tr, wordx, phonemes, 0); + strcpy(word_phonemes, phonemes); + return(0); +} +#endif + if((phonemes[0] == 0) && (end_phonemes[0] == 0)) { int wc; diff --git a/src/translate.h b/src/translate.h index d41e3cf5..f39e2534 100644 --- a/src/translate.h +++ b/src/translate.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/wave.cpp b/src/wave.cpp index bd53f862..b3d25992 100644 --- a/src/wave.cpp +++ b/src/wave.cpp @@ -62,7 +62,7 @@ enum {ONE_BILLION=1000000000}; static int pulse_running; // wave.cpp (this file) -void wave_port_init(int); +int wave_port_init(int); void* wave_port_open(const char* the_api); size_t wave_port_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); int wave_port_close(void* theHandler); @@ -77,7 +77,7 @@ int wave_port_get_remaining_time(uint32_t sample, uint32_t* time); // wave_pulse.cpp int is_pulse_running(); -void wave_pulse_init(int); +int wave_pulse_init(int); void* wave_pulse_open(const char* the_api); size_t wave_pulse_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); int wave_pulse_close(void* theHandler); @@ -91,13 +91,13 @@ void* wave_pulse_test_get_write_buffer(); int wave_pulse_get_remaining_time(uint32_t sample, uint32_t* time); // wrappers -void wave_init(int srate) { +int wave_init(int srate) { pulse_running = is_pulse_running(); if (pulse_running) - wave_pulse_init(srate); + return wave_pulse_init(srate); else - wave_port_init(srate); + return wave_port_init(srate); } void* wave_open(const char* the_api) { @@ -756,7 +756,7 @@ void wave_set_callback_is_output_enabled(t_wave_callback* cb) // Failed to initialise the PortAudio sound"); } + return err == paNoError; } //> @@ -1194,7 +1195,7 @@ void *wave_test_get_write_buffer() // notdef USE_PORTAUDIO -void wave_init(int srate) {} +int wave_init(int srate) {} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} diff --git a/src/wave.h b/src/wave.h index 337c8a1a..aac2a8dd 100644 --- a/src/wave.h +++ b/src/wave.h @@ -7,7 +7,7 @@ extern int option_device_number; -extern void wave_init(int samplerate); +extern int wave_init(int samplerate); // TBD: the arg could be "alsa", "oss",... extern void* wave_open(const char* the_api); diff --git a/src/wave_pulse.cpp b/src/wave_pulse.cpp index a5db6389..85cab2d6 100644 --- a/src/wave_pulse.cpp +++ b/src/wave_pulse.cpp @@ -660,14 +660,14 @@ void wave_set_callback_is_output_enabled(t_wave_callback* cb) //> // @@ -870,7 +870,7 @@ void *wave_test_get_write_buffer() // notdef USE_PULSEAUDIO -void wave_init() {} +int wave_init() {} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} diff --git a/src/wave_sada.cpp b/src/wave_sada.cpp index 0c93ca0a..54295822 100644 --- a/src/wave_sada.cpp +++ b/src/wave_sada.cpp @@ -78,7 +78,7 @@ static uint32_t wave_samplerate; // // From c1e02cb0b870a7a65249901f62fd5151a7e35d53 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 20 Feb 2013 08:20:48 +0000 Subject: [PATCH 6/6] 1.46.35 (from http://espeak.sourceforge.net/test/latest.html) --- phsource/xph_nepali | 133 -------------------------------------------- 1 file changed, 133 deletions(-) delete mode 100644 phsource/xph_nepali diff --git a/phsource/xph_nepali b/phsource/xph_nepali deleted file mode 100644 index b880b4bd..00000000 --- a/phsource/xph_nepali +++ /dev/null @@ -1,133 +0,0 @@ - -//==================================================== -// Nepali (inherits from Hindi) -//==================================================== - -phoneme V - vowel starttype #@ endtype #@ - length 160 - ChangeIfNotStressed(@) - IF nextPh(H) THEN - FMT(vowel/@_low) - ENDIF - FMT(vowel/@_bck) -endphoneme - -phoneme @3 // use a more front [@] after palatal consonants - vowel starttype #@ endtype #@ - length 140 - FMT(vowel/@_3) -endphoneme - -phoneme @/ - vowel starttype #@ endtype #@ - length 130 - IF nextPh(H) THEN - FMT(vowel/@_low) - ENDIF - FMT(vowel/@_bck) -endphoneme - - -phoneme i - vowel starttype #i endtype #i - length 160 - IfNextVowelAppend(;) - FMT(vowel/i) -endphoneme - -phoneme e - vowel starttype #e endtype #e - length 180 - FMT(vowel/e) -endphoneme - -phoneme a - vowel long starttype #a endtype #a - length 230 - FMT(vowel/aa_9) -endphoneme - -phoneme o - vowel starttype #o endtype #o - length 180 - FMT(vowel/o_mid) -endphoneme - -phoneme u - vowel starttype #u endtype #u - length 160 - FMT(vowel/u_bck) -endphoneme - - - - - -// Diphthongs -//=========== - - -phoneme aI - vowel long starttype #a endtype #i - length 240 - long - FMT(vdiph/aai) -endphoneme - -phoneme aU - vowel long starttype #a endtype #u - length 240 - long - FMT(vdiph/aau_3) -endphoneme - -phoneme eI - vowel long starttype #e endtype #i - length 240 - long - FMT(vdiph/eei) -endphoneme - -phoneme eU - vowel long starttype #e endtype #u - length 240 - long - FMT(vdiph/eu) -endphoneme - -phoneme VI - vowel long starttype #@ endtype #i - length 240 - long - FMT(vdiph/Vi) -endphoneme - -phoneme VU - vowel long starttype #@ endtype #u - length 240 - long - FMT(vdiph/Vu) -endphoneme - -phoneme oI - vowel long starttype #o endtype #i - length 240 - long - FMT(vdiph/oi) -endphoneme - -phoneme oU - vowel long starttype #o endtype #u - length 240 - long - FMT(vdiph/ou) -endphoneme - -phoneme uI - vowel long starttype #u endtype #i - length 240 - long - FMT(vdiph/ui) -endphoneme -