Browse Source

Merge branch 'development'

master
Reece H. Dunn 12 years ago
parent
commit
a4b28c3313

+ 3
- 0
dictsource/en_list View File

@@ -620,6 +620,7 @@ ablaut ablaUt
aborigine ab@r'IdZ@ni
abracadabra abr@k@d'abr@
absence abs@ns
absent $1
absent abs'Ent $verb
absentia abs'Ent2i:@
absinthe absInT
@@ -902,6 +903,7 @@ bias baI@s
biased baI@st
bible baIb@L
bidet bi:deI
bigot bIg@t // -ed
bijou bi:Zu:
bikini bIk'i:ni
binman bInman
@@ -1606,6 +1608,7 @@ gourmet gU@meI
graduate gradju:@t
graduate gradju:eIt $verb
graffiti $alt3
grandson gr'andsVn
gredient gri:di@nt // ingredient
grenade gr@neId
griffon grIf@n

+ 4
- 2
dictsource/en_rules View File

@@ -4082,6 +4082,7 @@
m) otor oUt3
n) o (tor oU
otro (py '0tr@
&) o (try @
c) otyle 0tIl'i:
m) o (x @
o (x++ 0
@@ -4192,7 +4193,6 @@
?3 ag) on (_ 0n
rg) on (_ @n
&s) on (_ @n
ds) on (_ Vn
&t) on (_ @n
&tr) on (_ 0n
fl) on (_ 0n
@@ -4209,7 +4209,9 @@
pers) on @n
pers) on (i '0n
postp) on 'oUn
_sp) on 0n
on (ald 0n
&) on (age_ @n
d) on (at %oUn
on (an_ oUn
_) on (io Vn
@@ -4585,7 +4587,7 @@
?3 h) ov (er Vv
l) ov Vv
l) ov (e Vv
_l) ove Vv
_l) ove (@ Vv
cl) ov (e oUv
_sl) ov (enA oUv
pl) ov oUv

+ 4
- 0
dictsource/nl_rules View File

