Browse Source

espeak 1.48.11

 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUA1K3AAoJENv8icfo4dtDGJsQAI6bdUhdswRrquQVk3tAXui0
 ZhJprK/0J1VYT5FAo5vlYUdrxiozWQlcJprsbKnF4NmMPkBDTZvde9Q5iKBZy58f
 MvTBlD36XEqEcxspzxWNoST3XPZp/oUB9l9q5oA2IRwz649ABd7s12bv/NSdrXwC
 MgqZ5JO4TLvTk/a2eexoX6QSjRv09JLTfqeS945BrezbZJkf3t+UgVSe4qH0yQb9
 2tr0cpHvGrFOKmN+DPOpmR6epM/jdMFGvAifLnv9ux/KnmAV7CmyTfBvurZDBkHg
 JN8rP73o8I+3NSjP8gobqRp7baWdp8HV/AmDhRZ2oAV+c2zI5+qrr6/fAenHvDjJ
 N0OTIf7oUG1KH0OMBVLXav8j7lsU6iJWTxWVC7wBqlf3cyxozCMND92nsiMcEyHe
 KMQTut69jgWOOt4IDx6BQtjvTdLrGx+utF0Y80gZnWeJdi7ifgg5qkt8+ZQIIkr2
 jM9E6PghmanASHCXGXjOGmenRyAkSYdufWND+hUd0CtYoc/ShbE+XqigzhxTWD2L
 PN1y+DEQhxEZxU35jDvEZcJFb3aP8eNMKcTxQvDH7a4QpF7evzjvuLIubFYGEoEy
 lUuTjtbZJSxYEVPSnbHxNon+y4R7hp22C+ZJINKgjdKKMeAvgtszHCTmy+myzKhM
 K/tWXLPAUsP6/dDz3v23
 =71rY
 -----END PGP SIGNATURE-----

Merge tag '1.48.11' into android

espeak 1.48.11

Conflicts:
	Makefile.am
master
Reece H. Dunn 10 years ago
parent
commit
c006d1c696
77 changed files with 1426 additions and 814 deletions
  1. 1
    0
      .gitignore
  2. 185
    1
      Makefile.am
  3. 1
    1
      autogen.sh
  4. 84
    32
      dictsource/en_list
  5. 82
    48
      dictsource/en_rules
  6. 190
    132
      dictsource/eu_list
  7. 250
    147
      dictsource/eu_rules
  8. 1
    1
      dictsource/pl_rules
  9. 47
    17
      dictsource/pt_list
  10. 59
    76
      dictsource/pt_rules
  11. 1
    0
      dictsource/ta_list
  12. 5
    0
      dictsource/ta_rules
  13. 13
    8
      docs/commands.html
  14. BIN
      espeak-data/mbrola_ph/af1_phtrans
  15. BIN
      espeak-data/mbrola_ph/ca1_phtrans
  16. BIN
      espeak-data/mbrola_ph/cr1_phtrans
  17. BIN
      espeak-data/mbrola_ph/cs_phtrans
  18. BIN
      espeak-data/mbrola_ph/de2_phtrans
  19. BIN
      espeak-data/mbrola_ph/de4_phtrans
  20. BIN
      espeak-data/mbrola_ph/de6_phtrans
  21. BIN
      espeak-data/mbrola_ph/ee1_phtrans
  22. BIN
      espeak-data/mbrola_ph/en1_phtrans
  23. BIN
      espeak-data/mbrola_ph/es_phtrans
  24. BIN
      espeak-data/mbrola_ph/fr1_phtrans
  25. BIN
      espeak-data/mbrola_ph/gr2_phtrans
  26. BIN
      espeak-data/mbrola_ph/grc-de6_phtrans
  27. BIN
      espeak-data/mbrola_ph/hn1_phtrans
  28. BIN
      espeak-data/mbrola_ph/hu1_phtrans
  29. BIN
      espeak-data/mbrola_ph/ic1_phtrans
  30. BIN
      espeak-data/mbrola_ph/id1_phtrans
  31. BIN
      espeak-data/mbrola_ph/in1_phtrans
  32. BIN
      espeak-data/mbrola_ph/ir1_phtrans
  33. BIN
      espeak-data/mbrola_ph/it3_phtrans
  34. BIN
      espeak-data/mbrola_ph/la1_phtrans
  35. BIN
      espeak-data/mbrola_ph/lt1_phtrans
  36. BIN
      espeak-data/mbrola_ph/lt2_phtrans
  37. BIN
      espeak-data/mbrola_ph/mx1_phtrans
  38. BIN
      espeak-data/mbrola_ph/mx2_phtrans
  39. BIN
      espeak-data/mbrola_ph/nl_phtrans
  40. BIN
      espeak-data/mbrola_ph/pl1_phtrans
  41. BIN
      espeak-data/mbrola_ph/pt1_phtrans
  42. BIN
      espeak-data/mbrola_ph/pt_phtrans
  43. BIN
      espeak-data/mbrola_ph/ptbr4_phtrans
  44. BIN
      espeak-data/mbrola_ph/ptbr_phtrans
  45. BIN
      espeak-data/mbrola_ph/ro1_phtrans
  46. BIN
      espeak-data/mbrola_ph/sv2_phtrans
  47. BIN
      espeak-data/mbrola_ph/sv_phtrans
  48. BIN
      espeak-data/mbrola_ph/tr1_phtrans
  49. BIN
      espeak-data/mbrola_ph/us3_phtrans
  50. BIN
      espeak-data/mbrola_ph/us_phtrans
  51. BIN
      espeak-data/mbrola_ph/vz_phtrans
  52. 0
    0
      espeak-data/voices/europe/eu
  53. 23
    0
      mkdictlist
  54. 2
    0
      phsource/mbrola/de6
  55. 167
    186
      phsource/ph_basque
  56. 4
    3
      phsource/ph_english
  57. 2
    2
      phsource/ph_english_us
  58. 1
    17
      phsource/ph_tamil
  59. 2
    1
      phsource/phonemes
  60. BIN
      phsource/ufric/ts_eu.wav
  61. BIN
      phsource/ufric/tz_eu.wav
  62. BIN
      phsource/ufric/z_eu.wav
  63. 11
    3
      src/compiledata.cpp
  64. 18
    3
      src/compiledict.cpp
  65. 54
    45
      src/dictionary.cpp
  66. 86
    17
      src/espeak.cpp
  67. 12
    1
      src/espeakedit.cpp
  68. 52
    13
      src/speak.cpp
  69. 19
    15
      src/speak_lib.cpp
  70. 24
    15
      src/speak_lib.h
  71. 1
    2
      src/synth_mbrola.cpp
  72. 8
    2
      src/synthdata.cpp
  73. 3
    7
      src/synthesize.cpp
  74. 8
    6
      src/tr_languages.cpp
  75. 3
    3
      src/translate.cpp
  76. 2
    3
      src/translate.h
  77. 5
    7
      src/transldlg.cpp

+ 1
- 0
.gitignore View File

