From 2047ce8d7e275cf3461cf832682296315c5b7d91 Mon Sep 17 00:00:00 2001 From: jonsd Date: Tue, 12 Feb 2008 23:06:42 +0000 Subject: [PATCH] [1.31.10] Started voice es-la, Latin American Spanish. lang zh: more vowel adjustments, "d", "r" syllable, "ng" syllable. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@140 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/af_list | 12 ++- dictsource/af_rules | 144 +++++++++++++++++++++++++++------ dictsource/dict_phonemes | 13 +-- dictsource/es_rules | 13 +-- dictsource/fr_list | 25 ++++-- dictsource/fr_rules | 34 ++++++-- dictsource/tr_rules | 9 ++- dictsource/zh_rules | 19 ++++- espeak-data/voices/es | 1 + espeak-data/voices/es_la | 11 +++ phsource/compile_report | 28 ++++--- phsource/ph_base2 | 6 +- phsource/ph_hindi | 3 - phsource/ph_spanish | 13 ++- phsource/ph_zh | 21 ++++- phsource/phonemes | 13 +-- phsource/ustop/t_unasp2.wav | Bin 0 -> 572 bytes phsource/vdiph/yi | Bin 10626 -> 10626 bytes phsource/vnasal/vowelchart.png | Bin 22523 -> 24646 bytes phsource/voc/j | Bin 5806 -> 5805 bytes phsource/voc/v2 | Bin 0 -> 5806 bytes phsource/vowel/i#_7 | Bin 5808 -> 5808 bytes src/intonation.cpp | 4 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 2 +- src/translate.cpp | 5 +- 26 files changed, 286 insertions(+), 92 deletions(-) create mode 100755 espeak-data/voices/es_la create mode 100644 phsource/ustop/t_unasp2.wav create mode 100644 phsource/voc/v2 diff --git a/dictsource/af_list b/dictsource/af_list index c8b432f9..24be1997 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -157,7 +157,9 @@ tunisië $2 turkye $2 upington apiNt@n vesuvius v@su:viWs +viëtnam vj'Etnam wellington wEliNt@n +wolseley wulsli worcester v'ust@r zimbabwe zI:mb'ab_wE @@ -275,6 +277,7 @@ matthéüs mat'i:Ws melanie m@lA:ni meraai m@rAI messias m@sijas +michael _^_EN michelle miS'&l michiel $2 miriam mIri@m @@ -322,6 +325,7 @@ terblanche t@rblA:nS theron tr'On toerien $2 trudie trudi +versfeld f&rsf< viljoen $2 villiers vIli@rs vincent _^_EN @@ -763,6 +767,7 @@ sodoende s'o@d,und@ sogenaamde s'o@x2@n,A:md@ sononder sOn_On@r sonop sOn_Op +sonore sun'o@r@ sover so@f&r stabiel stab'il staccato $2 @@ -785,6 +790,7 @@ vakant f%ak'ant vakante f%akant@ vanaf fanaf vandat $1 +vanmelewe fanm@l'e@v@ vanne fan@ veraf f&r_af verafgeleë f&rafx2@le@@ @@ -804,6 +810,7 @@ vers f&:rs verste f&rst@ verte f&rt@ vertes f&rt@s +verweg f&:rv&x2 via via volheid $1 volte $1 @@ -822,8 +829,11 @@ vrek fr&k waarskynlik $2 waarskynlike $2 wangedrag vanx2@drax2 +watwo vatvo@ +watwou vatv@U weergalm $2 weerklink $2 weggewens v&x2@v'E:ns welaf v&l_af -weleer v&l_'e@r \ No newline at end of file +weleer v&l_'e@r +wysgere veIsx2e@r@ diff --git a/dictsource/af_rules b/dictsource/af_rules index f6fffffa..7a9f894a 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -157,7 +157,7 @@ a (gonie %a // fix 1st a sound and move default stress: agonies/-e agonie (_N %ax2%uni // move stress to end: agonie agter (bak %ax2t@r // fix stress: agterbaks/-e/-heid - agter (e ''ax2t@r- // force stress to 1st slb, insert short pause: agterent/-e + _) agter (en ''ax2t@r_ // force stress to 1st slb, insert short pause: agterent/-e _) agterge (@P7 'ax2t@rx2@ agter (midda %ax2t@r // fix stress: agtermiddag/-s/agtermiddae agterna ax2t@rn'A: // agterna/-kyk/-loop/-sit/-staar @@ -222,8 +222,9 @@ a (tomA %a // fix stress and a sound: atome/(sub)atomies @) ator (K 'A:tOr // katalisator/diktatorskap and many similar @) atories %at'o@ris // stress on -ories: diktatories/organisatories/resperatories, etc. + atrium A:triWm // fix a sound: atrium and compounds K) au @U // trauma/-ties/Aucamp/Paul/-a/-us - augustus Ox2'WstWs + augustus %Ox2WstWs avokado %af%ukA:du // stress and o sounds avokade %af%ukA:d@ // variant form of avokado C) a (xA+ a // shorten a before x: taxi and compounds/praxi/saxofoon @@ -313,7 +314,6 @@ b (_N p b (eentjie++ b // exception to "bee" rule: beentjie/-s and compounds bagasie b@x2A:si // shorten 1st a: bagasie and compounds - baaierd bAI:@rt // fix e sound: baaierd/-s @) baarlik b'A:rl@k // move default stress: wonderbaarlik/-e/-heid/-ste bajo (net b%aj%u // fix stress and vowel sounds: bajonet/-te and compounds bakate (l b%ak@t& // fix stress and vowel sounds: bakatel/-le/-letjie @@ -424,6 +424,7 @@ byder (C@ b%eId@r // byderhand/-s/byderwets by (een b%eI_ // move default stress: byeen/byeenkoms/-te, etc. byge (low b%eIx2@ // move default stress: bygelowig/-e/-heid + _) by (telP2 b'eI // fix e sound: bytel/-ling/-lery by (voorb b%eI// move default stress .group be @@ -435,6 +436,7 @@ _) be (@P2 b@ @) be (C b@ bene (dy b%e@n@ // fix stress and e sounds: gebenedy/-de + beni (g be@n@ // fix stress and e sound: (swaar/twee/vier)benig, etc. C) be (rsie b'&: //kombersie etc. bene (r be@n@ //benerig/e be (C%+ bE // beffie/bessie/bennie/bettie/blombeddings @@ -456,6 +458,7 @@ bedes (_ be@d@s // bedes/seënbedes, etc. bedel be@d@l // bedel/gebedel/bedelaar bedeling b@de@l@N //bedeling and compounds + bede (str be@d@ // fix stress and e sounds: bedestring/-e and compounds bedev be@d@f // bedevaart and compounds beger (A b@x2e@r // begerig/begerend and compounds bek (f b&k // fix stress and e sound: bekfluitjie/-s/-musiek, etc. @@ -594,6 +597,7 @@ deur (sigt d%y@r // move default stress: deursigtig/-e deur (skynA d%Y@r // move default stress: deurskynend/-e deur (skynde d%Y@r // move default stress: deurskynde + deur (soek d%Y@r // move default stress: deursoek/-ing deurspek d%y@rspEk // fix stress and 2nd e: deurspek/-te deur (weeC d%y@r // move default stress: deurweef/deurweek/-te deur (winter d%y@r // move default stress: deurwinter/-de @@ -634,7 +638,7 @@ debu (te@ d%Eb%y // fix stress and e sound: debuteer/debutering debuut d@b'yt // debuut/-bundel/-vertoning dee (moedig d%e@ // move default stress: deemoedig/-e/-er/-ste/-heid/-ing - desember de@s'Emb@r + desember d%e@sEmb@r digers d@x2@rs departe (ment d@p%art@ deposito d@pOsitu // stress and vowel sounds: deposito and compounds @@ -663,6 +667,7 @@ @) ds (_ ts // fix d sound of wrds ending in -ds: buitentyds, etc. hon) d (C t // fix d sound: hondriem/-reuk/-ruik oo) d (r t // fix d sound: broodrooster/doodryp/loodreg/noodroep + win) d (r t // fix d sound: windrigting/-s and compounds/windreën p) d (C d // oopdwing/koopdwang ver) d (C d // verdwyn; see rule: @) d (C t @) dd d // beddens/bedding @@ -695,7 +700,11 @@ e (C E CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette + CACp) e (rl @ // fix e sound: werperligte/wimperloos CAC) e (rr @ // fix e sound: koperring/-rooi/nederryn/somerreën/-rok/superrealis/syferrekenaar... + aai) e (rC @ // fix e sound: baaierd/waaierstert/compounds starting with baaiers- + bloup) ers &:rs // fix e sound: bloupers + treil) e (rC @ // fix e sound: (vis)treilerkaptein/-wrak and similar compounds hond) e (@ @_ // fix e sound: hondebloed/-oor/-trou, etc. kod) e (C @ // fix e sound: kodenommer/kodetaal/kodewoord, etc. Cond) e (CA @ // blondekop/geskondenes/hondebelasting and many compounds/sondebok/sondelas @@ -709,11 +718,12 @@ spok) e (C @ // fix e sound: compounds beginning with spoke: spokebeeld/-lywe/-dans styw) e (C @ // fix e sound: stywepas/stywesiek/-te blak) e (r @ // fix e sound: blakerend/-e/blakering + rm) e (rtjie @ // fix e sound: beskermertjie/hervormertjie/verwarmertjie and similiar diminutives skilf) e (r @ // fix e sound: skilferagtig/skilferdeeg/-kors/afgeskilferde/verskilfering syf) e (r @ // fix e sound: (be-/in-/ont-/uitsyfering @C) erf (_ &rf // fix e sound: bokerf and similar @C) erwe (_ &rv@ // fix e sound: plurals: randerwe and similar - CAC) e (rkK & // fix e sound: deurgewerk; exception to: CAC) e (CC + CAw) e (rkK & // fix e sound: deurgewerk/-te; exception to: CAC) e (CC CAp) e (rkC @ // fix e sound: hiperkrities/koperkleurig/koperknope CAw) e (rkA & // buitewerker/bywerking/genadewerking/grondbewerking/klerewerker/nawerking... yw) e (rA @ // fix e sound: beywering/skryweragtig @@ -732,6 +742,7 @@ _) epi (C %Ep%i //episode and others halw) e (K @ // fix e sound: halwemaan/halwerweë/halwes liefd) e (C @ // fix e in compounds starting with liefde: -blyk/-daad/-diens/-gawe/-groete/-werk, etc. + mal) e (dy @ // fix e sound: vermaledy/-de and other derivitives sp) e (d @ // ekspedisie/gaspedaal/kwispedoor gev) e (gK & // fix e sound in compounds like buitegevegstelling/skietgevegte CAC) e (gg & // fix e sound: bylegging/delgingsfondsbelegging/langtermynbelegging @@ -745,7 +756,7 @@ @k) e (lde_ @ // fix e sound: gekronkelde/(ge/ver)kreukelde mp) e (lde_ @ // fix e sound: gemompelde/oorrompelde/verskrompelde and similar Ap) e (ling @ // fix e sound: skepeling/compounds of sypeling - @C) e (lk_ & // fix e sound: many compounds ending in kelk/melk + @C) e (lk_+ & // fix e sound: many compounds ending in kelk/melk @C) e (lke_ & // fix e sound: many compounds ending in -elke: blomkelke, etc. uiC) e (K @ // fix e sound in wrds like: bruidegom/druipeling/duinebesie/duisendpoot/kruisement... yd) e (l @ //ydel e sound in compounds verydeling @@ -758,7 +769,9 @@ l) ens (_ E:ns // fix e sound: kamaralens/wyehoeklens/kontaklens and similar l) ense (_ E:ns@ // plurals: kamaralense/wyehoeklense/kontaklense AAl) ens (_ @ns // fix e sound: meulens and compounds + vaCk) e (nC @ // fix e sound: Valkenburg/varkensgras/-kos, etc. vel) ens (_ @ns // fix e sound: vervelens + vull) ens (_ @ns // fix e sound: vullens and compounds @k) e (nskap @ // fix e sound: dronkenskap and derivitives pot) e (nC E // fix e sound: potensieel/potensiële Cp) ens (+ Ens // fix e sound: beespens/grootpens/melkpens/sikspens/skaappens/varkpens/trippens/vaalpens @@ -766,6 +779,7 @@ ensiklope %Ens%ikl%up@ // fix stress and vowel sounds: ensiklopedie and compounds entoesia %Ent%us%i;a // move default stress: entoesias/-te/-me C) e (pan @ //fix e sound: instrumentepaneel/kolepan/liefdepand + Celm) e (tK @ // fix e sound: helmet/pelmet and compounds @k) e (tt@+ E // menseketting/etikette sp) e (lonk @ // spelonk/rowerspelonk/spelonkagtig etc. _k) e (ndh =E // but bekendheid/onbekendheid @@ -825,6 +839,7 @@ nl) eer e@r // restore default stress: kernleerplan and compounds rl) eer e@r // move default stress: agterleer/burgerleer/kelderleer/solderleer sl) eer e@r // words containing sleer take default stress: seemsleer/volstruisleer + ep) eer e@r // default stress: (harde-/wilde-)peer and compounds Cs) eer e@r // words containing seer (meaning pain) take default stress ks) eer 'e@r // annekseer/indekseer/lakseer/takseer and their compounds ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc. @@ -1048,10 +1063,10 @@ C) ensies 'Ensis // forensiese @) enswaar (dig @nsv'A:r // noemenswaardige/bejammerenswaardig @C) ent (K 'Ent // orent/student/presidentsrede + @C) ent (e_ 'Ent // plurals of some of the above### en) ent (_ Ent // restore default stress: koppenent/voetenent pr) ent (+ Ent // default stress for compounds of prent @s) ent (rA Ent // winkelsentrum/studentesentrum, etc. - @C) ent (e_ 'Ent // plurals of some of the above C) er (tyd @r // tegelykertyd/kindertyd/indertyd _) etens 'e@t@ns // etenstyd/klok/tafel/uur pann) e (C @ //pannekoek and friends @@ -1142,7 +1157,7 @@ fasiliteit fasilit'eIt // fasiliteit/e/aftrekorderfasiliteit fa (ta@ f%a //fix stress and 1st a sound: fatale/fatalis/-me/-te/-ties fat (soen f%at // move default stress: (on)fatsoen(lik) - februarie f'e@bry,A:ri + februarie fe@bry,A:ri feite feIt@ // fix 2nd e sound: feitebepaling/-bevinding/-bron/-fout/-kennis/-lik @) fel (end f@l // betwyfelend/skuifelend/weifelend @) fel (ing f@l // betwyfeling/skuifeling/weifeling @@ -1224,6 +1239,7 @@ A) goog (_ x2'o@x2 // demagoog/pedagoog gor (dyn x2%Or // move default stress: gordyn and compounds A) goë x2'u@ // demagoë/pedagoë + grade (C x2rA:d@ // fix e sound: gradedagseremonie/-dae/-lyn/retrogradewoordeboek grade (ring x2r%ade@ // fix stress and vowel sounds: gradering and many compounds gra (fiek x2r%a // fix stress and a sound: grafiek/-e /lyngrafiek, etc. gra (fiet x2r%a // fix stress and a sound: grafiet and compounds @@ -1405,6 +1421,7 @@ hong (a h%ONx2 // Hongaar/Hongare/Hongaarse ho (nneur h%O // move default stress: honneurs/-graad, etc. hoog (dra h%o@x2 // stress: hoogdrawend and derivitives + hoog (moedig h%o@x2 // move default stress: hoogmoedig/-e/-heid horison (ta h%o@r%is%On // move default stress: horisontaal/horisontale hor (los h%Or // horlosie and compounds hor (mo h%Or // move default stress: hormoon/hormone and compounds @@ -1607,7 +1624,7 @@ _) ja (nnA+ ja // restore default stress: Janna/Jannie/Janneman, etc. _) jan (sAnK jan // restore default stress: Jansen/Janson/-s _) j (antjieK++ j // fix a sound: Jantjie/-s - januarie j'any,A:ri + januarie jany,A:ri japo (n j%apO // fix stress and shorten a sound: japon/-ne and compounds/japonika jas (myn j%as // move default stress: jasmyn and compounds jean _^_EN @@ -1622,8 +1639,8 @@ jonge jON@ // jongeling/jongeres jong (etjie jON // fix e sound: jongetjie/-s - junie j'uni - julie j'uli + junie juni + julie juli juris (dik j%ur@s // jurisdiksie and compounds ju (we j%y // juweel/juwele and compounds juwe (lier j%yv@ // stress and vowel sounds: juwelier and compounds @@ -1648,6 +1665,7 @@ n) kerende (_ k@r@nd@ //hunkerende and others kerker k&rk@r // fix e sounds: gekerkerde/inkerkering/kerkermuur, etc. weder) ker (A k'e@r // wederkerend/wederkerig + kete (l ke@t@ // fix e sounds: stookketel/ketelmaker and many similar compounds _) keuse k''Y@s@ // fix connecting e sound in compounds starting with keuse kiaat k%i;A:t // move default stress: kiaat and compounds kilimandjaro k%il@m%andZA:ru // fix stress and vowel and "dj" sounds: kilimandjaro and compounds @@ -1707,6 +1725,7 @@ @) kundi (g k'Wnd@ // wiskundige/onoordeelkundigheid and many similar kurwe kWrv@ // fix e sound: kurwes/skurwebas/skurwebek/skurwepadda i) kus k'Ws // chemikus/historikus/politikus, etc. + _) kw kw // fis w sound in kw combination at start of word/after prefix: weggekwynde, etc. kwaad (aardi kw%A:t_ // move default stress: kwaadaardig/-e/-heid kwa (dra kw%a // move default stress: kwadraat/kwadrate kwali (C@ kw%al%i // kwaliteit/kwalifiseer @@ -1773,6 +1792,7 @@ kara (koel k%ar%a // fix stress and a sounds: karakoel and compounds kara (va k%ar@ // move default stress: karavaan/karavane ka (ros k%a // a short, unstressed: karos/-se and compounds + kartets k%artEts // fix stress and e sound: kartets/-e and compounds kar (ton k%ar // move default stress: karton and compounds _) kar (ve k%ar // move default stress: karveel/karvele kar (ver kar // restore default stress: karverkoper/-verhuurder, etc. @@ -1894,7 +1914,7 @@ lanfer lA~mf@r // fix e sound: lanferdoek/-vlae, etc. lam (len l%am // move default stress: lamlendeling/lamlendig/-e/-heid lande (ry l%and@ // move default stress: landerye/compounds of landery- - _) lang (d l%aN // langdradig/langdurig and their derivitivs + _) lang (d@@ l%aN // langdradig/langdurig and their derivitivs  _) lange (CA laN@ // e sound: langelaas/Langeberge lang (werp l%aN // move default stress: langwerpig/-e/-heid lank (moe l%aNk // move default stress: lankmoedig/-e/-heid @@ -1958,7 +1978,7 @@ lug (A lWx2? // lugaanval/lugafweer/lugopname luid (rugt l%Yyd // move default stress: luidrugtig/-e/-heid luite (nant l%Yyt@ // fix e sound and move default stress: luitenant and compounds - luk (salig l%Wk // move default stress: geluksalig/-e/-heid + luksa (lig l%Wks'A: // move default stress: (wel)geluksalig/-e/-heid lu (kwart ly // fix u sound: lukwart and compounds lu (mier l%W // fix stress and u sound: lumier and compounds lupine l%upin@ // fix u sound: lupine/-veld and similar @@ -1970,7 +1990,7 @@ .group m m m m (m - _) made (l m%A:d@ // move default stress: madeliefie/-s + made (lie m%A:d@ // fix stress and e sound: madeliefie/-s/watermadeliefies _) ma (d m%a // fix stress and 1st a sound: madonna/-s/-beeld/-lelie/Madiba/Madras maga (syn m%ax2%a // magasyn and many compounds magi (stra m%ax2%i // magistraat and many compounds @@ -2254,7 +2274,7 @@ no (stalgie n%O // stress on 2nd slb.: nostalgies note (b no@t@ // fix e sound: notebalk/-e/-bank/-beurs no (velle n%u // move default stress and fix o sound - november no@f'Emb@r // fix 1st e sound and stress: November and compounds + november n%o@fEmb@r // fix 1st e sound and stress: November and compounds ntere (ss nt;r@' // interessant/interesseer/geïnteresseerd n (tjie N // breintjie/fonteintjie/kleintjie oe) ng n;x2 //soengroet, pensioengewend etc. @@ -2433,7 +2453,7 @@ ovu %Ov%y // fix stress, o and v sounds: ovulasie/ovuleer ower (@ o@v@r // lowergroen/betowerend/dowerig/compounds of owerheid ower (spelig %o@v@r // move default stress: owerspelig/-e - oë u@ // + oë u:@ // .group on // The following are experimental nasalisation of ons @@ -2576,7 +2596,7 @@ oor (meester %o@r // move default stress: oormeester _) oor (peins %o@r // move default stress: oorpeins/-ing oor (reed %o@r // move default stress - oor (redA %o@r // move default stress: oorredingskrag + oorre (dA %o@re@ // move default stress: oorreding/-skrag/-vermoë oor (rompel %o@r // move default stress _) oor (skadu %o@r // move default stress: oorskadu/-wing _) oor (skat %o@r // move default stress: oorskat/-te/-ting @@ -2646,6 +2666,7 @@ pa (trA p%a // patrollie/patroon/patrys patri (@ p%atr%i // move default stress: patriarg/patriot/-te and derivitives patriar (ga p%atr%i%ar // move default stress: patriargaal/-gale + paté p%ate@ // fix stress and vowel sounds: (lewer)paté, etc. pa (Ciljoe p%a% // fix stress: pawiljoen/paviljoen/-e and compounds polio po@li;u // polio and compounds _) peli (ka p%El%i // move default stress: pelikaan/pelikane @@ -2659,6 +2680,7 @@ _) perde p'&:rd@ @) perde (_ p&:rd@ // compounds ending with perde pe) perde (_ p@rd@ //gepeperde, ongepeperde + pur) perde (_ p@rd@ // fix e sound: verpurperde ras) perde (_ p@rd@ //gerasperde and compounds snip) perde (_ p@rd@ //words ending in snipperde tem) perde (_ p@rd@ //words ending in temperde @@ -2666,10 +2688,12 @@ skam) pere (_ p@r@ ?? shorten 1st e in ending perfek p@rfEk // perfek/-te/-sie/-sionis peri (o p%e@r%i; // stress: periode/-s and compounds + peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici peri (stal p%Er@ // fix stress and vowel sounds: peristalties/-e/peristaltiek per (kussie p@r // fix stress and e sound: perkussie and compounds perle (moe p%&rl@ // move default stress: perlemoen/perlemoer and compounds/reperkussie/-s pe (rron p@ // move default stress and fix e sound: perron and derivitives + perske p&rsk@ // fix e sounds: perskeblatjang/-bloeisel/-brandewyn/-konfyt/gladdeperskes/geelpersketyd r) peling (_ p@l@N //verwerpeling etc. peloton pEl@t'On permanen p&rman'En // permanent/e/permanensie @@ -2913,7 +2937,7 @@ &A) reel (_ r'e@l // stress: immoreel/kultureel/struktureel/tekstureel/temporeel reti (re r@t@ // fix stress and vowel sounds: retireer/retirerende _) retro (@ r%Etr%u // fix stress and vowel sounds: many words beginning with retro-: retrogressie/-f, etc. - re (ü r%i_ // fix stress and e sound, insert pause: reünie/-s and compounds/reünifikasie + re (ü r%i_ // fix stress and e sound, insert pause: reü¼nie/-s and compounds/reünifikasie .group s @@ -2938,6 +2962,7 @@ @) sj (aar sj // diensjaar/lewensjaar/begrotingsjaar @) sj (aCA sj // apartheidsjare/oesjare/beroepsjaloesie @) s (joern s // split -sj-: fabrieks-/reis-/skeepsjournaal, etc. + @) s (jonC s // split sj: bruidsjonker/herdersjonge/kajuitsjonge/skeepsjonge/varsjonk sigare (t s@x2%arE // fix vowel sounds and move default stress sig (a@ s@x2 // sigaar/sigare/sigaardosie _) si (klo s%i // fix stress and i sound: sikloon/siklone/sikloop/siklope @@ -2950,6 +2975,7 @@ sinteties s@nte@tis // sinteties/e/fotosinteties/-e si (viel s@ // move default stress and fix i sound: siviel/-e s (iën S + _) sebra se@bra // fix vowel sounds: sebra/-strepe; variant of zebra selek (CA s@lEk //seleksie selekteer etc. sending (_ sEnd@N //fix sending at word end @@ -2960,6 +2986,7 @@ _) sa (ff sa'' // move default stress: saffier and compounds/saffraan/-agtig/-peer sag (moe s%ax2 // move default stress: sagmoedig/-e/-heid salaris s@lA:r@s // salaris/aanvangsalaris/salarisskaal/-uitbetaling + salvo (K salv%u // fix v sound: (geweer)salvo/-'s and similar sal (mander s%al // fix stress: salmander/-s/klipsalmander salo (n s%alO // eetsalon/haarkappersalon sal (peter s%al // move default stress: salpeter and compounds @@ -2974,6 +3001,7 @@ sar (kA s%ar // move default stress: sarkasme/sarkasties/sarkoom sa (rong s%a // fix stress and a sound: sarong/-s sa (tir s%a // move default stress: satire/satiries/-e + sa (turnu s%a // fix stress and a sound: saturnus and compounds _) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher _) sede se@d@ // sede/-s|-preek se (duk s@ // fix stress and e sound: seduksie/-s/seduktief @@ -3048,6 +3076,7 @@ @) sering s'e@r@N // analisering/kategorisering @) ses (_ s@s // fix 2 slb. words ending in ses sma (rag sm%a // fix stress and a sound: smarag/-te + snaper (ing snA:p@r // fix stress and vowel sounds: versnapering/-e/-s and compounds snel (_ sn&l // fix e: aansnel/agternasnel/blitssnel/heengesnel/koppesnel/nasnel/verbysnel sodom (iet s,o@dOm // fix stress soewe (nier s%uv@ // move default stress: soewenier/-e/-s @@ -3085,7 +3114,7 @@ self (_ s'&lf // myself/vanself // self s'&lf K) sewe (C s'e@v@ // sewejarige/standerdseweklas - september s@pt'Emb@r + september s@ptEmb@r @) sief (_ s'if // massief/aggressief/passief/intensief @) siewe (_ s'iv@ // massiewe/aggressiewe/passiewe/intensiewe _) sieke sik@ // siekeboeg/-fonds/-lys/-lokaal/-loon @@ -3123,7 +3152,6 @@ spesialis (A spESialis spesialis spESal'Is spesi (f sp%Es%I // spesifiek/spesifiseer - @@) spre (ken spr'e@ // stress: vanselfsprekend stede (C ste@d@ // fix e sounds of many compounds and derivitives containing stede dubbel) ste (r st& // fix e sound: dubbelster/-re dwaal) ste (r st& // fix e sound: dwaalster/-re @@ -3131,6 +3159,7 @@ nd) ste (r st& // fix e sound: aandster/oggendster pool) ste (r st& // fix e sound: poolster see) ste (r st& // fix e sound: seester/-re/seesterpunte and similar compounds + sewe) ste (r st& // fix e sound: sewester and compounds _) ste (ri st%E // fix stress and e sound: steriel/-e/steriliteit stimu (lA st@m%y // move default stress and fix i sound: stimuleer/stimulering/stimulasie _) sub (a sWb_ // subagent/subartikel/subatomies, etc. @@ -3308,6 +3337,7 @@ _) trak (ta tr%ak // move default stress: traktaat/traktate _) trans (@P5 tr%ans // transatlanties/transformasie/transoranje/Transvaal, etc. _) trans (aksie tr%ans // remove small break: transaksie/-s and compounds + transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal trap (soe tr%ap // move default stress: trapsoetjies/-e traw (a trav' // trawant/e/trawal &) treding tre@d@N // betreding/uittreding @@ -3347,6 +3377,7 @@ tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e + @A) te (geC t@ // fix e sound: Hugenotegemeente/stategebou and similar compounds @C) te (gn t& //tegniek/iese and friends _) tekere t@ke@r@ // move default stress and correct e sounds teks (tiel t%Eks // move default stress: tekstiel and compounds @@ -3369,6 +3400,7 @@ teks (+ tEks // compounds with teks tempel tEmp@l // fix e sounds: afgodtempel/Hindoetempel/kultuurtempel/tempelbewaarder/tempeldienaar tent (_ tEnt //suurstoftent and others + tente (_ tEnt@ // (suurstof-/wa-)tente and similar te (oo t@ // geboorteoorskot/kosteoorweging/siekteoorsaak/terroristeoorlog _) teraarde t%&r?A:rd@ // move default stress and fix e sounds: teraardebestelling/-s &) terd (_ t@rt // fix e sound: beteuterd/gelouterd/stouterd @@ -3414,14 +3446,14 @@ &) tel (_ t@l teleur t@lY@r // teleur/teleurstelling/teleurgesteld - &) tels (_S4 t@ls + &) tels (_ t@ls sleu) tel t@l //sleutel in compounds te (l t& + CA) te (lend t@ // fix e sound: (af)ratelend/-e &A) te (lp t@ // fix e sound: beitelpunt/ketelpak/ketelplaaat/titelplaat and similar A) te (ling t@ // betiteling/insluiteling/loteling/uitbeiteling/verstoteling teltjie t@lki @) tel (o t@l // hartelose/besluiteloos/gedagtelose - ke) te (l t@ // fix 2nd e sound in many compounds with ketel tendens t%Ende~ns // fix stress and e sounds: tendens/-e and compounds &) tert (A t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken &) tert (r t@rt // fix e sound: pleistertroffel/venstertralie/ystertralies/ystertrap @@ -3481,16 +3513,18 @@ uiteindeli %YyteInd@l@ // move default stress: uiteindelik/-e uiter Yyt@r // uit- not prefix: uiters/uiterlik/uitermate uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@ - uit (kansel ''Yyt // enforce stress on 1st slb: uitkanselleer + uit (huisig %Yyt // move stress: uithuisig/-e/-heid + uiting Yyt@N // remove break and fix ng: uiting/-e/-svermoë and similar compounds + uit (munten %Yyt // move stress: uitmuntend/-e uit (sluiten %Yyt // move default stress: uitsluitend/-e uitsluitlik %YytslYytl@k // move default stress: uitsluitlik/-e uitsonderli (k %YytsOn@rl@ // move default stress: uitsonderlik/-e vs. uitsonder - uit (sorteer ''Yyt // remove stress from -eer and place on 1st slb uitspreekl %Yytspre@kl // fix stress and avoid -lik suffix: onuitspreeklik/-e uitstaan (C %YytstA:n // move default stress: uitstaande/onuitstaanbaar/-bare uit (steken %Yyt // move default stress uit (spatt %Yyt // move default stress uit (voerba %Yyt // move default stress: (on)uitvoerbaar/-bare/-baarheid + uit (voerig %Yyt // move stress: uitvoerig/-e/-heid uit (wisba %Yyt // move default stress: (on)uitwisbaar/-bare/-baarheid _) uitge (@P5 'Yytx2@ // words beginning with uitge have stress on 1st slb uitgewer 'Yytx2,e@v@r @@ -3499,6 +3533,8 @@ uitke (n YytkE // mix e sound: uitken ulti (ma %Wlt%i // move default stress: ultimatum/-s _) u (ra %y // uraan and compounds/uranus + _) ure (C y:r@ // fix e sound: urelange/uremeter/-s + _) ure (t %yre@ // fix stress and e sound: ureter/uretra/-s urienweg %yrinv&x2_ // fix stress and e sound: urienweginfeksie/-ontsteking, etc. urine %yrin@ // urine and compounds urineer yrin'e@r // stress to end @@ -3527,10 +3563,13 @@ _) vang (@ faN // vangwa, etc.; see rule: _) van (@ f%an vangen f'aN@n // gevangene/gevangenis/bevangenheid _) vanklik faNkl@k // (on)ontvanklik/-e/-er/-heid + vanself (spr f%ans%&lf // move default stress: vanselfsprekend/-e/-heid vari (A v%ar%i // fix v sound and stress: variasie/-s/varieer vati (kaan f%at%i // fix stress and shorten a sound: vatikaan and derivitives and compounds @) ve (_ _^_EN //words ending in ve is English + veel (duid f%e@l // move default stress: veelduidig/-e/veelduidend/-e veel (jar f%e@l // move default stress: veeljarig and derivitives + veel (s@@ f%e@l // move default stress: veel(seggend/sellig/sinnig/soortig/stemmig/sydig) A) ves (_ _^_EN // words ending in ves after vowel are English ve (l f& // maagvel, stress on 1st slb @@ -3550,12 +3589,19 @@ vio (letK f%i%u // move default stress: violet/-te/-kleurige, etc. _) vi (ri v@ // fix stress and v and i sounds: viriel/-eviriliteit virtu v@rtS%y //virtueel virtuose etc. fix v and t sounds and assure lack of stress + v (iruK v // fix v sound: virus/-se and many compounds + vitri (oel f%itr%i // fix stress and v sound: (blou/groen/koper/sink)vitrioel + viëtna (me vj%Etn%a // fix stress and v and vowel sounds: Viëtnamees/-nese ver (kyker f'&:r //verkyker and compounds _) ver (@P3 f@r @C) ver (_ f&:r // fix e sound in compounds ending in -ver verant (w f@r%ant // (on)verantwoordelik/-heid/verantwoording verant (woord_ f@r_ant // fix stress: (on)verantwoord (single word) verant (woorde_ f@r_ant // fix stress: (on)verantwoorde (single word) + vere (b fe@r@ // ver- not prefix: verebed/-bedryf/-bedekking + vere (h fe@r@ // ver- not prefix: verehoed/-e/-ens + vere (k fe@r@ // ver- not prefix: verekombers/-kuif/-kussing + vere (m fe@r@ // ver- not prefix: verematras/-se/-sie verende f'e@r@nd@ verer (ing f@r_e@r // verering and compounds ending with verering, eg. heldeverering ver (gesig f&r // fix stress and 1st e sound: vergesig/-te @@ -3564,9 +3610,10 @@ vering f'e@r@N //motivering preservering etc. @) vers (_ f&rs // teksvers/slotvers/kindervers and similar @) vers (e_ f&rs // plurals of words like the above + _) versf f''&rsf // fix stress and e sound: versfragment/-e ver (sie_ f&:r //words ending in versie ver (sies_ f&:r //words ending in versies - ver (flent f@r // verflenter and derivitives; see rule: verf (C f&rf + ver (flenC f@r // verflenter and derivitives/verflens; see rule: verf (C f&rf ver (fris f@r // verfris and derivitives; see rule: verf (C f&rf verfyn f@rf'eIn verf (@ f&rf // verfkwas/-voorraad/-emmer and similar @@ -3627,8 +3674,10 @@ volles (_ fOl@s // fix stress and e sound: volles/passievolles, etc. vol (hou_ fOl // exception to: vo (lC f%O vol (maan fOl // exception to: vo (lC f%O + vol (mane fOl // exception to: vo (lC f%O vol (prop fOl // exception to: vo (lC f%O vol (r fOl // volrond/-rooi/-ryp: exception to: vo (lC f%O + vol (sirk fOl // volsirkel: exception to: vo (lC f%O vol (ste_ fOl // exception to: vo (lC f%O vol (sto fOl // volstof/volstoom/volstop/volstort; exception to: vo (lC f%O voltyds fOlteIts // voltyds/-e: exception to: vo (lC f%O @@ -3640,6 +3689,7 @@ vol (groei f%Ol // fix stress: (on)volgroeid/-e/-es voren f'o@r@n // alvorens/vorentoe voog (dy f%o@x2 // fix stress: voogdy and compounds + voor (afgaan f%o@r_ // move default stress: voorafgaan/-de/-s voorbar fo@rb'A:r // move default stress: voorbarig and derivitives _) voorbe (@P6 f'o@rb@ _) voor (bee+ fo@r // voorbeeld @@ -3657,15 +3707,19 @@ vooruit (strew fo@rYyt' // change stress voorwaard (_ f%o@rvA:rd // stress: (on)voorwaardelik vorm fOr@m + vorsti (n fOrst'I // fix stress: vorstin/-ne/-netjie and compounds vrede fre@d@ // fix e sound: tevredegestel/tevredener/vredemaker vreemde fre@md@ // vreemde/s/vreemdeling vreesaan (ja fr%e@s?%A:n // fix stress: vreesaanjaend/-e/vreesaanjagend/-e vriendi (n frind'I // vriendin/vriendinne/vriendinnetjies vrygewig freIx2'e@v@x2 // vrygewig/-e|-heid vry (moed fr%eI // move default stress: vrymoedig/-e/-heid + vry (posti fr%eI // move default stress: vrypostig/-e/-heid vry (wil fr%eI // vrywillig/-lik|-heid vuldig f'Wld@x2 // sorgvuldig/veelvuldig/vermenigvuldig and variants vul (ka f%Wl // move default stress: vulkaan/vulkane/vulkanies + vy (andig f%eI // move default stress: vyandig/-e/-heid + vér f&:r // fix e sound: ver when stressed @@ -3683,6 +3737,8 @@ k) w (And v // fix w sound: buikwand/rukwinde s) w w lyks) w (aaC v // fix w sound: lykswaad/-waak + @s) w (ang_ v // fix w sound: meisieswang/rotswang and similar + @s) w (ange_ v // fix w sound: plurals of the above s) w (art w // fix w sound in compounds like donderswart &s) w (eefs v // fix w sound: compounds like -sweefsel/tuisweefstof, etc. plaas) w (erC v // fix w sound: plaaswerf/-werwe @@ -3691,9 +3747,12 @@ wreed (a vre@t_ // fix d sound and insert short pause: wreedaard/-s wreed (aardig vr%e@t_ // move default stress: wreedaardig/-e/-heid @s) w (al v // fix w sound: dwarswal/gruiswalle/loodswalvis + @s) w (alk_ w // fix w sound: omswalk/rond(ge)swalk/voortswalk s) w (eek v // fix w sound: feesweek/kersweek/paasweek/vandeesweek/werksweek @s) w (iel v // fix w sound: fietswiel/gewaarwordingswiel and similar compounds s) w (il v // fix w sound: groepswil/hemelswil/liefdeswil/korswil + wilker vIlk@r // fix e sound: (treur)wilkerboom/-tak, etc. + winke (lier v@Nk@l // move default stress: winkelier/-s and compounds C) winkel vINk@l // w sound: boek/dames/plaaswinkel, etc. C) w (it_ v // fix v sound: bleek-/grys-/kryt-/lyk-/melk-/naaswit s) w (yf v // fix w sound: viswyf/ganswyfie/mannetjieswyfie @@ -3714,10 +3773,16 @@ weer (barst v%e@r // move default stress: weerbarstig/-e/-heid weer (lê v%e@r // move default stress weer (leg w%e@r // move default stress: (on)weerlegbaar + weer (strew v%e@r // move default stress: weerstrewig/-e/-heid + @) wees (_ ve@s // fix w sound: siekwees/volkwees @) weg (_ v&x2 // blindweg/botweg and many similar spoor) weg v&x2 // fix e sound: spoorwegaanleg/-aansluiting/-amptenaar/-eiendom/-inkomste/-ongeluk... + _) wegge (C@P5 v'&x2@ // prefix: weggeja and similar + weife (l veIf@ // fix e sound: weifelloos/-lose/-loosheid welbehaaglik v%&lb@hA:x2l@k // move default stress: welbehaaglik/-e/-er/-ste welf (_ v&lf // fix e sound: omwelf/oorwelf + wel (skape v%&l // move default stress: welskape/-nheid + wel (spreken v%&l // move default stress: welsprekend/-e @) wendig v'End@x2 // inwendig/noodwendig/uitwendig &) wene (_ v@n@ // fix penultimate e sound: afgestorwene/-s/ingeskrewene/verdorwene/verhewene A) wer (AA v@r // fix e sound: beyweraar/keweruitroeiing/nyweraar/oewereienaar @@ -3742,6 +3807,8 @@ _) wan (A van_ // wanorde/wanopvatting/wanaanpassing/winindruk C) wag vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter k) wagga wax2a // fix w sound: kwagga/bergkwagga, etc. + wankel (moed v%aNk@l // move default stress: wankelmoedig/-e/-heid + wan (stalt v%an // move default stress: wanstaltig/-e/-heid wan (trouig v%an // move default stress: wantrouig/-e wapen vA:p@n // fix problems with compounds and derivitives of wapen: ontwapening/wapengeweld //wapenopleiding @@ -3768,6 +3835,7 @@ waardeer vard'e@r // waardeer/waardeerder waarder (@ vard'e@r // waarderend/e/waardering &) waardig v'A:rd@x2 // stress on -waardig: merkwaardig/besienswaardigheid, etc. + waar (neemba v%A:r // move default stress: waarneembaar/-bare C) waarts vA:rts // fix w sound: dakwaarts/huiswaarts/kerkwaarts/noordwaarts/weswaarts s) wed (C vEt // toetswedstryd/tenniswedstryd/afloswedloop @) wed (str vEt // fix e sound: buite/foto/rugbywedstryd @@ -3781,7 +3849,10 @@ werp v&rp @) wesigheid v'e@s@x2eIt // aanwesigheid/afwesigheid weten (C ve@t@n // wetenskap/-lik/-e and compounds/compounds of geweten- - wêrel (d v&:r@l + wêrel (djie v&:r@l // fix -djie in wêreldjie and compounds + wêrelde (_ v&:r@ld@ // wêrelde and words ending in wêrelde + wêreld (@ v&:r@lt_ // d sound and short break: wêreldoorlog/-reis and similar + wêreldw v&:r@ltv // fix t and w sounds: wêreldwater/-wys and similar wh _^_EN // words containing wh are English @t) w (ie v // fix w sound: (ge)kortwiek/meetwiel _) wig vIx2 // fix stress: gewig/-tig/-e @@ -3790,6 +3861,7 @@ wispel (tu v@sp@l // move default stress: wispelturig/-e/-heid wn _^_EN // names containing town/Brackendowns/Brown + _) wol (A vOl_ // fix o sound, insert short break: wol(onderbaadjie/-broek/-hemp/-klere)/-olie worth _^_EN wood _^_EN @C) w (ooC v // fix w sound: eenmanswoonstel/handelswoorde/openingswoord/privaatwoonstel @@ -3808,6 +3880,7 @@ @C) w (yd v // fix w sound: kerkwyding/landswyd/reikwydte/republiekwyd/wêreldwyd @t) wyfel weIf@l // fix w sound: gewetenstwyfel and similar w (ys v //padwyser and many others with wyser in compounds + wysge (rig v%eIsx2e@ // fix stress and e sound: wysgerig/-e nt) w (A v .group x @@ -3821,6 +3894,7 @@ z z z (z t) z s // fix s sound: britz/fritz/hertz and similar + zebra ze@bra // fix vowel sounds: zebra/-strepe .group @) 'tjie %ici // foto'tjie/ma'tjie, etc. @@ -3883,3 +3957,21 @@ . (. _: \.) . +// extra symbols + ¥ jEn + § afde@l@N + ¶ parax2rA:f + ¶¶ parax2rA:v@ + ¤ mWnte@k@n + © kup'ir&x2 + ° x2rA:d@ + − minWs + ± plWs_OfminWs + µ mikru + ¼ @kwart + ½ @halv@ + ¾ drikwart + × mA:l + ÷ x2@de@ldY@r + ♯ krYys + ♭ mOl diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index ab20dae4..b605f7a3 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -11,8 +11,8 @@ Yy - : ; ? b c d dZ f g h j k l m n -N p r r- s S t tS -v w x2 z Z +N p r s S t tS v +w x2 z Z Dictionary cs_dict @@ -94,7 +94,7 @@ o O oI u * ** : b B d D f g j J J^ k l l^ m n n^ p Q r R s t -T tS v w x +T tS v v# w x z Dictionary fi_dict @@ -337,8 +337,8 @@ x z Z Dictionary zh_dict @ @r a A ai Au E ei -i i. i[ iou o o- ou u -uai y +i i. i[ iou N- o o- ou +u uai y (u) : f h j k kh l m n N p ph r s s. @@ -399,4 +399,5 @@ u# W y Y : ; b d dZ f g h j k l m n p Q r -R s S t tS v z Z +R s S t tS v w z +Z diff --git a/dictsource/es_rules b/dictsource/es_rules index dca313bf..3e13b30f 100644 --- a/dictsource/es_rules +++ b/dictsource/es_rules @@ -160,9 +160,11 @@ .group v _) v (_ uBe v B - _) v b - m) v b - n) v b + _) v v# +?1 m) v b +?1 n) v b +?2 v v# +?2 _) v v .group w @@ -173,8 +175,9 @@ .group x _) x (_ Ekis x ks -// A) x (A Qs // ?? +?1 A) x (A Qs x (_ =Qs + _) x z // ? .group y @@ -182,7 +185,7 @@ y i _) y J _m) y J - _n) y J + n) y J _l) y J y (A J^ diff --git a/dictsource/fr_list b/dictsource/fr_list index ea3aa859..54ed2493 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -5,7 +5,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2008-02-10 Michel Such +// Updated 2008-02-11 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -432,10 +432,12 @@ casus kazys choeur k@r cocus coky discident disidA~ +estomac Estoma eye aj eyes ajz fils fis imprudent E~pRydA~ +iris iris juin ZyE~ malus malys many mEni @@ -542,20 +544,22 @@ acer asEr amazon amaz'On (audible manager) od'ibl||manadZ'@r be bi +being biiN by baj bluetooth blut'us -boy bOj byte bajt bytes bajts (cyber link) sibEr||link debian dEbjAn driver drajv@rz2 download dOnlod +edit edit emacs Emaks emacspeak Emakspi:k espeak @spi:k ethernet etERnEt exit egzit +(file zilla) fajl@-||zija firefox faj@RfOks (fire wire) faj@R||wajr firewire faj@Rwajr @@ -564,7 +568,8 @@ girl g@Rl gnome gnom gnu gnu hamburger _!A~b@rg@r -his iz $u +has _!az $u +his _!iz $u inside insajd insight insajt internet E~tERnEt @@ -584,16 +589,18 @@ media medja messenger mesEnZ'@r movy mu:v'i my maj -new nj'u -news nj'uz +name nejm not nOt ok oke open Op'@n outlook autluk +outside autsajd +outsider autsajd@r player plEj'@r -reader Ri:d@R +quick kwik redhat REdat release rili:z +same sejm schubert SubER screamer skri:m@r (search & destroy) s@:rS_||end_||dEsstrOj @@ -602,18 +609,22 @@ spybot spajbOt sun s@n sunlight s@nlajt (text aloud) tEkst||@lawd +than Dan the D@ $u them DEm $u +then DEn $u there DEr $u they DE $u -then DEn $u thunderbird f@ndERb@Rd time tajm timer tajm@r ubuntu ubuntu update @pd'E:jt upload @plod +very vEri viavoice viavOjs +was waz $u +window windo windows windoz word wWRd writer rajt@r diff --git a/dictsource/fr_rules b/dictsource/fr_rules index e1f5a942..d38cf9ca 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -3,7 +3,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2008-02-10 Michel Such +// Updated: 2008-02-11 Michel Such // // * The rules are based on Cicero TTS. // @@ -38,6 +38,7 @@ a (nnA a // manne an (C A~ // ancien an (_ A~ // élan + _C) aon (_ A~ // faon, paon, taon s) aoul (_ u // saoul aoû ut // août au (l_ O // Paul @@ -127,8 +128,10 @@ .group e e (Ce_ E eau o // bateau cheveaux + C) ea (d i: // read Cr) ea (m i: // stream Cl) ea (n i: // clean + C) ea (Cer i: // reader, cleaner j) e (a // Jean Jeanne sp) ea (k i: // speak speaker p) ect (_ E // suspect @@ -138,9 +141,12 @@ ee i: // meeting _cl) ef (_ e // clef Ck) e (r_ @ // worker, talker + _Cett) e (r_ @ // letter, better eaC) e (r_ @ // speaker, streamer - ght) e (r_ @ // writer, fighter + gh) e (r_ @ // higher + ght) e (r_ @ // fighter, lighter ooC) e (r_ @ // scooter + _ov) e (r @ // over ein (C E~ // peindre ein (_ E~ e (il E // vieille @@ -295,6 +301,12 @@ _) eû y // eût eû Y // jeûne + ew (_ ju // new + ews juz // news, newsreader + r) ew (_ u // crew + r) ews uz + i) ew (_ u // view + i) ews uz e (x E // exact ey (_ e // dahomey ey (C e // ceylan @@ -499,8 +511,9 @@ _) h (umo // humour i (es_ i // parties i (e_ i i (A j // fermier portier patio renier - ig (ht aj // right, fight, light + ig (h aj // right, fight, light wh) ile ajll // while, endwhile + wr) i (tA aj // write _) ill ill // illégal _m) ill il // mille v) ill il // village @@ -517,7 +530,9 @@ _) h (umo // humour ing (_ iN // parking in (h in // inhumain inct (_ E~ // distinct - ink (_ ink // link, pink + ind (_ ajnd // find, mind + ind (ing_ ajnd // find, mind + ink ink // link, pink in (n i // innombrable in (C E~ // vingt // in (_ E~ // vin @@ -581,7 +596,7 @@ _) h (umo // humour o (che_ O // poche, cloche oe (ll wa // moelleux _) oe (C Y // oesophage - _ph) oe (t Y // phoetus + _ph) oe (C e // phoetus oeu @ // soeur coeur oeufs @ // oeufs boeufs o (eC o // coefficient @@ -624,6 +639,7 @@ p) oing (_ wE~ // poing C) oot ut // bootable football z) oo o // zoo z) oo (l oo // zoologue + z) oo (ph oo // zoophile z) oo (m u // zoom oo (X u // pool _gal) op (_ o // galop @@ -644,6 +660,8 @@ p) oing (_ wE~ // poing oû u // coûter oyes (_ wa // troyes oy (A waj // noyer voyelles + oy (_ Oj // boy, toy + oys (_ Ojz // boys, toys oy wa // roy o (_ o // zorro allégro o (z_ o // berlioz @@ -752,9 +770,11 @@ e) s (_h z2 mu) s (_ s _mu) s (_ ému) s (_ + unu) s (_ s // prunus opu) s (_ s // opus, octopus Aru) s (_ s // virus aru) s (_ // disparus + ouru) s (_ // courus psu) s (_ s // lapsus atu) s (_ s // stratus cactus motus @@ -764,6 +784,7 @@ e) s (_h z2 itu) s (_ s ltu) s (_ s // altus otu) s (_ s // motus + Cutu) s (_ s _tou) s (_C _tou) s (_ s @@ -792,6 +813,7 @@ C) te (_ t@- // patte s) th (m // asthme th t // théorie + sCar) t (_ t // smart, start hui) t (_ t // huit _) t t // tien tiers @@ -870,6 +892,7 @@ C) te (_ t@- // patte w w wa (Ce_ wE // hardware software wave w (agon v // wagon + w (r // write .group x @@ -905,6 +928,7 @@ C) te (_ t@- // patte ym (b E~ // symbolique ym (p E~ // tympan + ym (_ E~ // thym y (nn i y (nA i ys (_ is diff --git a/dictsource/tr_rules b/dictsource/tr_rules index fbe09344..9bd26d4a 100644 --- a/dictsource/tr_rules +++ b/dictsource/tr_rules @@ -52,9 +52,9 @@ .group m m m - @) ma (_S2 m%a - @) me (_S2 m%e - @) mı (_S2 m%u# + ma (_S2 m%a + me (_S2 m%e + mı (_S2 m%u# .group n n n @@ -93,10 +93,11 @@ v v .group w - w v + w w .group x x ks + K) x z .group y y j diff --git a/dictsource/zh_rules b/dictsource/zh_rules index 9a05e9ac..39cbdb06 100644 --- a/dictsource/zh_rules +++ b/dictsource/zh_rules @@ -129,7 +129,8 @@ language). ia (DngK iA iao jAu ie iE - io (DngK y + io (DngK y + q) io (DngK u iu iou .group j @@ -147,6 +148,7 @@ language). .group n n n ng (K N // consider (ng+vowel) as (n g+vowel) ?? + _) ng (K N- // syllablic [N] .group o o o @@ -170,6 +172,7 @@ language). .group r r z. + r (K @r11 .group s s s @@ -180,8 +183,10 @@ language). .group u u u - ua wA //ua uan uang, and uan should be more different from uang + ua wA ua (DnK ua + g) ua (DnK wa + k) ua (DnK wa ua (DngK wA uai uai ua1i uai55 @@ -190,17 +195,24 @@ language). ua4i uai51 ue yE //üe ui uei + sh) ui wei u (DnK u@ k) u (DnK wu@ _h) u (DnK wu@ t) u (DnK wu@ uo uo + sh) ui wei + sh) u (DnK wo- + sh) uo wo + L01) u y /// j,q,x,y + u L01) u (DnK y@ + q) u (DnK+ yi L01) ua (DnK y& L01) ue yE + .group ü ü y üe yE @@ -234,7 +246,8 @@ language). .group y y j //before a o e i y (u //NULL before u - y (uDn j + y (uK ; + y (uDn ; yo (DngK yu y (K i // foreign words diff --git a/espeak-data/voices/es b/espeak-data/voices/es index 65e978fa..1a9e53b6 100755 --- a/espeak-data/voices/es +++ b/espeak-data/voices/es @@ -2,5 +2,6 @@ name spanish language es gender male +dictrules 1 intonation 3 diff --git a/espeak-data/voices/es_la b/espeak-data/voices/es_la new file mode 100755 index 00000000..230e099f --- /dev/null +++ b/espeak-data/voices/es_la @@ -0,0 +1,11 @@ +name spanish-latin-american +language es-la +gender male + +phonemes es_la +dictrules 2 +intonation 2 +stressLength 170 200 180 180 0 0 250 280 + +replace 00 T s + diff --git a/phsource/compile_report b/phsource/compile_report index 6bc8bad6..85c797e3 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -47 phoneme tables +48 phoneme tables new total base 99 99 base2 24 118 @@ -30,7 +30,8 @@ ru 38 129 it 17 121 la 21 117 - es 7 118 + es 8 119 + es_la 1 119 pt 27 134 pt_pt 20 134 ro 36 142 @@ -41,7 +42,7 @@ is 32 124 vi 42 137 zhy 40 132 - zh 63 147 + zh 65 149 sw 14 108 th 50 142 id 14 120 @@ -429,6 +430,7 @@ nn/nn_ [N] base nn/nn@ [(@)] base nn/nn#_ [N#] is nn/nn2_ [N] zh + [N-] zh nn/nna [(a)] base nn/nne [(e)] base nn/nni [(i)] base @@ -485,7 +487,6 @@ r3/r_trill.wav [R2] base [x] pt r3/r_u [(u)] base r3/rx [*] base - [**] base [r/] base [r/] af [r/] fr @@ -497,7 +498,6 @@ r3/rx [*] base r3/rz_cs [R^] sk [R^/] sk r3/@tap [**] base -r3/@tap_i [**] base r/r [r] base [r-] base [r] en_sc @@ -649,7 +649,6 @@ ustop/ki [c] base [c] af [k] fi [k] fr - [k] hi [k] hu [k] sk [k^] mk @@ -661,7 +660,6 @@ ustop/kl [k] base [k] en [k] fi [k] fr - [k] hi [kh] hi [k] hu [k] sk @@ -673,7 +671,6 @@ ustop/kr [k] base [k] en [k] fi [k] fr - [k] hi [kh] hi [k] hu [k] sk @@ -812,13 +809,13 @@ ustop/ts_pzd2 [c] hi [c] hu ustop/t_sr [d] sr [t] sr - [t] zh ustop/ts_rfx [ts.] zh ustop/ts_rfx_unasp [ts.] zh ustop/ts_sr [tS;] sr [dZ;] sr ustop/ts_unasp [ts] zh ustop/t_unasp [t] th +ustop/t_unasp2 [t] zh vdiph/0i [OI] pt [OI] grc [OI] vi @@ -1041,6 +1038,7 @@ vdiph/&y [&y] fi vdiph/yi [yi] fi [yI] grc [u-I] no + [yi] zh vdiph/y#i [Yi] fi vdiph/y#i_2 [Yy] is vdiph/yi_fr [w^i] fr @@ -1073,8 +1071,10 @@ vnasal/o_n2 [o~] af vnasal/oo_n [O~] en vnasal/oo_n2 [O~] hi [O~] pl + [o] zh vnasal/u_n [u~] hi [u~] pt + [u] zh vnasal/W_n [W~] en [E~] fr [W~] fr @@ -1107,8 +1107,10 @@ voc/v_ [B] base [v] hi [v] ta [v2] nl + [v#] es [v;] ro [v] is +voc/v2 [v#] es voc/vj [v] base [v] fr vocw/dh [D] base @@ -1123,6 +1125,7 @@ vocw/v [B] base [v] base [v] fr [v] ta + [v#] es [v;] ro vocw/zh [Z] base [Z;] ro @@ -1166,8 +1169,7 @@ vowel/& [a] en_rp [&] fi [&:] hi [&] sv -vowel/0 [O] base2 - [0] en +vowel/0 [0] en [O] hi [O] pt [O] grc @@ -1532,7 +1534,6 @@ vowel/oe_2 [W] no vowel/oe_4 [W] sv vowel/o_mid [O] fr [o] hu - [o] zh [o] tr vowel/oo [O:] en_sc [O] en_wi @@ -1566,7 +1567,8 @@ vowel/oo_2 [0] en_sc [O] cy [o] cs vowel/oo_3 [O] af -vowel/oo_4 [0] en_wm +vowel/oo_4 [O] base2 + [0] en_wm [V] en_wi [3:] en_wi [O:] hi diff --git a/phsource/ph_base2 b/phsource/ph_base2 index 4fbb2922..2e77f092 100644 --- a/phsource/ph_base2 +++ b/phsource/ph_base2 @@ -1,6 +1,6 @@ //==================================================== -// Italian +// //==================================================== @@ -31,7 +31,6 @@ phoneme E vowel starttype (e) endtype (e) length 170 formants vowel/ee_1 - reduceto e 4 // [E] only in stressed syllables endphoneme @@ -53,8 +52,7 @@ endphoneme phoneme O vowel starttype (o) endtype (o) length 170 - formants vowel/0 - reduceto o 4 // [O] only in stressed syllables + formants vowel/oo_4 endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index f2461b23..8e87ab51 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -508,9 +508,6 @@ phoneme k lengthmod 2 wave ustop/k_unasp%60 // weaker before _ ustop/k_unasp%50 - before r ustop/kr - before l ustop/kl - before (i) ustop/ki switchvoicing g endphoneme diff --git a/phsource/ph_spanish b/phsource/ph_spanish index ad97b82d..d435687f 100644 --- a/phsource/ph_spanish +++ b/phsource/ph_spanish @@ -1,6 +1,6 @@ //==================================================== -// Spanish - based on Italian +// Spanish - based on Base2 //==================================================== phoneme E @@ -66,6 +66,17 @@ phoneme r // TEST flap ?? endphoneme +phoneme v# // a shorter [v], a little towards [b] + vcd lbd frc + vowelin f1=1 f2=1000 -300 -200 f3=-300 100 + vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=10 + lengthmod 6 + formants voc/v2+vocw/v%75 + before _ voc/v_+vocw/v%75 + switchvoicing f +endphoneme + + diff --git a/phsource/ph_zh b/phsource/ph_zh index 9edba062..e9e32926 100644 --- a/phsource/ph_zh +++ b/phsource/ph_zh @@ -89,12 +89,13 @@ endphoneme phoneme t vls alv stop - vowelin f1=0 f2=1700 -300 300 f3=-100 80 + vowelin f1=0 f2=1700 -300 300 f3=-100 80 rms=40 vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 lengthmod 2 - wave ustop/t_sr%10 + wave ustop/t_unasp2%40 endphoneme + phoneme th vls alv stop vowelin f1=0 f2=1700 -300 300 f3=-100 80 @@ -231,6 +232,13 @@ phoneme N //should be more different from n // after (i) nn/inn endphoneme +phoneme N- // syllabic N + vowel starttype N endtype N + length 250 + formants nn/nn2_ +endphoneme + + phoneme a vowel starttype (a) endtype (a) length 250 @@ -337,7 +345,7 @@ phoneme o vowel starttype (o) endtype (o) length 250 formants vdiph2/o_oo - before N vowel/o_mid + before N vnasal/oo_n2 endphoneme phoneme o- @@ -356,6 +364,7 @@ phoneme u //try more before N vowel starttype (u) endtype (u) length 250 formants vowel/u_bck + before N vnasal/u_n endphoneme phoneme uA @@ -423,4 +432,10 @@ phoneme y@ vowel starttype (i) endtype (@) length 250 formants vdiph2/y@ +endphoneme + +phoneme yi + vowel starttype (i) endtype (i) + length 250 + formants vdiph/yi endphoneme \ No newline at end of file diff --git a/phsource/phonemes b/phsource/phonemes index 0555f27b..c06a3d43 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -605,9 +605,9 @@ phoneme ** // TEST flap vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15 vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20 formants r3/@tap - vowelin f1=3 f2=1600 -300 300 f3=-300 80 - before (i) r3/@tap_i+r3/rx - before (e) r3/@tap_i+r3/rx +// vowelin f1=3 f2=1600 -300 300 f3=-300 80 +// before (i) r3/@tap_i+r3/rx +// before (e) r3/@tap_i+r3/rx endphoneme @@ -855,8 +855,8 @@ endphoneme phoneme J^ // palatal fricative (Kirshenbaum C) vcd pal frc palatal - vowelin f1=2 f2=2700 400 600 f3=200 70 - vowelout f1=2 f2=2700 400 600 f3=200 70 len=100 + vowelin f1=1 f2=2700 400 600 f3=200 70 + vowelout f1=1 f2=2700 400 600 f3=200 70 len=100 lengthmod 6 formants voc/j+ufric/ch%25 endphoneme @@ -1233,6 +1233,9 @@ include ph_latin phonemetable es base2 include ph_spanish +phonemetable es_la es +include ph_spanish_la + phonemetable pt base2 include ph_pt_brazil diff --git a/phsource/ustop/t_unasp2.wav b/phsource/ustop/t_unasp2.wav new file mode 100644 index 0000000000000000000000000000000000000000..1b4d46824ac4cad6d97b4c86a0c10618a022d023 GIT binary patch literal 572 zcmWNNO-Phc7)GD>-cK#eoXH3(0+VV{R6-G!7);KLsSy2Xq*7XGP?=3wnI_r72_r+Y zA1Uc?_lYEFy2yo!MNmmWhzn^k3uzOH#xOW@@B22K?O7bo(c)lmw*pT1$^&)vjoBUm zlq9Dd@b?1>9-OObtnnnBAF>O_Wm?)KDsN>g_B3EFrFv%d#Iq{Nf2@QwH`*F#^~O zpZW&}O=RgFmMES`TN>v|IjrAfN=B&?YiL}~@Ef%9Yttzg`MQkhZuLpuQdQKUN@R=4 zvzu%KxA0A_pcyQ3x;jXwpe4Xj{7F{U`KZ0*kz9EISB)w{5nfPMyx(*u+UzuakqjE67JP8>)I5(-fq9Nx=ZdVP3=`md zSue*BwxzmSs%@IAqY0|eh3K_QYS1p25q_*^QzQ0?Dby~|UD M+ijI~Ib>n}1Mgx5IRF3v literal 0 HcmV?d00001 diff --git a/phsource/vdiph/yi b/phsource/vdiph/yi index e3abc3e1791343dd17e77680098fd6f5668821db..a10d579344fc20d14aec56ef0ae4727e0f297a8a 100644 GIT binary patch delta 477 zcmZn)ZVKiL4sdl233d%+VqjpX%-qPw#G*KlX&#d{qb-93BZF`TqYTqoHUowoY(IEp zm}Hn#IR7ySY&K*$&&N1zGNZ6PqrhfI;bvwa=OeRdP%_XE28LFKhph8~W~eiIF-SA& z2;~9I*u|E?puzs1M;mBH3|A6U0_S$_2aFFGFYu%={N+*P0kPfr+8L_&lDR-^1_oV@ zBa%$an{~u(*uy&*3R#x`O*CdqVo+l=m vctMWf<9@<;hs%r)nl$Wndph2+n4H#P^OJ<|_|r9_Gz9YHrK`$5nd` delta 404 zcmYk2O)ErU6vzMPT<+Yt^UO0bdF>`N4MIawXe7x?vcRBGQ_5J(Lb9;2kZESYLP?`c zXtL6*M0X?K0rL^Ava<1#g;Mg|v9UOH&eJ)+=XXvfmWj#O?D*J1YzP)V%8@PCx^Nx6p&xnsKTK)3PM@XB^qUDPvk zjwz$SFVsh?NYa2zsg7%X7kMKsgl6%#_kj*f1l-9Jv536?woI&*NnFZJctZOH DX+~uT diff --git a/phsource/vnasal/vowelchart.png b/phsource/vnasal/vowelchart.png index 6a197de0f310e4281163a6e11189d9c56c9cacec..a951d563eeb482e2e885f0c5d8a67dccef663ad6 100644 GIT binary patch literal 24646 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 diff --git a/phsource/voc/j b/phsource/voc/j index fb7ed39ce06285ecca9f00170cfa69256fcf8ef9..6879298561e8cdbcc31648740cae7f0cd272a94a 100644 GIT binary patch delta 302 zcmZ3dyH=MsIKb68B-k~Ok%56BYa`ze=E;5B9Ci%MD;bLzBN?wTs53I~2{Cms{oqh% zG~r-ivu9FcddYQ^F@&3egBi$P$$OvS2pt-xEaN~m*8f^34Ue(n<2nK4KqTRCu{H%0g3OaiL delta 307 zcmZ3hyH1xcIKb68B-k~OiGhJ3%V;C-4`w%SAd`V%5`zTOO2#6_NXBan>Wm#+GE7sL zesHKW{^4L?vu9FcddYQ^@eDTuJ2Q~IlJ`EtDP9IP8Kwv(J|RA)8i87t&E70+%ytkn zzB9aLgqd*!$qY^In{YFVc`w1uh!gzG05*f4gBoUpFi%$JH-fr_kx`8a=9c#ym*M{D b<>F<6`R5QX44JKUV7E-?7h?wiH%LSZ diff --git a/phsource/voc/v2 b/phsource/voc/v2 new file mode 100644 index 0000000000000000000000000000000000000000..37b386fc87473ed030e65415886b57f42b2156a3 GIT binary patch literal 5806 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 delta 28 jcmdm>yFphtIKb68B-k~Og@J(~Q#sz8jUj%c@LVwfaF+)- diff --git a/src/intonation.cpp b/src/intonation.cpp index c8525b9b..e684bd3d 100755 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -779,7 +779,7 @@ void Translator::CalcPitches_Tone(int clause_tone) prev_tph = phoneme_tab[phonPAUSE]; // forget across word boundaries } - if(p->type == phVOWEL) + if(p->synthflags & SFLAG_SYLLABLE) { tone_ph = p->tone_ph; tph = phoneme_tab[tone_ph]; @@ -855,7 +855,7 @@ void Translator::CalcPitches_Tone(int clause_tone) p = &phoneme_list[0]; for(ix=0; ixtype == phVOWEL) + if(p->synthflags & SFLAG_SYLLABLE) { tone_ph = p->tone_ph; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 183ef505..6ccb523d 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.31.09 11.Feb.08"; +const char *version_string = "1.31.10 12.Feb.08"; const int version_phdata = 0x013105; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index f6d264b8..954e6474 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -225,7 +225,7 @@ Translator *SelectTranslator(const char *name) case L('e','s'): // Spanish { static const short stress_lengths_es[8] = {170, 200, 180, 180, 0, 0, 220, 250}; - static const unsigned char stress_amps_es[8] = {16,12, 18,18, 20,22, 22,22 }; // 'diminished' is used to mark a quieter, final unstressed syllable + static const unsigned char stress_amps_es[8] = {16,12, 18,18, 20,20, 20,20 }; // 'diminished' is used to mark a quieter, final unstressed syllable tr = new Translator(); SetupTranslator(tr,stress_lengths_es,stress_amps_es); diff --git a/src/translate.cpp b/src/translate.cpp index 578c6719..c6f366db 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1491,8 +1491,9 @@ int Translator::TranslateWord2(char *word, WORD_TAB *wtab, int pre_pause, int ne if(ph_code == phonSYLLABIC) { // mark the previous phoneme as a syllabic consonant - ph_list2[n_ph_list2-1].synthflags |= SFLAG_SYLLABLE; - ph_list2[n_ph_list2-1].stress = next_stress; + prev_vowel = n_ph_list2-1; + ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE; + ph_list2[prev_vowel].stress = next_stress; } else if(ph_code == phonLENGTHEN)