@@ -244,6 +244,7 @@
@) ent (st_ 'Ent
@) ent (ste_ 'Ent
ag) ent 'Ent
X) es (_ Es
@j) es (_S1 s
@z) es (_S1 s
@) es (_S2qd 'Es // double the previous vowel
@@ -323,6 +324,7 @@
_) ge (@P2 Q@
ge (bied Q@
_) gee Qe:
_) gei QEI
gener (aal Q,e:n@r
_) gelijk Q@lEIk
_) ge (rC QE
@@ -628,8 +630,10 @@ _) inn (@P2 'I // ?? inneren
sj S
@) sje (_ sj@
@) s (_S1 s
a) s (_ s
@) s (_$w_alt =s

_) samen(@P5 s'a:m@n
sc (oop sk
sc (opi sk
&) sel (_ =s@l

+ 21
- 44
dictsource/pt_list View File

@@ -757,12 +757,10 @@ der $alt
derdes $alt
desapego $alt2 $noun
descabelo $alt
desce $alt
descem $alt
descordo $alt
desespero $alt2 $noun
desfecho $alt2
desprezo $alt $verb
desprezo $alt2 $noun
deveras $alt
dez $alt
diarreia $alt
@@ -781,10 +779,17 @@ encosto $alt $verb
endereço $alt2
endereço $alt $verb
enforco $alt
enforque $alt
enforquem $alt
engordo $alt
enumerem $alt
ensopa $alt
ensopam $alt
ensope $alt
ensopem $alt
ensopo $alt
enredo $alt $verb
enterro $alt2 $noun
enumerem $alt
envelope $alt
envolto $alt2
enxerto $alt2 $noun
@@ -818,8 +823,6 @@ estorvo $alt $verb
etiqueta $alt2
europa $alt
exagero $alt $verb
expeça $alt2
expeço $alt2
explore $alt
faceta $alt2
farelo $alt
@@ -833,14 +836,15 @@ fezes $alt
fizerdes $alt
fizermos $alt
foda $alt2 $verb
folheto $alt2
folga $alt
fogos $alt
foguete $alt2
foice $alt2
forca $alt2
força $alt2 $noun
forço $alt
forças $alt2
forço $alt
fordes $alt2
fores $alt2
forro $alt $verb
@@ -882,10 +886,9 @@ joguem $alt
joguete $alt2
lambreta $alt2
lebre $alt
lerda $alt
lerdo $alt
líderes $alt2
lopes $alt
maior $alt
maleta $alt2
mantiverdes $alt
mantiveres $alt
@@ -894,6 +897,8 @@ marcelo $alt
marmelo $alt
marreta $alt2
martelo $alt
melhor $alt
menor $alt
merda $alt
megera $alt
melo $alt
@@ -917,8 +922,7 @@ morda $alt2
moreia $alt
mortos $alt
motora $alt2
?2 mulher mulj'Er
?4 mulher mul^'Er
mulher $alt
mui mwi
muito mw'iNtU // -s is included as a suffix
muita mw'iNt&
@@ -931,8 +935,6 @@ naquele $alt2 $nounf
nervo $alt2
novos $alt
obstetra $alt
obsoleta $alt2
obsoleto $alt2
obtivera $alt
obtivermos $alt
odisseia $alt
@@ -948,6 +950,7 @@ pachorra $alt2
paexa paeSa
palacete $alt2
palheta $alt2
panfleto $alt2
pangeia $alt
pantera $alt
paralelo $alt
@@ -956,15 +959,12 @@ pastora $alt2
pedra $alt
pelego $alt2
pelo $alt $verb
perde $alt
perdem $alt
pesa $alt
pesam $alt
pesque $alt
pesquem $alt
peso $alt $verb
piloto $alt2 $noun
pintora $alt2
pior $alt
pirueta $alt2
plateia $alt
plebeia $alt
@@ -976,8 +976,7 @@ portos $alt
pose $alt2
povos $alt
poxa p'oS&
preta $alt2
preto $alt2
preço $alt2
primavera $alt
provo $alt
puder $alt
@@ -985,6 +984,7 @@ puderdes $alt
pudermos $alt
puserdes $alt
quarteto $alt2
queda $alt
quinteto $alt2
quiserdes $alt
quisermos $alt
@@ -1018,8 +1018,6 @@ rosno $alt
rumores $alt2
saleta $alt2
sarjeta $alt
severa $alt
severo $alt
seborreia $alt
seca $alt2 $noun
secas $alt2
@@ -1030,11 +1028,9 @@ selvagem seUv'aZeIN
sexteto $alt2
?1 senhora $alt2
senhores $alt2
sincera $alt
sincero $alt
sinopse $alt
sobe $alt
sobem $alt
sobem $alt
soco $alt2
soco $alt $verb
sofrem $alt
@@ -1042,7 +1038,7 @@ sofre $alt
sofreste $alt2
sogra $alt
sopre $alt
soprem $alt
soprem $alt
sopro $alt $verb
soro $alt2
sorvete $alt2
@@ -1052,8 +1048,6 @@ soubermos $alt
suborno $alt $verb
sufoco $alt2 $noun
sufocos $alt2
sugere $alt
sugerem $alt
suporto $alt
suor swOr
tapete $alt2
@@ -1098,8 +1092,6 @@ zero $alt
zorra $alt2




// foreign words
?1 alt 'alt
?2 agosto &g'ostU
@@ -1144,7 +1136,6 @@ zorra $alt2
?1 install ,inst'al
?2 internet iNtern'Et
?2 Intranet iNtRan'Et
?2 inveja iNv'EZ&
?1 kernel k'Ern,El
?2 kernel k'Ern@l
?1 line l'ain
@@ -1153,16 +1144,6 @@ zorra $alt2
?1 lock l'Ok
mail m'eIl
mails m'eIls
?1 maior m,&j'Or-
?2 maior maI'Or
?2 maiores maI'O*is
?1 menor myn'Or-
?2 menor men'Or
?2 menores men'O*is
?2 melhor melj'Or
?2 melhores melj'O*is
?4 melhor mel^'Or
?4 melhores mel^'O*is
?2 mouse m'aUzi
?1 menu menu
?1 next n'Ekst
@@ -1173,11 +1154,7 @@ zorra $alt2
?1 ovo 'ovu
?1 pause p'au:z
page p'eIdZ
?2 pior pi'Or
?2 piores pi'O*is
preço $alt2
python p'aIT&~N
queda $alt
?1 readme r'i:dmi:
?1 sapi s,ap'i
?1 scanner sk'En&r

+ 52
- 40
dictsource/pt_rules View File

@@ -304,7 +304,7 @@
?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas.
?1 e (la_ 'E // eg: cadela, janela, vela, etc...
?1 C) e (cC ,E // eg: seleccionar, efectuar, etc...
?1 C) ecç 'Es // eg: selecção, etc...
?1 C) ecç 'Es // eg: selecção, etc...
?1 C) e (ã i // leão, panteão, etc.
?1 C) e (a i // oceano, etc.
?1 C) e (o 'i // eg: geologia, etc...
@@ -345,69 +345,69 @@
sf) e (ra_ E // esfera, biosfera

//sort
_com) e (L05_ e
fiz) e (L05_ E
tiv) e (L05_ E // es-
_com) e (L05_ e
_coub) e (L05_ E
_exag) e (L05_ E
_houv) e (L05_ E
_perd) e (L05_ e
_soub) e (L05_ E
tiv) e (L05_ E // es-
_rend) e (L06_ e
_vend) e (L06_ e
_atend) e (L06_ e
_compreend) e (L06_ e
_entend) e (L06_ e
_estend) e (L06_ e
_rend) e (L06_ e
_vend) e (L06_ e
respond) e (L06_ e // cor-
bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
viv) e (L07_ e // re-
_beb) e (L07_ e
_com) e (L07_ e
_tem) e (L07_ e
colh) e (L07_ e // & es-
corr) e (L07_ e // per- con- in- so- dis-
torc) e (L07_ e // con-
venc) e (L07_ e // con-
vert) e (L07_ e // in- re- con-
_eleg) e (L07_ e
_ergu) e (L07_ e
_mord) e (L07_ e
_morr) e (L07_ e
_perd) e (L07_ e
_sofr) e (L07_ e
merec) e (L07_ e // des-
padec) e (L07_ e // com-
parec) e (L07_ e // a- rea- com- desa-
_aborrec) e (L07_ e
_rejuvenec) e (L07_ e
_adoec) e (L07_ e
_adormec) e (L07_ e
_amanhec) e (L07_ e
_anoitec) e (L07_ e
_arrepend) e (L07_ e
_beb) e (L07_ e
_com) e (L07_ e
_defend) e (L07_ e
_depend) e (L07_ e
_eleg) e (L07_ e
_enlouquec) e (L07_ e
_entristec) e (L07_ e
_envaidec) e (L07_ e
_envelhec) e (L07_ e
_ergu) e (L07_ e
_esclarec) e (L07_ e
_escond) e (L07_ e
_escurec) e (L07_ e
_esquec) e (L07_ e
_interromp) e (L07_ e
_mord) e (L07_ e
_morr) e (L07_ e
_obedec) e (L07_ e
_perd) e (L07_ e
_sofr) e (L07_ e
_tem) e (L07_ e
_perec) e (L07_ e
_rejuvenec) e (L07_ e
aprend) e (L07_ e // re-
bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su-
colh) e (L07_ e // & es-
conhec) e (L07_ e // & re- des-
corr) e (L07_ e // per- con- in- so- dis-
entend) e (L07_ e
merec) e (L07_ e // des-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
padec) e (L07_ e // com-
parec) e (L07_ e // a- rea- com- desa-
preend) e (L07_ e // sur- com-
_perec) e (L07_ e
respond) e (L07_ e // cor-
torc) e (L07_ e // con-
venc) e (L07_ e // con-
vert) e (L07_ e // in- re- con-
viv) e (L07_ e // re-
qu) e (brL04_ E
_hosp) e (dL03_ E
_d) e (vL03_ e
_gr) e (gL03_ e
_n) e (grL03_ e
_estr) ei (L03_ EI
@@ -416,57 +416,67 @@ respond) e (L07_ e // cor-
_s) e (quL02_ E
_p) e (quL02_ E
l) e (que_ E
_sug) e (rL02_ E
_imp) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
_sinc) e (rL03_ E
_g) e (rL04_ E
_op) e (rL04_ E
_qu) e (rL04_ E
_alt) e (rL04_ E
_sup) e (rL04_ E
_tol) e (rL04_ E
_ven) e (rL04_ E
_coop) e (rL04_ E
_temp) e (rL04_ E
_ven) e (rL04_ E
_v) e (rbL03_ E
_p) e (rdL02_ E
_l) e (rdL03_ E
_h) e (rdL04_ E
_) e (rguL02_ E
_alb) e (rguL02_ E
_enx) e (rguL02_ E
_bez) e (rrL03_ e
_rejuven) e (çL03_ e
_inv) e (rtL03_ e
_f) e (rvL03_ e
_p) e (sL01_ E
_d) e (scL02_ E
_p) e (scL03_ E
_m) e (sclL04 E
_l) e (ssL02_ e
_esp) e (ssL03_ e
_m) e (tL03_ e
_com) e (tL03_ e
_rem) e (tL03_ e
prom) e (tL03_ e // com-
_derr) e (tL03_ e
_rem) e (tL03_ e
_obsol) e (tL03_ e
_pr) e (tL03_ e
_sol) e (trL03_ E
_pen) e (trL04_ E
_atr) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de-
_pr) e (zL04_ E
_d) e (vL03_ e
_atr) e (vL03_ e
_embel) e (zL04_ E
pr) e (zL04_ E / des- menos-
_acont) e (çL01_ e
_arref) e (çL01_ e
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
_aqu) e (çL03_ e
_car) e (çL03_ e
_estrem) e (çL03_ e
_mer) e (çL03_ e
_pad) e (çL03_ e // com-
_per) e (çL03_ e
par) e (çL03_ e // a- re- com- rea- desa-
_rejuven) e (çL03_ e
conh) e (çL03_ e // re-
_esqu) e (çL03_ e
_forn) e (çL03_ e
_obed) e (çL03_ e
_ofer) e (çL03_ e
abast) e (çL03_ e // re-
_aborr) e (çL03_ e
_fortal) e (çL03_ e
_ado) e (çL03_ e
_amanh) e (çL03_ e
_anoit) e (çL03_ e
_enfraqu) e (çL03_ e
@@ -476,8 +486,8 @@ _entrist) e (çL03_ e
_envaid) e (çL03_ e
_envelh) e (çL03_ e
_esclar) e (çL03_ e
_forn) e (çL03_ e
conh) e (çL03_ e // re-
_estrem) e (çL03_ e
_fortal) e (çL03_ e
//endsort


@@ -787,6 +797,8 @@ _desenv) o (lvL02_ O
_m) o (rrL01_ o
_c) o (spL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_s) o (bL02_ O
_s) o (prL02_ O
//endsort

.group ô

+ 3
- 1
dictsource/ta_list View File

@@ -379,6 +379,7 @@ tamil தமிழ் $text
பாதிக்கக் $alt
புசு $alt
புஸு $alt
பாதிக்காம $alt


// initial த as [d]
@@ -398,7 +399,6 @@ tamil தமிழ் $text
தைவதம் $alt
தாட்சண்யம் $alt
தனம் $alt
திக்கற்ற $alt
தானு $alt
திட $alt
தோ $alt
@@ -446,6 +446,8 @@ tamil தமிழ் $text
தம்ம $alt
தாயம் $alt
திமு $alt
தாவா $alt


// initial ட
டார்ச் t.a:rtS

+ 149
- 5
dictsource/ta_rules View File

@@ -1,6 +1,6 @@

/***************************************************************************
* Copyright (C) 2009 to 2012 by Jonathan Duddington *
* Copyright (C) 2009 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -168,6 +168,7 @@
_) க (ங்கூலி gV
_) க (ங்கை gV
_) க (ங்கோத gV
_) கஜ (க்ஸ்தான kVzV
_) க (ஞ்சா gV
_) க (டகட gV
_) க (டத்தில gV
@@ -224,6 +225,7 @@
_) க (லீர gV
_) க (லீல gV
_) க (லீஷிய gV
_) கல்த (ா gVlt
_) க (ளுக் gV
_) க (வண gV
_) க (வன gV
@@ -329,6 +331,7 @@
_) கி (ளாL04ி k
_) கி (ளாL04ு k
_) கி (ளாL04ை k
_) கி (ளாமர g
_) கி (ளாஸ்_ g
_) கி (ளாஸ்_மேட k
_) கிளிக் (_L29 kl.ik
@@ -351,6 +354,7 @@
_) க (ுகநாத g
_) க (ுகன g
_) க (ுகராஜ g
_) க (ுகா g
_) க (ுகை g
_மன்மதக்) க (ுகை g
_) க (ுஜராத g
@@ -378,10 +382,13 @@ _மன்மதக்) க (ுகை g
_) க (ுண்டத் k
_) க (ுண்டம k
_) க (ுண்டல k
_) க (ுண்டாக்கள k
_) குண்டாந்த (டி gun.d.a:ntV
_) க (ுண்டானில k
_) க (ுண்டானை k
_) க (ுண்டான் k
_) க (ுண்டாவி k
_) க (ுண்டாவை k
_) க (ுண்டி k
_) க (ுண்டின g
_) குண்ட (ூர gun.t.V#
@@ -390,9 +397,11 @@ _மன்மதக்) க (ுகை g
_) க (ுதித் g
_) க (ுதிப் g
_) க (ுதிப்பகுதி k
_) க (ுதியாட்ட g
_) க (ுபீர g
_) க (ுபுகுபு g
_) க (ுபுக் g
_) க (ுபேர g
_) குப் (த gup
_) க (ுப்புன g
_) க (ுப்பென்ற g
@@ -425,10 +434,12 @@ _மன்மதக்) க (ுகை g
_) க (ுருமூர்த்தி g
_) க (ுருரா g
_) க (ுருவடி g
_) க (ுருவருள g
_) க (ுருவா g
_) க (ுருவாய g
_) க (ுருவிட g
_) க (ுருவின g
_) க (ுருவிற்க g
_) க (ுருவு g
_) க (ுருவுடை g
_) க (ுருவை g
@@ -520,6 +531,7 @@ _மன்மதக்) க (ுகை g
_) க (ோர_முடிய k
_) க (ோர_வேண்ட k
_) க (ோரக g
_) க (ோரக்கூட k
_) க (ோரத்_தாண்ட g
_) க (ோரத்தால g
_) க (ோரத்தை g
@@ -553,6 +565,7 @@ _மன்மதக்) க (ுகை g
_) க் (ரீன g
_) க் (ரூப g
_) க் (ரௌண்ட g
_) க் (ளாமர g
_) க் (ளாஸ்_ g
_) க்வ (A kw
_) க் (வாலியர g
@@ -704,6 +717,8 @@ _தொன்ம) க (ால k
தென்) க (ிழ k
_பா) க (ிஸ்தான k
அப) க (ீர்த்தி k
க (ீழே_ k
க (ீழ்_ k
_பல்) க (ு k
மலைக்) க (ுகை g
_பால்) க (ுட k
@@ -767,6 +782,7 @@ _நினைவு) க (ூர k
ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ??
சீர்) க (ேட k
_லொ) கேட ke:t.V#
_நசி) க (ேத k
ம) க (ேந்திர H
_ரா) க (ேஷ k
_மு) க (ேஷ k
@@ -842,6 +858,7 @@ _கர்ப்ப) க்கி (ர gg
_வி) க்க (ிரக gg
சத்தியா) க்கி (ரக gg
L03) க்கி (ரஹ gg // a,i
_சத்தியா) க்கி (ரஹ gg
கு) க்கி (ராம gg
அ) க்கி (ராம gg
இ) க்கி (ராம gg
@@ -925,9 +942,12 @@ _துப்பாக்கி) க்க (ுண்ட gg

//sort
_ராஞ்) ச tSV#
எபிL09ே) ச zV#
ராகவா) ச )(ாரி tS
_ப) சக் tSVk
_) ச (க்கரவர்த்தி tSV
_) ச (க்கிலி tSV
_க) ச (க்ஸ்தான zV
சங்க (ர s.VNkV
_) ச (ட்டL08ஸ்கர tSV
_) ச (ட்டினி tSV
@@ -960,6 +980,7 @@ _விமோ) ச (ன tSV
_நீலலோ) ச (னி tSV
_மீனலோ) ச (னி tSV
_) ச (ப்பL11் tSV
_) ச (ப்பலா tSV
_) ச (ப்பா tSV
_) ச (ப்பி tSV
_) ச (ப்பு tSV
@@ -970,6 +991,7 @@ _மீனலோ) ச (னி tSV
_பங்) ச (ர tSV
_பன்) ச (ர tSV
_) சரசு (வதி sVrVs
_ந) சரத் zVrVt
_ந) ச (ருதீன zV
_) சர்ச (ி tSVrtS
_) ச (ர்ச்சில tSV
@@ -984,6 +1006,7 @@ _L04்விட்) ச (ர்லாந்த zV
மருதா) ச (ல tSV
வேதா) ச (ல tSV
_சேஷா) ச (ல tSV
_ஹிமா) ச (ல tSV
_தணிகா) ச (ல tSV
அருணா) ச (ல tSV
வெங்கடா) ச (ல tSV
@@ -1025,7 +1048,18 @@ _தணிகா) ச (ல tSV
ஆ) ச (ாரங்கள tS
ஆ) ச (ாரத் tS
ஆ) ச (ாரம tS
_ரங்கா) ச (ாரி tS
_வரதா) ச (ாரி tS
_வேதா) ச (ாரி tS
_கிருஷ்ணமா) ச (ாரி tS
_தேசிகா) ச (ாரி tS
_பட்டா) ச (ாரி tS
அனந்தா) ச (ாரி tS
அன்னமா) ச (ாரி tS
ஆ) ச (ாரிய_ tS
ஆ) ச (ாரியார tS
அ) ச (ாருதீன z
_) ச (ாருமதி tS
_) சாருலத (ா tSa:rUlVt
_) ச (ாருவ tS
_ஹ) ச (ாரே z
@@ -1086,6 +1120,7 @@ _தணிகா) ச (ல tSV
_) சிம்பன்ச (ி tSimpVnz
_மலே) ச (ிய s.
இந்தோனே) ச (ிய s.
_) ச (ியர்ஸ tS
_பக்தி_) சிரத் (தை srVd
_) சிரத்த (ைL27 srVdd
சி (ரம s
@@ -1203,10 +1238,12 @@ _மங்களே) சு (வர s
_) ச (ேரி tS
_தல) ச (ேரி tS
_) ச (ேர்கள tS
_) ச (ேர்மன tS
_) ச (ேர்மேன tS
_) ச (ேலஞ் tS
_) ச (ேஷ்டை tS
_) ச (ேஸ்_ tS
_) சைத (ன்ய tSaItV
_) ச (ைத்திய tS
_) ச (ைனா tS
_) ச (ைனா_நேவால s
@@ -1214,12 +1251,14 @@ _மங்களே) சு (வர s
_) ச (ைனீஸ tS
_) ச (ோட்டா tS
ஓ) ச (ோன z
அரி) ச (ோன z
_) ச (ோன்ன tS
_) ச (ோவு tS
_) ச (ோவெ tS
_) ச (ௌக்கிதார tS
_) ச (ௌதரி tS
_) ச (ௌதிரி tS
_) ச (ௌத்தாலா tS
_) சௌப (ாத்தி tSaUp
_) ச (ௌபே tS
_) ச (ௌஹான tS
@@ -1246,11 +1285,16 @@ _மங்களே) சு (வர s
_ப) ஜ (ார z
அ) ஜ (ாருதீன z
_நா) ஜ (ி z
_) ஜிப்(_ zip
_) ஜ (ிப்ப z
_) ஜ (ியா z
_) ஜ (ீனத் z
_) ஜ (ீப்ரா z
_) ஜ (ீரோ z
_) ஜ (ுல்ஃபி z
_) ஜ (ுல்பி z
_) ஜு (வால dZ
_) ஜ (ெனித் z
_) ஜ (ெராக்ஸ z
//endsort

@@ -1401,9 +1445,11 @@ _செண்) டிமெண்ட t.imen.t.V#
_) டி (ரங் t.
_) டி (ரங்கு t.
_) டி (ரபிள t.
_) டி (ரம d.
_) டிரம்பெட் t.rVmpet.
_) டிர (ஸ d.re
_) டிர (ஸ்ட t.rV
_) டி (ரா_ d.
_) டிராஃபிக் t.ra:fik
_) டி (ராகுலா d.
_) டிராக் t.ra:k
@@ -1427,12 +1473,15 @@ _செண்) டிமெண்ட t.imen.t.V#
_) டி (ராயிங் d.
கொலஸ்) டி (ரால _|t.
_) டி (ராலி t.
_) டி (ராவ d.
_) டி (ராவல t.
_) டி (ராவெல t.
_) டிரிக (ர t.riggV
_) டிரிக் t.rik
_) டிரிக்க (ர t.riggV
_) டி (ரிங்_ t.
_) டி (ரிங்க் d.
_) டி (ரிங்ஸ d.
_) டிரினிட (ி t.rinit.
_) டிரிப் t.rip
_) டி (ரிம் t.
@@ -1518,6 +1567,7 @@ _லான்_) ட (ென்னிஸ t.
_) டைப (ாய்ட t.aIf
_) டைப் t.aIp
_) ட (ைம்_ t.
_) ட (ைல்ஸ t.
_) டொக் t.ok
_) ட (ோக்கன t.
_) ட (ோக்கியோ t.
@@ -1527,6 +1577,7 @@ _லான்_) ட (ென்னிஸ t.
_) டோரண்ட (ோ t.o:rVn.t.
_ப்ரி) ட (ோரிய t.
_) டோர்னமெண்ட t.o:rnVmen.t.V#
_) ட (ோலிவுட் t.
_லே) ட் t.
@மெண்) ட் t. // -ment
_பேண்) ட் t.
@@ -1535,6 +1586,11 @@ _ஹெல்மெ) ட் t.
ல) ட்சு (மண ks.
ல) ட்சு (மி ks.
_ல) ட்ட d.d.V#
_கோலிவு) ட்ட d.d.V#
_டோலிவு) ட்ட d.d.V#
_பாலிவு) ட்ட d.d.V#
_மாலிவு) ட்ட d.d.V#
_ஹாலிவு) ட்ட d.d.V#
_ரெ) ட்ட (ிய d.d.
இ) ட்ட (ிலி d.d.
அப்பாயிண்) ட்மெண்ட t.men.t.V#
@@ -1577,6 +1633,7 @@ _ஹெல்மெ) ட் t.
_) ட்ரிக (ர t.riggV
_) ட்ரிக் t.rik
_) ட்ரிக்க (ர t.riggV
_) ட் (ரிங்_ t.
_நியூ) ட் (ரின t.
_) ட்ரினிட (ி t.rinit.
_) ட் (ரிம் t.
@@ -1642,6 +1699,8 @@ _நடுரோ) ட் (ல t.
ஸ்) த (B t
ப்) த tV
ப்) த (B t
ட்) த tV
ட்) த (B t
த் (_த t

// exceptions, த as [d]
@@ -1654,6 +1713,7 @@ _நடுரோ) ட் (ல t.
_) த (கன dV
_) த (கி dV
_) த (க்க்ஷிண dV
_) த (க்ஷன dV
_) த (க்ஷிண dV
_) த (க்ஷிணா dV
_) த (சகண்ட dV
@@ -1686,6 +1746,7 @@ _நடுரோ) ட் (ல t.
_) த (ட்சன dV
_) த (ட்சிண dV
_) த (ண்டக் dV
_) த (ண்டச்செலவ dV
_) த (ண்டச்சோற dV
_) த (ண்டத் dV
_) த (ண்டன dV
@@ -1714,6 +1775,7 @@ _நடுரோ) ட் (ல t.
_) த (னுச dV
_) த (னுஷ dV
_) த (ன்மந்திரி dV
_) த (ன்ய dV
_) த (ன்ராஜ dV
_) த (ன்வந்தரி dV
_) தபதப dVbVdVbV#
@@ -1723,6 +1785,8 @@ _நடுரோ) ட் (ல t.
_) த (ம்பதி dV
_) த (ம்பிடி dV
_) த (ம்மடிL11் dV
_) த (ம்மத் dV
_) த (ம்மம dV
_) த (யவ dV
_) த (யாணந்த dV
_) த (யான dV
@@ -1762,13 +1826,16 @@ _நடுரோ) ட் (ல t.
_) த (ர்ப்பை dV
_) த (ர்ம dV
_) த (லித் dV
_) தலீத் dVli:t
_அகாலி_) த (ள dV
_) த (ளவாய dV
_) த (வக்கால dV
_) த (வக்கோல dV
_) த (வத்த dV
_) த (வப் dV
_) த (வம dV
_) தவுலதாப (ாத dVvUlVda:b
_) த (வே dV
_) த (ாக்கா d
_) த (ாக்காத t
_) த (ாக்காம t
@@ -1804,12 +1871,14 @@ _அகாலி_) த (ள dV
_) த (ாராள d
_) த (ாராவி d
_) த (ாவணி d
_) த (ாவா d
_) த (ாவாக்க d
_) த (ாவாவ d
_) த (ாவேய d
_) த (ாஸ d
_) த (ிகம்பர d
_) த (ிகில d
_) த (ிகுதிகு d
_) த (ிக்கற்ற d
_) த (ிக்கித்த d
_) த (ிக்கில d
_) த (ிக்கு d
@@ -1853,7 +1922,7 @@ _அகாலி_) த (ள dV
_) த (ிம்ம d
_) தி (யாக t
_) தி (யான d
_) தி (யேட்டர t
_) த (ியோபந்த d
_) த (ிரவ d
_) த (ிரவிய d
_) தி (ராட்சை d
@@ -1881,7 +1950,10 @@ _அகாலி_) த (ள dV
_) த (ிவால d
_) த (ிவ்ய d
_) த (ிவ்விய d
_) தீக்ஷணி (ய di:ks.Vn
_) த (ீக்ஷண்ய d
_) த (ீக்ஷிதர d
_) தீட்சணி (ய di:d.tSVn.
_) த (ீட்சண்ய d
_) த (ீட்சித d
_) த (ீட்சை d
@@ -1894,6 +1966,7 @@ _அகாலி_) த (ள dV
_) த (ீரச் d
_) த (ீரத்துட d
_) த (ீரன d
_) த (ீரமிக d
_) த (ீரமில்ல d
_) த (ீரமுட d
_) த (ீரம்மிக d
@@ -1909,6 +1982,7 @@ _) தீர்க்க (_சுமங்கலி di:rggV
_) தீர்க்க (முள்ள di:rggV#
_) தீர்க்க (ம்_ di:rggV
_) தீர்க்க (ாயு di:rggV#
_) த (ீர்க்காலோசனை d
_) த (ீவாளி d
_) து(ரோக d
_) த (ுக்க d
@@ -1923,12 +1997,13 @@ _) தீர்க்க (_சுமங்கலி di:rggV
_) த (ுன்மதி d
_) த (ுன்மார்க்க d
_) த (ுபாய d
_) த (ுபாஷி d
_) த (ுபாஷ d
_) த (ுப்பட்டா d
_) த (ுமளி d
_) த (ுரதிருஷ்ட d
_) த (ுரதிர்ஷ்ட d
_) த (ுரதிஷ்ட d
_) துராக்க (ிர dra:gg
_) த (ுராசை d
_) த (ுரியோதனன d
_) த (ுரியோதனா d
@@ -2041,6 +2116,7 @@ _வசந்) த tV#
_கௌ) த (மி tV
_புல்) த (ரை tV
_மண்) த (ரை tV
_சகுந்) த (லா tV
_சாந்) த (லிங்க tV#
_கீ) த (ா t
_சீ) த (ா t
@@ -2051,6 +2127,7 @@ _வசந்) த tV#
அனி) த (ா t
சுஜா) த (ா t
லலி) த (ா t
_சமந்) த (ா t
_சுனி) த (ா t
_மம்) த (ா t
_ஹரி) த (ா t
@@ -2163,9 +2240,13 @@ L03வ்வு) த்த (ியோக dd
_சுப) த்த (ிர dd
_ரு) த்த (ிர dd
_ரௌ) த்த (ிர dd
_சூ) த்த (ிரச் dd
_சூ) த்த (ிரச்சி dd
_சூ) த்த (ிரத் dd
_சூ) த்த (ிரன dd
_சூ) த்த (ிரப் dd
_சூ) த்த (ிரரி dd
_சூ) த்த (ிரரே dd
_சூ) த்த (ிரர் dd
ஆதி) த்தி (ராவிட dd
_சேஷா) த்த (ிரி dd
@@ -2199,6 +2280,7 @@ _மொழி) த்து (வே dd
_வில்_வி) த்த (ை dd
_வில்வி) த்த (ை dd
_வி) த்த (ைகள dd
_வி) த்த (ைக்க dd
_வி) த்த (ைக்காக dd
_வி) த்த (ைக்கு dd
வி) த்த (ையாக dd
@@ -2296,6 +2378,7 @@ _சி) த்ரலேக (ா trVle:k
_) ப (கீர bV
_) ப (குள bV
_) ப (க்கிங்L06ாம bV
_) ப (க்கீர fV
_) ப (க்கெட் bV
_) ப (க்கென்ற bV
_) பக் (த bVk
@@ -2305,6 +2388,7 @@ _சி) த்ரலேக (ா trVle:k
_) ப (ங்கம bV
_) பங்க (ர bVNkV
_) ப (ங்களா bV
_) ப (ங்களூர bV
_) ப (ங்கார bV
_) ப (ங்க் bV
_) ப (சவகல்யாண bV
@@ -2394,6 +2478,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (ராக்_ஒபாமா bV
_) ப (ரிதா_ fV
_) ப (ரிதாவ fV
_) ப (ரீத fV
_) பரூக் fVrU:k
_) ப (ரோட bV
_) ப (ர்ஃபி bV
@@ -2454,6 +2539,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (லராம bV
_) ப (லவந்த bV
_) ப (லவான bV
_) ப (லவானவ pV
_) ப (லவீன bV
_) ப (லஹீன bV
_) பலாத்க (ார bVla:dk
@@ -2511,6 +2597,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) பாங்க (ாக் ba:Nk
_) ப (ாங்கில b
_) ப (ாங்க் b
_) ப (ாசிL04 f
_) ப (ாசில f
_) ப (ாசு b
_) பாசுப (த pa:sUpV
@@ -2544,9 +2631,10 @@ _டெட்_) ப (ாடி b
_) ப (ாதிக்கப்பட b
_) ப (ாதிக்கப்பட b
_) ப (ாதிக்கலாம b
_) ப (ாதிக்கவ b
_) ப (ாதிக்கவா b
_) ப (ாதிக்கவில் b
_) ப (ாதிக்காத b
_) ப (ாதிக்காமல b
_) ப (ாதிக்கால p
_) ப (ாதிக்கின்ற b
_) ப (ாதிக்கிற b
@@ -2561,6 +2649,7 @@ _டெட்_) ப (ாடி b
_) ப (ாதிக்கும்_மேற் p
_) ப (ாதிக்கும்_மேற்பட்ட_ p
_) ப (ாதிக்கும்_மேல p
_) ப (ாதிச்ச b
_) ப (ாதித்த b
_) ப (ாதிப்படை b
_) ப (ாதிப்படைகி b
@@ -2603,6 +2692,7 @@ _டெட்_) ப (ாடி b
_) பாப (ாவ ba:b
_) ப (ாபிலோன b
_) ப (ாபுவ b
_டைம்_) ப (ாம b
_) ப (ாமாவ b
_) ப (ாமினி b
_) ப (ாம்பே b
@@ -2616,6 +2706,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ாரதி b
_) ப (ாரத்த b
_) ப (ாரம b
_) ப (ாரமை p
_) ப (ாரம்பரிய p
_) ப (ாரம்மா p
_) ப (ாரவி b
@@ -2661,6 +2752,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ாலுவ b
_) ப (ாலே_L25 b
_) ப (ாலை p
_) ப (ாலையா b
_) ப (ால் p
_) ப (ால்_தாக்கரே b
_) பால்க (னி ba:lkV
@@ -2726,6 +2818,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ினிஷ f
_) ப (ின்_லேடன b
_) ப (ின்னங்கள b
_) ப (ின்னத்த b
_) ப (ின்னத்தால b
_) ப (ின்னத்தை b
_) ப (ின்னம b
@@ -2791,6 +2884,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரமுகர p
_) பி (ரமை b
_) பி (ரமோஷன p
_) பி (ரமோஸ b
_) ப (ிரம்ம b
_) பி (ரம்ம b
_) பி (ரம்மன b
@@ -2805,6 +2899,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரளய p
_) பி (ரவகி p
_) பி (ரவாக p
_) பி (ரவாள p
_) பி (ரவீண p
_) பி (ரவீன p
_) பி (ரவுச b
@@ -2812,6 +2907,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரவேசி p
_) பி (ரஷ் b
_) பி (ரஷ்ட p
_) பி (ரஸ p
_) பி (ரஸல்ஸ b
_) பி (ரஸாத p
_) பி (ரஸ்தா p
@@ -2845,6 +2941,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரான்ச f
_) பி (ரான்தி_ b
_) பி (ரான்ஸ f
_) பி (ராபல்ய p
_) பி (ராப் p
_) பி (ராமண b
_) பி (ராமணன b
@@ -2852,6 +2949,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ராமிக் b
_) பி (ராமின்_ b
_) பி (ராமிஸ p
_) பி (ராம்மண b
_) பி (ராய்லர b
_) பி (ரார்தன p
_) பி (ரார்தி p
@@ -2864,6 +2962,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ராவுக்கு b
_) பி (ராவை b
_) பி (ரிகேட b
_) பி (ரிஜேஷ b
_) பி (ரிட b
_) பிரிட (ோரிய prit.
_) பி (ரிட்டோரிய p
@@ -2887,6 +2986,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரியாவின p
_) பி (ரியாவு p
_) பி (ரியாவை p
_) பி (ரில்லிய b
_) பி (ரிஸ்டன b
_) பி (ரிஸ்டல b
_) பிரிஸ்ப (ேன brisb
@@ -2914,6 +3014,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரோகிதர p
_) பி (ரௌச b
_) பி (ரௌன b
_) ப (ிர்லா b
_) ப (ிலாஸ்பூர b
_) பிலிடெல்ப (ிய filidelf
_) பிலிம filmV#
@@ -2966,6 +3067,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ீடித்த p
_) ப (ீடிப்புகை b
_) ப (ீடிய b
_) ப (ீடியாட் p
_) ப (ீட்டில்ஸ b
_) பீட்ரூட் bi:t.ru:t.
_) பீத (ோவன bi:t
@@ -2979,6 +3081,7 @@ _விளையாடு_) ப (ாம்பே p
_) பீ (ராமண b
_) ப (ீராமணர b
_) ப (ீரிட p
_) ப (ீரியட p
_) ப (ீரோ b
_) ப (ீர்_முகமத p
_) ப (ீர்_முஹமத p
@@ -3083,6 +3186,8 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ெங்களூர b
_) ப (ெங்கால b
_) பெசண்ட besVn.t.V#
_) பெச (வாடா bezV
_) பெஜ (வாடா bezV
_) பெஞ்ச ben^tSV#
_) ப (ெஞ்சமின b
_) பெஞ்ச (மின ben^dZV
@@ -3104,6 +3209,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ெப்ரவரி f
_) ப (ெயில f
_) பெரோஸ fero:zV#
_) ப (ெர்க்கிலி b
_) பெர்ட் (ரண்ட bert.
_) ப (ெர்த் b
_) ப (ெர்னாட்ஷா b
@@ -3152,6 +3258,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ைகுக்கு b
_) ப (ைக்கின b
_) ப (ைக்கிற்க b
_) ப (ைக்கில b
_) ப (ைக்குகள b
_) ப (ைக்கும b
_) ப (ைசன b
@@ -3171,6 +3278,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ொம்மனாட்டி p
_) ப (ொம்மல b
_) ப (ொம்மை b
_) ப (ோஃபர்ஸ b
_) ப (ோஃபோர் b
_) ப (ோக_L13 b
_) ப (ோகங்க b
@@ -3188,6 +3296,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ோகிய b
_) ப (ோக்கஸ f
_) ப (ோங்கா b
_) ப (ோங்கானும p
_) ப (ோங்கு b
_) ப (ோஜ b
_) ப (ோடோ b
@@ -3195,6 +3304,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ோட்டோக்க f
_) போட்டோக்ராப (ர fo:t.t.o:gra:fV
_) ப (ோட்டோதான f
_) ப (ோணி b
_) ப (ோண்டா b
_) ப (ோண்டி b
_) ப (ோதகன b
@@ -3223,6 +3333,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ோன்கூட f
_) ப (ோன்லகூட f
_) ப (ோன்ஸ்லே b
_) போப (ர்ஸ bo:fV
_) போப (ால bo:p
_) போப (ோர் bo:f
_) ப (ோரடி b
@@ -3365,6 +3476,7 @@ _விரகதா) ப (+ bV#
_மீள்) ப (தி pV
சீதா) பதி pVti
சேது) பதி pVti
_விடு) ப (தி pV
தரணி) பதி pVti
திரௌ) ப (தி pV
பிரஜா) பத (ி pVt
@@ -3389,6 +3501,7 @@ _ராஷ்டிர) ப (தி pV
_க) ப (த் bV
அரா) பத் fVt
அல்) ப (த் pV
_கிலா) பத் fVt
_தா) ப (த்த bV
வீர) ப (த்தினி pV
_ரிஷி) ப (த்தினி pV
@@ -3419,6 +3532,7 @@ _சொந்த) ப (ந்த bV
_ஊடு) ப (யிர pV
_நடை) ப (யிற்சி pV
கா) ப (ர bV
_ஜெனி) ப (ர fV
நாகா) ப (ரண bV
_ஒலி) ப (ரப் pV
_ஒளி) ப (ரப் pV
@@ -3429,6 +3543,7 @@ _சொந்த) ப (ந்த bV
_கார்) ப (ரேஷன pV
_பம்) ப (ர்_ pV
_கன்) ப (ர்ம fV
இன்) ப (ர்ம fV
கரம்) ப (ற் pV
_தீ) ப (ற்ற pV
ஆள்) ப (ற்ற pV
@@ -3463,6 +3578,7 @@ _முனிசி) ப (ல pV
_ஷில்) ப (ா p
_முஸ்த) ப (ா f
_ஹனி) ப (ா f
_ஹனீ) ப (ா f
_போதும்) ப (ா p
_போலாம்) ப (ா p
_வேண்டாம்) ப (ா p
@@ -3506,8 +3622,10 @@ _வெளிப்) ப (ாக b
ஒரு) ப (ாத p
_படு) ப (ாத p
_மறு) ப (ாத p
பரீதா) ப (ாத b
ஆமதா) ப (ாத b
அL06மதா) ப (ாத b
அலாகா) ப (ாத b
இஸ்லாமா) ப (ாத b
ஒளரங்கா) ப (ாத b
ஔரங்கா) ப (ாத b
@@ -3554,6 +3672,7 @@ _ப்ரின்சி) ப (ால p
முக) ப (ாவ b
அட) ப (ாவ p
வீண்) ப (ாவ p
_படு) ப (ாவ p
அடி) ப (ாவி p
_நவ) ப (ாஷ p
_தமிழ்ப்) ப (ாஷ _b
@@ -3605,6 +3724,7 @@ _கன்னா) ப (ின்னா p
@) ப (ின்னால்_ p
_) ப (ிப்ரவரி f
_லெஸ்) ப (ியன b
_மா) ப (ியா f
_கன்) பி (யுச f
_பெர்) பி (யூம f
_வரப்) பி (ரL04ாத p
@@ -3625,6 +3745,7 @@ _ஞானப்) பிரக (ா prVk
வீண்) பி (ரமை b
துஷ்) பி (ரயோக p
L03ந்தப்) பி (ரளய p
_சொற்) பி (ரவாக p
எக்ஸ்) பிர (ஸ pre
ஆ) பி (ரஹாம b
பயப்) பி (ராந்தி b
@@ -3654,6 +3775,7 @@ L03ந்தப்) பி (ராய p
ஆண்) ப (ிள்ளை p
பெண்) ப (ிள்ளை p
அச்சா) ப (ீ f
_ர) பீக் fi:k
உப) ப (ீட p
விக்கி) ப (ீடியா p
இம்) ப (ீரியல p
@@ -3661,6 +3783,7 @@ L03ந்தப்) பி (ராய p
_அன்) ப (ுட b
_மார்) ப (ுட b
ராஜ) ப (ுதன p
_மின்) ப (ுத்தக p
_) புத்தம்ப (ுத puttVmp
ராஜ) ப (ுத்திர p
வாயு) ப (ுத்திர p
@@ -3679,6 +3802,7 @@ L03ந்தப்) பி (ராய p
_பா) ப (ுலர p
_) பு (ளோரன்ஸ f
மண்) ப (ுழு p
_ஷாம்) ப (ூ p
ப (ூச்சி p
ம்) ப (ூச்சி b
உறுதி) ப (ூண்ட p
@@ -3708,6 +3832,7 @@ _கோலாலம்) ப (ூர p
_கை) ப (ேசி p
_செல்) ப (ேசி p
அலை) ப (ேசி p
_திரை) ப (ேசி p
தொலை) ப (ேசி p
_மறு) ப (ேச்ச p
ஒரு) ப (ேச்ச p
@@ -3732,6 +3857,7 @@ _கோலாலம்) ப (ூர p
_ வெடி) ப (ொரு p
_பழம்) ப (ொருள p
_தொல்) ப (ொருள p
_தேடு) ப (ொறி p
வீண்) ப (ொழுத p
ப (ொழுதிலா_+ p
ப (ொழுதிலும்_+ p
@@ -3743,6 +3869,7 @@ _ வெடி) ப (ொரு p
ப (ொழுதே_+ p
ப (ொழுதோ_+ p
_விலை) ப (ோ p
_பிர) ப (ோL04 p
_ஏக) ப (ோக b
ராஜ) ப (ோக b
ப (ோக_ p
@@ -3780,6 +3907,7 @@ _விலை) ப (ோ p
ப (ோன_ p
ப (ோனது_ p
ப (ோனா p
அல்) ப (ோன்சா f
ப (ோன்ற+ p // ?? end-of-word + suffix ??
அல்) ப (ோன்ஸ f
ப (ோயிரு p
@@ -3802,7 +3930,9 @@ _விலை) ப (ோ p
_டே) ப (் p
_போ) ப் p
_லாக) ப் p
ஆசி) ப் f
_டெஸ்க்டா) ப் p
ஆ) ப் (கன f
ஆ) ப் (கான f
_பா) ப்க (ார்ன pk
_ர) ப்ச (ர ptSV
@@ -3810,6 +3940,11 @@ _டெஸ்க்டா) ப் p
_லி) ப் (ட f
_மைக்ரோசா) ப் (ட f
_சா) ப்ட் (வேர ft
_ச) ப் (த_ p
_ச) ப்த (மி_ ptV
_ச) ப்த (மிய ptV
_ச) ப் (தரிஷி p
_ச) ப் (தஸ்வர p
_ஹி) ப்னாட (ிச pna:t.
கர்) ப்ப bbV#
_நவா) ப்ப bbV#
@@ -3822,6 +3957,7 @@ _மைக்ரோசா) ப் (ட f
_ர) ப்ப (ர bbV
ஆ) ப்ப (ரிக்க fV
தென்னா) ப்ப (ரிக்க fV
_துர்) ப்ப (ல bbV
உ) ப்ப (லா bbV
உ) ப்ப (லாக bbV
உ) ப்ப (லான bbV
@@ -3837,6 +3973,8 @@ _மைக்ரோசா) ப் (ட f
_ஜ) ப்ப (ார bb
_துர்) ப்ப (ாஷ bb
அ) ப்ப (ாஸ bb
அ) ப்ப (ாஸாமி pp
அ) ப்ப (ாஸ்வாமி pp
உ) ப்ப (ி_ bb
_ட) ப்ப (ிங் bb
உ) ப்ப (ின_ bb
@@ -3848,6 +3986,8 @@ _யாதவ) ப்பி (ரகாச pp
L03) ப்பி (ரகார pp
_வெளி) ப்பி (ரகார pp
அதிக) ப்பி (ரசங்க pp
_வன) ப்பி (ரதேச pp
_காட்டு) ப்பி (ரதேச pp
_நில) ப்பி (ரபு pp
_சத்திய) ப்பி (ரமா pp
மன) ப்பி (ரமை bb
@@ -3861,10 +4001,12 @@ _சத்திய) ப்பி (ரமா pp
_மன) ப்பி (ரவாக pp
_ரத்த) ப்பி (ரவாக pp
இசை) ப்பி (ரவாக pp
உரை) ப்பி (ரவாக pp
இரத்த) ப்பி (ரவாக pp
_ஒL10ி) ப்பி (ரவாக pp
தேச) ப்பி (ரஷ்ட pp
_ஜாதி) ப்பி (ரஷ்ட pp
_வான) ப்பி (ரஸ்த pp
ஆ) ப்பி (ரிக்க f
தென்னா) ப்பி (ரிக்க fV
_கஜ) ப்ப (ிருஷ்ட bb
@@ -4028,6 +4170,8 @@ _சந்தேக) ப்ப (ுத்தி bb
_உ) ஸ்பெக் zbek
_நவா) ஸ zV#
பெர்னாண்ட) ஸ zV#
_ம) ஸ்த (ூர zd
அரி) ஸ (ோன z

.group ஹ
ஹ HV

+ 19
- 2
dictsource/ur_list View File

@@ -1,4 +1,4 @@
// This ur_list file is prepared by Him Prasad Gautam (Kathmandu, Nepal)
// This ur_list file is prepared by Him Prasad Gautam (Kathmandu, Nepal)
// This file is UTF8 encoded
// Letter Names, Numbers and exceptional pronounciation of Urdu

@@ -162,11 +162,28 @@ _0M5 'khaRab
_dpt _ISaRI'Ia_


// Exception of phonemes

// pronouns
یہ jE $u
کہ kE $u
وہ wo: $u
پ $u
تم tUm $u
ہم Ham $u
اس Is $u
ان In $u

// unstressed prepositions
کا $u
کی $u
کے $u
سے $u

اور OR $u $brk

// unstressed verbs
ہے $u
ہیں $u

// Pronunciation exceptions
پاکستان p'a:k'i:st'a:n

+ 8
- 2
dictsource/ur_rules View File

@@ -1,4 +1,4 @@

// This ur_rules file is written by Him Prasad Gautam (Kathmandu, Nepal).
// This file is UTF8 encoded
// phoneme rules for Urdu
@@ -70,12 +70,14 @@ _) ای i:
وٗ u:
و (L01 v
_) و vV
وع (_ u:

.group ی
ی e:
ی (L01 j
ی (_ i:
_) ی jV
یع(_ i:


.group ے // yeh barree
@@ -244,8 +246,12 @@ _) ای i:
.group ء
ء

.group ہ
.group ہ
ہ H
_) ہ Ha
_) ہ (L01 H
_) ہ (ند HI

ہ (_ a



+ 0
- 3
espeak-data/voices/en View File

@@ -4,9 +4,6 @@ language en-gb 2
language en 2
gender male

replace 03 I i
replace 03 I2 i

//pitch 80 118

tunes s1 c1 q1 e1

+ 1
- 1
phsource/ph_english View File

@@ -162,7 +162,7 @@ endphoneme

phoneme @L
vowel starttype #@ endtype l
ipa əl
ipa ə|l
unstressed
length 160
CALL vowelstart_l

+ 16
- 6
phsource/ph_english_sc View File

@@ -168,7 +168,9 @@ phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in Ameri
vowel starttype #a endtype #@
length 250
ipa aː
AppendPhoneme(r)
IF NOT nextPhW(r) THEN
AppendPhoneme(r)
ENDIF
FMT(vowelr/aa_r)
endphoneme

@@ -211,7 +213,9 @@ phoneme O@
vowel starttype #o endtype #@
length 230
ipa ɔ
AppendPhoneme(r)
IF NOT nextPhW(r) THEN
AppendPhoneme(r)
ENDIF
FMT(vowelr/oo_r)
endphoneme

@@ -219,7 +223,9 @@ phoneme o@
vowel starttype #o endtype #@
length 230
ipa o
AppendPhoneme(r)
IF NOT nextPhW(r) THEN
AppendPhoneme(r)
ENDIF
FMT(vowelr/oo_r)
endphoneme

@@ -305,7 +311,9 @@ phoneme e@
vowel starttype #e endtype #@
length 220
ipa e
AppendPhoneme(r)
IF NOT nextPhW(r) THEN
AppendPhoneme(r)
ENDIF
FMT(vdiph2/e@)
endphoneme

@@ -314,7 +322,9 @@ phoneme i@3
vowel starttype #i endtype #@
ipa ɪ
length 240
AppendPhoneme(r)
IF NOT nextPhW(r) THEN
AppendPhoneme(r)
ENDIF
FMT(vowelr/i_r)
endphoneme

@@ -380,11 +390,11 @@ phoneme r
liquid rhotic
lengthmod 7
trill

IF nextPh(isNotVowel) THEN
ChangePhoneme(r/)
ENDIF
CALL base/r
ipa r
endphoneme



+ 6
- 6
phsource/ph_english_us View File

@@ -151,7 +151,7 @@ endphoneme

phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American
vowel starttype #a endtype #a
ipa ɑːɹ
ipa ɑː|ɹ
IF nextPh(r-) THEN
ipa ɑː
ENDIF
@@ -192,7 +192,7 @@ endphoneme
phoneme O@
vowel starttype #o endtype #@
length 250
ipa ɔːɹ
ipa ɔː|ɹ
IF nextPhW(r) THEN
ipa ɔː
ENDIF
@@ -204,7 +204,7 @@ endphoneme
phoneme o@
vowel starttype #o endtype #@
length 250
ipa oːɹ
ipa oː|ɹ
IF nextPhW(r) THEN
ipa oː
ENDIF
@@ -269,7 +269,7 @@ endphoneme
phoneme e@
vowel starttype #e endtype #@
length 280
ipa ɛɹ
ipa ɛ|ɹ
IF nextPhW(r) THEN
ipa ɛ
ENDIF
@@ -288,7 +288,7 @@ endphoneme
phoneme i@3
vowel starttype #i endtype #@
length 280
ipa ɪɹ
ipa ɪ|ɹ
IF nextPhW(r) THEN
ipa ɪ
ENDIF
@@ -300,7 +300,7 @@ endphoneme
phoneme U@
vowel starttype #@ endtype #@
length 250
ipa ʊɹ
ipa ʊ|ɹ
IF nextPhW(r-) THEN
ipa ʊ
ENDIF

+ 48
- 11
src/compiledata.cpp View File

@@ -44,6 +44,7 @@

extern void FindPhonemesUsed(void);
extern void DisplayErrorFile(const char *fname);
extern int utf8_in(int *c, const char *buf);
extern int utf8_out(unsigned int c, char *buf);
extern void DrawEnvelopes();
extern void ReadPhondataManifest();
@@ -157,6 +158,7 @@ static keywtab_t k_properties[] = {

enum {
kPHONEMESTART = 1,
kUTF8_BOM,
kPROCEDURE,
kENDPHONEME,
kENDPROCEDURE,
@@ -210,6 +212,8 @@ enum {
kTUNE_SPLIT,
};

static const char utf8_bom[] = {0xef,0xbb,0xbf,0};

static keywtab_t k_intonation[] = {
{"tune", 0, kTUNE},
{"endtune", 0, kENDTUNE},
@@ -250,6 +254,7 @@ static keywtab_t keywords[] = {
{"phonemenumber",tSTATEMENT, kPHONEMENUMBER},
{"phonemetable",tSTATEMENT, kPHONEMETABLE},
{"include", tSTATEMENT, kINCLUDE},
{utf8_bom, tSTATEMENT, kUTF8_BOM},

{"phoneme", tSTATEMENT, kPHONEMESTART},
{"procedure", tSTATEMENT, kPROCEDURE},
@@ -2720,11 +2725,14 @@ int CompilePhoneme(int compile_phoneme)
int keyword;
int value;
int phcode = 0;
int flags;
int ix;
unsigned int c;
int start;
int count;
int c;
char *p;
char number_buf[12];
char ipa_buf[N_ITEM_STRING];
char ipa_buf[N_ITEM_STRING+1];
PHONEME_TAB phoneme_out2;
PHONEME_PROG_LOG phoneme_prog_log;

@@ -2852,32 +2860,58 @@ int CompilePhoneme(int compile_phoneme)
strcpy(item_string," ");

// copy the string, recognize characters in the form U+9999
p = item_string;
ix = 0;
while((c = *p++) != 0)
flags = 0;
count = 0;
ix = 1;

for(p=item_string; *p != 0;)
{
p += utf8_in(&c, p);

if((c == '|') && (count > 0))
{
// '|' means don't allow a tie or joiner before this letter
flags |= (1 << (count -1));
}
else
if((c=='U') && (p[0]=='+'))
{
int j;
// U+9999
memcpy(number_buf,&p[1],4); // U+ should be followed by 4 hex digits
p++;
memcpy(number_buf,p,4); // U+ should be followed by 4 hex digits
number_buf[4] = 0;
c = 0;
c = '#';
sscanf(number_buf,"%x",&c);
p += 5;

// move past the 4 hexdecimal digits
for(j=0; j<4; j++)
{
if(!isalnum(*p))
break;
p++;
}
ix += utf8_out(c, &ipa_buf[ix]);
count++;
}
else
{
ipa_buf[ix++] = c;
ix += utf8_out(c, &ipa_buf[ix]);
count++;
}
}
ipa_buf[0] = flags;
ipa_buf[ix] = 0;
value = strlen(ipa_buf); // number of UTF-8 bytes

start = 1;
if(flags != 0)
start = 0; // only include the flags byte if bits are set
value = strlen(&ipa_buf[start]); // number of UTF-8 bytes

*prog_out++ = (i_IPA_NAME << 8) + value;
for(ix=0; ix < value; ix += 2)
{
*prog_out++ = (ipa_buf[ix] << 8) + (ipa_buf[ix+1] & 0xff);
*prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff);
}
break;
}
@@ -3400,6 +3434,9 @@ static void CompilePhonemeFiles()

switch(item)
{
case kUTF8_BOM:
break; // ignore bytes 0xef 0xbb 0xbf

case kINCLUDE:
NextItem(tSTRING);
sprintf(buf,"%s%s",path_source,item_string);

+ 48
- 20
src/dictionary.cpp View File

@@ -524,15 +524,14 @@ unsigned short ipa1[96] = {
};


char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa)
{//=====================================================================================
char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags)
{//===================================================================================================
int c;
int mnem;
int len;
int first;
int ix = 0;
char *p;
unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme
PHONEME_DATA phdata;

if(ph->code == phonEND_WORD)
@@ -564,20 +563,28 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
InterpretPhoneme(NULL, 0, plist, &phdata, NULL);
}

len = strlen(phdata.ipa_string);
p = phdata.ipa_string;
if(*p == 0x20)
{
// indicates no name for this phoneme
*phon_out = 0;
return(phon_out);
}
if((*p != 0) && ((*p & 0xff) < 0x20))
{
// name starts with a flags byte
if(flags != NULL)
*flags = *p;
p++;
}

len = strlen(p);
if(len > 0)
{
if((ipa_control = phdata.ipa_string[0]) > 0x20)
{
strcpy(&phon_out[ix], phdata.ipa_string);
ix += len;
}
if(ipa_control >= 0x20)
{
phon_out = &phon_out[ix];
*phon_out = 0;
return(phon_out); // 0x20 = ignore phoneme
}
strcpy(phon_out, p);
phon_out += len;
*phon_out = 0;
return(phon_out);
}
}

@@ -630,12 +637,17 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
unsigned int max_len;
int phon_out_ix=0;
int stress;
unsigned int c;
int c;
char *p;
char *buf;
int count;
int flags;
char phon_buf[30];
char phon_buf2[30];
PHONEME_LIST *plist;

static const char *stress_chars = "==,,''";
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner

if(phon_out != NULL)
{
@@ -672,22 +684,38 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
}
}

buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa);
flags = 0;
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
count = 0;
for(p=phon_buf2; *p != 0;)
{
p += utf8_in(&c, p);
if(use_ipa > 1)
{
// look for non-inital alphabetic character, but not diacritic, superscript etc.
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c))
{
buf += utf8_out(char_tie[use_ipa-2], buf);
}
}
buf += utf8_out(c, buf);
count++;
}

if(plist->ph->code != phonSWITCH)
{
if(plist->synthflags & SFLAG_LENGTHEN)
{
buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa);
buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa, NULL);
}
if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
{
// syllablic consonant
buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa);
buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa, NULL);
}
if(plist->tone_ph > 0)
{
buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa);
buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa, NULL);
}
}


+ 13
- 1
src/espeak.cpp View File

@@ -67,6 +67,7 @@ static const char *help_text =
"\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n"
"--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
@@ -362,7 +363,7 @@ int main (int argc, char **argv)
{"path", required_argument, 0, 0x107},
{"phonout", required_argument, 0, 0x108},
{"pho", no_argument, 0, 0x109},
{"ipa", no_argument, 0, 0x10a},
{"ipa", optional_argument, 0, 0x10a},
{"version", no_argument, 0, 0x10b},
{0, 0, 0, 0}
};
@@ -604,6 +605,17 @@ int main (int argc, char **argv)

case 0x10a: // --ipa
option_phonemes = 3;
if(optarg2 != NULL)
{
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>2))
{
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;
}
option_phonemes += value;
}
break;

case 0x10b: // -version

+ 2
- 1
src/numbers.cpp View File

@@ -653,8 +653,9 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
alphabet = AlphabetFromChar(letter);
if(alphabet != current_alphabet)
{
// speak the name of the alphabet
current_alphabet = alphabet;
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME))
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset))
{
phontab_1 = tr->phoneme_tab_ix;
ph_buf2[0] = 0;

+ 13
- 1
src/speak.cpp View File

@@ -101,6 +101,7 @@ static const char *help_text =
"\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n"
"--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
@@ -485,7 +486,7 @@ int main (int argc, char **argv)
{"path", required_argument, 0, 0x107},
{"phonout", required_argument, 0, 0x108},
{"pho", no_argument, 0, 0x109},
{"ipa", no_argument, 0, 0x10a},
{"ipa", optional_argument, 0, 0x10a},
{"version", no_argument, 0, 0x10b},
{0, 0, 0, 0}
};
@@ -723,6 +724,17 @@ int main (int argc, char **argv)

case 0x10a: // --ipa
option_phonemes = 3;
if(optarg2 != NULL)
{
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>2))
{
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;
}
option_phonemes += value;
}
break;

case 0x10b: // --version

+ 62
- 62
src/speak_lib.cpp View File

@@ -82,12 +82,12 @@ void WVoiceChanged(voice_t *wvoice)
static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
{//======================================================================
ENTER("dispatch_audio");
int a_wave_can_be_played = fifo_is_command_enabled();
#ifdef DEBUG_ENABLED
SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n",
(event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length,
SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n",
(event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length,
(event) ? event->sample : 0,
a_wave_can_be_played);
#endif
@@ -134,8 +134,8 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
while(a_wave_can_be_played) {
// TBD: some event are filtered here but some insight might be given
// TBD: in synthesise.cpp for avoiding to create WORDs with size=0.
// TBD: For example sentence "or ALT)." returns three words
// "or", "ALT" and "".
// TBD: For example sentence "or ALT)." returns three words
// "or", "ALT" and "".
// TBD: the last one has its size=0.
if (event && (event->type == espeakEVENT_WORD) && (event->length==0))
{
@@ -171,7 +171,7 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
}

SHOW_TIME("LEAVE dispatch_audio\n");
return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error
}

@@ -183,12 +183,12 @@ static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_
int i=0;

// The audio data are written to the output device.
// The list of events in event_list (index: event_list_ix) is read:
// The list of events in event_list (index: event_list_ix) is read:
// Each event is declared to the "event" object which stores them internally.
// The event object is responsible of calling the external callback
// as soon as the relevant audio sample is played.

do
do
{ // for each event
espeak_EVENT* event;
if (event_list_ix == 0)
@@ -231,7 +231,7 @@ int sync_espeak_terminated_msg( uint32_t unique_identifier, void* user_data)

if (my_mode==AUDIO_OUTPUT_PLAYBACK)
{
while(1)
while(1)
{
espeak_ERROR a_error = event_declare(event_list);
if (a_error != EE_BUFFER_FULL)
@@ -290,14 +290,14 @@ static void select_output(espeak_AUDIO_OUTPUT output_type)
int GetFileLength(const char *filename)
{//====================================
struct stat statbuf;
if(stat(filename,&statbuf) != 0)
return(0);
if((statbuf.st_mode & S_IFMT) == S_IFDIR)
// if(S_ISDIR(statbuf.st_mode))
return(-2); // a directory
return(statbuf.st_size);
} // end of GetFileLength

@@ -337,7 +337,7 @@ static void init_path(const char *path)
{
sprintf(path_home,"%s/espeak-data",env);
if(GetFileLength(path_home) == -2)
return; // an espeak-data directory exists
return; // an espeak-data directory exists
}

buf[0] = 0;
@@ -362,7 +362,7 @@ static void init_path(const char *path)
{
snprintf(path_home,sizeof(path_home),"%s/espeak-data",env);
if(GetFileLength(path_home) == -2)
return; // an espeak-data directory exists
return; // an espeak-data directory exists
}

snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME"));
@@ -561,21 +561,21 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un
ENTER("MarkerEvent");
espeak_EVENT *ep;
double time;
if((event_list == NULL) || (event_list_ix >= (n_event_list-2)))
return;
ep = &event_list[event_list_ix++];
ep->type = (espeak_EVENT_TYPE)type;
ep->unique_identifier = my_unique_identifier;
ep->user_data = my_user_data;
ep->text_position = char_position & 0xffffff;
ep->length = char_position >> 24;
time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate;
ep->audio_position = int(time);
ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2);
#ifdef DEBUG_ENABLED
SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start);
SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n",
@@ -605,22 +605,22 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un



espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size,
unsigned int position, espeak_POSITION_TYPE position_type,
espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size,
unsigned int position, espeak_POSITION_TYPE position_type,
unsigned int end_position, unsigned int flags, void* user_data)
{//===========================================================================
#ifdef DEBUG_ENABLED
ENTER("sync_espeak_Synth");
SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text);
#endif

espeak_ERROR aStatus;
InitText(flags);
my_unique_identifier = unique_identifier;
my_user_data = user_data;
for (int i=0; i < N_SPEECH_PARAM; i++)
saved_parameters[i] = param_stack[0].parameter[i];

@@ -629,26 +629,26 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text,
case POS_CHARACTER:
skip_characters = position;
break;
case POS_WORD:
skip_words = position;
break;
case POS_SENTENCE:
skip_sentences = position;
break;
}
if(skip_characters || skip_words || skip_sentences)
skipping_text = 1;
end_character_position = end_position;
aStatus = Synthesize(unique_identifier, text, flags);
#ifdef USE_ASYNC
wave_flush(my_audio);
#endif
SHOW_TIME("LEAVE sync_espeak_Synth");
return aStatus;
} // end of sync_espeak_Synth
@@ -656,29 +656,29 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text,



espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size,
const char *index_mark, unsigned int end_position,
espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size,
const char *index_mark, unsigned int end_position,
unsigned int flags, void* user_data)
{//=========================================================================
espeak_ERROR aStatus;
InitText(flags);
my_unique_identifier = unique_identifier;
my_user_data = user_data;
if(index_mark != NULL)
{
strncpy0(skip_marker, index_mark, sizeof(skip_marker));
skipping_text = 1;
}
end_character_position = end_position;
aStatus = Synthesize(unique_identifier, text, flags | espeakSSML);
SHOW_TIME("LEAVE sync_espeak_Synth_Mark");
return (aStatus);
} // end of sync_espeak_Synth_Mark

@@ -710,7 +710,7 @@ void sync_espeak_Char(wchar_t character)
char buf[80];
my_unique_identifier = 0;
my_user_data = NULL;
sprintf(buf,"<say-as interpret-as=\"tts:char\">&#%d;</say-as>",character);
Synthesize(0, buf,espeakSSML);
}
@@ -722,7 +722,7 @@ void sync_espeak_SetPunctuationList(const wchar_t *punctlist)
// Set the list of punctuation which are spoken for "some".
my_unique_identifier = 0;
my_user_data = NULL;
wcsncpy(option_punctlist, punctlist, N_PUNCTLIST);
option_punctlist[N_PUNCTLIST-1] = 0;
} // end of sync_espeak_SetPunctuationList
@@ -771,7 +771,7 @@ ENTER("espeak_Initialize");
setlocale(LC_CTYPE,"");
}
#endif
init_path(path);
initialise(options);
select_output(output_type);
@@ -788,30 +788,30 @@ ENTER("espeak_Initialize");
outbuf = (unsigned char*)realloc(outbuf,outbuf_size);
if((out_start = outbuf) == NULL)
return(EE_INTERNAL_ERROR);
// allocate space for event list. Allow 200 events per second.
// Add a constant to allow for very small buf_length
n_event_list = (buf_length*200)/1000 + 20;
if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL)
return(EE_INTERNAL_ERROR);
option_phonemes = 0;
option_mbrola_phonemes = 0;
option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA));

VoiceReset(0);
// SetVoiceByName("default");
for(param=0; param<N_SPEECH_PARAM; param++)
param_stack[0].parameter[param] = saved_parameters[param] = param_defaults[param];
SetParameter(espeakRATE,175,0);
SetParameter(espeakVOLUME,100,0);
SetParameter(espeakCAPITALS,option_capitals,0);
SetParameter(espeakPUNCTUATION,option_punctuation,0);
SetParameter(espeakWORDGAP,0,0);
// DoVoiceChange(voice);
#ifdef USE_ASYNC
fifo_init();
#endif
@@ -821,10 +821,10 @@ ENTER("espeak_Initialize");



ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size,
unsigned int position,
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size,
unsigned int position,
espeak_POSITION_TYPE position_type,
unsigned int end_position, unsigned int flags,
unsigned int end_position, unsigned int flags,
unsigned int* unique_identifier, void* user_data)
{//=====================================================================================
#ifdef DEBUG_ENABLED
@@ -885,10 +885,10 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size,



ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size,
const char *index_mark,
unsigned int end_position,
unsigned int flags,
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size,
const char *index_mark,
unsigned int end_position,
unsigned int flags,
unsigned int* unique_identifier,
void* user_data)
{//=========================================================================
@@ -919,15 +919,15 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size,

#ifdef USE_ASYNC
// Create the mark command
t_espeak_command* c1 = create_espeak_mark(text, size, index_mark, end_position,
t_espeak_command* c1 = create_espeak_mark(text, size, index_mark, end_position,
flags, user_data);
// Retrieve the unique identifier
*unique_identifier = c1->u.my_mark.unique_identifier;
// Create the "terminated msg" command (same uid)
t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data);
// Try to add these 2 commands (single transaction)
if (c1 && c2)
{
@@ -1152,15 +1152,15 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries)
value=3 as (1), but produces IPA phoneme names rather than ascii
value=3 as (1), but produces IPA phoneme names rather than ascii
bit 4: produce mbrola pho data
*/
option_phonemes = value & 3;
option_phonemes = value & 7;
option_mbrola_phonemes = value & 16;
f_trans = stream;
if(stream == NULL)
f_trans = stderr;
} // end of espeak_SetPhonemes


