Browse Source

Merge branch 'master' into android

Conflicts:
	README.md
master
Reece H. Dunn 11 years ago
parent
commit
056562a6e3
100 changed files with 312120 additions and 10746 deletions
  1. 4
    1
      .gitignore
  2. 211
    69
      Makefile.am
  3. 0
    4
      README.md
  4. 53
    10
      configure.ac
  5. 33
    13
      dictsource/an_rules
  6. 133
    194
      dictsource/as_list
  7. 166
    208
      dictsource/as_rules
  8. 73
    0
      dictsource/bn_list
  9. 926
    698
      dictsource/da_rules
  10. 2
    0
      dictsource/de_list
  11. 1
    0
      dictsource/de_rules
  12. 591
    153
      dictsource/en_list
  13. 6257
    5963
      dictsource/en_rules
  14. 84
    140
      dictsource/es_list
  15. 283
    279
      dictsource/es_rules
  16. 199811
    0
      dictsource/extra/ru_listx
  17. 57669
    0
      dictsource/extra/zh_listx
  18. 33760
    0
      dictsource/extra/zhy_list
  19. 3969
    52
      dictsource/fa_list
  20. 258
    40
      dictsource/fa_rules
  21. 136
    0
      dictsource/gd_list
  22. 410
    0
      dictsource/gd_rules
  23. 155
    120
      dictsource/gu_list
  24. 333
    303
      dictsource/gu_rules
  25. 1
    0
      dictsource/hi_rules
  26. 608
    607
      dictsource/hu_rules
  27. 1637
    330
      dictsource/it_list
  28. 284
    400
      dictsource/it_listx
  29. 492
    358
      dictsource/it_rules
  30. 15
    1
      dictsource/kn_rules
  31. 166
    0
      dictsource/lfn_list
  32. 175
    0
      dictsource/lfn_rules
  33. 3
    3
      dictsource/nl_list
  34. 4
    2
      dictsource/nl_rules
  35. 90
    39
      dictsource/om_list
  36. 61
    84
      dictsource/om_rules
  37. 210
    0
      dictsource/or_list
  38. 335
    0
      dictsource/or_rules
  39. 37
    12
      dictsource/pt_list
  40. 45
    14
      dictsource/pt_rules
  41. 2
    1
      dictsource/sk_list
  42. 58
    7
      dictsource/ta_list
  43. 270
    15
      dictsource/ta_rules
  44. 4
    1
      dictsource/te_rules
  45. 35
    13
      dictsource/ur_list
  46. 14
    1
      dictsource/ur_rules
  47. 536
    314
      dictsource/vi_rules
  48. 7
    3
      docs/dictionary.html
  49. 6
    5
      docs/phonemes.html
  50. 14
    0
      docs/voices.html
  51. BIN
      espeak-data/mbrola_ph/in1_phtrans
  52. BIN
      espeak-data/mbrola_ph/ir1_phtrans
  53. 1
    1
      espeak-data/voices/en-us
  54. 3
    1
      espeak-data/voices/europe/it
  55. 9
    4
      espeak-data/voices/mb/mb-ir1
  56. 6
    0
      espeak-data/voices/other/lfn
  57. 3
    0
      espeak-data/voices/test/gd
  58. 1
    1
      espeak-data/voices/test/om
  59. 2
    0
      espeak-data/voices/test/or
  60. 1
    2
      espeak-data/voices/test/sl
  61. 45
    3
      mkdictlist
  62. 53
    0
      phsource/intonation
  63. 259
    83
      phsource/mbrola/ir1
  64. 6
    0
      phsource/ph_aragon
  65. 8
    0
      phsource/ph_dutch
  66. 19
    1
      phsource/ph_english
  67. 7
    0
      phsource/ph_english_sc
  68. 25
    6
      phsource/ph_english_us
  69. 7
    0
      phsource/ph_english_wm
  70. 76
    0
      phsource/ph_gujarati
  71. 26
    15
      phsource/ph_italian
  72. 41
    0
      phsource/ph_malayalam
  73. 95
    0
      phsource/ph_manipuri
  74. 105
    0
      phsource/ph_oriya
  75. 99
    59
      phsource/ph_oromo
  76. 336
    6
      phsource/ph_s_gaelic
  77. 4
    0
      phsource/ph_spanish_la
  78. 16
    9
      phsource/ph_vietnam_sgn
  79. 10
    2
      phsource/phonemes
  80. BIN
      phsource/vdiph/@i_4
  81. BIN
      phsource/vdiph/a#u
  82. BIN
      phsource/vnasal/ai_n
  83. BIN
      phsource/vnasal/au_n
  84. 8
    1
      platforms/windows/make_espeak.iss
  85. 1
    1
      platforms/windows/make_espeakedit.iss
  86. 37
    0
      platforms/windows/mingw/espeak_test_lib.c
  87. 169
    0
      platforms/windows/mingw/espeak_win_1_0.txt
  88. 16
    0
      platforms/windows/mingw/readme.txt
  89. 5
    5
      platforms/windows/windows_sapi/version.rc2
  90. 10
    1
      src/compiledata.cpp
  91. 24
    14
      src/compiledict.cpp
  92. 44
    18
      src/dictionary.cpp
  93. 26
    10
      src/espeakedit.cpp
  94. 18
    11
      src/event.cpp
  95. 1
    0
      src/extras.cpp
  96. 2
    0
      src/fifo.cpp
  97. 9
    6
      src/main.h
  98. 52
    29
      src/numbers.cpp
  99. 8
    0
      src/options.cpp
  100. 0
    0
      src/options.h

+ 4
- 1
.gitignore View File

