Browse Source

Merge branch 'master' into android

Conflicts:
	README.md
master
Reece H. Dunn 11 years ago
parent
commit
fdb1fcb75b
55 changed files with 3265 additions and 563 deletions
  1. 1
    0
      .gitignore
  2. 21
    0
      Makefile.am
  3. 37
    2
      README.md
  4. 79
    2
      dictsource/af_list
  5. 21
    6
      dictsource/af_rules
  6. 323
    0
      dictsource/as_list
  7. 388
    0
      dictsource/as_rules
  8. 2
    2
      dictsource/de_list
  9. 1
    1
      dictsource/de_rules
  10. 44
    7
      dictsource/en_list
  11. 30
    7
      dictsource/en_rules
  12. 35
    7
      dictsource/ga_list
  13. 81
    17
      dictsource/ga_rules
  14. 4
    4
      dictsource/grc_list
  15. 69
    66
      dictsource/grc_rules
  16. 167
    0
      dictsource/gu_list
  17. 468
    0
      dictsource/gu_rules
  18. 2
    2
      dictsource/hu_list
  19. 612
    131
      dictsource/hu_rules
  20. 30
    2
      dictsource/nl_list
  21. 42
    5
      dictsource/nl_rules
  22. 1
    1
      dictsource/sl_list
  23. 10
    5
      dictsource/sw_list
  24. 16
    15
      dictsource/sw_rules
  25. 5
    2
      dictsource/ta_list
  26. 125
    10
      dictsource/ta_rules
  27. 4
    0
      espeak-data/voices/test/as
  28. 3
    0
      espeak-data/voices/test/gu
  29. 1
    2
      mkdictlist
  30. BIN
      phsource/m/mu
  31. 94
    0
      phsource/ph_assamese
  32. 4
    0
      phsource/ph_gujarati
  33. 1
    1
      phsource/ph_irish
  34. 203
    15
      phsource/ph_swahili
  35. 9
    0
      phsource/phonemes
  36. 11
    0
      src/compiledata.cpp
  37. 8
    7
      src/compiledict.cpp
  38. 25
    14
      src/dictionary.cpp
  39. 1
    0
      src/espeak.cpp
  40. 58
    58
      src/event.cpp
  41. 31
    31
      src/fifo.cpp
  42. 16
    16
      src/intonation.cpp
  43. 37
    34
      src/numbers.cpp
  44. 30
    26
      src/readclause.cpp
  45. 1
    0
      src/speak.cpp
  46. 3
    2
      src/speak_lib.cpp
  47. 6
    3
      src/speak_lib.h
  48. 16
    2
      src/spectdisplay.cpp
  49. 1
    1
      src/speech.h
  50. 3
    3
      src/synthdata.cpp
  51. 10
    10
      src/synthesize.cpp
  52. 16
    4
      src/tr_languages.cpp
  53. 34
    17
      src/translate.cpp
  54. 11
    9
      src/voices.cpp
  55. 14
    14
      src/wavegen.cpp

+ 1
- 0
.gitignore View File

@@ -42,6 +42,7 @@ Makefile
Makefile.in
aclocal.m4
autom4te.cache/
compile
config.*
configure
depcomp

+ 21
- 0
Makefile.am View File

@@ -206,6 +206,7 @@ dictionaries: src/espeak \
espeak-data/af_dict \
espeak-data/am_dict \
espeak-data/an_dict \
espeak-data/as_dict \
espeak-data/az_dict \
espeak-data/bg_dict \
espeak-data/bn_dict \
@@ -224,6 +225,7 @@ dictionaries: src/espeak \
espeak-data/fr_dict \
espeak-data/ga_dict \
espeak-data/grc_dict \
espeak-data/gu_dict \
espeak-data/hi_dict \
espeak-data/hu_dict \
espeak-data/hy_dict \
@@ -246,6 +248,7 @@ dictionaries: src/espeak \
espeak-data/ne_dict \
espeak-data/nl_dict \
espeak-data/no_dict \
espeak-data/om_dict \
espeak-data/pa_dict \
espeak-data/pap_dict \
espeak-data/pl_dict \
@@ -284,6 +287,12 @@ dictsource/an_extra:
espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=an && cd ..

as: espeak-data/as_dict
dictsource/as_extra:
touch dictsource/as_extra
espeak-data/as_dict: src/espeak espeak-data/phontab dictsource/as_list dictsource/as_rules dictsource/as_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=as && cd ..

az: espeak-data/az_dict
dictsource/az_extra:
touch dictsource/az_extra
@@ -392,6 +401,12 @@ dictsource/grc_extra:
espeak-data/grc_dict: src/espeak espeak-data/phontab dictsource/grc_list dictsource/grc_rules dictsource/grc_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=grc && cd ..

gu: espeak-data/gu_dict
dictsource/gu_extra:
touch dictsource/gu_extra
espeak-data/gu_dict: src/espeak espeak-data/phontab dictsource/gu_list dictsource/gu_rules dictsource/gu_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=gu && cd ..

hi: espeak-data/hi_dict
dictsource/hi_extra:
touch dictsource/hi_extra
@@ -524,6 +539,12 @@ dictsource/no_extra:
espeak-data/no_dict: src/espeak espeak-data/phontab dictsource/no_list dictsource/no_rules dictsource/no_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=no && cd ..

om: espeak-data/om_dict
dictsource/om_extra:
touch dictsource/om_extra
espeak-data/om_dict: src/espeak espeak-data/phontab dictsource/om_list dictsource/om_rules dictsource/om_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=om && cd ..

pa: espeak-data/pa_dict
dictsource/pa_extra:
touch dictsource/pa_extra

+ 37
- 2
README.md View File

@@ -1,12 +1,15 @@
# Android Port of eSpeak Text-to-Speech
# eSpeak Text-to-Speech for Android