@@ -1269,4 +1269,4 @@ ESPEAK_API const char *espeak_Info(const char **ptr)

#pragma GCC visibility pop


+ 2
- 2
src/synth_mbrola.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -490,7 +490,7 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr
if(ph->code != phonEND_WORD)
{
char phoneme_name[16];
WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA);
WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA, NULL);
DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name);
}


+ 2
- 2
src/synthdata.cpp View File

@@ -35,8 +35,8 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.46.39 01.Mar.13";
const int version_phdata = 0x014639;
const char *version_string = "1.46.41 03.Mar.13";
const int version_phdata = 0x014640;

int option_device_number = -1;
FILE *f_logespeak = NULL;

+ 4
- 4
src/synthesize.cpp View File

@@ -1438,7 +1438,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
}
else
{
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
done_phoneme_marker = 1;
}
@@ -1751,7 +1751,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)

if((option_phoneme_events) && (done_phoneme_marker == 0))
{
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
}

@@ -1937,8 +1937,8 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
if((option_phonemes > 0) || (phoneme_callback != NULL))
{
int use_ipa = 0;
if(option_phonemes == 3)
use_ipa = 1;
if(option_phonemes >= 3)
use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ

GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
if(option_phonemes > 0)

+ 15
- 3
src/tr_languages.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2011 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -163,7 +163,7 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last)