@@ -83,13 +83,16 @@ Makefile
dictsource/*_extra
dictsource/dict_log
dictsource/dict_phonemes
dictsource/ru_listx
dictsource/zh_listx
dictsource/zhy_list

phsource/compile_prog_log
phsource/compile_report
phsource/error_intonation
phsource/error_log
phsource/phonemes.stamp

espeak-data/dir.stamp
espeak-data/config
espeak-data/dictsource
espeak-data/phsource

+ 211
- 69
Makefile.am View File

@@ -6,7 +6,7 @@ INCDIR=@includedir@/espeak
LIBDIR=@libdir@
DATADIR=$(PREFIX)/share/espeak-data

SHARED_VERSION=2:47:1 # = *.so.1.1.47
SHARED_VERSION=2:48:1 # = *.so.1.1.48

MKDIR=mkdir -p

@@ -169,8 +169,111 @@ src_espeakedit_CXXFLAGS = ${WX_CXXFLAGS} $(common_FLAGS) $(libespeak_FLAGS) $(wa
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT
src_espeakedit_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(espeakedit_SOURCE) $(wave_SOURCE)

espeak-data/phontab: src/espeakedit
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile
##### phoneme data:

espeak-data/phondata: phsource/phonemes.stamp
espeak-data/phondata-manifest: phsource/phonemes.stamp
espeak-data/phonindex: phsource/phonemes.stamp
espeak-data/phontab: phsource/phonemes.stamp
espeak-data/intonations: phsource/phonemes.stamp

phsource/phonemes.stamp: \
phsource/ph_afrikaans \
phsource/ph_akan \
phsource/ph_albanian \
phsource/ph_amhari \
phsource/ph_aragon \
phsource/ph_armenian \
phsource/ph_assamese \
phsource/ph_azerbaijani \
phsource/ph_base2 \
phsource/ph_bengali \
phsource/ph_bulgarian \
phsource/ph_catalan \
phsource/ph_consonants \
phsource/ph_croatian \
phsource/ph_czech \
phsource/ph_danish \
phsource/ph_dari \
phsource/ph_divehi \
phsource/ph_dutch \
phsource/ph_english \
phsource/ph_english_n \
phsource/ph_english_rp \
phsource/ph_english_sc \
phsource/ph_english_us \
phsource/ph_english_wi \
phsource/ph_english_wm \
phsource/ph_esperanto \
phsource/ph_estonian \
phsource/ph_farsi \
phsource/ph_finnish \
phsource/ph_french \
phsource/ph_french_ca \
phsource/ph_georgian \
phsource/ph_german \
phsource/ph_greek \
phsource/ph_greek_ancient \
phsource/ph_greenlandic \
phsource/ph_gujarati \
phsource/ph_haitian \
phsource/ph_hindi \
phsource/ph_hungarian \
phsource/ph_icelandic \
phsource/ph_indonesian \
phsource/ph_irish \
phsource/ph_italian \
phsource/ph_kannada \
phsource/ph_kazakh \
phsource/ph_kinyarwanda \
phsource/ph_korean \
phsource/ph_kurdish \
phsource/ph_latin \
phsource/ph_latvian \
phsource/ph_lithuanian \
phsource/ph_lojban \
phsource/ph_macedonian \
phsource/ph_malayalam \
phsource/ph_maltese \
phsource/ph_manipuri \
phsource/ph_nahuatl \
phsource/ph_nepali \
phsource/ph_northern-sotho \
phsource/ph_norwegian \
phsource/ph_oriya \
phsource/ph_oromo \
phsource/ph_polish \
phsource/ph_portugal \
phsource/ph_pt_brazil \
phsource/ph_punjabi \
phsource/ph_romanian \
phsource/ph_russian \
phsource/ph_s_gaelic \
phsource/ph_serbian \
phsource/ph_setswana \
phsource/ph_sinhala \
phsource/ph_slovak \
phsource/ph_slovenian \
phsource/ph_spanish \
phsource/ph_spanish_la \
phsource/ph_swahili \
phsource/ph_swedish \
phsource/ph_tamil \
phsource/ph_tatar \
phsource/ph_telugu \
phsource/ph_tibetan \
phsource/ph_turkish \
phsource/ph_urdu \
phsource/ph_vietnam \
phsource/ph_vietnam_hue \
phsource/ph_vietnam_sgn \
phsource/ph_welsh \
phsource/ph_wolof \
phsource/ph_zh \
phsource/ph_zh_yue \
phsource/phonemes \
src/espeakedit
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile && touch $@

##### android targets:

@@ -224,6 +327,7 @@ dictionaries: src/espeak \
espeak-data/fi_dict \
espeak-data/fr_dict \
espeak-data/ga_dict \
espeak-data/gd_dict \
espeak-data/grc_dict \
espeak-data/gu_dict \
espeak-data/hbs_dict \
@@ -240,6 +344,7 @@ dictionaries: src/espeak \
espeak-data/ko_dict \
espeak-data/ku_dict \
espeak-data/la_dict \
espeak-data/lfn_dict \
espeak-data/lt_dict \
espeak-data/lv_dict \
espeak-data/mk_dict \
@@ -250,6 +355,7 @@ dictionaries: src/espeak \
espeak-data/nl_dict \
espeak-data/no_dict \
espeak-data/om_dict \
espeak-data/or_dict \
espeak-data/pa_dict \
espeak-data/pap_dict \
espeak-data/pl_dict \
@@ -273,395 +379,431 @@ dictionaries: src/espeak \
af: espeak-data/af_dict
dictsource/af_extra:
touch dictsource/af_extra
espeak-data/af_dict: src/espeak espeak-data/phontab dictsource/af_list dictsource/af_rules dictsource/af_extra
espeak-data/af_dict: src/espeak phsource/phonemes.stamp dictsource/af_list dictsource/af_rules dictsource/af_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=af && cd ..

am: espeak-data/am_dict
dictsource/am_extra:
touch dictsource/am_extra
espeak-data/am_dict: src/espeak espeak-data/phontab dictsource/am_list dictsource/am_rules dictsource/am_extra
espeak-data/am_dict: src/espeak phsource/phonemes.stamp dictsource/am_list dictsource/am_rules dictsource/am_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=am && cd ..

an: espeak-data/an_dict
dictsource/an_extra:
touch dictsource/an_extra
espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra
espeak-data/an_dict: src/espeak phsource/phonemes.stamp 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
espeak-data/as_dict: src/espeak phsource/phonemes.stamp 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
espeak-data/az_dict: src/espeak espeak-data/phontab dictsource/az_list dictsource/az_rules dictsource/az_extra
espeak-data/az_dict: src/espeak phsource/phonemes.stamp dictsource/az_list dictsource/az_rules dictsource/az_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=az && cd ..

bg: espeak-data/bg_dict
dictsource/bg_extra:
touch dictsource/bg_extra
espeak-data/bg_dict: src/espeak espeak-data/phontab dictsource/bg_list dictsource/bg_listx dictsource/bg_rules dictsource/bg_extra
espeak-data/bg_dict: src/espeak phsource/phonemes.stamp dictsource/bg_list dictsource/bg_listx dictsource/bg_rules dictsource/bg_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=bg && cd ..

bn: espeak-data/bn_dict
dictsource/bn_extra:
touch dictsource/bn_extra
espeak-data/bn_dict: src/espeak espeak-data/phontab dictsource/bn_list dictsource/bn_rules dictsource/bn_extra
espeak-data/bn_dict: src/espeak phsource/phonemes.stamp dictsource/bn_list dictsource/bn_rules dictsource/bn_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=bn && cd ..

ca: espeak-data/ca_dict
dictsource/ca_extra:
touch dictsource/ca_extra
espeak-data/ca_dict: src/espeak espeak-data/phontab dictsource/ca_list dictsource/ca_rules dictsource/ca_extra
espeak-data/ca_dict: src/espeak phsource/phonemes.stamp dictsource/ca_list dictsource/ca_rules dictsource/ca_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ca && cd ..

cs: espeak-data/cs_dict
dictsource/cs_extra:
touch dictsource/cs_extra
espeak-data/cs_dict: src/espeak espeak-data/phontab dictsource/cs_list dictsource/cs_rules dictsource/cs_extra
espeak-data/cs_dict: src/espeak phsource/phonemes.stamp dictsource/cs_list dictsource/cs_rules dictsource/cs_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=cs && cd ..

cy: espeak-data/cy_dict
dictsource/cy_extra:
touch dictsource/cy_extra
espeak-data/cy_dict: src/espeak espeak-data/phontab dictsource/cy_list dictsource/cy_rules dictsource/cy_extra
espeak-data/cy_dict: src/espeak phsource/phonemes.stamp dictsource/cy_list dictsource/cy_rules dictsource/cy_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=cy && cd ..

da: espeak-data/da_dict
dictsource/da_extra:
touch dictsource/da_extra
espeak-data/da_dict: src/espeak espeak-data/phontab dictsource/da_list dictsource/da_rules dictsource/da_extra
espeak-data/da_dict: src/espeak phsource/phonemes.stamp dictsource/da_list dictsource/da_rules dictsource/da_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=da && cd ..

de: espeak-data/de_dict
dictsource/de_extra:
touch dictsource/de_extra
espeak-data/de_dict: src/espeak espeak-data/phontab dictsource/de_list dictsource/de_rules dictsource/de_extra
espeak-data/de_dict: src/espeak phsource/phonemes.stamp dictsource/de_list dictsource/de_rules dictsource/de_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=de && cd ..

el: espeak-data/el_dict
dictsource/el_extra:
touch dictsource/el_extra
espeak-data/el_dict: src/espeak espeak-data/phontab dictsource/el_list dictsource/el_rules dictsource/el_extra
espeak-data/el_dict: src/espeak phsource/phonemes.stamp dictsource/el_list dictsource/el_rules dictsource/el_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=el && cd ..

en: espeak-data/en_dict
dictsource/en_extra:
touch dictsource/en_extra
espeak-data/en_dict: src/espeak espeak-data/phontab dictsource/en_list dictsource/en_rules dictsource/en_extra
espeak-data/en_dict: src/espeak phsource/phonemes.stamp dictsource/en_list dictsource/en_rules dictsource/en_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=en && cd ..

eo: espeak-data/eo_dict
dictsource/eo_extra:
touch dictsource/eo_extra
espeak-data/eo_dict: src/espeak espeak-data/phontab dictsource/eo_list dictsource/eo_rules dictsource/eo_extra
espeak-data/eo_dict: src/espeak phsource/phonemes.stamp dictsource/eo_list dictsource/eo_rules dictsource/eo_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=eo && cd ..

es: espeak-data/es_dict
dictsource/es_extra:
touch dictsource/es_extra
espeak-data/es_dict: src/espeak espeak-data/phontab dictsource/es_list dictsource/es_rules dictsource/es_extra
espeak-data/es_dict: src/espeak phsource/phonemes.stamp dictsource/es_list dictsource/es_rules dictsource/es_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=es && cd ..

et: espeak-data/et_dict
dictsource/et_extra:
touch dictsource/et_extra
espeak-data/et_dict: src/espeak espeak-data/phontab dictsource/et_list dictsource/et_rules dictsource/et_extra
espeak-data/et_dict: src/espeak phsource/phonemes.stamp dictsource/et_list dictsource/et_rules dictsource/et_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=et && cd ..

fa: espeak-data/fa_dict
dictsource/fa_extra:
touch dictsource/fa_extra
espeak-data/fa_dict: src/espeak espeak-data/phontab dictsource/fa_list dictsource/fa_rules dictsource/fa_extra
espeak-data/fa_dict: src/espeak phsource/phonemes.stamp dictsource/fa_list dictsource/fa_rules dictsource/fa_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=fa && cd ..

fi: espeak-data/fi_dict
dictsource/fi_extra:
touch dictsource/fi_extra
espeak-data/fi_dict: src/espeak espeak-data/phontab dictsource/fi_list dictsource/fi_rules dictsource/fi_extra
espeak-data/fi_dict: src/espeak phsource/phonemes.stamp dictsource/fi_list dictsource/fi_rules dictsource/fi_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=fi && cd ..

fr: espeak-data/fr_dict
dictsource/fr_extra:
touch dictsource/fr_extra
espeak-data/fr_dict: src/espeak espeak-data/phontab dictsource/fr_list dictsource/fr_rules dictsource/fr_extra
espeak-data/fr_dict: src/espeak phsource/phonemes.stamp dictsource/fr_list dictsource/fr_rules dictsource/fr_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=fr && cd ..

ga: espeak-data/ga_dict
dictsource/ga_extra:
touch dictsource/ga_extra
espeak-data/ga_dict: src/espeak espeak-data/phontab dictsource/ga_list dictsource/ga_rules dictsource/ga_extra
espeak-data/ga_dict: src/espeak phsource/phonemes.stamp dictsource/ga_list dictsource/ga_rules dictsource/ga_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ga && cd ..

gd: espeak-data/gd_dict
dictsource/gd_extra:
touch dictsource/gd_extra
espeak-data/gd_dict: src/espeak phsource/phonemes.stamp dictsource/gd_list dictsource/gd_rules dictsource/gd_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=gd && cd ..

grc: espeak-data/grc_dict
dictsource/grc_extra:
touch dictsource/grc_extra
espeak-data/grc_dict: src/espeak espeak-data/phontab dictsource/grc_list dictsource/grc_rules dictsource/grc_extra
espeak-data/grc_dict: src/espeak phsource/phonemes.stamp 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
espeak-data/gu_dict: src/espeak phsource/phonemes.stamp 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 ..

hbs: espeak-data/hbs_dict
dictsource/hbs_extra:
touch dictsource/hbs_extra
espeak-data/hbs_dict: src/espeak espeak-data/phontab dictsource/hbs_list dictsource/hbs_rules dictsource/hbs_extra
espeak-data/hbs_dict: src/espeak phsource/phonemes.stamp dictsource/hbs_list dictsource/hbs_rules dictsource/hbs_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=hbs && cd ..

hi: espeak-data/hi_dict
dictsource/hi_extra:
touch dictsource/hi_extra
espeak-data/hi_dict: src/espeak espeak-data/phontab dictsource/hi_list dictsource/hi_rules dictsource/hi_extra
espeak-data/hi_dict: src/espeak phsource/phonemes.stamp dictsource/hi_list dictsource/hi_rules dictsource/hi_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=hi && cd ..

hu: espeak-data/hu_dict
dictsource/hu_extra:
touch dictsource/hu_extra
espeak-data/hu_dict: src/espeak espeak-data/phontab dictsource/hu_list dictsource/hu_rules dictsource/hu_extra
espeak-data/hu_dict: src/espeak phsource/phonemes.stamp dictsource/hu_list dictsource/hu_rules dictsource/hu_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=hu && cd ..

hy: espeak-data/hy_dict
dictsource/hy_extra:
touch dictsource/hy_extra
espeak-data/hy_dict: src/espeak espeak-data/phontab dictsource/hy_list dictsource/hy_rules dictsource/hy_extra
espeak-data/hy_dict: src/espeak phsource/phonemes.stamp dictsource/hy_list dictsource/hy_rules dictsource/hy_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=hy && cd ..

id: espeak-data/id_dict
dictsource/id_extra:
touch dictsource/id_extra
espeak-data/id_dict: src/espeak espeak-data/phontab dictsource/id_list dictsource/id_rules dictsource/id_extra
espeak-data/id_dict: src/espeak phsource/phonemes.stamp dictsource/id_list dictsource/id_rules dictsource/id_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=id && cd ..

is: espeak-data/is_dict
dictsource/is_extra:
touch dictsource/is_extra
espeak-data/is_dict: src/espeak espeak-data/phontab dictsource/is_list dictsource/is_rules dictsource/is_extra
espeak-data/is_dict: src/espeak phsource/phonemes.stamp dictsource/is_list dictsource/is_rules dictsource/is_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=is && cd ..

it: espeak-data/it_dict
dictsource/it_extra:
touch dictsource/it_extra
espeak-data/it_dict: src/espeak espeak-data/phontab dictsource/it_list dictsource/it_listx dictsource/it_rules dictsource/it_extra
espeak-data/it_dict: src/espeak phsource/phonemes.stamp dictsource/it_list dictsource/it_listx dictsource/it_rules dictsource/it_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=it && cd ..

jbo: espeak-data/jbo_dict
dictsource/jbo_extra:
touch dictsource/jbo_extra
espeak-data/jbo_dict: src/espeak espeak-data/phontab dictsource/jbo_list dictsource/jbo_rules dictsource/jbo_extra
espeak-data/jbo_dict: src/espeak phsource/phonemes.stamp dictsource/jbo_list dictsource/jbo_rules dictsource/jbo_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=jbo && cd ..

ka: espeak-data/ka_dict
dictsource/ka_extra:
touch dictsource/ka_extra
espeak-data/ka_dict: src/espeak espeak-data/phontab dictsource/ka_list dictsource/ka_rules dictsource/ka_extra
espeak-data/ka_dict: src/espeak phsource/phonemes.stamp dictsource/ka_list dictsource/ka_rules dictsource/ka_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ka && cd ..

kl: espeak-data/kl_dict
dictsource/kl_extra:
touch dictsource/kl_extra
espeak-data/kl_dict: src/espeak espeak-data/phontab dictsource/kl_list dictsource/kl_rules dictsource/kl_extra
espeak-data/kl_dict: src/espeak phsource/phonemes.stamp dictsource/kl_list dictsource/kl_rules dictsource/kl_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=kl && cd ..

kn: espeak-data/kn_dict
dictsource/kn_extra:
touch dictsource/kn_extra
espeak-data/kn_dict: src/espeak espeak-data/phontab dictsource/kn_list dictsource/kn_rules dictsource/kn_extra
espeak-data/kn_dict: src/espeak phsource/phonemes.stamp dictsource/kn_list dictsource/kn_rules dictsource/kn_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=kn && cd ..

ko: espeak-data/ko_dict
dictsource/ko_extra:
touch dictsource/ko_extra
espeak-data/ko_dict: src/espeak espeak-data/phontab dictsource/ko_list dictsource/ko_rules dictsource/ko_extra
espeak-data/ko_dict: src/espeak phsource/phonemes.stamp dictsource/ko_list dictsource/ko_rules dictsource/ko_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ko && cd ..

ku: espeak-data/ku_dict
dictsource/ku_extra:
touch dictsource/ku_extra
espeak-data/ku_dict: src/espeak espeak-data/phontab dictsource/ku_list dictsource/ku_rules dictsource/ku_extra
espeak-data/ku_dict: src/espeak phsource/phonemes.stamp dictsource/ku_list dictsource/ku_rules dictsource/ku_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ku && cd ..

la: espeak-data/la_dict
dictsource/la_extra:
touch dictsource/la_extra
espeak-data/la_dict: src/espeak espeak-data/phontab dictsource/la_list dictsource/la_rules dictsource/la_extra
espeak-data/la_dict: src/espeak phsource/phonemes.stamp dictsource/la_list dictsource/la_rules dictsource/la_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=la && cd ..

lfn: espeak-data/lfn_dict
dictsource/lfn_extra:
touch dictsource/lfn_extra
espeak-data/lfn_dict: src/espeak phsource/phonemes.stamp dictsource/lfn_list dictsource/lfn_rules dictsource/lfn_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=lfn && cd ..

lt: espeak-data/lt_dict
dictsource/lt_extra:
touch dictsource/lt_extra
espeak-data/lt_dict: src/espeak espeak-data/phontab dictsource/lt_list dictsource/lt_rules dictsource/lt_extra
espeak-data/lt_dict: src/espeak phsource/phonemes.stamp dictsource/lt_list dictsource/lt_rules dictsource/lt_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=lt && cd ..

lv: espeak-data/lv_dict
dictsource/lv_extra:
touch dictsource/lv_extra
espeak-data/lv_dict: src/espeak espeak-data/phontab dictsource/lv_list dictsource/lv_rules dictsource/lv_extra
espeak-data/lv_dict: src/espeak phsource/phonemes.stamp dictsource/lv_list dictsource/lv_rules dictsource/lv_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=lv && cd ..

mk: espeak-data/mk_dict
dictsource/mk_extra:
touch dictsource/mk_extra
espeak-data/mk_dict: src/espeak espeak-data/phontab dictsource/mk_list dictsource/mk_rules dictsource/mk_extra
espeak-data/mk_dict: src/espeak phsource/phonemes.stamp dictsource/mk_list dictsource/mk_rules dictsource/mk_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=mk && cd ..

ml: espeak-data/ml_dict
dictsource/ml_extra:
touch dictsource/ml_extra
espeak-data/ml_dict: src/espeak espeak-data/phontab dictsource/ml_list dictsource/ml_rules dictsource/ml_extra
espeak-data/ml_dict: src/espeak phsource/phonemes.stamp dictsource/ml_list dictsource/ml_rules dictsource/ml_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ml && cd ..

ms: espeak-data/ms_dict
dictsource/ms_extra:
touch dictsource/ms_extra
espeak-data/ms_dict: src/espeak espeak-data/phontab dictsource/ms_list dictsource/ms_rules dictsource/ms_extra
espeak-data/ms_dict: src/espeak phsource/phonemes.stamp dictsource/ms_list dictsource/ms_rules dictsource/ms_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ms && cd ..

nci: espeak-data/nci_dict
dictsource/nci_extra:
touch dictsource/nci_extra
espeak-data/nci_dict: src/espeak espeak-data/phontab dictsource/nci_list dictsource/nci_rules dictsource/nci_extra
espeak-data/nci_dict: src/espeak phsource/phonemes.stamp dictsource/nci_list dictsource/nci_rules dictsource/nci_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=nci && cd ..

ne: espeak-data/ne_dict
dictsource/ne_extra:
touch dictsource/ne_extra
espeak-data/ne_dict: src/espeak espeak-data/phontab dictsource/ne_list dictsource/ne_rules dictsource/ne_extra
espeak-data/ne_dict: src/espeak phsource/phonemes.stamp dictsource/ne_list dictsource/ne_rules dictsource/ne_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ne && cd ..

nl: espeak-data/nl_dict
dictsource/nl_extra:
touch dictsource/nl_extra
espeak-data/nl_dict: src/espeak espeak-data/phontab dictsource/nl_list dictsource/nl_rules dictsource/nl_extra
espeak-data/nl_dict: src/espeak phsource/phonemes.stamp dictsource/nl_list dictsource/nl_rules dictsource/nl_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=nl && cd ..

no: espeak-data/no_dict
dictsource/no_extra:
touch dictsource/no_extra
espeak-data/no_dict: src/espeak espeak-data/phontab dictsource/no_list dictsource/no_rules dictsource/no_extra
espeak-data/no_dict: src/espeak phsource/phonemes.stamp 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
espeak-data/om_dict: src/espeak phsource/phonemes.stamp 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 ..

or: espeak-data/or_dict
dictsource/or_extra:
touch dictsource/or_extra
espeak-data/or_dict: src/espeak phsource/phonemes.stamp dictsource/or_list dictsource/or_rules dictsource/or_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=or && cd ..

pa: espeak-data/pa_dict
dictsource/pa_extra:
touch dictsource/pa_extra
espeak-data/pa_dict: src/espeak espeak-data/phontab dictsource/pa_list dictsource/pa_rules dictsource/pa_extra
espeak-data/pa_dict: src/espeak phsource/phonemes.stamp dictsource/pa_list dictsource/pa_rules dictsource/pa_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=pa && cd ..

pap: espeak-data/pap_dict
dictsource/pap_extra:
touch dictsource/pap_extra
espeak-data/pap_dict: src/espeak espeak-data/phontab dictsource/pap_list dictsource/pap_rules dictsource/pap_extra
espeak-data/pap_dict: src/espeak phsource/phonemes.stamp dictsource/pap_list dictsource/pap_rules dictsource/pap_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=pap && cd ..

pl: espeak-data/pl_dict
dictsource/pl_extra:
touch dictsource/pl_extra
espeak-data/pl_dict: src/espeak espeak-data/phontab dictsource/pl_list dictsource/pl_rules dictsource/pl_extra
espeak-data/pl_dict: src/espeak phsource/phonemes.stamp dictsource/pl_list dictsource/pl_rules dictsource/pl_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=pl && cd ..

pt: espeak-data/pt_dict
dictsource/pt_extra:
touch dictsource/pt_extra
espeak-data/pt_dict: src/espeak espeak-data/phontab dictsource/pt_list dictsource/pt_rules dictsource/pt_extra
espeak-data/pt_dict: src/espeak phsource/phonemes.stamp dictsource/pt_list dictsource/pt_rules dictsource/pt_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=pt && cd ..

ro: espeak-data/ro_dict
dictsource/ro_extra:
touch dictsource/ro_extra
espeak-data/ro_dict: src/espeak espeak-data/phontab dictsource/ro_list dictsource/ro_rules dictsource/ro_extra
espeak-data/ro_dict: src/espeak phsource/phonemes.stamp dictsource/ro_list dictsource/ro_rules dictsource/ro_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ro && cd ..

ru: espeak-data/ru_dict
dictsource/ru_extra:
touch dictsource/ru_extra
espeak-data/ru_dict: src/espeak espeak-data/phontab dictsource/ru_list dictsource/ru_rules dictsource/ru_extra
dictsource/ru_listx:
ln -svf extra/ru_listx dictsource/
if HAVE_RU_EXTENDED_DICTIONARY
espeak-data/ru_dict: src/espeak phsource/phonemes.stamp dictsource/ru_list dictsource/ru_rules dictsource/ru_extra dictsource/ru_listx
else
espeak-data/ru_dict: src/espeak phsource/phonemes.stamp dictsource/ru_list dictsource/ru_rules dictsource/ru_extra
endif
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ru && cd ..

si: espeak-data/si_dict
dictsource/si_extra:
touch dictsource/si_extra
espeak-data/si_dict: src/espeak espeak-data/phontab dictsource/si_list dictsource/si_rules dictsource/si_extra
espeak-data/si_dict: src/espeak phsource/phonemes.stamp dictsource/si_list dictsource/si_rules dictsource/si_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=si && cd ..

sk: espeak-data/sk_dict
dictsource/sk_extra:
touch dictsource/sk_extra
espeak-data/sk_dict: src/espeak espeak-data/phontab dictsource/sk_list dictsource/sk_rules dictsource/sk_extra
espeak-data/sk_dict: src/espeak phsource/phonemes.stamp dictsource/sk_list dictsource/sk_rules dictsource/sk_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=sk && cd ..

sl: espeak-data/sl_dict
dictsource/sl_extra:
touch dictsource/sl_extra
espeak-data/sl_dict: src/espeak espeak-data/phontab dictsource/sl_list dictsource/sl_rules dictsource/sl_extra
espeak-data/sl_dict: src/espeak phsource/phonemes.stamp dictsource/sl_list dictsource/sl_rules dictsource/sl_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=sl && cd ..

sq: espeak-data/sq_dict
dictsource/sq_extra:
touch dictsource/sq_extra
espeak-data/sq_dict: src/espeak espeak-data/phontab dictsource/sq_list dictsource/sq_rules dictsource/sq_extra
espeak-data/sq_dict: src/espeak phsource/phonemes.stamp dictsource/sq_list dictsource/sq_rules dictsource/sq_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=sq && cd ..

sv: espeak-data/sv_dict
dictsource/sv_extra:
touch dictsource/sv_extra
espeak-data/sv_dict: src/espeak espeak-data/phontab dictsource/sv_list dictsource/sv_rules dictsource/sv_extra
espeak-data/sv_dict: src/espeak phsource/phonemes.stamp dictsource/sv_list dictsource/sv_rules dictsource/sv_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=sv && cd ..

sw: espeak-data/sw_dict
dictsource/sw_extra:
touch dictsource/sw_extra
espeak-data/sw_dict: src/espeak espeak-data/phontab dictsource/sw_list dictsource/sw_rules dictsource/sw_extra
espeak-data/sw_dict: src/espeak phsource/phonemes.stamp dictsource/sw_list dictsource/sw_rules dictsource/sw_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=sw && cd ..

ta: espeak-data/ta_dict
dictsource/ta_extra:
touch dictsource/ta_extra
espeak-data/ta_dict: src/espeak espeak-data/phontab dictsource/ta_list dictsource/ta_rules dictsource/ta_extra
espeak-data/ta_dict: src/espeak phsource/phonemes.stamp dictsource/ta_list dictsource/ta_rules dictsource/ta_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ta && cd ..

te: espeak-data/te_dict
dictsource/te_extra:
touch dictsource/te_extra
espeak-data/te_dict: src/espeak espeak-data/phontab dictsource/te_list dictsource/te_rules dictsource/te_extra
espeak-data/te_dict: src/espeak phsource/phonemes.stamp dictsource/te_list dictsource/te_rules dictsource/te_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=te && cd ..

tr: espeak-data/tr_dict
dictsource/tr_extra:
touch dictsource/tr_extra
espeak-data/tr_dict: src/espeak espeak-data/phontab dictsource/tr_list dictsource/tr_rules dictsource/tr_extra
espeak-data/tr_dict: src/espeak phsource/phonemes.stamp dictsource/tr_list dictsource/tr_rules dictsource/tr_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=tr && cd ..

ur: espeak-data/ur_dict
dictsource/ur_extra:
touch dictsource/ur_extra
espeak-data/ur_dict: src/espeak espeak-data/phontab dictsource/ur_list dictsource/ur_rules dictsource/ur_extra
espeak-data/ur_dict: src/espeak phsource/phonemes.stamp dictsource/ur_list dictsource/ur_rules dictsource/ur_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=ur && cd ..

vi: espeak-data/vi_dict
dictsource/vi_extra:
touch dictsource/vi_extra
espeak-data/vi_dict: src/espeak espeak-data/phontab dictsource/vi_list dictsource/vi_rules dictsource/vi_extra
espeak-data/vi_dict: src/espeak phsource/phonemes.stamp dictsource/vi_list dictsource/vi_rules dictsource/vi_extra
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=vi && cd ..

zh: espeak-data/zh_dict
dictsource/zh_extra:
touch dictsource/zh_extra
espeak-data/zh_dict: src/espeak espeak-data/phontab dictsource/zh_list dictsource/zh_rules dictsource/zh_extra
dictsource/zh_listx:
ln -svf extra/zh_listx dictsource/
if HAVE_ZH_EXTENDED_DICTIONARY
espeak-data/zh_dict: src/espeak phsource/phonemes.stamp dictsource/zh_list dictsource/zh_rules dictsource/zh_extra dictsource/zh_listx
else
espeak-data/zh_dict: src/espeak phsource/phonemes.stamp dictsource/zh_list dictsource/zh_rules dictsource/zh_extra
endif
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zh && cd ..

zhy: espeak-data/zhy_dict
dictsource/zhy_extra:
touch dictsource/zhy_extra
espeak-data/zhy_dict: src/espeak espeak-data/phontab dictsource/zhy_rules dictsource/zhy_extra
dictsource/zhy_list:
ln -svf extra/zhy_list dictsource/
if HAVE_ZHY_EXTENDED_DICTIONARY
espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra dictsource/zhy_list
else
espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra
endif
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zhy && cd ..

+ 0
- 4
README.md View File

@@ -103,10 +103,6 @@ you need to self-sign the package. You can do this by:

Now, you can install the APK using the `adb` tool:

$ adb install -r bin/eSpeakActivity-release-signed.apk

### Enabling eSpeak on the Device

After running, `eSpeakActivity` will extract the `espeakdata.zip` file into its
own data directory to set up the available voices.


+ 53
- 10
configure.ac View File

@@ -1,5 +1,5 @@
AC_PREREQ([2.63])
AC_INIT([eSpeak], [1.47], [https://github.com/rhdunn/espeak/issues], [espeak], [https://github.com/rhdunn/espeak])
AC_INIT([eSpeak], [1.48], [https://github.com/rhdunn/espeak/issues], [espeak], [https://github.com/rhdunn/espeak])
AM_INIT_AUTOMAKE()

m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
@@ -178,6 +178,44 @@ AM_CONDITIONAL(OPT_MBROLA, [test x"$have_mbrola" = xyes])
AM_CONDITIONAL(OPT_SONIC, [test x"$have_sonic" = xyes])
AM_CONDITIONAL(OPT_ASYNC, [test x"$have_async" = xyes])

dnl ================================================================
dnl Extended dictionary checks.
dnl ================================================================

AC_ARG_WITH([extdict-ru],
[AS_HELP_STRING([--with-extdict-ru], [use the extended Russian Dictionary file @<:@default=no@:>@])],
[])

if test "$with_extdict_ru" = "yes" ; then
have_extdict_ru=yes
else
have_extdict_ru=no
fi

AC_ARG_WITH([extdict-zh],
[AS_HELP_STRING([--with-extdict-zh], [use the extended Mandarin Chinese Dictionary file @<:@default=no@:>@])],
[])

if test "$with_extdict_zh" = "yes" ; then
have_extdict_zh=yes
else
have_extdict_zh=no
fi

AC_ARG_WITH([extdict-zhy],
[AS_HELP_STRING([--with-extdict-zhy], [use the extended Cantonese Chinese Dictionary file @<:@default=no@:>@])],
[])

if test "$with_extdict_zhy" = "yes" ; then
have_extdict_zhy=yes
else
have_extdict_zhy=no
fi

AM_CONDITIONAL(HAVE_RU_EXTENDED_DICTIONARY, [test x"$have_extdict_ru" = xyes])
AM_CONDITIONAL(HAVE_ZH_EXTENDED_DICTIONARY, [test x"$have_extdict_zh" = xyes])
AM_CONDITIONAL(HAVE_ZHY_EXTENDED_DICTIONARY, [test x"$have_extdict_zhy" = xyes])

dnl ================================================================
dnl wxWidgets checks.
dnl ================================================================
@@ -211,13 +249,18 @@ AC_MSG_NOTICE([
Compiler flags: ${CXXFLAGS}

wxWidgets: ${WX_VERSION}
pulseaudio: ${have_pulseaudio}
portaudio: ${have_portaudio}
sada: ${have_sada}
audio configuration: ${AUDIO}

Klatt: ${have_klatt}
MBROLA: ${have_mbrola}
Sonic: ${have_sonic}
Async: ${have_async}
pulseaudio: ${have_pulseaudio}
portaudio: ${have_portaudio}
sada: ${have_sada}
audio configuration: ${AUDIO}

Klatt: ${have_klatt}
MBROLA: ${have_mbrola}
Sonic: ${have_sonic}
Async: ${have_async}

Extended Dictionaries:
Russian: ${have_extdict_ru}
Chinese (Mandarin): ${have_extdict_zh}
Chinese (Cantonese): ${have_extdict_zhy}
])

+ 33
- 13
dictsource/an_rules View File

@@ -6,7 +6,7 @@
.L03 f h j s y z r // allow [B] [D] [Q] before these consonants
.L04 b v f p // labials, nasals are [m]
.L05 g k // velars, nasals are [N]
.L06 a e o

.group a
a a
@@ -76,6 +76,9 @@
u) e E
y) e E

L06_) e (CC e# // unstressed 'e' silent at start of word after a,e,o
L06_h) e (CC e# // unstressed 'e' silent at start of word after a,e,o

_) ent' (AP4 ent
_) enta' ,ent%a

@@ -105,14 +108,14 @@

.group h
h // silent
hu (e gw
hu (i gw
hu (Y gw

.group i
i i
i (u_ i
i (A j


.group j
@@ -139,7 +142,7 @@
n n
n (L04 m
n (_L04 m
ny n^
ny (A n^


.group ñ
@@ -170,13 +173,16 @@


.group q
q k
q k
qu (A kw
qü kw
qu (e k
qu (i k
qu (é k
qu (í k
qu ('A k
qu ('hA k


.group r
r r
@@ -199,6 +205,10 @@ q k
&) s (_S1 s

_) s' (AP2 s
_) s (C@ %es
_) s (hA s
_) s (y s
A_) s (C s


.group t
@@ -207,9 +217,9 @@ q k
u) t (_ t#
ei) t (_ t#
n) t (_ = // silent, but stress on last vowel
n) t (m // Silent
_pos) t (h t
_pos) t (C // Silent
n) t (m // Silent
_pos) t (h t
_pos) t (C // Silent
tz T
ue) t (_ t#
ui) t (_ t#
@@ -227,9 +237,17 @@ q k
u (i u
r) uix uS
r) u (A u
A) u (Y gw
u (A w
_) u (u u
_) u (A gw
//Ar) u (Y gw
_des) u (Y gw
_es) u (Y gw

// Some exception
_esquir) u (el Qw // esquiruelo, esquiruelos
_cir) u (ell Qw // Ciruello, ciruella, ciruellos, ciruellas

.group v // same as 'b'
v b
@@ -252,23 +270,25 @@ q k
x ks
_) x S
i) x S
C) x S

.group y
y j
y (_ i
C) y (C i

.group z
z T


.group
'
'
á ''a
é ''e
í ''i
ó ''o
ú ''u

__) - (_D m'enos
D_) - (_D m'enos
__) - (_D m'enos
D_) - (_D m'enos

+ 133
- 194
dictsource/as_list View File

@@ -1,131 +1,133 @@
// Translation rules for Bengali

// Translation rules for Assamese
// input by .
// This file is UTF8 encoded

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

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


_10 d'OS
_11 '&garo
_10 d@h
_11 Ig#'a:ro
_12 b'arO
_13 t'erO
_14 tS'oddO
_14 tS#au'ddO
_15 p'OnerO
_16 S'olO
_17 S'OterO
_16 X'olO
_17 X'OterO
_18 'at.#arO
_19 'uniS
_19 'un'niS

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

_30 tr'iS
_31 ekOtr'iS
_32 bOtr'iS
_33 tetr'iS
_34 tSowtr'iS
_35 pO~jtr'iS
_31 'ek'Otr'iS
_32 b'Otr'iS
_33 t'etr'iS
_34 tS'owtr'iS
_35 p'O~jtr'iS
_36 tS#'Otr'iS
_37 Sa~itr'iS
_38 at.tr'iS
_37 X'a~i'tr'iS
_38 'a~t.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
_41 'ektSOll'iS
_42 b'iall'iS
_43 t'etall'iS
_44 tS'oall'iS
_45 p'O~jtall'iS
_46 tS'etSO'll'iS
_47 X'atSOll'is
_48 'a~'tSOll'iS
_49 'unOpO~tSaS
_50 p'O~tS'aS
_51 I'kann'o
_52 b'ajann'o
_53 t'epann'o
_54 tS'ujann'o
_55 p'ontSann'o
_56 tS#'apann'o
_57 X'atann'o
_58 'at.ann'o
_59 'unO'Xa:t.
_60 sa:t.
_61 'ek'XO't.t.'i
_62 b'aXO't.t.'i
_63 t'eXO't.t.'i
_64 tS'ow'XO't.t.'i
_65 p'oj'XO't.t.'i
_66 S'eSOt.t.'i
_67 Sa:tSOt'ti
_68 'a~t.SOt.t.'i
_6X s'at.t.'i
_69 'unO'X'Ott'Or
_70 X'Ott'Or
_71 I'k#'Ott'Or
_72 b'ahatt'Or
_73 t'iatt'Or
_74 tS'uhatt'Or
_75 p'OX'at.t'Or
_76 tS#'ijatt'Or
_77 S'atatt'Or
_78 'a~t.att'Or
_79 'unOa'X'i
_80 a:X'i
_81 I'ka'X'i
_82 b'ira'X'i
_83 t'ira'X'i
_84 tS'ura'X'i
_85 p'o~tSa'X'i
_86 tS#'ija'X'i
_87 S'ataS'i
_88 X'ata'S'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
_91 I'kanObb'oj
_92 b'ira'nObb'oj
_93 t'ira:nObb'oj
_94 tS'uranObb'oj
_95 p'OtSanObb'oj
_96 tS#'ijanObb'oj
_97 X'atanObb'oj
_98 'a~t.anObb'oj
_99 n'iranObb'oj
_0C e'X'o
_0M1 h'ajar
_0M2 l'ak#
_0M3 k'ot.i
_0M4 'Orbud
_dpt _d'Osomik_
_dpt _d'OX'omik_


// Single consonants
@@ -133,7 +135,7 @@ _dpt _d'Osomik_
খ k#O
গ gO
ঘ g#O
ঙ 'uNO~
ঙ 'uNgO~
চ tSO
ছ tShO // [h] to distinguish from [tS]
জ JO
@@ -154,46 +156,46 @@ _dpt _d'Osomik_
ব bO
ভ b#O
ম mO
য় Oj
য ,ontostedZ'O
র rO
ড় r.O
ড় r.O // (d. + nukta)
ঢ় hr.O
ঢ় hr.O // (d#. + nukta)
ৰ rO
ল lO
ৱ wO
শ t,aleboS:'O
ষ m,ud#en:oS:'O
স d,onteS:'O
স d,onte'X:'O
হ hO
ৎ kh,Ond.ot'O
ক্ষ k,ojmud#en:oS:'O
ড় dOerO // (d. + nukta)
ঢ় d#e hr.O // (d#. + nukta)
য় ,ontosteOj
ৎ kh,Ond.ot'O



// full vowels
অ O
আ a
ই hrOS:o'i
ঈ dirg#o'i
ঈ d'i:rg#o'i
উ hrOS:o'u
ঊ dirg#o'u
ঊ d'i:rg#o'u
ঋ ri
ও o
ঔ 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
ি hrOS:o'ikar
ী d'i:rg#ikar
hrOS:o'ukar
ু d'i:rg#ukar
ৃ r'ikar
ে 'ekar
ৈ 'ojkar
@@ -208,116 +210,53 @@ _ও o
় b'indu

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



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

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

আমরা $u // we
আমাদের $u
ময $u // I, me
আমি $u // us
আমার $u // our

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

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

তুই $u // you (informal)
তোকে $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 // he
তাই $u // she

ওগুলো $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
কিয় $u $pause // kio why interrogative particle
কি $u $pause // ki what
কোত $u $pause // kot where
কেতিয়া $u $pause // ketia when
কোন $u $pause // kon who

// Conjunctions

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


// Verbs

হয় $u


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


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


// Exceptions
ত &to
এটা &ta // one piece, one

+ 166
- 208
dictsource/as_rules View File

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

// Pronounciation rule for Assamese.
// This file is UTF8 encoded

// letter groups:
@@ -7,8 +7,6 @@
// C consonants
// Y vowel letters and vowel signs



.replace
০ 0
১ 1
@@ -21,368 +19,328 @@
৮ 8
৯ 9


// Vowels


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

.group আ
a
আঁ a~
a
আঁ a~

.group ই
i
ইঁ i~
i
ইঁ i~


.group ঈ
i
ঈঁ i~
i
ঈঁ i~


.group উ
উ u
উঁ u~

উ u
উঁ u~
.group ঊ
ঊ u
ঊঁ u~

ঊ u
ঊঁ u~
.group ঋ
ঋ ri
ঋঁ ri~

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

এ &
এঁ &~
.group ঐ
ঐ oj
ঐঁ o~j

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

এ্যা & // e,ja [ækademi]

.group ও
ও o
ওঁ o~

ও o
ওঁ o~
.group ঔ
ow
ঔঁ o~w
ow
ঔঁ o~w

.group ও //??
ও o:


ও o:

// Vowel Signs

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

.group ূ
u
ূঁ u~
C) ূ u
C) ূঁ u~

.group ু
u
ুঁ u~
C) ু u
C) ুঁ u~
.group ৃ
ৃ ri
ৃঁ ri~
C) ৃ r'i

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

C) ে e
C) েঁ e~
C) েউ ew

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

.group ক
ক kV
ক (B k
ক kV
ক (B k


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


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

.group ঙ
NV
্ (B N
NV
(B N


.group চ
tSV
চ (B tS
tSV
চ (B tS


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

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


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

.group ঞ
nV
্ (B n
nV
(B n

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


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

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

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

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

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

ণ nV // should be [n.] if adjacent to t. or d. ?
ণ (B n


.group ত
ত tV
ত (B t
ত tV
ত (B t
ত (_ to

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


.group দ
dV
দ (B d
dV
দ (B d


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


.group ন
nV
ন (B n
nV
ন (B n

.group প
pV
প (B p
pV
প (B p

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

.group ব
bV
ব (B b
bV
ব (B b

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

.group ম
ম mV
ম (B m

.group য়
য় jV
য় (B j
ম mV
ম (B m

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

্) য (C & // ব্যস্ত [bæsto]
্) যা & // ব্যাকরণ [bækɔron]
য dZV
য (B dZ
্) য (_ :O // double the previous consonant
্) য (B_ :
্) য (C & // ব্যস্ত [bæsto]
্) যা & // ব্যাকরণ [bækɔron]


.group
rV
র (B r
.group
rV
ৰ (B r

.group ল
lV
ল (B l
lV
ল (B l

.group ৱ
ৱ waV
ৱ (B wO


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

.group ষ
SV
ষ (B S
SV
ষ (B S

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

.group হ
হ hV
হ (B h
হ hV
হ (B h
হ (_ ho

.group হ্ব
হ্ব vV
হ্ব (B v
.group ক্ষ
ক্ষ k#k#V // or [k#:] ?
ক্ষ (B k#k#

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

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

.group ড় // can be ড plus nukta
ড় r.V
ড় (B r.
.group য়
য় jV
_) য় (B j
য় (B // used to separate 2 vowels

.group ঢ় // can be ঢ plus nukta
ঢ় hr.V
ঢ় (B hr.
.group হ্ব
হ্ব vV
হ্ব (B v

.group ৎ
ৎ t

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

.group ং
ং N // anusvara/onushshor

A) ং N // anusvara/onushshor
C) ং N
.group ঃ // visarga/bishorgo
ঃ // doubles the following consonant
ঃ (_ H
ঃ (_ 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
// D_) - (_D bij'og

+ 73
- 0
dictsource/bn_list View File

@@ -323,3 +323,76 @@ _? pr'oSnOtSihnO

// Exceptions
এত &to
// Exceptions - where inherent vowel even being between two consonant is not pronounced as (o) mostly in case of two words pronounced and used as a single word. The list however is not final and contain most commonly used words.

সোমবার Som,bar
মঙ্গলবার mOng'ol,bar
বুধবার budh,bar
অমলকান্তি amol,kanti
অন্দরমহল andor,mahol
আকাশকুসুম aka:S,kuSum
আতসবাজী atoS,ba:JI
আদবকায়দা a:dob,kaj'da:
আনকোরা a:n,kora:
আনচান an,can
আপনজন a:pon,jon
আমজনতা a:m'jano'ta:
আলটপকা al,tO,pka
আসকারা a:s,ka:ra:
আসনতলে a:son,tole
ইমনকল্যান imon,kal'la:n
ঈগলপাখী igol,pa:khi
ইঁদুরছানা i~dur'cha:na:
একজন &k'JOn
উত্তরদাতা utt'or,data
উত্তরদায়ী utt;or,da:I
কচকচি kO,c'kOci
কবরখানা kObOr,kha:na
করদাতা kOr,data:
কয়েদখানা kO'edkhana
কয়েকজন kOekJOn
কলকাতা kOlkata
কনকচাঁপা kOnOk,c~a:pa
কাজললতা kaJol,lOta
কারখানা kar,khana
কারবার kar,bar
কালকেতু kal,ketu
কালপুরুষ kal,puruS
খরখরে khOr,khOre
খাপছাড়া khap,chara:
খানখান khan,khan
খানসামা khan,Sama
খাশমহল khaS,mOhOl
খিড়কি khir.ki
খুনসুটি khun,Suti
খুরপি khu,rpi
গজগজ gOJgOJ
গরমিল gOr,mil
ঘটকালী g#Ot'kali
চটপট cOt,pOt
চালবাজ cal'baJ
চালবাজি cal'baJi
ছটপট c#Ot'pOt
জলখাবার JOl,khabar
টনটনে tOn,tOne
টানটান ta:n,tan
ঠগবাজ t.#Og'baJ
ঠিকঠাক t.#ik,t.#ak
নাড়কোল nar,kol
প্রধানমন্ত্রী prOd.#an,mOn'tri
বাসনকোসন ba:son'koson
গালগল্প gal'gOlpo
ঘাসপাতা gha:s'pa:ta
চালচুলো ca:lculo
ছালবাকল c#al'ba:kol
কানপাতলা ka:n'patla:
খানখান kha:n'khan
আরামবাগ ara:m'bag
হারামজাদা hara:m'Jada:
নামডাক na:m'da:k
নাকছাবি na:kcha:bi
পাশবালিশ pash'baliS
ফুলশয্যা ful'SaJJa:
খালবিল kha:l'bil
জালসাজি Jal'Sa:Ji
পোষ্টমাস্টার post'ma:sta:r

+ 926
- 698
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 2
- 0
dictsource/de_list View File

@@ -506,6 +506,7 @@ talk _^_EN
teaser _^_EN
tech _^_EN
terminal _^_EN
time _^_EN
trip _^_EN
tuner _^_EN
unix _^_EN
@@ -588,6 +589,7 @@ erst e:rst
ersten e:rst@n
erstmal e:rstma:l
erzgebirg e:rtsg@bIrg
expedient Ekspe:dI'Ent
extravagant $1
extrem Ekstr'e:m


+ 1
- 0
dictsource/de_rules View File

@@ -734,6 +734,7 @@ financ) ie (r I'e:
@t) ien (_ 'i:@n
&) iens (_ =I;@ns
ient (_ I'Ent
d) ient (_ i:nt
&) ienz (_ I'Ents
sch) ie (n i:
@) ie (reX 'i:

+ 591
- 153
dictsource/en_list
File diff suppressed because it is too large
View File


+ 6257
- 5963
dictsource/en_rules
File diff suppressed because it is too large
View File


+ 84
- 140
dictsource/es_list View File

@@ -93,7 +93,7 @@ _13 tr'eTe
_14 kat'OrTe
_15 k'inTe
_20 b'eInte
_2X b'eInt
_2X beInt
_3X tr'eInta
_4X kwar'Enta
_5X Tinkw'Enta
@@ -101,11 +101,16 @@ _6X sEs'Enta
_7X sEt'Enta
_8X OtS'Enta
_9X nOB'Enta
_0C Tj'EntOs
// _0C Tj'EntOs
_1C0 Tj'en // exactly one hundred
_1C Tj'ento
_2C dosTj'entos
_3C tresTj'entos
_4C kwatroTj'entos
_5C kinj'EntOs
_6C seIsTj'entos
_7C s,eteTj'EntOs
_8C otSoTj'entos
_9C n,OBeTj'EntOs
_0M1 m'il
_0M2 miJ^'ones
@@ -164,16 +169,11 @@ vi bi // not a Roman number

// unstressed words
// articles
el $u
el $atend
los $u
los $atend
la $u
la $atend
las $u
las $atend
lo $u
lo $atend
el $u+
los $u+
la $u+
las $u+
lo $u+



@@ -183,123 +183,70 @@ lo $atend

// pronouns

me $u $only // reflexive pronouns
me $atend
te $u
te $atend
le $u
le $atend
les $u
les $atend
se $u
se $atend
nos $u
nos $atend
os $u
os $atend
me $u+ $only // reflexive pronouns
te $u+
le $u+
les $u+
se $u+
nos $u+
os $u+


// possessives
mi $u
mi $atend
mis $u
mis $atend
tu $u
tu $atend
tus $u
tus $atend
su $u
su $atend
sus $u
sus $atend
nuestro $u
nuestro $atend
nuestros $u
nuestros $atend
nuestra $u
nuestra $atend
nuestras $u
nuestras $atend
vuestro $u
vuestro $atend
vuestros $u
vuestros $atend
vuestra $u
vuestra $atend
vuestras $u
vuestras $atend
mi $u+
mis $u+
tu $u+
tus $u+
su $u+
sus $u+
nuestro $u+
nuestros $u+
nuestra $u+
nuestras $u+
vuestro $u+
vuestros $u+
vuestra $u+
vuestras $u+
// prepositions
a $u // at
a $atend
al $u
al $atend
de $u // of,from
de $atend
del $u
del $atend
en $u
en $atend
con $u // with
con $atend
sin $u
sin $atend
por $u // for,through,along,via
por $atend
tras $u
tras $atend
ante $u $only
ante $atend
para $u // for,in order,by
para $atend
entre $u
entre $atend
sobre $u
sobre $atend
bajo $u
bajo $atend
desde $u // from,since
desde $atend
hasta $u
hasta $atend
hacia $u
hacia $atend


e $u $only
e $atend
a $u+ // at
al $u+
de $u+ // of,from
del $u+
en $u+
con $u+ // with
sin $u+
por $u+ // for,through,along,via
tras $u+
ante $u+ $only
para $u+ // for,in order,by
entre $u+
sobre $u+
bajo $u+ $only
desde $u+ // from,since
hasta $u+
hacia $u+


e $u+ $only
y %i // and
o $u // or
o $atend
u $u
u $atend


aunque $u // although
aunque $atend
pero $u
pero $atend
porque $u // because
porque $atend


que $u // what
que $atend
cuando $u
cuando $atend
cuanto $u
cuanto $atend
donde $u
donde $atend
como $u
como $atend
quien $u
quien $atend
quienes $u
quienes $atend
mientras $u
mientras $atend
si $u
si $atend
o $u+ // or
u $u+


aunque $u+ // although
pero $u+
porque $u+ // because


que $u+ // that
cuando $u+
cuanto $u+
donde $u+
como $u+
quien $u+
quienes $u+
mientras $u+
si $u+



@@ -312,39 +259,37 @@ si $atend
b be
c Te
d de
f _|Efe
f Efe
g xe
h atSe
j xOta
k ka
l _|Ele
m _|Eme
n _|Ene
ñ _|En^e
l Ele
m Eme
n Ene
ñ En^e
p pe
q ku
r _|Ere
s _|Ese
r Ere
s Ese
t te
v _|uBe
v uBe
w uBe||d'OBle
x _|Ekis
x Ekis
z TEta

_a a
_e e
_o o
_y igri'eQa
y igri'eQa $atend
ch tSe
ll 'El^e
á 'a||aTEntw'aDa
é 'e||aTEntw'aDa
í 'i||aTEntw'aDa
_ó 'o||aTEntw'aDa
ó 'o||aTEntw'aDa $atend
ú 'u||aTEntw'aDa
ü ,uDj'ErEsis
ü 'u||kon||dj'ErEsis



@@ -379,8 +324,7 @@ Uds ustedes $text $capital $dot

linux $1
méxico m'Exiko
mexicano mExikano

vietnam $2
spanish sp'aniS
english ínglish $text
firefox f'aIrfoks
@@ -394,8 +338,8 @@ facebook f'eIsbuk
twitter tw'iter
twit tw'it
mozilla moT'ila
espeak isp'ik
(e speak) isp'ik
espeak 'isp'ik
(e speak) 'isp'ik
eloquence 'elokwens
speech sp'itS
platform pl'atfom

+ 283
- 279
dictsource/es_rules View File

@@ -1,279 +1,283 @@
// translation rules for Spanish
// This file is UTF-8 encoded

// Conditional rules
// ?1 Castilian
// ?2 Latin America
// ?3 mbrola VZ1

.L01 l r y
.L02 b d g n m // change [s] to [z] before these
.L03 f h j s y z r // allow [B] [D] [Q] before these consonants
.L04 b v f p // labials, nasals are [m]
.L05 g k // velars, nasals are [N]
.L06 j w l r b d g n m p t k c

.group a
a a
ai aI
ay (K aI
ay (_ 'aI
au aU
au (_ 'aU


.group b
b b
_) b ($unpr b // phoneme definition may change it to [B]
_) b (L01A b // Only bl, br are allowed at start of word
_) b (A b
b (A B
b (cY B
b (L03 B
m) b b
n) b b
b (iA b
b (uA b

.group c
c k
_) c (L01A k // allow: cl cr at start of word
_) ch (A tS // allow _ch

c (Y T // ce, ci
ch tS
A) ck k

.group d
d d
_) d ($unpr d // phoneme definition may change it to [D]
_) d (rA d
_) d (A d
d (A D
d (_ D
d (cY D
d (L03 D
d (v D
m) d d
n) d d
l) d d
r) d d


.group e
e e
// e (CK E
e (nK E
e (r E
e (Ch e
Ar) e E
ei eI
ey (K eI
ey (_ 'eI
eu eU
eu (_ 'eU


.group f
f f
_) f (L01A f // allow fl fr at start of word


.group g
g g
_) g ($unpr g // phoneme definition may change it to [Q]
_) g (L01A g
_) gh (A g // allow _gh in foreign words
_) gn (A n
_) g (A g
g (A Q
g (_ Q
g (cY Q
g (L03 Q
m) g g
n) g g
g (Y+ x // ge gi


.group h
h // silent
_) hi (A j


.group i
i i
i (A j
C) i (A j
gu) i (A j
?!3 l) i (A %i
?!3 r) i (A %i


.group j
j x


.group k
k k
_) k (L01A k // allow kl kr at start of word


.group l
l l
ll (_ l
_) ll (A l^ // allowe _ll
?2 _) ll (A J^
?2 ll j:
?2 n_) ll (A dZ
ll l^



.group m
m m
@) m (_ =m
_) mn (em n
_) mb (A mb


.group n
n n
n (L04 m
n (_L04 m
n (L05 N
n (_L05 N
n (j N
ny (A n^ // catalan words
_) nh (A n

.group o
o o
o (CK O
o (r O
o (Ch o
Ar) o O
oi oI
oy (K oI
oy (_ 'oI
ou ow

.group p
p p
_) p (L01A p // allow pl pr at start of word
p (t p:
_) ph (A f
ph (@ f
ph (K f
_) ps (i s
_) ps (eudo s
_) pt (ero t
_) pt (ol t


.group q
q k
qu (Y k // que, qui
_) qw (A kw // qwerty


.group r
r r
r (_ r
r (t r
A) r (A r
C) r (A r
_) r (A R
l) r (A R
m) r (A R
n) r (A R
s) r (A R
rr RR2


.group s
s s
&) s (_S1 s
_) s (K@ s
ss s
_) sh (A S
_) sh (L01A S
sh (K S
?!1 sc (Y s // sce sci for non castilian accent

.group t
t t
_) t (L01A t // all tr at start of word
_) th (@ t
th (K t
_) tx (A tS
tx tS


.group u
u u
u (u u
u (A w
!?3 l) u (A %u
!?3 r) u (A %u
g) u (e
g) u (i
g) u (é
g) u (í

.group v
v b
_) v ($unpr b // phoneme definition may change it to [B]
_) v (L01A b // Only bl, br are allowed at start of word
_) v (A b
v (A B
v (cY B
v (L03 B
m) v b
n) v b
v (iA b
v (uA b


.group w
w w
_) wh (A w


.group x
x ks
_) x ($unpr s // ?
?!1 xc (Y ks // xce xci for non castilian accent

.group y
y i
_) y ($unpr J
_m) y (A j
_l) y (A j
y (A j:
_) y (A J^
u) y (K j:
n_) y (A dZ
y (_ i

.group z
z T
?2 z (L02 z
zz ts


.group
á ''a
é ''E
í ''i
ó ''O
ú ''u
ü u
ñ n^
$ d'Olar

_) - (_D m'EnOs
A_) - (_D _
C_) - (_D _

, (D kOma

// translation rules for Spanish
// This file is UTF-8 encoded
// Conditional rules
// ?1 Castilian
// ?2 Latin America
// ?3 mbrola VZ1
.L01 l r y
.L02 b d g n m // change [s] to [z] before these
.L03 f h j r s y z // allow [B] [D] [Q] before these consonants
.L04 b v f p // labials, nasals are [m]
.L05 g k // velars, nasals are [N]
.L06 j w l r b d g n m p t k c
.group a
a a
ai aI
ay (K aI
ay (_ 'aI
au aU
au (_ 'aU
.group b
b b
_) b ($unpr b // phoneme definition may change it to [B]
_) b (L01A b // Only bl, br are allowed at start of word
_) b (A b
b (A B
b (cY B
b (L03 B
m) b b
n) b b
b (iA b
b (uA b
.group c
c k
_) c (L01A k // allow: cl cr at start of word
_) ch tS // allow _ch
c (Y T // ce, ci
ch tS
A) ck k
.group d
d d
_) d ($unpr d // phoneme definition may change it to [D]
_) d (rA d
_) d (A d
d (A D
d (_ d
d (_A D
d (cY D
d (L03 D
l) d d
d (v D
m) d d
n) d d
r) d d
.group e
e e
// e (CK E
e (nK E
e (r E
e (Ch e
Ar) e E
ei eI
ey (K eI
ey (_ 'eI
eu eU
eu (_ 'eU
.group f
f f
_) f (L01A f // allow fl fr at start of word
.group g
g g
_) g ($unpr g // phoneme definition may change it to [Q]
_) g (L01A g
_) gh (A g // allow _gh in foreign words
_) gn (A n
_) g (A g
g (A Q
g (_A Q
g (_ g
g (cY Q
g (L03 Q
m) g g
n) g g
g (Y+ x // ge gi
n) g (_ // ing
.group h
h // silent
_) hi (A j
.group i
i i
i (A j
C) i (A j
gu) i (A j
?!3 l) i (A %i
?!3 r) i (A %i
?!3 Al) i (A j
?!3 Ar) i (A j
.group j
j x
.group k
k k
_) k (L01A k // allow kl kr at start of word
.group l
l l
ll (_ l^
_) ll (A l^ // allowe _ll
?2 _) ll (A J^
?2 ll j:
?2 n_) ll (A dZ
ll l^
.group m
m m
// @) m (_ =m
_) mn (em n
_) mb (A mb
.group n
n n
n (L04 m
n (_L04 m
n (L05 N
n (_L05 N
n (j N
ny (A n^ // catalan words
_) nh (A n
.group o
o o
o (CK O
o (r O
o (Ch o
Ar) o O
oi oI
oy (K oI
oy (_ 'oI
ou ow
.group p
p p
_) p (L01A p // allow pl pr at start of word
p (t p:
_) ph (A f
ph (@ f
ph (K f
_) ps (i s
_) ps (eudo s
_) pt (ero t
_) pt (ol t
.group q
q k
qu (Y k // que, qui
_) qw (A kw // qwerty
.group r
r r
r (_ r
r (t r
A) r (A r
C) r (A r
_) r (A R2
l) r (A R2
m) r (A R2
n) r (A R2
s) r (A R2
rr R2
.group s
s s
&) s (_S1 s
_) s (K@ s
ss s:
_) sh (A S
_) sh (L01A S
sh (K S
?!1 sc (Y s // sce sci for non castilian accent
.group t
t t
_) t (L01A t // all tr at start of word
_) th (@ t
th (K t
_) tx (A tS
tx tS
.group u
u u
u (u u
u (A w
!?3 l) u (A %u
!?3 r) u (A %u
g) u (e
g) u (i
g) u (é
g) u (í
.group v
v b
_) v ($unpr b // phoneme definition may change it to [B]
_) v (L01A b // Only bl, br are allowed at start of word
_) v (A b
v (A B
v (cY B
v (L03 B
m) v b
n) v b
v (iA b
v (uA b
.group w
w w
_) wh (A w
.group x
x ks
_) x ($unpr s // ?
?!1 xc (Y ks // xce xci for non castilian accent
me) x (ic x // mexicano, mexicana, etc.
.group y
y i
_) y ($unpr J
_m) y (A j
_l) y (A j
y (A j:
_) y (A J^
u) y (K j:
n_) y (A dZ
y (_ i
.group z
z T
zz ts
.group
á ''a
é ''E
í ''i
ó ''O
ú ''u
ü u
ñ n^
$ d'Olar
_) - (_D m'EnOs
A_) - (_D _
C_) - (_D _
, (D kOma

+ 199811
- 0
dictsource/extra/ru_listx
File diff suppressed because it is too large
View File


+ 57669
- 0
dictsource/extra/zh_listx
File diff suppressed because it is too large
View File


+ 33760
- 0
dictsource/extra/zhy_list
File diff suppressed because it is too large
View File


+ 3969
- 52
dictsource/fa_list
File diff suppressed because it is too large
View File


+ 258
- 40
dictsource/fa_rules View File

@@ -1,6 +1,5 @@
// * Farsi Language fa (or Parsi or Persian) fa_rules Version 3.0
// * Farsi Language fa (or Parsi or Persian) fa_rules Version 3.0
// * This file writen by Shadyar Khodayari 2013
// * Farsi Language fa (or Parsi or Persian) fa_rules Version 3.1
// * This file writen by Shadyar Khodayari 11-14-2013
//*********
// * This program is free software; you can redistribute it and/or modify *
// * it under the terms of the GNU General Public License as published by *
@@ -26,12 +25,9 @@
// replacing unknown characters and Arabic numbers with Farsi characters and Latin numbers
.replace
٪ %
ي ی
ۍ ی
ى ی
ك ک
ە ه
ھ ه
ٔ ٴ
ي ی // this is "ي" Shift + x on the Persian Keyboard ("ye Arabi") that has been replaced with "ی" Standard for some programing reasones.
٠ 0
۰ 0
۱ 1
@@ -52,6 +48,133 @@
۸ 8
٩ 9
۹ 9
ﺁ آ
ﺍ ا
ﺎ ا
ﺄ أ
ﺏ ب
ﺐ ب
ﺑ ب
ﺒ ب
ﭖ پ
ﭗ پ
ﭘ پ
ﭙ پ
ﺕ ت
ﺖ ت
ﺗ ت
ﺘ ت
ﺚ ث
ﺛ ث
ﺜ ث
ﺝ ج
ﺞ ج
ﺠ ج
ﺟ ج
ﭻ چ
ﭼ چ
ﭽ چ
ﺢ ح
ﺣ ح
ﺤ ح
ﺥ خ
ﺦ خ
ﺧ خ
ﺨ خ
ﺩ د
ﺪ د
ﺫ ذ
ﺬ ذ
ﺭ ر
ﺮ ر
ﺯ ز
ﺰ ز
ﮊ ژ
ﺱ س
ﺲ س
ﺳ س
ﺴ س
ﺵ ش
ﺶ ش
ﺷ ش
ﺸ ش
ﺹ ص
ﺺ ص
ﺻ ص
ﺼ ص
ﺽ ض
ﺿ ض
ﻀ ض
ﻁ ط
ﻂ ط
ﻃ ط
ﻄ ط
ﻇ ظ
ﻈ ظ
ﻉ ع
ﻊ ع
ﻋ ع
ﻌ ع
ﻍ غ
ﻎ غ
ﻏ غ
ﻐ غ
ﻑ ف
ﻒ ف
ﻓ ف
ﻔ ف
ﻕ ق
ﻖ ق
ﻗ ق
ﻘ ق
ك ک
ﮎ ک
ﮏ ک
ﮐ ک
ﮑ ک
ﻛ ک
ﮒ گ
ﮓ گ
ﮔ گ
ﮕ گ
ﻝ ل
ﻞ ل
ﻟ ل
ﻠ ل
ﻡ م
ﻢ م
ﻣ م
ﻤ م
ﻥ ن
ﻦ ن
ﻧ ن
ﻨ ن
ﻭ و
ﻮ و
ھ ه
ە ه
ﻩ ه
ﻪ ه
ﻫ ه
ﻬ ه
ى ی
ۍ ی
ﯼ ی
ﯽ ی
ﯾ ی
ﯿ ی
ﻰ ی
ﻱ ی
ﻲ ی
ﻳ ی
ﻴ ی
ﻻ لا
ﻼ لا
ﺔ ة
ﺋ ئ
ﺌ ئ
ﺀ ء


// (ZWNJ) U+200c character (half space) is recognized as Hyphen and this simbole "-" have been definded for this character in the rules.
@@ -88,6 +211,14 @@
// (ZWNJ) U+200c character (half space) is recognized as Hyphen and this simbole "-" has been definded for this character in the rules.


.group +
__) + (_D mosbate-


.group -
__) - (_D manfije-


.group آ
_) آN 'A:
آ 'A
@@ -105,6 +236,7 @@
L09L09) آموخته (_Sm6 Amuxte:
L09L09) آموختۀ (_Sm6 Amuxteje
L09L09) آگاه (_Sm4 AgAh
L09L09)آلات (_Sm4 AlAt


.group ا
@@ -121,6 +253,7 @@
اً an
اٍ en
اٌ on
ا (ٓ A

// Prefixes ا
_) ال (L09L09L09P2@ al
@@ -201,9 +334,22 @@
l09l09l03) انیدید (_NSm6 Anidid
l09l09l03) انیدند (_NSm6 Anidand
l09l09l03) انیدن (_NSm5 Anidan
L09L04) افرین (_Sm5 AfaRin
L09L04) الدین (_Sm5 oddin
L09L04) الدّین (_Sm6 oddin
L09L04) الدوله (_Sm6 oddole:
L09L04) الدّوله (_Sm7 oddole:
L09L04) الدولۀ (_Sm6 oddoleje
L09L04) الدّولۀ (_Sm7 oddoleje
L09L04) الملک (_Sm5 olmolk
L09L04) الملوک (_Sm6 olmoluk
L09L04) الحکما (_Sm6 olhokamA
L09L04) الممالک (_Sm7 olmamAlek
L09L04) السلطنه (_Sm7 ossaltane:
L09L04) السّلطنه (_Sm8 ossaltane:
L09L04) السلطنۀ (_Sm7 ossaltaneje
L09L04) السّلطنۀ (_Sm8 ossaltaneje
L09L04) السادات (_Sm7 ossAdAt
L09L04) السّادات (_Sm8 ossAdAt

// arabic form of words (Babs) ا
//استفعال eg. استخراج (Fa eSpeak read itd correctly)
@@ -304,6 +450,10 @@
_) ب (وL02L09P1@ be
_) بر (L04L09L09P2@ baR
_) بر (آL09L09P2@ baR
_) برمی (L04L09L09P4@ baRmi
_) برمی (آL09L09P4@ baRmi
_) برنمی (L04L09L09P5@ baRnemi
_) برنمی (آL09L09P5@ baRnemi
_) به (L04L09L09P2@ beh
_) به (آL09L09P2@ beh
_) بد (آL09L09P2@ bad\
@@ -315,6 +465,8 @@
_) بلا (آL09L09P3@ belA
_) بزرگ (L04L09L09P4@ bozoRg
_) بزرگ (آL09L09P4@ bozoRg
_) بنفش (آL09L09P4@ banafS
_) بنفش (L04L09L09P4@ banafS

// suffixes ب
L09L09) بخش (_Sm3 baxS
@@ -341,6 +493,7 @@
L09L09) بندهاتون (_NSm8 bandhAtun
L09L09) بندهایشان (_NSm9 bandhAjeSAn
L09L09) بندهاشون (_NSm8 bandhASun
L09L09) بار (_Sm3 bAR
L09L09) باز (_Sm3 bAz
L09L09) بست (_Sm3 bast
L09L09) بان (_Sm3 bAn
@@ -352,7 +505,10 @@
L09L09) باش (_Sm3 bAS
L09L09) بزرگ (_Sm4 bozoRg
L09L09) باور (_Sm4 bAvaR
L09L09) برانگیز (_Sm baRangiz
L09L09) برانگیز (_Sm7 baRangiz
L09L09) باف (_Sm3 bAf
L09L09) بافت (_Sm4 bAft
L09L09) بلند (_Sm4 boland

// arabic form of words (Babs) ب
//فواعل eg. جوامع
@@ -526,6 +682,7 @@
L09L09) پندار (_Sm5 pendAR
L09L09) پرست (_Sm4 paRast
L09L09) پناه (_Sm4 panAh
L09L09) پسند (_Sm4 pasand

// arabic form of words (Babs) پ
//فواعل eg. جوامع
@@ -1502,6 +1659,9 @@
L09L09) خیز (_Sm3 xiz
L09L09) خواست (_Sm5 xAst
L09L09) خواب (_Sm4 xAb
L09L09) خواند (_Sm5 xAnd
L09L09) خورد (_Sm4 xoRd
L09L09) خوردگی (_Sm6 xoRdegi

// arabic form of words (Babs) خ
//فواعل eg. جوامع
@@ -1659,6 +1819,12 @@
_) دست (آL09L09P3@ dast
_) درست (L04L09L09P4@ dorost
_) درست (آL09L09P4@ dorost
_) دراز (L04L09L09P4@ deRAz
_) دراز (آL09L09P4@ deRAz
_) درال (L04L09L09P4@ dARol
_) درال (تL09L09+P4@ dARo_'
_) درال (دL09L09+P4@ dARo_'
_) درال (آL09L09P4@ dARol

// suffixes د
L09L09) داد (_Sm3 dAd
@@ -1679,6 +1845,8 @@
L09L09) دوش (_Sm3 duS
L09L09) دهی (_Sm3 dehi
L09L09) دوست (_Sm4 dust
L09L09) دوز (_Sm3 duz
L09L09) دخت (_Sm3 doxt

// arabic form of words (Babs) د
//فواعل eg. جوامع
@@ -1834,6 +2002,8 @@
// Prefixes ذ
_) ذی (L04L09L09P2@ zi
_) ذی (آL09L09P2@ zi
_) ذوال (L04L09L09P4@ zol
_) ذوال (آL09L09P4@ zol

// Suffixes ذ
@@ -1984,10 +2154,12 @@
// Prefixes ر
_) رضا (L04L09L09P3@ RezA
_) رضا (آL09L09P3@ RezA
_) ریز (L04L09L09P2@ Riz
_) ریز (L04L09L09P3@ Riz
_) ریز (آL09L09P3@ Riz
_) راست (L04L09L09P4@ RAst:
_) راست (آL09L09P4@ RAst
_) رنگ (L04L09L09P3@ Rang
_) رنگ (آL09L09P3@ Rang

// suffixes ر
//L09L09L09) ران (_Sm3 RAn
@@ -2161,6 +2333,8 @@
_) زود (L04L09L09P3@ zud
_) زود (آL09L09P3@ zud
_) زیر (آL09L09P3@ ziR
_) زرد (L04L09L09P3@ zaRd
_) زرد (آL09L09P3@ zaRd

// suffixes ز
L09L09) زاد (_Sm3 zAd
@@ -2415,6 +2589,7 @@
س (ـــL02 s
س (ـــL03 sa
س (ــ sa
_) ست (_ set // eg. "این سِتِ جواهر"
// Consonants Analyzer
// Right to left characters Analyzer
// Analyzing 2nd Consonant of 3 Consonants
@@ -2476,13 +2651,26 @@
_) سوء (L09L09P3@ su?e
_) سانتی (L04L09L09P5@ sAnti
_) سانتی (آL09L09P5@ sAnti
_) سید (L09P3@ sej:ed:
_) سید (آL09L09P3@ sej:ed
_) سید (L04L09L09P3@ sejjed
_) سید (آL09L09P3@ sejjed
_) سیّد (L04L09L09P4@ sejjed
_) سیّد (آL09L09P4@ sejjed
_) سپید (L04L09L09P4@ sepid
_) سپید (آL09L09P4@ sepid
_) سفید (L04L09L09P4@ sefid
_) سفید (آL09L09P4@ sefid
_) سپید (آL09L09P4@ sepid
_) سبز (L04L09L09P3@ sabz
_) سبز (آL09L09P3@ sabz
_) سنگ (L04L09L09P3@ sang
_) سنگ (آL09L09P3@ sang

// suffixes س
L09L01) ست (_+NSm2 st
L09L03) ست (_+NSm2 ast
-) ست (_+NSm2 st // eg. "کجا‌ست"
L09L01) ست (_++NSm2 st
L09L03) ست (_++NSm2 ast
L01-) ست (_+NSm2 st // eg. "کجا‌ست"
L02-) ست (_+NSm2 ast
L03-) ست (_+NSm2 ast // eg. "میز‌ست"
L09L03) ستان (_Sm4 estAn
L09L01) ستان (_Sm4 stAn
L09L09) سان (_Sm3 sAn
@@ -2494,6 +2682,8 @@
L09L09) سوار (_Sm4 savAR
L09L09) سال (_Sm3 sAl
L09L09) سالار (_Sm5 sAlAR
L09L09) سرشت (_Sm4 seReSt
L09L09) ستیز (_Sm4 setiz

// arabic form of words (Babs) س
//فواعل eg. جوامع
@@ -2646,6 +2836,8 @@
_) شاد (آL09L09P3@ S'Ad
_) شاه (L04L09L09P3@ S'Ah
_) شاه (آL09L09P3@ S'Ah
_) شیر (L04L09L09P3@ SiR-
_) شیر (آL09L09P3@ SiR-

// suffixes ش
L09L09) شناس (_Sm4 SenAs
@@ -2840,7 +3032,8 @@
_) صدر (آL09L09P5@ sadr

// Suffixes ص
L09L09) صد (_Sm2 sad
// L09L09) صد (_Sm2 sad
L09L09) صفت (_Sm3 sefat

// arabic form of words (Babs) ص
//فواعل eg. جوامع
@@ -3787,6 +3980,7 @@
L09L09) فریب (_Sm4 faRib
L09L09) فرما (_Sm4 faRmA
L09L09) فرسا (_Sm4 faRsA
L09L09) فرنگی (_Sm5 faRangi

// arabic form of words (Babs) ف
//فواعل eg. جوامع
@@ -3933,6 +4127,8 @@
// Prefixes ق
_) قابل (L04L09L09P4@ q1'Abele
_) قابل (آL09L09P4@ q1'Abele
_) قرمز (L04L09L09P4@ q1eRmez
_) قرمز (آL09L09P4@ q1eRmez

// suffixes ق
@@ -4103,6 +4299,8 @@
L09L09) کنندۀ (_Sm5 konandeje
L09L09) کنندگان (_Sm7 konandegAn
L09L09) کوچک (_Sm4 kutSak
L09L09) کلام (_Sm4 kalAm
L09L09) کرد (_Sm3 kaRd

// arabic form of words (Babs) ک
//فواعل eg. جوامع
@@ -4286,10 +4484,8 @@
L09L01) گانمان (_Sm6 gAnemAn
L09L01) گانتان (_Sm6 gAnetAn
L09L01) گانشان (_Sm6 gAneSAn
L09L01) گانه (_Sm4 g'Ane:
L09L01) گانۀ (_Sm4 g'Aneje
L09L03) گانه (_Sm4 eg'Ane:
L09L03) گانۀ (_Sm4 eg'Aneje
L09L09) گانه (_Sm4 g'Ane:
L09L09) گانۀ (_Sm4 g'Aneje
L09L09) گون (_Sm3 gun
L09L09) گونه (_Sm4 gune:
L09L09) گاه (_Sm3 g'Ah
@@ -4307,6 +4503,8 @@
L09L09) گشا (_Sm3 goSA
L09L09) گریز (_Sm4 goRiz
L09L09) گسار (_Sm4 gosAR
L09L09) گراف (_Sm4 geRAf
L09L09) گزین (_Sm4 gozin

// arabic form of words (Babs) گ
//فواعل eg. جوامع
@@ -4636,12 +4834,18 @@
_) مصطفی (L04L09L09P5@ mostafA
_) میلی (L04L09L09P4@ mili
_) میلی (آL09L09P4@ mili
_) ماه (L04L09L09P3@ mAh
_) ماه (L03L09L09P3@ mAh
_) ماه(آL09L09P3@ mAh
_) مگا (L04L09L09P3@ megA
_) مگا(آL09L09P3@ megA
_) مولتی (L04L09L09P5@ multi
_) مولتی(آL09L09P5@ multi
_) مایکرو (L04L09L09P6@ mAjkRo
_) مایکرو (آL09L09P6@ mAjkRo
_) میکرو (L04L09L09P5@ mikRo
_) میکرو (آL09L09P5@ mikRo
_) ماکرو (L04L09L09P5@ mAkRo
_) ماکرو (آL09L09P5@ mAkRo

// suffixes م
L09L09) ماه (_Sm3 mAh
@@ -4674,6 +4878,8 @@
L09L09) مردان (_Sm5 maRdAn
L09L09) منش (_Sm3 maneS
L09L09) مآب (_Sm3 maAb
L09L09) مقام (_Sm4 maq1Am
L09L09) مرغ (_Sm3 moRq1

// arabic form of words (Babs) م
//فواعل eg. جوامع
@@ -4852,6 +5058,8 @@
_) نو (آL09L09P2@ no'
_) نیم (L04L09L09P3@ nim
_) نیم (آL09L09P3@ nim
_) نیکو (L04L09L09P4@ niku
_) نیکو (آL09L09P4@ niku

// suffixes ن
L09L09L03) ن (_NSm1 an
@@ -4888,6 +5096,8 @@
L09L09) نشین (_Sm4 neSin
L09L09) نکردن (_Sm5 nakaRdan
L09L09L09) نشدن (_Sm4 naSodan
L09L09L09) نشانده (_Sm6 neSAnde:
L09L09L09) نشاندۀ (_Sm6 neSAndeje

// arabic form of words (Babs) ن
//فواعل eg. جوامع
@@ -4975,13 +5185,13 @@
//و in first of words
_) و (L03 va
_) و (L01 v
// و preceded by another latter
// و preceded by another letter
_ا) و (L03 u:
_ا) و (یا u:
_ا) و (یو u:
_ا) و (ا av
_ا) و (یL03 av
_ا) و (یی av
_ا) و (ا v
_ا) و (یL03 v
_ا) و (یی v
_ای) و (L01 v
_ای) و (L03 va
_ی) و (L01 v
@@ -5008,9 +5218,11 @@
L03) و (ا v
L03) و (یL03 v
L03) و (یL01 u
_L03) و (آ av
//otherwise
L09ا) و (ا v
L09ا) و (آ v
_و) و u
L09ا) و (و_ v
او) و (_ v
L09او) و (_ u
@@ -5040,7 +5252,9 @@
_آ) و (L03_ va

// Prefixes و
_) والا (L04L09P4@ vAlA
_) والا (آL09P4@ vAlA

// Suffixes و
L09L01) ور (_NSm2 vaR
L09L09) وند (_Sm3 vand
@@ -5345,6 +5559,8 @@
L02) ی j
L09و) ی (L03 i
L09و) ی (L01 j
L09و) ی (و_+ ej
L09و) ی (وL09+ i
L09ا) ی (L03 j
L09ا) ی (L01 j
L03) ی (وL03 ij
@@ -5371,7 +5587,7 @@
// Prefixes ی
_) یک (L04L09L09P2@ jek
_) یک (آL09L09P2@ jek
_) یاد (L09L09P3@ jAd
_) یاد (L04L09L09P3@ jAd
_) یاد (آL09L09P3@ jAd

// suffixes ی
@@ -5532,17 +5748,16 @@
//this character "ٔ" is defrent of "ء" and "ۀ" for example "دانشنامهٔ "


.group ٔ
L04) ٔ
ا) ٔ a?
ٔ
.group ٴ
L04) ٴ
ا) ٴ a?
ٴ

// suffixes ٔ
L09L03) ٔ (_NSm1 je
// suffixes ٴ
L09L03) ٴ (_NSm1 je


.group ّ
ّ (L02 taSdid
L02) ّ taSdid


@@ -5580,9 +5795,11 @@


.group ٰ
ٰ (L04 A
ٰ (ا
ٰ (آ
ٰ A


.group ٓ
ٓ


//short vowels that are not usually written:
@@ -5637,10 +5854,12 @@

.group أ
أ a?
أ (َ


.group إ
إ e?
إ (ِ


.group ـ
@@ -5648,7 +5867,6 @@


.group ،
، _


.group ؛

+ 136
- 0
dictsource/gd_list View File

@@ -0,0 +1,136 @@
// Letter names (temporary English names)
_a eI
b bi: $atend
c si:
d di: $atend
_e i:
f Ef
g dZi: $atend
h eItS $atend
_i aI
j dZeI
k keI
l El
m Em $atend
n En $atend
_o o:
p pi:
q kju:
r aR
_s Es
t ti: $atend
_u ju:
v vi:
w d'O#b@lju:
x Eks
y waI
z zEd

_à $accent
_á $accent
_è $accent
_é $accent
_ì $accent
_ò $accent
_ó $accent
_ù $accent

_acu akj'u:t
_grv 'aksEnt



// Numbers

_0 n'OnI
_1 'u-:n
_2 Q'a
_3 t*;'i
_4 k;'ehI*;
_5 k'O:g;
_6 S'i@
_7 S'Exg
_8 'Oxg
_9 n['u-I
_10 d;'eC
_11 'u-:nd;,iag
_12 Q'aQ,iag
_13 t*;'id;,iag
_14 k;'ehI*;d;,iag
_15 k'O:g;d;,iag
_16 S'i@d;,iag
_17 S'Exgd;,iag
_18 'Oxgd;,iag
_19 n['u-Id;,iag

_20 f'iC@d
_30 t*;'iC@d
_40 k;'Eh*@d
_50 k'O:g;@d
_60 S'esg@d
_70 S'Exg@d
_80 'Oxg@d
_90 n['u-:xg@d

_2X f'iC@ds@h#
_3X t*;'iC@ds@h#
_4X k;'Eh*@ds@h#
_5X k'O:g;@ds@h#
_6X S'esg@ds@h#
_7X S'Exg@ds@h#
_8X 'Oxg@ds@h#
_9X n['u-:xg@ds@h#

_0C k;'iad
_0M1 m'il@
_0M2 m'il^@n

_dpt _st'adf'u-n^u-g; // ?? full-stop


// Unstressed words

// articles
a $u+
an $u+
am $u+
na $u+
nan $u+
nam $u+

gun $u+
gu $u+
gum $u+
gur $u+

// personal pronouns
mi $u+
thu $u+
tu $u+
e E: $u+
i i: $u+
sinn $u+
sibh $u+
iad $u+

// possessive adjectives

mo m@
do d@
ar $u
ur $u

// prepositions
á a2 $u+
ag $u+
gu $u+
sa $u+
san $u+

// verbs
bu b@


// Pronunciation exceptions
// $alt1 silent ending (-bh, -gh)

+ 410
- 0
dictsource/gd_rules View File

@@ -0,0 +1,410 @@

// Based on:
// http://en.wikipedia.org/wiki/Scottish_Gaelic_orthography

// front vowels
.L01 e è é i ì

// back vowels
.L02 a à á o ò ó u ù

// slender consonant followed by a back vowel
.L03 eall eann earr earn eadh eahg eo eò ioll ionn iu iù

.L04 b bh g gh m mh
.L05 ll m nn

.L06 l n r // cause epenthetic vowel
.L07 l r s ch // epenthetic after 'm'


// NOTES:
// Use phoneme [#] for possible preaspiration
// Use phoneme [&] for epenthetic vowel

.group a
a a
a (dh_ o-
a (dhA o-
a (gh_ o-
a (ghA o-
a (L05K aU
a (rrK a:
a (rd a:
a (rn a:
a (g_ a2 // don't reduce to [@]
ai (l_ a2
@) ai I

ai a
ai (L05K aI
ai (mL07 E // ? aimsir
ai (bhC aI
ai (mhC aI
ai (rrK a:
ai (rd a:
ai (rn a:

ao u-:
aoi u-I
abh (C a_|u
amh (C a_|u
adh (C o-:
agh (C o-:
aidh (C a_|i
aigh (C o-_|i
.group à
à a:
ài a: // or E: ??
.group á
á a:
ái a:


.group e
e e

@) ea (g_ a2 // unstressed
@) ea @

ea E
ea (dh_ o-
ea (gh_ o-
ea (d e
ea (g e
ea (s e
ea (llK aU
ea (nnK aU
ea (rrK a:
ea (rn a:
_) ea (llA ja
_) ea (nnA ja
_) ea (rrA ja
ea (llA a
ea (nnA a
ea (rrA a
eagh (C o-: // ?? or O:
eamh (C E_|u
ei e
@) ei I // unstressed
ei (L05K eI
eo O
_) eò jO:
_) eòi jO:
eò O:
eòi O:
eu ia
eu (m e:

.group è
è E: // or e:
èi E: // or e:
èa ia
.group é
é e:
éi e:
.group i
i i
i (L05K i:
i (mL07 i
i (mh i
ia i@ // or ia
io i
_) io (llK ju
_) io (nnK ju
io (llK u:
io (nnK u:
iodh (C i_|@
iogh (C i_|@
_) iu ju
iu u
iu (rr u:
iu (rs u:
iù u:
iùi u:
.group ì
ì i:
ìo i@

.group o
o O
o (L04 o
o (L05K OU
o (mh o
o (rrK O:
o (rd O:
o (rn O:
ogh (C o:
oibh (C o-_i
oigh (C o-_i
oimh (C O_i
oi o- // or O
oi (L04 o
oi (mh o
oi (L05K @I
.group ò
ò O: // or o:
òi O: // or o:
.group ó
ó o:
ói o:

.group u
u u
u (L05K u:
u (rn u:
u (rr u:
u (_ u:

ua u@ // [ua] if followed by m or n ?
uai u@
ui u
ui (m u-
ui (n u-
ui (s u-
ui (dh u-I
ui (L05K u-I
ui (L05 u-
uimh (C u_|i
.group ù
ù u:
ùi u:

.group b
b b
b (L03 bj // try b;
L06) b &b // insert epenthetic vowel
L06) b (L03 &bj

.group bh
bh v
bh (_ v
bh (_+$w_alt1 // null
bh (L03 vj
// bh sometimes null between vowels or word-final
L06) bh &v
L06) bh (_ &v
L06) bh (L03 &vj
.group c
c k
A) c (L02 #k
A) c (_ #g
C) c (_ g

c (L01 k;
A) c (L01 #k;
L01) c (_ #g;
L01C) c (_ g;


ch x
L01) ch C
ch (L01 C
chd #g

L06) ch &x
L01L06) ch &C
L06) ch (L01 &C
cn kR

.group d
d d
L01) d d;
d (L01 d;
dh Q
A) dh (L02 Q // or null
dh (L01 J^
L01) dh J^
A) dh (L01
ai) dh (_
éi) dh (_

.group f
f f
f (L03 fj
fh

.group g
g g
L01) g g;
g (L01 g;
L06) g &g
L01L06) g &g;
L06) g (L01 &g;

gh Q
gh (_+$w_alt1 // null
A) gh (L02 Q // or null
L01) gh J^
gh (L01 J^
A) gh (L01
L06) gh &Q
L01L06) gh &J^
L06) gh (L01 &J^

gn gR


.group h
h h


.group j
j dZ

.group k
k k

.group l
l L
L01) l l
l (L01 l
_) l (L01 l^
ll L
L01) ll l^
ll (L01 l^

.group m
m m
m (L03 mj
L06) m &m // epenthetic
L06) m (L03 &mj
m (L07 m&
mh v
mh (L03 vj
// mh between vowels sometimes null
L06) mh &v
L06) mh (L03 &vj

.group n
n n
_) n (L02 n[

L02L01) n n^ // slender after a back vowel
L02L01C) n n^
L02L01CC) n n^

ng Ng
L01) ng ng;
ng (L01 ng;
n (gh n
nn n[
L01) nn (+ n^
nn (L01 n^


.group p
p p
A) p (A #p
A) p (_ #b
C) p (_ b
p (L03 bj
A) p (L03 #bj
ph f
ph (L03 fj


.group q
q kw

.group r
r *
L01) r *;
r (L01 *;
_) r R
rr R
rt (_ *Sd
rd (_ *Sd


.group s
s s
L01) s S
s (L01 S
sh h
sh (L03 hj


.group t
t t
A) t (L02 #t
A) t (_ #d
C) t (_ d
t (L01 t;
A) t (L01 #t;
L01) t (_ #d;
L01C) t (_ d;
L01CC) t (_ d;

th h
th (L03 hj
th (_ // ?
// th between vowels may be null

.group v
v v

.group w
w w

.group x
x ks
_) x z
.group y
y i
y (A j
A) y j

.group z
z z


+ 155
- 120
dictsource/gu_list View File

@@ -1,152 +1,166 @@
// This file is written by Him Prasad Gautam (Nepal)
// This gu_rules file is prepared by Maheshinder Singh Khosla< [email protected] >.

// 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
_0 S'u:nj@-
_1 'e:k
_2 b'e:
_3 tr'@2n.
_4 c'a:r
_5 p'a:n^c
_6 c#'@3
_7 s'a:t
_8 'a:t.#
_9 n'Vu
?3 _9 n'aU

_10 d'Vs
_11 ,VgIj'a:r
_12 b'a:r
_13 t'e:r
_14 c'O:d
_15 p@nd'Vr
_16 s'o:r.
_17 s@tt'Vr
_18 Vd.#'@r
_19 ,o:gn.'i:s

_20 w'i:s
_21 ,e:kv'i:s
_22 b'a:w'i:s
_23 te:v'i:s
_24 co:v'i:s
_25 p@cc'i:s
_26 c#@3v'i:s
_27 s,@t:e:a:v'i:s
_28 ,Vt.#:e:a:v'i:s
_29 ,o:[email protected]'i:s
_30 tr'i:s

_31 ,e:k@t:r'i:s
_32 b,@t:r'i:s
_33 t'e:tr'i:s
_34 c'o~tr'i:s
_35 p'V~tr'i:s
_36 c#@3tr'i:s
_37 s,a:r.atr'i:s
_38 ,a:r.atr'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'i:s
_44 c,u~ma:l'i:s
_45 p,Ista:l'i:s
_46 c#,e:ta:l'i:s
_47 s,ur.ta:l'i:s
_48 ,Vr.ta:l'i:s
_49 ,o:g@n.,@pc'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]:'i~t.#

_60 sa:H'i~t.#
_61 ,e:ks'Vt.#
_62 ba:s'Vt.#
_63 tre:s'Vt.#
_64 co:s'Vt.#
_65 pV~s'Vt.#
_66 c#V~s'Vt.#
_67 s,@r.@s'Vt.#
_68 ,Vr.@s'Vt.#
_69 ,o:[email protected]:'e:*

_70 sIt:'e:*
_71 ,e:ko:t'e:r
_72 bo~t'e:r
_73 to~t'e:r
_74 c,Imo:t'e:r
_75 p,Inco:t'e:r
_76 c#o~t'e:r
_77 s,It:o:t'e:r
_78 ,It.#:o:t'e:r
_79 ,o:gn.ja:'e~:sI

_80 'e~:sI
_81 ,e:kj'a:si
_82 bj'V~si
_83 t:j'V~si
_84 c,urI;'a:si
_85 pInc'a:si
_86 c#e:'V~si
_87 s@t:j'a:si
_88 ,Vt.#j'a:si
_89 nIvj'a:si

_90 n'e:vu~
_91 e:k'a:n.u~
_92 b'a:n.u~
_93 tr'a:n.u~
_94 co:r'a:n.u~
_95 p@nc'a:n.u~
_96 c#'Vnnu~
_97 s@t:'a:n.u~
_98 Vt.#:'a:n.u~
_99 n@vv'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
_2C b'Vs'o:
_0M1 h@J,a:r
_0M2 l'a:kh
_0M3 k@ro:r.V
_0M4 Vb'VJ
_0M5 kh'Vr@b
_dpt _d@s@ml'o:_


// Single consonants
ક k@
ક઼ q@
ખ k#@
ખ kh@
ખ઼ x@
ગ g@
ગ઼ Q@
ઘ g#@
ઘ gh@
ઙ N@
ચ c@
છ c#@
છ ch@
જ J@
જ઼ z@
ઝ J#@
ઝ Jh@
ઞ n^@
ટ t.@
ઠ t.#@
ડ d.@
ડ઼ r.@
ડ઼ @r.@
ઢ d.#@
ણ n.@ // retroflex n.@
h@n.@ // retroflex n.@
ત t@
થ t#@
થ th@
દ d@
ધ d#@
ધ dh@
ન n@
પ p@
ફ p#@
ફ ph@
ફ઼ f@
બ b@
ભ b#@
ભ bh@
મ m@
ય j@
ર r@

લ l@
ળ l.@
વ v@
@@ -155,13 +169,34 @@ _dpt p'u:r'n.'a:,Nk
સ s@
હ H@

// combining vowel signs
ા #X2a:
િ #X1I
ી #X2i:
ુ #X1U
ૂ #X2u:
ૃ #X1ru
ૄ #X1ru
ૅ #X1E
ે #X2e:
ૈ #X2aI
?2 ૈ #X2aI
ૉ #X1O
ો #X2o:
ૌ #X2aU
?3 ૌ #X2aU
ૢ #X1l-
ૣ #X2l-:
ૐ #X1o~m


// Punctuation
। p'urn'a,b'ira:m
૱ r'u:p'i:ja:
$ d@l@r
। dVn.d.V
્ H@l'Vnt
$ dOl@r
% pVt'IS@t
+ plVs
= bVr'a:b@r
* ta:r'a:Nk@n



+ 333
- 303
dictsource/gu_rules View File

@@ -1,17 +1,15 @@
// This file is developed by Him Prasad Gautam (Nepal)

// Gujarati Language.
// This gu_rules file is prepared by Maheshinder Singh Khosla< [email protected] >.

// This file is UTF8 encoded

// letter groups:
// A vowel letters and vowel signs
// B vowel signs and virama
// 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
@@ -25,444 +23,476 @@
૯ 9



// Vowels


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

.group આ
આ a:
આ a:
આં V~

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

.group ઈ
i:
ઈ (_ i
i:
ઈ (_ i

.group ઉ
U
U

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

.group ઋ
ઋ rI
ઋ ru

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

.group ઍ
ઍ E // candra e
ઍ E // candra e

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

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


.group ઑ
ઑ O // candra O
ઑ O // candra O

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

ઓ o:
ઓં o~ // +anusvara
ઓઁ (_ o~ // +candrabindu
ા) ઓં (_ w // +anusvara
ા) ઓઁ (_ w
.group ઔ
ઔ O: // ?? [aU] [O:]
ઔં (_ O~ // +anusvara
ઔઁ (_ O~ // +candrabindu
?3 ઔ aU // ?? [aU] [O:]
ઔ aU // ?? [aU] [O:]
ઔં aU~ // +anusvara
ઔઁ (_ aU~ // +candrabindu


// Vowel Signs

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

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

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

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

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

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

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

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

.group ે
ે 'e:,c'i:n'h'a
C) ે e:
C) ે (ઁ e~
C) ેં (_ e~:
C) ેઁ (_ e~:
ે e:
ે (ઁ e~
ેં e~:
ેઁ (_ 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:] [&:]
ૈ aI // ?? [aI] [E:] [&:]
ૈં aI~
ૈ (ઁ aI~
ૈઁ (_ aI~


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

.group ો
ો o:,c'i:n'h'a
C) ો o:
C) ો (ઁ o~
C) ોં (_ o~
C) ોઁ (_ o~
ો o:
ોં o~
ો (ઁ o~
ોઁ (_ 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] ??
ૌ aU // [O:] or [aU] ??
ૌ (ઁ aU~ // [O:] or [aU] ??
ૌં aU~
ૌઁ (_ 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 ૢ // vowel sign l
ૢ l-

.group ૣ // vowel sign ll
ૣ l-:

.group ૐ
o~m
o~m

// Consonants

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

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

ગ્ગ g:V // GG -> g:
ગ્ગ (B g:

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

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

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

ચ્ચ c:V // cc -> c:
ચ્ચ (B c:


ચ્છ c#:V // c#c# -> c#:
ચ્છ (B c#:

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

છ્છ c#:V // c#c# -> c#:
છ્છ (B c#:

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

.group ઝ
ઝ J#V
ઝ (B J#
જ્જ J:V // JJ -> J:
જ્જ (B J:

જ્ઞ gr.V // ??
જ્ઞ (B gr.

.group ઞ
ઞ n^V
ઞ (B n^
્) ઞ (_ n^@
.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.#:
ટ 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.#:
t.#V
ઠ (B t.#
ઠ્ઠ t.#:V // t.#t.# -> t.#:
ઠ્ઠ (B t.#:
.group ડ
d.V
ડ (B d.
d.V
ડ (B d.

ડ઼ r.V
ડ઼ (B r.
ડ્ડ d.:V // d. d. -> d.:
ડ્ડ (B d.:

ડ્ઢ d.#:V // d#d# -> d#:
ડ્ઢ (B d.#:

ડ઼ r.V
ડ઼ (B r.

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

ઢ્ઢ d.#:V // d.#d.# -> d.#:
ઢ્ઢ (B d.#:

ઢ઼ r.hV // nukta (should retroflex flap)
ઢ઼ (B r.h // nukta

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

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

ત્ત t:V // tt -> t:
ત્ત (B t:

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


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

થ્થ t#:V // t#t# -> t#:
થ્થ (B t#:

.group દ
દ dV
દ (B d
દ dV
દ (B d

દ્દ d:V // dd -> d:
દ્દ (B d:

દ્ધ d#:V // d#d# -> d#:
દ્ધ (B d#:

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

.group ન
ન nV
ન (B n
્) ન (_ n@
ર્) ન (_ n // r +virama
ધ્ધ d#:V // d#d# -> d#:
ધ્ધ (B d#:

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

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

પ્પ p:V // pp -> p:
પ્પ (B p:

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

.group બ
bV
બ (B b
bV
બ (B b

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

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

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

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

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

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

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

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

.group શ
SV
શ (B S
SV
શ (B S

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

.group સ
sV
સ (B s
sV
સ (B s

.group હ
હ HV
હ (B H
હ HV
હ (B H


.group ઼
઼ t.'Vp,k'u:
A) ઼
C) ઼
઼ // nukta, modifies a consonant

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

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

.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

ં n // anusvara
ં (પ 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
ઃ H // visarga

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

// Extra consonants

.group ક઼ // qa
ક઼ qV

.group ખ઼ // khha
ખ઼ xV

.group ગ઼ // ghha
ગ઼ QV

.group જ઼ // za
જ઼ zV

.group ફ઼ // fa
ફ઼ fV

.group ૠ // rr
ૠ V-rr

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


// If we find a Latin letter a-z, then translate as English
// (This is now done automatically by the eSpeak program)

.group o
o _^_EN
D__) of (__D me




.group
$ dOlV
% pVsEnt

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

+ 1
- 0
dictsource/hi_rules View File

@@ -392,6 +392,7 @@
_) व (B w
_) व (् v // +virma
व (_ w
्) व (_ w@

.group श
श SV

+ 608
- 607
dictsource/hu_rules
File diff suppressed because it is too large
View File


+ 1637
- 330
dictsource/it_list
File diff suppressed because it is too large
View File


+ 284
- 400
dictsource/it_listx
File diff suppressed because it is too large
View File


+ 492
- 358
dictsource/it_rules View File

@@ -1,6 +1,6 @@
// translation rules
// Italian translation rules
// This file is UTF-8 encoded
// Last update: 2014 January 07 Chris, Christian Leo M, <[email protected]>
// letter groups
// A any vowel
// C any consonant
@@ -9,406 +9,540 @@
.L01 a à o ò ó u ù
.L02 e é è
.L03 b d g l m n r v // 's' is [z] before these
.L04 mi ti gli lo la le si ci vi li ne melo telo selo celo velo mela tela sela cela vela meli teli seli celi veli mele tele sele cele vele mene tene sene cene vene glielo gliela glieli gliele gli
ene

// Hours and minutes
.L16 0 1 2 3 4 5 6 7 8 9 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
.L17 0 1 2 3 4 5


.group a
a a
ai (K aI
ao (_N aU
au a%u

@C) a (_S1q a // lookup it_list without suffix
@i) a (_S1q a // lookup it_list without suffix

@) a (cA_ =a
@) a (che_ =a
a (istA_ a
a (ismo_ a
@) a (bile_ 'a
@) a (ggine_ 'a

_) ae (r aI
// @) a (no_ =a //ByFilo, this seems to make it_listx longer
@) avano (_S5 'avano
a (tterA_ 'a
a a
ai (K aI
ao (_N aU
au a%u
@C) a (_S1q a // lookup it_list without suffix
@i) a (_S1q a // lookup it_list without suffix
@) a (cA_ =a
@) a (che_ =a
a (istA_ a
a (ismo_ 'a
@) a (bile_ 'a
@) a (ggine_ 'a

_) ae (r aE
@) avano (_S5q 'avano
a (tterA_ 'a
_) all' (P4t all
_) anch' (P5t ank
@) amo (L04_ 'amo
@) ander (L04_ 'andE@-*
ate (L04_ 'ate

.group à
à ''a
ài (K ''aI
ào (_N ''aU
àu ''a%u
à ''a
ài (K ''aI
ào (_N ''aU
àu ''a%u

.group b
b b
bb b:
b b
bb b:

.group c
c k
cc k:
c (' tS
c (Y tS
cc (Y tS:
ch k
cch k:
ci (A tS // or L01 ?
cci (A tS: // or L01 ?
@) co (lA_ =ko
c k
cc k:
ck k:
cqu k:w2
c (Y tS
cc (Y tS:
ch (Y k
cch (Y k:
s) ch (A k
ch (a tS
ch (o tS
ch (u tS
ci (A tS // or L01 ?
cci (A tS: // or L01 ?
@) co (lA_ =ko
_) c' (P2t tS
@@A) ce (A_ =tSE

.group d
d d
dd d:
n) dere =deRe
d d
dd d:
n) dere =deRe

_) dall' (P5t dall
_) dell' (P5t dell
_) d' (P2t d
donat (Y_ don'at
dona (L04_ d'ona
ci) der (L04_ =dE@-*
chAA) der (L04_ =de@-*
re) der (L04_ =de@-*

.group e
e e
ei Ej (K
@C) e (_S1q e // lookup it_list without suffix
@Ar) e (_ e

e (C_ E
e (A E
e (C%A_ E // doubled consonant
e (CiCA_ E
e (CulA_ E
e (llu E
e (st E
e (ttA_ e
c) e (ttA_ E
e (tti@ E
e (zzA_ e

e (r E
e (rsi_N e
A) e (r_ 'E

_r) e E
e e
ei (K Ej
r) ei (_ 'ei
@C) e (_S1q e // lookup it_list without suffix
e (C_ E
e (A E
e (C%A_ E // doubled consonant
e (CiCA_ E
e (CulA_ E
e (llu E
e (st E
e (ttA_ e
c) e (ttA_ E
e (tti@ E
e (zzA_ e

e (r E
e (rsi_N e
A) e (r_ 'E

_r) e E

// @) e (ce_ =e
@) e (ci_ =e

e (l E
r) e (m E
e (monA_ 'e
e (nA_ E
g) e (ne E
e (ngA_ e
e (nCA_ E
@m) e (ntA_ e
%C) e (rA_ =E
C) e (re_ =E
gg) e (ro_ E
f) e (rm e
@) e (rrimo_ 'E
@) e (simo_ 'e
h) e (ss e
m) e (ss e
_sC) e (ss e
e (ssa_ e
e (tr E
e (ti E

e (vi_ E
e (vo_ E
@) e (volA_ 'e
e (zA E
@) e (ci_ =e

e (l E
r) e (m E
e (monA_ 'e
e (nA_ E
g) e (ne E
e (ngA_ e
e (nCA_ E
@m) e (ntA_ e
%C) e (rA_ =E
C) e (re_ =E
gg) e (ro_ E
f) e (rm e
@) e (rrimo_ 'E
@) e (simA_ 'e
h) e (ss e
m) e (ss e
_sC) e (ss e
e (ssa_ e
e (tr E
e (ti E
e (vi_ E
e (vo_ E
@) e (volA_ 'e
e (zA E
CC) eggia (no_ 'EdZ:a
C) ender (L04_ 'ende@-*
C) erder (L04_ 'E@-*de@-*
esser (L04_ 'es:eR
_) ecco (L04 'Ek:o
ete (L04_ 'ete

.group f
f f
f f
ff f:
@A) f (ilo_ =f
A) f (ero_ =f

@A) f (ilo_ =f
A) f (ero_ =f
.group g
g g
gg g:
gh g
g (Y dZ
gi (A dZ // any vowel, or L01 ?
gi (a_ dZ'i# // [i] only if stressed
gì (a_ dZ'i# // [i] only if stressed
n) gi (a_ dZ
gg (Y dZ:
ggi (A dZ: // or L01 ?
@) gger (lo_ =dZ:eR
gl (i l^
gl (ì l^
gli (A l^
_) gl gl
gn n^
gu (A gw

g g
gg g:
gh g
g (Y dZ
gi (A dZ // any vowel, or L01 ?
gi (a_ dZ'i# // [i] only if stressed
gì (a_ dZ'i# // [i] only if stressed
lo) gi (e_ dZ'i#
n) gi (a_ dZ
gg (Y dZ:
ggi (A dZ: // or L01 ?
@) gger (L04_ =dZ:e@-*
AC) ger (L04_ =dZe@-*
_) giura (L04_ dZ'URa
gl (i l^
gl (ì l^
gli (A l^
_) gl gl
@) glier (L04_ =l^E@-*
@) guer (L04_ =gUe@-*
gn n^
@) gn (A_ n^;
a) gn (A_ n^:
gu (A gw

.group h
h
_) ha h'a
_) hà h'a
h
_) ha h'a
_) hà h'a

.group i
i i
i (A j
l) i (A %i
r) i (A %i
_C) i (a i
_C) i (à i
i (o i
i (ò i
i (ó i
@) ia (_ =i%a
@) ià (_ i'a
X) ia (_ 'ia
af) ia (_ 'ia
fon) ia (_ 'ia
scop) ia (_ 'ia
er) ia (_ 'ia
gor) ia (_ 'ia
metr) ia (_ 'ia
t) ia (_ 'ia
@) io (_S1q =i%o
a) i (+ j
à) i (+ j
L02) i (+ j
o) i (+ j

@C) i (_S1q i // lookup it_list without suffix

@) i (Ante_ i
i (acA_ 'i
i (asi_ 'i
@) i (bile_ 'i
@) i (cA_ =i
tr) i (ce_ i
@) i (chA_ =i
@) i (dA_ =i
@) i (dere_ 'i
@) ie (rA_ i'E
@) ié (rA_ i'E
@) iè (rA_ i'E
@) i (gA_ =i
i (genA_ 'i
c) i (lA_ =i
g) i (lA_ =i
ss) i (lA_ =i
b) i (le_ =i
m) i (le_ =i
i (lA_ =i
@) i (ma_ =i
r) i (ma_ i
laCr) i (ma_ =i
st) i (ma_ i
enz) i (ma_ i
@) i (mo_ =i
inas (_ 'inas
i (ne_ =i
@) issima(_S6 'issima
@) issime(_S6 'issime
@) issimi(_S6 'issimi
@) issimo(_S6 'issimo
@) issero(_S6 'issero
p) i (te_ =i

i i
i (A j
l) i (A %i
r) i (A %i
_C) ie (_ 'ie
i (o i
i (ò i
i (ó i
@) ia (_ =i%a
@) ià (_ i'a
X) ia (_ 'ia
af) ia (_ 'ia
af) ie (_ 'ie
fon) ia (_ 'ia
scop) ia (_ 'ia
er) ia (_ 'ia
er) ie (_ 'ie
gor) ia (_ 'ia
metr) ia (_ 'ia
metr) ie (_ 'ie
t) ia (_ 'ia
t) ie (_ 'ie
@) io (_S1q =i%o
a) i (+ j
à) i (+ j
L02) i (+ j
o) i (+ j
@C) i (_S1q i // lookup it_list without suffix
@) i (Ante_ i
i (acA_ 'i
i (asi_ 'i
@) i (bile_ 'i
@) i (cA_ =i
tr) i (cY_ i
@) i (chA_ =i
@) i (dA_ =i
@) i (dere_ 'i
@) ie (rA_ i'E
@) ié (rA_ i'E
@) i (gA_ =i
i (genA_ 'i
c) i (lA_ =i
g) i (lA_ =i
ss) i (lA_ =i
b) i (le_ =i
m) i (le_ =i
i (lA_ =i
@) i (mA_ =i
laCr) i (mA_ =i
r) i (ma_ i
inas (_ 'inas
@g) in (Y_ =in
c) ine (_ =ine
d) ine (_ =ine
@@Cand) i (ne_ 'i
Cm) in (Y_ =in
im) in (Y_ =in

@) issim (A_ 'issim
@) issero (_S6q 'issero
p) i (te_ =i
C) iad (Y_ 'iad
@) iono (_ =iono
issano (_ 'is:ano
ite (L04_ 'ite
iver (L04_ 'ivE@-*
d) iver (L04_ iv'E@-*

.group j
j j

j dZ
@) j (_ j
_) juan _^_ES

.group k
k k
kk k:
k k
kk k:
.group l
l l
ll (C l_
ll (_ l
l l
ll (C l_
ll (_ l
_) l' (P2t l
lascia (L04_ l'aSa

.group m
m m
A) mi (a_ m'i
m m
A) mi (a_ m'i
_) m' (P2t m
_) mezz' (P5t mEdz:
metter (L04_ m'ette@-*

.group n
n n
n (g N
n (gY n
n (k N
n n
n (g N
n (gY n
n (k N
_) nell' (P5t nell
_) neanch' (P7t neank
ndo (L04_ =ndo // for pronominal verbs
netter (L04_ n'Et:e@-*
_zA) nz (A n|dz
A) ne (A_ =nE

.group o
o o
oi O%I
oi (o_ o%I
oi (sCA_ o'i

o (C%A_ O // doubled consonant
o (CACA_ O
o (Cr O
o (CC_ O
@C) o (_S1q o // lookup it_list without suffix
@i) o (_S1q o // lookup it_list without suffix
i) o O
i) o (ne o
i) o (so_ o
m) o (bile O
o (ca_ O
o (co_ O
@) o (di_ =o
@) o (do_ =o
@) o (fono_ 'O
o (genA_ 'O
l) o (gico_ 'O
@) o (gnolo_ 'o
@) o (grafo_ 'O
o (lX O
nd) o (lA_ =O
ns) o (lA_ =O
CC) o (lA_ =O
u) o (lA_ O
v) o (lA_ =o
@) o (la_ O
gn) o (la_ O
o (li O
@) o (liA_ O
@) o (lo_ =O
i) o (lA_ O
ci) o (lA_ =O
@) o (logo_ 'O
c) o (ltA_ O
sc) o (ltA_ o
v) o (lt O
@) o (metro_ 'O
@) o (ma_ O
@) o (mo_ O
dr) o (mo_ =o
o (ni O
o (ni_ o
o (no_ O
@) o (nomo_ 'O
@) o (nzolo_ 'o
o (o O
o (polA_ 'O
sc) o (p O
o (r O
o (re_ o
f) o (rmA_ o
o (si_ O
o (ss O
Ar) o (ssA_ o
o (st O
o (stracA_ 'O
o (ttol O
o (zA O
o o
oi O%I
oi (o_ o%I
oi (sCA_ o'i
o (C%A_ O // doubled consonant
o (CACA_ O
o (Cr O
o (CC_ O
@C) o (_S1q o // lookup it_list without suffix
@i) o (_S1q o // lookup it_list without suffix
i) o O
i) o (ne o
i) o (so_ o
m) o (bile O
o (ca_ O
o (co_ O
@) o (di_ =o
@) o (do_ =o
@) o (fono_ 'O
o (genA_ 'O
l) o (gico_ 'O
@) o (gnolo_ 'o
@) o (grafo_ 'O
o (lX O
nd) o (lA_ =O
ns) o (lA_ =O
CC) o (lA_ =O
u) o (lA_ O
v) o (lA_ =o
@) o (la_ O
gn) o (la_ O
o (li O
@) o (liA_ O
@) o (lo_ =O
i) o (lA_ O
ci) o (lA_ =O
@) o (logo_ 'O
c) o (ltA_ O
sc) o (ltA_ o
v) o (lt O
@) o (metro_ 'O
@) o (ma_ O
@) o (mo_ O
dr) o (mo_ =o
o (ni O
o (ni_ o
@) o (no_ =O
u) o (no_ 'o
@) o (nomo_ 'O
@) o (nzolo_ 'o
o (o O
o (polA_ 'O
sc) o (p O
o (r O
o (rY_ o
f) o (rmA_ o
o (si_ O
o (ss O
Ar) o (ssA_ o
o (st O
o (stracA_ 'O
o (ttol O
o (zA O
osano (_ 'ozano
C) onder (L04_ 'ondE@-*
over (L04_ 'ovE@-*
d) over (L04_ Ov'E@-*
.group p
p p
pp p:
_) pn (@@ n
_) ps (A@ s
@m) p (ere_ =p
p p
pp p:
_) pn (@@ n
_) ps (A@ s
@m) p (erY_ =p

.group q
q kw2
qu kw2
q k
qu kw2
_) quell' (P6t kw2Ell
_) quest' (P6t kw2est

.group r
C) r @-*
r @-*
_) r @-*
rr R*
A) r (A R
C) r @-*
r @-*
r (_ @-*
_) r @-*
rr R*
A) r (A R
@) r (L04_ =@-* // for Italian pronominal verbs and reflexive verbs
C) rai (_ @-*'aI
A) rai (_ R'aI
rrai (_ R*'aI

.group s
s s
_) s s
A) s (A z
s (L03 z

l) s s
p) s s
k) s s
s (c s
s (f s
s (k s
s (p s
s (q s
ss ss
s (t s
s (x s
sc (Y S
sci (A S
sci (i S%i
sci (ì S%i
sch (Y sk
sh (K S // foreign words
K) sh S // foreign words
@) sia z'ia
@C) sia s'ia
@) sià zi'a
@) s (_S1 s
s s
_) s s
A) s (A z
s (L03 z

l) s s
p) s s
k) s s
s (c s
s (f s
s (k s
s (p s
s (q s
ss ss
A) ss (A s:

s (t s
s (x s
sc (Y S
sci (A S
scii Sij
sci (ì S%i
sch (Y sk
sh (K S // foreign words
K) sh S // foreign words
A) sh (A S
@) sia (_ z'ia
@) sie (_ z'ie
@C) sia s'ia
@) sià zi'a
@) s (_S1 s
_) sull' (P5t sull
_) sotto (P5t sot:o
@) scer (L04_ =SE@-*

.group t
t t
tt t:
.group u
u u
u (A w2
Kr) u (A u
Kl) u (A u
t t
tt t:
@a) tria (_ t@-*'ia
@a) trie (_ t@-*'ie
@) tt (ano_ =t:
a) ttoria (_ t:oR'ia
a) ttorie (_ t:oR'Ie

@) u (dine_ 'u
@) u (colo_ 'u
u (ito_ 'u
@) u (lA_ =u
.group u
u u
_) u (A w2
Kr) u (A u
Kl) u (A u

@) u (dinY_ 'u
@) u (colo_ 'u
u (ito_ 'u
@) u (lA_ =u
_) un' (P3t un
@@) u (A_ =u
A%C) u (A_ =u

ural (Y_ uR'al
C) ura (L04_ 'uRa
uder (L04_ 'udE@-*

.group v
v v
v v
vv v:
vvi (A v:i
C) vi (A vI
C) vi (A_ =vI

.group w
w w2
w w2

.group x
x ks
x ks
.group y
y j
y (K i // foreign words
.group z
z ts
A) zz ts:
A) z (A ts:
y j
y (K i // foreign words

_) z (i dz
_) z (ì dz
z (L01A dz
.group z
z ts
A) zz (A ts:
_A) z (AC dz
_) z (AC dz
_) z (Y dz
z (L01A dz
_A) zz (A |dz:
CA) zz (arC dz:
@li) zz (A dz:
@) zz (ano_ =ts:
i) zza (no_ =dz:a
@@) zza (L04_ =dz:a
@i) zza (ti_ dz:'a
zion (A_ tsi'On
ziona (ti_ tsiOn'a
zional (Y tsiOn'al
ziona (L04_ tsi'Ona

.group 0xce // Greek letters
// 0xce is the first byte of the utf-8 code for these characters

α 'alfa_
ά 'alfa_
β b'eta_
γ g'am:a_
δ d'Elta_
ε 'EpsIlon
έ 'EpsIlon_
ζ dz'eta||g@-*'eka
η 'e:ta||g@-*'eka
ή 'e:ta||g@-*'eka_
θ t'e:ta||g@-*'eka_
ι I'ota_
ί I'ota_
κ k'ap:a||g@-*'eka_
λ l'ambda_
μ m'ju:_
ν n'ju:_
ξ ks'I||g@-*'eka_
ο 'omIk@-*on_

.group 0xcf // Greek letters

π p'I||g@-*'eka_
ρ @-*'O||g@-*'eka_
σ s'Igma_
ς s'Igma_
τ t'au_
υ 'IpsIlon_
ύ 'IpsIlon_
φ f'I||g@-*'eka_
χ k'I||g@-*'eka_
ψ ps'I||g@-*'eka_
ω om'ega_
ώ om'ega_
ό 'omIk@-*on_

.group
è ''E
èi (K ''Ej

é ''e
éi (K ''eI

ì ''i
ó ''o
ói ''o|I

ò ''O
òi ''OI

ù ''u

$ dollaro
, (D v'irgola
! _p'untoesklamat'ivo_
!) !
? _p'untointeRogat'ivo_
?) ?

__) - (_D meno
A_) - (_D _
C_) - (_D _
gn n^
ñ n^
_L16_) : (_L17D_ _%%E_ // Say time

á ''a
é ''e
è ''E
èi (K ''Ej
éi (K ''eI
ì ''i
í ''i
ó ''o
ói ''o|I
ò ''O
òi ''OI
ú ''u
ù ''u

$ d'ollaRo
D) , (D v'i@-*gola
! _p'untoesklamat'ivo_
!) !
? _p'untointeRogat'ivo_
?) ?
__) - (_D meno
A_) - (_D _
C_) - (_D _
§ setsi'one

§ setsi'one

+ 15
- 1
dictsource/kn_rules View File

@@ -18,6 +18,16 @@
೮ 8
೯ 9

.L01 ಕ ಖ ಗ ಘ ಙ // velar

.L02 ಚ ಛ ಜ ಝ ಞ // palatal

.L03 ಟ ಠ ಡ ಢ ಣ // retroflex

.L04 ತ ಥ ದ ಧ ನ // dental

.L05 ಪ ಫ ಬ ಭ ಮ // labial


.group ಕ
ಕ ka
@@ -215,7 +225,11 @@

.group 0xe0b2 // characters which start with UTF-8 bytes: [e0 b2]

ಂ m // anusvara (this should nasalize the vowel)
ಂ(L01 N // anusvara (this should nasalize the vowel)
ಂ(L02 n^
ಂ(L03 n.
ಂ(L04 n
ಂ m

ಃ h // visarga


+ 166
- 0
dictsource/lfn_list View File

@@ -0,0 +1,166 @@
// This file is UTF-8 encoded
// Special attributes
// $alt1 stress on final vowel, before 's', which is not a suffix.
// numbers
_0 z'ero
_1 'un
_2 d'u
_3 t**'e
_4 kw'at**o
_5 s'inko
_6 s'es
_7 s'ete
_8 'oto
_9 n'ove
_1X d'es
_2X dud'es
_3X t**ed'es
_4X kwat**od'es
_5X sinkod'es
_6X sesd'es
_7X seted'es
_8X otod'es
_9X noved'es
_1C s'ento
_2C dus'ento
_3C t**es'ento
_4C kwat**os'ento
_5C sinkos'ento
_6C ses'ento
_7C setes'ento
_8C otos'ento
_9C noves'ento
_0M1 m'il
_1M1 m'il
_0M2 milj'on
_dpt _viR2g'ula
// Letters
b be
c ke
d de
f ef
g ge
h haS
j Ze
k ka
l el
m em
n en
p pe
q kwa
r eR2
s es
t te
v ve
w wa
x eS
y ja
z ze
// If a letter has a "word" pronunciation which is different from its
// "letter" name, then include the letter name here, with the letter
// prefixed by a _ character.
_a 'a
_e 'e
_o 'o
á $accent
é $accent
í $accent
ó $accent
ú $accent
_acu sinj'eta'agu
// Symbols
* s'injadest'ela
= s'injadeeg'alja
# g**ilja
$ dolaR2s
€ eU**os
% peR2sento
° grado
_: dupunto
_; punto||viR2gula
_, viR2gula
_. punto
// Abbreviations
acc $abbrev
aec $abbrev
dr dotoR2
ec $abbrev
etc $abbrev
// article
la $u+
// Conjunctions
e $u+
o $u+ $brk
ma $u+
no $u+
ci $u+
cual $u+
do $u+
cuando $u+
cuanto $u+
como $u+
perce $u+
ce $u+
esce $u+
afin $u+ $brk
ca $u+ $brk
car $u+ $brk
si $u+ $brk
// Prepositions
a $u+
ante $u+
asta $u+
con $u+
contra $u+
de $u+
en $u+
entre $u+
estra $u+
longo $u+
par $u+
per $u+
pos $u+
sin $u+
sirca $u+
su $u+
supra $u+
sur $u+
// pronouns
me $u+
tu $u+
el $u+
lo $u+
se $u+
on $u+
nos $u+
vos $u+
los $u+
// non plural words finished by s
felis $alt1
engles $alt1
franses $alt1
portuges $alt1

+ 175
- 0
dictsource/lfn_rules View File

@@ -0,0 +1,175 @@
// translation rules for lingua franca nova
// This file is UTF-8 encoded
.replace а a
.replace б b
.replace к c
.replace д d
.replace е e
.replace ф f
.replace г g
.replace х h
.replace и i
.replace ж j
.replace л l
.replace м m
.replace н n
.replace о o
.replace п p
.replace р r
.replace с s
.replace т t
.replace у u
.replace в v
.replace ш x
.replace з z
.replace ё io
.replace й i
.replace ц ts
.replace ч tx
.replace щ xtx
.replace ы i
.replace э e
.replace ю iu
.replace я ia
.group a
a (CX 'a // + consonant and no more vowels
a a
ai (X 'aI
ai aI
au (X 'aU
au aU
.group b
b b
.group c
c k
.group d
d d
dj dZ
.group e
e (CX 'e
e e
_) ei e
eu eU
eu (X 'eU
.group f
f f
.group g
g g
.group h
h h
.group i
i i
i (CX 'i
_) i (A j
A) i (A j
Al) i (A j
An) i (A j
@) i (A_ =i
.group j
A) j Z
j Z
.group k
k k
.group l
l l
.group m
m m
_) mn (em n
.group n
n n
n (c N
n (g N
ng (X N
.group o
o o
o (CX 'o
oi oI
oi (X 'oI
ou o
.group p
p p
_) p (sA
_) ph f
_) pre (i p**e
_) pro (i p**o
.group q
q k
.group r
r (C R2
r **
_) re (i **e
.group s
s s
s (_S1 s // plural suffix
X) s (_S1 'es
s (_$w_alt1+ s // not plural, stress is on the last vowel
_) supra sup**a
.group t
t t
tx tS
.group u
u u
u (CX 'u
_) u (A w
A) u (A w
c) u (A+ w
g) u (A+ w
@) u (a_ =u
@) u (e_ =u
@) u (o_ =u
.group v
v v
.group w
w w
.group x
x S
.group y
C) y (K i
y j
.group z
z z
.group
á ''a
é ''e
í ''i
ó ''o
ú ''u

+ 3
- 3
dictsource/nl_list View File

@@ -403,7 +403,7 @@ zeten $alt
boezemen $alt
ademen $alt
bliksemen $alt
wasemen $alt
wasemen v#a:s@m@n $alt

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

@@ -881,7 +881,7 @@ waaier $alt
wakker $alt
wapper $alt
water $alt
wedijver v#Ed'EIv@r $alt
wedijver v#'EtEIv@r $alt
weelder $alt
wegwijzer $alt
weiger $alt
@@ -1805,7 +1805,7 @@ verderop $3
vergezicht vErQ@zIxt
verre vEr@
verrekijker vEr@kEIk@r
versa vErs'a:
versa v'Erza:
verste vErst@
verte vErt@
volledig $2

+ 4
- 2
dictsource/nl_rules View File

@@ -430,9 +430,10 @@
_) ge (tenL02 Qe:
_) geu QY:
_) ge (ven Qe:
_) ge (ver Qe:
ge (vend_ Qe:
ge (ver Qe:
ge (val Q@
_) ge (ving Qe:
ge (ving Qe:

ge (sprek Q@ // in compounds

@@ -518,6 +519,7 @@
&) iko (_ =iko:
fam) i (lie 'i
_) in (C@P2 'In
_) in (a@P2 'In
_) ing (eC_ IN // bewerkingen
_) in (do In
_) in (forma In

+ 90
- 39
dictsource/om_list View File

@@ -1,40 +1,91 @@
// numeric
_0 duwa:
_1 tokko
_2 l@m@:
_3 s@di:
_4 afur
_5 S'an
_6 dZ'a:ha
_7 To:rba:
_8 sed:eit:
_9 sagal
_10 kud@'n
_1X
kud'@
_20 dig'dam@
_2X dig'dami:
_3X sod:omi:
_4X afu:rt@mi:
_5X S@nt@mi:
_6X dZat@mi:
_7X torbat@mi:
_8X s@de:t@mi:
_9X s@gal'tami:
_0C ib:'a
_1C ib:'atokko
_2C ib:'alama
_3C ib:'as@di
_4C ib:'a:furi
_5C ib:'a:S@ni
_6C ib:'a'dZa
_7C ib:'a'torb@
_8C ib:'a's@de:ti:
_9C ib:'a'sag@li
_0of na
_0M1 kum@:
_0M2 milijoni:
_0M3 bilijoni:
_dpt tuqa:
_. tuqa:
_roman roma:ni:
_0 duw:a:
_1 tok:o
_2 lama
_3 sadi:
_4 afur
_5 S'an
_6 dZ'a:ha
_7 To:rba
_8 sad:e:t
_9 sagal
_10 kud'an
_1X kud'a
_20 dig'dama
_2X dig'dami:
_3X sod:omi:
_4X afurtami:
_5X Santami:
_6X dZatami:x
_7X torbat:ami:
_8X sade:t:ami:
_9X sagal't:ami:
_0C ib:'a
_1C ib:'atokko
_2C ib:'alama
_3C ib:'asadi
_4C ib:'a:furi
_5C ib:'a:Sani
_6C ib:'adZa
_7C ib:'atorba
_8C ib:'asade:ti:
_9C ib:'asagali
_0M1 kuma
_0M2 milijoni:
_0M3 bilijoni:
_dpt tuqa:
_. tuqa:
_roman roma:ni:
?!3 _0and fi


a a:
b ba:
c tS`a:
d da:
e e:
f fa:
g ga:
h ha:
i i:
j ja:
k ka:
l la:
m ma:
n na
o o:
p pa:
q k`a:
r ra:
s sa:
t ta:
u u:
v va:
w wa:
x t`a:
y ya:
z za:
ch tSa:
dh Da:
ny n^a:
ph Pa:
sh Sa:
zy Za:
ts tsa:

_. xuqaa
_!
_? mal:ato:ga:f:i:
_$ dollari:
_% parsanti
_& fi
€ yuuroo
% parsanti
_< nixiqata
_> nica:la
_- hir'isu
+ ida'u:
* astariiksii
= qixedha
£ pawundi
µ ma:ykro

+ 61
- 84
dictsource/om_rules View File

@@ -1,143 +1,120 @@
// Oromo translation rules

.group a
a a
aa a:

a a
aa a:

.group b
b b
bb b:

b b
bb b:

.group c
c tS'

c tS`

.group d
d d
dd d:

d d
dd d:

.group e
e e
ee e:
e e
ee e:

.group f
f f

f f

.group g
g g
gg g:

g g
gg g:

.group h
h h

h h

.group i
i i
ii i:

i i
ii i:

.group j
j dZ

j dZ

.group k
k k
kk k:

k k
kk k:

.group l
l l
ll l:

l l
ll l:

.group m
m m
mm m:

m m
mm m:

.group n
n n
nn n:
n n
nn n:

.group o
o o
oo o:


o o
oo o:

.group p
p p
pp p:

p p
pp p:

.group q
q k
qq k:

q k`
qq k`:

.group r
r r
rr r:
r r
rr r:

.group s
s s
ss s:

s s
ss s:

.group t
t t
tt t:

t t
tt t:

.group u
u u
uu u:
u u
uu u:

.group v
v v

v v

.group w
w v

w w

.group x
x t'
xx t':

x t`
xx t`:

.group y
y y
yy y:

y y
yy y:

.group z
z ts
zz ts

z ts
zz ts

.group ch
ch tS
.group sh
sh S

.group ph
ph p'
ch tS

.group dh
dh d' // http://en.wikipedia.org/wiki/Voiced_alveolar_implosive
dh D

.group ny
ny n^
ny n^

.group ph
ph P

.group sh
sh S

.group ts
ts ts

.group zy
zy Z

+ 210
- 0
dictsource/or_list View File

@@ -0,0 +1,210 @@

// Translation rules for Oriya
// Prepared by Him Prasad gautam (Kathmandu, Nepal).
// This file is UTF8 encoded

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

_0 S'u:nj@-
_1 'e'k'o
_2 d'ui
_3 t'ini
_4 tS'ari
_5 p'antSO
_6 tS#'o
_7 S'ato
_8 'at.#O
_9 n'VO

_10 d'oSO
_11 'ega*:O
_12 b'a*O
_13 t'ewrO
_14 tS'Oud'O
_15 p'VndV*'O
_16 S'ohVl-'O
_17 S'VtV*,O
_18 'V:t.#V*,O
_19 'unew,iS

_20 k'or.i,e
_21 'eko,iS
_22 b'aiS
_23 t'ewiS
_24 tS'obiS
_25 p'VtSiS
_26 tS#'VbiS
_27 S'Vtew,iS
_28 'Vt.#ew,iS
_29 'V:nVt,iriS

_30 t'iriS
_31 'ekVt,iriS
_32 b'V:tiS
_33 t'ewtiS
_34 tS'Vut,iriS
_35 p'V,i~tir,iS
_36 tS#'V:tiS
_37 SV'i~tir,iS
_38 'V:t.#Vt,iriS
_39 'V:nVtS,aliS

_40 tS'al-,iS
_41 'ekVtS,al-,iS
_42 b'VjV,al-,iS
_43 t'ewjV,al-,iS
_44 tS'Vur,al-,iS
_45 pV'i~tSal-,iS
_46 tS#'VjV,al-,iSO
_47 S'VtVtS,al-,iS
_48 'V:t.#'VtS,al-,iS
_49 V:n'VntSaS

_50 p'V:tSaS
_51 'ekab,Vn
_52 b'aun
_53 t'ewpVn
_54 tS'V:ub,Vn
_55 p'V:ntSab,Vn
_56 tS#'V:pVn
_57 S'Vtab,Vn
_58 'V:t.#ab,Vn
_59 'V:nVS'Vt.#i

_60 S'at.#i,e
_61 'ekVS,Vt.#i
_62 b'aSVt.#,i
_63 t'ewSVt.#,i
_64 tS'VuS,Vt.#i
_65 pV'O~SVt.#,i
_66 tS#'V:SVt.#,i
_67 S'V:tVS,Vt.#i
_68 'Vr.VS,Vt.#i
_69 'V:n'VstVr'i

_70 S'V:tur,i
_71 ek'V:stVr,i
_72 b'astVr,i
_73 t'ewstVr,i
_74 tSV'ustVr,i
_75 pVntS'VstVr,i
_76 tS#V'VstVr,i
_77 S'V:t'VstVr,i
_78 'V:t.#'VstVr,i
_79 'V:na,VSi

_80 'V:,Si
_81 'eka,V:Si
_82 b'VjV,aVS,i
_83 t'ewjV,aVS,i
_84 tS'V:ur,aVS,i
_85 p'V:ntSa,VSi
_86 tS#'VjV,aVS,i
_87 S'Vta,VSi
_88 'V:t.#a,VSi
_89 'V:nan,Vbew

_90 n'Vbew
_91 'ekan,Vbew
_92 b'V:jV,anVb,ew
_93 t'ewjV,anVb,ew
_94 tS'Vur,anVb,ew
_95 p'VntSan,Vbew
_96 tS#'V:jV,anVb,ew
_97 S'Vtan,Vbew
_98 'V:t.#an,VbewVn'ewSVt,o
_99 'V:n'ewSVt,o

_0C S'Vho
_0M1 h'VJa*,O
_0M2 l'Vk#k#O
_0M3 k'ot.i
_0M4 'VrVb
_0M5 k#'VrVb
_dpt _d@s@ml'o:_



// Single consonants
କ kO
ଖ k#O
ଗ gO
ଘ g#O
ଙ 'uNgO~
ଚ tSO
ଛ tShO // [h] to distinguish from [tS]
ଜ JO
ଝ J#O
ଞ 'iNO~
ଟ t.O
ଠ t.#O
ଡ d.O
ଢ d.#O
ଣ n.'O
ତ tO
ଥ t#O
ଦ dO
ଧ d#O
ନ n'O
ପ pO
ଫ fO // or [p#O] ?
ବ bO
ଭ b#O
ମ mO
ୟ Oj
ଯ dZ'O
ର rO
ଡ଼ r.O
ଡ଼ r.O // (d. + nukta)
ଢ଼ hr.O
ଢ଼ hr.O // (d#. + nukta)
ଲ lO
ଵ vO
ଶ t,aleboS:'O
ଷ m,ud#en:oS:'O
ସ d,onteS:'O
ହ hO

// full vowels
ଅ O
ଆ a
ଇ hrOS:o'i
ଈ d'i:rg#o'i
ଉ hrOS:o'u
ଊ d'i:rg#o'u
ଋ ri
// lri
ଏ e $u+ // word 'it'
ଐ oj $u+ // word 'that'
ଓ o $u+ $brk // 'and'
_ଏ e
_ଐ oj
_ଓ o
ଔ ow

// combining vowel signs
ା 'akar
ି hrOS:o'ikar
ୀ d'i:rg#ikar
ୁ hrOS:oukar
ୂ d'i:rg#'ukar
ୃ r'ikar
େ 'ekar
ୈ 'ojkar
ୋ 'okar
ୌ 'owkar

// signs
୍ 'hVl'VntO
ଂ 'OnuSSOr
ଃ b'iSOrgo
ଁ tS'Ondrobindu
଼ b'indu

$ d.Olar

// Punctuation
। dVn.d.V
_, koma

+ 335
- 0
dictsource/or_rules View File

@@ -0,0 +1,335 @@
// Pronounciation rule for Oriya.
// Prepared by Him Prasad gautam (Kathmandu, Nepal).
// This file is UTF8 encoded

// letter groups:
// A vowel letters and vowel signs
// B vowel signs and Halant a ୍
// C consonants
// Y vowel letters and vowel signs



.replace
୦ 0
୧ 1
୨ 2
୩ 3
୪ 4
୫ 5
୬ 6
୭ 7
୮ 8
୯ 9

ଡ଼ ଡ଼ // can be ଡ plus nukta
ଢ଼ ଢ଼ // can be ଢ plus nukta


// Vowels

.group ଅ
ଅ V
ଅଁ O~

.group ଆ
ଆ a
ଆଁ a~

.group ଇ
ଇ i
ଇଁ i~

.group ଈ
ଈ i
ଈଁ i~

.group ଉ
ଉ u
ଉଁ u~

.group ଊ
ଊ u:
ଊଁ u~

.group ଋ
ଋ ru
ଋଁ ru~

.group ଌ
ଌ l-r'i

.group ଏ
ଏ e
ଏଁ e~

.group ଐ
ଐ oj
ଐଁ o~j

.group ଓ
ଓ o
ଓଁ o~

.group ଔ
ଔ ow
ଔଁ o~w

// Vowel Signs

.group ା
C) ା a
C) ାଁ a~

.group ି
C) ି i
C) ିଁ i~

.group ୀ
C) ୀ i
C) ୀଁ i~


.group ୁ
C) ୁ u
C) ୁଁ u~

.group ୂ
C) ୂ u:
C) ୂଁ u~:

.group ୃ
C) ୃ r'u
C) ୃଁ r'u~

.group େ
C) େ e
C) େଁ e~
C) େ ew

.group ୈ
C) ୈ oj
C) ୈଁ o~j

.group ୋ
C) ୋ o
C) ୋଁ o~

.group ୌ
C) ୌ ow
C) ୌଁ o~w

// Consonants

.group କ
କ kV
କ (B k
କ୍ଷ k#k#V // or [k#:] ?
କ୍ଷ (B k#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
ତ (_ to

.group ଥ
ଥ t#V
ଥ (B t#

.group ଦ
ଦ dV
ଦ (B d

.group ଧ
ଧ d#V
ଧ (B d#

.group ନ
ନ nV
ନ (B n

.group ପ
ପ pV
ପ (B p
.group ଫ
ଫ p#V
ଫ (B p#
.group ବ
ବ bV
ବ (B b

.group ଭ
ଭ b#V
ଭ (B b#

.group ମ
ମ mV
ମ (B m

.group ୟ
ୟ jV
_) ୟ (B j
ୟ (_ jo

.group ଯ
ଯ dZV
ଯ (B dZ
ଯ଼ jV // nukta
_) ଯ଼ (B j
ଯ଼ (B
୍) ଯ (_ :O // double the previous consonant
୍) ଯ (B_ :
୍) ଯ (C &
୍) ଯା & //

.group ର
ର rV
ର (B r

.group ଲ
ଲ lV
ଲ (B l

.group ଳ// long la
ଳ l-V
ଳ (B l-

.group ଵ
ଵ wV
ଵ (B w

.group ଶ
ଶ SV // or [s] ?
ଶ (B S
ଶ (୍ଲ s

.group ଷ
ଷ SV
ଷ (B S

.group ସ
ସ SV // or [s] ??
ସ (B S
ସ (୍ଥ s
ସ (୍ତ s
ସ (୍ଯ s // ସମସ୍ଯା
_) ସ୍ବ SV // shb
_) ସ୍ବ (B S

.group ହ
ହ hV
ହ (B h
ହ (_ ho

.group ହ୍ବ
ହ୍ବ vV
ହ୍ବ (B v

.group ୎
୎ t

.group ଡ଼ // can be ଡ plus nukta
ଡ଼ r.V
ଡ଼ (B r.

.group ଢ଼ // can be ଢ plus nukta
ଢ଼ hr.V
ଢ଼ (B hr.
ଢ଼ (_ hr.o

.group ଁ
C) ଁ O~ // candrabindu, nasalize the previous vowel/Consonants

.group ଂ
A) ଂ N // anusvara/onushshor
C) ଂ N // anusvara/onushshor
.group ଃ // visarga/bishorgo
ଃ // doubles the following consonant
ଃ (_ H

.group ୍ // virama/hoshonto
C) ୍

.group ଼
଼ // nukta, modifies a consonant

.group
// obsolete letters
ଋ r-
ୠ r-
ଌ l-
ୡ l-
ୃ r-
ୄ r-
ୢ l-
। p'urn.'oV'iram
ୣ l-


+ 37
- 12
dictsource/pt_list View File

@@ -671,7 +671,6 @@ acertos $alt2
acocho $alt2 $noun
acordo $alt $verb
acervo $alt2
adepto $alt
adorno $alt $verb
aeroporto $alt2
aflore $alt
@@ -683,7 +682,6 @@ ameba $alt
amores $alt2
amorno $alt
amuleto $alt2
ampere $alt
ampola $alt2
ampulheta $alt2
anchova $alt2
@@ -710,6 +708,7 @@ axé aSE
azeda $alt $verb
azedo $alt $verb
bairro b'aIxU
baitola $alt2
banquete $alt2
barreto $alt2
bastonete $alt2
@@ -755,7 +754,9 @@ caroços $alt
carrapeta $alt2
carroça $alt
casebre $alt
catacreses $alt
cateto $alt2
catequeses $alt
catorze $alt2
cebola $alt2
cedro $alt
@@ -772,7 +773,6 @@ checam $alt
choco $alt2 $noun
choça $alt
chofer $alt

choro $alt2 $noun
chovesse $alt2
chupeta $alt2
@@ -819,6 +819,7 @@ corvos $alt
costeleta $alt2
coto $alt2
cotovelo $alt2
cozem $alt
cratera $alt
crede $alt2
credo $alt
@@ -832,7 +833,8 @@ desconfortos $alt2
desconsolo $alt2 $noun
descontrole $alt2 $noun
descordo $alt
desemprego $alt2
descorno $alt
desemprego $alt2
desemprego $alt $verb
desespero $alt2
desespero $alt $verb
@@ -861,13 +863,16 @@ dissabores $alt2
dobro $alt2
dobro $alt $verb
doce $alt2
dogma $alt
dores $alt2
dorminhoco $alt2
dorminhocos $alt
doso $alt
doze $alt2
dueto $alt2
edson $alt
elixir eliSir
emborco $alt
emprego $alt2
emprego $alt2 $noun
encasqueta $alt
@@ -876,7 +881,7 @@ endereço $alt $verb
enforco $alt
engordo $alt
enredo $alt $verb
enrosco $alt $verb
enrosco $alt2 $noun
ensosso $alt2
enterro $alt2 $noun
entorto $alt
@@ -890,7 +895,6 @@ erro $alt2
erro $alt $verb
esboço $alt $verb
escopeta $alt2

escova $alt2
escova $alt $verb
escovo $alt
@@ -898,13 +902,14 @@ esforço $alt $verb
esforços $alt
esgoto $alt2
esgoto $alt $verb
esperma $alt
espectro $alt
espeto $alt2 $noun
espoleta $alt2
esposa $alt2
esqueleto $alt2
ester $alt
estilete $alt2
estocolmo $alt
estojo $alt2
estorno $alt $verb
estorvo $alt $verb
@@ -914,18 +919,20 @@ estrogonofe $alt
eta $alt2
europa $alt
europeia $alt
?2 ex es
exagero $alt $verb
exegeses $alt
exorto $alt
explore $alt
falangeta $alt2
farofa $alt
farolete $alt2
fatora $alt
felisteia $alt
fezes $alt
filete $alt2
?1 fixe fiSy
flerte $alt2 $noun
flexora $alt2
foda $alt2 $verb
fodo $alt2
fogo $alt2
@@ -974,6 +981,7 @@ grosso $alt2
groso $alt
gueto $alt2
hemorroida $alt
hidreto $alt2
hoje $alt2
homero $alt
horrores $alt2
@@ -994,15 +1002,17 @@ laser l'eIzer
lasers l'eIzers
lembrete $alt2
lepra $alt
leses $alt
leste $alt2 $verb
?2 lhe l^y
licores $alt2
lisboeta $alt2
livreto $alt2
lodo $alt2
logro $alt
lopes $alt
macete $alt2
maioneses $alt
manopla $alt
maniçoba $alt
marieta $alt2
mariposa $alt2
@@ -1014,6 +1024,7 @@ metro $alt
minueto $alt2
miolo $alt2
miolos $alt
mister $alt
modelo $alt2
modelo $alt $verb
moeda $alt
@@ -1033,6 +1044,7 @@ namoro $alt2 $noun
naquela $nounf
naquele $alt2 $nounf
nervo $alt2
nitreto $alt2
nojo $alt2
novelo $alt2
odisseia $alt
@@ -1042,7 +1054,7 @@ olho $alt2 $noun
olhos $alt
onomatopeia $alt
opereta $alt2
ordens $alt
orno $alt
osso $alt2
ostra $alt2
outorgo $alt
@@ -1056,10 +1068,12 @@ panfleto $alt2
pangeia $alt
pantera $alt
papoco $alt2 $noun
paradoxo $alt
parede $alt2
pateta $alt
peba $alt
pedra $alt
peixoto $alt2
pela $alt2
pelo $alt2
penhores $alt2 $noun
@@ -1088,6 +1102,7 @@ pose $alt2
poxa p'oS&
primavera $alt
primores $alt2
program $alt
proso $alt
prosopopeia $alt
proveta $alt2
@@ -1129,6 +1144,7 @@ rola $alt2 $noun
roleta $alt2
rolete $alt2
rolo $alt2 $noun
rose $alt2
roseta $alt2
rota $alt2
rota $alt $noun
@@ -1148,6 +1164,7 @@ selvagem seUv'aZeIN
sexteto $alt2
?1 senhora $alt2
senhores $alt2
sinagoga $alt
sinopse $alt
soco $alt2
soco $alt $verb
@@ -1157,6 +1174,7 @@ sopro $alt2 $noun
sorvete $alt2
sossego $alt2 $noun
suborno $alt $verb
sudoreses $alt
sufoco $alt2 $noun
sufocos $alt2
sulfeto $alt2
@@ -1172,6 +1190,7 @@ tapete $alt2
temores $alt2
tempero $alt2 $noun
tenores $alt2
terma $alt
test $alt
terrores $alt2
teses $alt
@@ -1186,25 +1205,31 @@ torre $alt2 $noun
torres $alt2
torro $alt
toso $alt
totens $alt
transtorno $alt $verb
traqueia $alt
travesso $alt2
tremores $alt2
treta $alt2
trevo $alt2
trocha $alt2
troco $alt2 $noun
tropa $alt
tropeço $alt2 $noun
trombeta $alt2
ureia $alt
vanessa $alt2
vareta $alt2
vera $alt
verbete $alt2
verborreia $alt
verde $alt2
vileta $alt2
voga $alt
xarope $alt
xereta $alt2
xerox S'E*Oks
xeroxes $alt
zelo $alt2 $noun
zorra $alt2

@@ -1304,12 +1329,12 @@ python p'aIT&~N
right r'aIt
?1 sapi s,ap'i
?1 scanner sk'En&r
sky sk'ay
sky sk'aI
shake S'eIk
?1 shift S'ift
?1 scroll sk:r'ol
?1 site s'aIt
?2 site s'aItSi
?2 site s'aItSy
?2 shampoo S&mpu
?2 shoping S'OpiN
?2 slide zl'aIdZy

+ 45
- 14
dictsource/pt_rules View File

@@ -1,4 +1,4 @@
// translation rules Brazilian
// translation rules Brazilian
// This file is UTF-8 encoded

// Options
@@ -77,6 +77,7 @@
áC) a (C@ &
áCC) a (C@ &
éC) a (C@ &
éCC) a (C@ &
í) a (CA_ &
íC) a (C@ &
íCC) a (C@ &
@@ -232,7 +233,7 @@
e (rgL04_ E
e (rquL02_ E
e (rsL04_ E
e (scL02_ E
e (sL02_ E
e (ssL04_ E
e (ss_ E // stress and english words
@@ -388,6 +389,7 @@ respond) e (L06_ e
eg) e (L07_ e // elegeste, etc.
_@o) e (L07_ e // doeste, etc.
_cr) e (L07_ e
_dev) e (L07_ e
bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su-
met) e (L07_ e // meteste, cometeste, etc.
@@ -396,8 +398,10 @@ respond) e (L06_ e
olv) e (L07_ e // devolveste, etc.
ond) e (L07_ e // escondeste, etc.
orr) e (L07_ e // correste, etc.
precav) e (L07_ e
_ard) e (L07_ e
_coz) e (L07_ e
_val) e (L07_ e
colh) e (L07_ e // & es-
ench) e (L07_ e // pre-
vert) e (L07_ e // in- re- con-
@@ -407,6 +411,7 @@ respond) e (L06_ e
_remo) e (L07_ e
_sofr) e (L07_ e
screv) e (L07_ e // e- in- ree- pre- de-
_absorv) e (L07_ e
_atrev) e (L07_ e
_corro) e (L07_ e
_troux) e (L07_ E
@@ -437,8 +442,8 @@ _enver) e (dL03_ E
_caC) e (lo_ e
?2 el (ton_ 'EU
ad) e (quL04_ E
_dig) e (rL02_ E
_ing) e (rL02_ E
_dig) e (rL02_ E
_m) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
@@ -478,6 +483,7 @@ s_colh) e (res_ E
_) e (rgL03_ e
_re) e (rgL03_ e
_so) e (rgL03_ e
sp) e (rma_ E
e (rquL02_ E
_bez) e (rrL03_ e
v) e (rtL03_ e // con- re- in-
@@ -488,10 +494,9 @@ s_colh) e (res_ E
_repr) e (sL03_ E
_ent) e (sL04_ E
_refr) e (scL01_ E
_d) e (scL02_ E
_cr) e (scL02_ E
_p) e (scL03_ E
_m) e (sclL04 E
dioc) e (ses_ E
_d) e (spL02_ E
_p) e (squL02_ E
_refr) e (squL02_ E
@@ -500,10 +505,10 @@ s_colh) e (res_ E
_esp) e (ssL03_ e
_c) e (stL03_ e
_pr) e (tL03_ e
_bol) e (tL03_ e
_rem) e (tL03_ e
_derr) e (tL03_ e
_obsol) e (tL03_ e
_bol) e (tL04_ e
_CaC) e (ta_ e
viol) e (ta_ e
_Carr) e (ta_ e
@@ -520,6 +525,7 @@ _obsol) e (tL03_ e
_rev) e (zL04_ E
_embel) e (zL04_ E
com) e (çL01_ E
_ender) e (çL01_ E
p) e (çL03_ E
_m) e (çL03_ E
_entorp) e (çL03_ e
@@ -575,9 +581,12 @@ _entorp) e (çL03_ e
_apazi) gu (e gw
_ar) gu (i gw
averi) gu (e gw
bilin) gu (A gw
_biri) gu (i_ gw
enxa) gu (e gw
enxá) gu (L02_ gw
i) gu (idade gw
lin) gu (e gw
_lin) gu (A gw
lin) gu (i gw
_min) gu (e gw
_pin) gu (im_ gw
@@ -585,7 +594,8 @@ _apazi) gu (e gw
_sa) gu (i gw
san) gu (ín gw
san) gu (in gw
tin) gu (i gw
stin) gu (A gw
xtin) gu (A gw
?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira
?1 gu (ém_ g // eg: alguém, ninguém, etc...
@@ -880,10 +890,16 @@ _pormen) o (L05_ O
_sal) o (brL03_ o
_) o (cL03_ o
_barr) o (cL03_ o
_ch) o (chA_ o
_m) o (chA_ o
_ecl) o (dL03_ o
_expl) o (dL03_ o
_impl) o (dL03_ o
_m) o (fL01_ O
_m) o (fL02_ O
_af) o (fL04_ O
_s) o (frL02_ O
_l) o (grL04_ O
_ap) oi (L01_ OI
_ap) oi (L02_ OI
_b) oi (L04_ OI
@@ -891,15 +907,19 @@ _pormen) o (L05_ O
_t) o (lL03_ o
_f) o (lgL04_ O
_emp) o (lgL04_ O
_arr) o (lhL03_ O
_enr) o (lhL03_ O
_) o (lhL04_ O
m) o (lhL04_ O
emb) o (lsL04_ O
_env) o (ltL03_ o
_esC) o (pA_ o
antr) o (pL03_ o
_s) o (prL04_ O
_al) o (prL04_ O
_ass) o (prL04_ O
_) o (ptL04_ O
flex) o (rA_
p) o (rL02_ o
_dev) o (rL02_ O
_apav) o (rL02_ O
@@ -907,7 +927,9 @@ _pormen) o (L05_ O
_impl) o (rL02_ O
_ad) o (rL04_ O
_ma@) o (r_ O
o (rdens_ O
_@um) o (re_ o
f) o (rjo_ O
f) o (rmL03_ O
c) o (rrL01_ o // incorra, corra, etc.
m) o (rrL01_ o
@@ -915,19 +937,23 @@ _pormen) o (L05_ O
@p) o (rtL03_ O // importo, etc.
a_c) o (rte_ o
ortos (_ O*@-t=Us# // tortos, mortos, etc.
_abs) o (rvL01_ o
t) o (rçL03_ o // con-
_c) o (sL01_ o
_desc) o (sL01_ o
enr) o (scL03_ O
_r) o (snL04_ O
_c) o (spL02_ O
_enr) o (squL02_ O
enr) o (squL02_ O
ossos (_ Os=Us# // nossos, grossos, etc.
p) ostos (_ Ost=Us# // dispostos etc.ortos (_ 'O*@-tUs
_gar) o (tL03_ o
_mar) o (tL03_ o
_Gar) o (tL03_ o
_escr) o (tL03_ o
zig) o (to_ o
_ch) o (vL01_ o
pr) o (vL03_ O
ovos (_ Ov=Us# novos, povos, etc.
_ortod) o (xL03_ O
_g) o (zL04_ O
_alm) o (çL01_ O
_esb) o (çL01_ O
@@ -996,11 +1022,12 @@ _pormen) o (L05_ O
ese) qu (ív kw
_e) qu (in kw
fre) qu (ent kw
li) qu (id kw
lí) qu (id kw
?2 li) qu (id kw
?2 lí) qu (id kw
lo) qu (en kw
n) qu (en kw
_) qu (inqu kw
_se) qu (el kw
se) qu (en kw
tran) qu (il kw
?1 queç kes // esqueça.
@@ -1148,7 +1175,7 @@ _pormen) o (L05_ O
_e) x (A z
_ê) x (A z
_ine) x (A z
_ine) x (oráv ks
_ine) x (orAC ks
e) x (A ks
?1 e) x (CA S
ai) x (A S
@@ -1170,6 +1197,7 @@ _pormen) o (L05_ O
xA) x (A S
_abaca) x (i S
ale) x (a S
_arro) x (e S
bau) x (A S
brA) x (A S
_bu) x (o_ S
@@ -1177,12 +1205,14 @@ _abaca) x (i S
_ca) x (A S
_co) x (A S
_coe) x (A z
_esdrA) x (ul S
_e) x (u_ S
_fa) x (i S
_fle) x (a S
gra) x (A S
_he) x (A z
?2 _he) x (A ks
_lagarti) x (A S
_li) x (A S
_lu) x (A S
_mar) x ks
@@ -1193,6 +1223,7 @@ _abaca) x (i S
_o) x (A S
_o) x (i ks
_o) x (í ks
_pe) xo (to_ So
pi) x (A S
_pro) x (A S
_pra) x (A S

+ 2
- 1
dictsource/sk_list View File

@@ -140,7 +140,8 @@ _⁃ odRa:Zka||'v||tvaRe||p'oml-tSki
£ libRa
¤ mena
© kopiRajt
® Registrovane:
® RegistRovane:
¶ 'oznatSenie||'odseku
¥ jen
− mi:nus
± plus||m'i:nus

+ 58
- 7
dictsource/ta_list View File

@@ -112,6 +112,36 @@ U+bf9 ru:ba:j
¼ ka:l
½ araI
¾ mukka:l
® pVdivU
© p'VdippUrimaI
• t'o:t.t.a:
_… v'id.UnilaI
¡ t'VlaIki:z.||v'ijVppU
¿ t'VlaIki:z.||k'e:l.vi
× d'Vd.VvaI
± k'u:t.t.Vl||k'Vz.ittVl
™ v'Vn.igVm
§ p'irivU
➔ v'VlVdVmbU
→ v'VlVdVmbU
■ k'VrUn^dZVdU*Vm
● v'Vt.t.Vm
† kuttUva:l.
‡ 'irVt.t.aI||k'uttUva:l.

௰ pVttU
௱ nu:RU
௲ a:jirVm
௳ na:l.
௴ ma:dVm
௵ a:n.d.U
௶ pVt.RU
௷ vVrVvU
௸ m'e:lirUppVdU||p'o:l
௺ ;en.n.UrU


_sup m'e:lez.UttU

// alphabet names
_ar arVbU
@@ -206,7 +236,7 @@ _1M3 orUko:d.ie:

_dpt _pul.l.i

// drop final [U] when followed by an ordinal suffix
// drop final [U] when followed by an ordinal suffix or thousands
_1o onR
_2o irVn.d.
_3o mu:nR
@@ -215,7 +245,7 @@ _5o aInd
_6o a:R
_7o ;e:z.
_8o ;et.t.
_9o onbVd.
_9o onbVd
_10o patt
_11o patinonR
_12o pVnnirVn.d.
@@ -239,18 +269,38 @@ _6Co aRUnu:R
_7Co ;ez.Unu:R
_8Co ;en.n.u:R



_#ம் a:m // ordinal suffix
_#ல் il
_#இல் il
_#வது a:vVdU
_#வதும் a:vVdUm
_#வதுமாக a:vVdUma:gV

_#ஆம் a:m // including ஆ
_#ஆவது a:vVdU
_#ஆவதும் a:vVdUm
_#ஆவதுமாக a:vVdUma:gV

_#-ம் a:m // ordinal suffix with hyphen
_#-ல் il
_#-இல் il
_#-வது a:vVdU
_#-வதும் a:vVdUm
_#-வதுமாக a:vVdUma:gV

_#-ஆம் a:m // including ஆ
_#-ஆவது a:vVdU
_#-ஆவதும் a:vVdUm
_#-ஆவதுமாக a:vVdUma:gV

// The உ sound at the end of a number should sound as இ,
// if it is followed by லும் or -லும்.
_#லும் ilUm
_#-லும் ilUm


// English words
tamil தமிழ் $text

@@ -266,8 +316,6 @@ tamil தமிழ் $text
பண்தம் $alt
பவனி $alt
பாபா $alt
பாதாம் $alt
போகம் $alt
போதனை $alt
பூகம்பம் $alt
பங்கம் $alt
@@ -387,6 +435,9 @@ tamil தமிழ் $text
பாதிக்காம $alt
பனியா $alt
பாம் $alt
போத $alt
பொம்ம $alt
புகாரி $alt


// initial த as [d]
@@ -465,6 +516,7 @@ tamil தமிழ் $text
// initial ச as [tS]
சீ $alt
சே $alt
சே s'e: $hasdot
சீசீ tSi:tSi:
சீச்சீ $alt
சிட்டாய் $alt
@@ -490,7 +542,6 @@ tamil தமிழ் $text
காந்தி $alt
கிரி $alt
கயா $alt
காயத்ரி $alt
கட $alt
கதி $alt
கோபி $alt
@@ -548,7 +599,6 @@ tamil தமிழ் $text
போன் fo:n
போனில் fo:nil
//பைலை faIlaI
பாதர் fa:dVr
பாதரிடம் fa:dVrid.Vm
பாதருடன் fa:dVrUd.Vn
பாதரில்லாமல் fa:dVrilla:mVl
@@ -559,7 +609,6 @@ tamil தமிழ் $text


பப pVpV
தீப் di:p
டிரேயின் t.re:jn
பைக் baIk
பைக்கில் baIkkIl
@@ -574,3 +623,5 @@ tamil தமிழ் $text
புட் fud.
உப்ப ubbV
ஜென் zen
சோப்ரா tSo:pra:


+ 270
- 15
dictsource/ta_rules
File diff suppressed because it is too large
View File


+ 4
- 1
dictsource/te_rules View File

@@ -50,6 +50,9 @@
.group జ
జ Ja
జ (B J
జ్ఞ gna
జ్ఞ (B gn


.group ఝ
ఝ J#a
@@ -243,7 +246,7 @@

ూ u:

ృ r-
ృ ru

ౄ r-:


+ 35
- 13
dictsource/ur_list View File

@@ -54,6 +54,7 @@ _ؤ va:Oh'amza
ٰ ,alIfmaqs'u:R,a
ّ t,aSd'i:d
ً d'o:zab'aR
ْ sUk'u:n


// The numbers
@@ -211,7 +212,17 @@ _dpt _ISaRI'Ia_
تھیں t#'i:n $u

// Pronunciation exceptions
پاکستان p'a:k'Ist'a:n
پبلک p'abl,Ik
آئرش 'a:IR,IS
برگ b'aRg
(آئیس کریم) a:'i:s||kR'i:m
آئیسنگ ,a:is'Ing
آئدیلسٹ 'a:Id.,i:;al,Ist.
آئڈیلزم 'a:Id.,i:;al,Izam
چوں c'u:n
(آئینہ بین) a:'i:n,a||b'i:n
بیں b'i:n
دکھائی dIk#'a:i
کچھ k'Uc# $u
لنکس l'Ink,s
لفظ l'afz.
@@ -606,10 +617,9 @@ _dpt _ISaRI'Ia_
(موقع پر) m'Oqe:||p'aR
مصنوعی m,as.n'u:i
ذوالفقار D,UlfIq'a:R
بھٹو b#'Ut.o:
منقلب m,Unq'alIb
بجز b'aJUz
تعیں ta'i:n $u
تعیں ta:'i:n
بہ b'a
مسمار m,Ism'a:R
شکنی S'Ikn,i:
@@ -620,35 +630,47 @@ _dpt _ISaRI'Ia_
معتقد mOt'aqId
لسٹ l'Ist.
دور d'u:R
دوری d'u:Ri:
دوری d'u:Ri
پولنگ po:l'Ing
لہٰذا lIH'a:Da:
الحق ,UlH'aq
مصنوعی m,as.n'u:i:
مصنوعی m,as.n'u:i
پیشکش p,e:Sk'aS
باطن b'a:tIn
پرنٹ pRInt.
جاوید Ja:v'e:d
قیمت qi:m'at
قیمت qim'at
ناشر n'a:SIR
نسبت n,Isb'at
تناسب tan'a:sUb
نوع n'O
ایجاد i:J'a:d
نوع n'o:
ایجاد iJ'a:d
وراثت v,IRa:s'at
وارث v'a:RIs
تناظر tan'a:z.UR
بینائی bi:n'a:i:
بینائی bin'a:i
قابل q'a:bIl
سکتیں s,akt'i:n
مجموعہ m,aJm'u:a:
مجموعہ m,aJm'u:a
پراسرار p,UR,asR'a:R
مجموعے m,aJm'u:e:
اتصال ,ItIs.'a:l
ورنہ v'aRna
علمی 'Ilm,i:
فقدان f,Uqd'a:n
لسانی lIs'a:ni:
بازگشت b,a:zg'aSt
نقسان n,Uqs'a:n
شکستہ SIk'ast,a
شکستہ SIk'ast@,a
بھٹو b#'Ut.o:
انگلش 'Ingl,IS
راغب R'a:QIb
اٹلی 'It.l,i:
سپین sp'e:n
فاتح f'a:tEH
سنسان sUns'a:n
ٹاسک t.'a:sk
فورس f'o:Rs
کلک klIk
فکسنگ f,Iks'Ing
مانند ma:n'Ind $1
اتار Ut'a:R
آرکائیو ,a:Rk'a:jv

+ 14
- 1
dictsource/ur_rules View File

@@ -124,6 +124,7 @@ _) ای e:
آ a:
آتش 'a:tIS
آہست a:H'Ist
آئ (L02 'a:I


.group ع
@@ -209,6 +210,7 @@ _) ای e:
_) بدل (L02 bad'al
بوڑھ b'u:r.h
_) بے (P2 b'e:
بحران b,OHR'a:n


.group پ
@@ -225,6 +227,7 @@ _) ای e:
پوچھ p'u:c#
پیچھ p'i:c#
پھونک p#'u:nk
_) پور (L01 p'u:R

.group ت
ت tV
@@ -242,6 +245,10 @@ _) ای e:
تجرب taJ'aRb
_) تیار t,ai:;'a:R
_) تیسر t'i:sR
@) تا (_S2 t'a:
@) تی (_S2 t'i:
@) تے (_S2 t'e:
_) توا t'ava:

.group ٹ
ٹ t.V
@@ -253,6 +260,7 @@ _) ای e:
ٹریفک t.R'e:fIk
_) ٹکڑ t.'Ukr.
_) ٹہ (L02 t.'EH
_) ٹرین t.R'e:n


.group ث
@@ -343,6 +351,7 @@ _) ای e:
ڈّ (L01 d.d.
ڈھونڈ d.#'u:nd.
@) ڈز (_ d.z
ڈرائیور d.R'a:jvaR

.group ذ
ذ DV
@@ -409,6 +418,8 @@ _) ای e:
سیدھ s'i:d#
سیاست sja:s'at
سرگرم s,aRg'aRm
@) ستان (_ Ist'a:n
@) ستانی (_ Ist'a:ni

.group ش
ش SV
@@ -582,6 +593,9 @@ _) ای e:
_) نوا n'ava:
_) نما n'Uma:
_) نماز nam'a:z
@) نا (_S2 n'a:
@) نی (_S2 n'i:
@) نے (_S2 n'e:

.group ں
ں n // this should nasalize the vowel
@@ -631,4 +645,3 @@ _) ای e:
.group 0xe0a5 // devanagari
0xe0a5 _^_NE



+ 536
- 314
dictsource/vi_rules
File diff suppressed because it is too large
View File


+ 7
- 3
docs/dictionary.html View File

@@ -255,6 +255,10 @@ Note, that matching characters in the &lt;pre&gt; part do not affect the syllabl
<td><strong>#</strong></td>
<td>(English specific) change the next "e" into a special character "E"</td>
</tr>
<tr>
<td><strong>$noprefix</strong></td>
<td>Only use this rule if the word is not a retranslation after removing a prefix.</td>
</tr>
<tr>
<td><strong>$w_alt<br>$w_alt2<br>$w_alt3</strong></td>
<td>Only use this rule if the word is found in the *_list file with the <b>$alt</b>, <b>$alt2</b> or <b>$alt3</b> attribute respectively.</td>
@@ -268,18 +272,18 @@ Note, that matching characters in the &lt;pre&gt; part do not affect the syllabl
</ul>

eg.
<pre> @) ly (_$2 lI // "ly", at end of a word with at least one other
<pre> @) ly (_S2 lI // "ly", at end of a word with at least one other
// syllable, is a suffix pronounced [lI]. Remove
// it and retranslate the word.

_) un (@P2 ¬Vn // "un" at the start of a word is an unstressed
_) un (@P2 %Vn // "un" at the start of a word is an unstressed
// prefix pronounced [Vn]
_) un (i ju: // ... except in words starting "uni"
_) un (inP2 ,Vn // ... but it is for words starting "unin"
</pre>
S and P must be at the end of the &lt;post&gt; string.
<p>
S&lt;number&gt; may be followed by additonal letters (eg. S2ei ). Some of these are probably specific to English, but similar functions could be made for other languages.
S&lt;number&gt; may be followed by additional letters (eg. S2ei ). Some of these are probably specific to English, but similar functions could be made for other languages.

<ul><table>
<tbody>

+ 6
- 5
docs/phonemes.html View File

@@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to <strong>espeak</stro
<table>
<tbody valign=top>
<tr>
<td width=25><code>[p]</code><td width=80>
<td width=25><code>[b]</code><td width=80>
<td width=25><code>[p]</code><td width=150>
<td width=25><code>[b]</code><td width=150>
<tr>
<td><code>[t]</code><td>
<td><code>[d]</code><td>
@@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@]
<table>
<tbody valign=top>
<tr><td width=25><code>[@]</code>
<td width=60>alph<b>a</b><td width=80>schwa
<td width=60>alph<b>a</b><td width=400>schwa

<tr><td><code>[3]</code>
<td>bett<b>er</b><td>rhotic schwa. In British English this is the same as <code>[@]</code>, but it includes 'r' colouring in American and other rhotic accents. In these cases a separate <code>[r]</code> should not be included unless it is followed immediately by another vowel.
@@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@]

<tr><td><code>[a]</code><td>tr<b>a</b>p
<tr><td><code>[aa]</code><td>b<b>a</b>th<td>This is <code>[a]</code> in some accents, <code>[A:]</code> in others.
<tr><td><code>[a2]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa.
<tr><td><code>[a#]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa.
<tr><td><code>[A:]</code><td>p<b>al</b>m
<tr><td><code>[A@]</code><td>st<b>ar</b>t
<tr><td><p>
@@ -161,7 +161,8 @@ Other languages will have their own vowel definitions, eg:

</tbody>
</table>

<p>
<code> [:] </code> can be used to lengthen a vowel, eg <code> [e:]</code>

</body>
</html>

+ 14
- 0
docs/voices.html View File

@@ -255,6 +255,20 @@ Used to specify a language to be used to speak words which are written in a non-
Alphabets names include: latin, cyr (cyrillic), ar (arabic). The default language for latin alphabet is English.
</dd>
<p>
<dt>
<strong>dictdialect &nbsp;&lt;dialect&gt;</strong><br>
<dd>
Words can be marked in the *_list or *_rules file to be spoken using a foreign voice. This <b>dictdialect</b> attribute
can be used to specify which dialect of the foreign language should be used, instead of the default dialect.
The currently available dialects are:<br>
<b>en-us</b> (US English)<br>
<b>es-la</b> (Latin American Spanish).<br>
eg.
<pre> dictdialect en-us
</pre>
This means that any words or rules which are maked with _^_EN will be spoken with the US English voice instead of the default UK English voice.
</dd>
<p>
Additional attributes are available to set various internal options which control how language is processed. These would normally be set in the program code rather than in a voice file.
</ul>
<hr>

BIN
espeak-data/mbrola_ph/in1_phtrans View File


BIN
espeak-data/mbrola_ph/ir1_phtrans View File


+ 1
- 1
espeak-data/voices/en-us View File

@@ -9,7 +9,7 @@ phonemes en-us
dictrules 3 6
option reduce_t 1

stressLength 140 120 190 170 0 0 255 290
stressLength 140 120 190 170 0 0 255 300
stressAmp 17 16 19 19 19 19 21 19

replace 03 I i

+ 3
- 1
espeak-data/voices/europe/it View File

@@ -1,6 +1,8 @@
name italian
language it
gender male

replace 03 i I
tunes s4 c4 q4 e4

replace 03 i I

+ 9
- 4
espeak-data/voices/mb/mb-ir1 View File

@@ -1,8 +1,13 @@
name ir-mbrola-1
// Persian (Farsi) Mbrola voice need ir1 diphone file.
name Farsi-mb-ir1
language fa

gender male

phonemes fa

mbrola ir1 ir1_phtrans
// "speed 82" adjust default speed of "mb-ir1" with eSpeak "fa".
speed 82
// Please don't change this value. It's result of several tests.

// "dictrules 1" read English text as Pinglish (Persian text that written with English alphabets).
// dictrules 1
// If you want use Pinglish instead of English for reading, just delete // from start of above line.

+ 6
- 0
espeak-data/voices/other/lfn View File

@@ -0,0 +1,6 @@
name lingua franca nova
language lfn
gender male
phonemes base2
numbers 2 3

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

@@ -0,0 +1,3 @@
name scottish-gaelic-test
language gd

+ 1
- 1
espeak-data/voices/test/om View File

@@ -1,2 +1,2 @@
name oromiffa-test
name oromo-test
language om

+ 2
- 0
espeak-data/voices/test/or View File

@@ -0,0 +1,2 @@
name oriya-test
language or

+ 1
- 2
espeak-data/voices/test/sl View File

@@ -1,4 +1,3 @@
name slovenian-test
language sl
stressLength 160 150 240 240 240 240 300 320

+ 45
- 3
mkdictlist View File

@@ -10,6 +10,7 @@ import os

voices = set()
dictionaries = {}
phoneme_data = set()

# Map voice names to dictionaries when these do not match.
special_voices = {
@@ -18,6 +19,13 @@ special_voices = {
'zh-yue': 'zhy',
}

# Support for extended dictionaries.
extended_dictionaries = {
'ru': 'ru_listx',
'zh': 'zh_listx',
'zhy': 'zhy_list',
}

exclude_voices = []

def find_voices(path):
@@ -32,16 +40,39 @@ def find_voices(path):
elif filename not in exclude_voices:
voices.add(filename)

def find_phoneme_data(path):
for filename in os.listdir(path):
phondata_path = os.path.join(path, filename)
if filename.startswith('ph_'):
phoneme_data.add(phondata_path)

find_voices('espeak-data/voices')
find_phoneme_data('phsource')

for filename in os.listdir('dictsource'):
if filename.endswith('_rules') or filename.endswith('_list') or filename.endswith('_listx'):
if filename.endswith('_rules') or filename.endswith('_list') or filename in ['bg_listx', 'it_listx']:
dic, cat = filename.split('_')
if dic in voices:
if not dic in dictionaries.keys():
dictionaries[dic] = []
dictionaries[dic].append('dictsource/%s' % filename)

def write_phoneme_data_rules(f):
f.write('##### phoneme data:\n')
f.write('\n')
f.write('espeak-data/phondata: phsource/phonemes.stamp\n')
f.write('espeak-data/phondata-manifest: phsource/phonemes.stamp\n')
f.write('espeak-data/phonindex: phsource/phonemes.stamp\n')
f.write('espeak-data/phontab: phsource/phonemes.stamp\n')
f.write('espeak-data/intonations: phsource/phonemes.stamp\n')
f.write('\n')
f.write('phsource/phonemes.stamp: \\\n')
for phonfile in sorted(phoneme_data):
f.write('\t%s \\\n' % phonfile)
f.write('\tphsource/phonemes\n')
f.write('\tESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile && touch $@\n')
f.write('\n')

def write_dictionary_make_rules(f):
f.write('##### dictionaries:\n')
f.write('\n')
@@ -57,7 +88,16 @@ def write_dictionary_make_rules(f):
f.write('%s: espeak-data/%s_dict\n' % (name, name))
f.write('dictsource/%s_extra:\n' % name)
f.write('\ttouch dictsource/%s_extra\n' % name)
f.write('espeak-data/%s_dict: src/espeak espeak-data/phontab %s dictsource/%s_extra\n' % (name, ' '.join(sorted(files)), name))
if name in extended_dictionaries.keys():
ext = extended_dictionaries[name]
f.write('dictsource/%s:\n' % ext)
f.write('\tln -svf extra/%s dictsource/\n' % ext)
f.write('if HAVE_%s_EXTENDED_DICTIONARY\n' % name.upper())
f.write('espeak-data/%s_dict: src/espeak phsource/phonemes.stamp %s dictsource/%s_extra dictsource/%s\n' % (name, ' '.join(sorted(files)), name, ext))
f.write('else\n')
f.write('espeak-data/%s_dict: src/espeak phsource/phonemes.stamp %s dictsource/%s_extra\n' % (name, ' '.join(sorted(files)), name))
if name in extended_dictionaries.keys():
f.write('endif\n')
f.write('\tcd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=%s && cd ..\n' % name)

try:
@@ -67,9 +107,11 @@ except:

if filename:
with open(filename, 'r') as f:
prelude = f.read().split('##### dictionaries:\n')[0]
prelude = f.read().split('##### phoneme data:\n')[0]
with open(filename, 'w') as f:
f.write(prelude)
write_phoneme_data_rules(f)
write_dictionary_make_rules(f)
else:
write_phoneme_data_rules(sys.stdout)
write_dictionary_make_rules(sys.stdout)

+ 53
- 0
phsource/intonation View File

@@ -7,6 +7,17 @@ nucleus0 fall 64 8
nucleus fall 70 18 24 12
endtune

tune s_ml
prehead 46 57
headenv fall 16
head 3 40 60 15 30
headextend 0 63 38 13 0
nucleus0 fall 64 8
nucleus fall 70 18 24 12
endtune



tune c1
prehead 46 57
headenv fall 16
@@ -132,3 +143,45 @@ nucleus0 fall 92 8
nucleus fall 92 80 76 8
endtune


// italian (by [email protected])

tune s4
prehead 46 57
headenv fall 16
head 4 80 50 -8 -5
headextend 0 63 38 13 0
nucleus0 fall 64 8
nucleus fall 70 18 24 12
endtune

tune c4
prehead 46 57
headenv fall 16
head 4 76 42 -8 -5
headextend 0 63 38 13 0
nucleus0 fall-rise 77 25
nucleus fall-rise2 78 25 24 52
endtune

tune q4
prehead 47 58
headenv fall 16
head 5 75 53 -7 1
headextend 0 60 55 45 60
onset 60 48 62
headlast 60 44 40
nucleus0 fall-rise 95 29
nucleus fall-rise2 92 21 34 79
endtune

tune e4
prehead 46 57
headenv fall 16
head 5 77 53 -7 0
headextend 40 80 75 70 67
headlast 80 72 60
nucleus0 fall 92 8
nucleus fall 88 77 75 10
endtune


+ 259
- 83
phsource/mbrola/ir1 View File

@@ -1,91 +1,267 @@
// eSpeak Phonemes to Mbrola
// Persian (Farsi) & English
// mb-ir1 Phonemes Translation
// Seyed Mahmood Taghavi Shahri
// mahmood.taghavi at Gmail.com
// http://www.amardan.ir
// License: GPL
// Release: 2013-11-07

// Long Vowels
// "A"
2 A _ 0 ? a:
2 A A 0 ? a:
2 A u 0 ? a:
2 A i 0 ? a:
2 A a 0 ? a:
2 A e 0 ? a:
2 A o 0 ? a:
0 A NULL 0 a:
// "u"
2 u _ 0 ? u
2 u u 0 ? u
2 u A 0 ? u
2 u i 0 ? u
2 u a 0 ? u
2 u e 0 ? u
2 u o 0 ? u
0 u NULL 0 u
// "i"
2 i _ 0 ? i
2 i i 0 ? i
2 i A 0 ? i
2 i u 0 ? i
2 i a 0 ? i
2 i e 0 ? i
2 i o 0 ? i
0 i NULL 0 i
// Limitation: Some English vowels can not be present or play with only two "ir1" diphones!
// I need ability of combine up to four Mbrola diphones for good eSpeak to Mbrola translation.
// Most English vowels can be present with two or three "ir1" diphones. But for playing them,
// Mbrola "ir1" don't allow consequence of Persian vowels and also begin with a Persian vowel.
// So in most case I forced to add "?" Persian consonant to do work with "ir1" specifications.

// Short Vowels
// "a"
2 a _ 0 ? a
2 a A 0 ? a
2 a u 0 ? a
2 a i 0 ? a
2 a a 0 ? a
2 a e 0 ? a
2 a o 0 ? a
0 a NULL 0 a
// "e"
2 e _ 0 ? e
2 e A 0 ? e
2 e u 0 ? e
2 e i 0 ? e
2 e a 0 ? e
2 e e 0 ? e
2 e o 0 ? e
0 e NULL 0 e
// "o"
2 o _ 0 ? o
2 o A 0 ? o
2 o u 0 ? o
2 o i 0 ? o
2 o a 0 ? o
2 o e 0 ? o
2 o o 0 ? o
0 o NULL 0 o
// Persian vowels
2 A _ 0 ? a:
6 A i 0 ? a:
2 A i 0 y a: // Persian: ریاضی
2 A VWL 0 ? a:
2 A ; 0 ? a:
0 A NULL 0 a:
2 u _ 0 ? u
6 u i 0 ? u
2 u i 0 y u
2 u VWL 0 ? u
2 u ; 0 ? u
0 u NULL 0 u
2 i _ 0 ? i
6 i i 0 ? i
2 i i 0 y i
2 i 3: 0 i // Before phoneme end with "mb-ir1" consonant.
2 i @L 0 i // Before phoneme end with "mb-ir1" consonant.
2 i e@ 0 i // Before phoneme end with "mb-ir1" consonant.
2 i r- 0 i // Before phoneme end with "mb-ir1" consonant.
2 i VWL 0 ? i
2 i ; 0 ? i
0 i NULL 0 i
2 a _ 0 ? a
6 a i 0 ? a
2 a i 0 y a
2 a @L 0 a // Before phoneme end with "mb-ir1" consonant.
2 a VWL 0 ? a
2 a ; 0 ? a // English: specialty and
0 a NULL 0 a
2 e _ 0 ? e
6 e i 0 ? e
2 e i 0 y e
2 e VWL 0 ? e
2 e ; 0 ? e
0 e NULL 0 e
2 o _ 0 ? o
6 o i 0 ? o
2 o i 0 y o
2 o VWL 0 ? o
2 o ; 0 ? o
0 o NULL 0 o

// Consonants in end of words.
// Persian end of words
0 _ NULL 0 NULL
2 _ NULL 0 NULL

0 _ NULL 0 NULL
2 _ NULL 0 NULL
// Persian & English consonants
0 ? NULL 0 ?
0 b NULL 0 b
0 d NULL 0 d
0 dZ NULL 0 j:
0 D NULL 50 z d
0 f NULL 0 f
0 h NULL 0 h
0 j NULL 0 y
0 l NULL 0 l
0 m NULL 0 m
0 n NULL 0 n
0 N NULL 50 n g:
0 p NULL 0 p
0 l/ NULL 0 l
1 q 1 0 q
0 q NULL 0 q
0 r NULL 0 r
0 R NULL 0 r
0 s NULL 0 s
0 S NULL 0 s:
0 t NULL 0 t
0 tS NULL 0 c:
0 T NULL 50 s t
0 v NULL 0 v
0 x NULL 0 x
0 z NULL 0 z
0 Z NULL 0 z:
0 g A 0 g
0 g u 0 g
0 g o 0 g
0 g @5 0 g
0 g A@ 0 g
0 g 0 0 g
0 g V 0 g
0 g u: 0 g
0 g U 0 g
0 g U@ 0 g
0 g O@ 0 g
0 g o@ 0 g
0 g OI 0 g
0 g NULL 0 g:
0 k A 0 k
0 k u 0 k
0 k o 0 k
0 k @5 0 k
0 k A@ 0 k
0 k 0 0 k
0 k V 0 k
0 k u: 0 k
0 k U 0 k
0 k U@ 0 k
0 k O@ 0 k
0 k o@ 0 k
0 k OI 0 k
0 k NULL 0 c

// Persian & English others
0 ; NULL 0 _
0 g- NULL 0 NULL
0 @- NULL 0 NULL

// Consonants
0 dZ NULL 0 j:
0 tS NULL 0 c:
0 R NULL 0 r
1 q 1 0 q
0 Z NULL 0 z:
0 S NULL 0 s:
0 j NULL 0 y
// English vowels
0 w NULL 0 v // English: quite. Arabic: ولَد
8 a NULL 0 ? a
8 i NULL 0 ? i
0 @ NULL 50 ? e
8 3 NULL 50 ? e
2 3 i@ 50 e r // Before phoneme end with "mb-ir1" consonant.
2 3 VWL 50 ? e
2 3 ; 50 ? e
0 3 NULL 50 e r
0 3: NULL 50 ? r
8 @L NULL 50 ? l
2 @L VWL 50 ? l
2 @L ; 50 ? l
0 @L NULL 50 e l
0 @2 NULL 50 ? e
2 @5 g 0 u
2 @5 k 0 u
8 @5 NULL 0 ? u
2 @5 VWL 0 ? u
2 @5 ; 0 ? u
0 @5 NULL 0 u
8 aa NULL 0 ? a
2 aa @L 0 a // Before phoneme end with "mb-ir1" consonant.
2 aa VWL 0 ? a
2 aa ; 0 ? a
0 aa NULL 0 a
0 a# NULL 10 ? e
0 A: NULL 10 ? a:
2 A@ g 10 a: r
2 A@ k 10 a: r
8 A@ NULL 0 ? r
2 A@ VWL 0 ? r
2 A@ ; 0 ? r
0 A@ NULL 10 a: r
8 E NULL 0 ? e
2 E @L 0 e // Before phoneme end with "mb-ir1" consonant.
2 E l/2 0 e // Before phoneme end with "mb-ir1" consonant.
2 E VWL 0 ? e
2 E ; 0 ? e
0 E NULL 0 e
8 e@ NULL 50 ? r
2 e@ VWL 50 ? r
2 e@ ; 50 ? r
0 e@ NULL 50 e r
0 I NULL 50 ? i
8 I2 NULL 0 ? e
2 I2 3: 0 e // Before phoneme end with "mb-ir1" consonant.
2 I2 @L 0 e // Before phoneme end with "mb-ir1" consonant.
2 I2 VWL 0 ? e
2 I2 ; 0 ? e
0 I2 NULL 0 e
8 i: NULL 0 ? i
2 i: @L 0 i // Before phoneme end with "mb-ir1" consonant.
2 i: VWL 0 ? i
2 i: ; 0 ? i
0 i: NULL 0 i
0 i@ NULL 50 y r
2 0 g 0 a:
2 0 k 0 a:
8 0 NULL 0 ? a:
2 0 @L 0 a: // Before phoneme end with "mb-ir1" consonant.
2 0 VWL 0 ? a:
2 0 ; 0 ? a:
0 0 NULL 0 a:
2 V g 0 a:
2 V k 0 a:
8 V NULL 0 ? a:
2 V 3: 0 a: // Before phoneme end with "mb-ir1" consonant.
2 V @L 0 a: // Before phoneme end with "mb-ir1" consonant.
2 V A@ 0 a: // Before phoneme end with "mb-ir1" consonant.
2 V e@ 0 a: // Before phoneme end with "mb-ir1" consonant.
2 V VWL 0 ? a:
2 V ; 0 ? a:
0 V NULL 0 a:
2 u: g 0 u
2 u: k 0 u
8 u: NULL 0 ? u
2 u: @L 0 u // Before phoneme end with "mb-ir1" consonant.
2 u: VWL 0 ? u
2 u: ; 0 ? u
0 u: NULL 0 u
2 U g 0 u
2 U k 0 u
8 U NULL 0 ? u
2 U VWL 0 ? u
2 U ; 0 ? u
0 U NULL 0 u
2 U@ g 90 o r
2 U@ k 90 o r
8 U@ NULL 0 ? o
2 U@ VWL 0 ? o
2 U@ ; 0 ? o
0 U@ NULL 90 o r
0 O: NULL 10 ? a:
2 O@ g 70 o r
2 O@ k 70 o r // English: recording
8 O@ NULL 0 ? o
2 O@ VWL 10 ? o
2 O@ ; 10 ? o
0 O@ NULL 70 o r
2 o@ g 70 o r
2 o@ k 70 o r
8 o@ NULL 0 ? o
2 o@ VWL 0 ? o
2 o@ ; 0 ? o
0 o@ NULL 70 o r
0 aI NULL 0 ? a:y
0 eI NULL 0 ? ey
2 OI g 0 oy
2 OI k 0 oy
8 OI NULL 0 ? oy
2 OI VWL 0 ? oy
2 OI ; 0 ? oy
0 OI NULL 0 oy
0 aU NULL 0 ? ow
0 oU NULL 0 ? ow
8 aI@ NULL 0 ? ay
2 aI@ VWL 0 ? ay
2 aI@ ; 0 ? ay
0 aI@ NULL 90 ay ?
0 aU@ NULL 50 ? o
0 l/2 NULL 0 l // English: child
0 r- NULL 0 r // English: are available
0 i@3 NULL 50 ? r // English: career
0 I# NULL 50 ? n // English: genuine
0 VR NULL 50 ? r // English: sir
0 n^ NULL 90 ? n // English: n
0 th NULL 50 s t // English: th
0 ts NULL 50 t s // English: mhz
0 t# NULL 0 t // English: gettin
0 n- NULL 50 ? n // English: gettin
0 O~ NULL 50 ? n // English: frisson
0 tS; NULL 0 c: // English: ћ
0 Q NULL 0 g: // English: Miguel
0 Q" NULL 0 q // English: غ
0 z. NULL 0 z: // English: ڑ
0 IR NULL 50 ? r
0 C NULL 0 c: // German ich.
0 Y NULL 0 ? o // German ö, French oe.
0 l^ NULL 50 g: l // Italian gli.

// "g"
0 g A 0 g
0 g u 99 g ?
0 g o 0 g
0 g NULL 0 g:
// "k"
0 k A 0 k
0 k u 0 k
0 k o 0 k
0 k NULL 0 c
// "l"
0 l/ NULL 0 l

// Others
0 ; NULL 0 NULL
0 g- NULL 0 NULL
0 @- NULL 0 NULL

+ 6
- 0
phsource/ph_aragon View File

@@ -15,6 +15,12 @@ phoneme E
FMT(vowel/ee_1)
endphoneme

phoneme e#
vowel starttype #e endtype #e
length 200
ChangeIfStressed(e)
ChangePhoneme(NULL)
endphoneme

phoneme O
vowel starttype #o endtype #o

+ 8
- 0
phsource/ph_dutch View File

@@ -286,3 +286,11 @@ phoneme z
CALL base/z
endphoneme


phoneme l
import_phoneme en/l
endphoneme

phoneme x2
import_phoneme af/x2
endphoneme

+ 19
- 1
phsource/ph_english View File

@@ -22,7 +22,7 @@ phoneme t# // reduced [t] as in "city"
IF PreVoicing THEN
FMT(d/x_tap)
ENDIF
FMT(d/tap2) addWav(x/d, 70)
FMT(d/tap2) addWav(x/d, 50)
endphoneme


@@ -212,6 +212,17 @@ phoneme E
endphoneme


phoneme E# // [@] in unstressed syllables, if next vowel is stressed
vowel starttype #e endtype #e

IF thisPh(isUnstressed) AND nextVowel(isVowel) AND nextVowel(isStressed) THEN
ChangePhoneme(@)
ENDIF

ChangePhoneme(E)
endphoneme


phoneme I
vowel starttype #i endtype #i
length 130
@@ -276,6 +287,13 @@ phoneme 0# // [@] in unstressed syllables
endphoneme


phoneme 02 // becomes V in en-us
vowel starttype #o endtype #o
length 140
ChangePhoneme(0)
endphoneme


phoneme V
vowel starttype #a endtype #@
length 140

+ 7
- 0
phsource/ph_english_sc View File

@@ -135,6 +135,13 @@ phoneme 0
endphoneme


phoneme 02 // becomes V in en-us
vowel starttype #o endtype #o
length 140
ChangePhoneme(V)
endphoneme


phoneme V
vowel starttype #a endtype #@
length 140

+ 25
- 6
phsource/ph_english_us View File

@@ -8,7 +8,7 @@ phoneme 3 // Schwa, used for rhotic schwa in American
vowel starttype #@ endtype #@
ipa ɚ
unstressed
length 200
length 210
IfNextVowelAppend(r-)
FMT(vwl_en_us/3_us)
endphoneme
@@ -125,6 +125,13 @@ phoneme 0
endphoneme


phoneme 02 // becomes V in en-us
vowel starttype #o endtype #o
length 140
ChangePhoneme(V)
endphoneme


phoneme V
vowel starttype #a endtype #@
length 170
@@ -359,11 +366,13 @@ phoneme t
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20

IF nextPhW(isVowel) AND nextPh(isUnstressed) AND NOT next2PhW(n) THEN
IF prevPhW(isVowel) THEN
ChangePhoneme(t#)
ELIF prevPhW(n) THEN
WAV(ustop/t, 60)
IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN
IF NOT next2PhW(n) OR nextPhW(3:) THEN
IF prevPhW(isVowel) THEN
ChangePhoneme(t#)
ELIF prevPhW(n) THEN
WAV(ustop/t, 60)
ENDIF
ENDIF
ENDIF

@@ -381,3 +390,13 @@ endphoneme
phoneme t2 // [t] which doesn't reduce
import_phoneme base/t
endphoneme

phoneme ? // glottal stop
vls glt stop
lengthmod 1 // 5? longer preceding vowel
nolink
Vowelin glstop
Vowelout glstop
WAV(ustop/null)
endphoneme


+ 7
- 0
phsource/ph_english_wm View File

@@ -65,6 +65,13 @@ phoneme 0
endphoneme


phoneme 02 // becomes V in en-us
vowel starttype #o endtype #o
length 140
ChangePhoneme(V)
endphoneme


phoneme V
vowel starttype #o endtype #o
ipa ʊ

+ 76
- 0
phsource/ph_gujarati View File

@@ -2,3 +2,79 @@
// Phonemes for gujarati
// This inherits from ph_hindi

phoneme aI
vowel long starttype #@ endtype #i
length 240
long
FMT(vdiph/@i_4)
endphoneme

phoneme aI~
vowel long starttype #@ endtype #i
length 270
long
FMT(vnasal/ai_n)
endphoneme


phoneme aU
vowel long starttype #a endtype #u
length 240
long
FMT(vdiph/a#u)
endphoneme

phoneme aU~
vowel long starttype #a endtype #u
length 300
long
FMT(vnasal/au_n)
endphoneme


phoneme V
vowel flag1 starttype #@ endtype #@
length 140

IF thisPh(isWordStart) THEN
FMT(vowel/V_2)
RETURN
ENDIF

IF thisPh(isNotStressed) THEN
length 130

IF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
ChangePhoneme(NULL)
ENDIF

IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN
IF nextPhW(isNotVowel) AND nextPh(isWordEnd) THEN
// don't delete schwa before a word-final consonant
ELSE
ChangePhoneme(NULL)
ENDIF
ENDIF

IF prevPh(isPalatal) AND NOT nextPh(H) THEN
ChangePhoneme(@3)
ELSEIF prevPh(r) THEN
ChangePhoneme(@2)
ELSE
ChangePhoneme(@)
ENDIF
ENDIF
IF prevPh(w) THEN
FMT(vowel/V_4)
ENDIF

FMT(vowel/V_2)
endphoneme

phoneme o:
vowel long starttype #o endtype #o
length 227
FMT(vowel/o)
endphoneme


+ 26
- 15
phsource/ph_italian View File

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

//====================================================
// Italian
//====================================================
@@ -11,7 +10,7 @@ endphoneme

phoneme a
vowel starttype #a endtype #a
length 180
length 160
ChangeIfNotStressed(a/)
FMT(vowel/a)
endphoneme
@@ -19,7 +18,7 @@ endphoneme

phoneme a/
vowel starttype #@ endtype #@
length 180
length 140
IF thisPh(isWordEnd) THEN
FMT(vowel/a#_4)
ENDIF
@@ -29,14 +28,14 @@ endphoneme

phoneme e
vowel starttype #e endtype #e
length 170
length 150
ChangeIfNotStressed(e/)
FMT(vowel/e_2)
endphoneme

phoneme e/
vowel starttype #e endtype #e
length 170
length 140
IF nextPhW(isNasal) OR nextPhW(isLiquid) THEN
FMT(vowel/e_mid2)
ELSE
@@ -48,7 +47,7 @@ endphoneme

phoneme E
vowel starttype #e endtype #e
length 170
length 145
ChangeIfUnstressed(e/) // [E] only in stressed syllables ?
FMT(vowel/e_mid)
endphoneme
@@ -64,7 +63,7 @@ endphoneme

phoneme i# // Used for 'gia_' where [i] is only spoken if stressed
vowel starttype #i endtype #i
length 140
length 145
ChangeIfNotStressed(NULL)
ChangePhoneme(i)
endphoneme
@@ -72,7 +71,7 @@ endphoneme

phoneme I
vowel starttype #i endtype #i
length 150
length 140
IfNextVowelAppend(;)
FMT(vowel/i_4)
endphoneme
@@ -81,14 +80,14 @@ endphoneme

phoneme o
vowel starttype #o endtype #o
length 170
length 150
ChangeIfNotStressed(o/)
FMT(vowel/o)
endphoneme

phoneme o/
vowel starttype #o endtype #o
length 170
length 140
IF nextPhW(isNasal) OR nextPhW(isLiquid) THEN
FMT(vowel/oo_1)
ELSE
@@ -99,7 +98,7 @@ endphoneme

phoneme O
vowel starttype #o endtype #o
length 170
length 150
ChangeIfUnstressed(o/) // [O] only in stressed syllables ?
FMT(vowel/oo_4)
endphoneme
@@ -107,21 +106,21 @@ endphoneme

phoneme u
vowel starttype #u endtype #u
length 160
length 150
ChangeIfNotStressed(U)
FMT(vowel/u_bck)
endphoneme

phoneme U
vowel starttype #u endtype #u
length 160
length 140
FMT(vowel/u_bck)
endphoneme


phoneme aU
vowel starttype #a endtype #o
length 270
length 300
FMT(vdiph/aoo)
endphoneme

@@ -147,5 +146,17 @@ endphoneme

phoneme l^
import_phoneme base/l^
Length 140
Length 130
endphoneme

phoneme ts
import_phoneme consonants/ts
voicingswitch ts
endphoneme

phoneme dz
import_phoneme consonants/dz
voicingswitch z
lengthmod 3
endphoneme


+ 41
- 0
phsource/ph_malayalam View File

@@ -277,3 +277,44 @@ phoneme g#
endphoneme



// suggested by Prasenjit Sen, but perhaps not needed?
// ml_rules changes [p], [t], [k] to [b], [d], [g] in non-initial
// positions

phoneme p
import_phoneme consonants/p-
voicingswitch b

IF thisPh(isWordStart) THEN
CALL base/p
ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
ChangePhoneme(b)
ENDIF
endphoneme


phoneme t
import_phoneme base/t[
voicingswitch d

IF thisPh(isWordStart) THEN
CALL base/t
ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
ChangePhoneme(d)
ENDIF
endphoneme


phoneme k
import_phoneme consonants/k-
voicingswitch g

IF thisPh(isWordStart) THEN
CALL base/k
ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
ChangePhoneme(g)
ENDIF
endphoneme



+ 95
- 0
phsource/ph_manipuri View File

@@ -0,0 +1,95 @@

//====================================================
// Manipuri, inherits from Bengali
//====================================================


phoneme a
vowel starttype #a endtype #a
length 225
IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN
FMT(vowel/a#_2)
ENDIF
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
vls pla afr sibilant
voicingswitch dZ
lengthmod 2
Vowelin f1=0 f2=2300 200 400 f3=-100 80

IF nextPh(isPause2) THEN
WAV(ustop/tsh_unasp2)
ENDIF
WAV(ustop/tsh_unasp2)
endphoneme


phoneme tS#
vls pla afr sibilant
voicingswitch dZ
lengthmod 2
Vowelin f1=0 f2=2300 200 400 f3=-100 80

IF nextPh(isPause2) THEN
WAV(ustop/tsh_)
ENDIF
WAV(ustop/tsh)
endphoneme






phoneme ~
virtual
endphoneme


+ 105
- 0
phsource/ph_oriya View File

@@ -0,0 +1,105 @@

//====================================================
// Oriya, inherits from Bengali
//====================================================


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

IF thisPh(isWordEnd) AND prevPhW(isNotVowel) THEN
ChangePhoneme(O)
ENDIF
endphoneme


phoneme a
vowel starttype #a endtype #a
length 225
IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN
FMT(vowel/a#_2)
ENDIF
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
vls pla afr sibilant
voicingswitch dZ
lengthmod 2
Vowelin f1=0 f2=2300 200 400 f3=-100 80

IF nextPh(isPause2) THEN
WAV(ustop/tsh_unasp2)
ENDIF
WAV(ustop/tsh_unasp2)
endphoneme


phoneme tS#
vls pla afr sibilant
voicingswitch dZ
lengthmod 2
Vowelin f1=0 f2=2300 200 400 f3=-100 80

IF nextPh(isPause2) THEN
WAV(ustop/tsh_)
ENDIF
WAV(ustop/tsh)
endphoneme






phoneme ~
virtual
endphoneme


phsource/ph_oromiffa → phsource/ph_oromo View File

@@ -1,22 +1,98 @@

//====================================================
// Oromiffa
// Oromo
//====================================================

phoneme : // Lengthen previous vowel by "length"
virtual
length 160
endphoneme


phoneme i
vowel starttype #i endtype #i
length 200
length 140
IfNextVowelAppend(;)
FMT(vowel/ii_5)
ChangeIfUnstressed(I)
FMT(vowel/i_4)
endphoneme

phoneme I
vowel starttype #i endtype #i
length 140
IfNextVowelAppend(;)
FMT(vowel/ii_3)
endphoneme



phoneme e
vowel starttype #e endtype #e
length 220
length 150
FMT(vowel/e_mid2)
endphoneme

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


phoneme a
vowel starttype #a endtype #a
length 170
// ChangeIfUnstressed(a2)
FMT(vowel/aa_9)
endphoneme

phoneme a2
vowel starttype #a endtype #a
length 170
FMT(vowel/aa#)
endphoneme


phoneme o
vowel starttype #o endtype #o
length 155
FMT(vowel/oo_1)
endphoneme

phoneme Y
vowel starttype #@ endtype #@
length 155
FMT(vowel/y#)
endphoneme


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

phoneme u1 // TEST
vowel starttype #u endtype #u
length 140
FMT(vowel/u_2)
endphoneme

phoneme U // TEST
vowel starttype #u endtype #u
length 140
FMT(vowel/uu_4)
endphoneme



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


phoneme y
vowel starttype #@ endtype #@
ipa ?
@@ -33,16 +109,6 @@ phoneme y
endphoneme


phoneme a
vowel starttype #a endtype #a
length 220
IF nextPhW(isPalatal) THEN
FMT(vdiph/ai_5)
ENDIF
FMT(vowel/a_6)
endphoneme


phoneme @
vowel starttype #@ endtype #@
length 220
@@ -52,45 +118,20 @@ phoneme @
FMT(vowel/@_3)
endphoneme


phoneme o
vowel starttype #o endtype #o
length 220
FMT(vowel/o-_4)
endphoneme


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

// CONSONANTS

phoneme r
import_phoneme base/R2
endphoneme


phoneme p'
vls blb stop
phoneme k`
vls vel stop
lengthmod 2
voicingswitch b
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 gpaus
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
WAV(ustop/p_unasp)
endphoneme


phoneme b
vcd blb stop
IF prevPhW(isVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(B)
ENDIF
CALL base/b
Vowelin f1=0 f2=1700 -250 250 f3= -200 80 gpaus f4
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
WAV(ustop/k_ejc, 60)
endphoneme


phoneme t`
vls alv stop
lengthmod 2
@@ -103,7 +144,6 @@ phoneme t`
WAV(ustop/t_hi, 70)
endphoneme


phoneme tS`
vls pla afr sibilant
voicingswitch dZ
@@ -116,22 +156,22 @@ phoneme tS`
WAV(ustop/tsh_unasp, 80)
endphoneme


phoneme k`
vls vel stop
phoneme P
vls blb stop
lengthmod 2
Vowelin f1=0 f2=1700 -250 250 f3= -200 80 gpaus f4
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
WAV(ustop/k_ejc, 60)
voicingswitch b
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 gpaus
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
WAV(ustop/p_unasp)
endphoneme


phoneme x
vls vel frc
lengthmod 3
IF prevPhW(#i) THEN
ChangePhoneme(C)
ELSE
CALL base/x
phoneme D
vcd alv stop
lengthmod 6
voicingswitch d
CALL base/D
IF nextPh(isPause2) THEN
FMT(voc/dh_) addWav(vocw/dh, 35) // weaker
ENDIF
endphoneme

+ 336
- 6
phsource/ph_s_gaelic View File

@@ -2,26 +2,356 @@



// Vowels

phoneme I
vowel starttype #i endtype #i
unstressed
length 130
FMT(vowel/ii)
endphoneme

phoneme @
vowel starttype #@ endtype #@
unstressed
length 130
FMT(vowel/@_6)
endphoneme


phoneme i:
vowel starttype #i endtype #i long
length 240
ChangeIfUnstressed(i)
FMT(vowel/i)
endphoneme

phoneme i
vowel starttype #i endtype #i
length 130
ChangeIfUnstressed(I)
FMT(vowel/i_6)
endphoneme

phoneme e:
vowel starttype #e endtype #e long
length 240
ChangeIfUnstressed(@)
FMT(vowel/e)
endphoneme

phoneme e
vowel starttype #e endtype #e
length 130
ChangeIfUnstressed(@)
FMT(vowel/e)
endphoneme


phoneme E:
vowel starttype #e endtype #e long
length 240
FMT(vowel/ee)
endphoneme

phoneme E
vowel starttype #e endtype #e
length 130
FMT(vowel/ee)
endphoneme


phoneme a:
vowel starttype #a endtype #a long
length 240
ChangeIfUnstressed(a)
FMT(vowel/aa_8)
endphoneme

phoneme a
vowel starttype #a endtype #a
length 130
ChangeIfUnstressed(@)
FMT(vowel/a)
endphoneme

phoneme a2 // doesn't reduce to [@]
vowel starttype #a endtype #a
length 130
FMT(vowel/a)
endphoneme


phoneme O:
vowel starttype #o endtype #o long
length 240
FMT(vowel/oo_2)
endphoneme

phoneme O
vowel starttype #o endtype #o
length 130
FMT(vowel/oo_2)
endphoneme


phoneme o:
vowel starttype #o endtype #o long
length 240
FMT(vowel/o)
endphoneme

phoneme o
vowel starttype #o endtype #o
length 130
FMT(vowel/o_2)
endphoneme


phoneme u:
vowel starttype #u endtype #u long
length 240
ChangeIfUnstressed(u)
FMT(vowel/u_bck2)
endphoneme

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


phoneme u-
vowel starttype #@ endtype #@
ipa ɯ
length 240
FMT(vowel/u_bck2)
endphoneme

phoneme u-
vowel starttype #@ endtype #@ long
ipa ɯ
length 130
FMT(vowel/u_bck2)
endphoneme


phoneme o-
vowel starttype #@ endtype #@ long
ipa ɤ
length 240
ChangeIfUnstressed(@)
FMT(vowel/8_7)
endphoneme

phoneme o-
vowel starttype #@ endtype #@
ipa ɤ
length 130
ChangeIfUnstressed(@)
FMT(vowel/8_7)
endphoneme

// Diphthongs


phoneme i@
vowel starttype #i endtype #@ long
length 240
ChangeIfNotStressed(@)
FMT(vdiph2/i@)
endphoneme


phoneme ia
vowel starttype #i endtype #@ long
length 240
ChangeIfNotStressed(@)
FMT(vdiph2/i@_3)
endphoneme


phoneme u@
vowel starttype #u endtype #@ long
length 240
FMT(vdiph2/u@)
endphoneme


phoneme aI
vowel starttype #a endtype #i long
length 240
ChangeIfUnstressed(@)
FMT(vdiph/ai)
endphoneme

phoneme eI
vowel starttype #e endtype #i long
length 240
FMT(vdiph/ei)
endphoneme

phoneme @I
vowel starttype #@ endtype #i long
length 240
FMT(vdiph/@i)
endphoneme

phoneme u-I
vowel starttype #@ endtype #i long
ipa ɯɪ
length 240
FMT(vdiph/u-i)
endphoneme

phoneme aU
vowel starttype #a endtype #u long
length 240
ChangeIfUnstressed(@)
FMT(vdiph/aau_4)
endphoneme

phoneme OU
vowel starttype #@ endtype #u long
length 240
FMT(vdiph/Vu)
endphoneme


// Consonants

phoneme b
import_phoneme is/b
endphoneme

phoneme d
import_phoneme is/d
endphoneme

phoneme d;
import_phoneme hi/c
endphoneme

phoneme g
import_phoneme is/g
endphoneme

phoneme g;
vls vel stop
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1
WAV(ustop/ki_ejc, 130)
endphoneme

phoneme k;
vls vel stop
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1
WAV(ustop/ki)
endphoneme


phoneme t
import_phoneme hi/t#
endphoneme

phoneme d
import_phoneme hi/t
phoneme t;
import_phoneme hi/c#
endphoneme

phoneme k
import_phoneme base/k
phoneme S
vls pal frc sibilant palatal
CALL base/S;
ipa ʃ
endphoneme

phoneme g
import_phoneme hi/k

phoneme n[ // temporary
import_phoneme n
endphoneme

phoneme * // reduced [t] as in "city"
vcd alv stop
ipa ɾ
lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80

IF KlattSynth THEN
IF PreVoicing THEN
FMT(klatt/x_tap)
ENDIF
FMT(klatt/tap2) addWav(x/d, 70)
ENDIF

IF PreVoicing THEN
FMT(d/x_tap)
ENDIF
FMT(d/tap2) addWav(x/d, 25)
endphoneme


phoneme *;
import_phoneme D
endphoneme

phoneme R
import_phoneme R2
endphoneme


phoneme & // the epenthetic vowel
vowel starttype #@ endtype #@
unstressed
length 130
IF prevVowel(a) THEN
ChangePhoneme(a)
ELSEIF prevVowel(E) THEN
IF prevPh(*) THEN
ChangePhoneme(a)
ELSE
ChangePhoneme(E)
ENDIF
ELSEIF prevVowel(O) THEN
ChangePhoneme(O)
ELSEIF prevVowel(i) THEN
ChangePhoneme(i)
ELSEIF prevVowel(e) THEN
ChangePhoneme(e)
ELSEIF prevVowel(u) THEN
ChangePhoneme(u)
ELSEIF prevVowel(u-) THEN
ChangePhoneme(u-)
ELSEIF prevVowel(o-) THEN
ChangePhoneme(o-)
ENDIF
ChangePhoneme(NULL)
endphoneme


phoneme # // used for pre-aspiration
vls glt apr
IF NOT prevPhW(isVowel) OR thisPh(isNotStressed) OR prevVowel(isLong) THEN
ChangePhoneme(NULL)
ELSE
IF nextPhW(g;) OR nextPhW(k;) THEN
ChangePhoneme(C)
ELSEIF nextPhW(g) OR nextPhW(k) THEN
ChangePhoneme(x)
ELSE
ChangePhoneme(h)
ENDIF
ENDIF
endphoneme


// [h] only if followed by a vowel
phoneme h#
vls glt apr
IF nextPh(isVowel) THEN
ChangePhoneme(h)
ELSE
ChangePhoneme(NULL)
ENDIF
endphoneme

+ 4
- 0
phsource/ph_spanish_la View File

@@ -3,4 +3,8 @@
// Latin American Spanish - based on Spanish
//====================================================

phoneme T
vls alv frc sibilant
ChangePhoneme(s)
endphoneme


+ 16
- 9
phsource/ph_vietnam_sgn View File

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

phoneme 1 // ngang tone: level
stress
Tone(32, 34, envelope/p_level, NULL)
Tone(20,35, envelope/i_risefall,NULL) //40,5,envelope/p_level, NULL) //40 45
endphoneme


phoneme 2 // huyền tone: low falling
stress
Tone(35,20 , envelope/p_fall, NULL) //20
Tone(10,20 , envelope/p_fall, NULL) //20
endphoneme


phoneme 3 // sắc Tone(rising
stress
Tone(40,60, envelope/p_rise, NULL) // 25 50
Tone(45,80, envelope/p_rise, NULL) // 30 50
endphoneme


phoneme 4 // hỏi Tone(curve (dipping rising)
stress
Tone(30,50, envelope/p_rise, NULL) //envelope/vi_5amp) // 28,58
Tone(45,50, envelope/p_fallrise,envelope/vi_5amp) // 28,58
endphoneme


phoneme 5 // ngã tone: broken (creaking rising)
stress
Tone(30,50, envelope/p_rise, NULL) //20,80, envelope/p_214, envelope/vi_5amp) // 28,58
Tone(30,75, envelope/p_214, NULL) //20,80, envelope/p_214, envelope/vi_5amp) // 28,58
endphoneme


phoneme 6 // nặng Tone(drop (constricted)
stress
//length 150 // ignore because it make too short sound 75 // reduce the length of the vowel
Tone(10,5, envelope/p_512,NULL) // envelope/vi_6amp)
Tone(20,25, envelope/p_512,NULL) // envelope/vi_6amp) 10 5
endphoneme


phoneme 7 // Tone(1 (ngang) at end of clause
stress
Tone(40, 20, envelope/p_fall, NULL)
Tone(40,42, envelope/p_fall, NULL) //20, 30, envelope/p_fall, NULL)
endphoneme

// Redefine the length of vowels
@@ -51,11 +51,13 @@ endphoneme
phoneme i
CALL vi/i
length 150
FMT(vowel/i#)
endphoneme

phoneme E
CALL vi/E
length 150
FMT(vowel/ee_1)
endphoneme

phoneme a:
@@ -76,8 +78,8 @@ endphoneme

phoneme O
CALL vi/O
length 150
FMT(vowel/0)
length 80
FMT(vowel/oo_1)
endphoneme

phoneme Oi
@@ -94,4 +96,9 @@ endphoneme
phoneme o
CALL vi/o
FMT(vowel/o_5)
endphoneme

phoneme @:I
CALL vi/@:I
FMT(vdiph/y#y)
endphoneme

+ 10
- 2
phsource/phonemes View File

@@ -116,7 +116,7 @@ endphoneme

phoneme ? // glottal stop
vls glt stop
lengthmod 2 // ??
lengthmod 3 // ??
nolink
Vowelin glstop
Vowelout glstop
@@ -199,6 +199,7 @@ endphoneme
phoneme m-
vowel starttype #@ endtype #@
ipa mU+0329
lengthmod 4
length 170

IF thisPh(isWordStart) THEN
@@ -213,6 +214,7 @@ endphoneme
phoneme n-
vowel starttype #@ endtype #@
ipa nU+0329
lengthmod 4
length 170

IF thisPh(isWordStart) THEN
@@ -227,6 +229,7 @@ endphoneme
phoneme N-
vowel starttype #e endtype #e
ipa ŋU+0329
lengthmod 4
length 190
FMT(nn/nn-syl)
endphoneme
@@ -1934,6 +1937,11 @@ include ph_gujarati
phonemetable as bn
include ph_assamese

phonemetable or bn
include ph_oriya

phonemetable mni bn
include ph_manipuri



@@ -1960,7 +1968,7 @@ phonemetable kl base
include ph_greenlandic

phonemetable om base
include ph_oromiffa
include ph_oromo

//phonemetable en2 en
//include ph_english_test

BIN
phsource/vdiph/@i_4 View File


BIN
phsource/vdiph/a#u View File


BIN
phsource/vnasal/ai_n View File


BIN
phsource/vnasal/au_n View File


+ 8
- 1
platforms/windows/make_espeak.iss View File

@@ -2,7 +2,7 @@
[Setup]
AppName=eSpeak
AppVerName=eSpeak version 1.47.09
AppVerName=eSpeak version 1.48.01
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes
@@ -183,10 +183,13 @@ begin
$41: Result := 'sw';
//$44: Result := 'tt';
$46: Result := 'pa';
//$48: Result := 'or';
$49: Result := 'ta';
$46: Result := 'pa';
$4a: Result := 'te';
$4b: Result := 'kn';
$4c: Result := 'ml';
//$4d: Result := 'as';
//$50: Result := 'mn';
$52: Result := 'cy';
//$5e: Result := 'am';
@@ -231,6 +234,7 @@ begin
'af': value := $436;
'am': value := $45e;
'an': value := $40a; // Aragon, use code for Spanish
'as': value := $44d;
'az': value := $42c;
'bg': value := $402;
'bn': value := $445;
@@ -251,6 +255,7 @@ begin
'fil': value := $464;
'fr': value := $40c;
'ga': value := $83c;
'gd': value := $43c;
'gu': value := $447;
'hi': value := $439;
'hr': value := $41a;
@@ -274,6 +279,7 @@ begin
'ne': value := $461;
'nl': value := $413;
'no': value := $414;
'or': value := $448;
'pa': value := $446;
'pl': value := $415;
'pt': value := $416;
@@ -312,6 +318,7 @@ begin
'-hu': value := $40e;
'-ic': value := $40f;
'-in': value := $439;
'-ir': value := $429;
'-it': value := $410;
'-mx': value := $80a;
'-nl': value := $413;

+ 1
- 1
platforms/windows/make_espeakedit.iss View File

@@ -1,7 +1,7 @@
[Setup]
AppName=eSpeakEdit
AppVerName=eSpeakEdit version 1.47.09
AppVerName=eSpeakEdit version 1.48.01
DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak
OutputBaseFilename=setup_espeakedit

+ 37
- 0
platforms/windows/mingw/espeak_test_lib.c View File

@@ -0,0 +1,37 @@
#include <speak_lib.h>
#ifdef PLATFORM_WINDOWS
#include <windows.h>
#define sleep(x) Sleep(1000*x)
#endif
int callback(short* wav, int num, espeak_EVENT *pEv)
{
int cEv = 0;
while (pEv->type) {
cEv++;
pEv++;
}
printf("callback, events: %d\n", cEv);
return 0;
}
main()
{
int nRate = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 10000, NULL, 0);
printf("nRate: %d\n", nRate);
if (nRate < 0)
return;
espeak_SetSynthCallback(callback);
espeak_SetParameter(espeakRATE, 175, 0);
int rv;
rv = espeak_Char('c');
printf("rv: %d\n", rv);
const char* sText = "tralalalallala";
rv = espeak_Synth(sText, 100, 0, POS_CHARACTER, 0, 0, 0, 0);
printf("rv: %d (full: %d, internal: %d)\n",
rv, EE_BUFFER_FULL, EE_INTERNAL_ERROR);
sleep(2); // 2 seconds
puts("slept");
espeak_Terminate();
}

+ 169
- 0
platforms/windows/mingw/espeak_win_1_0.txt View File

@@ -0,0 +1,169 @@
Index: src/Makefile
===================================================================
--- src/Makefile (revision 364)
+++ src/Makefile (working copy)
@@ -18,6 +18,13 @@
# Use SONAME_OPT=-Wl,h, on Solaris
SONAME_OPT=-Wl,-soname,
+ifdef PLATFORM_WINDOWS
+ LIB_NAME = libespeak.dll
+else
+ # On Windows not all source files are compiled
+ non_windows_SOURCES = mbrowrap.cpp
+endif
+
# Use EXTRA_LIBS=-lm on Solaris
EXTRA_LIBS =
@@ -72,12 +79,12 @@
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \
- synthdata.cpp synthesize.cpp translate.cpp mbrowrap.cpp \
+ synthdata.cpp synthesize.cpp translate.cpp $(non_windows_SOURCES) \
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp klatt.cpp sonic.cpp
libespeak_SOURCES = speak_lib.cpp compiledict.cpp dictionary.cpp intonation.cpp \
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \
- synthdata.cpp synthesize.cpp translate.cpp mbrowrap.cpp \
+ synthdata.cpp synthesize.cpp translate.cpp $(non_windows_SOURCES) \
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp \
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp klatt.cpp sonic.cpp
@@ -94,8 +101,14 @@
LIBS3=-lstdc++ -L . -lespeak
CXXFLAGS=-O2
+ifdef PLATFORM_WINDOWS
+ CXXFLAGS += -DPLATFORM_WINDOWS -DNEED_STRUCT_TIMESPEC
+ LDFLAGS += -static-libgcc -static-libstdc++
+endif
+ifdef DEBUG
+ CXXFLAGS += -DDEBUG_ENABLED
+endif
-
all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME)
.cpp.o:
@@ -116,9 +129,11 @@
$(LIB_NAME): $(OBJS2)
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \
$(OBJS2) $(LIBS2)
- mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG)
- $(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION)
- $(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME)
+ $(if $(PLATFORM_WINDOWS), , \
+ mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG); \
+ $(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION); \
+ $(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME); \
+ )
$(STATIC_LIB_NAME): $(OBJS2)
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2)
Index: src/speech.h
===================================================================
--- src/speech.h (revision 364)
+++ src/speech.h (working copy)
@@ -37,7 +37,6 @@
#endif
-#define PLATFORM_POSIX
#define PATHSEP '/'
// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile
//#define USE_PORTAUDIO
@@ -77,7 +76,14 @@
#ifdef PLATFORM_WINDOWS
#define N_PATH_HOME 230
-#else
+// sleep(seconds)
+// Sleep(millisecond = 1/1000 s), windows api, kernel32.dll
+// usleep(microseconds = 1/1000000 s)
+#define sleep(x) Sleep(1000*x)
+// we are lucky, in current code usleep is always used in multiplies of 1000
+#define usleep(x) Sleep((x+500)/1000)
+#else /* PLATFORM_POSIX */
+#define PLATFORM_POSIX
#define N_PATH_HOME 160
#endif
Index: src/speak_lib.cpp
===================================================================
--- src/speak_lib.cpp (revision 364)
+++ src/speak_lib.cpp (working copy)
@@ -31,7 +31,13 @@
#include "speech.h"
#include <sys/stat.h>
-#ifndef PLATFORM_WINDOWS
+
+#ifdef PLATFORM_WINDOWS
+#include <fcntl.h>
+#include <io.h>
+#include <windows.h>
+#include <winreg.h>
+#else /* PLATFORM_POSIX */
#include <unistd.h>
#endif
Index: src/wave.cpp
===================================================================
--- src/wave.cpp (revision 364)
+++ src/wave.cpp (working copy)
@@ -32,7 +32,9 @@
#include <time.h>
#include "portaudio.h"
-#ifndef PLATFORM_WINDOWS
+#ifdef PLATFORM_WINDOWS
+#include <windows.h>
+#else /* PLATFORM_POSIX */
#include <unistd.h>
#endif
#include "wave.h"
@@ -40,6 +42,14 @@
//<Definitions
+#ifdef NEED_STRUCT_TIMESPEC
+#define HAVE_STRUCT_TIMESPEC 1
+struct timespec {
+ long tv_sec;
+ long tv_nsec;
+};
+#endif /* HAVE_STRUCT_TIMESPEC */
+
enum {ONE_BILLION=1000000000};
#ifdef USE_PORTAUDIO
Index: src/event.cpp
===================================================================
--- src/event.cpp (revision 364)
+++ src/event.cpp (working copy)
@@ -24,7 +24,9 @@
//<includes
+#ifndef PLATFORM_WINDOWS
#include <unistd.h>
+#endif
#include <assert.h>
#include <string.h>
#include <stdlib.h>
Index: src/fifo.cpp
===================================================================
--- src/fifo.cpp (revision 364)
+++ src/fifo.cpp (working copy)
@@ -24,7 +24,9 @@
//<includes
+#ifndef PLATFORM_WINDOWS
#include <unistd.h>
+#endif
#include <assert.h>
#include <string.h>
#include <stdlib.h>

