Fix: -g command option not working on Windows. Fix: Text position value in events was limited to 16 bits. [1.40.15] espeakedit: Change formant dialog to include Klatt parameters. espeakedit: Change the format of formant data to include Klatt parameters. espeakedit: Fix the frequency of F7,F8 at 7800Hz,9000Hz. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@220 d46cf337-b52f-0410-862d-fd96e6ae7743master
// abbreviations | // abbreviations | ||||
(http ://) hA:te@te@p'e@_ | (http ://) hA:te@te@p'e@_ | ||||
adv atfuk'A:t | adv atfuk'A:t | ||||
atkv $abbrev | |||||
bpk b@p&rk | bpk b@p&rk | ||||
bv beIf'o@rbe@lt $dot | bv beIf'o@rbe@lt $dot | ||||
dr d'Okt@r $dot | dr d'Okt@r $dot | ||||
e.a _:En_'and@r | e.a _:En_'and@r | ||||
edms eI@ndOms | edms eI@ndOms | ||||
ens Enso@fo@rts $dot | ens Enso@fo@rts $dot | ||||
fak $abbrev | |||||
genl x2@n@rA:l | genl x2@n@rA:l | ||||
insp InspEkt'Y@r $dot | insp InspEkt'Y@r $dot | ||||
isbn $abbrev | isbn $abbrev | ||||
bennett bEn@t | bennett bEn@t | ||||
bertha b&rta | bertha b&rta | ||||
bester b'Est@r | bester b'Est@r | ||||
betsie bEtsi | |||||
beyers beI@rs | beyers beI@rs | ||||
blignault blIx2n@Ut | blignault blIx2n@Ut | ||||
blomerus blum'e@rWs | blomerus blum'e@rWs | ||||
bouwer b@U@r | bouwer b@U@r | ||||
brian _^_EN | brian _^_EN | ||||
bredenkamp bre@d@nkamp | bredenkamp bre@d@nkamp | ||||
breytenbach breIt@nbax2 | |||||
bruwer bruw'&:r | bruwer bruw'&:r | ||||
caesar siz@r | caesar siz@r | ||||
carl kA:r@L | carl kA:r@L | ||||
cronjé krOnj'e@ | cronjé krOnj'e@ | ||||
cynthia _^_EN | cynthia _^_EN | ||||
dalene dal'e@n | dalene dal'e@n | ||||
daniël d'A:ni:@l | |||||
#zzz | |||||
darwin _^_EN | darwin _^_EN | ||||
david _^_EN | david _^_EN | ||||
(da vinci) da||v'intSi | (da vinci) da||v'intSi | ||||
emmarentia Emar'e~nSja | emmarentia Emar'e~nSja | ||||
erasmus $2 | erasmus $2 | ||||
ernest _^_EN | ernest _^_EN | ||||
eségiël is'e@x2i_@l | |||||
esegiël is'e@x2i:@l | |||||
estelle %ist&l | estelle %ist&l | ||||
etienne Eti@n | etienne Eti@n | ||||
eugene judZ'i:n | eugene judZ'i:n | ||||
eugène yZ'En | eugène yZ'En | ||||
farao fA:ro@ | farao fA:ro@ | ||||
ferreira f@r&:r@ | ferreira f@r&:r@ | ||||
filemon f'il@mOn | |||||
fischer fiS@r | fischer fiS@r | ||||
fourie fur'i | fourie fur'i | ||||
francina $2 | francina $2 | ||||
gertruida $2 | gertruida $2 | ||||
gloria glO:ria | gloria glO:ria | ||||
grange x2rA:nsi | grange x2rA:nsi | ||||
grové x2ruv'e@ | |||||
gustav gustaf | gustav gustaf | ||||
guy _^_EN | guy _^_EN | ||||
hamlet _^_EN | hamlet _^_EN | ||||
harry _^_EN | |||||
havenga hA:f@Nx2a | havenga hA:f@Nx2a | ||||
haydn hAId@n | haydn hAId@n | ||||
helen _^_EN | helen _^_EN | ||||
liesbet lisbEt | liesbet lisbEt | ||||
louis luI | louis luI | ||||
louise luw'i:z | louise luw'i:z | ||||
lukas l'ukas | |||||
mackintosh _^_EN | mackintosh _^_EN | ||||
madelene mad@l'e@n | |||||
mbeki mbE:ki | mbeki mbE:ki | ||||
magdalena $3 | magdalena $3 | ||||
malan mal'an | malan mal'an | ||||
terblanche t@rblA:nS | terblanche t@rblA:nS | ||||
theo tiu | theo tiu | ||||
theron tr'On | theron tr'On | ||||
timotheus t@m'o@tiWs | |||||
thys teIs | thys teIs | ||||
toerien $2 | toerien $2 | ||||
totius to@SiWs | totius to@SiWs | ||||
port pOrt $1 | port pOrt $1 | ||||
rover _^_EN | rover _^_EN | ||||
sotho su:tu | sotho su:tu | ||||
thessalonicense tEsalo@nis'Ens@ | |||||
toyota $2 | toyota $2 | ||||
venda vEnda | venda vEnda | ||||
volvo vOlvu | volvo vOlvu | ||||
wimpy wImpi | 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 | // article | ||||
casino kas'i:n@U | casino kas'i:n@U | ||||
cedille s@dIl@ | cedille s@dIl@ | ||||
charisma kar'Isma | charisma kar'Isma | ||||
cliché kliS'eI: | |||||
clichés kliS'eI:s | clichés kliS'eI:s | ||||
cliché kliS'eI: | |||||
crescendo kr@SEndu | crescendo kr@SEndu | ||||
dadelik dA:d@lIk | dadelik dA:d@lIk | ||||
garages g@rA:dZ@s | garages g@rA:dZ@s | ||||
gee x2e@ | gee x2e@ | ||||
geen x2e@n | geen x2e@n | ||||
gegewens x2@x2e@v@ns | |||||
geldelike x2&ld@l@k@ | geldelike x2&ld@l@k@ | ||||
genade $2 | genade $2 | ||||
genesis x2e@n@s@s | genesis x2e@n@s@s | ||||
mercedes $2 | mercedes $2 | ||||
meregebied me@r@x2@bit | meregebied me@r@x2@bit | ||||
merlot m&rl'o@ | merlot m&rl'o@ | ||||
miaau mi'aU: | |||||
midwinter mIdv@nt@r | midwinter mIdv@nt@r | ||||
militêre mIl@t'&:r@ | militêre mIl@t'&:r@ | ||||
minister m@nIst@r | minister m@nIst@r | ||||
oudsher @Utsh&r | oudsher @Utsh&r | ||||
pandemonium pand@m'o@niWm | pandemonium pand@m'o@niWm | ||||
papperel pap@r'&l | |||||
parate par'A:t@ | parate par'A:t@ | ||||
parke park@ | parke park@ | ||||
parkie $1 | parkie $1 | ||||
verweg f&:rv&x2 | verweg f&:rv&x2 | ||||
via via | via via | ||||
volheid $1 | volheid $1 | ||||
volswanger $1 | |||||
volte $1 | volte $1 | ||||
voluit fOl_Yyt | voluit fOl_Yyt | ||||
voorgee fo@rx2e@ | voorgee fo@rx2e@ |
a A: | a A: | ||||
AC) a (_ %a // short final a in words like: Eva/Pieta/(su)sara | 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 | %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 | s) ate (l %at@ //satelliet and compounds | ||||
C) a (rina %a //unstressed short a in carina tarina etc. | C) a (rina %a //unstressed short a in carina tarina etc. | ||||
&b) a (_ %a // short final a: mamba and compounds/marimba/hamba | &b) a (_ %a // short final a: mamba and compounds/marimba/hamba | ||||
Cel) ary ar'eI // move default stress: bedelary/bottelary/dobbelary/huigelary/smokkelary... | 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. | @@@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 | 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 | argen (tA %arx2@n // move default stress: Argentinië/Argentyns/-e | ||||
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria | a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria | ||||
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties | a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties | ||||
@C) a (tiewe %a // fix a sound: konserwatiewe/putatiewe and many similar | @C) a (tiewe %a // fix a sound: konserwatiewe/putatiewe and many similar | ||||
_arC) ad (A 'A:d // Arcadia/arkadia/arkade/armada | _arC) ad (A 'A:d // Arcadia/arkadia/arkade/armada | ||||
ai aI | 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 (baster %al // move default stress: albaster and compounds | ||||
al (bino %al // move default stress: albino | al (bino %al // move default stress: albino | ||||
alche (mis %alx2%e@ // move default stress: alchemis and derivatives | alche (mis %alx2%e@ // move default stress: alchemis and derivatives | ||||
bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie... | bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie... | ||||
bidd bId // biddag/aanbidding | bidd bId // biddag/aanbidding | ||||
bid bIt_ // biduur/aanbid | |||||
_) bid bIt_ // biduur | |||||
_) bi (ga b%i // bigamie/-s/-e | _) bi (ga b%i // bigamie/-s/-e | ||||
bikini b@kini // move default stress: bikini and compounds | bikini b@kini // move default stress: bikini and compounds | ||||
bil (j b@l // move default stress: biljet/-te/biljart/biljoen and compounds | bil (j b@l // move default stress: biljet/-te/biljart/biljoen and compounds | ||||
be (dr@ b@ // bedremmeld/bedrewe/bedrywig, etc. | be (dr@ b@ // bedremmeld/bedrewe/bedrywig, etc. | ||||
bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd | bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd | ||||
bedw (@ b@dw // bedwing and similar | 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 | @) bed (_ bEt // bruidsbed/dubbelbed; many compounds ending in bed | ||||
be (de_ be@ // bede/gebede | be (de_ be@ // bede/gebede | ||||
bedes (_ be@d@s // bedes/seënbedes, etc. | bedes (_ be@d@s // bedes/seënbedes, etc. | ||||
_) de (klass de@ // deklassifikasie/gedeklassifiseer | _) de (klass de@ // deklassifikasie/gedeklassifiseer | ||||
de (klinA d%E // fix 1st e sound: deklinasie/deklineer/-nering and compounds | 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 (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. | kun) dele (K d@lE // fix e sounds: Aardryks-/wiskundeles/-se, etc. | ||||
onder) dele (@ de@l@_ // fix e sound: onderdelebedryf/-pakhuis, etc. | onder) dele (@ de@l@_ // fix e sound: onderdelebedryf/-pakhuis, etc. | ||||
voor) dele (@ de@l@_ // fix e sound: voordelefonds and similar | voor) dele (@ de@l@_ // fix e sound: voordelefonds and similar | ||||
deur (weeC d%y@r // move default stress: deurweef/deurweek/-te | deur (weeC d%y@r // move default stress: deurweef/deurweek/-te | ||||
deur (winter d%y@r // move default stress: deurwinter/-de | deur (winter d%y@r // move default stress: deurwinter/-de | ||||
dewe (tK d@vE // fix stress and vowel sounds: Groepsgebiedewet/Dewetsdorp/-hof | 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 | dia (C d%i%a // diabeet/diafragma/diagnose/dialek/dialoog/diamant | ||||
diaken d%iA:k@n // diaken and compounds | diaken d%iA:k@n // diaken and compounds | ||||
diako (nie d%i%ak%u // fix stress and o sound: diakonie/-ë | diako (nie d%i%ak%u // fix stress and o sound: diakonie/-ë | ||||
eedjie e@ici // kleedjie/tafelkleedjie/altaarkleedjie | eedjie e@ici // kleedjie/tafelkleedjie/altaarkleedjie | ||||
eeu iu: | eeu iu: | ||||
eeue iu:@ // fix e sound: leeueaandeel/eeuelang/eeueoud/skreeuerig | eeue iu:@ // fix e sound: leeueaandeel/eeuelang/eeueoud/skreeuerig | ||||
ee (uu e@_ // split ee/uu, eu not diphthong: tweeuur and compounds | |||||
ei eI | ei eI | ||||
ey eI | ey eI | ||||
eu Y@ | eu Y@ | ||||
eufo (rie_N %Y@f%o@ // stress to end: euforie | eufo (rie_N %Y@f%o@ // stress to end: euforie | ||||
C) e (uit @_ // fix e and ui sounds: akteuitmaker/druiweuitvoer/woedeuitbarsting and many similar | C) e (uit @_ // fix e and ui sounds: akteuitmaker/druiweuitvoer/woedeuitbarsting and many similar | ||||
euntjie Y@iNci // seuntjie/reuntjie | euntjie Y@iNci // seuntjie/reuntjie | ||||
&C) e (uu @_ // split e/uu, eu not diphthong: seweuur and similar | |||||
eë e@ // e deelteken-e | eë e@ // e deelteken-e | ||||
&) e (_ @ | &) e (_ @ | ||||
m) e (nis @ // geheimenis(vol)/verdoemenis | m) e (nis @ // geheimenis(vol)/verdoemenis | ||||
geër (_ x2e@@r // oorgeër/pasaangeër | geër (_ x2e@@r // oorgeër/pasaangeër | ||||
gees (drift x2%e@s // move default stress: geesdriftig and derivatives | gees (drift x2%e@s // move default stress: geesdriftig and derivatives | ||||
@) gegee =x2@x2e@ | @) 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 | gei (+ x2eI // geil and derivatives/geiser/geit/-e | ||||
ge (kskeer x2& // gekskeer/gekskeerder/gekskeerdery | ge (kskeer x2& // gekskeer/gekskeerder/gekskeerdery | ||||
geld x2< | geld x2< | ||||
narC) i (ssus 'I // move default stress: Nar(c/s)issus | narC) i (ssus 'I // move default stress: Nar(c/s)issus | ||||
pub) is (_ @s // restore defaultstress: pubis, excep. to: AC) is (_ | pub) is (_ @s // restore defaultstress: pubis, excep. to: AC) is (_ | ||||
en) is (K @s // stress: beduidenis/bekentenis/gevangenis, etc. | 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 | pol) is (_ @s // polis and compounds | ||||
@ar) is (K =@s // but sekretaris/argivaris/kommissaris/inventarislys/sekretarisvoël/plagiaris | @ar) is (K =@s // but sekretaris/argivaris/kommissaris/inventarislys/sekretarisvoël/plagiaris | ||||
litar) is (+ 'Is // but militaris | litar) is (+ 'Is // but militaris | ||||
jonge jON@ // jongeling/jongeres | jonge jON@ // jongeling/jongeres | ||||
jong (etjie jON // fix e sound: jongetjie/-s | jong (etjie jON // fix e sound: jongetjie/-s | ||||
_) jorda (niA j%OrdA: // move default stress: Jordanië/Jordaniese | _) jorda (niA j%OrdA: // move default stress: Jordanië/Jordaniese | ||||
joule dZu:l // (kilo)joules | |||||
junie juni | junie juni | ||||
julie juli | julie juli | ||||
ju (rid j%u // fix stress and u sound: juridies/-e | ju (rid j%u // fix stress and u sound: juridies/-e | ||||
mane (wale m%an@ // fix stress and shorten a sound: manewale/-s and compounds | 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 | _) mango maNg%u // fix g and o sounds: mangoboord/-sap/-'s | ||||
man (haft m%an // move default stress: manhaftig/-e/-heid | 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 | manier m@ni:r //manier and compounds | ||||
manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer | manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer | ||||
manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie | manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie | ||||
CA) mme (C m@ | CA) mme (C m@ | ||||
CA) mme (tjie mi // lemmetjie/stemmetjie and similar | CA) mme (tjie mi // lemmetjie/stemmetjie and similar | ||||
miaau m%iaU: // miaau/-end/-e | |||||
middagete m'Idax2_e@t@ // middagete/s | middagete m'Idax2_e@t@ // middagete/s | ||||
midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend | midde (l mId@ // middellyf/middelpunt/middelste/bemiddelend | ||||
middel (jari m@d@l // move default stress: middeljarig and derivatives | middel (jari m@d@l // move default stress: middeljarig and derivatives | ||||
pape (gaai p%ap@ //papegaai and compounds: stress, a and e sounds | pape (gaai p%ap@ //papegaai and compounds: stress, a and e sounds | ||||
pa (niek p%a // paniek/paniekerig | pa (niek p%a // paniek/paniekerig | ||||
pantser pants@r // fix e sound in compounds starting with pantser | 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 (pier p%a // papier and compounds | ||||
pa (pirus p%a // move default stress: papirus and compounds | pa (pirus p%a // move default stress: papirus and compounds | ||||
pappe (ry p%ap@ // move default stress: pappery/-e and compounds | pappe (ry p%ap@ // move default stress: pappery/-e and compounds | ||||
spesialis spESal'Is | spesialis spESal'Is | ||||
spesi (f sp%Es%I // spesifiek/spesifiseer | spesi (f sp%Es%I // spesifiek/spesifiseer | ||||
stede (C ste@d@ // fix e sounds of many compounds and derivatives containing stede | 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 | %Cel) ste (r st& // fix e sound: dubbelster/-re | ||||
Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re | Cet) ste (rK st& // fix e sound: ballet-/kabaret-/krieketster/-re | ||||
dwaal) ste (r st& // fix e sound: dwaalster/-re | dwaal) ste (r st& // fix e sound: dwaalster/-re | ||||
@) tele (gra t&l@ // fix e sound in compounds: riem-/spoedtelegram/veldtelegraaf, etc. | @) tele (gra t&l@ // fix e sound in compounds: riem-/spoedtelegram/veldtelegraaf, etc. | ||||
teleks t&lEks // fix stress and vowel sounds: teleks and compounds | 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. | _) 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 (der tEn // fix e sound in compounds: regeringstenders and similar | ||||
@) ten (derwyK t@n // fix e sound: spottenderwys/-e/uitsluitenderwys/-e/verkortenderwys/-e | @) ten (derwyK t@n // fix e sound: spottenderwys/-e/uitsluitenderwys/-e/verkortenderwys/-e | ||||
@C) te (nk t& ++ //tenk and friends | @C) te (nk t& ++ //tenk and friends | ||||
.group y | .group y | ||||
y eI | y eI | ||||
%C) y (_ _^_EN // English: Betty/Eddy/Harry/Molly/Penny/Tommy | |||||
york j'O:k //new-yorkse and may be others | york j'O:k //new-yorkse and may be others | ||||
ysterre (lin eIst@re@ // fix e sound: ysterreling/-s | ysterre (lin eIst@re@ // fix e sound: ysterreling/-s | ||||
! _:eItrup_: | ! _:eItrup_: | ||||
!) ! | !) ! | ||||
$ dOl@r | $ dOl@r | ||||
__) - (_D minWs | __) - (_D minWs | ||||
A_) - (_D _ | A_) - (_D _ | ||||
C_) - (_D _ | C_) - (_D _ |
Dictionary fi_dict | 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 | 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 | : b d dZ f g h j | ||||
k l m n N n2 n^ p | 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 | Dictionary grc_dict | ||||
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 | Dictionary sk_dict | ||||
& @- a a: e e: i i: | & @- a a: e e: i i: | ||||
b c d f g h j k | b c d f g h j k | ||||
l m n N p r s t | l m n N p r s t | ||||
tS v w z | 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 |
anemone a2nEn@mI | anemone a2nEn@mI | ||||
anew a2nju: | anew a2nju: | ||||
?3 anew a2nu: | ?3 anew a2nu: | ||||
anime anImeI | |||||
anion aneI@n | anion aneI@n | ||||
anniversary anIv'3:s@rI | anniversary anIv'3:s@rI | ||||
anon a2n0n | anon a2n0n | ||||
approximate a2pr0ksImeIt $verb | approximate a2pr0ksImeIt $verb | ||||
arab ar@b | arab ar@b | ||||
arabic $1 | arabic $1 | ||||
arable ara2b@L | |||||
arcade $2 | arcade $2 | ||||
arch A@tS | arch A@tS | ||||
arches A@tSI2z | arches A@tSI2z | ||||
charismatic karIsm'atIk | charismatic karIsm'atIk | ||||
charit tSarIt // charitable | charit tSarIt // charitable | ||||
chic Si:k | chic Si:k | ||||
chimpanzee $3 | |||||
chisel tSIz@L | chisel tSIz@L | ||||
chocolate tS0kl@t | chocolate tS0kl@t | ||||
cholera k0l@r@ | cholera k0l@r@ | ||||
contrast k0ntr'ast $verb | contrast k0ntr'ast $verb | ||||
contrite k0ntr'aIt | contrite k0ntr'aIt | ||||
conven k0nv'i:n // convened | conven k0nv'i:n // convened | ||||
convent k0nv@nt | |||||
converse $1 $only | converse $1 $only | ||||
converse $verb | converse $verb | ||||
convict $1 $onlys | convict $1 $onlys | ||||
détente deIt'0nt | détente deIt'0nt | ||||
detritus dI2traIt@s | detritus dI2traIt@s | ||||
deus deIUs | deus deIUs | ||||
devotee dEvoUt'i: | |||||
di d,I | di d,I | ||||
diabetes daI@b'i:ti:z | diabetes daI@b'i:ti:z | ||||
diameter daI'amI2t3 | diameter daI'amI2t3 | ||||
driest draI|@st | driest draI|@st | ||||
duet dju:'Et | duet dju:'Et | ||||
dugout dVgaUt | dugout dVgaUt | ||||
dungaree dVNga2r'i: | |||||
duvet du:veI | duvet du:veI | ||||
d'ye dj@ | d'ye dj@ | ||||
entourage 0ntu:rA:Z | entourage 0ntu:rA:Z | ||||
entrance $1 $onlys | entrance $1 $onlys | ||||
entrance Entr'aans $verb | entrance Entr'aans $verb | ||||
entree 0ntreI | |||||
envelope Env@loUp $only | envelope Env@loUp $only | ||||
envelopes Env@loUps | envelopes Env@loUps | ||||
envelope $verb | envelope $verb | ||||
evildoers i:v@Ldu:3z | evildoers i:v@Ldu:3z | ||||
ewe ju: | ewe ju: | ||||
evening i:vnI2N | evening i:vnI2N | ||||
every Iv3:t | |||||
evit EvI2t // inevitable | evit EvI2t // inevitable | ||||
exalt Egz'0lt | exalt Egz'0lt | ||||
execute EksI2kju:t // not $2 | execute EksI2kju:t // not $2 | ||||
fortune fO@tSu:n | fortune fO@tSu:n | ||||
foyer fOIeI | foyer fOIeI | ||||
freelance fri:laans | freelance fri:laans | ||||
fricassee frIka2seI | |||||
frigate frIg@t | frigate frIg@t | ||||
fringer frIndZ3 // infringer | fringer frIndZ3 // infringer | ||||
fringing frIndZIN | fringing frIndZIN | ||||
hazardous haz3d@s | hazardous haz3d@s | ||||
hehe hi:h'i: | hehe hi:h'i: | ||||
heifer hEf@ | heifer hEf@ | ||||
heist haIst | |||||
helium hi:li@m | helium hi:li@m | ||||
helix hi:lIks | helix hi:lIks | ||||
hello h@loU | hello h@loU | ||||
henceforth hEnsfo@T | henceforth hEnsfo@T | ||||
hercules h3:kjUli:z | hercules h3:kjUli:z | ||||
heretical hI2rEtI2k@L | |||||
hereto hi@3'tu: | hereto hi@3'tu: | ||||
hermaphrodite $2 | hermaphrodite $2 | ||||
hermes h3:mi:z | hermes h3:mi:z | ||||
inventory Inv@ntrI | inventory Inv@ntrI | ||||
interface $1 | interface $1 | ||||
intermin Int'3:mIn // interminable | intermin Int'3:mIn // interminable | ||||
internee Int'3:ni: | |||||
internet Int3nEt | internet Int3nEt | ||||
interrupt $1 $onlys | interrupt $1 $onlys | ||||
interrupt $3 $verb | interrupt $3 $verb | ||||
lukewarm lu:kwO@m | lukewarm lu:kwO@m | ||||
lullaby lVl@baI | lullaby lVl@baI | ||||
lunatic lu:n@tIk | lunatic lu:n@tIk | ||||
lychee li:tSi: | |||||
macabre m@kA:br@ | macabre m@kA:br@ | ||||
machete ma2SEtI | machete ma2SEtI | ||||
necktie nEktaI | necktie nEktaI | ||||
negate nI2geIt | negate nI2geIt | ||||
neglect nI2glEkt | neglect nI2glEkt | ||||
negligee nEglIZeI | |||||
neon ni:0n | neon ni:0n | ||||
nepenthe nI2pEnTI | nepenthe nI2pEnTI | ||||
nescience nEsI@ns | nescience nEsI@ns | ||||
paralysis p@ral@sIs | paralysis p@ral@sIs | ||||
parameter p@ramI2t3 | parameter p@ramI2t3 | ||||
parasite par@saIt | parasite par@saIt | ||||
paren pa2rEn // "parenthesis" | |||||
pariah p@raI@ | pariah p@raI@ | ||||
parole pa2r'oUl | parole pa2r'oUl | ||||
passenger pasI2ndZ3 | passenger pasI2ndZ3 | ||||
preface prEf@s | preface prEf@s | ||||
preferably prEf@-r@blI $verbf | preferably prEf@-r@blI $verbf | ||||
prelude prElju:d | prelude prElju:d | ||||
premier prEmI3 | |||||
preparation prEp@r'eIS@n | preparation prEp@r'eIS@n | ||||
prescience pri:si@ns | prescience pri:si@ns | ||||
present prEz@nt $only | present prEz@nt $only | ||||
snooker snu:k3 | snooker snu:k3 | ||||
society s@saI@tI | society s@saI@tI | ||||
sofa soUf@ | sofa soUf@ | ||||
soiree swA:reI | |||||
soldier soUldZ3 | soldier soUldZ3 | ||||
solemn s0l@m | solemn s0l@m | ||||
solicit s@lIsI2t // solicited,ing | solicit s@lIsI2t // solicited,ing | ||||
tonne tVn | tonne tVn | ||||
tornado tO@n'eIdoU | tornado tO@n'eIdoU | ||||
touche tu:SeI $only | touche tu:SeI $only | ||||
toupee tu:peI | |||||
transcript $1 $onlys | transcript $1 $onlys | ||||
transfer $1 $onlys | transfer $1 $onlys | ||||
transfer $verb | transfer $verb | ||||
vegetable vEdZI2t@b@L | vegetable vEdZI2t@b@L | ||||
vehicle vi@k@L | vehicle vi@k@L | ||||
vegan vi:g@n | vegan vi:g@n | ||||
veggy vEdZI | |||||
vengeance vEndZ@ns | vengeance vEndZ@ns | ||||
venus vi:n@s | venus vi:n@s | ||||
versus v3:sI2z | versus v3:sI2z | ||||
Andromeda andr'0mId@ | Andromeda andr'0mId@ | ||||
Buchanan bju:k'an@n | Buchanan bju:k'an@n | ||||
Campbell kamb@l | Campbell kamb@l | ||||
Cthulhu k@-Tu:Lu: | |||||
Chrysler kraIzl3 | Chrysler kraIzl3 | ||||
Disney dIznI | Disney dIznI | ||||
Patel pa2tEl | Patel pa2tEl |
ar (ia_ 'e@ | ar (ia_ 'e@ | ||||
@) arily (_ 'Er@l%I | @) arily (_ 'Er@l%I | ||||
ch) ar (it ar | ch) ar (it ar | ||||
ph) ar (i ar | |||||
m) ar (i @r | m) ar (i @r | ||||
m) ar (ig ar | m) ar (ig ar | ||||
m) ar (inaC ar | m) ar (inaC ar | ||||
ee (m 'i: | ee (m 'i: | ||||
eer 'i@3 | eer 'i@3 | ||||
t) ee (n_ 'i: | t) ee (n_ 'i: | ||||
ees (_ i:z | |||||
ch) eese i:z | ch) eese i:z | ||||
d) e (fault i: | d) e (fault i: | ||||
e (ffec %I | e (ffec %I | ||||
h) ere (f ErI2 | h) ere (f ErI2 | ||||
h) ere (di I2rE | h) ere (di I2rE | ||||
h) ere (s Er@ | h) ere (s Er@ | ||||
h) ere (t I2rE | |||||
h) ere (t Er@ | |||||
@) er (ence_ r | @) er (ence_ r | ||||
er (ent_ r | er (ent_ r | ||||
adh) er (e 'i@3 | adh) er (e 'i@3 | ||||
st) ev (e i:v | st) ev (e i:v | ||||
ever (_ Ev3 | ever (_ Ev3 | ||||
ever (c ,Ev3 | ever (c ,Ev3 | ||||
ever (g Ev3 | |||||
_) ever Ev3 | |||||
ever (l ,Ev3 | ever (l ,Ev3 | ||||
ever (m ,Ev3 | ever (m ,Ev3 | ||||
_) ever (s I2v3: | |||||
f) ever (+ i:v3 | f) ever (+ i:v3 | ||||
?!3 _l) ever i:v3 | ?!3 _l) ever i:v3 | ||||
cl) ever Ev3 | cl) ever Ev3 | ||||
K) hl L | K) hl L | ||||
&) hold (_S4 hoUld | &) hold (_S4 hoUld | ||||
holme hoUm | holme hoUm | ||||
_) homeo hoUmi:oU | |||||
_) home (o hoUmi: | |||||
_) homo (s h,oUmoU | _) homo (s h,oUmoU | ||||
_) homoeo hoUmi:oU | _) homoeo hoUmi:oU | ||||
&) hood (_S4 hUd | &) hood (_S4 hUd | ||||
house (_S5 haUs | house (_S5 haUs | ||||
houses (_S6 haUzI2z | houses (_S6 haUzI2z | ||||
_) hypo (@P4 h,aIpoU | _) hypo (@P4 h,aIpoU | ||||
_) hypo (cr hIp0 | |||||
hypo (de h,aIp@ | hypo (de h,aIp@ | ||||
hypo (thet h,aIp@ | hypo (thet h,aIp@ | ||||
_v) o (cA oU | _v) o (cA oU | ||||
&%C) ock (_ @k | &%C) ock (_ @k | ||||
l) o (com ,oU | l) o (com ,oU | ||||
ocrates (_ '0kra2ti:z | |||||
o (cre_ 'oU | o (cre_ 'oU | ||||
cr) o (cu oU | cr) o (cu oU | ||||
_h) o (cu oU | _h) o (cu oU | ||||
un (ani %ju:n | un (ani %ju:n | ||||
_) under (@P5 ,Vnd3 // prefix | _) under (@P5 ,Vnd3 // prefix | ||||
_) un (deP2 ,Vn | _) un (deP2 ,Vn | ||||
_) un (dula Vn | |||||
_) un (enP2 ,Vn | _) un (enP2 ,Vn | ||||
_) un (exP2 ,Vn | _) un (exP2 ,Vn | ||||
_) un (ic ju:n | _) un (ic ju:n | ||||
&) ysis (_ =@sIs | &) ysis (_ =@sIs | ||||
yte (_ aIt | yte (_ aIt | ||||
you' %ju: | you' %ju: | ||||
yu ju: | |||||
yu (C% jV | |||||
yu (@ ju: | |||||
yeo (C joU | yeo (C joU | ||||
y (er_ aI | y (er_ aI | ||||
C) yes (_ aIz | C) yes (_ aIz | ||||
nak) E (d I | nak) E (d I | ||||
Ee (d i: | Ee (d i: | ||||
EE (_ i: | EE (_ i: | ||||
Ee (_ 'i: | |||||
Ee (_ i: | |||||
Eer (_ 'i@3 | Eer (_ 'i@3 | ||||
Ei (n_ i: | Ei (n_ i: | ||||
Ei (_ aI | Ei (_ aI |
_{ alkua:lto | _{ alkua:lto | ||||
_} lop:ua:lto | _} lop:ua:lto | ||||
_< p'ienempIk'uin | _< p'ienempIk'uin | ||||
_> s'u:*empIk'uin | |||||
_> s'u:rempIk'uin | |||||
_- vi:va2 | _- vi:va2 | ||||
__ ala2vi:va2 | __ ala2vi:va2 | ||||
+ plus $max3 | + plus $max3 | ||||
* asteriski $max3 | * asteriski $max3 | ||||
= 'yht&k'uin $max3 | = 'yht&k'uin $max3 | ||||
% p@-*osent:I $max3 | |||||
% prosent:I $max3 | |||||
/ kaut:a2 | / kaut:a2 | ||||
\ keno | \ keno | ||||
€ eu*o | |||||
€ euro | |||||
£ punta2 | £ punta2 | ||||
¤ valu:t:a2 | ¤ valu:t:a2 | ||||
& _et | & _et | ||||
~ tilde | ~ tilde | ||||
_acu 'aku:t:I | _acu 'aku:t:I | ||||
_brv b@-*'eve | |||||
_brv br'eve | |||||
_ced s'edIljI | _ced s'edIljI | ||||
_cir s'irkumfl,eksI | _cir s'irkumfl,eksI | ||||
_dia 'umlaut | _dia 'umlaut | ||||
_grv g@-*'avIs | |||||
_grv gr'avIs | |||||
_tld tilde | _tld tilde | ||||
// numbers | // numbers | ||||
_9X 'yhdeks&mk,ymment& | _9X 'yhdeks&mk,ymment& | ||||
_0C s'ata:_ | _0C s'ata:_ | ||||
_1C s'ata | _1C s'ata | ||||
_0M1 t'uhata: | |||||
_0M1 t'uhat:a | |||||
_1M1 t'uhat // no '1' before thousand | _1M1 t'uhat // no '1' before thousand | ||||
_0M2 m'iljo:na: | _0M2 m'iljo:na: | ||||
_1M2 m'iljo:na | _1M2 m'iljo:na |
c (i s | c (i s | ||||
c (e s // Pronounce c as s. Mostly foreign words such as celcius, center, cervantes, cezanne. | 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. | 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. | city siti // Pronounce foreign word city as siti. Include all inflections and compound words. | ||||
// eg. city, citystä, intercity. | // eg. city, citystä, intercity. | ||||
.group r | .group r | ||||
r r | r r | ||||
A) r (A * | |||||
C) r (A @-* | |||||
rr *r | |||||
.group s | .group s | ||||
s s | s s | ||||
ss ss2 // [s2] is a continuation for [s] | ss ss2 // [s2] is a continuation for [s] | ||||
K) sh S | K) sh S | ||||
K) sch S // Schmitt | |||||
@) sti (_ sti_X1 // double the initial consonant of the next word | @) sti (_ sti_X1 // double the initial consonant of the next word | ||||
.group u | .group u | ||||
u u | u u | ||||
uu u: | uu u: | ||||
ui ui | |||||
ui wi | |||||
uo uo | uo uo | ||||
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated 2009-04-04 Michel Such <[email protected]> | |||||
// Updated 2009-05-14 Michel Such <[email protected]> | |||||
// | // | ||||
// * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
_brv br'Ev | _brv br'Ev | ||||
_ced sed'ij | _ced sed'ij | ||||
_cir aksA~sirkO~fl'Eks | _cir aksA~sirkO~fl'Eks | ||||
_dia tRem'a | |||||
_dia trem'a | |||||
_dot pwE~syskr'i | _dot pwE~syskr'i | ||||
_grv aksA~gr'av | _grv aksA~gr'av | ||||
_hac kar'O~ | _hac kar'O~ | ||||
_cap maZysk'yl | _cap maZysk'yl | ||||
_?A l'Etr | _?A l'Etr | ||||
_?? sE~b'Oll | _?? sE~b'Oll | ||||
_#9 tabylasjO~ | |||||
_#9 tabylasiO~ | |||||
_#32 Espas | _#32 Espas | ||||
_" gijmE | _" gijmE | ||||
_# djEz | _# djEz | ||||
_' a2postr'Of | |||||
_( 'uvR@-parA~t'Ez | |||||
_' apostr'Of | |||||
_( 'uvr@-parA~t'Ez | |||||
_) f'Erm parA~t'Ez | _) f'Erm parA~t'Ez | ||||
_, virgyl | _, virgyl | ||||
_- tirE | _- tirE | ||||
_/ bar||oblik | _/ bar||oblik | ||||
_: d'Y||pw'E~ | _: d'Y||pw'E~ | ||||
_; pwE~||virg'yl | _; pwE~||virg'yl | ||||
_< E~ferjWr | |||||
_< E~feri-Wr | |||||
_= egal | _= egal | ||||
_> syperjWr | |||||
_> syperi-Wr | |||||
_? pwE~||dE~terogasj'O~ | _? pwE~||dE~terogasj'O~ | ||||
_! pwE~||dEksklamasj'O~ | _! pwE~||dEksklamasj'O~ | ||||
_[ uvr@-_kroSE | _[ uvr@-_kroSE | ||||
_\ b'aksl'aS | _\ b'aksl'aS | ||||
_] f'E2rm_kroS'E | |||||
_] f'Erm_kroS'E | |||||
_^ sirkOnflEks | _^ sirkOnflEks | ||||
__ sulin^e | __ sulin^e | ||||
_` aks'A~_gr'av | _` aks'A~_gr'av | ||||
_{ uvr_akOlad | _{ uvr_akOlad | ||||
_| bar_vErtik'al | _| bar_vErtik'al | ||||
_} f'E2rm_akOl'ad | |||||
_} f'Erm_akOl'ad | |||||
² pw^is'A~s||d'Y | ² pw^is'A~s||d'Y | ||||
_« uvre||gijm'E | _« uvre||gijm'E | ||||
_» fErme||gijm'E | _» fErme||gijm'E | ||||
_’ a2postr'Of | |||||
_‘ a2postr'Of | |||||
_µ mikR'o | |||||
_’ apostr'Of | |||||
_‘ apostr'Of | |||||
_µ mikr'o | |||||
_§ sEksj'O~ | _§ sEksj'O~ | ||||
// symbols that are normally spoken when reading text | // symbols that are normally spoken when reading text | ||||
@ _!arobaz | @ _!arobaz | ||||
% pursA~ $max3 | % pursA~ $max3 | ||||
& e $u $brk | & e $u $brk | ||||
_& _e_komErsj'al | |||||
_& _e_komErsi'al | |||||
* asterisk: $max3 | * asterisk: $max3 | ||||
+ plys $max3 | + plys $max3 | ||||
~ tilde | ~ tilde | ||||
€ @ro | € @ro | ||||
¢ sEnt | ¢ sEnt | ||||
¥ jEn | |||||
¥ iEn | |||||
£ livr | £ livr | ||||
± pl'yz_'u_mw'E~ | ± pl'yz_'u_mw'E~ | ||||
× myltipli:'e_p'ar | × myltipli:'e_p'ar | ||||
// numeric | // numeric | ||||
_0 zero | |||||
_0 zero $u+ | |||||
_1 W~ | _1 W~ | ||||
_2 dYz2 | _2 dYz2 | ||||
_3 tRwAz2 | |||||
_3 trwAz2 | |||||
_4 katr | _4 katr | ||||
_5 sE~k | _5 sE~k | ||||
_6 siz3 | _6 siz3 | ||||
_10 diz3 | _10 diz3 | ||||
_11 _!O~z | _11 _!O~z | ||||
_12 duz | _12 duz | ||||
_13 tREz | |||||
_13 trEz | |||||
_14 katOrz | _14 katOrz | ||||
_15 kE~z | _15 kE~z | ||||
_16 sEz | _16 sEz | ||||
_20 vE~ | _20 vE~ | ||||
_21 vE~te:W~ | _21 vE~te:W~ | ||||
_22 vE~tdYz2 | _22 vE~tdYz2 | ||||
_23 vE~t:tRwAz2 | |||||
_23 vE~t:trwAz2 | |||||
_24 vE~tkatr | _24 vE~tkatr | ||||
_25 vE~tsE~k | _25 vE~tsE~k | ||||
_26 vE~tsiz3 | _26 vE~tsiz3 | ||||
_27 vE~tsEt | _27 vE~tsEt | ||||
_28 vE~tw^it3 | _28 vE~tw^it3 | ||||
_29 vE~tnWf | _29 vE~tnWf | ||||
_3X tRA~t | |||||
_31 tRA~te:W~ | |||||
_3X trA~t | |||||
_31 trA~te:W~ | |||||
_4X karA~t | _4X karA~t | ||||
_41 karA~te:W~ | _41 karA~te:W~ | ||||
_5X sE~kA~t | _5X sE~kA~t | ||||
_6X swAsA~t: | _6X swAsA~t: | ||||
_61 swAsA~te:W~ | _61 swAsA~te:W~ | ||||
_71 swAsA~te:O~z | _71 swAsA~te:O~z | ||||
_8X katR@vE~: | |||||
_80 katR@vE~z2 | |||||
_8X katr@vE~: | |||||
_80 katr@vE~z2 | |||||
_0C sA~ | _0C sA~ | ||||
_1C0 sA~t2 | _1C0 sA~t2 | ||||
_0M1 mil | _0M1 mil | ||||
//some numbers have special pronunciation in Belgium and Switzerland | //some numbers have special pronunciation in Belgium and Switzerland | ||||
?2 _7X sEptA~t | ?2 _7X sEptA~t | ||||
?2 _71 sEptA~te:W~ | ?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 | // ABBREVIATIONS | ||||
//************** | //************** | ||||
(http ://) aSt,et,ep'e | |||||
abc $abbrev | abc $abbrev | ||||
ac $abbrev | ac $abbrev | ||||
adsl $abbrev | |||||
adn adeEn | |||||
adsl adeEsEl | |||||
alt _::alt | alt _::alt | ||||
amd $abbrev | |||||
anpe $abbrev | |||||
amd aEmde | |||||
anpe aEnpe@ | |||||
aol aoEl | |||||
api $abbrev | api $abbrev | ||||
avg $abbrev | |||||
avh aveaS | avh aveaS | ||||
bd boulevard $text | bd boulevard $text | ||||
brltty $abbrev | brltty $abbrev | ||||
cci $abbrev | cci $abbrev | ||||
cia $abbrev | |||||
cio $abbrev | cio $abbrev | ||||
ctrl _::kO~tRol | |||||
cpu $abbrev | |||||
ctrl _::kO~tro2l | |||||
dept depart@-mA~ | dept depart@-mA~ | ||||
edf $abbrev | |||||
etc etsetera | |||||
ghz ZigaE2rts | |||||
divx diviks | |||||
edf @deEf | |||||
etc Etsetera | |||||
ghz ZigaErts | |||||
hmm h@m | hmm h@m | ||||
hz _!E2rts | |||||
ibm $abbrev | |||||
(http ://) aSt,et,ep'e_ | |||||
hz _!Erts | |||||
ibm ibeEm | |||||
ide $abbrev | ide $abbrev | ||||
ip $abbrev | |||||
jaws dZ'awz | |||||
ip ipe | |||||
irc i:_!Er:se | |||||
jaws _^_en | |||||
kbit kilobit | kbit kilobit | ||||
kbits kilobit | |||||
kde $abbrev | kde $abbrev | ||||
kg kilogram | kg kilogram | ||||
khz kiloE2rts | |||||
khz kiloErts | |||||
km kilomètre $text | km kilomètre $text | ||||
kw kilowat | kw kilowat | ||||
kw kilowat | |||||
m. m@sjY | |||||
mbit mega2bit | |||||
mbits mega2bit | |||||
m. m@siY | |||||
mbit megabit | |||||
mbrola Embrola | mbrola Embrola | ||||
mhz megaE2rts | |||||
mci $abbrev | |||||
mhz megaErts | |||||
mlle mademoiselle $text | mlle mademoiselle $text | ||||
mme madame $text | mme madame $text | ||||
mr m@sjY | |||||
(mp 3) _!Empetrwa | |||||
mr m@siY | |||||
nsi $abbrev | nsi $abbrev | ||||
nsis $abbrev | nsis $abbrev | ||||
nti $abbrev | nti $abbrev | ||||
nvda $abbrev | nvda $abbrev | ||||
ong $abbrev | |||||
ocr oseEr | |||||
oem $abbrev | |||||
ogm oZeEm | |||||
ong oEnZe | |||||
pci $abbrev | pci $abbrev | ||||
pda $abbrev | pda $abbrev | ||||
p.s postskriptOm | p.s postskriptOm | ||||
ratp $abbrev | ratp $abbrev | ||||
riscos rIskoEs | |||||
sap $abbrev | |||||
scsi $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 | st s'E~t2 | ||||
ste s'E~t | 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 | utf $abbrev | ||||
u.s y:Es | |||||
vip v,i||,aj||p'i | |||||
wma $abbrev | wma $abbrev | ||||
xfce iksEfse@ | xfce iksEfse@ | ||||
xy $abbrev | xy $abbrev | ||||
// articles | // articles | ||||
le $nounf $u+ | le $nounf $u+ | ||||
le $verbextend $u | |||||
le $verb $verbextend $u | |||||
la $nounf $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+ | un $nounf $u+ | ||||
une $nounf $u+ | une $nounf $u+ | ||||
mais $u+ | mais $u+ | ||||
ou $u $brk | ou $u $brk | ||||
eh $u $brk | eh $u $brk | ||||
et $u $brk | |||||
et e $u $brk | |||||
ni $u $brk | ni $u $brk | ||||
car $u $brk | car $u $brk | ||||
car $noun | car $noun | ||||
(parce que) parsk@ $u+ | (parce que) parsk@ $u+ | ||||
(parce qu'il) parskil $u+ | (parce qu'il) parskil $u+ | ||||
(parce qu'ils) parskilz2 $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+ | (parce qu'on) parskO~n2 $u+ | ||||
tant tA~t2 $u+ | tant tA~t2 $u+ | ||||
qui $verbf $u+ | qui $verbf $u+ | ||||
autour otur $u+ | autour otur $u+ | ||||
autre $u+ | autre $u+ | ||||
autres $u+ | autres $u+ | ||||
dans $u+ | |||||
dans dA~z2 $u+ | |||||
vers vEr $u+ | vers vEr $u+ | ||||
vers $noun | vers $noun | ||||
en $u+ | en $u+ | ||||
durant $u+ | durant $u+ | ||||
avec $u+ | avec $u+ | ||||
sans $u+ | sans $u+ | ||||
trop $u+ | |||||
trop trop2 $u+ | |||||
assez $u+ | assez $u+ | ||||
beaucoup $u+ | |||||
beaucoup bokup2 $u+ | |||||
peu $u+ | peu $u+ | ||||
très $u | |||||
très $u+ | |||||
près $u+ | |||||
loin $u+ | |||||
// negative | // negative | ||||
ne $u $verbf | ne $u $verbf | ||||
pas p'a2z2 | |||||
pas p'az2 $u+ | |||||
pas pa $noun | pas pa $noun | ||||
plus $u+ | plus $u+ | ||||
guère $u+ | guère $u+ | ||||
// some common adjectives and adverbs | // some common adjectives and adverbs | ||||
quel $u+ | |||||
quelle $u+ | |||||
quelles $u+ | |||||
quelque $u+ | quelque $u+ | ||||
quelques $u+ | quelques $u+ | ||||
tel $u+ | tel $u+ | ||||
toute t'ut $u+ | toute t'ut $u+ | ||||
toutes t'utz2 $u+ | toutes t'utz2 $u+ | ||||
tous $u+ | tous $u+ | ||||
rien ri'E~n2 $u+ | |||||
rien ri-'E~n2 $u+ | |||||
// Letters which can be words | // Letters which can be words | ||||
//=========================== | //=========================== | ||||
(n'est ce pas) n'Es@-||p'az2 | (n'est ce pas) n'Es@-||p'az2 | ||||
(qu'est ce que) kEsk@ $u | (qu'est ce que) kEsk@ $u | ||||
absent absA~ | absent absA~ | ||||
adam adA~ | |||||
adams adams | |||||
admin admin | admin admin | ||||
adsltv $abbrev | |||||
airbus E2rbys | |||||
adsltv adeEs'El||tev'e | |||||
airbus Erbys | |||||
alan alan | |||||
auvent ovA~ | auvent ovA~ | ||||
bien bjE~n2 $u+ | |||||
bien bi-E~n2 $u+ | |||||
bis bis | bis bis | ||||
bissus bisys | bissus bisys | ||||
bus bys | bus bys | ||||
bus by $verb | bus by $verb | ||||
campus kA~pys | |||||
cancer kA~sEr | cancer kA~sEr | ||||
canyon kanjO2n | |||||
(chef d'oeuvre) chédeuvre $text | (chef d'oeuvre) chédeuvre $text | ||||
(chef d'oeuvres) chédeuvres $text | (chef d'oeuvres) chédeuvres $text | ||||
choeur kWr | choeur kWr | ||||
cocus koky | cocus koky | ||||
couscous kuskus | couscous kuskus | ||||
dernier dE2rnjer2 | |||||
dernier dErnjer2 | |||||
éloquent ElokA~t2 | éloquent ElokA~t2 | ||||
fan f'an | |||||
enfer A~fEr | |||||
faut fot2 $u+ | faut fot2 $u+ | ||||
fier fier $verb | |||||
fier fjer $verb | |||||
free fri: | |||||
fuel fjul | fuel fjul | ||||
gars ga | gars ga | ||||
gin dZin | |||||
gulf gWlf | |||||
gym Zim | gym Zim | ||||
hélas elas $u+ | hélas elas $u+ | ||||
iris iris | iris iris | ||||
mailto mEjltu_ | mailto mEjltu_ | ||||
mapper _^_en | mapper _^_en | ||||
mars mars | mars mars | ||||
mieux mjY $u+ | |||||
merguez mErgEz | |||||
mieux mi-Y $u+ | |||||
mrs _^_en | mrs _^_en | ||||
ours urs | ours urs | ||||
parangon parA~gO~ | |||||
pataquès patakEs | |||||
phallus falys | phallus falys | ||||
polder pOldEr | polder pOldEr | ||||
premier pr@mjer2 | premier pr@mjer2 | ||||
program _^_en | program _^_en | ||||
(program files) program||fajlz | |||||
quit _^_en | quit _^_en | ||||
recorder ricordeur $text | recorder ricordeur $text | ||||
scanner skaner2 | |||||
scanner skaner2 $verb | |||||
scanner skanWr $noun | scanner skanWr $noun | ||||
scanners skanWr | |||||
sir _^_EN | sir _^_EN | ||||
souris suri | souris suri | ||||
sus sys | sus sys | ||||
sus sy $verb | sus sy $verb | ||||
to _^_en | |||||
tuttiquanti tutikw'anti | tuttiquanti tutikw'anti | ||||
vaut $u+ | vaut $u+ | ||||
vaux $u+ | vaux $u+ | ||||
scorbut skOrbyt | scorbut skOrbyt | ||||
scout skut | scout skut | ||||
stout staut | stout staut | ||||
uppercut ypE2rkyt | |||||
uppercut ypErkyt | |||||
ut yt | ut yt | ||||
zut zyt | zut zyt | ||||
net nEt | net nEt | ||||
offset OfsEt | offset OfsEt | ||||
set sEt | set sEt | ||||
soviet sOvjEt | |||||
soviet sOviEt | |||||
// urt (t is said) | // urt (t is said) | ||||
kurt kurt | kurt kurt | ||||
yaourt jaurt | |||||
yoghourt yogurt | |||||
yogourt yogurt | |||||
yaourt iaurt | |||||
yoghourt iogurt | |||||
yogourt iogurt | |||||
// ort (t said) | // ort (t said) | ||||
short SOrt | short SOrt | ||||
smart smart | smart smart | ||||
// irt | // irt | ||||
flirt flWrt | |||||
(sweat shirt) swEtSWrt | (sweat shirt) swEtSWrt | ||||
(tee shirt) tiSWrt | (tee shirt) tiSWrt | ||||
end _^_en | end _^_en | ||||
epson EpsOn | epson EpsOn | ||||
espeak @spi:k | espeak @spi:k | ||||
ethernet etE2rnEt | |||||
ethernet etErnEt | |||||
exit egzit | exit egzit | ||||
(file zilla) fa2jl||zija | |||||
(file zilla) fajl||zija | |||||
from frO2m $u+ | from frO2m $u+ | ||||
get _^_en | get _^_en | ||||
google gu:gWl | google gu:gWl | ||||
hot _^_en | hot _^_en | ||||
in _^_en | in _^_en | ||||
inside _^_en | inside _^_en | ||||
(internet explorer) E~tErn'Et||Eksplo2r'Wr | |||||
(internet explorer) E~tErn'Et||Eksplor'Wr | |||||
klaxon klaksOn | klaxon klaksOn | ||||
let _^_en | let _^_en | ||||
lite _^_en | lite _^_en | ||||
made _^_en | made _^_en | ||||
media medja | media medja | ||||
messenger mesEnZWr | messenger mesEnZWr | ||||
my _^_en | |||||
my maj | |||||
nat nat | |||||
not _^_en | not _^_en | ||||
null _^_en | null _^_en | ||||
ok o2ke | |||||
open o2p'Wn | |||||
ok oke | |||||
open op'Wn | |||||
(open source) op,Wn||s'urs | |||||
outlook autlu:k | outlook autlu:k | ||||
paint _^_en | paint _^_en | ||||
paper _^_en | paper _^_en | ||||
constations kO~statjO~z2 | constations kO~statjO~z2 | ||||
contentions kO~tA~tjO~z2 | contentions kO~tA~tjO~z2 | ||||
dations datjO~z2 | dations datjO~z2 | ||||
désertions dezE2rtjO~z2 $verb | |||||
désertions dezErtjO~z2 $verb | |||||
exploitions EksplwAtjO~z2 | exploitions EksplwAtjO~z2 | ||||
heurtions hWrtjO~z2 | heurtions hWrtjO~z2 | ||||
partions partjO~z2 | partions partjO~z2 | ||||
(burkina faso) burkina||faso | (burkina faso) burkina||faso | ||||
burundi burundi | burundi burundi | ||||
croatie kroasi | croatie kroasi | ||||
groenland gRoEnlA~d | |||||
groenland groEnlA~d | |||||
guatemala gwAtemala | guatemala gwAtemala | ||||
honduras _!O~dyras | honduras _!O~dyras | ||||
kenya kenja | kenya kenja | ||||
futuna futuna | futuna futuna | ||||
zimbabwe zimbabwe | zimbabwe zimbabwe | ||||
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated: 2009-04-01 Michel Such <[email protected]> | |||||
// Updated: 2009-05-14 Michel Such <[email protected]> | |||||
// | // | ||||
// Letter classes: | // Letter classes: | ||||
.L01 d e l n r t u | .L01 d e l n r t u | ||||
.L02 b c d f g h k p t v | .L02 b c d f g h k p t v | ||||
.L03 d l m n s t v | .L03 d l m n s t v | ||||
.L04 c d f g l m n v | |||||
.group a | .group a | ||||
_) am (n am // amnistie | _) am (n am // amnistie | ||||
am (n a // condamner | am (n a // condamner | ||||
_L04) an (_ an | |||||
_h) an (_ an | |||||
_) anti (@@P4 A~ti | |||||
_) arché (@P5 arke // archéologue | _) arché (@P5 arke // archéologue | ||||
_) archéo (@P6 arkeo // archéologue | _) archéo (@P6 arkeo // archéologue | ||||
_) arch (aP4 ark // archange | _) arch (aP4 ark // archange | ||||
or) ch (esC k // orchestre | or) ch (esC k // orchestre | ||||
or) ch (iC k // orchidée | or) ch (iC k // orchidée | ||||
_) ch (ao k // chaos, chaotique | _) ch (ao k // chaos, chaotique | ||||
_) ch (or k // chorale | |||||
_) ch (orA k // chorale | |||||
_) ch (oriz S | |||||
_) ch (oro S | |||||
te) ch (_ k | te) ch (_ k | ||||
ch (r k // chrétien | ch (r k // chrétien | ||||
_) chrono (@P6 kro2no | _) chrono (@P6 kro2no | ||||
ban) c (_ // banc | ban) c (_ // banc | ||||
blan) c (_ // blan | blan) c (_ // blan | ||||
Con) c (_ // tronc, jonc | Con) c (_ // tronc, jonc | ||||
_don) c (_ k // tronc, jonc | |||||
_don) c (_ k // donc | |||||
cler) c (_ // leclerc | cler) c (_ // leclerc | ||||
tchou) c (_ | tchou) c (_ | ||||
taba) c (_ | taba) c (_ | ||||
se) c (ond g // seconde secondaire | se) c (ond g // seconde secondaire | ||||
c k // recoin donc | c k // recoin donc | ||||
s) cien (t jA~ // conscient scientifique | |||||
cient (_ sit2 // ils appr�ient, remercient. | cient (_ sit2 // ils appr�ient, remercient. | ||||
effi) cien (t sjA~ // coefficient | effi) cien (t sjA~ // coefficient | ||||
défi) cien (t sjA~ // déficient | défi) cien (t sjA~ // déficient | ||||
cast (_S4 kast // podcast | cast (_S4 kast // podcast | ||||
casts (_S5 kast // podcasts | casts (_S5 kast // podcasts | ||||
_) clown klun | |||||
// group c: English section | // group c: English section | ||||
n) ch (_ _^_en // french | n) ch (_ _^_en // french | ||||
lor) d (_ d | lor) d (_ d | ||||
au) d (_ | au) d (_ | ||||
oi) d (_ | oi) d (_ | ||||
ou) d (_ | |||||
dt (_ t // Schmidt | dt (_ t // Schmidt | ||||
_ni) d (_ // nid | _ni) d (_ // nid | ||||
// Define use of the final 'e' in french | // Define use of the final 'e' in french | ||||
e (_ | e (_ | ||||
rch) e (_ =@3 | |||||
rch) e (s_ =@3 | |||||
elqu) e =@3 | |||||
elqu) e =@ | |||||
uisqu) e =@ | uisqu) e =@ | ||||
rsqu) e =@ | rsqu) e =@ | ||||
_C) e (_ @2 // je te | _C) e (_ @2 // je te | ||||
-c) e (_ @- | -c) e (_ @- | ||||
-j) e (_ @- | -j) e (_ @- | ||||
C) e (- @- | C) e (- @- | ||||
L02r) e (_ =@3 | |||||
L02r) e (s_ =@3 | |||||
e (Ce_ E | e (Ce_ E | ||||
eau o // bateau cheveaux | eau o // bateau cheveaux | ||||
g) ea (s_ a // mangeas | g) ea (s_ a // mangeas | ||||
gh) e (tAX e // spagheti | |||||
j) e (a // Jean Jeanne | j) e (a // Jean Jeanne | ||||
p) ect (_ E // suspect | p) ect (_ E // suspect | ||||
ect (_ Ekt // direct | ect (_ Ekt // direct | ||||
pi) ed (_ e // pied | pi) ed (_ e // pied | ||||
_cl) ef (_ e // clef | _cl) ef (_ e // clef | ||||
_) ein (K En // peindre | |||||
ein (K E~ // peindre | ein (K E~ // peindre | ||||
CC) ein (_ E~n2 // plein emploi | CC) ein (_ E~n2 // plein emploi | ||||
e (il E // vieille | e (il E // vieille | ||||
-) est (_ Est // -est | -) est (_ Est // -est | ||||
dg) et (_ Et // Bridget, gadget | dg) et (_ Et // Bridget, gadget | ||||
Ack) et (_ Et | |||||
k) et (_ Et | |||||
tick) et (_ E | |||||
m) et (_ Et2 | m) et (_ Et2 | ||||
eu Y // eu | eu Y // eu | ||||
e @ // menue | e @ // menue | ||||
_) e (CA e | _) e (CA e | ||||
_) e (xA E | _) e (xA E | ||||
Cr) eam i:m | |||||
Cr) eamer i:mWr | Cr) eamer i:mWr | ||||
Cl) eaner i:nWr | Cl) eaner i:nWr | ||||
vert) e (rX W | vert) e (rX W | ||||
eïn (_ 'Ein | eïn (_ 'Ein | ||||
_y) en (_ En | |||||
iew) er (X er2 | |||||
// group e: English section | // group e: English section | ||||
.group è | .group è | ||||
Z) ème iEm | |||||
Z) ème i-Em | |||||
è E | è E | ||||
gg g // agglomérer | gg g // agglomérer | ||||
ai) gni n^ // craignions châtaignier | ai) gni n^ // craignions châtaignier | ||||
gn n^ // agneau | gn n^ // agneau | ||||
gn (ie n // comagnie | |||||
_quatrevin) gts (_ z2 | _quatrevin) gts (_ z2 | ||||
vin) gt (_A t // liaison: vingt ans | vin) gt (_A t // liaison: vingt ans | ||||
// group g: English section | // group g: English section | ||||
_) game (X _^_en | _) game (X _^_en | ||||
@@) gate (X _^_en | |||||
girl _^_en // girl | girl _^_en // girl | ||||
gy (_ _^_en | gy (_ _^_en | ||||
.group i | .group i | ||||
i i // cri | 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 (A i: | _Cr) i (A i: | ||||
Cr) i (é i: | Cr) i (é i: | ||||
Cr) i (er_ i: | Cr) i (er_ i: | ||||
rr) i (er_ j | |||||
rr) i (er_ i- | |||||
C) ien (t_ 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 | 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 | i (e_ i | ||||
_) ill ill // illégal | _) ill ill // illégal | ||||
_) intra (neP5 E~tra | _) intra (neP5 E~tra | ||||
_) intra (uP5 E~tra | _) intra (uP5 E~tra | ||||
C) is (_ i | C) is (_ i | ||||
fl) irt W2rt | |||||
otl) i (neX aj | |||||
onl) i (ne_ aj | |||||
offl) i (ne_ aj | |||||
// group i: English section | // group i: English section | ||||
ibuter (X _^_en | ibuter (X _^_en | ||||
iev _^_en | iev _^_en | ||||
ife (_ _^_en | ife (_ _^_en | ||||
igh _^_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 | ize (X _^_en // realize | ||||
dr) i (ve _^_en | |||||
dr) i (veX _^_en | |||||
ram_f) i (le _^_en | ram_f) i (le _^_en | ||||
// group k: English section | // group k: English section | ||||
ke (X _^_en // basket, make, take | |||||
ke (rX _^_en // basket, make, take | |||||
ke (nX _^_en // basket, make, take | |||||
.group l | .group l | ||||
l l // lit | l l // lit | ||||
// group l: English section | // group l: English section | ||||
less (_ _^_en // noiseless | less (_ _^_en // noiseless | ||||
_) live _^_en | _) live _^_en | ||||
@) loud (_ _^_en | |||||
ll (X _^_en | |||||
.group m | .group m | ||||
m m // film | m m // film | ||||
mm m // pomme | 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 | master (_S6 mastWr | ||||
// group m: English section | // group m: English section | ||||
cr) oc (_ o // escroc | cr) oc (_ o // escroc | ||||
o (ckK O2 | o (ckK O2 | ||||
o (CerA O2 | o (CerA O2 | ||||
n) od (_ o // Pernod | |||||
_) o (ff O2 | |||||
o (lC O2 | o (lC O2 | ||||
o (ll O | |||||
o (C% O | |||||
o (C%eCA O2 | |||||
om (merA O2 | om (merA O2 | ||||
_) on (l O2n | |||||
on (n O | on (n O | ||||
ls) on (_ O2n | |||||
Cst) on (_ O2n | |||||
on (nerA O2 | on (nerA O2 | ||||
o (rC O2 | o (rC O2 | ||||
o (rX O2 | |||||
_) os (_ Os | _) os (_ Os | ||||
_v) os (gY o2 | |||||
o (sC O2 | o (sC O2 | ||||
o (ss O | |||||
o (sseCA O2 | |||||
s_) os (_ o | s_) os (_ o | ||||
x_) os (_ o | x_) os (_ o | ||||
C) o (se_ o2 | C) o (se_ o2 | ||||
C) o (ses_ o2 | C) o (ses_ o2 | ||||
o (C%ement_ O2 | |||||
o (tC O2 | |||||
o (Che@ O2 | o (Che@ O2 | ||||
o (Cement_ O2 | o (Cement_ O2 | ||||
o (t_ o | o (t_ o | ||||
o (eC o // coefficient | o (eC o // coefficient | ||||
_l) o (gi o2 | _l) o (gi o2 | ||||
_p) o (ten o2 | _p) o (ten o2 | ||||
_L02r) o (L02 o2 | |||||
_L02r) o (L02C O | |||||
_L02r) o (t_ o | |||||
_C) o (teri O2 | _C) o (teri O2 | ||||
_) oi (gnon o // oignons | _) oi (gnon o // oignons | ||||
oin (C wE~ | oin (C wE~ | ||||
oî wA // boîte | oî wA // boîte | ||||
om (C O~ // bombe | om (C O~ // bombe | ||||
om (m O // nommer | om (m O // nommer | ||||
_) om (n O2m // omnibus | |||||
om (ni O2m // omnibus | |||||
n) om (X O~ // nom | n) om (X O~ // nom | ||||
om (_ Om // www.web.com | om (_ Om // www.web.com | ||||
s) om (n O2m | |||||
on (K O~ // mon | on (K O~ // mon | ||||
on (t_ O~t2 // mont vont sont | on (t_ O~t2 // mont vont sont | ||||
_m) ont (pAC O~ // Montpellier | _m) ont (pAC O~ // Montpellier | ||||
_sir) op (_ o // sirop | _sir) op (_ o // sirop | ||||
_tr) op (_ op2 // trop | |||||
v) ost (_ o // Prévost | v) ost (_ o // Prévost | ||||
_C) oup (_ u // coup, loup | _C) oup (_ u // coup, loup | ||||
uC) oup (_ up2 // beaucoup | |||||
ou u // hibou brouillard | ou u // hibou brouillard | ||||
oû u // coûter | oû u // coûter | ||||
oyes (_ wA // troyes | oyes (_ wA // troyes | ||||
oy (A wAj // noyer voyelles | oy (A wAj // noyer voyelles | ||||
_y) o (y o | |||||
oy wA // roy | oy wA // roy | ||||
o (_ o // zorro allégro | o (_ o // zorro allégro | ||||
o (z_ o // berlioz | o (z_ o // berlioz | ||||
o O | o O | ||||
_sC) ot O2t | |||||
// group o: English section | // group o: English section | ||||
ook _^_en // book, cook | ook _^_en // book, cook | ||||
C) oot _^_en // bootable football | C) oot _^_en // bootable football | ||||
_) one _^_en | _) one _^_en | ||||
_sC) ot _^_en | |||||
oun (C _^_en // bounce, found | oun (C _^_en // bounce, found | ||||
_) over _^_en // over | _) over _^_en // over | ||||
ow _^_en // cow, town, down | ow _^_en // cow, town, down | ||||
.group p | .group p | ||||
p p // pas | p p // pas | ||||
_) para (CCP4 para | |||||
_) para (pCP4 para | |||||
_) photo (@P5 fo2to | _) photo (@P5 fo2to | ||||
_) poly (@P4 poli | _) poly (@P4 poli | ||||
_) post (KP4 pO2st | _) post (KP4 pO2st | ||||
dé) qua kwA // adequate | dé) qua kwA // adequate | ||||
_) qua (rtz kwA // quartz | _) qua (rtz kwA // quartz | ||||
qu k // quatre | qu k // quatre | ||||
_) que (_ k@ // que | |||||
_) que (_ k@2 // que | |||||
n) q (_ k // cinq cent | n) q (_ k // cinq cent | ||||
// group q: English section | // group q: English section | ||||
.group r | .group r | ||||
L02) r R | |||||
_su) rr rr // surréaliste | |||||
_su) rr rr // surréaliste | |||||
cou) rr rr // courrai | cou) rr rr // courrai | ||||
cou) rr (i r // courrier | cou) rr (i r // courrier | ||||
mou) rr rr // mourrai | mou) rr rr // mourrai | ||||
rr r // erreur | |||||
r r // rien | r r // rien | ||||
rr r | |||||
_) radio (@P5 radio | _) radio (@P5 radio | ||||
// group r: English section | // group r: English section | ||||
_) real _^_en | _) real _^_en | ||||
rese _^_en | rese _^_en | ||||
rst (_ _^_en | rst (_ _^_en | ||||
_) rule _^_en | |||||
.group s | .group s | ||||
sch S // schéma | sch S // schéma | ||||
dé) sh (A z // déshabiller | dé) sh (A z // déshabiller | ||||
sh S // shérif | sh S // shérif | ||||
CA) sh (_ _^_en // punish | |||||
ss s // assez | ss s // assez | ||||
ai) s (em s // vraisemblable | ai) s (em s // vraisemblable | ||||
A) s (A z // baiser | A) s (A z // baiser | ||||
A) s (oft s // microsoft | A) s (oft s // microsoft | ||||
A) s (ol_ s // tournesol | A) s (ol_ s // tournesol | ||||
_anti) s (A s // antisocial | |||||
_) socio (@P5 sosio | _) socio (@P5 sosio | ||||
_) super (@@P5 sypEr | _) super (@@P5 sypEr | ||||
_) super (_ sypEr | _) super (_ sypEr | ||||
_) supra (@P5 sypra | _) supra (@P5 sypra | ||||
batro) s (_ s | batro) s (_ s | ||||
océro) s (_ s | océro) s (_ s | ||||
scien (t si-A~ // conscient scientifique | |||||
sql (_S3 EskyEl | |||||
_u) s (_ s | _u) s (_ s | ||||
Abu) s (_ s | Abu) s (_ s | ||||
_Abu) s (_ | _Abu) s (_ | ||||
mbu) s (_ s | mbu) s (_ s | ||||
_cACpu) s (_ s | |||||
Acu) s (_ s | Acu) s (_ s | ||||
écu) s (_ | écu) s (_ | ||||
asu) s (_ s | asu) s (_ s | ||||
_tou) s (_leurs_ | _tou) s (_leurs_ | ||||
// group s: English section | // group s: English section | ||||
CA) sh (_ _^_en // punish | |||||
sh (_ _^_en | sh (_ _^_en | ||||
sh (Ap _^_en // shop, ship | sh (Ap _^_en // shop, ship | ||||
sh (At _^_en // shut, shot | sh (At _^_en // shut, shot | ||||
g) ueill Wj // orgueilleux | g) ueill Wj // orgueilleux | ||||
g) ueil (_ Wj // orgueil | g) ueil (_ Wj // orgueil | ||||
C) u (bX W // hub, club | C) u (bX W // hub, club | ||||
C) u (gX W // bug, mug | C) u (gX W // bug, mug | ||||
_n) u (rse W2 // nurse | |||||
r) u (nX W // run, autorun | r) u (nX W // run, autorun | ||||
um (_ Om // album | um (_ Om // album | ||||
f) um (_ W~ // parfum | f) um (_ W~ // parfum | ||||
CC) un (_ W~ // brun | CC) un (_ W~ // brun | ||||
uc) un (_ W~n2 // aucun | uc) un (_ W~n2 // aucun | ||||
un (_ W~n2 // un avion | 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 | fl) ux (_ y // flux, reflux | ||||
g) u (A // fatigue | g) u (A // fatigue | ||||
ump (_ _^_en | ump (_ _^_en | ||||
unch _^_en | unch _^_en | ||||
under _^_en // under, understand, thunder | under _^_en // under, understand, thunder | ||||
_C) un (_ _^_en | |||||
_C) un (n _^_en | |||||
_) up (C _^_en // upper, update | _) up (C _^_en // upper, update | ||||
up (_ _^_en // setup | up (_ _^_en // setup | ||||
urn (X _^_en // burn, turn | urn (X _^_en // burn, turn | ||||
.group v | .group v | ||||
v v | v v | ||||
vers (_ vErz2 | vers (_ vErz2 | ||||
_) view (X vju | |||||
_) view (A vjuv | |||||
// goup v: English section | |||||
// group v: English section | |||||
voice (X _^_en | voice (X _^_en | ||||
void (_ _^_en | void (_ _^_en | ||||
vy (_ _^_en | vy (_ _^_en | ||||
w (agon v // wagon | w (agon v // wagon | ||||
// group w: English section | // group w: English section | ||||
A) w _^_en | |||||
e) w _^_en | |||||
wa (Ce_ _^_en // hardware software wave | wa (Ce_ _^_en // hardware software wave | ||||
_) wan _^_en | _) wan _^_en | ||||
wr _^_en // write | wr _^_en // write | ||||
.group x | .group x | ||||
x ks | x ks | ||||
_) x (A gz // xylophone | _) x (A gz // xylophone | ||||
_) x (CP1 iks // xylophone | |||||
xml (_S3 _!iksEmEl | xml (_S3 _!iksEmEl | ||||
e) x (A gz // exagérer exemple | e) x (A gz // exagérer exemple | ||||
L03e) x (A ks // annexe, vexer | L03e) x (A ks // annexe, vexer | ||||
y i // cryogénique myope | y i // cryogénique myope | ||||
_) y (A j // yak, yacht | _) y (A j // yak, yacht | ||||
_) yacht _^_en // yacht, yachtman | _) 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 (b E~ // symbolique | ||||
ym (p E~ // tympan | ym (p E~ // tympan | ||||
ym (_ E~ // thym | ym (_ E~ // thym | ||||
ㄩ y55 | ㄩ y55 | ||||
$textmode | $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 | 涉 she4 | ||||
礦 kuang4 | 礦 kuang4 | ||||
河 he2 | 河 he2 | ||||
业 ye4 | 业 ye4 | ||||
譬 pi4 | 譬 pi4 | ||||
觀 guan1 | 觀 guan1 | ||||
勒 lei1 | |||||
勒 le4 | |||||
牽 qian1 | 牽 qian1 | ||||
缎 duan4 | 缎 duan4 | ||||
抛 pao1 | 抛 pao1 | ||||
搭 da1 | 搭 da1 | ||||
簽 qian1 | 簽 qian1 | ||||
乱 luan4 | 乱 luan4 | ||||
長 zhang3 | |||||
長 chang2 | |||||
逐 zhu2 | 逐 zhu2 | ||||
苇 wei3 | 苇 wei3 | ||||
鲸 jing1 | 鲸 jing1 | ||||
盤 pan2 | 盤 pan2 | ||||
鞏 gong3 | 鞏 gong3 | ||||
袱 fu5 | 袱 fu5 | ||||
甸 dian1 | |||||
甸 dian4 | |||||
妻 qi1 | 妻 qi1 | ||||
晚 wan3 | 晚 wan3 | ||||
繪 hui4 | 繪 hui4 | ||||
各 ge4 | 各 ge4 | ||||
箱 xiang1 | 箱 xiang1 | ||||
蘸 zhan4 | 蘸 zhan4 | ||||
李 li5 | |||||
李 li3 | |||||
肌 ji1 | 肌 ji1 | ||||
催 cui1 | 催 cui1 | ||||
取 qu3 | 取 qu3 | ||||
額 e2 | 額 e2 | ||||
論 lun4 | 論 lun4 | ||||
照 zhao4 | 照 zhao4 | ||||
长 zhang3 | |||||
长 chang2 | |||||
猪 zhu1 | 猪 zhu1 | ||||
纷 fen1 | 纷 fen1 | ||||
虜 lu3 | 虜 lu3 | ||||
络 luo4 | 络 luo4 | ||||
怎 zen3 | 怎 zen3 | ||||
細 xi4 | 細 xi4 | ||||
干 gan4 | |||||
干 gan1 | |||||
腸 chang2 | 腸 chang2 | ||||
說 shuo1 | 說 shuo1 | ||||
丽 li4 | 丽 li4 | ||||
台 tai2 | 台 tai2 | ||||
侍 shi4 | 侍 shi4 | ||||
領 ling3 | 領 ling3 | ||||
煞 sha1 | |||||
煞 sha4 | |||||
奮 fen4 | 奮 fen4 | ||||
礙 ai4 | 礙 ai4 | ||||
盜 dao4 | 盜 dao4 |
59 phoneme tables | |||||
60 phoneme tables | |||||
new total | new total | ||||
base 103 103 | base 103 103 | ||||
base2 24 122 | |||||
base2 26 124 | |||||
en 50 149 | en 50 149 | ||||
en_n 32 149 | en_n 32 149 | ||||
en_us 37 150 | en_us 37 150 | ||||
eo 13 115 | eo 13 115 | ||||
jbo 4 116 | jbo 4 116 | ||||
fi 40 134 | fi 40 134 | ||||
fr 55 141 | |||||
fr_ca 11 141 | |||||
fr 53 140 | |||||
fr_ca 11 140 | |||||
hi 60 149 | hi 60 149 | ||||
ta 17 152 | ta 17 152 | ||||
hu 23 119 | hu 23 119 | ||||
mk 3 141 | mk 3 141 | ||||
sr 14 140 | sr 14 140 | ||||
ru 39 134 | ru 39 134 | ||||
it 17 125 | |||||
it 17 127 | |||||
la 21 121 | 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 | ro 36 146 | ||||
el 8 122 | |||||
grc 12 127 | |||||
el 8 124 | |||||
grc 12 128 | |||||
sv 25 125 | sv 25 125 | ||||
no 28 129 | no 28 129 | ||||
is 33 129 | is 33 129 | ||||
zh 66 154 | zh 66 154 | ||||
sw 14 112 | sw 14 112 | ||||
tr 18 127 | tr 18 127 | ||||
ku 18 127 | |||||
id 15 124 | |||||
ku 18 128 | |||||
id 15 126 | |||||
sq 35 127 | sq 35 127 | ||||
hy 24 119 | hy 24 119 | ||||
rw 15 129 | |||||
rw 15 131 | |||||
ml 13 151 | ml 13 151 | ||||
kn 15 151 | kn 15 151 | ||||
bn 59 155 | bn 59 155 | ||||
ne 18 157 | ne 18 157 | ||||
mr 1 149 | |||||
mr 12 149 | |||||
om 25 125 | om 25 125 | ||||
eu 6 124 | |||||
eu 6 125 | |||||
da 21 118 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [(a)] base | l/la [(a)] base | ||||
[a] fr | [a] fr | ||||
[a2] fr | |||||
l/l_a [(a)] base | l/l_a [(a)] base | ||||
[a] fr | [a] fr | ||||
[a2] fr | |||||
[wA] fr | [wA] fr | ||||
[A~] fr | [A~] fr | ||||
l/le [(e)] base | l/le [(e)] base | ||||
[E] fr | [E] fr | ||||
[e] fr | [e] fr | ||||
[E2] fr | |||||
l/l_e [(e)] base | l/l_e [(e)] base | ||||
[E] fr | [E] fr | ||||
[E2] fr | |||||
l/L_eL_af [&] af | l/L_eL_af [&] af | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [(i)] base | l/li [(i)] base | ||||
[i] fr | [i] fr | ||||
[i-] fr | |||||
[i:] fr | [i:] fr | ||||
[l] zh | [l] zh | ||||
l/l_i [(i)] base | l/l_i [(i)] base | ||||
[r/] af | [r/] af | ||||
[r/] ru | [r/] ru | ||||
r3/r_@ [(@)] base | r3/r_@ [(@)] base | ||||
[@2] fr | |||||
r3/r#_ [r#] is | r3/r#_ [r#] is | ||||
r3/r_2 [r/2] fr | r3/r_2 [r/2] fr | ||||
r3/r_a [(a)] base | r3/r_a [(a)] base | ||||
r3/r_e [(e)] base | r3/r_e [(e)] base | ||||
r3/r_i [(i)] base | r3/r_i [(i)] base | ||||
[i] fr | |||||
[w^i] fr | |||||
r3/r_n [r/] base | r3/r_n [r/] base | ||||
[r/2] fr | [r/2] fr | ||||
[r/] ru | [r/] ru | ||||
r3/r_o [(o)] base | r3/r_o [(o)] base | ||||
[O] fr | |||||
[O2] fr | |||||
r3/r_ru [R4] ru | r3/r_ru [R4] ru | ||||
r3/r_ru2 [R4] ru | r3/r_ru2 [R4] ru | ||||
r3/r_sr [r.] bn | r3/r_sr [r.] bn | ||||
r3/r_trill3.wav [R3] base | r3/r_trill3.wav [R3] base | ||||
[r] af | [r] af | ||||
[r] nl | [r] nl | ||||
r3/r_trill_short [r] fi | |||||
r3/r_trill.wav [R2] base | r3/r_trill.wav [R2] base | ||||
[r] fi | |||||
[R2] lv | [R2] lv | ||||
[R] pl | [R] pl | ||||
[r*] sr | [r*] sr | ||||
[x] pt | [x] pt | ||||
r3/r_u [(u)] base | r3/r_u [(u)] base | ||||
r3/r_uvl [r"] base | r3/r_uvl [r"] base | ||||
[R2] da | |||||
r3/r_uvl.wav [r"] base | r3/r_uvl.wav [r"] base | ||||
[R2] da | |||||
r3/rx [*] base | r3/rx [*] base | ||||
[r/] base | [r/] base | ||||
[r/] af | [r/] af | ||||
[R] fr | |||||
[r] fr | [r] fr | ||||
[r2] fr | |||||
[r/2] fr | [r/2] fr | ||||
[R] fr_ca | [R] fr_ca | ||||
[r/] ru | [r/] ru | ||||
r3/@tap [**] base | r3/@tap [**] base | ||||
r3/@tap2 [**] base | r3/@tap2 [**] base | ||||
r3/@tap_rfx [r.] base | r3/@tap_rfx [r.] base | ||||
r/a_ [r] da | |||||
r/r [r] base | r/r [r] base | ||||
[r-] base | [r-] base | ||||
[r] en_sc | [r] en_sc | ||||
r/r_ [r] base | r/r_ [r] base | ||||
[r] en_sc | [r] en_sc | ||||
[r] de | [r] de | ||||
[r] fi | |||||
[r2] nl | [r2] nl | ||||
[r] ru | [r] ru | ||||
[r] ro | [r] ro | ||||
r/rr [r/] base | r/rr [r/] base | ||||
[r/] af | [r/] af | ||||
[r] de | [r] de | ||||
[r] fi | |||||
[r2] nl | [r2] nl | ||||
[r] ru | [r] ru | ||||
[r/] ru | [r/] ru | ||||
r/trr [r/] base | r/trr [r/] base | ||||
[r/] af | [r/] af | ||||
[r] de | [r] de | ||||
[r] fi | |||||
[r2] nl | [r2] nl | ||||
[r] ru | [r] ru | ||||
[r/] ru | [r/] ru | ||||
[(i)] base | [(i)] base | ||||
[(o)] base | [(o)] base | ||||
[(u)] base | [(u)] base | ||||
[@] fr | |||||
[Y] 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 | [A~] fr | ||||
ufric/ch [C] base | ufric/ch [C] base | ||||
[J^] base | [J^] base | ||||
[x] sr | [x] sr | ||||
ufric/xx [X] base | ufric/xx [X] base | ||||
[Q"] base | [Q"] base | ||||
[R] da | |||||
ustop/c [c] base | ustop/c [c] base | ||||
ustop/c_ejc [c`] om | ustop/c_ejc [c`] om | ||||
ustop/k [k] base | ustop/k [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] en | [k] en | ||||
[k] fi | [k] fi | ||||
[k] fr | |||||
[kh] hi | [kh] hi | ||||
[k] hu | [k] hu | ||||
[k] lv | [k] lv | ||||
[aU] kn | [aU] kn | ||||
[aU] bn | [aU] bn | ||||
[aU] ne | [aU] ne | ||||
[aU] mr | |||||
vdiph/aau_4 [aU] vi | vdiph/aau_4 [aU] vi | ||||
vdiph/ae [E:] fr_ca | vdiph/ae [E:] fr_ca | ||||
[aI] la | [aI] la | ||||
vdiph/ai_7 [aI] en_sc | vdiph/ai_7 [aI] en_sc | ||||
[aI2] en_sc | [aI2] en_sc | ||||
[aI] is | [aI] is | ||||
[aI] mr | |||||
vdiph/aoo [aU] en_us | vdiph/aoo [aU] en_us | ||||
vdiph/au [aU] en | vdiph/au [aU] en | ||||
[aU] af | [aU] af | ||||
[@U] id | [@U] id | ||||
vdiph/ui [uI] base2 | vdiph/ui [uI] base2 | ||||
[uI] eo | [uI] eo | ||||
[ui] fi | |||||
[ui] lv | [ui] lv | ||||
[uI] vi | [uI] vi | ||||
[ui] zhy | [ui] zhy | ||||
vdiph/ui_2 [uI] af | vdiph/ui_2 [uI] af | ||||
vdiph/ui_3 [uI] cy | vdiph/ui_3 [uI] cy | ||||
[uY] cy | [uY] cy | ||||
vdiph/ui_4 [ui] fi | |||||
vdiph/Vi [VI] ne | vdiph/Vi [VI] ne | ||||
vdiph/Vu [@U] af | vdiph/Vu [@U] af | ||||
[VU] ne | [VU] ne | ||||
vnasal/aa_n [a~] hi | vnasal/aa_n [a~] hi | ||||
[a~] bn | [a~] bn | ||||
vnasal/aa_n2 [A~] en | vnasal/aa_n2 [A~] en | ||||
[A~] fr | |||||
vnasal/aa_n3 [A~] af | vnasal/aa_n3 [A~] af | ||||
vnasal/aa_n4 [A~] fr | |||||
vnasal/a#_n [&~] pt | vnasal/a#_n [&~] pt | ||||
vnasal/a#u_n [&U~] pt | vnasal/a#u_n [&U~] pt | ||||
[&U~] pt_pt | [&U~] pt_pt | ||||
[o~] pt | [o~] pt | ||||
[o~] bn | [o~] bn | ||||
vnasal/o_n2 [o~] af | vnasal/o_n2 [o~] af | ||||
vnasal/o_n3 [O~] fr | |||||
[O~] fr | |||||
vnasal/oo_n [O~] en | vnasal/oo_n [O~] en | ||||
vnasal/oo_n2 [O~] hi | vnasal/oo_n2 [O~] hi | ||||
[o] zh | [o] zh | ||||
voc/Q_less [Q] nl | voc/Q_less [Q] nl | ||||
[x2] pt | [x2] pt | ||||
voc/Q_ulv [Q"] base | voc/Q_ulv [Q"] base | ||||
[R] da | |||||
voc/v [v] base | voc/v [v] base | ||||
[v] fi | [v] fi | ||||
[v] fr | [v] fr | ||||
[v;] ro | [v;] ro | ||||
[v] is | [v] is | ||||
[v] bn | [v] bn | ||||
[v] da | |||||
voc/v_ [B] base | voc/v_ [B] base | ||||
[v] base | [v] base | ||||
[v] fi | [v] fi | ||||
[v;] ro | [v;] ro | ||||
[v] is | [v] is | ||||
[v] bn | [v] bn | ||||
[v] da | |||||
voc/v2 [v#] es | voc/v2 [v#] es | ||||
voc/vj [v] base | voc/vj [v] base | ||||
[v] fr | [v] fr | ||||
[@] kn | [@] kn | ||||
[@4] bn | [@4] bn | ||||
vowel/@- [@-] base | vowel/@- [@-] base | ||||
[@3] fr | |||||
[r*] hr | [r*] hr | ||||
vowel/& [a] en_rp | vowel/& [a] en_rp | ||||
[&] fi | [&] fi | ||||
[@3] hi | [@3] hi | ||||
[@3] bn | [@3] bn | ||||
[@3] ne | [@3] ne | ||||
[@] da | |||||
vowel/3_2 [3:] en_n | vowel/3_2 [3:] en_n | ||||
[@] zh | [@] zh | ||||
vowel/3_3 [3:] en_rp | vowel/3_3 [3:] en_rp | ||||
[a] it | [a] it | ||||
[a] zh | [a] zh | ||||
[a] id | [a] id | ||||
[a:] mr | |||||
vowel/a# [a/] base2 | vowel/a# [a/] base2 | ||||
[a2] en_sc | [a2] en_sc | ||||
[a2] en_wi | [a2] en_wi | ||||
[a] pt_pt | [a] pt_pt | ||||
[a] ro | [a] ro | ||||
[a] rw | [a] rw | ||||
[a] da | |||||
vowel/a#_2 [a#] pl | vowel/a#_2 [a#] pl | ||||
[&] hr | [&] hr | ||||
[a2] sv | [a2] sv | ||||
[a] is | [a] is | ||||
[A] zh | [A] zh | ||||
[a] sq | [a] sq | ||||
[A] da | |||||
vowel/a#_3 [a2] en | vowel/a#_3 [a2] en | ||||
[a2] en_n | [a2] en_n | ||||
[a2] en_us | [a2] en_us | ||||
[a] ml | [a] ml | ||||
[a] bn | [a] bn | ||||
[a#] om | [a#] om | ||||
[3] da | |||||
vowel/a_4 [a/] el | vowel/a_4 [a/] el | ||||
[a] vi | [a] vi | ||||
[a:] om | [a:] om | ||||
[a:] kn | [a:] kn | ||||
[A] om | [A] om | ||||
vowel/a_6 [a] fr | vowel/a_6 [a] fr | ||||
[a2] fr | |||||
[a] ca | [a] ca | ||||
[a:] vi | [a:] vi | ||||
vowel/aa [a] fi | |||||
[A] fr_ca | |||||
vowel/aa [A] fr_ca | |||||
[A] no | [A] no | ||||
[A:] no | [A:] no | ||||
[aa] zhy | [aa] zhy | ||||
vowel/aa_7 [A] nl | vowel/aa_7 [A] nl | ||||
vowel/aa_8 [0] en_us | vowel/aa_8 [0] en_us | ||||
[A:] en_us | [A:] en_us | ||||
vowel/aa_9 [a:] hi | |||||
vowel/aa_9 [a] fi | |||||
[a:] hi | |||||
[a:] bn | [a:] bn | ||||
[a] ne | [a] ne | ||||
vowel/a_en [A] fr | vowel/a_en [A] fr | ||||
[e:] ml | [e:] ml | ||||
[e:] kn | [e:] kn | ||||
[e] ne | [e] ne | ||||
[e] da | |||||
vowel/e# [I] en_sc | vowel/e# [I] en_sc | ||||
[I2] en_sc | [I2] en_sc | ||||
vowel/e_2 [eI] en_sc | vowel/e_2 [eI] en_sc | ||||
[e:] hu | [e:] hu | ||||
[e] ku | [e] ku | ||||
vowel/e_5 [i] en_sc | vowel/e_5 [i] en_sc | ||||
vowel/e_6 [e] om | |||||
vowel/e_6 [e] mr | |||||
[e] om | |||||
vowel/ee [E] en_n | vowel/ee [E] en_n | ||||
[E] sv | [E] sv | ||||
vowel/e_e [E] en_sc | vowel/e_e [E] en_sc | ||||
[E2] nl | [E2] nl | ||||
[E] zh | [E] zh | ||||
[E#] ku | [E#] ku | ||||
[&] da | |||||
vowel/ee#_2 [E-] sv | vowel/ee#_2 [E-] sv | ||||
[E#] sq | [E#] sq | ||||
vowel/ee_3 [&] af | vowel/ee_3 [&] af | ||||
[E] ku | [E] ku | ||||
vowel/e_mid [E] en_rp | vowel/e_mid [E] en_rp | ||||
[E] fr | [E] fr | ||||
[E2] fr | |||||
[E] fr_ca | [E] fr_ca | ||||
[E] hi | [E] hi | ||||
[E] hu | [E] hu | ||||
[e] kn | [e] kn | ||||
[E] om | [E] om | ||||
[E#] om | [E#] om | ||||
[E] da | |||||
vowel/@_fnt [@] en_wi | vowel/@_fnt [@] en_wi | ||||
[@2] en_wi | [@2] en_wi | ||||
[@2] hr | [@2] hr | ||||
vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
vowel/i_2 [i2] de | vowel/i_2 [i2] de | ||||
[i:] de | [i:] de | ||||
[i] fr | |||||
[i-] fr | |||||
[i] nl | [i] nl | ||||
[i:] la | [i:] la | ||||
[i:] sv | [i:] sv | ||||
vowel/i_3 [i] af | vowel/i_3 [i] af | ||||
[i] fr | |||||
[i:] fr | [i:] fr | ||||
[i:] sk | [i:] sk | ||||
vowel/i_4 [i] fi | vowel/i_4 [i] fi | ||||
[I] it | [I] it | ||||
[i] is | [i] is | ||||
[i] vi | [i] vi | ||||
[i] da | |||||
vowel/i_5 [i:] en_sc | vowel/i_5 [i:] en_sc | ||||
vowel/i#_5 [y] pt_pt | vowel/i#_5 [y] pt_pt | ||||
[i/] pt_pt | [i/] pt_pt | ||||
[i] id | [i] id | ||||
[i] ml | [i] ml | ||||
[i] kn | [i] kn | ||||
[I] mr | |||||
vowel/i#_6 [i.] zh | vowel/i#_6 [i.] zh | ||||
vowel/i_7 [i] pl | vowel/i_7 [i] pl | ||||
[i] sq | [i] sq | ||||
[i:] hi | [i:] hi | ||||
[i] bn | [i] bn | ||||
[i:] bn | [i:] bn | ||||
[i:] mr | |||||
vowel/ii [I] en_n | vowel/ii [I] en_n | ||||
[I2] en_n | [I2] en_n | ||||
[I] en_rp | [I] en_rp | ||||
[@2] bn | [@2] bn | ||||
[V] ne | [V] ne | ||||
[@/] ne | [@/] ne | ||||
[@] mr | |||||
[V] mr | |||||
vowel/@_low2 [@/] en_us | vowel/@_low2 [@/] en_us | ||||
[@2] en_us | [@2] en_us | ||||
vowel/o [o] base2 | vowel/o [o] base2 | ||||
[o] kn | [o] kn | ||||
[o:] kn | [o:] kn | ||||
[o] bn | [o] bn | ||||
[o] mr | |||||
vowel/o_2 [o:] cy | vowel/o_2 [o:] cy | ||||
[o2] fr | [o2] fr | ||||
[o:] hi | [o:] hi | ||||
[o:] no | [o:] no | ||||
[o] vi | [o] vi | ||||
[o:] bn | [o:] bn | ||||
[o] da | |||||
vowel/o-_2 [V] en_n | vowel/o-_2 [V] en_n | ||||
[V] en_wm | [V] en_wm | ||||
vowel/o_3 [oU] en_sc | vowel/o_3 [oU] en_sc | ||||
vowel/o-_3 [U] en_rp | vowel/o-_3 [U] en_rp | ||||
vowel/o-_4 [o] ro | vowel/o-_4 [o] ro | ||||
vowel/o_5 [O] nl | vowel/o_5 [O] nl | ||||
[O] da | |||||
vowel/o_6 [O:] nl | vowel/o_6 [O:] nl | ||||
vowel/o_7 [o] ku | vowel/o_7 [o] ku | ||||
vowel/oe [W] en | vowel/oe [W] en | ||||
[W] af | [W] af | ||||
[W] de | [W] de | ||||
[W] hy | [W] hy | ||||
[W] da | |||||
vowel/oe_2 [W] no | vowel/oe_2 [W] no | ||||
[W] tr | [W] tr | ||||
vowel/oe_4 [W] sv | vowel/oe_4 [W] sv | ||||
vowel/o_mid [U@] en_rp | vowel/o_mid [U@] en_rp | ||||
[O] fr | [O] fr | ||||
[o] fr | |||||
[O2] fr | [O2] fr | ||||
[o2] fr | |||||
[o] hu | [o] hu | ||||
[o] tr | [o] tr | ||||
[o] ne | [o] ne | ||||
vowel/oo_2 [0] en_sc | vowel/oo_2 [0] en_sc | ||||
[O] cy | [O] cy | ||||
[o] cs | [o] cs | ||||
[0] da | |||||
vowel/oo_3 [O] af | vowel/oo_3 [O] af | ||||
vowel/oo_4 [O] base2 | vowel/oo_4 [O] base2 | ||||
[0] en_wm | [0] en_wm | ||||
[u] tr | [u] tr | ||||
vowel/u#_2 [u-] ta | vowel/u#_2 [u-] ta | ||||
[u-] sv | [u-] sv | ||||
vowel/u_3 [u] fr | |||||
[u:] fr | |||||
vowel/u_3 [u:] fr | |||||
vowel/u#_3 [U] ta | vowel/u#_3 [U] ta | ||||
[U:] ta | [U:] ta | ||||
vowel/u_4 [u] fr | |||||
vowel/u#_4 [U] en_sc | vowel/u#_4 [U] en_sc | ||||
[u:] en_sc | [u:] en_sc | ||||
vowel/u_5 [u] sw | vowel/u_5 [u] sw | ||||
[u#] rw | [u#] rw | ||||
[u:] bn | [u:] bn | ||||
[u] ne | [u] ne | ||||
[U] mr | |||||
[u:] mr | |||||
[u] da | |||||
vowel/u_bck2 [u:] la | vowel/u_bck2 [u:] la | ||||
vowel/u_fnt [u:] en_rp | vowel/u_fnt [u:] en_rp | ||||
vowel/uu [U] en | vowel/uu [U] en | ||||
[V] ta | [V] ta | ||||
[V] bn | [V] bn | ||||
vowel/V_4 [V] en_sc | vowel/V_4 [V] en_sc | ||||
[V] da | |||||
vowel/V_6 [V] en_us | vowel/V_6 [V] en_us | ||||
[a#] lv | [a#] lv | ||||
vowel/y [y:] en | |||||
vowel/V_7 [@] mr | |||||
[V] mr | |||||
vowel/y [y] base2 | |||||
[y:] en | |||||
[y:] de | [y:] de | ||||
[y] fi | [y] fi | ||||
[y:] hu | [y:] hu | ||||
[y] la | [y] la | ||||
[yu] zhy | [yu] zhy | ||||
[y] sq | [y] sq | ||||
vowel/y# [Y:] en | |||||
[y] da | |||||
vowel/y# [Y] base2 | |||||
[Y:] en | |||||
[3:] en_wm | [3:] en_wm | ||||
[Y:] de | [Y:] de | ||||
[Y] fi | [Y] fi | ||||
[y] ku | [y] ku | ||||
vowel/yy [y"] fr_ca | vowel/yy [y"] fr_ca | ||||
[y] no | [y] no | ||||
[Y] da | |||||
vowel/yy_3 [y] sv | vowel/yy_3 [y] sv | ||||
vowel/yy_4 [y] de | vowel/yy_4 [y] de | ||||
[y] hu | [y] hu | ||||
vwl_en_us/or [o@] en_us | vwl_en_us/or [o@] en_us | ||||
[O:] en_sc | [O:] en_sc | ||||
vwl_en_us/ur [U@] en_us | 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 | [W2] fr | ||||
[W~] fr | |||||
vwl_fr/@R [x] pt_pt | vwl_fr/@R [x] pt_pt | ||||
vwl_fr/r_@2 [W] fr | |||||
vwl_fr/@R2 [R] fr_ca | 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 | 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 | vwl_fr/r_u [u] fr | ||||
[u:] fr | |||||
vwl_fr/r_y [y] fr | vwl_fr/r_y [y] fr | ||||
vwl_fr/tr [r] fr | |||||
vwl_fr/w_a [wA] fr | vwl_fr/w_a [wA] fr | ||||
vwl_fr/xr [a] fr | |||||
[A~] fr | |||||
vwl_hi/l-voc [l-] jbo | vwl_hi/l-voc [l-] jbo | ||||
[l-] hi | [l-] hi | ||||
[l-] sk | [l-] sk |
endphoneme | 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 | phoneme aU | ||||
vowel starttype (a) endtype (u) | vowel starttype (a) endtype (u) | ||||
length 270 | length 270 |
phoneme a | phoneme a | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 170 | length 170 | ||||
formants vowel/aa | |||||
reduceto a2 1 | |||||
formants vowel/aa_9 | |||||
// reduceto a2 1 | |||||
endphoneme | endphoneme | ||||
phoneme a2 | phoneme a2 | ||||
phoneme y | phoneme y | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 155 | |||||
length 150 | |||||
formants vowel/y | formants vowel/y | ||||
endphoneme | endphoneme | ||||
vowel starttype (u) endtype (i) | vowel starttype (u) endtype (i) | ||||
length 270 | length 270 | ||||
long | long | ||||
formants vdiph/ui | |||||
formants vdiph/ui_4 | |||||
endphoneme | endphoneme | ||||
phoneme yi | phoneme yi | ||||
//=========== | //=========== | ||||
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 | trill | ||||
formants r/rr | |||||
after _ r/rr | |||||
after t r/trr p r/trr k r/trr | |||||
before _ r/r_ | |||||
lengthmod 6 | |||||
endphoneme | endphoneme | ||||
// French | // French | ||||
//==================================================== | //==================================================== | ||||
phoneme (l) virtual | |||||
// Used for l and l/ | |||||
endphoneme | |||||
phoneme : // Lengthen previous vowel by "length" | phoneme : // Lengthen previous vowel by "length" | ||||
virtual | virtual | ||||
length 40 // shorter than for fr-ca | length 40 // shorter than for fr-ca | ||||
endphoneme | endphoneme | ||||
// Vowels | |||||
//======= | |||||
phoneme @ | phoneme @ | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 190 | length 190 | ||||
formants vowel/@_hgh | formants vowel/@_hgh | ||||
before l/ DFT+l/l_@ | before l/ DFT+l/l_@ | ||||
before (r) DFT+r/xr | |||||
before (r) DFT+vwl_fr/r_@ | |||||
endphoneme | endphoneme | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 170 | length 170 | ||||
formants vowel/@_fr | 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 | endphoneme | ||||
formants vowel/a_6 | formants vowel/a_6 | ||||
after l l/la-15 | after l l/la-15 | ||||
before l/ DFT+l/l_a | 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 | endphoneme | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 190 | length 190 | ||||
formants vowel/e | formants vowel/e | ||||
after l l/le-15 | |||||
after (l) l/le-15 | |||||
before l/ DFT-20+l/xl | before l/ DFT-20+l/xl | ||||
before (r) DFT+r/xr | |||||
before (r) DFT-10+vwl_fr/r_e | |||||
endphoneme | endphoneme | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 190 | length 190 | ||||
formants vowel/e_mid | formants vowel/e_mid | ||||
after l l/le-15 | |||||
after (l) l/le-15 | |||||
before l/ DFT+l/l_e | before l/ DFT+l/l_e | ||||
before r/2 DFT+vwl_fr/r_e | |||||
reduceto E2 1 | |||||
before (r) DFT-10+vwl_fr/r_e | |||||
before r/2 DFT-10+vwl_fr/r_e | |||||
endphoneme | endphoneme | ||||
phoneme E2 | |||||
vowel starttype (e) endtype (e) | |||||
length 190 | |||||
formants vowel/e_mid | |||||
after l l/le-15 | |||||
before l/ DFT+l/l_e | |||||
before r/2 DFT-20+vwl_fr/r_e | |||||
phoneme i | |||||
vowel starttype (i) endtype (i) | |||||
length 180 | |||||
formants vowel/i_2 | |||||
linkout ; | |||||
after (l) l/li-15 | |||||
before l/ DFT+l/l_i | |||||
before (r) DFT-20+vwl_fr/r_i | |||||
before r/2 DFT+vwl_fr/r_i | |||||
endphoneme | endphoneme | ||||
phoneme i | |||||
phoneme i- // shorter | |||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 170 | |||||
formants vowel/i_3 | |||||
length 120 | |||||
formants vowel/i_2 | |||||
linkout ; | linkout ; | ||||
after l l/li-15 | |||||
before l/ DFT+l/l_i | |||||
before (r) DFT+r/xr | |||||
before r/2 DFT+r3/r_i | |||||
after (l) l/li-15 | |||||
endphoneme | endphoneme | ||||
length 250 | length 250 | ||||
formants vowel/i_3 | formants vowel/i_3 | ||||
linkout ; | linkout ; | ||||
after l l/li-15 | |||||
after (l) l/li-15 | |||||
before l/ DFT+l/l_i | 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 | endphoneme | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 190 | length 190 | ||||
formants vowel/o_3 | formants vowel/o_3 | ||||
after l l/lo-10 | |||||
after (l) l/lo-10 | |||||
before l/ DFT+l/l_o | 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 | reduceto o2 1 | ||||
endphoneme | endphoneme | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 190 | length 190 | ||||
formants vowel/o_2 | 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 | endphoneme | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 190 | length 190 | ||||
formants vowel/o_mid | formants vowel/o_mid | ||||
after l l/lo-10 | |||||
after (l) l/lo-10 | |||||
before l/ DFT+l/l_o | 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 | endphoneme | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 190 | length 190 | ||||
formants vowel/o_mid | formants vowel/o_mid | ||||
after l l/lo-10 | |||||
after (l) l/lo-10 | |||||
before l/ DFT+l/l_o | 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 | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 190 | length 190 | ||||
formants vowel/u_3 | |||||
formants vowel/u_4 | |||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-20+l/l_u | 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 r/2 DFT+vwl_fr/r_u | ||||
before i DFT-50 | |||||
endphoneme | endphoneme | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-20+l/l_u | before l/ DFT-20+l/l_u | ||||
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 | endphoneme | ||||
formants vowel/y_2 | formants vowel/y_2 | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-30+l/l_y | 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 r/2 DFT+vwl_fr/r_y | ||||
before E~ DFT-50 | |||||
endphoneme | endphoneme | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 190 | length 190 | ||||
formants vowel/y# | formants vowel/y# | ||||
after l l/l@-20 | |||||
after (l) l/l@-20 | |||||
before l/ DFT-20+l/l_@ | before l/ DFT-20+l/l_@ | ||||
before (r) DFT+r/xr | |||||
before (r) DFT+vwl_fr/r_@ | |||||
before r/2 DFT+r/xr-40 | before r/2 DFT+r/xr-40 | ||||
endphoneme | endphoneme | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 200 | length 200 | ||||
formants vowel/@_5 | formants vowel/@_5 | ||||
after l l/l@-20 | |||||
after (l) l/l@-20 | |||||
before l/ DFT-20+l/l_@ | 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 | reduceto Y 1 | ||||
endphoneme | endphoneme | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 200 | length 200 | ||||
formants vowel/@_3 | formants vowel/@_3 | ||||
after l l/l@-20 | |||||
after (l) l/l@-20 | |||||
before l/ DFT-20+l/l_@ | before l/ DFT-20+l/l_@ | ||||
before (r) DFT+vwl_fr/r_@ | |||||
before r/2 DFT+vwl_fr/r_@ | before r/2 DFT+vwl_fr/r_@ | ||||
endphoneme | endphoneme | ||||
phoneme wA | phoneme wA | ||||
vowel starttype (o) endtype (a) | vowel starttype (o) endtype (a) | ||||
length 240 | |||||
length 220 | |||||
formants vwl_fr/w_a | formants vwl_fr/w_a | ||||
after l l/lo-10 | |||||
after (l) l/lo-10 | |||||
before l/ DFT-10+l/l_a | 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 | before r/2 DFT+vwl_fr/r_a | ||||
endphoneme | endphoneme | ||||
formants vdiph/yi_fr | formants vdiph/yi_fr | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT+l/l_i | 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 | endphoneme | ||||
phoneme A~ | phoneme A~ | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 210 | length 210 | ||||
formants vnasal/aa_n2 | |||||
before r/2 DFT+r/xr-40 | |||||
formants vnasal/aa_n4 | |||||
before l/ DFT+l/l_a | before l/ DFT+l/l_a | ||||
before (r) DFT+vwl_fr/xr | |||||
before r/2 DFT+r/xr-40 | |||||
endphoneme | endphoneme | ||||
phoneme O~ | phoneme O~ | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 210 | length 210 | ||||
formants vnasal/o_n3 | |||||
// before n2 vowel/o_mid | |||||
formants vnasal/o_n2 | |||||
before (r) DFT+vwl_fr/r_o | |||||
endphoneme | endphoneme | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 210 | length 210 | ||||
formants vnasal/W_n | formants vnasal/W_n | ||||
before (r) DFT+vwl_fr/r_@ | |||||
endphoneme | endphoneme | ||||
formants b/b+x/b%70 | formants b/b+x/b%70 | ||||
before _ b/b_+x/b_ | before _ b/b_+x/b_ | ||||
before l/ 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 _ NULL | ||||
after @ b/xb%50 | after @ b/xb%50 | ||||
lengthmod 5 | lengthmod 5 | ||||
vowelout f1=0 f2=1700 -300 300 f3=-100 80 | vowelout f1=0 f2=1700 -300 300 f3=-100 80 | ||||
formants d/d+x/d%40 | formants d/d+x/d%40 | ||||
before _ d/d_+x/d_%50 | 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 | before r/2 d/dr+x/d%50 | ||||
after _ d/d+x/d%50 | after _ d/d+x/d%50 | ||||
after (@) d/xd | after (@) d/xd | ||||
vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | ||||
formants g/g+x/g2%30 | formants g/g+x/g2%30 | ||||
before _ g/g_+x/g_ | before _ g/g_+x/g_ | ||||
before (r) g/g+x/g2%50 | |||||
after _ NULL | after _ NULL | ||||
after @ g/xg%30 | |||||
after (@) g/xg%30 | |||||
lengthmod 5 | lengthmod 5 | ||||
switchvoicing k | switchvoicing k | ||||
endphoneme | endphoneme | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ustop/k%40 // reduce strength of noise burst | wave ustop/k%40 // reduce strength of noise burst | ||||
before _ ustop/k_ | 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 l/ ustop/kl%45 | before l/ ustop/kl%45 | ||||
before (i) ustop/ki%45 | before (i) ustop/ki%45 | ||||
phoneme l | phoneme l | ||||
liquid | |||||
liquid starttype (l) endtype (l) | |||||
vowelout f1=1 f2=1600 -300 300 f3=100 80 brk | vowelout f1=1 f2=1600 -300 300 f3=100 80 brk | ||||
length 100 | length 100 | ||||
lengthmod 7 | lengthmod 7 | ||||
phoneme l/ // used for [l] when not before a vowel | phoneme l/ // used for [l] when not before a vowel | ||||
liquid | |||||
liquid starttype (l) endtype (l) | |||||
length 100 | length 100 | ||||
lengthmod 7 | lengthmod 7 | ||||
formants l/l_ | formants l/l_ | ||||
phoneme p | phoneme p | ||||
vls blb stop | vls blb stop | ||||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | 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 | lengthmod 2 | ||||
wave ustop/p%50 | wave ustop/p%50 | ||||
after _ ustop/p%70 | after _ ustop/p%70 | ||||
before _ ustop/p_%70 | before _ ustop/p_%70 | ||||
before R ustop/pr%30 | |||||
before (r) ustop/pr%35 | |||||
before @- ustop/p_unasp%60 | before @- ustop/p_unasp%60 | ||||
before l ustop/pl%30 | before l ustop/pl%30 | ||||
before l/ ustop/pl%30 | before l/ ustop/pl%30 | ||||
phoneme r | 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 | length 100 | ||||
lengthmod 7 | lengthmod 7 | ||||
beforenotvowel r/2 | 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 | endphoneme | ||||
phoneme r2 // silent unless followed by vowel | 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 | length 100 | ||||
lengthmod 7 | lengthmod 7 | ||||
beforenotvowel NULL | 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 | endphoneme | ||||
phoneme r/2 // variant of [r] when not preceding a vowel | phoneme r/2 // variant of [r] when not preceding a vowel | ||||
liquid | liquid | ||||
vowelout f1=2 f2=1800 -200 200 f3=-200 80 brk | |||||
vowelout f1=2 f2=1800 10 10 f3=-200 100 | |||||
length 100 | length 100 | ||||
lengthmod 2 | lengthmod 2 | ||||
formants r3/r_2+r3/rx%20 | |||||
formants r3/r_2+r3/rx%25 | |||||
before n r3/r_n | before n r3/r_n | ||||
beforevowel r | beforevowel r | ||||
endphoneme | endphoneme | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ustop/t_short%40 | wave ustop/t_short%40 | ||||
before _ ustop/t_%40 | before _ ustop/t_%40 | ||||
before R ustop/t_short%50 | |||||
before (r) ustop/t_short%60 | |||||
before r/2 ustop/t_short%50 | before r/2 ustop/t_short%50 | ||||
switchvoicing d | switchvoicing d | ||||
endphoneme | endphoneme | ||||
phoneme v | phoneme v | ||||
vcd lbd frc | 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 | lengthmod 6 | ||||
formants voc/v+vocw/v%75 | 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 | before _ voc/v_+vocw/v | ||||
switchvoicing f | switchvoicing f | ||||
endphoneme | endphoneme | ||||
include ph_nepali | include ph_nepali | ||||
phonemetable mr hi | phonemetable mr hi | ||||
include ph_mathari | |||||
include ph_marathi | |||||
phonemetable om base | phonemetable om base | ||||
include ph_oromo | include ph_oromo | ||||
phonemetable eu base2 | phonemetable eu base2 | ||||
include ph_basque | include ph_basque | ||||
phonemetable da base | |||||
include ph_danish | |||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\klatt.cpp | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\numbers.cpp | SOURCE=.\src\numbers.cpp | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\tr_english.cpp | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\tr_languages.cpp | SOURCE=.\src\tr_languages.cpp | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\klatt.h | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\phoneme.h | SOURCE=.\src\phoneme.h | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File |
} | } | ||||
spectseq->Load(stream); | 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); | displ = ftell(f_phdata); | ||||
// write: peak data | // write: peak data | ||||
count_frames++; | 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); | fr_out->fheight[peak] = int(pkheight); | ||||
if(peak < 6) | 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; | if(x > 255) x = 255; | ||||
fr_out->fwidth[peak] = x; | 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(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++; | n_frames++; |
// Another window to the left of the client window | // Another window to the left of the client window | ||||
win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, | win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, | ||||
wxDefaultPosition, wxSize(200, 30), | |||||
wxDefaultPosition, wxSize(298, 30), | |||||
wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); | wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); | ||||
win->SetDefaultSize(wxSize(212, 1000)); | |||||
win->SetDefaultSize(wxSize(310, 1000)); | |||||
win->SetOrientation(wxLAYOUT_VERTICAL); | win->SetOrientation(wxLAYOUT_VERTICAL); | ||||
win->SetAlignment(wxLAYOUT_LEFT); | win->SetAlignment(wxLAYOUT_LEFT); | ||||
// win->SetBackgroundColour(wxColour(0, 255, 255)); | // win->SetBackgroundColour(wxColour(0, 255, 255)); |
xplace = 28; | xplace = 28; | ||||
id = 201; | id = 201; | ||||
new wxStaticText(this,-1,_T("Formants"),wxPoint(4,5)); | 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); | string.Printf(_T("%d"),ix); | ||||
t_labpk[ix] = new wxStaticText(this,id++,string, | t_labpk[ix] = new wxStaticText(this,id++,string, | ||||
wxPoint(xplace-22,y+1+24*ix)); | 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(""), | 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_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | ||||
t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(57,y+8)); | |||||
t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(100,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(151,y+8)); | |||||
t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(61,y+8)); | |||||
t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(104,y+0), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(159,y+8)); | |||||
y += 40; | |||||
s_klatt[KLATT_AV] = new wxSpinCtrl(this,T_AV,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_AV] = new wxStaticText(this,-1,_T("AV"),wxPoint(61,y+4)); | |||||
s_klatt[KLATT_FNZ] = new wxSpinCtrl(this,T_FNZ,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_FNZ] = new wxStaticText(this,-1,_T("FNZ"),wxPoint(159,y+4)); | |||||
s_klatt[KLATT_AV] = new wxSpinCtrl(this,T_AV,_T(""), wxPoint(6,y+32), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_AV] = new wxStaticText(this,-1,_T("AV"),wxPoint(61,y+36)); | |||||
s_klatt[KLATT_AVp] = new wxSpinCtrl(this,T_AVP,_T(""), wxPoint(100,y+32), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_AVp] = new wxStaticText(this,-1,_T("AVp"),wxPoint(155,y+36)); | |||||
y += 28; | |||||
s_klatt[KLATT_Tilt] = new wxSpinCtrl(this,T_TILT,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Tilt] = new wxStaticText(this,-1,_T("Tilt"),wxPoint(61,y+4)); | |||||
s_klatt[KLATT_Fric] = new wxSpinCtrl(this,T_FRIC,_T(""), wxPoint(6,y+60), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Fric] = new wxStaticText(this,-1,_T("Fric"),wxPoint(61,y+64)); | |||||
s_klatt[KLATT_FricBP] = new wxSpinCtrl(this,T_FRICBP,_T(""), wxPoint(100,y+60), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_FricBP] = new wxStaticText(this,-1,_T("FricBP"),wxPoint(155,y+64)); | |||||
s_klatt[KLATT_Aspr] = new wxSpinCtrl(this,T_ASPR,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Aspr] = new wxStaticText(this,-1,_T("Aspr"),wxPoint(159,y+4)); | |||||
s_klatt[KLATT_Aspr] = new wxSpinCtrl(this,T_ASPR,_T(""), wxPoint(6,y+88), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Aspr] = new wxStaticText(this,-1,_T("Aspr"),wxPoint(61,y+92)); | |||||
s_klatt[KLATT_Turb] = new wxSpinCtrl(this,T_TURB,_T(""), wxPoint(100,y+88), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Turb] = new wxStaticText(this,-1,_T("Turb"),wxPoint(155,y+92)); | |||||
s_klatt[KLATT_Skew] = new wxSpinCtrl(this,T_SKEW,_T(""), wxPoint(202,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Skew] = new wxStaticText(this,-1,_T("Skew"),wxPoint(257,y+4)); | |||||
s_klatt[KLATT_Skew] = new wxSpinCtrl(this,T_SKEW,_T(""), wxPoint(6,y+116), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Skew] = new wxStaticText(this,-1,_T("Skew"),wxPoint(61,y+120)); | |||||
s_klatt[KLATT_Tilt] = new wxSpinCtrl(this,T_TILT,_T(""), wxPoint(100,y+116), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Tilt] = new wxStaticText(this,-1,_T("Tilt"),wxPoint(155,y+120)); | |||||
y += 28; | |||||
s_klatt[KLATT_AVp] = new wxSpinCtrl(this,T_AVP,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_AVp] = new wxStaticText(this,-1,_T("AVp"),wxPoint(61,y+4)); | |||||
s_klatt[KLATT_Fric] = new wxSpinCtrl(this,T_FRIC,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Fric] = new wxStaticText(this,-1,_T("Fric"),wxPoint(159,y+4)); | |||||
s_klatt[KLATT_FricBP] = new wxSpinCtrl(this,T_FRICBP,_T(""), wxPoint(202,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_FricBP] = new wxStaticText(this,-1,_T("FricBP"),wxPoint(257,y+4)); | |||||
y += 28; | |||||
s_klatt[KLATT_Kopen] = new wxSpinCtrl(this,T_KOPEN,_T(""), wxPoint(6,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Kopen] = new wxStaticText(this,-1,_T("kopen"),wxPoint(61,y+4)); | |||||
s_klatt[KLATT_Turb] = new wxSpinCtrl(this,T_TURB,_T(""), wxPoint(104,y), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Turb] = new wxStaticText(this,-1,_T("Turb"),wxPoint(159,y+4)); | |||||
s_klatt[KLATT_Kopen] = new wxSpinCtrl(this,T_KOPEN,_T(""), wxPoint(6,y+144), wxSize(52,24), wxTE_CENTRE,0,500); | |||||
t_klatt[KLATT_Kopen] = new wxStaticText(this,-1,_T("kopen"),wxPoint(61,y+148)); | |||||
t_zoomout = new wxButton(this,T_ZOOMOUT,_T("Zoom-"),wxPoint(16,420)); | t_zoomout = new wxButton(this,T_ZOOMOUT,_T("Zoom-"),wxPoint(16,420)); | ||||
t_pitch = new wxStaticText(this,-1,_T(""),wxPoint(4,520),wxSize(192,24)); | 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 = new ByteGraph(this,wxPoint(0,538),wxSize(200,140)); | ||||
pitchgraph->SetData(128,env_fall); | pitchgraph->SetData(128,env_fall); | ||||
pitchgraph->ShowSpectrum(1); | pitchgraph->ShowSpectrum(1); | ||||
} | } | ||||
void FormantDlg::HideFields(int synth_type) | |||||
{//======================================= | |||||
void FormantDlg::GetValues(SpectSeq *spectseq, int frame) | |||||
{//====================================================== | |||||
int ix; | 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) | void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) | ||||
SpectFrame *sf; | SpectFrame *sf; | ||||
wxString value; | wxString value; | ||||
int original_mS; | int original_mS; | ||||
peak_t *peak; | |||||
if(spectseq->frames == NULL) | if(spectseq->frames == NULL) | ||||
return; | return; | ||||
sf = spectseq->frames[frame]; | sf = spectseq->frames[frame]; | ||||
HideFields(spectseq->synthesizer_type); | |||||
if(field == 0xff) | if(field == 0xff) | ||||
{ | { | ||||
// indicate the selected peak | // indicate the selected peak | ||||
// t_select_peak[pk]->SetValue(TRUE); | // t_select_peak[pk]->SetValue(TRUE); | ||||
} | } | ||||
for(ix=0; ix<N_PEAKS; ix++) | |||||
for(ix=0; ix < 8; ix++) | |||||
{ | { | ||||
if(field != 0xff && pk!=ix) | if(field != 0xff && pk!=ix) | ||||
continue; | continue; | ||||
t_labpk[ix]->SetLabel(value); | 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); | value.Printf(_T("%4d"),sf->peaks[ix].pkfreq); | ||||
t_pkfreq[ix]->SetValue(value); | t_pkfreq[ix]->SetValue(value); | ||||
value.Printf(_T("%3d"),sf->peaks[ix].pkheight >> 6); | value.Printf(_T("%3d"),sf->peaks[ix].pkheight >> 6); | ||||
t_pkheight[ix]->SetValue(value); | 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); | 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); | |||||
} | |||||
} | } | ||||
} | } | ||||
value.Printf(_T("%3d"),sf->amp_adjust); | value.Printf(_T("%3d"),sf->amp_adjust); | ||||
t_ampframe->SetValue(value); | 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 | } // end of FormantDlg::ShowFrame | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <math.h> | #include <math.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "klatt.h" | |||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
#include "speech.h" | #include "speech.h" | ||||
#include "klatt.h" | |||||
#include "phoneme.h" | #include "phoneme.h" | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "voice.h" | #include "voice.h" | ||||
extern voice_t *wvoice; | extern voice_t *wvoice; | ||||
static wavegen_peaks_t peaks[N_PEAKS]; | |||||
static klatt_peaks_t peaks[N_PEAKS]; | |||||
static int end_wave; | static int end_wave; | ||||
static int klattp[N_KLATTP]; | static int klattp[N_KLATTP]; | ||||
static double klattp1[N_KLATTP]; | static double klattp1[N_KLATTP]; | ||||
{ | { | ||||
kt_frame.F0hz10 = (wdata.pitch * 10) / 4096; | 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() | // formants F6,F7,F8 are fixed values for cascade resonators, set in KlattInit() | ||||
// but F6 is used for parallel resonator | // 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]; | kt_frame.AVdb = klattp[KLATT_AV]; | ||||
{ | { | ||||
peaks[pk].freq1 += peaks[pk].freq_inc; | peaks[pk].freq1 += peaks[pk].freq_inc; | ||||
peaks[pk].freq = (int)peaks[pk].freq1; | 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++) | for(ix=0; ix < N_KLATTP; ix++) | ||||
{ | { | ||||
klattp1[ix] += klattp_inc[ix]; | klattp1[ix] += klattp_inc[ix]; | ||||
klattp[ix] = int(klattp1[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 | // advance the pitch | ||||
wdata.pitch_ix += wdata.pitch_inc; | wdata.pitch_ix += wdata.pitch_inc; | ||||
if((ix = wdata.pitch_ix>>8) > 127) ix = 127; | if((ix = wdata.pitch_ix>>8) > 127) ix = 127; | ||||
for(ix=0; ix<N_KLATTP; ix++) | 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; | 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].freq1 = (fr1->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix]; | ||||
peaks[ix].freq = int(peaks[ix].freq1); | peaks[ix].freq = int(peaks[ix].freq1); | ||||
next = (fr2->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix]; | next = (fr2->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix]; | ||||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * STEPSIZE) / length; // lower headroom for fixed point math | |||||
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * STEPSIZE) / length; | |||||
peaks[ix].height1 = fr1->fheight[ix] * 2; | |||||
peaks[ix].height = int(peaks[ix].height1); | |||||
next = fr2->fheight[ix] * 2; | |||||
peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length; | |||||
if(ix < 4) | |||||
{ | |||||
// klatt bandwidth for f1, f2, f3 (others are fixed) | |||||
peaks[ix].bw1 = fr1->bw[ix] * 2; | |||||
peaks[ix].bw = int(peaks[ix].bw1); | |||||
next = fr2->bw[ix] * 2; | |||||
peaks[ix].bw_inc = ((next - peaks[ix].bw1) * STEPSIZE) / length; | |||||
} | |||||
} | |||||
if(ix < 6) | |||||
// nasal zero frequency | |||||
peaks[0].freq1 = fr1->klattp[KLATT_FNZ] * 2; | |||||
peaks[0].freq = int(peaks[0].freq1); | |||||
next = fr2->klattp[KLATT_FNZ] * 2; | |||||
peaks[0].freq_inc = ((next - peaks[0].freq1) * STEPSIZE) / length; | |||||
peaks[0].bw1 = 89; | |||||
peaks[0].bw = 89; | |||||
peaks[0].bw_inc = 0; | |||||
if(fr1->frflags & FRFLAG_KLATT) | |||||
{ | |||||
// the frame contains additional parameters for parallel resonators | |||||
for(ix=1; ix < 7; ix++) | |||||
{ | { | ||||
peaks[ix].left1 = fr1->fwidth[ix] * 2; | |||||
peaks[ix].left = int(peaks[ix].left1); | |||||
next = fr2->fwidth[ix] * 2; | |||||
peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length; | |||||
peaks[ix].right1 = fr1->fright[ix]; | |||||
peaks[ix].right = int(peaks[ix].right1); | |||||
next = fr2->fright[ix]; | |||||
peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length; | |||||
peaks[ix].bp1 = fr1->klatt_bp[ix] * 4; // parallel bandwidth | |||||
peaks[ix].bp = int(peaks[ix].bp1); | |||||
next = fr2->klatt_bp[ix] * 2; | |||||
peaks[ix].bp_inc = ((next - peaks[ix].bp1) * STEPSIZE) / length; | |||||
peaks[ix].ap1 = fr1->klatt_ap[ix]; // parallal amplitude | |||||
peaks[ix].ap = int(peaks[ix].ap1); | |||||
next = fr2->klatt_ap[ix] * 2; | |||||
peaks[ix].ap_inc = ((next - peaks[ix].ap1) * STEPSIZE) / length; | |||||
} | } | ||||
peaks[6].left1 = fr1->fwidth6 * 2; | |||||
peaks[6].left = int(peaks[6].left1); | |||||
next = fr2->fwidth6 * 2; | |||||
peaks[6].left_inc = ((next - peaks[6].left1) * STEPSIZE) / length; | |||||
peaks[6].right1 = fr1->fright6; | |||||
peaks[6].right = int(peaks[6].right1); | |||||
next = fr2->fright6; | |||||
peaks[6].right_inc = ((next - peaks[6].right1) * STEPSIZE) / length; | |||||
} | } | ||||
} // end of SetSynth_Klatt | } // end of SetSynth_Klatt | ||||
kt_frame.Kskew = 0; | kt_frame.Kskew = 0; | ||||
kt_frame.AB = 0; | kt_frame.AB = 0; | ||||
kt_frame.AVpdb = 0; | kt_frame.AVpdb = 0; | ||||
kt_frame.Gain0 = 62; | |||||
kt_frame.Gain0 = 60; // 62 | |||||
} // end of KlattInit | } // end of KlattInit | ||||
#endif // INCLUDE_KLATT | #endif // INCLUDE_KLATT |
/* Structure for Klatt Parameters */ | /* Structure for Klatt Parameters */ | ||||
#define F_NP 0 // nasal zero formant | |||||
#define F_NZ 0 // nasal zero formant | |||||
#define F1 1 | #define F1 1 | ||||
#define F2 2 | #define F2 2 | ||||
#define F3 3 | #define F3 3 | ||||
#define F4 4 | #define F4 4 | ||||
#define F5 5 | #define F5 5 | ||||
#define F6 6 | #define F6 6 | ||||
#define F_NZ 9 // nasal pole formant | |||||
#define F_NP 9 // nasal pole formant | |||||
typedef struct | typedef struct | ||||
} klatt_frame_t, *klatt_frame_ptr; | } 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; | |||||
value = this_value = atoi(word); | value = this_value = atoi(word); | ||||
ph_ordinal2[0] = 0; | 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 number is indicated by dot after the number | ||||
ordinal = 2; | ordinal = 2; |
}; | }; | ||||
int optind; | int optind; | ||||
static int optional_argument; | 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=""; | static char *opt_string=""; | ||||
#define no_argument 0 | #define no_argument 0 | ||||
#define required_argument 1 | #define required_argument 1 | ||||
#else | #else | ||||
while(true) | 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); | long_options, &option_index); | ||||
/* Detect the end of the options. */ | /* Detect the end of the options. */ |
ep->type = (espeak_EVENT_TYPE)type; | ep->type = (espeak_EVENT_TYPE)type; | ||||
ep->unique_identifier = my_unique_identifier; | ep->unique_identifier = my_unique_identifier; | ||||
ep->user_data = my_user_data; | ep->user_data = my_user_data; | ||||
ep->text_position = char_position & 0xffff; | |||||
ep->text_position = char_position & 0xffffff; | |||||
ep->length = char_position >> 24; | ep->length = char_position >> 24; | ||||
time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; | time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; |
{200,500,1200,3000,3500,4000,6900,7800,9000}; | {200,500,1200,3000,3500,4000,6900,7800,9000}; | ||||
static int default_width[N_PEAKS] = | static int default_width[N_PEAKS] = | ||||
{750,500,550,550,600,700,700,700,700}; | {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) | float SpectTilt(int value, int freq) | ||||
{//================================= | {//================================= | ||||
peaks[ix].pkheight = 0; | peaks[ix].pkheight = 0; | ||||
peaks[ix].pkwidth = default_width[ix]; | peaks[ix].pkwidth = default_width[ix]; | ||||
peaks[ix].pkright = 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) | if(copy != NULL) | ||||
{ | { | ||||
*this = *copy; | *this = *copy; | ||||
int SpectFrame::Import(wxInputStream& stream1) | int SpectFrame::Import(wxInputStream& stream1) | ||||
{//========================================== | {//========================================== | ||||
// Import Pratt analysis data | |||||
int ix; | int ix; | ||||
double x; | double x; | ||||
unsigned short *spect_data; | unsigned short *spect_data; | ||||
synthesizer_type = 0; | |||||
wxTextInputStream stream(stream1); | wxTextInputStream stream(stream1); | ||||
stream >> time; | stream >> time; | ||||
int SpectFrame::Load(wxInputStream& stream, int synth_type) | |||||
{//======================================================== | |||||
int SpectFrame::Load(wxInputStream& stream, int file_format_type) | |||||
{//============================================================== | |||||
int ix; | int ix; | ||||
int x; | int x; | ||||
unsigned short *spect_data; | unsigned short *spect_data; | ||||
synthesizer_type = synth_type; | |||||
file_format = file_format_type; | |||||
wxDataInputStream s(stream); | wxDataInputStream s(stream); | ||||
time = s.ReadDouble(); | time = s.ReadDouble(); | ||||
markers = s.Read16(); | markers = s.Read16(); | ||||
amp_adjust = s.Read16(); | amp_adjust = s.Read16(); | ||||
if(file_format == 2) | |||||
{ | |||||
s.Read16(); // spare | |||||
s.Read16(); // spare | |||||
} | |||||
for(ix=0; ix<N_PEAKS; ix++) | for(ix=0; ix<N_PEAKS; ix++) | ||||
{ | { | ||||
formants[ix].freq = s.Read16(); | formants[ix].freq = s.Read16(); | ||||
keyframe = 1; | keyframe = 1; | ||||
peaks[ix].pkwidth = s.Read16(); | peaks[ix].pkwidth = s.Read16(); | ||||
peaks[ix].pkright = 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(); | klatt_param[ix] = s.Read16(); | ||||
} | } | ||||
s.Write16(markers); | s.Write16(markers); | ||||
s.Write16(amp_adjust); | s.Write16(amp_adjust); | ||||
if(file_format == 2) | |||||
{ | |||||
s.Write16(0); // spare | |||||
s.Write16(0); // spare | |||||
} | |||||
for(ix=0; ix<N_PEAKS; ix++) | for(ix=0; ix<N_PEAKS; ix++) | ||||
{ | { | ||||
s.Write16(formants[ix].freq); | s.Write16(formants[ix].freq); | ||||
s.Write16(keyframe ? peaks[ix].pkheight : 0); | s.Write16(keyframe ? peaks[ix].pkheight : 0); | ||||
s.Write16(peaks[ix].pkwidth); | s.Write16(peaks[ix].pkwidth); | ||||
s.Write16(peaks[ix].pkright); | 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]); | s.Write16(klatt_param[ix]); | ||||
} | } | ||||
if((pk->pkfreq == 0) || (pk->pkheight==0)) continue; | 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); | x1 = (int)(pk->pkfreq*scale_x); | ||||
x2 = (int)((pk->pkfreq + pkright)*scale_x); | x2 = (int)((pk->pkfreq + pkright)*scale_x); | ||||
int bw; | int bw; | ||||
int bw3; | int bw3; | ||||
synthesizer_type = 1; | |||||
klatt_param[KLATT_AV] = 59; | klatt_param[KLATT_AV] = 59; | ||||
klatt_param[KLATT_AVp] = 0; | klatt_param[KLATT_AVp] = 0; | ||||
klatt_param[KLATT_Fric] = 0; | klatt_param[KLATT_Fric] = 0; | ||||
klatt_param[KLATT_Skew] = 0; | klatt_param[KLATT_Skew] = 0; | ||||
klatt_param[KLATT_Tilt] = 0; | klatt_param[KLATT_Tilt] = 0; | ||||
klatt_param[KLATT_Kopen] = 40; | klatt_param[KLATT_Kopen] = 40; | ||||
klatt_param[KLATT_spare1] = 0; | |||||
klatt_param[KLATT_FNZ] = 280; | |||||
bw = 60; | bw = 60; | ||||
if(peaks[1].pkfreq < 400) | if(peaks[1].pkfreq < 400) |
#define T_SKEW 318 | #define T_SKEW 318 | ||||
#define T_TILT 319 | #define T_TILT 319 | ||||
#define T_KOPEN 320 | #define T_KOPEN 320 | ||||
#define T_FNZ 321 | |||||
#define FILEID1_SPECTSEQ 0x43455053 | #define FILEID1_SPECTSEQ 0x43455053 | ||||
#define FILEID2_SPECTSEQ 0x51455354 // for eSpeak sequence | #define FILEID2_SPECTSEQ 0x51455354 // for eSpeak sequence | ||||
#define FILEID2_SPECTSEK 0x4b455354 // for Klatt 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 | #define FILEID1_SPC2 0x32435053 // an old format for spectrum files | ||||
} PitchEnvelope; | } PitchEnvelope; | ||||
typedef struct { | typedef struct { | ||||
short freq; | |||||
short bandw; | |||||
short freq; | |||||
short bandw; | |||||
} formant_t; | } 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 | // Old "SPC2" format | ||||
~SpectFrame(); | ~SpectFrame(); | ||||
int Import(wxInputStream &stream); | int Import(wxInputStream &stream); | ||||
int ImportSPC2(wxInputStream &stream, float &time_acc); | 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); | int Save(wxOutputStream &stream); | ||||
void Draw(wxDC &dc, int offy, int frame_width, double scalex, double scaley); | void Draw(wxDC &dc, int offy, int frame_width, double scalex, double scaley); | ||||
int nx; | int nx; | ||||
int markers; | int markers; | ||||
int max_y; | 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' | 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 | formant_t formants[N_PEAKS]; // this is just the estimate given by Praat | ||||
peak_t peaks[N_PEAKS]; | peak_t peaks[N_PEAKS]; | ||||
float GetKeyedLength(); | float GetKeyedLength(); | ||||
void SetFrameLengths(); | void SetFrameLengths(); | ||||
void ConstructVowel(void); | void ConstructVowel(void); | ||||
void SetKlattDefaults(void); | |||||
int numframes; | int numframes; | ||||
int amplitude; | int amplitude; | ||||
int bass_reduction; | int bass_reduction; | ||||
int max_x; | int max_x; | ||||
int max_y; | int max_y; | ||||
int synthesizer_type; | |||||
int file_format; | |||||
private: | private: | ||||
public: | public: | ||||
FormantDlg(wxWindow *parent); | FormantDlg(wxWindow *parent); | ||||
void ShowFrame(SpectSeq *spectseq, int frame, int pk, int field); | void ShowFrame(SpectSeq *spectseq, int frame, int pk, int field); | ||||
void GetValues(SpectSeq *spectseq, int frame); | |||||
void OnCommand(wxCommandEvent& event); | void OnCommand(wxCommandEvent& event); | ||||
void OnSpin(wxSpinEvent& event); | void OnSpin(wxSpinEvent& event); | ||||
void HideFields(int synth_type); | void HideFields(int synth_type); | ||||
wxTextCtrl *t_pkfreq[N_PEAKS]; | wxTextCtrl *t_pkfreq[N_PEAKS]; | ||||
wxTextCtrl *t_pkheight[N_PEAKS]; | wxTextCtrl *t_pkheight[N_PEAKS]; | ||||
wxTextCtrl *t_pkwidth[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]; | wxRadioButton *t_select_peak[N_PEAKS]; | ||||
wxButton *t_zoomout; | wxButton *t_zoomout; |
sf->amp_adjust = formantdlg->t_ampframe->GetValue(); | sf->amp_adjust = formantdlg->t_ampframe->GetValue(); | ||||
sf->length_adjust = formantdlg->t_timeframe->GetValue() - spectseq->GetFrameLength(sframe,0,NULL); | 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(); | sf->klatt_param[ix] = formantdlg->s_klatt[ix]->GetValue(); | ||||
} | } | ||||
case WXK_NEXT: | case WXK_NEXT: | ||||
if(sframe < spectseq->numframes-1) | if(sframe < spectseq->numframes-1) | ||||
{ | { | ||||
formantdlg->GetValues(spectseq, sframe); | |||||
spectseq->SelectAll(0); | spectseq->SelectAll(0); | ||||
sframe++; | sframe++; | ||||
spectseq->frames[sframe]->selected = 1; | spectseq->frames[sframe]->selected = 1; | ||||
case WXK_PRIOR: | case WXK_PRIOR: | ||||
if(sframe > 0) | if(sframe > 0) | ||||
{ | { | ||||
formantdlg->GetValues(spectseq, sframe); | |||||
spectseq->SelectAll(0); | spectseq->SelectAll(0); | ||||
sframe--; | sframe--; | ||||
spectseq->frames[sframe]->selected = 1; | spectseq->frames[sframe]->selected = 1; | ||||
if(event.ControlDown()) | if(event.ControlDown()) | ||||
{ | { | ||||
// CTRL, rotate, make right slope steeper | // CTRL, rotate, make right slope steeper | ||||
if(spectseq->synthesizer_type==0) | |||||
if(pk_num < 3) | |||||
{ | |||||
pk->pkright-= 5; | pk->pkright-= 5; | ||||
pk->pkwidth += 5; | |||||
pk->pkwidth += 5; | |||||
} | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(spectseq->synthesizer_type==0) | |||||
pk->pkright -= 10; | |||||
pk->pkright -= 10; | |||||
pk->pkwidth -= 10; | pk->pkwidth -= 10; | ||||
if(pk->pkright < 0) | if(pk->pkright < 0) | ||||
pk->pkright = 0; | pk->pkright = 0; | ||||
if(event.ControlDown()) | if(event.ControlDown()) | ||||
{ | { | ||||
// CTRL: rotate, make left slope steeper | // CTRL: rotate, make left slope steeper | ||||
if(spectseq->synthesizer_type==0) | |||||
if(pk_num < 3) | |||||
{ | |||||
pk->pkright += 5; | pk->pkright += 5; | ||||
pk->pkwidth -= 5; | |||||
pk->pkwidth -= 5; | |||||
} | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(spectseq->synthesizer_type==0) | |||||
pk->pkright += 10; | |||||
pk->pkright += 10; | |||||
pk->pkwidth += 10; | pk->pkwidth += 10; | ||||
} | } | ||||
field = 4; | field = 4; | ||||
break; | break; | ||||
case '<': // width-- | case '<': // width-- | ||||
if(spectseq->synthesizer_type==0) | |||||
pk->pkright -= 2; | |||||
pk->pkright -= 2; | |||||
pk->pkwidth -= 2; | pk->pkwidth -= 2; | ||||
if(pk->pkwidth < 0) | if(pk->pkwidth < 0) | ||||
pk->pkwidth = 0; | pk->pkwidth = 0; | ||||
break; | break; | ||||
case '>': // width++ | case '>': // width++ | ||||
if(spectseq->synthesizer_type==0) | |||||
pk->pkright += 2; | |||||
pk->pkright += 2; | |||||
pk->pkwidth += 2; | pk->pkwidth += 2; | ||||
display = 1; | display = 1; | ||||
field = 4; | field = 4; | ||||
break; | break; | ||||
case 0x104b: // CTRL-K | case 0x104b: // CTRL-K | ||||
spectseq->SetKlattDefaults(); | |||||
display = 3; | |||||
// spectseq->SetKlattDefaults(); | |||||
// display = 3; | |||||
break; | break; | ||||
case 0x104d: // CTRL-M | case 0x104d: // CTRL-M | ||||
sf = spectseq->frames[sframe]; | sf = spectseq->frames[sframe]; | ||||
pk = &sf->peaks[pk_num]; | 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; | |||||
} | } | ||||
} | } | ||||
if(frame < spectseq->numframes) | if(frame < spectseq->numframes) | ||||
{ | { | ||||
formantdlg->GetValues(spectseq,sframe); | |||||
if(sframe != frame) | if(sframe != frame) | ||||
formantdlg->ShowFrame(spectseq,frame,pk_num,0xff); | formantdlg->ShowFrame(spectseq,frame,pk_num,0xff); | ||||
max_x = 3000; | max_x = 3000; | ||||
max_y = 1; | max_y = 1; | ||||
synthesizer_type = 0; | |||||
file_format = 0; | |||||
} | } | ||||
SpectSeq::~SpectSeq() | SpectSeq::~SpectSeq() | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(frame->Load(stream, synthesizer_type) != 0) break; | |||||
if(frame->Load(stream, file_format) != 0) break; | |||||
} | } | ||||
frames[numframes++] = frame; | frames[numframes++] = frame; | ||||
int SpectSeq::Import(wxInputStream& stream) | int SpectSeq::Import(wxInputStream& stream) | ||||
{//======================================== | {//======================================== | ||||
// Import data from Pratt analysis | |||||
int n = 0; | int n = 0; | ||||
else | else | ||||
if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEQ)) | if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEQ)) | ||||
{ | { | ||||
synthesizer_type = 0; // eSpeak formants | |||||
file_format = 0; // eSpeak formants | |||||
} | } | ||||
else | else | ||||
if((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEK)) | 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 | else | ||||
{ | { | ||||
wxDataOutputStream s(stream); | wxDataOutputStream s(stream); | ||||
s.Write32(FILEID1_SPECTSEQ); | s.Write32(FILEID1_SPECTSEQ); | ||||
if(synthesizer_type == 1) | |||||
if(file_format == 2) | |||||
s.Write32(FILEID2_SPECTSQ2); | |||||
if(file_format == 1) | |||||
s.Write32(FILEID2_SPECTSEK); | s.Write32(FILEID2_SPECTSEK); | ||||
else | else | ||||
s.Write32(FILEID2_SPECTSEQ); | s.Write32(FILEID2_SPECTSEQ); | ||||
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) | void SpectSeq::ConstructVowel(void) | ||||
{//================================ | {//================================ | ||||
memcpy(peaks,sp->peaks,sizeof(*peaks)*N_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 | } // end of ApplyAmp_adjust | ||||
void PeaksToFrame(SpectFrame *sp1, peak_t *pks, frame_t *fr) | void PeaksToFrame(SpectFrame *sp1, peak_t *pks, frame_t *fr) | ||||
{//========================================================= | {//========================================================= | ||||
int ix; | 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) | 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; | x = 255; | ||||
fr->fwidth[ix] = x; | 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; | |||||
} | |||||
} | } | ||||
} | } | ||||
PeaksToFrame(sp2,pks2,&fr2); | PeaksToFrame(sp2,pks2,&fr2); | ||||
#ifdef KLATT_TEST | #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 | #endif | ||||
{ | { | ||||
SetSynth((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice); // convert mS to samples | SetSynth((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice); // convert mS to samples | ||||
peak_t peaks0[N_PEAKS]; | peak_t peaks0[N_PEAKS]; | ||||
peak_t peaks1[N_PEAKS]; | peak_t peaks1[N_PEAKS]; | ||||
peak_t peaks2[N_PEAKS]; | peak_t peaks2[N_PEAKS]; | ||||
int synthesizer_type = 0; | |||||
#ifdef KLATT_TEST | #ifdef KLATT_TEST | ||||
KlattInit(); | KlattInit(); | ||||
int ipitch; | int ipitch; | ||||
int pbase; | int pbase; | ||||
char *fname_speech; | char *fname_speech; | ||||
int synthesizer_type = 0; | |||||
#ifdef KLATT_TEST | #ifdef KLATT_TEST | ||||
KlattInit(); | KlattInit(); |
#include <sys/types.h> | #include <sys/types.h> | ||||
// conditional compilation options | // conditional compilation options | ||||
//#define INCLUDE_KLATT | |||||
#define INCLUDE_KLATT | |||||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | #if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | ||||
#define ARCH_BIG | #define ARCH_BIG |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | int option_device_number = -1; | ||||
849,851,853,856,858,861,863,865,868,870,872,875,877,879,882,884, | 849,851,853,856,858,861,863,865,868,870,872,875,877,879,882,884, | ||||
886,889,891,893,896,898,900,902}; | 886,889,891,893,896,898,900,902}; | ||||
if(fr->frflags & FRFLAG_KLATT) | |||||
if(voice->klattv[0]) | |||||
{ | { | ||||
if(new_rms == -1) | if(new_rms == -1) | ||||
{ | { | ||||
x = sqrt_tab[x]; // sqrt(new_rms/fr->rms)*0x200; | 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; | h = fr->fheight[ix] * x; | ||||
fr->fheight[ix] = h/0x200; | fr->fheight[ix] = h/0x200; | ||||
int ix; | int ix; | ||||
int x; | int x; | ||||
if(fr->frflags & FRFLAG_KLATT) | |||||
if(voice->klattv[0]) | |||||
return; | return; | ||||
for(ix=2; ix<N_PEAKS; ix++) | |||||
for(ix=2; ix < 8; ix++) | |||||
{ | { | ||||
x = fr->fheight[ix] * level; | x = fr->fheight[ix] * level; | ||||
fr->fheight[ix] = x/100; | fr->fheight[ix] = x/100; | ||||
next_rms = seq[1].frame->rms; | 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 | fr->klattp[KLATT_AV] = 53; // reduce the amplituide of the start of a vowel | ||||
} | } | ||||
q = wcmdq[syllable_centre]; | q = wcmdq[syllable_centre]; | ||||
frame_centre = (frame_t *)q[2]; | frame_centre = (frame_t *)q[2]; | ||||
//if(frame_centre->frflags & FRFLAG_KLATT) | |||||
// return; // TESTING | |||||
// backwards | // backwards | ||||
ix = syllable_centre -1; | ix = syllable_centre -1; | ||||
frame = frame2 = frame_centre; | frame = frame2 = frame_centre; | ||||
frame1 = frames[0].frame; | frame1 = frames[0].frame; | ||||
frame1_length = frames[0].length; | frame1_length = frames[0].length; | ||||
if(frame1->frflags & FRFLAG_KLATT) | |||||
if(voice->klattv[0]) | |||||
wcmd_spect = WCMD_KLATT; | wcmd_spect = WCMD_KLATT; | ||||
if(wavefile_ix == 0) | if(wavefile_ix == 0) | ||||
{ | { | ||||
// cancel any wavefile that was playing previously | // cancel any wavefile that was playing previously | ||||
wcmd_spect = WCMD_SPECT2; | wcmd_spect = WCMD_SPECT2; | ||||
if(frame1->frflags & FRFLAG_KLATT) | |||||
if(voice->klattv[0]) | |||||
wcmd_spect = WCMD_KLATT2; | wcmd_spect = WCMD_KLATT2; | ||||
wave_flag = 0; | wave_flag = 0; | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
wcmd_spect = WCMD_SPECT; | wcmd_spect = WCMD_SPECT; | ||||
if(frame1->frflags & FRFLAG_KLATT) | |||||
if(voice->klattv[0]) | |||||
wcmd_spect = WCMD_KLATT; | wcmd_spect = WCMD_KLATT; | ||||
} | } | ||||
} | } | ||||
{ | { | ||||
// but flag indicates keep HF peaks in last segment | // but flag indicates keep HF peaks in last segment | ||||
fr = CopyFrame(frame1,1); | 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]; | fr->fheight[ix] = last_frame->fheight[ix]; | ||||
} | } | ||||
wcmdq[last_wcmdq][3] = (long)fr; | wcmdq[last_wcmdq][3] = (long)fr; |
#define N_PEAKS 9 | #define N_PEAKS 9 | ||||
#define N_MARKERS 8 | #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_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_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_Fric 7 | ||||
#define KLATT_FricBP 8 | #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 { | typedef struct { | ||||
short frflags; | short frflags; | ||||
unsigned char length; | unsigned char length; | ||||
unsigned char fwidth[6]; // width/4 | unsigned char fwidth[6]; // width/4 | ||||
unsigned char fright[6]; // width/4 | unsigned char fright[6]; // width/4 | ||||
} frame_t2; // the original, without Klatt additions, used for file "phondata" | } 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 | |||||
#define L_qa 0x716100 | #define L_qa 0x716100 | ||||
#define L_grc 0x677263 // grc Ancient Greek | #define L_grc 0x677263 // grc Ancient Greek | ||||
#define L_jbo 0x6a626f // jbo Lojban | #define L_jbo 0x6a626f // jbo Lojban | ||||
#define L_pap 0x706170 // pap Papiamento | |||||
#define L_zhy 0x7a6879 // zhy | #define L_zhy 0x7a6879 // zhy | ||||
// start of unicode pages for character sets | // start of unicode pages for character sets | ||||
tr->langopts.stress_rule = 0; | tr->langopts.stress_rule = 0; | ||||
SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
// tr->langopts.numbers = 0x11849; | |||||
tr->langopts.numbers = 0x10c59; | |||||
} | } | ||||
break; | break; | ||||
case L('e','s'): // Spanish | case L('e','s'): // Spanish | ||||
case L('c','a'): // Catalan | 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] = {180, 210, 190, 190, 0, 0, 230, 260}; | ||||
// static const short stress_lengths_es[8] = {170, 200, 180, 180, 0, 0, 220, 250}; | // static const short stress_lengths_es[8] = {170, 200, 180, 180, 0, 0, 220, 250}; | ||||
tr->punct_within_word = ca_punct_within_word; | tr->punct_within_word = ca_punct_within_word; | ||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | 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; | break; | ||||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | tr->langopts.param[LOPT_IT_DOUBLING] = 1; | ||||
tr->langopts.long_stop = 130; | tr->langopts.long_stop = 130; | ||||
tr->langopts.numbers = 0x1809; | |||||
tr->langopts.numbers = 0x1009; | |||||
SetLetterVowel(tr,'y'); | 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.spelling_stress = 1; | ||||
tr->langopts.intonation_group = 3; // less intonation, don't raise pitch at comma | tr->langopts.intonation_group = 3; // less intonation, don't raise pitch at comma | ||||
} | } |
{//===================================================== | {//===================================================== | ||||
t_source = new wxTextCtrl(this,T_SOURCE,_T(""),wxPoint(0,4), | 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), | 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_TRANSLATE,_T("Translate"),wxPoint(4,620)); | ||||
t_translate = new wxButton(this,T_RULES,_T("Show Rules"),wxPoint(4,652)); | t_translate = new wxButton(this,T_RULES,_T("Show Rules"),wxPoint(4,652)); |
// Set voice to the default values | // Set voice to the default values | ||||
int pk; | 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 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}; | static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; | ||||
for(pk=0; pk<N_PEAKS; pk++) | for(pk=0; pk<N_PEAKS; pk++) | ||||
{ | { | ||||
voice->freq[pk] = 256; | 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->width[pk] = default_widths[pk]*2; | ||||
voice->breath[pk] = 0; | voice->breath[pk] = 0; | ||||
voice->breathw[pk] = breath_widths[pk]; // default breath formant woidths | voice->breathw[pk] = breath_widths[pk]; // default breath formant woidths | ||||
case V_TONE: | case V_TONE: | ||||
{ | { | ||||
int tone_data[10]; | |||||
int tone_data[12]; | |||||
ReadTonePoints(p,tone_data); | ReadTonePoints(p,tone_data); | ||||
SetToneAdjust(voice,tone_data); | SetToneAdjust(voice,tone_data); | ||||
} | } | ||||
break; | break; | ||||
case V_KLATT: | case V_KLATT: | ||||
voice->klattv[0] = 1; // default source: IMPULSIVE | |||||
Read8Numbers(p,voice->klattv); | Read8Numbers(p,voice->klattv); | ||||
voice->klattv[KLATT_Kopen] -= 40; | voice->klattv[KLATT_Kopen] -= 40; | ||||
break; | break; |
peaks[ix].height = 0; | peaks[ix].height = 0; | ||||
peaks[ix].left1 += peaks[ix].left_inc; | peaks[ix].left1 += peaks[ix].left_inc; | ||||
peaks[ix].left = int(peaks[ix].left1); | 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 | // 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; | peaks[ix].height1 += peaks[ix].height_inc; | ||||
if((peaks[ix].height = int(peaks[ix].height1)) < 0) | if((peaks[ix].height = int(peaks[ix].height1)) < 0) | ||||
peaks[ix].height = 0; | peaks[ix].height = 0; | ||||
nsamples += length2; | nsamples += length2; | ||||
length4 = length2/4; | 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].height1 = (fr1->fheight[ix] * v->height[ix]) << 6; | ||||
peaks[ix].height = int(peaks[ix].height1); | peaks[ix].height = int(peaks[ix].height1); | ||||
next = (fr2->fwidth[ix] * v->width[ix]) << 10; | next = (fr2->fwidth[ix] * v->width[ix]) << 10; | ||||
peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length2; | 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 | } // end of SetSynth |