Fix, speak letter names of Hangul (Korean) characters. Fix, ChangePhoneme(NULL) caused problems for word-gap options. Recognize Arabic comma U+060C. Languages changes: pt, nl, bn, te, da. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@336 d46cf337-b52f-0410-862d-fd96e6ae7743master
| // Aragon translation rules | |||||
| // Aragon translation rules | |||||
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| // letters | // letters | ||||
| / baRRa | / baRRa | ||||
| \ kontraBaRRa | \ kontraBaRRa | ||||
| | b'aRRaBertik'al | | b'aRRaBertik'al | ||||
| ° graUs | |||||
| _- gj'on | _- gj'on | ||||
| ! TaRR'ar||eksklamaTj'on | ! TaRR'ar||eksklamaTj'on |
| // Bengali numbers are changed to latin characters before translation | // Bengali numbers are changed to latin characters before translation | ||||
| _0 S'unjO | _0 S'unjO | ||||
| _1 '&k | _1 '&k | ||||
| _2 duj | |||||
| _2 d'uj | |||||
| _3 t'in | _3 t'in | ||||
| _4 tS'ar | _4 tS'ar | ||||
| _5 p'a~tS | _5 p'a~tS | ||||
| _0M2 l'ak# | _0M2 l'ak# | ||||
| _0M3 k'ot.i | _0M3 k'ot.i | ||||
| _0M4 'Orbud | _0M4 'Orbud | ||||
| _dpt dOsomik | |||||
| _dpt _d'Osomik_ | |||||
| // Single consonants | // Single consonants | ||||
| খ k#O | খ k#O | ||||
| গ gO | গ gO | ||||
| ঘ g#O | ঘ g#O | ||||
| ঙ 'uNO | |||||
| ঙ 'uNO~ | |||||
| চ tSO | চ tSO | ||||
| ছ tShO // [h] to distinguish from [tS] | ছ tShO // [h] to distinguish from [tS] | ||||
| জ JO | জ JO | ||||
| ঝ J#O | ঝ J#O | ||||
| ঞ 'iNO | |||||
| ঞ 'iNO~ | |||||
| ট t.O | ট t.O | ||||
| ঠ t.#O | ঠ t.#O | ||||
| ড d.O | ড d.O | ||||
| ঢ d.#O | ঢ d.#O | ||||
| ণ m'odd#ennO | |||||
| ণ m,odd#en.n.'O | |||||
| ত tO | ত tO | ||||
| থ t#O | থ t#O | ||||
| দ dO | দ dO | ||||
| ধ d#O | ধ d#O | ||||
| ন d'ontennO | |||||
| ন d,ontenn'O | |||||
| প pO | প pO | ||||
| ফ fO // or [p#O] ? | ফ fO // or [p#O] ? | ||||
| ব bO | ব bO | ||||
| ভ b#O | ভ b#O | ||||
| ম mO | ম mO | ||||
| য় Oj | য় Oj | ||||
| য ontostedZ'O | |||||
| য ,ontostedZ'O | |||||
| র rO | র rO | ||||
| ড় r.O | ড় r.O | ||||
| ড় r.O // (d. + nukta) | ড় r.O // (d. + nukta) | ||||
| ঢ় hr.O | ঢ় hr.O | ||||
| ঢ় hr.O // (d#. + nukta) | ঢ় hr.O // (d#. + nukta) | ||||
| ল lO | ল lO | ||||
| শ taleboS:O | |||||
| ষ mud#en:oS:O | |||||
| স d'onteS:O | |||||
| শ t,aleboS:'O | |||||
| ষ m,ud#en:oS:'O | |||||
| স d,onteS:'O | |||||
| হ hO | হ hO | ||||
| ৎ kh'Ond.otO | |||||
| ৎ kh,Ond.ot'O | |||||
| ক্ষ k,ojmud#en:oS:'O | |||||
| // full vowels | // full vowels | ||||
| অ O | অ O | ||||
| উ hrOS:o'u | উ hrOS:o'u | ||||
| ঊ dirg#o'u | ঊ dirg#o'u | ||||
| ঋ ri | ঋ ri | ||||
| এ e | |||||
| ঐ oj | |||||
| ও o | |||||
| ঔ ow | ঔ ow | ||||
| এ e $u+ // word 'it' | |||||
| ঐ oj $u+ // word 'that' | |||||
| ও o $u+ $brk // 'and' | |||||
| _এ e | |||||
| _ঐ oj | |||||
| _ও o | |||||
| // combining vowel signs | // combining vowel signs | ||||
| া 'akar | া 'akar | ||||
| ি r'oS:ikar | ি r'oS:ikar | ||||
| ঁ tS'Ondrobindu | ঁ tS'Ondrobindu | ||||
| ় b'indu | ় b'indu | ||||
| _, koma | |||||
| $ d.Olar | |||||
| % SOtk'Ora | |||||
| + jOg | |||||
| = SOman | |||||
| // Punctuation | // Punctuation | ||||
| । dVn.d.V | । dVn.d.V | ||||
| _, koma | |||||
| _? pr'oSnOtSihnO | |||||
| // Pronouns | // Pronouns | ||||
| আমি $u // main: I | আমি $u // main: I |
| | |||||
| // This file is UTF8 encoded | // This file is UTF8 encoded | ||||
| // letter groups: | // letter groups: | ||||
| ৢ l- | ৢ l- | ||||
| ৣ l- | ৣ l- | ||||
| __) - (_D bij'og | |||||
| D_) - (_D bij'og |
| _#9 tab | _#9 tab | ||||
| _#32 blank | _#32 blank | ||||
| * 'asd&r,isg $max3 | |||||
| % pRos'end $max3 | |||||
| @ sn,&:bel'&: | |||||
| / sgRVsdrai $max3 | |||||
| \ 'Vmvendsgr,VsdRai $max3 | |||||
| * '&sd@-r,isg $max3 | |||||
| % pRos'End $max3 | |||||
| @ sn,&b@-l'&: | |||||
| / sgRVsdrAj $max3 | |||||
| \ 'VmvEndsgr,VsdRai $max3 | |||||
| _, k'oma: | _, k'oma: | ||||
| _; se:mi:ko:lVn | |||||
| _; semiko:lVn | |||||
| _: k'o:lVn | _: k'o:lVn | ||||
| _. pONtOm // PN u => O | _. pONtOm // PN u => O | ||||
| _? spWrgsmVlstajn | |||||
| _! udRVbstejn | |||||
| _- binnesdrai | |||||
| __ b'Onsdrai | |||||
| _? spWrsmOlstAjn | |||||
| _! udRVbstAjn | |||||
| _- bin@-sdrAi | |||||
| __ b'OnsdrAi | |||||
| & _Vw | & _Vw | ||||
| £ pun? | £ pun? | ||||
| € euro | € euro | ||||
| © kVpirajt | |||||
| ÷ divid'eReD||meD | |||||
| © kVpirAjt | |||||
| ÷ divid'eRVD||mED | |||||
| = l'imeD | = l'imeD | ||||
| # n'OmV | # n'OmV | ||||
| § paragr'af | § paragr'af | ||||
| × g'aNe | × g'aNe | ||||
| ª feminin||Wdin'al | ª feminin||Wdin'al | ||||
| º m'askulin||Wdin'al | º m'askulin||Wdin'al | ||||
| ® registr'Er@D||v'ar@mErk3 | |||||
| ¼ en||kvart | |||||
| ¾ trEkv'art | |||||
| ® registr'ErVD||v'Ar@-mErk@- | |||||
| ¼ en||kvArt | |||||
| ¾ trEkv'Art | |||||
| ¢ s'ent | ¢ s'ent | ||||
| ¥ j'en: | ¥ j'en: | ||||
| µ my | µ my | ||||
| ' apostr'Vf | ' apostr'Vf | ||||
| ½ en'hal | |||||
| ½ en'h&l | |||||
| + plus | + plus | ||||
| // numbers | // numbers | ||||
| idé id'e // idea | idé id'e // idea | ||||
| tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | ||||
| ny ny // new | ny ny // new | ||||
| også Vs@- // also | |||||
| også ?Vs@- // also | |||||
| idet id'e // in so far as | idet id'e // in so far as | ||||
| (rub og stub) R'Ob||V||sd'Ob | (rub og stub) R'Ob||V||sd'Ob | ||||
| tre tr'E // the number 3 | tre tr'E // the number 3 | ||||
| rejicerer rejis'eV // PB | rejicerer rejis'eV // PB | ||||
| rejiceres rejis'eVs // PB | rejiceres rejis'eVs // PB | ||||
| rejicering rejis'eRiN // PB | rejicering rejis'eRiN // PB | ||||
| nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' | |||||
| nogen n'o:@-n // PB | |||||
| nogle n'o@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' | |||||
| nogen n'o@-n // PB | |||||
| ligesom l?isVm // PB | ligesom l?isVm // PB | ||||
| bliver blir // PB | bliver blir // PB | ||||
| konfirmand kVnferm'&nd // PB | konfirmand kVnferm'&nd // PB |
| tS tS` v w x z Z | tS tS` v w x z Z | ||||
| Dictionary an_dict 2013-03-28 | |||||
| Dictionary an_dict 2013-03-29 | |||||
| a aI aU e E eI eU i | a aI aU e E eI eU i | ||||
| o O oI u U | o O oI u U | ||||
| t# tS w x | t# tS w x | ||||
| Dictionary te_dict 2013-03-26 | |||||
| Dictionary te_dict 2013-03-31 | |||||
| a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
| i: l- o o: r- u u: | i: l- o o: r- u u: | ||||
| Z z; | Z z; | ||||
| Dictionary bn_dict 2013-03-29 | |||||
| Dictionary bn_dict 2013-03-31 | |||||
| & a a~ e e~ i i~ l- | & a a~ e e~ i i~ l- | ||||
| o O o: O~ o~ r- u u~ | o O o: O~ o~ r- u u~ | ||||
| x z | x z | ||||
| Dictionary da_dict 2013-03-29 | |||||
| Dictionary da_dict 2013-03-31 | |||||
| & &# 0 3 ?& ?&# ?0 ?A | & &# 0 3 ?& ?&# ?0 ?A | ||||
| ?e ?E ?i ?o ?O ?u ?V ?W | ?e ?E ?i ?o ?O ?u ?V ?W | ||||
| ts v x z | ts v x z | ||||
| Dictionary en_dict 2013-03-28 | |||||
| Dictionary en_dict 2013-03-30 | |||||
| 0 0# 3 3: @ @- @2 @5 | 0 0# 3 3: @ @- @2 @5 | ||||
| @L a a# A: A@ aa aI aI3 | @L a a# A: A@ aa aI aI3 | ||||
| x z Z | x z Z | ||||
| Dictionary es_dict 2013-03-28 | |||||
| Dictionary es_dict 2013-03-29 | |||||
| @ a aI aU e E eI eU | @ a aI aU e E eI eU | ||||
| i o O oI u | i o O oI u | ||||
| t tS ts tS; v x z Z | t tS ts tS; v x z Z | ||||
| Dictionary hi_dict 2013-03-16 | |||||
| Dictionary hi_dict 2013-03-31 | |||||
| @ @- @2 a a: aI aU a~ | |||||
| e E e: E: E~ i I i: | |||||
| @ @2 a a: aI aU a~ e | |||||
| E e: E: e~ E~ i I i: | |||||
| l- o O o: O: O~ o~ r- | l- o O o: O: O~ o~ r- | ||||
| u U u: u~ V | u U u: u~ V | ||||
| S s2 t T tl# v x z | S s2 t T tl# v x z | ||||
| Dictionary it_dict 2012-11-22 | |||||
| Dictionary it_dict 2013-03-29 | |||||
| @- a a/ aI aU e E eI | @- a a/ aI aU e E eI | ||||
| i I i# o O u | i I i# o O u | ||||
| tS ts tS; v x z Z | tS ts tS; v x z Z | ||||
| Dictionary ml_dict 2013-03-16 | |||||
| Dictionary ml_dict 2013-03-31 | |||||
| @ a a# a: aI aU e E | @ a a# a: aI aU e E | ||||
| e: i I i: o o: r- u | e: i I i: o o: r- u | ||||
| t.# v w x z | t.# v w x z | ||||
| Dictionary nl_dict 2013-03-27 | |||||
| Dictionary nl_dict 2013-03-29 | |||||
| 8 @ @- a A a: A~ e | 8 @ @- a A a: A~ e | ||||
| E e# E2 e: EI eU i I | E e# E2 e: EI eU i I | ||||
| ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
| Dictionary pt_dict 2013-03-29 | |||||
| Dictionary pt_dict 2013-03-31 | |||||
| & &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
| aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
| z; Z; | z; Z; | ||||
| Dictionary ru_dict 2011-10-24 | |||||
| Dictionary ru_dict 2013-03-31 | |||||
| 8 @- a A e E E# E% | 8 @- a A e E E# E% | ||||
| E2 i I I# I3 I^ ja ju | E2 i I I# I3 I^ ja ju |
| | |||||
| // You can use the en_extra file, rather than this one | // You can use the en_extra file, rather than this one | ||||
| // to add your own pronunciation definitions. | // to add your own pronunciation definitions. | ||||
| gilead g'IlIad | gilead g'IlIad | ||||
| gimme gImi | gimme gImi | ||||
| giraffe dZI2raaf | giraffe dZI2raaf | ||||
| github gIthVb | |||||
| glacier gleIS3 | glacier gleIS3 | ||||
| goin ,goUI2n $only // for goin' | goin ,goUI2n $only // for goin' | ||||
| gonna g,@n@ | gonna g,@n@ |
| // names of symbols | // names of symbols | ||||
| ª a | ª a | ||||
| º o | º o | ||||
| ° grados | |||||
| _. punto | _. punto | ||||
| _, koma | _, koma | ||||
| _; p,untoik'oma | _; p,untoik'oma |
| श S@ | श S@ | ||||
| ष s.@ // retroflex [S] | ष s.@ // retroflex [S] | ||||
| स s@ | स s@ | ||||
| ह H@- | |||||
| ह H@ | |||||
| क़ q@ | क़ q@ | ||||
| ख़ x@ | ख़ x@ | ||||
| ग़ Q@ | ग़ Q@ | ||||
| _?? Vks.@r | _?? Vks.@r | ||||
| // Alphabet names | |||||
| _ar 'Vrbi | |||||
| _cyr sIrIk'Ik | |||||
| _zh c'i@ni | |||||
| // Punctuation | // Punctuation | ||||
| । dVn.d.V | । dVn.d.V | ||||
| $ dOl@r | |||||
| % pVt'IS@t | |||||
| + plVs | |||||
| = bVr'a:b@r | |||||
| * ta:r'a:Nk@n | |||||
| * | |||||
| // Pronouns | // Pronouns | ||||
| मैं $u // main: IrI | मैं $u // main: IrI | ||||
| मुझे $u | मुझे $u | ||||
| को $u // ko: to | को $u // ko: to | ||||
| तक $u // tak: until, for(time) | तक $u // tak: until, for(time) | ||||
| बिना $u $pause // without (preposition) | बिना $u $pause // without (preposition) | ||||
| में $u // me: in | |||||
| में me~: $u+ // me: in | |||||
| से $u // se: from, with, by | से $u // se: from, with, by | ||||
| // Conjunctions | // Conjunctions | ||||
| और $u $pause // aur: and | |||||
| और $u $brk // aur: and | |||||
| य j@ $u $pause // ja: or | य j@ $u $pause // ja: or | ||||
| अगर $u $pause // agar: if | अगर $u $pause // agar: if | ||||
| यदि $u $pause // yadi: if, whether | यदि $u $pause // yadi: if, whether | ||||
| // Exceptions | // Exceptions | ||||
| क्रिकेट krIk'Et | |||||
| क्रिकेट kr'IkIt | |||||
| सायबर s'aIb@r | सायबर s'aIb@r |
| ः H // visarga | ः H // visarga | ||||
| .group ् // virama | .group ् // virama | ||||
| ् | |||||
| ् | |||||
| // Extra consonants | // Extra consonants | ||||
| ज़ zV | ज़ zV | ||||
| ज़ (B z | ज़ (B z | ||||
| .group ड़ // dddha (should retroflex flap) | |||||
| .group ड़ // dddha (should retroflex flap ?) | |||||
| ड़ r.V | ड़ r.V | ||||
| ड़ (B r. | ड़ (B r. | ||||
| .group | |||||
| $ dOlV | |||||
| % pVsEnt | |||||
| // This file is UTF-8 encoded | |||||
| // This file is UTF-8 encoded | |||||
| // $alt change [e] or [o] in the stressed syllable to [E] or [O] | // $alt change [e] or [o] in the stressed syllable to [E] or [O] | ||||
| # kantSellet:o | # kantSellet:o | ||||
| @ ki'otS:ola | @ ki'otS:ola | ||||
| ~ tilde | ~ tilde | ||||
| ° g@-*'a:di | |||||
| : d,uep'unti | : d,uep'unti | ||||
| _! p,untoesklamat'ivo | _! p,untoesklamat'ivo |
| .group 0xe0a4 // devanagari | |||||
| 0xe0a4 _^_HI // switch to hindi voice | |||||
| .group 0xe0a5 // devanagari | |||||
| 0xe0a5 _^_HI | |||||
| .group | .group | ||||
| $ do:l.ar | $ do:l.ar |
| | |||||
| // This file in UTF8 encoded | // This file in UTF8 encoded | ||||
| // $alt2, remove s from plural, remove en from plural | // $alt2, remove s from plural, remove en from plural | ||||
| = Q@l'EIkte:k@n | = Q@l'EIkte:k@n | ||||
| __ l'IgEntst@-*'e:pj@ | __ l'IgEntst@-*'e:pj@ | ||||
| € 'Y:*o:t,e:k@n | € 'Y:*o:t,e:k@n | ||||
| ° Qra:d@n | |||||
| // numbers | // numbers |
| bolo $alt $verb | bolo $alt $verb | ||||
| borboleta $alt2 | borboleta $alt2 | ||||
| bordo $alt | bordo $alt | ||||
| borra $alt2 $noun | |||||
| bosque $alt | bosque $alt | ||||
| boto $alt2 $noun | boto $alt2 $noun | ||||
| brejo $alt | brejo $alt | ||||
| cachorra $alt2 | cachorra $alt2 | ||||
| caderneta $alt2 | caderneta $alt2 | ||||
| cadete $alt2 | cadete $alt2 | ||||
| camelha $alt | |||||
| camelo $alt2 | camelo $alt2 | ||||
| camiseta $alt2 | camiseta $alt2 | ||||
| cantora $alt2 | cantora $alt2 | ||||
| capacete $alt2 | capacete $alt2 | ||||
| caractere $alt | caractere $alt | ||||
| carbureto $alt2 | |||||
| carbureto $alt2 | |||||
| careta $alt2 | careta $alt2 | ||||
| carreta $alt2 | carreta $alt2 | ||||
| carroça $alt | carroça $alt | ||||
| catorze $alt2 | catorze $alt2 | ||||
| cebola $alt2 | cebola $alt2 | ||||
| cefaleia $alt | cefaleia $alt | ||||
| centopeia $alt | |||||
| centopeia $alt | |||||
| cerca $alt | cerca $alt | ||||
| cerca $alt2 $noun | cerca $alt2 $noun | ||||
| cerco $alt $verb | cerco $alt $verb | ||||
| concertos $alt2 | concertos $alt2 | ||||
| concordo $alt | concordo $alt | ||||
| conforto $alt $verb | conforto $alt $verb | ||||
| console $alt2 $noun | |||||
| consolo $alt2 $noun | consolo $alt2 $noun | ||||
| controle $alt2 $noun | controle $alt2 $noun | ||||
| controles $alt2 | |||||
| controles $alt $verb | |||||
| controlo $alt2 $noun | controlo $alt2 $noun | ||||
| coreia $alt | coreia $alt | ||||
| coreto $alt2 | coreto $alt2 | ||||
| corveta $alt2 | corveta $alt2 | ||||
| corvos $alt | corvos $alt | ||||
| coto $alt2 | coto $alt2 | ||||
| cotovelo $alt2 | |||||
| cotovelo $alt2 | |||||
| cratera $alt | cratera $alt | ||||
| crede $alt2 | crede $alt2 | ||||
| crepe $alt | crepe $alt | ||||
| decore $alt | decore $alt | ||||
| degelo $alt2 | |||||
| degelo $alt2 | |||||
| desapego $alt2 $noun | desapego $alt2 $noun | ||||
| descordo $alt | descordo $alt | ||||
| desemprego $alt2 | desemprego $alt2 | ||||
| desemprego $alt $verb | desemprego $alt $verb | ||||
| desespero $alt2 $noun | desespero $alt2 $noun | ||||
| desfecho $alt2 | desfecho $alt2 | ||||
| desmantelo $alt2 $noun | |||||
| desmantelo $alt2 $noun | |||||
| desporto $alt2 | desporto $alt2 | ||||
| desportos $alt | desportos $alt | ||||
| desprezo $alt2 $noun | desprezo $alt2 $noun | ||||
| deste $alt2 | deste $alt2 | ||||
| deste $alt $verb | deste $alt $verb | ||||
| desterro $alt2 | desterro $alt2 | ||||
| destroem $alt | |||||
| destroem $alt | |||||
| deveras $alt | deveras $alt | ||||
| dez $alt | dez $alt | ||||
| diarreia $alt | diarreia $alt | ||||
| enforco $alt | enforco $alt | ||||
| engordo $alt | engordo $alt | ||||
| enredo $alt $verb | enredo $alt $verb | ||||
| enrosco $alt $verb | |||||
| enrosco $alt $verb | |||||
| enterro $alt2 $noun | enterro $alt2 $noun | ||||
| enumerem $alt | enumerem $alt | ||||
| envelope $alt | envelope $alt | ||||
| envolto $alt2 | envolto $alt2 | ||||
| enxaqueca $alt2 | |||||
| enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
| epopeia $alt | epopeia $alt | ||||
| eritreia $alt | eritreia $alt | ||||
| esboço $alt $verb | esboço $alt $verb | ||||
| escopeta $alt2 | escopeta $alt2 | ||||
| escova $alt2 $noun | escova $alt2 $noun | ||||
| escovas $alt2 | |||||
| escovas $alt2 | |||||
| escovo $alt | escovo $alt | ||||
| escroto $alt2 | escroto $alt2 | ||||
| esforço $alt $verb | esforço $alt $verb | ||||
| espoleta $alt2 | espoleta $alt2 | ||||
| esposa $alt2 | esposa $alt2 | ||||
| esqueleto $alt2 | esqueleto $alt2 | ||||
| estilete $alt2 | |||||
| estilete $alt2 | |||||
| estrela $alt2 | estrela $alt2 | ||||
| estrofe $alt | estrofe $alt | ||||
| estorno $alt $verb | estorno $alt $verb | ||||
| estorvo $alt $verb | estorvo $alt $verb | ||||
| etiqueta $alt2 | etiqueta $alt2 | ||||
| europa $alt | europa $alt | ||||
| europeia $alt | |||||
| europeia $alt | |||||
| exagero $alt $verb | exagero $alt $verb | ||||
| explore $alt | explore $alt | ||||
| faceta $alt2 | faceta $alt2 | ||||
| fantoche $alt | |||||
| fantoche $alt | |||||
| farofa $alt | farofa $alt | ||||
| febre $alt | febre $alt | ||||
| fera $alt | fera $alt | ||||
| força $alt2 $noun | força $alt2 $noun | ||||
| forças $alt2 | forças $alt2 | ||||
| forço $alt | forço $alt | ||||
| formos $alt2 | |||||
| formos $alt2 | |||||
| forro $alt $verb | forro $alt $verb | ||||
| frevo $alt2 | frevo $alt2 | ||||
| fulgores $alt2 | fulgores $alt2 | ||||
| galileia $alt | galileia $alt | ||||
| gameta $alt2 | gameta $alt2 | ||||
| geleia $alt | geleia $alt | ||||
| gelo $alt2 | |||||
| gelo $alt $verb | |||||
| gelo $alt2 | |||||
| gelo $alt $verb | |||||
| genebra $alt | genebra $alt | ||||
| gesso $alt2 | gesso $alt2 | ||||
| golpe $alt | golpe $alt | ||||
| hoje $alt2 | hoje $alt2 | ||||
| horrores $alt2 | horrores $alt2 | ||||
| ideia $alt | ideia $alt | ||||
| interesse $alt2 $noun | |||||
| imberbe $alt | |||||
| interesse $alt2 | |||||
| interesse $alt $verb | |||||
| jogo $alt2 $noun | jogo $alt2 $noun | ||||
| joguete $alt2 | joguete $alt2 | ||||
| lagosta $alt2 | lagosta $alt2 | ||||
| lambreta $alt2 | lambreta $alt2 | ||||
| lebre $alt | lebre $alt | ||||
| lembrete $alt2 | lembrete $alt2 | ||||
| lepra $alt | |||||
| lepra $alt | |||||
| leste $alt2 $verb | leste $alt2 $verb | ||||
| lingueta $alt2 | |||||
| lingueta $alt2 | |||||
| lopes $alt | lopes $alt | ||||
| macete $alt2 | macete $alt2 | ||||
| maior $alt | maior $alt | ||||
| miolo $alt2 | miolo $alt2 | ||||
| miolos $alt | miolos $alt | ||||
| modelo $alt2 | modelo $alt2 | ||||
| modelo $alt $verb | |||||
| modelo $alt $verb | |||||
| moeda $alt | moeda $alt | ||||
| mofo $alt $verb | |||||
| mofo $alt $verb | |||||
| molho $alt2 $noun | molho $alt2 $noun | ||||
| monera $alt | monera $alt | ||||
| morcego $alt2 | morcego $alt2 | ||||
| odisseia $alt | odisseia $alt | ||||
| onu $1 | onu $1 | ||||
| olho $alt2 $noun | olho $alt2 $noun | ||||
| onomatopeia $alt | |||||
| onomatopeia $alt | |||||
| opereta $alt2 | opereta $alt2 | ||||
| ordens $alt | ordens $alt | ||||
| osso $alt2 | osso $alt2 | ||||
| palheta $alt2 | palheta $alt2 | ||||
| panfleto $alt2 | panfleto $alt2 | ||||
| pangeia $alt | pangeia $alt | ||||
| panqueca p,&~Nk'Ek& | |||||
| pantera $alt | pantera $alt | ||||
| parede $alt2 | parede $alt2 | ||||
| pastora $alt2 | pastora $alt2 | ||||
| povos $alt | povos $alt | ||||
| poxa p'oS& | poxa p'oS& | ||||
| primavera $alt | primavera $alt | ||||
| prosopopeia $alt | |||||
| prosopopeia $alt | |||||
| quarteto $alt2 | quarteto $alt2 | ||||
| queda $alt | queda $alt | ||||
| quede $alt2 | quede $alt2 | ||||
| reforços $alt | reforços $alt | ||||
| refresco $alt $verb | refresco $alt $verb | ||||
| reitora $alt2 | reitora $alt2 | ||||
| rejo $alt | |||||
| rejo $alt | |||||
| relevo $alt2 $noun | relevo $alt2 $noun | ||||
| remorso $alt | remorso $alt | ||||
| renovo $alt $verb | |||||
| renovo $alt $verb | |||||
| retorno $alt $verb | retorno $alt $verb | ||||
| reuva $alt | |||||
| rigores $alt2 | |||||
| reuva $alt | |||||
| rigores $alt2 | |||||
| rixa x'iS& | rixa x'iS& | ||||
| rocha $alt | rocha $alt | ||||
| rock $alt | rock $alt | ||||
| toga $alt | toga $alt | ||||
| topo $alt $verb | topo $alt $verb | ||||
| torno $alt $verb | torno $alt $verb | ||||
| tornozelo $alt2 | |||||
| tornozelo $alt2 | |||||
| torre $alt2 $noun | torre $alt2 $noun | ||||
| torres $alt2 | torres $alt2 | ||||
| torro $alt | |||||
| torro $alt | |||||
| tortos $alt | tortos $alt | ||||
| traqueia $alt | traqueia $alt | ||||
| travesso $alt2 | travesso $alt2 | ||||
| valeta $alt2 | valeta $alt2 | ||||
| vanessa $alt2 | vanessa $alt2 | ||||
| velozes $alt | velozes $alt | ||||
| verbete $alt2 | |||||
| violeta $alt2 | violeta $alt2 | ||||
| violoncelo $alt | violoncelo $alt | ||||
| voga $alt | voga $alt | ||||
| ?1 back b'Ek | ?1 back b'Ek | ||||
| ?2 backup bEk'&p | ?2 backup bEk'&p | ||||
| ?2 backups bEk'&ps | ?2 backups bEk'&ps | ||||
| ?1 blind bl'aind | |||||
| blind bl'aind | |||||
| book buk | |||||
| ?1 braille b:r'aily | ?1 braille b:r'aily | ||||
| ?2 Braille bR'aili | ?2 Braille bR'aili | ||||
| ?1 cancel k'&ns'El | ?1 cancel k'&ns'El | ||||
| ?2 download daUNl'owd | ?2 download daUNl'owd | ||||
| ?3 download dau~Nl'owd | ?3 download dau~Nl'owd | ||||
| ?1 end 'end | ?1 end 'end | ||||
| ?1 escape Sk'eIpy | |||||
| ?2 esc 'Esk | ?2 esc 'Esk | ||||
| ?3 esc 'EskI | ?3 esc 'EskI | ||||
| ?1 explorer ,ekspl'O:*&r- | ?1 explorer ,ekspl'O:*&r- | ||||
| ?2 Intranet iNtRan'Et | ?2 Intranet iNtRan'Et | ||||
| ?1 kernel k'Ern,El | ?1 kernel k'Ern,El | ||||
| ?2 kernel k'Ern@l | ?2 kernel k'Ern@l | ||||
| laptop lEptOp | |||||
| ?1 line l'ain | ?1 line l'ain | ||||
| layout l'eI,aUt | layout l'eI,aUt | ||||
| ?2 logo l'OgU | ?2 logo l'OgU | ||||
| ?2 software s'Oftwe@- | ?2 software s'Oftwe@- | ||||
| ?1 space sp'eIsy | ?1 space sp'eIsy | ||||
| ?1 sporting sp'Ort,ing | ?1 sporting sp'Ort,ing | ||||
| ?1 tab t'ab | |||||
| tab t'aby | |||||
| ?1 telemóvel t,El,Em'OvEl | ?1 telemóvel t,El,Em'OvEl | ||||
| ?1 telemóveis t,El,Em'OveIs# | ?1 telemóveis t,El,Em'OveIs# | ||||
| ?1 up &p | ?1 up &p | ||||
| ?1 upload &pl'oud | ?1 upload &pl'oud | ||||
| ?2 web w'Eb | ?2 web w'Eb | ||||
| ?2 verbete verb'etSi | |||||
| ?2 verbetes verb'etSis | |||||
| ?1 yahoo 'i,ah'u | ?1 yahoo 'i,ah'u | ||||
| ?2 yahoo iah'u | ?2 yahoo iah'u | ||||
| ?1 yes j'Es | ?1 yes j'Es | ||||
| // foreign product names | // foreign product names | ||||
| ?1 access 'aks,Es | ?1 access 'aks,Es | ||||
| ?1 adobe &d'Oby | ?1 adobe &d'Oby | ||||
| apple 'Epow | |||||
| chrome kR'owmi | |||||
| debian d'Ebj&~N | debian d'Ebj&~N | ||||
| ?1 excel ,Eks'El | ?1 excel ,Eks'El | ||||
| ?1 express ,Ekspr'Es | ?1 express ,Ekspr'Es | ||||
| espeak isp'i:k | espeak isp'i:k | ||||
| ?1 espeakedit isp'i:kEd,it | ?1 espeakedit isp'i:kEd,it | ||||
| facebook feisybuk | |||||
| ?1 fedora _^_EN | ?1 fedora _^_EN | ||||
| ?1 firefox f'ai&rfOks | |||||
| ?2 firefox f'ai@fOks | |||||
| firefox f'ai@fOks | |||||
| ?1 front fr'ont | ?1 front fr'ont | ||||
| ?1 jaws dZ'au:z | ?1 jaws dZ'au:z | ||||
| ?1 linux l,in'uks | ?1 linux l,in'uks | ||||
| suse z'u:ts@ | suse z'u:ts@ | ||||
| ?1 start st'art // nero StartSmart | ?1 start st'art // nero StartSmart | ||||
| ?1 time t'aImy // nero show time | ?1 time t'aImy // nero show time | ||||
| twitter tw'iter | |||||
| ubuntu ub'untu | ubuntu ub'untu | ||||
| ?1 unix ,u:n'iks | ?1 unix ,u:n'iks | ||||
| ?2 unix j'uniks | ?2 unix j'uniks |
| ái (s ''aI | ái (s ''aI | ||||
| á (iCK ''a | á (iCK ''a | ||||
| áy ''aI | áy ''aI | ||||
| ál (C ''aU | |||||
| áu ''aU | áu ''aU | ||||
| áu (s ''aU | áu (s ''aU | ||||
| ?1 ál ''Al | ?1 ál ''Al | ||||
| f) e (rem_ E | f) e (rem_ E | ||||
| e (que_ E | e (que_ E | ||||
| e (quem_ E | |||||
| e (quem_ E | |||||
| e (rgA_ E | e (rgA_ E | ||||
| e (rgAm_ E | e (rgAm_ E | ||||
| e (rgue_ E | |||||
| e (rguem_ E | |||||
| e (rgue_ E | |||||
| e (rguem_ E | |||||
| e (rsA_ E | e (rsA_ E | ||||
| e (rsAm_ E | e (rsAm_ E | ||||
| e (stAm_ E | e (stAm_ E | ||||
| e (strA_ E | e (strA_ E | ||||
| e (rme_ E | |||||
| e (rme_ E | |||||
| e (rnA_ E | e (rnA_ E | ||||
| e (rnAm_ E | e (rnAm_ E | ||||
| _gr) e (gL03_ e | _gr) e (gL03_ e | ||||
| _gal) e (gL03_ e | _gal) e (gL03_ e | ||||
| _n) e (grL03_ e | _n) e (grL03_ e | ||||
| _ch) e (guL02_ e | |||||
| estr) ei (L04_ EI | estr) ei (L04_ EI | ||||
| _inv) e (jL04_ E | _inv) e (jL04_ E | ||||
| tr) e (pL04_ E // es- | tr) e (pL04_ E // es- | ||||
| _refrig) e (rL04_ E | _refrig) e (rL04_ E | ||||
| _v) e (rbL03_ E | _v) e (rbL03_ E | ||||
| _p) e (rdL02_ E | _p) e (rdL02_ E | ||||
| _ch) e (guL02_ e | |||||
| _l) e (rdL03_ E | _l) e (rdL03_ E | ||||
| _h) e (rdL04_ E | _h) e (rdL04_ E | ||||
| _bez) e (rrL03_ e | |||||
| _bez) e (rrL03_ e | |||||
| _inv) e (rtL03_ e | _inv) e (rtL03_ e | ||||
| _f) e (rvL03_ e | _f) e (rvL03_ e | ||||
| _refr) e (scL01_ E | _refr) e (scL01_ E | ||||
| éi (s ''EI | éi (s ''EI | ||||
| é (iCK ''E | é (iCK ''E | ||||
| éy ''eI | éy ''eI | ||||
| él (C ''EU | |||||
| éu ''EU | éu ''EU | ||||
| éu (s ''EU | éu (s ''EU | ||||
| é (uCK ''E | é (uCK ''E | ||||
| gu (Y g | gu (Y g | ||||
| a) gu (ent gw | a) gu (ent gw | ||||
| _ar) gu (i gw | _ar) gu (i gw | ||||
| averi) gu (e gw | |||||
| averi) gu (e gw | |||||
| enxa) gu (e gw | enxa) gu (e gw | ||||
| i) gu (idade gw | |||||
| i) gu (idade gw | |||||
| lin) gu (e gw | lin) gu (e gw | ||||
| lin) gu (i gw | lin) gu (i gw | ||||
| _min) gu (e gw | |||||
| _min) gu (e gw | |||||
| _pin) gu (im_ gw | _pin) gu (im_ gw | ||||
| _pin) gu (ins_ gw | _pin) gu (ins_ gw | ||||
| _sa) gu (i gw | |||||
| _sa) gu (i gw | |||||
| san) gu (ín gw | san) gu (ín gw | ||||
| san) gu (in gw | san) gu (in gw | ||||
| tin) gu (i gw | |||||
| tin) gu (i gw | |||||
| ?1 n) gu (A gw // eg: língua, etc. | ?1 n) gu (A gw // eg: língua, etc. | ||||
| ?1 man) gu (ei g // mangueira | ?1 man) gu (ei g // mangueira | ||||
| ?1 gu (ém_ g // eg: alguém, ninguém, etc... | ?1 gu (ém_ g // eg: alguém, ninguém, etc... | ||||
| i (A_ 'i | i (A_ 'i | ||||
| i (am_ 'i | i (am_ 'i | ||||
| i (em_ 'i | |||||
| io (_ iU | io (_ iU | ||||
| io (s_ iU | io (s_ iU | ||||
| i (oCK i | i (oCK i | ||||
| ím (C ''im | ím (C ''im | ||||
| ín (K ''iN | ín (K ''iN | ||||
| ính ''in^ | ính ''in^ | ||||
| íl (C ''IU | |||||
| .group j | .group j | ||||
| o (ltA_ O | o (ltA_ O | ||||
| o (ltAm_ O | o (ltAm_ O | ||||
| o (lve_ O | |||||
| o (lvem_ O | |||||
| o (sA_ O | o (sA_ O | ||||
| o (so_N o // not for osos_ | o (so_N o // not for osos_ | ||||
| o (sAm_ O | o (sAm_ O | ||||
| //sort | //sort | ||||
| _f) o (L05_ o | _f) o (L05_ o | ||||
| _f) o (L07_ o | _f) o (L07_ o | ||||
| _engl) o (bL04_ O | |||||
| _s) o (bL02_ O | _s) o (bL02_ O | ||||
| _af) o (bL04_ O | |||||
| _esn) o (bL04_ O | _esn) o (bL04_ O | ||||
| _af) o (bL04_ O | |||||
| _engl) o (bL04_ O | |||||
| br) o (chL04_ O | br) o (chL04_ O | ||||
| _deb) o (chL04_ O | _deb) o (chL04_ O | ||||
| _m) o (fL01_ O | _m) o (fL01_ O | ||||
| _s) o (frL02_ O | _s) o (frL02_ O | ||||
| r) o (gL04_ O // inter- | r) o (gL04_ O // inter- | ||||
| _j) o (gL04_ O | _j) o (gL04_ O | ||||
| _emp) o (lgL04_ O | |||||
| _f) o (lgL04_ O | |||||
| _af) o (gL04_ O | _af) o (gL04_ O | ||||
| _adv) o (gL04_ O | _adv) o (gL04_ O | ||||
| _ref) o (gL04_ O | _ref) o (gL04_ O | ||||
| _ap) oi (L02_ OI | _ap) oi (L02_ OI | ||||
| _b) oi (L04_ OI | _b) oi (L04_ OI | ||||
| _t) o (lL03_ o | _t) o (lL03_ o | ||||
| _f) o (lgL04_ O | |||||
| _emp) o (lgL04_ O | |||||
| c) o (lhL02_ O // es- en- re- | c) o (lhL02_ O // es- en- re- | ||||
| _t) o (lhL02_ O | _t) o (lhL02_ O | ||||
| _m) o (lhL04_ O | _m) o (lhL04_ O | ||||
| env) o (lvL02_ O // des- | |||||
| _abs) o (lvL02_ O | |||||
| _dev) o (lvL02_ O | |||||
| _res) o (lvL02_ O | |||||
| _rev) o (lvL02_ O | |||||
| _ent) o (pL02_ O | |||||
| ent) o (pL02_ O | |||||
| _c) o (pL03_ O | _c) o (pL03_ O | ||||
| _ens) o (pL04_ O | _ens) o (pL04_ O | ||||
| _s) o (prL04_ O | _s) o (prL04_ O | ||||
| ?1 _) qua kwa // quatro, etc. | ?1 _) qua kwa // quatro, etc. | ||||
| ?1 _) que ke // quente, etc. | ?1 _) que ke // quente, etc. | ||||
| ?1 _) quei (C k'eI // queira, queima, etc | ?1 _) quei (C k'eI // queira, queima, etc | ||||
| A) quên (C kw'eN // frequência, etc. | |||||
| C) quên (C kw'eN // delinquência, etc. | |||||
| C) quên (A kw'eN // quinquênio, etc. | |||||
| quên kw'eN // quinquênio, etc. | |||||
| ade) qu (e kw | ade) qu (e kw | ||||
| _a) qu (idade_ kw | |||||
| _a) qu (ífero_ kw | |||||
| e) qu (estr kw | e) qu (estr kw | ||||
| ese) qu (ív kw | ese) qu (ív kw | ||||
| _e) qu (in kw | _e) qu (in kw | ||||
| fre) qu (ent kw | fre) qu (ent kw | ||||
| _ini) qu (idade_ kw | |||||
| li) qu (id kw | li) qu (id kw | ||||
| lí) qu (id kw | lí) qu (id kw | ||||
| n) qu (en kw | n) qu (en kw | ||||
| _) qu (inqu kw | _) qu (inqu kw | ||||
| se) qu (en kw | se) qu (en kw | ||||
| tran) qu (il kw | tran) qu (il kw | ||||
| ?1 quec kes // esquece, etc. | |||||
| ?1 queç kes // esqueça. | ?1 queç kes // esqueça. | ||||
| ?1 A) que (nA_ ke // pequeno, etc. | ?1 A) que (nA_ ke // pequeno, etc. | ||||
| ?1 C) quê (_ ke // porquê, etc. | ?1 C) quê (_ ke // porquê, etc. | ||||
| ?1 A) s (G+ Z | ?1 A) s (G+ Z | ||||
| ?1 A) s (_KS1 s# | ?1 A) s (_KS1 s# | ||||
| ?1 A) s (_G+S1 Z | ?1 A) s (_G+S1 Z | ||||
| s (b z | |||||
| s (d z | |||||
| s (g z | |||||
| s (l z | |||||
| s (m z | |||||
| s (n z | |||||
| sr zx | |||||
| s (v z | |||||
| _) sobre (@P5 sob*e | _) sobre (@P5 sob*e | ||||
| _7C s;,Ims'ot | _7C s;,Ims'ot | ||||
| _8C vOs;Ims'ot | _8C vOs;Ims'ot | ||||
| _9C dev;Vts'ot | _9C dev;Vts'ot | ||||
| _1MA1 t'ys;Its;V // no '1' before thousand | |||||
| _0MA1 t'ys;Its;i | |||||
| _0M1 t'ys;Vts; | |||||
| _1MA1 t'ys;ItS;V // no '1' before thousand | |||||
| _0MA1 t'ys;ItS;i | |||||
| _0M1 t'ys;VtS; | |||||
| _1MA2 m;,IlI;'on | _1MA2 m;,IlI;'on | ||||
| _0MA2 m;,IlI;'ona | _0MA2 m;,IlI;'ona | ||||
| _0M2 m;,IlI;'onof | _0M2 m;,IlI;'onof |
| o o: | o o: | ||||
| p pi: | p pi: | ||||
| q kju: | q kju: | ||||
| r a:r | |||||
| r a:rp | |||||
| s Es | s Es | ||||
| t t#i: | t t#i: | ||||
| u ju: | u ju: | ||||
| _1a oka | _1a oka | ||||
| _2 rend.u | _2 rend.u | ||||
| _3 mu:d.u | _3 mu:d.u | ||||
| _4 na:lgu | |||||
| _4 na:lugu | |||||
| _5 aIdu | _5 aIdu | ||||
| _6 a:ru | _6 a:ru | ||||
| _7 ;e:d.u | _7 ;e:d.u | ||||
| _9 tommidi | _9 tommidi | ||||
| _1X padi | _1X padi | ||||
| _11 padakond.u | _11 padakond.u | ||||
| _12 pannemd.u | |||||
| _13 padamu:d.u: | |||||
| _12 pannend.u | |||||
| _13 padammu:d.u: | |||||
| _14 pad#na:lugu | _14 pad#na:lugu | ||||
| _15 padihe:nu | _15 padihe:nu | ||||
| _16 padaha:ru | _16 padaha:ru | ||||
| _17 padihe:d.u | _17 padihe:d.u | ||||
| _18 padd#enimidi | _18 padd#enimidi | ||||
| _19 pamdommadi | |||||
| _19 pandommidi | |||||
| _2X irav#aI | _2X irav#aI | ||||
| _3X muppaI | _3X muppaI | ||||
| _4X nalub#aI | _4X nalub#aI | ||||
| _5X ja:b#aI | _5X ja:b#aI | ||||
| _6X arav#aI | _6X arav#aI | ||||
| _7X d.eb#baI | |||||
| _7X d.#eb#baI | |||||
| _8X jenab#aI | _8X jenab#aI | ||||
| _9X tomb#aI | _9X tomb#aI | ||||
| _0C v#andala | _0C v#andala | ||||
| + ku:d.ika | + ku:d.ika | ||||
| * naks.atra | * naks.atra | ||||
| \ bja:kasla:s. | \ bja:kasla:s. | ||||
| / sla:s. | |||||
| / kudiva:lugi:ta | |||||
| © ka:pi:raIt. | © ka:pi:raIt. | ||||
| ¶ v#e:ra: | ¶ v#e:ra: | ||||
| ఫ్ ip# | ఫ్ ip# | ||||
| బ్ ib | బ్ ib | ||||
| భ్ ib# | భ్ ib# | ||||
| మ్ im | |||||
| మ్ imu: | |||||
| య్ ij | య్ ij | ||||
| ర్ ir | ర్ ir | ||||
| ఱ్ ir | ఱ్ ir |
| . ఁ n // candrabindu | . ఁ n // candrabindu | ||||
| ం m // anusvara (this should nasalize the vowel) | |||||
| ం n // anusvara (this should nasalize the vowel) | |||||
| ః h // visarga | ః h // visarga | ||||
| ూ u: | ూ u: | ||||
| ృ ru | |||||
| ృ r- | |||||
| ౄ r-: | ౄ r-: | ||||
| name english | name english | ||||
| language en-uk 2 | |||||
| language en-gb 2 | language en-gb 2 | ||||
| language en-uk 2 | |||||
| language en 2 | language en 2 | ||||
| gender male | gender male | ||||
| name spanish-latin-american | |||||
| name spanish-latin-am | |||||
| language es-la | language es-la | ||||
| language es-mx 6 | language es-mx 6 | ||||
| language es 6 | language es 6 |
| ne 18 157 | ne 18 157 | ||||
| ur 6 149 | ur 6 149 | ||||
| pa 15 151 | pa 15 151 | ||||
| ta 23 153 | |||||
| ta 24 153 | |||||
| kn 17 149 | kn 17 149 | ||||
| ml 26 152 | ml 26 152 | ||||
| te 16 149 | te 16 149 | ||||
| [l/3] da | [l/3] da | ||||
| l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [l/3] da | |||||
| l/l@ [l#] base | l/l@ [l#] base | ||||
| base vowelstart_l | base vowelstart_l | ||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| l/l_a [l/3] base | l/l_a [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [l/3] da | |||||
| l/le [l#] base | l/le [l#] base | ||||
| base vowelstart_l | base vowelstart_l | ||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| l/l_e [l/3] base | l/l_e [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [l/3] da | |||||
| l/L_eL_af [&] af | l/L_eL_af [&] af | ||||
| [&:] af | [&:] af | ||||
| l/l_front [L] sq | l/l_front [L] sq | ||||
| l/l_i [l/3] base | l/l_i [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [i] sq | [i] sq | ||||
| [l/3] da | |||||
| ll/ll [L] base | ll/ll [L] base | ||||
| ll/_ll [L] base | ll/_ll [L] base | ||||
| l/l_long [l] base | l/l_long [l] base | ||||
| [l/2] fr | [l/2] fr | ||||
| l/l_o [l/3] base | l/l_o [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [l/3] da | |||||
| l^/l_rfx [l.] base | l^/l_rfx [l.] base | ||||
| [l;] lt | [l;] lt | ||||
| [l] ru | [l] ru | ||||
| [l/2] fr | [l/2] fr | ||||
| l/l_u [l/3] base | l/l_u [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| [l/3] da | |||||
| l/l_vi [l] vi | l/l_vi [l] vi | ||||
| ll/xll [L] base | ll/xll [L] base | ||||
| l/l_y [l/] fr | l/l_y [l/] fr |
| phoneme i | phoneme i | ||||
| vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
| length 200 | |||||
| length 210 | |||||
| FMT(vowel/i_6) | FMT(vowel/i_6) | ||||
| endphoneme | endphoneme | ||||
| phoneme u | phoneme u | ||||
| vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
| length 200 | |||||
| length 210 | |||||
| FMT(vowel/u) | FMT(vowel/u) | ||||
| endphoneme | endphoneme | ||||
| phoneme e | phoneme e | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 200 | |||||
| length 210 | |||||
| FMT(vowel/e) | FMT(vowel/e) | ||||
| endphoneme | endphoneme | ||||
| phoneme & | phoneme & | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 200 | |||||
| length 210 | |||||
| FMT(vowel/&_2) | FMT(vowel/&_2) | ||||
| endphoneme | endphoneme | ||||
| phoneme o | phoneme o | ||||
| vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
| length 200 | |||||
| length 210 | |||||
| IF nextPhW(w) THEN | IF nextPhW(w) THEN | ||||
| length 160 | |||||
| length 170 | |||||
| ENDIF | ENDIF | ||||
| FMT(vowel/o) | FMT(vowel/o) | ||||
| endphoneme | endphoneme |
| // AC + @- OR V: Long "pile" [pi:l@-] | // AC + @- OR V: Long "pile" [pi:l@-] | ||||
| // AC[i]: Long "smidig" [smi:Di] | // AC[i]: Long "smidig" [smi:Di] | ||||
| // Change the length of short vowels (?+vowel) | |||||
| procedure ShortVowelLength | |||||
| // "endelig" - Short initial vowel sounds too short | |||||
| IF thisPh(isWordStart) THEN | |||||
| length 160 | |||||
| RETURN | |||||
| ENDIF | |||||
| // "slutte" t/d + @- makes the u too long | |||||
| IF next2PhW(@-) THEN | |||||
| IF nextPhW(t) OR nextPhW(d) THEN | |||||
| //length 100 | |||||
| LengthAdd -50 | |||||
| // Don't shorten it further if it comes after an "r" sound | |||||
| // Exit the procedure | |||||
| RETURN | |||||
| ENDIF | |||||
| ENDIF | |||||
| // "bygget" - consonant + [@-D] makes the vowel too long | |||||
| IF next2PhW(@-) THEN | |||||
| IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN | |||||
| LengthAdd -50 | |||||
| // Don't shorten it further if it comes after an "r" sound ("brygget") | |||||
| // Exit the procedure | |||||
| RETURN | |||||
| ENDIF | |||||
| ENDIF | |||||
| // "bygger" - consonant + [V] makes the vowel too long | |||||
| IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||||
| LengthAdd -50 | |||||
| // Don't shorten it further if it comes after an "r" sound ("brygger") | |||||
| // Exit the procedure | |||||
| RETURN | |||||
| ENDIF | |||||
| // "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| // length 100 | |||||
| LengthAdd -50 | |||||
| ENDIF | |||||
| // "ring", "ringe", "fængsel" | |||||
| IF nextPhW(N) THEN | |||||
| // length 100 | |||||
| LengthAdd -10 | |||||
| ENDIF | |||||
| // "sigte" t/d + @- makes the vowel too long | |||||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN | |||||
| IF next3PhW(@-) THEN | |||||
| // length 100 | |||||
| LengthAdd -50 | |||||
| ENDIF | |||||
| ENDIF | |||||
| endprocedure | |||||
| // Change the length of normal vowels (without ? in front of them) | |||||
| procedure LongVowelLength | |||||
| // "alene" - Short initial vowel sounds too short at length 140 | |||||
| IF thisPh(isWordStart) THEN | |||||
| length 160 | |||||
| RETURN | |||||
| ENDIF | |||||
| // "forlade" - [D@-] makes the vowel too long | |||||
| IF nextPhW(D) AND next2PhW(@-) THEN | |||||
| length 180 | |||||
| RETURN | |||||
| ENDIF | |||||
| // PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n] | |||||
| IF nextPhW(@-) OR nextPhW(V) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i] | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "ræve", "dele", "mene", "røve", "møve" | |||||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| // Don't make "møve" [m'Ww_!@-_!] short | |||||
| IF NOT next2PhW(_!) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| ENDIF | |||||
| // "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| IF next2PhW(@-) OR next2PhW(V) THEN | |||||
| // length 180 | |||||
| LengthAdd -70 | |||||
| ENDIF | |||||
| ENDIF | |||||
| // "syste", "sylte" t/d/D + @- makes the vowel too long | |||||
| // "international", - added [V] TEST | |||||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) OR next2PhW(D) THEN | |||||
| IF next3PhW(@-) OR next3PhW(V) THEN | |||||
| length 110 | |||||
| ENDIF | |||||
| ENDIF | |||||
| // "glimrende" [l/3] makes the following vowel too long | |||||
| // LengthAdd doesn't work here. The length could be 225 or 140 - 30 | |||||
| IF prevPhW(l/3) THEN | |||||
| // LengthAdd -30 | |||||
| length 110 | |||||
| ENDIF | |||||
| // "længe" - short - 2 consonants => 1 consonant (ng => [N]) | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| endprocedure | |||||
| // A bit longer than [@-] | |||||
| phoneme @ | phoneme @ | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| unstressed | unstressed | ||||
| length 140 | length 140 | ||||
| // Long vowel followed by consonant and @- "gide", "pile" | // Long vowel followed by consonant and @- "gide", "pile" | ||||
| IF nextPhW(isNotVowel) AND next2PhW(@-) THEN | IF nextPhW(isNotVowel) AND next2PhW(@-) THEN | ||||
| length 225 | |||||
| // length 225 | |||||
| ENDIF | ENDIF | ||||
| // "gider", vrider" | // "gider", vrider" | ||||
| IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | ||||
| length 140 | length 140 | ||||
| ENDIF | ENDIF | ||||
| // PB long vowel followed by [@-] - "pigen" [p'i@-n] | |||||
| IF nextPhW(@-) OR nextPhW(V) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "vilje" - short followed by 2 consonants | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| // PB "tie", "stige", "krige" vowel + vowel: extra length | |||||
| // What is causing this very short [i] in words with final [@-]? | |||||
| // NOT "galleriet" [g,?&lVR'i@-D] | |||||
| IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN | |||||
| // length 240 | |||||
| ENDIF | |||||
| //"skider" short | //"skider" short | ||||
| IF nextPhW(D) AND next2PhW(V) THEN | IF nextPhW(D) AND next2PhW(V) THEN | ||||
| length 140 | length 140 | ||||
| IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN | IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| CALL LongVowelLength | |||||
| FMT(vowel/i_4) | FMT(vowel/i_4) | ||||
| endphoneme | endphoneme | ||||
| // sviret vs. svirret | // sviret vs. svirret | ||||
| phoneme ?i | phoneme ?i | ||||
| vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
| length 100 | |||||
| length 140 | |||||
| CALL ShortVowelLength | |||||
| IfNextVowelAppend(;) | IfNextVowelAppend(;) | ||||
| FMT(vowel/i_4) | FMT(vowel/i_4) | ||||
| endphoneme | endphoneme | ||||
| phoneme e | phoneme e | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 140 | length 140 | ||||
| // "dele", "mene" | |||||
| IF next2PhW(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // PB "ring", "ringe" | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| // PB "enig", "enige", "evig" | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "nedladende" [n'eDl&D@-n@-], "delte" - before 2 consonants: short | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/e) | FMT(vowel/e) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?e | phoneme ?e | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 140 | length 140 | ||||
| // "rigtigt" R makes the e too long | |||||
| IF prevPhW(R) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| // "sigte" t/d + @- makes the e too long | |||||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) AND next3PhW(@-) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/e) | FMT(vowel/e) | ||||
| endphoneme | endphoneme | ||||
| IF thisPh(isWordEnd) THEN | IF thisPh(isWordEnd) THEN | ||||
| IfNextVowelAppend(_!) | IfNextVowelAppend(_!) | ||||
| ENDIF | ENDIF | ||||
| // "ræve" | |||||
| IF nextVowel(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "ære", "kærester", "ærefrygt" - longer E | |||||
| // "ære", "kærester", "ærefrygt" - vowel + vowel | |||||
| IF nextPhW(V) THEN | IF nextPhW(V) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "stædig" [st'EDi] long | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| // "dræber" TEST shortened by -70 in procedure because of the "r" sound | |||||
| IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) AND next2PhW(V) THEN | |||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "længe" - short - 2 consonants => 1 consonant | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| // "værelse" [v'E3-Vls@_!] | // "værelse" [v'E3-Vls@_!] | ||||
| IF nextPhW(3-) AND next2PhW(V) THEN | IF nextPhW(3-) AND next2PhW(V) THEN | ||||
| length 100 | length 100 | ||||
| ENDIF | |||||
| // "mælkebøtte" - short followed by 2 consonants | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| length 140 | |||||
| ENDIF | ENDIF | ||||
| FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
| endphoneme | endphoneme | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| ipa ε | ipa ε | ||||
| length 140 | length 140 | ||||
| // "fred" R makes the E too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| // "fængsel" N makes the E too long | |||||
| IF nextPhW(N) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
| endphoneme | endphoneme | ||||
| length 140 | length 140 | ||||
| // "same", "sale", "bade" - consonant + @-: long | // "same", "sale", "bade" - consonant + @-: long | ||||
| // but NOT "hinanden" | // but NOT "hinanden" | ||||
| IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN | |||||
| length 225 | |||||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN | |||||
| IF NOT next3PhW(n) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| ENDIF | ENDIF | ||||
| // ThisPh + V or @- | // ThisPh + V or @- | ||||
| // "ae", "aer" vowel + vowel: extra length | // "ae", "aer" vowel + vowel: extra length | ||||
| IF nextPhW(@-) OR nextPhW(V) THEN | IF nextPhW(@-) OR nextPhW(V) THEN | ||||
| length 260 | length 260 | ||||
| ENDIF | ENDIF | ||||
| // "stadig" [st&Di], "stadigt" [st&Dit] | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "Alfie", "alfer" - short before 2 consonants | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/ee_2) | FMT(vowel/ee_2) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?& | phoneme ?& | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 140 | length 140 | ||||
| FMT(vowel/ee_2) | |||||
| FMT(vowel/ee_2) | |||||
| endphoneme | endphoneme | ||||
| // Added for the æ in "dræbt" | // Added for the æ in "dræbt" | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 140 | length 140 | ||||
| ipa a | ipa a | ||||
| CALL LongVowelLength | |||||
| // CALL ShortVowelLength | |||||
| FMT(vowel/&) | FMT(vowel/&) | ||||
| endphoneme | endphoneme | ||||
| // "revl" vs. "tremme" | // "revl" vs. "tremme" | ||||
| phoneme ?&# | phoneme ?&# | ||||
| vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
| length 120 | |||||
| length 140 | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/&) | FMT(vowel/&) | ||||
| endphoneme | endphoneme | ||||
| phoneme A // PB changed to a_8 | phoneme A // PB changed to a_8 | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 140 | length 140 | ||||
| // PB long vowel followed by consonant and certain vowels - "drabelig" | |||||
| IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "bange" [bAN@-] - [N] = 2 consonants (ng) => short | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| // "fare" [f'A:A] | // "fare" [f'A:A] | ||||
| IF nextPhW(A) THEN | IF nextPhW(A) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | |||||
| // "gratis" | |||||
| IF next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||||
| length 140 | |||||
| ENDIF | ENDIF | ||||
| FMT(vowel/a_8) | FMT(vowel/a_8) | ||||
| endphoneme | endphoneme | ||||
| // PB short A | // PB short A | ||||
| // "drab" vs. "drabelig" | |||||
| // "krabbe" vs. "drabelig" | |||||
| phoneme ?A | phoneme ?A | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 140 | length 140 | ||||
| CALL ShortVowelLength | |||||
| FMT(vowel/a_8) | FMT(vowel/a_8) | ||||
| endphoneme | endphoneme | ||||
| IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN | IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "umulig" [u:m'uli] | |||||
| IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?u | phoneme ?u | ||||
| vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
| length 140 | length 140 | ||||
| // "slutte" t/d + @- makes the u too long | |||||
| IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
| endphoneme | endphoneme | ||||
| IF next2PhW(V) OR next2PhW(@-) THEN | IF next2PhW(V) OR next2PhW(@-) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "modig" - long vowel after consonant + [i] | |||||
| IF nextPhW(D) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/o_2) | FMT(vowel/o_2) | ||||
| endphoneme | endphoneme | ||||
| IF nextPhW(V) OR nextPhW(@-) THEN | IF nextPhW(V) OR nextPhW(@-) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "rådig" | |||||
| IF nextVowel(i) AND nextVowel(isFinalVowel) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "såre", "sårede" [s'O:?OD@-] | // "såre", "sårede" [s'O:?OD@-] | ||||
| IF nextPhW(O) OR nextPhW(?O) THEN | IF nextPhW(O) OR nextPhW(?O) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| CALL LongVowelLength | |||||
| FMT(vowel/o_5) | FMT(vowel/o_5) | ||||
| endphoneme | endphoneme | ||||
| phoneme V | phoneme V | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 140 | length 140 | ||||
| // "forlig" | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // PB "konge" - ng=>n | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/V_4) | FMT(vowel/V_4) | ||||
| endphoneme | endphoneme | ||||
| phoneme 0 | phoneme 0 | ||||
| vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
| length 140 //225 | |||||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| length 140 | |||||
| ipa ɔ | |||||
| FMT(vowel/oo_2) | FMT(vowel/oo_2) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?0 | phoneme ?0 | ||||
| vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
| length 140 | length 140 | ||||
| ipa ɔ | |||||
| FMT(vowel/oo_2) | FMT(vowel/oo_2) | ||||
| endphoneme | endphoneme | ||||
| // PB long vowel followed by consonant and certain vowels | // PB long vowel followed by consonant and certain vowels | ||||
| // "gyde", "gyder" | // "gyde", "gyder" | ||||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN | IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN | ||||
| length 225 | |||||
| ENDIF | |||||
| // "dydig" [dyDi] | |||||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||||
| length 225 | |||||
| // not "gebyret" TEST | |||||
| IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| ENDIF | ENDIF | ||||
| // "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] | // "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] | ||||
| IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN | IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN | ||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "tyve" | // "tyve" | ||||
| IF nextPhW(?u) AND next2PhW(@-) THEN | |||||
| IF nextPhW(w) AND next2PhW(@-) THEN | |||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| // "bryde" R makes the y too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| length 180 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/y) | FMT(vowel/y) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?y | phoneme ?y | ||||
| vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
| length 140 | length 140 | ||||
| // "udrydde" R makes the y too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| // "hytte" t/d + @- makes the y too long | |||||
| IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/y) | FMT(vowel/y) | ||||
| endphoneme | endphoneme | ||||
| phoneme Y | phoneme Y | ||||
| vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
| length 225 | |||||
| IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||||
| glstop | |||||
| length 140 | |||||
| ENDIF | |||||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||||
| length 140 | |||||
| IF nextPhW(V) OR nextPhW(@-) THEN | |||||
| length 225 | length 225 | ||||
| ENDIF | ENDIF | ||||
| FMT(vowel/yy) | FMT(vowel/yy) | ||||
| phoneme W | phoneme W | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 140 | length 140 | ||||
| // "kløe" vowel + vowel: long | |||||
| IF nextPhW(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "røve" W + 1 consonant + 3 or W or @ | |||||
| IF next2PhW(@-) OR next2PhW(3) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "røveri" but NOT "surfer" [sWfV] TEST | // "røveri" but NOT "surfer" [sWfV] TEST | ||||
| IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | ||||
| length 140 | length 140 | ||||
| ENDIF | ENDIF | ||||
| // PB "nødig", "nødigt", "kølige" - long | |||||
| IF nextVowel(i) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "møve" [mWw@-] - long | |||||
| IF nextPhW(w) AND nextVowel(@-) THEN | |||||
| length 225 | |||||
| ENDIF | |||||
| // "børnebog" - short | // "børnebog" - short | ||||
| IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN | IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN | ||||
| length 140 | length 140 | ||||
| ENDIF | ENDIF | ||||
| // PB "synge" | |||||
| IF nextPhW(N) THEN | |||||
| length 140 | |||||
| ENDIF | |||||
| CALL LongVowelLength | |||||
| FMT(vowel/oe) | FMT(vowel/oe) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?W | phoneme ?W | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 140 | length 140 | ||||
| // "bryllup", "rødder" R makes the y too long | |||||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||||
| length 100 | |||||
| ENDIF | |||||
| CALL ShortVowelLength | |||||
| FMT(vowel/oe) | FMT(vowel/oe) | ||||
| endphoneme | endphoneme | ||||
| phoneme ?W# | phoneme ?W# | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 140 | length 140 | ||||
| CALL ShortVowelLength | |||||
| FMT(vowel/V) | FMT(vowel/V) | ||||
| endphoneme | endphoneme | ||||
| phoneme l/3 // Replacement for [l/] | phoneme l/3 // Replacement for [l/] | ||||
| liquid | liquid | ||||
| lengthmod 7 | lengthmod 7 | ||||
| IF nextPhW(isVowel) THEN | |||||
| // ChangePhoneme(l) | |||||
| ENDIF | |||||
| PrevVowelEndings | |||||
| VowelEnding(l/l_@) | |||||
| VowelEnding(l/l_a) | |||||
| VowelEnding(l/l_e, -50) // hjælpe | |||||
| VowelEnding(l/l_i, -70) // flygte? | |||||
| VowelEnding(l/l_o, -60) // stole, skole, hjulpet | |||||
| VowelEnding(l/l_u, -70) | |||||
| EndSwitch | |||||
| // IF nextPh(isLiquid) THEN | |||||
| // FMT(l/_l) | |||||
| // ENDIF | |||||
| FMT(l/l_) | FMT(l/l_) | ||||
| endphoneme | endphoneme | ||||
| phoneme aI3 | phoneme aI3 | ||||
| vowel starttype #a endtype #@ | vowel starttype #a endtype #@ | ||||
| length 300 | |||||
| length 310 | |||||
| ipa aɪɚ | ipa aɪɚ | ||||
| IfNextVowelAppend(r-) | IfNextVowelAppend(r-) | ||||
| FMT(vwl_en_us/ai3) | FMT(vwl_en_us/ai3) |
| ChangePhoneme(NULL) | ChangePhoneme(NULL) | ||||
| endphoneme | endphoneme | ||||
| phoneme z. | |||||
| CALL base/z. | |||||
| ipa U+027B | |||||
| endphoneme |
| case kRETURN: | case kRETURN: | ||||
| *prog_out++ = i_RETURN; | *prog_out++ = i_RETURN; | ||||
| DecThenCount(); | |||||
| break; | break; | ||||
| case kINCLUDE: | case kINCLUDE: |
| else | else | ||||
| language = L('e','n'); | language = L('e','n'); | ||||
| if(language != tr->translator_name) | |||||
| if((language != tr->translator_name) || (language == L('k','o'))) | |||||
| { | { | ||||
| char *p3; | |||||
| int initial, code; | |||||
| char hangul_buf[12]; | |||||
| // speak in the language for this alphabet (or English) | // speak in the language for this alphabet (or English) | ||||
| ph_buf[2] = SetTranslator2(WordToString2(language)); | ph_buf[2] = SetTranslator2(WordToString2(language)); | ||||
| LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); | |||||
| if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af)) | |||||
| { | |||||
| // Special case for Korean letters. | |||||
| // break a syllable hangul into 2 or 3 individual jamo | |||||
| hangul_buf[0] = ' '; | |||||
| p3 = &hangul_buf[1]; | |||||
| if((initial = (code/28)/21) != 11) | |||||
| { | |||||
| p3 += utf8_out(initial + 0x1100, p3); | |||||
| } | |||||
| utf8_out(((code/28) % 21) + 0x1161, p3); // medial | |||||
| utf8_out((code % 28) + 0x11a7, &p3[3]); // final | |||||
| p3[6] = ' '; | |||||
| p3[7] = 0; | |||||
| ph_buf[3] = 0; | |||||
| TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL); | |||||
| SetWordStress(translator2, &ph_buf[3], NULL, -1, 0); | |||||
| } | |||||
| else | |||||
| { | |||||
| LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); | |||||
| } | |||||
| if(ph_buf[3] == phonSWITCH) | if(ph_buf[3] == phonSWITCH) | ||||
| { | { |
| int delete_count; | int delete_count; | ||||
| int word_start; | int word_start; | ||||
| int inserted; | int inserted; | ||||
| int deleted; | |||||
| PHONEME_DATA phdata; | PHONEME_DATA phdata; | ||||
| int n_ph_list3; | int n_ph_list3; | ||||
| plist3 = &ph_list3[j]; | plist3 = &ph_list3[j]; | ||||
| inserted = 0; | inserted = 0; | ||||
| deleted = 0; | |||||
| if(insert_ph != 0) | if(insert_ph != 0) | ||||
| { | { | ||||
| // we have a (linking) phoneme which we need to insert here | // we have a (linking) phoneme which we need to insert here | ||||
| plist3->phcode = alternative; | plist3->phcode = alternative; | ||||
| if(alternative == 1) | if(alternative == 1) | ||||
| continue; // NULL phoneme, discard | |||||
| if(ph->type == phVOWEL) | |||||
| { | { | ||||
| plist3->synthflags |= SFLAG_SYLLABLE; | |||||
| if(ph2->type != phVOWEL) | |||||
| plist3->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed | |||||
| deleted = 1; // NULL phoneme, discard | |||||
| } | } | ||||
| else | else | ||||
| plist3->synthflags &= ~SFLAG_SYLLABLE; | |||||
| { | |||||
| if(ph->type == phVOWEL) | |||||
| { | |||||
| plist3->synthflags |= SFLAG_SYLLABLE; | |||||
| if(ph2->type != phVOWEL) | |||||
| plist3->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed | |||||
| } | |||||
| else | |||||
| plist3->synthflags &= ~SFLAG_SYLLABLE; | |||||
| // re-interpret the changed phoneme | |||||
| // But it doesn't obey a second ChangePhoneme() | |||||
| InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata); | |||||
| // re-interpret the changed phoneme | |||||
| // But it doesn't obey a second ChangePhoneme() | |||||
| InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata); | |||||
| } | |||||
| } | } | ||||
| if(ph->type == phVOWEL) | |||||
| if((ph->type == phVOWEL) && (deleted == 0)) | |||||
| { | { | ||||
| PHONEME_LIST *p; | PHONEME_LIST *p; | ||||
| } | } | ||||
| } | } | ||||
| if(plist3 != plist3_inserted) | |||||
| if((plist3 != plist3_inserted) && (ix > 0)) | |||||
| { | { | ||||
| if((x = (tr->langopts.word_gap & 0x7)) != 0) | if((x = (tr->langopts.word_gap & 0x7)) != 0) | ||||
| { | { | ||||
| // not yet implemented | // not yet implemented | ||||
| } | } | ||||
| phlist[ix].ph = ph; | |||||
| phlist[ix].type = ph->type; | |||||
| phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module | |||||
| phlist[ix].synthflags = plist3->synthflags; | |||||
| phlist[ix].stresslevel = plist3->stresslevel & 0xf; | |||||
| phlist[ix].wordstress = plist3->wordstress; | |||||
| phlist[ix].tone_ph = plist3->tone_ph; | |||||
| phlist[ix].sourceix = 0; | |||||
| phlist[ix].phcode = ph->code; | |||||
| if(plist3->sourceix != 0) | |||||
| if(deleted == 0) | |||||
| { | { | ||||
| phlist[ix].sourceix = plist3->sourceix; | |||||
| phlist[ix].newword = 1; // this phoneme is the start of a word | |||||
| phlist[ix].ph = ph; | |||||
| phlist[ix].type = ph->type; | |||||
| phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module | |||||
| phlist[ix].synthflags = plist3->synthflags; | |||||
| phlist[ix].stresslevel = plist3->stresslevel & 0xf; | |||||
| phlist[ix].wordstress = plist3->wordstress; | |||||
| phlist[ix].tone_ph = plist3->tone_ph; | |||||
| phlist[ix].sourceix = 0; | |||||
| phlist[ix].phcode = ph->code; | |||||
| if(plist3->sourceix != 0) | |||||
| { | |||||
| phlist[ix].sourceix = plist3->sourceix; | |||||
| phlist[ix].newword = 1; // this phoneme is the start of a word | |||||
| if(start_sentence) | |||||
| if(start_sentence) | |||||
| { | |||||
| phlist[ix].newword = 5; // start of sentence + start of word | |||||
| start_sentence = 0; | |||||
| } | |||||
| } | |||||
| else | |||||
| { | { | ||||
| phlist[ix].newword = 5; // start of sentence + start of word | |||||
| start_sentence = 0; | |||||
| phlist[ix].newword = 0; | |||||
| } | } | ||||
| } | |||||
| else | |||||
| { | |||||
| phlist[ix].newword = 0; | |||||
| } | |||||
| // phlist[ix].length = ph->std_length; | |||||
| phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2; | |||||
| if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0)) | |||||
| { | |||||
| phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT]; | |||||
| phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed | |||||
| } | |||||
| // phlist[ix].length = ph->std_length; | |||||
| phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2; | |||||
| if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0) && (plist3[1].sourceix != 0)) | |||||
| { | |||||
| phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT]; | |||||
| phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed | |||||
| } | |||||
| if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE)) | |||||
| { | |||||
| phlist[ix].length = 128; // length_mod | |||||
| phlist[ix].env = PITCHfall; | |||||
| } | |||||
| if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE)) | |||||
| { | |||||
| phlist[ix].length = 128; // length_mod | |||||
| phlist[ix].env = PITCHfall; | |||||
| } | |||||
| phlist[ix].prepause = 0; | |||||
| phlist[ix].amp = 20; // default, will be changed later | |||||
| phlist[ix].pitch1 = 255; | |||||
| phlist[ix].pitch2 = 255; | |||||
| ix++; | |||||
| phlist[ix].prepause = 0; | |||||
| phlist[ix].amp = 20; // default, will be changed later | |||||
| phlist[ix].pitch1 = 255; | |||||
| phlist[ix].pitch2 = 255; | |||||
| ix++; | |||||
| } | |||||
| } | } | ||||
| phlist[ix].newword = 2; // end of clause | phlist[ix].newword = 2; // end of clause | ||||
| 0x055e, // Armenian question | 0x055e, // Armenian question | ||||
| 0x055b, // Armenian emphasis mark | 0x055b, // Armenian emphasis mark | ||||
| 0x060c, // Arabic , | |||||
| 0x061b, // Arabic ; | 0x061b, // Arabic ; | ||||
| 0x061f, // Arabic ? | 0x061f, // Arabic ? | ||||
| 0x06d4, // Arabic . | 0x06d4, // Arabic . | ||||
| CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question | CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question | ||||
| CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark | CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark | ||||
| CLAUSE_COMMA, // Arabic , | |||||
| CLAUSE_SEMICOLON, // Arabic ; | CLAUSE_SEMICOLON, // Arabic ; | ||||
| CLAUSE_QUESTION, // Arabic question mark | CLAUSE_QUESTION, // Arabic question mark | ||||
| CLAUSE_PERIOD, // Arabic full stop | CLAUSE_PERIOD, // Arabic full stop |
| int last_pitch = 0; | int last_pitch = 0; | ||||
| int pitch_start; | int pitch_start; | ||||
| int length_mod; | int length_mod; | ||||
| int next2type; | |||||
| int len; | int len; | ||||
| int env2; | int env2; | ||||
| int end_of_clause; | int end_of_clause; | ||||
| p->prepause = 40; | p->prepause = 40; | ||||
| if((prev->type == phPAUSE) || (prev->type == phVOWEL)) // || (prev->ph->mnemonic == ('/'*256+'r'))) | |||||
| p->prepause = 0; | |||||
| if(prev->type == phVOWEL) | |||||
| { | |||||
| p->prepause = 0; // use murmur instead to link from the preceding vowel | |||||
| } | |||||
| else | |||||
| if(prev->type == phPAUSE) | |||||
| { | |||||
| // reduce by the length of the preceding pause | |||||
| if(prev->length < p->prepause) | |||||
| p->prepause -= prev->length; | |||||
| else | |||||
| p->prepause = 0; | |||||
| } | |||||
| else | else | ||||
| if(p->newword==0) | if(p->newword==0) | ||||
| { | { | ||||
| next3 = &phoneme_list[ix+4]; | next3 = &phoneme_list[ix+4]; | ||||
| } | } | ||||
| next2type = next2->ph->length_mod; | |||||
| if(more_syllables==0) | if(more_syllables==0) | ||||
| { | { | ||||
| len = tr->langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod]; | |||||
| if(next->newword || next2->newword) | |||||
| { | |||||
| // don't use 2nd phoneme over a word boundary, unless it's a pause | |||||
| if(next2type != 1) | |||||
| next2type = 0; | |||||
| } | |||||
| len = tr->langopts.length_mods0[next2type *10+ next->ph->length_mod]; | |||||
| if((next->newword) && (tr->langopts.word_gap & 0x20)) | if((next->newword) && (tr->langopts.word_gap & 0x20)) | ||||
| { | { | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| length_mod = tr->langopts.length_mods[next2->ph->length_mod *10+ next->ph->length_mod]; | |||||
| length_mod = tr->langopts.length_mods[next2type *10+ next->ph->length_mod]; | |||||
| if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS)) | if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS)) | ||||
| length_mod -= 15; | length_mod -= 15; |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.47.03e 29.Mar.13"; | |||||
| const char *version_string = "1.47.03f 31.Mar.13"; | |||||
| const int version_phdata = 0x014701; | const int version_phdata = 0x014701; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, | {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, | ||||
| {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, | {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, | ||||
| {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, | {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, | ||||
| {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, | |||||
| {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, L('k','o'), AL_WORDS}, | |||||
| {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, | {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, | ||||
| {"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, | {"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, | ||||
| {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, | {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, | ||||
| {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, | {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, | ||||
| {"_ko", 0xa700, 0xa700,0xd7ff, 0, AL_NOT_CODE}, | |||||
| {"_ko", 0xa700, 0xa700,0xd7ff, L('k','o'), AL_NOT_CODE | AL_WORDS}, | |||||
| {NULL, 0, 0, 0, 0, 0} | {NULL, 0, 0, 0, 0, 0} | ||||
| }; | }; | ||||
| translator2->phoneme_tab_ix = new_phoneme_tab; | translator2->phoneme_tab_ix = new_phoneme_tab; | ||||
| } | } | ||||
| } | } | ||||
| translator2->phonemes_repeat[0] = 0; | |||||
| return(new_phoneme_tab); | return(new_phoneme_tab); | ||||
| } // end of SetTranslator2 | } // end of SetTranslator2 | ||||
| 0x72,0x73,0x74,0x75 | 0x72,0x73,0x74,0x75 | ||||
| }; | }; | ||||
| // check for Korean Hangul letters | |||||
| if(((code = c - 0xac00) >= 0) && (c <= 0xd7af)) | |||||
| { | |||||
| // break a syllable hangul into 2 or 3 individual jamo | |||||
| initial = (code/28)/21; | |||||
| medial = (code/28) % 21; | |||||
| final = code % 28; | |||||
| if(initial == 11) | |||||
| { | |||||
| // null initial | |||||
| c = medial + 0x1161; | |||||
| if(final > 0) | |||||
| *insert = final + 0x11a7; | |||||
| } | |||||
| else | |||||
| { | |||||
| // extact the initial and insert the remainder with a null initial | |||||
| c = initial + 0x1100; | |||||
| *insert = (11*28*21) + (medial*28) + final + 0xac00; | |||||
| } | |||||
| return(c); | |||||
| } | |||||
| else if(((code = c - 0x3130) >= 0) && (code < 0x34)) | |||||
| { | |||||
| // Hangul compatibility jamo | |||||
| return(hangul_compatibility[code] + 0x1100); | |||||
| } | |||||
| switch(tr->translator_name) | switch(tr->translator_name) | ||||
| { | { | ||||
| case L('a','f'): | case L('a','f'): | ||||
| } | } | ||||
| } | } | ||||
| break; | break; | ||||
| case L('k','o'): | |||||
| if(((code = c - 0xac00) >= 0) && (c <= 0xd7af)) | |||||
| { | |||||
| // break a syllable hangul into 2 or 3 individual jamo | |||||
| initial = (code/28)/21; | |||||
| medial = (code/28) % 21; | |||||
| final = code % 28; | |||||
| if(initial == 11) | |||||
| { | |||||
| // null initial | |||||
| c = medial + 0x1161; | |||||
| if(final > 0) | |||||
| *insert = final + 0x11a7; | |||||
| } | |||||
| else | |||||
| { | |||||
| // extact the initial and insert the remainder with a null initial | |||||
| c = initial + 0x1100; | |||||
| *insert = (11*28*21) + (medial*28) + final + 0xac00; | |||||
| } | |||||
| return(c); | |||||
| } | |||||
| else if(((code = c - 0x3130) >= 0) && (code < 0x34)) | |||||
| { | |||||
| // Hangul compatibility jamo | |||||
| return(hangul_compatibility[code] + 0x1100); | |||||
| } | |||||
| break; | |||||
| } | } | ||||
| return(SubstituteChar(tr, c, next_in, insert, wordflags)); | return(SubstituteChar(tr, c, next_in, insert, wordflags)); | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| if(iswlower(prev_in)) | |||||
| if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case | |||||
| { | { | ||||
| // lower case followed by upper case in a word | // lower case followed by upper case in a word | ||||
| if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) |
| ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | ||||
| {//======================================================================== | {//======================================================================== | ||||
| #ifndef PLATFORM_RISCOS | |||||
| char path_voices[sizeof(path_home)+12]; | |||||
| #ifdef PLATFORM_RISCOS | |||||
| if(n_voices_list == 0) | |||||
| { | |||||
| sprintf(path_voices,"%s%cvoices",path_home,PATHSEP); | |||||
| len_path_voices = strlen(path_voices)+1; | |||||
| GetVoices(path_voices); | |||||
| voices_list[n_voices_list] = NULL; // voices list terminator | |||||
| } | |||||
| return((const espeak_VOICE **)voices_list); | |||||
| #else | |||||
| int ix; | int ix; | ||||
| int j; | int j; | ||||
| espeak_VOICE *v; | espeak_VOICE *v; | ||||
| static espeak_VOICE **voices = NULL; | static espeak_VOICE **voices = NULL; | ||||
| char path_voices[sizeof(path_home)+12]; | |||||
| // free previous voice list data | // free previous voice list data | ||||
| FreeVoiceList(); | FreeVoiceList(); | ||||
| } | } | ||||
| return((const espeak_VOICE **)voices); | return((const espeak_VOICE **)voices); | ||||
| #endif | #endif | ||||
| return((const espeak_VOICE **)voices_list); | |||||
| } // end of espeak_ListVoices | } // end of espeak_ListVoices | ||||