- [Prerequisites](#prerequisites)
- [Build Dependencies](#build-dependencies)
- [Debian](#debian)
- [Building with Gradle](#building-with-gradle)
- [Building with Eclipse](#building-with-eclipse)
- [Building with Ant](#building-with-ant)
- [Signing the APK](#signing-the-apk)
- [Installing the APK](#installing-the-apk)
- [Enabling eSpeak on the Device](#enabling-espeak-on-the-device)
- [Bugs](#bugs)
- [License Information](#license-information)

----------

@@ -34,6 +37,29 @@ If you are building on the command line, you will also need either:
[Ubuntu PPA](https://launchpad.net/~cwchien/+archive/gradle/+files/gradle-1.7_1.0-0ubuntu1_all.deb)
debian file (including on Debian systems)

## Build Dependencies

In order to build eSpeak, you need:

1. a functional autotools system (`make`, `autoconf`, `automake`, `libtool`
and `pkg-config`);
2. a functional c++ compiler;
3. wxWidgets development libraries (needed to build and run espeakedit
to compile the phoneme data).

Optionally, you need:

1. the pulseaudio development library to enable pulseaudio output;
2. the portaudio development library to enable portaudio output.

### Debian

| Dependency | Install |
|---------------|------------------------------------------------------------------|
| autotools | `sudo apt-get install make autoconf automake libtool pkg-config` |
| c++ compiler | `sudo apt-get install gcc g++` |
| wxWidgets | `sudo apt-get install libwxgtk2.8-dev` |

## Building with Gradle

1. Set the location of the Android SDK:
@@ -111,3 +137,12 @@ To enable eSpeak, you need to:
2. enable `eSpeak TTS` in the `Engines` section;
3. select `eSpeak TTS` as the default engine;
4. use the `Listen to an example` option to check if everything is working.

## Bugs

Report bugs to the [espeak issues](https://github.com/rhdunn/espeak/issues)
page on GitHub.

## License Information

eSpeak Text-to-Speech is released under the GPL version 3 or later license.

+ 79
- 2
dictsource/af_list View File

@@ -227,6 +227,7 @@ bainskloof beInsklo@f
bangladesj baNglad'ES
barcelona bars@l'o@na
barkly _^_EN
batavië bat'A:vi@
bellevue b&lvju:
bermuda $2
bethlehem bEt_liEm
@@ -260,7 +261,7 @@ denemarke de@n@mark@
djakarta dZak'arta
doebaai $2
duitswes dYytsv'Es
eastgate _^_EN
eastgate _^_EN
efese e@f@s@
ermelo &rm@lo@
florida flOrida
@@ -344,7 +345,6 @@ rhône _^_FR
richardsbaai ritS@dsb'AI
riviersonderend r@fi:rsOn@r_'Ent
robertson _^_EN
saldanha sald'ana
salvador salvadO:r
santiago santi;'A:gu
secunda s@kunda
@@ -387,8 +387,10 @@ zulu zulu // Kwazulu-Natal
abdullah abd'ula
Abiméleg abin'e@lEx2
abraham A:bram
achilles ak'il@s
ackerman ak@rman
adam adam
adonis ad'o@n@s
adriaan A:drijan
adrie A:dri
agnes _^_EN
@@ -628,6 +630,7 @@ lucretia lukr'i:Sja
lucas lukas
lukas lukas
lulu lulu
lydia lIdia
mabalêl mabal'&l
mabel _^_EN
macgill m@gjil
@@ -693,6 +696,7 @@ oedipus o@dipWs
ogden _^_EN
olga Olga
ontong OntON
pamela _^_EN
patrick _^_EN
petoors p@to@rs
phillips fIl@ps
@@ -984,6 +988,67 @@ dis $u
(nie waar nie) n,i||v,A:r||n'i
(sy aan sy) s,eI||an||s'eI

// Latin terms
ab _^_LA
actio _^_LA
ad _^_LA
alterius _^_LA
amico _^_LA
amicus _^_LA
beneficium _^_LA
bona _^_LA
bono _^_LA
contestatio _^_LA
cum _^_LA
curiae _^_LA
(de facto) _^_LA
(de jure) _^_LA
delicti _^_LA
delicto _^_LA
deo _^_LA
directus _^_LA
divisionis _^_LA
dolus _^_LA
domicilium _^_LA
eventualis _^_LA
exclusio _^_LA
executandi _^_LA
excussionis _^_LA
extremis _^_LA
facto _^_LA
factum _^_LA
fide _^_LA
fides _^_LA
forma _^_LA
grata _^_LA
habitatio _^_LA
inclusio _^_LA
(in debiti) _^_LA
(in absentia) _^_LA
(in extremis) _^_LA
initio _^_LA
inter _^_LA
ipsa _^_LA
jus _^_LA
laude _^_LA
litis _^_LA
loquitur _^_LA
luna _^_LA
mercatrix _^_LA
mutandi _^_LA
mutatis _^_LA
nisi _^_LA
pauperis _^_LA
persona _^_LA
publica _^_LA
restitutio _^_LA
sine _^_LA
unius _^_LA
usufruct _^_LA
usufructus _^_LA
usus _^_LA
vivendi _^_LA
vivos _^_LA

// main word list

@@ -1029,6 +1094,7 @@ aversie av'&rsi

babelaas bab@lA:s
barrikade $3
bedewete be@d@ve@t@
beide beId@
bekaf b&kaf
belangriker b@laNr@k,Ir
@@ -1039,6 +1105,7 @@ bestes bEst@s
beta be@ta $only
betlehemster bEtli:Emst&r
bewe be@v@
bewebeen be@v@be@n
bewend be@v@nt
bewering b@ve@rIN
biopsie bi'Opsi
@@ -1076,6 +1143,7 @@ crèche krES
dadelik dA:d@lIk
dagorde dax2_Ord@
dagster dax2st&r
dagure dax2_yr@
daisy deIzi
darem dar@m
dawidster dA:v@tst&r
@@ -1150,6 +1218,7 @@ genesis x2e@n@s@s
//gesamentlik x2@sA:m@ntl@k
gentleman _^_EN
germolene dZI:m@l'i:n
geseling x2e@s@l@N
gevallene x2@fal@n@
gewellys x2e@v@lleIs
gladiator x2ladi'A:tOr
@@ -1159,6 +1228,7 @@ gooi x2OI
gomorra x2@mOra
graffiti graf'iti
gratis x2r'A:t@s
groepeer $2
grondys x2rO:nt_eIs

hallo h'Il,@U
@@ -1233,6 +1303,7 @@ kritiek krIt'ik
kulture $2
kunsmatige kWnsm'A:t@x2@
kwansuis $2
kweekwal kwe@kval

lasagne las'anj@
legaat l@x2A:t
@@ -1251,6 +1322,7 @@ macaroni makar'o@ni
macho matS@U
madame mad'A:m
madamoiselle _^_FR
manalleen man_ale@n
maskering mask'e@r@N $only
massaal $2
massale $2
@@ -1287,6 +1359,8 @@ namate $2
negeer n@x2e@r
negering n@x2e@r@N
negester ne@x2@st&r
nekaar n&k_A:r
nekare n&k_A:r@
netjies nE:icis
netjiese nEicis@
netsowel nEtso@v&l
@@ -1493,6 +1567,7 @@ verregaande f&r@x2'A:nd@
verreweg f&r@v&x2
verse f&:rs@
vers f&:rs
versene f&rs@n@
versindaba f&:rs_@ndA:ba
verste f&rst@
verte f&rt@
@@ -1506,6 +1581,7 @@ volspoed $1
volswanger $1
volte $1
voluit fOl_Yyt
voorbene fo@rbe@n@
voorgee fo@rx2e@
voorkeer $1
voorkom $2 $only
@@ -1530,6 +1606,7 @@ watwou vatv@U
weergalm $2
weerklink $2
weervoorspelling $1
wegeb v&x2_Eb
weggewens v&x2@v'E:ns
welaf v&l_af
weleer v&l_'e@r

+ 21
- 6
dictsource/af_rules View File

@@ -1,4 +1,4 @@
//maintainer: Willem van der Walt
//maintainer: Willem van der Walt
// email: [email protected]
// tel: +27 12 8413996
// Meraka Institute, CSIR
@@ -851,6 +851,7 @@
karoo) d d // but Karoodorp/Karoodoring/Karoodistrik, etc.
du (pliC du // duplikaat/dupliseer
duvet d%uveI: // duvet/-s/duvetoortreksel, etc.
@) d (yster t_ // fix d sound, pause: bind-/brand-/vuurherd-/smeedyster...

.group de
de (flasi d%e@ // fix e sound: deflasie(beleid)/deflasionêr/deflasionisties
@@ -952,6 +953,7 @@
blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese
_eend) e (CA @ // fix e sound: eendedam/-dans/-kuil/-pastei...
_eend) e (lig e@ // but: eendelig/-e/-heid
@C) elys @leIs // fix e sound: beskuldigde-/debiteure-/dividende-/geskenkelys
_meid) e (C @ // fix e sound: meidekamer/-naaier/-praatjies
pous) e (C @ // fix e sound: pousebrood/-klok/-tyd, etc.
_siel) e (@ @ // fix e sound: sielesmart/-troos/-wroeging...
@@ -1425,7 +1427,7 @@
nl) eer e@r // restore default stress: kernleerplan and compounds
rl) eer e@r // move default stress: agterleer/burgerleer/kelderleer/solderleer
sl) eer e@r // words containing sleer take default stress: seemsleer/volstruisleer
ep) eer e@r // default stress: (harde-/wilde-)peer and compounds
Cep) eer e@r // default stress: (harde-/wilde-)peer and compounds, but (ge)groepeer
Cs) eer e@r // words containing seer (meaning pain) take default stress
ks) eer 'e@r // annekseer/indekseer/lakseer/takseer and their compounds
ss) eer 'e@r // but many words cont. sseer take stress: adresseer, etc.
@@ -1641,7 +1643,7 @@
gas (ig x2A:s // long a and no pause: gasig/-e/-heid
gauteng x2%aUtEN //Gauteng and compounds
_) gh g
gh (_ k
gh (_ x2 // Tulbagh and similar
@) gheid x2eIt // traagheid/leegheid/droogheid/stugheid
ghi (ta g%i // move default stress: ghitaar and compounds/ghitare
ght _^_EN
@@ -1716,6 +1718,7 @@
ge x2@
C) ge (_ g@
_) gebede x2@be@d@ // fix stress and vowel sounds: gebedeboek/-e/-tafel/-s
gegesel x2@x2e@s@l // fix middle e sound
K) gele (_ x2e@l@ // fix stress and e sound: (eier)gele
_) geler x2e@l@r // stress and 1st e sound: geler/gelerig
gemel (d x2@m&l // fix e sound: bo-/bowe-/laas-/meergemeld/-e
@@ -2012,6 +2015,7 @@
_) ig (lo ig // fix i and g sounds: iglo(e)
@) ika (_ =%ik%a // logika/dinamika
&) ike (_S3 @k@
&C) ikes (_ @k@s // fix penultimate e sound: (on)belangrikes
C) iking @k@N
imbe (s @mb@ // fix stress: imbesiel/-e
_) immer (@P5 'Im@r_ // immerafhanklik/immeringesteld, etc.
@@ -2090,7 +2094,7 @@
w) it (A It // fix i sound: eiwitafskeiding/witagtig/kwiteer/grondserwituut
itali (a %it%al%i // move default stress: Italianer/-s and compounds
item itEm // fix e sound in item and compounds
@) iteit it'eIt // stress on iteit endings
iteit it'eIt // stress on iteit endings: universiteit/outoriteit
@C) itis (_ 'it@s // stress: many diseases ending in -itis
C) iveer if'e@r // always takes stress
C) iver (A if'e@r // always takes stress: aktiverende/motivering
@@ -2341,6 +2345,7 @@
.group ka
@A) kaa (t k'A: // advokaatstoga/fabrikaat/sertifikaatjie/triplikaat and many similar
@) kate (_ k'A:t@ // plurals of some of the above
advo) kate (C 'kA:t@ // fix e sound and stress: advokatekamer/s/-latyn
kabare (t k%ab%arE // fix stress and 1st a sound: kabaret/-te and compounds
kabel kA:b@l //stress and e sound
kabeljou kab@lj'@U //kabeljou and compounds
@@ -2733,6 +2738,7 @@
manier m@ni:r //manier and compounds
manifes manifEs // fix vowel sounds: manifes and compounds/manifestasie/manifesteer
mani (ku m%an%i // fix stress and a sound: manikuur and compounds
manilla (C m%anIl%a // fix stress and a sounds: manillakoevert/-papier, etc.
manipu m%an%ip%y // fix stress and a sound: manipuleer/manipulering/manipulasie
manji (fie m%anj@ // fix stress and i sound: manjifiek/-e
man (moe m%an // move default stress: manmoedig/-e/-heid
@@ -2964,7 +2970,6 @@
ng (eeR Nx2 // diftongeer/gedistingeerde/rangeer and compounds
ngees nx2e@s // split n/g: leuen-/span-/sportman-/wengees
e) n (goeC n // split ng: lakengoed/-goeters and similar
n (_g N
ng (ent Nx2 // kontingent/tangent and derivatives
CA) nger N@r // compounds of vinger/slinger; hangertjie/hongersnood/langeraad/swangerskap/tengerste
@) nges (_ N@s // banges/langes/dinges
@@ -3268,6 +3273,7 @@
@) otomie (_N %o@t%um'i // fix o sounds and stress of medical terms: laparotomie, etc.
@) otomie (ë %o@t%um'i: // fix o sounds and stress of plurals of medical terms: leukotomieë/nefrotomieë, etc.
_) outo (@P4 @Utu // fix stress and o sound: outomaat/-mate/-maties/outomobiel, etc.
outo (psie %@UtO // fix stress and O sound: outopsie/-s and compounds
out (okra %@Ut // to handle outokraat and derivatives
oux 'u //in surnames like tredoux, leroux etc.
_) o (va@ %o@ // move default stress: ovaal/ovale/ovaalvormig
@@ -3609,6 +3615,7 @@
pale (stA p%al@ // fix stress and a sound: Palestina/Palestyn and derivatives
pale (t p%alE // fix stress and a sound: palet/-te and compounds
palin (dro p%al@n // fix stress and a sound: palindroom/-drome/-dromies
palissade p%al%isA:d@ // fix a and i sounds and stress: palissade and compounds
_) palja (K palj''a // fix stress on -jas: (ge)paljas/paljasse/paljasagtig/-e
pal (miet p%al // move default stress: palmiet and compounds
panado p@nA:d@U: // fix stress and vowel sounds: panado/-'s
@@ -3721,6 +3728,7 @@
per (so p@r // persoon/persone
pers (om p&rs_ // fix e sound, pause: persombudsman/-ne and compounds
perso (neel p%&rs%u // personeel and compounds
perspex pIrspEks // prevent English translation of compounds: perspexvenster/-ruit
pervers p@rf&rs // pervers/perversie
pervert p@rf&rt // fix stress and e sounds: pervert/-e and compounds
runder) pes pEs // fix e sound: runderpes and compounds
@@ -3991,6 +3999,7 @@
@@@) s (_S1 s // to correctly handle plural s
i) s (_ s // exceptions to rule: @@@) s (_S1 s
sahara sah'A:ra // fix stress and a sound: Sahara/-woestyn and similar compounds
saldanha s%aldan%a // Saldanha(baai)
sangere (K s%aN@rE //sangeres and compounds: opera-/popsangeres
o) s (_ s // exceptions to rule: @@@) s (_S1 s
u) s (_ s // exceptions to rule: @@@) s (_S1 s
@@ -4115,6 +4124,7 @@
slag (off slax2_ // short a sound, insert pause: misdaadslagoffer and similar compounds
sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds
sla (we slA: // fix stress and a sound: slawearbeid/-er, etc.
slawe (k slA:v@ // fix e sound: slawe(ketting/-kind(ers)/-kos
slop (emmer slOp_ // fix o sound and insert pause: slopemmer/-s
@) sering s'e@r@N // analisering/kategorisering
@) ses (_ s@s // fix 2 slb. words ending in ses
@@ -4211,6 +4221,7 @@
spesi (a sp%ES%i // spesiaal/spesiale/spesialis
spesialis (A spESialis
spesialis spESal'Is
spesialis (een spESal'Is_ // fix stress, paus: spesialiseenheid/-eenhede
spesi (f sp%Es%I // spesifiek/spesifiseer
spine (t sp%inE // move default stress: spinet/-te and compounds
_) sub (a sWb_ // subagent/subartikel/subatomies, etc.
@@ -4442,6 +4453,7 @@
struktu (rerAn str%Wkt%y // fix stress: (her)strukturering(skoste)/strukturerende, etc.
studen (t st%ydEn // fix stress: student/regstudent/studentesentrum, etc.
stu (de st%y // fix stress and e sound: bestuderend/bestudering
_) stuurdere (KK st%yrd@rE // fix stress and e sound: bestuurderes/-se/-sie
styfge (@P6 st'eIfx2@ // fix e sound: styfgewen/-de


@@ -4988,6 +5000,7 @@
verf (@ f&rf // verfkwas/-voorraad/-emmer and similar
_) verf (lou f@rf // verflou/-ing
_) verf (o f@rf // verfoei(lik)/verfomfaai/verfoes, etc.; see rule: verf
verf (raai f@rf // fix e sound and stress: verfraai(ing)
verf (rom f@rf // verfrommel/-de/-ing; see rule: verf
verf f&rf
_) vergesog f'&:r;x2@sOx2
@@ -5088,6 +5101,7 @@
nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal
Cod) w v // fix w sound: godwelgevallig/godweet/godwees
k) w w
werk) week ve@k // fix last w sound: (vyf-/sesdag)werkweek
k) w (erC v // fix w sound: wrakwerf/-werwe
volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc.
k) w (And v // fix w sound: buikwand/rukwinde
@@ -5133,7 +5147,6 @@
yd) w v // fix w sound: sluittydwerk/(wa)wydwakker
C) w (eerder v // fix w sound: insek-/muskiet-/reuk-/sweetweerder and similar
s) w (eerder w // but: eed-/geesbe-/saamsweerder and similar
luk) wens ve~ns // fix w sound: gelukwens(brief...)/gelukwensing, etc.
w (ese_ v //words ending in wese
wed (ren vEt // fix e and d sounds: (perde)wedren and other compounds
@C) w (eë v // fix w sound: duikweë/staatsweë/uitweë, etc.
@@ -5246,11 +5259,13 @@
welbehaaglik v%&lb@hA:x2l@k // move default stress: welbehaaglik/-e/-er/-ste
_) wel (edel v%&l_ // fix e sound and stress, insert pause: weledel/-e
welf (_ v&lf // fix e sound: omwelf/oorwelf
_) wel (op v&l_ // fix e sound, pause: welopgevoede/-opgeleide, etc.
wel (skape v%&l // move default stress: welskape/-nheid
wel (spreken v%&l // move default stress: welsprekend/-e
@) wendig v'End@x2 // inwendig/noodwendig/uitwendig
&) wene (_ v@n@ // fix penultimate e sound: afgestorwene/-s/ingeskrewene/verdorwene/verhewene
fees) wens ve~ns // fix w and e sounds: kersfeeswens/-e
luk) wens ve~ns // fix w sound: gelukwens(brief...)/gelukwensing, etc.
A) wer (AA v@r // fix e sound: beyweraar/keweruitroeiing/nyweraar/oewereienaar
ge) were ve@r@ // fix e sound in compounds ending in gewere
werk (stelli v%&rk // fix stress: bewerkstellig and derivatives

+ 323
- 0
dictsource/as_list View File

@@ -0,0 +1,323 @@
// Translation rules for Bengali
// This file is UTF8 encoded

// Numbers
// Bengali numbers are changed to latin characters before translation
_0 S'unjO
_1 '&k
_2 d'uj
_3 t'in
_4 tS'ar
_5 p'a~tS
_6 tS#'Oj
_7 S'at
_8 'at.#
_9 n'Oj

_2a d'u // with hundreds etc.
_6a tS#'a
_9a n'O


_10 d'OS
_11 '&garo
_12 b'arO
_13 t'erO
_14 tS'oddO
_15 p'OnerO
_16 S'olO
_17 S'OterO
_18 'at.#arO
_19 'uniS

_20 k'uri // or b'iS ??
_21 ek'uS
_22 b'ajS
_23 t'ejS
_24 tS'ObbiS
_25 p'O~tSiS
_26 tSh'abbiS
_27 Sat'aS
_28 'at.#aS
_29 unOtr'iS

_30 tr'iS
_31 ekOtr'iS
_32 bOtr'iS
_33 tetr'iS
_34 tSowtr'iS
_35 pO~jtr'iS
_36 tS#'Otr'iS
_37 Sa~itr'iS
_38 at.tr'iS
_39 'unOtSOll'iS

_40 tSOll'iS
_41 ektSOll'iS
_42 biall'iS
_43 tetall'iS
_44 tSoall'iS
_45 pO~jtall'iS
_46 tSetSOll'iS
_47 SatSOll'is
_48 atSOll'iS
_49 unOpO~tSaS

_50 pO~tS'aS
_51 &kann'o
_52 bajann'o
_53 tepann'o
_54 tSujann'o
_55 pontSann'o
_56 tS#apann'o
_57 Satann'o
_58 at.ann'o
_59 unOS'at.


_60 s'at.
_61 ekSOt.t.'i
_62 baSOt.t.'i
_63 teSOt.t.'i
_64 tSowSOt.t.'i
_65 pojSOt.t.'i
_66 SeSOt.t.'i
_67 SatSOt.t.'i
_68 at.SOt.t.'i
_6X sat.t.'i
_69 unOSOtt'ur

_70 SOtt'Or
_71 ekatt'Or
_72 bahatt'Or
_73 tehatt'Or
_74 tSuhatt'Or
_75 pOtSatt'Or
_76 tS#ijatt'Or
_77 Satatt'Or
_78 at.att'Or
_79 unOaS'i

_80 aS'i
_81 &kaS'i
_82 beraS'i
_83 teraS'i
_84 tSuraS'i
_85 po~tSaS'i
_86 tS#ijaS'i
_87 SataS'i
_88 at.aS'i
_89 ,unOnObb'oj

_90 nObb'oj
_91 &kanObb'oj
_92 beranObb'oj
_93 teranObb'oj
_94 tSuranObb'oj
_95 pOtSanObb'oj
_96 tS#ijanObb'oj
_97 SatanObb'oj
_98 at.anObb'oj
_99 niranObb'oj

_0C S'o
_0M1 h'ajar
_0M2 l'ak#
_0M3 k'ot.i
_0M4 'Orbud
_dpt _d'Osomik_


// Single consonants
ক kO
খ k#O
গ gO
ঘ g#O
ঙ 'uNO~
চ tSO
ছ tShO // [h] to distinguish from [tS]
জ JO
ঝ J#O
ঞ 'iNO~
ট t.O
ঠ t.#O
ড d.O
ঢ d.#O
ণ m,odd#en.n.'O
ত tO
থ t#O
দ dO
ধ d#O
ন d,ontenn'O
প pO
ফ fO // or [p#O] ?
ব bO
ভ b#O
ম mO
য় Oj
য ,ontostedZ'O
র rO
ড় r.O
ড় r.O // (d. + nukta)
ঢ় hr.O
ঢ় hr.O // (d#. + nukta)
ল lO
শ t,aleboS:'O
ষ m,ud#en:oS:'O
স d,onteS:'O
হ hO
ৎ kh,Ond.ot'O
ক্ষ k,ojmud#en:oS:'O


// full vowels
অ O
আ a
ই hrOS:o'i
ঈ dirg#o'i
উ hrOS:o'u
ঊ dirg#o'u
ঋ ri
ঔ ow

এ e $u+ // word 'it'
ঐ oj $u+ // word 'that'
ও o $u+ $brk // 'and'
_এ e
_ঐ oj
_ও o


// combining vowel signs
া 'akar
ি r'oS:ikar
ী d'irg#ikar
ূ r'oS:ukar
ু d'irg#ukar
ৃ r'ikar
ে 'ekar
ৈ 'ojkar
ো 'okar
ৌ 'owkar

// signs
্ h'OSonto
ং 'OnuSSOr
ঃ b'iSOrgo
ঁ tS'Ondrobindu
় b'indu

$ d.Olar
% SOtk'Ora
+ jOg
= SOman



// Punctuation
। dVn.d.V
_, koma
_? pr'oSnOtSihnO

// Pronouns
আমি $u // main: I
আমায় $u
আমার $u

আমরা $u // we
আমাদের $u

আপনি $u // you(formal)
আপনাকে $u
আপনার $u

তুমি $u // you (informal)
তোমায় $u
তোমার $u
তোমাদের $u

তুই $u // you (informal)
তোকে $u
তোর $u

এ $u // he/she/it
আপনি $u
এটার $u
এর $u

ইনি $u // they
এনাকে $u
এনার $u

ও $u // he/she/it
সে $u
ওর $u
তার $u

ওরা $u // they
তারা $u
ওদের $u // unheṃ: them
তাদের $u

এই $u // e:I this/it
এটা $u // e:ta: this/it
এটার $u // e:ta:'r this/it
এর $u // e:r this/it

ওটা $u // o:ta: that
ওটাকে $u // o:ta:ke: to that
ওটার $u // o:ta:'r of that

ওগুলো $u // o:gu:lo: those
ওগুলোকে $u // o:gu:lo:ke: to those
ওগুলোর $u // o:gu:lo:'r of those



// Prepositions/Postpositions
মধ্যে $u // moddhe in
উপর $u // upor on, above
নীচে $u // niche below

পূর্ব্বে $u // purbe before, prior
পর্য্যন্ত $u // parjonto till
অব্দি $u // abdi till
বিনা $u // bina without



// Questions
কেন $u $pause // kano why interrogative particle
কি $u $pause // ki what
কোথায় $u $pause // kothaay where
কখন $u $pause // kakhon when
কে $u $pause // ke who

// Conjunctions

এবং $u $pause // ebong: and
আর $u $pause // aar: and
অথবা $u $pause // athoba: or
কিন্তু $u $pause // kintu: but
যদি $pause // jodi: if
তবু $pause // tobu: still, yet
তবে $pause // tabe: if...then
অথচ $u // athacho: yet


// Verbs

হয় $u


ছিল $u // chilo: past aux
ছিলেন $u // chilen


করছি $u // korchi: continuous
করছিলাম $u // korchilam: past indefinite
করেছি $u // korechi: past


// Exceptions
এত &to

+ 388
- 0
dictsource/as_rules View File

@@ -0,0 +1,388 @@

// This file is UTF8 encoded

// letter groups:
// A vowel letters and vowel signs
// B vowel signs and virama ्
// C consonants
// Y vowel letters and vowel signs



.replace
০ 0
১ 1
২ 2
৩ 3
৪ 4
৫ 5
৬ 6
৭ 7
৮ 8
৯ 9


// Vowels


.group অ
অ V
অঁ O~
অ্যা & // V,ja in [æmiba]

.group আ
আ a
আঁ a~

.group ই
ই i
ইঁ i~


.group ঈ
ঈ i
ঈঁ i~


.group উ
উ u
উঁ u~

.group ঊ
ঊ u
ঊঁ u~

.group ঋ
ঋ ri
ঋঁ ri~

.group ঌ
ঌ l-
.group এ
এ &
এঁ &~

.group ঐ
ঐ oj
ঐঁ o~j

.group এ
এ e
এঁ e~
এ্যা & // e,ja [ækademi]


.group ও
ও o
ওঁ o~

.group ঔ
ঔ ow
ঔঁ o~w

.group ও //??
ও o:



// Vowel Signs

.group া
া a
াঁ a~
.group ি
ি i
িঁ i~
.group ী
ী i
ীঁ i~

.group ূ
ূ u
ূঁ u~

.group ু
ু u
ুঁ u~
.group ৃ
ৃ ri
ৃঁ ri~

.group ে
ে e
েঁ e~
েউ ew


.group ৈ
ৈ oj
ৈঁ o~j
.group ো
ো o
োঁ o~
.group ৌ
ৌ ow
ৌঁ o~w
// Consonants

.group ক
ক kV
ক (B k

.group খ
খ k#V
খ (B k#
.group গ
গ gV
গ (B g


.group ঘ
ঘ g#V
ঘ (B g#

.group ঙ
ঙ NV
ঙ্ (B N


.group চ
চ tSV
চ (B tS


.group ছ
ছ tS#V
ছ (B tS#

.group জ
জ JV
জ (B J
জ্ব JV
জ্ব (B J
জ্ঞ ggo~
জ্ঞ (B gg


.group ঝ
ঝ J#V
ঝ (B J#

.group ঞ
ঞ nV
ঞ্ (B n

.group ট
ট t.V
ট (B t.


.group ঠ
ঠ t.#V
ঠ (B t.#

.group ড
ড d.V
ড (B d.

ড় r.V // nukta
ড় (B r.

.group ঢ
ঢ d.#V
ঢ (B d.#

ঢ় hr.V
ঢ় (B hr.
.group ণ
ণ nV // should be [n.] if adjacent to t. or d. ?
ণ (B n



.group ত
ত tV
ত (B t

.group থ
থ t#V
থ (B t#


.group দ
দ dV
দ (B d


.group ধ
ধ d#V
ধ (B d#


.group ন
ন nV
ন (B n

.group প
প pV
প (B p

.group ফ
ফ fV // or [p#] ?
ফ (B f

.group ব
ব bV
ব (B b

.group ভ
ভ b#V
ভ (B b#

.group ম
ম mV
ম (B m

.group য়
য় jV
য় (B j

.group য
য dZV
য (B dZ
য় jV // nukta
য় (B j

্) য (C & // ব্যস্ত [bæsto]
্) যা & // ব্যাকরণ [bækɔron]


.group র
র rV
র (B r

.group ল
ল lV
ল (B l



.group শ
শ SV // or [s] ?
শ (B S
শ (্ল s

.group ষ
ষ SV
ষ (B S

.group স
স SV // or [s] ??
স (B S
স (্থ s
স (্ত s
_) স্ব SV // shb
_) স্ব (B S

.group হ
হ hV
হ (B h

.group হ্ব
হ্ব vV
হ্ব (B v

.group ৎ
ৎ t


.group ড় // can be ড plus nukta
ড় r.V
ড় (B r.

.group ঢ় // can be ঢ plus nukta
ঢ় hr.V
ঢ় (B hr.


.group ঁ
ঁ O~ // candrabindu, nasalize the previous vowel

.group ং
ং N // anusvara/onushshor

.group ঃ // visarga/bishorgo
ঃ // doubles the following consonant
ঃ (_ H

.group ্ // virama/hoshonto

.group ়
় // nukta, modifies a consonant



.group
// obsolete letters
ঋ r-
ৠ r-
ঌ l-
ৡ l-
ৃ r-
ৄ r-
ৢ l-
ৣ l-

__) - (_D bij'og
D_) - (_D bij'og

+ 2
- 2
dictsource/de_list View File

@@ -768,6 +768,6 @@ Neumexiko $2
Neuseeland $2
Rwanda rU'andA:
Sri sr,i:
Tom tOm
Tim tIm
Tom tOm $only
Tim tIm $only


+ 1
- 1
dictsource/de_rules View File

@@ -315,7 +315,7 @@
_) deme de:mE
demo (g de:mo:
demo (k de:mo:
design _^_EN
design (_ d%IzaIn
dge (_ _^_EN
_) dia d,i:a
_) diver d%i:vEr

+ 44
- 7
dictsource/en_list View File

@@ -16,7 +16,7 @@
// ?7 Scottish
// ?8 Use full vowel, not schwa in some word endings

// $alt1 use strong ending (-an, -ance, -ative, -table, -inal, -ier)
// $alt1 use strong ending (-an, -ance, -ative, -table, -inal, -ier -ored)
// $alt2 use weak ending (ard, ate, ery, ess, ile, men, on)
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#]
// $alt4 separate 'h', not 'th'
@@ -422,6 +422,8 @@ _zh tS'aIni:z
ֹ o
ֻ u
ּ d'agES
U+5c1 SInd0t_
U+5c2 sInd0t_


// phonetic modifiers
@@ -520,6 +522,7 @@ _90o n'aInti@
// ABBREVIATIONS
//**************

aaa $abbrev $allcaps
abc $abbrev
ac $abbrev
adf $abbrev
@@ -717,6 +720,7 @@ adware 'adw,e@
adze adz
aegis i:dZIs
aerate e@r'eIt
aerogel e@roUdZEl
aether i:T@
afar a#fA@
affirmation af3m'eIS@n
@@ -835,6 +839,7 @@ apropos apr@p'oU
appal a#pO:l
apparatus ap@r'eIt@s
?3 apparatus ap@r'at@s
appellate a#pEl@t
apprentice a#prEnt2Is
approximate a#pr0ksIm@t $only
approximate a#pr0ksImeIt $verb
@@ -849,6 +854,7 @@ arcane $2
arch A@tS
arches A@tSI#z
archimedes A@kIm'i:di:z
archiso A@tS'aIsoU
archway $1
arena a#ri:n@
argon A@g0n
@@ -979,6 +985,7 @@ bleh blEh
blockade bl0k'eId
blouse blaUz
bluest blu:@st
bluish blu:IS
blurry bl3:rI
?5 blurry blVRrI
boing bOIN
@@ -1142,6 +1149,7 @@ cholesterol k@lEst@r0l
chorizo tSOr'i:zoU
christmas krIsm@s
chromosome kroUm@soUm
chrysalis krIs@lIs
ciao tSaU
cigar sI2gA@
cigarette sIg@'rEt
@@ -1159,7 +1167,8 @@ cleanse klEnz
cleanser klEnz3
?!3 clerk klA@k
cliche kli:SeI
?3 cliche kli:S'eI
cliched kli:S'eId
?3 cliche kli:S'eI
clientele $2
clitoris klIt3rI#s
close kloUs $only
@@ -1248,6 +1257,7 @@ consort $verb
constitute $1
construct $1 $onlys
construct $verb
consummate $1
contemplative $2
content $1 $onlys
content $verb $past
@@ -1272,7 +1282,7 @@ convict $2 $verb
convolute k0nv@l'u:t
coop ku:p
cooper ku:p3
coordinate koU'O:dI2neIt $verb
coordinate koU'O@dI2neIt $verb
copier k0pi@3
copilot koUpaIl@t
coral k0r@L
@@ -1342,7 +1352,7 @@ declaration dEkl@'reIS@n
decolletage deIk0lt'A:Z
decor deIkO@
?3 decor deIk'O@
decorative dEkr@tIv
decorative dEk@r@tIv
decoy di:kOI
decry dI2kraI
defect di:fEkt
@@ -1395,6 +1405,7 @@ diameter daI'amI2t3
diaper daIp3
diaphanous daI'af@n@s
diaspora daI'asp@r@
dieback daIbak
diehard daIhA@d
dielectric daI@l'EktrIk
diesel di:z@L
@@ -1547,6 +1558,7 @@ evenings i:vnINz
evit EvI2t // inevitable
exalt Egz'0lt
execute EksI2kju:t // not $2
executable $3
exile $1
exodus Eks@d@s
expedite Eksp@daIt // expedited
@@ -1815,6 +1827,7 @@ iconbar aIk0nbA@
idly aIdlI
ignoramus Igno@r'eIm@s
illiterate $alt2
imagery ImIdZri
imagine I2madZI2n
impedance Imp'i:d@ns
imperative Imp'Er@tIv
@@ -1894,6 +1907,7 @@ iris aIrIs
iron aI3n
irony aIr@nI
isosceles aIs'0s@li:z
?3 issuance ISu:@ns

ja jA:
jagged dZagI#d
@@ -1931,6 +1945,7 @@ kosher koUS3
kowtow kaUt2aU

la ,la $only
la $abbrev $allcaps
(la vie) la||v'i:
laboratory la#b'0r@trI
?3 laboratory labr@tO:ri
@@ -2022,6 +2037,7 @@ lunatic lu:n@tIk
lunchroom lVntS||ru:m
luxury lVkS3ri
lychee li:tSi:
lyin laIIn

macabre m@kA:br@
macadamia mak@d'eImi@
@@ -2376,6 +2392,7 @@ philistine fIlI2staIn
phoenix fi:nIks
photographer f@t'0gr@f@
photography f@t'0gr@fi
photolysis foUt'0l@sIs
piano pI'anoU
pecan pI#kA:n
piecemeal p'i:sm,i:l
@@ -2585,6 +2602,7 @@ reining reInIN
reindeer reIndi@3
rekey r,i:k'i:
relative rEl@tIv
relay ri:leI
relic rElIk
relish rElI2S
rely rI2laI
@@ -2706,9 +2724,12 @@ seabed si:bEd
sealion si:laI@n
seance seI0ns
secant si:k@nt
seconded sEk'0ndI#d
seconded s@k0ndI#d
secondment s@k0ndm@nt
secrecy si:kr@si
secret si:kr@t
secrete sI2kri:t
secretion sI2kri:S@n
secretive si:kr@tIv
secretary sEkr@trI
sedan sI2dan
@@ -2717,6 +2738,7 @@ sega seIg@
segue sEgweI
separate sEp@-r@t
separate sEp3reIt $verb
semaphored $alt1
semen si:m@n
?3 semi sEmaI
semibreve $1
@@ -2739,6 +2761,7 @@ severely sI2v'i@3lI $verbf
sewn soUn
sex sEks // sexism
several sEvr@L
severest s@vi@r@st
shallow SaloU
shampoo $2
shepherd SEp@d
@@ -2772,6 +2795,7 @@ singly sINglI $verbf
sincerest sIns'i@r@st
sinew sInju:
sinus saIn@s
siphon $alt2
sir s,3: $only
?5 sir s,VR $only
site saIt // for sited
@@ -2806,7 +2830,6 @@ souvenir su:v@n'i@3
sorbet sO@beI
soyabean sOI@bi:n
spaghetti spa#gEti
spasm spas@m
specific sp@sIfIk
specimen spEsI2m@n
spraycan spreIkan
@@ -2980,6 +3003,7 @@ trophy troUfi
troubadour tru:b@do@
truely tru:lI $verbf
truest tru:@st
tryin traIIn
tryst trIst
tudor tju:d3
turntable $alt1
@@ -3003,6 +3027,7 @@ unable Vn'eIb@L
unaware Vn@w'e@
uncle VNk@L
undeny VndIn'aI
undercarriage $1
underground $1 $noun
underling $1
underlings Vnd3lINz
@@ -3082,7 +3107,10 @@ viola vaI'oUl@
violin $2
viral vaI3r@L
virginal $alt1
(vis à vis) vi:za#v'i:
(vis a vis) vi:za#v'i:
visa vi:z@
vitalis vaIt'alI#s
vitamin vIt@mI#n
?3 vitamin vaIt@mI#n
vitriol vItri:@l
@@ -3231,6 +3259,7 @@ Alamo al@moU
Albuquerque alb@k3:ki
Algiers $2
Altura O:lt'U@r@
?3 Amazon ama#z0n
Amman a#m'A:n
Andes andi:z
Angeles andZ@li:s
@@ -3273,6 +3302,7 @@ Budapest bu:d@p'Est
Buenos bweIn0s
Burundi bUr'Undi
Brazil $alt3
Brunei bru:n'aI
Cadiz $alt3
Cairo kaIroU
Calcutta $2
@@ -3426,6 +3456,7 @@ Nepal nEp'O:l
Nevada nI2vA:d@
?3 Nevada nI2vad@
Newfoundland nju:f@ndla#nd
Nineveh nInIv@
Noumea nu:m'eI@
Oahu oU'A:hu:
Oklahoma oUkla#h'oUm@
@@ -3445,6 +3476,7 @@ Persia p3:Z@
Peru p@ru:
Philippine fIlI2pi:n
Philipine fIlI2pi:n // misspell
Phnom pn0m
Polish poUlIS $capital $only
Portugal po@tS@g@L
Portuguese po@tS@g'i:z
@@ -3508,6 +3540,7 @@ Ural ju:@r@L
Utah ju:t2A:
?3 Utah ju:t2O
Utrecht ju:trECt
Valencia $alt3
Vancouver $2
Vegas veIg@s
Vermont $2
@@ -3563,7 +3596,7 @@ Angela andZ@l@
Angelika $2
Anita $alt3
Annamaria an@ma#r'i:@
Anthony ant@ni
?!3 Anthony ant@ni
Anton ant0n
Aoife i:f@
Aoiffe i:f@
@@ -3616,9 +3649,11 @@ Connell k0n@l
Connie k0ni
Connor k0n3
Conrad $1
Corinne k@ri:n
Crichton kraIt@n
Curtis k3:tI#s
?5 Curtis kVRtI#s
Cyrus saIr@s
Dana deIn@
Daphne dafni
Darryl dar@L
@@ -3775,6 +3810,7 @@ Michele mI2SEl
Michelle mI2SEl
Miguel mi:Q'El
Mildred mIldrI2d
Mimi mi:mi
Mindy mIndi
Minerva mI2n3:v@
Mirabel mIr@bEl
@@ -3906,6 +3942,7 @@ Emory Em3ri
Ferguson f3:g@s@n
Fleming flEmIN
Folger foUldZ3
Gallagher gal@g3
Genghis dZENgIs
Gibson gIbs@n
Guinness gInIs

+ 30
- 7
dictsource/en_rules View File

@@ -600,7 +600,7 @@
b) al (d+ O:l
b) al (k O:l
f) al (k 0l
alkali ak@laI
alkali alk@laI
b) all (K O:l
&b) all (er_ O:l
_c) al (e al
@@ -1093,7 +1093,7 @@
_) as (trolog a#s
_) as (trono a#s
&) as (ty_ a#s
ass (ym as
_) as (ym eIs
purch) as (e Is
ph) ase (_ eIz
r) ase (_ eIz
@@ -1330,6 +1330,7 @@
be (see bI2
be (sie bI2
_) be (sto bI2
_) bestse (ll bEsts'E
_) beta b,i:t@
?3 _) beta b,eIt@
_) be (th bE
@@ -1514,7 +1515,7 @@
_ta) ch k
ta) ch tS
sta) ch S
e) ch (o k
_e) ch (o k
bron) ch k
ch (ute S
ch (ure S
@@ -1527,6 +1528,8 @@
_) co (con k,oU
_) co (eCP2 k,oU
_) coe (l si:
_) co (g k0
_) cogno k0gn@
co (hab k%oU
co (llab k@
co (llap k@
@@ -1744,6 +1747,7 @@
_) deni (a dI2naI
deni (tri d%i:naI
_) de (no dI2
_) de (nu dI2
_) de (o d%i:
_) de (p@ dI2
de (per d%i:
@@ -1757,6 +1761,7 @@
de (reg d%i:
de (rel dE
de (riC dI2
_) de (rAX dE
de (rog dI2
de (rACatio dE
_) des (@ dI2s
@@ -2260,11 +2265,14 @@
&) ency (_ @ns%i
ency (cli %EnsI
k) en (d_ En
t) en (d_ En
en (dA_ 'En
_) en (d En
_) en (da %En
eg) en (d @n
en (dea %En
en (der En
cal) en (der @n
en (dous En
_) endo EndoU
@) en (do_ 'En
@@ -2307,6 +2315,7 @@
en (ter En
en (tert ,En
enthra (l %EnTrO:
en (tia_+ 'En
&) entice %EntaIs
_) en (ti %En
_c) enti EntI
@@ -2407,6 +2416,7 @@
mb) er (_ 3
lin) er (_S1 3
lin) ers (_S2 3z
nc) er (_S1 3
er 3:
er (A 3:r
_) er (A I2r
@@ -2560,7 +2570,8 @@
_) es (pl Es
_) es (tab I2s
es (tate I2s
@) esc (enC 'Es
@) esc (ent_ 'Es
@) esc (ence_ 'Es
pr) es (ent Ez
es (iA i:z
es (ian_ 'i:z
@@ -3024,6 +3035,7 @@
&) ia (_N =i|@
&) ia (_ =i@
@@) ia (_ =i@
@) iae (_ =Ii:
@) ian (cy I|@n
l) iais I|eIz
p) ia (no Ia
@@ -3307,6 +3319,7 @@
_) in (flo In
_) in (flu In
_) in (fo_ In
_) info (t ,InfoU
_) infra (P5 ,Infr@
_) infra (c %Infra
in (ga_ 'IN
@@ -3604,6 +3617,7 @@
_sp) it (e aIt
cr) it (e_ It
wr) ite aIt
it (ee_ aIt
_s) it (e aIt
_t) it (an aIt
x) ite (_ aIt
@@ -3994,6 +4008,7 @@
br) oa (d O:
oar o@
oar (_ o@
_h) o 0
cr) o (at oU
X) o (ba oU
t) o (bacc @
@@ -4443,7 +4458,7 @@
or (ig 0r
or (ix 'O@r
&) ored (_ 3d
h) ored (_S1 d
&) ored (_$w_alt1S1 d
_f) ore (C O@
f) ore (clo %o@
f) ore (st 0rI
@@ -4537,6 +4552,7 @@
hyp) ost 0st
osure 'oUZ3
X) os (y oUz
@) os (y_ @s

.group ou
ou aU
@@ -5005,6 +5021,7 @@
rrhea r'i@
rrhoea r'i@
_) ru (bL01 ru:
_) rule (@ ru:l
_) run (a rVn
_) run (o rVn
&ant) ry (_S2 r%I
@@ -5214,6 +5231,7 @@
A) sh (A_ =S
&) ship (_S4 SIp
&) ships (_S5 SIps
&) shipe (_ SIp
&) shire (_S5 S3
//?3 &) shire (_S5 Si@
sia (_ =zi@
@@ -5238,6 +5256,7 @@
u) sin (_ z@n
A) s (itiv z
_) size (C@ saIz
s (mK z
a) s (m z
o) s (m z
L07) s (mAn_ z
@@ -5446,8 +5465,9 @@
&s) tian (_ tS@n
_) tian tjan
&) tial S@L
&s) tial tj@L
s) tial tj@L
&) ti (ali SI
s) ti (ali tI
i) tia (liL06 S@
&) tien S@n
&) tience S@ns
@@ -5691,6 +5711,7 @@
_) un (A_ ju:n
_) unn %Vnn
@) un (al 'ju:n
un (A_ 'u:n
une (_ ju:n
?3 d) une (_ u:n
j) un (A u:n
@@ -5711,7 +5732,7 @@
_) uni ju:nI
_) un (ide ,Vn
_) un (inP2 ,Vn
_) un (il ,ju:n
_) uni (l ,ju:nI
_) un (io ju:n
_) un (iq %ju:n
unit (e ju:n'aIt
@@ -5803,6 +5824,7 @@
_) vehem vi@m
_) vibra (t v%aIbreI
?3 _) vibra (t v'aIbreI
video vIdI2oU
vivi (@ vIvI
viv (_ vaIv

@@ -6185,6 +6207,7 @@
ä E
ë E
ï i:
ó (n '0
ö 3:
ör 3:
ü u:

+ 35
- 7
dictsource/ga_list View File

@@ -1,13 +1,13 @@
// Irish Gaeilge dictionary
// written by Ronan McGuirk
// 2013
// version 2.7
// version 2.8.2
// Please send comments and suggestions to [email protected]

// This file is UTF8 encoded

// letters
// letter names, as they are spoken as a single character in text
// letter namesd, as they are spoken as a single character in text
// precede by _ to distinguish from pronunciation as a language word

_a eI
@@ -135,9 +135,25 @@ _dpt pO#nk

//delete

// old script
ċur x'Ur
ḃ b,i:b'u:ltS@

ċ s,i:b'u:ltS@
ḋ d,i:b'u:ltS@
ḟ ,Efb'u:ltS@
ġ dZ,i:b'u:ltS@
ṁ ,Emb'ultS@
ṗ p,i:b'u:ltS@
ṫ t,i:b'u:ltS@




// words
a @
ab @b
abhaile @w'0l;E
ach 0x $u
ag Eg $verbf $u
@@ -146,15 +162,17 @@ anam '0n@m
aige @g'E
air Er
acu 0k'U
ar Er $u
ar Er
arsa @rs@
agaibh 0g@Iv
agus 0g@s
agus 0g@s $u
aisfhilleadh ,aS'Il;@
amach @m'0x
amárach @m'A:r@x
amuigh @mu1'I
amháin @w'A:in
hamháin h@w'A:in

am aUm
anaithnid '0nah@nIdZ
anonn @naUn
@@ -172,6 +190,8 @@ aschurtha '0sxUrh@
atá @t['A: $u
baill bu1'i:l
bhaill vu1'i:l
beadh b;'@X
bheadh v;'@X
beidh bEg
bhfuil w'Il
bheas v'e:@s
@@ -201,6 +221,7 @@ faic f@ak
faigh faIg
feadh fag
fear f'ar
féin h'e:n
gcathair g0h@r
gan g0n $u
gheall jaUl
@@ -212,7 +233,9 @@ in In $u
ina In@ $u
ins Ins $u
inniu Inj'u:v
irish _^_EN
iontach 'i:nt[@x
hiontach h'i:nt[@x
irish _^_EN
is 'Is $u
(is ea) IS'a
isteach IstS'0x
@@ -227,12 +250,14 @@ mhuigh vu1'i:
mhama w'0m@
maith m'0
mhaith w'0
mhaithe w'0h;E

mbeadh m;O#X
mo mO# $u
mura mUr@ $u
ná nA: $u
nigh ni:
níorbh ni:rv
níorbh ni:@r@vv $u
nó nu: $u
nollag n@l@g
nolaig nO#lig
@@ -247,7 +272,10 @@ rímhaith R'i:w0
(s é) S'e:
(s í) S'i:
san s@n
seo S@_
san s'an $capital
seo SU_ $u
(sinn féin) S'In||f'e:n

tabhair t'u:@r
(tiocfaidh ár lá) tSO#ki:|'A:r|l'A:

+ 81
- 17
dictsource/ga_rules View File

@@ -1,8 +1,7 @@

// translation rules for Irish Gaeilge
f// translation rules for Irish Gaeilge
// This file is UTF-8 encoded
// written by Ronan McGuirk 2013
// Version 2.7
// Version 2.8.3
// Please send comments and suggestions to [email protected]


@@ -23,7 +22,7 @@
.L12 á é ó eo ua // when followed by i
.L13 oc omb
.L14 río dún gnío // followed with mh
.L15 c ch f bhf m d dh g gc gh mh // aoi following
.L15 c ch f bhf fh m d dh g gc gh mh // aoi following
.L16 b c bh ch gr ghr t th // for inn word ending
.L17 l le li niste nn
.L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar
@@ -33,6 +32,20 @@
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann
.L23 ea eo i
.L24 b mb bh g gh p ph bp m mh
.replace
ḃ bh
ċ ch
ḋ dh
ḟ fh
ġ gh
ṁ mh
ṗ ph
ṫ th




ċ ch

.group a
a 0#
@@ -68,12 +81,14 @@
_) ath 0h
a (rraige a
ai (m_ @
aí i:
aí 'i:
aí (_ %i:
aoi @i:
_) aoi i:
ath) aoi (r 'i:@
r) aoi (nín 'e:@
aoicht (_ 'i:@xt[
d) aoine (_ @i:n;%i:
C) ao (C @e:@
_L24) ao (C w'e:@
C) ao (th_ @e:
@@ -86,6 +101,7 @@
arraing arIng
_) ath (@@P3 ,0_
_) athr '0hr
_) ard (@P3 A:rd[

.group á
á A:
@@ -118,9 +134,11 @@
_L04) ai (L18_++ u1'I//words like bain
c) ai (t_ u1'I
s) ai (bh E
sh) ai (bh E
aighre aIr@
X) aigh 'aI
aigh aI# L04) aill (_ wi:l
aigh aI#
_L04) aill (_ wi:l
aing (_ Ing
ailleach '0l;@x
ai (llimh++ '0 // words like Gaillimh
@@ -150,6 +168,9 @@
_) beann (@ ba#n
_) bheann (@ va#n
_) bun (C@P3 b,Un
?1 _m_) bun (C@P3 ,Un
_) bpríomh (@P7 bR,i:v


.group c
c k
@@ -164,12 +185,19 @@
_) chabhr x'aUr
_) ceann (C@P5 k;,aUn
_) cheann (C@P6 C;,aUn
_) comh (@@P4 k,o:
_) chomh (@@P5 x,o:
comhar k'o:@r
chomhar x'o:@r
comhair k'o:@r
chomhair x'o:@r

.group d
d d[ // broad
L01) d dZ // slender
d (L22 dZ // slender
d (L01 d; // slender
d (CL01 dZ
i) d (i dZ
?1 _n_) d (@
dh Q // broad
@@ -186,6 +214,8 @@
_) d (_'fh d

d'fh (L01 d

dhaoine Q@i:n;%i:
i) dh (_ g
a) dh (_ X
o) dh (_ X
@@ -195,6 +225,7 @@
dheartháir gr@h'A:r
deirfiúr d;r@f'u:r
dheirfiúr g;r@f'u:r
domhan d[aU@n
_) do (Ch@@P2 d[,U_
_) dí (C@@P2 d,i:
dícheall d;'i:Ca#l
@@ -220,6 +251,7 @@
d) eo (ch O#
dh) eo (ch O#
_) eo (ch O#
_h) eo (ch O#
s) eo (_ @


@@ -242,7 +274,7 @@
ea (ltaine aU
g) ea (ll aU
l) eamh (n aU
dr) ea (m aU
Kdr) ea (m aU
X) ea (ch 0
_L04) ea (g @
_L04) ea (dh_ @
@@ -250,6 +282,7 @@
L04) eaga (_ @g@
eaghl aIl
eabhra aUr@ // words like Feabhra
eabhs aUs
eanbhean 'an@v,an
eadhb aIb

@@ -262,6 +295,7 @@
fh (L22 ; // slender
@) f (L06_ h
fios fIs
faoi fw'i:
fhios Is
_) fo (C@@P2 f,U
_) fogh f'aU
@@ -269,13 +303,14 @@
_) foc (@++ fOk
?1 _bh_) f (@
?1 _bh_) f (L22 ;
_) fíor (@P4 f,i:r


.group g
g g // broad
g (L01 g; // slender
?1 _n_) g (@
_) gh Q"
gh Q"
_) gh (L01 Q"j
_) gc g // urú broad
_) gc (L01 g; // urú slender
@@ -287,8 +322,11 @@
gh (n X@
gheobh j'o:
gabh gaU
_) gearr (C@P5 g;,aR
_) ghearr (C@P6 Q"j,aR
ghabh Q"aU
_) gearr (C@@P5 g;,aR
_) ghearr (C@@P6 Q"j,aR
_) gnáth (@@P5 g@n,A:
_) ghnáth (@P6 X@n,A:

.group h
h h // silent
@@ -301,6 +339,8 @@
iu U
ia (tha i:
io O#
iond O#n@d[
ioml O#m@l
io (dá I
_) io (nadh u:// words like ionadh
s) io (mb I
@@ -315,6 +355,8 @@
iú u:
m) i (d_ i: // verb ending
_) in (@@P2 ,In_
_) inn In
_) in (tinn 'In
_) ionad (C@@P5 ,Ona#d[

.group í
@@ -324,6 +366,7 @@
í (_ i:
ín (_ i:n
ío i:@
íle (_ 'i:lE


.group l
@@ -334,6 +377,7 @@
ll (L23 l;
l (g l@
l (b l@
L01) l (b l;@
ll (b l
_) lorg (@@P4 l,Or@g
_) lán (@@P3 l,A:n
@@ -352,7 +396,9 @@
_) mh (n v@
léir) mheas vas
r) m @m // words like gorm
r) m (L20 @m;
_) mear (@@P4 m,ar
_) mí (C@@P2 m,i:

.group n
n n // broad
@@ -360,8 +406,8 @@
?1 _) n (_L01 n;
_) nd n // urú
_) nd (L01 n; // urú slender
_) ng N
_) ng (L01 N;
ng N
ng (L01 N;
?1 _) n (_d n // urú
?1 _) n (_dL01 n; // urú slender
?1 _) n (_g N
@@ -386,19 +432,22 @@
_C) omh o:
_CC) omh o:
omha o:@

omhai o:@
o (ll_ aU
C) o (nn_ aU
r) o (nn_ O#
C) ogh aU
omhan (_ aU@n
omhain (_ aUIn
odha aU
opaic @pIk
C) odh (_ o:
odl (a O#l
oí i:

o (rd_ o:
o (ird_ o:
_) oll (@@P3 ,Ol

.group ó
ó 'o:
@@ -426,14 +475,16 @@
oi (mis @
ois (++ O#S
n) ois (_++ IS
oill w'i:l
oill (+ w'i:l
_) oi (leá 'I
oidh aI
oir (_ 'ERR
l) oic (_ Ek
_sc) oi (r O
oigh (ea aI
oighn aIXn

oinse (_ @i:nS@
oi (nte @i:

.group p
p p // broad
@@ -441,12 +492,15 @@
p (L22 p; // slender
ph (L20 f; // slender
?1 _b_) p (@
_) príomh (@P6 pR,i:v
_) phríomh (@P7 fR,i:v



.group r
r r // broad
L01) r R // slender
_) r (L01 R
r (L01 R
L12i) r (e_ Z
L12i) r (t_ Z
rr R
@@ -473,6 +527,8 @@
s (lL01 S
_') s (_ s // 's in poems etc
_) sain (@P4 s,an
_) sean (@@P4 S,an


.group t
t t[ // broad
@@ -496,11 +552,14 @@
ao) th (_
thne (_ h@nE
A) th (_ // silent th at word end
c) th (e_ ih // guta cúnta
K) th (as_ @h // guta cúnta


.group u
u U#
ua u@
ua (_ u:@
uai u@
uai (g ui
uai (d ui
@@ -520,8 +579,12 @@
g) ui (gh_ @i:
gh) ui (gh_ @i:
uí i:
uíomh 'i:@vv

uachai 'ux@
_) uimhir (C@P6 ,IvIR
uibhne (_ @'i:n;E
uibhneach (_ @'i:n@x


.group ú
@@ -531,6 +594,7 @@
úi u:
úinn (_ u:IN
úibh (_ u:Iv
úi (g u:i




+ 4
- 4
dictsource/grc_list View File

@@ -2,12 +2,12 @@
?1 _0lang _^_EN // speak numbers in English

// articles
hο $u // ὁ
ɦο $u // ὁ
τὼ $u // τώ
οhι $u // οἱ
hη $u // ἡ
οɦι $u // οἱ
ɦη $u // ἡ
τὰ $u // τά
αhι $u // αἱ
αɦι $u // αἱ
τὸ $u // τό

τοὺ $u // τοῦ

+ 69
- 66
dictsource/grc_rules View File

@@ -3,7 +3,7 @@
// Preliminary character substitution:
// Convert tonos, oxia and perispomeni to varia
// Remove psili (soft breathing)
// Convert dasia accent to a separate prefix character ("h")
// Convert dasia accent to a separate prefix character ("ɦ") NOTE: using U+0266 because it's above eSpeak's Latin character limit of 0x250.
// Remove iota subscripts
// Replace Latin characters by same-shape Greek characters

@@ -61,32 +61,32 @@ w ω // (long o; not standard transliteration but may be easier to type
ᾷ ᾲ

ἀ α
hα
ɦα
ἂ ὰ
h
ɦ
ἄ ὰ
h
ɦ
ἆ ὰ
h
ɦ

ᾀ ᾳ
h
ɦ
ᾂ ᾲ
h
ɦ
ᾄ ᾲ
h
ɦ
ᾆ ᾲ
h
ɦ

// epsilon
έ ὲ
έ ὲ
ἐ ε
hε
ɦε
ἒ ὲ
h
ɦ
ἔ ὲ
h
ɦ

// eta
ή ὴ
@@ -96,22 +96,22 @@ w ω // (long o; not standard transliteration but may be easier to type
ῇ ῂ

ἠ η
hη
ɦη
ἢ ὴ
h
ɦ
ἤ ὴ
h
ɦ
ἦ ὴ
h
ɦ

ᾐ ῃ
h
ɦ
ᾒ ῂ
h
ɦ
ᾔ ῂ
h
ɦ
ᾖ ῂ
h
ɦ

//iota
ί ὶ
@@ -119,13 +119,13 @@ w ω // (long o; not standard transliteration but may be easier to type
ῖ ὶ

ἰ ι
hι
ɦι
ἲ ὶ
h
ɦ
ἴ ὶ
h
ɦ
ἶ ὶ
h
ɦ

ΐ ῒ
ῗ ῒ
@@ -134,11 +134,11 @@ w ω // (long o; not standard transliteration but may be easier to type
ό ὸ
ό ὸ
ὀ ο
hο
ɦο
ὂ ὸ
h
ɦ
ὄ ὸ
h
ɦ

// upsilon
ύ ὺ
@@ -146,13 +146,13 @@ w ω // (long o; not standard transliteration but may be easier to type
ῦ ὺ

ὐ υ
hυ
ɦυ
ὒ ὺ
h
ɦ
ὔ ὺ
h
ɦ
ὖ ὺ
h
ɦ

ΰ ῢ
ῧ ῢ
@@ -165,26 +165,26 @@ w ω // (long o; not standard transliteration but may be easier to type
ῷ ῲ

ὠ ω
hω
ɦω
ὢ ὼ
h
ɦ
ὤ ὼ
h
ɦ
ὦ ὼ
h
ɦ

ᾠ ῳ
h
ɦ
ᾢ ῲ
h
ɦ
ᾤ ῲ
h
ɦ
ᾦ ῲ
h
ɦ

// rho
ῤ ρ
hρ
ɦρ


.group α
@@ -193,10 +193,10 @@ w ω // (long o; not standard transliteration but may be easier to type
αὶ 'aI
αυ aU
αὺ 'aU
αhι haI
αhὶ 'haI
αhυ haU
αhὺ 'haU
αɦι haI
αɦὶ 'haI
αɦυ haU
αɦὺ 'haU

.group β
β b
@@ -216,10 +216,10 @@ w ω // (long o; not standard transliteration but may be easier to type
εὶ 'e:
ευ eU
εὺ 'eU
εhι he:
εhὶ 'he:
εhυ heU
εhὺ 'heU
εɦι he:
εɦὶ 'he:
εɦυ heU
εɦὺ 'heU

.group ζ
ζ z
@@ -231,10 +231,10 @@ w ω // (long o; not standard transliteration but may be easier to type
ηὶ 'EI:
ηυ EU:
ηὺ 'EU:
ηhι hEI:
ηhὶ 'hEI:
ηhυ hEU:
ηhὺ 'hEU:
ηɦι hEI:
ηɦὶ 'hEI:
ηɦυ hEU:
ηɦὺ 'hEU:

.group θ
θ T
@@ -274,10 +274,10 @@ w ω // (long o; not standard transliteration but may be easier to type
οὶ 'oI
ου u:
οὺ 'u:
οhι hoI
οhὶ 'hoI
οhυ hu:
οhὺ 'hu:
οɦι hoI
οɦὶ 'hoI
οɦυ hu:
οɦὺ 'hu:

.group π
π p
@@ -303,15 +303,15 @@ w ω // (long o; not standard transliteration but may be easier to type
υ y
υι yI
υὶ 'yI
υhι hyI
υhὶ 'hyI
υɦι hyI
υɦὶ 'hyI

.group ϋ
ϋ y
ϋι yI
ϋὶ 'yI
ϋhι hyI
ϋhὶ 'hyI
ϋɦι hyI
ϋɦὶ 'hyI

.group φ
φ f
@@ -331,15 +331,15 @@ w ω // (long o; not standard transliteration but may be easier to type
ωὶ 'OI:
ωυ OU:
ωὺ 'OU:
ωhι hOI:
ωhὶ 'hOI:
ωhυ hOU:
ωhὺ 'hOU:
ωɦι hOI:
ωɦὶ 'hOI:
ωɦυ hOU:
ωɦὺ 'hOU:



.group h // dasia (rough breathing)
h h
.group ɦ // dasia (rough breathing)
ɦ h


// Latin letters to equivalent Greek sounds (plus 'q = η' 'w = ω'
@@ -366,6 +366,9 @@ w ω // (long o; not standard transliteration but may be easier to type
g g
gg Ng

.group h
h h

.group i
i i


+ 167
- 0
dictsource/gu_list View File

@@ -0,0 +1,167 @@
// This file is written by Him Prasad Gautam (Nepal)
// This file is UTF8 encoded

// Numbers
// Gujarati numbers are changed to latin characters before translation

_0 S'u:nj@-
_1 'e:k
_2 b'e:
_3 tr'@n.V
_4 c'a:r
_5 p'a:n^c
_6 c#'@
_7 s'a:t
_8 'a:,t.#
_9 n'aw
_10 d'@s:
_11 'ag'Ija:r
_12 b'a:r
_13 t'e:r
_14 c'O:d
_15 p'Vnd@r
_16 s'o:d.
_17 s'@t@r
_18 'Vd.#a:r
_19 ,o:gn.'i:s
_20 w'i:s
_21 ,e:kw'i:s
_22 baU'i:s
_23 tre:w'i:s
_24 co:w'i:s
_25 p,@c'i:s
_26 c#@3w'i:s
_27 s,@tjaU'i:s
_28 ,Vt.#jaU'i:s
_29 ,o:[email protected]'i:s
_30 tr'i:s
_31 ,e:k@tr'i:s
_32 b@tr'i:s
_33 te:tr'i:s
_34 co:tr'i:s
_35 pa:ntr'i:s
_36 c#@3tr'i:s
_37 s,a:d.tr'i:s
_38 ,a:d.tr'i:s
_39 ,o:[email protected]:l'i:s
_40 ca:l'i:s
_41 ,e:kta:l'i:s
_42 b,e:ta:l'i:s
_43 t,e:ta:l'Is
_44 c,Uma:l'i:s
_45 p,Ista:l'i:s
_46 c#,e:ta:l'i:s
_47 s,@d.ta:l'i:s
_48 ,Vd.ta:l'i:s
_49 o:g'Vn.,p@c'a:s
_50 p@c'a:s
_51 e:k'aUn
_52 b'aUn
_53 tre:p'Vn
_54 co:p'Vn
_55 p@n^c'aUn
_56 c#@3p:'Vn
_57 s@t'aUn
_58 Vt.#'aUn
_59 ,o:[email protected]:'It.#
_60 sa:'It.#
_61 ,e:k@s'Vt.#
_62 ba:s'Vt.#
_63 tre:s'Vt.#
_64 co:s'Vt.#
_65 pa:s'Vt.#
_66 c#a:s'Vt.#
_67 s,@d.@s'Vt.#
_68 ,Vd.@s'Vt.#
_69 ,o:[email protected]'i:te:r
_70 s'i:te:r
_71 e:k'o:te:r
_72 b'o:te:r
_73 t'o:te:r
_74 cUm'o:te:r
_75 p@n^c'o:te:r
_76 c#'o:te:r
_77 s@t'o:te:r
_78 Vt.#'o:te:r
_79 ,o:g@n.'e:si;
_80 'e:nsi;
_81 ,e:kj'a:si
_82 b'j'a:si
_83 tr@2j'a:si
_84 c,o:*j'a:si
_85 p,@cj'a:si
_86 c#@3j'a:si
_87 s,@tj'a:si;
_88 ,Vt.#j'a:si
_89 n,e:wj'a:si
_90 n'e:wU
_91 e:k'a:n.U
_92 b'a:n.U
_93 tr'a:n.U
_94 co:r'a:n.U
_95 p@n^c'a:n.U
_96 c#'VnnU
_97 s@t'a:n.U
_98 Vt.#'a:n.U
_99 n@w'a:n.U

_0C s'o:
_0M1 h'VJa:r
_0M2 l'a:k#
_0M3 k@r'o:r.V
_0M4 'VrVb
_0M5 k#'VrVb
_dpt p'u:r'n.'a:,Nk

// Single consonants
ક k@
ક઼ q@
ખ k#@
ખ઼ x@
ગ g@
ગ઼ Q@
ઘ g#@
ઙ N@
ચ c@
છ c#@
જ J@
જ઼ z@
ઝ J#@
ઞ n^@
ટ t.@
ઠ t.#@
ડ d.@
ડ઼ r.@
ઢ d.#@
ણ n.@ // retroflex n.@
ત t@
થ t#@
દ d@
ધ d#@
ન n@
પ p@
ફ p#@
ફ઼ f@
બ b@
ભ b#@
મ m@
ય j@
ર r@
લ l@
ળ l.@
વ v@
શ S@
ષ s.@ // retroflex [S]
સ s@
હ H@



// Punctuation
। p'urn'a,b'ira:m
૱ r'u:p'i:ja:
$ d@l@r
+ plVs
= bVr'a:b@r
* ta:r'a:Nk@n


+ 468
- 0
dictsource/gu_rules View File

@@ -0,0 +1,468 @@
// This file is developed by Him Prasad Gautam (Nepal)
// This file is UTF8 encoded

// letter groups:
// A vowel letters and vowel signs
// B vowel signs and virama ્
// C consonants
// Y vowel letters and vowel signs

// conditional rules
// ?2 use diphthong for "ai"
// ?3 use diphthong for "au"


.replace
૦ 0
૧ 1
૨ 2
૩ 3
૪ 4
૫ 5
૬ 6
૭ 7
૮ 8
૯ 9


// Vowels

.group અ
અ V
અ (હ E // (h
અહ) અ E

.group આ
આ a:

.group ઇ
ઇ I
ઇઁ i~
ઇં i~

.group ઈ
ઈ i:
ઈ (_ i

.group ઉ
ઉ U

.group ઊ
ઊ u
ઊં (_ u~ // + anusvara
ઊઁ (_ u~ // + candrabinbu

.group ઋ
ઋ rI

.group ઌ
ઌ l-ri: // vocalic l

.group ઍ
ઍ E // candra e

.group એ
એ e:
એઁ e~:
એં (_ e~:
ા) એઁ (_ j

.group ઐ
ઐ E: // ?? [aI] [E:] [&:]
ઐં (_ E~
ઐઁ (_ E~
?2 ઐ aI // ?? [aI] [E:] [&:]


.group ઑ
ઑ O // candra O

.group ઓ
ઓ o:
ઓં (_ o~ // +anusvara
ઓઁ (_ o~ // +candrabindu
ા) ઓં (_ w // +anusvara
ા) ઓઁ (_ w

.group ઔ
ઔ O: // ?? [aU] [O:]
ઔં (_ O~ // +anusvara
ઔઁ (_ O~ // +candrabindu
?3 ઔ aU // ?? [aU] [O:]


// Vowel Signs

.group ા
ા k'a:n'o
C) ા a:
C) ા (ઁ a~
C) ાઁ (_ a~
C) ાં (_ a~

.group િ
િ i,c'i:nh'a
C) િ i
C) િઁ i~
C) િં i~

.group ી
ી d'i:rg#@i:,c'i:n'h'a
C) ી i:
C) ી (_ i
C)ી (ઁ i~
C) ીઁ (_ i~
C) ીં (_ i~

.group ુ
ુ u,c'i:n'h'a
C) ુ U
C) ુ (ઁ u~
C) ું (_ u~
C) ુઁ (_ u~

.group ૂ
ૂ d'i:rg#@u:,c'i:n'h'a
C) ૂ u:
C) ૂ (ઁ u~
C) ૂં (_ u~ // or O~ ??
C) ૂઁ (_ u~

.group ૃ
ૃ r'I,c'i:n'h'a
C) ૃ rI

.group ૄ
ૄ d'i:rg#@r'I,c'i:n'h'a
C) ૄ rI

.group ૅ
ૅ 'e,c'i:n'h'a
C) ૅ E

.group ે
ે 'e:,c'i:n'h'a
C) ે e:
C) ે (ઁ e~
C) ેં (_ e~:
C) ેઁ (_ e~:

.group ૈ
ૈ E:,c'i:n'h'a
C) ૈ E: // ?? [aI] [E:] [&:]
C) ૈં E~
C) ૈ (ઁ E~
C) ૈં (_ E~
C) ૈઁ (_ E~
?2 C) ૈ aI // ?? [aI] [E:] [&:]

.group ૉ
ૉ O,c'i:n'h'a
C) ૉ O

.group ો
ો o:,c'i:n'h'a
C) ો o:
C) ો (ઁ o~
C) ોં (_ o~
C) ોઁ (_ o~

.group ૌ
ૌ aU,c'i:n'h'a // [O:] or [aU] ??
C) ૌ O:
C) ૌ (ઁ O~ // [O:] or [aU] ??
C) ૌં (_ O~
C) ૌઁ (_ O~
?3 C) ૌ aU // [O:] or [aU] ??

.group ૢ // vowel sign l
_) ૢ (_ l'ri:,c'i:n'h'a
ૢ l-

.group ૣ // vowel sign ll
_) ૣ (_ d'i:rg#,l'ri:,c'i:n'h'a
ૣ l-:

.group ૐ
ૐ o~m

// Consonants

.group ક
ક kV
ક (B k
ક (્ય k:
ક઼ qV
ક઼ (B q

ક્ક k:V // kk -> k:
ક્ક (B k:
ક્ષ kSV
ક્ષ (B kS
.group ખ
ખ k#V
ખ (B k#
ખ઼ xV
ખ઼ (B x

.group ગ
ગ gV
ગ (B g
ગ઼ QV
ગ઼ (B Q

.group ઘ
ઘ g#V
ઘ (B g#

.group ઙ
ઙ NV
ઙ (B N
્) ઙ (_ N@

.group ચ
ચ cV
ચ (B c
ચ (્ય c:

.group છ
છ c#V
છ (B c#

.group જ
જ JV
જ (B J
જ઼ zV
જ઼ (B z
જ્ઞ gjV
જ્ઞ (B gj

.group ઝ
ઝ J#V
ઝ (B J#


.group ઞ
ઞ n^V
ઞ (B n^
્) ઞ (_ n^@


.group ટ
ટ t.V
ટ (B t.
ટ (્ય t.:
ટ્ટ t.:V // t.t. -> t.:
ટ્ટ (B t.:
ટ્ઠ t.#:V // t.t.# -> t.#:
ટ્ઠ (B t.#:

.group ઠ
ઠ t.#V
ઠ (B t.#
ઠ્ઠ t.#:V // t.#t.# -> t.#:
ઠ્ઠ (B t.#:
.group ડ
ડ d.V
ડ (B d.

ડ઼ r.V
ડ઼ (B r.

.group ઢ
ઢ d.#V
ઢ (B d.#
ઢ઼ r.hV // nukta (should retroflex flap)
ઢ઼ (B r.h // nukta

.group ણ
ણ n.V
ણ (B n.
્) ણ (_ n.@

.group ત
ત tV
ત (B t
ત (્ય t:

ત્ત t:V // tt -> t:
ત્ત (B t:
.group થ
થ t#V
થ (B t#

.group દ
દ dV
દ (B d

.group ધ
ધ d#V
ધ (B d#

.group ન
ન nV
ન (B n
્) ન (_ n@
ર્) ન (_ n // r +virama


.group પ
પ pV
પ (B p
પ (્ય p:
પ્પ p:V // pp -> p:
પ્પ (B p:

.group ફ
ફ p#V
ફ (B p#
ફ઼ fV
ફ઼ (B f

.group બ
બ bV
બ (B b

.group ભ
ભ b#V
ભ (B b#

.group મ
મ mV
મ (B m
્) મ (_ m@
ર્) મ (_ m // r +virama
ન્) મ (_ m // n +virama

.group ય
ય jV
ય (B j
C) ય (_ Ej // [Ej] not [@j]
્) ય (_ j@

.group ર
ર rV
ર (B r
ર (_ r
્) ર (_ r@

.group લ
લ lV
લ (B l
્) લ (_ l@

.group ળ
ળ l.V
ળ (B l.
્) ળ (_ l.@


.group વ
વ wV
વ (B w
_) વ wV
_) વ (B w
_) વ (્ w // +virma
વ (_ w

.group શ
શ SV
શ (B S

.group ષ
ષ s.V
ષ (B s.

.group સ
સ sV
સ (B s

.group હ
હ HV
હ (B H

.group ઼
઼ t.'Vp,k'u:
A) ઼
C) ઼

.group ઽ // avagraha, lengthens a vowel ??
ઽ 'Vn'un'a:s'i:k
A) ઽ :
C) ઽ :

.group ઁ
ઁ 'ard.'a,c'Vndr'a // candrabindu
C) ઁ n
A) ઁ n

.group ં
ં 'Vn'Uswa:r
A) ં n
C) ં n
ં (પ m
ં (ફ m
ં (બ m
ં (ભ m
ં (મ m

ં (ટ n.
ં (ઠ n.
ં (ડ n.
ં (ઢ n.
ં (ણ n.

ં (ચ n^
ં (છ n^
ં (જ n^
ં (ઝ n^
ં (ઞ n^
ં (ય n^

ં (ક N
ં (ખ N
ં (ગ N
ં (ઘ N
ં (ઙ N


.group ઃ
ઃ g'ur'u,v'ir'a:m
A) ઃ H // visarga
C) ઃ H // visarga
ઁ) ઃ H
ં) ઃ H

.group ્ // virama
્ k#'od.o
C) ્

// Extra consonants


.group ૠ // rr
ૠ V-rr

.group ૡ // ll
ૡ l-: // long syllabic l

.group %
% p'Vrs'ent.
0) % t.'Vkk'a:
1) % t.'Vkk'a:
2) % t.'Vkk'a:
3) % t.'Vkk'a:
4) % t.'Vkk'a:
5) % t.'Vkk'a:
6) % t.'Vkk'a:
7) % t.'Vkk'a:
8) % t.'Vkk'a:
9) % t.'Vkk'a:

+ 2
- 2
dictsource/hu_list View File

@@ -411,7 +411,7 @@ _tld tildE
_#9 tAb
_#32 s'o:kYz
_cap n'AJ_|
_?? kAR2AktEr // unknown characters (change this)
_?? kAR2AktER2 // unknown characters (change this)


// Abbreviations
@@ -4255,7 +4255,7 @@ belőniük $unstressend
árban $unstressend
(boltok ajánlatai) boltok_'||Aja:nlAtAi $unstressend
valaki $unstressend
(kellene biztosítani) kEl:Ene_||bistosi:tAni $unstressend
(kellene biztosítani) kEl:EnE_||bistoSi:tAni $unstressend
(már lehetséges) ma:R2_||lEhEtS:e:gES $unstressend
(is támogatja) iS_||ta:mogAc:A $unstressend
(lehet használni) lEhEt_||hAsna:lni $unstressend

+ 612
- 131
dictsource/hu_rules View File

@@ -175,10 +175,37 @@ udvaron) c (ser ts
licen) ccs ts|tS
nyol) c (csat ts
pokró) c (sá ts
barká) cs (zen tS
kalapá) cs (zon tS
_kapol) cs tS
lán) c (sor ts
barká) cs (zen tS
kalapá) cs (zon tS
_kapol) cs tS
lán) c (sor ts
daró) c (cs ts
oroszlán) cs (or tS
harmin) c (sor ts
he) cc (sajt ts
ccsz ts|s
ifjon) c (csap ts
kapo) cs (zár tS
ketre) c (cs ts
ketre) c (so ts
kul) cs (zen tS
lán) c (seb ts
lidér) c (cs ts
mala) c (cs ts
matra) c (sor ts
nyol) c (sark ts
nyol) c (sej ts
nyol) c (sug ts
párdu) c (cs ts
kar) c (sor ts
szendvi) cs (zab tS
tán) cs (i tS
tanon) c (cs ts
titán) cs tS
torná) c (sor ts
ujjper) c (cs ts
ccsz ts|s
_ér) c (saru ts

.group ch
anar) ch (i h
@@ -216,8 +243,36 @@ diszti) ch (on h
almana) ch h
kronoszti) ch (on h
arca) ch (on h
sza) ch (arid h
szto) ch (aszti h
sza) ch (arid h
szto) ch (aszti h
a) ch (aem h
a) ch (át h
a) ch (illes h
ti) ch (on h
arca) ch (on h
ba) ch h
blaskovi) ch tS
?1 chip tSip
?1 damjani) ch tS
eu) ch (arisz h
eunu) ch h
fa) ch h
fis) ch (er
forgá) ch tS
grassalkovi) ch tS
ri) ch (ter C
jurisi) chcs tS:
jurisi) ch tS
keglevi) ch tS
s) ch (illing
le) ch (ner h
mala) ch (it h
metterni) ch C
pé) ch (y tS
pejacsevi) ch tS
kra) ch h
tri) ch (in h
e) ch (ó h

.group d
d d
@@ -469,23 +524,31 @@ shetlan) d (szige d
své) d (zseb d
csalá) d (szer d
szaba) d (sajt d
szomszé) d (jog d
elő) d (szerv d
árká) d (szerű d
csalá) d (sztor d
harminca) d (sze d
hol) d (szond d
kó) d (szöve d
lipi) d (szint d
máso) d (szava d
_ná) d (szeg d
nyárá) d (szere d
rú) d (szerű d
tize) d (szed d
_va) d (szerb d
va) d (tyúk d
bőrön) d (sze d
stran) d (szett d
szomszé) d (jog d
elő) d (szerv d
árká) d (szerű d
csalá) d (sztor d
harminca) d (sze d
hol) d (szond d
kó) d (szöve d
lipi) d (szint d
máso) d (szava d
_ná) d (szeg d
nyárá) d (szere d
rú) d (szerű d
tize) d (szed d
_va) d (szerb d
va) d (tyúk d
bőrön) d (sze d
stran) d (szett d
pa) d (szomszé d
akkor) d (játsz d
harma) d (szándék d
rekor) d (szer d
rekor) d (szezo d
va) d (szállí d
cső) d (szerű d
hol) d (szputnyik d

.group dz
fogó) dz (kod ts
@@ -542,8 +605,8 @@ burkoló) dz z
000_-) el (_ REl // double R for 1000-el
000000_-) el (_ El // ... but not 1000000-el
_) ehhez EhEz
egyezség EJ:ESSe:g
egyezségg EJ:ESSe:g:
egyezség EJ:ESSe:g
egyezségg EJ:ESSe:g:

.group é
é e:
@@ -609,7 +672,7 @@ burkoló) dz z
fo) g (gyűrű g
fo) g (gyö g
kuplun) g (gyár g
bélye) g (gyűjt g
bélye) g (gy g
jo) g (gyakor g
dö) g (gyapjú g
fo) g (gyalu g
@@ -625,7 +688,6 @@ ritkasá) g (gyűjt g
é) gh (ajla kh
pro) g (gyak g
arcüre) g (gyulladás g
bete) g (gyógyász g
szöve) g (gyűjt g
ta) g (gyűl g
gu) gg (ol g
@@ -675,19 +737,72 @@ doppin) g (gy g
baromsá) g (gy g
tehetsé) g (gy g
bete) g (gy g
egysé) g (gy g
átla) g (gy g
szőnye) g (gyár g
hűsé) g (gy g
_ma) g (gyűjt g
népessé) g (gy g
öröksé) g (gy g
_sze) g (gyár g
szö) g (gyors g
tisztsé) g (gy g
szúnyo) g (gy g
szala) g (gyakor g
szala) g (gyűjt g
egysé) g (gy g
átla) g (gy g
szőnye) g (gy g
hűsé) g (gy g
_ma) g (gyűjt g
népessé) g (gy g
öröksé) g (gy g
_sze) g (gyár g
szö) g (gyors g
tisztsé) g (gy g
szúnyo) g (gy g
szala) g (gyakor g
szala) g (gyűjt g
azonossá) g (gy g
barlan) g (gy g
betegsé) g (gy g
bizottsá) g (gy g
boldogsá) g (gy g
bumerán) g (gy g
szövetsé) g (gy g
cé) g (gyil g
cé) g (gyűr g
cukisá) g (gy g
me) ggy (önte J:
dö) g (gyár g
dömpin) g (gy g
dramatur) g (gy g
egyvele) g (gy g
ellensé) g (gy g
érdekessé) g (gy g
fére) g (gy g
feszültsé) g (gy g
gyalo) g (gy g
sere) g (gy g
hangszala) g (gy g
haran) g (gy g
híressé) g (gy g
hólya) g (gy g
horo) g (gy g
hülyesé) g (gy g
in) g (gyár g
jé) g (gyűr g
jo) g (gyűjt g
jo) g (gyüm g
közönsé) g (gy g
lé) g (gyár g
ma) g (gyár g
vé) g (gyant g
mássá) g (gy g
me) ggy (asz J:
me) ggy (ill J:
me) ggy (ültet J:
szala) g (gyár g
anya) g (gy g
nemzetsé) g (gy g
ördö) g (gy g
részle) g (gy g
réte) g (gy g
ru) g (gyant g
sebessé) g (gy g
szlen) g (gy g
ta) g (gyül g
tisztasá) g (gy g
újsá) g (gy g
végta) g (gy g
ele) ggy (el J:

.group gy
gy J
@@ -813,8 +928,8 @@ _huszone) gy (e J:
száze) gy (edik J:
védje) gy (straté J
na) gy (sor J
e) gy (esít J:
ve) gy (érték J
e) gy (esít J:
ve) gy (érték J

.group h
h h
@@ -870,8 +985,8 @@ progressz) í (ve i:
sz) í (verő i:
sz) í (vevő i:
expressz) í (v i:
recessz) í (ve i:
v) í (zener i:
recessz) í (ve i:
v) í (zener i:

.group j
j j
@@ -924,7 +1039,7 @@ v) í (zener i:
k (-k k: //for example marok-körző word need cut one k letter and need spokening k: phoneme only
k-) k //silent with second k phoneme
_játé) kk (liens k: //exceptiof for kk (L01 rule
községg kYS:e:g:
községg kYS:e:g:


.group l
@@ -976,6 +1091,9 @@ keresztü) l (j l
lly (-L01 j //if have consonants after - character, need spokening one j letter with first part
ll (-L01 l
bagate) ll (iz l
fü) l (lyuk l
levé) l (lyuk l
nyé) l (lyuk l

.group m
m m
@@ -1087,16 +1205,50 @@ teljesítmé) ny (j n^

n'Em _!'Ellt,e:,ES
porcelá) n (ny n
részvé) ny (jegy n^
agyo) n (játsz n
kölcsö) n (nyak n
dohá) ny (jöv n^
elektro) n (ny n
magá) n (nyar n
igé) ny (jog n^
szé) n (nyom n
verse) ny (játsz n^
ár) ny (játé n^
részvé) ny (jegy n^
agyo) n (játsz n
kölcsö) n (nyak n
dohá) ny (jöv n^
elektro) n (ny n
magá) n (nyar n
igé) ny (jog n^
szé) n (nyom n
verse) ny (játsz n^
ár) ny (játé n^
arzé) n ((ny n
bá) n (nyíre n
benzi) n (ny n
nny (elv n|n^
kö) nny (elv n^:

elektro) n (ny n
szé) n (nyom n
haszo) n (ny n
ingatla) n (nyil n
io) n (ny n
karbo) n (ny n
kazá) n (ny n
kokai) n (ny n
kölcsö) n (ny n
kupo) n (ny n
vászo) n (ny n
marato) n (ny n
mediá) n (ny n
telefo) n (ny n
morfi) n (ny n
mikro) n (ny n
neutro) n (ny n
oxigé) n (ny n
_ö) n (nyug n
panteo) n (ny n
sablo) n (ny n
skanze) n (ny n
szentivá) n (ny n
szé) n (nyom n
ta) n (nyomd n
vagyo) n (ny n
külö) n (jára n
szí) n (jeles n

.group o
o o
@@ -1243,10 +1395,29 @@ feldolgozá) s S
_ki) s (szín S
kérdé) s S
végzé) s S
blue) s (zen S
fúvó) s (zené S
települé) s (zón S
adá) s (zár S
blue) s (zen S
fúvó) s (zené S
települé) s (zón S
_adá) s (zár S
basszu) s (zen S
blue) s (zon S
egyene) s (zár S
fázi) s (zár S
konfliktu) s (zón S
kortár) s (zen S
kóru) s (zen S
mikulá) s (zacs S
mulató) s (zen S
orvo) s (zseb S
ő) s (száj S
ő) s (szám S
ő) s (szava S
ő) s (szent S
ő) s (szó S
rugó) s (zárj S
szeku) s (zen S
töré) s (zón S
verbunko) s (zen S

.group ss
ssz ss2
@@ -1766,7 +1937,7 @@ kattintá) ssz Ss
közlekedé) ssz Ss
laká) ssz Ss
légzé) ssz Ss
_le) ssz (ab Ss
le) ssz (ab Ss
meglepeté) ssz Ss
nyila) ssz Ss
pszichológu) ssz Ss
@@ -1806,43 +1977,317 @@ születé) ssz (ám S|s
zsarolá) ssz (er S|s
dőlé) ssz (ab S|s
települé) ssz (isz Ss
vallá) ssz Ss
folyá) ssz (er Ss
_katyva) ssz s:
mitugrá) ssz (al s:
basszu) ssz Ss
buká) ssz Ss
erőlködé) ssz Ss
szarva) ssz Ss
ricinu) ssz Ss
települé) ssz Ss
utalá) ssz Ss
erősíté) ssz Ss
fázi) ssz Ss
fejleszté) ssz Ss
fúvó) ssz Ss
autó) ssz Ss
nyomá) ssz Ss
hatá) ssz Ss
effektu) ssz Ss
pulzu) ssz Ss
jelenté) ssz Ss
váltá) ssz Ss
mondá) ssz Ss
fázá) ssz Ss
ve) ssz (ők s:
_ő) ssz (láv Ss
periódu) ssz Ss
pólu) ssz Ss
rová) ssz Ss
utasítá) ssz Ss
tudá) ssz Ss
turizmu) ssz Ss
hajó) ssz (leng Ss
vezeté) ssz Ss
_vonó) ssz (iv Ss
ülé) ssz Ss
motoro) ssz Ss
vallá) ssz Ss
folyá) ssz (er Ss
_katyva) ssz s:
mitugrá) ssz (al s:
basszu) ssz Ss
buká) ssz Ss
erőlködé) ssz Ss
szarva) ssz Ss
ricinu) ssz Ss
települé) ssz Ss
utalá) ssz Ss
erősíté) ssz Ss
fázi) ssz Ss
fejleszté) ssz Ss
fúvó) ssz Ss
autó) ssz Ss
nyomá) ssz Ss
hatá) ssz Ss
effektu) ssz Ss
pulzu) ssz Ss
jelenté) ssz Ss
váltá) ssz Ss
mondá) ssz Ss
fázá) ssz Ss
ve) ssz (ők s:
_ő) ssz (láv Ss
periódu) ssz Ss
pólu) ssz Ss
rová) ssz Ss
utasítá) ssz Ss
tudá) ssz Ss
turizmu) ssz Ss
hajó) ssz (leng Ss
vezeté) ssz Ss
_vonó) ssz (iv Ss
ülé) ssz Ss
motoro) ssz Ss
adá) ssz Ss
adó) ssz Ss
aktivitá) ssz Ss
akusztiku) ssz Ss
arco) ssz Ss
alkotá) ssz Ss
állomá) ssz Ss
típu) ssz Ss
analízi) ssz Ss
anyó) ssz Ss
áramlá) ssz Ss
emelkedé) ssz Ss
árré) ssz Ss
árveré) ssz Ss
áttöré) ssz Ss
autizmu) ssz Ss
autoritá) ssz Ss
metszé) ssz Ss
mutatkozá) ssz Ss
blue) ssz (al s:
blue) ssz Ss
bombázá) ssz Ss
bukfencezé) ssz Ss
bunyó) ssz Ss
büfögé) ssz Ss
carie) ssz Ss
ciklu) ssz Ss
cipru) ssz Ss
ciripelé) ssz Ss
citru) ssz Ss
csevegé) ssz Ss
csicsergé) ssz Ss
diakónu) ssz Ss
díjszabá) ssz Ss
dinamiku) ssz Ss
dobolá) ssz Ss
dózi) ssz Ss
dzsidá) ssz Ss
egymá) ssz Ss
elbeszélé) ssz Ss
elektroniku) ssz Ss
ellátá) ssz Ss
eltolá) ssz Ss
emigrán) ssz Ss
éneke) ssz Ss
epilógu) ssz Ss
építé) ssz (ab Ss
erőforrá) ssz Ss
erszénye) ssz Ss
érvelé) ssz Ss
esé) ssz Ss
észlelé) ssz Ss
evező) ssz Ss
evolven) ssz Ss
fagyá) ssz Ss
fá) ssz (er Ss
dísze) ssz Ss
fejlődé) ssz Ss
fékezé) ssz Ss
lángolá) ssz Ss
feltevé) ssz Ss
felvoná) ssz Ss
féti) ssz Ss
foga) ssz Ss
fordítá) ssz Ss
fotó) ssz Ss
földmíve) ssz Ss
földműve) ssz Ss
rengé) ssz Ss
főzé) ssz Ss
fuvaro) ssz Ss
hú) ssz (er Ss
gerjeszté) ssz Ss
gesztu) ssz Ss
szűré) ssz Ss
gulyá) ssz Ss
gyártá) ssz Ss
gyülekezé) ssz Ss
gyűlé) ssz Ss
hajtá) ssz Ss
hangzá) ssz Ss
hányado) ssz Ss
háztartá) ssz Ss
hente) ssz Ss
hitelesíté) ssz Ss
hivatá) ssz Ss
horga) ssz Ss
horkolá) ssz Ss
hú) ssz (ál Ss
hú) ssz (ekt Ss
hú) ssz (eml Ss
hú) ssz (int Ss
hú) ssz (örny Ss
hú) ssz (üksé Ss
hűté) ssz Ss
identitá) ssz Ss
igazgatá) ssz Ss
inciden) ssz Ss
indítá) ssz Ss
intriku) ssz Ss
írá) ssz Ss
játéko) ssz Ss
jelölé) ssz Ss
jézu) ssz Ss
júdá) ssz Ss
kaka) ssz Ss
kántálá) ssz Ss
kapacitá) ssz Ss
kapitalizmu) ssz Ss
karbantartá) ssz Ss
kárpito) ssz Ss
ver) ssz (er Ss
kerékpáro) ssz Ss
döfé) ssz Ss
ké) ssz (án Ss
ké) ssz (ár Ss
ké) ssz (er Ss
kette) ssz Ss
kézműve) ssz Ss
kidolgozá) ssz Ss
kifejezé) ssz Ss
ki) ssz (eke Ss
ro) ssz (abb s:
konfliktu) ssz Ss
konstan) ssz Ss
kontinen) ssz Ss
kóro) ssz (en Ss
kortár) ssz Ss
kóru) ssz Ss
_ko) ssz (er Ss
köle) ssz Ss
könyve) ssz (é s:
könyvtáro) ssz Ss
körö) ssz (e Ss
kőrö) ssz (eg Ss
kreativitá) ssz Ss
krízi) ssz Ss
kubiko) ssz Ss
kulturáli) ssz Ss
kurzu) ssz Ss
kutatá) ssz Ss
labirintu) ssz Ss
lakato) ssz Ss
lángo) ssz Ss
ömlé) ssz Ss
lebegé) ssz Ss
leképezé) ssz Ss
nyúlá) ssz Ss
rohaná) ssz Ss
levelezé) ssz Ss
fo) ssz (ín Ss
libbené) ssz Ss
likviditá) ssz Ss
lobbaná) ssz Ss
lövé) ssz (ám Ss
lövöldözé) ssz Ss
maga) ssz (int Ss
magatartá) ssz Ss
mágu) ssz Ss
érzé) ssz Ss
jegyzé) ssz (er Ss
lepé) ssz (er Ss
művelé) ssz Ss
megoldá) ssz Ss
rendelé) ssz Ss
megtorlá) ssz Ss
méhka) ssz (er Ss
mellka) ssz Ss
mentő) ssz Ss
mérgezé) ssz Ss
mestersége) ssz Ss
meteorológu) ssz Ss
mósu) ssz (er Ss
mután) ssz Ss
működé) ssz Ss
náda) ssz Ss
négye) ssz Ss
nyaralá) ssz Ss
nyögé) ssz Ss
oktatá) ssz Ss
olvasá) ssz Ss
órá) ssz Ss
orgazmu) ssz Ss
gyilko) ssz Ss
orvo) ssz Ss
ölelé) ssz Ss
ellenőrzé) ssz Ss
önkénte) ssz Ss
öntözé) ssz Ss
összeomlá) ssz Ss
ötvö) ssz Ss
pálo) ssz (en Ss
lámpá) ssz Ss
pazarlá) ssz Ss
pedagógu) ssz Ss
pesti) ssz Ss
pirami) ssz Ss
postá) ssz Ss
pörsené) ssz Ss
pré) ssz (ak Ss
prímá) ssz Ss
prioritá) ssz Ss
próbálkozá) ssz Ss
ré) ssz (ele Ss
részesedé) ssz Ss
reziden) ssz Ss
rítu) ssz Ss
robbaná) ssz Ss
robbantá) ssz Ss
röfögé) ssz Ss
rögtönzé) ssz Ss
rugó) ssz Ss
sakkozá) ssz Ss
sa) ssz (ikl Ss
sa) ssz (imb Ss
sa) ssz (obr Ss
sa) ssz (obor Ss
sercegé) ssz Ss
_sor) ssz (ab Ss
sörha) ssz Ss
száza) ssz Ss
szedé) ssz Ss
széle) ssz Ss
játszá) ssz Ss
szintetiku) ssz Ss
dobbaná) ssz Ss
szociáli) ssz Ss
szolgáltatá) ssz Ss
szövé) ssz Ss
taktu) ssz Ss
tanulá) ssz Ss
tapsolá) ssz Ss
társulá) ssz Ss
teknő) ssz Ss
telje) ssz Ss
teremté) ssz Ss
terhe) ssz Ss
termé) ssz Ss
tervezé) ssz Ss
tetoválá) ssz Ss
textu) ssz Ss
tizede) ssz Ss
tölté) ssz Ss
töré) ssz Ss
trombitálá) ssz Ss
trónu) ssz Ss
tűré) ssz Ss
tüsszögé) ssz Ss
unikorni) ssz Ss
uta) ssz Ss
uzsorá) ssz Ss
űrhajó) ssz Ss
ütközé) ssz Ss
vágá) ssz Ss
ütő) ssz Ss
választá) ssz Ss
vállalkozá) ssz Ss
varrá) ssz Ss
esztergályo) ssz Ss
verbunko) ssz Ss
versengé) ssz Ss
villámlá) ssz Ss
vívá) ssz Ss
bizto) ssz Ss
vonaglá) ssz Ss
voná) ssz Ss
zaklatá) ssz Ss
zászló) ssz Ss
zöldsége) ssz Ss
emlő) ssz (erű Ss
kapá) ssz (őlő Ss
kuva) ssz (al s:
szertartá) ssz (erű Ss
csipogá) ssz Ss