espeak-data/dictsource espeak-data/dictsource
espeak-data/phsource espeak-data/phsource
espeak-data/*_dict espeak-data/*_dict
espeak-data/mbrola_ph/*_phtrans
espeak-data/intonations espeak-data/intonations
espeak-data/phondata espeak-data/phondata
espeak-data/phondata-manifest espeak-data/phondata-manifest

+ 185
- 1
Makefile.am View File



##### standard build actions: ##### standard build actions:


all: jni espeakdata apk-release
all-local: jni espeakdata apk-release


uninstall-hook: uninstall-hook:
rm -rf $(DESTDIR)$(DATADIR) rm -rf $(DESTDIR)$(DATADIR)
espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra
endif endif
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zhy && cd .. cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zhy && cd ..

##### mbrola:

mbrola: \
espeak-data/mbrola_ph/af1_phtrans \
espeak-data/mbrola_ph/cr1_phtrans \
espeak-data/mbrola_ph/cs_phtrans \
espeak-data/mbrola_ph/de2_phtrans \
espeak-data/mbrola_ph/de4_phtrans \
espeak-data/mbrola_ph/de6_phtrans \
espeak-data/mbrola_ph/ee1_phtrans \
espeak-data/mbrola_ph/en1_phtrans \
espeak-data/mbrola_ph/es_phtrans \
espeak-data/mbrola_ph/fr1_phtrans \
espeak-data/mbrola_ph/gr2_phtrans \
espeak-data/mbrola_ph/grc-de6_phtrans \
espeak-data/mbrola_ph/hn1_phtrans \
espeak-data/mbrola_ph/hu1_phtrans \
espeak-data/mbrola_ph/ic1_phtrans \
espeak-data/mbrola_ph/id1_phtrans \
espeak-data/mbrola_ph/in1_phtrans \
espeak-data/mbrola_ph/ir1_phtrans \
espeak-data/mbrola_ph/it3_phtrans \
espeak-data/mbrola_ph/la1_phtrans \
espeak-data/mbrola_ph/lt1_phtrans \
espeak-data/mbrola_ph/lt2_phtrans \
espeak-data/mbrola_ph/mx1_phtrans \
espeak-data/mbrola_ph/mx2_phtrans \
espeak-data/mbrola_ph/nl_phtrans \
espeak-data/mbrola_ph/pl1_phtrans \
espeak-data/mbrola_ph/pt1_phtrans \
espeak-data/mbrola_ph/ptbr_phtrans \
espeak-data/mbrola_ph/ptbr4_phtrans \
espeak-data/mbrola_ph/ro1_phtrans \
espeak-data/mbrola_ph/sv_phtrans \
espeak-data/mbrola_ph/sv2_phtrans \
espeak-data/mbrola_ph/tr1_phtrans \
espeak-data/mbrola_ph/us_phtrans \
espeak-data/mbrola_ph/us3_phtrans \
espeak-data/mbrola_ph/vz_phtrans

espeak-data/mbrola_ph/af1_phtrans: phsource/mbrola/af1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/cr1_phtrans: phsource/mbrola/cr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/cs_phtrans: phsource/mbrola/cs src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/de2_phtrans: phsource/mbrola/de2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/de4_phtrans: phsource/mbrola/de4 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/de6_phtrans: phsource/mbrola/de6 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ee1_phtrans: phsource/mbrola/ee1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/en1_phtrans: phsource/mbrola/en1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/es_phtrans: phsource/mbrola/es src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/fr1_phtrans: phsource/mbrola/fr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/gr2_phtrans: phsource/mbrola/gr2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/grc-de6_phtrans: phsource/mbrola/grc-de6 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/hn1_phtrans: phsource/mbrola/hn1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/hu1_phtrans: phsource/mbrola/hu1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ic1_phtrans: phsource/mbrola/ic1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/id1_phtrans: phsource/mbrola/id1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/in1_phtrans: phsource/mbrola/in1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ir1_phtrans: phsource/mbrola/ir1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/it3_phtrans: phsource/mbrola/it3 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/la1_phtrans: phsource/mbrola/la1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/lt1_phtrans: phsource/mbrola/lt1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/lt2_phtrans: phsource/mbrola/lt2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/mx1_phtrans: phsource/mbrola/mx1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/mx2_phtrans: phsource/mbrola/mx2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/nl_phtrans: phsource/mbrola/nl src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/pl1_phtrans: phsource/mbrola/pl1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/pt1_phtrans: phsource/mbrola/pt1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ptbr_phtrans: phsource/mbrola/ptbr src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ptbr4_phtrans: phsource/mbrola/ptbr4 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/ro1_phtrans: phsource/mbrola/ro1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/sv_phtrans: phsource/mbrola/sv src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/sv2_phtrans: phsource/mbrola/sv2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/tr1_phtrans: phsource/mbrola/tr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/us_phtrans: phsource/mbrola/us src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/us3_phtrans: phsource/mbrola/us3 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

espeak-data/mbrola_ph/vz_phtrans: phsource/mbrola/vz src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<

+ 1
- 1
autogen.sh View File

mkdir -p m4 mkdir -p m4
touch AUTHORS touch AUTHORS
touch NEWS touch NEWS
ln -svf README.md README
ln -sf README.md README


if [ -d .git ] ; then if [ -d .git ] ; then
git submodule update --init --recursive || exit 1 git submodule update --init --recursive || exit 1

+ 84
- 32
dictsource/en_list View File

// ?8 Use full vowel, not schwa in some word endings // ?8 Use full vowel, not schwa in some word endings




// $alt1 use strong ending (-age, -an, -ance, -ative, -table, -ed, -eria, -et, -inal, -ier -mouth -on -or -ored, -ose, -s)
// $alt1 use strong ending (-age, -an, -ance, -ate, -ative, -table, -ed, -eria, -et, -inal, -ier -mouth -on -or -ored, -ose, -s)
// $alt2 use weak ending (ace, ain, an, ar*, ard, ate, ath, ell, ery, ess, et, ie, ile, ine, men, on, ot) // $alt2 use weak ending (ace, ain, an, ar*, ard, ate, ath, ell, ery, ess, et, ie, ile, ine, men, on, ot)
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#]
// $alt4 separate 'h', not 'th' 'ph' 'sh'; [t2] not [t] // $alt4 separate 'h', not 'th' 'ph' 'sh'; [t2] not [t]
?7 _17 s'@v@nti:n ?7 _17 s'@v@nti:n
_18 'eIti:n _18 'eIti:n
_19 n'aInti:n _19 n'aInti:n
_2X tw'Ent2i
_3X T'3:ti
?5 _3X T'IRti
_4X f'o@ti
_5X f'Ifti
_6X s'Iksti
_7X s'Ev@nti
?7 _7X s'@v@nti
_8X 'eIti
_9X n'aInti
_2X tw'Ent2i||
_3X T'3:ti||
?5 _3X T'IRti||
_4X f'o@ti||
_5X f'Ifti||
_6X s'Iksti||
_7X s'Ev@nti||
?7 _7X s'@v@nti||
_8X 'eIti||
_9X n'aInti||


_0C h'Vndr@d _0C h'Vndr@d
_0M1 T'aUz@nd _0M1 T'aUz@nd
ati $abbrev ati $abbrev
atk $abbrev atk $abbrev
atm $abbrev atm $abbrev
atv $abbrev
avc $abbrev avc $abbrev
avg $abbrev avg $abbrev
awol eIw0l awol eIw0l
anemone a#nEm@ni anemone a#nEm@ni
anemometer anIm'0mI2t3 anemometer anIm'0mI2t3
anesthetize $alt3 anesthetize $alt3
antacid $2
anew a#nju: anew a#nju:
?3 anew a#nu: ?3 anew a#nu:
anime anImeI anime anImeI
ayuh a#j'@ ayuh a#j'@
ayup a#jVp ayup a#jVp


backdate $2
backend bak'End backend bak'End
backstory baksto@ri backstory baksto@ri
badmouth $alt1 badmouth $alt1
battalion $alt3 battalion $alt3
bazaar $alt3 bazaar $alt3
bazooka ba#zu:k@ bazooka ba#zu:k@
beating bi:tIN
bedouin bEdu:I#n bedouin bEdu:I#n
beige beIZ beige beIZ
belisha b@l'i:S@ belisha b@l'i:S@
biased baI@st biased baI@st
bible baIb@L bible baIb@L
bidet bi:deI bidet bi:deI
bifurcate $1
bigot bIg@t // -ed bigot bIg@t // -ed
bijou bi:Zu: bijou bi:Zu:
bikini bIk'i:ni bikini bIk'i:ni
caliche ka#li:tSi caliche ka#li:tSi
caliph $alt6 caliph $alt6
calix $alt6 calix $alt6
callous kal@s // -ed
calv kA:v // for calved, calving calv kA:v // for calved, calving
?3 calv kav // for calved, calving ?3 calv kav // for calved, calving
calve kA:v calve kA:v
?3 cashmere kaZmi@3 ?3 cashmere kaZmi@3
casino $alt3 casino $alt3
cassette $alt3 cassette $alt3
castrate $2
catastrophe $alt3 catastrophe $alt3
catastrophic kat@str'0fIk catastrophic kat@str'0fIk
catarrh k@tA@ catarrh k@tA@
ceres si@ri:z ceres si@ri:z
cerise s@ri:z cerise s@ri:z
?3 certain s3:?n- ?3 certain s3:?n-
certificate s3tIfIk@t
certificate s3tIfIk@t $onlys
cerulean $alt3 cerulean $alt3
c'est seI $u c'est seI $u
chagrin SagrIn chagrin SagrIn
coquina koUk'i:n@ coquina koUk'i:n@
conquistador k0nk'i:st@do@ conquistador k0nk'i:st@do@
conscience k0nS@ns conscience k0nS@ns
console k@nsoUl $verb
consort $1 consort $1
consort $verb consort $verb
construct $1 $onlys construct $1 $onlys
context $1 context $1
contract $1 $onlys contract $1 $onlys
contract $verb contract $verb
contrail k0ntreIl
contralto k@ntr'altoU contralto k@ntr'altoU
contraption k@ntr'apS@n contraption k@ntr'apS@n
contrary k0ntr@ri contrary k0ntr@ri
début debut $text début debut $text
decade dEkeId decade dEkeId
decaf di:kaf decaf di:kaf
decane dEkeIn
decedent dI#si:d@nt decedent dI#si:d@nt
decent di:s@nt decent di:s@nt
decibel dEsI#b@L decibel dEsI#b@L
deficit dEfI2sIt deficit dEfI2sIt
definitive dI2fInI2tIv definitive dI2fInI2tIv
?!3 defragment di:fragm'Ent ?!3 defragment di:fragm'Ent
degas di:g'as
degenerate $alt2 $noun degenerate $alt2 $noun
dego deIgoU dego deIgoU
deice di:'aIs deice di:'aIs
descant dEskant descant dEskant
descry dI2skreI descry dI2skreI
desert dI2z3:t desert dI2z3:t
desert dEs3t $only
desert dI2z3:t $verb
desolate dEs@l@t
desert dEs3t $only
desert dI2z3:t $verb
desolate dEs@l@t $only
desperate $alt2 desperate $alt2
?3 detail $2 ?3 detail $2
detante deIt'0nt detante deIt'0nt
dismal dIzm@l dismal dIzm@l
disparate dIsp@r@t disparate dIsp@r@t
disreputable $2 disreputable $2
dissipate $1
distributor $2 distributor $2
distro dIstroU distro dIstroU
disuse dIs'ju:s disuse dIs'ju:s
driest draI|@st driest draI|@st
duet dju:'Et duet dju:'Et
dugout dVgaUt dugout dVgaUt
dumber dVm3
dumbest dVm@st
dungaree dVNga#r'i: dungaree dVNga#r'i:
?!3 dupe dju:p ?!3 dupe dju:p
duress $2 duress $2
eid i:d eid i:d
eke i:k eke i:k
el ,El $only el ,El $only
electricity I2lEktr'IsI2ti
electrode I2lEktroUd
electron I2lEktr0n
electrocute $2
elicit I2lIsI2t
electrode I#lEktroUd
elicit I#lIsI#t
élite Il'i:t élite Il'i:t
elixir I2lIks3
elixir I#lIks3
embed Emb'Ed embed Emb'Ed
ember Emb3 ember Emb3
embole $1 // embolism embole $1 // embolism
ensemble 0ns'0mb@L ensemble 0ns'0mb@L
entendre 0nt'0ndr@- entendre 0nt'0ndr@-
entente 0nt'0nt entente 0nt'0nt
entirity Ent'aI3I#ti
entourage 0nt2UrA:Z entourage 0nt2UrA:Z
entrail $1 entrail $1
entrance $1 $onlys entrance $1 $onlys
epub $alt6 epub $alt6
equal i:kw@L equal i:kw@L
equation I2kweIZ@n equation I2kweIZ@n
equilibrate $2
equipage EkwIpIdZ equipage EkwIpIdZ
equivocal I2kwIv@k@L equivocal I2kwIv@k@L
erase I2reIz // erasing erases erase I2reIz // erasing erases
etiquette $1 etiquette $1
?3 etiquette EtI#k@t ?3 etiquette EtI#k@t
euclidean ju:kl'Idi:|@n euclidean ju:kl'Idi:|@n
eunuch ju:m@k
eunuch ju:n@k
euphemism ju:f@mIz@m euphemism ju:f@mIz@m
eureka ju:'ri:ka# eureka ju:'ri:ka#
europa jU@r'oUp@ europa jU@r'oUp@
evit EvI2t // inevitable evit EvI2t // inevitable
exactement Egzakt@m'A~ exactement Egzakt@m'A~
exalt Egz'0lt exalt Egz'0lt
exculpate $1
excuses Ekskj'u:sI#z excuses Ekskj'u:sI#z
execute EksI2kju:t // not $2 execute EksI2kju:t // not $2
executable $3 executable $3
expertise Eksp3t'i:z expertise Eksp3t'i:z
expletive Ekspl'i:tIv expletive Ekspl'i:tIv
?3 expletive EksplI#tIv ?3 expletive EksplI#tIv
explicate $1
exploit $1 $onlys exploit $1 $onlys
exploit $verb exploit $verb
expo $1 expo $1
exponential Eksp@n'EnS@L exponential Eksp@n'EnS@L
export $1 $onlys export $1 $onlys
export $verb export $verb
expurgate $1
extirpate $1
extract $1 $onlys extract $1 $onlys
extract $1 $only extract $1 $only
extract $2 $verb extract $2 $verb
favourites feIv@-rI2ts favourites feIv@-rI2ts
fedora fI2d'o@r@ fedora fI2d'o@r@
feisty faIsti feisty faIsti
fellate $2
feline fi:laIn feline fi:laIn
felon $alt2 felon $alt2
feminine fEm@nIn feminine fEm@nIn
fiery faI3ri fiery faI3ri
?3 filet fI2leI ?3 filet fI2leI
?3 fillet fI2leI ?3 fillet fI2leI
filtrate $2 $verb
finale fI2nA:li finale fI2nA:li
finance faInans $only finance faInans $only
finance $verb finance $verb
foothold fUthoUld foothold fUthoUld
forage f0rI2dZ forage f0rI2dZ
force fo@s force fo@s
forearmed $2
foreknowledge $2 foreknowledge $2
forensic f@rEnsIk forensic f@rEnsIk
foreshadow $2 foreshadow $2
gui gu:i $onlys gui gu:i $onlys
guinea gIni guinea gIni
gurus gu:ru:z gurus gu:ru:z
?!3 gyrate $2


habitual $alt3 habitual $alt3
hacienda hA:sI'End@ hacienda hA:sI'End@
hula hu:l@ hula hu:l@
hullabaloo hVl@b@lu: hullabaloo hVl@b@lu:
humane $2 humane $2
hundred hVndr@d
hunger hVNg3 hunger hVNg3
hungover $2 hungover $2
hurrah h@rA: hurrah h@rA:
huzza h@z'A: huzza h@z'A:
huzzah h@z'A: huzzah h@z'A:
hydrangea haIdr'eIndZ@ hydrangea haIdr'eIndZ@
hydrate $2 $verb
hyperbola haIp'3:b@l@ hyperbola haIp'3:b@l@
hyperbole haIp'3:b@li hyperbole haIp'3:b@li
hypercube $1 hypercube $1
imagine I2madZI2n imagine I2madZI2n
imbecile ImbI2si:l imbecile ImbI2si:l
?3 imbecile Imb@s@L ?3 imbecile Imb@s@L
immolate $1
impedance Imp'i:d@ns impedance Imp'i:d@ns
imperative Imp'Er@tIv imperative Imp'Er@tIv
imperfect Imp'3:fEkt imperfect Imp'3:fEkt
inherit Inh'ErIt // inherited inherit Inh'ErIt // inherited
innard In3d innard In3d
inner In3 inner In3
innervate In3:veIt
innovative In@veItIv innovative In@veItIv
impetus Imp@t@s impetus Imp@t@s
?3 inquiry Inkw@ri ?3 inquiry Inkw@ri
laborious $alt3 laborious $alt3
labyrinth lab3InT labyrinth lab3InT
labyrinthine lab3'InTi:n labyrinthine lab3'InTi:n
lactate $2 $verb
lascivious $alt3 lascivious $alt3
lager lA:g3 lager lA:g3
lagoon $alt3 lagoon $alt3
laser $alt6 laser $alt6
lasso las'u: lasso las'u:
?3 lasso lasoU ?3 lasso lasoU
latex $alt4
latrine $alt3 latrine $alt3
latte lA:t2eI latte lA:t2eI
?3 launch lA:ntS ?3 launch lA:ntS
lidar laIdA@ lidar laIdA@
lien li:@n lien li:@n
lier laI3 // outlier lier laI3 // outlier
ligate li:geIt
ligate $2
?3 ligate laIgeIt
lightning laItnIN lightning laItnIN
lilac laIl@k lilac laIl@k
lily lIli lily lIli
opposer @poUz3 opposer @poUz3
opus oUp@s opus oUp@s
orange 0rI2ndZ orange 0rI2ndZ
orate $2
ordeal O@d'i@l ordeal O@d'i@l
oregano 0rIg'A:noU oregano 0rIg'A:noU
organelle O@g@n'El organelle O@g@n'El
panchakarma $alt3 $3 panchakarma $alt3 $3
panchayat pa#ntSaI@t panchayat pa#ntSaI@t
pancreas pankri@s pancreas pankri@s
palpate $2
papaya pa#paI;@ papaya pa#paI;@
papyrus pa#paIr@s papyrus pa#paIr@s
parabola p@rab@l@ parabola p@rab@l@
plaid plad plaid plad
?3 plateau $2 ?3 plateau $2
platoon $alt3 platoon $alt3
playtest pleItEst
playa plaI@
playtest $alt1
plaza plA:z@ plaza plA:z@
plebeian pl@b'i:@n plebeian pl@b'i:@n
plethora plET3r@ plethora plET3r@
plumber plVm3 plumber plVm3
plus plVs plus plVs
pois pwA: $only pois pwA: $only
poly p0lI
poleaxe poUlaks
politer p@l'aIt3 politer p@l'aIt3
politic p0l@tIk $onlys politic p0l@tIk $onlys
poll poUl poll poUl
poly p0lI
polyamide p0lI'eImaId polyamide p0lI'eImaId
polyester p0lI'Est3 polyester p0lI'Est3
polygon $alt1
?3 polygon $alt1
polythene $1 polythene $1
porcelain $alt2 porcelain $alt2
populace $alt2 populace $alt2
poseidon p@saId@n poseidon p@saId@n
posse p0si posse p0si
postage poUstI2dZ postage poUstI2dZ
postdate $2
practise praktI2s practise praktI2s
prayer pre@ prayer pre@
precedence prEsI2d@ns precedence prEsI2d@ns
project $verb project $verb
promenade pr0m@n'A:d promenade pr0m@n'A:d
pronoun proUnaUn pronoun proUnaUn
propranolol proUpr'an@l0l
prostrate $2 $verb
protege pr0t@ZeI protege pr0t@ZeI
?3 protege proUt@ZeI ?3 protege proUt@ZeI
protegé protege $text protegé protege $text
python paIT@n python paIT@n
pyramidal pI2r'amId@L pyramidal pI2r'amId@L


qua kwA:
qaeda kaId@ qaeda kaId@
quadrilateral $3 quadrilateral $3
quash kw0S quash kw0S
sclera skli@r sclera skli@r
scourge sk3:dZ scourge sk3:dZ
?5 scourge skVRdZ ?5 scourge skVRdZ
scrapheap $alt4
scrotum skroUt@m scrotum skroUt@m
scuba sku:b@ scuba sku:b@
seabed si:bEd seabed si:bEd
suave swA:v suave swA:v
subcategory $2 // U.S ? subcategory $2 // U.S ?
subcontinent $2 subcontinent $2
subject sVbdZ'Ekt $verb
// subject sVbdZ'Ekt $verb
sublevel sVblEv@L
sublime $2 sublime $2
submenu s'Vbm,Enju: submenu s'Vbm,Enju:
subordinate $2 subordinate $2
subordinate $alt1 $verb
subpoena su:p'i:n@ subpoena su:p'i:n@
subsequent sVbsI2kw@nt subsequent sVbsI2kw@nt
subside s@bsaId subside s@bsaId
subtly sVt@lI $verbf subtly sVt@lI $verbf
subvocal sVbv'oUk@L subvocal sVbv'oUk@L
succinct s@ksINkt
succumb s@kVm
sucrose su:kroUs sucrose su:kroUs
suede sweId suede sweId
suerte swe@rteI // -ed, -es suerte swe@rteI // -ed, -es
suite swi:t $onlys suite swi:t $onlys
superb su:p'3:b superb su:p'3:b
superfluous su:p'3:flu:@s superfluous su:p'3:flu:@s
superheat $3
supernal su:p'3:n@L supernal su:p'3:n@L
superstructure $1 superstructure $1
supplier s@plaI3 supplier s@plaI3
taoiseach ti:S@x taoiseach ti:S@x
tapestry tap@stri tapestry tap@stri
tarantula t@rantS@l@ tarantula t@rantS@l@
tardis $alt1
tariff tarIf tariff tarIf
tase teIz tase teIz
taskforce t'askf,o@s taskforce t'askf,o@s
trilogy trIl@dZi trilogy trIl@dZi
trio tri:oU trio tri:oU
triplicate $alt2 triplicate $alt2
triplicate $verb
trisquel trIsk'El trisquel trIsk'El
triumphant $2 triumphant $2
trois twA: trois twA:
utan u:t'an utan u:t'an
utensil ju:t'Ens@L utensil ju:t'Ens@L


?!3 vacate $2
vaccine $2 vaccine $2
valet valeI valet valeI
?3 valet val'eI ?3 valet val'eI
whatsoe're w02tsoU'e@ whatsoe're w02tsoU'e@
wheelbarrow w'i:l_b,aroU wheelbarrow w'i:l_b,aroU
?2 wheelbarrow w#'i:l_b,aroU ?2 wheelbarrow w#'i:l_b,aroU
whereas we@'az
?2 whereas w#e@'az
whereas we@az
?2 whereas w#e@az
wherewithal we@wIDO:l wherewithal we@wIDO:l
?2 wherewithal w#e@wIDO:l ?2 wherewithal w#e@wIDO:l
whew fju: whew fju:
Faroe fe@roU Faroe fe@roU
Faroes fe@roUz Faroes fe@roUz
Fermanagh f3:m'an@ Fermanagh f3:m'an@
Flores flo@rIz
Folkestone foUkstoUn Folkestone foUkstoUn
Fuego fweIgoU Fuego fweIgoU
Gabon gab0n Gabon gab0n
Joachim dZoU@kIm Joachim dZoU@kIm
Johann joUhA#n Johann joUhA#n
Jonah dZoUn@ Jonah dZoUn@
Jolene $alt3
Jorge ho@heI Jorge ho@heI
José hoUs'eI José hoUs'eI
Jose hoUs'eI Jose hoUs'eI
(da vinci) da#vIntSi (da vinci) da#vIntSi
Dante dA:nt2eI Dante dA:nt2eI
?3 Datsun dA:ts@n ?3 Datsun dA:ts@n
Degas deIgA: $capital
Desiree dI2zi@reI Desiree dI2zi@reI
?3 Desiree dEz@r'eI ?3 Desiree dEz@r'eI
Deslauriers dI2lo@rIeI Deslauriers dI2lo@rIeI
Gibson gIbs@n Gibson gIbs@n
Godzilla g0dz'Il@ Godzilla g0dz'Il@
Goliath $alt3 Goliath $alt3
Gogh g0x
?3 Gogh goU
Grigio gri:Z'oU Grigio gri:Z'oU
Guinness gInIs Guinness gInIs
Gutierrez gu:tj'ErEz Gutierrez gu:tj'ErEz
Jonese dZoUnz // Joneses Jonese dZoUnz // Joneses
Kapoor $2 Kapoor $2
Kawasaki kaU|@s'A:ki Kawasaki kaU|@s'A:ki
Kendell kEnd@L
Kendall $alt2
Kendell $alt2
Khrushchev kru:stSEf Khrushchev kru:stSEf
Khruschev kru:stSEf Khruschev kru:stSEf
Kroger kroUg3 Kroger kroUg3
Versace v3sA:tSi Versace v3sA:tSi
Vicodin vaIk@dI#n Vicodin vaIk@dI#n
Volkswagen v'oUlksv,A:g@n Volkswagen v'oUlksv,A:g@n
Vries vri:s
Wegener veIg@n3 Wegener veIg@n3
Wii wi:: Wii wi::
Wiimote wi:moUt Wiimote wi:moUt
has %ha#z $pastf $only has %ha#z $pastf $only
has haz $only $atend has haz $only $atend
(has been) %ha#z%bIn $pastf (has been) %ha#z%bIn $pastf
(has-been) hazbi:n
(has to) haztu: $atend (has to) haztu: $atend
(has not) h@zn%0t $pastf (has not) h@zn%0t $pastf
(has not) ha#zn0t $pastf $atend (has not) ha#zn0t $pastf $atend
(had it) h,adI2t (had it) h,adI2t
(had them) h,adDEm (had them) h,adDEm
(had one) hadwVn $atend (had one) hadwVn $atend
(had any) h,ad||Eni
(had any) h,ad||,Eni
(had some) h,ad||sVm (had some) h,ad||sVm
having ,havIN $strend2 $pastf $only having ,havIN $strend2 $pastf $only
haven't hav@-nt $pastf haven't hav@-nt $pastf
thou DaU thou DaU
thy ,DaI thy ,DaI
thine DaIn $u+ thine DaIn $u+
thyself DaIs'Elf


(i had) aI||h'ad $atend (i had) aI||h'ad $atend
(he had) hi:||h'ad $atend (he had) hi:||h'ad $atend

+ 82
- 48
dictsource/en_rules View File

v) ac (a eIk v) ac (a eIk
ac (cent ak ac (cent ak
ac (centu %ak ac (centu %ak
accessi aks'Es@
accessib aks'Es@b
acci (_ 'A:tSi acci (_ 'A:tSi
ac (cid ak ac (cid ak
acc (ol ak acc (ol ak
ach (rom ak ach (rom ak
ac (id_ as ac (id_ as
_) ac (i a#s _) ac (i a#s
acial eIS@L
acious 'eIS@s acious 'eIS@s
_) ack ak _) ack ak
_) ack (n a#k _) ack (n a#k
ad (vert_ ad ad (vert_ ad
ad (vert a#d ad (vert a#d
_) advo adv@ _) advo adv@
_gr) ad (a eId
hex) ad (e ad hex) ad (e ad
torn) ad eId torn) ad eId
_r) ad (L03 eId _r) ad (L03 eId
_) ai (z aI _) ai (z aI


.group al .group al
&) al (X$w_alt2++ @L
_) ale (C_ alI2 _) ale (C_ alI2
@ic) al (_S2 @L @ic) al (_S2 @L
_) al (@ a#l _) al (@ a#l
al (mig %0l al (mig %0l
_) al (ms A: _) al (ms A:
&) alo (_ @loU &) alo (_ @loU
h) alo (gena a#l0
&) al (ous_ @l &) al (ous_ @l
_) al (p al _) al (p al
alpha alf@ alpha alf@
_n) arr (at a#r _n) arr (at a#r
_) arr (o ar _) arr (o ar
_) arro (g ar@ _) arro (g ar@
arr (o_ A@
ar (i_ 'A@r ar (i_ 'A@r
?3 @) ar (io_ 'ar ?3 @) ar (io_ 'ar
_b) ar (L02t ar _b) ar (L02t ar
&l) ar (_ 3 &l) ar (_ 3
&l) ar (ist 3 &l) ar (ist 3
&m) ar (_ 3 &m) ar (_ 3
an) ar (_ 3
lun) ar (_ =3 lun) ar (_ =3
_sep) ara (b 3r@ _sep) ara (b 3r@
_p) ara ar@ _p) ara ar@
&) ar (diz 3 &) ar (diz 3
%C) ar (d_ 3 %C) ar (d_ 3
&d) ar (d_ 3 &d) ar (d_ 3
&h) ar (d_ 3
// &h) ar (d_ 3
&ch) ar (d 3 &ch) ar (d 3
&k) ar (d_ 3 &k) ar (d_ 3
ll) ar (d_ A@ ll) ar (d_ A@
_p) arlia A@l@ _p) arlia A@l@
@) ar (ol @r @) ar (ol @r
arom (at a#roUm arom (at a#roUm
&) ar (ous_ 3
arre (_ A@ arre (_ A@
arred (_ A@d arred (_ A@d
arring (_ A@I2N arring (_ A@I2N
?3 ion) ary (_ Er%i ?3 ion) ary (_ Er%i
XC) ary (_ e@r%i XC) ary (_ e@r%i
w) ar O@ w) ar O@
wh) ar O@
_wh) ar O@
w) ar (r 0 w) ar (r 0
w) ar (i e@ w) ar (i e@
w) ar (y e@ w) ar (y e@
w) atch 0tS w) atch 0tS
_s) ata (n eIt@ _s) ata (n eIt@
_g) ator eIt3 _g) ator eIt3
&) ate (_$w_alt2 @t
&) ate (_$w_alt1+ eIt
&) ate (_$w_alt2+ @t
der) ated (_ eItI#d der) ated (_ eItI#d
der) ating (_ eItIN
pal) ate (_ @t pal) ate (_ @t
consul) ate (_ @t consul) ate (_ @t
macul) ate (_ @t macul) ate (_ @t
_it_separ) ate (_ @t _it_separ) ate (_ @t
par) ates (_ eIt|s par) ates (_ eIt|s
ct) ate (_ =eIt ct) ate (_ =eIt
@) ated (++_ eItI#d
_s) ate (ll at@ _s) ate (ll at@
@) ati (_ 'A:ti @) ati (_ 'A:ti
at (im_ 'eIt at (im_ 'eIt
@) ating (++_ eItIN
&) at (ive @t &) at (ive @t
&) at (ive_$w_alt1 eIt &) at (ive_$w_alt1 eIt
// &) ately (_ @tli
ul) at (ory 'eIt ul) at (ory 'eIt
sen) at @t sen) at @t
pl) at (ea at pl) at (ea at
st) atus eIt@s st) atus eIt@s
?3 st) atus at@s ?3 st) atus at@s
_) at (y eIt _) at (y eIt
&) at (y_ @t


.group au .group au
au O: au O:
co (mprehen k0 co (mprehen k0
co (mprom k0 co (mprom k0
_) comp (tr k%0m _) comp (tr k%0m
compu (t k%0#mpju:
co (mput k%0#
co (mputat k0
_) co (mr k0 _) co (mr k0
_) con (@ k%0#n _) con (@ k%0#n
_) conce (ntra k0ns@ _) conce (ntra k0ns@
_) co (nstip k0 _) co (nstip k0
_) co (nstitut k0 _) co (nstitut k0
_) co (nsole k0 _) co (nsole k0
_) co (nstel k0
_) co (nsul k0 _) co (nsul k0
_) co (nsult k%0# _) co (nsult k%0#
_) co (ntact k0 _) co (ntact k0
co (ntine k0 co (ntine k0
_) co (ntour k0 _) co (ntour k0
_) co (ntrA k0# _) co (ntrA k0#
_) contra (C@P6 k,0ntr@
_) contra (@P6 k,0ntr@
_) contrast k0#ntraast _) contrast k0#ntraast
contrac (t k%0#ntrak contrac (t k%0#ntrak
contrar k%0#ntre@ contrar k%0#ntre@
_) de (ba dI2 _) de (ba dI2
_) de (bil dI# _) de (bil dI#
_) de (c@ dI# _) de (c@ dI#
deca (den dEk@
_) decaffei d%i:kafI
_) deca dEk@
_) deca ((ff d%i:ka
_) deca (nt d%Ika
_) de (cL05 dE _) de (cL05 dE
de (cenc di: de (cenc di:
de (cib dE de (cib dE
de (cil dE de (cil dE
de (cim dE de (cim dE
_) de (com d,i: _) de (com d,i:
_) de (con d,i:
_) de (conP2 d,i:
de (cor dE de (cor dE
de (coru dI2 de (coru dI2
de (creas di: de (creas di:
de (du dI2 de (du dI2
_) de (emp d%i: _) de (emp d%i:
_) de (f@ dI2 _) de (f@ dI2
_) de (falc di:
_) de (feca dE
de (finit dE de (finit dE
de (flat d%i: de (flat d%i:
de (feren dE de (feren dE
_) de (g@ dI2 _) de (g@ dI2
_) de (hAP2 d,i: _) de (hAP2 d,i:
_) de (hyd ,di: _) de (hyd ,di:
_) de (ifL02 deI
?3 _) de (ifL02 di:
_) de (ist deI _) de (ist deI
_) de (j dI2 _) de (j dI2
_) de (l@ dI2 _) de (l@ dI2
de (lv+ dE de (lv+ dE
de (ma dI2 de (ma dI2
de (magog dE de (magog dE
?!3 _) de (marca di:
demea dI2m'i: demea dI2m'i:
de (men dI2 de (men dI2
_) de (milit d%i: _) de (milit d%i:
deni (tri d%i:naI deni (tri d%i:naI
_) de (no dI2 _) de (no dI2
_) de (nu dI2 _) de (nu dI2
_) de (nuda d,i:
_) de (o d%i: _) de (o d%i:
_) de (p@ dI2 _) de (p@ dI2
de (per d%i: de (per d%i:
_) de (pila dE
de (pol d%i: de (pol d%i:
de (pop d%i: de (pop d%i:
depo (siti dEp@ depo (siti dEp@
di (scov dI2 di (scov dI2
_) dis (eP3 ,dIs _) dis (eP3 ,dIs
di (sh_ dI di (sh_ dI
di (shC dI
_) di (shC dI
_) di (shev+ dI2 _) di (shev+ dI2
_) dis (hAP3 dI2s _) dis (hAP3 dI2s
_) dis (inP3 ,dIs _) dis (inP3 ,dIs
_) diss (@ dI2s _) diss (@ dI2s
dis (sect daI dis (sect daI
dis (sid dI dis (sid dI
di (ssip dI
_) dis (sip dI
dis (solu dI dis (solu dI
dis (son dI dis (son dI
di (stan dI di (stan dI
cl) ed (_S1v d cl) ed (_S1v d
@p) ed (_S2vdei t @p) ed (_S2vdei t
@@er) ed (_S2v d @@er) ed (_S2v d
our) ed (_S2v d
@ss) ed (_S2dv t @ss) ed (_S2dv t
@t) ed (_S2vdei I#d @t) ed (_S2vdei I#d
?8 @t) ed (_S2vdei Ed ?8 @t) ed (_S2vdei Ed
_w) eigh eI _w) eigh eI


.group el .group el
_) el (A %Il
_) el (A I#l
_) electro %Il,EktroU _) electro %Il,EktroU
_) elect (rocu I2lEkt
_) elect (rol %ElEkt
_) elect (ron I2lE2kt
_) elect (rici I#lE2kt
_) elect (rocu I#lE2kt
_) elect (rol I#lE2kt
_) elect (ron I#lE2kt
_) ele (g ElI _) ele (g ElI
_) elem ElIm _) elem ElIm
_) ele (p ElI _) ele (p ElI
em (ana Em em (ana Em
emba (s Emb@ emba (s Emb@
em (blem Em em (blem Em
_) em (broc Em
em (bry Em em (bry Em
em (eral Em em (eral Em
_) em (e I2m _) em (e I2m
_) ener En3 _) ener En3
g) ener (i @nEr g) ener (i @nEr
@@th) enes (_ =@ni:z @@th) enes (_ =@ni:z
_) en (gel En
g) en (etic I2n g) en (etic I2n
&) en (ger In &) en (ger In
eng (lA INg eng (lA INg


.group es .group es
ess (_$w_alt2 @s ess (_$w_alt2 @s
&) es (X$w_alt1+ Es
&) es (_S1i z &) es (_S1i z
&es) es (_ i:z &es) es (_ i:z
ese (_ i:z ese (_ i:z
&f) es (_S1 s &f) es (_S1 s
&k) es (_S1 s &k) es (_S1 s
&p) es (_S1 s &p) es (_S1 s
&t) es (_S1 s
&t) es (_S1 z#
&c) es (_S1 %Iz &c) es (_S1 %Iz
&g) es (_S1 %Iz &g) es (_S1 %Iz
&ch) es (_S1 %Iz &ch) es (_S1 %Iz
eth (ic ET eth (ic ET
_) ethno (@ ETnoU# _) ethno (@ ETnoU#
eth (ra 'i:T eth (ra 'i:T
eth (yl i:T
eth (ylen ET
eth (ylK i:T
?3 ethyl (K ET@L
@C) eth (_S3e @T @C) eth (_S3e @T
_) etio i:tI@
etta (_ 'Et@ etta (_ 'Et@
ette (_ 'Et ette (_ 'Et
pal) ett (e @t pal) ett (e @t
excav Eksk@v excav Eksk@v
_) exc (e %Eks _) exc (e %Eks
exc (i %Eks exc (i %Eks
_) ex (ecra Eks
_) ex (crem Eks _) ex (crem Eks
exce (llen Eks@ exce (llen Eks@
C) ex (e Eks C) ex (e Eks
exped (it Eksp@d exped (it Eksp@d
ex (pert Eks ex (pert Eks
experim %EkspErIm experim %EkspErIm
_) ex (piat Eks
@) ex (ia 'Eks @) ex (ia 'Eks
_) exi (gen EksI _) exi (gen EksI
ss) ex (_ Iks ss) ex (_ Iks
scr) i (ber aI scr) i (ber aI
i (ber_ aI i (ber_ aI
t) ibe (t Ib'E t) ibe (t Ib'E
i (bilit I
i (bilit @
b) i (ble_ aI b) i (ble_ aI
@) ible (_S4ev @b@L @) ible (_S4ev @b@L
@) ibles (_S5ev @b@Lz @) ibles (_S5ev @b@Lz
ifier (_ IfaI3 ifier (_ IfaI3
r) i (fl aI r) i (fl aI
st) i (fl aI st) i (fl aI
&) ify (_ =I2faI
&) ify (_ =I#faI
i (genous 'I i (genous 'I
n) ihi aI|@ n) ihi aI|@
_) i (h aI _) i (h aI
_t) ia i:@ _t) ia i:@
XC) ia (_ i@ XC) ia (_ i@
&) iac (_ =Iak &) iac (_ =Iak
&) ian (_S1 n
&) ians (_S2 nz
&) ian (_NS1 n
&) ians (_NS2 nz


C) iar aI3 C) iar aI3
?8 C) iar aIa# ?8 C) iar aIa#
iar (iC i@3 iar (iC i@3
iar (ity Iar iar (ity Iar
&) iary =j@r%I
&l) iary =i@r%I
&) iary =j@ri
&l) iary =i@ri
_) ian i@n _) ian i@n
&) ia (_N =i|@ &) ia (_N =i|@
&) ia (_ =i@ &) ia (_ =i@
igno (ran Ign3 igno (ran Ign3
ig (na Ig ig (na Ig
_m) ig (ra aIg _m) ig (ra aIg
_m) ig (rati %aIg
igu (e 'i:g igu (e 'i:g
igu (_ 'i:g igu (_ 'i:g


_) in (tegri %In _) in (tegri %In
inte (llec Int@ inte (llec Int@
_) inter (@P5 ,Int3 // prefix _) inter (@P5 ,Int3 // prefix
_) inter (- ,Int3
_) inter (AP5 ,Int@r _) inter (AP5 ,Int@r
_) inter (cal %Int3:
_) inter (est Intr _) inter (est Intr
interfer Int@f'i@3 interfer Int@f'i@3
_) int (erio+ %Int _) int (erio+ %Int
_) jes (ui dZEz _) jes (ui dZEz
_) jh (A@ dZ _) jh (A@ dZ
_) jiha (d dZI2hA: _) jiha (d dZI2hA:
_) joa (n@ dZoU'a
_) joa (nn dZoU'a
n) j (a_ j n) j (a_ j
j (ü j j (ü j


&t) ling (_ _lIN &t) ling (_ _lIN
&l) ling (_S4vd IN &l) ling (_S4vd IN
linux lInVks linux lInVks
listen lIs@n
?3 _) lo (gK lO ?3 _) lo (gK lO
@) lo (gous =l@ @) lo (gous =l@
lu (na lu: lu (na lu:
@) ly (_S2i l%i
@l) ly (_S2 i
&) ly (_S2i l%i
&l) ly (_S2 i
f) ly (_ laI f) ly (_ laI
ief) ly (_S2 l%i ief) ly (_S2 l%i
ff) ly (_S2 l%i ff) ly (_S2 l%i
&p) ly (_S2 l%i &p) ly (_S2 l%i
p) ly (_ laI p) ly (_ laI
_) ly (d lI _) ly (d lI
@) lEss (_S4i l@s
&) lEss (_S4i l@s
@) lEssly (_S6i l@sl%i @) lEssly (_S6i l@sl%i


.group le .group le
mbly mbl%I mbly mbl%I
o) mb (e m o) mb (e m
_bo) mb (K m _bo) mb (K m
_du) mb m
_) mc (C@ m@k
_du) mb (K m
_) mc (C@P2 m@k
_) mc (_C m@k _) mc (_C m@k
_) mc (_L05 m@ // c,g,k _) mc (_L05 m@ // c,g,k
_) mc (L05@ m@ _) mc (L05@ m@
@@C) o (_ =oU @@C) o (_ =oU
oa oU oa oU
oa (_ 'oU@ oa (_ 'oU@
oa (b oUa
g) oa (n_ oU@ g) oa (n_ oU@
z) oa (n_ 'oU@ z) oa (n_ 'oU@
br) oa (d O: br) oa (d O:
@l) oge (_ 0g @l) oge (_ 0g
&) o (gen_ @ &) o (gen_ @
ogeni (c oUdZ'EnI ogeni (c oUdZ'EnI
o (genat '0
o (genous '0 o (genous '0
o (geny '0 o (geny '0
r) o (ger 0 r) o (ger 0
orp) oise @s orp) oise @s
o (ism oU o (ism oU
@) o (ist oU @) o (ist oU
oix (_ wa
oix (_ wA:
tr) o (jan oU tr) o (jan oU
o (ku oU o (ku oU
o (ky_ oU o (ky_ oU
&) om (ise_ =@m &) om (ise_ =@m
&) om (ize_ =@m &) om (ize_ =@m
@) om (ist_ =@m @) om (ist_ =@m
_s) om (n %0m
_s) om (na %0m
_) omni (@@P4 ,0mnI2 _) omni (@@P4 ,0mnI2
_) omni 0mnI _) omni 0mnI
_) omnipo 0mn'Ip@ _) omnipo 0mn'Ip@
_f) ore (tel %o@ _f) ore (tel %o@
@) or (iti 0r @) or (iti 0r
@) or (ity 0r @) or (ity 0r
_fav) orit 3I#t
_fav) orit @-rI#t
_) or (iC 0r _) or (iC 0r
@t) ore (_ 3 @t) ore (_ 3
st) ore (_ o@ st) ore (_ o@
?!3 _h) or (o 0r ?!3 _h) or (o 0r
orr (_ o@ orr (_ o@
or (r 0 or (r 0
?3 or (r O:
?3 or (r O@
bb) or (n 3 bb) or (n 3
f) oreign 0r@n f) oreign 0r@n
f) or (ever 3 f) or (ever 3
&g) ot (_ @t &g) ot (_ @t
&rr) ot (_ @t &rr) ot (_ @t
&) ot (_$w_alt2 @t &) ot (_$w_alt2 @t
n) ot (a oUt
r) ot (a oUt r) ot (a oUt
t) ot (a oUt t) ot (a oUt
c) ot (an oUt c) ot (an oUt
ot (at oUt ot (at oUt
nn) ot (at @t
h) ote (l %oUtE h) ote (l %oUtE
p) ot (enti @t p) ot (enti @t
b) oth oUT b) oth oUT
c) ou (pl V c) ou (pl V
&) our (_ 3 &) our (_ 3
np) our (_ o@ np) our (_ o@
&) oured 3d
ev) our (ed aU@ ev) our (ed aU@
our (n 3: our (n 3:
?5 our (n VR ?5 our (n VR
_) peregrin pEr@grIn _) peregrin pEr@grIn
per (fec p3 per (fec p3
_) per (iC@@ p,Er _) per (iC@@ p,Er
_) per (igr pEr
_) perini pErIn'i: _) perini pErIn'i:
_) per (iph p3r _) per (iph p3r
_) per (isc pEr _) per (isc pEr
_) pro (sa pr@ _) pro (sa pr@
_) pro (sc pr@ _) pro (sc pr@
pro (spectA pr@ pro (spectA pr@
_) pro (stra pr0
_) pro (sumer pr%oU _) pro (sumer pr%oU
pro (tec pr@ pro (tec pr@
pro (test pr@ pro (test pr@
_) re (arm %ri: _) re (arm %ri:
_) re (au@P2 ,ri: _) re (au@P2 ,ri:
re (ck rE re (ck rE
_) re (clina rE
reco (g rEk@ reco (g rEk@
_) re (comP2 r,i: _) re (comP2 r,i:
_) re (conP2 ,ri: _) re (conP2 ,ri:
repe (titiv rI2pE repe (titiv rI2pE
re (pli rE re (pli rE
re (prim rE re (prim rE
_) re (prob rE
re (pt rE re (pt rE
_) re (puta rE _) re (puta rE
re (quis rE re (quis rE
1_) st (_ 1_) st (_
_) st (_ s@nt _) st (_ s@nt
stein staIn stein staIn
i) st (en_ s
_) s (u s _) s (u s
&) s (u_ =s &) s (u_ =s
ssue Su: ssue Su:
Ai) s (y z Ai) s (y z
s (_N z s (_N z
@) s (_NS1m z @) s (_NS1m z
@) s (_$w_alt1S1 s
@) s (_$w_alt1 s
_BA) s (_N s _BA) s (_N s
&se) s (_S1 I#z &se) s (_S1 I#z
&sse) s (_S2 I#z &sse) s (_S2 I#z
su (burba s@ su (burba s@
su (bv s@ su (bv s@
substa (nt s@bsta substa (nt s@bsta
su (ccA s@
su (ccul sV
su (cce s@
su (cci s@
su (ffic s@ su (ffic s@
sugar SUg3 sugar SUg3
re) su (mA zju: re) su (mA zju:
_) tz (ar ts _) tz (ar ts
t (h$w_alt4 t t (h$w_alt4 t
t (A$w_alt4 t2 t (A$w_alt4 t2
t (E$w_alt4 t2


t (ap_ t2 t (ap_ t2
ie) t (ary_ t2 ie) t (ary_ t2
t (op_ t2 t (op_ t2
@) town (_S4 t2aUn @) town (_S4 t2aUn
tow (er t2aU tow (er t2aU
_) trans (migP5 trans
_) trans (nP5 trans _) trans (nP5 trans
_) tri (A traI _) tri (A traI
_) trie traI _) trie traI
theo (logy TI'0 theo (logy TI'0
theo (logis TI'0 theo (logis TI'0
_) th (eC% T _) th (eC% T
_) th (us D




.group ti .group ti
&) tia (_ S@ &) tia (_ S@
&s) tia (_ tS@ &s) tia (_ tS@
propi) ti (a tI
ti (ac tI ti (ac tI
&) tian (_ =S@n &) tian (_ =S@n
&s) ti (an_ tS &s) ti (an_ tS
tion (ality S@n tion (ality S@n
&) tious S=@s &) tious S=@s
AC) tive (_ =tIv AC) tive (_ =tIv
_) ti (trat t%aI




.group tu .group tu
_) u (lA u: _) u (lA u:
&f) ul (_ @L &f) ul (_ @L
?8 &f) ul (_ Vl ?8 &f) ul (_ Vl
s) ul (_ @L
&s) ul (_ @L
@) u (la_ =jU @) u (la_ =jU
@) u (lar =jU @) u (lar =jU
@) u (late =jU @) u (late =jU
v v v v
v (v v (v
_) v (la v _) v (la v
_) vr (A vr


@) va (len veI @) va (len veI
_) vehem vi@m _) vehem vi@m
xis (_ =ksIs xis (_ =ksIs
xus (_ =ks@s xus (_ =ks@s
xu (a =kSu: xu (a =kSu:
lu) x (ur gZ
?3 lu) xu (r gZU@
lu) xu (r gZU@
xure (_ kS%U@ xure (_ kS%U@


.group y .group y

+ 190
- 132
dictsource/eu_list View File

// This file is UTF8 encoded
// Spelling-to-phoneme words for Basque

b be
c ze
d de
f efe
g ge
h atSe
j xota
k ka
l ele
m eme
n ene
ñ en^e
p pe
q ku
r eR2e
s ese
t te
v uBe
w uBe||bikoitza
x iSa
y i||grekoa
z zeta

_a a
_e e
_i i
_o o
_u u


// numbers
_0 zer'o
_1 b'at
_2 b'i
_3 hir'u
_4 l'aU
_5 b'ost
_6 s'eI
_7 zazp'i
_8 zort'i
_9 beD'eratzi
_10 am'aR2
_11 am'aIka
_12 amaB'i
_13 ama'ir,u
_14 amal'aU
_15 amaB'ost
_16 amas'eI
_17 amazazp'i
_18 emezort'i
_19 emeretz'i
_20 hoQ'eI
_2X hoQ'eIta
_40 b'eR2oQeI
_4X b'eR2oQeIta2
_60 ir'uroQeI
_6X ir'uroQeIta2
_80 l'aUroQeI
_8X l'aUroQeIta2
_1C e'un
_2C b'eR2eun
_0C R2e,un
_0M1 mil'a
_0M2 mil^'i;oI
_0and eta
_dpt _koma


// names of punctuation and symbol characters



// functuion words
// conjunctions
eta $u+ $pause // and
bainan $pause


// pronouns
ni $u+
zu $u+
hura $u+
gu $u+
zuek $u+
haiek $u+

nire $u+ // possessive
zure $u+
haren $u+
bere $u+
gure $u+
zuen $u+
haien $u+
beren $u+

hau $u+ // this
hori $u+ // that
hura $u+ // that (further)

// auxillary verbs
izan $u // to be
naiz $u
zara $u
da $u
gara $u
zarete $u
dira $u

egon $u // to be
nago $u
zaude $u
gaude $u
zaudete $u
daute $u


// gramatical suffixes which can appear as words appended to numbers etc.
// Should these be in eu_rules ??
a $u
an $u
ean $u
eko $u
era $u
ko $u


etxe $1 $only

// This file is UTF8 encoded
// Spelling-to-phoneme words for Basque
b be
c ze
d de
f 'efe
g ge
h 'atSe
j J'ota
k ka
l 'ele
m 'eme
n 'ene
ñ 'en^e
p pe
q ku
r 'eR2e
s 'ese
t 'te
v 'uBe
w 'uBe||bikoitza
x 'iSa
y i||gr'ekoa
z 'z'eta
_a a
_e e
_i i
_o o
_u u
// numbers
_0 zer'o
_1 b'at
_2 b'i
_3 'iru
_4 l'aU
_5 b'ost
_6 s'eI
_7 z'azpi
_8 z'ortzi
_9 beD'eratzi
_10 am'aR2
_11 am'aIka
_12 am'aBi
_13 am'aIru
_14 am'alaU
_15 am'aBost
_16 am'aseI
_17 am'azazpi
_18 em'ezortzi
_19 em'eretzi
_20 oQ'eI
_2X oQeIta
_40 beR2oQ'eI
_4X beR2oQeIta
_60 iruroQ'eI
_6X iruroQeIta
_80 laUroQ'eI
_8X laUroQeIta
_1C e'un
_2C beR2'eun
_3C ir'ureun
_4C laur'eun
_5C bost'eun
_6C sei'eun
_7C zazp'ieun
_8C zortz'ieun
_9c bederatz'ieun
_0C e,un
_0M1 m'il^a
_0M2 mil^'ioI
_1M2 mil^'ioI||bat
_0and eta
_dpt _koma
// names of punctuation and symbol characters
_. p'untu
_, k'oma
_- gid'oI
_! arr'idura
_? gald'era
_: b'i||p'untu
_; p'untu||eta||k'oma
// functuion words
// conjunctions
eta $u+ $pause // and
baina $u+ $pause
// pronouns
ni $1
zu $1
hura $1
gu $1
zuek $1
haiek $1
nire $u+
zure $u+
haren $u+
bere $u+
gure $u+
zuen $u+
haien $u+
beren $u+
hau $1 // this
honen $1
hauen $1
hori $1 // that
horren $1 // genitive
hura $1 // that (further)
haien $1 // genitive
// Some auxiliary verbs
gara $2
zara $2
dira $2
// gramatical suffixes which can appear as words appended to numbers etc.
// Should these be in eu_rules ??
a $u
ak $u
an $u
ean $u
etan $u
eko $u
etarako $u
ko $u
era $u
ra $u
etara $u
// Other words (mostly nouns)
// Bisillabic words which have the stres always in the first syllable
kaixo $1
testu $1
lehia $1
patu $1
// Bisillabic words whitch get misspronounced with the suffix list
etxe $1 $only
kale $1 $only
aste $1 $only
urte $1 $only
// j as [x]
jipoi x'ipoi
// other
aerobiko $3
aerodinamiko $5
aerodinamika $5
aerodromo $3
aerometro $3
aeromodelismo $6
aeronauta $4
aeronautika $4
aeronautiko9 $4
aerosol $4
aerostatika $4
aerostato $4
adrenalina adrenalin2a
aharraus $2
aharrausika $2
ahur aur $only
ahurr auR2
// Abbreviations
adib ad'ibidez $hasdot
// proper names and surnames
juan xw'an
jorge x'orxe
jose x'ose
josé x'os'e
joaquín xoak'in
san $u
santo $u
aristoteles $3
hume x'iUm
nietztsche n'itSe
abako $1

+ 250
- 147
dictsource/eu_rules View File


// This file is UTF8 encoded
// Spelling-to-phoneme rules for Basque


.group a
a a
ai aI
au aU


.group b
b b


.group c
c k
c (e s
c (i s


.group d
d d
Ki) d (A J
dd J
A) d (A D // ??




.group e
e e
ei eI
eu eU

&) ek (_S2 ek

.group f
f f


.group g
g g
A) g (A Q // ??


.group h
h // silent


.group i
i i


.group j
j J // try [x] [J] [j] [J^] [Z] [S]


.group k
k k


.group l
l l
ll l^
Ki) l (A l^


.group m
m m


.group n
n n
Ki) n (A n^


.group ñ
ñ n^


.group o
o o
oi oI


.group p
p p


.group q
q k
qu kw
que (_ k


.group r
r r
_) r R2
r (_ R2
rr R2


.group s
s s


.group t
t t
Ki) t (A c
ts ts
tt c
tx tS
tz tz


.group u
u u


.group v
v v


.group w
w w


.group x
x S


.group y
y j
K) y (K i


.group z
z z



.group
ç s
ü Y

// This file is UTF8 encoded
// Spelling-to-phoneme rules for Basque
.L01 b d g
.L02 e i
.group a
a a
ai aI
ahi aI
au aU
ahu aU
a (_S1t a
ak (_S2t ak
ari (_S3t ari
aren (_S4t a**en
arekin (_S6t a**ekin
arentzat (_S8t a**entzat
arentzako (_S9t arentzako
an (_S2t an
atik (_S4t atik
ara (_S3t a**a
arat (_S4t arat
atatik (_S6t atatik
atara (_S5t ata**a
atarat (_S5t atarat
ako (_S3t ako
atako (_S5t atako
araino (_S6t a**ain^o
ataraino (_S8t ata**an^o
arantz (_S6t a**antz
atarantz (_S8t a**antz
agana (_S5t agana
arengana (_S8t a**engana
arenganaino (_s11 a**enganain^o
arengatik (_S9t a**engatik
atzat (_S5t atzat

.group b
b b
_ez_) b (A p'

.group c
c k
c (L02 T

.group d
d d
dd J
A) d (A D // ??
_ez_) d (A t'

.group e
e e
ei eI
ehi eI
l) ehi (A eI
eu eU
ek (_S2t ek
ei (_S2t eI
en (_S2t en
ean (_S3t ean
etan (_S4t etan
etatik (_S6t etatik
etara (_S5t eta**a
erat (_S4t erat
etako (_S5t etako
eko (_S3t eko
etarako (_S7t etarako
etarantz (_S8t eta**antz
etaraino (_S8t eta**aino
engana (_S6t engana
entzat (_S6t entzat
entzako (_S7t entzako
engatik (S7 engatik
ekin (_S4t ekin
ekiko (_S5t ekiko
ez (_S2t ez
etaz (_S4t etaz

.group f
f f

.group g
g g
A) g (A Q // ??
_ez_) g (A k'
gana (_S4t gana
go (_S2t go

.group h
h // silent
zi) h (o x

.group i
i i
K) i (_S1t i
ad) i (eraz j
le) i (h j
arraz) i (on j

.group j
j J // try [x] [J] [j] [J^] [Z] [S]
ad) j (udika x

.group k
k k
ko (_S2t ko

.group l
l l
ll l^
_ez_) l (A l'

.group m
m m

.group n
n n
n (_S1t n
adrenali) n n2
admi) n (istr n2

.group o
o o
oi oI

.group p
p p

.group q
q k

.group r
r r
_) r R2
rr R2
A) ri (_S2t ri
ren (_S3t ren
ra (_S2t ra
rat (_S3 t rat
rantz (_S5t rantz
raino (_S5t raino
rako (_S4t rako
rentzat (_S7t rentzat
rentzako (_S8t rentzako
rekin (_S5t rekin
rengan (_S6t rengan
rengana (_S7t rengana
rengandik (_S9t rengandik
rengatik (_S8t rengatik

.group s
s s

.group t
t t
ts ts
tt c
tx tS
tz tz
tan (_S3t tan
tara (_S4 t tara
tarat (_S5t tarat
tik (_S3t tik
tatik (_S5t tatik
taz (_S3t taz
tu (_S2t tu
tuko (_S4t tuko
tzen (_S4t tzen
ten (_S3t ten

.group u
u u

.group v
v b

.group w
w u

.group x
x S

.group y
y jj

.group z
z z
_e) z (_L01 %z
_e) z (_l
z (_S1t z

.group
á ''a
é ''e
í ''i
ó ''o
ú ''u
ç s
ü Y
ñ n^

+ 1
- 1
dictsource/pl_rules View File

.group c .group c


c ts c ts
ch h
ch x
ch (i C ch (i C
chi (A hj chi (A hj
psy) chi (a hi psy) chi (a hi

+ 47
- 17
dictsource/pt_list View File

½ m'eIU ½ m'eIU
¾ tRes#kw'a*@-tUs# ¾ tRes#kw'a*@-tUs#
® xeZistR'adU ® xeZistR'adU
↑ s'Et&as'im&
↓ s'Et&ab'aISU
← s'Et&aes#k'e*@-d&
?2 → s'Et&adZi*eIt&

?1 ™ m'a*@-k&xeZiSt'ad& ?1 ™ m'a*@-k&xeZiSt'ad&
?2 ™ m'a*@-k&xeZistR'ad& ?2 ™ m'a*@-k&xeZistR'ad&
_, v'irgul& _, v'irgul&
ampulheta $alt2 ampulheta $alt2
anchova $alt2 anchova $alt2
andorra $alt2 andorra $alt2
andrea $alt
andreia $alt
antonieta $alt2 antonieta $alt2
apego $alt2 $noun apego $alt2 $noun
apelo $alt2 $noun apelo $alt2 $noun
apelos $alt2 apelos $alt2
aposto $alt $verb aposto $alt $verb
aperto $alt2 $noun aperto $alt2 $noun
apertos $alt2
apneia $alt apneia $alt
apoio $alt $verb apoio $alt $verb
aqueia $alt
arredores $alt arredores $alt
arremesso $alt2 $noun arremesso $alt2 $noun
arrocho $alt2 $noun arrocho $alt2 $noun
bairro b'aIxU bairro b'aIxU
baitola $alt2 baitola $alt2
balancete $alt2 balancete $alt2
bangladesh $alt
banquete $alt2 banquete $alt2
barreto $alt2 barreto $alt2
basileia $alt
bastonete $alt2 bastonete $alt2
baviera $alt
beco $alt2 beco $alt2
besta $alt2 besta $alt2
beça $alt beça $alt
buceta $alt2 buceta $alt2
cabresto $alt2 cabresto $alt2
cacete $alt2 cacete $alt2
cacoete $alt2
caderneta $alt2 caderneta $alt2
cadete $alt2 cadete $alt2
caibro k'aIbRU caibro k'aIbRU
cãibra k'&~IbR& cãibra k'&~IbR&
caixeta $alt2 caixeta $alt2
caldeia $alt
camelha $alt camelha $alt
camiseta $alt2 camiseta $alt2
canaleta $alt2 canaleta $alt2
cananeia $alt
canhoto $alt2 canhoto $alt2
capacete $alt2 capacete $alt2
caractere $alt caractere $alt
catorze $alt2 catorze $alt2
cavalete $alt2 cavalete $alt2
cebola $alt2 cebola $alt2
cedro $alt
cefaleia $alt cefaleia $alt
centopeia $alt centopeia $alt
cerebelo $alt2 cerebelo $alt2
cerca $alt $verb cerca $alt $verb
cerco $alt $verb cerco $alt $verb
cetro $alt cetro $alt
chamego $alt2 $verb
chamegos $alt2
chamego $alt2
chamego $alt $verb
chapeleta $alt2 chapeleta $alt2
chaveta $alt2 chaveta $alt2
chefe $alt
choco $alt2 $noun choco $alt2 $noun
choça $alt choça $alt
chofer $alt chofer $alt
controles $alt $verb controles $alt $verb
controlo $alt2 $noun controlo $alt2 $noun
conveses $alt conveses $alt
copta $alt
coreia $alt coreia $alt
cores $alt2 cores $alt2
cores $alt $verb cores $alt $verb
corpete $alt2 corpete $alt2
corpos $alt corpos $alt
corto $alt corto $alt
corveia $alt
corveta $alt2 corveta $alt2
corvos $alt corvos $alt
cosme $alt
costeleta $alt2 costeleta $alt2
coto $alt2 coto $alt2
cotovelo $alt2 cotovelo $alt2
cratera $alt cratera $alt
crede $alt2 crede $alt2
credo $alt credo $alt
crimeia $alt
decoreba $alt
decoro $alt2 $noun decoro $alt2 $noun
degelo $alt2 degelo $alt2
desaforo $alt2 desaforo $alt2
desamores $alt2 desamores $alt2
desapego $alt2 $noun
desapego $alt2
desapego $alt $verb
desassossego $alt2 $noun desassossego $alt2 $noun
desconfortos $alt2 desconfortos $alt2
desconsolo $alt2 $noun desconsolo $alt2 $noun
descorno $alt descorno $alt
desemprego $alt2 desemprego $alt2
desemprego $alt $verb desemprego $alt $verb
desenvolto $alt2
desespero $alt2 desespero $alt2
desespero $alt $verb desespero $alt $verb
desfecho $alt2 desfecho $alt2
desse $alt $verb desse $alt $verb
deste $alt2 deste $alt2
deste $alt $verb deste $alt $verb
destempero $alt2 $noun
destemperos $alt2
desterro $alt2 desterro $alt2
destroem $alt destroem $alt
deteriore $alt deteriore $alt
doze $alt2 doze $alt2
dueto $alt2 dueto $alt2
edson $alt edson $alt
elixir eliSir
egeia $alt
eleia $alt
emborco $alt emborco $alt
emprego $alt2 emprego $alt2
emprego $alt2 $noun emprego $alt2 $noun
encosto $alt $verb encosto $alt $verb
endereço $alt $verb endereço $alt $verb
endoide $alt2 endoide $alt2
eneias $alt
enforco $alt enforco $alt
engodo $alt2 engodo $alt2
engordo $alt engordo $alt
forço $alt forço $alt
formos $alt2 formos $alt2
forro $alt $verb forro $alt $verb
fosso $alt2
frescores $alt2 frescores $alt2
frevo $alt2 frevo $alt2
fulgores $alt2 fulgores $alt2
gloso $alt gloso $alt
gonorreia $alt gonorreia $alt
gol gow gol gow
golpe $alt
gorda $alt2 gorda $alt2
gorjeta $alt2 gorjeta $alt2
gororoba $alt gororoba $alt
governo $alt2 governo $alt2
governo $alt $verb governo $alt $verb
gozo $alt2 $noun gozo $alt2 $noun
gozos $alt2
graveto $alt2 graveto $alt2
groselha $alt groselha $alt
grosso $alt2 grosso $alt2
jogos $alt jogos $alt
joguete $alt2 joguete $alt2
judeia $alt judeia $alt
jurubeba $alt
lacerda $alt lacerda $alt
lagosta $alt2 lagosta $alt2
lambreta $alt2 lambreta $alt2
lutero $alt lutero $alt
macete $alt2 macete $alt2
maioneses $alt maioneses $alt
manopla $alt
maniçoba $alt maniçoba $alt
marieta $alt2 marieta $alt2
mariposa $alt2 mariposa $alt2
megera $alt megera $alt
melhor $alt melhor $alt
menor $alt
meta $alt $noun meta $alt $noun
metro $alt metro $alt
minueto $alt2 minueto $alt2
mofo $alt $verb mofo $alt $verb
mogno $alt mogno $alt
molho $alt2 $noun molho $alt2 $noun
monera $alt
montenegro $alt2 montenegro $alt2
mor $alt mor $alt
morcego $alt2 morcego $alt2
naquela $nounf naquela $nounf
naquele $alt2 $nounf naquele $alt2 $nounf
nervo $alt2 nervo $alt2
niceia $alt
ninfeta $alt2 ninfeta $alt2
nitreto $alt2 nitreto $alt2
nojo $alt2 nojo $alt2
paexa paeSa paexa paeSa
paella pa'el^& paella pa'el^&
palacete $alt2 palacete $alt2
palermo $alt
palimpsesto $alt2
palheta $alt2 palheta $alt2
palhoça $alt palhoça $alt
panaceia $alt
pangeia $alt pangeia $alt
pantera $alt pantera $alt
papoco $alt2 $noun papoco $alt2 $noun
parede $alt2 parede $alt2
pateta $alt pateta $alt
peba $alt peba $alt
pedra $alt
pedro $alt2
peixoto $alt2 peixoto $alt2
pela $alt2 pela $alt2
pelo $alt2 pelo $alt2
peses $alt peses $alt
peseta $alt2 peseta $alt2
peso $alt $verb peso $alt $verb
pigmeia $alt
piloto $alt2 $noun piloto $alt2 $noun
pilotos $alt2 pilotos $alt2
pior $alt pior $alt
poderem $alt2 poderem $alt2
polca $alt polca $alt
pompeia $alt pompeia $alt
popa $alt2
porcos $alt porcos $alt
porque $alt2 porque $alt2
porra $alt2 porra $alt2
quinteto $alt2 quinteto $alt2
ramalhete $alt2 ramalhete $alt2
rancores $alt2 rancores $alt2
ranheta $alt2
raposa $alt2 raposa $alt2
recomeço $alt $verb recomeço $alt $verb
reconstroem $alt reconstroem $alt
super s'Uper super s'Uper
suporto $alt suporto $alt
suor suOr suor suOr
tabefe $alt
tambores $alt2 tambores $alt2
tapera $alt tapera $alt
tapete $alt2 tapete $alt2
tebas $alt
temores $alt2 temores $alt2
tempero $alt2 $noun tempero $alt2 $noun
tenores $alt2 tenores $alt2
tornozelo $alt2 tornozelo $alt2
torre $alt2 $noun torre $alt2 $noun
torres $alt2 torres $alt2
torreta $alt2
torro $alt torro $alt
toso $alt toso $alt
totens $alt totens $alt
tropeço $alt2 $noun tropeço $alt2 $noun
trombeta $alt2 trombeta $alt2
ureia $alt ureia $alt
uretra $alt
vanessa $alt2 vanessa $alt2
vareta $alt2 vareta $alt2
vera $alt vera $alt
voice $alt voice $alt
xarope $alt xarope $alt
xereta $alt2 xereta $alt2
xerox S'E*Oks
xeroxes $alt xeroxes $alt
zelo $alt2 $noun zelo $alt2 $noun
zorra $alt2 zorra $alt2
?2 designer dez'aIner ?2 designer dez'aIner
?2 designers dez'aIners ?2 designers dez'aIners
?2 desktops deskt'Ops ?2 desktops deskt'Ops
dj d,i:dZ'eI
?1 dj d,i:dZ'eI
?2 diesel dZ'izEU ?2 diesel dZ'izEU
?2 doha d'ox& ?2 doha d'ox&
?1 down d'a,wn ?1 down d'a,wn
?1 hardware 'ard,w'Er- ?1 hardware 'ard,w'Er-
?2 hardware h'ardwe@- ?2 hardware h'ardwe@-
happy x'Epy happy x'Epy
?2 haxixe xaS'iSy
?1 home 'omy ?1 home 'omy
?2 home h'owmi ?2 home h'owmi
hot xOt hot xOt
upload &pl'oud upload &pl'oud
?2 web w'Eb ?2 web w'Eb
writer r'aIter writer r'aIter
xerox S'E*Oks
?1 yahoo 'i,ah'u ?1 yahoo 'i,ah'u
?2 yahoo iah'u ?2 yahoo iah'u
?1 yes j'Es
yes j'Es




// common person names // common person names
?2 microsoft m'aIkRows'Oft ?2 microsoft m'aIkRows'Oft
?1 movie m'uvi ?1 movie m'uvi
?1 nero n'Eru ?1 nero n'Eru
?2 nero n'ErU
?2 netbooks nEtbUks ?2 netbooks nEtbUks
?2 notebook nowtbUk ?2 notebook nowtbUk
?2 notebooks nowtbUks ?2 notebooks nowtbUks

+ 59
- 76
dictsource/pt_rules View File

// translation rules Brazilian
// translation rules Brazilian
// This file is UTF-8 encoded // This file is UTF-8 encoded


// Options // Options
.L05 r ra ram re rem rde rmo .L05 r ra ram re rem rde rmo
.L06 r ra ram ste sse ssem re rem rmo .L06 r ra ram ste sse ssem re rem rmo
.L07 sse ssem ste .L07 sse ssem ste
.L08 a o




.group a .group a


e (dL02_ E e (dL02_ E


e (fa_ E
e (fL04_ E


e (gL04_ E e (gL04_ E




ib) e (rL04_ E ib) e (rL04_ E
d) e (rL04_ E d) e (rL04_ E
eb) e (L07_ e // recebeste, etc.
ed) e (rL04_ e ed) e (rL04_ e
eg) e (L07_ e // elegeste, etc.
_@o) e (L07_ e // doeste, etc.
iv) e (rL04_ E iv) e (rL04_ E
pod) e (rA_ e pod) e (rA_ e

@s) e (L05_ E @s) e (L05_ E

p) e (rL04_ E

f) e (rL04_ E f) e (rL04_ E

n) e (rL04_ E
p) e (rL04_ E
e (quL02_ E e (quL02_ E
e (rbL04_ E e (rbL04_ E
e (rgL04_ E e (rgL04_ E
?2 ee (C_ i ?2 ee (C_ i
?2 C) e (em_ e ?2 C) e (em_ e
e (stL04_ E e (stL04_ E

e (strL04_ E e (strL04_ E

e (rme_ E e (rme_ E

e (rnL04_ E e (rnL04_ E

e (rtL04_ E e (rtL04_ E

e (rrL04_ E e (rrL04_ E

e (rvL04_ E e (rvL04_ E

e (tL04_ E e (tL04_ E
m) e (tL03_ e m) e (tL03_ e
An) e (tA_ e An) e (tA_ e


ef) e (tuL02_ e ef) e (tuL02_ e
t) e (tra E t) e (tra E
e (drL04_ E


âC) e (C@ e âC) e (C@ e
âCC) e (C@ e âCC) e (C@ e
éCC) e (CA_ e éCC) e (CA_ e
éCCC) e (C@ e éCCC) e (C@ e
?2 íC) el (_ eU ?2 íC) el (_ eU
í) e (C@ e
íC) e (C@ e íC) e (C@ e
íCC) e (C@ e íCC) e (C@ e
óC) e (C@ e óC) e (C@ e
_pud) e (L05_ E _pud) e (L05_ E
_exag) e (L05_ E _exag) e (L05_ E
_mulh) e (L05_ E _mulh) e (L05_ E
_chancel) e (L05_ E
vi) e (L05_ E
_talh) e (L05_ E _talh) e (L05_ E
_troux) e (L05_ E _troux) e (L05_ E
@m) e (L06_ e // temeram, etc. @m) e (L06_ e // temeram, etc.
diss) e (L06_ E // contra- diss) e (L06_ E // contra-
romp) e (L06_ e // cor- inter- romp) e (L06_ e // cor- inter-
_houv) e (L06_ E _houv) e (L06_ E
_escond) e (L06_ e
respond) e (L06_ e
sCond) e (L06_ e // esconderam, etc.
constrang) e (L07_ e constrang) e (L07_ e
eb) e (L07_ e // recebeste, etc.
eg) e (L07_ e // elegeste, etc.
_@o) e (L07_ e // doeste, etc.
_cr) e (L07_ e _cr) e (L07_ e
_dev) e (L07_ e _dev) e (L07_ e
bat) e (L07_ e // re- com- bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su- ced) e (L07_ e // pro- con- su-
met) e (L07_ e // meteste, cometeste, etc. met) e (L07_ e // meteste, cometeste, etc.
mex) e (L07_ e mex) e (L07_ e
_requer) e (L07_ e
_requer) e (L07_ e
prouv) e (L07_ e prouv) e (L07_ e
mov) e (L07_ e // re- co- mov) e (L07_ e // re- co-
olv) e (L07_ e // devolveste, etc. olv) e (L07_ e // devolveste, etc.
_coz) e (L07_ e _coz) e (L07_ e
_val) e (L07_ e _val) e (L07_ e
colh) e (L07_ e // & es- colh) e (L07_ e // & es-
_lamb) e (L07_ e
_prov) e (L07_ e
_lamb) e (L07_ e
_prov) e (L07_ e
ench) e (L07_ e // pre- ench) e (L07_ e // pre-
vert) e (L07_ e // in- re- con- vert) e (L07_ e // in- re- con-
ergu) e (L07_ e ergu) e (L07_ e
_amanc) e (bL03_ E _amanc) e (bL03_ E
qu) e (brL04_ E qu) e (brL04_ E
_perp) e (trL04_ E _perp) e (trL04_ E
_assev) e (rL04_ E
sev) e (rL04_ E
_imp) e (trL04_ E _imp) e (trL04_ E
cel) e (brL04_ E cel) e (brL04_ E
_sop) e (sL04_ E _sop) e (sL04_ E
_C) e (bre_ E _C) e (bre_ E
_barb) e (tA_ e
_boch) e (chL04_ e _boch) e (chL04_ e
_ex) e (crL04_ E _ex) e (crL04_ E
impr) e (gnL04_ E impr) e (gnL04_ E
_sob) e (rbL03_ e _sob) e (rbL03_ e
_pr) e (dL03_ E _pr) e (dL03_ E
_arr) e (dL03_ E _arr) e (dL03_ E
_emp) e (drL03_ E
_enc) e (dL03_ E
_api) e (dL03_ E
_enc) e (dL03_ E
_api) e (dL03_ E
_depr) e (dL03_ E _depr) e (dL03_ E
_hosp) e (dL03_ E _hosp) e (dL03_ E
_enver) e (dL03_ E _enver) e (dL03_ E
_) e (dnL03_ E
_gr) e (gL03_ e
_gal) e (gL03_ e
_alvin) e (grL03_ e
_) e (dnL08_ E
_gr) e (gL08_ e
_gal) e (gL08_ e
_lanc) e (tA_ e _lanc) e (tA_ e
menorr) ei (a_ EI menorr) ei (a_ EI
_pel) e (gL03_ e
_n) e (grL03_ e
_pel) e (gL08_ e
n) e (grL08_ e
estr) ei (L04_ EI estr) ei (L04_ EI
_confed) e (rL04_ E _confed) e (rL04_ E
_r) e (jL03_ E _r) e (jL03_ E
_inv) e (jL04_ E _inv) e (jL04_ E
_panfl) e (tL04_ e _panfl) e (tL04_ e
_v) e (lhL03_ E
_v) e (lhL08_ E
_gr) e (lhL04_ E _gr) e (lhL04_ E
_tataran) e (tA_ E
_tetran) e (tA_ E
_trin) e (tA_ E
_tataran) e (tL08_ E
_tetran) e (tL08_ E
_trin) e (tL08_ E
_caC) e (lo_ e _caC) e (lo_ e
_porr) e (tA_ e
_porr) e (tA_ e
_livr) e (tA_ e _livr) e (tA_ e
?2 el (ton_ 'EU ?2 el (ton_ 'EU
ad) e (quL04_ E ad) e (quL04_ E
_ing) e (rL02_ E _ing) e (rL02_ E
_dig) e (rL02_ E _dig) e (rL02_ E
_m) e (rL03_ E _m) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL04_ E _reit) e (rL04_ E
_sinc) e (rL03_ E
_sinc) e (rL08_ E
_g) e (rL04_ E _g) e (rL04_ E
_z) e (rL04_ E _z) e (rL04_ E
qu) e (rL04_ E // re- qu) e (rL04_ E // re-
_on) e (rL04_ E
gen) e (rL04_ E // de- re-
_alt) e (rL04_ E _alt) e (rL04_ E
_enc) e (rL04_ E _enc) e (rL04_ E
_esm) e (rL04_ E _esm) e (rL04_ E
_esm) e (rL04_ E
_min) e (rL04_ E
_sug) e (rL04_ E _sug) e (rL04_ E
_tol) e (rL04_ E _tol) e (rL04_ E
_ven) e (rL04_ E
acel) e (rL04_ E // des- acel) e (rL04_ E // des-
eson) e (rL04_ E
_apod) e (rL04_ E _apod) e (rL04_ E
_enum) e (rL04_ E _enum) e (rL04_ E
_exub) e (rL04_ E _exub) e (rL04_ E
_aglom) e (rL04_ E _aglom) e (rL04_ E
_dilac) e (rL04_ E _dilac) e (rL04_ E
_encarc) e (rL04_ E _encarc) e (rL04_ E
_incin) e (rL04_ E
_persev) e (rL04_ E
_refrig) e (rL04_ E _refrig) e (rL04_ E
_c) e (rcL02_ E _c) e (rcL02_ E
_ex) e (rcL02_ E _ex) e (rcL02_ E
_alic) e (rcL02_ E _alic) e (rcL02_ E
_esqu) e (rdL03_ e
_esqu) e (rdL08_ e
_C) e (rdL04_ E _C) e (rdL04_ E
_des) e (rdL04_ E _des) e (rdL04_ E
_oblit) e (rL04_ E
_oblit) e (rL04_ E
s_colh) e (res_ E s_colh) e (res_ E
_) e (rgL03_ e _) e (rgL03_ e
_re) e (rgL03_ e _re) e (rgL03_ e
_so) e (rgL03_ e _so) e (rgL03_ e
sp) e (rma_ E sp) e (rma_ E
e (rquL02_ E e (rquL02_ E
_bez) e (rrL03_ e
_beC) e (rrL08_ e
v) e (rtL03_ e // con- re- in- v) e (rtL03_ e // con- re- in-
_f) e (rvL03_ e _f) e (rvL03_ e
_alic) e (rçL03_ E _alic) e (rçL03_ E
_p) e (scL03_ E _p) e (scL03_ E
_m) e (sclL04 E _m) e (sclL04 E
dioc) e (ses_ E dioc) e (ses_ E
_aust) e (rA_ E
_aust) e (rL08_ E
_d) e (spL02_ E _d) e (spL02_ E
proc) e (ssL02_ E proc) e (ssL02_ E
_p) e (squL02_ E _p) e (squL02_ E
_ac) e (ssL02_ E _ac) e (ssL02_ E
_esp) e (ssL03_ e _esp) e (ssL03_ e
_c) e (stL03_ e _c) e (stL03_ e
_pr) e (tL03_ e
_pr) e (tL08_ e
_rem) e (tL03_ e _rem) e (tL03_ e
_derr) e (tL03_ e _derr) e (tL03_ e
_obsol) e (tL03_ e
_obsol) e (tL08_ e
_bol) e (tL04_ e _bol) e (tL04_ e
_CaC) e (ta_ e _CaC) e (ta_ e
_minu) e (tA_ e _minu) e (tA_ e
_terc) e (tA_ e _terc) e (tA_ e
viol) e (ta_ e viol) e (ta_ e
_Carr) e (ta_ e _Carr) e (ta_ e
_Gur) e (ta_ e
_Gur) e (ta_ e
_pen) e (trL04_ E _pen) e (trL04_ E
_sol) e (trL04_ E _sol) e (trL04_ E
_n) eu (trL03_ 'eU
_n) eu (trL08_ 'eU
_d) e (vL03_ e _d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de- scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e _atr) e (vL03_ e
san) gu (ín gw san) gu (ín gw
san) gu (in gw san) gu (in gw
stin) gu (A gw stin) gu (A gw
_un) gu (ento_ gw
_un) gu (ento_ gw
xtin) gu (A gw xtin) gu (A gw
?1 n) gu (A gw // eg: língua, etc. ?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira ?1 man) gu (ei g // mangueira
b) o (rL04_ O b) o (rL04_ O
o (p_ O o (p_ O
C) o (pL04_ O C) o (pL04_ O
o (pCL04_ O
?1 _) o (C O // eg: olá, orla, opção, etc... ?1 _) o (C O // eg: olá, orla, opção, etc...
?1 _C) o (CACAC u // Documento, documentação, localizar, etc. ?1 _C) o (CACAC u // Documento, documentação, localizar, etc.
?1 f) o (rmat u // formatar, formato. ?1 f) o (rmat u // formatar, formato.
//sort //sort
_f) o (L05_ o _f) o (L05_ o
_red) o (L05_ O _red) o (L05_ O
_pormen) o (L05_ O
men) o (L05_ O
_f) o (L07_ o _f) o (L07_ o
_s) o (bL02_ O _s) o (bL02_ O
_af) o (bL04_ O _af) o (bL04_ O
_esn) o (bL04_ O _esn) o (bL04_ O
_engl) o (bL04_ O _engl) o (bL04_ O
_sal) o (brL03_ o
_) o (cL03_ o
_barr) o (cL03_ o
_ch) o (chA_ o
_sal) o (brL08_ o
_) o (cL08_ o
_barr) o (cL08_ o
_ch) o (chL08_ o
_m) o (chA_ o _m) o (chA_ o
_f) o (dL01_s o _f) o (dL01_s o
_ecl) o (dL03_ o _ecl) o (dL03_ o
_ap) oi (L02_ OI _ap) oi (L02_ OI
_b) oi (L04_ OI _b) oi (L04_ OI
_C) oi (ce_ oI _C) oi (ce_ oI
_t) o (lL03_ o
_t) o (lL08_ o
_f) o (lgL04_ O _f) o (lgL04_ O
_emp) o (lgL04_ O _emp) o (lgL04_ O
_arr) o (lhL03_ O _arr) o (lhL03_ O
_) o (bstL04_ O _) o (bstL04_ O
m) o (lhL04_ O m) o (lhL04_ O
emb) o (lsL04_ O emb) o (lsL04_ O
_env) o (ltL03_ o
_env) o (ltL08_ o
_esC) o (pA_ o _esC) o (pA_ o
antr) o (pL03_ o
_s) o (prL04_ O
_al) o (prL04_ O
_ass) o (prL04_ O
_) o (ptL04_ O
g) ol (pe_ Ow
antr) o (pL08_ o
flex) o (rA_ flex) o (rA_
p) o (rL02_ o p) o (rL02_ o
_dev) o (rL02_ O _dev) o (rL02_ O
?1 ovos (_G Ov=UZ novos, povos, etc. ?1 ovos (_G Ov=UZ novos, povos, etc.
?2 ovos (_G Ov=Uz novos, povos, etc. ?2 ovos (_G Ov=Uz novos, povos, etc.
ortos (_ O*@-t=Us# // tortos, mortos, etc. ortos (_ O*@-t=Us# // tortos, mortos, etc.
_Gar) o (tL03_ o
_escr) o (tL03_ o
_Gar) o (tL08_ o
_escr) o (tL08_ o
zig) o (to_ o zig) o (to_ o
_ch) o (vL01_ o _ch) o (vL01_ o
pr) o (vL03_ O pr) o (vL03_ O
_Com) o (do_ o _Com) o (do_ o
_ortod) o (xL03_ O
_ortod) o (xL08_ O
_arr) ox (A OS
_g) o (zL04_ O _g) o (zL04_ O
_alm) o (çL01_ O _alm) o (çL01_ O
_esb) o (çL01_ O _esb) o (çL01_ O
_ad) o (çL03_ O _ad) o (çL03_ O
_emp) o (çL03_ O _emp) o (çL03_ O
_end) o (çL03_ O _end) o (çL03_ O
_c) o (çL03_ O
_c) o (çL03_ O
//endsort //endsort


.group ô .group ô
.group x .group x
x (A S x (A S
A) x (A ks A) x (A ks
e) x (A ks
_e) x (A z _e) x (A z
_ê) x (A z _ê) x (A z
_ine) x (A z
_ine) x (orAC ks
e) x (A ks
?1 e) x (CA S ?1 e) x (CA S
ai) x (A S ai) x (A S
ei) x (A S ei) x (A S
xA) x (A S xA) x (A S
_abaca) x (i S _abaca) x (i S
ale) x (a S ale) x (a S
_arro) x (e S
_ave) x (A S _ave) x (A S
bau) x (A S bau) x (A S
brA) x (A S brA) x (A S
_ca) x (A S _ca) x (A S
_co) x (A S _co) x (A S
_coe) x (A z _coe) x (A z
_eli) x (ir S
_esdrA) x (ul S _esdrA) x (ul S
_e) x (u_ S _e) x (u_ S
_fa) x (i S _fa) x (i S
gra) x (A S gra) x (A S
_he) x (A z _he) x (A z
?2 _he) x (A ks ?2 _he) x (A ks
_ine) x (A z
_ine) x (orAC ks
_lagarti) x (A S _lagarti) x (A S
_li) x (A S _li) x (A S
_lu) x (A S _lu) x (A S

+ 1
- 0
dictsource/ta_list View File



// English words // English words
tamil தமிழ் $text tamil தமிழ் $text
andagakavi அந்தகக்கவி $text




// exceptions // exceptions

+ 5
- 0
dictsource/ta_rules View File

_ஹ) ப்ப (ர்ட bbV _ஹ) ப்ப (ர்ட bbV
_துர்) ப்ப (ல bbV _துர்) ப்ப (ல bbV
_முழு) ப்ப (ல bbV _முழு) ப்ப (ல bbV
_மனோ) ப்ப (ல bbV
உ) ப்ப (லா bbV உ) ப்ப (லா bbV
உ) ப்ப (லாக bbV உ) ப்ப (லாக bbV
உ) ப்ப (லான bbV உ) ப்ப (லான bbV
_சுக) ப்பி (ரச pp _சுக) ப்பி (ரச pp
அதிக) ப்பி (ரசங்க pp அதிக) ப்பி (ரசங்க pp
_மலை) ப்பி (ரசங்க pp _மலை) ப்பி (ரசங்க pp
_மலை) ப்பி (ரசங்க pp
_சண்ட) ப்பி (ரசண்ட pp _சண்ட) ப்பி (ரசண்ட pp
L03) ப்பிரச (ார pprVtS L03) ப்பிரச (ார pprVtS
_கை) ப்பி (ரசுர pp _கை) ப்பி (ரசுர pp
இரத்த) ப்பி (ரவாக pp இரத்த) ப்பி (ரவாக pp
_ஒL10ி) ப்பி (ரவாக pp _ஒL10ி) ப்பி (ரவாக pp
_மணி) ப்பி (ரவாள pp _மணி) ப்பி (ரவாள pp
_மணி) ப்பி (ரவாள pp
தேச) ப்பி (ரஷ்ட pp தேச) ப்பி (ரஷ்ட pp
_ஜாதி) ப்பி (ரஷ்ட pp _ஜாதி) ப்பி (ரஷ்ட pp
_வான) ப்பி (ரஸ்த pp _வான) ப்பி (ரஸ்த pp
_கஜ) ப்ப (ிருஷ்ட bb _கஜ) ப்ப (ிருஷ்ட bb
L03) ப்பி (ரேத pp L03) ப்பி (ரேத pp
L03) ப்பி (ரேத pp L03) ப்பி (ரேத pp
L03) ப்பி (ரேத pp
L03) ப்பி (ரேரணை pp L03) ப்பி (ரேரணை pp
_ஹ) ப்ப (ிள bb _ஹ) ப்ப (ிள bb
_க்ள) ப்ப (ுகள bb _க்ள) ப்ப (ுகள bb
_ல) ப்ப (ை bb _ல) ப்ப (ை bb
_தர்) ப்ப (ை bb _தர்) ப்ப (ை bb
_மர) ப்ப (ொம்மை bb _மர) ப்ப (ொம்மை bb
ரா) ப்ப (ோஜன bb
_ரா) ப்ப (ோஜன bb _ரா) ப்ப (ோஜன bb
துர்) ப்ப (ோதனை bb துர்) ப்ப (ோதனை bb
_கே) ப் (மாரி p _கே) ப் (மாரி p

+ 13
- 8
docs/commands.html View File

<dt> <dt>
<strong>-s &lt;integer&gt;</strong><br> <strong>-s &lt;integer&gt;</strong><br>
<dd>Sets the speed in words-per-minute (approximate values for the default English voice, others may differ slightly). The default value is 175. I generally use a faster speed <dd>Sets the speed in words-per-minute (approximate values for the default English voice, others may differ slightly). The default value is 175. I generally use a faster speed
of 200. Range 80 to 450. Larger value are rounded down to the maximum.
of 260. The lower limit is 80. There is no upper limit, but about 500 is probably a practical maximum.
<p> <p>
<dt> <dt>
<strong>-b &lt;integer&gt;</strong><br> <strong>-b &lt;integer&gt;</strong><br>
<p> <p>
<dt> <dt>
<strong>-x</strong><br> <strong>-x</strong><br>
<dd>The phoneme mnemonics, into which the input text is translated, are
written to stdout.
<dd>The phoneme mnemonics, into which the input text is translated, are written to stdout.
If a phoneme name contains more than one letter (eg. [tS]), the --sep or --tie option can be used to distinguish
this from separate phonemes.
<p> <p>
<dt> <dt>
<strong>-X</strong><br> <strong>-X</strong><br>
<dt><strong>--ipa</strong><br> <dt><strong>--ipa</strong><br>
<dd> <dd>
Writes phonemes to stdout, using the International Phonetic Alphabet (IPA).<br> Writes phonemes to stdout, using the International Phonetic Alphabet (IPA).<br>
If a phoneme name contains more than one letter (eg. [tS]) an optional parameter can be used to distinguish
If a phoneme name contains more than one letter (eg. [tS]), the --sep or --tie option can be used to distinguish
this from separate phonemes. this from separate phonemes.
<br>
<code>--pho=1 </code> Use a tie character (U+0361) before subsequence letters.
<br>
<code>--pho=2 </code> Use a zero-width-joiner (U+200D) before subsequent letters.
<p> <p>
<dt><strong>--path [="&lt;directory path&gt;"]</strong><br> <dt><strong>--path [="&lt;directory path&gt;"]</strong><br>
<dd> <dd>
<dd> <dd>
Speaks the names of punctuation characters when they are encountered in the text. If &lt;characters&gt; are given, then only those listed punctuation characters are spoken, eg. <code> --punct=".,;?"</code> Speaks the names of punctuation characters when they are encountered in the text. If &lt;characters&gt; are given, then only those listed punctuation characters are spoken, eg. <code> --punct=".,;?"</code>
<p> <p>
<dt><strong>--sep [=&lt;character&gt;]</strong><br>
<dd>
The character is used to separate individual phonemes in the output which is produced by the -x or --ipa options. The default is a space character. The character z means use a ZWNJ character (U+200c).
<p>
<dt><strong>--split [=&lt;minutes&gt;]</strong><br> <dt><strong>--split [=&lt;minutes&gt;]</strong><br>
<dd> <dd>
Used with <strong>-w</strong>, it starts a new WAV file every <code>&lt;minutes&gt;</code> minutes, at the next sentence boundary. Used with <strong>-w</strong>, it starts a new WAV file every <code>&lt;minutes&gt;</code> minutes, at the next sentence boundary.
<p> <p>
<dt><strong>--tie [=&lt;character&gt;]</strong><br>
<dd>
The character is used within multi-letter phonemes in the output which is produced by the -x or --ipa options. The default is the tie character&nbsp; &#x361; &nbsp;U+361. The character z means use a ZWJ character (U+200d).
<p>
<dt> <dt>
<strong>--voices [=&lt;language code&gt;]</strong><br> <strong>--voices [=&lt;language code&gt;]</strong><br>
<dd>Lists the available voices.<br> <dd>Lists the available voices.<br>

BIN
espeak-data/mbrola_ph/af1_phtrans View File


BIN
espeak-data/mbrola_ph/ca1_phtrans View File


BIN
espeak-data/mbrola_ph/cr1_phtrans View File


BIN
espeak-data/mbrola_ph/cs_phtrans View File


BIN
espeak-data/mbrola_ph/de2_phtrans View File


BIN
espeak-data/mbrola_ph/de4_phtrans View File


BIN
espeak-data/mbrola_ph/de6_phtrans View File


BIN
espeak-data/mbrola_ph/ee1_phtrans View File


BIN
espeak-data/mbrola_ph/en1_phtrans View File


BIN
espeak-data/mbrola_ph/es_phtrans View File


BIN
espeak-data/mbrola_ph/fr1_phtrans View File


BIN
espeak-data/mbrola_ph/gr2_phtrans View File


BIN
espeak-data/mbrola_ph/grc-de6_phtrans View File


BIN
espeak-data/mbrola_ph/hn1_phtrans View File


BIN
espeak-data/mbrola_ph/hu1_phtrans View File


BIN
espeak-data/mbrola_ph/ic1_phtrans View File


BIN
espeak-data/mbrola_ph/id1_phtrans View File


BIN
espeak-data/mbrola_ph/in1_phtrans View File


BIN
espeak-data/mbrola_ph/ir1_phtrans View File


BIN
espeak-data/mbrola_ph/it3_phtrans View File


BIN
espeak-data/mbrola_ph/la1_phtrans View File


BIN
espeak-data/mbrola_ph/lt1_phtrans View File


BIN
espeak-data/mbrola_ph/lt2_phtrans View File


BIN
espeak-data/mbrola_ph/mx1_phtrans View File


BIN
espeak-data/mbrola_ph/mx2_phtrans View File


BIN
espeak-data/mbrola_ph/nl_phtrans View File


BIN
espeak-data/mbrola_ph/pl1_phtrans View File


BIN
espeak-data/mbrola_ph/pt1_phtrans View File


BIN
espeak-data/mbrola_ph/pt_phtrans View File


BIN
espeak-data/mbrola_ph/ptbr4_phtrans View File


BIN
espeak-data/mbrola_ph/ptbr_phtrans View File


BIN
espeak-data/mbrola_ph/ro1_phtrans View File


BIN
espeak-data/mbrola_ph/sv2_phtrans View File


BIN
espeak-data/mbrola_ph/sv_phtrans View File


BIN
espeak-data/mbrola_ph/tr1_phtrans View File


BIN
espeak-data/mbrola_ph/us3_phtrans View File


BIN
espeak-data/mbrola_ph/us_phtrans View File


BIN
espeak-data/mbrola_ph/vz_phtrans View File


espeak-data/voices/test/eu → espeak-data/voices/europe/eu View File


+ 23
- 0
mkdictlist View File

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


# Map voice names to dictionaries when these do not match. # Map voice names to dictionaries when these do not match.
special_voices = { special_voices = {
if filename.startswith('ph_'): if filename.startswith('ph_'):
phoneme_data.add(phondata_path) phoneme_data.add(phondata_path)


def find_mbrola_voices(path):
for filename in os.listdir(path):
mbrola.add(filename)

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


for filename in os.listdir('dictsource'): for filename in os.listdir('dictsource'):
if filename.endswith('_rules') or filename.endswith('_list') or filename in ['bg_listx', 'it_listx']: if filename.endswith('_rules') or filename.endswith('_list') or filename in ['bg_listx', 'it_listx']:
f.write('endif\n') 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) f.write('\tcd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=%s && cd ..\n' % name)


def write_mbrola_make_rules(f):
f.write('\n##### mbrola:\n')
f.write('\n')
f.write('mbrola: \\\n')
for n, name in enumerate(sorted(mbrola)):
if n == len(mbrola) - 1:
f.write('\tespeak-data/mbrola_ph/%s_phtrans\n' % name)
else:
f.write('\tespeak-data/mbrola_ph/%s_phtrans \\\n' % name)
for name in sorted(mbrola):
f.write('\n')
f.write('espeak-data/mbrola_ph/%s_phtrans: phsource/mbrola/%s src/espeakedit\n' % (name, name))
f.write('\tmkdir -p espeak-data/mbrola_ph\n')
f.write('\tESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<\n')

try: try:
filename = sys.argv[1] filename = sys.argv[1]
except: except:
f.write(prelude) f.write(prelude)
write_phoneme_data_rules(f) write_phoneme_data_rules(f)
write_dictionary_make_rules(f) write_dictionary_make_rules(f)
write_mbrola_make_rules(f)
else: else:
write_phoneme_data_rules(sys.stdout) write_phoneme_data_rules(sys.stdout)
write_dictionary_make_rules(sys.stdout) write_dictionary_make_rules(sys.stdout)
write_mbrola_make_rules(sys.stdout)

+ 2
- 0
phsource/mbrola/de6 View File



// phonemes for English words // phonemes for English words
0 @L NULL 40 @ l 0 @L NULL 40 @ l
0 m- NULL 20 @ m
0 n- NULL 20 @ n
0 @2 NULL 0 @ 0 @2 NULL 0 @
0 @5 NULL 0 @ 0 @5 NULL 0 @
0 a# NULL 0 @ 0 a# NULL 0 @

+ 167
- 186
phsource/ph_basque View File


//====================================================
// Basque - based on Base2
//====================================================

phoneme a
vowel starttype #a endtype #a
length 200
FMT(vowel/a_4)
endphoneme


phoneme a2 // delete if the next vowel is 'a'. Used for numbers.
vowel starttype #a endtype #a
length 200

IF nextPh(#a) THEN
ChangePhoneme(NULL) // merge consecutive 'a'
ELSE
ChangePhoneme(a)
ENDIF
endphoneme


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


phoneme i
vowel starttype #i endtype #i
length 190
IfNextVowelAppend(;)
FMT(vowel/i)
endphoneme


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


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


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



// Note: I have made [s] and [z] the same, and similarly [ts] and [tz]
// These should be changed to the correct "s", "z", "ts" and "tz" sounds fo Basque.

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

IF nextPh(isPause) THEN
WAV(ufric/sh_rfx, 60)
ENDIF
WAV(ufric/sh_rfx, 90) // different from s but probably not correct
endphoneme


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

// z+z=tz, z+g=zk, z+g=zt, z+b=zp
IF nextPh(z) THEN
ChangeNextPhoneme(tz)
ChangePhoneme(NULL)
ELSEIF nextPh(g) THEN
ChangeNextPhoneme(k)
ELSEIF nextPh(d) THEN
ChangeNextPhoneme(t)
ELSEIF nextPh(b) THEN
ChangeNextPhoneme(p)
ENDIF
IF nextPh(isPause) THEN
WAV(ufric/s_, 60)
ENDIF
WAV(ufric/s, 80)
endphoneme


phoneme ts
vls alv afr sibilant
ipa tʂ
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/ts_)
ENDIF
WAV(ustop/ts)
endphoneme


phoneme tz
vls alv afr sibilant
ipa ts
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/ts_)
ENDIF
WAV(ustop/ts)
endphoneme


phoneme t
vls dnt stop
lengthmod 2
// t+g=k, t+d=t, t+z=tz
IF nextPh(g) THEN
ChangeNextPhoneme(k)
ChangePhoneme(NULL)
ELSEIF nextPh(d) THEN
ChangeNextPhoneme(t)
ChangePhoneme(NULL)
ELSEIF nextPh(z) THEN
ChangeNextPhoneme(tz)
ChangePhoneme(NULL)
ENDIF
CALL base2/t
endphoneme


phoneme r
vcd alv flp rhotic
brkafter
ipa ɾ
lengthmod 3

IF nextPhW(isVowel) THEN
ChangePhoneme(**)
ENDIF

CALL base/*
endphoneme


phoneme b
import_phoneme es/b
endphoneme

phoneme d
import_phoneme es/d
endphoneme

phoneme g
import_phoneme es/g
endphoneme

phoneme n
vcd alv nasal
lengthmod 4

IF prevPhW(i) AND nextPhW(isVowel) THEN
ChangePhoneme(n^)
ENDIF
CALL base/n
endphoneme
//====================================================
// Basque - based on Base2
//====================================================
phoneme a
vowel starttype #a endtype #a
length 200
FMT(vowel/a_4)
endphoneme
phoneme a2 // delete if the next vowel is 'a'. Used for numbers.
vowel starttype #a endtype #a
length 200
IF nextPh(#a) THEN
ChangePhoneme(NULL) // merge consecutive 'a'
ENDIF
FMT(vowel/a_4)
endphoneme
phoneme e
vowel starttype #e endtype #e
length 200
FMT(vowel/e_mid2)
endphoneme
phoneme i
vowel starttype #i endtype #i
length 190
IfNextVowelAppend(;)
FMT(vowel/i)
endphoneme
phoneme o
vowel starttype #o endtype #o
length 200
FMT(vowel/oo)
endphoneme
phoneme u
vowel starttype #u endtype #u
length 200
FMT(vowel/u_bck2)
endphoneme
phoneme Y
vowel starttype #@ endtype #@
length 200
FMT(vowel/y#)
endphoneme
phoneme s
import_phoneme es/s
endphoneme
phoneme z
vls alv frc sibilant
ipa s
lengthmod 3
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(isPause) THEN
WAV(ufric/z_eu, 60)
ENDIF
WAV(ufric/z_eu, 90)
endphoneme
phoneme ts
vls alv afr sibilant
ipa t?
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(isPause2) THEN
WAV(ufric/ts_eu, 60)
ENDIF
WAV(ufric/ts_eu, 90)
endphoneme
phoneme tz
vls alv afr sibilant
ipa ts
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(isPause2) THEN
WAV(ufric/tz_eu, 90)
ENDIF
WAV(ufric/tz_eu, 60)
endphoneme
phoneme t
vls dnt stop
lengthmod 2
CALL base2/t
endphoneme
phoneme r
vcd alv flp rhotic
brkafter
ipa ?
lengthmod 3
IF nextPhW(isVowel) THEN
ChangePhoneme(**)
ENDIF
CALL base/*
endphoneme
phoneme b
import_phoneme es/b
endphoneme
phoneme d
import_phoneme es/d
endphoneme
phoneme g
import_phoneme es/g
endphoneme
phoneme n
vcd alv nasal
lengthmod 4
IF prevPhW(#i) AND nextPhW(isVowel) THEN
ChangePhoneme(n^)
ENDIF
CALL base/n
endphoneme
phoneme n2 // doesn't palatalise, used for exceptions
vcd alv nasal
lengthmod 4
CALL base/n
endphoneme
phoneme l
liquid
IF prevPhW(#i) AND nextPhW(isVowel) THEN
ChangePhoneme(l^)
ENDIF
CALL base/l
endphoneme
phoneme l2 // same as l2
liquid
CALL base/l
endphoneme

+ 4
- 3
phsource/ph_english View File



phoneme i // optional variant of [I] for end of words phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i vowel starttype #i endtype #i
unstressed
ipa i ipa i
length 150 length 150
IfNextVowelAppend(;) IfNextVowelAppend(;)
IF NOT thisPh(isFinalVowel) THEN
ChangePhoneme(I)
ENDIF
// IF NOT thisPh(isFinalVowel) THEN
// ChangePhoneme(I)
// ENDIF
FMT(vowel/ii_7) FMT(vowel/ii_7)
endphoneme endphoneme

+ 2
- 2
phsource/ph_english_us View File



IF nextPh(isNasal) THEN IF nextPh(isNasal) THEN
FMT(vnasal/ee_n2) FMT(vnasal/ee_n2)
ELSEIF nextPh(r) THEN
length 230
ELSEIF nextPh(r) AND thisPh(isStressed) THEN
length 190
FMT(vwl_en_us/ar) FMT(vwl_en_us/ar)
ENDIF ENDIF
FMT(vwl_en_us/a) FMT(vwl_en_us/a)

+ 1
- 17
phsource/ph_tamil View File

endphoneme endphoneme


phoneme r phoneme r
liquid rhotic
lengthmod 3
IF thisPh(isWordEnd) THEN
CALL base/r/
ENDIF
IF prevPhW(isVowel) THEN
IF nextPhW(isNotVowel) THEN
ChangePhoneme(**)
ENDIF

ChangePhoneme(*)
ENDIF
CALL base/r
ipa ɾ
import_phoneme base/r
endphoneme endphoneme



+ 2
- 1
phsource/phonemes View File

phonemetable om base phonemetable om base
include ph_oromo include ph_oromo


//phonemetable en2 en
//phonemetable en-test base
//include ph_english_test //include ph_english_test


BIN
phsource/ufric/ts_eu.wav View File


BIN
phsource/ufric/tz_eu.wav View File


BIN
phsource/ufric/z_eu.wav View File


+ 11
- 3
src/compiledata.cpp View File

ReadPhondataManifest(); ReadPhondataManifest();
} // end of CompilePhonemeData } // end of CompilePhonemeData


#include <errno.h>



void CompileMbrola()
void CompileMbrola(const char *mbrola_file)
{//================= {//=================
char *p; char *p;
FILE *f_in; FILE *f_in;
int mbrola_ctrl = 20; // volume in 1/16 ths int mbrola_ctrl = 20; // volume in 1/16 ths
MBROLA_TAB data[N_PHONEME_TAB]; MBROLA_TAB data[N_PHONEME_TAB];


wxString filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN);
wxString filepath;
if (mbrola_file == NULL)
{
filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN);
}
else
{
filepath = mbrola_file;
}
strcpy(buf,filepath.mb_str(wxConvLocal)); strcpy(buf,filepath.mb_str(wxConvLocal));
if((f_in = fopen(buf,"r")) == NULL) if((f_in = fopen(buf,"r")) == NULL)
{ {

+ 18
- 3
src/compiledict.cpp View File

static char group_name[LEN_GROUP_NAME+1]; static char group_name[LEN_GROUP_NAME+1];
static int group3_ix; static int group3_ix;


#define N_RULES 2000 // max rules for each group
#define N_RULES 3000 // max rules for each group






int count=0; int count=0;
int different; int different;
int wc; int wc;
int err_n_rules=0;
const char *prev_rgroup_name; const char *prev_rgroup_name;
unsigned int char_code; unsigned int char_code;
int compile_mode=0; int compile_mode=0;
count += n_rules; count += n_rules;
} }
n_rules = 0; n_rules = 0;
err_n_rules = 0;


if(compile_mode == 2) if(compile_mode == 2)
{ {
{ {
case 1: // .group case 1: // .group
prule = compile_rule(buf); prule = compile_rule(buf);
if((prule != NULL) && (n_rules < N_RULES))
if(prule != NULL)
{ {
rules[n_rules++] = prule;
if(n_rules < N_RULES)
{
rules[n_rules++] = prule;
}
else
{
if(err_n_rules == 0)
{
fprintf(stderr, "\nExceeded limit of rules (%d) in group '%s'\n", N_RULES, group_name);
error_count++;
err_n_rules = 1;
}
}

} }
break; break;



+ 54
- 45
src/dictionary.cpp View File

/* Called after a clause has been translated into phonemes, in order /* Called after a clause has been translated into phonemes, in order
to display the clause in phoneme mnemonic form. to display the clause in phoneme mnemonic form.


phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
bit 4: 0=eSpeak phoneme names, 1=IPA
phoneme_mode
bit 1: use IPA phoneme names
bit 7: use tie between letters in multi-character phoneme names
bits 8-23 tie or separator character

*/ */