+ 16
- 0
platforms/windows/mingw/readme.txt View File

@@ -0,0 +1,16 @@
These are instructions to built the library on MS Windows, using msys and mingw.
This library is fully functional, contrary to the library described
in windows_dll directory.

To build exe file go to windows_cmd directory, to build sapi dll,
go to windows_sapi directory.

- Use sources from src directory.
- Have a ready to use portaudio v19 library (dll file is sufficient, here
libportaudio-2.dll filename is assumed in a directory relative to espeak)
- Copy portaudio.h file from your portaudio directory to src directory,
overwriting the existing one. At the time of writing this is the same
file as src/portaudio19.h distributed within espeak.

Make command:
make libespeak.dll PLATFORM_WINDOWS=1 LIB_AUDIO="-L ../../portaudio/lib/.libs -lportaudio-2 -lwinmm"

+ 5
- 5
platforms/windows/windows_sapi/version.rc2 View File

@@ -5,8 +5,8 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,46,00
PRODUCTVERSION 1,0,46,00
FILEVERSION 1,0,48,00
PRODUCTVERSION 1,0,48,00
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -24,14 +24,14 @@ BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "Jonathan Duddington\0"
VALUE "FileDescription", "Text to Speech\0"
VALUE "FileVersion", "1, 0,46,00\0"
VALUE "InternalName", "espeak1.46\0"
VALUE "FileVersion", "1, 0,48,00\0"
VALUE "InternalName", "espeak1.48\0"
VALUE "LegalCopyright", "Copyright (c) Jonathan Duddington\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "espeak_sapi.dll\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "espeak TTS\0"
VALUE "ProductVersion", "1, 0, 46, 00\0"
VALUE "ProductVersion", "1, 0, 48, 00\0"
VALUE "SpecialBuild", "\0"
END
END