.group sz
sz s
@@ -1905,13 +2350,16 @@ ellenállá) sz (ón Sz
ré) sz (árás Sz
_te) szts (or st|S
serté) szs (ir S|Z
tava) sz (áról s
te) sztsz (ezon st|s
balla) szts (úly st|S
kere) sztsz (ala st|s
para) szts (alá st|S
para) szts (ere st|S
para) szts (orb st|S
tava) sz (áról s
te) sztsz (ezon st|s
balla) szts (úly st|S
kere) sztsz (ala st|s
para) szts (alá st|S
para) szts (ere st|S
para) szts (orb st|S
csömö) sz (öl s
enyve) szs (in S|Z
li) sztsz (emek st|s

.group t
t t
@@ -2060,26 +2508,34 @@ szögle) t (szob t
álla) t (cirk t
szen) t (szob t
koncer) t (jeg t
tesz) t (cikl t
tesz) t (járm t
tesz) t (játék t
interne) t (jog t
á) tsz (orzás t|s
bará) t (szeren t
bi) t (széles t
spor) t (sér t
sej) t (szinte t
cson) t (sová t
direk) t (szorza t
ese) t (szétvá t
gondola) t (szond t
karsz) t (járat t
klariné) t (sz t
látsza) t (jóin t
metsze) t (sor t
mosza) t (sejt t
sej) t (sűrű t
vilaje) t (szék t
tesz) t (cikl t
tesz) t (járm t
tesz) t (játék t
interne) t (jog t
á) tsz (orzás t|s
bará) t (szeren t
bi) t (széles t
spor) t (sér t
sej) t (szinte t
cson) t (sová t
direk) t (szorza t
ese) t (szétvá t
gondola) t (szond t
karsz) t (járat t
klariné) t (sz t
látsza) t (jóin t
metsze) t (sor t
mosza) t (sejt t
sej) t (sűrű t
vilaje) t (szék t
csopor) t (sorsol t
saj) t (salát t
kama) t (jövedel t
tisztele) t (jeggy t
épüle) t (szobrá t
eszkor) t (szolgál t
foszfá) t (jövedel t
gráni) t (szob t

.group tj
C) tj c
@@ -2170,7 +2626,8 @@ közérze) tj (aví tj
ké) tj (átszm tj
szavaza) tj (og tj
szavaza) tj (eg tj
vona) tj (eggy tj
vona) tj (eggy tj
billentyűze) tj (áté tj

.group ts
ts (_S2 tS //general rule with word end of ts letters
@@ -2410,6 +2867,8 @@ keresz) tt (űz t:
bennszülö) tt (jelmez t
krike) tt (ját t
szé) tt (rancsír t:
elláto) tt (jog t
felnő) tt (játszó t

.group ty
mindszen) ty t|i
@@ -2513,7 +2972,7 @@ lefeje) z (ték s
_ré) zs (ó zS
ő) zs (uta zS
_vá) zs (or zS
szára) zs (ág SS
szára) zs (ág SS
_nehé) zs (ely zS
_) zürich tsyR2i C
tí) zsz (er s:
@@ -2657,12 +3116,34 @@ csatlako) z (tok s
_tí) z (shill z
topá) z z
dör) zsz (ör Z|z
raj) z (sa z
tí) z (seb z
raj) z (sa z
tí) z (seb z
egészségkö) z (pont s
leme) z (slá z
raj) z (sor z
ri) zs (zab Z
leme) z (slá z
raj) z (sor z
ri) zs (zab Z
vá) z (sér z
ví) z z
leme) z z
eszkö) z z
gá) z (zsám z
gá) z (seb z
gá) z (ster z
gá) z (súr z
gá) z (sűr z
gá) z (süt z
gá) z (sát z
halma) z z
gá) z (síp z
masszá) zs (zuh Z
ő) z (salát z
ő) z (sírá z
raj) z (skic z
raj) z (st z
ré) z (zsan z
tí) z (sch z
ví) z (zsák z
ví) z (zsong z

.group
$ dolla:R2

+ 30
- 2
dictsource/nl_list View File

@@ -156,7 +156,7 @@ de d@
het h@t $only
een @n $only
ən @-n // char.replacement for 'n
ət t // char.replacement for 't
ət @t // char.replacement for 't
een e:n $atend
(de een) d@||e:n
(het een) h@t||e:n
@@ -399,9 +399,15 @@ zegen $alt
trokken $alt
zeten $alt

// -emen is not a stressed ending
boezemen $alt
ademen $alt
bliksemen $alt
wasemen $alt

// words where -er is not a stressed verb ending


diller $alt // bediller
schepper $alt // opschepper
steller $alt // aansteller
@@ -875,7 +881,7 @@ waaier $alt
wakker $alt
wapper $alt
water $alt
wedijver $alt
wedijver v#Ed'EIv@r $alt
weelder $alt
wegwijzer $alt
weiger $alt
@@ -1622,6 +1628,7 @@ aldus Ald'8s
alles Al@s
amino $1
amnestie $3
antenne $2 $alt2
april a:pr'Il
armand _^_FR
augustus VUQ'8st8s
@@ -1665,6 +1672,7 @@ crèches krES@s
damascering damA;s'e:rIN
december $2
desillusie dEsIlyzi
desondanks dEsOnd'ANks
detail de:t'Aj
dieet $2
diesel diz@l
@@ -1681,8 +1689,10 @@ embouchuur A~buS'yr // embouchure
enorm $2
enquête A~k'Et@ $alt2
erosie e:r'o:zi
evangelie e:vANQ'e:li
eucharistie $4
explosie $2
extern Ekst'Ern
februari fe:bry'a:ri
fiche fiS@
franchise frA'Si:z@
@@ -1692,6 +1702,9 @@ gelig Qe:l@Q
gouache Qu'AS
gefrituurd $3
hysterie hIstI:r'i
ideaal ide:j'a:l
ideale ide:j'a:l@
immens Im'Ens
impregnering Impr,EQn'e:IN
inductie $2
informatieve InfOrma:t'iv@
@@ -1702,11 +1715,13 @@ ingevolge $3
ingrediënt $4
ingenieur Inzj@nj'Y:r
informatie $3
intern Int'Ern
invasie $2
januari $3
jury Zyri
kadaster $2
kleinzerig klEInz'e:r@Q
kredietwaardig $3
leesregel le:sre:Q@l
levendig le:v@nd@Q
lunch l8nS
@@ -1742,7 +1757,10 @@ miszit $1
mysterie mIst'I:ri
nabij nab'EI
new nyU
noordelijk no:rd@l@k
november $2
oceaan o:se:j'a:n
oceanen o:se:j'a:n@n
oktober $2
oliesel o:lis@l
omver o:mv'Er
@@ -1753,10 +1771,12 @@ ongemakkelijk $3
//ongelukkig $3
ongerieflijk $3
//ongrondwettig $3
oostelijk o:st@l@k
partijvoorzitters $2
periferie pI:rifI:r'i
perron $2
pistache pist'AS
premie $1
privilege privil'e:Z@ $alt2
proces $2
projectielen $3
@@ -1777,6 +1797,7 @@ sms'jes EsEm'Es_j@s
spektakel $2
sportief $2
sportieve $2
stream stri:m
tegennatuur $4
tralie $1
travestie $3
@@ -1784,6 +1805,7 @@ verderop $3
vergezicht vErQ@zIxt
verre vEr@
verrekijker vEr@kEIk@r
versa vErs'a:
verste vErst@
verte vErt@
volledig $2
@@ -1796,8 +1818,13 @@ wanluidend $2
wanschapen $2
wantrouwend $2
weliswaar v#ElIsw'a:r
werelden v#I:r@ld@n
werktuigelijk $2
westelijk v#Est@l@k
zeeën ze:@n
ziekenhuisbevalling zi:k@nhWysb@vAlIN
zuiden zWyd@n
zuidelijk zWyd@l@k



@@ -1834,6 +1861,7 @@ google gu:g@l
alexandrië $3
Benin be:n'in
canada kAna:da:
Genua Qe:nyv#a:
Kinshasa kInS'a:sa:
Nairobi nAjr'o:bi
Napel $alt

+ 42
- 5
dictsource/nl_rules View File

@@ -40,6 +40,7 @@
_) adres (@P5 a:dr'Es
_) af (C@P2 'Af
_) affich %AfiS
_) af (rika a:f
age (_ 'a:Z@
ages (_S1 s
age (_$w_alt a:Q@
@@ -55,6 +56,7 @@
@) ant (e_ 'Ant
@) ant (en_ 'Ant
@) ant (er_ 'Ant
ao (_ 'VU // cacao
@) ares (_ a:r'Es
aris (_ 'a:rIs
arissen (_ 'a:rIs@n
@@ -211,6 +213,7 @@
el) e (_+S1qd @
er) e (_+S1qd @
ig) e (_+S1qdm @
lijk) e (_S1m @

ea (_ 'e:a:
eau 'o: //words with French origin
@@ -218,6 +221,7 @@
@) ee (_ 'e:
@) ee (X_ 'e:
@) ee (r_ 'I
h) ee (r_ I:
@) ee (rt_ 'I
@) ee (rd_ 'I
@) ee (rde_ 'I
@@ -244,8 +248,12 @@

@) elen (_ 'e:l@n
@) el (en_$p_alt2 @L
@) elds (_ @lts
&) elijks @l@ks
&) em (_ @m
&) emen (_$w_alt @m@n
waarn) em e:m
&) e (ment @
eden (_ e:d@n // ??
@@ -285,7 +293,9 @@
&) en (_S2qd @n
KAC) en (_S2e @n // flag 'e' means double the previous vowel
KAj) en (_S2 @n
KAx) en (_S2 @n
and) en (_S2 @n
ie) en (_S2 @n
el) en (_+S2qd @n
er) en (_+S2qd @n

@@ -313,7 +323,7 @@
@) er (ingen_ 'I:r
&) er (_$p_alt =@r
&) er (e_$p_alt =@r
&) er (en_$p_alt =@r
&) er (en_$p_alt =@r // where 'eren' is not a verb ending
&) er (t_$p_alt =@r
&) er (d_$p_alt =@r
&) er (de_$p_alt =@r
@@ -330,7 +340,6 @@
_) er (@P2 Er
&) er (_ @r
&) ere (_ @r@
&) er (en_$p_alt @r // where 'eren' is not a verb ending
eren (_ 'I:r@n
erend (_ 'I:r@nd
@) eres (_S4qd @r'Es
@@ -388,6 +397,8 @@
gg Q
s) g x
_) gast (@ Q'Ast
_) gasten (@P6 Q'Ast@n
g (é Z
g (ee_ Z
_lo) g (eer Z
@@ -412,6 +423,7 @@
gener (aal Q,e:n@r
_) gelijk Q@lEIk
_) gemeente (@P8 Q@m'e:nt@
genre ZA~r@
_) ge (lC QE
_) ge (rC QE
_) ge (lenL02 Qe:
@@ -430,9 +442,13 @@
h h
C) h (K

C) hand (_S4 h'Ant
_) handicap hEndikEp
_) her (@P3 hEr
_) her (der hEr
_) her (ds hEr
_) her (en hI:r
_) herfst (@P6 h'Erfst
_) herinn h%ErIn // herinneren
_) hersen h'Ers@n
&) heid (_S4 hEIt
@@ -487,6 +503,7 @@
CAss) ie (_ =i
@) ig (_S2dq =@Q
@) ige (_S1m @
_) ige (_ @Q@ // when a prefix is removed, eg "herfstige"
@) igen (_ =@Q@n
@) iger (_ =@Q@r
@) igere (_ =@Q@r@
@@ -501,12 +518,14 @@
&) iko (_ =iko:
fam) i (lie 'i
_) in (C@P2 'In
_) ing (eC_ IN // bewerkingen
_) in (do In
_) in (forma In
ine (_ 'in@
ines (_ 'in@s
_) informatie (@P10 InfOrm'a:tsi
_) inn (@P2 'I // ?? inneren
_) inn (er 'In // ?? inneren
_) inn (ig In
_) inter Int@r
io (nage iO
io (de_ i'o:
@@ -518,10 +537,12 @@
@) isme (_ 'Ism@
@) ist (_ 'Ist
@) isten (_ 'Ist@n
Ar) ia (_ =ia:
Ar) ium (_ =i8m

.group j
j j
_) jaar (@P4 j'a:r
jaar (lijk ja:r
jou (rna Zu
@@ -539,13 +560,13 @@
kokkerel kOk@r'El
_) koning k'o:nIN // in compounds
_) koningin ko:nIQ'In
_) krediet (@P7 kr@d'it


.group l
l l
l) l
&) lijk (_S4 l@k
&) lijke (_S5 l@k@
&) lijken (_S6 l@k@n
&) lijker (_S6 l@k@r
&) lijkere (_S7 l@k@r@
@@ -557,6 +578,9 @@

&) laan (_S4 la:n
_) lange (@P5 laN@
_) land (@P4 l'And
_) land (e l'And
_) lente (@P5 l'Ent@
_) liefdes (@P7 l'ifd@s
detai) ll
@) loog (_ lo:x
@@ -575,6 +599,7 @@
_) mee (rC mI:
menu (_ m@ny
_) mi (cro mi
_) milieu mIlj'Y:
_) mi (s@ m%I
_) mis (anC miz
_) mis (commP3 m'Is
@@ -659,6 +684,7 @@
_) op (enen+ 'o:p
_) openings (P8 'o:p@nINs
_) op (era 'o:p
_) opper Op@r
_) op (tion Op
os (_ Os
ou (che_ u
@@ -760,6 +786,7 @@
sch sx
sch (_ s
sch (e_ s
sch (er_ s
_) sch (n S
_) sh S
sh (K S
@@ -825,6 +852,7 @@
_) trans (@P5 tr,Ans

.group te
_) tege (lijk t@Q@
_) tegen (P5 t'e:Q@n
_) terug (P5 t@r'8x
_) te (gelijkP2 t@
@@ -871,6 +899,7 @@
v v
s) v f

_) vakantie (@P8 va:k'Antsi
_) van (@P3 v%An
_) vanzelf (@P7 vAnz,Elf
_) vang vAN
@@ -905,9 +934,14 @@
_) weg (@P3 v#'EQ
_) weg (en v#e:Q
_) weg (e_ v#e:Q // bewegelijk
_) weg (ing v#e:Q // bewegingen
_) wereld (@P6 v#'I:r@lt
_) werk (@P4 v#'Erk
_) werk (el v#'Erk
_) werk (ing v#'Erk
_) west (@P4 v#Est
_) wets (@P4 v#'Ets
_) winter (@P6 v#'Int@r
_) woon (@P4 v#'o:n
_) wr (@ vr

@@ -928,9 +962,12 @@
z (z
s) z

_) zee (@P3 z'e:
_) zeeuw zeU
zele (_S4 ze:l@ // common suffix for cities.
@) zelf (_S4 s'Elf
_) zoge (@P4 z,o:Q@
_) zomer (@P5 z'o:m@r
_) zuid (@P4 zWyt



+ 1
- 1
dictsource/sl_list View File

@@ -91,7 +91,7 @@ _cyr tsiR'i:litSni
@ 'a:fna
# l'e:stvitsa
$ d'o:laR
% Otst'o:tOw
% Otst'o:tkOw
& 'i:n
* zv'e:ditsa
+ plu:s

+ 10
- 5
dictsource/sw_list View File

@@ -25,8 +25,6 @@ y jai
z zedi




// numbers
_0 sif'uRi
_1 m'oJa
@@ -150,7 +148,7 @@ kwao $pause // by means of which
kwavyo $pause // by means of which
kwaye $pause // by means of which

kwa $u $brk // with
kwa $u // with
mwenye $u $brk // with
wenye $u $brk // with
yenye $u $brk // with
@@ -158,6 +156,8 @@ yenye $u $brk // with
chenye $u $brk // with
vyenye $u $brk // with
zenye $u $brk // with
malipo $unstressend



// conjunctions
@@ -178,12 +178,12 @@ ijapokuwa $pause // although
ingawa $pause // although
iwapo $pause // when
japo $pause
(juu ya) J,u:ja/ $pause // as for
(juu ya) J,u:ja $pause // as for
kama $u+ $pause // if,like
kisha $pause // moreover
kusudi $pause // in order to
kuwa $u $pause // that
(kwa kuwa) kwa||k,uwa/ $pause // becuse
(kwa kuwa) kwa||k,uwa $pause // becuse
kwamba $u $pause // that
lakini $pause // however
walakini $pause // however
@@ -195,5 +195,10 @@ wala $pause // either,neither
yaani $pause // i.e.


// exceptions

mantiki ma_|nt'iki $u1+
zanzibar $3




+ 16
- 15
dictsource/sw_rules View File

@@ -5,8 +5,7 @@

.group a
a a
aa a:

.group b
b b

@@ -20,8 +19,7 @@

.group e
e e
ee e:

.group f
f f

@@ -35,18 +33,20 @@

.group i
i i
ii i:

.group j
j J
j (w J

.group k
k k
K) k (@@ _|k
kh x

.group l
l l


.group m
m m
_) m m-
@@ -54,7 +54,7 @@
K) m (@@ _|m
K) m (C m-
K) m (b@@ _|m
K) m (v@@ _|m
K) m (v@ _|m
K) m (w@@ _|m

.group n
@@ -63,19 +63,19 @@
n (A n
n (@@ n
ny n^
n (ch n^
n (ch n-
n (j n^
ng' N
ng (' N
n (k N
_) n (k N-
_) n (k@@ N-
n (g N
K) n (g N-
_) n (g@@ N-

.group o
o o
oo o:

.group p
p p
@@ -99,15 +99,16 @@

.group u
u u
uu u:

.group v
v v

.group w
w w
j) w %u
ny) w %u
j) w %u
ny) w %u

.group x
x ks

+ 5
- 2
dictsource/ta_list View File

@@ -85,8 +85,8 @@ _; a:raIb||pul.l.i // ஆரைப் புள்ளி
_: mukka:l||pul.l.i // முக்கால் புள்ளி
_( id.V||piRaI // இட பிறை
_) vVlV||piRaI // வல பிறை
_[ id.V||sadUrVm // இட சதுரம்
_] vVlV||sadUrVm // வல சதுரம்
_[ id.VppVgVrVm // இடப்பகரம்
_] vVlVppVgVrVm // வலப்பகரம்.
_{ id.V||gVn.Vm // இட கணம்
_} vVlV||gVn.Vm // வல கணம்
< kuRaIvU // குறைவு
@@ -385,6 +385,8 @@ tamil தமிழ் $text
புசு $alt
புஸு $alt
பாதிக்காம $alt
பனியா $alt
பாம் $alt


// initial த as [d]
@@ -452,6 +454,7 @@ tamil தமிழ் $text
தாயம் $alt
திமு $alt
தாவா $alt
துருவா $alt


// initial ட

+ 125
- 10
dictsource/ta_rules View File

@@ -128,7 +128,7 @@
.L30 மெடல பிஷ ஃபிஷ

// endings after போர்ட (board)
.L31 ் ிங் ின ை ுக்க ில ும
.L31 ்_ ிங் ின ை ுக்க ில ும


// consonants
@@ -157,9 +157,7 @@
க் (_க k

//sort



_) க (ஃபார gV
_) க (ங்கபாடி gV
_) க (ங்கர gV
_) க (ங்கா gV
@@ -195,13 +193,16 @@
_) க (தியை gV
_) க (ந்தக gV
_) க (ந்தகிரி kV
_) க (ந்தக்கோட்ட kV
_) க (ந்தர்வ gV
_) கனக (ச்சித gVnVkV
_) க (னக்க gV
_) க (னத் gV
_) க (னபாடி gV
_) க (னப்ப gV
_) க (னம gV
_) க (னரக gV
_) கப (ார gVf
_) கப் (L04ா gVp
_) கப்ச (ிப் gVptS
_) க (ப்புன gV
@@ -253,6 +254,7 @@
_) க (ாந்தத் g
_) க (ாந்தப் g
_) க (ாந்தமா g
_) க (ாந்தர்வ g
_) க (ாந்தார g
_) க (ாந்தி g
_) க (ானங் g
@@ -265,6 +267,8 @@
க (ாரன k
_) க (ார்டன g
_) க (ார்டியன g
_) க (ால்ஃப் g
_) கால்ப் ga:lf
_) க (ிஃப்ட g
_) கிட (ார git.
_) க (ிடுகிடு g
@@ -331,6 +335,7 @@
_) கி (றித்த k
_) கி (றிஸ்டல k
_) கி (றிஸ்த k
_) கி (லேசியர g
_) க (ில்மா g
_) கி (ளப்_ k
_) கிளப்ப (ில kl.Vbb
@@ -342,6 +347,7 @@
_) கி (ளாL04ு k
_) கி (ளாL04ை k
_) கி (ளாமர g
_) கிளார்க் kl.a:rk
_) கி (ளாஸ்_ g
_) கி (ளாஸ்_மேட k
_) கிளாஸ்க (ோ gl.a:sg
@@ -372,7 +378,9 @@ _மன்மதக்) க (ுகை g
_) க (ுஜால g
_) க (ுடியாத்த g
_) க (ுடுகுடு g
_) க (ுணக் g
_) க (ுணங் g
_) க (ுணசாலி g
_) குணச (ித்திர gun.VtS
_) க (ுணசீல g
_) க (ுணசேகர g
@@ -429,11 +437,10 @@ _மன்மதக்) க (ுகை g
_) க (ுருகுல g
_) க (ுருக்கள g
_) க (ுருக்குல g
_) க (ுருக்ஷேத்திர g
_) க (ுருசாமி g
_) குருச (ேத்திர gurUs.
_) க (ுருஜி g
_) க (ுருதேவ g
_) க (ுருத்வார g
_) க (ுருநா g
_) க (ுருபகவான g
_) குருப (த்தினி gurupV
@@ -442,13 +449,16 @@ _மன்மதக்) க (ுகை g
_) குருப (ீட gurup
_) குருப (ூ gurup
_) க (ுருபூஜை g
_) க (ுருபோத g
_) குருப்பி (ரசாத gurupp
_) க (ுருப்பெயர g
_) க (ுருப்யோ g
_) க (ுருமார g
_) க (ுருமூர்த்தி g
_) க (ுருரா g
_) க (ுருவடி g
_) க (ுருவம்ச g
_) க (ுருவம்மா g
_) க (ுருவருள g
_) க (ுருவா g
_) க (ுருவாய g
@@ -460,7 +470,6 @@ _மன்மதக்) க (ுகை g
_) க (ுருவை g
_) க (ுருவோ g
_) க (ுருவோட g
_) க (ுருஷேத்திர g
_) கு (ரூப் g
_) க (ுலாப g
_) க (ுலாம g
@@ -486,6 +495,7 @@ _மன்மதக்) க (ுகை g
_) க (ெட்டிக்கனும k
_) க (ெட்டிக்கி k
_) க (ெட்டிரு k
_) க (ெட்டில k
_) க (ெத் g
_) க (ெரில்லா g
_) கெள (தம gaU
@@ -504,6 +514,8 @@ _மன்மதக்) க (ுகை g
_) க (ேமை g
_) க (ேம்ஸ g
_) கேரண்ட ge:rVn.t.V#
_) கேலக (்சி ge:lVk
_) க (ேலக்ஸி g
_) க (ேலரி g
_) க (ேலி g
_) க (ேஸ்_L26 g
@@ -584,6 +596,7 @@ _மன்மதக்) க (ுகை g
_) க் (ரீன g
_) க் (ரூப g
_) க் (ரௌண்ட g
_) க் (லேசியர g
_) க் (ளாமர g
_) க் (ளாஸ்_ g
_) க்வ (A kw
@@ -630,6 +643,8 @@ _தலைக்) க (ன gV
_தர்ம) க (ர்த kV
_குல்) க (ர்னி kV
விஸ்வ) க (ர்மா kV
உரை) க (ற் kV
_மைல்) க (ற் kV
_விண்) க (ற் kV
_லோ) க (ல kV
_மெடி) க (ல kV
@@ -644,6 +659,8 @@ _சித்திர) க (லா kV
_சூரிய) க (லா kV
_யூ) க (லிப்டஸ kV
_ஜீவ) க (லை kV
உரை) க (ல் kV
_மைல்) க (ல் kV
_காய) கல்ப kVlpV#
பஞ்ச) க (ல்யாண kV
_ரண) க (ள kV
@@ -690,6 +707,7 @@ _ஹன்L04ி) க (ா k
_கண்) க (ாணா k
_கர்ம) க (ாண்ட g
உத்திரா) க (ாண்ட k
அ) காத (மி ka:d.V
_ராம) க (ாதை k
இராம) க (ாதை k
_ஸ்ரீ) காந்த ka:ntV#
@@ -793,10 +811,12 @@ _மன்னர்) க (ுல k
_கை) க (ுலு k
_) குல்க (ந்த gulkV
_மெரு) க (ூட்ட g
_லா) க (ூர H
_தயை) க (ூர k
_தயவு) க (ூர k
அருள்) க (ூர k
_நினைவு) க (ூர k
_மு) க (ூர்த H
_குறை) க (ூற k
அறை) க (ூவ k
_மார்) கெட் ket.
@@ -877,6 +897,7 @@ _தேவா) க்க (ினை gg
அயோ) க்க (ிய gg
ஆரோ) க்க (ிய gg
வைரா) க்க (ிய gg
_மூல) க்கி (ர gg
அநு) க்கி (ர gg
அனு) க்கி (ர gg
_கர்ப்ப) க்கி (ர gg
@@ -940,6 +961,7 @@ _துப்பாக்கி) க்க (ுண்ட gg
என்சை) க்லோப (ீடியா klo:p
_சு) க் (ள k
_ஷு) க் (ள k
_து) க்ளக் kl.Vk
க் (ஸ k
_எ) க் (ஸாம g
_மெ) க்ஸிக (ோ ksik
@@ -967,8 +989,8 @@ _துப்பாக்கி) க்க (ுண்ட gg
ஞ்) ச dZV
ஞ்) ச (B dZ
ச் (_N tS
ச்_) ச tSV // previous word ends in ச்
ச்_) ச (B tS
ச் (_ச tS
ச்_) ச (++ :V# // previous word ends in ச்
_) சாம்ப (ியன tSa:mp

//sort
@@ -998,6 +1020,7 @@ _துப்பாக்கி) க்க (ுண்ட gg
_) ச (த்ரபதி tSV
_) ச (த்ரு tSV
ச (ந்தர tSV
_வ) ச (ந்தர sV
_) ச (ந்தர்ப sV
அ) ச (ந்தர்ப sV
ச (ந்திர tSV
@@ -1018,6 +1041,7 @@ _மீனலோ) ச (னி tSV
_) ச (ப்பி tSV
_) ச (ப்பு tSV
_) ச (ப்பெ tSV
_) ச (ம்பல்பூர tSV
_) சம்ப (ாரன tSVmp
_நா) ச (ர zV
_ரே) ச (ர zV
@@ -1081,15 +1105,19 @@ _தணிகா) ச (ல tSV
விப) ச (ார tS
_கிரL06) ச (ார tS
_குணா) ச (ார tS
_பிரிவுப) ச (ார tS
_விருந்துப) ச (ார tS
ராஜோப) ச (ார tS
ஆ) ச (ார_ tS
ஆ) ச (ாரங்கள tS
_வி) ச (ாரங்கள tS
ஆ) ச (ாரத் tS
_வி) ச (ாரத்த tS
ஆ) ச (ாரப்பட tS
ஆ) ச (ாரம tS
_வி) ச (ாரம tS
_சிவா) ச (ாரி tS
_சுகா) ச (ாரி tS
_ரங்கா) ச (ாரி tS
_வரதா) ச (ாரி tS
_வேதா) ச (ாரி tS
@@ -1120,6 +1148,7 @@ _மத்வா) ச (ாரி tS
_) ச (ார்ஜை tS
_மொ) ச (ார்ட z
_) ச (ார்மினார tS
ஆ) ச (ார்ய tS
_) ச (ார்லஸ tS
_) ச (ார்லி tS
_) ச (ாலக்குடி tS
@@ -1172,6 +1201,7 @@ _மத்வா) ச (ாரி tS
_மலே) ச (ிய s.
இந்தோனே) ச (ிய s.
_) ச (ியர்ஸ tS
_) சி (யாம s.
_பக்தி_) சிரத் (தை srVd
_) சிரத்த (ைL27 srVdd
சி (ரம s
@@ -1220,6 +1250,7 @@ L28ரங்க) ச (ீப z
_கபாலீ) சு (வ s
_ஜலகண்டே) சு (வ s
அர்த்தனாரீ) சு (வ s
_) சு (வமேத s
_சனீ) சு (வர s
ராஜே) சு (வர s
_மங்களே) சு (வர s
@@ -1289,6 +1320,7 @@ _வெனி) ச (ுவேல z
_) ச (ேஞ்ச tS
_) ச (ேட்டன tS
_) ச (ேட்டர்ஜி tS
_குரு) ச (ேத்திர s.
_) ச (ேனல tS
_) ச (ேரி tS
_தல) ச (ேரி tS
@@ -1317,6 +1349,7 @@ _வெனி) ச (ுவேல z
_) சௌப (ாத்தி tSaUp
_) ச (ௌபே tS
_) ச (ௌஹான tS
_ந) ச் (னு tS
_கா) ச்மூச tSmu:tSV#
//endsort

@@ -1327,6 +1360,7 @@ _வெனி) ச (ுவேல z
ஜ (B dZ
//sort
_கெ) ஜ (ட் zV
_ட) ஜ (ன zV
_டின்) ஜ (ர tSV
_) ஜ (ர்தாரி zV
_க) ஜ (லா zV
@@ -1337,12 +1371,14 @@ _வெனி) ச (ுவேல z
_) ஜ (ாக்கீர z
_ரம்) ஜ (ான z
_நி) ஜ (ாம z
_) ஜ (ாம்பிய z
_ப) ஜ (ார z
அ) ஜ (ாருதீன z
_நா) ஜ (ி z
_) ஜிப்(_ zip
_) ஜ (ிப்ப z
_) ஜ (ிப்பா dZ
_) ஜ (ிம்பாப்வே z
_) ஜ (ியா_ z
_) ஜ (ியாவ z
_) ஜ (ீனத் z
@@ -1351,6 +1387,7 @@ _வெனி) ச (ுவேல z
_) ஜ (ுல்ஃபி z
_) ஜ (ுல்பி z
_) ஜு (வால dZ
_) ஜ (ூலு z
_) ஜ (ெனித் z
_) ஜ (ெராக்ஸ z
//endsort
@@ -1380,6 +1417,7 @@ _வெனி) ச (ுவேல z

//sort
_டே) ட t.V#
_மால்) ட t.V#
_பேண்) ட t.V#
_வால்) ட t.V#
_கமெண்) ட t.V#
@@ -1641,6 +1679,7 @@ _லான்_) ட (ென்னிஸ t.
_) டோர்னமெண்ட t.o:rnVmen.t.V#
_) ட (ோலிவுட் t.
_லே) ட் t.
_ஹி) ட் t.
@மெண்) ட் t. // -ment
_பேண்) ட் t.
_ஹெல்மெ) ட் t.
@@ -1653,9 +1692,13 @@ _டோலிவு) ட்ட d.d.V#
_பாலிவு) ட்ட d.d.V#
_மாலிவு) ட்ட d.d.V#
_ஹாலிவு) ட்ட d.d.V#
_ரெ) ட்ட (ிகள d.d.
_ரெ) ட்ட (ிய d.d.
_ஷெ) ட்ட (ில d.d.
இ) ட்ட (ிலி d.d.
_ஜி) ட்ட (ு d.d.
_ஷெ) ட்ட (ு d.d.
_ஷெ) ட்ட (ை d.d.
அப்பாயிண்) ட்மெண்ட t.men.t.V#
_) ட் (யூசன t.
_) ட் (யூன t.
@@ -1696,6 +1739,7 @@ _ஹாலிவு) ட்ட d.d.V#
எண்) ட் (ரி t.
_) ட்ரிக (ர t.riggV
_) ட்ரிக் t.rik
_ஹா) ட்ரிக் t.rik
_) ட்ரிக்க (ர t.riggV
_) ட் (ரிங்_ t.
_நியூ) ட் (ரின t.
@@ -1778,6 +1822,8 @@ _நடுரோ) ட் (ல t.
_) த (கன dV
_) த (கி dV
_) த (க்க்ஷிண dV
_) த (க்ஷக dV
_) த (க்ஷசீல dV
_) த (க்ஷன dV
_) த (க்ஷிண dV
_) த (க்ஷிணா dV
@@ -1834,6 +1880,7 @@ _நடுரோ) ட் (ல t.
_) தத்த (ியா dVdd
_) த (னகோடி dV
_) த (னசேகரன dV
_) த (னத்த dV
_) த (னன்ஜெயன dV
_) த (னபால dV
_) த (னராச dV
@@ -1841,7 +1888,9 @@ _நடுரோ) ட் (ல t.
_) த (னலக்ஷ்மி dV
_) த (னலட்சுமி dV
_) த (னவந்த dV
_) த (னாதிகார dV
_) த (னுச dV
_) த (னுர dV
_) த (னுஷ dV
_) த (ன்மந்திரி dV
_) த (ன்ய dV
@@ -2216,6 +2265,7 @@ _ஸ்வர்ணல) த (ா t
_முல்) த (ான t
_சாந்) த (ானு tV#
_சி) த (ார t
_நயன்) த (ாரா t
_சரி) த (ாவ t
_ஹரி) த (ாஸ்_ d
_சும) த (ி t
@@ -2489,9 +2539,11 @@ _சி) த்ரலேக (ா trVle:k
_) ப (ட்டக்ஸ bV
_) ப (ட்டன bV
_) ப (ட்டன_ pV
_) ப (ட்டனப்பாக்க pV
_) ப (ட்டாசாரி bV
_) ப (தில bV
_) பத்த (ிரகாளி bVdd
_) பத்த (ிரபாகு bVdd
_) பத்திரப் (_ bVttirVp
_) பத்திரப் (_பதி pVttirVp
_) ப (த்திரப்பட bV
@@ -2499,6 +2551,7 @@ _சி) த்ரலேக (ா trVle:k
_) பத்த (ிரி_ bVdd
_) பத்த (ிரிக்கு bVdd
_) பத்த (ிரிய bVdd
_) ப (த்ரபாகு bV
_) ப (த்ரி bV
_) பத் (ரிக்க pVt
_சொந்த_) ப (ந்த bV
@@ -2520,6 +2573,8 @@ _சொந்த_) ப (ந்த bV
_) ப (னாரச bV
_) ப (னாரஸ bV
_) ப (னியன bV
_) ப (னியாக்கள bV
_) ப (னியாவ bV
_) ப (ன்சல bV
_) ப (ன்னாரி bV
_டீயும்_) ப (ன்னும்_ bV
@@ -2588,6 +2643,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (லத்தின bV
_) ப (லத்தினா bV
_) ப (லத்தினுட bV
_) ப (லத்திற்க bV
_) ப (லத்தில bV
_) ப (லத்துக் bV
_) ப (லத்துச் bV
@@ -2601,6 +2657,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (லப்பத்த bV
_) ப (லப்பம bV
_) ப (லப்பரீட்சை bV
_) பலப்பி (ரயோ bVlVpp
_) ப (லமணைத்த bV
_) ப (லமற்ற bV
_) ப (லமாகC் bV
@@ -2696,6 +2753,7 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (ாசு b
_) பாசுப (த pa:sUpV
_) ப (ாசுர p
_) பாட (னி ba:t.V
_டெட்_) ப (ாடி b
_) ப (ாடி_பில்டர b
_) ப (ாடி_பில்டிங் b
@@ -2711,6 +2769,7 @@ _டெட்_) ப (ாடி b
_) ப (ாட்டிலுடன b
_) ப (ாட்டிலை b
_) ப (ாட்டில்கள b
_) பாட்மிண்ட (ன ba:d.min.t.V
_) ப (ாணங் b
_) ப (ாணமு b
_) ப (ாணர b
@@ -2750,6 +2809,8 @@ _டெட்_) ப (ாடி b
_) ப (ாதிப்படையுமெ b
_) ப (ாதிப்படைவ b
_) ப (ாதிப்பதா b
_) ப (ாதிப்பதுண்ட b
_) ப (ாதிப்பதும b
_) ப (ாதிப்பதை b
_) ப (ாதிப்பவை b
_) ப (ாதிப்பாகி b
@@ -2765,12 +2826,15 @@ _டெட்_) ப (ாடி b
_) ப (ாதிப்புண்ட b
_) ப (ாதிப்பும b
_) ப (ாதிப்புள்ள b
_) ப (ாதிப்பென b
_) ப (ாதிப்பேர p
_) ப (ாதிப்பை b
_) ப (ாதிப்போ b
_) பாத (ிமா fa:t
_) ப (ாதுஷா b
_) ப (ாத்திமா f
_) பாத்த (ியதை ba:dd
_) பாத்த (ியப் ba:dd
_) பாத்த (ியம்_ ba:dd
_) ப (ாத்யதை b
_) ப (ாத்ரூம b
@@ -2791,7 +2855,11 @@ _டெட்_) ப (ாடி b
_டைம்_) ப (ாம b
_) ப (ாமாவ b
_) ப (ாமினி b
_) ப (ாமிரு b
_) ப (ாமிலி f
_) ப (ாமில்ல b
_) ப (ாமை b
_) ப (ாம்கள b
_) ப (ாம்பே b
_ஆடு_) ப (ாம்பே p
_விளையாடு_) ப (ாம்பே p
@@ -2838,6 +2906,9 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ாலாம்பாள b
_) ப (ாலாம்பிக b
_) ப (ாலாவ b
_) ப (ாலாவி_ p
_) ப (ாலாவிய p
_) ப (ாலித்_தீவ b
_) ப (ாலின் p
_) ப (ாலியத்த b
_) ப (ாலிவுட் b
@@ -2868,6 +2939,7 @@ _விளையாடு_) ப (ாம்பே p
முகத்திலிருந்து_) ப (ாவ b
_) ப (ாவனா b
_) ப (ாவனை b
_) ப (ாவமும்_நானே b
_) ப (ாவிக்கப்பட b
_) ப (ாவிக்கல b
_) ப (ாவிக்கவில்ல b
@@ -2975,6 +3047,8 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரதேஷ p
_) பி (ரதோஷ p
_) பி (ரத்தியேக p
_) பிரத் (யக்ஷ prVt
_) பிரத் (யட்ச prVt
_) பிரத் (யேக prVt
_) பி (ரனாப p
_) பி (ரப p
@@ -3029,6 +3103,7 @@ _விளையாடு_) ப (ாம்பே p
_) பிராஞ்ச bra:n^tS
_) பி (ராடாக f
_) பி (ராட்_ f
_) பி (ராட்டஸ்ட p
_) பி (ராட்டிஸ்லாவ b
_) பி (ராட்வே b
_) பி (ராண_ p
@@ -3078,6 +3153,7 @@ _விளையாடு_) ப (ாம்பே p
_) பிரித (ிவ prit
_) ப (ிரித்தானி b
_) பி (ரித்தானி b
_) பி (ரின்L04ிபல p
_) பிரின்சிப (ால prinsip
_) பி (ரிமிய p
_) பி (ரியங்கள p
@@ -3118,6 +3194,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரே p
_) பி (ரேக்க b
_) பிரேச (ில bre:z
_) பி (ரேயில b
_) பி (ரைல b
_) பிரைவேட praIve:t.V#
_) பி (ரோகிதர p
@@ -3139,6 +3216,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ில்லி b
_) ப (ில்லு b
_) ப (ில்லை b
_) பி (ளவர f
_) பி (ளவுஸ b
_) பி (ளஸ p
_) பி (ளஸ்_ p
@@ -3146,7 +3224,8 @@ _விளையாடு_) ப (ாம்பே p
_) பிளாக் bla:k
_) பி (ளாட்பார p
_) பிளாப் fl.a:p
_) பி (ளாஸ்க் f // flask
_) பி (ளாஷ f
_) பி (ளாஸ்க f // flask
_) பி (ளீஸ p
_) பிள (ைட் fl.
_) பி (ளௌஸ b
@@ -3222,6 +3301,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) புத்த (ம்_புதிய puttV
_) புத்த (ம்_புது puttV
_) புத்த (ரிசி puttV
_) புத்த (ள puttV
_) புத்த (ழக puttV
_) ப (ுத்திக் b
_) ப (ுத்திசாலி b
@@ -3234,6 +3314,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) பு (ருனாய b
_) புரூப pru:fV#
_) புரொப (சர profV
_) புரொப (ஸர profV
_) புரொபொ (சர profV
_) பு (ரோகித p
_) ப (ுரோக்கர b
@@ -3244,6 +3325,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) பு (ரௌச b
_) ப (ுல்_L15 f
_) புல்க (ா fulk
_) புல்க (ான pulg
_) ப (ுல்டோசர b
_) ப (ுல்லட் b
_) ப (ுல்லா_ f
@@ -3336,6 +3418,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ேகத் b
_) ப (ேகம b
_) ப (ேக்கரி b
_) ப (ேக்கிங்_சோடா b
_) ப (ேக்டர f
_) ப (ேங்க் b
_) ப (ேச்சலர b
@@ -3390,6 +3473,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ொம்மனாட்டி p
_) ப (ொம்மல b
_) ப (ொம்மை b
_) ப (ொலிவிய b
_) ப (ோஃபர்ஸ b
_) ப (ோஃபோர் b
_) ப (ோக_L13 b
@@ -3510,8 +3594,11 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப்ரோட (ான pro:t
_) ப் (ரௌச b
_) ப் (ரௌன b
_) ப் (ளவர f
_) ப் (ளவுஸ b
_) ப்ளாப் fl.a:p
_) ப் (ளாஷ f
_) ப் (ளாஸ்க f
_) ப் (ளூஸ b
_) ப் (ளோரிடா f
_) ப் (ளௌஸ b
@@ -3524,17 +3611,21 @@ _பெனசீர்_) ப (ுட்டோ b
நடை) ப pV#
_கேம்) ப pV#
_பிரதீ) ப pV#
அஷ்ர) ப fV#
ஒலிம்) ப pV#
சங்கல்) ப pV#
_சொல்) ப pV#
_நிலை) ப pV#
_பயன்) ப pV#
_விகல்) ப pV#
_ஸ்டம்) ப pV#
அடால்) ப fV#
அஷ்ரா) ப fV#
_ஒL10ி) ப pV#
_செயல்) ப pV#
_முஷார) ப fV#
_ருடால்) ப fV#
_ஸ்டாம்) ப pV#
_ஷரீ) ப (+ fV#
_ஷெரீ) ப (+ fV#
_ஸ்தா) ப (+ bV#
@@ -3561,6 +3652,7 @@ _விரகதா) ப (+ bV#
தென்) ப (குதி pV
அக்கம்) ப (க்க bV
ப (க்கK pV
_தா) ப (க்கணல bV
பரம) ப (க்த bV
ராம) ப (க்த bV
_தா) ப (ங்கள bV
@@ -3676,6 +3768,7 @@ _ஜெனி) ப (ர fV
_பக்கப்) ப (ல bV
ஆன்ம) ப (ல bV
படைப்) ப (ல bV
_பிரின்L04ி) ப (ல p
_முனிசி) ப (ல pV
ஆயுதப்) ப (ல bV
_சம) ப (லங்கள bV
@@ -3694,6 +3787,7 @@ _முனிசி) ப (ல pV
த) ப (ஸ bV
_வா) ப (ஸ pV
ஆக்டோ) ப (ஸ pV
_ப்ரொ) ப (ஸர fV
_தீ) ப (ா p
_கலி) ப (ா f
_கலீ) ப (ா f
@@ -3766,6 +3860,7 @@ _வெளிப்) ப (ாக b
_) பாபவிமோசன pa:bVvimo:tSV
_சாயி) பாப (ா ba:b
_சாய்) பாப (ா ba:b
அலி) பாப (ா ba:b
அலை) ப (ாய p
அ) பாயிண்ட்மெண்ட pa:jin.t.ment.V#
அல்) ப (ாயு p
@@ -3774,6 +3869,7 @@ _வெளிப்) ப (ாக b
எதிர்) ப (ார p
_பிளாட்) ப (ார f
_யுக) ப (ாரதி b
_டி) பார்ட்மெண்ட pa:rt.men.t.V#
இன்) ப (ார்ம f
_யூனி) ப (ார்ம f
அ) பார்மெண்ட pa:rment.V#
@@ -3859,6 +3955,7 @@ _கன்னா) ப (ின்னா p
_மா) ப (ியா f
_கன்) பி (யுச f
_பெர்) பி (யூம f
_கடற்) பி (ர p
_வரப்) பி (ரL04ாத p
_ஞான) பிரக (ா prVk
_ஞானப்) பிரக (ா prVk
@@ -3880,6 +3977,7 @@ _ஞானப்) பிரக (ா prVk
_சொற்) பி (ரயோக p
L03ந்தப்) பி (ரளய p
_சொற்) பி (ரவாக p
உட்) பி (ரவேச p
எக்ஸ்) பிர (ஸ pre
ஆ) பி (ரஹாம b
பயப்) பி (ராந்தி b
@@ -3915,6 +4013,7 @@ _ஷண்முக) பி (ரிய p
ஆண்) ப (ிள்ளை p
பெண்) ப (ிள்ளை p
அச்சா) ப (ீ f
_தபாலா) ப (ீ f
_ர) பீக் fi:k
உப) ப (ீட p
விக்கி) ப (ீடியா p
@@ -3940,6 +4039,7 @@ _ஷண்முக) பி (ரிய p
_மர) ப (ுரிமை b
இன்) ப (ுற b
_துன்) ப (ுற b
_நம்) ப (ுற b
ப (ுறK p
_பா) ப (ுலர p
_) பு (ளோரன்ஸ f
@@ -3961,6 +4061,7 @@ _கோலாலம்) ப (ூர p
_வட) ப (ெண்ணை p
_தென்) ப (ெண்ணை p
_கம்) ப (ெனி p
_மறு) ப (ெயர p
இடம்) ப (ெயர p
_புலம்) ப (ெயர p
மொழி) ப (ெயர் p
@@ -4088,9 +4189,11 @@ _மைக்ரோசா) ப் (ட f
_ச) ப்த (மிய ptV
_ச) ப் (தரிஷி p
_ச) ப் (தஸ்வர p
_லு) ப் (தான f
_ஹி) ப்னாட (ிச pna:t.
கர்) ப்ப bbV#
_நவா) ப்ப bbV#
_நகர்) ப்ப ppV#
_ராமசு) ப்ப bbV#
L03) ப்ப (ங்களா bbV
L03) ப்ப (தில bbV
@@ -4132,6 +4235,7 @@ _யாதவ) ப்பி (ரகாச pp
_வெளி) ப்பி (ரகார pp
அதிக) ப்பி (ரசங்க pp
L03) ப்பிரச (ார pprVtS
_மலை) ப்பி (ரதேச pp
_வன) ப்பி (ரதேச pp
_காட்டு) ப்பி (ரதேச pp
_நில) ப்பி (ரபு pp
@@ -4174,12 +4278,14 @@ _சந்தேக) ப்ப (ுத்தி bb
_யூ) ப்ரட (ீஸ frVt.
_சு) ப் (ரியா p
_ஸ்ரீ) ப் (ரியா p
அ) ப் (ரீதி f
_சு) ப் (ரீம p
_) ப் (ரீயா f
_கம்) ப் (ரெஸ p
இம்) ப் (ரெஸ p
_) ப் (லெட்சர f
_மா) ப் (ள p
_ம) ப் (ளர f
ஏரோ) ப் (ளேன p
_) ப் (ளோரன்ஸ f
ப் (ஸ p
@@ -4298,6 +4404,7 @@ _சந்தேக) ப்ப (ுத்தி bb
வ (B v
_) வி (யா v
வி (யூக v
இண்டர்) வி (யூ v


.group ஶ
@@ -4369,6 +4476,13 @@ _சந்தேக) ப்ப (ுத்தி bb
இ (ரவைகள
இ (ரவையை
இ (ராக
இ (ராக்_ i
இ (ராக்_கால
இ (ராக்கிட i
இ (ராக்கின i
இ (ராக்கில i
இ (ராக்கு i
இ (ராக்கை i
இ (ராச
இ (ராஜ
இராஞ்ச ra:n^tSV#
@@ -4407,6 +4521,7 @@ _சந்தேக) ப்ப (ுத்தி bb
இ (லவங்க
இ (லவங்காய i
இ (லாகவ
இலாக (ூர la:H
இ (லாப
இ (லாவண்ய
இலேக்க (ிய le:gg

+ 4
- 0
espeak-data/voices/test/as View File

@@ -0,0 +1,4 @@
name assamese-test
language as


+ 3
- 0
espeak-data/voices/test/gu View File

@@ -0,0 +1,3 @@
name gujarati-test
language gu


+ 1
- 2
mkdictlist View File

@@ -16,8 +16,7 @@ special_voices = {
'zh-yue': 'zhy',
}

# The 'om' voice file intimitently crashes when compiling on some platforms.
exclude_voices = ['om']
exclude_voices = []

def find_voices(path):
for filename in os.listdir(path):

BIN
phsource/m/mu View File


+ 94
- 0
phsource/ph_assamese View File

@@ -0,0 +1,94 @@

//====================================================
// Bengali, inherits from Hindi
//====================================================


phoneme V // inherent vowel, can be [O] or [o]
vowel flag1 starttype #o endtype #o
length 200

IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isVowel) THEN
ChangePhoneme(NULL)
ENDIF

IF thisPh(isFirstVowel) THEN
IF nextVowel(i) OR nextVowel(u) THEN
ChangePhoneme(o)
ENDIF
IF prevPhW(r) THEN
ChangePhoneme(o)
ENDIF
ENDIF

ChangePhoneme(O)
endphoneme


phoneme a
vowel starttype #a endtype #a
length 225
FMT(vowel/a_3)
endphoneme


phoneme i
vowel starttype #i endtype #i
length 210
FMT(vowel/i_6)
endphoneme


phoneme u
vowel starttype #u endtype #u
length 210
FMT(vowel/u)
endphoneme


phoneme e
vowel starttype #e endtype #e
length 210
FMT(vowel/e)
endphoneme


phoneme &
vowel starttype #a endtype #a
length 210
FMT(vowel/&_2)
endphoneme


phoneme o
vowel starttype #o endtype #o
length 210
IF nextPhW(w) THEN
length 170
ENDIF
FMT(vowel/o)
endphoneme


phoneme O
vowel starttype #o endtype #o
length 200
FMT(vowel/oo_5)
endphoneme


phoneme tS
import_phoneme base/tS
endphoneme


phoneme tS#
import_phoneme base/tS
endphoneme


phoneme ~
virtual
endphoneme


+ 4
- 0
phsource/ph_gujarati View File

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

// Phonemes for gujarati
// This inherits from ph_hindi


+ 1
- 1
phsource/ph_irish View File

@@ -1,6 +1,6 @@
// Irish Phonemes
//Please contact [email protected]
// Version 2.7 2013
// Version 2.8 2013

// short vowels


+ 203
- 15
phsource/ph_swahili View File

@@ -7,42 +7,34 @@

phoneme i
vowel starttype #i endtype #i
length 165
length 200
FMT(vowel/i)
endphoneme


phoneme e
vowel starttype #e endtype #e
length 180
length 210
FMT(vowel/e_mid2)
endphoneme

phoneme a/
vowel starttype #@ endtype #@
length 180
FMT(vowel/a#_2)
endphoneme


phoneme a
vowel starttype #a endtype #a
length 180
ChangeIfUnstressed(a/)
length 210
FMT(vowel/a_5)
endphoneme


phoneme o
vowel starttype #o endtype #o
length 180
FMT(vowel/0_2)
length 210
FMT(vowel/o_4)
endphoneme

phoneme u
vowel starttype #u endtype #u
length 170
FMT(vowel/u_5)
length 200
FMT(vowel/u_bck2)
endphoneme


@@ -57,5 +49,201 @@ phoneme d // dental variant of /d/
import_phoneme base2/d
endphoneme

phoneme z
vcd alv frc sibilant
voicingswitch s
lengthmod 6
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50

IF KlattSynth THEN
Vowelin f1=0 f2=1390 -300 300 f3=0 0
Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
ENDIF

FMT(voc/z_pzd_) addWav(ufric/s_pzd, 75)
endphoneme

phoneme t
vls alv stop
voicingswitch d
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20

WAV(ustop/t_hard, 70)
endphoneme

phoneme T
vls dnt frc
voicingswitch D
lengthmod 3
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20


WAV(ufric/th_,50)
endphoneme

phoneme S
vls pla frc sibilant
voicingswitch Z
lengthmod 3
Vowelin f1=0 f2=2100 100 300 f3=-100 80
Vowelout f1=0 f2=2100 100 300 f3=-100 80

WAV(ufric/sh3)
endphoneme

phoneme s
vls alv frc sibilant
voicingswitch z
lengthmod 3
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20

WAV(ufric/s_,60)
endphoneme

phoneme p
vls blb stop
voicingswitch b
lengthmod 2
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22


WAV(ustop/p)
endphoneme





phoneme n^
vcd pal nasal palatal
ipa ɲ
Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
lengthmod 4

IF KlattSynth THEN
VowelStart(klatt/n^@)
FMT(klatt/n^)
ENDIF

NextVowelStarts
VowelStart(n^/n^@)
VowelStart(n^/n^a)
VowelStart(n^/n^e)
VowelStart(n^/n^i)
VowelStart(n^/n^o)
VowelStart(n^/n^u)
EndSwitch


FMT(n^/n^_)
endphoneme

phoneme N
vcd vel nasal
Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
lengthmod 8 // longer than 'n'

IF KlattSynth THEN
Vowelin f1=0 f2=2100 50 300 f3=0 80
FMT(klatt/nn)
ENDIF

NextVowelStarts
VowelStart(nn/nn@)
VowelStart(nn/nna)
VowelStart(nn/nne)
VowelStart(nn/nni)
VowelStart(nn/nno)
VowelStart(nn/nnu)
EndSwitch

FMT(nn/nn_,50)

endphoneme



phoneme w
liquid
lengthmod 7

NextVowelStarts
VowelStart(w/w@)
VowelStart(w/wa)
VowelStart(w/we)
VowelStart(w/wi)
VowelStart(w/wo)
VowelStart(w/wu)
EndSwitch

VowelEnding(w/xw, -30)

FMT(w/w2)
endphoneme


phoneme k
vls vel stop
voicingswitch g
lengthmod 2
Vowelin f1=0 f2=2300 200 300 f3=-200 80
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20

IF KlattSynth THEN
Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20
ENDIF

WAV(ustop/k_,50)
endphoneme


phoneme J
vcd pal afr sibilant palatal
voicingswitch c
lengthmod 5
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1



IF KlattSynth THEN
FMT(klatt/dz_pzd) addWav(x/dzh_, 45)
ENDIF

IF nextPh(isNotVowel) THEN
FMT(dzh/dz_pzd) addWav(x/dzh_, 45)
ELSE
FMT(dzh/dz_pzd) addWav(x/dzh_, 45)
ENDIF
endphoneme

phoneme g
vcd vel stop
voicingswitch k
lengthmod 5
Vowelin f1=2 f2=2300 200 300 f3=-300 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk

IF PreVoicing THEN
FMT(g/xg)
ENDIF


FMT(g/g) addWav(x/g2, 50)
endphoneme

+ 9
- 0
phsource/phonemes View File

@@ -1928,6 +1928,15 @@ include ph_telugu
phonemetable si hi
include ph_sinhala

phonemetable gu hi
include ph_gujarati

phonemetable as bn
include ph_assamese




phonemetable tn base
include ph_setswana


+ 11
- 0
src/compiledata.cpp View File

@@ -1639,6 +1639,12 @@ int LoadSpect(const char *path, int control)
}
spectseq->Load(stream);

if(spectseq->frames == NULL)
{
error("Bad vowel file, no frames: '%s'",path);
return(0);
}

// do we need additional klatt data ?
for(frame=0; frame < spectseq->numframes; frame++)
{
@@ -3616,6 +3622,11 @@ make_envs();
"# ------- ---------\n");


fprintf(f_errors, "Source data path = '%s'\n", path_source);
strncpy0(fname,path_phfile.mb_str(wxConvLocal),sizeof(fname));
fprintf(f_errors, "Master phonemes file = '%s'\n", fname);
fprintf(f_errors, "Output to '%s/'\n\n", path_home);

sprintf(fname,"%s/%s",path_home,"phondata");
f_phdata = fopen_log(f_errors,fname,"wb");


+ 8
- 7
src/compiledict.cpp View File

@@ -919,8 +919,8 @@ int isHexDigit(int c)
}


static void copy_rule_string(char *string, int &state)
{//===================================================
static void copy_rule_string(char *string, int *state_out)
{//=======================================================
// state 0: conditional, 1=pre, 2=match, 3=post, 4=phonemes
static char *outbuf[5] = {rule_cond, rule_pre, rule_match, rule_post, rule_phonemes};
static int next_state[5] = {2,2,4,4,4};
@@ -934,6 +934,7 @@ static void copy_rule_string(char *string, int &state)
int value;
int literal;
int hexdigit_input = 0;
int state = *state_out;
MNEM_TAB *mr;

if(string[0] == 0) return;
@@ -1174,7 +1175,7 @@ static void copy_rule_string(char *string, int &state)
if(c == 0) break;
}

state = next_state[state];
*state_out = next_state[state];
} // end of copy_rule_string


@@ -1213,14 +1214,14 @@ static char *compile_rule(char *input)
case ')': // end of prefix section
*p = 0;
state = 1;
copy_rule_string(buf,state);
copy_rule_string(buf,&state);
p = buf;
break;

case '(': // start of suffix section
*p = 0;
state = 2;
copy_rule_string(buf,state);
copy_rule_string(buf,&state);
state = 3;
p = buf;
if(input[ix+1] == ' ')
@@ -1234,14 +1235,14 @@ static char *compile_rule(char *input)
case '\r':
case 0: // end of line
*p = 0;
copy_rule_string(buf,state);
copy_rule_string(buf,&state);
finish=1;
break;

case '\t': // end of section section
case ' ':
*p = 0;
copy_rule_string(buf,state);
copy_rule_string(buf,&state);
p = buf;
break;


+ 25
- 14
src/dictionary.cpp View File

@@ -531,7 +531,7 @@ unsigned short ipa1[96] = {
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f
};

#define N_PHON_OUT 500
#define N_PHON_OUT 500 // realloc increment
static char *phon_out_buf = NULL;
static int phon_out_size = 0;

@@ -974,7 +974,7 @@ int Unpronouncable(Translator *tr, char *word, int posn)



static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int &vowel_count, int &stressed_syllable, int control)
static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int *vowel_count, int *stressed_syllable, int control)
{//=================================================================================================================================================
// control = 1, set stress to 1 for forced unstressed vowels
unsigned char phcode;
@@ -1001,7 +1001,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
{
/* primary stress on preceeding vowel */
j = count - 1;
while((j > 0) && (stressed_syllable == 0) && (vowel_stress[j] < 4))
while((j > 0) && (*stressed_syllable == 0) && (vowel_stress[j] < 4))
{
if((vowel_stress[j] != 0) && (vowel_stress[j] != 1))
{
@@ -1027,7 +1027,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
}
else
{
if((ph->std_length < 4) || (stressed_syllable == 0))
if((ph->std_length < 4) || (*stressed_syllable == 0))
{
stress = ph->std_length;

@@ -1067,14 +1067,14 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
*ph_out = 0;

/* has the position of the primary stress been specified by $1, $2, etc? */
if(stressed_syllable > 0)
if(*stressed_syllable > 0)
{
if(stressed_syllable >= count)
stressed_syllable = count-1; // the final syllable
if(*stressed_syllable >= count)
*stressed_syllable = count-1; // the final syllable

vowel_stress[stressed_syllable] = 4;
vowel_stress[*stressed_syllable] = 4;
max_stress = 4;
primary_posn = stressed_syllable;
primary_posn = *stressed_syllable;
}

if(max_stress == 5)
@@ -1099,8 +1099,8 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
max_stress = 4;
}

stressed_syllable = primary_posn;
vowel_count = count;
*stressed_syllable = primary_posn;
*vowel_count = count;
return(max_stress);
} // end of GetVowelStress

@@ -1122,7 +1122,7 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress)
signed char vowel_stress[N_WORD_PHONEMES/2];

strcpy((char *)phonetic,word);
max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 0);
max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 0);

if(new_stress >= 4)
{
@@ -1249,7 +1249,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
unstressed_word = 1;
}

max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1);
max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1);
if((max_stress < 0) && dictionary_flags)
{
max_stress = 0;
@@ -1551,6 +1551,17 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
vowel_stress[stressed_syllable] = 4;
max_stress = 4;
break;

case 13: // LANG=ml, 1st unless 1st vowel is short and 2nd is long
if(stressed_syllable == 0)
{
stressed_syllable = 1;
if((vowel_length[1] == 0) && (vowel_count > 2) && (vowel_length[2] > 0))
stressed_syllable = 2;
vowel_stress[stressed_syllable] = 4;
max_stress = 4;
}
break;
}

/* now guess the complete stress pattern */
@@ -3049,7 +3060,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
if(tr->transpose_min > 0)
{
strncpy0(word_buf,word, N_WORD_BYTES);
wlen = TransposeAlphabet(tr, word_buf);
wlen = TransposeAlphabet(tr, word_buf); // bit 6 indicates compressed characters
word = word_buf;
}
else

+ 1
- 0
src/espeak.cpp View File

@@ -80,6 +80,7 @@ static const char *help_text =
"--split=\"<minutes>\"\n"
"\t Starts a new WAV file every <minutes>. Used with -w\n"
"--stdout Write speech output to stdout\n"
"--version Shows version number and date, and location of espeak-data\n"
"--voices=<language>\n"
"\t List the available voices for the specified language.\n"
"\t If <language> is omitted, then list all voices.\n";

+ 58
- 58
src/event.cpp View File

@@ -40,7 +40,7 @@
//<decls and function prototypes


// my_mutex: protects my_thread_is_talking,
// my_mutex: protects my_thread_is_talking,
static pthread_mutex_t my_mutex;
static sem_t my_sem_start_is_required;
static sem_t my_sem_stop_is_required;
@@ -53,7 +53,7 @@ static int my_event_is_running=0;

enum {MIN_TIMEOUT_IN_MS=10,
ACTIVITY_TIMEOUT=50, // in ms, check that the stream is active
MAX_ACTIVITY_CHECK=6
MAX_ACTIVITY_CHECK=6
};


@@ -93,12 +93,12 @@ void event_init(void)
assert(-1 != sem_init(&my_sem_stop_is_required, 0, 0));
assert(-1 != sem_init(&my_sem_stop_is_acknowledged, 0, 0));

pthread_attr_t a_attrib;
pthread_attr_t a_attrib;
if (pthread_attr_init (& a_attrib)
|| pthread_attr_setdetachstate(&a_attrib, PTHREAD_CREATE_JOINABLE)
|| pthread_create( &my_thread,
& a_attrib,
polling_thread,
|| pthread_create( &my_thread,
& a_attrib,
polling_thread,
(void*)NULL))
{
assert(0);
@@ -126,7 +126,7 @@ ENTER("event_display");
"MARK",
"PLAY",
"END",
"MSG_TERMINATED"
"MSG_TERMINATED"
};

SHOW("event_display > event=0x%x\n",event);
@@ -146,17 +146,17 @@ ENTER("event_display");
static espeak_EVENT* event_copy (espeak_EVENT* event)
{
ENTER("event_copy");
if (event==NULL)
{
return NULL;
}
espeak_EVENT* a_event=(espeak_EVENT*)malloc(sizeof(espeak_EVENT));
if (a_event)
{
memcpy(a_event, event, sizeof(espeak_EVENT));
switch(event->type)
{
case espeakEVENT_MARK:
@@ -166,14 +166,14 @@ static espeak_EVENT* event_copy (espeak_EVENT* event)
a_event->id.name = strdup(event->id.name);
}
break;
default:
break;
}
}
event_display(a_event);
return a_event;
}

@@ -287,7 +287,7 @@ ENTER("event_declare");
return EE_INTERNAL_ERROR;
}

int a_status = pthread_mutex_lock(&my_mutex);
int a_status = pthread_mutex_lock(&my_mutex);
espeak_ERROR a_error = EE_OK;

if (!a_status)
@@ -309,7 +309,7 @@ ENTER("event_declare");
//
// if (!a_status && !my_event_is_running && (a_error == EE_OK))
// {
// // quit when command is actually started
// // quit when command is actually started
// // (for possible forthcoming 'end of command' checks)
SHOW_TIME("event_declare > post my_sem_start_is_required\n");
sem_post(&my_sem_start_is_required);
@@ -399,18 +399,18 @@ ENTER("sleep_until_timeout_or_stop_request");

add_time_in_ms( &ts, time_in_ms);

SHOW("polling_thread > sleep_until_timeout_or_stop_request > start sem_timedwait from %d.%09lu to %d.%09lu \n",
SHOW("polling_thread > sleep_until_timeout_or_stop_request > start sem_timedwait from %d.%09lu to %d.%09lu \n",
to.tv_sec, to.tv_nsec,
ts.tv_sec, ts.tv_nsec);

while ((err = sem_timedwait(&my_sem_stop_is_required, &ts)) == -1
while ((err = sem_timedwait(&my_sem_stop_is_required, &ts)) == -1
&& errno == EINTR)
{
continue; // Restart when interrupted by handler
}

assert (gettimeofday(&tv, NULL) != -1);
SHOW("polling_thread > sleep_until_timeout_or_stop_request > stop sem_timedwait %d.%09lu \n",
SHOW("polling_thread > sleep_until_timeout_or_stop_request > stop sem_timedwait %d.%09lu \n",
tv.tv_sec, tv.tv_usec*1000);

if (err == 0)
@@ -424,7 +424,7 @@ ENTER("sleep_until_timeout_or_stop_request");
//>
//<get_remaining_time
// Asked for the time interval required for reaching the sample.
// If the stream is opened but the audio samples are not played,
// If the stream is opened but the audio samples are not played,
// a timeout is started.

static int get_remaining_time(uint32_t sample, uint32_t* time_in_ms, int* stop_is_required)
@@ -448,18 +448,18 @@ ENTER("get_remaining_time");

// stream opened but not active
//
// Several possible states:
// * the stream is opened but not yet started:
// Several possible states:
// * the stream is opened but not yet started:
//
// wait for the start of stream
//
// * some samples have already been played,
// * some samples have already been played,
// ** the end of stream is reached
// ** or there is an underrun
//
//
// wait for the close of stream

*stop_is_required = sleep_until_timeout_or_stop_request( ACTIVITY_TIMEOUT);
*stop_is_required = sleep_until_timeout_or_stop_request( ACTIVITY_TIMEOUT);
}

return err;
@@ -499,8 +499,8 @@ ENTER("polling_thread");
SHOW_TIME("polling_thread > unlocked\n");

a_stop_is_required=0;
a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
if ((a_status==0) && a_stop_is_required)
a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required); // NOTE: may set a_stop_is_required to -1
if ((a_status==0) && (a_stop_is_required > 0))
{
SHOW("polling_thread > stop required (%d)\n", __LINE__);
while(0 == sem_trywait(&my_sem_stop_is_required))
@@ -513,27 +513,27 @@ ENTER("polling_thread");
}

// In this loop, my_event_is_running = 1
while (head && !a_stop_is_required)
while (head && (a_stop_is_required <= 0))
{
SHOW_TIME("polling_thread > check head\n");
while(0 == sem_trywait(&my_sem_start_is_required))
{
};
espeak_EVENT* event = (espeak_EVENT*)(head->data);
assert(event);
uint32_t time_in_ms = 0;
int err = get_remaining_time((uint32_t)event->sample,
&time_in_ms,
int err = get_remaining_time((uint32_t)event->sample,
&time_in_ms,
&a_stop_is_required);
if (a_stop_is_required)
if (a_stop_is_required > 0)
{
break;
}
else if (err != 0)
{
{
// No available time: the event is deleted.
SHOW("polling_thread > %s\n","audio device down");
a_status = pthread_mutex_lock(&my_mutex);
@@ -547,22 +547,22 @@ ENTER("polling_thread");
if (my_callback)
{
event_notify(event);
// the user_data (and the type) are cleaned to be sure
// the user_data (and the type) are cleaned to be sure
// that MSG_TERMINATED is called twice (at delete time too).
event->type=espeakEVENT_LIST_TERMINATED;
event->user_data=NULL;
}
a_status = pthread_mutex_lock(&my_mutex);
SHOW_TIME("polling_thread > locked\n");
event_delete( (espeak_EVENT*)pop());
a_status = pthread_mutex_unlock(&my_mutex);
SHOW_TIME("polling_thread > unlocked\n");
a_stop_is_required=0;
a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
if ((a_status==0) && a_stop_is_required)
if ((a_status==0) && (a_stop_is_required > 0))
{
SHOW("polling_thread > stop required (%d)\n", __LINE__);
while(0 == sem_trywait(&my_sem_stop_is_required))
@@ -579,17 +579,17 @@ ENTER("polling_thread");
a_stop_is_required = sleep_until_timeout_or_stop_request(time_in_ms);
}
}
a_status = pthread_mutex_lock(&my_mutex);
SHOW_TIME("polling_thread > locked\n");
SHOW_TIME("polling_thread > my_event_is_running = 0\n");
my_event_is_running = 0;
if(!a_stop_is_required)
if(a_stop_is_required <= 0)
{
a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
if ((a_status==0) && a_stop_is_required)
if ((a_status==0) && (a_stop_is_required > 0))
{
SHOW("polling_thread > stop required (%d)\n", __LINE__);
while(0 == sem_trywait(&my_sem_stop_is_required))
@@ -605,8 +605,8 @@ ENTER("polling_thread");
a_status = pthread_mutex_unlock(&my_mutex);
SHOW_TIME("polling_thread > unlocked\n");

if (a_stop_is_required)
{
if (a_stop_is_required > 0)
{
SHOW("polling_thread > %s\n","stop required!");
// no mutex required since the stop command is synchronous
// and waiting for my_sem_stop_is_acknowledged
@@ -642,13 +642,13 @@ static espeak_ERROR push(void* the_data)
SHOW("event > push > %s\n", "EE_BUFFER_FULL");
return EE_BUFFER_FULL;
}
node *n = (node *)malloc(sizeof(node));
if (n == NULL)
{
return EE_INTERNAL_ERROR;
}
if (head == NULL)
{
head = n;
@@ -659,13 +659,13 @@ static espeak_ERROR push(void* the_data)
tail->next = n;
tail = n;
}
tail->next = NULL;
tail->data = the_data;
node_counter++;
SHOW("event > push > counter=%d (uid=%d)\n",node_counter,((espeak_EVENT*)the_data)->unique_identifier);
return EE_OK;
}

@@ -673,9 +673,9 @@ static void* pop()
{
ENTER("event > pop");
void* the_data = NULL;
assert((!head && !tail) || (head && tail));
if (head != NULL)
{
node* n = head;
@@ -685,12 +685,12 @@ static void* pop()
node_counter--;
SHOW("event > pop > event=0x%x (counter=%d, uid=%d)\n",the_data, node_counter,((espeak_EVENT*)the_data)->unique_identifier);
}
if(head == NULL)
{
tail = NULL;
}
return the_data;
}

@@ -698,10 +698,10 @@ static void* pop()
static void init()
{
ENTER("event > init");
while (event_delete( (espeak_EVENT*)pop() ))
{}
node_counter = 0;
}

@@ -710,7 +710,7 @@ static void init()
void event_terminate()
{
ENTER("event_terminate");
if (my_thread)
{
pthread_cancel(my_thread);

+ 31
- 31
src/fifo.cpp View File

@@ -42,7 +42,7 @@
//>
//<decls and function prototypes

// my_mutex: protects my_thread_is_talking,
// my_mutex: protects my_thread_is_talking,
// my_stop_is_required, and the command fifo
static pthread_mutex_t my_mutex;
static int my_command_is_running = 0;
@@ -50,7 +50,7 @@ static int my_stop_is_required = 0;
// + fifo
//

// my_thread: reads commands from the fifo, and runs them.
// my_thread: reads commands from the fifo, and runs them.
static pthread_t my_thread;
static sem_t my_sem_start_is_required;
static sem_t my_sem_stop_is_acknowledged;
@@ -79,12 +79,12 @@ void fifo_init()
assert(-1 != sem_init(&my_sem_start_is_required, 0, 0));
assert(-1 != sem_init(&my_sem_stop_is_acknowledged, 0, 0));

pthread_attr_t a_attrib;
pthread_attr_t a_attrib;
if (pthread_attr_init (& a_attrib)
|| pthread_attr_setdetachstate(&a_attrib, PTHREAD_CREATE_JOINABLE)
|| pthread_create( &my_thread,
& a_attrib,
say_thread,
|| pthread_create( &my_thread,
& a_attrib,
say_thread,
(void*)NULL))
{
assert(0);
@@ -106,8 +106,8 @@ void fifo_init()
espeak_ERROR fifo_add_command (t_espeak_command* the_command)
{
ENTER("fifo_add_command");
int a_status = pthread_mutex_lock(&my_mutex);
int a_status = pthread_mutex_lock(&my_mutex);
espeak_ERROR a_error = EE_OK;

if (!a_status)
@@ -120,12 +120,12 @@ espeak_ERROR fifo_add_command (t_espeak_command* the_command)

if (!a_status && !my_command_is_running && (a_error == EE_OK))
{
// quit when command is actually started
// quit when command is actually started
// (for possible forthcoming 'end of command' checks)
SHOW_TIME("fifo_add_command > post my_sem_start_is_required\n");
sem_post(&my_sem_start_is_required);
int val=1;
while (val)
while (val > 0)
{
usleep(50000); // TBD: event?
sem_getvalue(&my_sem_start_is_required, &val);
@@ -147,8 +147,8 @@ espeak_ERROR fifo_add_command (t_espeak_command* the_command)
espeak_ERROR fifo_add_commands (t_espeak_command* command1, t_espeak_command* command2)
{
ENTER("fifo_add_command");
int a_status = pthread_mutex_lock(&my_mutex);
int a_status = pthread_mutex_lock(&my_mutex);
espeak_ERROR a_error = EE_OK;

if (!a_status)
@@ -171,12 +171,12 @@ espeak_ERROR fifo_add_commands (t_espeak_command* command1, t_espeak_command* co

if (!a_status && !my_command_is_running && (a_error == EE_OK))
{
// quit when one command is actually started
// quit when one command is actually started
// (for possible forthcoming 'end of command' checks)
SHOW_TIME("fifo_add_command > post my_sem_start_is_required\n");
sem_post(&my_sem_start_is_required);
int val=1;
while (val)
while (val > 0)
{
usleep(50000); // TBD: event?
sem_getvalue(&my_sem_start_is_required, &val);
@@ -274,9 +274,9 @@ static int sleep_until_start_request_or_inactivity()
int a_start_is_required=0;

// Wait for the start request (my_sem_start_is_required).
// Besides this, if the audio stream is still busy,
// check from time to time its end.
// The end of the stream is confirmed by several checks
// Besides this, if the audio stream is still busy,
// check from time to time its end.
// The end of the stream is confirmed by several checks
// for filtering underflow.
//
int i=0;
@@ -305,18 +305,18 @@ static int sleep_until_start_request_or_inactivity()

add_time_in_ms( &ts, INACTIVITY_TIMEOUT);

SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n",
SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n",
to.tv_sec, to.tv_nsec,
ts.tv_sec, ts.tv_nsec);

while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1
while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1
&& errno == EINTR)
{
continue;
}

assert (gettimeofday(&tv, NULL) != -1);
SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err,
SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err,
tv.tv_sec, tv.tv_usec*1000);

if (err==0)
@@ -335,8 +335,8 @@ static void close_stream()
{
SHOW_TIME("fifo > close_stream > ENTER\n");

// Warning: a wave_close can be already required by
// an external command (espeak_Cancel + fifo_stop), if so:
// Warning: a wave_close can be already required by
// an external command (espeak_Cancel + fifo_stop), if so:
// my_stop_is_required = 1;

int a_status = pthread_mutex_lock(&my_mutex);
@@ -358,7 +358,7 @@ static void close_stream()

a_stop_is_required = my_stop_is_required;
a_status = pthread_mutex_unlock(&my_mutex);
if (a_stop_is_required)
{
// acknowledge the stop request
@@ -437,7 +437,7 @@ static void* say_thread(void*)
};

if (my_stop_is_required)
{
{
SHOW_TIME("say_thread > my_command_is_running = 0\n");
my_command_is_running = 0;
}
@@ -453,7 +453,7 @@ static void* say_thread(void*)
}

if (my_stop_is_required)
{
{
// no mutex required since the stop command is synchronous
// and waiting for my_sem_stop_is_acknowledged
init(1);
@@ -463,16 +463,16 @@ static void* say_thread(void*)
while(0==sem_trywait(&my_sem_start_is_required))
{
};
// acknowledge the stop request
SHOW_TIME("say_thread > post my_sem_stop_is_acknowledged\n");
int a_status = sem_post(&my_sem_stop_is_acknowledged);
assert( a_status != -1);
}
// and wait for the next start
SHOW_TIME("say_thread > wait for my_sem_start_is_required\n");
SHOW_TIME("say_thread > wait for my_sem_start_is_required\n");
}
return NULL;
}

@@ -516,7 +516,7 @@ static espeak_ERROR push(t_espeak_command* the_command)
{
return EE_INTERNAL_ERROR;
}
if (head == NULL)
{
head = n;
@@ -527,7 +527,7 @@ static espeak_ERROR push(t_espeak_command* the_command)
tail->next = n;
tail = n;
}
tail->next = NULL;
tail->data = the_command;

@@ -563,7 +563,7 @@ static t_espeak_command* pop()
}

display_espeak_command(the_command);
return the_command;
}


+ 16
- 16
src/intonation.cpp View File

@@ -338,7 +338,7 @@ static void count_pitch_vowels(int start, int end, int clause_end)
number_body = 0;
number_tail = 0; /* number between tonic syllable and next primary */
last_primary = -1;
for(ix=start; ix<end; ix++)
{
stress = syllable_tab[ix].stress; /* marked stress level */
@@ -527,7 +527,7 @@ int secondary=2; // 2
n_steps = count_increments(syl_ix+1, head_final, 4);
pitch = tune->onset << 8;
used_onset = 1;
}
}

if(n_steps > tune->head_max_steps)
n_steps = tune->head_max_steps;
@@ -697,7 +697,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
n_primary--;
if((tn->backwards) && (n_primary < 2))
{
pitch = tn->backwards[n_primary] << 8;
pitch = tn->backwards[n_primary] << 8;
}
}

@@ -745,7 +745,7 @@ static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_

if(n_increments <= 0)
return;
if(n_increments > 1)
{
increment = increment / n_increments;
@@ -802,7 +802,7 @@ static int calc_pitches2(int start, int end, int tune_number)

if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE)
{
tone_posn = tone_posn2; // put tone on the penultimate stressed word
tone_posn = tone_posn2; // put tone on the penultimate stressed word
}
ix = SetHeadIntonation(tune, ix, tone_posn, 0);

@@ -811,7 +811,7 @@ static int calc_pitches2(int start, int end, int tune_number)

/* tonic syllable */
/******************/
// if(tn->flags & T_EMPH)
// {
// syllable_tab[ix].flags |= SYL_EMPHASIS;
@@ -836,7 +836,7 @@ static int calc_pitches2(int start, int end, int tune_number)

/* tail, after the tonic syllable */
/**********************************/
SetPitchGradient(ix, end, tune->tail_start, tune->tail_end);

return(tone_pitch_env);
@@ -877,7 +877,7 @@ static int calc_pitches(int control, int start, int end, int tune_number)

if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE)
{
tone_posn = tone_posn2; // put tone on the penultimate stressed word
tone_posn = tone_posn2; // put tone on the penultimate stressed word
}
ix = calc_pitch_segment(ix,tone_posn, th, tn, PRIMARY, continuing);
// ix = SetBodyIntonation(&tunes[0], ix, tone_posn, 0);
@@ -887,7 +887,7 @@ static int calc_pitches(int control, int start, int end, int tune_number)

/* tonic syllable */
/******************/
if(tn->flags & T_EMPH)
{
syllable_tab[ix].flags |= SYL_EMPHASIS;
@@ -912,7 +912,7 @@ static int calc_pitches(int control, int start, int end, int tune_number)

/* tail, after the tonic syllable */
/**********************************/
SetPitchGradient(ix, end, tn->tail_start, tn->tail_end);

return(tone_pitch_env);
@@ -1037,7 +1037,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
if(tph->mnemonic == 0x343132) // [214]
prev_p->tone_ph = PhonemeCode2('3','5');
else
prev_p->tone_ph = PhonemeCode2('2','1');
prev_p->tone_ph = PhonemeCode2('2','1');
}
if((prev_tph->mnemonic == 0x3135) && (tph->mnemonic == 0x3135)) // [51] + [51]
{
@@ -1176,7 +1176,7 @@ void CalcPitches(Translator *tr, int clause_type)
}
else
{
group_tone = tr->punct_to_tone[option][clause_type];
group_tone = tr->punct_to_tone[option][clause_type];
group_tone_emph = tr->punct_to_tone[option][5]; // emphatic form of statement
group_tone_comma = tr->punct_to_tone[option][1]; // emphatic form of statement
}
@@ -1283,14 +1283,14 @@ void CalcPitches(Translator *tr, int clause_type)
calc_pitches(option, st_start, st_ix, group_tone);
}

// unpack pitch data
st_ix=0;
for(ix=ph_start; ix < ph_end; ix++)
{
p = &phoneme_list[ix];
p->stresslevel = syllable_tab[st_ix].stress;
if(p->synthflags & SFLAG_SYLLABLE)
{
syl = &syllable_tab[st_ix];
@@ -1327,11 +1327,11 @@ if(p->tone_ph)
{
p->stresslevel |= 8; // emphasized
}
st_ix++;
}
}

} // end of CalcPitches


+ 37
- 34
src/numbers.cpp View File

@@ -851,47 +851,50 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
// speak in the language for this alphabet (or English)
ph_buf[2] = SetTranslator2(WordToString2(language));

if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af))
if(translator2 != NULL)
{
// Special case for Korean letters.
// break a syllable hangul into 2 or 3 individual jamo
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)
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
{
p3 += utf8_out(initial + 0x1100, p3);
LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
}
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)
{
// another level of language change
ph_buf[2] = SetTranslator2(&ph_buf[4]);
LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
}
if(ph_buf[3] == phonSWITCH)
{
// another level of language change
ph_buf[2] = SetTranslator2(&ph_buf[4]);
LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
}

SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table

if(ph_buf[3] != 0)
{
ph_buf[0] = phonPAUSE;
ph_buf[1] = phonSWITCH;
len = strlen(&ph_buf[3]) + 3;
ph_buf[len] = phonSWITCH; // switch back
ph_buf[len+1] = tr->phoneme_tab_ix;
ph_buf[len+2] = 0;
if(ph_buf[3] != 0)
{
ph_buf[0] = phonPAUSE;
ph_buf[1] = phonSWITCH;
len = strlen(&ph_buf[3]) + 3;
ph_buf[len] = phonSWITCH; // switch back
ph_buf[len+1] = tr->phoneme_tab_ix;
ph_buf[len+2] = 0;
}
}
}
}

+ 30
- 26
src/readclause.cpp View File

@@ -1264,7 +1264,7 @@ static const char *VoiceFromStack()



static void ProcessParamStack(char *outbuf, int &outix)
static void ProcessParamStack(char *outbuf, int *outix)
{//====================================================
// Set the speech parameters from the parameter stack
int param;
@@ -1313,8 +1313,8 @@ static void ProcessParamStack(char *outbuf, int &outix)
}

speech_parameters[param] = new_parameters[param];
strcpy(&outbuf[outix],buf);
outix += strlen(buf);
strcpy(&outbuf[*outix],buf);
*outix += strlen(buf);
}
}
} // end of ProcessParamStack
@@ -1338,7 +1338,7 @@ static PARAM_STACK *PushParamStack(int tag_type)
} // end of PushParamStack


static void PopParamStack(int tag_type, char *outbuf, int &outix)
static void PopParamStack(int tag_type, char *outbuf, int *outix)
{//==============================================================
// unwind the stack up to and including the previous tag of this type
int ix;
@@ -1508,10 +1508,14 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out)

if((tail[0]=='s') && (tail[1]=='t'))
{
#ifdef PLATFORM_RISCOS
*value_out = 100;
#else
double x;
// convert from semitones to a frequency percentage
x = pow(double(2.0),double((value*sign)/12)) * 100;
x = pow((double)2.0,(double)((value*sign)/12)) * 100;
*value_out = (int)x;
#endif
return(2); // percentage
}

@@ -1739,7 +1743,7 @@ static void SetProsodyParameter(int param_type, wchar_t *attr1, PARAM_STACK *sp)
} // end of SetProsodyParemeter


static int ReplaceKeyName(char *outbuf, int index, int &outix)
static int ReplaceKeyName(char *outbuf, int index, int *outix)
{//===========================================================
// Replace some key-names by single characters, so they can be pronounced in different languages
static MNEM_TAB keynames[] = {
@@ -1758,14 +1762,14 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix)
if((letter = LookupMnem(keynames, p)) != 0)
{
ix = utf8_out(letter, p);
outix = index + ix;
*outix = index + ix;
return(letter);
}
return(0);
}


static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outbuf, int self_closing)
static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, int self_closing)
{//==================================================================================================
// xml_buf is the tag and attributes with a zero terminator in place of the original '>'
// returns a clause terminator value.
@@ -1850,7 +1854,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
// closing tag
if((tag_type = LookupMnem(ssmltags,&tag_name[1])) != HTML_NOSPACE)
{
outbuf[outix++] = ' ';
outbuf[(*outix)++] = ' ';
}
tag_type += SSML_CLOSE;
}
@@ -1859,7 +1863,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if((tag_type = LookupMnem(ssmltags,tag_name)) != HTML_NOSPACE)
{
// separate SSML tags from the previous word (but not HMTL tags such as <b> <font> which can occur inside a word)
outbuf[outix++] = ' ';
outbuf[(*outix)++] = ' ';
}

if(self_closing && ignore_if_self_closing[tag_type])
@@ -1959,22 +1963,22 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
}

sprintf(buf,"%c%dY",CTRL_EMBEDDED,value);
strcpy(&outbuf[outix],buf);
outix += strlen(buf);
strcpy(&outbuf[*outix],buf);
*outix += strlen(buf);

sayas_start = outix;
sayas_start = *outix;
sayas_mode = value; // punctuation doesn't end clause during SAY-AS
break;

case SSML_SAYAS + SSML_CLOSE:
if(sayas_mode == SAYAS_KEY)
{
outbuf[outix] = 0;
outbuf[*outix] = 0;
ReplaceKeyName(outbuf, sayas_start, outix);
}

outbuf[outix++] = CTRL_EMBEDDED;
outbuf[outix++] = 'Y';
outbuf[(*outix)++] = CTRL_EMBEDDED;
outbuf[(*outix)++] = 'Y';
sayas_mode = 0;
break;

@@ -1983,7 +1987,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
{
// use the alias rather than the text
ignore_text = 1;
outix += attrcopy_utf8(&outbuf[outix],attr1,n_outbuf-outix);
*outix += attrcopy_utf8(&outbuf[*outix],attr1,n_outbuf-*outix);
}
break;

@@ -2013,8 +2017,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if((index = AddNameData(buf,0)) >= 0)
{
sprintf(buf,"%c%dM",CTRL_EMBEDDED,index);
strcpy(&outbuf[outix],buf);
outix += strlen(buf);
strcpy(&outbuf[*outix],buf);
*outix += strlen(buf);
}
}
break;
@@ -2041,8 +2045,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if(index >= 0)
{
sprintf(buf,"%c%dI",CTRL_EMBEDDED,index);
strcpy(&outbuf[outix],buf);
outix += strlen(buf);
strcpy(&outbuf[*outix],buf);
*outix += strlen(buf);
sp->parameter[espeakSILENCE] = 1;
}
}
@@ -2054,8 +2058,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if(uri_callback(1,uri,xmlbase) == 0)
{
sprintf(buf,"%c%dU",CTRL_EMBEDDED,index);
strcpy(&outbuf[outix],buf);
outix += strlen(buf);
strcpy(&outbuf[*outix],buf);
*outix += strlen(buf);
sp->parameter[espeakSILENCE] = 1;
}
}
@@ -2085,8 +2089,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
if(value < 3)
{
// adjust prepause on the following word
sprintf(&outbuf[outix],"%c%dB",CTRL_EMBEDDED,value);
outix += 3;
sprintf(&outbuf[*outix],"%c%dB",CTRL_EMBEDDED,value);
*outix += 3;
terminator = 0;
}
value = break_value[value];
@@ -2433,7 +2437,7 @@ f_input = f_in; // for GetC etc
self_closing = 1;
}

terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing);
terminator = ProcessSsmlTag(xml_buf,buf,&ix,n_buf,self_closing);

if(terminator != 0)
{

+ 1
- 0
src/speak.cpp View File

@@ -114,6 +114,7 @@ static const char *help_text =
"--split=\"<minutes>\"\n"
"\t Starts a new WAV file every <minutes>. Used with -w\n"
"--stdout Write speech output to stdout\n"
"--version Shows version number and date, and location of espeak-data\n"
"--voices=<language>\n"
"\t List the available voices for the specified language.\n"
"\t If <language> is omitted, then list all voices.\n";

+ 3
- 2
src/speak_lib.cpp View File

@@ -766,10 +766,11 @@ ENTER("espeak_Initialize");
#ifdef PLATFORM_RISCOS
setlocale(LC_CTYPE,"ISO8859-1");
#else
if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
if(setlocale(LC_CTYPE,"C.UTF-8") == NULL)
{
if(setlocale(LC_CTYPE,"UTF-8") == NULL)
setlocale(LC_CTYPE,"");
if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
setlocale(LC_CTYPE,"");
}
#endif


+ 6
- 3
src/speak_lib.h View File

@@ -314,10 +314,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then
this pause is suppressed.

unique_identifier: message identifier; helpful for identifying later
data supplied to the callback.
unique_identifier: This must be either NULL, or point to an integer variable to
which eSpeak writes a message identifier number.
eSpeak includes this number in espeak_EVENT messages which are the result of
this call of espeak_Synth().

user_data: pointer which will be passed to the callback function.
user_data: a pointer (or NULL) which will be passed to the callback function in
espeak_EVENT messages.

Return: EE_OK: operation achieved
EE_BUFFER_FULL: the command can not be buffered;

+ 16
- 2
src/spectdisplay.cpp View File

@@ -675,7 +675,7 @@ void SpectDisplay::OnKey(wxKeyEvent& event)
break;

case '[': // width--
pk->pkright -= 1;
pk->pkright -= 10;
if(pk->pkright < 0)
pk->pkright = 0;
display = 1;
@@ -683,7 +683,21 @@ void SpectDisplay::OnKey(wxKeyEvent& event)
break;

case ']': // width++
pk->pkright += 1;
pk->pkright += 10;
display = 1;
field = 4;
break;

case '{': // width--
pk->pkright -= 2;
if(pk->pkright < 0)
pk->pkright = 0;
display = 1;
field = 4;
break;

case '}': // width++
pk->pkright += 2;
display = 1;
field = 4;
break;

+ 1
- 1
src/speech.h View File

@@ -39,7 +39,7 @@
//#define USE_PORTAUDIO
//#define USE_PULSEAUDIO
#define USE_NANOSLEEP
#define __cdecl
#define __cdecl
//#define ESPEAK_API extern "C"

#ifdef _ESPEAKEDIT

+ 3
- 3
src/synthdata.cpp View File

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

const char *version_string = "1.47.11d 11.Jun.13";
const char *version_string = "1.47.12 23.Sep.13";
const int version_phdata = 0x014709;

int option_device_number = -1;
@@ -67,7 +67,7 @@ int vowel_transition[4];
int vowel_transition0;
int vowel_transition1;

int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);
int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);



@@ -277,7 +277,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,
// do we need to modify a frame for blending with a consonant?
if((this_ph->type == phVOWEL) && (fmt_params->fmt2_addr == 0) && (fmt_params->use_vowelin))
{
seq_len_adjust += FormantTransition2(frames,nf,fmt_params->transition0,fmt_params->transition1,NULL,which);
seq_len_adjust += FormantTransition2(frames,&nf,fmt_params->transition0,fmt_params->transition1,NULL,which);
}

length1 = 0;

+ 10
- 10
src/synthesize.cpp View File

@@ -336,7 +336,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE2;
q[1] = length | (wav_length << 16); // length in samples
q[2] = long64(&wavefile_data[index]);
q[2] = (long64)(&wavefile_data[index]);
q[3] = wav_scale + (amp << 8);
WcmdqInc();
return(length);
@@ -357,7 +357,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE;
q[1] = x; // length in samples
q[2] = long64(&wavefile_data[index]);
q[2] = (long64)(&wavefile_data[index]);
q[3] = wav_scale + (amp << 8);
WcmdqInc();

@@ -372,7 +372,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE;
q[1] = len4*2; // length in samples
q[2] = long64(&wavefile_data[index+x]);
q[2] = (long64)(&wavefile_data[index+x]);
q[3] = wav_scale + (amp << 8);
WcmdqInc();

@@ -388,7 +388,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE;
q[1] = length; // length in samples
q[2] = long64(&wavefile_data[index+x]);
q[2] = (long64)(&wavefile_data[index+x]);
q[3] = wav_scale + (amp << 8);
WcmdqInc();
}
@@ -613,7 +613,7 @@ static int VowelCloseness(frame_t *fr)
}


int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
{//==============================================================================================================================
int ix;
int formant;
@@ -639,7 +639,7 @@ static short vcolouring[N_VCOLOUR][5] = {

frame_t *fr = NULL;

if(n_frames < 2)
if(*n_frames < 2)
return(0);

len = (data1 & 0x3f) * 2;
@@ -714,8 +714,8 @@ if(voice->klattv[0])

if(flags & 8)
{
fr = CopyFrame(seq[n_frames-1].frame,0);
seq[n_frames-1].frame = fr;
fr = CopyFrame(seq[*n_frames-1].frame,0);
seq[*n_frames-1].frame = fr;
rms = RMS_GLOTTAL1;

// degree of glottal-stop effect depends on closeness of vowel (indicated by f1 freq)
@@ -723,7 +723,7 @@ if(voice->klattv[0])
}
else
{
fr = DuplicateLastFrame(seq,n_frames++,len);
fr = DuplicateLastFrame(seq,(*n_frames)++,len);
if(len > 36)
seq_len_adjust += (len - 36);

@@ -737,7 +737,7 @@ if(voice->klattv[0])

if((vcolour > 0) && (vcolour <= N_VCOLOUR))
{
for(ix=0; ix<n_frames; ix++)
for(ix=0; ix < *n_frames; ix++)
{
fr = CopyFrame(seq[ix].frame,0);
seq[ix].frame = fr;

+ 16
- 4
src/tr_languages.cpp View File

@@ -39,6 +39,7 @@
#define L_qa 0x716100
#define L_grc 0x677263 // grc Ancient Greek
#define L_jbo 0x6a626f // jbo Lojban
#define L_mni 0x6d6e69 // mni Manipuri
#define L_pap 0x706170 // pap Papiamento]
#define L_qvi 0x717669 // qvi Kichwa
#define L_shs 0x736873 // shs Shuswap / Secwepemctsin
@@ -81,7 +82,7 @@ ALPHABET alphabets [] = {
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), AL_WORDS},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, L('g','u'), AL_WORDS},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS},
{"_te", OFFSET_TELUGU, 0xc00, 0xc7f, L('t','e'), 0},
@@ -460,7 +461,7 @@ Translator *SelectTranslator(const char *name)
Translator *tr;

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

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 };
@@ -531,6 +532,8 @@ Translator *SelectTranslator(const char *name)
break;

case L('b','n'): // Bengali
case L('a','s'): // Assamese
case L_mni: // Manipuri (temporary placement - it's not indo-european)
{
static const short stress_lengths_bn[8] = {180, 180, 210, 210, 0, 0, 230, 240};
static const unsigned char stress_amps_bn[8] = {18,18, 18,18, 20,20, 22,22 };
@@ -852,6 +855,7 @@ Translator *SelectTranslator(const char *name)

case L('h','i'): // Hindi
case L('n','e'): // Nepali
case L('o','r'): // Oriya
case L('p','a'): // Punjabi
case L('g','u'): // Gujarati
{
@@ -887,6 +891,11 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->langopts.max_digits = 22;
tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS;
}
else
if(name2 == L('o','r'))
{
tr->letter_bits_offset = OFFSET_ORIYA;
}
SetIndicLetters(tr);
}
break;
@@ -1455,8 +1464,8 @@ SetLengthMods(tr,3); // all equal
break;

case L('t','a'): // Tamil
case L('m','l'): // Malayalam
case L('k','n'): // Kannada
case L('m','l'): // Malayalam
case L('m','r'): // Marathi
case L('t','e'): // Telugu
{
@@ -1464,7 +1473,7 @@ SetLengthMods(tr,3); // all equal
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; // use 'diminished' for unstressed final syllable
tr->langopts.spelling_stress = 1;
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000

@@ -1483,9 +1492,12 @@ SetLengthMods(tr,3); // all equal
else
if(name2 == L('m','l'))
{
static const short stress_lengths_ml[8] = {180, 160, 240, 240, 0, 0, 260, 260};
SetupTranslator(tr,stress_lengths_ml, stress_amps_equal);
tr->letter_bits_offset = OFFSET_MALAYALAM;
tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_OMIT_1_HUNDRED;
tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY;
tr->langopts.stress_rule = 13; // 1st syllable, unless 1st vowel is short and 2nd is long
}
else
if(name2 == L('k','n'))

+ 34
- 17
src/translate.cpp View File

@@ -461,6 +461,8 @@ int IsSpace(unsigned int c)
return(0);
if((c >= 0x2500) && (c < 0x25a0))
return(1); // box drawing characters
if((c >= 0xfff9) && (c <= 0xffff))
return(1); // unicode specials
// if(wcschr(chars_space,c))
// return(1);
return(iswspace(c));
@@ -863,6 +865,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
int wflags;
int wmark;
int was_unpronouncable = 0;
int loopcount;
WORD_TAB wtab_null[8];

// translate these to get pronunciations of plural 's' suffix (different forms depending on
@@ -1198,7 +1201,7 @@ if(end_type & SUFX_UNPRON)

found = 0;
confirm_prefix = 1;
for (int loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++)
for (loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++)
{
// Found a standard prefix, remove it and retranslate
// loopcount guards against an endless loop
@@ -1730,7 +1733,7 @@ int SetTranslator2(const char *new_language)
translator2 = SelectTranslator(new_language);
strcpy(translator2_language,new_language);

if(LoadDictionary(translator2, new_language, 0) != 0)
if(LoadDictionary(translator2, translator2->dictionary_name, 0) != 0)
{
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
new_phoneme_tab = -1;
@@ -2052,7 +2055,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
pre_pause = 1;
}

plist2 = &ph_list2[n_ph_list2];
stress = 0;
next_stress = 1;
srcix = 0;
@@ -2080,6 +2082,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
tr->prev_dict_flags[0] = 0;
tr->prev_dict_flags[1] = 0;
}
plist2 = &ph_list2[n_ph_list2];

if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER))
{
@@ -2296,8 +2299,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa



static int EmbeddedCommand(unsigned int &source_index)
{//===================================================
static int EmbeddedCommand(unsigned int *source_index_out)
{//=======================================================
// An embedded command to change the pitch, volume, etc.
// returns number of commands added to embedded_list

@@ -2308,6 +2311,7 @@ static int EmbeddedCommand(unsigned int &source_index)
unsigned char c;
char *p;
int cmd;
int source_index = *source_index_out;

c = source[source_index];
if(c == '+')
@@ -2355,6 +2359,7 @@ static int EmbeddedCommand(unsigned int &source_index)
}

embedded_list[embedded_ix++] = cmd + sign + (value << 8);
*source_index_out = source_index;
return(1);
} // end of EmbeddedCommand

@@ -2762,7 +2767,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
}
else
{
embedded_count += EmbeddedCommand(source_index);
embedded_count += EmbeddedCommand(&source_index);
prev_in_save = prev_in;
// replace the embedded command by spaces
memset(&source[srcix],' ',source_index-srcix);
@@ -2932,19 +2937,25 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
}

letter_count++;

if(tr->letter_bits_offset > 0)
if(c != ' ')
{
if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) ||
((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250)))
letter_count++;

if(tr->letter_bits_offset > 0)
{
// Don't mix native and Latin characters in the same word
// Break into separate words
c = ' ';
space_inserted = 1;
word_flags |= FLAG_HYPHEN_AFTER;
next_word_flags |= FLAG_HYPHEN;
if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) ||
((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250)))
{
// Don't mix native and Latin characters in the same word
// Break into separate words
if(IsAlpha(prev_out))
{
c = ' ';
space_inserted = 1;
word_flags |= FLAG_HYPHEN_AFTER;
next_word_flags |= FLAG_HYPHEN;
}
}
}
}