int ix; int ix;
int flags; int flags;
int use_ipa; int use_ipa;
int use_tie; int use_tie;
int separate_phonemes = 0;
int separate_phonemes;
char phon_buf[30]; char phon_buf[30];
char phon_buf2[30]; char phon_buf2[30];
PHONEME_LIST *plist; PHONEME_LIST *plist;


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

use_ipa = phoneme_mode & 0x10;
use_tie = phoneme_mode & 0x0f;


if(phon_out_buf == NULL) if(phon_out_buf == NULL)
{ {
} }
} }


if(use_tie >= 3)
use_ipa = phoneme_mode & espeakPHONEMES_IPA;
if(phoneme_mode & espeakPHONEMES_TIE)
{
use_tie = phoneme_mode >> 8;
separate_phonemes = 0;
}
else
{ {
// separate individual phonemes with underscores
separate_phonemes = '_';
separate_phonemes = phoneme_mode >> 8;
use_tie = 0; use_tie = 0;
} }


WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
if(plist->newword) if(plist->newword)
*buf++ = ' '; *buf++ = ' ';
else

if((!plist->newword) || (separate_phonemes == ' '))
{ {
if((separate_phonemes != 0) && (ix > 1)) if((separate_phonemes != 0) && (ix > 1))
{ {
utf8_in(&c, phon_buf2); utf8_in(&c, phon_buf2);
if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter
{ {
*buf++ = separate_phonemes;
buf += utf8_out(separate_phonemes, buf);
} }
} }
} }
for(p=phon_buf2; *p != 0;) for(p=phon_buf2; *p != 0;)
{ {
p += utf8_in(&c, p); p += utf8_in(&c, p);
if(use_tie > 0)
if(use_tie != 0)
{ {
// look for non-inital alphabetic character, but not diacritic, superscript etc. // look for non-inital alphabetic character, but not diacritic, superscript etc.
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c))
{ {
buf += utf8_out(char_tie[use_tie-1], buf);
buf += utf8_out(use_tie, buf);
} }
} }
buf += utf8_out(c, buf); buf += utf8_out(c, buf);
PHONEME_TAB *ph; PHONEME_TAB *ph;
int stress; int stress;
int max_stress; int max_stress;
int max_stress_input; // any stress specified in the input?
int vowel_count; // num of vowels + 1 int vowel_count; // num of vowels + 1
int ix; int ix;
int v; int v;
unstressed_word = 1; unstressed_word = 1;
} }


