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
@@ -1,4 +1,4 @@ | |||
// Aragon translation rules | |||
// Aragon translation rules | |||
// This file is UTF-8 encoded | |||
// letters | |||
@@ -182,6 +182,7 @@ $ d'olar | |||
/ baRRa | |||
\ kontraBaRRa | |||
| b'aRRaBertik'al | |||
° graUs | |||
_- gj'on | |||
! TaRR'ar||eksklamaTj'on |
@@ -5,7 +5,7 @@ | |||
// Bengali numbers are changed to latin characters before translation | |||
_0 S'unjO | |||
_1 '&k | |||
_2 duj | |||
_2 d'uj | |||
_3 t'in | |||
_4 tS'ar | |||
_5 p'a~tS | |||
@@ -125,7 +125,7 @@ _0M1 h'ajar | |||
_0M2 l'ak# | |||
_0M3 k'ot.i | |||
_0M4 'Orbud | |||
_dpt dOsomik | |||
_dpt _d'Osomik_ | |||
// Single consonants | |||
@@ -133,40 +133,42 @@ _dpt dOsomik | |||
খ k#O | |||
গ gO | |||
ঘ g#O | |||
ঙ 'uNO | |||
ঙ 'uNO~ | |||
চ tSO | |||
ছ tShO // [h] to distinguish from [tS] | |||
জ JO | |||
ঝ J#O | |||
ঞ 'iNO | |||
ঞ 'iNO~ | |||
ট t.O | |||
ঠ t.#O | |||
ড d.O | |||
ঢ d.#O | |||
ণ m'odd#ennO | |||
ণ m,odd#en.n.'O | |||
ত tO | |||
থ t#O | |||
দ dO | |||
ধ d#O | |||
ন d'ontennO | |||
ন d,ontenn'O | |||
প pO | |||
ফ fO // or [p#O] ? | |||
ব bO | |||
ভ b#O | |||
ম mO | |||
য় Oj | |||
য ontostedZ'O | |||
য ,ontostedZ'O | |||
র rO | |||
ড় r.O | |||
ড় r.O // (d. + nukta) | |||
ঢ় hr.O | |||
ঢ় hr.O // (d#. + nukta) | |||
ল lO | |||
শ taleboS:O | |||
ষ mud#en:oS:O | |||
স d'onteS:O | |||
শ t,aleboS:'O | |||
ষ m,ud#en:oS:'O | |||
স d,onteS:'O | |||
হ hO | |||
ৎ kh'Ond.otO | |||
ৎ kh,Ond.ot'O | |||
ক্ষ k,ojmud#en:oS:'O | |||
// full vowels | |||
অ O | |||
@@ -176,11 +178,16 @@ _dpt dOsomik | |||
উ hrOS:o'u | |||
ঊ dirg#o'u | |||
ঋ ri | |||
এ e | |||
ঐ oj | |||
ও o | |||
ঔ ow | |||
এ e $u+ // word 'it' | |||
ঐ oj $u+ // word 'that' | |||
ও o $u+ $brk // 'and' | |||
_এ e | |||
_ঐ oj | |||
_ও o | |||
// combining vowel signs | |||
া 'akar | |||
ি r'oS:ikar | |||
@@ -200,12 +207,17 @@ _dpt dOsomik | |||
ঁ tS'Ondrobindu | |||
় b'indu | |||
_, koma | |||
$ d.Olar | |||
% SOtk'Ora | |||
+ jOg | |||
= SOman | |||
// Punctuation | |||
। dVn.d.V | |||
_, koma | |||
_? pr'oSnOtSihnO | |||
// Pronouns | |||
আমি $u // main: I |
@@ -1,4 +1,4 @@ | |||
| |||
// This file is UTF8 encoded | |||
// letter groups: | |||
@@ -384,3 +384,5 @@ | |||
ৢ l- | |||
ৣ l- | |||
__) - (_D bij'og | |||
D_) - (_D bij'og |
@@ -54,38 +54,38 @@ _?? symbol | |||
_#9 tab | |||
_#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: | |||
_; se:mi:ko:lVn | |||
_; semiko:lVn | |||
_: k'o:lVn | |||
_. pONtOm // PN u => O | |||
_? spWrgsmVlstajn | |||
_! udRVbstejn | |||
_- binnesdrai | |||
__ b'Onsdrai | |||
_? spWrsmOlstAjn | |||
_! udRVbstAjn | |||
_- bin@-sdrAi | |||
__ b'OnsdrAi | |||
& _Vw | |||
£ pun? | |||
€ euro | |||
© kVpirajt | |||
÷ divid'eReD||meD | |||
© kVpirAjt | |||
÷ divid'eRVD||mED | |||
= l'imeD | |||
# n'OmV | |||
§ paragr'af | |||
× g'aNe | |||
ª feminin||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 | |||
¥ j'en: | |||
µ my | |||
' apostr'Vf | |||
½ en'hal | |||
½ en'h&l | |||
+ plus | |||
// numbers | |||
@@ -11132,7 +11132,7 @@ ide id'e // idea | |||
idé id'e // idea | |||
tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | |||
ny ny // new | |||
også Vs@- // also | |||
også ?Vs@- // also | |||
idet id'e // in so far as | |||
(rub og stub) R'Ob||V||sd'Ob | |||
tre tr'E // the number 3 | |||
@@ -11140,8 +11140,8 @@ rejicere rejis'eV // PB should not be pronounced [raje] | |||
rejicerer rejis'eV // PB | |||
rejiceres rejis'eVs // 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 | |||
bliver blir // PB | |||
konfirmand kVnferm'&nd // PB |
@@ -25,7 +25,7 @@ n^ p p` r s S t t` | |||
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 | |||
o O oI u U | |||
@@ -36,7 +36,7 @@ Q r R R2 s S t T | |||
t# tS w x | |||
Dictionary te_dict 2013-03-26 | |||
Dictionary te_dict 2013-03-31 | |||
a a: aI aU e E e: i | |||
i: l- o o: r- u u: | |||
@@ -60,7 +60,7 @@ s; t t; tS ts v x z | |||
Z z; | |||
Dictionary bn_dict 2013-03-29 | |||
Dictionary bn_dict 2013-03-31 | |||
& a a~ e e~ i i~ l- | |||
o O o: O~ o~ r- u u~ | |||
@@ -111,7 +111,7 @@ p r s S t T v w | |||
x z | |||
Dictionary da_dict 2013-03-29 | |||
Dictionary da_dict 2013-03-31 | |||
& &# 0 3 ?& ?&# ?0 ?A | |||
?e ?E ?i ?o ?O ?u ?V ?W | |||
@@ -150,7 +150,7 @@ p Q r R s s; t T | |||
ts v x z | |||
Dictionary en_dict 2013-03-28 | |||
Dictionary en_dict 2013-03-30 | |||
0 0# 3 3: @ @- @2 @5 | |||
@L a a# A: A@ aa aI aI3 | |||
@@ -178,7 +178,7 @@ s S t T tS ts v w | |||
x z Z | |||
Dictionary es_dict 2013-03-28 | |||
Dictionary es_dict 2013-03-29 | |||
@ a aI aU e E eI eU | |||
i o O oI u | |||
@@ -273,10 +273,10 @@ N n^ p r R R2 s S | |||
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- | |||
u U u: u~ V | |||
@@ -336,7 +336,7 @@ n^# p Q r R r# R2 s | |||
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 | |||
i I i# o O u | |||
@@ -462,7 +462,7 @@ N n^ p r R s S t | |||
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 | |||
e: i I i: o o: r- u | |||
@@ -501,7 +501,7 @@ r r. s S s. t t# t. | |||
t.# v w x z | |||
Dictionary nl_dict 2013-03-27 | |||
Dictionary nl_dict 2013-03-29 | |||
8 @ @- a A a: A~ e | |||
E e# E2 e: EI eU i I | |||
@@ -563,7 +563,7 @@ S s; S; t t; tS ts tS; | |||
ts; v w x z Z Z; | |||
Dictionary pt_dict 2013-03-29 | |||
Dictionary pt_dict 2013-03-31 | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
@@ -592,7 +592,7 @@ ts; v v; w w2 x z Z | |||
z; Z; | |||
Dictionary ru_dict 2011-10-24 | |||
Dictionary ru_dict 2013-03-31 | |||
8 @- a A e E E# E% | |||
E2 i I I# I3 I^ ja ju |
@@ -1,4 +1,4 @@ | |||
| |||
// You can use the en_extra file, rather than this one | |||
// to add your own pronunciation definitions. | |||
@@ -1631,6 +1631,7 @@ gigantic dZaIg'antIk | |||
gilead g'IlIad | |||
gimme gImi | |||
giraffe dZI2raaf | |||
github gIthVb | |||
glacier gleIS3 | |||
goin ,goUI2n $only // for goin' | |||
gonna g,@n@ |
@@ -29,6 +29,7 @@ _tld t'ilde | |||
// names of symbols | |||
ª a | |||
º o | |||
° grados | |||
_. punto | |||
_, koma | |||
_; p,untoik'oma |
@@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
श S@ | |||
ष s.@ // retroflex [S] | |||
स s@ | |||
ह H@- | |||
ह H@ | |||
क़ q@ | |||
ख़ x@ | |||
ग़ Q@ | |||
@@ -196,10 +196,21 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
_?? Vks.@r | |||
// Alphabet names | |||
_ar 'Vrbi | |||
_cyr sIrIk'Ik | |||
_zh c'i@ni | |||
// Punctuation | |||
। dVn.d.V | |||
$ dOl@r | |||
% pVt'IS@t | |||
+ plVs | |||
= bVr'a:b@r | |||
* ta:r'a:Nk@n | |||
* | |||
// Pronouns | |||
मैं $u // main: IrI | |||
मुझे $u | |||
@@ -262,7 +273,7 @@ _?? Vks.@r | |||
को $u // ko: to | |||
तक $u // tak: until, for(time) | |||
बिना $u $pause // without (preposition) | |||
में $u // me: in | |||
में me~: $u+ // me: in | |||
से $u // se: from, with, by | |||
@@ -272,7 +283,7 @@ _?? Vks.@r | |||
// Conjunctions | |||
और $u $pause // aur: and | |||
और $u $brk // aur: and | |||
य j@ $u $pause // ja: or | |||
अगर $u $pause // agar: if | |||
यदि $u $pause // yadi: if, whether | |||
@@ -299,5 +310,5 @@ _?? Vks.@r | |||
// Exceptions | |||
क्रिकेट krIk'Et | |||
क्रिकेट kr'IkIt | |||
सायबर s'aIb@r |
@@ -390,7 +390,7 @@ | |||
ः H // visarga | |||
.group ् // virama | |||
् | |||
् | |||
// Extra consonants | |||
@@ -410,7 +410,7 @@ | |||
ज़ zV | |||
ज़ (B z | |||
.group ड़ // dddha (should retroflex flap) | |||
.group ड़ // dddha (should retroflex flap ?) | |||
ड़ r.V | |||
ड़ (B r. | |||
@@ -443,8 +443,3 @@ | |||
.group | |||
$ dOlV | |||
% pVsEnt | |||
@@ -1,4 +1,4 @@ | |||
// 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] | |||
@@ -82,6 +82,7 @@ _tld t'ilde | |||
# kantSellet:o | |||
@ ki'otS:ola | |||
~ tilde | |||
° g@-*'a:di | |||
: d,uep'unti | |||
_! p,untoesklamat'ivo |
@@ -295,12 +295,5 @@ | |||
.group 0xe0a4 // devanagari | |||
0xe0a4 _^_HI // switch to hindi voice | |||
.group 0xe0a5 // devanagari | |||
0xe0a5 _^_HI | |||
.group | |||
$ do:l.ar |
@@ -1,4 +1,4 @@ | |||
| |||
// This file in UTF8 encoded | |||
// $alt2, remove s from plural, remove en from plural | |||
@@ -80,6 +80,7 @@ _- k'OpElt,e:k@n | |||
= Q@l'EIkte:k@n | |||
__ l'IgEntst@-*'e:pj@ | |||
€ 'Y:*o:t,e:k@n | |||
° Qra:d@n | |||
// numbers |
@@ -683,6 +683,7 @@ bolo $alt2 | |||
bolo $alt $verb | |||
borboleta $alt2 | |||
bordo $alt | |||
borra $alt2 $noun | |||
bosque $alt | |||
boto $alt2 $noun | |||
brejo $alt | |||
@@ -693,12 +694,13 @@ cacete $alt2 | |||
cachorra $alt2 | |||
caderneta $alt2 | |||
cadete $alt2 | |||
camelha $alt | |||
camelo $alt2 | |||
camiseta $alt2 | |||
cantora $alt2 | |||
capacete $alt2 | |||
caractere $alt | |||
carbureto $alt2 | |||
carbureto $alt2 | |||
careta $alt2 | |||
carreta $alt2 | |||
carroça $alt | |||
@@ -707,7 +709,7 @@ cateto $alt2 | |||
catorze $alt2 | |||
cebola $alt2 | |||
cefaleia $alt | |||
centopeia $alt | |||
centopeia $alt | |||
cerca $alt | |||
cerca $alt2 $noun | |||
cerco $alt $verb | |||
@@ -735,8 +737,11 @@ concerto $alt2 $noun | |||
concertos $alt2 | |||
concordo $alt | |||
conforto $alt $verb | |||
console $alt2 $noun | |||
consolo $alt2 $noun | |||
controle $alt2 $noun | |||
controles $alt2 | |||
controles $alt $verb | |||
controlo $alt2 $noun | |||
coreia $alt | |||
coreto $alt2 | |||
@@ -747,19 +752,19 @@ corto $alt | |||
corveta $alt2 | |||
corvos $alt | |||
coto $alt2 | |||
cotovelo $alt2 | |||
cotovelo $alt2 | |||
cratera $alt | |||
crede $alt2 | |||
crepe $alt | |||
decore $alt | |||
degelo $alt2 | |||
degelo $alt2 | |||
desapego $alt2 $noun | |||
descordo $alt | |||
desemprego $alt2 | |||
desemprego $alt $verb | |||
desespero $alt2 $noun | |||
desfecho $alt2 | |||
desmantelo $alt2 $noun | |||
desmantelo $alt2 $noun | |||
desporto $alt2 | |||
desportos $alt | |||
desprezo $alt2 $noun | |||
@@ -768,7 +773,7 @@ desse $alt $verb | |||
deste $alt2 | |||
deste $alt $verb | |||
desterro $alt2 | |||
destroem $alt | |||
destroem $alt | |||
deveras $alt | |||
dez $alt | |||
diarreia $alt | |||
@@ -787,11 +792,12 @@ endereço $alt $verb | |||
enforco $alt | |||
engordo $alt | |||
enredo $alt $verb | |||
enrosco $alt $verb | |||
enrosco $alt $verb | |||
enterro $alt2 $noun | |||
enumerem $alt | |||
envelope $alt | |||
envolto $alt2 | |||
enxaqueca $alt2 | |||
enxerto $alt2 $noun | |||
epopeia $alt | |||
eritreia $alt | |||
@@ -800,7 +806,7 @@ erro $alt $verb | |||
esboço $alt $verb | |||
escopeta $alt2 | |||
escova $alt2 $noun | |||
escovas $alt2 | |||
escovas $alt2 | |||
escovo $alt | |||
escroto $alt2 | |||
esforço $alt $verb | |||
@@ -813,18 +819,18 @@ espiroqueta $alt2 | |||
espoleta $alt2 | |||
esposa $alt2 | |||
esqueleto $alt2 | |||
estilete $alt2 | |||
estilete $alt2 | |||
estrela $alt2 | |||
estrofe $alt | |||
estorno $alt $verb | |||
estorvo $alt $verb | |||
etiqueta $alt2 | |||
europa $alt | |||
europeia $alt | |||
europeia $alt | |||
exagero $alt $verb | |||
explore $alt | |||
faceta $alt2 | |||
fantoche $alt | |||
fantoche $alt | |||
farofa $alt | |||
febre $alt | |||
fera $alt | |||
@@ -843,7 +849,7 @@ forca $alt2 | |||
força $alt2 $noun | |||
forças $alt2 | |||
forço $alt | |||
formos $alt2 | |||
formos $alt2 | |||
forro $alt $verb | |||
frevo $alt2 | |||
fulgores $alt2 | |||
@@ -851,8 +857,8 @@ galera $alt | |||
galileia $alt | |||
gameta $alt2 | |||
geleia $alt | |||
gelo $alt2 | |||
gelo $alt $verb | |||
gelo $alt2 | |||
gelo $alt $verb | |||
genebra $alt | |||
gesso $alt2 | |||
golpe $alt | |||
@@ -871,16 +877,18 @@ hemorroida $alt | |||
hoje $alt2 | |||
horrores $alt2 | |||
ideia $alt | |||
interesse $alt2 $noun | |||
imberbe $alt | |||
interesse $alt2 | |||
interesse $alt $verb | |||
jogo $alt2 $noun | |||
joguete $alt2 | |||
lagosta $alt2 | |||
lambreta $alt2 | |||
lebre $alt | |||
lembrete $alt2 | |||
lepra $alt | |||
lepra $alt | |||
leste $alt2 $verb | |||
lingueta $alt2 | |||
lingueta $alt2 | |||
lopes $alt | |||
macete $alt2 | |||
maior $alt | |||
@@ -901,9 +909,9 @@ minueto $alt2 | |||
miolo $alt2 | |||
miolos $alt | |||
modelo $alt2 | |||
modelo $alt $verb | |||
modelo $alt $verb | |||
moeda $alt | |||
mofo $alt $verb | |||
mofo $alt $verb | |||
molho $alt2 $noun | |||
monera $alt | |||
morcego $alt2 | |||
@@ -928,7 +936,7 @@ obstetra $alt | |||
odisseia $alt | |||
onu $1 | |||
olho $alt2 $noun | |||
onomatopeia $alt | |||
onomatopeia $alt | |||
opereta $alt2 | |||
ordens $alt | |||
osso $alt2 | |||
@@ -942,7 +950,6 @@ palacete $alt2 | |||
palheta $alt2 | |||
panfleto $alt2 | |||
pangeia $alt | |||
panqueca p,&~Nk'Ek& | |||
pantera $alt | |||
parede $alt2 | |||
pastora $alt2 | |||
@@ -970,7 +977,7 @@ pose $alt2 | |||
povos $alt | |||
poxa p'oS& | |||
primavera $alt | |||
prosopopeia $alt | |||
prosopopeia $alt | |||
quarteto $alt2 | |||
queda $alt | |||
quede $alt2 | |||
@@ -986,13 +993,13 @@ reforço $alt $verb | |||
reforços $alt | |||
refresco $alt $verb | |||
reitora $alt2 | |||
rejo $alt | |||
rejo $alt | |||
relevo $alt2 $noun | |||
remorso $alt | |||
renovo $alt $verb | |||
renovo $alt $verb | |||
retorno $alt $verb | |||
reuva $alt | |||
rigores $alt2 | |||
reuva $alt | |||
rigores $alt2 | |||
rixa x'iS& | |||
rocha $alt | |||
rock $alt | |||
@@ -1037,10 +1044,10 @@ tocha $alt | |||
toga $alt | |||
topo $alt $verb | |||
torno $alt $verb | |||
tornozelo $alt2 | |||
tornozelo $alt2 | |||
torre $alt2 $noun | |||
torres $alt2 | |||
torro $alt | |||
torro $alt | |||
tortos $alt | |||
traqueia $alt | |||
travesso $alt2 | |||
@@ -1054,6 +1061,7 @@ tumores $alt2 | |||
valeta $alt2 | |||
vanessa $alt2 | |||
velozes $alt | |||
verbete $alt2 | |||
violeta $alt2 | |||
violoncelo $alt | |||
voga $alt | |||
@@ -1070,7 +1078,8 @@ zorra $alt2 | |||
?1 back b'Ek | |||
?2 backup bEk'&p | |||
?2 backups bEk'&ps | |||
?1 blind bl'aind | |||
blind bl'aind | |||
book buk | |||
?1 braille b:r'aily | |||
?2 Braille bR'aili | |||
?1 cancel k'&ns'El | |||
@@ -1087,7 +1096,6 @@ zorra $alt2 | |||
?2 download daUNl'owd | |||
?3 download dau~Nl'owd | |||
?1 end 'end | |||
?1 escape Sk'eIpy | |||
?2 esc 'Esk | |||
?3 esc 'EskI | |||
?1 explorer ,ekspl'O:*&r- | |||
@@ -1110,6 +1118,7 @@ zorra $alt2 | |||
?2 Intranet iNtRan'Et | |||
?1 kernel k'Ern,El | |||
?2 kernel k'Ern@l | |||
laptop lEptOp | |||
?1 line l'ain | |||
layout l'eI,aUt | |||
?2 logo l'OgU | |||
@@ -1140,14 +1149,12 @@ símbolo s'imbolU | |||
?2 software s'Oftwe@- | |||
?1 space sp'eIsy | |||
?1 sporting sp'Ort,ing | |||
?1 tab t'ab | |||
tab t'aby | |||
?1 telemóvel t,El,Em'OvEl | |||
?1 telemóveis t,El,Em'OveIs# | |||
?1 up &p | |||
?1 upload &pl'oud | |||
?2 web w'Eb | |||
?2 verbete verb'etSi | |||
?2 verbetes verb'etSis | |||
?1 yahoo 'i,ah'u | |||
?2 yahoo iah'u | |||
?1 yes j'Es | |||
@@ -1161,14 +1168,16 @@ louis _^_FR | |||
// foreign product names | |||
?1 access 'aks,Es | |||
?1 adobe &d'Oby | |||
apple 'Epow | |||
chrome kR'owmi | |||
debian d'Ebj&~N | |||
?1 excel ,Eks'El | |||
?1 express ,Ekspr'Es | |||
espeak isp'i:k | |||
?1 espeakedit isp'i:kEd,it | |||
facebook feisybuk | |||
?1 fedora _^_EN | |||
?1 firefox f'ai&rfOks | |||
?2 firefox f'ai@fOks | |||
firefox f'ai@fOks | |||
?1 front fr'ont | |||
?1 jaws dZ'au:z | |||
?1 linux l,in'uks | |||
@@ -1203,6 +1212,7 @@ playstation _^_EN | |||
suse z'u:ts@ | |||
?1 start st'art // nero StartSmart | |||
?1 time t'aImy // nero show time | |||
twitter tw'iter | |||
ubuntu ub'untu | |||
?1 unix ,u:n'iks | |||
?2 unix j'uniks |
@@ -100,6 +100,7 @@ | |||
ái (s ''aI | |||
á (iCK ''a | |||
áy ''aI | |||
ál (C ''aU | |||
áu ''aU | |||
áu (s ''aU | |||
?1 ál ''Al | |||
@@ -221,13 +222,13 @@ | |||
f) e (rem_ E | |||
e (que_ E | |||
e (quem_ E | |||
e (quem_ E | |||
e (rgA_ E | |||
e (rgAm_ E | |||
e (rgue_ E | |||
e (rguem_ E | |||
e (rgue_ E | |||
e (rguem_ E | |||
e (rsA_ E | |||
e (rsAm_ E | |||
@@ -242,7 +243,7 @@ e (rguem_ E | |||
e (stAm_ E | |||
e (strA_ E | |||
e (rme_ E | |||
e (rme_ E | |||
e (rnA_ E | |||
e (rnAm_ E | |||
@@ -461,6 +462,7 @@ respond) e (L07_ e // cor- | |||
_gr) e (gL03_ e | |||
_gal) e (gL03_ e | |||
_n) e (grL03_ e | |||
_ch) e (guL02_ e | |||
estr) ei (L04_ EI | |||
_inv) e (jL04_ E | |||
tr) e (pL04_ E // es- | |||
@@ -488,10 +490,9 @@ _recup) e (rL04_ E | |||
_refrig) e (rL04_ E | |||
_v) e (rbL03_ E | |||
_p) e (rdL02_ E | |||
_ch) e (guL02_ e | |||
_l) e (rdL03_ E | |||
_h) e (rdL04_ E | |||
_bez) e (rrL03_ e | |||
_bez) e (rrL03_ e | |||
_inv) e (rtL03_ e | |||
_f) e (rvL03_ e | |||
_refr) e (scL01_ E | |||
@@ -536,6 +537,7 @@ _entorp) e (çL03_ e | |||
éi (s ''EI | |||
é (iCK ''E | |||
éy ''eI | |||
él (C ''EU | |||
éu ''EU | |||
éu (s ''EU | |||
é (uCK ''E | |||
@@ -576,18 +578,18 @@ _entorp) e (çL03_ e | |||
gu (Y g | |||
a) gu (ent gw | |||
_ar) gu (i gw | |||
averi) gu (e gw | |||
averi) gu (e gw | |||
enxa) gu (e gw | |||
i) gu (idade gw | |||
i) gu (idade gw | |||
lin) gu (e gw | |||
lin) gu (i gw | |||
_min) gu (e gw | |||
_min) gu (e gw | |||
_pin) gu (im_ gw | |||
_pin) gu (ins_ gw | |||
_sa) gu (i gw | |||
_sa) gu (i gw | |||
san) gu (ín gw | |||
san) gu (in gw | |||
tin) gu (i gw | |||
tin) gu (i gw | |||
?1 n) gu (A gw // eg: língua, etc. | |||
?1 man) gu (ei g // mangueira | |||
?1 gu (ém_ g // eg: alguém, ninguém, etc... | |||
@@ -620,6 +622,8 @@ _entorp) e (çL03_ e | |||
i (A_ 'i | |||
i (am_ 'i | |||
i (em_ 'i | |||
io (_ iU | |||
io (s_ iU | |||
i (oCK i | |||
@@ -657,6 +661,7 @@ _entorp) e (çL03_ e | |||
ím (C ''im | |||
ín (K ''iN | |||
ính ''in^ | |||
íl (C ''IU | |||
.group j | |||
@@ -754,6 +759,9 @@ _entorp) e (çL03_ e | |||
o (ltA_ O | |||
o (ltAm_ O | |||
o (lve_ O | |||
o (lvem_ O | |||
o (sA_ O | |||
o (so_N o // not for osos_ | |||
o (sAm_ O | |||
@@ -831,10 +839,10 @@ _entorp) e (çL03_ e | |||
//sort | |||
_f) o (L05_ o | |||
_f) o (L07_ o | |||
_engl) o (bL04_ O | |||
_s) o (bL02_ O | |||
_af) o (bL04_ O | |||
_esn) o (bL04_ O | |||
_af) o (bL04_ O | |||
_engl) o (bL04_ O | |||
br) o (chL04_ O | |||
_deb) o (chL04_ O | |||
_m) o (fL01_ O | |||
@@ -842,8 +850,6 @@ _entorp) e (çL03_ e | |||
_s) o (frL02_ O | |||
r) o (gL04_ O // inter- | |||
_j) o (gL04_ O | |||
_emp) o (lgL04_ O | |||
_f) o (lgL04_ O | |||
_af) o (gL04_ O | |||
_adv) o (gL04_ O | |||
_ref) o (gL04_ O | |||
@@ -851,15 +857,12 @@ _f) o (lgL04_ O | |||
_ap) oi (L02_ OI | |||
_b) oi (L04_ OI | |||
_t) o (lL03_ o | |||
_f) o (lgL04_ O | |||
_emp) o (lgL04_ O | |||
c) o (lhL02_ O // es- en- re- | |||
_t) o (lhL02_ 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 | |||
_ens) o (pL04_ O | |||
_s) o (prL04_ O | |||
@@ -941,21 +944,21 @@ _remem) o (rL04_ O | |||
?1 _) qua kwa // quatro, etc. | |||
?1 _) que ke // quente, 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 | |||
_a) qu (idade_ kw | |||
_a) qu (ífero_ kw | |||
e) qu (estr kw | |||
ese) qu (ív kw | |||
_e) qu (in kw | |||
fre) qu (ent kw | |||
_ini) qu (idade_ kw | |||
li) qu (id kw | |||
lí) qu (id kw | |||
n) qu (en kw | |||
_) qu (inqu kw | |||
se) qu (en kw | |||
tran) qu (il kw | |||
?1 quec kes // esquece, etc. | |||
?1 queç kes // esqueça. | |||
?1 A) que (nA_ ke // pequeno, etc. | |||
?1 C) quê (_ ke // porquê, etc. | |||
@@ -1013,6 +1016,14 @@ _remem) o (rL04_ O | |||
?1 A) s (G+ Z | |||
?1 A) s (_KS1 s# | |||
?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 | |||
@@ -51,9 +51,9 @@ _6C S,E#s;t;s'ot | |||
_7C s;,Ims'ot | |||
_8C vOs;Ims'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 | |||
_0MA2 m;,IlI;'ona | |||
_0M2 m;,IlI;'onof |
@@ -22,7 +22,7 @@ n En | |||
o o: | |||
p pi: | |||
q kju: | |||
r a:r | |||
r a:rp | |||
s Es | |||
t t#i: | |||
u ju: | |||
@@ -40,7 +40,7 @@ _1 okat.i | |||
_1a oka | |||
_2 rend.u | |||
_3 mu:d.u | |||
_4 na:lgu | |||
_4 na:lugu | |||
_5 aIdu | |||
_6 a:ru | |||
_7 ;e:d.u | |||
@@ -48,20 +48,20 @@ _8 ;enimidi | |||
_9 tommidi | |||
_1X padi | |||
_11 padakond.u | |||
_12 pannemd.u | |||
_13 padamu:d.u: | |||
_12 pannend.u | |||
_13 padammu:d.u: | |||
_14 pad#na:lugu | |||
_15 padihe:nu | |||
_16 padaha:ru | |||
_17 padihe:d.u | |||
_18 padd#enimidi | |||
_19 pamdommadi | |||
_19 pandommidi | |||
_2X irav#aI | |||
_3X muppaI | |||
_4X nalub#aI | |||
_5X ja:b#aI | |||
_6X arav#aI | |||
_7X d.eb#baI | |||
_7X d.#eb#baI | |||
_8X jenab#aI | |||
_9X tomb#aI | |||
_0C v#andala | |||
@@ -85,7 +85,7 @@ _?? aks.aram // 'unknown character' | |||
+ ku:d.ika | |||
* naks.atra | |||
\ bja:kasla:s. | |||
/ sla:s. | |||
/ kudiva:lugi:ta | |||
© ka:pi:raIt. | |||
¶ v#e:ra: | |||
@@ -137,7 +137,7 @@ U+c4d v#ottu | |||
ఫ్ ip# | |||
బ్ ib | |||
భ్ ib# | |||
మ్ im | |||
మ్ imu: | |||
య్ ij | |||
ర్ ir | |||
ఱ్ ir |
@@ -224,7 +224,7 @@ | |||
. ఁ n // candrabindu | |||
ం m // anusvara (this should nasalize the vowel) | |||
ం n // anusvara (this should nasalize the vowel) | |||
ః h // visarga | |||
@@ -243,7 +243,7 @@ | |||
ూ u: | |||
ృ ru | |||
ృ r- | |||
ౄ r-: | |||
@@ -1,6 +1,6 @@ | |||
name english | |||
language en-uk 2 | |||
language en-gb 2 | |||
language en-uk 2 | |||
language en 2 | |||
gender male | |||
@@ -1,4 +1,4 @@ | |||
name spanish-latin-american | |||
name spanish-latin-am | |||
language es-la | |||
language es-mx 6 | |||
language es 6 |
@@ -28,7 +28,7 @@ consonants 11 119 | |||
ne 18 157 | |||
ur 6 149 | |||
pa 15 151 | |||
ta 23 153 | |||
ta 24 153 | |||
kn 17 149 | |||
ml 26 152 | |||
te 16 149 | |||
@@ -429,7 +429,6 @@ l/l_ [l] base | |||
[l/3] da | |||
l/l_@ [l/3] base | |||
[l/] fr | |||
[l/3] da | |||
l/l@ [l#] base | |||
base vowelstart_l | |||
[l] fr | |||
@@ -468,14 +467,12 @@ l/la [l#] base | |||
[l/2] fr | |||
l/l_a [l/3] base | |||
[l/] fr | |||
[l/3] da | |||
l/le [l#] base | |||
base vowelstart_l | |||
[l] fr | |||
[l/2] fr | |||
l/l_e [l/3] base | |||
[l/] fr | |||
[l/3] da | |||
l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
@@ -488,7 +485,6 @@ l/li [l#] base | |||
l/l_i [l/3] base | |||
[l/] fr | |||
[i] sq | |||
[l/3] da | |||
ll/ll [L] base | |||
ll/_ll [L] base | |||
l/l_long [l] base | |||
@@ -498,7 +494,6 @@ l/lo [l#] base | |||
[l/2] fr | |||
l/l_o [l/3] base | |||
[l/] fr | |||
[l/3] da | |||
l^/l_rfx [l.] base | |||
[l;] lt | |||
[l] ru | |||
@@ -509,7 +504,6 @@ l/lu [l#] base | |||
[l/2] fr | |||
l/l_u [l/3] base | |||
[l/] fr | |||
[l/3] da | |||
l/l_vi [l] vi | |||
ll/xll [L] base | |||
l/l_y [l/] fr |
@@ -35,37 +35,37 @@ endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 200 | |||
length 210 | |||
FMT(vowel/i_6) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 200 | |||
length 210 | |||
FMT(vowel/u) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 200 | |||
length 210 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #a endtype #a | |||
length 200 | |||
length 210 | |||
FMT(vowel/&_2) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 200 | |||
length 210 | |||
IF nextPhW(w) THEN | |||
length 160 | |||
length 170 | |||
ENDIF | |||
FMT(vowel/o) | |||
endphoneme |
@@ -8,6 +8,116 @@ | |||
// AC + @- OR V: Long "pile" [pi:l@-] | |||
// 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 @ | |||
vowel starttype #@ endtype #@ | |||
unstressed | |||
@@ -59,26 +169,12 @@ phoneme i | |||
length 140 | |||
// Long vowel followed by consonant and @- "gide", "pile" | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN | |||
length 225 | |||
// length 225 | |||
ENDIF | |||
// "gider", vrider" | |||
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | |||
length 140 | |||
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 | |||
IF nextPhW(D) AND next2PhW(V) THEN | |||
length 140 | |||
@@ -87,7 +183,7 @@ ENDIF | |||
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -95,7 +191,8 @@ endphoneme | |||
// sviret vs. svirret | |||
phoneme ?i | |||
vowel starttype #i endtype #i | |||
length 100 | |||
length 140 | |||
CALL ShortVowelLength | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -111,22 +208,8 @@ endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
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) | |||
endphoneme | |||
@@ -135,14 +218,7 @@ endphoneme | |||
phoneme ?e | |||
vowel starttype #e endtype #e | |||
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) | |||
endphoneme | |||
@@ -153,29 +229,18 @@ phoneme E | |||
IF thisPh(isWordEnd) THEN | |||
IfNextVowelAppend(_!) | |||
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 | |||
length 225 | |||
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 | |||
ENDIF | |||
// "længe" - short - 2 consonants => 1 consonant | |||
IF nextPhW(N) THEN | |||
length 140 | |||
ENDIF | |||
CALL LongVowelLength | |||
// "værelse" [v'E3-Vls@_!] | |||
IF nextPhW(3-) AND next2PhW(V) THEN | |||
length 100 | |||
ENDIF | |||
// "mælkebøtte" - short followed by 2 consonants | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 140 | |||
ENDIF | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
@@ -186,14 +251,7 @@ phoneme ?E | |||
vowel starttype #e endtype #e | |||
ipa ε | |||
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) | |||
endphoneme | |||
@@ -203,22 +261,17 @@ phoneme & | |||
length 140 | |||
// "same", "sale", "bade" - consonant + @-: long | |||
// 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 | |||
// ThisPh + V or @- | |||
// "ae", "aer" vowel + vowel: extra length | |||
IF nextPhW(@-) OR nextPhW(V) THEN | |||
length 260 | |||
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) | |||
endphoneme | |||
@@ -228,7 +281,7 @@ endphoneme | |||
phoneme ?& | |||
vowel starttype #e endtype #e | |||
length 140 | |||
FMT(vowel/ee_2) | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
// Added for the æ in "dræbt" | |||
@@ -236,6 +289,8 @@ phoneme &# | |||
vowel starttype #e endtype #e | |||
length 140 | |||
ipa a | |||
CALL LongVowelLength | |||
// CALL ShortVowelLength | |||
FMT(vowel/&) | |||
endphoneme | |||
@@ -243,40 +298,28 @@ endphoneme | |||
// "revl" vs. "tremme" | |||
phoneme ?&# | |||
vowel starttype #e endtype #e | |||
length 120 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/&) | |||
endphoneme | |||
phoneme A // PB changed to a_8 | |||
vowel starttype #a endtype #a | |||
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] | |||
IF nextPhW(A) THEN | |||
length 225 | |||
ENDIF | |||
// "gratis" | |||
IF next2PhW(i) THEN | |||
length 225 | |||
ENDIF | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 140 | |||
ENDIF | |||
FMT(vowel/a_8) | |||
endphoneme | |||
// PB short A | |||
// "drab" vs. "drabelig" | |||
// "krabbe" vs. "drabelig" | |||
phoneme ?A | |||
vowel starttype #a endtype #a | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/a_8) | |||
endphoneme | |||
@@ -287,10 +330,7 @@ phoneme u | |||
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN | |||
length 225 | |||
ENDIF | |||
// "umulig" [u:m'uli] | |||
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
@@ -299,10 +339,7 @@ endphoneme | |||
phoneme ?u | |||
vowel starttype #u endtype #u | |||
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) | |||
endphoneme | |||
@@ -317,10 +354,7 @@ ENDIF | |||
IF next2PhW(V) OR next2PhW(@-) THEN | |||
length 225 | |||
ENDIF | |||
// "modig" - long vowel after consonant + [i] | |||
IF nextPhW(D) AND next2PhW(i) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/o_2) | |||
endphoneme | |||
@@ -344,14 +378,11 @@ ENDIF | |||
IF nextPhW(V) OR nextPhW(@-) THEN | |||
length 225 | |||
ENDIF | |||
// "rådig" | |||
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN | |||
length 225 | |||
ENDIF | |||
// "såre", "sårede" [s'O:?OD@-] | |||
IF nextPhW(O) OR nextPhW(?O) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/o_5) | |||
endphoneme | |||
@@ -366,14 +397,7 @@ endphoneme | |||
phoneme V | |||
vowel starttype #@ endtype #@ | |||
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) | |||
endphoneme | |||
@@ -387,10 +411,8 @@ endphoneme | |||
phoneme 0 | |||
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) | |||
endphoneme | |||
@@ -398,6 +420,7 @@ endphoneme | |||
phoneme ?0 | |||
vowel starttype #o endtype #o | |||
length 140 | |||
ipa ɔ | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
@@ -407,24 +430,20 @@ phoneme y | |||
// PB long vowel followed by consonant and certain vowels | |||
// "gyde", "gyder" | |||
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 | |||
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] | |||
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN | |||
length 225 | |||
ENDIF | |||
// "tyve" | |||
IF nextPhW(?u) AND next2PhW(@-) THEN | |||
IF nextPhW(w) AND next2PhW(@-) THEN | |||
length 225 | |||
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) | |||
endphoneme | |||
@@ -433,25 +452,14 @@ endphoneme | |||
phoneme ?y | |||
vowel starttype #i endtype #i | |||
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) | |||
endphoneme | |||
phoneme Y | |||
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 | |||
ENDIF | |||
FMT(vowel/yy) | |||
@@ -460,34 +468,15 @@ endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
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 | |||
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | |||
length 140 | |||
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 | |||
IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN | |||
length 140 | |||
ENDIF | |||
// PB "synge" | |||
IF nextPhW(N) THEN | |||
length 140 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/oe) | |||
endphoneme | |||
@@ -496,10 +485,7 @@ endphoneme | |||
phoneme ?W | |||
vowel starttype #@ endtype #@ | |||
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) | |||
endphoneme | |||
@@ -519,6 +505,7 @@ endphoneme | |||
phoneme ?W# | |||
vowel starttype #@ endtype #@ | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/V) | |||
endphoneme | |||
@@ -562,24 +549,6 @@ endphoneme | |||
phoneme l/3 // Replacement for [l/] | |||
liquid | |||
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_) | |||
endphoneme | |||
@@ -322,7 +322,7 @@ endphoneme | |||
phoneme aI3 | |||
vowel starttype #a endtype #@ | |||
length 300 | |||
length 310 | |||
ipa aɪɚ | |||
IfNextVowelAppend(r-) | |||
FMT(vwl_en_us/ai3) |
@@ -159,3 +159,7 @@ phoneme # // a NULL phoneme for 'virama' | |||
ChangePhoneme(NULL) | |||
endphoneme | |||
phoneme z. | |||
CALL base/z. | |||
ipa U+027B | |||
endphoneme |
@@ -3059,6 +3059,7 @@ int CompilePhoneme(int compile_phoneme) | |||
case kRETURN: | |||
*prog_out++ = i_RETURN; | |||
DecThenCount(); | |||
break; | |||
case kINCLUDE: |
@@ -699,11 +699,38 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
else | |||
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) | |||
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) | |||
{ |
@@ -125,6 +125,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
int delete_count; | |||
int word_start; | |||
int inserted; | |||
int deleted; | |||
PHONEME_DATA phdata; | |||
int n_ph_list3; | |||
@@ -343,6 +344,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
plist3 = &ph_list3[j]; | |||
inserted = 0; | |||
deleted = 0; | |||
if(insert_ph != 0) | |||
{ | |||
// we have a (linking) phoneme which we need to insert here | |||
@@ -431,23 +433,27 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
plist3->phcode = alternative; | |||
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 | |||
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; | |||
@@ -552,7 +558,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
} | |||
} | |||
if(plist3 != plist3_inserted) | |||
if((plist3 != plist3_inserted) && (ix > 0)) | |||
{ | |||
if((x = (tr->langopts.word_gap & 0x7)) != 0) | |||
{ | |||
@@ -585,51 +591,54 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
// 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 | |||
@@ -85,6 +85,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
0x055e, // Armenian question | |||
0x055b, // Armenian emphasis mark | |||
0x060c, // Arabic , | |||
0x061b, // Arabic ; | |||
0x061f, // Arabic ? | |||
0x06d4, // Arabic . | |||
@@ -132,6 +133,7 @@ static const unsigned int punct_attributes [] = { 0, | |||
CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question | |||
CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark | |||
CLAUSE_COMMA, // Arabic , | |||
CLAUSE_SEMICOLON, // Arabic ; | |||
CLAUSE_QUESTION, // Arabic question mark | |||
CLAUSE_PERIOD, // Arabic full stop |
@@ -575,6 +575,7 @@ void CalcLengths(Translator *tr) | |||
int last_pitch = 0; | |||
int pitch_start; | |||
int length_mod; | |||
int next2type; | |||
int len; | |||
int env2; | |||
int end_of_clause; | |||
@@ -689,8 +690,19 @@ void CalcLengths(Translator *tr) | |||
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 | |||
if(p->newword==0) | |||
{ | |||
@@ -827,9 +839,17 @@ if(stress <= 1) | |||
next3 = &phoneme_list[ix+4]; | |||
} | |||
next2type = next2->ph->length_mod; | |||
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)) | |||
{ | |||
@@ -841,7 +861,7 @@ if(stress <= 1) | |||
} | |||
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)) | |||
length_mod -= 15; |
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; |
@@ -93,12 +93,12 @@ ALPHABET alphabets [] = { | |||
{"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, | |||
{"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, | |||
{"_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}, | |||
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, | |||
{"_ja", 0x3040, 0x3040,0x30ff, 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} | |||
}; | |||
@@ -1732,6 +1732,7 @@ int SetTranslator2(const char *new_language) | |||
translator2->phoneme_tab_ix = new_phoneme_tab; | |||
} | |||
} | |||
translator2->phonemes_repeat[0] = 0; | |||
return(new_phoneme_tab); | |||
} // end of SetTranslator2 | |||
@@ -2440,6 +2441,35 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
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) | |||
{ | |||
case L('a','f'): | |||
@@ -2467,36 +2497,6 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
} | |||
} | |||
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)); | |||
} | |||
@@ -2951,7 +2951,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
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 | |||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) |
@@ -1883,12 +1883,24 @@ void FreeVoiceList() | |||
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 j; | |||
espeak_VOICE *v; | |||
static espeak_VOICE **voices = NULL; | |||
char path_voices[sizeof(path_home)+12]; | |||
// free previous voice list data | |||
FreeVoiceList(); | |||
@@ -1926,7 +1938,6 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
} | |||
return((const espeak_VOICE **)voices); | |||
#endif | |||
return((const espeak_VOICE **)voices_list); | |||
} // end of espeak_ListVoices | |||