@@ -2983,6 +2994,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{
int next2_in;
utf8_in(&next2_in,&source[source_index + next_in_nbytes]);

if((tr->translator_name == L('n','l')) && (letter_count==2) && (c == 'j') && (prev_in == 'I'))
{
// Dutch words may capitalise initial IJ, don't split
}
else
if(IsAlpha(next2_in))
{
// changing from upper to lower case, start new word at the last uppercase, if 3 or more letters

+ 11
- 9
src/voices.cpp View File

@@ -178,7 +178,7 @@ static MNEM_TAB keyword_tab[] = {

#define N_VOICE_VARIANTS 12
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,6,7,0};
const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,6,0};
const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0};
const char *variant_lists[3] = {variants_either, variants_male, variants_female};

@@ -249,11 +249,11 @@ static void SetToneAdjust(voice_t *voice, int *tone_pts)
height2 = tone_pts[pt+1];
if((freq2 - freq1) > 0)
{
rate = double(height2-height1)/(freq2-freq1);
rate = (double)(height2-height1)/(freq2-freq1);

for(ix=freq1; ix<freq2; ix++)
{
y = height1 + int(rate * (ix-freq1));
y = height1 + (int)(rate * (ix-freq1));
if(y > 255)
y = 255;
voice->tone_adjust[ix] = y;
@@ -489,11 +489,11 @@ static void VoiceFormant(char *p)
return;

if(freq >= 0)
voice->freq[formant] = int(freq * 2.56001);
voice->freq[formant] = (int)(freq * 2.56001);
if(height >= 0)
voice->height[formant] = int(height * 2.56001);
voice->height[formant] = (int)(height * 2.56001);
if(width >= 0)
voice->width[formant] = int(width * 2.56001);
voice->width[formant] = (int)(width * 2.56001);
voice->freqadd[formant] = freqadd;
}

@@ -805,7 +805,7 @@ voice_t *LoadVoice(const char *vname, int control)
n = sscanf(p,"%d %d",&pitch1,&pitch2);
voice->pitch_base = (pitch1 - 9) << 12;
voice->pitch_range = (pitch2 - pitch1) * 108;
factor = double(pitch1 - 82)/82;
factor = (double)(pitch1 - 82)/82;
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
}
break;
@@ -1068,7 +1068,6 @@ voice_t *LoadVoice(const char *vname, int control)
if((ix = SelectPhonemeTableName(phonemes_name)) < 0)
{
fprintf(stderr,"Unknown phoneme table: '%s'\n",phonemes_name);
ix = 0;
}
voice->phoneme_tab_ix = ix;
new_translator->phoneme_tab_ix = ix;
@@ -1587,6 +1586,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
vp = voices[ix];
// is the main voice the required gender?
skip=0;