max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1);
max_stress = max_stress_input = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1);
if((max_stress < 0) && dictionary_flags) if((max_stress < 0) && dictionary_flags)
{ {
max_stress = 0; max_stress = 0;
{ {
stressed_syllable = vowel_count - 2; stressed_syllable = vowel_count - 2;


if(stressflags & (S_FINAL_SPANISH | S_FINAL_STRESS_C))
if(stressflags & S_FINAL_SPANISH)
{ {
// LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's' // LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's'
if(phoneme_tab[final_ph]->type != phVOWEL) if(phoneme_tab[final_ph]->type != phVOWEL)
{ {
if(stressflags & S_FINAL_STRESS_C)
mnem = phoneme_tab[final_ph]->mnemonic;

if(tr->translator_name == L('a','n'))
{ {
stressed_syllable = vowel_count - 1;
if(((mnem != 's') && (mnem !='n')) || phoneme_tab[final_ph2]->type != phVOWEL)
stressed_syllable = vowel_count - 1; // stress on last syllable
} }
else else
if(tr->translator_name == L('i','a'))
{ {
mnem = phoneme_tab[final_ph]->mnemonic;

if(tr->translator_name == L('a','n'))
{
if(((mnem != 's') && (mnem !='n')) || phoneme_tab[final_ph2]->type != phVOWEL)
stressed_syllable = vowel_count - 1; // stress on last syllable
}
else
if(tr->translator_name == L('i','a'))
if((mnem != 's') || phoneme_tab[final_ph2]->type != phVOWEL)
stressed_syllable = vowel_count - 1; // stress on last syllable
}
else
{
if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL))
{ {
if((mnem != 's') || phoneme_tab[final_ph2]->type != phVOWEL)
stressed_syllable = vowel_count - 1; // stress on last syllable
// -ns stress remains on penultimate syllable
} }
else
else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL))
{ {
if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL))
{
// -ns stress remains on penultimate syllable
}
else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL))
{
stressed_syllable = vowel_count - 1;
}
stressed_syllable = vowel_count - 1;
} }
} }
} }
break; break;
} }


