mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-05 06:45:39 +00:00
[1.40.21]
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-fd96e6ae7743
This commit is contained in:
+29
-7
@@ -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@
|
||||
|
||||
+21
-4
@@ -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 _
|
||||
|
||||
+36
-13
@@ -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
|
||||
|
||||
+10
-7
@@ -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
|
||||
|
||||
+6
-6
@@ -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
|
||||
|
||||
+4
-5
@@ -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
|
||||
|
||||
|
||||
|
||||
+128
-97
@@ -24,7 +24,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated 2009-04-04 Michel Such <michel.such@free.fr>
|
||||
// Updated 2009-05-14 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
// * 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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+93
-60
@@ -23,7 +23,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated: 2009-04-01 Michel Such <michel.such@free.fr>
|
||||
// Updated: 2009-05-14 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
|
||||
// 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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+8
-8
@@ -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
|
||||
|
||||
+99
-70
@@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
+10
-14
@@ -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
|
||||
|
||||
|
||||
|
||||
+107
-112
@@ -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
|
||||
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
|
||||
before (r) DFT-10+vwl_fr/r_e
|
||||
before r/2 DFT-10+vwl_fr/r_e
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme i
|
||||
vowel starttype (i) endtype (i)
|
||||
length 170
|
||||
formants vowel/i_3
|
||||
length 180
|
||||
formants vowel/i_2
|
||||
linkout ;
|
||||
after l l/li-15
|
||||
after (l) l/li-15
|
||||
before l/ DFT+l/l_i
|
||||
before (r) DFT+r/xr
|
||||
before r/2 DFT+r3/r_i
|
||||
before (r) DFT-20+vwl_fr/r_i
|
||||
before r/2 DFT+vwl_fr/r_i
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme i- // shorter
|
||||
vowel starttype (i) endtype (i)
|
||||
length 120
|
||||
formants vowel/i_2
|
||||
linkout ;
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+5
-1
@@ -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
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
+53
-30
@@ -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++;
|
||||
|
||||
+2
-2
@@ -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));
|
||||
|
||||
+154
-95
@@ -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));
|
||||
|
||||
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 += 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_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_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_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(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_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_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_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));
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
+75
-54
@@ -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 < 6)
|
||||
if(ix < 4)
|
||||
{
|
||||
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;
|
||||
// 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;
|
||||
}
|
||||
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;
|
||||
// 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].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;
|
||||
}
|
||||
}
|
||||
} // 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
|
||||
|
||||
+17
-2
@@ -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;
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+2
-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. */
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+47
-26
@@ -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)
|
||||
|
||||
+22
-8
@@ -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;
|
||||
|
||||
+33
-33
@@ -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);
|
||||
|
||||
|
||||
+31
-64
@@ -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();
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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;
|
||||
|
||||
|
||||
+11
-13
@@ -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;
|
||||
|
||||
+42
-27
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
+10
-3
@@ -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
|
||||
}
|
||||
|
||||
+2
-2
@@ -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));
|
||||
|
||||
+4
-3
@@ -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;
|
||||
|
||||
+38
-14
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user