diff --git a/dictsource/af_list b/dictsource/af_list index a47020ec..64666d12 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -312,6 +312,7 @@ schoeman skuman scholtz skO:lts schoor sko@r schutte skWt@ +sebastian s@bastian servaas s@rfA:s shakespeare _^_EN stephan ste@fan @@ -732,7 +733,8 @@ primaat $2 primate $2 rebelleer r@b@le@r -retireer r@t@re@:r +rededele re@d@de@l@ +renaissance rEn@s'A~ns retoriek r@tur'ik rimpeling rImp@l@N rinkink $2 @@ -740,15 +742,18 @@ rooipers roIp&:rs roterende rut'e@r@nd@ rukkerig rWk@r@x2 +salami sal'A:mi salute sal'yt@ samelewing sA:m@l,e@v@N sanhedrin sanh'e@dr@n sedertdien $3 sektore $2 sinagoge s@n@x2o@x2@ +senatore s@nat'o@r@ singenot sInx2@nOt skares skA:r@s skepsele skEps@l@ +skuldelas skWld@las s'n s@n $u spaghetti sp%agEt%i sobere s'o@b@r@ @@ -759,7 +764,6 @@ sogenaamde s'o@x2@n,A:md@ sononder sOn_On@r sonop sOn_Op sover so@f&r -spesmaas $2 stabiel stab'il staccato $2 diff --git a/dictsource/af_rules b/dictsource/af_rules index 25dbbfe6..4c408140 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -213,7 +213,7 @@ _) as (ke %as // move default stress: askeet/askete/asketies/askese a (spersie %a // move default stress: aspersie and compounds assist %as@st // assistent/e/assisteer - assiste (_ %as'Ist@ // rassiste stress and last e sound + r) assis (K %asIs // rassis/-te/-ties/-me atel (jee %at@L // fix vowel sounds and stress: ateljee and compounds C) athe (rina %at@ // Catherina/Katherina at (lant %at // move default stress: Atlanties/-e/Atlantis @@ -462,6 +462,7 @@ bek (m b&k // fix e sound: geelbekmalmot/langbekmaande/skeerbekmuis bekk (+ b&k // exception to be (C%+ bE bek (_ b&k // exception to be (C%+ bE + bek (h b&k // e sound: compounds of bek fld. by h: haasbekhond/skewebekhuisies beken b@kEn // 2nd e sound: oorbekend/welbekende @) beker (_ be@k@r // compounds ending with -beker r) be (lK b&l // fix e sound: deurbel/oorbel @@ -529,7 +530,7 @@ @) cel (_ _^_EN // words ending in cel is English @) cle (_ _^_EN // words ending in cle is English cliché kl%iSe@ // cliché/-s - chirurg S@r'Wrx2 + chirurg S@rWrx2 chirurg (ie_N S@r%Wrx2 // stress to end: chirurgie _) ci (prA si // fix i sound: Ciprus/Ciprioties/-e coke k@Uk // coke/cokebottel/cokeblikkie and similar @@ -697,12 +698,18 @@ naald) e (C @ // fix e sound: naaldekoker/-kussing/-werk, etc. noord) e (C @ // fix e sound: noordewind and compounds olw) e (C @ // fix e sound: golweslag/wolwedans + ros) e (CA @ // fix e sound: rosegeur/roseweg + speld) e (C @ // fix e sound: speldekop/-kussing/-punt, etc. + spok) e (C @ // fix e sound: compounds beginning with spoke: spokebeeld/-lywe/-dans blak) e (r @ // fix e sound: blakerend/-e/blakering 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 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 _) e (rosie %e@ // move default stress: erosie and compounds Cien) e (rC@ @ // fix e sound: opsienersamp/tienerstatus and many similar compounds @) erts (_ _&rts // fix e sound of many compounds ending in erts @@ -729,6 +736,7 @@ @mp) e (lC@ @ // fix e sound: dompeldoop/-koker/-verwarmer/drumpeltrapper/pampelmoes/rimpelpapier... @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 (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... @@ -813,7 +821,7 @@ ks) eer 'e@r // annekseer/indekseer/lakseer/takseer and their compounds ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc. Cv) eer e@r // stress: (hoender/volstruisveer/dryfveer - ouv) eer e@r // restore default stress: pouveer/makouveer + AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer u) eer 'e@r // aktueer/konstrueer/salueer, etc. effek %e@fEk // move default stress and fix e sound: effek/-te/-tief @@ -963,6 +971,7 @@ e (r & Ank) e (r@ @ // ankerpaal/kankerlyer/donkerbril rp) e (rCC @ // fix e sound: ontwerpersbaadjie/purperkleurig, etc. + _rasp) e (rC@ @ // fix e sound in rasper- compounds: raspertong/-vyl, etc. lew) e (ns @ &d) e (r@ @ // not initial or final syllable @@ -974,7 +983,6 @@ essen (si %isEn // fix e sounds: essensie/essensieel/essensiële komp) e (t@ @ // kompetisie/s/uitklopkompetisie/inkompetensie een (drag@ %e@n // eendrag has stress on 1st slb, but eendragtig and similar on 2nd - eenge 'e@nx2@ een (malig %e@n // move default stress: eenmalig/-e/-heid een (parig %e@n // move default stress: eenparig/-e/-heid _) een (stemm %e@n // move default stress: eenstemmig/-e/-heid @@ -1010,7 +1018,7 @@ _) este (t %Este@ // fix stress and vowel sounds: esteties/-e/estetika hip) e (r @ _) er (b &r' // erbarm/ing - _) er (k &r' // erkenbaar/erkenning + erke (n %&rkE // fix stress and e sounds: erken/-ning/(self)erkende _) er (v &r' // ervaar/ervare/ervarings/ervaringe &) ere (_ @r@ @l) ere (_ e@r@ // fix e sound: staanlere/toonlere @@ -1030,6 +1038,7 @@ @) enswaar (dig @nsv'A:r // noemenswaardige/bejammerenswaardig @C) ent (K 'Ent // orent/student/presidentsrede 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 @@ -1204,6 +1213,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 (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 grama (doe x2r%am%a // move default stress: gramadoela/-s and compounds @@ -1326,7 +1336,6 @@ hart (stogte_ h%art // move default stress: hartstogtelik hart (stogte_N hart // restore default stress: hartstogte he (bre h%i // fix stress and 1st e sound: Hebreër/-s - heen (gaan he@n // split -n/g-: heengaan/-refrein heeren (grac he@r@n // fix eng sounds: Heerengracht/-straat heerser he@rs@r // fix e sound in compounds: heersers(drang/geslag/klas/mag/ras/volk) heet (hoofdi h%e@t // move default stress: heethoofdig/-e/-heid @@ -1406,6 +1415,7 @@ h) i (dro i //hidro in compounds _) i (ko %i // move default stress: ikoon/ikone _) in (aCemP2 'In_ //inasem/inademing, etc. + self) in (C@ _@n // selfingenome/-nheid/selfinkeer, etc. _) in (a@P2 In // inakkuraat/inaktief/inaktiwiteit _) iese (C ,is@ // iesegrimmig and derivitives ieterma (g %it@rm%a // fix stress and a sound: ietermagô @@ -1652,7 +1662,6 @@ klein (sieli kl%eIn // move default stress: kleinsielig/-e/-heid _) kamele kam'e@l@ // kamele teenoor skamele karakter kar'akt@r - _er) ken kEn // E sound in erkEn ken (merken k%En @) keurig k'Y@r@x2 // kieskeurig/noukeurig/(on)willekeurig and derivitives _) ki (ta k%i // move default stress: kitaar and compounds @@ -1665,6 +1674,8 @@ klou (sule kl%@U // move default stress: klousule/-s kklere =kl'e@r@ knip (A knIp? // knipogie/geknipoog/ + _) krag (A kr''ax2_ // kragaanleg/-eenheid/-installasie/-onderbreking/-opwekker + kra (gie krA: // but: kragie/-s kre (diet kr@ // move default stress: krediet/-kaart/-balans, etc. kre (dit kr%E // fix e sound: krediteer/akkreditasie kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds @@ -1703,7 +1714,7 @@ kabeljou kab@lj'@U //kabeljou and compounds kabinet k%ab%inEt // kabinet/drankkabinet/kabinetsvergadering - ka (d@ k%a // stress and 1st a: kadawer-/kadet-/kado/kadot(jie)/kadriel,etc. + _) ka (d@ k%a // stress and 1st a: kadawer-/kadet-/kado/kadot(jie)/kadriel,etc. ka (der kA: // restore stress on long a: kader/-s and compounds kad (mium kad // fix stress and d sound: kadmium and compounds kafe (te k%af@ // fix stress and vowel sounds: kafeteria and compounds @@ -1838,7 +1849,6 @@ konsertina k%Ons@rtin%a // fix stress and vowel sounds: konsertina/-musiek and similar konside (rA k%Ons@d@ // fix vowel sounds: konsiderasie/konsidereer konsist k%Ons@st // konsistorie and compounds/konsistensie - konso (nant k%Ons%u // fix stress and 2nd o sound: konsonant/-e and compounds konstabel k%OnstA:b@l // (hof/hoof/verkeers)konstabel/-s, etc. konsul (A k%Ons%Wl // konsulaat/konsulate/konsulêr kon (sul kOn // restore default stress: konsul and compounds @@ -2115,6 +2125,7 @@ ment m'Ent mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds mentjie m'EiNci // monumentjie/dokumentjies + me (riete m@ // move default stress: meriete and compounds merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc. me (rrie mE // fix e sound: merrie/-s/perdemerrie and similar compounds AAs) mes (_ mEs // fix last e sound in compounds like kombuismes @@ -2142,11 +2153,13 @@ n (q N n (x N ng N + ee) n (g n // split -ng-: beengewas/druipsteengrot/gemeengoed/leengeld/steengroewe/teengif... ei) n (g n // breingrootte/kleingeld/kleingoed eu) n (g n // dreungeluid/kreungeluid/steungeluid/steungewend oo) n (g n // hoongelag/loongeld/telefoongesprek/woongeriewe and similar Cui) n (g n // basuingeskal/bruingebrand/bruingeel/tuingereedskap/tuingewas/tuingrond y) n (g n // fyngoud/hooflyngesprek/langtermyngroei/kaplyngrens + ë) n (g n // split -ng-: reëngeluid/-geur/-gogga/-gordel/seëngebed &) n (gat n // split "ng": mangat/-e/woongat/-e/opwengat/-e ng (eer Nx2 // diftongeer/gedistingeerde/rangeer and compounds n (_g N @@ -2459,7 +2472,7 @@ on (tugtig %On // fix stress and avoid ont prefix: ontugtig/-e/-heid on (tug On // stress on 1st slb and avoid ont prefix: ontug/-pleger... on (twyfel %On // "ont" not prefix: ontwyfelbaar/-bare/-baarheid - on (tyd %On // ontydig and derivitives + _) on (tyd %On // ontydig and derivitives _) onuit (@P5 On_Yyt // fix stress: onuitblusbaar/onuithou(d)baar/onuitputlik/onuitroeibaar/onuitspreekbaar _) on (uitge@++P2 On_ // fix stress: onuitgedoof/onuitgegee/onuitgekeer/onuitgeloot/onuitgemaak... _) on (wAs 'On // onwis/onwys @@ -2604,10 +2617,11 @@ paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds pa (tat p@ // patat/warmpatat/wurgpatat - patie (K p%at'i //words ending in patie has stress at end + a sound/simpatiek + patie (KN p%at'i //words ending in patie has stress at end + a sound/simpatiek + @) paties p'A:tis // fix stress and a sound: simpaties/-e para (C ,para //paralel, paragraaf etc. parade (K p@rA:d@ // parade and compounds - par (C@ p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig + _) par (C@ p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig pars (C pars // restore default stress: parsbalie/-kuip/-tyd, etc. _) pas (AA pas // pasaangeër/pasoortreding pas (op p%as // pasop/pasoppens @@ -2744,12 +2758,13 @@ proto (C pro@tu // protokol/prototipe provi (and pr%o@v%i // fix stress and v sound: proviand/-meester, etc. ps (igA s // psigologie/kinderpsigoloog - psalm p@sal@m // schwa between p and s + _) psalm p@sal@m // schwa between p and s psalmis p@s%al@mIs // move default stress: psalmis/-te pub (li p%Wb puntener p%Wnt@ne@r // stress and 2nd e sound: puntenerig and derivitives pu (pil p%y // move default stress: pupil/-le and compounds + puri (tein p%yr@ // fix stress and i sound: puritein/-e/-se .group q @@ -2774,19 +2789,26 @@ radio r'A:di;u:- raffinade (r r%af%in%ad@ // fix stress and 2nd a sound: raffinadery/-e and compounds rake (t rak'E // raket/te/tennisraket + ram (pokker r%am // move default stress: rampokker/-s/-ig ramp (salig r%amp // move default stress ramp (spoed@ r%amp // move default stress: rampspoedig and derivitives + _) rand (A@ rant_ // fix d sound and insert pause: randafwerking/-akker/-eier ra (nonkel r@ // fix stress and a sound: ranonkel/-s/ranonkelrooi, etc. ra (ntsoen r%a // move default stress: rantsoen and compounds + ra (pier r%a // move default stress: rapier/-e and compounds _) ra (pport r%a // fix stress: rapport/skoolrapport/rapportryer rasse ras@ // e sound of compounds starting with rasse ribbe (tj r'Ibi + riete rit@ // fix e sound: merietelys/rietedak, etc. rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der _) ri (o r%i // move default stress: riool and compounds/riolering + ris (kant r@s // move default stress: riskant/-e ritme rItm@ // fix e sound in ritmes/ritmespeler ritu (A r@t%y // ritueel/rituele/ritualisties + roersel rurs@l // fix stress and e sound: roersele and compounds of roersel _) rol (A rOl? // oprolaksie/roloorvleueling roetine r%utin@ // stress: roetine/-basis/-besoek/-kontrole... + ro (ja r%u // fix stress and o sound: rojaal/rojale _) roode r'o@d@ //roodepoort and other names roman r%uman @@ -2801,7 +2823,7 @@ ron (dawel r%On // move default stress: rondawel/-s/-tjie rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry rondom rOnt_%Om // rondom/rondomheen/rondomstaner - rolprent rOlprEnt // rolprent/rolprentvertoning and other compounds + rondom (tali r%Ont%Om // fix stress and d sound: rondomtalie/-s/rondomtaliemeul, etc. roulette r%ulEt // fix stress and vowel sounds: roulette/-speler/-tafel ru (briek r%W // move default stress: rubriek/-skrywer, etc. rugby rWgbi @@ -2818,17 +2840,21 @@ _) rede (C re@d@ // redevoerder/redekawel and similar redeneer r@d@n'e@r // redeneer/geredeneer/beredeneer/beredeneerde reden (ACA r@d@n' // redenasie/s + rede (ry r%e@d@ // move default stress: redery/-e and compounds _) redi (gA r%Ed%i // redigeer/geredigeer/-de/ongeredigeerde refor (m r@f%Or // gereformeerde/reformering/reformasie re (frein r@ // move default stress: refrein/-e C) re (gat r@ // fix e sound: fregat/-te and compounds/harregat regime (_ r@Zi:m // regime/-s and compounds + regi (ment r@x2@ // fix stress and e and i sounds: regement/-e and compounds reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister + regle (ment r@x2l@ // fix stress and e sounds: reglement/-e and compounds regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list reklame r@klA:m@ // fix stress and e sounds: reklame and many compounds re (kru r@ // move stress from 1st slb _) re (la r@ // relaas/relase/relasie and compounds rele (van r@l@ // relevansie/relevant and derivitives + reli (gi r@l@ // fix stress and e sound: religie/-ë/religieus rem (_ rEm // handrem/kabeltrem/kragrem/noodrem/skyfrem/stadstrem/veiligheidsrem C) re (n_ rE //tydren, fietsren etc. re (nA r@ // move stress from 1st slb.: renoster @@ -2849,8 +2875,10 @@ relase r@lA:s@ // relase/s rele (gA r@l@ // relegeer/relegasie repet rEp@t - republiek r@pWbl'ik // republiek/e/ie/sowjetrepubliek + republiek r@p%Wblik // republiek/e/ie + republi (k r@p%Wbl%i // move default stress: republikein/-e/-se &) rering (_ re@r@N //strukturering, demonstrering etc. + reso (lusie r%Es%O // fix stress and vowel sounds: resolusie/-s and compounds resul (tA r@sWl' // resultaat/resultate/eksamenresultaat... resep r@sEp // resep/resepte/resepteboek reserwe r@z'&rv@ @@ -2870,7 +2898,9 @@ respek (teer r@sp%Ek // stress to end &) rele (_ r'e@l@ &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 .group s @@ -2894,11 +2924,16 @@ s (japie s // dorpsjapie/plaasjapie/stadsjapie @) sj (aar sj // diensjaar/lewensjaar/begrotingsjaar @) sj (aCA sj // apartheidsjare/oesjare/beroepsjaloesie + @) s (joern s // split -sj-: fabrieks-/reis-/skeepsjournaal, etc. 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 siklu (s siklW // siklus and many compounds silhoe (A s@l%uw // silhoeët/-te/-teer sili (nd s@lI // silinder(s)/silinderkoppe + si (napK s@ // fix stress and i sound: sinaps/-esinapties + _) si (noC s@ // fix stress and i sound: sinode and compounds/sinops/sinop;ties + sin (takC s@n // move default stress: sintaksis/sintakties sinteties s@nte@tis // sinteties/e/fotosinteties/-e si (viel s@ // move default stress and fix i sound: siviel/-e s (iën S @@ -2912,18 +2947,23 @@ _) 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 + 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 _) sam (b s%am // move default stress: sambok/-kke/sambreel/sambrele and compounds _) same (@P4 s'A:m@ // samekoms/sameswering _) same (hA@ s%A:m@ // stress: (on)samehangend/samehorig/-e/-heid, but samehang samel (C sA:m@l // versamelde: see rule:_) same (@P4 s'A:m@ samen (+ sA:m@n // gesamentlik/-e _) san (da s%an // move default stress: sandaal/-tjies/sandale + sara (se s%ar%a // move default stress: saraseen and compounds/sarasene _) sar (d s%ar // sardien/-blikkie/sardinies/sardyne 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 _) 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 sei (soen s%eI // move default stress: seisoen and compounds seker se@k@r // versekering/sekerheid/onsekerheid/sekere se (ko s@ // sekond/sekonde/sekondes/sekondant @@ -2931,13 +2971,16 @@ _) se (kre s@ // fix e sound: (ge)(kon)sekreer/sekreet/sekresie se (ku s@ // sekuriteit/sekuur seku (l s%Ek%y // sekulër/sekulariseer + sekwe (strA s%Ekw@ // fix e sounds: sekwestrasie/sekwestreer and compounds sela (kant s%e@l@ // fix stress and vowel sounds: selakant/-e + selder (y s%&ld@r // move default stress: seldery and compounds &) sele (_ s'e@l@ no) sele (_ s@l@ // e sounds in onnosele self (stan s%&lf // move default stress: selfstandig/-e/-heid seli (ba s%El%i // move default stress and fix e sound: selibaat/selibate @) sellig s'&l@x2 // move default stress: een-/twee-/...-/meer-/veelsellig/-e se (llin s%&' // stress on 'in: (met)gesellin/-ne/-netjie, etc. + sello (fa s%&l@ // fix stress and vowel sounds: sellofaan and compounds _) selon (sC s@lo~n // fix stress and e, nasalise o: selonspampoen/-roos/-rose, etc. @) sel (wig s'&l // stress: (ver)eenselwig and derivitives polisie) se (lK s& // fix e sound: polisiesel/-le @@ -2946,11 +2989,13 @@ semi (na s%Em%i // seminaar/seminare/seminarium sening se@n@N // sening/haaksening/heupsening + _) se (ni@ s@ // fix stress and e sound: seniel/-e/seniliteit _) senior s''i:ni@r // default stress; fix vowl sounds: senior and compounds starting with senior senior (itei s%i:n%i%Or // fix vowel sounds: senioriteit _) sen (tra@ s%En // exception to default stress rule: sentraal/sentrale _) ser (e@ s@r // fix stress and 1st e sound: sereen/serene sere (moni s%Er@ // seremonie/-meester/huwelikseremonie/seremonieel + _) se (ring s@ // fix stress and e sound: sering/-boom/-bloeisels, etc. ser (sant s@r // move default stress: sersant and compounds ser (vet s@r // servet and compounds, e.g. servetring ses (uur sEs_ // fix e sound and insert short break: sesuur/-nuus, etc. @@ -2964,49 +3009,61 @@ simp (to s@m // move default stress and drop p: simptoom/simptome/simptomaties si (nnig s'I // sinnig in compounds has stress: dubbelsinnig/geheimsinnig/kranksinnig siniste (r s@nIst@ // sinister/sinistere/sinisters - sipre (K siprE // fix stress and i sound: sipres/-se/bergsipres/sipresboom + sipre (K s%iprE // fix stress and i sound: sipres/-se/bergsipres/sipresboom sirene s@re@n@ // move default stress and fix vowel sounds: sirene/-s/-lied/-sang + si (troen s@ // move default stress: sitroen and compounds skade skA:d@ // elik suffix rule breaks a sound of (on)skadelik skadu skA:dy // skaduagtig/skadutjie skaker (ing sk%ake@r // skakering/-s/kleurskakering skan (da sk%an // move default stress: skandaal/skandale/skandalig and compounds _) skar (C sk%ar // move default stress: skarlaken/skarminkel/skarnier and many compounds skarrel skar@l // restore default stress: (ge)skarrel/-ing + ska (vot sk%a // fix stress and a sound: skavot and compounds _) ske (let sk@ // fix stress and 1st e sound: skelet and compounds skemer ske@m@r // fix 2nd e in many compounds and derivitives of skemer- sker (muts sk%&r // move default stress: (ge)skermutsel/skermutseling/-e skerpi (oen sk%&rp%i // move default stress: skerpioen/-e and compounds skilder (y sk@ld@r // move stress to y: skildery and compounds like skilderymuseum + skisofr (e sk%is%ufr // fix stress and o sound: skisofreen/skisofrene sko (lier sk%o@ // move default stress: skolier/-e skoppel (maa sk%Op@l // move default stress: skoppelmaai/-e/-er/-s + skuld (erken skWlt_ // fix d sound: skulderkenning/-s/-erkentenis skyn (hei sk%eIn // move default stress: skynheilig/-e/-heid _) slag sl'ax2 sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds + slop (emmer slOp_ // fix o sound and insert pause: slopemmer/-s @) sering s'e@r@N // analisering/kategorisering @) ses (_ s@s // fix 2 slb. words ending in ses + sma (rag sm%a // fix stress and a sound: smarag/-te snel (_ sn&l // fix e: aansnel/agternasnel/blitssnel/heengesnel/koppesnel/nasnel/verbysnel sodom (iet s,o@dOm // fix stress - so (ffleu s%u // move default stress and fix o sound: suffleur/soffleuse + soewe (nier s%uv@ // move default stress: soewenier/-e/-s _) soie so@?i // soiets/soiemand _) sol (da s%Ol // move default stress: soldaat/soldate and compounds sol (dy s%Ol // fix stress: soldy and compounds so (lie s%O // stress and o sound: solied/-e so (lid s%O // konsolidasie/solidariteit + sonant sun'ant // fix stress and o sound: sonant/dissonant/konsonant so (natA s%u // move default stress and fix o sound: sonate/-s and compounds sonne (t s%unE // fix stress and vowel sounds: sonnet/-te/sonnetvorm so (nnetjie++ sO // but: sonnetjie/wintersonnetjie so (pra s%u // move default stress and fix o sound: sopraan/soprane + sou (ffleu s%u // move default stress and fix o sound: suffleur/soffleuse span (dab sp%an // move default stress: spandabel/-rig, etc. span (jAA sp%an // move default stress: Spanjaard/-e/Spanjool span (spek sp%an // move default stress: spanspek/-ke/-kie and compounds + _) spar (ta@ sp%ar // move default stress: spartaan/-s/spartane spartel spart@l // fix stress and e sound: spartel/-end/-ing + _) spat (a spat_ // fix stress, a sound and insert pause: spataar/spatare spek (takel sp%Ek // move default stress: spektakel/-s spelagtig sp&l'ax2t@x2 // skouspelagtig/e/heid/klugspelagtig e) spel (_ sp&l //klokkespel/snarespel/driespel/hokkiespel/puntespel/putjiespel C) spel (_ sp&l // many compounds ending in spel after consonant &) spele (_ sp'e@l@ spese (ry sp@s@ // spesery and compounds and derivitives + _) spes (ma sp%Es // move default stress: spesmaas/spesmase _) spi (ra sp%i // move default stress: spiraal and compounds/spirale/spirakel/spirant, etc. + spits (von sp@ts // move default stress: spitsvondig/-e/-heid spoed (@ sput // spoedaflewering/spoedeisend/spoedorder spoed (ig spud // spoedig/-lik/-er/-ste _) spon (ta sp%On // move default stress: spontaan/spontane @@ -3014,7 +3071,7 @@ sproke spro@k@ // see rule: pro (CA pr%u : aangesprokene/onbesproke, etc. self (_ s'&lf // myself/vanself // self s'&lf - sewe (C s'e@v@ // sewejarige/standerdseweklas + K) sewe (C s'e@v@ // sewejarige/standerdseweklas september s@pt'Emb@r @) sief (_ s'if // massief/aggressief/passief/intensief @) siewe (_ s'iv@ // massiewe/aggressiewe/passiewe/intensiewe @@ -3024,11 +3081,13 @@ _) sim (bA s@m // move default stress: simbool/simbole/simbolies/-e/simbaal/simbale simbo (liek s@mb%u // fix stress and vowel sounds: simboliek and compounds simme (trie s@me@ // fix stress and e sound: simmetries/-e + simme (trie_N s@m@ // but stress to end: simmetrie simpo (siA s@mpo@ // fix stress and o sound: simposium/simposia and compounds // sioe Si'u - si (o Si // fisiologie/-logiese/-loog - sio (ne Siu' // emosioneel/emosionele/rasioneel/rasionele, etc. + @) si (o Si // fisiologie/-logiese/-loog + @) sio (ne Siu' // emosioneel/emosionele/rasioneel/rasionele, etc. @) sipale sip'A:l@ // move default stress: munisipale/partisipale + si (pier s@ // fix stress and i sound: sipier and compounds sist (e s@st // fix stress and vowel sounds: sisteem/sisteme siste (mat s@st@ // fix e sounds: sistematies/-e situasie sItSu'A:si @@ -3051,13 +3110,14 @@ spesialis (A spESialis spesialis spESal'Is spesi (f sp%Es%I // spesifiek/spesifiseer - @) spre (ken spr'e@ // stress: vanselfsprekend + @@) 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 dwerg) ste (r st& // fix e sound: dwergster/-re 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 _) 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. @@ -3091,6 +3151,7 @@ ste (land st@ // fix e sound: vasteland and several compounds @) stel (iC st@l // eersteling/gunsteling/wellusteling/worsteling/eerstelig and compounds @) ste (llen st'& // belangstellendes/gerusstellend/regstellende/teleurstellend + saam) ste (llen st& // restore default stress: saamstellend/-e teen) ste (llen st& // restore default stress: teenstellend @) stelik st@l@k // oostelik/christelik/beestelik ste (l st& @@ -3125,7 +3186,8 @@ stok (A stOk? // stokagtig/stokinsek/stokoud stok (e sto@k // stoker/-y storm stOr@-m - strategie strat@x2'i + strategie str%at@x2i // fix stress and vowel sounds: strategie and compounds + strategies str%ate@x2is // fix stress and vowel sounds: strategies/-e streke stre@k@ studen (t st%ydEn // fix stress: student/regstudent/studentesentrum, etc. stu (de st%y // fix stress and e sound: bestuderend/bestudering @@ -3136,7 +3198,7 @@ t (t t (_dN // final t, and next word starts with d A) tch _^_EN // clutch/pitch/bitch - tabak tab'ak; + tabak t%abak; ta (blet t%a // move default stress: tablet/-te and compounds tafe (re t%af@ // fix vowel sounds: tafereel/taferele and compounds @) talig t'A:l@x2 // Anderstalig/tweetalig @@ -3211,6 +3273,7 @@ &) treding tre@d@N // betreding/uittreding @) treer tr'e@r // this slb always takes stress; many words tref (afs trEf_ // fix e sound and insert short pause: trefafstand/-e + trens (_ tre~ns // fix e sound and nasalise: trens/-snytrens and similar tre (k tr& trekker tr&k@r // voortrekkerleier/Voortrekkerstraat/salaristrekkersvergadering @@ -3285,6 +3348,7 @@ terror (is t%Er%ur // terroris/-te/-isme/-istiese _) ter (s t%&r // tersake/terselfdertyd/tersluiks/terstond/tersyde tese (_ t'e@s@ //sintese, and others + teses (_ t'e@s@s // sinteses and similar tesi (s te@s@ // tesis/-se and compounds A) teur t'Y@r // outeur/ouditeur/operateur k) teur t'Y@r // akteur/inspekteur @@ -3393,7 +3457,7 @@ m) u (skiet %W //change stress for muskiet compounds n) uwe (C yv@ // nuwelinge/nuwemaan n) uw yv // nuwigheid/nuwighede - r) uwe (C yv@ // gruweldaad/-rolprent/-verhaal.../struweling + Cr) uwe (C yv@ // gruweldaad/-rolprent/-verhaal.../struweling .group v @@ -3404,7 +3468,7 @@ va (doek fa // stress on 1st slb.: vadoek/-e vagina vax2ina // fix v sound and shorten a sound: vagina/-s vagin (A@ v%ax2%in // move default stress: vaginale and similar - vakansie f@k'ansi + vakansie f@kansi va (ku v%a // fix stress and v sound: vakuum and compounds/vakume/evakueer vak (unie fak_ // restore default stress, insert short pause: vakunie and compounds va (llei f%a // fix stress and a sound: vallei/-e and compounds @@ -3447,8 +3511,8 @@ vergete f@rx2'e@t@ // vergeterig/vergetelheid _) vergewe f@rx2e@v@ // vergewe/vergewend/-e vering f'e@r@N //motivering preservering etc. - @C) vers (_ f&rs // teksvers/slotvers/kindervers and similar - @C) vers (e_ f&rs // plurals of words like the above + @) vers (_ f&rs // teksvers/slotvers/kindervers and similar + @) vers (e_ f&rs // plurals of words like the above 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 @@ -3464,7 +3528,7 @@ veronderste (l f@rOn@rst'& // stress: veronderstel/-ling _) verse (b f'&:rs@ C) verse (_ f&rs@ - A) verse (_ v'&rs@ + KA) verse (_ v'&rs@ vers (r f&rs // fix stress and e sound: versreël/-rym/-ritme _) veronge (@P7 f@r'O:Nx2@ verbete f@rb'e@t@ // verbete/verbetenheid diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 58712151..d3bca88d 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -118,7 +118,7 @@ y Y : ; b c d dZ f g h j k l L m n N n^ p r R s S t t2 -tS v w z Z z2 +tS v w z Z z2 z3 Dictionary hi_dict @@ -159,12 +159,12 @@ v w w2 z Dictionary nl_dict 8 @ @- A a: E e: EI -eU i I O o: u VU Wy -y Y: yU +eU i I O O: o: u VU +Wy y Y: yU * : ; b C d f g h j k l m n N n^ -p Q r s S s; t tS +p Q r s S S; t tS v v2 w x z @@ -216,7 +216,7 @@ u: * b d d; dZ f g h j k l l^ m n N n^ p r R R^ R^/ s S t -t; tS ts v w x z Z +t; tS ts v x z Z Dictionary sv_dict @@ -357,6 +357,15 @@ l m n N p R s S t tS v w x z Z +Dictionary th_dict + +a a: e E: i i: o O +O: u y + +c d h k l m n N +p s t + + Dictionary hbs_dict & @ @2 a A a: aI aU diff --git a/dictsource/fr_list b/dictsource/fr_list index a66959df..34f49eb8 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -1,4 +1,4 @@ - + // This file in UTF8 encoded // 2006-11-18 Gilles Casse @@ -75,12 +75,12 @@ _2 d'Y _3 tRw'a _4 k'atR _5 s'E~c -_6 s'is +_6 s'iz3 six siz2 _7 s'Et _8 'w^it _9 n'@f -_10 d'is +_10 d'iz3 dix diz2 _11 O~z _12 d'uz @@ -97,7 +97,7 @@ _22 v'E~td'Y _23 v'E~t:tRw'a _24 v'E~tk'atR _25 v'E~ts'E~c -_26 v'E~ts'is +_26 v'E~ts'iz3 _27 v'E~ts'Et _28 v'E~tw^it _29 v'E~tn'@f @@ -216,7 +216,7 @@ lorsque $u $brk puisque $u $brk quand $u $brk que $u $brk -qui $u $brk +qui $u $brk $verbf quoique $u $brk si $u $brk @@ -240,10 +240,9 @@ vous $u+ $verbf elles $u+ $verbf ils $u+ $verbf on $u $verbf - -me $u -te $u -se $u +me $u $verbf +te $u $verbf +se $u $verbf ce $u $nounf ces sEz2 $u $nounf @@ -258,11 +257,11 @@ tes tEz2 $u+ $nounf sa $u+ $nounf son $u+ $nounf ses sEz2 $u+ $nounf -notre $u+ -votre $u+ +notre $u+ $nounf +votre $u+ $nounf leur $u+ -nos $u+ -vos $u+ +nos $u+ $nounf +vos $u+ $nounf leurs $u+ // prepositions @@ -293,7 +292,7 @@ contre $u+ $brk durant $brk // negative -ne $u +ne $u $verbf // questions où $pause @@ -340,22 +339,27 @@ y i:gR'Ek $atend // pronunciation exceptions +divers div'Erz2 scient si bénéficient benefisi $verb président pRezid'A~ président pRezidt2 $verb résident Rezid'A~ résident Rezidt2 $verb -évident evid'A~ +récipient Resipj'A~ +►évident evid'A~ évident evidt2 $verb couvent k'uvt2 $verb concurrent kO~kyR'A~ récurrent RekyR'A~ ferment fErm'A~ ferment f'Ermt2 $verb +parent paR'A~ +parent p'art2 $verb sergent sErZ'A~ serment sErm'A~ serpent sErp'A~ +torrent tOR'A~ // MAIN WORD DICTIONARY @@ -385,6 +389,7 @@ boeufs bY bus bys choeur kWr discident disidA~ +dix diz3 echo Eko fils fis haillon _|ajO~ @@ -399,6 +404,8 @@ pays pEi prudent pRydA~ secret sYkRE secrets sYkREz2 +six siz3 + sens sA~s @@ -597,3 +604,4 @@ vincent vE~sA~ + diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 17b0c48e..87f45623 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -26,7 +26,7 @@ a (ill a a (ils_ a a (il_ a - aie (me E // paiement + aie (me E // paiement ai E // aile am (b A~ // jambon am (p A~ // camp @@ -55,29 +55,29 @@ c' s // s cch k // bacchanale cc (Y ks // accéder - cc k // occuper + cc k // occuper ar) ch (ét k // archétype architecte or) ch (esC k // orchestre or) ch (iC k // orchidée sy) ch (o k // psycho _) ch (or k // chorale ch (r k // chrétien - ch (l k - ch (n k - ch (s k - ch (to k + ch (l k + ch (n k + ch (s k + ch (to k ch S // chien ck k // nickel cqu k // grecque cq k // pecq - s) c (Y // - x) c (Y + s) c (Y // + x) c (Y c (Y s // cède ban) c (_ // banc blan) c (_ // blan cler) c (_ // leclerc - tchou) c (_ - taba) c (_ + tchou) c (_ + taba) c (_ se) c (ond g // seconde secondaire c k // recoin donc @@ -91,18 +91,18 @@ dd d // addition _) d' (P2 d _lan) d (_ d // land - Clan) d (_ d - _san) d (_ d - Csan) d (_ d + Clan) d (_ d + _san) d (_ d + Csan) d (_ d _tan) d (_ d // stand - Ctan) d (_ d + Ctan) d (_ d Can) d (_ t2 // grand ami, grand marchand - Cen) d (_ t2 - Con) d (_ t2 - quan) d (_ t2 - quen) d (_ t2 - quon) d (_ t2 + Cen) d (_ t2 + Con) d (_ t2 + quan) d (_ t2 + quen) d (_ t2 + quon) d (_ t2 dt (_ t // Schmidt r) d (_ // lourd placard @@ -120,7 +120,7 @@ ee i // meeting _cl) ef (_ e // clef ein (C E~ // peindre - ein (_ E~ + ein (_ E~ e (il E // vieille ei E // neige ell El // selle @@ -129,16 +129,16 @@ em (me a // femme patiemment em (b A~ // décembre em (m A~ // emmencher - em (p A~ + em (p A~ en (_ A~ // en en (hA A~n // enharmonique en (A A~n // enivrer en (_A A~n // en avion C) en (d_ A~ // comprend dépend - C) en (ds_ A~ - qu) en (d_ A~ - qu) en (ds_ A~ + C) en (ds_ A~ + qu) en (d_ A~ + qu) en (ds_ A~ pati) en A~ // patient patience _) en (nu A~ // ennui @@ -146,11 +146,11 @@ C) en (A @n // menu en (nA E // penne ennemi - Ci) en (nA E // mienne + Ci) en (nA E // mienne éC) en (t_ A~ // récent différent élément - _C) en (t_ A~ // cent vent lent dent + _C) en (t_ A~ // cent vent lent dent cc) en (t_ A~ // accent _jac) en (t_ A~ // sous-jacent @@ -164,26 +164,26 @@ al) en (t_ A~ // talent équivalent xcell) en (t_ A~ // excellent - mm) en (t_ A~ + mm) en (t_ A~ em) en (t_ A~ // vitement mom) en (t_ A~ // moment - Aaim) en (t_ A~ - Caim) en (t_ A~ - cum) en (t_ A~ - gum) en (t_ A~ - lum) en (t_ A~ + Aaim) en (t_ A~ + Caim) en (t_ A~ + cum) en (t_ A~ + gum) en (t_ A~ + lum) en (t_ A~ rum) en (t_ A~ // prudemment _cli) en (t_ A~ // client - _laur) en (t_ A~ - _mécont) en (t_ A~ - _cont) en (t_ A~ + _laur) en (t_ A~ + _mécont) en (t_ A~ + _cont) en (t_ A~ mpét) en (t_ A~ // compétent - prés) en (t_ A~ + prés) en (t_ A~ _souv) en (t_ A~ // souvent s_couv) en (t_ // elles couvent - qui_couv) en (t_ + qui_couv) en (t_ _couv) en (t_ A~ // le couvent en (t_ // étaient mangent @@ -194,75 +194,75 @@ _am) en (_ En // amen - AA) en (_ E~ + AA) en (_ E~ AC) en (_ E~ // examen CA) en (_ E~ // rien - CC) en (_ E~ + CC) en (_ E~ - en (s_ A~ - en (CA A~ // pentathlon - en (CC A~ // entre + en (s_ A~ + en (CA A~ // pentathlon + en (CC A~ // entre _C) er (_ ER // fer _Ch) er (_ ER // cher - _env) er (_ ER - _hi) er (_ ER // hier + _env) er (_ ER + _hi) er (_ ER // hier _hiv) er (_ ER // hiver - _trav) er (_ ER - _ti) er (_ ER + _trav) er (_ ER + _ti) er (_ ER th) er (_ WR // brother - th) er (s_ WR + th) er (s_ WR w) er (_ WR // power - w) er (s_ WR + w) er (s_ WR er (_ e // parler léger er (_A eR // parler léger - er (s_ e + er (s_ e - i) ert (_t2 e // requiert + i) ert (_t2 e // requiert d) e (ssous_ @ // dessous - d) e (ssus_ @ // dessus + d) e (ssus_ @ // dessus - _d) es (bA e - _d) es (jA e // Desjardins - _d) es (nA e + _d) es (bA e + _d) es (jA e // Desjardins + _d) es (nA e _d) es (qA e // desquels _l) es (qA e // lesquels _m) es (dA e // mesdames - _m) es (nA e - Am) es (dA e + _m) es (nA e + Am) es (dA e Am) es (nA e // Dumesnil d) esh (A ez // Deshormeaux _r) es (A @s // resaisir resaluer - _r) e (ss @ // ressembler - _r) e (stra @ - _r) e (stre @ - _r) e (stro @ + _r) e (ss @ // ressembler + _r) e (stra @ + _r) e (stre @ + _r) e (stro @ _r) e (stru @ // restructurer -) est (_ Est // -est - @Cr) es (_C =@ - rC) es (_C =@ // fortes dames + @Cr) es (_C =@ + rC) es (_C =@ // fortes dames ') eu (_ y // eu eu (r_ W // peur eu (rs_ W // tracteurs - eu (b @ // meuble - eu (f @ // neuf - eu (i @ - eu (l @ // fieul + eu (b @ // meuble + eu (f @ // neuf + eu (i @ + eu (l @ // fieul eu (n @ // jeune - eu (p @ - eu (r @ - eu (v @ + eu (p @ + eu (r @ + eu (v @ eu Y // meute tueuse jeu gueuze _) eû y // eût @@ -274,50 +274,50 @@ ey Ej // asseye ez (_ ez2 // nez mangez chez - _C) e (_ @ // je te - _CC) e (_ @ + _C) e (_ @ // je te + _CC) e (_ @ _qu) e (_ @ // que @Cr) e (_C =@ // quatre pattes - rC) e (_C =@ + rC) e (_C =@ e (_ // montre g) e (A // mangeons AC) e (ment // vitement sûrement - Aqu) e (ment - enC) e (ment - enqu) e (ment + Aqu) e (ment + enC) e (ment + enqu) e (ment - _d) e (ch @ - _d) e (Cl @ - _d) e (Cr @ // degré + _d) e (ch @ + _d) e (Cl @ + _d) e (Cr @ // degré _r) e (ch @ // recherche - _r) e (Cl @ - _r) e (Cr @ // retracer + _r) e (Cl @ + _r) e (Cr @ // retracer - _l) e (xA E - _l) e (CA @ - _l) e (ChA @ - _l) e (ClA @ // Leclerc - _l) e (CrA @ // Lebrun - tr) e (CA @ - tr) e (ChA @ - tr) e (ClA @ + _l) e (xA E + _l) e (CA @ + _l) e (ChA @ + _l) e (ClA @ // Leclerc + _l) e (CrA @ // Lebrun + tr) e (CA @ + tr) e (ChA @ + tr) e (ClA @ tr) e (CrA @ // entreprise e (CC E // infect pelle mettre - e (C_ E + e (C_ E ll) e (m // actuellement guillemets - As) e (gA - As) e (pA - Ass) e (gA + As) e (gA + As) e (pA + Ass) e (gA Ass) e (pA // passeport - Av) e (gA // sauvegarde - Av) e (pA + Av) e (gA // sauvegarde + Av) e (pA e @ // menue @@ -342,31 +342,31 @@ ai) gni n^ // craignions châtaignier gn n^ // agneau _quatre_vin) gts (_ z2 // quatre-vingts ans - _quatrevin) gts (_ z2 + _quatrevin) gts (_ z2 vin) gt (_A t // liaison: vingt ans - vin) gt (_un - vin) gt (_deux t + vin) gt (_un + vin) gt (_deux t vin) gt (_trois t //liaison: vingt-trois - vin) gt (_quatr t - vin) gt (_cinq t - vin) gt (_six t - vin) gt (_sept t - vin) gt (_huit t - vin) gt (_neuf t + vin) gt (_quatr t + vin) gt (_cinq t + vin) gt (_six t + vin) gt (_sept t + vin) gt (_huit t + vin) gt (_neuf t gt (_ // vingt doigts gt t // vingtaine doigté ai) gu (il gy // aiguillage in) gu (is gy // linguiste - g (C g + g (C g g (a g // langage - g (u g - g (â g - g (o g - g (û g + g (u g + g (â g + g (o g + g (û g _ran) g (_ // rang _san) g (_ // sang @@ -394,7 +394,7 @@ A) ill j // caillou ill ij // famille a) il (_ j // bail - e) il (_ j + e) il (_ j u) il (_ j // deuil imm imm // immaculé @@ -434,7 +434,7 @@ .group l _) l (_ El l l // lit - ll l // aller + ll l // aller _) l' (P2 l au) lt // hérault outi) l (_ // outil @@ -465,7 +465,7 @@ o (ch o // cochon oe (ll wa // moelleux - _) oe (C Y // oesophage + _) oe (C Y // oesophage o (eu // soeur oeuf o (eC o // coefficient _) oi (gnon O // oignons @@ -490,7 +490,7 @@ m) on (_A O~n // mon appui s) on (_A O~n t) on (_A O~n - + z) o (ne_ o // amazone c) o (ne_ o h) o (ne_ o @@ -526,7 +526,7 @@ o (mo o // momo o (no o // nono om) o o // monocorde - on) o o // + on) o o // o O // sobre notions émotions @@ -541,7 +541,7 @@ ph f // phrase m) ps (_ // temps champs - r) ps (_ // corps + r) ps (_ // corps cham) p (_ // contrechamp @@ -569,9 +569,10 @@ _) r (_ ER right _^_EN // copyright _su) rr RR // surréaliste - ou) rr RR // courrai - rr R // erreur - r R // rien + ou) rr RR // courrai + rre (_ R // barre + rr R // erreur + r r // rien .group s _) s (_ Es @@ -628,7 +629,7 @@ t t // bataille t (_ t2 // silent at end of word unless next word starts with a vowel ts (_S1 z2 // silent at end of word unless next word starts with a vowel - C) t (_ t // compost watt soft script malttact abrupt + C) t (_ t // compost watt soft script malttact abrupt n) t (_ t2 // emprunt r) t (_ t2 // fort @@ -658,14 +659,14 @@ s) t (ion t // gestion t (iel s // partiel patiemment - t (iem s + t (iem s mar) t (ien s // martien vénitienne i) t (ien s pa) t (ien s o) t (ien s - Cu) t (ie_ s // minutie + Cu) t (ie_ s // minutie Cu) t (ies_ s cra) t (ie_ s // démocratie @@ -724,7 +725,7 @@ au) x (_ z2 // faux beaux eu) x (_ z2 // jeux - ou) x (_ z2 // choux genoux + ou) x (_ z2 // choux genoux _au) x (quel // auxquels @@ -792,3 +793,4 @@ ¾ tRw'a k'aR © _^_EN ® R@ZistR'@d_m'aRk + diff --git a/dictsource/jbo_list b/dictsource/jbo_list index f0bb9df2..ada2f706 100644 --- a/dictsource/jbo_list +++ b/dictsource/jbo_list @@ -71,6 +71,7 @@ fu $u+ i $u+ $pause + // terminators (include a pause after) ku ku_: boi bOI_: diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 21526d6a..2cab58f6 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -19,7 +19,8 @@ bs (_N ps _) be (@P2 b@ - _) bee be: + _) b (ee+ b + _) be (ter be: _) beu bY: @@ -84,7 +85,7 @@ .group h - _) h (_ hA: + _) h (_ ha: h h C) h (K @@ -141,7 +142,7 @@ o (CC O o (C_ O o (r o: - oo (r o: + oo (r O: // ?? or just for word-final "oor" ? ooi o:j oo o: oe u @@ -173,9 +174,10 @@ .group s + _) s (_ Es s s ss s - sch s; + sch S; sj S diff --git a/dictsource/no_rules b/dictsource/no_rules index 9b5a5fb6..160d682f 100644 --- a/dictsource/no_rules +++ b/dictsource/no_rules @@ -116,6 +116,7 @@ o (nd U o (rt U + o (rd u: // ?? or just for "bord" ? o (st U .group p diff --git a/dictsource/sk_list b/dictsource/sk_list index 245028cd..a897fc7e 100644 --- a/dictsource/sk_list +++ b/dictsource/sk_list @@ -166,6 +166,7 @@ ideí $alt individuálne $alt iní $alt init $alt +inteligentní $alt introvertní $alt jeden $alt júni $alt @@ -199,6 +200,7 @@ pijatika $alt podeň $alt podísť $alt postihnutí post;ihnuti: +poučení $alt poverení $alt požiarne $alt predeň $alt @@ -228,6 +230,7 @@ títo $alt únie $alt únii $alt úniu $alt +ukrižovaní $alt vážení $alt vínečko $alt vinen $alt diff --git a/dictsource/sk_rules b/dictsource/sk_rules index d7f9dd51..6be726b5 100644 --- a/dictsource/sk_rules +++ b/dictsource/sk_rules @@ -15,6 +15,9 @@ b (_ p b (_G b + _) bez (-P4 'bes + _) bezo (-P5 'bezo + .group c c ts ch x @@ -27,7 +30,6 @@ d (_ t d (_G d d (e d; - d (e_ d d (i d; d (í d; d (eT d // word has $alt attribute @@ -145,7 +147,8 @@ _štipen) d (i d d (iskre d diskre) d (i d _ka) d (et d - _) d (eci d + d (eci d + _) d (ece d d (isku d _pre) d (íď d _pre) d (íd d @@ -210,12 +213,14 @@ _štipen) d (i d n (g N n (k N n (e n^ - n (e_ n n (i n^ n (í n^ - n (eT n // word has $alt attribute + n (eT n // word has $alt attribute from sk_list n (iT n n (íT n + @C) n (ej_ n + + _) na (-P3 'na // include $alt2 words as stressed prefixes n (ent n _be) n (ef n @@ -271,7 +276,7 @@ _kultúr) n (e n _) n (eutrál n harmo) n (i n _te) n (is n - _) n (ikoti n + _) n (ikot n lí) n (i n _konkrét) n (e n _matki) n (e n @@ -309,6 +314,8 @@ _administratív) n (e n _) n (erv n natív) n (e n _) n (ext n + zva) n (ej_ n + _u) n (i n .group ň ň n^ @@ -327,6 +334,10 @@ _administratív) n (e n .group p p p + _) po (-P3 'po + _) pod (-P4 'pot + _) pri (-P4 'pRi + .group q q k qu kv @@ -356,20 +367,21 @@ _administratív) n (e n .group s s s + _) so (-P3 'so + .group š š S .group t t t t (e t; - t (e_ t t (i t; t (í t; t (eT t // word has $alt attribute t (iT t t (íT t - _teres) t (ri t + _) t (erestri t t (ik_ t t (ing t @@ -475,6 +487,7 @@ _charakteris) t (ík t _antipa) t (i t ema) t (i t _) t (imotej t + a) t (iká t _sensi) tí ti: _dif) tí (n ti: @@ -495,6 +508,7 @@ _alterna) tí (v ti: _konštruk) tí (v ti: _jus) tí ti: viknu) tí ti: + ales) tí (t ti: @@ -582,7 +596,7 @@ _charak) te (r te _sys) te (m te _al) te (rn te _syn) te ( te - + _li) te (r te .group ť @@ -596,11 +610,9 @@ _charak) te (r te .group v v v - A) v (K w - A) v (n v - A) v (ň v - v (stať v -o) v (_ u + o) v (_ u + + _) vy (@P2 'vi .group w w v @@ -631,4 +643,3 @@ o) v (_ u % pertsento + plus -// 557 diff --git a/phsource/compile_report b/phsource/compile_report index 19eedad2..64826894 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -43 phoneme tables +44 phoneme tables new total base 96 96 base2 24 115 @@ -8,18 +8,19 @@ en_sc 39 146 en_rp 34 144 en_wm 30 144 + en_wi 30 144 af 38 128 cy 29 122 de 33 123 eo 13 108 jbo 4 109 fi 40 127 - fr 34 118 - fr_ca 11 118 + fr 35 119 + fr_ca 11 119 hi 50 132 ta 13 134 hu 23 112 - nl 26 117 + nl 28 119 pl 15 107 sk 29 125 cs 6 125 @@ -42,7 +43,7 @@ zhy 40 129 zh 61 143 sw 14 105 - en_wi 30 144 + th 50 139 Data file Used by b/b [b] base @@ -162,6 +163,8 @@ dzh/xdzh [dZ] base dzh/xdz_pzd [J] base [J2] hi envelope/p_214 [214] zh + [5] th +envelope/p_451 [3] th envelope/p_512 [8] vi envelope/p_fall [2] vi [7] vi @@ -173,6 +176,8 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh + [1] th + [2] th envelope/p_fallrise [4] vi envelope/p_level [1] vi [3] zhy @@ -183,6 +188,7 @@ envelope/p_rise [3] vi [2] zhy [5] zhy [35] zh + [4] th envelope/vi_5 [5] vi envelope/vi_5amp [5] vi envelope/vi_6 [6] vi @@ -272,6 +278,7 @@ l^/_l^ [l^] base l^/l^ [l^] base l/l [l] base [l] en + [l] en_wi [l] af [l] hu [l] sk @@ -279,10 +286,10 @@ l/l [l] base [l] la [l] pt [l;] ro - [l] en_wi l/_l [l] base [l/] base [l] en + [l] en_wi [l] af [l/] de [l] hu @@ -292,7 +299,6 @@ l/_l [l] base [l] pt [l;] ro [l] zh - [l] en_wi l/l_ [l/] base l/l@ [(@)] base l/L1_aL [(a)] base @@ -328,6 +334,7 @@ l/lo [(o)] base l/lu [(u)] base l/tl [l] base [l] en + [l] en_wi [l] af [l] hu [l] sk @@ -335,7 +342,6 @@ l/tl [l] base [l] la [l] pt [l;] ro - [l] en_wi l/xl [(@)] base [(a)] base [(e)] base @@ -528,6 +534,7 @@ ufric/s_ [s] base [z] base [s2] fi [z2] fr + [z3] fr [s2] hu [s] es [s#] pt @@ -557,7 +564,8 @@ ufric/s_pzd [s;] base [s;] ro ufric/s_pzd_ [s;] base [z;] base -ufric/sx_sv [sx] sv +ufric/sx_sv [Sx] nl + [sx] sv ufric/th [T] base ufric/th_ [T] base ufric/tl# [tl#] is @@ -587,6 +595,7 @@ ustop/k_ [k] base [k] el [kh] zh [k] sw + [kh] th ustop/ki [c] base [k] base [k] base2 @@ -635,10 +644,12 @@ ustop/k_unasp [k] base [k] el [k] zhy ustop/k_unasp_ [k] zh + [k] th ustop/p [p] base [p] fr [ph] hi [p] zhy + [ph] th ustop/p_ [p] base [p] fr [ph] hi @@ -672,6 +683,7 @@ ustop/p_unasp [p] base [p] la [p;] ro [p] zh + [p] th ustop/p_unasp_ [p] base2 [p] fi [p] hi @@ -694,6 +706,7 @@ ustop/t_ [t] base [t] sk [t] el [th] zh + [th] th ustop/t_dnt [t] base [t[] base [t] base2 @@ -734,7 +747,9 @@ ustop/t_short [t.] hi [t] sk [t] el ustop/tsh_pzd [tS;] zh + [ch] th ustop/tsh_pzd_unasp [tS;] zh + [c] th ustop/tsh_sr.wav [tS] sr ustop/ts_pzd [tS;] base [ts;] base @@ -752,12 +767,14 @@ ustop/ts_sr.wav [tS;] sr [dZ;] sr ustop/ts_unasp [ts] zh ustop/t_unasp [t] zh + [t] th vdiph/0i [OI] pt [OI] grc [OI] vi + [O:I] th vdiph/0i_2 [OI] en_sc - [AI] no [OI] en_wi + [AI] no vdiph2/e@ [3:] en_sc [e@] en_sc [e@] en_wi @@ -768,14 +785,17 @@ vdiph2/eo [eo] ro vdiph2/e[u [e[u] ro vdiph2/i@ [i@] en_n vdiph2/i@_2 [i@] en_wm -vdiph2/ie [ie] fi - [i@] en_wi +vdiph2/ie [i@] en_wi + [ie] fi + [ia] th + [i:a] th vdiph2/ii@ [i@] en vdiph2/ii@_3 [i@] vi vdiph2/iioo [io] zh vdiph2/iu [iU] base2 [iU] vi [iu] zhy + [iU] th vdiph2/iu_2 [iu] fi vdiph2/iu_3 [iu] af vdiph2/iu_4 [Iu] cy @@ -785,15 +805,18 @@ vdiph2/o@ [o@] af [u@] zh vdiph2/oa [Oa] ro [ua] zh -vdiph2/o_oo [o] is - [o@] en_wi +vdiph2/o_oo [o@] en_wi + [o] is vdiph2/u-@ [y@] vi + [y:a] th vdiph2/u#@ [U@] en_sc vdiph2/uo [uo] fi vdiph2/uu@ [U@] en [U@] en_n [U@] en_wm [u@] vi + [ua] th + [u:a] th vdiph2/y#@ [Y@] af [y@] zh vdiph2/yu [yU] nl @@ -806,24 +829,26 @@ vdiph/aai_2 [AI] af [AY] cy vdiph/aai_3 [ai] fi vdiph/aau [au] fi -vdiph/aau_2 [aU] de +vdiph/aau_2 [aU] en_wi + [aU] de [VU] nl [aU] la [aau] zhy - [aU] en_wi vdiph/aau_3 [aU] hi vdiph/aau_4 [aU] vi vdiph/ae [E:] fr_ca [ai] zh vdiph/ae_2 [aI] en_n vdiph/ai [aI] base2 + [aI] en_wi [aI] eo [aI] sk [aI] hr [aI] it [aI] pt [a:I] vi - [aI] en_wi + [aI] th + [a:I] th vdiph/ai_2 [aI] cy [aY] cy vdiph/ai_3 [aI] no @@ -838,6 +863,8 @@ vdiph/ai_en2 [aI] en vdiph/au [aU] en [aU] af [a:U] vi + [aU] th + [a:U] th vdiph/au# [aU] en_sc vdiph/au_2 [aU] en_us [au] zhy @@ -862,6 +889,7 @@ vdiph/eeu [EU] pt [EU] grc [EU] vi [eu] zhy + [E:U] th vdiph/eeu_2 [EU] la [EU] pt_pt vdiph/eeu_3 [aU] en_n @@ -883,7 +911,10 @@ vdiph/eu [eU] base2 [eU] sk [eU] pt [eU] vi + [eU] th + [e:U] th vdiph/eu_2 [eu] fi +vdiph/@i [@:I] th vdiph/&i [&i] fi [aI] hi vdiph/@i_2 [eI] af @@ -903,6 +934,7 @@ vdiph/oi [oI] base2 [oI] it [OI] la [oI] vi + [o:I] th vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en_n @@ -934,6 +966,8 @@ vdiph/ui [uI] base2 [ui] fi [uI] vi [ui] zhy + [uI] th + [u:I] th vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy @@ -1033,9 +1067,11 @@ vocw/zh [Z] base vocw/zh_rfx [z.] base voc/z [z] base [z2] fr + [z3] fr [z;] ro voc/z_ [z] base [z2] fr + [z3] fr [z;] ro voc/zh [Z] base [z.] base @@ -1059,6 +1095,7 @@ vowel/@ [@] base [@] en_rp [V] cy [@4] hi + [@] th vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1091,6 +1128,7 @@ vowel/3_3 [3:] en_rp vowel/3_en [3:] en [e@] en_wm [3:] af + [@:] th vowel/@_4 [@] nl vowel/8_2 [U] en_us [8] sv @@ -1111,23 +1149,25 @@ vowel/a [a] en_n [a] it [a:] la [a] zh + [a] th + [a:] th vowel/a# [a/] base2 [a2] en_sc + [a2] en_wi [&] sr [&] pt [&/] pt - [a2] en_wi vowel/a_2 [a] base2 + [a] en_wi + [A:] en_wi + [A@] en_wi + [aa] en_wi [a] eo [a] la [A] pt [a] pt_pt [a] ro [a:] vi - [a] en_wi - [A:] en_wi - [A@] en_wi - [aa] en_wi vowel/a#_2 [a] ta [&] hr [a2] sv @@ -1164,8 +1204,8 @@ vowel/aa [a] fi [A:] no [aa] zhy [A] zh -vowel/aa# [a2] fi - [0] en_wi +vowel/aa# [0] en_wi + [a2] fi vowel/aa_2 [A:] en [A@] en [A:] cy @@ -1190,6 +1230,8 @@ vowel/e [e] base2 [e:] en [eI] en_n [E] en_wm + [E] en_wi + [eI] en_wi [e:] af [e:] cy [e] eo @@ -1204,8 +1246,8 @@ vowel/e [e] base2 [e] pt_pt [e] grc [e] vi - [E] en_wi - [eI] en_wi + [e] th + [e:] th vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1243,6 +1285,8 @@ vowel/ee_3 [&] af vowel/ee_6 [E] en_n [&] sk [E3] sv + [E] th + [E:] th vowel/e_mid [E] en_rp [e] jbo [E] fr_ca @@ -1266,9 +1310,9 @@ vowel/e_mid2 [E] af [e] ro [e] el [e] sw -vowel/@_fnt [@2] hr - [@] en_wi +vowel/@_fnt [@] en_wi [@2] en_wi + [@2] hr vowel/@_hgh [@] en_us [@2] en_us [@5] en_us @@ -1277,6 +1321,7 @@ vowel/@_hgh [@] en_us vowel/i [i] base2 [i:] en_n [i] en_wm + [i] en_wi [i:] cy [i] eo [I] fr @@ -1293,7 +1338,8 @@ vowel/i [i] base2 [i] zhy [i] zh [i] sw - [i] en_wi + [i] th + [i:] th vowel/i# [i] en_us [i] en_rp [y:] cy @@ -1310,6 +1356,8 @@ vowel/i_4 [i] fi [i] hu [I] it [i] is +vowel/i#_4 [y] th + [y:] th vowel/i_5 [i:] en_sc vowel/i#_5 [y] pt_pt [i/] pt_pt @@ -1319,9 +1367,9 @@ vowel/i_6 [i:] en_us [i] hr vowel/i_en [i:] en [i] vi -vowel/i_fnt [i] hi +vowel/i_fnt [i:] en_wi + [i] hi [i:] hi - [i:] en_wi vowel/ii [I] en_rp [I2] en_rp [I] en_wm @@ -1367,6 +1415,7 @@ vowel/@_low [3] en_rp [@2] no vowel/o [o] base2 [o:] en + [oU] en_wi [o:] de [o] hi [o] ta @@ -1379,7 +1428,8 @@ vowel/o [o] base2 [o:] sv [o] zh [u] zh - [oU] en_wi + [o] th + [o:] th vowel/o- [o-] zh vowel/o_2 [o:] cy [o:] hi @@ -1392,7 +1442,8 @@ vowel/o_3 [oU] en_sc vowel/o-_3 [U] en_rp vowel/o_4 [oU] en_n vowel/o-_4 [o] ro -vowel/o_6 [O] nl +vowel/o_5 [O] nl +vowel/o_6 [O:] nl vowel/oe [W] en [W] af [W] de @@ -1401,6 +1452,9 @@ vowel/oe_4 [W] sv vowel/o_mid [O] fr [o] hu vowel/oo [O:] en_sc + [O] en_wi + [O:] en_wi + [O@] en_wi [O] de [o] eo [O] la @@ -1409,9 +1463,8 @@ vowel/oo [O:] en_sc [O] sv [O] no [o] zhy - [O] en_wi - [O:] en_wi - [O@] en_wi + [O] th + [O:] th vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -1429,11 +1482,11 @@ vowel/oo_2 [0] en_sc [o] cs vowel/oo_3 [O] af vowel/oo_4 [0] en_wm + [V] en_wi + [3:] en_wi [O:] hi [O] pl [O] it - [V] en_wi - [3:] en_wi vowel/oo_5 [O] is vowel/oo_en [O] en [O:] en @@ -1454,14 +1507,16 @@ vowelr/V3_r [VR] en [3] en_sc [@r] zh vowelr/V_r [IR] en -vowel/u [u:] cy +vowel/u [u:] en_wi + [u:] cy [u:] de [u] eo [U] fr [u:] cs [u:] la [u] zh - [u:] en_wi + [u] th + [u:] th vowel/u# [u-] en [u:] en_sc vowel/u_2 [u1] fi @@ -1508,6 +1563,7 @@ vowel/uu_3 [u] af vowel/uu_4 [U] fi [U] sv vowel/uu_bck [U] en_n + [U] en_wi [U] fr_ca [U] hi [u] ta @@ -1515,7 +1571,6 @@ vowel/uu_bck [U] en_n [U] pt [U] no [u] zhy - [U] en_wi vowel/V [3] en_sc vowel/V_2 [V] en [a] af diff --git a/phsource/envelope/p_214 b/phsource/envelope/p_214 index 169a696f..fb47143c 100644 --- a/phsource/envelope/p_214 +++ b/phsource/envelope/p_214 @@ -1,8 +1,8 @@ ENVELOPE 0 33 -25 16 -50 0 -75 50 +20 15 +35 3 +75 40 100 100 diff --git a/phsource/ph_dutch b/phsource/ph_dutch index 4448f58d..dec2d79c 100644 --- a/phsource/ph_dutch +++ b/phsource/ph_dutch @@ -63,6 +63,12 @@ endphoneme phoneme O vowel starttype (o) endtype (o) length 150 + formants vowel/o_5 +endphoneme + +phoneme O: // for "oor" + vowel starttype (o) endtype (o) + length 210 formants vowel/o_6 endphoneme @@ -202,3 +208,13 @@ phoneme x2 // a stronger version of [x] (for Afrikaans) endphoneme +phoneme Sx // Swedish "sj" sound for TESTING + vls vel frc + vowelin f1=0 f2=2300 300 400 f3=200 100 + vowelout f1=0 f2=2300 300 400 f3=200 100 rms=20 + length 100 + lengthmod 3 + wave ufric/sx_sv%60 +endphoneme + + diff --git a/phsource/ph_french b/phsource/ph_french index 5df4ef5c..9fd47ab8 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -110,7 +110,7 @@ endphoneme phoneme A~ vowel starttype (a) endtype (a) - length 160 + length 170 formants vnasal/aa_n3 endphoneme @@ -252,6 +252,16 @@ phoneme z2 // silent unless followed by vowel lengthmod 6 endphoneme +phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else [] + beforepause s + beforenotvowel NULL + vcd alv frc sibilant + vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 + formants voc/z+ufric/s_ + before _ voc/z_+ufric/s_ + lengthmod 6 +endphoneme + phoneme k diff --git a/phsource/phonemes b/phsource/phonemes index d4a4282d..96f6ab95 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1148,6 +1148,10 @@ include ph_english_rp phonemetable en_wm en include ph_english_wm +phonemetable en_wi en +include ph_english_wi + + phonemetable af base include ph_afrikaans @@ -1252,12 +1256,6 @@ include ph_zh phonemetable sw base include ph_swahili -//phonemetable basef base -//include pf -//phonemetable f_en basef -//include pf_english - -phonemetable en_wi en -include ph_english_wi - +phonemetable th base +include ph_thai diff --git a/phsource/vowel/a b/phsource/vowel/a index f865a79c..8536f586 100644 Binary files a/phsource/vowel/a and b/phsource/vowel/a differ diff --git a/phsource/vowel/i#_4 b/phsource/vowel/i#_4 index 19355b6b..0ff5cb91 100644 Binary files a/phsource/vowel/i#_4 and b/phsource/vowel/i#_4 differ diff --git a/phsource/vowel/i#_6 b/phsource/vowel/i#_6 index 7a5fb179..a201cc43 100644 Binary files a/phsource/vowel/i#_6 and b/phsource/vowel/i#_6 differ diff --git a/phsource/vowel/o_5 b/phsource/vowel/o_5 index b188e43d..5d0b03b8 100644 Binary files a/phsource/vowel/o_5 and b/phsource/vowel/o_5 differ diff --git a/phsource/vowel/u_unr b/phsource/vowel/u_unr index 4f3fbf21..3352cb8e 100644 Binary files a/phsource/vowel/u_unr and b/phsource/vowel/u_unr differ diff --git a/platforms/windows/windows_dll/src/speak_lib.h b/platforms/windows/windows_dll/src/speak_lib.h index 0d07b192..e2faea6e 100644 --- a/platforms/windows/windows_dll/src/speak_lib.h +++ b/platforms/windows/windows_dll/src/speak_lib.h @@ -36,6 +36,9 @@ Revision 2 Revision 3 Added espeakWORDGAP to espeak_PARAMETER +Revision 4 + Added flags parameter to espeak_CompileDictionary() + */ /********************/ /* Initialization */ @@ -48,7 +51,7 @@ typedef enum { espeakEVENT_SENTENCE, // Start of sentence espeakEVENT_MARK, // Mark espeakEVENT_PLAY, // Audio element - espeakEVENT_END, // End of sentence + espeakEVENT_END, // End of sentence or clause espeakEVENT_MSG_TERMINATED, // End of message espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize() } espeak_EVENT_TYPE; @@ -336,8 +339,6 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); EE_INTERNAL_ERROR. */ -/* Note, there is no function to play a sound icon. This would be done by the calling program */ - /***********************/ @@ -444,13 +445,16 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); #ifdef __cplusplus extern "C" #endif -ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log); +ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags); /* Compile pronunciation dictionary for a language which corresponds to the currently selected voice. The required voice should be selected before calling this function. path: The directory which contains the language's '_rules' and '_list' files. 'path' should end with a path separator character ('/'). log: Stream for error reports and statistics information. If log=NULL then stderr will be used. + + flags: Bit 0: include source line information for debug purposes (This is displayed with the + -X command line option). */ /***********************/ /* Voice Selection */ diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 8935f496..fcc6dfe6 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -67,6 +67,7 @@ #define tVOWELOUT 23 #define tAPPENDPH 24 // always insert another phoneme (linkout) after this one #define tIMPORTPH 25 +#define tBEFOREPAUSE 26 #define tPHONEMENUMBER 29 #define tPHONEMETABLE 30 @@ -238,6 +239,7 @@ static keywtab_t keywords[] = { {"vowelout",23}, {"appendph",24}, {"import_phoneme",25}, + {"beforepause",26}, // flags {"wavef", 0x2000000+phWAVE}, @@ -1389,6 +1391,13 @@ int Compile::CPhoneme() ph->alternative_ph = phcode; break; + case tBEFOREPAUSE: + ph->phflags |= phBEFOREPAUSE; + if((phcode = NextItem(tPHONEMEMNEM)) == -1) + phcode = LookupPhoneme(item_string,1); + ph->link_out = phcode; + break; + case tAPPENDPH: ph->phflags |= phAPPENDPH; // drop through to tLINKOUT case tLINKOUT: diff --git a/src/espeak.cpp b/src/espeak.cpp index e6d37243..34295cd6 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -76,8 +76,14 @@ static const char *help_text = int samplerate; +int quiet = 0; +unsigned int samples_total = 0; +unsigned int samples_split = 0; +unsigned int wavefile_count = 0; + FILE *f_wavfile = NULL; -char wavefile[160]; +char filetype[5]; +char wavefile[200]; int GetFileLength(const char *filename) @@ -217,8 +223,8 @@ int OpenWavFile(char *path, int rate) -static void CloseWavFile(int rate) -//================================ +static void CloseWavFile() +//======================== { unsigned int pos; @@ -240,20 +246,42 @@ static void CloseWavFile(int rate) } // end of CloseWavFile - static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) {//======================================================================== + char fname[210]; - if(f_wavfile == NULL) return(0); // -q quiet mode + if(quiet) return(0); // -q quiet mode if(wav == NULL) { - CloseWavFile(samplerate); + CloseWavFile(); return(0); } + if(samples_split > 0) + { + // start a new WAV file when this limit is reached, at the next sentence boundary + while(events->type != 0) + { + if((events->type == espeakEVENT_SENTENCE) && (samples_total > samples_split)) + { + CloseWavFile(); + samples_total = 0; + } + events++; + } + } + + if(f_wavfile == NULL) + { + sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype); + if(OpenWavFile(fname, samplerate) != 0) + return(1); + } + if(numsamples > 0) { + samples_total += numsamples; fwrite(wav,numsamples*2,1,f_wavfile); } return(0); @@ -279,6 +307,7 @@ int main (int argc, char **argv) {"punct", optional_argument, 0, 0x103}, {"voices", optional_argument, 0, 0x104}, {"stdout", no_argument, 0, 0x105}, + {"split", optional_argument, 0, 0x106}, {0, 0, 0, 0} }; @@ -291,7 +320,6 @@ int main (int argc, char **argv) int option_index = 0; int c; int ix; - int quiet = 0; int flag_stdin = 0; int flag_compile = 0; int filesize = 0; @@ -431,6 +459,13 @@ int main (int argc, char **argv) DisplayVoices(stdout,optarg); exit(0); + case 0x106: // -- split + if(optarg == NULL) + samples_split = 30; // default 30 minutes + else + samples_split = atoi(optarg); + break; + default: exit(0); } @@ -441,8 +476,20 @@ int main (int argc, char **argv) { // writing to a file (or no output), we can use synchronous mode samplerate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL,0); + samples_split = (samplerate * samples_split) * 60; espeak_SetSynthCallback(SynthCallback); + if(samples_split) + { + char *extn; + extn = strrchr(wavefile,'.'); + if((extn != NULL) && ((wavefile + strlen(wavefile) - extn) <= 4)) + { + strcpy(filetype,extn); + *extn = 0; + } + } + else if(option_waveout) { if(OpenWavFile(wavefile,samplerate) != 0) diff --git a/src/numbers.cpp b/src/numbers.cpp index 592d74d1..1aae5d96 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -179,13 +179,13 @@ void Translator::SetSpellingStress(char *phonemes, int control) else if(c == 0xff) { - if(control < 2) + if((control < 2) || (ix==0)) continue; // don't insert pauses if(control == 4) c = phonPAUSE; // pause after each character if(((count % 3) == 0) || (control == 4)) - c = phonPAUSE_NOLINK; // pause following a primary stress + c = phonPAUSE_SHORT; // pause following a primary stress else continue; // remove marker } @@ -807,7 +807,13 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags, if((ph_out[0] != 0) && (ph_out[0] != phonSWITCH)) { int next_char; - utf8_in(&next_char,&word[n_digits+1],0); + char *p; + p = &word[n_digits+1]; + + p += utf8_in(&next_char,p,0); + if((langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) + utf8_in(&next_char,p,0); + if(!iswalpha(next_char)) strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. } diff --git a/src/phoneme.h b/src/phoneme.h index c35cc156..e8615325 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -48,6 +48,7 @@ #define phLONG 0x1000 #define phAPPENDPH 0x2000 // always insert another phoneme (link_out) after this one #define phBRKAFTER 0x4000 // [*] add a post-pause +#define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause #define phALTERNATIVE 0x0c00 // bits 10,11 specifying use of alternative_ph #define phBEFOREVOWEL 0x0000 diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index bd4feec4..75cfa948 100755 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -383,10 +383,10 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) } } + alternative = 0; + if(ph->alternative_ph > 0) { - alternative = 0; - switch(ph->phflags & phALTERNATIVE) { // This phoneme changes if vowel follows, or doesn't follow, depending on its phNOTFOLLOWS flag @@ -405,25 +405,30 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) alternative = ph->alternative_ph; break; } + } + if(ph->phflags & phBEFOREPAUSE) + { + if(next->type == phPAUSE) + alternative = ph->link_out; // replace with the link_out phoneme + } - if(alternative == 1) - continue; // NULL phoneme, discard + if(alternative == 1) + continue; // NULL phoneme, discard - if(alternative > 1) + if(alternative > 1) + { + PHONEME_TAB *ph2; + ph2 = ph; + ph = phoneme_tab[alternative]; + + if(ph->type == phVOWEL) { - PHONEME_TAB *ph2; - ph2 = ph; - ph = phoneme_tab[alternative]; - - if(ph->type == phVOWEL) - { - plist2->synthflags |= SFLAG_SYLLABLE; - if(ph2->type != phVOWEL) - plist2->stress = 0; // change from non-vowel to vowel, make sure it's unstressed - } - else - plist2->synthflags &= ~SFLAG_SYLLABLE; + plist2->synthflags |= SFLAG_SYLLABLE; + if(ph2->type != phVOWEL) + plist2->stress = 0; // change from non-vowel to vowel, make sure it's unstressed } + else + plist2->synthflags &= ~SFLAG_SYLLABLE; } if(langopts.param[LOPT_REDUCE_T]) @@ -547,7 +552,7 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) next2 = phoneme_tab[(plist2+2)->phcode]; - if((insert_ph == 0) && (ph->link_out != 0) && (((plist2+1)->synthflags & SFLAG_EMBEDDED)==0)) + if((insert_ph == 0) && (ph->link_out != 0) && !(ph->phflags && phBEFOREPAUSE) && (((plist2+1)->synthflags & SFLAG_EMBEDDED)==0)) { if(ph->phflags & phAPPENDPH) { diff --git a/src/readclause.cpp b/src/readclause.cpp index 29c2aae2..5c4ef3c4 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -88,7 +88,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', // indexed by (entry num. in punct_chars) + 1 // bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket -static const unsigned short punct_attributes [] = { 0, +static const unsigned int punct_attributes [] = { 0, CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, CLAUSE_SEMICOLON, // en-dash CLAUSE_SEMICOLON, // em-dash diff --git a/src/speak.cpp b/src/speak.cpp index d3312b13..cc23eb96 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -50,12 +50,20 @@ +extern void Write4Bytes(FILE *f, int value); char path_home[N_PATH_HOME]; // this is the espeak-data directory -char wavefile[120]; +char filetype[5]; +char wavefile[200]; int (* uri_callback)(int, const char *, const char *) = NULL; int (* phoneme_callback)(const char *) = NULL; +FILE *f_wave = NULL; + int quiet = 0; +unsigned int samples_total = 0; +unsigned int samples_split = 0; +unsigned int wavefile_count = 0; +int end_of_sentence = 0; static const char *help_text = "\nspeak [options] [\"\"]\n\n" @@ -216,12 +224,111 @@ static void PitchAdjust(int pitch_adjustment) } // end of PitchAdjustment + + +static int OpenWaveFile(const char *path, int rate) +//================================================= +{ + // Set the length of 0x7fffffff for --stdout + // This will be changed to the correct length for -w (write to file) + static unsigned char wave_hdr[44] = { + 'R','I','F','F',0,0,0,0,'W','A','V','E','f','m','t',' ', + 0x10,0,0,0,1,0,1,0, 9,0x3d,0,0,0x12,0x7a,0,0, + 2,0,0x10,0,'d','a','t','a', 0xff,0xff,0xff,0x7f}; + + if(path == NULL) + return(2); + + if(strcmp(path,"stdout")==0) + f_wave = stdout; + else + f_wave = fopen(path,"wb"); + + if(f_wave != NULL) + { + fwrite(wave_hdr,1,24,f_wave); + Write4Bytes(f_wave,rate); + Write4Bytes(f_wave,rate * 2); + fwrite(&wave_hdr[32],1,12,f_wave); + return(0); + } + return(1); +} // end of OpenWaveFile + + + + +static void CloseWaveFile() +//========================= +{ + unsigned int pos; + + if((f_wave == NULL) || (f_wave == stdout)) + return; + + fflush(f_wave); + pos = ftell(f_wave); + + fseek(f_wave,4,SEEK_SET); + Write4Bytes(f_wave,pos - 8); + + fseek(f_wave,40,SEEK_SET); + Write4Bytes(f_wave,pos - 44); + + + fclose(f_wave); + f_wave = NULL; + +} // end of CloseWaveFile + + + + void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) {//====================================================================================== // Do nothing in the command-line version. + if(type == 2) + end_of_sentence = 1; } // end of MarkerEvent +static int WavegenFile(void) +{//========================= + int finished; + unsigned char wav_outbuf[512]; + char fname[210]; + + out_ptr = out_start = wav_outbuf; + out_end = wav_outbuf + sizeof(wav_outbuf); + + finished = WavegenFill(0); + + if(f_wave == NULL) + { + sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype); + if(OpenWaveFile(fname, samplerate) != 0) + return(1); + } + + if(end_of_sentence) + { + end_of_sentence = 0; + if(samples_total > samples_split) + { + CloseWaveFile(); + samples_total = 0; + } + } + + if(f_wave != NULL) + { + samples_total += (out_ptr - wav_outbuf)/2; + fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave); + } + return(finished); +} // end of WavegenFile + + static void init_path(char *argv0) {//=============================== @@ -359,6 +466,7 @@ int main (int argc, char **argv) {"punct", optional_argument, 0, 0x103}, {"voices", optional_argument, 0, 0x104}, {"stdout", no_argument, 0, 0x105}, + {"split", optional_argument, 0, 0x106}, {0, 0, 0, 0} }; @@ -376,7 +484,6 @@ int main (int argc, char **argv) int amp = 100; // default int wordgap = 0; int speaking = 0; - int quiet = 0; int flag_stdin = 0; int flag_compile = 0; int pitch_adjustment = 50; @@ -559,6 +666,13 @@ int main (int argc, char **argv) DisplayVoices(stdout,optarg2); exit(0); + + case 0x106: // -- split + if(optarg2 == NULL) + samples_split = 30; // default 30 minutes + else + samples_split = atoi(optarg2); + break; default: exit(0); } @@ -650,6 +764,20 @@ int main (int argc, char **argv) else { // write sound output to a WAV file + samples_split = (samplerate * samples_split) * 60; + + if(samples_split) + { + // don't open the wav file until we start generating speech + char *extn; + extn = strrchr(wavefile,'.'); + if((extn != NULL) && ((wavefile + strlen(wavefile) - extn) <= 4)) + { + strcpy(filetype,extn); + *extn = 0; + } + } + else if(OpenWaveFile(wavefile,samplerate) != 0) { fprintf(stderr,"Can't write to output file '%s'\n'",wavefile); @@ -671,7 +799,7 @@ int main (int argc, char **argv) SpeakNextClause(NULL,NULL,1); } - CloseWaveFile(samplerate); + CloseWaveFile(); } else { diff --git a/src/speak_lib.h b/src/speak_lib.h index 247ba3c5..972092a8 100644 --- a/src/speak_lib.h +++ b/src/speak_lib.h @@ -50,7 +50,7 @@ typedef enum { espeakEVENT_SENTENCE, // Start of sentence espeakEVENT_MARK, // Mark espeakEVENT_PLAY, // Audio element - espeakEVENT_END, // End of sentence + espeakEVENT_END, // End of sentence or clause espeakEVENT_MSG_TERMINATED, // End of message espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize() } espeak_EVENT_TYPE; diff --git a/src/speak_riscos.cpp b/src/speak_riscos.cpp index 15c82c2c..048a2124 100644 --- a/src/speak_riscos.cpp +++ b/src/speak_riscos.cpp @@ -57,12 +57,14 @@ extern void RiscosOpenSound(); extern int WcmdqUsed(); extern void FreePhData(); extern void FreeDictionary(); +extern void Write4Bytes(FILE *f, int value); extern int wcmdq_head; extern int wcmdq_tail; extern int current_source_index; FILE *f_text; +FILE *f_wave = NULL; int (* uri_callback)(int, const char *, const char *) = NULL; int (* phoneme_callback)(const char *) = NULL; @@ -272,12 +274,90 @@ void Free(void **ptr) #endif + + +static int OpenWaveFile(const char *path, int rate) +//================================================= +{ + // Set the length of 0x7fffffff for --stdout + // This will be changed to the correct length for -w (write to file) + static unsigned char wave_hdr[44] = { + 'R','I','F','F',0,0,0,0,'W','A','V','E','f','m','t',' ', + 0x10,0,0,0,1,0,1,0, 9,0x3d,0,0,0x12,0x7a,0,0, + 2,0,0x10,0,'d','a','t','a', 0xff,0xff,0xff,0x7f}; + + if(path == NULL) + return(2); + + if(strcmp(path,"stdout")==0) + f_wave = stdout; + else + f_wave = fopen(path,"wb"); + + if(f_wave != NULL) + { + fwrite(wave_hdr,1,24,f_wave); + Write4Bytes(f_wave,rate); + Write4Bytes(f_wave,rate * 2); + fwrite(&wave_hdr[32],1,12,f_wave); + return(0); + } + return(1); +} // end of OpenWaveFile + + + + +static void CloseWaveFile(int rate) +//================================= +{ + unsigned int pos; + + if((f_wave == NULL) || (f_wave == stdout)) + return; + + fflush(f_wave); + pos = ftell(f_wave); + + fseek(f_wave,4,SEEK_SET); + Write4Bytes(f_wave,pos - 8); + + fseek(f_wave,40,SEEK_SET); + Write4Bytes(f_wave,pos - 44); + + + fclose(f_wave); + f_wave = NULL; + +} // end of CloseWaveFile + + + + void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) {//====================================================================================== // Do nothing in the command-line version. } // end of MarkerEvent +static int WavegenFile(void) +{//========================= + int finished; + unsigned char wav_outbuf[1024]; + + out_ptr = out_start = wav_outbuf; + out_end = wav_outbuf + sizeof(wav_outbuf); + + finished = WavegenFill(0); + + if(f_wave != NULL) + { + fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave); + } + return(finished); +} // end of WavegenFile + + void FillSoundBuf(int size) diff --git a/src/spectseq.cpp b/src/spectseq.cpp index 3ca2cceb..c7516d10 100755 --- a/src/spectseq.cpp +++ b/src/spectseq.cpp @@ -36,6 +36,9 @@ int SpeakNextClause(FILE *f_text, const void *text_in, int control); extern void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2); +extern int Wavegen(); +extern void CloseWaveFile2(); +extern FILE *f_wave; static int frame_width; @@ -96,6 +99,25 @@ static void PeaksZero(peak_t *sp, peak_t *zero) } // end of PeaksZero + +void MakeWaveFile() +{//================ + int result=1; + unsigned char wav_outbuf[1024]; + + while(result != 0) + { + out_ptr = out_start = wav_outbuf; + out_end = &wav_outbuf[sizeof(wav_outbuf)]; + result = Wavegen(); + if(f_wave != NULL) + fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave); + } +} // end of MakeWaveFile + + + + SpectSeq::SpectSeq(int n) {//====================== numframes = n; @@ -1004,7 +1026,7 @@ void SpectSeq::MakeWave(int start, int end, PitchEnvelope &pitch) SetSynth_mS(30,peaks2,peaks0); MakeWaveFile(); - CloseWaveFile(samplerate); + CloseWaveFile2(); PlayWavFile(fname_speech); } // end of SpectSeq::MakeWave @@ -1085,7 +1107,7 @@ void SpectFrame::MakeWave(int control, PitchEnvelope &pitche, int amplitude, int #endif } - CloseWaveFile(samplerate); + CloseWaveFile2(); PlayWavFile(fname_speech); } // end of SpectFrame::MakeWaveFrame diff --git a/src/synthdata.cpp b/src/synthdata.cpp index bce64928..d148c589 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.30.05 07.Jan.08"; -const int version_phdata = 0x013005; +const char *version_string = "1.30.10 13.Jan.08"; +const int version_phdata = 0x013010; int option_device_number = -1; diff --git a/src/synthesize.h b/src/synthesize.h index a018e7cf..2aeddd0d 100755 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -204,10 +204,7 @@ int WavegenOpenSound(); int WavegenCloseSound(); int WavegenInitSound(); void WavegenInit(int rate, int wavemult_fact); -int OpenWaveFile(const char *path, int rate); -void CloseWaveFile(int rate); float polint(float xa[],float ya[],int n,float x); -int WavegenFile(void); int WavegenFill(int fill_zeros); void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index e649592b..32839e8f 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -277,7 +277,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_flags = 0x0024; // don't use secondary stress tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables - tr->langopts.numbers = 0x1509; + tr->langopts.numbers = 0x1509 + NUM_NOPAUSE | NUM_ROMAN; SetLetterVowel(tr,'y'); } break; @@ -633,6 +633,24 @@ SetLengthMods(tr,3); // all equal } break; + + case L('t','h'): // Thai + { + static const short stress_lengths_th[8] = {230,150, 230,230, 230,0, 230,250}; + static const unsigned char stress_amps_th[] = {22,16, 22,22, 22,22, 22,22 }; + + tr = new Translator; + SetupTranslator(tr,stress_lengths_th,stress_amps_th); + + tr->langopts.stress_rule = 0; // stress on final syllable of a "word" + tr->langopts.stress_flags = 1; // don't automatically set diminished stress (may be set in the intonation module) + tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() + tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable +// tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) + tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word + } + break; + case L('t','r'): // Turkish { static const unsigned char stress_amps_tr[8] = {16,16, 20,20, 20,24, 24,22 }; diff --git a/src/translate.cpp b/src/translate.cpp index d94e94ed..a34c0a70 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1212,8 +1212,11 @@ int Translator::TranslateWord2(char *word, WORD_TAB *wtab, int pre_pause, int ne if((option_sayas & 0xf0) == 0x10) { - // SAYAS_CHARS, SAYAS_GLYPHS, or SAYAS_SINGLECHARS. Pause between each word. - pre_pause += 4; + if(!(word_flags & FLAG_FIRST_WORD)) + { + // SAYAS_CHARS, SAYAS_GLYPHS, or SAYAS_SINGLECHARS. Pause between each word. + pre_pause += 4; + } } if(word_flags & FLAG_FIRST_UPPER) @@ -2251,6 +2254,7 @@ if((c == '/') && (langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(prev_ou words[word_count].pre_pause = 8; if(word_count > 0) words[word_count-1].flags |= FLAG_LAST_WORD; + words[0].flags |= FLAG_FIRST_WORD; for(ix=0; ix