Browse Source

[1.30.10]

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-fd96e6ae7743
master
jonsd 17 years ago
parent
commit
38063c4eea

+ 6
- 2
dictsource/af_list View File

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


+ 94
- 30
dictsource/af_rules View File

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

+ 14
- 5
dictsource/dict_phonemes View File

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

+ 23
- 15
dictsource/fr_list View File

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





+ 124
- 122
dictsource/fr_rules View File

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


+ 1
- 0
dictsource/jbo_list View File

@@ -71,6 +71,7 @@ fu $u+

i $u+ $pause


// terminators (include a pause after)
ku ku_:
boi bOI_:

+ 6
- 4
dictsource/nl_rules View File

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



+ 1
- 0
dictsource/no_rules View File

@@ -116,6 +116,7 @@

o (nd U
o (rt U
o (rd u: // ?? or just for "bord" ?
o (st U

.group p

+ 3
- 0
dictsource/sk_list View File

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

+ 25
- 14
dictsource/sk_rules View File

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

+ 96
- 41
phsource/compile_report View File

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

+ 3
- 3
phsource/envelope/p_214 View File

@@ -1,8 +1,8 @@
ENVELOPE
0 33
25 16
50 0
75 50
20 15
35 3
75 40
100 100



+ 16
- 0
phsource/ph_dutch View File

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



+ 11
- 1
phsource/ph_french View File

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

+ 6
- 8
phsource/phonemes View File

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


BIN
phsource/vowel/a View File


BIN
phsource/vowel/i#_4 View File


BIN
phsource/vowel/i#_6 View File


BIN
phsource/vowel/o_5 View File


BIN
phsource/vowel/u_unr View File


+ 8
- 4
platforms/windows/windows_dll/src/speak_lib.h View File

@@ -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 */

+ 9
- 0
src/compiledata.cpp View File

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

+ 54
- 7
src/espeak.cpp View File

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

+ 9
- 3
src/numbers.cpp View File

@@ -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.
}

+ 1
- 0
src/phoneme.h View File

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

+ 23
- 18
src/phonemelist.cpp View File

@@ -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)
{

+ 1
- 1
src/readclause.cpp View File

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

+ 131
- 3
src/speak.cpp View File

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

+ 1
- 1
src/speak_lib.h View File

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

+ 80
- 0
src/speak_riscos.cpp View File

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

+ 24
- 2
src/spectseq.cpp View File

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

+ 2
- 2
src/synthdata.cpp View File

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


+ 0
- 3
src/synthesize.h View File

@@ -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);


+ 19
- 1
src/tr_languages.cpp View File

@@ -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 };

+ 6
- 2
src/translate.cpp View File

@@ -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++)
{

+ 3
- 0
src/translate.h View File

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

+ 78
- 9
src/transldlg.cpp View File

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

+ 3
- 103
src/wavegen.cpp View File

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


Loading…
Cancel
Save