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 | |||