if((stressflags & S_FINAL_VOWEL_UNSTRESSED) && (vowel_count > 2) && (max_stress_input < 3) && (vowel_stress[vowel_count - 1] == 4))
{
if(phoneme_tab[final_ph]->type == phVOWEL)
{
// don't allow stress on a word-final vowel
vowel_stress[vowel_count - 1] = 1;
vowel_stress[vowel_count - 2] = 4;
}
}

/* now guess the complete stress pattern */ /* now guess the complete stress pattern */
if(max_stress < 4) if(max_stress < 4)
stress = 4; /* no primary stress marked, use for 1st syllable */ stress = 4; /* no primary stress marked, use for 1st syllable */
total_consumed = consumed; total_consumed = consumed;
} }


if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0))
if((option_phonemes & espeakPHONEMES_TRACE) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0))
{ {
// show each rule that matches, and it's points score // show each rule that matches, and it's points score
int pts; int pts;
word_copy[ix] = 0; word_copy[ix] = 0;




if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
if((option_phonemes & espeakPHONEMES_TRACE) && ((word_flags & FLAG_NO_TRACE)==0))
{ {
char wordbuf[120]; char wordbuf[120];
unsigned int ix; unsigned int ix;
return(0); return(0);
} }


if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
if((option_phonemes & espeakPHONEMES_TRACE) && ((word_flags & FLAG_NO_TRACE)==0))
{ {
fprintf(f_trans,"\n"); fprintf(f_trans,"\n");
} }


if(phoneme_len == 0) if(phoneme_len == 0)
{ {
if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf));
fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf); fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf);
if(flags != NULL) if(flags != NULL)
flags[0] |= FLAG_FOUND; // this flag indicates word was found in dictionary flags[0] |= FLAG_FOUND; // this flag indicates word was found in dictionary