if((gender != 0) && (vp->gender != gender))
{
skip=1;
@@ -1595,6 +1595,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
{
skip=1;
}

if(skip==0)
{
voices2[ix2++] = vp;
@@ -1879,7 +1880,8 @@ espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector)

void FreeVoiceList()
{//=================
for(int ix=0; ix<n_voices_list; ix++)
int ix;
for(ix=0; ix<n_voices_list; ix++)
{
if(voices_list[ix] != NULL)
{

+ 14
- 14
src/wavegen.cpp View File

@@ -1016,16 +1016,16 @@ static void AdvanceParameters()
for(ix=0; ix <= wvoice->n_harmonic_peaks; ix++)
{
peaks[ix].freq1 += peaks[ix].freq_inc;
peaks[ix].freq = int(peaks[ix].freq1);
peaks[ix].freq = (int)peaks[ix].freq1;
peaks[ix].height1 += peaks[ix].height_inc;
if((peaks[ix].height = int(peaks[ix].height1)) < 0)
if((peaks[ix].height = (int)peaks[ix].height1) < 0)
peaks[ix].height = 0;
peaks[ix].left1 += peaks[ix].left_inc;
peaks[ix].left = int(peaks[ix].left1);
peaks[ix].left = (int)peaks[ix].left1;
if(ix < 3)
{
peaks[ix].right1 += peaks[ix].right_inc;
peaks[ix].right = int(peaks[ix].right1);
peaks[ix].right = (int)peaks[ix].right1;
}
else
{
@@ -1038,10 +1038,10 @@ static void AdvanceParameters()
if(ix < 7)
{
peaks[ix].freq1 += peaks[ix].freq_inc;
peaks[ix].freq = int(peaks[ix].freq1);
peaks[ix].freq = (int)peaks[ix].freq1;
}
peaks[ix].height1 += peaks[ix].height_inc;
if((peaks[ix].height = int(peaks[ix].height1)) < 0)
if((peaks[ix].height = (int)peaks[ix].height1) < 0)
peaks[ix].height = 0;
}

@@ -1157,7 +1157,7 @@ static int ApplyBreath(void)
if((amp = wvoice->breath[ix]) != 0)
{
amp *= (peaks[ix].height >> 14);
value += int(resonator(&rbreath[ix],noise) * amp);
value += (int)resonator(&rbreath[ix],noise) * amp;
}
}
#endif
@@ -1255,7 +1255,7 @@ int Wavegen()
for(pk=wvoice->n_harmonic_peaks+1; pk<N_PEAKS; pk++)
{
// find the nearest harmonic for HF peaks where we don't use shape
peak_harmonic[pk] = peaks[pk].freq / (wdata.pitch*16);
peak_harmonic[pk] = ((peaks[pk].freq / (wdata.pitch*8)) + 1) / 2;
}

// adjust amplitude to compensate for fewer harmonics at higher pitch
@@ -1357,12 +1357,12 @@ int Wavegen()

for(h=1; h<=h_switch_sign; h++)
{
total += (int(sin_tab[theta >> 5]) * harmspect[h]);
total += ((int)sin_tab[theta >> 5] * harmspect[h]);
theta += waveph;
}
while(h<=maxh)
{
total -= (int(sin_tab[theta >> 5]) * harmspect[h]);
total -= ((int)sin_tab[theta >> 5] * harmspect[h]);
theta += waveph;
h++;
}
@@ -1807,27 +1807,27 @@ if(option_log_frames)
if(ix < 7)
{
peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
peaks[ix].freq = int(peaks[ix].freq1);
peaks[ix].freq = (int)peaks[ix].freq1;
next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
peaks[ix].freq_inc = ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4; // lower headroom for fixed point math
}

peaks[ix].height1 = (fr1->fheight[ix] * v->height[ix]) << 6;
peaks[ix].height = int(peaks[ix].height1);
peaks[ix].height = (int)peaks[ix].height1;
next = (fr2->fheight[ix] * v->height[ix]) << 6;
peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2;

if((ix <= 5) && (ix <= wvoice->n_harmonic_peaks))
{
peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10;
peaks[ix].left = int(peaks[ix].left1);
peaks[ix].left = (int)peaks[ix].left1;
next = (fr2->fwidth[ix] * v->width[ix]) << 10;
peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length2;

if(ix < 3)
{
peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10;
peaks[ix].right = int(peaks[ix].right1);
peaks[ix].right = (int)peaks[ix].right1;
next = (fr2->fright[ix] * v->width[ix]) << 10;
peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2;
}

Loading…
Cancel
Save