From 1e518f1df28041e76b7f466345e5fe2052edadbe Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 8 Feb 2013 16:17:17 +0000 Subject: [PATCH 1/2] [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/2] 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 zcmWky2Xqxh7ru99_q{ZF4V_TLP(-B*2uMljMM4uK5CVb_x*!TF{`~ab5fBjRBArkT zC?ZX&zcc}9QbG$P@9oaq`(MwVeP_?veY3N7zWbHwnAp7eqyhk48YeYN9Xzs3UI0Kj z;*tQGZU#`07gCZ(CijtN%41RNf*)de`7MBv7=zhx4tBy9&>uR(n~)D4@>Ndf89YXg z&v`CSn+?l&`QaevMz?EbM?oa0J%GiWrACAQwJ@ zyKo!+k@F^Okn7d36vn|sdD9-K326`qjUYEvhby$sY!4R=4+&TChI`3otBJGI{BCwQ zM?oDp1N&5Wcad8x@P43s@NA%ib6-X4iMpQJ$9pK13vqXnxohqouY?WRt#Ijr1da4Rm(mVY=ew0Id*{*N;CDm3*ok20sk%kJM#stg#K6vx8g9V@ogGv|7TA7 zABKnL)Cg7fTKfI{2s@Q?uq`&nU*QqXg$2~i?zYYO5l!Y4=%Bke{T*=XIFp^8x+O+J zCf9-!e2ez;EQnU)WYqcijr{gx;GgL|UP-m+B$a{pu?{xCOw6TstLmyA9>Ie+9^1i6 z-p}XY0Y<4iYPC*sb)b^_lar&HI!YJDqVOj%T?hvj#25VmuiUh@f=s7 z(%#&hZ*t~`mw6YwF4PChxx@80x~{IE*YOswZFbXF=U)zbIsDbF&@h`HQ}jAFE@DPR zZ1A-6LRsty9__T>*g@2bA9FRRhGAHb`S2G=g{eG+-t#wvHf86}S(2TVot`r<9JFgG z8_KCq^)dYl55p!Z#D{Df>Q9mIlbYx>bStVeGZ5GUHYX00h~e>UZ*9xis`+@@}}Gr-N1 zQP)r%JI_uuX(q?!#;$sXzN3p ztxyp5@->QvD$-eN$l;g#9prF9`M&&miC(Fus*7sAnui6UIXnO#Uc+Zn^)%;(zNd!Z z4=|i(+sQV^P7+RN!ppe}9!6IU$C_%CI*Ns0J$Hd}xSdmF?6r_02$;YZ;1d3XzsWpT z$bb4#98Kj7ay5XSQdJ&IZ`t;?HFe;z{5Bt8S6JvgujEVI20F>SE5IArTFp^}@8Bfd zA&iq3%0fx(fi5iKGH@MsaB*ry<@q|7;(DCTDVTucWt7TL3ik7Hx?;x#3SU9;M+tJ=%HG?e2c&+*Dbt z?ICYx=upmz91eH1Jt0dya9T;f_Qkf8$6pt|ld~a2VV9cW4qZ5KDp(@2U9g3F8RMa~ zjrXI%vED>;o%%>`?siH9_P8hXM10O8Y)L;9S`jYiKQrB^IUH0Yof~eto5xMlqcMqY zn4@Nc&9raPAZVwy=rO{7iB5(ds4}=EFW}p7Ryu3Ee(qSOkyA=HL!W=QbIoA?s2N4E zT#aYZJ#Gf`a50uuf8Y;z7Lp+X8p~>SG&Rh6+mBnq8m>vJNET z9ilVUm#VW$#Io=WSLRQJMHtTEYq$zV@Cm!bf96f`x0&5`q44WOSOquu2^FCt_KKg| ztLRy8fuH6T^`Dy{e1Z?4D8>kjyyu1lQKPNuNz4XOYwxFucWTe@H1bO3@`!IQyr z&b!dvmbM4{6tB3aDM=L%T#o1wH6SV{;z3}d8>uTm73wNjL0cB<1@p(eo+~-#ji~g% z6gA2=2%mY?^i}^?(V@})GX4{*>EcdFcY(8AP2vh>dbo4=jJMEMha>8klO6af_+_B5 z(^;*>uc1CAo4Tf!@XAJv5`8&Hn`Kqrr%pVR$Jsy32^)lD>AG<$!P)D4tCyzr{gi*!i{&vs?(_PDZfis%^T*F|GDX6@A5`$p~~aGm}$rLO~+7H_RZ|k zImJT1dh2M2tiWSPgr!u_{1Q$IJq(TV2AXNsr&q91O;GF9P<`8(;w;qzR3j|O6$A;p zOey<^JTU^aiq|o6x31Gw)rNsI*Y2_xY#EM(!m6I2^P#&a@SeL-msi`MjA+L%d_!s86uADxi1j7!@N7a9Pk;m3P5J z)l*N#(y$4)sFV1)ylp7w*q{Ae{#cW2V+Efhp$}exUXH%{p$%duE-Tc{RHiy*&_n%-OvTN`YcaUD7zYtE&!?|pRf63$*tq1I;)Aepq zz@_$>Uq3u4Cy=u#r-zp)cxa;1^rk#;kAKY!G3EVq?|svm=1~e)h6F5! z9u&t{kOUiPlx<@B(m=ifF}j<(KIlZ=jJy(&6?ostz)5gHs<%(M&fq|S$O(}jM>xUX zoy)kMMw(`RUO%^aY*XNGtm0H~pSY(TRJZAdH#F2Xdr;2EaE!^e=V>WCfsf%g`7Pucv1dczq`z)FK?o}um_i`5O#x2Ttj%e76w!$eM(KzL)2~2^5JkC+QU0= zh=;;izC)dCrgB=}UK63D>rQlH7wXQ#4<;Eln5yd;e|Y3Ch-s-}2$AtX*3@ z2N8;LMM|`9nIBAm8uDH4AV}ZLo%kO8MT2=epWr;$4Lbr+U#asQo2q#aTblGdNKN>s-hNPZqe)*cn51Jts3B`a($8)3zIQES37kZ zofpf~Df61`NoS}w4~EOwM>SH7b-HuSDW_Yi$M`#LER(}wj8}VsG z?_e=E6?S`fUu9+$%W9XE@v?S!8zt&G!3~k$M$L@OA6%&~@M5z(JT0e1&S#Q~UZ|HBX%BF2HABZadGs^93hntzThi?H z@AwUk5{{d}r7=k@mh=&eci}7Xc=t^?|Ad#zAK9+SpxO=^W_Ay{MNh zVH52dVyLeU$d~@ah55Lt;~foG@`n1$%qH0l z&xL7*NMeXpZPb3%T6fe}r2^-1C{Bkt?1^h^&S$7AwWk8&X`e!AjK}-fQ{7WTrQ=iJ zJ>ioA_JCP!xAHoSR8R0RR#dsvL#P2CaUD8oR{D8t8f?}HZeusqDejcf8KN|g=ttYn z4EINvf9zpC1dGH~bw^<~x?+m>7sKL_Nn6xJJ}54hr%j@w5$Sgru1aN`SS}T^~s<`B&F|gL&|j=ksk^OkdME zTFqzS8n#o_)P4L1$6{x^1v4Onm(wi!yD4Tb+VbM4M-p;VXof3sBF>Qf*8-|=677?` z)lV3sKmJ$c(W&|~-9-0R+p!?N5N&>8l=MM$qy8}SLLBqIp5z7=QkB<SP8Fmb<;qGumn5ePrhh)QY*aU+x9p~T}@vt$tNOnz1L%eYG-!MQ}>AY&9 z`|IU8ML$t{)J9cUAx@Q@j5es%6_uhlioYx2RB#gXbhR0`K?CRjjb(o$L+XA+(&++z zKuxKO%ry`97v62ktLT+&VawV#>`)s?QIdQ@a0ElRAI}T>%@YiMKz~y)LH9FoF|V4e zYdLH5CaLvH_#gj|YEW4^VprL7wg@+ZUqmGriVy#b+w%^JqFr{RB!*qoMLc*V$OOhk z>bUsCfZ8j5radfW$(VFn64+|)2Ag37#_3YR<++{wx}q}hE+k1lPqR%$_lk>ydkyob zin^!1r0!v1Yyg&C+D0}gbAKRSegn^k&m^th#nLJro8lDNgZhnUaW4*VD?<9q)}f;0 z+4kbe`tlR51G`}+grz%4x;AWA({srf6R^GXS7CilEmVUfOK*~Oc_CG4hO6)@KEnPO zz=KlP4`DYK{=-qoFu#;Us>Cr&BjO&`k1+``f&i-bMeGSt!~(mEt8)58)HE&K@=cOuBg>XDypV 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