if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
char ph_decoded[N_WORD_PHONEMES]; char ph_decoded[N_WORD_PHONEMES];
int textmode; int textmode;
word1 = *wordptr; word1 = *wordptr;
*wordptr = &word_replacement[2]; *wordptr = &word_replacement[2];


if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
len = found - word1; len = found - word1;
memcpy(word,word1,len); // include multiple matching words memcpy(word,word1,len); // include multiple matching words
{ {
utf8_out(tr->langopts.suffix_add_e, &word_end[1]); utf8_out(tr->langopts.suffix_add_e, &word_end[1]);


if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
fprintf(f_trans,"add e\n"); fprintf(f_trans,"add e\n");
} }

+ 86
- 17
src/espeak.cpp View File

"-p <integer>\n" "-p <integer>\n"
"\t Pitch adjustment, 0 to 99, default is 50\n" "\t Pitch adjustment, 0 to 99, default is 50\n"
"-s <integer>\n" "-s <integer>\n"
"\t Speed in words per minute, 80 to 450, default is 175\n"
"\t Speed in approximate words per minute. The default is 175\n"
"-v <voice name>\n" "-v <voice name>\n"
"\t Use voice file of this name from espeak-data/voices\n" "\t Use voice file of this name from espeak-data/voices\n"
"-w <wave file name>\n" "-w <wave file name>\n"
"\t Compile pronunciation rules and dictionary from the current\n" "\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n" "\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n"
"--path=\"<path>\"\n" "--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n" "\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
"--punct=\"<characters>\"\n" "--punct=\"<characters>\"\n"
"\t Speak the names of punctuation characters during speaking. If\n" "\t Speak the names of punctuation characters during speaking. If\n"
"\t =<characters> is omitted, all punctuation is spoken.\n" "\t =<characters> is omitted, all punctuation is spoken.\n"
"--split=\"<minutes>\"\n"
"--sep=<character>\n"
"\t Separate phonemes (from -x --ipa) with <character>.\n"
"\t Default is space, z means ZWJN character.\n"
"--split=<minutes>\n"
"\t Starts a new WAV file every <minutes>. Used with -w\n" "\t Starts a new WAV file every <minutes>. Used with -w\n"
"--stdout Write speech output to stdout\n" "--stdout Write speech output to stdout\n"
"--tie=<character>\n"
"\t Use a tie character within multi-letter phoneme names.\n"
"\t Default is U+361, z means ZWJ character.\n"
"--version Shows version number and date, and location of espeak-data\n" "--version Shows version number and date, and location of espeak-data\n"
"--voices=<language>\n" "--voices=<language>\n"
"\t List the available voices for the specified language.\n" "\t List the available voices for the specified language.\n"
} }
} }