+ 10
- 1
src/compiledata.cpp View File

@@ -1,6 +1,7 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] *
* Copyright (C) 2013 by Reece H. Dunn *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -124,6 +125,7 @@ static keywtab_t k_properties[] = {
{"isVFricative", 0, phVFRICATIVE},

{"isPalatal", 0, i_isPalatal},
{"isLong", 0, i_isLong},
{"isRhotic", 0, i_isRhotic},
{"isSibilant", 0, i_isSibilant},
{"isFlag1", 0, i_isFlag1},
@@ -990,6 +992,10 @@ static wxString CompileAllDictionaries()

sprintf(fname_log,"%s%s",path_dsource,"dict_log");
log = fopen(fname_log,"w");
if(log != 0)
{
fprintf(log, "%s", utf8_bom);
}
sprintf(fname_log,"%s%s",path_dsource,"dict_phonemes");
f_phused = fopen(fname_log,"w");

@@ -2407,6 +2413,9 @@ int CompileIf(int elif)
else
{
error("Unexpected keyword '%s'",item_string);

if((strcmp(item_string, "phoneme") == 0) || (strcmp(item_string, "endphoneme") == 0))
return(-1);
}

// output the word

+ 24
- 14
src/compiledict.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -51,6 +51,7 @@ static char letterGroupsDefined[N_LETTER_GROUPS];

MNEM_TAB mnem_rules[] = {
{"unpr", 0x01},
{"noprefix", 0x02}, // rule fails if a prefix has been removed

{"w_alt1", 0x11},
{"w_alt2", 0x12},
@@ -235,6 +236,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
unsigned char rb;
unsigned char c;
char *p;
char *p_end;
int ix;
int match_type;
int finished=0;
@@ -245,10 +247,10 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
int condition_num=0;
int at_start = 0;
const char *name;
char buf[60];
char buf_pre[60];
char buf[200];
char buf_pre[200];
char suffix[20];
static char output[60];
static char output[80];

static char symbols[] =
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
@@ -367,6 +369,8 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
*p = 0;

p = output;
p_end = p + sizeof(output) - 1;

if(linenum > 0)
{
sprintf(p,"%5d:\t",linenum);
@@ -381,12 +385,14 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
{
if(at_start)
*p++ = '_';
while(--ix >= 0)
while((--ix >= 0) && (p < p_end-3))
*p++ = buf_pre[ix];
*p++ = ')';
*p++ = ' ';
}
*p = 0;

buf[p_end - p] = 0; // prevent overflow in output[]
strcat(p,buf);
ix = strlen(output);
while(ix < 8)
@@ -425,7 +431,8 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
char *mnemptr;
unsigned char flag_codes[100];
char encoded_ph[200];
unsigned char bad_phoneme[4];
char bad_phoneme_str[4];
int bad_phoneme;
static char nullstring[] = {0};

text_not_phonemes = 0;
@@ -660,17 +667,18 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
}
else
{
EncodePhonemes(phonetic,encoded_ph,bad_phoneme);
EncodePhonemes(phonetic,encoded_ph,&bad_phoneme);
if(strchr(encoded_ph,phonSWITCH) != 0)
{
flag_codes[n_flag_codes++] = BITNUM_FLAG_ONLY_S; // don't match on suffixes (except 's') when switching languages
}

// check for errors in the phonemes codes
if(bad_phoneme[0] != 0)
if(bad_phoneme != 0)
{
// unrecognised phoneme, report error
fprintf(f_log,"%5d: Bad phoneme [%c] (0x%x) in: %s %s\n",linenum,bad_phoneme[0],bad_phoneme[0],word,phonetic);
bad_phoneme_str[utf8_out(bad_phoneme, bad_phoneme_str)] = 0;
fprintf(f_log,"%5d: Bad phoneme [%s] (U+%x) in: %s %s\n",linenum,bad_phoneme_str,bad_phoneme,word,phonetic);
error_count++;
}
}
@@ -1194,7 +1202,8 @@ static char *compile_rule(char *input)
int finish=0;
char buf[80];
char output[150];
unsigned char bad_phoneme[4];
int bad_phoneme;
char bad_phoneme_str[4];

buf[0]=0;
rule_cond[0]=0;
@@ -1272,10 +1281,11 @@ static char *compile_rule(char *input)
return(NULL);
}

EncodePhonemes(rule_phonemes,buf,bad_phoneme);
if(bad_phoneme[0] != 0)
EncodePhonemes(rule_phonemes,buf,&bad_phoneme);
if(bad_phoneme != 0)
{
fprintf(f_log,"%5d: Bad phoneme [%c] in %s\n",linenum,bad_phoneme[0],input);
bad_phoneme_str[utf8_out(bad_phoneme, bad_phoneme_str)] = 0;
fprintf(f_log,"%5d: Bad phoneme [%s] (U+%x) in: %s\n",linenum,bad_phoneme_str,bad_phoneme,input);
error_count++;
}
strcpy(output,buf);
@@ -1923,7 +1933,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
if((f_out = fopen_log(fname_out,"wb+")) == NULL)
{
if(fname_err)
strcpy(fname_err,fname_in);
strcpy(fname_err,fname_out);
return(-1);
}
sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP);

