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 |