int utf8_in(int *c, const char *buf)
{//=================================
// Read a unicode characater from a UTF8 string
// Returns the number of UTF8 bytes used.
// backwards: set if we are moving backwards through the UTF8 string
int c1;
int n_bytes;
int ix;
static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07};

n_bytes = 0;

if((c1 = *buf++) & 0x80)
{
if((c1 & 0xe0) == 0xc0)
n_bytes = 1;
else if((c1 & 0xf0) == 0xe0)
n_bytes = 2;
else if((c1 & 0xf8) == 0xf0)
n_bytes = 3;

c1 &= mask[n_bytes];
for(ix=0; ix<n_bytes; ix++)
{
c1 = (c1 << 6) + (*buf++ & 0x3f);
}
}
*c = c1;
return(n_bytes+1);
}



void DisplayVoices(FILE *f_out, char *language) void DisplayVoices(FILE *f_out, char *language)
{//============================================ {//============================================
{"pho", no_argument, 0, 0x109}, {"pho", no_argument, 0, 0x109},
{"ipa", optional_argument, 0, 0x10a}, {"ipa", optional_argument, 0, 0x10a},
{"version", no_argument, 0, 0x10b}, {"version", no_argument, 0, 0x10b},
{"sep", optional_argument, 0, 0x10c},
{"tie", optional_argument, 0, 0x10d},
{0, 0, 0, 0} {0, 0, 0, 0}
}; };


int wordgap = -1; int wordgap = -1;
int option_capitals = -1; int option_capitals = -1;
int option_punctuation = -1; int option_punctuation = -1;
int option_phonemes = 0;
int option_mbrola_phonemes = 0;
int phonemes_separator = 0;
int phoneme_options = 0;
int option_linelength = 0; int option_linelength = 0;
int option_waveout = 0; int option_waveout = 0;


break; break;


case 'x': case 'x':
option_phonemes = 1;
phoneme_options |= espeakPHONEMES_SHOW;
break; break;


case 'X': case 'X':
option_phonemes = 2;
phoneme_options |= espeakPHONEMES_TRACE;
break; break;


case 'm': case 'm':
break; break;


case 0x109: // --pho case 0x109: // --pho
option_mbrola_phonemes = 16;
phoneme_options |= espeakPHONEMES_MBROLA;
break; break;


case 0x10a: // --ipa case 0x10a: // --ipa
option_phonemes = 3;
phoneme_options |= espeakPHONEMES_IPA;
if(optarg2 != NULL) if(optarg2 != NULL)
{ {
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>3))
// deprecated and obsolete
switch(atoi(optarg2))
{ {
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;
case 1:
phonemes_separator = '_';
break;
case 2:
phonemes_separator = 0x0361;
phoneme_options |= espeakPHONEMES_TIE;
break;
case 3:
phonemes_separator = 0x200d; // ZWJ
phoneme_options |= espeakPHONEMES_TIE;
break;
} }
option_phonemes += value;
} }
break; break;


case 0x10b: // -version
case 0x10b: // --version
PrintVersion(); PrintVersion();
exit(0); exit(0);
case 0x10c: // --sep
phoneme_options |= espeakPHONEMES_SHOW;
if(optarg2 == 0)
phonemes_separator = ' ';
else
utf8_in(&phonemes_separator, optarg2);
if(phonemes_separator == 'z')
phonemes_separator = 0x200c; // ZWNJ
break;

case 0x10d: // --tie
phoneme_options |= (espeakPHONEMES_SHOW | espeakPHONEMES_TIE);
if(optarg2 == 0)
phonemes_separator = 0x0361; // default: combining-double-inverted-breve
else
utf8_in(&phonemes_separator, optarg2);
if(phonemes_separator == 'z')
phonemes_separator = 0x200d; // ZWJ
break;



default: default:
exit(0); exit(0);
espeak_SetParameter(espeakLINELENGTH,option_linelength,0); espeak_SetParameter(espeakLINELENGTH,option_linelength,0);
if(option_punctuation == 2) if(option_punctuation == 2)
espeak_SetPunctuationList(option_punctlist); espeak_SetPunctuationList(option_punctlist);
espeak_SetPhonemeTrace(option_phonemes | option_mbrola_phonemes,f_phonemes_out);

espeak_SetPhonemeTrace(phoneme_options | (phonemes_separator << 8), f_phonemes_out);


if(filename[0]==0) if(filename[0]==0)
{ {

+ 12
- 1
src/espeakedit.cpp View File

extern void init_z(); extern void init_z();
extern void CompilePhonemeData(void); extern void CompilePhonemeData(void);
extern void CompileSampleRate(void); extern void CompileSampleRate(void);
extern void CompileMbrola();
extern void CompileMbrola(const char *mbrola_file = NULL);
extern void CompileIntonation(); extern void CompileIntonation();
extern void InitSpectrumDisplay(); extern void InitSpectrumDisplay();
extern void InitProsodyDisplay(); extern void InitProsodyDisplay();
CompilePhonemeData(); CompilePhonemeData();
CompileIntonation(); CompileIntonation();
} }
else if(argc > 2 && strcmp(param,"--compile-mbrola")==0)
{
samplerate_native = samplerate = 22050;
LoadPhData(NULL);
if(LoadVoice("", 0) == NULL)
{
fprintf(stderr, "Failed to load default voice\n");
exit(1);
}
CompileMbrola(argv[2]);
}
exit(0); exit(0);
} }



+ 52
- 13
src/speak.cpp View File