+ 44
- 18
src/dictionary.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] *
* Copyright (C) 2013 Reece H. Dunn *
* *
@@ -352,8 +352,8 @@ int HashDictionary(const char *string)



const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phoneme)
/***************************************************************************/
const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme)
/******************************************************************/
/* Translate a phoneme string from ascii mnemonics to internal phoneme numbers,
from 'p' up to next blank .
Returns advanced 'p'
@@ -370,7 +370,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
unsigned int mnemonic_word;

if(bad_phoneme != NULL)
bad_phoneme[0] = 0;
*bad_phoneme = 0;

// skip initial blanks
while(isspace(*p))
@@ -432,8 +432,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
// not recognised, report and ignore
if(bad_phoneme != NULL)
{
bad_phoneme[0] = *p;
bad_phoneme[1] = 0;
utf8_in(bad_phoneme, p);
}
*outptr++ = 0;
return(p+1);
@@ -523,7 +522,7 @@ void DecodePhonemes(const char *inptr, char *outptr)

// using Kirschenbaum to IPA translation, ascii 0x20 to 0x7f
unsigned short ipa1[96] = {
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f,
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x29,0x27e,0x2b,0x2cc,0x2d,0x2e,0x2f,
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254,
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
@@ -532,7 +531,7 @@ unsigned short ipa1[96] = {
};

#define N_PHON_OUT 500 // realloc increment
static char *phon_out_buf = NULL;
static char *phon_out_buf = NULL; // passes the result of GetTranslatedPhonemeString()
static int phon_out_size = 0;


@@ -669,6 +668,16 @@ const char *GetTranslatedPhonemeString(int phoneme_mode)
use_ipa = phoneme_mode & 0x10;
use_tie = phoneme_mode & 0x0f;

if(phon_out_buf == NULL)
{
phon_out_size = N_PHON_OUT;
if((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL)
{
phon_out_size = 0;
return("");
}
}

if(use_tie >= 3)
{
// separate individual phonemes with underscores
@@ -676,6 +685,7 @@ const char *GetTranslatedPhonemeString(int phoneme_mode)
use_tie = 0;
}


for(ix=1; ix<(n_phoneme_list-2); ix++)
{
buf = phon_buf;
@@ -904,6 +914,7 @@ int Unpronouncable(Translator *tr, char *word, int posn)
int vowel_posn=9;
int index;
int count;
ALPHABET *alphabet;

utf8_in(&c,word);
if((tr->letter_bits_offset > 0) && (c < 0x241))
@@ -912,6 +923,12 @@ int Unpronouncable(Translator *tr, char *word, int posn)
return(0); // so we can re-translate the word as English
}

if(((alphabet = AlphabetFromChar(c)) != NULL) && (alphabet->offset != tr->letter_bits_offset))
{
// Character is not in our alphabet
return(0);
}

if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1)
return(0);

@@ -2157,6 +2174,13 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
{
match.end_type = SUFX_UNPRON; // $unpron
}
else if(command == 0x02) // $noprefix
{
if(word_flags & FLAG_PREFIX_REMOVED)
failed = 1; // a prefix has been removed
else
add_points = 1;
}
else if((command & 0xf0) == 0x10)
{
// $w_alt
@@ -2921,9 +2945,10 @@ int TransposeAlphabet(Translator *tr, char *text)
int acc;
int pairs_start;
const short *pairs_list;
char buf[N_WORD_BYTES];
int bufix;
char buf[N_WORD_BYTES+1];


p2 = buf;
offset = tr->transpose_min - 1;
min = tr->transpose_min;
max = tr->transpose_max;
@@ -2931,6 +2956,7 @@ int TransposeAlphabet(Translator *tr, char *text)

pairs_start = max - min + 2;

bufix = 0;
do {
p += utf8_in(&c,p);
if(c != 0)
@@ -2939,30 +2965,30 @@ int TransposeAlphabet(Translator *tr, char *text)
{
if(map == NULL)
{
*p2++ = c - offset;
buf[bufix++] = c - offset;
}
else
{
// get the code from the transpose map
if(map[c - min] > 0)
{
*p2++ = map[c - min];
buf[bufix++] = map[c - min];
}
else
{
p2 += utf8_out(c,p2);
all_alpha=0;
break;
}
}
}
else
{
p2 += utf8_out(c,p2);
all_alpha=0;
break;
}
}
} while (c != 0);
*p2 = 0;
} while ((c != 0) && (bufix < N_WORD_BYTES));
buf[bufix] = 0;

if(all_alpha)
{
@@ -3594,7 +3620,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
int end_flags;
const char *p;
int len;
static char ending[12];
char ending[50];

// these lists are language specific, but are only relevent if the 'e' suffix flag is used
static const char *add_e_exceptions[] = {
@@ -3632,7 +3658,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
}

// remove bytes from the end of the word and replace them by spaces
for(i=0; i<len_ending; i++)
for(i=0; (i<len_ending) && (i < sizeof(ending)-1); i++)
{
ending[i] = word_end[i];
word_end[i] = ' ';

+ 26
- 10
src/espeakedit.cpp View File

@@ -43,8 +43,6 @@
#include "translate.h"
#include "prosodydisplay.h"



static const char *about_string2 = "espeakedit: %s\nAuthor: Jonathan Duddington (c) 2009\n\n"
"Licensed under GNU General Public License version 3\n"
"http://espeak.sourceforge.net/";
@@ -93,10 +91,6 @@ int frame_x, frame_y, frame_w, frame_h;

int adding_page = 0; // fix for wxWidgets (2,8,7) bug, adding first page to a wxNotebook gives emptystring for GetPageTex() in Notebook_Page_Changed event.

wxFont FONT_SMALL(8,wxSWISS,wxNORMAL,wxNORMAL);
wxFont FONT_MEDIUM(9,wxSWISS,wxNORMAL,wxNORMAL);
wxFont FONT_NORMAL(10,wxSWISS,wxNORMAL,wxNORMAL);

IMPLEMENT_APP(MyApp)

wxString AppName = _T("espeakedit");
@@ -123,8 +117,8 @@ bool MyApp::OnInit(void)
{//=====================

int j;
wxChar *p;
char param[80];
const wxChar *p;
char param[120];


if(argc > 1)
@@ -186,20 +180,22 @@ if(argc > 1)
SetTopWindow(myframe);
wxInitAllImageHandlers();
// wxImage::AddHandler(wxPNGHandler);
wxLogStatus(_T("Using espeak_data at: ")+wxString(path_home, wxConvLocal));
return TRUE;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_CHAR(MyFrame::OnKey)
EVT_MENU(MENU_ABOUT, MyFrame::OnAbout)
EVT_MENU(MENU_DOCS, MyFrame::OnAbout)
EVT_MENU(MENU_DOCS, MyFrame::OnAbout)
EVT_MENU(MENU_SPECTRUM, MyFrame::OnNewWindow)
EVT_MENU(MENU_SPECTRUM2, MyFrame::OnNewWindow)
EVT_MENU(MENU_PROSODY, MyFrame::OnProsody)
EVT_MENU(MENU_OPT_SPEED, MyFrame::OnOptions)
EVT_MENU(MENU_OPT_PUNCT, MyFrame::OnOptions)
EVT_MENU(MENU_OPT_SPELL, MyFrame::OnOptions)
EVT_MENU(MENU_OPT_SPELL2, MyFrame::OnOptions)
EVT_MENU(MENU_OPT_SPELL2, MyFrame::OnOptions)
EVT_MENU(MENU_PATH_DATA, MyFrame::OnOptions)
EVT_MENU(MENU_PATH0, MyFrame::OnOptions)
EVT_MENU(MENU_PATH1, MyFrame::OnOptions)
EVT_MENU(MENU_PATH2, MyFrame::OnOptions)
@@ -393,6 +389,7 @@ void MyFrame::PageCmd(wxCommandEvent& event)
break;
case SPECTSEQ_SAVEAS:
currentcanvas->Save();
screenpages->SetPageText(screenpages->GetSelection(), currentcanvas->spectseq->name+_T(" ²"));
break;
case SPECTSEQ_SAVESELECT:
currentcanvas->Save(_T(""), 1);
@@ -637,6 +634,20 @@ void OnOptions2(int event_id)
notebook->SetSelection(1);
break;

case MENU_PATH_DATA:
string = wxDirSelector(_T("espeak_data directory"), wxEmptyString);
if(!string.IsEmpty())
{
if(!wxDirExists(string+_T("/voices")))
{
wxLogError(_T("No 'voices' directory in ") + string);
break;
}
path_espeakdata = string;
wxLogMessage(_T("Quit and restart espeakedit to use the new espeak_data location"));
}
break;

case MENU_PATH0:
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(),
_T("phonemes"),_T(""),_T("*"),wxOPEN);
@@ -726,6 +737,7 @@ void MyFrame::OnTools(wxCommandEvent& event)
int debug_flag=0;
char fname_log[sizeof(path_dsource)+12];
char err_fname[sizeof(path_home)+15];
static const char utf8_bom[] = {0xef,0xbb,0xbf,0};

switch(event.GetId())
{
@@ -776,6 +788,10 @@ void MyFrame::OnTools(wxCommandEvent& event)
case MENU_COMPILE_DICT:
sprintf(fname_log,"%s%s",path_dsource,"dict_log");
log = fopen(fname_log,"w");
if(log != NULL)
{
fprintf(log, "%s", utf8_bom);
}

LoadDictionary(translator, translator->dictionary_name, 0);
if((err = CompileDictionary(path_dsource,translator->dictionary_name,log,err_fname,debug_flag)) < 0)

+ 18
- 11
src/event.cpp View File

@@ -22,7 +22,9 @@


//<includes
#ifndef PLATFORM_WINDOWS
#include <unistd.h>
#endif
#include <assert.h>
#include <string.h>
#include <stdlib.h>
@@ -47,6 +49,7 @@ static sem_t my_sem_stop_is_required;
static sem_t my_sem_stop_is_acknowledged;
// my_thread: polls the audio duration and compares it to the duration of the first event.
static pthread_t my_thread;
static bool thread_inited;

static t_espeak_callback* my_callback = NULL;
static int my_event_is_running=0;
@@ -94,16 +97,16 @@ void event_init(void)
assert(-1 != sem_init(&my_sem_stop_is_acknowledged, 0, 0));

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,
(void*)NULL))
{
assert(0);
}

if (pthread_attr_init (&a_attrib) == 0
&& pthread_attr_setdetachstate(&a_attrib, PTHREAD_CREATE_JOINABLE) == 0)
{
thread_inited = (0 == pthread_create(&my_thread,
&a_attrib,
polling_thread,
(void*)NULL));
}
assert(thread_inited);
pthread_attr_destroy(&a_attrib);
}
//>
@@ -126,7 +129,10 @@ ENTER("event_display");
"MARK",
"PLAY",
"END",
"MSG_TERMINATED"
"MSG_TERMINATED",
"PHONEME",
"SAMPLERATE",
"??"
};

SHOW("event_display > event=0x%x\n",event);
@@ -711,7 +717,7 @@ void event_terminate()
{
ENTER("event_terminate");

if (my_thread)
if (thread_inited)
{
pthread_cancel(my_thread);
pthread_join(my_thread,NULL);
@@ -720,6 +726,7 @@ ENTER("event_terminate");
sem_destroy(&my_sem_stop_is_required);
sem_destroy(&my_sem_stop_is_acknowledged);
init(); // purge event
thread_inited = 0;
}
}
//>

+ 1
- 0
src/extras.cpp View File

@@ -1,6 +1,7 @@
/***************************************************************************
* Copyright (C) 2006 to 2011 by Jonathan Duddington *
* email: [email protected] *
* Copyright (C) 2013 by Reece H. Dunn *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *

+ 2
- 0
src/fifo.cpp View File

@@ -22,7 +22,9 @@

//<includes

#ifndef PLATFORM_WINDOWS
#include <unistd.h>
#endif
#include <assert.h>
#include <string.h>
#include <stdlib.h>

+ 9
- 6
src/main.h View File

@@ -110,13 +110,9 @@ extern TranslDlg *transldlg;
extern wchar_t ipa1[256];



extern wxFont FONT_SMALL;
extern wxFont FONT_MEDIUM;
extern wxFont FONT_NORMAL;

enum {
MENU_QUIT = 1,
MENU_OPEN,
MENU_SPECTRUM,
MENU_SPECTRUM2,
MENU_CLOSE_ALL,
@@ -129,6 +125,7 @@ enum {
MENU_OPT_SPELL,
MENU_OPT_SPELL2,
MENU_PATHS,
MENU_PATH_DATA,
MENU_PATH0,
MENU_PATH1,
MENU_PATH2,
@@ -183,5 +180,11 @@ enum {
};



// wxWidgets 3 name changes
#if wxCHECK_VERSION(3, 0, 0)
#define wxOPEN wxFD_OPEN
#define wxSAVE wxFD_SAVE
#define WXK_PRIOR WXK_PAGEUP
#define WXK_NEXT WXK_PAGEDOWN
#endif


+ 52
- 29
src/numbers.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -680,6 +680,25 @@ static unsigned short derived_letters[] = {

static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages


int IsSuperscript(int letter)
{//===========================
// is this a subscript or superscript letter ?
int ix;
int c;

for(ix=0; (c = derived_letters[ix]) != 0; ix+=2)
{
if(c > letter)
break;
if(c == letter)
return(derived_letters[ix+1]);
}
return(0);
}



int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
{//=========================================================================
// get pronunciation for an isolated letter
@@ -736,30 +755,25 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
if(ph_buf[0] == 0)
{
// is this a subscript or superscript letter ?
for(ix=0; (c = derived_letters[ix]) != 0; ix+=2)
if((c = IsSuperscript(letter)) != 0)
{
if(c > letter)
break;
if(c == letter)
letter = c & 0x3fff;
if((control & 4 ) && ((modifier = modifiers[c >> 14]) != NULL))
{
c = derived_letters[ix+1];
letter = c & 0x3fff;
if((modifier = modifiers[c >> 14]) != NULL)
// don't say "superscript" during normal text reading
Lookup(tr, modifier, capital);
if(capital[0] == 0)
{
Lookup(tr, modifier, capital);
if(capital[0] == 0)
capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2
Lookup(translator2, modifier, &capital[3]);
if(capital[3] != 0)
{
capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2
Lookup(translator2, modifier, &capital[3]);
if(capital[3] != 0)
{
capital[0] = phonPAUSE;
capital[1] = phonSWITCH;
len = strlen(&capital[3]);
capital[len+3] = phonSWITCH;
capital[len+4] = phontab_1;
capital[len+5] = 0;
}
capital[0] = phonPAUSE;
capital[1] = phonSWITCH;
len = strlen(&capital[3]);
capital[len+3] = phonSWITCH;
capital[len+4] = phontab_1;
capital[len+5] = 0;
}
}
}
@@ -1157,6 +1171,9 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2]))
return(0); // not '2xx'

if(word[1] == ' ')
return(0); // only one letter, don't speak as a Roman Number

word_start = word;
while((c = *word++) != ' ')
{
@@ -1213,7 +1230,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
p = &ph_out[strlen(ph_roman)];
}

sprintf(number_chars," %d ",acc);
sprintf(number_chars," %d %s ",acc, tr->langopts.roman_suffix);

if(word[0] == '.')
{
@@ -1411,7 +1428,7 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
} // end f LookupThousands


static int LookupNum2(Translator *tr, int value, const int control, char *ph_out)
static int LookupNum2(Translator *tr, int value, int thousandplex, const int control, char *ph_out)
{//=============================================================================
// Lookup a 2 digit number
// control bit 0: ordinal number
@@ -1510,7 +1527,10 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
else
{
// followed by hundreds or thousands etc
sprintf(string,"_%da",value);
if((tr->langopts.numbers2 & NUM2_ORDINAL_AND_THOUSANDS) && (thousandplex <= 1))
sprintf(string, "_%do", value); // LANG=TA
else
sprintf(string, "_%da", value);
found = Lookup(tr, string, ph_digits);
}

@@ -1616,7 +1636,10 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
else if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0))
{
// followed by hundreds or thousands (or tens)
sprintf(string,"_%da",units);
if((tr->langopts.numbers2 & NUM2_ORDINAL_AND_THOUSANDS) && (thousandplex <= 1))
sprintf(string, "_%do", units); // LANG=TA, only for 100s, 1000s
else
sprintf(string, "_%da", units);
found = Lookup(tr, string, ph_digits);
}
}
@@ -1790,7 +1813,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
x = 8; // use variant (feminine) for before thousands and millions
if(tr->translator_name == L('m','l'))
x = 0x208;
LookupNum2(tr, hundreds/10, x, ph_digits);
LookupNum2(tr, hundreds/10, thousandplex, x, ph_digits);
}

if(tr->langopts.numbers2 & 0x200)
@@ -1873,7 +1896,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null

if(say_one_hundred != 0)
{
LookupNum2(tr, hundreds, 0, ph_digits);
LookupNum2(tr, hundreds, thousandplex, 0, ph_digits);
}
}
}
@@ -1932,7 +1955,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
x |= 0x208; // use #f form for both tens and units
}

if(LookupNum2(tr, tensunits, x | (control & 0x100), buf2) != 0)
if(LookupNum2(tr, tensunits, thousandplex, x | (control & 0x100), buf2) != 0)
{
if(tr->langopts.numbers & NUM_SINGLE_AND)
ph_hundred_and[0] = 0; // don't put 'and' after 'hundred' if there's 'and' between tens and units
@@ -2360,7 +2383,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
{
// speak any remaining decimal fraction digits individually
value = word[n_digits++] - '0';
LookupNum2(tr, value, 2, buf1);
LookupNum2(tr, value, 0, 2, buf1);
len = strlen(ph_out);
sprintf(&ph_out[len],"%c%s", phonEND_WORD, buf1);
}

+ 8
- 0
src/options.cpp View File

@@ -39,6 +39,7 @@ extern int GetNumeric(wxTextCtrl *t);
extern void SetNumeric(wxTextCtrl *t, int value);
extern int samplerate;

wxString path_espeakdata;
wxString path_spectload;
wxString path_spectload2;
wxString path_pitches;
@@ -178,6 +179,12 @@ void ConfigInit(bool use_defaults)
}
else
{
pConfig->Read(_T("/espeakdata"),&path_espeakdata,wxEmptyString);
if(path_espeakdata != wxEmptyString)
{
strcpy(path_home, path_espeakdata.mb_str(wxConvLocal));
}

pConfig->Read(_T("/spectload"),&path_spectload,basedir+_T("/phsource"));
pConfig->Read(_T("/spectload2"),&path_spectload2,basedir+_T("/phsource"));
pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch"));
@@ -210,6 +217,7 @@ void ConfigSave(int exit)
#ifndef PLATFORM_WINDOWS
// pConfig->Write(_T("/samplerate"),samplerate);
#endif
pConfig->Write(_T("/espeakdata"),path_espeakdata);
pConfig->Write(_T("/spectload"),path_spectload);
pConfig->Write(_T("/spectload2"),path_spectload2);
pConfig->Write(_T("/pitchpath"),path_pitches);

+ 0
- 0
src/options.h View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save