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 | ||||