"-p <integer>\n" "-p <integer>\n"
"\t Pitch adjustment, 0 to 99, default is 50\n" "\t Pitch adjustment, 0 to 99, default is 50\n"
"-s <integer>\n" "-s <integer>\n"
"\t Speed in words per minute, 80 to 450, default is 175\n"
"\t Speed in approximate words per minute. The default is 175\n"
"-v <voice name>\n" "-v <voice name>\n"
"\t Use voice file of this name from espeak-data/voices\n" "\t Use voice file of this name from espeak-data/voices\n"
"-w <wave file name>\n" "-w <wave file name>\n"
"\t Compile pronunciation rules and dictionary from the current\n" "\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n" "\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n"
"--path=\"<path>\"\n" "--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n" "\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
"--punct=\"<characters>\"\n" "--punct=\"<characters>\"\n"
"\t Speak the names of punctuation characters during speaking. If\n" "\t Speak the names of punctuation characters during speaking. If\n"
"\t =<characters> is omitted, all punctuation is spoken.\n" "\t =<characters> is omitted, all punctuation is spoken.\n"
"--split=\"<minutes>\"\n"
"--sep=<character>\n"
"\t Separate phonemes (from -x --ipa) with <character>.\n"
"\t Default is space, z means ZWJN character.\n"
"--split=<minutes>\n"
"\t Starts a new WAV file every <minutes>. Used with -w\n" "\t Starts a new WAV file every <minutes>. Used with -w\n"
"--stdout Write speech output to stdout\n" "--stdout Write speech output to stdout\n"
"--tie=<character>\n"
"\t Use a tie character within multi-letter phoneme names.\n"
"\t Default is U+361, z means ZWJ character.\n"
"--version Shows version number and date, and location of espeak-data\n" "--version Shows version number and date, and location of espeak-data\n"
"--voices=<language>\n" "--voices=<language>\n"
"\t List the available voices for the specified language.\n" "\t List the available voices for the specified language.\n"
{"pho", no_argument, 0, 0x109}, {"pho", no_argument, 0, 0x109},
{"ipa", optional_argument, 0, 0x10a}, {"ipa", optional_argument, 0, 0x10a},
{"version", no_argument, 0, 0x10b}, {"version", no_argument, 0, 0x10b},
{"sep", optional_argument, 0, 0x10c},
{"tie", optional_argument, 0, 0x10d},
{0, 0, 0, 0} {0, 0, 0, 0}
}; };


int flag_stdin = 0; int flag_stdin = 0;
int flag_compile = 0; int flag_compile = 0;
int pitch_adjustment = 50; int pitch_adjustment = 50;
int phoneme_options = 0;
int phonemes_separator = 0;
espeak_VOICE voice_select; espeak_VOICE voice_select;
char filename[200]; char filename[200];
char voicename[40]; char voicename[40];
break; break;


case 'x': case 'x':
option_phonemes = 1;
phoneme_options |= espeakPHONEMES_SHOW;
break; break;


case 'X': case 'X':
option_phonemes = 2;
phoneme_options |= espeakPHONEMES_TRACE;
break; break;


case 'm': case 'm':
break; break;


case 0x109: // --pho case 0x109: // --pho
option_mbrola_phonemes = 16;
phoneme_options |= espeakPHONEMES_MBROLA;
break; break;


case 0x10a: // --ipa case 0x10a: // --ipa
option_phonemes = 3;
phoneme_options |= espeakPHONEMES_IPA;
if(optarg2 != NULL) if(optarg2 != NULL)
{ {
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>3))
// deprecated and obsolete
switch(atoi(optarg2))
{ {
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;
case 1:
phonemes_separator = '_';
break;
case 2:
phonemes_separator = 0x0361;
phoneme_options |= espeakPHONEMES_TIE;
break;
case 3:
phonemes_separator = 0x200d; // ZWJ
phoneme_options |= espeakPHONEMES_TIE;
break;
} }
option_phonemes += value;
} }
break; break;


init_path(argv[0],data_path); init_path(argv[0],data_path);
printf("speak text-to-speech: %s Data at: %s\n",version_string,path_home); printf("speak text-to-speech: %s Data at: %s\n",version_string,path_home);
exit(0); exit(0);
case 0x10c: // --sep
phoneme_options |= espeakPHONEMES_SHOW;
if(optarg2 == 0)
phonemes_separator = ' ';
else
utf8_in(&phonemes_separator, optarg2);
if(phonemes_separator == 'z')
phonemes_separator = 0x200c; // ZWNJ
break;

case 0x10d: // --tie
phoneme_options |= (espeakPHONEMES_SHOW | espeakPHONEMES_TIE);
if(optarg2 == 0)
phonemes_separator = 0x0361; // default: combining-double-inverted-breve
else
utf8_in(&phonemes_separator, optarg2);
if(phonemes_separator == 'z')
phonemes_separator = 0x200d; // ZWJ
break;


default: default:
exit(0); exit(0);
SetParameter(espeakPUNCTUATION,option_punctuation,0); SetParameter(espeakPUNCTUATION,option_punctuation,0);
SetParameter(espeakWORDGAP,wordgap,0); SetParameter(espeakWORDGAP,wordgap,0);


option_phonemes = phoneme_options | (phonemes_separator << 8);

if(pitch_adjustment != 50) if(pitch_adjustment != 50)
{ {
SetParameter(espeakPITCH,pitch_adjustment,0); SetParameter(espeakPITCH,pitch_adjustment,0);

+ 19
- 15
src/speak_lib.cpp View File

return(EE_INTERNAL_ERROR); return(EE_INTERNAL_ERROR);


option_phonemes = 0; option_phonemes = 0;
option_mbrola_phonemes = 0;
option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA));


VoiceReset(0); VoiceReset(0);
} // end of espeak_SetPunctuationList } // end of espeak_SetPunctuationList




ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
{//============================================================
ESPEAK_API void espeak_SetPhonemeTrace(int phonememode, FILE *stream)
{//===================================================================
ENTER("espeak_SetPhonemes"); ENTER("espeak_SetPhonemes");
/* Controls the output of phoneme symbols for the text
bits 0-3:
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries)
value=3 as (1), but produces IPA phoneme names rather than ascii
bit 4: produce mbrola pho data
*/
option_phonemes = value & 7;
option_mbrola_phonemes = value & 16;
/* phonememode: Controls the output of phoneme symbols for the text
bits 0-2:
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
value=2 as (1), but produces IPA phoneme names rather than ascii
bit 3: output a trace of how the translation was done (showing the matching rules and list entries)
bit 4: produce pho data for mbrola
bit 7: use (bits 8-23) as a tie within multi-letter phonemes names
bits 8-23: separator character, between phoneme names

stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout.
*/
option_phonemes = phonememode;
f_trans = stream; f_trans = stream;
if(stream == NULL) if(stream == NULL)
f_trans = stderr; f_trans = stderr;


ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode) ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode)
{//================================================================================================= {//=================================================================================================
/* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
bits 4-7: 0=eSpeak phoneme names, 1=IPA
/* phoneme_mode
bit 1: 0=eSpeak's ascii phoneme names, 1= International Phonetic Alphabet (as UTF-8 characters).
bit 7: use (bits 8-23) as a tie within multi-letter phonemes names
bits 8-23: separator character, between phoneme names
*/ */


option_multibyte = textmode & 7; option_multibyte = textmode & 7;

+ 24
- 15
src/speak_lib.h View File

#define ESPEAK_API #define ESPEAK_API
#endif #endif


#define ESPEAK_API_REVISION 9
#define ESPEAK_API_REVISION 10
/* /*
Revision 2 Revision 2
Added parameter "options" to eSpeakInitialize() Added parameter "options" to eSpeakInitialize()
Revision 9 30.May.2013 Revision 9 30.May.2013
Changed function espeak_TextToPhonemes(). Changed function espeak_TextToPhonemes().


Revision 10 29.Aug.2014
Changed phonememode parameter to espeak_TextToPhonemes() and espeak_SetPhonemeTrace

*/ */
/********************/ /********************/
/* Initialization */ /* Initialization */
EE_INTERNAL_ERROR. EE_INTERNAL_ERROR.
*/ */


#define espeakPHONEMES_SHOW 0x01
#define espeakPHONEMES_IPA 0x02
#define espeakPHONEMES_TRACE 0x08
#define espeakPHONEMES_MBROLA 0x10
#define espeakPHONEMES_TIE 0x80

#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
/* Controls the output of phoneme symbols for the text
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries)
value=3 as (1), but produces IPA rather than ascii phoneme names
ESPEAK_API void espeak_SetPhonemeTrace(int phonememode, FILE *stream);
/* phonememode: Controls the output of phoneme symbols for the text
bits 0-2:
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
value=2 as (1), but produces IPA phoneme names rather than ascii
bit 3: output a trace of how the translation was done (showing the matching rules and list entries)
bit 4: produce pho data for mbrola
bit 7: use (bits 8-23) as a tie within multi-letter phonemes names
bits 8-23: separator character, between phoneme names


stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout.
*/ */
espeakCHARS_WCHAR Wide characters (wchar_t) espeakCHARS_WCHAR Wide characters (wchar_t)
espeakCHARS_16BIT 16 bit characters. espeakCHARS_16BIT 16 bit characters.


phonememode: bits0-3:
0= just phonemes.
1= include ties (U+361) for phoneme names of more than one letter.
2= include zero-width-joiner for phoneme names of more than one letter.
3= separate phonemes with underscore characters.
phoneme_mode
bit 1: 0=eSpeak's ascii phoneme names, 1= International Phonetic Alphabet (as UTF-8 characters).
bit 7: use (bits 8-23) as a tie within multi-letter phonemes names
bits 8-23: separator character, between phoneme names


bits 4-7:
0= eSpeak's ascii phoneme names.
1= International Phonetic Alphabet (as UTF-8 characters).
*/ */


#ifdef __cplusplus #ifdef __cplusplus

+ 1
- 2
src/synth_mbrola.cpp View File

#include "translate.h" #include "translate.h"
#include "voice.h" #include "voice.h"


int option_mbrola_phonemes;


#ifdef INCLUDE_MBROLA #ifdef INCLUDE_MBROLA


if(*n_ph == 0) if(*n_ph == 0)
return(0); return(0);


if(option_mbrola_phonemes)
if(option_phonemes & espeakPHONEMES_MBROLA)
{ {
// send mbrola data to a file, not to the mbrola library // send mbrola data to a file, not to the mbrola library
f_mbrola = f_trans; f_mbrola = f_trans;

+ 8
- 2
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.48.10 09.Aug.14";
const char *version_string = "1.48.11 31.Aug.14";
const int version_phdata = 0x014801; const int version_phdata = 0x014801;


int option_device_number = -1; int option_device_number = -1;
int instn; int instn;
int instn2; int instn2;
int count; int count;
int check_endtype = 0;
PHONEME_TAB *ph; PHONEME_TAB *ph;
PHONEME_LIST *plist_this; PHONEME_LIST *plist_this;


case 0: // prevPh case 0: // prevPh
case 5: // prevPhW case 5: // prevPhW
plist--; plist--;
check_endtype = 1;
break; break;


case 1: // thisPh case 1: // thisPh
if((worddata==NULL) || (worddata->prev_vowel.ph == NULL)) if((worddata==NULL) || (worddata->prev_vowel.ph == NULL))
return(false); // no previous vowel return(false); // no previous vowel
plist = &(worddata->prev_vowel); plist = &(worddata->prev_vowel);
check_endtype = 1;
break; break;


case 9: // next3PhW case 9: // next3PhW
if((plist[0].sourceix) || (plist[-1].sourceix)) if((plist[0].sourceix) || (plist[-1].sourceix))
return(false); return(false);
plist-=2; plist-=2;
check_endtype = 1;
break; break;
} }


// 'data' is a phoneme number // 'data' is a phoneme number
if((phoneme_tab[data]->mnemonic == ph->mnemonic) == true) if((phoneme_tab[data]->mnemonic == ph->mnemonic) == true)
return(true); return(true);
if((which == 0) && (ph->type == phVOWEL))

// not an exact match, check for a vowel type (eg. #i )
if((check_endtype) && (ph->type == phVOWEL))
return(data == ph->end_type); // prevPh() match on end_type return(data == ph->end_type); // prevPh() match on end_type
return(data == ph->start_type); // thisPh() or nextPh(), match on start_type return(data == ph->start_type); // thisPh() or nextPh(), match on start_type
} }

+ 3
- 7
src/synthesize.cpp View File

CalcPitches(translator, clause_tone); CalcPitches(translator, clause_tone);
CalcLengths(translator); CalcLengths(translator);


if((option_phonemes > 0) || (phoneme_callback != NULL))
if((option_phonemes & 0xf) || (phoneme_callback != NULL))
{ {
int phoneme_mode = 0;
if(option_phonemes >= 3)
phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators

phon_out = GetTranslatedPhonemeString(phoneme_mode);
if(option_phonemes > 0)
phon_out = GetTranslatedPhonemeString(option_phonemes);
if(option_phonemes & 0xf)
{ {
fprintf(f_trans,"%s\n",phon_out); fprintf(f_trans,"%s\n",phon_out);
} }

+ 8
- 6
src/tr_languages.cpp View File

if(name2 == L_pap) if(name2 == L_pap)
{ {
// stress last syllable unless word ends with a vowel // stress last syllable unless word ends with a vowel
tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
tr->langopts.stress_rule = STRESSPOSN_1R;
tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
} }
else else
{ {
static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress
static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 }; static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 };
SetupTranslator(tr,stress_lengths_eu,stress_amps_eu); SetupTranslator(tr,stress_lengths_eu,stress_amps_eu);
tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable ??
tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable, but not on a word-final vowel
tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED;
tr->langopts.param[LOPT_SUFFIX] = 1; tr->langopts.param[LOPT_SUFFIX] = 1;
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL;
} }


SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); SetupTranslator(tr,stress_lengths_ro,stress_amps_ro);


tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY;
tr->langopts.stress_rule = STRESSPOSN_1R;
tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY;


tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN;


SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); SetupTranslator(tr,stress_lengths_sq,stress_amps_sq);


tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C;
tr->langopts.stress_rule = STRESSPOSN_1R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_VOWEL_UNSTRESSED;
SetLetterVowel(tr,'y'); SetLetterVowel(tr,'y');
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4;
tr->langopts.accents = 2; // "capital" after letter name tr->langopts.accents = 2; // "capital" after letter name

+ 3
- 3
src/translate.cpp View File

} }
remove_stress = pb[1]; remove_stress = pb[1];


if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
DecodePhonemes(phonemes, phonbuf); DecodePhonemes(phonemes, phonbuf);
fprintf(f_trans,"(%s) %s -> (%s) ", phoneme_tab_list[lang2].name, phonbuf, phoneme_tab_list[tr->phoneme_tab_ix].name); fprintf(f_trans,"(%s) %s -> (%s) ", phoneme_tab_list[lang2].name, phonbuf, phoneme_tab_list[tr->phoneme_tab_ix].name);


strcpy(phonemes, phonbuf); strcpy(phonemes, phonbuf);


if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
SelectPhonemeTable(tr->phoneme_tab_ix); SelectPhonemeTable(tr->phoneme_tab_ix);
DecodePhonemes(phonemes, phonbuf); DecodePhonemes(phonemes, phonbuf);
end_type = end2; end_type = end2;
strcpy(phonemes,phonemes2); strcpy(phonemes,phonemes2);
strcpy(end_phonemes,end_phonemes2); strcpy(end_phonemes,end_phonemes2);
if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
DecodePhonemes(end_phonemes,end_phonemes2); DecodePhonemes(end_phonemes,end_phonemes2);
fprintf(f_trans," suffix [%s]\n\n",end_phonemes2); fprintf(f_trans," suffix [%s]\n\n",end_phonemes2);

+ 2
- 3
src/translate.h View File

#define S_FIRST_PRIMARY 0x80 #define S_FIRST_PRIMARY 0x80
// bit7=if more than one primary stress, make the subsequent primaries to secondary stress // bit7=if more than one primary stress, make the subsequent primaries to secondary stress


#define S_FINAL_STRESS_C 0x100
// bit8=stress last syllable if it doesn't end in a vowel
#define S_FINAL_VOWEL_UNSTRESSED 0x100
// bit8=don't apply default stress to a word-final vowel


#define S_FINAL_SPANISH 0x200 #define S_FINAL_SPANISH 0x200
// bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish
extern int option_waveout; extern int option_waveout;
extern int option_quiet; extern int option_quiet;
extern int option_phonemes; extern int option_phonemes;
extern int option_mbrola_phonemes;
extern int option_phoneme_events; extern int option_phoneme_events;
extern int option_linelength; // treat lines shorter than this as end-of-clause extern int option_linelength; // treat lines shorter than this as end-of-clause
extern int option_multibyte; extern int option_multibyte;

+ 5
- 7
src/transldlg.cpp View File

const char *phon_out2; const char *phon_out2;
int clause_tone; int clause_tone;
int clause_count; int clause_count;
int use_ipa = 0;
FILE *f; FILE *f;
int fd_temp; int fd_temp;
char fname_temp[100]; char fname_temp[100];
} }
#endif #endif
t_phonetic->SetDefaultStyle(style_phonetic); t_phonetic->SetDefaultStyle(style_phonetic);
translate_text = 2;
translate_text = espeakPHONEMES_TRACE;
break; break;


case T_TRANSLATE: case T_TRANSLATE:
case MENU_SPEAK_TRANSLATE: case MENU_SPEAK_TRANSLATE:
t_phonetic->SetDefaultStyle(style_phonetic); t_phonetic->SetDefaultStyle(style_phonetic);
translate_text = 1;
translate_text = espeakPHONEMES_SHOW;
break; break;


case T_TRANSLATE_IPA: case T_TRANSLATE_IPA:
case MENU_SPEAK_IPA: case MENU_SPEAK_IPA:
t_phonetic->SetDefaultStyle(style_phonetic_large); t_phonetic->SetDefaultStyle(style_phonetic_large);


translate_text = 3;
use_ipa = 0x10;
translate_text = espeakPHONEMES_IPA;
break; break;


case T_PROCESS: case T_PROCESS:
CalcPitches(translator,clause_tone); CalcPitches(translator,clause_tone);
CalcLengths(translator); CalcLengths(translator);


phon_out2 = GetTranslatedPhonemeString(use_ipa);
phon_out2 = GetTranslatedPhonemeString(option_phonemes);
if(clause_count++ > 0) if(clause_count++ > 0)
strcat(phon_out," ||"); strcat(phon_out," ||");
strcat(phon_out, phon_out2); strcat(phon_out, phon_out2);
ph_list[N_PH_LIST].ph = NULL; // to recognize overrun off list (in Generate() ) ph_list[N_PH_LIST].ph = NULL; // to recognize overrun off list (in Generate() )


t_phonetic->Clear(); t_phonetic->Clear();
if(option_phonemes == 2)
if(option_phonemes & espeakPHONEMES_TRACE)
{ {
option_phonemes=0; option_phonemes=0;
rewind(f_trans); rewind(f_trans);

Loading…
Cancel
Save