// ignore these characters
static const unsigned short chars_ignore_default[] = {
0xad, 1, // soft hyphtn
0xad, 1, // soft hyphen
0x200c, 1, // zero width non-joiner
0x200d, 1, // zero width joiner
0, 0 };
@@ -436,13 +436,16 @@ Translator *SelectTranslator(const char *name)
int name2 = 0;
Translator *tr;

static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250};
static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 };

static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240};
static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 };

static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 };
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};

static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230};
static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270};
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };

// convert name string into a word of up to 4 characters, for the switch()
@@ -836,8 +839,17 @@ Translator *SelectTranslator(const char *name)
{
tr->letter_bits_offset = OFFSET_GURMUKHI;
}
else
if(name2 == L('g','u'))
{
SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->letter_bits_offset = OFFSET_GUJARATI;
tr->langopts.stress_rule = STRESSPOSN_2R;
}
else
if(name2 == L('n','e'))
{
SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->langopts.break_numbers = 0x2aaaa8;
tr->langopts.max_digits = 22;
tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS;

+ 15
- 11
src/translate.cpp View File

@@ -3309,17 +3309,21 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
*pn++ = tr->langopts.thousands_sep;
}
*pn++ = ' ';
if(tr->langopts.break_numbers & (1 << (nx-1)))
{
// the next group only has 1 digits (i.e. NUM2_10000), make it three
*pn++ = '0';
*pn++ = '0';
}
if(tr->langopts.break_numbers & (1 << (nx-2)))
{
// the next group only has 2 digits (i.e. NUM2_10000), make it three
*pn++ = '0';
}

if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0)
{
if(tr->langopts.break_numbers & (1 << (nx-1)))
{
// the next group only has 1 digits, make it three
*pn++ = '0';
*pn++ = '0';
}
if(tr->langopts.break_numbers & (1 << (nx-2)))
{
// the next group only has 2 digits (eg. Indian languages), make it three
*pn++ = '0';
}
}
}
}
pw--;

+ 1
- 1
src/translate.h View File

@@ -721,7 +721,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix
void SetVoiceStack(espeak_VOICE *v, const char *variant_name);
void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata, WORD_PH_DATA *worddata);
void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata);
char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa);
char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags);

extern FILE *f_trans; // for logging
extern FILE *f_logespeak;

Loading…
Cancel
Save