Fix: -g command option not working on Windows. Fix: Text position value in events was limited to 16 bits. [1.40.15] espeakedit: Change formant dialog to include Klatt parameters. espeakedit: Change the format of formant data to include Klatt parameters. espeakedit: Fix the frequency of F7,F8 at 7800Hz,9000Hz. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@220 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -12,12 +12,14 @@ | |||
// abbreviations | |||
(http ://) hA:te@te@p'e@_ | |||
adv atfuk'A:t | |||
atkv $abbrev | |||
bpk b@p&rk | |||
bv beIf'o@rbe@lt $dot | |||
dr d'Okt@r $dot | |||
e.a _:En_'and@r | |||
edms eI@ndOms | |||
ens Enso@fo@rts $dot | |||
fak $abbrev | |||
genl x2@n@rA:l | |||
insp InspEkt'Y@r $dot | |||
isbn $abbrev | |||
@@ -358,6 +360,7 @@ benjamin bEndZ@m@n | |||
bennett bEn@t | |||
bertha b&rta | |||
bester b'Est@r | |||
betsie bEtsi | |||
beyers beI@rs | |||
blignault blIx2n@Ut | |||
blomerus blum'e@rWs | |||
@@ -365,7 +368,6 @@ botha bo@ta | |||
bouwer b@U@r | |||
brian _^_EN | |||
bredenkamp bre@d@nkamp | |||
breytenbach breIt@nbax2 | |||
bruwer bruw'&:r | |||
caesar siz@r | |||
carl kA:r@L | |||
@@ -392,6 +394,8 @@ coetzee kuts'e@ | |||
cronjé krOnj'e@ | |||
cynthia _^_EN | |||
dalene dal'e@n | |||
daniël d'A:ni:@l | |||
#zzz | |||
darwin _^_EN | |||
david _^_EN | |||
(da vinci) da||v'intSi | |||
@@ -421,13 +425,14 @@ elsabé &ls@bi | |||
emmarentia Emar'e~nSja | |||
erasmus $2 | |||
ernest _^_EN | |||
eségiël is'e@x2i_@l | |||
esegiël is'e@x2i:@l | |||
estelle %ist&l | |||
etienne Eti@n | |||
eugene judZ'i:n | |||
eugène yZ'En | |||
farao fA:ro@ | |||
ferreira f@r&:r@ | |||
filemon f'il@mOn | |||
fischer fiS@r | |||
fourie fur'i | |||
francina $2 | |||
@@ -442,10 +447,10 @@ gerhardus $2 | |||
gertruida $2 | |||
gloria glO:ria | |||
grange x2rA:nsi | |||
grové x2ruv'e@ | |||
gustav gustaf | |||
guy _^_EN | |||
hamlet _^_EN | |||
harry _^_EN | |||
havenga hA:f@Nx2a | |||
haydn hAId@n | |||
helen _^_EN | |||
@@ -491,7 +496,9 @@ levi le@fi | |||
liesbet lisbEt | |||
louis luI | |||
louise luw'i:z | |||
lukas l'ukas | |||
mackintosh _^_EN | |||
madelene mad@l'e@n | |||
mbeki mbE:ki | |||
magdalena $3 | |||
malan mal'an | |||
@@ -586,6 +593,7 @@ telemann te@l@man | |||
terblanche t@rblA:nS | |||
theo tiu | |||
theron tr'On | |||
timotheus t@m'o@tiWs | |||
thys teIs | |||
toerien $2 | |||
totius to@SiWs | |||
@@ -635,10 +643,25 @@ peugeot pW:Z@U | |||
port pOrt $1 | |||
rover _^_EN | |||
sotho su:tu | |||
thessalonicense tEsalo@nis'Ens@ | |||
toyota $2 | |||
venda vEnda | |||
volvo vOlvu | |||
wimpy wImpi | |||
// some Bible names | |||
levitikus $2 | |||
deuteronomium dY@t@ro@n'o@miWm | |||
josua j'o@Sia | |||
jesaja $2 | |||
jeremia j%e@r@m'ia | |||
hosea hus'i:a | |||
amos 'A:mOs | |||
obadja o@b'atja | |||
miga m'ix2a | |||
habakuk h'abakWk | |||
sefanja s@f'anja | |||
sagaria sax2ar'ia | |||
maleagi $3 | |||
// article | |||
@@ -830,9 +853,8 @@ capita kapita | |||
casino kas'i:n@U | |||
cedille s@dIl@ | |||
charisma kar'Isma | |||
cliché kliS'eI: | |||
clichés kliS'eI:s | |||
cliché kliS'eI: | |||
crescendo kr@SEndu | |||
dadelik dA:d@lIk | |||
@@ -881,7 +903,6 @@ gaandeweg x2A:nd@v&x2 | |||
garages g@rA:dZ@s | |||
gee x2e@ | |||
geen x2e@n | |||
gegewens x2@x2e@v@ns | |||
geldelike x2&ld@l@k@ | |||
genade $2 | |||
genesis x2e@n@s@s | |||
@@ -970,7 +991,6 @@ memoriam mEm'o@riam | |||
mercedes $2 | |||
meregebied me@r@x2@bit | |||
merlot m&rl'o@ | |||
miaau mi'aU: | |||
midwinter mIdv@nt@r | |||
militêre mIl@t'&:r@ | |||
minister m@nIst@r | |||
@@ -1054,6 +1074,7 @@ oorval $2 $verb | |||
oudsher @Utsh&r | |||
pandemonium pand@m'o@niWm | |||
papperel pap@r'&l | |||
parate par'A:t@ | |||
parke park@ | |||
parkie $1 | |||
@@ -1160,6 +1181,7 @@ verte f&rt@ | |||
verweg f&:rv&x2 | |||
via via | |||
volheid $1 | |||
volswanger $1 | |||
volte $1 | |||
voluit fOl_Yyt | |||
voorgee fo@rx2e@ |
@@ -18,6 +18,7 @@ | |||
a A: | |||
AC) a (_ %a // short final a in words like: Eva/Pieta/(su)sara | |||
%C) a (_ %a // short final a in words like: Bella/Betta/gogga | |||
&k) a (_ a // short final a in words like: Kafka/wodka | |||
s) ate (l %at@ //satelliet and compounds | |||
C) a (rina %a //unstressed short a in carina tarina etc. | |||
&b) a (_ %a // short final a: mamba and compounds/marimba/hamba | |||
@@ -67,6 +68,7 @@ | |||
Cel) ary ar'eI // move default stress: bedelary/bottelary/dobbelary/huigelary/smokkelary... | |||
@@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc. | |||
amarula %am%arul%a // fix stress and a sounds: amarula and compounds | |||
a (ment %a // shorten a sound: perkament/testament and compounds | |||
argen (tA %arx2@n // move default stress: Argentinië/Argentyns/-e | |||
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria | |||
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties | |||
@@ -114,7 +116,8 @@ | |||
@C) a (tiewe %a // fix a sound: konserwatiewe/putatiewe and many similar | |||
_arC) ad (A 'A:d // Arcadia/arkadia/arkade/armada | |||
ai aI | |||
adres %adrEs // fix last e sound of adres as last part of compounds | |||
adre (K %adrE // fix last e sound of adres as last part of compounds | |||
adrena (li %adr@n%a // fix stress and vowel sounds: adrenalien and compounds | |||
al (baster %al // move default stress: albaster and compounds | |||
al (bino %al // move default stress: albino | |||
alche (mis %alx2%e@ // move default stress: alchemis and derivatives | |||
@@ -482,7 +485,7 @@ | |||
bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie... | |||
bidd bId // biddag/aanbidding | |||
bid bIt_ // biduur/aanbid | |||
_) bid bIt_ // biduur | |||
_) bi (ga b%i // bigamie/-s/-e | |||
bikini b@kini // move default stress: bikini and compounds | |||
bil (j b@l // move default stress: biljet/-te/biljart/biljoen and compounds | |||
@@ -572,6 +575,9 @@ | |||
be (dr@ b@ // bedremmeld/bedrewe/bedrywig, etc. | |||
bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd | |||
bedw (@ b@dw // bedwing and similar | |||
bed (warm bEt // fix e, d and w sounds: bedwarmer/-s and compounds | |||
bedw (ieg bEtv // fix e, d and w sounds: bedwieg/-ie/-s | |||
bed (woord bEt // fix e, d and w sounds: sterfbedwoord/-e and similar | |||
@) bed (_ bEt // bruidsbed/dubbelbed; many compounds ending in bed | |||
be (de_ be@ // bede/gebede | |||
bedes (_ be@d@s // bedes/seënbedes, etc. | |||
@@ -693,6 +699,7 @@ | |||
_) de (klass de@ // deklassifikasie/gedeklassifiseer | |||
de (klinA d%E // fix 1st e sound: deklinasie/deklineer/-nering and compounds | |||
de (krimina d%e@ // fix e sound: (ge)dekriminaliseer/dekriminalisering, etc. | |||
de (laan d@ // fix e sound: tweede-/derde-/vierdelaan... | |||
kun) dele (K d@lE // fix e sounds: Aardryks-/wiskundeles/-se, etc. | |||
onder) dele (@ de@l@_ // fix e sound: onderdelebedryf/-pakhuis, etc. | |||
voor) dele (@ de@l@_ // fix e sound: voordelefonds and similar | |||
@@ -756,6 +763,7 @@ | |||
deur (weeC d%y@r // move default stress: deurweef/deurweek/-te | |||
deur (winter d%y@r // move default stress: deurwinter/-de | |||
dewe (tK d@vE // fix stress and vowel sounds: Groepsgebiedewet/Dewetsdorp/-hof | |||
dge (_ _^_EN // words ending in -dge are English: Cambridge/Hambidge... | |||
dia (C d%i%a // diabeet/diafragma/diagnose/dialek/dialoog/diamant | |||
diaken d%iA:k@n // diaken and compounds | |||
diako (nie d%i%ak%u // fix stress and o sound: diakonie/-ë | |||
@@ -1127,6 +1135,7 @@ | |||
eedjie e@ici // kleedjie/tafelkleedjie/altaarkleedjie | |||
eeu iu: | |||
eeue iu:@ // fix e sound: leeueaandeel/eeuelang/eeueoud/skreeuerig | |||
ee (uu e@_ // split ee/uu, eu not diphthong: tweeuur and compounds | |||
ei eI | |||
ey eI | |||
eu Y@ | |||
@@ -1135,6 +1144,7 @@ | |||
eufo (rie_N %Y@f%o@ // stress to end: euforie | |||
C) e (uit @_ // fix e and ui sounds: akteuitmaker/druiweuitvoer/woedeuitbarsting and many similar | |||
euntjie Y@iNci // seuntjie/reuntjie | |||
&C) e (uu @_ // split e/uu, eu not diphthong: seweuur and similar | |||
eë e@ // e deelteken-e | |||
&) e (_ @ | |||
m) e (nis @ // geheimenis(vol)/verdoemenis | |||
@@ -1648,6 +1658,7 @@ | |||
geër (_ x2e@@r // oorgeër/pasaangeër | |||
gees (drift x2%e@s // move default stress: geesdriftig and derivatives | |||
@) gegee =x2@x2e@ | |||
gegewens x2@x2e@v@ns // fix e sounds in many compounds: agtergrond-/fossielgegewens/-versameling | |||
gei (+ x2eI // geil and derivatives/geiser/geit/-e | |||
ge (kskeer x2& // gekskeer/gekskeerder/gekskeerdery | |||
geld x2< | |||
@@ -1979,7 +1990,7 @@ | |||
narC) i (ssus 'I // move default stress: Nar(c/s)issus | |||
pub) is (_ @s // restore defaultstress: pubis, excep. to: AC) is (_ | |||
en) is (K @s // stress: beduidenis/bekentenis/gevangenis, etc. | |||
kris) is @s // fix stress: krisis and compounds | |||
kris) i (K @ // fix stress: krisis and compounds/krisisse | |||
pol) is (_ @s // polis and compounds | |||
@ar) is (K =@s // but sekretaris/argivaris/kommissaris/inventarislys/sekretarisvoël/plagiaris | |||
litar) is (+ 'Is // but militaris | |||
@@ -2057,6 +2068,7 @@ | |||
jonge jON@ // jongeling/jongeres | |||
jong (etjie jON // fix e sound: jongetjie/-s | |||
_) jorda (niA j%OrdA: // move default stress: Jordanië/Jordaniese | |||
joule dZu:l // (kilo)joules | |||
junie juni | |||
julie juli | |||
ju (rid j%u // fix stress and u sound: juridies/-e | |||
@@ -2529,6 +2541,7 @@ | |||
mane (wale m%an@ // fix stress and shorten a sound: manewale/-s and compounds | |||
_) mango maNg%u // fix g and o sounds: mangoboord/-sap/-'s | |||
man (haft m%an // move default stress: manhaftig/-e/-heid | |||
mani (ak m%A:n%i // fix stress and 1st a sound: maniak/-ke and compounds | |||
manier m@ni:r //manier and compounds | |||
manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer | |||
manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie | |||
@@ -2568,6 +2581,7 @@ | |||
CA) mme (C m@ | |||
CA) mme (tjie mi // lemmetjie/stemmetjie and similar | |||
miaau m%iaU: // miaau/-end/-e | |||
middagete m'Idax2_e@t@ // middagete/s | |||
midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend | |||
middel (jari m@d@l // move default stress: middeljarig and derivatives | |||
@@ -3309,6 +3323,7 @@ | |||
pape (gaai p%ap@ //papegaai and compounds: stress, a and e sounds | |||
pa (niek p%a // paniek/paniekerig | |||
pantser pants@r // fix e sound in compounds starting with pantser | |||
pap (broekAC p%a // move default stress: papbroekig/papbroekerig/-e/-heid | |||
pa (pier p%a // papier and compounds | |||
pa (pirus p%a // move default stress: papirus and compounds | |||
pappe (ry p%ap@ // move default stress: pappery/-e and compounds | |||
@@ -3980,6 +3995,7 @@ | |||
spesialis spESal'Is | |||
spesi (f sp%Es%I // spesifiek/spesifiseer | |||
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede | |||
ste (laan st@ // fix e sound: eerste-/ag(t)stelaan | |||
%Cel) ste (r st& // fix e sound: dubbelster/-re | |||
Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re | |||
dwaal) ste (r st& // fix e sound: dwaalster/-re | |||
@@ -4289,6 +4305,7 @@ | |||
@) tele (gra t&l@ // fix e sound in compounds: riem-/spoedtelegram/veldtelegraaf, etc. | |||
teleks t&lEks // fix stress and vowel sounds: teleks and compounds | |||
_) teler te@l@r // fix stress and vowel sounds: teler/-s/-y/-svereniging, etc. | |||
@) ten (bach t@n // fix e sound: Breytenbach/Rautenbach | |||
ten (der tEn // fix e sound in compounds: regeringstenders and similar | |||
@) ten (derwyK t@n // fix e sound: spottenderwys/-e/uitsluitenderwys/-e/verkortenderwys/-e | |||
@C) te (nk t& ++ //tenk and friends | |||
@@ -4899,6 +4916,7 @@ | |||
.group y | |||
y eI | |||
%C) y (_ _^_EN // English: Betty/Eddy/Harry/Molly/Penny/Tommy | |||
york j'O:k //new-yorkse and may be others | |||
ysterre (lin eIst@re@ // fix e sound: ysterreling/-s | |||
@@ -4994,7 +5012,6 @@ | |||
! _:eItrup_: | |||
!) ! | |||
$ dOl@r | |||
__) - (_D minWs | |||
A_) - (_D _ | |||
C_) - (_D _ |
@@ -145,27 +145,27 @@ T tS v v# w x z | |||
Dictionary fi_dict | |||
& &i &y @- a a2 ai au | |||
e ei eu ey i I ie iu | |||
iy o oi ou u ui uo Y | |||
y Yi yi Yy yY | |||
& &i &y a a2 ai au e | |||
ei eu ey i I ie iu iy | |||
o oi ou u ui uo Y y | |||
Yi yi Yy yY | |||
* : b d f g h j | |||
k l m n N p r s | |||
S s2 t v Z | |||
: b d f g h j k | |||
l m n N p r s S | |||
s2 t v w Z | |||
Dictionary fr_dict | |||
@ @- @2 @3 a a2 A~ e | |||
E E2 E~ i i: o O o2 | |||
O2 O~ u u: W W2 w^i wA | |||
W~ y Y | |||
@ @- @2 a A~ e E E~ | |||
i I i- i: o O o2 O2 | |||
O~ u u: W W2 w^i wA W~ | |||
y Y | |||
: b d dZ f g h j | |||
k l m n N n2 n^ p | |||
p2 r R r2 s S t t2 | |||
t3 tS v w z Z z2 z3 | |||
p2 r r2 s S t t2 t3 | |||
tS v w z Z z2 z3 | |||
Dictionary grc_dict | |||
@@ -462,6 +462,18 @@ t; ts ts; tS; v x z Z | |||
z; Z; | |||
Dictionary da_dict | |||
& 0 3 @ @- a A e | |||
E i o O u V W y | |||
Y | |||
* : ; b d D f g | |||
h j k l m n N p | |||
r R R3 s S; t tS; v | |||
w | |||
Dictionary sk_dict | |||
& @- a a: e e: i i: | |||
@@ -567,3 +579,14 @@ oi ong ou u ui yu | |||
b c d f g h j k | |||
l m n N p r s t | |||
tS v w z | |||
Dictionary pap_dict | |||
a a/ aI e E eI i o | |||
O u y Y | |||
: ? b d dZ f g h | |||
j k l m n N n^ p | |||
R s S t tS v w x | |||
z Z |
@@ -535,6 +535,7 @@ anemometer anIm'0mI2t3 | |||
anemone a2nEn@mI | |||
anew a2nju: | |||
?3 anew a2nu: | |||
anime anImeI | |||
anion aneI@n | |||
anniversary anIv'3:s@rI | |||
anon a2n0n | |||
@@ -573,6 +574,7 @@ approximate a2pr0ksIm@t $only | |||
approximate a2pr0ksImeIt $verb | |||
arab ar@b | |||
arabic $1 | |||
arable ara2b@L | |||
arcade $2 | |||
arch A@tS | |||
arches A@tSI2z | |||
@@ -759,6 +761,7 @@ charade Sa2rA:d | |||
charismatic karIsm'atIk | |||
charit tSarIt // charitable | |||
chic Si:k | |||
chimpanzee $3 | |||
chisel tSIz@L | |||
chocolate tS0kl@t | |||
cholera k0l@r@ | |||
@@ -843,6 +846,7 @@ contrary k0ntr@rI | |||
contrast k0ntr'ast $verb | |||
contrite k0ntr'aIt | |||
conven k0nv'i:n // convened | |||
convent k0nv@nt | |||
converse $1 $only | |||
converse $verb | |||
convict $1 $onlys | |||
@@ -929,6 +933,7 @@ detente deIt'0nt | |||
détente deIt'0nt | |||
detritus dI2traIt@s | |||
deus deIUs | |||
devotee dEvoUt'i: | |||
di d,I | |||
diabetes daI@b'i:ti:z | |||
diameter daI'amI2t3 | |||
@@ -972,6 +977,7 @@ drier draI3 | |||
driest draI|@st | |||
duet dju:'Et | |||
dugout dVgaUt | |||
dungaree dVNga2r'i: | |||
duvet du:veI | |||
d'ye dj@ | |||
@@ -1007,6 +1013,7 @@ entente 0nt'0nt | |||
entourage 0ntu:rA:Z | |||
entrance $1 $onlys | |||
entrance Entr'aans $verb | |||
entree 0ntreI | |||
envelope Env@loUp $only | |||
envelopes Env@loUps | |||
envelope $verb | |||
@@ -1037,6 +1044,7 @@ everything EvrI2TIN | |||
evildoers i:v@Ldu:3z | |||
ewe ju: | |||
evening i:vnI2N | |||
every Iv3:t | |||
evit EvI2t // inevitable | |||
exalt Egz'0lt | |||
execute EksI2kju:t // not $2 | |||
@@ -1113,6 +1121,7 @@ fortunate fO@tS@n@t | |||
fortune fO@tSu:n | |||
foyer fOIeI | |||
freelance fri:laans | |||
fricassee frIka2seI | |||
frigate frIg@t | |||
fringer frIndZ3 // infringer | |||
fringing frIndZIN | |||
@@ -1181,11 +1190,13 @@ hatred heItrI2d | |||
hazardous haz3d@s | |||
hehe hi:h'i: | |||
heifer hEf@ | |||
heist haIst | |||
helium hi:li@m | |||
helix hi:lIks | |||
hello h@loU | |||
henceforth hEnsfo@T | |||
hercules h3:kjUli:z | |||
heretical hI2rEtI2k@L | |||
hereto hi@3'tu: | |||
hermaphrodite $2 | |||
hermes h3:mi:z | |||
@@ -1288,6 +1299,7 @@ interrogatory $3 | |||
inventory Inv@ntrI | |||
interface $1 | |||
intermin Int'3:mIn // interminable | |||
internee Int'3:ni: | |||
internet Int3nEt | |||
interrupt $1 $onlys | |||
interrupt $3 $verb | |||
@@ -1380,6 +1392,7 @@ losing lu:zI2N // misspell | |||
lukewarm lu:kwO@m | |||
lullaby lVl@baI | |||
lunatic lu:n@tIk | |||
lychee li:tSi: | |||
macabre m@kA:br@ | |||
machete ma2SEtI | |||
@@ -1501,6 +1514,7 @@ necklace nEkl@s | |||
necktie nEktaI | |||
negate nI2geIt | |||
neglect nI2glEkt | |||
negligee nEglIZeI | |||
neon ni:0n | |||
nepenthe nI2pEnTI | |||
nescience nEsI@ns | |||
@@ -1600,6 +1614,7 @@ parabola p@rab@l@ | |||
paralysis p@ral@sIs | |||
parameter p@ramI2t3 | |||
parasite par@saIt | |||
paren pa2rEn // "parenthesis" | |||
pariah p@raI@ | |||
parole pa2r'oUl | |||
passenger pasI2ndZ3 | |||
@@ -1674,6 +1689,7 @@ predicate prEdI2keIt | |||
preface prEf@s | |||
preferably prEf@-r@blI $verbf | |||
prelude prElju:d | |||
premier prEmI3 | |||
preparation prEp@r'eIS@n | |||
prescience pri:si@ns | |||
present prEz@nt $only | |||
@@ -1948,6 +1964,7 @@ slavish sleIvIS | |||
snooker snu:k3 | |||
society s@saI@tI | |||
sofa soUf@ | |||
soiree swA:reI | |||
soldier soUldZ3 | |||
solemn s0l@m | |||
solicit s@lIsI2t // solicited,ing | |||
@@ -2071,6 +2088,7 @@ tonight t@naIt | |||
tonne tVn | |||
tornado tO@n'eIdoU | |||
touche tu:SeI $only | |||
toupee tu:peI | |||
transcript $1 $onlys | |||
transfer $1 $onlys | |||
transfer $verb | |||
@@ -2155,6 +2173,7 @@ veg vEdZ | |||
vegetable vEdZI2t@b@L | |||
vehicle vi@k@L | |||
vegan vi:g@n | |||
veggy vEdZI | |||
vengeance vEndZ@ns | |||
venus vi:n@s | |||
versus v3:sI2z | |||
@@ -2630,6 +2649,7 @@ Zoe zoUI | |||
Andromeda andr'0mId@ | |||
Buchanan bju:k'an@n | |||
Campbell kamb@l | |||
Cthulhu k@-Tu:Lu: | |||
Chrysler kraIzl3 | |||
Disney dIznI | |||
Patel pa2tEl |
@@ -870,6 +870,7 @@ | |||
ar (ia_ 'e@ | |||
@) arily (_ 'Er@l%I | |||
ch) ar (it ar | |||
ph) ar (i ar | |||
m) ar (i @r | |||
m) ar (ig ar | |||
m) ar (inaC ar | |||
@@ -1667,7 +1668,6 @@ | |||
ee (m 'i: | |||
eer 'i@3 | |||
t) ee (n_ 'i: | |||
ees (_ i:z | |||
ch) eese i:z | |||
d) e (fault i: | |||
e (ffec %I | |||
@@ -2182,7 +2182,7 @@ | |||
h) ere (f ErI2 | |||
h) ere (di I2rE | |||
h) ere (s Er@ | |||
h) ere (t I2rE | |||
h) ere (t Er@ | |||
@) er (ence_ r | |||
er (ent_ r | |||
adh) er (e 'i@3 | |||
@@ -2341,9 +2341,10 @@ | |||
st) ev (e i:v | |||
ever (_ Ev3 | |||
ever (c ,Ev3 | |||
ever (g Ev3 | |||
_) ever Ev3 | |||
ever (l ,Ev3 | |||
ever (m ,Ev3 | |||
_) ever (s I2v3: | |||
f) ever (+ i:v3 | |||
?!3 _l) ever i:v3 | |||
cl) ever Ev3 | |||
@@ -2480,7 +2481,7 @@ | |||
K) hl L | |||
&) hold (_S4 hoUld | |||
holme hoUm | |||
_) homeo hoUmi:oU | |||
_) home (o hoUmi: | |||
_) homo (s h,oUmoU | |||
_) homoeo hoUmi:oU | |||
&) hood (_S4 hUd | |||
@@ -2495,6 +2496,7 @@ | |||
house (_S5 haUs | |||
houses (_S6 haUzI2z | |||
_) hypo (@P4 h,aIpoU | |||
_) hypo (cr hIp0 | |||
hypo (de h,aIp@ | |||
hypo (thet h,aIp@ | |||
@@ -3498,6 +3500,7 @@ | |||
_v) o (cA oU | |||
&%C) ock (_ @k | |||
l) o (com ,oU | |||
ocrates (_ '0kra2ti:z | |||
o (cre_ 'oU | |||
cr) o (cu oU | |||
_h) o (cu oU | |||
@@ -4922,6 +4925,7 @@ | |||
un (ani %ju:n | |||
_) under (@P5 ,Vnd3 // prefix | |||
_) un (deP2 ,Vn | |||
_) un (dula Vn | |||
_) un (enP2 ,Vn | |||
_) un (exP2 ,Vn | |||
_) un (ic ju:n | |||
@@ -5130,8 +5134,7 @@ | |||
&) ysis (_ =@sIs | |||
yte (_ aIt | |||
you' %ju: | |||
yu ju: | |||
yu (C% jV | |||
yu (@ ju: | |||
yeo (C joU | |||
y (er_ aI | |||
C) yes (_ aIz | |||
@@ -5202,7 +5205,7 @@ | |||
nak) E (d I | |||
Ee (d i: | |||
EE (_ i: | |||
Ee (_ 'i: | |||
Ee (_ i: | |||
Eer (_ 'i@3 | |||
Ei (n_ i: | |||
Ei (_ aI |
@@ -64,16 +64,16 @@ _] lop:uhaka2 | |||
_{ alkua:lto | |||
_} lop:ua:lto | |||
_< p'ienempIk'uin | |||
_> s'u:*empIk'uin | |||
_> s'u:rempIk'uin | |||
_- vi:va2 | |||
__ ala2vi:va2 | |||
+ plus $max3 | |||
* asteriski $max3 | |||
= 'yht&k'uin $max3 | |||
% p@-*osent:I $max3 | |||
% prosent:I $max3 | |||
/ kaut:a2 | |||
\ keno | |||
€ eu*o | |||
€ euro | |||
£ punta2 | |||
¤ valu:t:a2 | |||
& _et | |||
@@ -81,11 +81,11 @@ __ ala2vi:va2 | |||
~ tilde | |||
_acu 'aku:t:I | |||
_brv b@-*'eve | |||
_brv br'eve | |||
_ced s'edIljI | |||
_cir s'irkumfl,eksI | |||
_dia 'umlaut | |||
_grv g@-*'avIs | |||
_grv gr'avIs | |||
_tld tilde | |||
// numbers | |||
@@ -119,7 +119,7 @@ _8X k'ahdeksank,ymment& | |||
_9X 'yhdeks&mk,ymment& | |||
_0C s'ata:_ | |||
_1C s'ata | |||
_0M1 t'uhata: | |||
_0M1 t'uhat:a | |||
_1M1 t'uhat // no '1' before thousand | |||
_0M2 m'iljo:na: | |||
_1M2 m'iljo:na |
@@ -32,7 +32,8 @@ | |||
c (i s | |||
c (e s // Pronounce c as s. Mostly foreign words such as celcius, center, cervantes, cezanne. | |||
cc k: // Utter cc as k. This includes rebecca, accord, puccini etc. | |||
K) ch (r k | |||
city siti // Pronounce foreign word city as siti. Include all inflections and compound words. | |||
// eg. city, citystä, intercity. | |||
@@ -150,15 +151,13 @@ | |||
.group r | |||
r r | |||
A) r (A * | |||
C) r (A @-* | |||
rr *r | |||
.group s | |||
s s | |||
ss ss2 // [s2] is a continuation for [s] | |||
K) sh S | |||
K) sch S // Schmitt | |||
@) sti (_ sti_X1 // double the initial consonant of the next word | |||
@@ -173,7 +172,7 @@ | |||
.group u | |||
u u | |||
uu u: | |||
ui ui | |||
ui wi | |||
uo uo | |||
@@ -24,7 +24,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated 2009-04-04 Michel Such <[email protected]> | |||
// Updated 2009-05-14 Michel Such <[email protected]> | |||
// | |||
// * Numbers, a few abbreviations and exceptions. | |||
// | |||
@@ -87,7 +87,7 @@ _ac2 dublaksA~tEg'y | |||
_brv br'Ev | |||
_ced sed'ij | |||
_cir aksA~sirkO~fl'Eks | |||
_dia tRem'a | |||
_dia trem'a | |||
_dot pwE~syskr'i | |||
_grv aksA~gr'av | |||
_hac kar'O~ | |||
@@ -102,14 +102,15 @@ _tld t'ild | |||
_cap maZysk'yl | |||
_?A l'Etr | |||
_?? sE~b'Oll | |||
_#9 tabylasjO~ | |||
_#9 tabylasiO~ | |||
_#32 Espas | |||
_" gijmE | |||
_# djEz | |||
_' a2postr'Of | |||
_( 'uvR@-parA~t'Ez | |||
_' apostr'Of | |||
_( 'uvr@-parA~t'Ez | |||
_) f'Erm parA~t'Ez | |||
_, virgyl | |||
_- tirE | |||
@@ -117,39 +118,39 @@ _. _|pw%E~ | |||
_/ bar||oblik | |||
_: d'Y||pw'E~ | |||
_; pwE~||virg'yl | |||
_< E~ferjWr | |||
_< E~feri-Wr | |||
_= egal | |||
_> syperjWr | |||
_> syperi-Wr | |||
_? pwE~||dE~terogasj'O~ | |||
_! pwE~||dEksklamasj'O~ | |||
_[ uvr@-_kroSE | |||
_\ b'aksl'aS | |||
_] f'E2rm_kroS'E | |||
_] f'Erm_kroS'E | |||
_^ sirkOnflEks | |||
__ sulin^e | |||
_` aks'A~_gr'av | |||
_{ uvr_akOlad | |||
_| bar_vErtik'al | |||
_} f'E2rm_akOl'ad | |||
_} f'Erm_akOl'ad | |||
² pw^is'A~s||d'Y | |||
_« uvre||gijm'E | |||
_» fErme||gijm'E | |||
_’ a2postr'Of | |||
_‘ a2postr'Of | |||
_µ mikR'o | |||
_’ apostr'Of | |||
_‘ apostr'Of | |||
_µ mikr'o | |||
_§ sEksj'O~ | |||
// symbols that are normally spoken when reading text | |||
@ _!arobaz | |||
% pursA~ $max3 | |||
& e $u $brk | |||
_& _e_komErsj'al | |||
_& _e_komErsi'al | |||
* asterisk: $max3 | |||
+ plys $max3 | |||
~ tilde | |||
€ @ro | |||
¢ sEnt | |||
¥ jEn | |||
¥ iEn | |||
£ livr | |||
± pl'yz_'u_mw'E~ | |||
× myltipli:'e_p'ar | |||
@@ -163,10 +164,10 @@ _& _e_komErsj'al | |||
// numeric | |||
_0 zero | |||
_0 zero $u+ | |||
_1 W~ | |||
_2 dYz2 | |||
_3 tRwAz2 | |||
_3 trwAz2 | |||
_4 katr | |||
_5 sE~k | |||
_6 siz3 | |||
@@ -176,7 +177,7 @@ _9 nWf | |||
_10 diz3 | |||
_11 _!O~z | |||
_12 duz | |||
_13 tREz | |||
_13 trEz | |||
_14 katOrz | |||
_15 kE~z | |||
_16 sEz | |||
@@ -186,15 +187,15 @@ _19 diznWf | |||
_20 vE~ | |||
_21 vE~te:W~ | |||
_22 vE~tdYz2 | |||
_23 vE~t:tRwAz2 | |||
_23 vE~t:trwAz2 | |||
_24 vE~tkatr | |||
_25 vE~tsE~k | |||
_26 vE~tsiz3 | |||
_27 vE~tsEt | |||
_28 vE~tw^it3 | |||
_29 vE~tnWf | |||
_3X tRA~t | |||
_31 tRA~te:W~ | |||
_3X trA~t | |||
_31 trA~te:W~ | |||
_4X karA~t | |||
_41 karA~te:W~ | |||
_5X sE~kA~t | |||
@@ -202,8 +203,8 @@ _51 sE~kA~te:W~ | |||
_6X swAsA~t: | |||
_61 swAsA~te:W~ | |||
_71 swAsA~te:O~z | |||
_8X katR@vE~: | |||
_80 katR@vE~z2 | |||
_8X katr@vE~: | |||
_80 katr@vE~z2 | |||
_0C sA~ | |||
_1C0 sA~t2 | |||
_0M1 mil | |||
@@ -216,78 +217,95 @@ _dpt virgyl | |||
//some numbers have special pronunciation in Belgium and Switzerland | |||
?2 _7X sEptA~t | |||
?2 _71 sEptA~te:W~ | |||
?2 _9X no2nA~t | |||
?2 _91 no2nA~te:W~ | |||
?2 _9X nonA~t | |||
?2 _91 nonA~te:W~ | |||
(21 ème) vE~te:yniEm | |||
(31 ème) tRA~te:yniEm | |||
(41 ème) karA~te:yniEm | |||
(51 ème) sE~kA~te:yniEm | |||
(61 ème) swAsA~te:yniEm | |||
(81 ème) katR@vE~:yniEm | |||
(21 ème) vE~te:yni-Em | |||
(31 ème) trA~te:yni-Em | |||
(41 ème) karA~te:yni-Em | |||
(51 ème) sE~kA~te:yni-Em | |||
(61 ème) swAsA~te:yni-Em | |||
(81 ème) katr@vE~:yni-Em | |||
// ABBREVIATIONS | |||
//************** | |||
(http ://) aSt,et,ep'e | |||
abc $abbrev | |||
ac $abbrev | |||
adsl $abbrev | |||
adn adeEn | |||
adsl adeEsEl | |||
alt _::alt | |||
amd $abbrev | |||
anpe $abbrev | |||
amd aEmde | |||
anpe aEnpe@ | |||
aol aoEl | |||
api $abbrev | |||
avg $abbrev | |||
avh aveaS | |||
bd boulevard $text | |||
brltty $abbrev | |||
cci $abbrev | |||
cia $abbrev | |||
cio $abbrev | |||
ctrl _::kO~tRol | |||
cpu $abbrev | |||
ctrl _::kO~tro2l | |||
dept depart@-mA~ | |||
edf $abbrev | |||
etc etsetera | |||
ghz ZigaE2rts | |||
divx diviks | |||
edf @deEf | |||
etc Etsetera | |||
ghz ZigaErts | |||
hmm h@m | |||
hz _!E2rts | |||
ibm $abbrev | |||
(http ://) aSt,et,ep'e_ | |||
hz _!Erts | |||
ibm ibeEm | |||
ide $abbrev | |||
ip $abbrev | |||
jaws dZ'awz | |||
ip ipe | |||
irc i:_!Er:se | |||
jaws _^_en | |||
kbit kilobit | |||
kbits kilobit | |||
kde $abbrev | |||
kg kilogram | |||
khz kiloE2rts | |||
khz kiloErts | |||
km kilomètre $text | |||
kw kilowat | |||
kw kilowat | |||
m. m@sjY | |||
mbit mega2bit | |||
mbits mega2bit | |||
m. m@siY | |||
mbit megabit | |||
mbrola Embrola | |||
mhz megaE2rts | |||
mci $abbrev | |||
mhz megaErts | |||
mlle mademoiselle $text | |||
mme madame $text | |||
mr m@sjY | |||
(mp 3) _!Empetrwa | |||
mr m@siY | |||
nsi $abbrev | |||
nsis $abbrev | |||
nti $abbrev | |||
nvda $abbrev | |||
ong $abbrev | |||
ocr oseEr | |||
oem $abbrev | |||
ogm oZeEm | |||
ong oEnZe | |||
pci $abbrev | |||
pda $abbrev | |||
p.s postskriptOm | |||
ratp $abbrev | |||
riscos rIskoEs | |||
sap $abbrev | |||
scsi $abbrev | |||
s.t.p s'il:t'@:pl'E | |||
s.v.p s'il:v'u:pl'E | |||
s.t.p silt@:pl'E | |||
s.v.p silvu:pl'E | |||
st s'E~t2 | |||
ste s'E~t | |||
stp s'il:t'@:pl'E | |||
svp s'il:v'u:pl'E | |||
url $abbrev | |||
usb $abbrev | |||
stp silt@:pl'E | |||
svp silvu:pl'E | |||
tva $abbrev | |||
uk $abbrev | |||
ups ypeEs | |||
url y:ErEl | |||
usb y:Esbe | |||
utc $abbrev | |||
utf $abbrev | |||
u.s y:Es | |||
vip v,i||,aj||p'i | |||
wma $abbrev | |||
xfce iksEfse@ | |||
xy $abbrev | |||
@@ -302,11 +320,11 @@ pr professeur $text *dot $capital | |||
// articles | |||
le $nounf $u+ | |||
le $verbextend $u | |||
le $verb $verbextend $u | |||
la $nounf $u+ | |||
la $verbextend $u | |||
les lez2 $nounf $u= | |||
les lez2 $verbextend $u | |||
la $verb $verbextend $u | |||
les lez2 $nounf $u+ | |||
les lez2 $verb $verbextend $u | |||
un $nounf $u+ | |||
une $nounf $u+ | |||
@@ -315,7 +333,7 @@ une $nounf $u+ | |||
mais $u+ | |||
ou $u $brk | |||
eh $u $brk | |||
et $u $brk | |||
et e $u $brk | |||
ni $u $brk | |||
car $u $brk | |||
car $noun | |||
@@ -340,8 +358,8 @@ que $u+ | |||
(parce que) parsk@ $u+ | |||
(parce qu'il) parskil $u+ | |||
(parce qu'ils) parskilz2 $u+ | |||
(parce qu'elle) parskE2l $u+ | |||
(parce qu'elles) parskE2lz2 $u+ | |||
(parce qu'elle) parskEl $u+ | |||
(parce qu'elles) parskElz2 $u+ | |||
(parce qu'on) parskO~n2 $u+ | |||
tant tA~t2 $u+ | |||
qui $verbf $u+ | |||
@@ -421,7 +439,7 @@ aux $u | |||
autour otur $u+ | |||
autre $u+ | |||
autres $u+ | |||
dans $u+ | |||
dans dA~z2 $u+ | |||
vers vEr $u+ | |||
vers $noun | |||
en $u+ | |||
@@ -442,15 +460,17 @@ plusieurs $u+ | |||
durant $u+ | |||
avec $u+ | |||
sans $u+ | |||
trop $u+ | |||
trop trop2 $u+ | |||
assez $u+ | |||
beaucoup $u+ | |||
beaucoup bokup2 $u+ | |||
peu $u+ | |||
très $u | |||
très $u+ | |||
près $u+ | |||
loin $u+ | |||
// negative | |||
ne $u $verbf | |||
pas p'a2z2 | |||
pas p'az2 $u+ | |||
pas pa $noun | |||
plus $u+ | |||
guère $u+ | |||
@@ -517,6 +537,9 @@ d'est d'Est | |||
// some common adjectives and adverbs | |||
quel $u+ | |||
quelle $u+ | |||
quelles $u+ | |||
quelque $u+ | |||
quelques $u+ | |||
tel $u+ | |||
@@ -526,7 +549,7 @@ tout t'ut2 $u+ | |||
toute t'ut $u+ | |||
toutes t'utz2 $u+ | |||
tous $u+ | |||
rien ri'E~n2 $u+ | |||
rien ri-'E~n2 $u+ | |||
// Letters which can be words | |||
//=========================== | |||
@@ -570,29 +593,35 @@ montréal mO~real | |||
(n'est ce pas) n'Es@-||p'az2 | |||
(qu'est ce que) kEsk@ $u | |||
absent absA~ | |||
adam adA~ | |||
adams adams | |||
admin admin | |||
adsltv $abbrev | |||
airbus E2rbys | |||
adsltv adeEs'El||tev'e | |||
airbus Erbys | |||
alan alan | |||
auvent ovA~ | |||
bien bjE~n2 $u+ | |||
bien bi-E~n2 $u+ | |||
bis bis | |||
bissus bisys | |||
bus bys | |||
bus by $verb | |||
campus kA~pys | |||
cancer kA~sEr | |||
canyon kanjO2n | |||
(chef d'oeuvre) chédeuvre $text | |||
(chef d'oeuvres) chédeuvres $text | |||
choeur kWr | |||
cocus koky | |||
couscous kuskus | |||
dernier dE2rnjer2 | |||
dernier dErnjer2 | |||
éloquent ElokA~t2 | |||
fan f'an | |||
enfer A~fEr | |||
faut fot2 $u+ | |||
fier fier $verb | |||
fier fjer $verb | |||
free fri: | |||
fuel fjul | |||
gars ga | |||
gin dZin | |||
gulf gWlf | |||
gym Zim | |||
hélas elas $u+ | |||
iris iris | |||
@@ -601,22 +630,26 @@ malus malys | |||
mailto mEjltu_ | |||
mapper _^_en | |||
mars mars | |||
mieux mjY $u+ | |||
merguez mErgEz | |||
mieux mi-Y $u+ | |||
mrs _^_en | |||
ours urs | |||
parangon parA~gO~ | |||
pataquès patakEs | |||
phallus falys | |||
polder pOldEr | |||
premier pr@mjer2 | |||
program _^_en | |||
(program files) program||fajlz | |||
quit _^_en | |||
recorder ricordeur $text | |||
scanner skaner2 | |||
scanner skaner2 $verb | |||
scanner skanWr $noun | |||
scanners skanWr | |||
sir _^_EN | |||
souris suri | |||
sus sys | |||
sus sy $verb | |||
to _^_en | |||
tuttiquanti tutikw'anti | |||
vaut $u+ | |||
vaux $u+ | |||
@@ -645,7 +678,7 @@ rut ryt | |||
scorbut skOrbyt | |||
scout skut | |||
stout staut | |||
uppercut ypE2rkyt | |||
uppercut ypErkyt | |||
ut yt | |||
zut zyt | |||
@@ -662,13 +695,13 @@ margaret margarEt | |||
net nEt | |||
offset OfsEt | |||
set sEt | |||
soviet sOvjEt | |||
soviet sOviEt | |||
// urt (t is said) | |||
kurt kurt | |||
yaourt jaurt | |||
yoghourt yogurt | |||
yogourt yogurt | |||
yaourt iaurt | |||
yoghourt iogurt | |||
yogourt iogurt | |||
// ort (t said) | |||
short SOrt | |||
@@ -681,7 +714,6 @@ kart kart | |||
smart smart | |||
// irt | |||
flirt flWrt | |||
(sweat shirt) swEtSWrt | |||
(tee shirt) tiSWrt | |||
@@ -705,9 +737,9 @@ emacspeak Emakspi:k | |||
end _^_en | |||
epson EpsOn | |||
espeak @spi:k | |||
ethernet etE2rnEt | |||
ethernet etErnEt | |||
exit egzit | |||
(file zilla) fa2jl||zija | |||
(file zilla) fajl||zija | |||
from frO2m $u+ | |||
get _^_en | |||
google gu:gWl | |||
@@ -718,7 +750,7 @@ help _^_en | |||
hot _^_en | |||
in _^_en | |||
inside _^_en | |||
(internet explorer) E~tErn'Et||Eksplo2r'Wr | |||
(internet explorer) E~tErn'Et||Eksplor'Wr | |||
klaxon klaksOn | |||
let _^_en | |||
lite _^_en | |||
@@ -728,11 +760,13 @@ logon _^_en | |||
made _^_en | |||
media medja | |||
messenger mesEnZWr | |||
my _^_en | |||
my maj | |||
nat nat | |||
not _^_en | |||
null _^_en | |||
ok o2ke | |||
open o2p'Wn | |||
ok oke | |||
open op'Wn | |||
(open source) op,Wn||s'urs | |||
outlook autlu:k | |||
paint _^_en | |||
paper _^_en | |||
@@ -752,7 +786,7 @@ yes _^_en | |||
constations kO~statjO~z2 | |||
contentions kO~tA~tjO~z2 | |||
dations datjO~z2 | |||
désertions dezE2rtjO~z2 $verb | |||
désertions dezErtjO~z2 $verb | |||
exploitions EksplwAtjO~z2 | |||
heurtions hWrtjO~z2 | |||
partions partjO~z2 | |||
@@ -775,7 +809,7 @@ bélarus belarys | |||
(burkina faso) burkina||faso | |||
burundi burundi | |||
croatie kroasi | |||
groenland gRoEnlA~d | |||
groenland groEnlA~d | |||
guatemala gwAtemala | |||
honduras _!O~dyras | |||
kenya kenja | |||
@@ -798,6 +832,3 @@ wallis wAlis | |||
futuna futuna | |||
zimbabwe zimbabwe | |||
@@ -23,7 +23,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated: 2009-04-01 Michel Such <[email protected]> | |||
// Updated: 2009-05-14 Michel Such <[email protected]> | |||
// | |||
// Letter classes: | |||
@@ -35,6 +35,7 @@ | |||
.L01 d e l n r t u | |||
.L02 b c d f g h k p t v | |||
.L03 d l m n s t v | |||
.L04 c d f g l m n v | |||
.group a | |||
@@ -63,6 +64,9 @@ | |||
_) am (n am // amnistie | |||
am (n a // condamner | |||
_L04) an (_ an | |||
_h) an (_ an | |||
_) anti (@@P4 A~ti | |||
_) arché (@P5 arke // archéologue | |||
_) archéo (@P6 arkeo // archéologue | |||
_) arch (aP4 ark // archange | |||
@@ -131,7 +135,9 @@ | |||
or) ch (esC k // orchestre | |||
or) ch (iC k // orchidée | |||
_) ch (ao k // chaos, chaotique | |||
_) ch (or k // chorale | |||
_) ch (orA k // chorale | |||
_) ch (oriz S | |||
_) ch (oro S | |||
te) ch (_ k | |||
ch (r k // chrétien | |||
_) chrono (@P6 kro2no | |||
@@ -150,7 +156,7 @@ | |||
ban) c (_ // banc | |||
blan) c (_ // blan | |||
Con) c (_ // tronc, jonc | |||
_don) c (_ k // tronc, jonc | |||
_don) c (_ k // donc | |||
cler) c (_ // leclerc | |||
tchou) c (_ | |||
taba) c (_ | |||
@@ -158,12 +164,12 @@ | |||
se) c (ond g // seconde secondaire | |||
c k // recoin donc | |||
s) cien (t jA~ // conscient scientifique | |||
cient (_ sit2 // ils appr�ient, remercient. | |||
effi) cien (t sjA~ // coefficient | |||
défi) cien (t sjA~ // déficient | |||
cast (_S4 kast // podcast | |||
casts (_S5 kast // podcasts | |||
_) clown klun | |||
// group c: English section | |||
n) ch (_ _^_en // french | |||
@@ -193,6 +199,7 @@ _) ç' (P2v s | |||
lor) d (_ d | |||
au) d (_ | |||
oi) d (_ | |||
ou) d (_ | |||
dt (_ t // Schmidt | |||
_ni) d (_ // nid | |||
@@ -214,26 +221,24 @@ _) ç' (P2v s | |||
// Define use of the final 'e' in french | |||
e (_ | |||
rch) e (_ =@3 | |||
rch) e (s_ =@3 | |||
elqu) e =@3 | |||
elqu) e =@ | |||
uisqu) e =@ | |||
rsqu) e =@ | |||
_C) e (_ @2 // je te | |||
-c) e (_ @- | |||
-j) e (_ @- | |||
C) e (- @- | |||
L02r) e (_ =@3 | |||
L02r) e (s_ =@3 | |||
e (Ce_ E | |||
eau o // bateau cheveaux | |||
g) ea (s_ a // mangeas | |||
gh) e (tAX e // spagheti | |||
j) e (a // Jean Jeanne | |||
p) ect (_ E // suspect | |||
ect (_ Ekt // direct | |||
pi) ed (_ e // pied | |||
_cl) ef (_ e // clef | |||
_) ein (K En // peindre | |||
ein (K E~ // peindre | |||
CC) ein (_ E~n2 // plein emploi | |||
e (il E // vieille | |||
@@ -447,7 +452,8 @@ _) en (A A~n // enivrer | |||
-) est (_ Est // -est | |||
dg) et (_ Et // Bridget, gadget | |||
Ack) et (_ Et | |||
k) et (_ Et | |||
tick) et (_ E | |||
m) et (_ Et2 | |||
eu Y // eu | |||
@@ -519,10 +525,13 @@ _) en (A A~n // enivrer | |||
e @ // menue | |||
_) e (CA e | |||
_) e (xA E | |||
Cr) eam i:m | |||
Cr) eamer i:mWr | |||
Cl) eaner i:nWr | |||
vert) e (rX W | |||
eïn (_ 'Ein | |||
_y) en (_ En | |||
iew) er (X er2 | |||
// group e: English section | |||
@@ -549,7 +558,7 @@ _) en (A A~n // enivrer | |||
.group è | |||
Z) ème iEm | |||
Z) ème i-Em | |||
è E | |||
@@ -579,6 +588,7 @@ _) en (A A~n // enivrer | |||
gg g // agglomérer | |||
ai) gni n^ // craignions châtaignier | |||
gn n^ // agneau | |||
gn (ie n // comagnie | |||
_quatrevin) gts (_ z2 | |||
vin) gt (_A t // liaison: vingt ans | |||
@@ -612,7 +622,6 @@ _) en (A A~n // enivrer | |||
// group g: English section | |||
_) game (X _^_en | |||
@@) gate (X _^_en | |||
girl _^_en // girl | |||
gy (_ _^_en | |||
@@ -673,28 +682,30 @@ _) half _^_en | |||
.group i | |||
i i // cri | |||
i (A i | |||
i (o j | |||
i (è j | |||
i (eu j | |||
_f) i (a i: | |||
l) i (a i: | |||
C) i (A i- | |||
C) i (onK j | |||
r) i (onK i- | |||
C) i (erA i | |||
l) i (A i | |||
_) i (A i- | |||
C) i (e_ i | |||
C) i (es_ i | |||
Cr) i (a i: | |||
_Cr) i (A i: | |||
Cr) i (é i: | |||
Cr) i (er_ i: | |||
rr) i (er_ j | |||
rr) i (er_ i- | |||
C) ien (t_ i | |||
dév) ien (t_ i | |||
t) ien (K_ jE~ // tient | |||
v) ien (K_ jE~ // vient | |||
at) ien (t_ jA~ // patient | |||
cip) ien (C jA~ // récipient | |||
dév) ien (t_ i- | |||
t) ien (K_ i-E~ // tient | |||
v) ien (K_ i-E~ // vient | |||
at) ien (t_ i-A~ // patient | |||
cip) ien (C i-A~ // récipient | |||
cl) ien (C i:A~ // client | |||
mol) ien (C jA~ // émolient | |||
vén) ien (C jA~ // inconvénient | |||
or) ien (t jA~ // orient, orienter | |||
ot) ien (t_ jA~ // quotient | |||
mol) ien (C i-A~ // émolient | |||
vén) ien (C i-A~ // inconvénient | |||
or) ien (t iA~ // orient, orienter | |||
ot) ien (t_ i-A~ // quotient | |||
i (e_ i | |||
_) ill ill // illégal | |||
@@ -730,17 +741,21 @@ _) half _^_en | |||
_) intra (neP5 E~tra | |||
_) intra (uP5 E~tra | |||
C) is (_ i | |||
fl) irt W2rt | |||
otl) i (neX aj | |||
onl) i (ne_ aj | |||
offl) i (ne_ aj | |||
// group i: English section | |||
ibuter (X _^_en | |||
iev _^_en | |||
ife (_ _^_en | |||
igh _^_en | |||
ind (_ _^_en // find, mind | |||
_C) ind (er_ _^_en // finder, reminder | |||
_AC) ind (er_ _^_en // finder, reminder | |||
ind (X _^_en // find, mind | |||
_C) ind (erX _^_en // finder | |||
AC) ind (erX _^_en // reminder | |||
ize (X _^_en // realize | |||
dr) i (ve _^_en | |||
dr) i (veX _^_en | |||
ram_f) i (le _^_en | |||
@@ -773,7 +788,8 @@ _) half _^_en | |||
// group k: English section | |||
ke (X _^_en // basket, make, take | |||
ke (rX _^_en // basket, make, take | |||
ke (nX _^_en // basket, make, take | |||
.group l | |||
l l // lit | |||
@@ -788,14 +804,16 @@ _) half _^_en | |||
// group l: English section | |||
less (_ _^_en // noiseless | |||
_) live _^_en | |||
@) loud (_ _^_en | |||
ll (X _^_en | |||
.group m | |||
m m // film | |||
mm m // pomme | |||
_) m'(P2v m | |||
_) mc (P2 mak | |||
_) ms (P2 Em_!Es | |||
_) m' (P2v m | |||
_) mc (@P2 mak | |||
_) ms (P2 EmEs | |||
master (_S6 mastWr | |||
// group m: English section | |||
@@ -821,19 +839,29 @@ _) half _^_en | |||
cr) oc (_ o // escroc | |||
o (ckK O2 | |||
o (CerA O2 | |||
n) od (_ o // Pernod | |||
_) o (ff O2 | |||
o (lC O2 | |||
o (ll O | |||
o (C% O | |||
o (C%eCA O2 | |||
om (merA O2 | |||
_) on (l O2n | |||
on (n O | |||
ls) on (_ O2n | |||
Cst) on (_ O2n | |||
on (nerA O2 | |||
o (rC O2 | |||
o (rX O2 | |||
_) os (_ Os | |||
_v) os (gY o2 | |||
o (sC O2 | |||
o (ss O | |||
o (sseCA O2 | |||
s_) os (_ o | |||
x_) os (_ o | |||
C) o (se_ o2 | |||
C) o (ses_ o2 | |||
o (C%ement_ O2 | |||
o (tC O2 | |||
o (Che@ O2 | |||
o (Cement_ O2 | |||
o (t_ o | |||
@@ -856,7 +884,8 @@ _) half _^_en | |||
o (eC o // coefficient | |||
_l) o (gi o2 | |||
_p) o (ten o2 | |||
_L02r) o (L02 o2 | |||
_L02r) o (L02C O | |||
_L02r) o (t_ o | |||
_C) o (teri O2 | |||
_) oi (gnon o // oignons | |||
oin (C wE~ | |||
@@ -867,9 +896,11 @@ _) half _^_en | |||
oî wA // boîte | |||
om (C O~ // bombe | |||
om (m O // nommer | |||
_) om (n O2m // omnibus | |||
om (ni O2m // omnibus | |||
n) om (X O~ // nom | |||
om (_ Om // www.web.com | |||
s) om (n O2m | |||
on (K O~ // mon | |||
on (t_ O~t2 // mont vont sont | |||
_m) ont (pAC O~ // Montpellier | |||
@@ -889,10 +920,8 @@ _) half _^_en | |||
_sir) op (_ o // sirop | |||
_tr) op (_ op2 // trop | |||
v) ost (_ o // Prévost | |||
_C) oup (_ u // coup, loup | |||
uC) oup (_ up2 // beaucoup | |||
ou u // hibou brouillard | |||
@@ -900,10 +929,12 @@ _) half _^_en | |||
oû u // coûter | |||
oyes (_ wA // troyes | |||
oy (A wAj // noyer voyelles | |||
_y) o (y o | |||
oy wA // roy | |||
o (_ o // zorro allégro | |||
o (z_ o // berlioz | |||
o O | |||
_sC) ot O2t | |||
// group o: English section | |||
@@ -917,7 +948,6 @@ C) oing (_ _^_en // going | |||
ook _^_en // book, cook | |||
C) oot _^_en // bootable football | |||
_) one _^_en | |||
_sC) ot _^_en | |||
oun (C _^_en // bounce, found | |||
_) over _^_en // over | |||
ow _^_en // cow, town, down | |||
@@ -931,7 +961,7 @@ C) oing (_ _^_en // going | |||
.group p | |||
p p // pas | |||
_) para (CCP4 para | |||
_) para (pCP4 para | |||
_) photo (@P5 fo2to | |||
_) poly (@P4 poli | |||
_) post (KP4 pO2st | |||
@@ -982,7 +1012,7 @@ C) oing (_ _^_en // going | |||
dé) qua kwA // adequate | |||
_) qua (rtz kwA // quartz | |||
qu k // quatre | |||
_) que (_ k@ // que | |||
_) que (_ k@2 // que | |||
n) q (_ k // cinq cent | |||
// group q: English section | |||
@@ -990,20 +1020,20 @@ C) oing (_ _^_en // going | |||
.group r | |||
L02) r R | |||
_su) rr rr // surréaliste | |||
_su) rr rr // surréaliste | |||
cou) rr rr // courrai | |||
cou) rr (i r // courrier | |||
mou) rr rr // mourrai | |||
rr r // erreur | |||
r r // rien | |||
rr r | |||
_) radio (@P5 radio | |||
// group r: English section | |||
_) real _^_en | |||
rese _^_en | |||
rst (_ _^_en | |||
_) rule _^_en | |||
.group s | |||
@@ -1023,7 +1053,6 @@ mou) rr rr // mourrai | |||
sch S // schéma | |||
dé) sh (A z // déshabiller | |||
sh S // shérif | |||
CA) sh (_ _^_en // punish | |||
ss s // assez | |||
ai) s (em s // vraisemblable | |||
@@ -1036,13 +1065,14 @@ mou) rr rr // mourrai | |||
A) s (A z // baiser | |||
A) s (oft s // microsoft | |||
A) s (ol_ s // tournesol | |||
_anti) s (A s // antisocial | |||
_) socio (@P5 sosio | |||
_) super (@@P5 sypEr | |||
_) super (_ sypEr | |||
_) supra (@P5 sypra | |||
batro) s (_ s | |||
océro) s (_ s | |||
scien (t si-A~ // conscient scientifique | |||
sql (_S3 EskyEl | |||
_u) s (_ s | |||
@@ -1050,6 +1080,7 @@ mou) rr rr // mourrai | |||
Abu) s (_ s | |||
_Abu) s (_ | |||
mbu) s (_ s | |||
_cACpu) s (_ s | |||
Acu) s (_ s | |||
écu) s (_ | |||
asu) s (_ s | |||
@@ -1095,6 +1126,7 @@ _tou) s (_Cos_ | |||
_tou) s (_leurs_ | |||
// group s: English section | |||
CA) sh (_ _^_en // punish | |||
sh (_ _^_en | |||
sh (Ap _^_en // shop, ship | |||
sh (At _^_en // shut, shot | |||
@@ -1230,9 +1262,9 @@ A) t (- t2 | |||
g) ueill Wj // orgueilleux | |||
g) ueil (_ Wj // orgueil | |||
C) u (bX W // hub, club | |||
C) u (gX W // bug, mug | |||
_n) u (rse W2 // nurse | |||
r) u (nX W // run, autorun | |||
um (_ Om // album | |||
f) um (_ W~ // parfum | |||
@@ -1242,10 +1274,7 @@ A) t (- t2 | |||
CC) un (_ W~ // brun | |||
uc) un (_ W~n2 // aucun | |||
un (_ W~n2 // un avion | |||
_f) un @n // fun | |||
_g) un @n // gun | |||
_r) un @n // run | |||
_s) un @n // sun, sunday | |||
_h) un (_ W~ // hun | |||
fl) ux (_ y // flux, reflux | |||
g) u (A // fatigue | |||
@@ -1259,6 +1288,8 @@ A) t (- t2 | |||
ump (_ _^_en | |||
unch _^_en | |||
under _^_en // under, understand, thunder | |||
_C) un (_ _^_en | |||
_C) un (n _^_en | |||
_) up (C _^_en // upper, update | |||
up (_ _^_en // setup | |||
urn (X _^_en // burn, turn | |||
@@ -1275,8 +1306,10 @@ A) t (- t2 | |||
.group v | |||
v v | |||
vers (_ vErz2 | |||
_) view (X vju | |||
_) view (A vjuv | |||
// goup v: English section | |||
// group v: English section | |||
voice (X _^_en | |||
void (_ _^_en | |||
vy (_ _^_en | |||
@@ -1287,7 +1320,7 @@ A) t (- t2 | |||
w (agon v // wagon | |||
// group w: English section | |||
A) w _^_en | |||
e) w _^_en | |||
wa (Ce_ _^_en // hardware software wave | |||
_) wan _^_en | |||
wr _^_en // write | |||
@@ -1301,6 +1334,7 @@ A) t (- t2 | |||
.group x | |||
x ks | |||
_) x (A gz // xylophone | |||
_) x (CP1 iks // xylophone | |||
xml (_S3 _!iksEmEl | |||
e) x (A gz // exagérer exemple | |||
L03e) x (A ks // annexe, vexer | |||
@@ -1331,9 +1365,9 @@ A) t (- t2 | |||
y i // cryogénique myope | |||
_) y (A j // yak, yacht | |||
_) yacht _^_en // yacht, yachtman | |||
_) y (eu i // yeux | |||
_) y (eu i- // yeux | |||
_) yahoo (P5 ia'u | |||
_) yahoo (P5 i-a'u | |||
ym (b E~ // symbolique | |||
ym (p E~ // tympan | |||
ym (_ E~ // thym | |||
@@ -1382,4 +1416,3 @@ A) t (- t2 | |||
@@ -81,7 +81,7 @@ z zi51 | |||
ㄩ y55 | |||
$textmode | |||
// Most frequent pronunciations of the 3799 most common characters (from Unihan database ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip, kHanyuPinlu field) | |||
// Most frequent pronunciations of the 3799 most common characters (from Unihan database ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip, kHanyuPinlu field with some corrections) | |||
涉 she4 | |||
礦 kuang4 | |||
河 he2 | |||
@@ -380,7 +380,7 @@ $textmode | |||
业 ye4 | |||
譬 pi4 | |||
觀 guan1 | |||
勒 lei1 | |||
勒 le4 | |||
牽 qian1 | |||
缎 duan4 | |||
抛 pao1 | |||
@@ -1104,7 +1104,7 @@ $textmode | |||
搭 da1 | |||
簽 qian1 | |||
乱 luan4 | |||
長 zhang3 | |||
長 chang2 | |||
逐 zhu2 | |||
苇 wei3 | |||
鲸 jing1 | |||
@@ -1308,7 +1308,7 @@ $textmode | |||
盤 pan2 | |||
鞏 gong3 | |||
袱 fu5 | |||
甸 dian1 | |||
甸 dian4 | |||
妻 qi1 | |||
晚 wan3 | |||
繪 hui4 | |||
@@ -1663,7 +1663,7 @@ $textmode | |||
各 ge4 | |||
箱 xiang1 | |||
蘸 zhan4 | |||
李 li5 | |||
李 li3 | |||
肌 ji1 | |||
催 cui1 | |||
取 qu3 | |||
@@ -3049,7 +3049,7 @@ $textmode | |||
額 e2 | |||
論 lun4 | |||
照 zhao4 | |||
长 zhang3 | |||
长 chang2 | |||
猪 zhu1 | |||
纷 fen1 | |||
虜 lu3 | |||
@@ -3331,7 +3331,7 @@ $textmode | |||
络 luo4 | |||
怎 zen3 | |||
細 xi4 | |||
干 gan4 | |||
干 gan1 | |||
腸 chang2 | |||
說 shuo1 | |||
丽 li4 | |||
@@ -3394,7 +3394,7 @@ $textmode | |||
台 tai2 | |||
侍 shi4 | |||
領 ling3 | |||
煞 sha1 | |||
煞 sha4 | |||
奮 fen4 | |||
礙 ai4 | |||
盜 dao4 |
@@ -1,7 +1,7 @@ | |||
59 phoneme tables | |||
60 phoneme tables | |||
new total | |||
base 103 103 | |||
base2 24 122 | |||
base2 26 124 | |||
en 50 149 | |||
en_n 32 149 | |||
en_us 37 150 | |||
@@ -15,8 +15,8 @@ | |||
eo 13 115 | |||
jbo 4 116 | |||
fi 40 134 | |||
fr 55 141 | |||
fr_ca 11 141 | |||
fr 53 140 | |||
fr_ca 11 140 | |||
hi 60 149 | |||
ta 17 152 | |||
hu 23 119 | |||
@@ -29,16 +29,16 @@ | |||
mk 3 141 | |||
sr 14 140 | |||
ru 39 134 | |||
it 17 125 | |||
it 17 127 | |||
la 21 121 | |||
es 9 123 | |||
es_la 1 123 | |||
ca 11 125 | |||
pt 28 139 | |||
pt_pt 20 139 | |||
es 9 125 | |||
es_la 1 125 | |||
ca 11 127 | |||
pt 28 140 | |||
pt_pt 20 140 | |||
ro 36 146 | |||
el 8 122 | |||
grc 12 127 | |||
el 8 124 | |||
grc 12 128 | |||
sv 25 125 | |||
no 28 129 | |||
is 33 129 | |||
@@ -47,18 +47,19 @@ | |||
zh 66 154 | |||
sw 14 112 | |||
tr 18 127 | |||
ku 18 127 | |||
id 15 124 | |||
ku 18 128 | |||
id 15 126 | |||
sq 35 127 | |||
hy 24 119 | |||
rw 15 129 | |||
rw 15 131 | |||
ml 13 151 | |||
kn 15 151 | |||
bn 59 155 | |||
ne 18 157 | |||
mr 1 149 | |||
mr 12 149 | |||
om 25 125 | |||
eu 6 124 | |||
eu 6 125 | |||
da 21 118 | |||
Data file Used by | |||
b/b [b] base | |||
@@ -432,25 +433,22 @@ l/l_3 [l/] de | |||
l/l_4 [ll] sq | |||
l/la [(a)] base | |||
[a] fr | |||
[a2] fr | |||
l/l_a [(a)] base | |||
[a] fr | |||
[a2] fr | |||
[wA] fr | |||
[A~] fr | |||
l/le [(e)] base | |||
[E] fr | |||
[e] fr | |||
[E2] fr | |||
l/l_e [(e)] base | |||
[E] fr | |||
[E2] fr | |||
l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
l/l_front_ [l/4] sq | |||
l/li [(i)] base | |||
[i] fr | |||
[i-] fr | |||
[i:] fr | |||
[l] zh | |||
l/l_i [(i)] base | |||
@@ -580,20 +578,15 @@ r3/r_ [r/] base | |||
[r/] af | |||
[r/] ru | |||
r3/r_@ [(@)] base | |||
[@2] fr | |||
r3/r#_ [r#] is | |||
r3/r_2 [r/2] fr | |||
r3/r_a [(a)] base | |||
r3/r_e [(e)] base | |||
r3/r_i [(i)] base | |||
[i] fr | |||
[w^i] fr | |||
r3/r_n [r/] base | |||
[r/2] fr | |||
[r/] ru | |||
r3/r_o [(o)] base | |||
[O] fr | |||
[O2] fr | |||
r3/r_ru [R4] ru | |||
r3/r_ru2 [R4] ru | |||
r3/r_sr [r.] bn | |||
@@ -614,20 +607,22 @@ r3/r_trill2.wav [R] base | |||
r3/r_trill3.wav [R3] base | |||
[r] af | |||
[r] nl | |||
r3/r_trill_short [r] fi | |||
r3/r_trill.wav [R2] base | |||
[r] fi | |||
[R2] lv | |||
[R] pl | |||
[r*] sr | |||
[x] pt | |||
r3/r_u [(u)] base | |||
r3/r_uvl [r"] base | |||
[R2] da | |||
r3/r_uvl.wav [r"] base | |||
[R2] da | |||
r3/rx [*] base | |||
[r/] base | |||
[r/] af | |||
[R] fr | |||
[r] fr | |||
[r2] fr | |||
[r/2] fr | |||
[R] fr_ca | |||
[r/] ru | |||
@@ -640,6 +635,7 @@ r3/rz_cs [R^] sk | |||
r3/@tap [**] base | |||
r3/@tap2 [**] base | |||
r3/@tap_rfx [r.] base | |||
r/a_ [r] da | |||
r/r [r] base | |||
[r-] base | |||
[r] en_sc | |||
@@ -650,7 +646,6 @@ r/_r [r] base | |||
r/r_ [r] base | |||
[r] en_sc | |||
[r] de | |||
[r] fi | |||
[r2] nl | |||
[r] ru | |||
[r] ro | |||
@@ -664,7 +659,6 @@ r/ro [(o)] base | |||
r/rr [r/] base | |||
[r/] af | |||
[r] de | |||
[r] fi | |||
[r2] nl | |||
[r] ru | |||
[r/] ru | |||
@@ -677,7 +671,6 @@ r/tr [r] base | |||
r/trr [r/] base | |||
[r/] af | |||
[r] de | |||
[r] fi | |||
[r2] nl | |||
[r] ru | |||
[r/] ru | |||
@@ -690,18 +683,8 @@ r/xr [(@)] base | |||
[(i)] base | |||
[(o)] base | |||
[(u)] base | |||
[@] fr | |||
[Y] fr | |||
[e] fr | |||
[i] fr | |||
[o] fr | |||
[u] fr | |||
[y] fr | |||
[a2] fr | |||
[o2] fr | |||
[i:] fr | |||
[u:] fr | |||
[wA] fr | |||
[a] fr | |||
[A~] fr | |||
ufric/ch [C] base | |||
[J^] base | |||
@@ -801,6 +784,7 @@ ufric/x_sr [h] sr | |||
[x] sr | |||
ufric/xx [X] base | |||
[Q"] base | |||
[R] da | |||
ustop/c [c] base | |||
ustop/c_ejc [c`] om | |||
ustop/k [k] base | |||
@@ -860,7 +844,6 @@ ustop/kr [k] base | |||
[k] base2 | |||
[k] en | |||
[k] fi | |||
[k] fr | |||
[kh] hi | |||
[k] hu | |||
[k] lv | |||
@@ -1165,6 +1148,7 @@ vdiph/aau_3 [aU] hi | |||
[aU] kn | |||
[aU] bn | |||
[aU] ne | |||
[aU] mr | |||
vdiph/aau_4 [aU] vi | |||
vdiph/ae [E:] fr_ca | |||
[aI] la | |||
@@ -1191,6 +1175,7 @@ vdiph/ai_6 [aI] en_rp | |||
vdiph/ai_7 [aI] en_sc | |||
[aI2] en_sc | |||
[aI] is | |||
[aI] mr | |||
vdiph/aoo [aU] en_us | |||
vdiph/au [aU] en | |||
[aU] af | |||
@@ -1302,7 +1287,6 @@ vdiph/@u_en [oU] en | |||
[@U] id | |||
vdiph/ui [uI] base2 | |||
[uI] eo | |||
[ui] fi | |||
[ui] lv | |||
[uI] vi | |||
[ui] zhy | |||
@@ -1311,6 +1295,7 @@ vdiph/u-i [yI] vi | |||
vdiph/ui_2 [uI] af | |||
vdiph/ui_3 [uI] cy | |||
[uY] cy | |||
vdiph/ui_4 [ui] fi | |||
vdiph/Vi [VI] ne | |||
vdiph/Vu [@U] af | |||
[VU] ne | |||
@@ -1332,8 +1317,8 @@ vdiph/y#y_3 [Y:] nl | |||
vnasal/aa_n [a~] hi | |||
[a~] bn | |||
vnasal/aa_n2 [A~] en | |||
[A~] fr | |||
vnasal/aa_n3 [A~] af | |||
vnasal/aa_n4 [A~] fr | |||
vnasal/a#_n [&~] pt | |||
vnasal/a#u_n [&U~] pt | |||
[&U~] pt_pt | |||
@@ -1360,7 +1345,7 @@ vnasal/o_n [o~] hi | |||
[o~] pt | |||
[o~] bn | |||
vnasal/o_n2 [o~] af | |||
vnasal/o_n3 [O~] fr | |||
[O~] fr | |||
vnasal/oo_n [O~] en | |||
vnasal/oo_n2 [O~] hi | |||
[o] zh | |||
@@ -1391,6 +1376,7 @@ voc/Q_ [Q] base | |||
voc/Q_less [Q] nl | |||
[x2] pt | |||
voc/Q_ulv [Q"] base | |||
[R] da | |||
voc/v [v] base | |||
[v] fi | |||
[v] fr | |||
@@ -1400,6 +1386,7 @@ voc/v [v] base | |||
[v;] ro | |||
[v] is | |||
[v] bn | |||
[v] da | |||
voc/v_ [B] base | |||
[v] base | |||
[v] fi | |||
@@ -1411,6 +1398,7 @@ voc/v_ [B] base | |||
[v;] ro | |||
[v] is | |||
[v] bn | |||
[v] da | |||
voc/v2 [v#] es | |||
voc/vj [v] base | |||
[v] fr | |||
@@ -1477,7 +1465,6 @@ vowel/@ [@] base | |||
[@] kn | |||
[@4] bn | |||
vowel/@- [@-] base | |||
[@3] fr | |||
[r*] hr | |||
vowel/& [a] en_rp | |||
[&] fi | |||
@@ -1512,6 +1499,7 @@ vowel/@_3 [@] en_sc | |||
[@3] hi | |||
[@3] bn | |||
[@3] ne | |||
[@] da | |||
vowel/3_2 [3:] en_n | |||
[@] zh | |||
vowel/3_3 [3:] en_rp | |||
@@ -1548,6 +1536,7 @@ vowel/a [a] en | |||
[a] it | |||
[a] zh | |||
[a] id | |||
[a:] mr | |||
vowel/a# [a/] base2 | |||
[a2] en_sc | |||
[a2] en_wi | |||
@@ -1568,6 +1557,7 @@ vowel/a_2 [a] base2 | |||
[a] pt_pt | |||
[a] ro | |||
[a] rw | |||
[a] da | |||
vowel/a#_2 [a#] pl | |||
[&] hr | |||
[a2] sv | |||
@@ -1585,6 +1575,7 @@ vowel/a_3 [a] en_sc | |||
[a] is | |||
[A] zh | |||
[a] sq | |||
[A] da | |||
vowel/a#_3 [a2] en | |||
[a2] en_n | |||
[a2] en_us | |||
@@ -1601,6 +1592,7 @@ vowel/a#_3 [a2] en | |||
[a] ml | |||
[a] bn | |||
[a#] om | |||
[3] da | |||
vowel/a_4 [a/] el | |||
[a] vi | |||
[a:] om | |||
@@ -1614,11 +1606,9 @@ vowel/a_5 [a:] ta | |||
[a:] kn | |||
[A] om | |||
vowel/a_6 [a] fr | |||
[a2] fr | |||
[a] ca | |||
[a:] vi | |||
vowel/aa [a] fi | |||
[A] fr_ca | |||
vowel/aa [A] fr_ca | |||
[A] no | |||
[A:] no | |||
[aa] zhy | |||
@@ -1643,7 +1633,8 @@ vowel/aa_6 [A] de | |||
vowel/aa_7 [A] nl | |||
vowel/aa_8 [0] en_us | |||
[A:] en_us | |||
vowel/aa_9 [a:] hi | |||
vowel/aa_9 [a] fi | |||
[a:] hi | |||
[a:] bn | |||
[a] ne | |||
vowel/a_en [A] fr | |||
@@ -1682,6 +1673,7 @@ vowel/e [e] base2 | |||
[e:] ml | |||
[e:] kn | |||
[e] ne | |||
[e] da | |||
vowel/e# [I] en_sc | |||
[I2] en_sc | |||
vowel/e_2 [eI] en_sc | |||
@@ -1697,7 +1689,8 @@ vowel/e_3 [i] en_n | |||
[e:] hu | |||
[e] ku | |||
vowel/e_5 [i] en_sc | |||
vowel/e_6 [e] om | |||
vowel/e_6 [e] mr | |||
[e] om | |||
vowel/ee [E] en_n | |||
[E] sv | |||
vowel/e_e [E] en_sc | |||
@@ -1716,6 +1709,7 @@ vowel/ee_2 [E] en | |||
[E2] nl | |||
[E] zh | |||
[E#] ku | |||
[&] da | |||
vowel/ee#_2 [E-] sv | |||
[E#] sq | |||
vowel/ee_3 [&] af | |||
@@ -1728,7 +1722,6 @@ vowel/ee_6 [&] sk | |||
[E] ku | |||
vowel/e_mid [E] en_rp | |||
[E] fr | |||
[E2] fr | |||
[E] fr_ca | |||
[E] hi | |||
[E] hu | |||
@@ -1767,6 +1760,7 @@ vowel/e_mid2 [E] af | |||
[e] kn | |||
[E] om | |||
[E#] om | |||
[E] da | |||
vowel/@_fnt [@] en_wi | |||
[@2] en_wi | |||
[@2] hr | |||
@@ -1802,11 +1796,12 @@ vowel/i [i] base2 | |||
vowel/i# [y:] cy | |||
vowel/i_2 [i2] de | |||
[i:] de | |||
[i] fr | |||
[i-] fr | |||
[i] nl | |||
[i:] la | |||
[i:] sv | |||
vowel/i_3 [i] af | |||
[i] fr | |||
[i:] fr | |||
[i:] sk | |||
vowel/i_4 [i] fi | |||
@@ -1814,6 +1809,7 @@ vowel/i_4 [i] fi | |||
[I] it | |||
[i] is | |||
[i] vi | |||
[i] da | |||
vowel/i_5 [i:] en_sc | |||
vowel/i#_5 [y] pt_pt | |||
[i/] pt_pt | |||
@@ -1828,6 +1824,7 @@ vowel/i_6 [i] hi | |||
[i] id | |||
[i] ml | |||
[i] kn | |||
[I] mr | |||
vowel/i#_6 [i.] zh | |||
vowel/i_7 [i] pl | |||
[i] sq | |||
@@ -1838,6 +1835,7 @@ vowel/i_fnt [i:] en_wi | |||
[i:] hi | |||
[i] bn | |||
[i:] bn | |||
[i:] mr | |||
vowel/ii [I] en_n | |||
[I2] en_n | |||
[I] en_rp | |||
@@ -1906,6 +1904,8 @@ vowel/@_low [3] en_rp | |||
[@2] bn | |||
[V] ne | |||
[@/] ne | |||
[@] mr | |||
[V] mr | |||
vowel/@_low2 [@/] en_us | |||
[@2] en_us | |||
vowel/o [o] base2 | |||
@@ -1932,6 +1932,7 @@ vowel/o [o] base2 | |||
[o] kn | |||
[o:] kn | |||
[o] bn | |||
[o] mr | |||
vowel/o_2 [o:] cy | |||
[o2] fr | |||
[o:] hi | |||
@@ -1940,6 +1941,7 @@ vowel/o_2 [o:] cy | |||
[o:] no | |||
[o] vi | |||
[o:] bn | |||
[o] da | |||
vowel/o-_2 [V] en_n | |||
[V] en_wm | |||
vowel/o_3 [oU] en_sc | |||
@@ -1947,18 +1949,22 @@ vowel/o_3 [oU] en_sc | |||
vowel/o-_3 [U] en_rp | |||
vowel/o-_4 [o] ro | |||
vowel/o_5 [O] nl | |||
[O] da | |||
vowel/o_6 [O:] nl | |||
vowel/o_7 [o] ku | |||
vowel/oe [W] en | |||
[W] af | |||
[W] de | |||
[W] hy | |||
[W] da | |||
vowel/oe_2 [W] no | |||
[W] tr | |||
vowel/oe_4 [W] sv | |||
vowel/o_mid [U@] en_rp | |||
[O] fr | |||
[o] fr | |||
[O2] fr | |||
[o2] fr | |||
[o] hu | |||
[o] tr | |||
[o] ne | |||
@@ -1994,6 +2000,7 @@ vowel/oo_1 [O:] en_n | |||
vowel/oo_2 [0] en_sc | |||
[O] cy | |||
[o] cs | |||
[0] da | |||
vowel/oo_3 [O] af | |||
vowel/oo_4 [O] base2 | |||
[0] en_wm | |||
@@ -2055,10 +2062,10 @@ vowel/u_2 [u1] fi | |||
[u] tr | |||
vowel/u#_2 [u-] ta | |||
[u-] sv | |||
vowel/u_3 [u] fr | |||
[u:] fr | |||
vowel/u_3 [u:] fr | |||
vowel/u#_3 [U] ta | |||
[U:] ta | |||
vowel/u_4 [u] fr | |||
vowel/u#_4 [U] en_sc | |||
[u:] en_sc | |||
vowel/u_5 [u] sw | |||
@@ -2093,6 +2100,9 @@ vowel/u_bck [u] base2 | |||
[u#] rw | |||
[u:] bn | |||
[u] ne | |||
[U] mr | |||
[u:] mr | |||
[u] da | |||
vowel/u_bck2 [u:] la | |||
vowel/u_fnt [u:] en_rp | |||
vowel/uu [U] en | |||
@@ -2128,9 +2138,13 @@ vowel/V_3 [V] en_rp | |||
[V] ta | |||
[V] bn | |||
vowel/V_4 [V] en_sc | |||
[V] da | |||
vowel/V_6 [V] en_us | |||
[a#] lv | |||
vowel/y [y:] en | |||
vowel/V_7 [@] mr | |||
[V] mr | |||
vowel/y [y] base2 | |||
[y:] en | |||
[y:] de | |||
[y] fi | |||
[y:] hu | |||
@@ -2138,7 +2152,9 @@ vowel/y [y:] en | |||
[y] la | |||
[yu] zhy | |||
[y] sq | |||
vowel/y# [Y:] en | |||
[y] da | |||
vowel/y# [Y] base2 | |||
[Y:] en | |||
[3:] en_wm | |||
[Y:] de | |||
[Y] fi | |||
@@ -2163,6 +2179,7 @@ vowel/y_5 [y:] sv | |||
[y] ku | |||
vowel/yy [y"] fr_ca | |||
[y] no | |||
[Y] da | |||
vowel/yy_3 [y] sv | |||
vowel/yy_4 [y] de | |||
[y] hu | |||
@@ -2218,25 +2235,37 @@ vwl_en_us/oor [0] en_us | |||
vwl_en_us/or [o@] en_us | |||
[O:] en_sc | |||
vwl_en_us/ur [U@] en_us | |||
vwl_fr/r_@ [W] fr | |||
vwl_fr/r [r] fr | |||
[r2] fr | |||
vwl_fr/r_@ [@] fr | |||
[Y] fr | |||
[@2] fr | |||
[W2] fr | |||
[W~] fr | |||
vwl_fr/@R [x] pt_pt | |||
vwl_fr/r_@2 [W] fr | |||
vwl_fr/@R2 [R] fr_ca | |||
vwl_fr/@R3 [R] fr | |||
[r] fr | |||
[Q2] hy | |||
vwl_fr/@R4 [r2] fr | |||
[Q2] hy | |||
vwl_fr/@R5 [r] fr | |||
[Q2] hy | |||
vwl_fr/r_a [a] fr | |||
[a2] fr | |||
[wA] fr | |||
vwl_fr/@R3 [Q2] hy | |||
vwl_fr/@R4 [Q2] hy | |||
vwl_fr/@R5 [Q2] hy | |||
vwl_fr/r_a [wA] fr | |||
vwl_fr/r_e [E] fr | |||
[E2] fr | |||
[e] fr | |||
vwl_fr/r_i [i] fr | |||
[i:] fr | |||
[w^i] fr | |||
vwl_fr/r_o [O] fr | |||
[o] fr | |||
[O2] fr | |||
[o2] fr | |||
[O~] fr | |||
vwl_fr/r_u [u] fr | |||
[u:] fr | |||
vwl_fr/r_y [y] fr | |||
vwl_fr/tr [r] fr | |||
vwl_fr/w_a [wA] fr | |||
vwl_fr/xr [a] fr | |||
[A~] fr | |||
vwl_hi/l-voc [l-] jbo | |||
[l-] hi | |||
[l-] sk |
@@ -70,6 +70,21 @@ phoneme U | |||
endphoneme | |||
phoneme y | |||
vowel starttype (i) endtype (i) | |||
length 160 | |||
formants vowel/y | |||
endphoneme | |||
phoneme Y | |||
vowel starttype (@) endtype (@) | |||
length 160 | |||
formants vowel/y# | |||
endphoneme | |||
phoneme aU | |||
vowel starttype (a) endtype (u) | |||
length 270 |
@@ -44,8 +44,8 @@ endphoneme | |||
phoneme a | |||
vowel starttype (a) endtype (a) | |||
length 170 | |||
formants vowel/aa | |||
reduceto a2 1 | |||
formants vowel/aa_9 | |||
// reduceto a2 1 | |||
endphoneme | |||
phoneme a2 | |||
@@ -90,7 +90,7 @@ endphoneme | |||
phoneme y | |||
vowel starttype (u) endtype (u) | |||
length 155 | |||
length 150 | |||
formants vowel/y | |||
endphoneme | |||
@@ -139,7 +139,7 @@ phoneme ui | |||
vowel starttype (u) endtype (i) | |||
length 270 | |||
long | |||
formants vdiph/ui | |||
formants vdiph/ui_4 | |||
endphoneme | |||
phoneme yi | |||
@@ -236,17 +236,13 @@ endphoneme | |||
//=========== | |||
phoneme r | |||
liquid starttype #r endtype #r | |||
length 100 | |||
lengthmod 7 | |||
beforenotvowel r/ | |||
phoneme r // this is [R2] but shorter | |||
liquid | |||
vowelin f1=0 f2=1700 -300 300 f3=-300 80 | |||
vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk | |||
formants r3/r_trill_short+r3/r_trill.wav%50 | |||
trill | |||
formants r/rr | |||
after _ r/rr | |||
after t r/trr p r/trr k r/trr | |||
before _ r/r_ | |||
lengthmod 6 | |||
endphoneme | |||
@@ -2,18 +2,24 @@ | |||
// French | |||
//==================================================== | |||
phoneme (l) virtual | |||
// Used for l and l/ | |||
endphoneme | |||
phoneme : // Lengthen previous vowel by "length" | |||
virtual | |||
length 40 // shorter than for fr-ca | |||
endphoneme | |||
// Vowels | |||
//======= | |||
phoneme @ | |||
vowel starttype (@) endtype (@) | |||
length 190 | |||
formants vowel/@_hgh | |||
before l/ DFT+l/l_@ | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_@ | |||
endphoneme | |||
@@ -21,16 +27,7 @@ phoneme @2 | |||
vowel starttype (@) endtype (@) | |||
length 170 | |||
formants vowel/@_fr | |||
before (r) DFT+r3/r_@ | |||
endphoneme | |||
phoneme @3 // Mute at end of word | |||
vowel nonsyllabic | |||
starttype (@) endtype _ | |||
formants vowel/@- | |||
unstressed | |||
length 40 | |||
before (r) DFT-10+vwl_fr/r_@ | |||
endphoneme | |||
@@ -40,19 +37,8 @@ phoneme a | |||
formants vowel/a_6 | |||
after l l/la-15 | |||
before l/ DFT+l/l_a | |||
before r/2 DFT-40+vwl_fr/r_a | |||
reduceto a2 1 | |||
endphoneme | |||
phoneme a2 | |||
vowel starttype (a) endtype (a) | |||
length 190 | |||
formants vowel/a_6 | |||
after l l/la-15 | |||
before l/ DFT+l/l_a | |||
before (r) DFT+r/xr | |||
before r/2 DFT+vwl_fr/r_a | |||
before (r) DFT-10+vwl_fr/xr | |||
before r/2 DFT+r/xr | |||
endphoneme | |||
@@ -60,9 +46,9 @@ phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 190 | |||
formants vowel/e | |||
after l l/le-15 | |||
after (l) l/le-15 | |||
before l/ DFT-20+l/xl | |||
before (r) DFT+r/xr | |||
before (r) DFT-10+vwl_fr/r_e | |||
endphoneme | |||
@@ -70,32 +56,31 @@ phoneme E | |||
vowel starttype (e) endtype (e) | |||
length 190 | |||
formants vowel/e_mid | |||
after l l/le-15 | |||
after (l) l/le-15 | |||
before l/ DFT+l/l_e | |||
before r/2 DFT+vwl_fr/r_e | |||
reduceto E2 1 | |||
before (r) DFT-10+vwl_fr/r_e | |||
before r/2 DFT-10+vwl_fr/r_e | |||
endphoneme | |||
phoneme E2 | |||
vowel starttype (e) endtype (e) | |||
length 190 | |||
formants vowel/e_mid | |||
after l l/le-15 | |||
before l/ DFT+l/l_e | |||
before r/2 DFT-20+vwl_fr/r_e | |||
phoneme i | |||
vowel starttype (i) endtype (i) | |||
length 180 | |||
formants vowel/i_2 | |||
linkout ; | |||
after (l) l/li-15 | |||
before l/ DFT+l/l_i | |||
before (r) DFT-20+vwl_fr/r_i | |||
before r/2 DFT+vwl_fr/r_i | |||
endphoneme | |||
phoneme i | |||
phoneme i- // shorter | |||
vowel starttype (i) endtype (i) | |||
length 170 | |||
formants vowel/i_3 | |||
length 120 | |||
formants vowel/i_2 | |||
linkout ; | |||
after l l/li-15 | |||
before l/ DFT+l/l_i | |||
before (r) DFT+r/xr | |||
before r/2 DFT+r3/r_i | |||
after (l) l/li-15 | |||
endphoneme | |||
@@ -104,9 +89,10 @@ phoneme i: // longer than i | |||
length 250 | |||
formants vowel/i_3 | |||
linkout ; | |||
after l l/li-15 | |||
after (l) l/li-15 | |||
before l/ DFT+l/l_i | |||
before r/2 DFT-20+r/xr-25 | |||
before (r) DFT-20+vwl_fr/r_i | |||
before r/2 DFT-20+vwl_fr/r_i | |||
endphoneme | |||
@@ -114,9 +100,10 @@ phoneme o | |||
vowel starttype (o) endtype (o) | |||
length 190 | |||
formants vowel/o_3 | |||
after l l/lo-10 | |||
after (l) l/lo-10 | |||
before l/ DFT+l/l_o | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_o | |||
before r/2 vowel/o_mid+vwl_fr/r_o | |||
reduceto o2 1 | |||
endphoneme | |||
@@ -125,9 +112,10 @@ phoneme o2 | |||
vowel starttype (o) endtype (o) | |||
length 190 | |||
formants vowel/o_2 | |||
after l l/lo-10 | |||
before l/ DFT+l/l_o | |||
before (r) DFT+r/xr | |||
after (l) l/lo-10 | |||
before l/ vowel/o_mid+l/l_o | |||
before (r) DFT+vwl_fr/r_o | |||
before r/2 vowel/o_mid+vwl_fr/r_o | |||
endphoneme | |||
@@ -135,10 +123,10 @@ phoneme O | |||
vowel starttype (o) endtype (o) | |||
length 190 | |||
formants vowel/o_mid | |||
after l l/lo-10 | |||
after (l) l/lo-10 | |||
before l/ DFT+l/l_o | |||
before r/2 DFT+r3/r_o | |||
reduceto o 1 | |||
before r/2 DFT+vwl_fr/r_o | |||
reduceto o2 1 | |||
endphoneme | |||
@@ -146,20 +134,22 @@ phoneme O2 // Like O but no reduceto | |||
vowel starttype (o) endtype (o) | |||
length 190 | |||
formants vowel/o_mid | |||
after l l/lo-10 | |||
after (l) l/lo-10 | |||
before l/ DFT+l/l_o | |||
before r/2 DFT+r3/r_o | |||
before (r) DFT+vwl_fr/r_o | |||
before r/2 DFT+vwl_fr/r_o | |||
endphoneme | |||
phoneme u | |||
vowel starttype (u) endtype (u) | |||
length 190 | |||
formants vowel/u_3 | |||
formants vowel/u_4 | |||
after l l/lu-20 | |||
before l/ DFT-20+l/l_u | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_u | |||
before r/2 DFT+vwl_fr/r_u | |||
before i DFT-50 | |||
endphoneme | |||
@@ -170,7 +160,7 @@ phoneme u: // slitely longer than u | |||
after l l/lu-20 | |||
before l/ DFT-20+l/l_u | |||
before l/ DFT-20+l/l_u | |||
before r/2 DFT+r/xr-40 | |||
before r/2 DFT+vwl_fr/r_u | |||
endphoneme | |||
@@ -180,8 +170,9 @@ phoneme y | |||
formants vowel/y_2 | |||
after l l/lu-20 | |||
before l/ DFT-30+l/l_y | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_y | |||
before r/2 DFT+vwl_fr/r_y | |||
before E~ DFT-50 | |||
endphoneme | |||
@@ -189,9 +180,9 @@ phoneme Y | |||
vowel starttype (@) endtype (@) | |||
length 190 | |||
formants vowel/y# | |||
after l l/l@-20 | |||
after (l) l/l@-20 | |||
before l/ DFT-20+l/l_@ | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_@ | |||
before r/2 DFT+r/xr-40 | |||
endphoneme | |||
@@ -200,9 +191,10 @@ phoneme W | |||
vowel starttype (@) endtype (@) | |||
length 200 | |||
formants vowel/@_5 | |||
after l l/l@-20 | |||
after (l) l/l@-20 | |||
before l/ DFT-20+l/l_@ | |||
before r/2 DFT+vwl_fr/r_@ | |||
before (r) DFT+vwl_fr/r_@2 | |||
before r/2 DFT+vwl_fr/r_@2 | |||
reduceto Y 1 | |||
endphoneme | |||
@@ -211,19 +203,20 @@ phoneme W2 // same as W but don't reduce | |||
vowel starttype (@) endtype (@) | |||
length 200 | |||
formants vowel/@_3 | |||
after l l/l@-20 | |||
after (l) l/l@-20 | |||
before l/ DFT-20+l/l_@ | |||
before (r) DFT+vwl_fr/r_@ | |||
before r/2 DFT+vwl_fr/r_@ | |||
endphoneme | |||
phoneme wA | |||
vowel starttype (o) endtype (a) | |||
length 240 | |||
length 220 | |||
formants vwl_fr/w_a | |||
after l l/lo-10 | |||
after (l) l/lo-10 | |||
before l/ DFT-10+l/l_a | |||
before (r) DFT+r/xr | |||
before (r) DFT+vwl_fr/r_a | |||
before r/2 DFT+vwl_fr/r_a | |||
endphoneme | |||
@@ -234,16 +227,18 @@ phoneme w^i | |||
formants vdiph/yi_fr | |||
after l l/lu-20 | |||
before l/ DFT+l/l_i | |||
before r/2 DFT+r3/r_i | |||
before (r) DFT+vwl_fr/r_i | |||
before r/2 DFT+vwl_fr/r_i | |||
endphoneme | |||
phoneme A~ | |||
vowel starttype (a) endtype (a) | |||
length 210 | |||
formants vnasal/aa_n2 | |||
before r/2 DFT+r/xr-40 | |||
formants vnasal/aa_n4 | |||
before l/ DFT+l/l_a | |||
before (r) DFT+vwl_fr/xr | |||
before r/2 DFT+r/xr-40 | |||
endphoneme | |||
@@ -258,8 +253,8 @@ endphoneme | |||
phoneme O~ | |||
vowel starttype (o) endtype (o) | |||
length 210 | |||
formants vnasal/o_n3 | |||
// before n2 vowel/o_mid | |||
formants vnasal/o_n2 | |||
before (r) DFT+vwl_fr/r_o | |||
endphoneme | |||
@@ -267,6 +262,7 @@ phoneme W~ | |||
vowel starttype (@) endtype (@) | |||
length 210 | |||
formants vnasal/W_n | |||
before (r) DFT+vwl_fr/r_@ | |||
endphoneme | |||
@@ -318,7 +314,7 @@ phoneme b | |||
formants b/b+x/b%70 | |||
before _ b/b_+x/b_ | |||
before l/ b/b_+x/b_ | |||
before R b/b_+x/b_ | |||
before (r) b/b_+x/b_%80 | |||
after _ NULL | |||
after @ b/xb%50 | |||
lengthmod 5 | |||
@@ -331,7 +327,7 @@ phoneme d | |||
vowelout f1=0 f2=1700 -300 300 f3=-100 80 | |||
formants d/d+x/d%40 | |||
before _ d/d_+x/d_%50 | |||
before R d/dr+x/d%50 | |||
before (r) d/dr+x/d%50 | |||
before r/2 d/dr+x/d%50 | |||
after _ d/d+x/d%50 | |||
after (@) d/xd | |||
@@ -346,8 +342,9 @@ phoneme g | |||
vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||
formants g/g+x/g2%30 | |||
before _ g/g_+x/g_ | |||
before (r) g/g+x/g2%50 | |||
after _ NULL | |||
after @ g/xg%30 | |||
after (@) g/xg%30 | |||
lengthmod 5 | |||
switchvoicing k | |||
endphoneme | |||
@@ -360,8 +357,8 @@ phoneme k | |||
lengthmod 2 | |||
wave ustop/k%40 // reduce strength of noise burst | |||
before _ ustop/k_ | |||
before R ustop/kr%45 | |||
before r/2 ustop/kr%45 | |||
before (r) ustop/k%60 | |||
before r/2 ustop/k%60 | |||
before l ustop/kl%45 | |||
before l/ ustop/kl%45 | |||
before (i) ustop/ki%45 | |||
@@ -370,7 +367,7 @@ endphoneme | |||
phoneme l | |||
liquid | |||
liquid starttype (l) endtype (l) | |||
vowelout f1=1 f2=1600 -300 300 f3=100 80 brk | |||
length 100 | |||
lengthmod 7 | |||
@@ -383,7 +380,7 @@ endphoneme | |||
phoneme l/ // used for [l] when not before a vowel | |||
liquid | |||
liquid starttype (l) endtype (l) | |||
length 100 | |||
lengthmod 7 | |||
formants l/l_ | |||
@@ -406,12 +403,12 @@ endphoneme | |||
phoneme p | |||
vls blb stop | |||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 | |||
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
lengthmod 2 | |||
wave ustop/p%50 | |||
after _ ustop/p%70 | |||
before _ ustop/p_%70 | |||
before R ustop/pr%30 | |||
before (r) ustop/pr%35 | |||
before @- ustop/p_unasp%60 | |||
before l ustop/pl%30 | |||
before l/ ustop/pl%30 | |||
@@ -431,49 +428,46 @@ endphoneme | |||
phoneme r | |||
liquid rfx starttype (r) endtype (r) | |||
vowelin f1=0 f2=1800 -200 200 f3=-200 80 | |||
vowelout f1=1 f2=1800 -200 200 f3=-200 80 brk | |||
liquid starttype (r) endtype (r) | |||
vowelin f1=0 f2=1800 10 10 f3=-200 100 | |||
vowelout f1=1 f2=1800 10 10 f3=-200 100 | |||
length 100 | |||
lengthmod 7 | |||
beforenotvowel r/2 | |||
formants vwl_fr/@R3+r3/rx%30 | |||
after @2 vwl_fr/@R5+r3/rx%40 | |||
after (e) vwl_fr/@R5+r3/rx%25 | |||
after (u) vwl_fr/@R5+r3/rx%30 | |||
formants vwl_fr/r | |||
after b vwl_fr/tr+r3/rx%25 | |||
after g vwl_fr/tr+r3/rx%25 | |||
after k vwl_fr/tr+r3/rx%35 | |||
after (l) vwl_fr/r+r3/rx%30 | |||
after m vwl_fr/tr+r3/rx%25 | |||
after n vwl_fr/tr+r3/rx%25 | |||
after p vwl_fr/tr+r3/rx%35 | |||
after s vwl_fr/tr+r3/rx%30 | |||
after S vwl_fr/tr+r3/rx%45 | |||
after t vwl_fr/tr+r3/rx%15 | |||
after v vwl_fr/tr+r3/rx%30 | |||
after z vwl_fr/tr+r3/rx%30 | |||
after Z vwl_fr/tr+r3/rx%30 | |||
endphoneme | |||
phoneme r2 // silent unless followed by vowel | |||
liquid rfx starttype (r) endtype (r) | |||
vowelin f1=0 f2=1000 -200 200 f3=-200 80 len=40 | |||
vowelout f1=0 f2=1200 -200 200 f3=-200 80 len=20 | |||
liquid starttype (r) endtype (r) | |||
vowelin f1=0 f2=1000 10 10 f3=-200 100 | |||
vowelout f1=0 f2=1200 10 10 f3=-200 100 | |||
length 100 | |||
lengthmod 7 | |||
beforenotvowel NULL | |||
formants vwl_fr/@R4+r3/rx%20 | |||
endphoneme | |||
phoneme R // After consonnants | |||
liquid starttype (r) endtype (r) | |||
vowelin f1=0 f2=1800 -200 200 f3=-200 80 | |||
length 100 | |||
lengthmod 7 | |||
beforenotvowel r/2 | |||
formants vwl_fr/@R3+r3/rx%30 | |||
after b vwl_fr/@R3+r3/rx%60 | |||
after p vwl_fr/@R3+r3/rx%60 | |||
after t vwl_fr/@R3+r3/rx%60 | |||
formants vwl_fr/r | |||
endphoneme | |||
phoneme r/2 // variant of [r] when not preceding a vowel | |||
liquid | |||
vowelout f1=2 f2=1800 -200 200 f3=-200 80 brk | |||
vowelout f1=2 f2=1800 10 10 f3=-200 100 | |||
length 100 | |||
lengthmod 2 | |||
formants r3/r_2+r3/rx%20 | |||
formants r3/r_2+r3/rx%25 | |||
before n r3/r_n | |||
beforevowel r | |||
endphoneme | |||
@@ -512,7 +506,7 @@ phoneme t | |||
lengthmod 2 | |||
wave ustop/t_short%40 | |||
before _ ustop/t_%40 | |||
before R ustop/t_short%50 | |||
before (r) ustop/t_short%60 | |||
before r/2 ustop/t_short%50 | |||
switchvoicing d | |||
endphoneme | |||
@@ -543,11 +537,11 @@ endphoneme | |||
phoneme v | |||
vcd lbd frc | |||
vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||
vowelin f1=0 f2=1000 -100 -100 f3=-300 100 | |||
vowelout f1=0 f2=1000 -100 -100 f3=-300 100 | |||
lengthmod 6 | |||
formants voc/v+vocw/v%75 | |||
before R voc/vj+vocw/v%75 | |||
before (r) voc/vj+vocw/v%75 | |||
before _ voc/v_+vocw/v | |||
switchvoicing f | |||
endphoneme | |||
@@ -587,3 +581,4 @@ endphoneme | |||
@@ -1357,10 +1357,14 @@ phonemetable ne hi | |||
include ph_nepali | |||
phonemetable mr hi | |||
include ph_mathari | |||
include ph_marathi | |||
phonemetable om base | |||
include ph_oromo | |||
phonemetable eu base2 | |||
include ph_basque | |||
phonemetable da base | |||
include ph_danish | |||
@@ -105,6 +105,10 @@ SOURCE=.\src\intonation.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\numbers.cpp | |||
# End Source File | |||
# Begin Source File | |||
@@ -142,10 +146,6 @@ SOURCE=.\src\synthesize.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_english.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.cpp | |||
# End Source File | |||
# Begin Source File | |||
@@ -170,6 +170,10 @@ SOURCE=.\espeak.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phoneme.h | |||
# End Source File | |||
# Begin Source File |
@@ -635,8 +635,15 @@ int Compile::LoadSpect(const char *path, int control) | |||
} | |||
spectseq->Load(stream); | |||
if(spectseq->synthesizer_type == 1) | |||
klatt_flag = FRFLAG_KLATT; | |||
// do we need additional klatt data ? | |||
for(frame=0; frame < spectseq->numframes; frame++) | |||
{ | |||
for(ix=5; ix<N_KLATTP2; ix++) | |||
{ | |||
if(spectseq->frames[frame]->klatt_param[ix] != 0) | |||
klatt_flag = FRFLAG_KLATT; | |||
} | |||
} | |||
displ = ftell(f_phdata); | |||
@@ -716,53 +723,69 @@ for(ix=0; ix<8; ix++) | |||
// write: peak data | |||
count_frames++; | |||
for(peak=0; peak<N_PEAKS; peak++) | |||
for(peak=0; peak < 8; peak++) | |||
{ | |||
fr_out->ffreq[peak] = fr->peaks[peak].pkfreq; | |||
if(peak < 7) | |||
fr_out->ffreq[peak] = fr->peaks[peak].pkfreq; | |||
if(klatt_flag) | |||
{ | |||
pkheight = fr->peaks[peak].pkheight / 128; | |||
} | |||
else | |||
{ | |||
pkheight = spectseq->amplitude * fr->amp_adjust * fr->peaks[peak].pkheight; | |||
pkheight = pkheight/640000; | |||
if(pkheight > 255) pkheight = 255; | |||
} | |||
pkheight = spectseq->amplitude * fr->amp_adjust * fr->peaks[peak].pkheight; | |||
pkheight = pkheight/640000; | |||
if(pkheight > 255) pkheight = 255; | |||
fr_out->fheight[peak] = int(pkheight); | |||
if(peak < 6) | |||
{ | |||
x = fr->peaks[peak].pkwidth/2; | |||
x2 = fr->peaks[peak].pkright; | |||
if(klatt_flag == 0) | |||
{ | |||
x /= 2; | |||
x2 /= 4; | |||
} | |||
x = fr->peaks[peak].pkwidth/4; | |||
if(x > 255) x = 255; | |||
fr_out->fwidth[peak] = x; | |||
if(x2 > 255) x2 = 255; | |||
fr_out->fright[peak] = x2; | |||
if(peak < 3) | |||
{ | |||
x2 = fr->peaks[peak].pkright/4; | |||
if(x2 > 255) x2 = 255; | |||
fr_out->fright[peak] = x2; | |||
} | |||
} | |||
if(peak < 4) | |||
{ | |||
x = fr->peaks[peak].klt_bw / 2; | |||
if(x > 255) x = 255; | |||
fr_out->bw[peak] = x; | |||
} | |||
} | |||
for(ix=0; ix<5; ix++) | |||
{ | |||
fr_out->klattp[ix] = fr->klatt_param[ix]; | |||
fr_out->klattp[KLATT_FNZ] = fr->klatt_param[KLATT_FNZ] / 2; | |||
} | |||
if(klatt_flag) | |||
{ | |||
if(fr->klatt_param[KLATT_Kopen] == 0) | |||
// additional klatt parameters | |||
for(ix=0; ix<5; ix++) | |||
{ | |||
Error("Klatt_Kopen has value 0"); | |||
fr_out->klattp2[ix] = fr->klatt_param[ix+5]; | |||
} | |||
// additional fields | |||
for(ix=0; ix<N_KLATTP; ix++) | |||
for(peak=0; peak<7; peak++) | |||
{ | |||
fr_out->klattp[ix] = fr->klatt_param[ix]; | |||
fr_out->klatt_ap[ix] = fr->peaks[peak].klt_ap; | |||
x = fr->peaks[peak].klt_bp / 2; | |||
if(x > 255) x = 255; | |||
fr_out->klatt_bp[ix] = x; | |||
} | |||
fr_out->fwidth6 = fr->peaks[6].pkwidth/2; | |||
fr_out->fright6 = fr->peaks[6].pkright; | |||
} | |||
if(fr_out->bw[1] == 0) | |||
{ | |||
fr_out->bw[0] = 89 / 2; | |||
fr_out->bw[1] = 90 / 2; | |||
fr_out->bw[2] = 140 / 2; | |||
fr_out->bw[3] = 260 / 2; | |||
} | |||
n_frames++; |
@@ -232,9 +232,9 @@ wxSashLayoutWindow *win; | |||
// Another window to the left of the client window | |||
win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, | |||
wxDefaultPosition, wxSize(200, 30), | |||
wxDefaultPosition, wxSize(298, 30), | |||
wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); | |||
win->SetDefaultSize(wxSize(212, 1000)); | |||
win->SetDefaultSize(wxSize(310, 1000)); | |||
win->SetOrientation(wxLAYOUT_VERTICAL); | |||
win->SetAlignment(wxLAYOUT_LEFT); | |||
// win->SetBackgroundColour(wxColour(0, 255, 255)); |
@@ -102,57 +102,90 @@ FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,w | |||
xplace = 28; | |||
id = 201; | |||
new wxStaticText(this,-1,_T("Formants"),wxPoint(4,5)); | |||
t_lab[4] = new wxStaticText(this,-1,_T(" BW BWp Ap"),wxPoint(78,5),wxSize(300,20)); | |||
new wxStaticText(this,-1,_T(" Ht Width (Klatt)"),wxPoint(78,5),wxSize(300,20)); | |||
new wxStaticText(this,-1,_T("Bw Ap Bp"),wxPoint(188,29),wxSize(300,20)); | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
string.Printf(_T("%d"),ix); | |||
t_labpk[ix] = new wxStaticText(this,id++,string, | |||
wxPoint(xplace-22,y+1+24*ix)); | |||
t_pkfreq[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace,y+24*ix),wxSize(48,20), | |||
wxTE_CENTRE+wxTE_READONLY); | |||
if(ix < 7) | |||
{ | |||
t_pkfreq[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace,y+24*ix),wxSize(44,20), | |||
wxTE_CENTRE); | |||
} | |||
t_pkheight[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+50,y+24*ix),wxSize(36,20), | |||
wxTE_CENTRE+wxTE_READONLY); | |||
t_pkwidth[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+88,y+24*ix),wxSize(48,20), | |||
wxTE_CENTRE+wxTE_READONLY); | |||
t_pkright[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+138,y+24*ix),wxSize(36,20), | |||
wxTE_CENTRE+wxTE_READONLY); | |||
if(ix>5) t_pkwidth[ix]->Hide(); | |||
wxPoint(xplace+46,y+24*ix),wxSize(36,20), | |||
wxTE_CENTRE); | |||
if(ix < 6) | |||
{ | |||
t_pkwidth[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+84,y+24*ix),wxSize(60,20), | |||
wxTE_CENTRE); | |||
} | |||
if((ix == 0) || (ix > 6)) continue; | |||
if(ix < 4) | |||
{ | |||
t_klt_bw[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+150,y+24*ix),wxSize(40,20), | |||
wxTE_CENTRE); | |||
} | |||
t_klt_ap[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+192,y+24*ix),wxSize(36,20), | |||
wxTE_CENTRE); | |||
t_klt_bp[ix] = new wxTextCtrl(this,id++,_T(""), | |||
wxPoint(xplace+230,y+24*ix),wxSize(40,20), | |||
wxTE_CENTRE); | |||
} | |||
y=240; | |||
y=224; | |||
t_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(57,y+8)); | |||
t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(100,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(151,y+8)); | |||
t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(61,y+8)); | |||
t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(104,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(159,y+8)); | |||
y += 40; | |||
s_klatt[KLATT_AV] = new wxSpinCtrl(this,T_AV,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_AV] = new wxStaticText(this,-1,_T("AV"),wxPoint(61,y+4)); | |||
s_klatt[KLATT_FNZ] = new wxSpinCtrl(this,T_FNZ,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_FNZ] = new wxStaticText(this,-1,_T("FNZ"),wxPoint(159,y+4)); | |||
s_klatt[KLATT_AV] = new wxSpinCtrl(this,T_AV,_T(""), wxPoint(6,y+32), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_AV] = new wxStaticText(this,-1,_T("AV"),wxPoint(61,y+36)); | |||
s_klatt[KLATT_AVp] = new wxSpinCtrl(this,T_AVP,_T(""), wxPoint(100,y+32), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_AVp] = new wxStaticText(this,-1,_T("AVp"),wxPoint(155,y+36)); | |||
y += 28; | |||
s_klatt[KLATT_Tilt] = new wxSpinCtrl(this,T_TILT,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Tilt] = new wxStaticText(this,-1,_T("Tilt"),wxPoint(61,y+4)); | |||
s_klatt[KLATT_Fric] = new wxSpinCtrl(this,T_FRIC,_T(""), wxPoint(6,y+60), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Fric] = new wxStaticText(this,-1,_T("Fric"),wxPoint(61,y+64)); | |||
s_klatt[KLATT_FricBP] = new wxSpinCtrl(this,T_FRICBP,_T(""), wxPoint(100,y+60), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_FricBP] = new wxStaticText(this,-1,_T("FricBP"),wxPoint(155,y+64)); | |||
s_klatt[KLATT_Aspr] = new wxSpinCtrl(this,T_ASPR,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Aspr] = new wxStaticText(this,-1,_T("Aspr"),wxPoint(159,y+4)); | |||
s_klatt[KLATT_Aspr] = new wxSpinCtrl(this,T_ASPR,_T(""), wxPoint(6,y+88), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Aspr] = new wxStaticText(this,-1,_T("Aspr"),wxPoint(61,y+92)); | |||
s_klatt[KLATT_Turb] = new wxSpinCtrl(this,T_TURB,_T(""), wxPoint(100,y+88), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Turb] = new wxStaticText(this,-1,_T("Turb"),wxPoint(155,y+92)); | |||
s_klatt[KLATT_Skew] = new wxSpinCtrl(this,T_SKEW,_T(""), wxPoint(202,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Skew] = new wxStaticText(this,-1,_T("Skew"),wxPoint(257,y+4)); | |||
s_klatt[KLATT_Skew] = new wxSpinCtrl(this,T_SKEW,_T(""), wxPoint(6,y+116), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Skew] = new wxStaticText(this,-1,_T("Skew"),wxPoint(61,y+120)); | |||
s_klatt[KLATT_Tilt] = new wxSpinCtrl(this,T_TILT,_T(""), wxPoint(100,y+116), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Tilt] = new wxStaticText(this,-1,_T("Tilt"),wxPoint(155,y+120)); | |||
y += 28; | |||
s_klatt[KLATT_AVp] = new wxSpinCtrl(this,T_AVP,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_AVp] = new wxStaticText(this,-1,_T("AVp"),wxPoint(61,y+4)); | |||
s_klatt[KLATT_Fric] = new wxSpinCtrl(this,T_FRIC,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Fric] = new wxStaticText(this,-1,_T("Fric"),wxPoint(159,y+4)); | |||
s_klatt[KLATT_FricBP] = new wxSpinCtrl(this,T_FRICBP,_T(""), wxPoint(202,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_FricBP] = new wxStaticText(this,-1,_T("FricBP"),wxPoint(257,y+4)); | |||
y += 28; | |||
s_klatt[KLATT_Kopen] = new wxSpinCtrl(this,T_KOPEN,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Kopen] = new wxStaticText(this,-1,_T("kopen"),wxPoint(61,y+4)); | |||
s_klatt[KLATT_Turb] = new wxSpinCtrl(this,T_TURB,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Turb] = new wxStaticText(this,-1,_T("Turb"),wxPoint(159,y+4)); | |||
s_klatt[KLATT_Kopen] = new wxSpinCtrl(this,T_KOPEN,_T(""), wxPoint(6,y+144), wxSize(52,24), wxTE_CENTRE,0,500); | |||
t_klatt[KLATT_Kopen] = new wxStaticText(this,-1,_T("kopen"),wxPoint(61,y+148)); | |||
t_zoomout = new wxButton(this,T_ZOOMOUT,_T("Zoom-"),wxPoint(16,420)); | |||
@@ -168,8 +201,6 @@ FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,w | |||
t_pitch = new wxStaticText(this,-1,_T(""),wxPoint(4,520),wxSize(192,24)); | |||
HideFields(0); | |||
pitchgraph = new ByteGraph(this,wxPoint(0,538),wxSize(200,140)); | |||
pitchgraph->SetData(128,env_fall); | |||
pitchgraph->ShowSpectrum(1); | |||
@@ -177,62 +208,71 @@ FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,w | |||
} | |||
void FormantDlg::HideFields(int synth_type) | |||
{//======================================= | |||
void FormantDlg::GetValues(SpectSeq *spectseq, int frame) | |||
{//====================================================== | |||
int ix; | |||
static int prev_synth_type = -1; | |||
wxString value; | |||
long num; | |||
SpectFrame *sf; | |||
if(synth_type == prev_synth_type) | |||
return; // no change | |||
if(spectseq->frames == NULL) | |||
return; | |||
sf = spectseq->frames[frame]; | |||
if(synth_type == 0) | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
for(ix=0; ix<9; ix++) | |||
if(ix < 7) | |||
{ | |||
s_klatt[ix]->Hide(); | |||
t_klatt[ix]->Hide(); | |||
num = 0; | |||
value = t_pkfreq[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].pkfreq = num; | |||
} | |||
for(ix=6; ix<9; ix++) | |||
num = 0; | |||
value = t_pkheight[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].pkheight = num << 6; | |||
if(ix < 6) | |||
{ | |||
t_pkfreq[ix]->Show(); | |||
t_pkheight[ix]->Show(); | |||
t_pkwidth[ix]->Hide(); | |||
t_pkright[ix]->Hide(); | |||
num = 0; | |||
value = t_pkwidth[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].pkwidth = sf->peaks[ix].pkright = num*2; | |||
if((ix < 3) && ((value = value.AfterFirst('/')) != wxEmptyString)) | |||
{ | |||
num = 0; | |||
value.ToLong(&num); | |||
sf->peaks[ix].pkright = num*2; | |||
} | |||
} | |||
t_ampframe->Show(); | |||
t_amplitude->Show(); | |||
t_lab[2]->Show(); | |||
t_lab[3]->Show(); | |||
t_labpk[7]->Show(); | |||
t_labpk[8]->Show(); | |||
t_lab[4]->Hide(); | |||
} | |||
else | |||
for(ix=1; ix < 6; ix++) | |||
{ | |||
for(ix=0; ix<9; ix++) | |||
if(ix < 3) | |||
{ | |||
s_klatt[ix]->Show(); | |||
t_klatt[ix]->Show(); | |||
num = 0; | |||
value = t_klt_bw[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].klt_bw = num; | |||
} | |||
for(ix=7; ix<9; ix++) | |||
{ | |||
t_pkfreq[ix]->Hide(); | |||
t_pkheight[ix]->Hide(); | |||
t_pkwidth[ix]->Hide(); | |||
t_pkright[ix]->Hide(); | |||
} | |||
t_pkwidth[6]->Show(1); | |||
t_pkright[6]->Show(1); | |||
t_ampframe->Hide(); | |||
t_amplitude->Hide(); | |||
t_lab[2]->Hide(); | |||
t_lab[3]->Hide(); | |||
t_labpk[7]->Hide(); | |||
t_labpk[8]->Hide(); | |||
t_lab[4]->Show(); | |||
num = 0; | |||
value = t_klt_ap[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].klt_ap = num; | |||
num = 0; | |||
value = t_klt_bp[ix]->GetValue(); | |||
value.ToLong(&num); | |||
sf->peaks[ix].klt_bp = num; | |||
} | |||
prev_synth_type = synth_type; | |||
} | |||
} // end of FormantDlg::GetValues | |||
void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | |||
@@ -241,20 +281,19 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | |||
SpectFrame *sf; | |||
wxString value; | |||
int original_mS; | |||
peak_t *peak; | |||
if(spectseq->frames == NULL) | |||
return; | |||
sf = spectseq->frames[frame]; | |||
HideFields(spectseq->synthesizer_type); | |||
if(field == 0xff) | |||
{ | |||
// indicate the selected peak | |||
// t_select_peak[pk]->SetValue(TRUE); | |||
} | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
if(field != 0xff && pk!=ix) | |||
continue; | |||
@@ -268,7 +307,9 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | |||
t_labpk[ix]->SetLabel(value); | |||
} | |||
if(field & 1) | |||
peak = &(sf->peaks[ix]); | |||
if((field & 1) && (ix < 7)) | |||
{ | |||
value.Printf(_T("%4d"),sf->peaks[ix].pkfreq); | |||
t_pkfreq[ix]->SetValue(value); | |||
@@ -278,12 +319,34 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | |||
value.Printf(_T("%3d"),sf->peaks[ix].pkheight >> 6); | |||
t_pkheight[ix]->SetValue(value); | |||
} | |||
if(field & 4) | |||
if((field & 4) && (ix < 6)) | |||
{ | |||
value.Printf(_T("%3d"),sf->peaks[ix].pkwidth/2); | |||
if(sf->peaks[ix].pkwidth == sf->peaks[ix].pkright) | |||
value.Printf(_T("%3d"),sf->peaks[ix].pkwidth/2); | |||
else | |||
value.Printf(_T("%3d/%3d"),sf->peaks[ix].pkwidth/2, sf->peaks[ix].pkright/2); | |||
t_pkwidth[ix]->SetValue(value); | |||
value.Printf(_T("%3d"),sf->peaks[ix].pkright/2); | |||
t_pkright[ix]->SetValue(value); | |||
} | |||
if((ix > 0) && (ix < 7)) | |||
{ | |||
if((field & 8) && (ix < 4)) | |||
{ | |||
value.Printf(_T("%3d"),peak->klt_bw); | |||
t_klt_bw[ix]->SetValue(value); | |||
} | |||
if(field & 16) | |||
{ | |||
value.Printf(_T("%3d"),peak->klt_ap); | |||
t_klt_ap[ix]->SetValue(value); | |||
} | |||
if(field & 32) | |||
{ | |||
value.Printf(_T("%3d"),peak->klt_bp); | |||
t_klt_bp[ix]->SetValue(value); | |||
} | |||
} | |||
} | |||
@@ -294,15 +357,11 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | |||
value.Printf(_T("%3d"),sf->amp_adjust); | |||
t_ampframe->SetValue(value); | |||
if(spectseq->synthesizer_type == 1) | |||
for(ix=0; ix<N_KLATTP; ix++) | |||
{ | |||
for(ix=0; ix<9; ix++) | |||
{ | |||
SetSpinCtrl(s_klatt[ix], sf->klatt_param[ix]); | |||
} | |||
SetSpinCtrl(s_klatt[ix], sf->klatt_param[ix]); | |||
} | |||
} // end of FormantDlg::ShowFrame | |||
@@ -30,10 +30,10 @@ | |||
#include <stdlib.h> | |||
#include <math.h> | |||
#include <string.h> | |||
#include "klatt.h" | |||
#include "speak_lib.h" | |||
#include "speech.h" | |||
#include "klatt.h" | |||
#include "phoneme.h" | |||
#include "synthesize.h" | |||
#include "voice.h" | |||
@@ -967,7 +967,7 @@ static double DBtoLIN(long dB) | |||
extern voice_t *wvoice; | |||
static wavegen_peaks_t peaks[N_PEAKS]; | |||
static klatt_peaks_t peaks[N_PEAKS]; | |||
static int end_wave; | |||
static int klattp[N_KLATTP]; | |||
static double klattp1[N_KLATTP]; | |||
@@ -992,20 +992,20 @@ int Wavegen_Klatt(int resume) | |||
{ | |||
kt_frame.F0hz10 = (wdata.pitch * 10) / 4096; | |||
kt_frame.Fhz[F_NP] = peaks[0].freq; | |||
kt_frame.Fhz[F_NZ] = peaks[0].left; | |||
// formants F6,F7,F8 are fixed values for cascade resonators, set in KlattInit() | |||
// but F6 is used for parallel resonator | |||
for(ix=1; ix<=6; ix++) | |||
// F0 is used for the nasal zero | |||
for(ix=0; ix < 6; ix++) | |||
{ | |||
if(ix < 6) | |||
kt_frame.Fhz[ix] = peaks[ix].freq; | |||
if(ix < 4) | |||
{ | |||
kt_frame.Fhz[ix] = peaks[ix].freq; | |||
kt_frame.Bhz[ix] = peaks[ix].height; | |||
kt_frame.Bhz[ix] = peaks[ix].bw; | |||
} | |||
kt_frame.Bphz[ix] = peaks[ix].left; | |||
kt_frame.Ap[ix] = peaks[ix].right; | |||
} | |||
for(ix=1; ix < 7; ix++) | |||
{ | |||
kt_frame.Ap[ix] = 0; | |||
} | |||
kt_frame.AVdb = klattp[KLATT_AV]; | |||
@@ -1023,27 +1023,30 @@ int Wavegen_Klatt(int resume) | |||
{ | |||
peaks[pk].freq1 += peaks[pk].freq_inc; | |||
peaks[pk].freq = (int)peaks[pk].freq1; | |||
peaks[pk].height1 += peaks[pk].height_inc; | |||
peaks[pk].height = (int)peaks[pk].height1; | |||
peaks[pk].left1 += peaks[pk].left_inc; | |||
peaks[pk].left = (int)peaks[pk].left1; | |||
peaks[pk].right1 += peaks[pk].right_inc; | |||
peaks[pk].right = (int)peaks[pk].right1; | |||
peaks[pk].bw1 += peaks[pk].bw_inc; | |||
peaks[pk].bw = (int)peaks[pk].bw1; | |||
peaks[pk].bp1 += peaks[pk].bp_inc; | |||
peaks[pk].bp = (int)peaks[pk].bp1; | |||
peaks[pk].ap1 += peaks[pk].ap_inc; | |||
peaks[pk].ap = (int)peaks[pk].ap1; | |||
} | |||
for(ix=1; ix<=6; ix++) | |||
{ | |||
kt_frame.Fhz_next[ix] = peaks[ix].freq; | |||
kt_frame.Bhz_next[ix] = peaks[ix].height; | |||
} | |||
kt_frame.Fhz_next[F_NZ] = peaks[0].left; | |||
// advance other parameters | |||
for(ix=0; ix < N_KLATTP; ix++) | |||
{ | |||
klattp1[ix] += klattp_inc[ix]; | |||
klattp[ix] = int(klattp1[ix]); | |||
} | |||
for(ix=0; ix<=6; ix++) | |||
{ | |||
kt_frame.Fhz_next[ix] = peaks[ix].freq; | |||
if(ix < 4) | |||
{ | |||
kt_frame.Bhz_next[ix] = peaks[ix].bw; | |||
} | |||
} | |||
// advance the pitch | |||
wdata.pitch_ix += wdata.pitch_inc; | |||
if((ix = wdata.pitch_ix>>8) > 127) ix = 127; | |||
@@ -1163,48 +1166,66 @@ void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v | |||
for(ix=0; ix<N_KLATTP; ix++) | |||
{ | |||
klattp1[ix] = klattp[ix] = fr1->klattp[ix]; | |||
klattp_inc[ix] = double((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length; | |||
if((ix >= 5) && ((fr1->frflags & FRFLAG_KLATT) == 0)) | |||
{ | |||
klattp1[ix] = klattp[ix] = 0; | |||
klattp_inc[ix] = 0; | |||
} | |||
else | |||
{ | |||
klattp1[ix] = klattp[ix] = fr1->klattp[ix]; | |||
klattp_inc[ix] = double((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length; | |||
} | |||
if((ix>0) && (ix < KLATT_AVp)) | |||
klattp1[ix] = klattp[ix] = (klattp[ix] + wvoice->klattv[ix]); | |||
// get klatt parameter adjustments for the voice | |||
// if((ix>0) && (ix < KLATT_AVp)) | |||
// klattp1[ix] = klattp[ix] = (klattp[ix] + wvoice->klattv[ix]); | |||
} | |||
nsamples = length; | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
for(ix=1; ix < 6; ix++) | |||
{ | |||
peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix]; | |||
peaks[ix].freq = int(peaks[ix].freq1); | |||
next = (fr2->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix]; | |||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * STEPSIZE) / length; // lower headroom for fixed point math | |||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * STEPSIZE) / length; | |||
peaks[ix].height1 = fr1->fheight[ix] * 2; | |||
peaks[ix].height = int(peaks[ix].height1); | |||
next = fr2->fheight[ix] * 2; | |||
peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length; | |||
if(ix < 4) | |||
{ | |||
// klatt bandwidth for f1, f2, f3 (others are fixed) | |||
peaks[ix].bw1 = fr1->bw[ix] * 2; | |||
peaks[ix].bw = int(peaks[ix].bw1); | |||
next = fr2->bw[ix] * 2; | |||
peaks[ix].bw_inc = ((next - peaks[ix].bw1) * STEPSIZE) / length; | |||
} | |||
} | |||
if(ix < 6) | |||
// nasal zero frequency | |||
peaks[0].freq1 = fr1->klattp[KLATT_FNZ] * 2; | |||
peaks[0].freq = int(peaks[0].freq1); | |||
next = fr2->klattp[KLATT_FNZ] * 2; | |||
peaks[0].freq_inc = ((next - peaks[0].freq1) * STEPSIZE) / length; | |||
peaks[0].bw1 = 89; | |||
peaks[0].bw = 89; | |||
peaks[0].bw_inc = 0; | |||
if(fr1->frflags & FRFLAG_KLATT) | |||
{ | |||
// the frame contains additional parameters for parallel resonators | |||
for(ix=1; ix < 7; ix++) | |||
{ | |||
peaks[ix].left1 = fr1->fwidth[ix] * 2; | |||
peaks[ix].left = int(peaks[ix].left1); | |||
next = fr2->fwidth[ix] * 2; | |||
peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length; | |||
peaks[ix].right1 = fr1->fright[ix]; | |||
peaks[ix].right = int(peaks[ix].right1); | |||
next = fr2->fright[ix]; | |||
peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length; | |||
peaks[ix].bp1 = fr1->klatt_bp[ix] * 4; // parallel bandwidth | |||
peaks[ix].bp = int(peaks[ix].bp1); | |||
next = fr2->klatt_bp[ix] * 2; | |||
peaks[ix].bp_inc = ((next - peaks[ix].bp1) * STEPSIZE) / length; | |||
peaks[ix].ap1 = fr1->klatt_ap[ix]; // parallal amplitude | |||
peaks[ix].ap = int(peaks[ix].ap1); | |||
next = fr2->klatt_ap[ix] * 2; | |||
peaks[ix].ap_inc = ((next - peaks[ix].ap1) * STEPSIZE) / length; | |||
} | |||
peaks[6].left1 = fr1->fwidth6 * 2; | |||
peaks[6].left = int(peaks[6].left1); | |||
next = fr2->fwidth6 * 2; | |||
peaks[6].left_inc = ((next - peaks[6].left1) * STEPSIZE) / length; | |||
peaks[6].right1 = fr1->fright6; | |||
peaks[6].right = int(peaks[6].right1); | |||
next = fr2->fright6; | |||
peaks[6].right_inc = ((next - peaks[6].right1) * STEPSIZE) / length; | |||
} | |||
} // end of SetSynth_Klatt | |||
@@ -1276,7 +1297,7 @@ void KlattInit() | |||
kt_frame.Kskew = 0; | |||
kt_frame.AB = 0; | |||
kt_frame.AVpdb = 0; | |||
kt_frame.Gain0 = 62; | |||
kt_frame.Gain0 = 60; // 62 | |||
} // end of KlattInit | |||
#endif // INCLUDE_KLATT |
@@ -99,14 +99,14 @@ typedef struct | |||
/* Structure for Klatt Parameters */ | |||
#define F_NP 0 // nasal zero formant | |||
#define F_NZ 0 // nasal zero formant | |||
#define F1 1 | |||
#define F2 2 | |||
#define F3 3 | |||
#define F4 4 | |||
#define F5 5 | |||
#define F6 6 | |||
#define F_NZ 9 // nasal pole formant | |||
#define F_NP 9 // nasal pole formant | |||
typedef struct | |||
@@ -135,4 +135,19 @@ typedef struct | |||
} klatt_frame_t, *klatt_frame_ptr; | |||
typedef struct { | |||
int freq; // Hz | |||
int bw; // klatt bandwidth | |||
int ap; // parallel amplitude | |||
int bp; // parallel bandwidth | |||
DOUBLEX freq1; // floating point versions of the above | |||
DOUBLEX bw1; | |||
DOUBLEX ap1; | |||
DOUBLEX bp1; | |||
DOUBLEX freq_inc; // increment by this every 64 samples | |||
DOUBLEX bw_inc; | |||
DOUBLEX ap_inc; | |||
DOUBLEX bp_inc; | |||
} klatt_peaks_t; | |||
@@ -1248,7 +1248,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
value = this_value = atoi(word); | |||
ph_ordinal2[0] = 0; | |||
if((tr->langopts.numbers & 0x10000) && (word[ix] == '.')) | |||
if((tr->langopts.numbers & 0x10000) && (word[ix] == '.') && !isdigit(word[ix+2])) | |||
{ | |||
// ordinal number is indicated by dot after the number | |||
ordinal = 2; |
@@ -445,7 +445,7 @@ static void StopSpeak(int unused) | |||
}; | |||
int optind; | |||
static int optional_argument; | |||
static const char *arg_opts = "afklpsvw"; // which options have arguments | |||
static const char *arg_opts = "abfgklpsvw"; // which options have arguments | |||
static char *opt_string=""; | |||
#define no_argument 0 | |||
#define required_argument 1 | |||
@@ -568,7 +568,7 @@ int main (int argc, char **argv) | |||
#else | |||
while(true) | |||
{ | |||
c = getopt_long (argc, argv, "a:b:f:g:hk:l:p:qs:v:w:xXmz", | |||
c = getopt_long (argc, argv, "a:b:f:g:hk:l:p:qs:v:w:xXmz", // NOTE: also change arg_opts to indicate which commands have a numeric value | |||
long_options, &option_index); | |||
/* Detect the end of the options. */ |
@@ -523,7 +523,7 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
ep->type = (espeak_EVENT_TYPE)type; | |||
ep->unique_identifier = my_unique_identifier; | |||
ep->user_data = my_user_data; | |||
ep->text_position = char_position & 0xffff; | |||
ep->text_position = char_position & 0xffffff; | |||
ep->length = char_position >> 24; | |||
time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; |
@@ -61,7 +61,8 @@ static int default_freq[N_PEAKS] = | |||
{200,500,1200,3000,3500,4000,6900,7800,9000}; | |||
static int default_width[N_PEAKS] = | |||
{750,500,550,550,600,700,700,700,700}; | |||
static int default_klt_bw[N_PEAKS] = | |||
{89,90,140,260,260,260,500,500,500}; | |||
float SpectTilt(int value, int freq) | |||
{//================================= | |||
@@ -113,8 +114,15 @@ SpectFrame::SpectFrame(SpectFrame *copy) | |||
peaks[ix].pkheight = 0; | |||
peaks[ix].pkwidth = default_width[ix]; | |||
peaks[ix].pkright = default_width[ix]; | |||
peaks[ix].klt_bw = default_klt_bw[ix]; | |||
peaks[ix].klt_ap = 0; | |||
peaks[ix].klt_bp = default_klt_bw[ix]; | |||
} | |||
memset(klatt_param, 0, sizeof(klatt_param)); | |||
klatt_param[KLATT_AV] = 59; | |||
klatt_param[KLATT_Kopen] = 40; | |||
if(copy != NULL) | |||
{ | |||
*this = *copy; | |||
@@ -133,11 +141,11 @@ SpectFrame::~SpectFrame() | |||
int SpectFrame::Import(wxInputStream& stream1) | |||
{//========================================== | |||
// Import Pratt analysis data | |||
int ix; | |||
double x; | |||
unsigned short *spect_data; | |||
synthesizer_type = 0; | |||
wxTextInputStream stream(stream1); | |||
stream >> time; | |||
@@ -274,13 +282,13 @@ int SpectFrame::ImportSPC2(wxInputStream& stream, float &time_acc) | |||
int SpectFrame::Load(wxInputStream& stream, int synth_type) | |||
{//======================================================== | |||
int SpectFrame::Load(wxInputStream& stream, int file_format_type) | |||
{//============================================================== | |||
int ix; | |||
int x; | |||
unsigned short *spect_data; | |||
synthesizer_type = synth_type; | |||
file_format = file_format_type; | |||
wxDataInputStream s(stream); | |||
time = s.ReadDouble(); | |||
@@ -291,6 +299,12 @@ int SpectFrame::Load(wxInputStream& stream, int synth_type) | |||
markers = s.Read16(); | |||
amp_adjust = s.Read16(); | |||
if(file_format == 2) | |||
{ | |||
s.Read16(); // spare | |||
s.Read16(); // spare | |||
} | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
{ | |||
formants[ix].freq = s.Read16(); | |||
@@ -300,11 +314,18 @@ int SpectFrame::Load(wxInputStream& stream, int synth_type) | |||
keyframe = 1; | |||
peaks[ix].pkwidth = s.Read16(); | |||
peaks[ix].pkright = s.Read16(); | |||
if(file_format == 2) | |||
{ | |||
peaks[ix].klt_bw = s.Read16(); | |||
peaks[ix].klt_ap = s.Read16(); | |||
peaks[ix].klt_bp = s.Read16(); | |||
} | |||
} | |||
if(synthesizer_type == 1) | |||
if(file_format > 0) | |||
{ | |||
for(ix=0; ix<N_KLATTP; ix++) | |||
for(ix=0; ix<N_KLATTP2; ix++) | |||
{ | |||
klatt_param[ix] = s.Read16(); | |||
} | |||
@@ -344,6 +365,12 @@ int SpectFrame::Save(wxOutputStream& stream) | |||
s.Write16(markers); | |||
s.Write16(amp_adjust); | |||
if(file_format == 2) | |||
{ | |||
s.Write16(0); // spare | |||
s.Write16(0); // spare | |||
} | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
{ | |||
s.Write16(formants[ix].freq); | |||
@@ -353,11 +380,18 @@ int SpectFrame::Save(wxOutputStream& stream) | |||
s.Write16(keyframe ? peaks[ix].pkheight : 0); | |||
s.Write16(peaks[ix].pkwidth); | |||
s.Write16(peaks[ix].pkright); | |||
if(file_format == 2) | |||
{ | |||
s.Write16(peaks[ix].klt_bw); | |||
s.Write16(peaks[ix].klt_ap); | |||
s.Write16(peaks[ix].klt_bp); | |||
} | |||
} | |||
if(synthesizer_type == 1) | |||
if(file_format > 0) | |||
{ | |||
for(ix=0; ix<N_KLATTP; ix++) | |||
for(ix=0; ix<N_KLATTP2; ix++) | |||
{ | |||
s.Write16(klatt_param[ix]); | |||
} | |||
@@ -481,20 +515,9 @@ void SpectFrame::DrawPeaks(wxDC *dc, int offy, int frame_width, int seq_amplitud | |||
if((pk->pkfreq == 0) || (pk->pkheight==0)) continue; | |||
if(synthesizer_type==1) | |||
{ | |||
if(peak==0) continue; | |||
height = pk->pkheight + (64 * 64); | |||
height = (500000/height) * 100; | |||
pkright = pkwidth = pk->pkheight / 16; | |||
} | |||
else | |||
{ | |||
height = pk->pkheight; | |||
pkright = pk->pkright; | |||
pkwidth = pk->pkwidth; | |||
} | |||
height = pk->pkheight; | |||
pkright = pk->pkright; | |||
pkwidth = pk->pkwidth; | |||
x1 = (int)(pk->pkfreq*scale_x); | |||
x2 = (int)((pk->pkfreq + pkright)*scale_x); | |||
@@ -678,8 +701,6 @@ void SpectFrame::KlattDefaults() | |||
int bw; | |||
int bw3; | |||
synthesizer_type = 1; | |||
klatt_param[KLATT_AV] = 59; | |||
klatt_param[KLATT_AVp] = 0; | |||
klatt_param[KLATT_Fric] = 0; | |||
@@ -689,7 +710,7 @@ void SpectFrame::KlattDefaults() | |||
klatt_param[KLATT_Skew] = 0; | |||
klatt_param[KLATT_Tilt] = 0; | |||
klatt_param[KLATT_Kopen] = 40; | |||
klatt_param[KLATT_spare1] = 0; | |||
klatt_param[KLATT_FNZ] = 280; | |||
bw = 60; | |||
if(peaks[1].pkfreq < 400) |
@@ -48,11 +48,13 @@ | |||
#define T_SKEW 318 | |||
#define T_TILT 319 | |||
#define T_KOPEN 320 | |||
#define T_FNZ 321 | |||
#define FILEID1_SPECTSEQ 0x43455053 | |||
#define FILEID2_SPECTSEQ 0x51455354 // for eSpeak sequence | |||
#define FILEID2_SPECTSEK 0x4b455354 // for Klatt sequence | |||
#define FILEID2_SPECTSQ2 0x32515354 // with Klatt data | |||
#define FILEID1_SPC2 0x32435053 // an old format for spectrum files | |||
@@ -72,10 +74,20 @@ typedef struct { | |||
} PitchEnvelope; | |||
typedef struct { | |||
short freq; | |||
short bandw; | |||
short freq; | |||
short bandw; | |||
} formant_t; | |||
typedef struct { | |||
short pkfreq; | |||
short pkheight; | |||
short pkwidth; | |||
short pkright; | |||
short klt_bw; | |||
short klt_ap; | |||
short klt_bp; | |||
} peak_t; | |||
//=============================================================================================== | |||
// Old "SPC2" format | |||
@@ -122,7 +134,7 @@ public: | |||
~SpectFrame(); | |||
int Import(wxInputStream &stream); | |||
int ImportSPC2(wxInputStream &stream, float &time_acc); | |||
int Load(wxInputStream &stream, int synthesizer_type); | |||
int Load(wxInputStream &stream, int file_format_type); | |||
int Save(wxOutputStream &stream); | |||
void Draw(wxDC &dc, int offy, int frame_width, double scalex, double scaley); | |||
@@ -149,10 +161,10 @@ public: | |||
int nx; | |||
int markers; | |||
int max_y; | |||
int synthesizer_type; // 0=eSpeak, 1=Klatt | |||
int file_format; // 0=eSpeak, 1=Klatt, 2=eSpeak+Klatt | |||
USHORT *spect; // sqrt of harmonic amplitudes, 1-nx at 'pitch' | |||
short klatt_param[N_KLATTP]; | |||
short klatt_param[N_KLATTP2]; | |||
formant_t formants[N_PEAKS]; // this is just the estimate given by Praat | |||
peak_t peaks[N_PEAKS]; | |||
@@ -187,7 +199,6 @@ public: | |||
float GetKeyedLength(); | |||
void SetFrameLengths(); | |||
void ConstructVowel(void); | |||
void SetKlattDefaults(void); | |||
int numframes; | |||
int amplitude; | |||
@@ -203,7 +214,7 @@ public: | |||
int bass_reduction; | |||
int max_x; | |||
int max_y; | |||
int synthesizer_type; | |||
int file_format; | |||
private: | |||
@@ -281,6 +292,7 @@ class FormantDlg : public wxPanel | |||
public: | |||
FormantDlg(wxWindow *parent); | |||
void ShowFrame(SpectSeq *spectseq, int frame, int pk, int field); | |||
void GetValues(SpectSeq *spectseq, int frame); | |||
void OnCommand(wxCommandEvent& event); | |||
void OnSpin(wxSpinEvent& event); | |||
void HideFields(int synth_type); | |||
@@ -304,7 +316,9 @@ class FormantDlg : public wxPanel | |||
wxTextCtrl *t_pkfreq[N_PEAKS]; | |||
wxTextCtrl *t_pkheight[N_PEAKS]; | |||
wxTextCtrl *t_pkwidth[N_PEAKS]; | |||
wxTextCtrl *t_pkright[N_PEAKS]; | |||
wxTextCtrl *t_klt_bw[N_PEAKS]; | |||
wxTextCtrl *t_klt_ap[N_PEAKS]; | |||
wxTextCtrl *t_klt_bp[N_PEAKS]; | |||
wxRadioButton *t_select_peak[N_PEAKS]; | |||
wxButton *t_zoomout; |
@@ -253,7 +253,7 @@ void SpectDisplay::RefreshDialogValues(int type) | |||
sf->amp_adjust = formantdlg->t_ampframe->GetValue(); | |||
sf->length_adjust = formantdlg->t_timeframe->GetValue() - spectseq->GetFrameLength(sframe,0,NULL); | |||
for(ix=0; ix<9; ix++) | |||
for(ix=0; ix < N_KLATTP; ix++) | |||
{ | |||
sf->klatt_param[ix] = formantdlg->s_klatt[ix]->GetValue(); | |||
} | |||
@@ -550,6 +550,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
case WXK_NEXT: | |||
if(sframe < spectseq->numframes-1) | |||
{ | |||
formantdlg->GetValues(spectseq, sframe); | |||
spectseq->SelectAll(0); | |||
sframe++; | |||
spectseq->frames[sframe]->selected = 1; | |||
@@ -560,6 +561,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
case WXK_PRIOR: | |||
if(sframe > 0) | |||
{ | |||
formantdlg->GetValues(spectseq, sframe); | |||
spectseq->SelectAll(0); | |||
sframe--; | |||
spectseq->frames[sframe]->selected = 1; | |||
@@ -633,14 +635,15 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
if(event.ControlDown()) | |||
{ | |||
// CTRL, rotate, make right slope steeper | |||
if(spectseq->synthesizer_type==0) | |||
if(pk_num < 3) | |||
{ | |||
pk->pkright-= 5; | |||
pk->pkwidth += 5; | |||
pk->pkwidth += 5; | |||
} | |||
} | |||
else | |||
{ | |||
if(spectseq->synthesizer_type==0) | |||
pk->pkright -= 10; | |||
pk->pkright -= 10; | |||
pk->pkwidth -= 10; | |||
if(pk->pkright < 0) | |||
pk->pkright = 0; | |||
@@ -655,14 +658,15 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
if(event.ControlDown()) | |||
{ | |||
// CTRL: rotate, make left slope steeper | |||
if(spectseq->synthesizer_type==0) | |||
if(pk_num < 3) | |||
{ | |||
pk->pkright += 5; | |||
pk->pkwidth -= 5; | |||
pk->pkwidth -= 5; | |||
} | |||
} | |||
else | |||
{ | |||
if(spectseq->synthesizer_type==0) | |||
pk->pkright += 10; | |||
pk->pkright += 10; | |||
pk->pkwidth += 10; | |||
} | |||
field = 4; | |||
@@ -670,8 +674,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
break; | |||
case '<': // width-- | |||
if(spectseq->synthesizer_type==0) | |||
pk->pkright -= 2; | |||
pk->pkright -= 2; | |||
pk->pkwidth -= 2; | |||
if(pk->pkwidth < 0) | |||
pk->pkwidth = 0; | |||
@@ -680,8 +683,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
break; | |||
case '>': // width++ | |||
if(spectseq->synthesizer_type==0) | |||
pk->pkright += 2; | |||
pk->pkright += 2; | |||
pk->pkwidth += 2; | |||
display = 1; | |||
field = 4; | |||
@@ -744,8 +746,8 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
break; | |||
case 0x104b: // CTRL-K | |||
spectseq->SetKlattDefaults(); | |||
display = 3; | |||
// spectseq->SetKlattDefaults(); | |||
// display = 3; | |||
break; | |||
case 0x104d: // CTRL-M | |||
@@ -865,28 +867,25 @@ void SpectDisplay::OnKey(wxKeyEvent& event) | |||
sf = spectseq->frames[sframe]; | |||
pk = &sf->peaks[pk_num]; | |||
if(spectseq->synthesizer_type==0) | |||
{ | |||
if(pk->pkwidth < 50) pk->pkwidth = 50; // min. width | |||
if(pk->pkright < 50) pk->pkright = 50; | |||
if(pk->pkwidth < 50) pk->pkwidth = 50; // min. width | |||
if(pk->pkright < 50) pk->pkright = 50; | |||
// ensure minimum separation between peaks & prevent crossover | |||
if(direction > 0) | |||
// ensure minimum separation between peaks & prevent crossover | |||
if(direction > 0) | |||
{ | |||
for(i=pk_num+1; i<N_PEAKS; i++) | |||
{ | |||
for(i=pk_num+1; i<N_PEAKS; i++) | |||
{ | |||
if(sf->peaks[i].pkfreq < sf->peaks[i-1].pkfreq + 100) | |||
sf->peaks[i].pkfreq = sf->peaks[i-1].pkfreq + 100; | |||
} | |||
if(sf->peaks[i].pkfreq < sf->peaks[i-1].pkfreq + 100) | |||
sf->peaks[i].pkfreq = sf->peaks[i-1].pkfreq + 100; | |||
} | |||
else | |||
if(direction < 0) | |||
} | |||
else | |||
if(direction < 0) | |||
{ | |||
for(i=pk_num-1; i>=0; i--) | |||
{ | |||
for(i=pk_num-1; i>=0; i--) | |||
{ | |||
if(sf->peaks[i].pkfreq > sf->peaks[i+1].pkfreq - 100) | |||
sf->peaks[i].pkfreq = sf->peaks[i+1].pkfreq - 100; | |||
} | |||
if(sf->peaks[i].pkfreq > sf->peaks[i+1].pkfreq - 100) | |||
sf->peaks[i].pkfreq = sf->peaks[i+1].pkfreq - 100; | |||
} | |||
} | |||
@@ -957,6 +956,7 @@ void SpectDisplay::OnMouse(wxMouseEvent& event) | |||
if(frame < spectseq->numframes) | |||
{ | |||
formantdlg->GetValues(spectseq,sframe); | |||
if(sframe != frame) | |||
formantdlg->ShowFrame(spectseq,frame,pk_num,0xff); | |||
@@ -147,7 +147,7 @@ SpectSeq::SpectSeq(int n) | |||
max_x = 3000; | |||
max_y = 1; | |||
synthesizer_type = 0; | |||
file_format = 0; | |||
} | |||
SpectSeq::~SpectSeq() | |||
@@ -391,7 +391,7 @@ void SpectSeq::Load2(wxInputStream& stream, int import, int n) | |||
} | |||
else | |||
{ | |||
if(frame->Load(stream, synthesizer_type) != 0) break; | |||
if(frame->Load(stream, file_format) != 0) break; | |||
} | |||
frames[numframes++] = frame; | |||
@@ -424,6 +424,7 @@ else | |||
int SpectSeq::Import(wxInputStream& stream) | |||
{//======================================== | |||
// Import data from Pratt analysis | |||
int n = 0; | |||
@@ -509,12 +510,17 @@ int SpectSeq::Load(wxInputStream & stream) | |||
else | |||
if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEQ)) | |||
{ | |||
synthesizer_type = 0; // eSpeak formants | |||
file_format = 0; // eSpeak formants | |||
} | |||
else | |||
if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEK)) | |||
{ | |||
synthesizer_type = 1; // formants for Klatt synthesizer | |||
file_format = 1; // formants for Klatt synthesizer | |||
} | |||
else | |||
if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSQ2)) | |||
{ | |||
file_format = 2; // formants for Klatt synthesizer | |||
} | |||
else | |||
{ | |||
@@ -554,7 +560,9 @@ int SpectSeq::Save(wxOutputStream &stream, int selection) | |||
wxDataOutputStream s(stream); | |||
s.Write32(FILEID1_SPECTSEQ); | |||
if(synthesizer_type == 1) | |||
if(file_format == 2) | |||
s.Write32(FILEID2_SPECTSQ2); | |||
if(file_format == 1) | |||
s.Write32(FILEID2_SPECTSEK); | |||
else | |||
s.Write32(FILEID2_SPECTSEQ); | |||
@@ -576,24 +584,6 @@ int SpectSeq::Save(wxOutputStream &stream, int selection) | |||
void SpectSeq::SetKlattDefaults(void) | |||
{//================================== | |||
int ix; | |||
synthesizer_type = 1; | |||
for(ix=0; ix<numframes; ix++) | |||
{ | |||
if(frames[ix]->keyframe) | |||
{ | |||
frames[ix]->KlattDefaults(); | |||
} | |||
frames[ix]->synthesizer_type = 1; | |||
} | |||
} | |||
void SpectSeq::ConstructVowel(void) | |||
{//================================ | |||
@@ -924,13 +914,10 @@ void SpectSeq::ApplyAmp_adjust(SpectFrame *sp, peak_t *peaks) | |||
memcpy(peaks,sp->peaks,sizeof(*peaks)*N_PEAKS); | |||
if(synthesizer_type == 0) | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
{ | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
{ | |||
y = peaks[ix].pkheight * sp->amp_adjust * amplitude; | |||
peaks[ix].pkheight = y / 10000; | |||
} | |||
y = peaks[ix].pkheight * sp->amp_adjust * amplitude; | |||
peaks[ix].pkheight = y / 10000; | |||
} | |||
} // end of ApplyAmp_adjust | |||
@@ -939,44 +926,26 @@ void SpectSeq::ApplyAmp_adjust(SpectFrame *sp, peak_t *peaks) | |||
void PeaksToFrame(SpectFrame *sp1, peak_t *pks, frame_t *fr) | |||
{//========================================================= | |||
int ix; | |||
int x, x2; | |||
int x; | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
fr->ffreq[ix] = pks[ix].pkfreq; | |||
if(sp1->synthesizer_type==0) | |||
{ | |||
x = pks[ix].pkheight >> 6; | |||
} | |||
else | |||
{ | |||
x = pks[ix].pkheight >> 7; | |||
fr->fwidth6 = pks[6].pkwidth >> 1; | |||
fr->fright6 = pks[6].pkright; | |||
} | |||
if(x > 255) | |||
x = 255; | |||
fr->fheight[ix] = x; | |||
if(ix < 7) | |||
fr->ffreq[ix] = pks[ix].pkfreq; | |||
fr->fheight[ix] = pks[ix].pkheight >> 6; | |||
if(ix < 6) | |||
{ | |||
x = pks[ix].pkwidth/2; | |||
x2 = pks[ix].pkright; | |||
if(sp1->synthesizer_type == 0) | |||
{ | |||
x /= 2; | |||
x2 /= 4; | |||
} | |||
if(x > 255) | |||
if((x = (pks[ix].pkwidth >> 2)) > 255) | |||
x = 255; | |||
fr->fwidth[ix] = x; | |||
if(x2 > 255) | |||
x2 = 255; | |||
fr->fright[ix] = x2; | |||
if(ix < 3) | |||
{ | |||
if((x = (pks[ix].pkright >> 2)) > 255) | |||
x = 255; | |||
fr->fright[ix] = x; | |||
} | |||
} | |||
} | |||
@@ -994,11 +963,7 @@ static void SetSynth_mS(int length_mS, SpectFrame *sp1, SpectFrame *sp2, peak_t | |||
PeaksToFrame(sp2,pks2,&fr2); | |||
#ifdef KLATT_TEST | |||
if(sp1->synthesizer_type == 1) | |||
{ | |||
SetSynth_Klatt((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice, control); // convert mS to samples | |||
} | |||
else | |||
// SetSynth_Klatt((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice, control); // convert mS to samples | |||
#endif | |||
{ | |||
SetSynth((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice); // convert mS to samples | |||
@@ -1025,6 +990,7 @@ void SpectSeq::MakeWave(int start, int end, PitchEnvelope &pitch) | |||
peak_t peaks0[N_PEAKS]; | |||
peak_t peaks1[N_PEAKS]; | |||
peak_t peaks2[N_PEAKS]; | |||
int synthesizer_type = 0; | |||
#ifdef KLATT_TEST | |||
KlattInit(); | |||
@@ -1158,6 +1124,7 @@ void SpectFrame::MakeWaveF(int control, PitchEnvelope &pitche, int amplitude, in | |||
int ipitch; | |||
int pbase; | |||
char *fname_speech; | |||
int synthesizer_type = 0; | |||
#ifdef KLATT_TEST | |||
KlattInit(); |
@@ -21,7 +21,7 @@ | |||
#include <sys/types.h> | |||
// conditional compilation options | |||
//#define INCLUDE_KLATT | |||
#define INCLUDE_KLATT | |||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | |||
#define ARCH_BIG |
@@ -35,8 +35,8 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.40.13 5.Apr.09"; | |||
const int version_phdata = 0x014000; | |||
const char *version_string = "1.40.21 29.May.09"; | |||
const int version_phdata = 0x014015; | |||
int option_device_number = -1; | |||
@@ -353,7 +353,7 @@ static void set_frame_rms(frame_t *fr, int new_rms) | |||
849,851,853,856,858,861,863,865,868,870,872,875,877,879,882,884, | |||
886,889,891,893,896,898,900,902}; | |||
if(fr->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
{ | |||
if(new_rms == -1) | |||
{ | |||
@@ -368,7 +368,7 @@ static void set_frame_rms(frame_t *fr, int new_rms) | |||
x = sqrt_tab[x]; // sqrt(new_rms/fr->rms)*0x200; | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
h = fr->fheight[ix] * x; | |||
fr->fheight[ix] = h/0x200; | |||
@@ -383,10 +383,10 @@ static void formants_reduce_hf(frame_t *fr, int level) | |||
int ix; | |||
int x; | |||
if(fr->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
return; | |||
for(ix=2; ix<N_PEAKS; ix++) | |||
for(ix=2; ix < 8; ix++) | |||
{ | |||
x = fr->fheight[ix] * level; | |||
fr->fheight[ix] = x/100; | |||
@@ -551,7 +551,7 @@ static short vcolouring[N_VCOLOUR][5] = { | |||
next_rms = seq[1].frame->rms; | |||
if(fr->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
{ | |||
fr->klattp[KLATT_AV] = 53; // reduce the amplituide of the start of a vowel | |||
} | |||
@@ -676,9 +676,6 @@ static void SmoothSpect(void) | |||
q = wcmdq[syllable_centre]; | |||
frame_centre = (frame_t *)q[2]; | |||
//if(frame_centre->frflags & FRFLAG_KLATT) | |||
// return; // TESTING | |||
// backwards | |||
ix = syllable_centre -1; | |||
frame = frame2 = frame_centre; | |||
@@ -911,7 +908,7 @@ if(which==1) | |||
frame1 = frames[0].frame; | |||
frame1_length = frames[0].length; | |||
if(frame1->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
wcmd_spect = WCMD_KLATT; | |||
if(wavefile_ix == 0) | |||
@@ -920,14 +917,14 @@ if(which==1) | |||
{ | |||
// cancel any wavefile that was playing previously | |||
wcmd_spect = WCMD_SPECT2; | |||
if(frame1->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
wcmd_spect = WCMD_KLATT2; | |||
wave_flag = 0; | |||
} | |||
else | |||
{ | |||
wcmd_spect = WCMD_SPECT; | |||
if(frame1->frflags & FRFLAG_KLATT) | |||
if(voice->klattv[0]) | |||
wcmd_spect = WCMD_KLATT; | |||
} | |||
} | |||
@@ -944,9 +941,10 @@ if(which==1) | |||
{ | |||
// but flag indicates keep HF peaks in last segment | |||
fr = CopyFrame(frame1,1); | |||
for(ix=3; ix<N_PEAKS; ix++) | |||
for(ix=3; ix < 8; ix++) | |||
{ | |||
fr->ffreq[ix] = last_frame->ffreq[ix]; | |||
if(ix < 7) | |||
fr->ffreq[ix] = last_frame->ffreq[ix]; | |||
fr->fheight[ix] = last_frame->fheight[ix]; | |||
} | |||
wcmdq[last_wcmdq][3] = (long)fr; |
@@ -70,25 +70,52 @@ extern int embedded_default[N_EMBEDDED_VALUES]; | |||
#define N_PEAKS 9 | |||
#define N_MARKERS 8 | |||
typedef struct { | |||
short pkfreq; | |||
short pkheight; | |||
short pkwidth; | |||
short pkright; | |||
} peak_t; | |||
#define N_KLATTP 10 // this affects the phoneme data file format | |||
#define N_KLATTP2 14 // used in vowel files, with extra parameters for future extensions | |||
#define KLATT_AV 0 | |||
#define KLATT_Kopen 1 | |||
#define KLATT_Skew 2 | |||
#define KLATT_Tilt 3 | |||
#define KLATT_Turb 4 | |||
#define KLATT_Aspr 5 | |||
#define KLATT_AVp 6 // this is after the parameters which can be change by the Voice | |||
#define KLATT_FNZ 1 // nasal zero freq | |||
#define KLATT_Tilt 2 | |||
#define KLATT_Aspr 3 | |||
#define KLATT_Skew 4 | |||
#define KLATT_Kopen 5 | |||
#define KLATT_AVp 6 | |||
#define KLATT_Fric 7 | |||
#define KLATT_FricBP 8 | |||
#define KLATT_spare1 9 | |||
#define KLATT_Turb 9 | |||
typedef struct { // 44 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | |||
unsigned char klatt_ap[7]; // Klatt parallel amplitude | |||
unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2 | |||
} frame_t; // with extra Klatt parameters for parallel resonators | |||
typedef struct { // 44 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
} frame_t2; // TESTING | |||
#ifdef deleted | |||
typedef struct { | |||
short frflags; | |||
unsigned char length; | |||
@@ -110,19 +137,7 @@ typedef struct { // 43 bytes | |||
unsigned char fwidth[6]; // width/4 | |||
unsigned char fright[6]; // width/4 | |||
} frame_t2; // the original, without Klatt additions, used for file "phondata" | |||
typedef struct { // 44 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, spare, spare (Aspr, Skew ?) | |||
} frame_t3; // TESTING | |||
#endif | |||
@@ -39,6 +39,7 @@ | |||
#define L_qa 0x716100 | |||
#define L_grc 0x677263 // grc Ancient Greek | |||
#define L_jbo 0x6a626f // jbo Lojban | |||
#define L_pap 0x706170 // pap Papiamento | |||
#define L_zhy 0x7a6879 // zhy | |||
// start of unicode pages for character sets | |||
@@ -318,7 +319,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_rule = 0; | |||
SetLetterVowel(tr,'y'); | |||
// tr->langopts.numbers = 0x11849; | |||
tr->langopts.numbers = 0x10c59; | |||
} | |||
break; | |||
@@ -415,6 +416,7 @@ Translator *SelectTranslator(const char *name) | |||
case L('e','s'): // Spanish | |||
case L('c','a'): // Catalan | |||
case L_pap: // Papiamento | |||
{ | |||
static const short stress_lengths_es[8] = {180, 210, 190, 190, 0, 0, 230, 260}; | |||
// static const short stress_lengths_es[8] = {170, 200, 180, 180, 0, 0, 220, 250}; | |||
@@ -440,6 +442,11 @@ Translator *SelectTranslator(const char *name) | |||
tr->punct_within_word = ca_punct_within_word; | |||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||
} | |||
else | |||
if(name2 == L_pap) | |||
{ | |||
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||
} | |||
} | |||
break; | |||
@@ -467,9 +474,9 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | |||
tr->langopts.long_stop = 130; | |||
tr->langopts.numbers = 0x1809; | |||
tr->langopts.numbers = 0x1009; | |||
SetLetterVowel(tr,'y'); | |||
tr->langopts.max_initial_consonants = 2; | |||
// tr->langopts.max_initial_consonants = 2; // BUT foreign words may have 3 | |||
tr->langopts.spelling_stress = 1; | |||
tr->langopts.intonation_group = 3; // less intonation, don't raise pitch at comma | |||
} |
@@ -278,9 +278,9 @@ TranslDlg::TranslDlg(wxWindow *parent) : wxPanel(parent) | |||
{//===================================================== | |||
t_source = new wxTextCtrl(this,T_SOURCE,_T(""),wxPoint(0,4), | |||
wxSize(204,250),wxTE_MULTILINE); | |||
wxSize(298,250),wxTE_MULTILINE); | |||
t_phonetic = new wxTextCtrl(this,T_PHONETIC,_T(""),wxPoint(0,262), | |||
wxSize(204,350),wxTE_MULTILINE); | |||
wxSize(298,350),wxTE_MULTILINE); | |||
t_translate = new wxButton(this,T_TRANSLATE,_T("Translate"),wxPoint(4,620)); | |||
t_translate = new wxButton(this,T_RULES,_T("Show Rules"),wxPoint(4,652)); |
@@ -366,7 +366,7 @@ void VoiceReset(int tone_only) | |||
// Set voice to the default values | |||
int pk; | |||
static unsigned char default_heights[N_PEAKS] = {255,255,240,240,220,220,255,255,255}; | |||
static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; | |||
static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128}; | |||
static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; | |||
@@ -400,7 +400,7 @@ void VoiceReset(int tone_only) | |||
for(pk=0; pk<N_PEAKS; pk++) | |||
{ | |||
voice->freq[pk] = 256; | |||
voice->height[pk] = default_heights[pk]; | |||
voice->height[pk] = default_heights[pk]*2; | |||
voice->width[pk] = default_widths[pk]*2; | |||
voice->breath[pk] = 0; | |||
voice->breathw[pk] = breath_widths[pk]; // default breath formant woidths | |||
@@ -839,7 +839,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
case V_TONE: | |||
{ | |||
int tone_data[10]; | |||
int tone_data[12]; | |||
ReadTonePoints(p,tone_data); | |||
SetToneAdjust(voice,tone_data); | |||
} | |||
@@ -880,6 +880,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
break; | |||
case V_KLATT: | |||
voice->klattv[0] = 1; // default source: IMPULSIVE | |||
Read8Numbers(p,voice->klattv); | |||
voice->klattv[KLATT_Kopen] -= 40; | |||
break; |
@@ -988,14 +988,24 @@ static void AdvanceParameters() | |||
peaks[ix].height = 0; | |||
peaks[ix].left1 += peaks[ix].left_inc; | |||
peaks[ix].left = int(peaks[ix].left1); | |||
peaks[ix].right1 += peaks[ix].right_inc; | |||
peaks[ix].right = int(peaks[ix].right1); | |||
if(ix < 3) | |||
{ | |||
peaks[ix].right1 += peaks[ix].right_inc; | |||
peaks[ix].right = int(peaks[ix].right1); | |||
} | |||
else | |||
{ | |||
peaks[ix].right = peaks[ix].left; | |||
} | |||
} | |||
for(;ix < N_PEAKS; ix++) | |||
for(;ix < 8; ix++) | |||
{ | |||
// formants 6,7,8 don't have a width parameter | |||
peaks[ix].freq1 += peaks[ix].freq_inc; | |||
peaks[ix].freq = int(peaks[ix].freq1); | |||
if(ix < 7) | |||
{ | |||
peaks[ix].freq1 += peaks[ix].freq_inc; | |||
peaks[ix].freq = int(peaks[ix].freq1); | |||
} | |||
peaks[ix].height1 += peaks[ix].height_inc; | |||
if((peaks[ix].height = int(peaks[ix].height1)) < 0) | |||
peaks[ix].height = 0; | |||
@@ -1732,12 +1742,19 @@ if(option_log_frames) | |||
nsamples += length2; | |||
length4 = length2/4; | |||
for(ix=0; ix<N_PEAKS; ix++) | |||
peaks[7].freq = (7800 * v->freq[7] + v->freqadd[7]*256) << 8; | |||
peaks[8].freq = (9000 * v->freq[8] + v->freqadd[8]*256) << 8; | |||
for(ix=0; ix < 8; ix++) | |||
{ | |||
peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; | |||
peaks[ix].freq = int(peaks[ix].freq1); | |||
next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; | |||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4; // lower headroom for fixed point math | |||
if(ix < 7) | |||
{ | |||
peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; | |||
peaks[ix].freq = int(peaks[ix].freq1); | |||
next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8; | |||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4; // lower headroom for fixed point math | |||
} | |||
peaks[ix].height1 = (fr1->fheight[ix] * v->height[ix]) << 6; | |||
peaks[ix].height = int(peaks[ix].height1); | |||
@@ -1751,10 +1768,17 @@ if(option_log_frames) | |||
next = (fr2->fwidth[ix] * v->width[ix]) << 10; | |||
peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length2; | |||
peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10; | |||
peaks[ix].right = int(peaks[ix].right1); | |||
next = (fr2->fright[ix] * v->width[ix]) << 10; | |||
peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2; | |||
if(ix < 3) | |||
{ | |||
peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10; | |||
peaks[ix].right = int(peaks[ix].right1); | |||
next = (fr2->fright[ix] * v->width[ix]) << 10; | |||
peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2; | |||
} | |||
else | |||
{ | |||
peaks[ix].right = peaks[ix].left; | |||
} | |||
} | |||
} | |||
} // end of SetSynth |