Remove pause before <say-as> if it's at the beginning of a sentence. Added --split=<minutes> command-line option. Splits output WAV file (at sentence boundaries). Fix: espeakEVENT_SENTENCE events were missing. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@121 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -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 | |||
| @@ -1,4 +1,4 @@ | |||
| //maintainer: Willem van der Walt | |||
| //maintainer: Willem van der Walt | |||
| // email: [email protected] | |||
| // 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 | |||
| @@ -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 | |||
| @@ -1,4 +1,4 @@ | |||
| | |||
| // This file in UTF8 encoded | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| @@ -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~ | |||
| @@ -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 | |||
| _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 @ | |||
| _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 @ | |||
| 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 | |||
| @@ -71,6 +71,7 @@ fu $u+ | |||
| i $u+ $pause | |||
| // terminators (include a pause after) | |||
| ku ku_: | |||
| boi bOI_: | |||
| @@ -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 | |||
| @@ -116,6 +116,7 @@ | |||
| o (nd U | |||
| o (rt U | |||
| o (rd u: // ?? or just for "bord" ? | |||
| o (st U | |||
| .group p | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -1,8 +1,8 @@ | |||
| ENVELOPE | |||
| 0 33 | |||
| 25 16 | |||
| 50 0 | |||
| 75 50 | |||
| 20 15 | |||
| 35 3 | |||
| 75 40 | |||
| 100 100 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 */ | |||
| @@ -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: | |||
| @@ -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) | |||
| @@ -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. | |||
| } | |||
| @@ -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 | |||
| @@ -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) | |||
| { | |||
| PHONEME_TAB *ph2; | |||
| ph2 = ph; | |||
| ph = phoneme_tab[alternative]; | |||
| if(alternative > 1) | |||
| { | |||
| 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; | |||
| 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; | |||
| } | |||
| 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) | |||
| { | |||
| @@ -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 | |||
| @@ -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] [\"<words>\"]\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 | |||
| { | |||
| @@ -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; | |||
| @@ -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) | |||
| @@ -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 | |||
| @@ -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; | |||
| @@ -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); | |||
| @@ -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 }; | |||
| @@ -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<word_count; ix++) | |||
| { | |||
| @@ -88,6 +88,7 @@ | |||
| #define FLAG_EMBEDDED 0x40 /* word is preceded by embedded commands */ | |||
| #define FLAG_HYPHEN 0x80 | |||
| #define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space | |||
| #define FLAG_FIRST_WORD 0x200 // first word in clause | |||
| #define FLAG_DONT_SWITCH_TRANSLATOR 0x1000 | |||
| #define FLAG_SUFFIX_REMOVED 0x2000 | |||
| #define FLAG_HYPHEN_AFTER 0x4000 | |||
| @@ -308,6 +309,7 @@ typedef struct { | |||
| #define NUM_ROMAN 0x20000 | |||
| #define NUM_ROMAN_UC 0x40000 | |||
| #define NUM_NOPAUSE 0x80000 | |||
| // bits0-1=which numbers routine to use. | |||
| // bit2= thousands separator must be space | |||
| @@ -325,6 +327,7 @@ typedef struct { | |||
| // bit16=dot after number indicates ordinal | |||
| // bit17=recognize roman numbers | |||
| // bit18=Roman numbers only if upper case | |||
| // bit19=don't add pause after a number | |||
| int numbers; | |||
| // bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
| @@ -47,6 +47,7 @@ | |||
| TranslDlg *transldlg = NULL; | |||
| extern char *speech_to_phonemes(char *data, char *phout); | |||
| extern ProsodyDisplay *prosodycanvas; | |||
| extern void Write4Bytes(FILE *f, int value); | |||
| BEGIN_EVENT_TABLE(TranslDlg, wxPanel) | |||
| EVT_BUTTON(T_TRANSLATE,TranslDlg::OnCommand) | |||
| @@ -55,6 +56,8 @@ BEGIN_EVENT_TABLE(TranslDlg, wxPanel) | |||
| END_EVENT_TABLE() | |||
| FILE *f_wave = NULL; | |||
| class IPATextCtrl : public wxTextCtrl | |||
| { | |||
| @@ -157,16 +160,82 @@ char *WavFileName(void) | |||
| } | |||
| int OpenWaveFile2(const char *fname) | |||
| {//================================= | |||
| int result; | |||
| if((result = OpenWaveFile(fname, samplerate)) != 0) | |||
| int OpenWaveFile2(const char *path) | |||
| /*********************************/ | |||
| { | |||
| // 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) | |||
| { | |||
| wxLogStatus(_T("Can't write to WAV file: '"+wxString(fname,wxConvLocal))+_T("'")); | |||
| fwrite(wave_hdr,1,24,f_wave); | |||
| Write4Bytes(f_wave,samplerate); | |||
| Write4Bytes(f_wave,samplerate * 2); | |||
| fwrite(&wave_hdr[32],1,12,f_wave); | |||
| return(0); | |||
| } | |||
| return(result); | |||
| } | |||
| wxLogStatus(_T("Can't write to WAV file: '"+wxString(path,wxConvLocal))+_T("'")); | |||
| return(1); | |||
| } // end of OpenWaveFile | |||
| void CloseWaveFile2() | |||
| /******************/ | |||
| { | |||
| 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 | |||
| int WavegenFile2(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 MakeWave2(PHONEME_LIST *p, int n_phonemes) | |||
| @@ -183,13 +252,13 @@ void MakeWave2(PHONEME_LIST *p, int n_phonemes) | |||
| for(;;) | |||
| { | |||
| result = WavegenFile(); | |||
| result = WavegenFile2(); | |||
| if(result != 0) | |||
| break; | |||
| Generate(p,&n_ph,1); | |||
| } | |||
| CloseWaveFile(samplerate); | |||
| CloseWaveFile2(); | |||
| PlayWavFile(fname_speech); | |||
| } // end of MakeWave2 | |||
| @@ -137,7 +137,6 @@ unsigned char *out_ptr; | |||
| unsigned char *out_start; | |||
| unsigned char *out_end; | |||
| int outbuf_size = 0; | |||
| static unsigned char outbuf[1024]; // used when writing to file | |||
| // the queue of operations passed to wavegen from sythesize | |||
| long wcmdq[N_WCMDQ][4]; | |||
| @@ -151,7 +150,7 @@ static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,360,300,99,99,99, 0,3 | |||
| #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | |||
| int current_source_index=0; | |||
| FILE *f_wave = NULL; | |||
| extern FILE *f_wave; | |||
| #if (USE_PORTAUDIO == 18) | |||
| static PortAudioStream *pa_stream=NULL; | |||
| @@ -1114,8 +1113,8 @@ int ApplyBreath(void) | |||
| static int Wavegen() | |||
| {//================= | |||
| int Wavegen() | |||
| {//========== | |||
| unsigned short waveph; | |||
| unsigned short theta; | |||
| int total; | |||
| @@ -1761,88 +1760,6 @@ void Write4Bytes(FILE *f, int value) | |||
| 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); | |||
| wavephase = 0x7fffffff; | |||
| 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 | |||
| void CloseWaveFile(int rate) | |||
| /******************/ | |||
| { | |||
| unsigned int pos; | |||
| if(f_log != NULL) | |||
| { | |||
| fclose(f_log); | |||
| f_log = NULL; | |||
| } | |||
| 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 MakeWaveFile() | |||
| {//================ | |||
| int result=1; | |||
| while(result != 0) | |||
| { | |||
| out_ptr = out_start = outbuf; | |||
| out_end = &outbuf[sizeof(outbuf)]; | |||
| result = Wavegen(); | |||
| if(f_wave != NULL) | |||
| fwrite(outbuf,1,out_ptr-outbuf,f_wave); | |||
| } | |||
| } // end of MakeWaveFile | |||
| int WavegenFill(int fill_zeros) | |||
| {//============================ | |||
| @@ -1965,20 +1882,3 @@ int WavegenFill(int fill_zeros) | |||
| } // end of WavegenFill | |||
| int WavegenFile(void) | |||
| {//================== | |||
| int finished; | |||
| out_ptr = out_start = outbuf; | |||
| out_end = outbuf + sizeof(outbuf); | |||
| finished = WavegenFill(0); | |||
| if(f_wave != NULL) | |||
| { | |||
| fwrite(outbuf,1,out_ptr-outbuf,f_wave); | |||
| } | |||
| return(finished); | |||
| } // end of WavegenFile | |||