Browse Source

Merge branch 'master' into android

Conflicts:
	platforms/windows/make_espeakedit.iss
master
Reece H. Dunn 12 years ago
parent
commit
1765ebc864
79 changed files with 3077 additions and 1541 deletions
  1. 7
    0
      Makefile.am
  2. 6
    1
      dictsource/an_list
  3. 119
    62
      dictsource/bn_list
  4. 10
    2
      dictsource/bn_rules
  5. 106
    99
      dictsource/da_list
  6. 748
    528
      dictsource/da_rules
  7. 60
    24
      dictsource/en_list
  8. 99
    75
      dictsource/en_rules
  9. 4
    0
      dictsource/es_list
  10. 49
    1
      dictsource/hbs_list
  11. 6
    1
      dictsource/hbs_rules
  12. 15
    4
      dictsource/hi_list
  13. 2
    7
      dictsource/hi_rules
  14. 2
    1
      dictsource/it_list
  15. 3
    3
      dictsource/ko_list
  16. 3
    3
      dictsource/ko_rules
  17. 0
    7
      dictsource/ml_rules
  18. 8
    4
      dictsource/nl_list
  19. 12
    5
      dictsource/nl_rules
  20. 106
    72
      dictsource/pt_list
  21. 67
    27
      dictsource/pt_rules
  22. 5
    5
      dictsource/ru_list
  23. 171
    0
      dictsource/te_list
  24. 271
    0
      dictsource/te_rules
  25. 187
    12
      dictsource/ur_list
  26. 122
    9
      dictsource/ur_rules
  27. 1
    1
      espeak-data/voices/en
  28. 1
    1
      espeak-data/voices/en-us
  29. 1
    1
      espeak-data/voices/es-la
  30. 0
    4
      espeak-data/voices/test/ak
  31. 0
    3
      espeak-data/voices/test/az
  32. 1
    1
      espeak-data/voices/test/bn
  33. 0
    3
      espeak-data/voices/test/dv
  34. 0
    3
      espeak-data/voices/test/ht
  35. 0
    3
      espeak-data/voices/test/kk
  36. 1
    1
      espeak-data/voices/test/ko
  37. 0
    3
      espeak-data/voices/test/mt
  38. 0
    3
      espeak-data/voices/test/nso
  39. 0
    5
      espeak-data/voices/test/prs
  40. 0
    4
      espeak-data/voices/test/rw
  41. 1
    1
      espeak-data/voices/test/si
  42. 1
    1
      espeak-data/voices/test/te
  43. 0
    3
      espeak-data/voices/test/tn
  44. 0
    5
      espeak-data/voices/test/tt
  45. 0
    4
      espeak-data/voices/test/wo
  46. BIN
      phsource/d/xd
  47. BIN
      phsource/envelopes.png
  48. 7
    7
      phsource/ph_bengali
  49. 263
    307
      phsource/ph_danish
  50. 27
    0
      phsource/ph_english
  51. 8
    7
      phsource/ph_english_us
  52. 1
    1
      phsource/ph_hindi
  53. 20
    0
      phsource/ph_korean
  54. 119
    1
      phsource/ph_malayalam
  55. 10
    10
      phsource/ph_portugal
  56. 4
    0
      phsource/ph_tamil
  57. 11
    12
      phsource/phonemes
  58. BIN
      phsource/r/V_
  59. BIN
      phsource/r/V_2_
  60. BIN
      phsource/voc/murmur1
  61. BIN
      phsource/vwl_en_us/ai3
  62. BIN
      phsource/vwl_en_us/er
  63. BIN
      phsource/vwl_en_us/oor
  64. 3
    2
      platforms/riscos/Makefile
  65. 111
    25
      platforms/riscos/cpp/speak_riscos
  66. 5
    3
      platforms/windows/make_espeak.iss
  67. 64
    58
      platforms/windows/make_espeakedit.iss
  68. 3
    2
      src/compiledata.cpp
  69. 20
    2
      src/dictionary.cpp
  70. 30
    3
      src/numbers.cpp
  71. 59
    50
      src/phonemelist.cpp
  72. 2
    0
      src/readclause.cpp
  73. 24
    4
      src/setlengths.cpp
  74. 11
    1
      src/synthdata.cpp
  75. 19
    1
      src/synthesize.cpp
  76. 12
    7
      src/tr_languages.cpp
  77. 33
    32
      src/translate.cpp
  78. 1
    0
      src/translate.h
  79. 15
    4
      src/voices.cpp

+ 7
- 0
Makefile.am View File

espeak-data/sv_dict \ espeak-data/sv_dict \
espeak-data/sw_dict \ espeak-data/sw_dict \
espeak-data/ta_dict \ espeak-data/ta_dict \
espeak-data/te_dict \
espeak-data/tr_dict \ espeak-data/tr_dict \
espeak-data/ur_dict \ espeak-data/ur_dict \
espeak-data/vi_dict \ espeak-data/vi_dict \
espeak-data/ta_dict: src/espeak espeak-data/phontab dictsource/ta_list dictsource/ta_rules dictsource/ta_extra espeak-data/ta_dict: src/espeak espeak-data/phontab dictsource/ta_list dictsource/ta_rules dictsource/ta_extra
cd dictsource && ../src/espeak --compile=ta && cd .. cd dictsource && ../src/espeak --compile=ta && cd ..


te: espeak-data/te_dict
dictsource/te_extra:
touch dictsource/te_extra
espeak-data/te_dict: src/espeak espeak-data/phontab dictsource/te_list dictsource/te_rules dictsource/te_extra
cd dictsource && ../src/espeak --compile=te && cd ..

tr: espeak-data/tr_dict tr: espeak-data/tr_dict
dictsource/tr_extra: dictsource/tr_extra:
touch dictsource/tr_extra touch dictsource/tr_extra

+ 6
- 1
dictsource/an_list View File

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


// letters // letters
_x#ª %a _x#ª %a
º orDin'al||maskul'in º orDin'al||maskul'in
ª orDin'al||femen'in ª orDin'al||femen'in
ºc gr'aUs||T'e
ºf gr'aUs||'Efe
ºk gr'aUs||k'a


_1ox prim'Er _1ox prim'Er
_2ox seQ'und _2ox seQ'und
/ baRRa / baRRa
\ kontraBaRRa \ kontraBaRRa
| b'aRRaBertik'al | b'aRRaBertik'al
° graUs


_- gj'on _- gj'on
! TaRR'ar||eksklamaTj'on ! TaRR'ar||eksklamaTj'on
facebook f'eIsbuk facebook f'eIsbuk
firefox f'aIrfoks firefox f'aIrfoks
google g'ugEl google g'ugEl
hotmail xotm'eIl
(i phone) 'aIfon (i phone) 'aIfon
iphone 'aIfon iphone 'aIfon
(i pod) 'aIpod (i pod) 'aIpod

+ 119
- 62
dictsource/bn_list View File

// Translation rules for Bengali
// Translation rules for Bengali
// This file is UTF8 encoded // This file is UTF8 encoded


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


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


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


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

_30 t'iriS
_31 'ektriS
_32 b'OtriS
_33 t'etriS
_34 tSowtriS
_35 pO~jtriS
_36 tS#'OtriS
_37 S'a~itriS
_38 'at.riS
_39 'unOtSOlliS

_40 tS'OlliS
_41 'ektSOlliS
_42 b'ialliS
_43 t'etalliS
_44 tS'oalliS
_45 p'O~jtalliS
_46 tS'etSOlliS
_47 S'atSOllis
_48 'atSOlliS
_49 'unOpO~tSaS

// numbers above 50 need to be corrected
_50 p'O~tSaS
_5X p'O~tSaS
_59 'unOsat.

_60 s'at.
_6X s'at.
_69 'unOS'OttOr

_70 S'OttOr
_7X S'OttOr
_79 'unOaSi
_29 unOtr'iS

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

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

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


_80 'aSi
_8X 'aSi
_89 'unOnObbOj


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

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

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

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


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




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



// full vowels // full vowels
অ O অ O
উ hrOS:o'u উ hrOS:o'u
ঊ dirg#o'u ঊ dirg#o'u
ঋ ri ঋ ri
এ e
ঐ oj
ও o
ঔ ow ঔ ow


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


// combining vowel signs // combining vowel signs
া 'akar া 'akar
ি r'oS:ikar ি r'oS:ikar
ঁ tS'Ondrobindu ঁ tS'Ondrobindu
় b'indu ় b'indu


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




// Punctuation // Punctuation
। dVn.d.V । dVn.d.V

_, koma
_? pr'oSnOtSihnO


// Pronouns // Pronouns
আমি $u // main: I আমি $u // main: I




// Exceptions // Exceptions
এত &to

+ 10
- 2
dictsource/bn_rules View File


// This file is UTF8 encoded // This file is UTF8 encoded


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


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




.group ও .group ও
য় jV // nukta য় jV // nukta
য় (B j য় (B j


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


.group র .group র
র rV র rV
র (B r র (B r
ৢ l- ৢ l-
ৣ l- ৣ l-


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

+ 106
- 99
dictsource/da_list View File

_#9 tab _#9 tab
_#32 blank _#32 blank


* 'asd&r,isg $max3
% pRos'end $max3
@ sn,&:bel'&:
/ sgRVsdrai $max3
\ 'Vmvendsgr,VsdRai $max3
* '&sd@-r,isg $max3
% pRos'End $max3
@ sn,&b@-l'&:
/ sgRVsdrAj $max3
\ 'VmvEndsgr,VsdRai $max3
_, k'oma: _, k'oma:
_; se:mi:ko:lVn
_; semiko:lVn
_: k'o:lVn _: k'o:lVn
_. pONtOm // PN u => O _. pONtOm // PN u => O
_? spWrgsmVlstajn
_! udRVbstejn
_- binnesdrai
__ b'Onsdrai
_? spWrsmOlstAjn
_! udRVbstAjn
_- bin@-sdrAi
__ b'OnsdrAi
& _Vw & _Vw
£ pun? £ pun?
€ euro € euro
© kVpirajt
÷ divid'eReD||meD
© kVpirAjt
÷ divid'eRVD||mED
= l'imeD = l'imeD
# n'OmV # n'OmV
§ paragr'af § paragr'af
× g'aNe × g'aNe
ª feminin||Wdin'al ª feminin||Wdin'al
º m'askulin||Wdin'al º m'askulin||Wdin'al
® registr'Er@D||v'ar@mErk3
¼ en||kvart
¾ trEkv'art
® registr'ErVD||v'Ar@-mErk@-
¼ en||kvArt
¾ trEkv'Art
¢ s'ent ¢ s'ent
¥ j'en: ¥ j'en:
µ my µ my
' apostr'Vf ' apostr'Vf
½ en'hal
½ en'h&l
+ plus + plus
// numbers // numbers
_10 t'i _10 t'i
_11 'Elv@ _11 'Elv@
_12 t'Vl _12 t'Vl
_13 tR'?&#d@-n
_13 t*'?&#d@-n
_14 fj'ord@-n _14 fj'ord@-n
_15 f'Emd@-n _15 f'Emd@-n
_16 s'ajsd@-n
_17 s'Wd@-n
_16 s'Ajsd@-n
_17 s'?Wd@-n
_18 '?&d@-n _18 '?&d@-n
_19 n'ed@-n
_19 n'?ed@-n
_2X t'y:?u _2X t'y:?u
_3X tR'&#Dv@
_3X t*'&#Dv@
_4X f'?W:_|V _4X f'?W:_|V
_5X h&l't*Es _5X h&l't*Es
_6X t*'Es _6X t*'Es
_7X h&lfj'&rs
_7X h&lfj'Ers
_8X f'irs _8X f'irs
_9X h&lf'Ems // PB a changed to & _9X h&lf'Ems // PB a changed to &
_0C h'unRVD _0C h'unRVD
_0and V _0and V
_dpt _k,Vm&: _dpt _k,Vm&:


// PB a number followed by dot
// A number followed by dot
// ordinals are followed by a dot in Danish // ordinals are followed by a dot in Danish
_ord 3 // 13. (trettende)
_ord @- // 13. (trettende)


// exceptions for ordinals // exceptions for ordinals
_1o fWrsd3 // 1. første
_1o fWrsd@- // 1. første
_2o &n@n // 2. anden _2o &n@n // 2. anden
_3o trEdj3 // 3. tredje
_3o trEdj@- // 3. tredje
_4o fjeV // 4. fjerde _4o fjeV // 4. fjerde
_5o fEmt3 // 5. femte
_6o sjEd3 // 6. sjette
_7o syvn3 // 7. syvende
_8o Vtn3 // 8. ottende
_9o ni@n3 // 9. niende
_10o ti@n3 // 10. tiende
_11o Elfd3 // 11. elvte/ellevete
_12o tVlfd3 // 12. tolvte
_5o fEmt@- // 5. femte
_6o sjEd@- // 6. sjette
_7o syvn@- // 7. syvende
_8o Vtn@- // 8. ottende
_9o ni@-n@- // 9. niende
_10o ti@-n@- // 10. tiende
_11o Elfd@- // 11. elvte/ellevete
_12o tVlfd@- // 12. tolvte


_2Xo t'yv@n@ // 25.
_3Xo tr'&#ft@ //36.
_4Xo fWV'tyv@n@ // 42.
_5Xo h&lt*'Esenstyv@n@ // 52.
_6Xo tr'Esenstyv@n@ // 62.
_7Xo h&lfj'&rsenstyv@n@ // 72.
_8Xo firsenstyv@n@ // 82.
_9Xo h&lf'Emsenstyv@n@ // 95.
_2Xo t'yv@n@- // 25.
_3Xo tr'&#ft@- //36.
_4Xo fWV'tyv@-n@- // 42.
_5Xo h&lt*'Esenstyv@-n@- // 52.
_6Xo tr'Esenstyv@-n@- // 62.
_7Xo h&lfj'&rsenstyv@-n@- // 72.
_8Xo firsenstyv@-n@- // 82.
_9Xo h&lf'Emsenstyv@-n@- // 95.


// function words // function words


ved $u+ // at ved $u+ // at
om $u+ $brk // about, within om $u+ $brk // about, within
med $u+ // with med $u+ // with
af &
ad &
af &_!
ad &_!
ad &D $atend $sentence // "Det må ikke skille os ad." ad &D $atend $sentence // "Det må ikke skille os ad."
at & $u
at &_! $u
hos hos
som sVm $u // which / that som sVm $u // which / that


det de $u det de $u
dét de dét de
vi vi $u vi vi $u
i _i $u+
i _i_! $u+
mig mAj $u // me mig mAj $u // me
dig dAj $u+ dig dAj $u+
dem $u dem $u
// possessive pronouns // possessive pronouns
min min $u min min $u
mit mit $u mit mit $u
mine m'in3
mine m'in@-
din d'in $u+ din d'in $u+
dit d'it $u dit d'it $u
dine d'in3
dine d'in@-
deres dE:Vs $u deres dE:Vs $u
hans $u+ hans $u+
hendes $u+ hendes $u+
eminence $alt eminence $alt
excellence $alt excellence $alt
fajance $alt fajance $alt
hospice $alt
ignorance $alt ignorance $alt
inspektrice $alt inspektrice $alt
intolerance $alt intolerance $alt
afrikaan $alt afrikaan $alt
aleksandrin $alt aleksandrin $alt
amerikan $alt amerikan $alt
austral $alt
andorran $alt andorran $alt
anglikan $alt anglikan $alt
angolan $alt angolan $alt
deducer $alt deducer $alt
defiler $alt defiler $alt
definer $alt definer $alt
omdefiner $alt
deflorer $alt deflorer $alt
deformer $alt deformer $alt
degrader $alt degrader $alt
konstituer $alt konstituer $alt
konstringer $alt konstringer $alt
konstruer $alt konstruer $alt
rekonstruer $alt
konsulere $alt konsulere $alt
konsulter $alt konsulter $alt
konsumer $alt konsumer $alt
tournure $alt tournure $alt


// exceptions // exceptions
alene &l'en@ // alone
alene &l'en@- // alone
egen _|aj@-n egen _|aj@-n
mc mak' $capital // PB McDonald mc mak' $capital // PB McDonald
egne ajn@- egne ajn@-
idé id'e // idea idé id'e // idea
tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune]
ny ny // new ny ny // new
også Vs@- // also
også ?Vs@- // also
idet id'e // in so far as idet id'e // in so far as
(rub og stub) R'Ob||V||sd'Ob (rub og stub) R'Ob||V||sd'Ob
tre tr'E // the number 3 tre tr'E // the number 3
rejicerer rejis'eV // PB rejicerer rejis'eV // PB
rejiceres rejis'eVs // PB rejiceres rejis'eVs // PB
rejicering rejis'eRiN // PB rejicering rejis'eRiN // PB
nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen'
nogen n'o:@-n // PB
nogle n'o@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen'
nogen n'o@-n // PB
ligesom l?isVm // PB ligesom l?isVm // PB
bliver blir // PB bliver blir // PB
konfirmand kVnferm'&nd // PB konfirmand kVnferm'&nd // PB
giver gir // PB the v shouldn't be pronounced giver gir // PB the v shouldn't be pronounced
opgiver Vpgir // PB opgiver Vpgir // PB
jaloux sj&'lu // PB jaloux jaloux sj&'lu // PB jaloux
aficionado afisjo'na:do // PB
breakdance brEig'da:ns // PB breakdance
breakdancen brEig'da:ns@-n // PB breakdancen
breakdancer brEig'da:nsV // PB breakdancer
breakdancere brEig'da:nsV3 // PB breakdancere
breakdancerne brEig'da:nsV-n@ // PB breakdancerne
breakdancernes brEig'da:nsV-n@s // PB breakdancernes
squaredance skw'e@da:ns // PB squaredance
squaredancer skw'e@da:nsV // PB squaredancer
squaredancere skw'e@da:nsV3 // PB squaredancere
squaredancen skw'e@da:ns@-n // PB squaredancen
squaredancerne skw'e@da:nsV-n@ // PB squaredancerne
squaredancernes skw'e@da:nsV-n@s // PB squaredancernes
baguette b%a'get // French word used in Danish
jambore djamboR'E // PB English? word used in Danish - stressed e
shampu Sjambo // PB Danish pronunciation - oo has been replaced by u
(en face) aN||f'as // PB 'en face' - French used in Danish
(en bloc) aN||'blVk // PB 'en bloc' - French used in Danish
aficionado afisjo'nA:do // PB
breakdance brEig'd&:ns // PB breakdance
breakdancen brEig'd&:ns@-n // PB breakdancen
breakdancer brEig'd&:nsV // PB breakdancer
breakdancere brEig'd&:nsV3 // PB breakdancere
breakdancerne brEig'd&:nsV-n@ // PB breakdancerne
breakdancernes brEig'd&:nsV-n@s // PB breakdancernes
squaredance skw'EVd&:ns // PB squaredance
squaredancer skw'EVd&:nsV // PB squaredancer
squaredancere skw'EVd&:nsV3 // PB squaredancere
squaredancen skw'EVd&:ns@-n // PB squaredancen
squaredancerne skw'EVd&:nsV-n@ // PB squaredancerne
squaredancernes skw'EVd&:nsV-n@s // PB squaredancernes
baguette b?&'gEt // French word used in Danish
jambore djAmboR'E // PB English? word used in Danish - stressed e
shampu SjAmbo // PB Danish pronunciation - oo has been replaced by u
(en face) AN||f'as // PB 'en face' - French used in Danish
(en bloc) AN||'blVk // PB 'en bloc' - French used in Danish
(haute couture) %o:tku'ty:r // PB - french word (haute couture) %o:tku'ty:r // PB - french word
(par excellence) pa:egs@'la:Ns // PB - french word
(public service) pVblek||s@:vis // PB
(public servicen) pVblek||s@:vis@-n // PB
(par excellence) pA:Egs@'la:Ns // PB - french word
(public service) pVblek||sW:vis // PB
(public servicen) pVblek||sW:vis@-n // PB
(tour de force) tu:@d@||'fV:s // PB (tour de force) tu:@d@||'fV:s // PB
(al qaeda) al||k'ajda // PB (al qaeda) al||k'ajda // PB
(force majeure) fVrs||,ma'sjW:r // PB (force majeure) fVrs||,ma'sjW:r // PB
(diner transportable) din'e|trANspVt'abl@ // PB
(diner transportable) din'e|trANspVt'abl@- // PB
(quiche lorraine) kiS||lor'E:n: (quiche lorraine) kiS||lor'E:n:
(fait accompli) fEtakVmpl'i // PB
(fait accompli) fEt&kVmpl'i // PB
(salt lake city) s'Vlt||lEjk||s'iti (salt lake city) s'Vlt||lEjk||s'iti
wien v'i:n // PB Wien - the town of Vienna wien v'i:n // PB Wien - the town of Vienna
calais kal'E // PB Calais - town in France
date dejt // PB date - stævnemøde
calais k&l'E // PB Calais - town in France
date dEjt // PB date - stævnemøde
//siger sir // PB silent d //siger sir // PB silent d
(tids nok) tis||n'Vk // PB silent d (tids nok) tis||n'Vk // PB silent d
skateboardet sk'eitbo@d3D // PB
skateboardet sk'EitbO:d@-D // PB
(hole in one) h'oulinw,0n // PB English golf expression used in Danish (hole in one) h'oulinw,0n // PB English golf expression used in Danish
(en passant) AN||p&s'AN (en passant) AN||p&s'AN
(coney island) 'kouni||'ajl3nd // PB (coney island) 'kouni||'ajl3nd // PB
(union station) junj3n||steisj@n // PB (union station) junj3n||steisj@n // PB
(secret service) sigred||s'Wvis (secret service) sigred||s'Wvis
(happy hour) h&pi||'AuV (happy hour) h&pi||'AuV
chevrolet sjEvrol'e
chevrolet sjEvrol'E
saigon sAjgVn // PB Saigon saigon sAjgVn // PB Saigon
managua m&n'&:gw& managua m&n'&:gw&
(deja-vu) deSja||'vy (deja-vu) deSja||'vy
// Try to catch errors // Try to catch errors


(et kvarter) et||kvA'ter // PB (et kvarter) et||kvA'ter // PB
(mit kvarter) mit||kvA'ter // PB
(vores kvarter) vV:s||kvA'ter // PB
(deres kvarter) dE:Vs||kvA'ter // PB
(det kvarter) de||kvA'ter // PB
(mit kvarter) mit||kvA'ter
(vores kvarter) vV:s||kvA'ter
(deres kvarter) dE:Vs||kvA'ter
(det kvarter) de||kvA'ter
(i kvarter) i||kv'A:dV (i kvarter) i||kv'A:dV
(at have) &||h& // PB the verb 'have', not the noun 'have' = garden
(vil have) vel||h'& // PB
(ville have) v?il3||h'& // PB
(du have) du||h& // PB
(må have) mO:||h& // PB
(skal have) sk?&||h& // PB
// the verb 'have', not the noun 'have' = garden/oceans
(at have) &||h&
(vil have) vel||h'&
(ville have) v?il3||h'&
(du have) du||h&_!
(må have) mO:||h&
(skal have) sk?&||h&
(helst have) h'Elst||h& (helst have) h'Elst||h&
(gerne have) g'Ern3||h& (gerne have) g'Ern3||h&
(kan have) k?&n||h& // PB
(ikke have) ege||h& // PB
(kan have) k?&n||h&
(ikke have) eg@-||h&
(have ret) h&||R'&#d
(måtte have) m'?Vt@-||h&
(have været) h&||v'?E3-VD
(have gjort) h&||gj'Ort
// PB 'hav' = ocean - 'hav' = have (a nice day) // PB 'hav' = ocean - 'hav' = have (a nice day)
(et hav) ed||hAu (et hav) ed||hAu
(stort hav) stord||hAu (stort hav) stord||hAu
hav hAu $atend hav hAu $atend
(et for) ed||'for // PB for i jakke - lining
(et for) ed||'for // for i jakke - lining
(et for dig) ed||fV||dAj // vælge et for dig
// PB problem with 'sig' [si] = "say" and 'sig' = "himself/herself" [saj] // PB problem with 'sig' [si] = "say" and 'sig' = "himself/herself" [saj]
//(sig mig) si||maj // PB sig mig engang
(sig hvad) si||v& // PB sig hvad du mener
sig $atend $sentence saj // end of a sentence - han vaskede sig.
(gør sig til) g,Wr||saj||t'el // PB
(gav sig til) g&||saj||tel // PB han gav sig til at ...
(sig hvad) si||v& // sig hvad du mener
sig $atend $sentence sAj // end of a sentence - han vaskede sig.
(gør sig til) g,Wr||sAj||t'el
(gav sig til) g&||sAj||tel // han gav sig til at ...
// PB avoid [staj] as in "flæskesteg" // PB avoid [staj] as in "flæskesteg"
(han steg) h&n||st'e (han steg) h&n||st'e
(hun steg) hOn||st'e (hun steg) hOn||st'e
(alle steg) &l3||st'e (alle steg) &l3||st'e
(vandet steg) v&n@D||st'e (vandet steg) v&n@D||st'e
steg sdaj $atend $sentence steg sdaj $atend $sentence
steget ste@d
//steget ste@d
// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v] // PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v]
(et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day (et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day
// PB legende = legend/myth and = playing // PB legende = legend/myth and = playing

+ 748
- 528
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 60
- 24
dictsource/en_list View File


// You can use the en_extra file, rather than this one // You can use the en_extra file, rather than this one
// to add your own pronunciation definitions. // to add your own pronunciation definitions.


ï $accent ï $accent
ö $accent ö $accent
ü $accent ü $accent
û $accent
č $accent č $accent
š $accent š $accent
ş $accent ş $accent
// Arabic letters // Arabic letters


ء h'amza ء h'amza
آ 'Elifm,adda#
أ 'Elifh,amza
ا 'Elif
ب bE?
آ al'if_mamd'uda#
أ h'amza_taht_al'if
ؤ h'amza_?la_waw
إ al'if_taht_h'amza
ئ h'amza_?la_jE?
ا al'if
ب ba
ة t'E?maR2b'uta# ة t'E?maR2b'uta#
ت tE?
ت ta
ث TE? ث TE?
ج ZIm
ج dZi:m
ح hE? ح hE?
خ xE? خ xE?
د dEl/1
ذ DEl/1
د dal/1
ذ Dal/1
ر R2A:? ر R2A:?
ز zEjn ز zEjn
س si:n س si:n
ش Si:n ش Si:n
ص sO:d@-
ض dO:d@-
ص sa:d@-
ض da:d@-
ط thA:? ط thA:?
ظ DA:? ظ DA:?
ع ?ajn
غ Q"ajn
ف fE?
ق qO:f
ك kEf
ل lEm
ع '?Ein
غ 'Q"Ein
ف fa
ق qa:f
ك kaf
ل lam
م mi:m م mi:m
ن nu|:n ن nu|:n
ه hE?
و wO:w
ه ha
و waw
ى al'if_maks'ura
ي jE? ي jE?
// Farsi
پ pa
چ tSa
ژ Za
گ ga:f
ی f'A@si||j'e
ک k'a:f
// Urdu
ٹ te
ڈ de
ڑ z.e
ے barij'e
ھ h'@


َ a َ a
ِ i ِ i
alas a#l'as alas a#l'as
albeit O:lb'i:It albeit O:lb'i:It
alfalfa alf'alf@ alfalfa alf'alf@
algebra aldZI2br@
alias eIli@s alias eIli@s
alibi al@baI alibi al@baI
alibis al@baIz alibis al@baIz
ambidextrous $3 ambidextrous $3
amen ,A:m'En $onlys amen ,A:m'En $onlys
?3 amen ,eIm'En ?3 amen ,eIm'En
?3 amo amoU
amok a#m0k amok a#m0k
amoral eIm'0r@L amoral eIm'0r@L
amount a#maUnt amount a#maUnt
analysis a#nal@sIs analysis a#nal@sIs
anemone a#nEm@ni anemone a#nEm@ni
angel eIndZ@L angel eIndZ@L
anecdote anIkdoUt
anecdotal anIkd'oUt@L
anemometer anIm'0mI2t3 anemometer anIm'0mI2t3
anew a#nju: anew a#nju:
?3 anew a#nu: ?3 anew a#nu:
argon A@g0n argon A@g0n
argue A@gju: argue A@gju:
aries e@ri:z aries e@ri:z
arithmetic a#rITm@tIk
arithmetic a#rITm@tIk $onlys
arise a#raIz arise a#raIz
arisen @rIz@n arisen @rIz@n
armslength ,A@mzl'ENT armslength ,A@mzl'ENT
aviary eIvi@ri aviary eIvi@ri
awry a#raI awry a#raI
axes aksI#z axes aksI#z
axon aks0n


backend bak'End backend bak'End
backstory baksto@ri backstory baksto@ri
circumvent s3:k@mvEnt circumvent s3:k@mvEnt
?5 circumvent sIRk@mvEnt ?5 circumvent sIRk@mvEnt
citadel sIt@dEl citadel sIt@dEl
clandestine $2
clarinet klar@n'Et clarinet klar@n'Et
cleanliness klEnlIn@s cleanliness klEnlIn@s
cleanse klEnz cleanse klEnz
copier k0pi@3 copier k0pi@3
copilot koUpaIl@t copilot koUpaIl@t
coral k0r@L coral k0r@L
?3 cordial kO@dZ@L
coronet k0r@nEt coronet k0r@nEt
corollary $2 corollary $2
corporal kO@pr@L corporal kO@pr@L
?3 debut deIb'ju: ?3 debut deIb'ju:
decade dEkeId decade dEkeId
decent di:s@nt decent di:s@nt
decibel dEsI#b@L
declaration dEkl@'reIS@n declaration dEkl@'reIS@n
decolletage deIk0lt'A:Z decolletage deIk0lt'A:Z
decor deIkO@ decor deIkO@
doctrinal $alt1 doctrinal $alt1
doer du:3 doer du:3
dogged d0gI#d dogged d0gI#d
dogmatic d0gm'atIk
doin du:In doin du:In
domino $1 domino $1
donor doUn3 donor doUn3
gilead g'IlIad gilead g'IlIad
gimme gImi gimme gImi
giraffe dZI2raaf giraffe dZI2raaf
github gIthVb
glacier gleIS3 glacier gleIS3
goin ,goUI2n $only // for goin' goin ,goUI2n $only // for goin'
gonna g,@n@ gonna g,@n@
inventory Inv@ntri inventory Inv@ntri
?3 inventory Inv@nto:ri ?3 inventory Inv@nto:ri
interface $1 interface $1
interlude $1
intermin Int'3:mIn // interminable intermin Int'3:mIn // interminable
intern $1 $onlys intern $1 $onlys
internee Int'3:ni: internee Int'3:ni:
momentary moUm@nt@ri momentary moUm@nt@ri
?3 momentary moUm@nt2e@ri ?3 momentary moUm@nt2e@ri
momentum $2 momentum $2
monarchic m@nA@kIk
monday mVndeI monday mVndeI
monotone m0n@toUn monotone m0n@toUn
monsieur m@sj3: monsieur m@sj3:
pecan pi:k@n pecan pi:k@n
peculiar pI2kju:lI3 peculiar pI2kju:lI3
pedalo pEd@loU pedalo pEd@loU
pedestal pEdI2st@L
pedestrian $alt3 pedestrian $alt3
pegasus pEg@s@s pegasus pEg@s@s
pejorative p@dZ0r@tIv pejorative p@dZ0r@tIv
rugged rVgI#d rugged rVgI#d
ruin ru:I2n // for ruining ruin ru:I2n // for ruining


sabbatic $alt3
sabotage sab@tA:Z sabotage sab@tA:Z
saboteur sab@t'3: saboteur sab@t'3:
?5 saboteur sab@t'VR ?5 saboteur sab@t'VR
sachet saSeI sachet saSeI
sacred seIkr@d sacred seIkr@d
sacrifice sakrI2faIs sacrifice sakrI2faIs
sadistic $alt3
safety seIfti safety seIfti
saga sA:g@ saga sA:g@
sahara $alt3 sahara $alt3
san ,san $only san ,san $only
sardine $2 sardine $2
satanic $alt3 satanic $alt3
satiric $alt3
saucepan sO:sp@n saucepan sO:sp@n
saudi saUdi saudi saUdi
saute sO:teI saute sO:teI
stampede $2 stampede $2
starboard stA@b3d starboard stA@b3d
starry stA:rI starry stA:rI
statistic $alt3
stiletto stI2lEtoU stiletto stI2lEtoU
strychnine str'Ikni:n strychnine str'Ikni:n
sterile stEraIl sterile stEraIl
(tear apart) t,e@||a#pA@t (tear apart) t,e@||a#pA@t
(tear off) t'e@||'0f (tear off) t'e@||'0f
teargas ti@3gas teargas ti@3gas
techy tEki
teddybear t'EdIb,e@ teddybear t'EdIb,e@
telemetry t@lEm@tri telemetry t@lEm@tri
telepathy t@lEp@Ti telepathy t@lEp@Ti
uncle VNk@L uncle VNk@L
undeny VndIn'aI undeny VndIn'aI
underling $1 underling $1
underlings Vnd3lINz
underworld $1 underworld $1
undies Vndiz undies Vndiz
undo Vnd'u: undo Vnd'u:
?5 Luxembourg lVks@mbVRg ?5 Luxembourg lVks@mbVRg
Madagascar mad@g'ask3 Madagascar mad@g'ask3
Madras m@draas Madras m@draas
Madrid m@drId
Madrid m@drId
Malawi $alt3 Malawi $alt3
Malayalam maleI'A:l@m
Maldives mO:ld'i:v Maldives mO:ld'i:v
Mali mA:li Mali mA:li
Mandalay $3 Mandalay $3
Oahu oU'A:hu: Oahu oU'A:hu:
Oklahoma oUkla#h'oUm@ Oklahoma oUkla#h'oUm@
Ohio oUh'aIoU Ohio oUh'aIoU
Ohioan oUh'aIoU@n
Omagh oUmA: Omagh oUmA:
Omaha oUma#hA: Omaha oUma#hA:
Oman oUm'an Oman oUm'an
Wyoming waI'oUmIN Wyoming waI'oUmIN
Xhosa kO:s@ Xhosa kO:s@
Yemen $alt2 Yemen $alt2
Yosemite joUs'Em@ti
zaire zaI'i@3 zaire zaI'i@3
zimbabwe zI2mbA:bwi zimbabwe zI2mbA:bwi
zimbabwean zI2mbA:bwI@n zimbabwean zI2mbA:bwI@n
Rachael reItS@L Rachael reItS@L
Rachel reItS@L Rachel reItS@L
Rafael rA:faI'El Rafael rA:faI'El
Rashid rA:S'i:d
Raul raU'u:l Raul raU'u:l
Rees ri:s Rees ri:s
Reese ri:s Reese ri:s
Sheila Si:l@ Sheila Si:l@
Simon saIm@n Simon saIm@n
Sinead SI2neId Sinead SI2neId
Sinéad SI2neId
Siobhan S@vO:n Siobhan S@vO:n
Siobhán S@vO:n Siobhán S@vO:n
Sonia s0nj@ Sonia s0nj@

+ 99
- 75
dictsource/en_rules View File

portr) ai (t I# portr) ai (t I#


.group al .group al
@ic) al (_S2 @L
_) al (@ a#l _) al (@ a#l
gonz) al 'A:l gonz) al 'A:l
_) alaba al@b'a _) alaba al@b'a
p) an (c an p) an (c an
@m) an (d aan @m) an (d aan
sl) an (d aan sl) an (d aan
_) anecdo anIkdoU
C) an (t aan C) an (t aan
an (ath a#n an (ath a#n
ann (eal a#n ann (eal a#n
as (thm as as (thm as
as (tral as as (tral as
as (tro as as (tro as
as (trolog a#s
as (trono a#s
_) as (trolog a#s
_) as (trono a#s
&) as (ty_ a#s &) as (ty_ a#s
ass (ym as ass (ym as
purch) as (e Is purch) as (e Is
_s) ata (n eIt@ _s) ata (n eIt@
_g) ator eIt3 _g) ator eIt3
&) ate (_$w_alt2 @t &) ate (_$w_alt2 @t
der) ated (_ eItI#d
pal) ate (_ @t pal) ate (_ @t
consul) ate (_ @t consul) ate (_ @t
macul) ate (_ @t macul) ate (_ @t
tim) ate (_ @t tim) ate (_ @t
tim) ated (_ eItI2d
tim) ated (_ eItI#d
tim) ating (_ eItIN tim) ating (_ eItIN
din) ate (_ @t din) ate (_ @t
ion) ate (_ @t ion) ate (_ @t
at (io_ eIS at (io_ eIS
ati (aX 'eIS ati (aX 'eIS
&) atism @tIz@m &) atism @tIz@m
st) at (ist @t
w) at (t 0t w) at (t 0t
@) ath (An_ @T @) ath (An_ @T
athed (_ eIDd athed (_ eIDd
bi (nm bI bi (nm bI
bi (noc bI2 bi (noc bI2
_) bio (@P3 b,aIoU _) bio (@P3 b,aIoU
bi (ol baI
bi (otic baI bi (otic baI
@) bi (osA baI @) bi (osA baI
bi (oC_ bI bi (oC_ bI
a) ch (il k a) ch (il k
bra) ch k bra) ch k
te) ch (K k te) ch (K k
_te) ch k
ch (isC k ch (isC k
ch (ic_ k ch (ic_ k
@@Car) ch (_ k @@Car) ch (_ k
de (ft dE de (ft dE
_) de (g@ dI2 _) de (g@ dI2
_) de (hyd ,di: _) de (hyd ,di:
_) de (ist deI
_) de (j dI2 _) de (j dI2
_) de (l@ dI2 _) de (l@ dI2
de (law dE de (law dE
sp) e (cies i: sp) e (cies i:
depr) ec (L02 i:S depr) ec (L02 i:S
_) e (cl %I _) e (cl %I
_) eccles (i I2kli:z
econo (m Ik'0n@ econo (m Ik'0n@
econo (mic i:k@n'0 econo (mic i:k@n'0
_) eco (s i:koU _) eco (s i:koU
h) e (sion_ 'i: h) e (sion_ 'i:
@) e (tio i: @) e (tio i:
discr) e (tion E discr) e (tion E
eu ju:
?3 n) eu u:
?3 n) eu (r U@
r) eu (d OI
eu (m_ 'i:@
s) eu (m_ 'i@
l) eur 3:
?5 eur VR
eur (_ '3:
?3 eur (_ 'U@
?5 eur (_ 'VR
_) euro jU@roU
_) euro (pe jU@r-@
&) eus (_ =I2@s
@) euse (_ '3:z
?3 @) euse (_ 'u:z
d) eu (ts OI
ew ju: ew ju:
_s) ew u: _s) ew u:
?3 d) ew u: ?3 d) ew u:
er (nal_ '3: er (nal_ '3:
&) er (n_ 3 &) er (n_ 3
c) er (n_ 3: c) er (n_ 3:
_g) er (on Er
&) er (oCe_ =@r &) er (oCe_ =@r
er (se 3: er (se 3:
v) er (sal '3: v) er (sal '3:
pr) es (ent Ez pr) es (ent Ez
es (iA i:z es (iA i:z
es (ian_ 'i:z es (ian_ 'i:z
es (ic 'i:z
@) es (ic 'i:z
esis (_ 'i:sIs esis (_ 'i:sIs
th) eses (_ @si:z th) eses (_ @si:z
th) esis (_ @sIs th) esis (_ @sIs
m) etry (_ =@tr%I m) etry (_ =@tr%I
&) ett (_ I2t &) ett (_ I2t



.group eu
eu ju:
?3 n) eu u:
?3 n) eu (r U@
r) eu (d OI
eu (m_ 'i:@
s) eu (m_ 'i@
l) eur 3:
?5 eur VR
eur (_ '3:
?3 eur (_ 'U@
?5 eur (_ 'VR
_) euro jU@roU
_) euro (pe jU@r-@
&) eus (_ =I2@s
@) euse (_ '3:z
?3 @) euse (_ 'u:z
d) eu (ts OI


.group ev .group ev
_) ev I2v _) ev I2v
_) eva (ne Ev@ _) eva (ne Ev@
n) ihi aI|@ n) ihi aI|@
_) i (h aI _) i (h aI
ii (_ IaI ii (_ IaI
ij (C eI // Dutch
f) i (j i: f) i (j i:
h) i (j aI h) i (j aI
@b) il (_ @L
@Cc) il (_ @L
@p) il (_ @L
@r) il (_ @L
@s) il (_ @L
nt) il (_ @L
@v) il (_ @L
@) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) i (lage aI
_d) i (lat %aI
l) il (ah_ aIl
_m) i (ld aI
_w) i (ld aI
ch) i (ld aI
w) i (lderC I
ch) i (ldr I
sacr) ile IlI
i (leA I
&) ile (ge @lI
il (ise @l
il (ize @l
s) i (len aI
C) i (ler aI
_) il (l@ %Il
@) illa (_ 'Il@
&) illard (_ i:A:
_) il (ln Il
@) i (less I @) i (less I
_) il (lust Il
_C) i (lo aI
&) ily (_S2i l%I
@) i (ness I @) i (ness I
i (o I2 i (o I2
_) i (o aI _) i (o aI
ize (_ aIz ize (_ aIz
ial) ize (_S3 aIz ial) ize (_S3 aIz
ize (d_ aIz ize (d_ aIz
i (zen I2
i (zen I
iz (er_ aIz iz (er_ aIz
i (zon_ 'aI i (zon_ 'aI
_p) izz i:t|s _p) izz i:t|s
&n) iel (_ j@L &n) iel (_ j@L
&r) iel (_ =i:@L &r) iel (_ =i:@L
ie (n i@ ie (n i@
&) ie (n_ =i@n
d) iene (_ 'aIi:n d) iene (_ 'aIi:n
ie (ntal I'E ie (ntal I'E
g) ie (n i: g) ie (n i:
igu (e 'i:g igu (e 'i:g
igu (_ 'i:g igu (_ 'i:g


.group il
@b) il (_ @L
@Cc) il (_ @L
@p) il (_ @L
@r) il (_ @L
@s) il (_ @L
nt) il (_ @L
@v) il (_ @L
@) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) il (age aIl
_d) il (at %aIl
l) il (ah_ aIl
_m) il (d aIl
_w) il (d aIl
ch) il (d aIl
w) il (derC Il
ch) il (dr Il
sacr) ile IlI
il (eA Il
&) ile (ge @lI
il (ise @l
il (ize @l
s) il (en aIl
C) il (er aIl
_) il (l@ %Il
@) illa (_ 'Il@
&) illard (_ i:A:
_) il (ln Il
_) il (lust Il
_C) il (o aIl
&) ily (_S2i l%I


.group im .group im
&) im (_ I#m &) im (_ I#m
cl) im aIm cl) im aIm
imm (in Im imm (in Im
immo (bi Im'oU immo (bi Im'oU
imm (unis Im imm (unis Im
_) immu (no I2mju:
@) imous (_ =Im@s @) imous (_ =Im@s
im (pac Im im (pac Im
im (pecu ,Im im (pecu ,Im
in (ga_ 'IN in (ga_ 'IN
in (got IN in (got IN
_) in (gro IN _) in (gro IN
_) in (im I2n
_) in (jur In _) in (jur In
_) in (k IN _) in (k IN
_) in (l In _) in (l In
@) istan (_ =Istan @) istan (_ =Istan
@) istani (_ Ist'A:nI @) istani (_ Ist'A:nI
@) iste (_ 'i:st @) iste (_ 'i:st
@) is (tic 'Is
@) is (tic_ 'Is
r) is (y_ =@s r) is (y_ =@s




betr) oth oUD betr) oth oUD
?3 cl) o (th O ?3 cl) o (th O
cl) othe oUD cl) othe oUD
tr) othe oUD
b) o (ther 0 b) o (ther 0
_r) o (ther 0 _r) o (ther 0
o (ther+ V o (ther+ V
dr) on (_ @n dr) on (_ @n
or) on (_ 0n or) on (_ 0n
cr) on (_ 0n cr) on (_ 0n
x) on (_+ 0n
@x) on (_ @n
phot) on @n phot) on @n
pers) on @n pers) on @n
pers) on (i '0n pers) on (i '0n
.group or .group or
or o@ or o@
_) or O@ _) or O@
_) organo (@P6 O@g,anoU
or (ch_ O@ or (ch_ O@
or (m_ O@ or (m_ O@
st) or (m o@ st) or (m o@
?5 _) sur sVR ?5 _) sur sVR
_) sure SU@ _) sure SU@
sur (anc SU@ sur (anc SU@
sur (g+ s3:
sur (m s3 sur (m s3
sur (pa s3 sur (pa s3
sur (pr s3 sur (pr s3
te (rrest t2@ te (rrest t2@
r) tga (g gI r) tga (g gI
@) t (ia S @) t (ia S
_pi) t (ia t
s) t (l s) t (l
to (morr t@ to (morr t@
_) to (nn tV _) to (nn tV
tribe traIb tribe traIb
_) tri (bu trI _) tri (bu trI
_) tri (g trI _) tri (g trI
_) tri (gonA trI
_) tri (ni trI _) tri (ni trI
_) tri (vi trI _) tri (vi trI
_) tri (xA trI _) tri (xA trI
_) tsu tsu: _) tsu tsu:
_) two tu: _) two tu:
ttu (r t@ ttu (r t@
@) tu (al tSu:
@) tu (at tSu:
_sta) tu tSu:
?3 _sta) tu (to tS@
c) tu (al_ =tSu:
r) tue (_ tSu:
?3 tu (la_ tS@
@) tu (lat =tSU
?3 tu (Ant tSu:
?3 tu (Ancy tSu:

tu (ous tSu:
@) tur (A tS@r
@) tur (al_ tS=@r
&) tur (y tS@r
&) tur (_ tS3
&) ture (_ tS3
tz ts tz ts
tze (_ tsi tze (_ tsi


&) tious S=@s &) tious S=@s
AC) tive (_ =tIv AC) tive (_ =tIv



.group tu
@) tu (al tSu:
@) tu (at tSu:
_sta) tu tSu:
?3 _sta) tu (to tS@
c) tu (al_ =tSu:
r) tue (_ tSu:
?3 tu (la_ tS@
@) tu (lat =tSU
?3 tu (Ant tSu:
?3 tu (Ancy tSu:
tu (ous tSu:
@) tur (A tS@r
@) tur (al_ tS=@r
&) tur (y tS@r
&) tur (_ tS3
&) ture (_ tS3

.group u .group u
u V u V
man) u ju: man) u ju:
ö 3: ö 3:
ör 3: ör 3:
ü u: ü u:
û u:
ç s ç s
ß s ß s
č tS č tS

+ 4
- 0
dictsource/es_list View File

// names of symbols // names of symbols
ª a ª a
º o º o
° grados
_. punto _. punto
_, koma _, koma
_; p,untoik'oma _; p,untoik'oma
_#º o _#º o
_#ª a _#ª a
_ord o _ord o
ºc gr'ados||T'e
ºf gr'ados||'Efe
ºk gr'ados||k'a


_1o prim'Er _1o prim'Er
_2o seQ'und _2o seQ'und

+ 49
- 1
dictsource/hbs_list View File


// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage
// This file is UTF-8 encoded // This file is UTF-8 encoded


y ipsilon y ipsilon
z z@ z z@
ž Z@ ž Z@
а a
б b@
ц ts@
ћ tS;@2
ч tS@
џ dZ@
ѕ dz@
д d@
ђ dZ;@2
е E
ф f@
г g@
х x@
и i
ј j@2
к k@
љ l^@
л l@
м m@
њ n^@
н n@
о o
п p@
р R@
_с s@
ш S@
т t@
у u
в v@
з z@
ж Z@
ѓ dZ;@2
ќ tS;@2

ё jo
й kr,atko||'i
щ StS;@2
ъ tvR2d'i||zn,ak
ы jeri
ь m'eki||z,nak
э e
ю ju
я ja


_á $accent _á $accent
_é $accent _é $accent
_ó $accent _ó $accent
_ú $accent _ú $accent


_ar 'Arapsko
_cyr tS;'iRilitsa


// accent names // accent names
_lig l'ig&t,UR& _lig l'ig&t,UR&
_acu 'akUt _acu 'akUt

+ 6
- 1
dictsource/hbs_rules View File


// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage
// This file is UTF-8 encoded // This file is UTF-8 encoded


.group d .group d
d d d d
dz dz dz dz
_) dz (_ dz@
dž dZ dž dZ
_) dž (_ dZ@


.group đ .group đ
đ dZ; đ dZ;
.group l .group l
l l l l
K) l (K l- K) l (K l-
_) lj (_ l^@
lj (+ l^ lj (+ l^
v) lj lj v) lj lj


n (k N n (k N


nj n^ nj n^
_) nj (_ n^@


.group o .group o
o o o o

+ 15
- 4
dictsource/hi_list View File

श S@ श S@
ष s.@ // retroflex [S] ष s.@ // retroflex [S]
स s@ स s@
ह H@-
ह H@
क़ q@ क़ q@
ख़ x@ ख़ x@
ग़ Q@ ग़ Q@


_?? Vks.@r _?? Vks.@r


// Alphabet names
_ar 'Vrbi
_cyr sIrIk'Ik
_zh c'i@ni


// Punctuation // Punctuation
। dVn.d.V । dVn.d.V


$ dOl@r
% pVt'IS@t
+ plVs
= bVr'a:b@r
* ta:r'a:Nk@n
*

// Pronouns // Pronouns
मैं $u // main: IrI मैं $u // main: IrI
मुझे $u मुझे $u
को $u // ko: to को $u // ko: to
तक $u // tak: until, for(time) तक $u // tak: until, for(time)
बिना $u $pause // without (preposition) बिना $u $pause // without (preposition)
में $u // me: in
में me~: $u+ // me: in
से $u // se: from, with, by से $u // se: from, with, by






// Conjunctions // Conjunctions


और $u $pause // aur: and
और $u $brk // aur: and
य j@ $u $pause // ja: or य j@ $u $pause // ja: or
अगर $u $pause // agar: if अगर $u $pause // agar: if
यदि $u $pause // yadi: if, whether यदि $u $pause // yadi: if, whether




// Exceptions // Exceptions
क्रिकेट krIk'Et
क्रिकेट kr'IkIt
सायबर s'aIb@r सायबर s'aIb@r

+ 2
- 7
dictsource/hi_rules View File

ः H // visarga ः H // visarga


.group ् // virama .group ् // virama


// Extra consonants // Extra consonants


ज़ zV ज़ zV
ज़ (B z ज़ (B z


.group ड़ // dddha (should retroflex flap)
.group ड़ // dddha (should retroflex flap ?)
ड़ r.V ड़ r.V
ड़ (B r. ड़ (B r.








.group
$ dOlV
% pVsEnt



+ 2
- 1
dictsource/it_list View File

// This file is UTF-8 encoded
// This file is UTF-8 encoded




// $alt change [e] or [o] in the stressed syllable to [E] or [O] // $alt change [e] or [o] in the stressed syllable to [E] or [O]
# kantSellet:o # kantSellet:o
@ ki'otS:ola @ ki'otS:ola
~ tilde ~ tilde
° g@-*'a:di
: d,uep'unti : d,uep'unti


_! p,untoesklamat'ivo _! p,untoesklamat'ivo

+ 3
- 3
dictsource/ko_list View File

_0C p'Eq_! _0C p'Eq_!


// Larger numbers // Larger numbers
_0M0 tS'h-@n // 10^3
_1M0 tS'h-@n
_0M0 tS'h@n // 10^3
_1M0 tS'h@n
_0M1 m'an // 10^4 _0M1 m'an // 10^4
_1M1 m'an _1M1 m'an
_0M2 '@q // 10^8 _0M2 '@q // 10^8
ᄋ i;'u-N ᄋ i;'u-N
ᄌ tS;i;'u-t ᄌ tS;i;'u-t
ᄍ 's-aNdZ;,i;u-t ᄍ 's-aNdZ;,i;u-t
ᄎ tSh-'i;u-t
ᄎ tSh'i;u-t
ᄏ khi;'u-k ᄏ khi;'u-k
ᄐ thi;'u-t- ᄐ thi;'u-t-
ᄑ phi;'u-p ᄑ phi;'u-p

+ 3
- 3
dictsource/ko_rules View File

ᄍ 'tS;- // TODO: phoneme ᄍ 'tS;- // TODO: phoneme


.group ᄎ // ㅊ .group ᄎ // ㅊ
ᄎ tSh- // TODO: phoneme
ᄎ tSh // TODO: phoneme


.group ᄂ // ㄴ .group ᄂ // ㄴ
ᄂ ;n ᄂ ;n
ᇀᄂ nn ᇀᄂ nn
ᇀᄆ mm ᇀᄆ mm
ᇀ (A th ᇀ (A th
ᇀ (L02 tSh;
ᇀ (L02 tS;h


.group ᆸ // ㅂ .group ᆸ // ㅂ
ᆸ p ᆸ p
ᆾ t ᆾ t
ᆾᄂ nn ᆾᄂ nn
ᆾᄆ mm ᆾᄆ mm
ᆾ (A tSh;
ᆾ (A tS;h


.group ᆫ // ㄴ .group ᆫ // ㄴ
ᆫ n ᆫ n

+ 0
- 7
dictsource/ml_rules View File







.group 0xe0a4 // devanagari
0xe0a4 _^_HI // switch to hindi voice

.group 0xe0a5 // devanagari
0xe0a5 _^_HI


.group .group
$ do:l.ar $ do:l.ar

+ 8
- 4
dictsource/nl_list View File


// This file in UTF8 encoded // This file in UTF8 encoded


// $alt2, remove s from plural, remove en from plural // $alt2, remove s from plural, remove en from plural




// punctuation // punctuation
. p8nt $max3
. p8nt
_, k'Oma: _, k'Oma:
_: d'8b@l@p,8nt _: d'8b@l@p,8nt
_; p'8ntkOm,a: _; p'8ntkOm,a:
_{ v'irkAnt@h,a:k _{ v'irkAnt@h,a:k
_} v'irkAnt@h,a:ksl'Wyt@n _} v'irkAnt@h,a:ksl'Wyt@n
_- k'OpElt,e:k@n _- k'OpElt,e:k@n
+ pl'8s $max3
* st'E*rEt;@ $max3
+ pl'8s
* st'E*rEt;@
= Q@l'EIkte:k@n
__ l'IgEntst@-*'e:pj@ __ l'IgEntst@-*'e:pj@
€ 'Y:*o:t,e:k@n € 'Y:*o:t,e:k@n
° Qra:d@n




// numbers // numbers


// abbreviations // abbreviations
be $abbrev // used as domain abbrev for Belgium and in a lot of other names be $abbrev // used as domain abbrev for Belgium and in a lot of other names
ca ka: $hasdot
enz Enzo:vo:rt enz Enzo:vo:rt
bvb bEIv'o:rbe:lt bvb bEIv'o:rbe:lt
eu e:_y: $abbrev eu e:_y: $abbrev
schepen $alt schepen $alt
steven $alt steven $alt
teken $alt teken $alt
volwassen $alt
wapen $alt wapen $alt
zegen $alt zegen $alt
trokken $alt trokken $alt

+ 12
- 5
dictsource/nl_rules View File

// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant // Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant


.L01 g k .L01 g k
.L02 _ t_ d_ de_ den_ // verb endings
.L02 _ t_ d_ de_ den_ nen_ // verb endings ('nen' for 'scannen')




.group a .group a
g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] g Q // ph_dutch changes to [x] before unvoiced, NULL after [x]
gg Q gg Q
s) g x s) g x
@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij


.group ge
_) ge (@P2 Q@ _) ge (@P2 Q@
ge (bied Q@ ge (bied Q@
_) gee Qe: _) gee Qe:
_) gei QEI _) gei QEI
gener (aal Q,e:n@r gener (aal Q,e:n@r
_) gelijk Q@lEIk _) gelijk Q@lEIk
_) ge (lC QE
_) ge (rC QE _) ge (rC QE
_) geu QY: _) geu QY:
_) ge (ven Qe: _) ge (ven Qe:


ge (sprek Q@ // in compounds ge (sprek Q@ // in compounds


@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij




.group h .group h
h h h h
_) herinn h%ErIn // herinneren _) herinn h%ErIn // herinneren
_) hersen h'Ers@n _) hersen h'Ers@n
&) heid (_S4 hEIt &) heid (_S4 hEIt
_) hulp (@@P4 h'8lp




.group i .group i
pl) oi (t v#A pl) oi (t v#A
c) oi (ffu v#A c) oi (ffu v#A
pr) o (gram o: pr) o (gram o:
omgeving OmQ'e:vIN
oo (X 'o: oo (X 'o:
oon 'o:n // in compounds, eg. telefoongesprek oon 'o:n // in compounds, eg. telefoongesprek
oo (C_ 'o: oo (C_ 'o:
_) oost (@P4 o:st _) oost (@P4 o:st
_) op (@@P2 'Op _) op (@@P2 'Op
_) open (@P4 'o:p@n _) open (@P4 'o:p@n
_) op (enen 'o:p
_) op (enen+ 'o:p
_) openings (P8 'o:p@nINs _) openings (P8 'o:p@nINs
_) op (era 'o:p _) op (era 'o:p
_) op (tion Op _) op (tion Op

+ 106
- 72
dictsource/pt_list View File

eles $u+ $verbf eles $u+ $verbf
elas $u+ $verbf elas $u+ $verbf


me $u // reflexive
me $u $verbf
me $u $verbf // reflexive
te $u $verbf te $u $verbf
nos $u $nounf nos $u $nounf
la $u la $u
?2 nesta $u+ $nounf ?2 nesta $u+ $nounf
?2 neste $u+ $nounf n'estSi //in this ?2 neste $u+ $nounf n'estSi //in this
?2 esse $u+ $nounf 'esi // that ?2 esse $u+ $nounf 'esi // that
essa 'Es& $u+
essa 'Es& $u+ $noun
desse $u+ $nounf desse $u+ $nounf
desta $nounf desta $nounf
nesse n'esy $u+ $nounf nesse n'esy $u+ $nounf
duns $u $nounf duns $u $nounf
dumas $u $nounf dumas $u $nounf


em $u // in,on,at
em $u $noun // in,on,at
no nu $u $nounf no nu $u $nounf
na $u $nounf na $u $nounf
num $u $nounf num $u $nounf
// conjunctions // conjunctions
?1 e i $u // and ?1 e i $u // and
?2 e i $u // and ?2 e i $u // and
se $u // if
se $u+ $verbf // if




?2 mas $u // but ?2 mas $u // but


estava $u estava $u
estávamos $u estávamos $u
astavam $u
estavam $u


estive $u estive $u
?2 esteve estevy $u2 ?2 esteve estevy $u2




// some common adjectives and adverbs // some common adjectives and adverbs
alguns $u // some
algumas $u // some
não n,&U~ $strend // not
alguns $u $noun // some
algumas $u $noun // some
não n,&U~ $verbf $strend // not
nunca $u+ $verbf
sempre $u+ $verbf
qualquer $u $nounf
quaisquer $u $nounf
jamais $u+ $verbf




// MAIN WORD DICTIONARY // MAIN WORD DICTIONARY
adepto $alt adepto $alt
adore $alt adore $alt
adorno $alt $verb adorno $alt $verb
aeroporto $alt2
aeroportos $alt
albatrozes $alt albatrozes $alt
alcateia $alt alcateia $alt
alcova $alt2
alferes $alt alferes $alt
algozes $alt algozes $alt
alicerce $alt
almoço $alt $verb almoço $alt $verb
amarelo $alt
ameba $alt ameba $alt
amores $alt2 amores $alt2
antonieta $alt2 antonieta $alt2
apego $alt2 $noun apego $alt2 $noun
apelo $alt $verb
apelo $alt2 $noun
aposto $alt $verb aposto $alt $verb
aperto $alt2 $noun aperto $alt2 $noun
apneia $alt apneia $alt
arroz $alt2 arroz $alt2
assembleia $alt assembleia $alt
ateia $alt ateia $alt
aterro $alt2 $noun
aterros $alt2
aterro $alt2
aterro $alt $verb
atmosfera $alt atmosfera $alt
atrozes $alt atrozes $alt
autora $alt2 autora $alt2
azedo $alt $verb azedo $alt $verb
baqueta $alt2 baqueta $alt2
beco $alt2 beco $alt2
belo $alt
besta $alt2 besta $alt2
bilhete $alt2 bilhete $alt2
boca $alt2 boca $alt2
boceta $alt2
bochecha $alt2 bochecha $alt2
bojo $alt2 bojo $alt2
boleia $alt boleia $alt
bolo $alt $verb bolo $alt $verb
borboleta $alt2 borboleta $alt2
bordo $alt bordo $alt
borra $alt2 $noun
bosque $alt bosque $alt
boto $alt2 $noun boto $alt2 $noun
boxe $alt
brejo $alt
bromelha $alt bromelha $alt
cabelo $alt2
cabresto $alt2 cabresto $alt2
cacete $alt2 cacete $alt2
cachorra $alt2 cachorra $alt2
caderneta $alt2 caderneta $alt2
cadete $alt2 cadete $alt2
camelha $alt
camelo $alt2
caminhonete $alt
camiseta $alt2 camiseta $alt2
cantora $alt2 cantora $alt2
capacete $alt2 capacete $alt2
caractere $alt caractere $alt
caramelo $alt
carbureto $alt2
careta $alt2 careta $alt2
carreta $alt2 carreta $alt2
carroça $alt carroça $alt
casebre $alt casebre $alt
castelo $alt
cateto $alt2 cateto $alt2
catorze $alt2 catorze $alt2
cebola $alt2 cebola $alt2
cefaleia $alt cefaleia $alt
centopeia $alt
centopeia $alt
cerca $alt cerca $alt
cerca $alt2 $noun cerca $alt2 $noun
cerco $alt $verb cerco $alt $verb
chamego $alt2 chamego $alt2
chefe $alt chefe $alt
checam $alt checam $alt
cheque $alt
chinelo $alt
choro $alt2 $noun choro $alt2 $noun
chovesse $alt2 chovesse $alt2
chupeta $alt2 chupeta $alt2
clero $alt clero $alt
coco $alt2 coco $alt2
cofre $alt cofre $alt
cogumelo $alt
coice $alt2 coice $alt2
colabore $alt colabore $alt
colete $alt2 colete $alt2
concertos $alt2 concertos $alt2
concordo $alt concordo $alt
conforto $alt $verb conforto $alt $verb
congelo $alt
console $alt2 $noun
consolo $alt2 $noun consolo $alt2 $noun
controle $alt2 $noun controle $alt2 $noun
controles $alt2
controles $alt $verb
controlo $alt2 $noun controlo $alt2 $noun
coreia $alt coreia $alt
coreto $alt2 coreto $alt2
corveta $alt2 corveta $alt2
corvos $alt corvos $alt
coto $alt2 coto $alt2
cotovelo $alt2
cratera $alt cratera $alt
crede $alt2 crede $alt2
crepe $alt crepe $alt
decore $alt decore $alt
degelo $alt2
desapego $alt2 $noun desapego $alt2 $noun
descabelo $alt
descordo $alt descordo $alt
desemprego $alt2 desemprego $alt2
desemprego $alt $verb desemprego $alt $verb
desespero $alt2 $noun desespero $alt2 $noun
desfecho $alt2 desfecho $alt2
desmantelo $alt $verb
desmantelo $alt2 $noun
desporto $alt2
desportos $alt
desprezo $alt2 $noun desprezo $alt2 $noun
desse $alt2 desse $alt2
desse $alt $verb desse $alt $verb
deste $alt2 deste $alt2
deste $alt $verb deste $alt $verb
desterro $alt2 desterro $alt2
destroem $alt
destroem $alt
deveras $alt deveras $alt
dez $alt dez $alt
diarreia $alt diarreia $alt
diego $alt2
discordo $alt discordo $alt
dobro $alt2 $noun dobro $alt2 $noun
doce $alt2 doce $alt2
doutora $alt2 doutora $alt2
droga $alt droga $alt
duelo $alt
dueto $alt2 dueto $alt2
elixir eliSir elixir eliSir
elo $alt
emprego $alt2 $noun emprego $alt2 $noun
empregos $alt2 empregos $alt2
encosto $alt $verb encosto $alt $verb
enforco $alt enforco $alt
engordo $alt engordo $alt
enredo $alt $verb enredo $alt $verb
enrosco $alt $verb
enrosco $alt $verb
enterro $alt2 $noun enterro $alt2 $noun
enumerem $alt enumerem $alt
envelope $alt envelope $alt
envolto $alt2 envolto $alt2
enxaqueca $alt2
enxerto $alt2 $noun enxerto $alt2 $noun
epopeia $alt epopeia $alt
eritreia $alt eritreia $alt
erro $alt2 $noun
erros $alt2
erro $alt2
erro $alt $verb
esboço $alt $verb esboço $alt $verb
escopeta $alt2 escopeta $alt2
escova $alt2 $noun escova $alt2 $noun
escovas $alt2
escovas $alt2
escovo $alt escovo $alt
escroto $alt2 escroto $alt2
esforço $alt $verb esforço $alt $verb
esforços $alt esforços $alt
esgoto $alt2 $noun
esgotos $alt2
esgoto $alt2
esgoto $alt $verb
esperma $alt esperma $alt
espeto $alt2 $noun espeto $alt2 $noun
espiroqueta $alt2 espiroqueta $alt2
espoleta $alt2 espoleta $alt2
esposa $alt2 esposa $alt2
esqueleto $alt2 esqueleto $alt2
estilete $alt2
estilete $alt2
estrela $alt2 estrela $alt2
estrofe $alt estrofe $alt
estorno $alt $verb estorno $alt $verb
estorvo $alt $verb estorvo $alt $verb
etiqueta $alt2 etiqueta $alt2
europa $alt europa $alt
europeia $alt
europeia $alt
exagero $alt $verb exagero $alt $verb
explore $alt explore $alt
faceta $alt2 faceta $alt2
fantoche $alt
farelo $alt
fantoche $alt
farofa $alt farofa $alt
farolete $alt2
febre $alt febre $alt
fera $alt fera $alt
feitora $alt2 feitora $alt2
ferozes $alt ferozes $alt
fezes $alt fezes $alt
filete $alt2
?1 fixe fiSy ?1 fixe fiSy
foda $alt2 $verb foda $alt2 $verb
folheto $alt2
folga $alt
fogos $alt fogos $alt
foguete $alt2 foguete $alt2
foice $alt2 foice $alt2
folheto $alt2
fora $alt fora $alt
fora $alt2 $verb fora $alt2 $verb
forca $alt2 forca $alt2
força $alt2 $noun força $alt2 $noun
forças $alt2 forças $alt2
forço $alt forço $alt
formos $alt2
forro $alt $verb forro $alt $verb
frevo $alt2 frevo $alt2
fulgores $alt2
galera $alt galera $alt
galileia $alt galileia $alt
gameta $alt2 gameta $alt2
garçonete $alt2
geleia $alt geleia $alt
gelo $alt2
gelo $alt $verb gelo $alt $verb
genebra $alt genebra $alt
germe $alt
gesso $alt2 gesso $alt2
golpe $alt golpe $alt
gonorreia $alt gonorreia $alt
hoje $alt2 hoje $alt2
horrores $alt2 horrores $alt2
ideia $alt ideia $alt
interesse $alt2 $noun
imberbe $alt
interesse $alt2
interesse $alt $verb
jogo $alt2 $noun jogo $alt2 $noun
joguete $alt2 joguete $alt2
lagosta $alt2 lagosta $alt2
lambreta $alt2 lambreta $alt2
lanchonete $alt
lebre $alt lebre $alt
lembrete $alt2 lembrete $alt2
lepra $alt
leste $alt2 $verb leste $alt2 $verb
lingueta $alt2
lopes $alt lopes $alt
macete $alt2 macete $alt2
maior $alt maior $alt
maleta $alt2 maleta $alt2
marcelo $alt
marmelo $alt
marionete $alt
marreta $alt2 marreta $alt2
martelo $alt
megera $alt
melhor $alt melhor $alt
menor $alt menor $alt
merda $alt
megera $alt
melo $alt
mentora $alt2 mentora $alt2
merda $alt
meta $alt $noun meta $alt $noun
meteoro $alt meteoro $alt
metro $alt metro $alt
minueto $alt2 minueto $alt2
miolo $alt2 miolo $alt2
miolos $alt miolos $alt
modelo $alt2
modelo $alt $verb
moeda $alt moeda $alt
mofo $alt $verb
moem $alt
mofo $alt $verb
molho $alt2 $noun molho $alt2 $noun
monera $alt monera $alt
morcego $alt2 morcego $alt2
naquela $nounf naquela $nounf
naquele $alt2 $nounf naquele $alt2 $nounf
nervo $alt2 nervo $alt2
nojo $alt2
novelo $alt2
novos $alt novos $alt
obstetra $alt obstetra $alt
odisseia $alt odisseia $alt
onu $1 onu $1
olho $alt2 $noun
onomatopeia $alt
olho $alt2 $noun
olhos $alt
onomatopeia $alt
opereta $alt2 opereta $alt2
ordens $alt ordens $alt
osso $alt2 osso $alt2
palheta $alt2 palheta $alt2
panfleto $alt2 panfleto $alt2
pangeia $alt pangeia $alt
panqueca p,&~Nk'Ek&
pantera $alt pantera $alt
paralelo $alt
parede $alt2 parede $alt2
pastora $alt2 pastora $alt2
patinete $alt
pedra $alt pedra $alt
pela $alt $verb pela $alt $verb
pelego $alt2
pela $alt $verb
pelo $alt $verb
pelo $alt2
pelo $alt $verb
peso $alt $verb peso $alt $verb
piloto $alt2 $noun piloto $alt2 $noun
pintora $alt2 pintora $alt2
povos $alt povos $alt
poxa p'oS& poxa p'oS&
primavera $alt primavera $alt
prosopopeia $alt
prosopopeia $alt
quarteto $alt2 quarteto $alt2
queda $alt queda $alt
quede $alt2 quede $alt2
reforços $alt reforços $alt
refresco $alt $verb refresco $alt $verb
reitora $alt2 reitora $alt2
rejo $alt
relevo $alt2 $noun relevo $alt2 $noun
remorso $alt remorso $alt
renovo $alt $verb
retorno $alt $verb retorno $alt $verb
reuva x'EUv&
rigores $alt2
rixa x'iS& rixa x'iS&
rocha $alt rocha $alt
rock $alt rock $alt
roem $alt
rola $alt2 $noun rola $alt2 $noun
rolo $alt2 $noun rolo $alt2 $noun
rota $alt2 rota $alt2
secas $alt2 secas $alt2
seco $alt2 seco $alt2
seco $alt $verb seco $alt $verb
selo $alt $verb
selo $alt2
selo $alt $verb
selvagem seUv'aZeIN selvagem seUv'aZeIN
sexteto $alt2 sexteto $alt2
?1 senhora $alt2 ?1 senhora $alt2
senhores $alt2 senhores $alt2
singelo $alt
sinopse $alt sinopse $alt
soco $alt2 soco $alt2
soco $alt $verb soco $alt $verb
tapete $alt2 tapete $alt2
temores $alt2 temores $alt2
tempero $alt2 $noun tempero $alt2 $noun
tenores $alt2
terrores $alt2 terrores $alt2
teta $alt2 teta $alt2
tetra $alt tetra $alt
toga $alt toga $alt
topo $alt $verb topo $alt $verb
torno $alt $verb torno $alt $verb
tornozelo $alt2
torre $alt2 $noun torre $alt2 $noun
torres $alt2 torres $alt2
torro $alt
torro $alt
tortos $alt tortos $alt
traqueia $alt traqueia $alt
travesso $alt2 travesso $alt2
tumores $alt2 tumores $alt2
valeta $alt2 valeta $alt2
vanessa $alt2 vanessa $alt2
velo $alt
velozes $alt velozes $alt
verme $alt
verbete $alt2
violeta $alt2 violeta $alt2
violoncelo $alt violoncelo $alt
voga $alt voga $alt
vozes $alt vozes $alt
xarope $alt xarope $alt
xeque $alt
zelo $alt $verb
zero $alt
zelo $alt2 $noun
zorra $alt2 zorra $alt2




?1 back b'Ek ?1 back b'Ek
?2 backup bEk'&p ?2 backup bEk'&p
?2 backups bEk'&ps ?2 backups bEk'&ps
?1 blind bl'aind
blind bl'aind
book buk
?1 braille b:r'aily ?1 braille b:r'aily
?2 Braille bR'aili ?2 Braille bR'aili
?1 cancel k'&ns'El ?1 cancel k'&ns'El
?1 download d'a,wnl'oud ?1 download d'a,wnl'oud
?2 download daUNl'owd ?2 download daUNl'owd
?3 download dau~Nl'owd ?3 download dau~Nl'owd
drive dR'aivy
driver dR'aiver
drivers dR'aiveRs
?1 end 'end ?1 end 'end
?1 escape Sk'eIpy
?2 esc 'Esk ?2 esc 'Esk
?3 esc 'EskI ?3 esc 'EskI
?1 explorer ,ekspl'O:*&r- ?1 explorer ,ekspl'O:*&r-
?2 Intranet iNtRan'Et ?2 Intranet iNtRan'Et
?1 kernel k'Ern,El ?1 kernel k'Ern,El
?2 kernel k'Ern@l ?2 kernel k'Ern@l
laptop lEptOp
?1 line l'ain ?1 line l'ain
layout l'eI,aUt layout l'eI,aUt
?2 logo l'OgU ?2 logo l'OgU
?1 ovo 'ovu ?1 ovo 'ovu
?1 pause p'au:z ?1 pause p'au:z
page p'eIdZ page p'eIdZ
pizza p'its&
python p'aIT&~N python p'aIT&~N
?1 readme r'i:dmi: ?1 readme r'i:dmi:
?1 sapi s,ap'i ?1 sapi s,ap'i
?2 software s'Oftwe@- ?2 software s'Oftwe@-
?1 space sp'eIsy ?1 space sp'eIsy
?1 sporting sp'Ort,ing ?1 sporting sp'Ort,ing
?1 tab t'ab
tab t'aby
tablet t'ablet
?1 telemóvel t,El,Em'OvEl ?1 telemóvel t,El,Em'OvEl
?1 telemóveis t,El,Em'OveIs# ?1 telemóveis t,El,Em'OveIs#
?1 up &p ?1 up &p
?1 upload &pl'oud ?1 upload &pl'oud
?2 web w'Eb ?2 web w'Eb
?2 verbete verb'etSi
?2 verbetes verb'etSis
?1 yahoo 'i,ah'u ?1 yahoo 'i,ah'u
?2 yahoo iah'u ?2 yahoo iah'u
?1 yes j'Es ?1 yes j'Es
// foreign product names // foreign product names
?1 access 'aks,Es ?1 access 'aks,Es
?1 adobe &d'Oby ?1 adobe &d'Oby
apple 'Epow
chrome kR'owmi
debian d'Ebj&~N debian d'Ebj&~N
?1 excel ,Eks'El ?1 excel ,Eks'El
?1 express ,Ekspr'Es ?1 express ,Ekspr'Es
espeak isp'i:k espeak isp'i:k
?1 espeakedit isp'i:kEd,it ?1 espeakedit isp'i:kEd,it
facebook feisybuk
?1 fedora _^_EN ?1 fedora _^_EN
?1 firefox f'ai&rfOks
?2 firefox f'ai@fOks
firefox f'ai@fOks
?1 front fr'ont ?1 front fr'ont
?1 jaws dZ'au:z ?1 jaws dZ'au:z
?1 linux l,in'uks ?1 linux l,in'uks
?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
?1 office 'Of,is
/1 office 'Of,is
?2 office 'Ofsy
openoffice 'opeIN|'Ofis openoffice 'opeIN|'Ofis
?1 outlook 'autl'uk ?1 outlook 'autl'uk
?2 Outlook ,aUtl'uk ?2 Outlook ,aUtl'uk
suse z'u:ts@ suse z'u:ts@
?1 start st'art // nero StartSmart ?1 start st'art // nero StartSmart
?1 time t'aImy // nero show time ?1 time t'aImy // nero show time
twitter tw'iter
ubuntu ub'untu ubuntu ub'untu
?1 unix ,u:n'iks ?1 unix ,u:n'iks
?2 unix j'uniks ?2 unix j'uniks

+ 67
- 27
dictsource/pt_rules View File

?1 a (lK ,A // Algarve, Almerinda, etc... ?1 a (lK ,A // Algarve, Almerinda, etc...
?2 al (K aU ?2 al (K aU
a (lh+ a a (lh+ a

a (m &~ a (m &~
a (mAr_ & a (mAr_ &
a (mA@ & a (mA@ &
ái (s ''aI ái (s ''aI
á (iCK ''a á (iCK ''a
áy ''aI áy ''aI
ál (C ''aU
áu ''aU áu ''aU
áu (s ''aU áu (s ''aU
?1 ál ''Al ?1 ál ''Al
e (guem_ E e (guem_ E


e (lA_ E e (lA_ E
e (lo_ e
e (lo_ E
e (lAm_ E e (lAm_ E


i) e (r_ E i) e (r_ E
f) e (re_ E f) e (re_ E
f) e (rem_ E f) e (rem_ E


e (que_ E
e (quem_ E

e (rgA_ E e (rgA_ E
e (rgAm_ E e (rgAm_ E


e (rgue_ E
e (rguem_ E

e (rsA_ E e (rsA_ E
e (rsAm_ E e (rsAm_ E


e (stAm_ E e (stAm_ E
e (strA_ E e (strA_ E


e (rme_ E

e (rnA_ E e (rnA_ E
e (rnAm_ E e (rnAm_ E


e (xA_ E e (xA_ E
e (xAm_ E e (xAm_ E
?2 _n) e (t E ?2 _n) e (t E

em (C eIm em (C eIm
en (K eIN en (K eIN
enh en^ enh en^
_perd) e (L05_ e _perd) e (L05_ e
_quis) e (L05_ E _quis) e (L05_ E
_soub) e (L05_ E _soub) e (L05_ E
_talh) e (L05_ E
_trem) e (L05_ e _trem) e (L05_ e
diss) e (L06_ E // contra- diss) e (L06_ E // contra-
fend) e (L06_ e // de- o- fend) e (L06_ e // de- o-
_hosp) e (dL03_ E _hosp) e (dL03_ E
_gr) e (gL03_ e _gr) e (gL03_ e
_gal) e (gL03_ e _gal) e (gL03_ e
_pel) e (gL03_ e
_n) e (grL03_ e _n) e (grL03_ e
_ch) e (guL02_ e
estr) ei (L04_ EI estr) ei (L04_ EI
_inv) e (jL04_ E _inv) e (jL04_ E
tr) e (pL04_ E // es- tr) e (pL04_ E // es-
_dec) e (pL04_ E _dec) e (pL04_ E
_in) e (ptL03_ E _in) e (ptL03_ E
_p) e (quL02_ E
_s) e (quL02_ E
ad) e (quL04_ E ad) e (quL04_ E
l) e (que_ E
_imp) e (rL03_ E _imp) e (rL03_ E
_sev) e (rL03_ E _sev) e (rL03_ E
_reit) e (rL03_ E _reit) e (rL03_ E
_sinc) e (rL03_ E _sinc) e (rL03_ E
_g) e (rL04_ E _g) e (rL04_ E
_z) e (rL04_ E
qu) e (rL04_ E // re- qu) e (rL04_ E // re-
_op) e (rL04_ E _op) e (rL04_ E
gen) e (rL04_ E // de- re- gen) e (rL04_ E // de- re-
_alt) e (rL04_ E _alt) e (rL04_ E
_enc) e (rL04_ E
_sug) e (rL04_ E _sug) e (rL04_ E
_sup) e (rL04_ E _sup) e (rL04_ E
_tol) e (rL04_ E _tol) e (rL04_ E
_recup) e (rL04_ E _recup) e (rL04_ E
_refrig) e (rL04_ E _refrig) e (rL04_ E
_v) e (rbL03_ E _v) e (rbL03_ E
_alic) e (rcL02_ E
_p) e (rdL02_ E _p) e (rdL02_ E
_l) e (rdL03_ E _l) e (rdL03_ E
_h) e (rdL04_ E _h) e (rdL04_ E
_) e (rgL03_ e
_) e (rguL02_ E
_alb) e (rguL02_ E
_enx) e (rguL02_ E
_bez) e (rrL03_ e _bez) e (rrL03_ e
_inv) e (rtL03_ e _inv) e (rtL03_ e
_f) e (rvL03_ e _f) e (rvL03_ e
_alic) e (rçL03_ E
_p) e (sL01_ E
_l) e (sL03_ E
_refr) e (scL01_ E _refr) e (scL01_ E
_d) e (scL02_ E _d) e (scL02_ E
_cr) e (scL02_ E _cr) e (scL02_ E
_atr) e (vL03_ e _atr) e (vL03_ e
_r) e (zL04_ E _r) e (zL04_ E
_pr) e (zL04_ E _pr) e (zL04_ E
_rev) e (zL04_ E
_despr) e (zL04_ E _despr) e (zL04_ E
_embel) e (zL04_ E _embel) e (zL04_ E
_menospr) e (zL04_ E _menospr) e (zL04_ E
éi (s ''EI éi (s ''EI
é (iCK ''E é (iCK ''E
éy ''eI éy ''eI
él (C ''EU
éu ''EU éu ''EU
éu (s ''EU éu (s ''EU
é (uCK ''E é (uCK ''E
g (Y Z // ge gi g (Y Z // ge gi
gu (Y g gu (Y g
a) gu (ent gw a) gu (ent gw
_ar) gu (i gw
averi) gu (e gw
enxa) gu (e gw enxa) gu (e gw
i) gu (idade gw
lin) gu (e gw lin) gu (e gw
lin) gu (i gw lin) gu (i gw
_min) gu (e gw
_pin) gu (im_ gw
_pin) gu (ins_ gw
_sa) gu (i gw
san) gu (ín gw san) gu (ín gw
san) gu (in gw san) gu (in gw
tin) gu (i 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
?1 gu (ém_ g // eg: alguém, ninguém, etc... ?1 gu (ém_ g // eg: alguém, ninguém, etc...


i (A_ 'i i (A_ 'i
i (am_ 'i i (am_ 'i
i (em_ 'i

io (_ iU io (_ iU
io (s_ iU io (s_ iU
i (oCK i i (oCK i
ím (C ''im ím (C ''im
ín (K ''iN ín (K ''iN
ính ''in^ ính ''in^
íl (C ''IU




.group j .group j
_) l (_ 'Ele _) l (_ 'Ele
l l l l
l) l l) l
lh l^
lh lj
A) lh lj A) lh lj
?1 A) lh l^
A) lh l^
?4 A) lh l^ ?4 A) lh l^




o (lA_ O o (lA_ O
o (lAm_ O o (lAm_ O


o (lhe_ O
o (lhem_ O

o (ltA_ O o (ltA_ O
o (ltAm_ O o (ltAm_ O


o (lve_ O
o (lvem_ O

o (sA_ O o (sA_ O
o (so_N o // not for osos_ o (so_N o // not for osos_
o (sAm_ O o (sAm_ O


?1 o (l_ 'O ?1 o (l_ 'O
?2 ol (_ Ow ?2 ol (_ Ow
o (lh o
?2 _) o (lhA_ O
?2 _) o (lhAm_ O

om (_ oN om (_ oN
o (ma_ o o (ma_ o




//sort //sort
_f) o (L05_ o _f) o (L05_ o
_pormen) o (L05_ O
_f) o (L07_ o _f) o (L07_ o
_engl) o (bL01_ O
_s) o (bL02_ O _s) o (bL02_ O
_af) o (bL04_ O
_esn) o (bL04_ O _esn) o (bL04_ O
_engl) o (bL04_ O
br) o (chL04_ O br) o (chL04_ O
_deb) o (chL04_ O _deb) o (chL04_ O
_m) o (fL01_ O _m) o (fL01_ O
_ap) oi (L02_ OI _ap) oi (L02_ OI
_b) oi (L04_ OI _b) oi (L04_ OI
_t) o (lL03_ o _t) o (lL03_ o
c) o (lhL02_ O // es- en- re-
_t) o (lhL02_ O
_m) o (lhL04_ O
env) o (lvL02_ O // des-
_abs) o (lvL02_ O
_dev) o (lvL02_ O
_res) o (lvL02_ O
_rev) o (lvL02_ O
_ent) o (pL02_ O
_f) o (lgL04_ O
_emp) o (lgL04_ O
_) o (lhL04_ O
m) o (lhL04_ O
ent) o (pL02_ O
_c) o (pL03_ O _c) o (pL03_ O
_ens) o (pL04_ O _ens) o (pL04_ O
_s) o (prL04_ O _s) o (prL04_ O
_) o (ptL04_ O _) o (ptL04_ O
p) o (rL02_ o
_dev) o (rL02_ O
_defl) o (rL02_ O _defl) o (rL02_ O
_impl) o (rL02_ O _impl) o (rL02_ O
_inod) o (rL03_ O _inod) o (rL03_ O
?1 _) qua kwa // quatro, etc. ?1 _) qua kwa // quatro, etc.
?1 _) que ke // quente, etc. ?1 _) que ke // quente, etc.
?1 _) quei (C k'eI // queira, queima, etc ?1 _) quei (C k'eI // queira, queima, etc
A) quên (C kw'eIN // frequência, etc.
quên kw'eN // quinquênio, etc.
ade) qu (e kw ade) qu (e kw
_a) qu (idade_ kw
_a) qu (ífero_ kw
e) qu (estr kw e) qu (estr kw
ese) qu (ív kw
_e) qu (in kw _e) qu (in kw
fre) qu (ent kw fre) qu (ent kw
_ini) qu (idade_ kw
li) qu (id kw li) qu (id kw
lí) qu (id kw lí) qu (id kw
n) qu (en kw n) qu (en kw
_) qu (inqu kw
se) qu (en kw se) qu (en kw
tran) qu (il kw tran) qu (il kw
?1 quec kes // esquece, etc.
?1 queç kes // esqueça. ?1 queç kes // esqueça.
?1 A) que (nA_ ke // pequeno, etc. ?1 A) que (nA_ ke // pequeno, etc.
?1 C) quê (_ ke // porquê, etc. ?1 C) quê (_ ke // porquê, etc.
?1 A) s (G+ Z ?1 A) s (G+ Z
?1 A) s (_KS1 s# ?1 A) s (_KS1 s#
?1 A) s (_G+S1 Z ?1 A) s (_G+S1 Z
s (b z
s (d z
s (g z
s (l z
s (m z
s (n z
sr zx
s (v z


_) sobre (@P5 sob*e _) sobre (@P5 sob*e


u (iu w u (iu w
u (iCK u u (iCK u
uy uI uy uI
ul (K uw
u (lh+ u


um (_ u~N um (_ u~N
um (C u~m um (C u~m

+ 5
- 5
dictsource/ru_list View File

_11 Od;'innVttsVt; _11 Od;'innVttsVt;
_12 dv;In'AttsVt; _12 dv;In'AttsVt;
_13 tR;In'AttsVt; _13 tR;In'AttsVt;
_14 ts;It'y@-*nVttsVt;
_14 tS;It'y@-*nVttsVt;
_15 p;Itn'AttsVt; _15 p;Itn'AttsVt;
_16 SE#stn'AttsVt; _16 SE#stn'AttsVt;
_17 s;Imn'AttsVt; _17 s;Imn'AttsVt;
_0C st'o _0C st'o
_2C dv;'es;t;I _2C dv;'es;t;I
_3C tr;'ista _3C tr;'ista
_4C ts;It'yr;E2sta
_4C tS;It'yr;E2sta
_5C p;,It;s'ot _5C p;,It;s'ot
_6C S,E#s;t;s'ot _6C S,E#s;t;s'ot
_7C s;,Ims'ot _7C s;,Ims'ot
_8C vOs;Ims'ot _8C vOs;Ims'ot
_9C dev;Vts'ot _9C dev;Vts'ot
_1MA1 t'ys;Its;V // no '1' before thousand
_0MA1 t'ys;Its;i
_0M1 t'ys;Vts;
_1MA1 t'ys;ItS;V // no '1' before thousand
_0MA1 t'ys;ItS;i
_0M1 t'ys;VtS;
_1MA2 m;,IlI;'on _1MA2 m;,IlI;'on
_0MA2 m;,IlI;'ona _0MA2 m;,IlI;'ona
_0M2 m;,IlI;'onof _0M2 m;,IlI;'onof

+ 171
- 0
dictsource/te_list View File

// This file is UTF8 encoded
// Spelling to phoneme rules for Telugu



// speak Latin letters as English
a e:j
b bi:
c si:
d di:
e i:
f Ef
g dZi:
h e:tS
i a:j
j dZe:j
k ke:j
l El
m Em
n En
o o:
p pi:
q kju:
r a:rp
s Es
t t#i:
u ju:
v vi:
w dabalju:
x Eks
y wa:j
z zEd



// numbers
_0 sunna
_1 okat.i
_1a oka
_2 rend.u
_3 mu:d.u
_4 na:lugu
_5 aIdu
_6 a:ru
_7 ;e:d.u
_8 ;enimidi
_9 tommidi
_1X padi
_11 padakond.u
_12 pannend.u
_13 padammu:d.u:
_14 pad#na:lugu
_15 padihe:nu
_16 padaha:ru
_17 padihe:d.u
_18 padd#enimidi
_19 pandommidi
_2X irav#aI
_3X muppaI
_4X nalub#aI
_5X ja:b#aI
_6X arav#aI
_7X d.#eb#baI
_8X jenab#aI
_9X tomb#aI
_0C v#andala
_0C0 v#andalu
_1C okav#anda
_0M1 v#ela
_0M1x v#elu
_1M1 okav#ejji
_0M2 laks.ala
_0M2x laks.alu
_1M2 laks.a
_0M3 kotla
_0M3x kotlu
_1M3 koti
_dpt _d,aS;a:mkam


// symbols
_?? aks.aram // 'unknown character'
% S;a:tam
+ ku:d.ika
* naks.atra
\ bja:kasla:s.
/ kudiva:lugi:ta
© ka:pi:raIt.
¶ v#e:ra:

_, ka:ma:
_; semi:ko:lan
_: ko:lan
_! a:S;carja:rt#aka
_? praS;na:rt#aka
_- haIfan
__ amd.ar||sko:r


// unstressed function words
// articles
ద $u
అ $u+
ఆ $u+
ఒక $u


// letter names
U+c01 am
U+c02 an
U+c03 ah
U+c4d v#ottu

// consonants with virama
క్ ik
ఖ్ ik#
గ్ ig
ఘ్ ig#
ఙ్ iN
చ్ ic
ఛ్ ic#
జ్ iJ
ఝ్ iJ#
ఞ్ in^
ట్ it.
ఠ్ it.#
డ్ id.
ఢ్ id.#
ణ్ in.
త్ it
థ్ it#
ద్ id
ధ్ id#
న్ in
ప్ ip
ఫ్ ip#
బ్ ib
భ్ ib#
మ్ imu:
య్ ij
ర్ ir
ఱ్ ir
ల్ il
ళ్ il.
వ్ iv#
శ్ iS;
ష్ is.
స్ is
హ్ ih
ౘ్ its
ౙ్ idz


// combining vowels, precede by a click so they
// can be distinguished from stand-alone vowels
ా #X2a::
ి #X1i
ీ #X2i::
ు #X1u
ూ #X2u::
ృ #X1ru
ౄ #X2ru:
ె #X1e
ే #X2e::
ై #X2aI
ొ #X1o
ో #X2o::
ౌ #X2aU



+ 271
- 0
dictsource/te_rules View File


// This file is UTF8 encoded
// Spelling to phoneme rules for Telugu

// A means vowel letters (not vowel signs)
// B means a combining vowel sign or a virama


.replace
౦ 0 // Convert Telugu numbers
౧ 1
౨ 2
౩ 3
౪ 4
౫ 5
౬ 6
౭ 7
౮ 8
౯ 9


.group క
క ka
క (B k

.group ఖ
ఖ k#a
ఖ (B k#

.group గ
గ ga
గ (B g

.group ఘ
ఘ g#a
ఘ (B g#

.group ఙ
ఙ Na
ఙ (B N

.group చ
చ ca
చ (B c

.group ఛ
ఛ c#a
ఛ (B c#

.group జ
జ Ja
జ (B J

.group ఝ
ఝ J#a
ఝ (B J#

.group ఞ
ఞ n^a
ఞ (B n^

.group ట
ట t.a
ట (B t.

.group ఠ
ఠ t.#a
ఠ (B t.#

.group డ
డ d.a
డ (B d.

.group ఢ
ఢ d.#a
ఢ (B d.#

.group ణ
ణ n.a
ణ (B n.

.group త
త ta
త (B t

.group థ
థ t#a
థ (B t#

.group ద
ద da
ద (B d

.group ధ
ధ d#a
ధ (B d#

.group న
న na
న (B n

.group ప
ప pa
ప (B p

.group ఫ
ఫ p#a
ఫ (B p#

.group బ
బ ba
బ (B b

.group భ
భ b#a
భ (B b#

.group మ
మ ma
మ (B m

.group య
య ja
య (B j

.group ర
ర ra
ర (B r

.group ఱ
ఱ ra
ఱ (B r

.group ల
ల la
ల (B l

.group ళ
ళ l.a
ళ (B l.

.group వ
వ v#a
వ (B v#

.group శ
శ S;a
శ (B S;

.group ష
ష s.a
ష (B s.

.group స
స sa
స (B s

.group హ
హ ha
హ (B h

.group ౘ
ౘ tsa
ౘ (B ts

.group ౙ
ౙ dza
ౙ (B dz

.group ౠ
ౠ ru

.group ౡ
ౡ l-


// Stand-alone vowels
.group అ
అ a

.group ఆ
ఆ a:

.group ఇ
ఇ i

.group ఈ
ఈ i:

.group ఉ
ఉ u

.group ఊ
ఊ u:

.group ఋ
ఋ ru

.group ఌ
ఌ l-

.group ఎ
ఎ e
_) ఎ ;e

.group ఏ
ఏ e:

.group ఐ
ఐ aI

.group ఒ
ఒ o

.group ఓ
ఓ o:

.group ఔ
ఔ aU



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

. ఁ n // candrabindu

ం n // anusvara (this should nasalize the vowel)

ః h // visarga

// combining vowel signs

ా a:

ి i


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

ీ i:

ు u

ూ u:

ృ r-

ౄ r-:

ె e

ే e:

ై aI

ొ o

ో o:

ౌ aU

్ // virama

ౕ : // length mark ??
ౖ : // ai length mark ??


.group
$ d.a:lar



+ 187
- 12
dictsource/ur_list View File

ل la:m ل la:m
م mi:m م mi:m
ن nu:n ن nu:n
و va:O
_و va:O
ہ He: ہ He:
ں g#Unna ں g#Unna
ﮨ c#o:ti:||He: ﮨ c#o:ti:||He:
ی c#o:t.i:||je: ی c#o:t.i:||je:
ے bar.i:||je: ے bar.i:||je:
ئ h'amza ئ h'amza
ۂ He:h'amza
_ؤ va:Oh'amza


َ z@b@R َ z@b@R
ِ ze:R ِ ze:R
ُ pe:S ُ pe:S
ٰ ,alIfmaqs'u:R,a
ّ t,aSd'i:d ّ t,aSd'i:d
ً d'o:zab'aR ً d'o:zab'aR






// pronouns // pronouns
یہ jE $u
کہ kE $u
یہ j'e:H $u
وہ wo: $u وہ wo: $u
آپ $u آپ $u
تم tUm $u تم tUm $u
تجھے t'UJ#e: تجھے t'UJ#e:
جن J'In جن J'In
جنھیں J,InH'e:n جنھیں J,InH'e:n
انھوں ,UnH'o:n
انھیں ,InH'e:n
انہوں ,UnH'o:n
انہیں ,UnH'e:n


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


اور OR $u $brk اور OR $u $brk
کہ k'e:H $u


// unstressed verbs // unstressed verbs
ہے $u ہے $u


// Pronunciation exceptions // Pronunciation exceptions
پاکستان p'a:k'i:st'a:n پاکستان p'a:k'i:st'a:n
سندھ s'Ind#
کچھ k'Uc# کچھ k'Uc#
لنکس l'Ink,s لنکس l'Ink,s
لفظ l'afz. لفظ l'afz.
مسلح m,Usal'aH مسلح m,Usal'aH
متفق mUt'afIq متفق mUt'afIq
سابق s'a:bIq سابق s'a:bIq
برسر b,aRs'aR
اعلان e:l'a:n اعلان e:l'a:n
سنئیے sUn'i:;e: سنئیے sUn'i:;e:
کلنگ k'IlIn,g کلنگ k'IlIn,g
جسٹس J'ast.,Is جسٹس J'ast.,Is
شکایت S,Ika:j'at شکایت S,Ika:j'at
شکست SIk'ast شکست SIk'ast
منزل m'anz,Il
شعر S'e:R شعر S'e:R
فعل f'e:l فعل f'e:l
خصوصی xUs.'u:s.i: خصوصی xUs.'u:s.i:
باہر ba:H'aR باہر ba:H'aR
دیا d'i:;a: دیا d'i:;a:
انڈیا ,Ind.'i:;a: انڈیا ,Ind.'i:;a:
مظاہرین m,Uz.a:HIR'i:n
فائرنگ f'a:jIR,Ing فائرنگ f'a:jIR,Ing
ڈائریکٹر d.,a:jIR,e:kt.'aR ڈائریکٹر d.,a:jIR,e:kt.'aR
فرقہ f'IRqa فرقہ f'IRqa
بغیر baQ'e:R بغیر baQ'e:R
ممکن m'Umk,In ممکن m'Umk,In
ممکنہ m'Unk,In,a ممکنہ m'Unk,In,a
طرح taR'aH
الیکشن ,Ile:kS'an الیکشن ,Ile:kS'an
ووٹنگ vo:t.'Ing ووٹنگ vo:t.'Ing
شواہد Sav'a:HId شواہد Sav'a:HId
تعین t'a:jUn تعین t'a:jUn
باعث b'a:jIs باعث b'a:jIs
کتب k'UtUb کتب k'UtUb
سلسلہ s'Ils,Il,a
سلسلے s'Ils,Ile:
بحث be:He:s بحث be:He:s
قسمت q,Ism'at قسمت q,Ism'at
آور a:v'aR آور a:v'aR
بظاہر baz.'a:HIR بظاہر baz.'a:HIR
ظاہر z.'a:HIR ظاہر z.'a:HIR
حکم H'Ukm حکم H'Ukm
کورٹ k'o:Rt.
برطرف b,aRtaR'af
برطرفی b,aRt'aRf,i:
لئے l'i:;e:
نامزد n,a:mz'ad
نامزدگی n,a:mz'adg,i:
معطل m,Oat'al
معطلی m,Oat'ali:
تین t'i:n
تینوں ti:n'o:n
ڈاکٹر d.,a:kt.'aR
اقبال ,Iqb'a:l
جرم J'URm
اقتدار ,IqtId'a:R
عشرت ,ISR'at
نگران n,IgR'a:n
نگرانی n,IgR'a:ni:
مستقل m,Ust'aqIl
مستقبل m,Ust'aqb,Il
میر m'i:R
چھ c#'eh_!
خفیہ xUf'i:;a
اٹھانا Ut.#'a:na:
اٹھانی Ut.#'a:ni:
اٹھانے Ut.#'a:ne:
اٹھا 'Ut.#a:
اٹھی 'Ut.#i:
اٹھے 'Ut.#e:
قوت qu:v'at
اٹھایا Ut.#'a:ja:
اٹھائی Ut.#'a:ji:
اٹھائے Ut.#'a:je:
مدافعت m,Uda:fI;'at
خطرہ x'atRa
مظفر m,Uz.af'aR
کرکٹ kRIk,It.
انگلینڈ ,Ingl'e:nd.
رنز R'anz
انسداد ,InsId'a:d
نہیں naH'i:n
صحتِ s.e:H'ate:
متفقہ mUt'afIqa
تعلق t'a:lUq
متعلق mUt'a:lIq
متعلقہ mUt'a:lIqa
مسترد m,UstaR'ad
مثبت m,Usb'at
تاہم ta:H'am
پیشرفت p,e:SR'aft
تعطل t'a:tUl
متعدد mUt'a:dId
گیا g'aja:
(کیا گیا) k'i:;a:||g'aja:
(ہوا تھا) H'u:a||t#a:
(کیا ہوا) kj'a:||H'u:a:
اتحاد ,ItaH'a:d
اننگز In'Ingz
بیٹنگ be:t.'Ing
منٹ m'InIt.
ناممکن n'a:mUmkIn
(کیا جائے) k'i:;a:||J'a:je:
جمعرات J,Ume:R'a:t
جمعہ J'Uma:
برسرِ b,aRs'aRe:
درجنوں d,aRJan'o:n
درجن d,aRJ'an
خلاف xIl'a:f
برخلاف b,aRxIl'a:f
کرکٹر kRIkIt.'aR
ذمہ D'Im,a
دستخط d,astx'at
اجاگر ,UJa:g'aR
فطرت f,ItR'at
فطرتاً f,ItRat'an
طاقتور ta:q'atvaR
دفتر d,aft'aR
مشرف m,USaR'af
سنگھ s'Ing#
کمپلیکس k,ampl'e:ks
مرتبہ m,aRt'ab,a
واقع v'a:qe:
یہیں jaH'i:n
کیونکہ kj,u:nk'e:H
گفتگو g'Uft,Ugu:
جستجو J'Ust,UJu:
بھانت b#'a:nt
چکے c'Uke:
مفت m'Uft
(تو نے) t'u||n'e:
پرسکون p,URsUk'u:n
منحصر m,UnH'as.IR
سکون sUk'u:n
گشت g'aSt
گذار gUD'a:R
پرور p'aRvaR
قصے q'Is.e:
قصہ q'Is.,a
قصوں qIs.'o:n
محفوظ m,e:Hf'u:z.
مقدس m,Uqad'as
و o:
انحراف ,InHIR'a:f
مبینہ m,Ubai:;'an,a
متبادل m,Utab'a:dIl
گنا g'Una:
ملک m'Ulk
ملکی m'Ulk,i:
ملکوں m,Ulk'o:n
ممالک mUm'a:lIk
سنیچر s,ani:c'aR
اختر ,axt'aR
ملا m'Ila:
سٹیڈیم st.e:d.i:;'am
مدت mUd'at
باکس b'a:ks
آفس 'a:fIs
اشاعت ,ISa:'a:t
اظہار ,Iz.H'a:R
برقرار b,aRqaR'a:R
گھریلو g#aR'e:lu:
ٹھیک t.#'i:k
مشتمل m,USt'amIl
متلاشی m,Utal'a:Si:
ذکر D'IkR
محسوس m,e:Hs'u:s
برعکس b,aR'aks
بت b'Ut
بتوں bUt'o:n
سسٹم sIst.'am
معمر m,Oam'aR
حلیے H'Ulje:
ہلا H'Ila:
گذشتہ gUD'aSta
خطوط xUt'u:t
ہفتہ H'afta
مکرر m,UkaR'aR
چینی c'i:ni:
خیرمقدم x,e:Rm,aqd'am
محترمہ m,UHt'aRma
محترم m,UHtaR'am
ورزش v'aRz,IS
شروع S'URu:
انٹرنیٹ ,Int.,aRn'e:t.
سروس s'aRvIs
سروسز s'aRvIs,Iz
لطف l'Utf
سامع s'a:me:
ہوائیں H,ava:j'e:n
سرے s'IRe:
طبیعت t,abi:;'at
سخن sUx'an
گہر go:H'aR
سست s'Ust
لیکن l'e:kIn
سیاست sja:s'at
ریاست Rja:s'at
منسلک mUns'alIk
داخل d'a:xIl
نجی n'IJi:
منہدم m,UnH'adIm
گم g'Um
محدود m,e:Hd'u:d
متحارب m,UtaH'a:RIb
جنت Jan'at
سفر saf'aR
(فیس بک) f'e:s||b'Uk
بینک b'e:nk
حقوق HUq'u:q
آئندہ a:'Ind,a
اہتمام 'e:HtIm,a:m
قلت qIl'at
استحکام ,Iste:Hk'a:m
حصول HUs.'u:l
منقطع m,Unq'ata:
مرتکب m,URt'akIb
منہ m'u:n
فتنہ f'Itna
ذرائع DaR'a:e:
مریم m,aRi:;'am

+ 122
- 9
dictsource/ur_rules View File

٨ 8 ٨ 8
٩ 9 ٩ 9
ي ی ي ی
یٰ ا




// vowel signs, alif acts as consonants at start of word if these follow // vowel signs, alif acts as consonants at start of word if these follow
_) ایمان i:m'a:n _) ایمان i:m'a:n
_) اعت 'e:tI _) اعت 'e:tI
_) اضاف Iz'a:f _) اضاف Iz'a:f
_) اختلاف ,IxtIl'a:f
_) اسمبلی as'ambli:
_) اٹھت 'Ut.#t
_) اٹھن 'Ut.#n
_) اٹھات Ut.#'a:t
اقلیت ,aqali:;'at
استثن ,Ist'asn
اندھیر 'and#e:R
انتالیس ,Unta:l'i:s
انتیس ,Unt'i:s
اکثر ,aks'aR
ایران i:R'a:n
اجتماع ,IJtIm'a:
استحصال ,Ist,e:Hs.'a:l
_) امنگ Um'ang
انعام In'a:m
امتحان ,ImtIH'a:n
الزام ,Ilz'a:m
اشتہار ,IStIH'a:R
اصول Us.'u:l


.group آ .group آ
آ a: آ a:
عا a: عا a:
_) ع a _) ع a
_) عیس 'i:s _) عیس 'i:s

_) عید 'i:d
عنوان Unv'a:n


.group و .group و
و o: و o:
.group ے // yeh barree .group ے // yeh barree
ے e: ے e:


.group ۂ
ۂ 'ae:

// with hamza // with hamza
.group ئ .group ئ
ئ ئ
بھیک bh'i:k بھیک bh'i:k
بھیگ bh'i:g بھیگ bh'i:g
بھول bh'u:l بھول bh'u:l

_) بیان baj'a:n
_) بٹھا b'It.#a:
بئی b'ai:
بیوی b'i:vi:
_) بیوا b'e:va:
برسر b,aRs'aR
بگاڑ bIg'a:r.
بغاوت b,aQa:v'at


.group پ .group پ
پ pV پ pV
_) پھر ph'IR _) پھر ph'IR
پھول ph'u:l پھول ph'u:l
_) پہل (L01 p'e:Hl _) پہل (L01 p'e:Hl

پہنچ paH'Unc
پوچھ p'u:c#


.group ت .group ت
ت tV ت tV
تھ (L01 t# تھ (L01 t#
تّ ttV تّ ttV
تّ (L01 tt تّ (L01 tt
_) تمہ t'UmH
تحقیق t,e:Hq'i:q
_) ترجم t'aRJ,Um




.group ٹ .group ٹ
ٹھ (L01 t.# ٹھ (L01 t.#
ٹّ t.t.V ٹّ t.t.V
ٹّ (L01 t.t. ٹّ (L01 t.t.
ٹریفک t.R'e:fIk
_) ٹکڑ t.'Ukr.




.group ث .group ث
جّ (L01 JJ جّ (L01 JJ
_) جیت J'i:t _) جیت J'i:t
_) جوا J'ava: _) جوا J'ava:

جانب J'a:nIb
_) جنس J'Ins
جھوٹ J#'u:t.
_) جمل J'Uml


.group چ .group چ
چ cV چ cV
چھ (L01 c# چھ (L01 c#
چّ ccV چّ ccV
چّ (L01 cc چّ (L01 cc
_) چکا c'Uka:




.group ح .group ح
ح HV ح HV
ح (L01 H ح (L01 H
ح (_ H
ح (_ 'aH
L01) ح (_ H
حکومت H,Uku:m'at
حکمران H,UkmaR'a:n
_) حوال Hav'a:l


حّ HHV حّ HHV
حّ (L01 HH حّ (L01 HH


.group خ .group خ
خ xV خ xV
خ (L01 x خ (L01 x
خت(_ xt
@) خ (ت x
خّ xxV خّ xxV
خّ (L01 xx خّ (L01 xx
_) خوش x'US _) خوش x'US
دھ (L01 d# دھ (L01 d#
دّ ddV دّ ddV
دّ (L01 dd دّ (L01 dd

درخواست d,aRxv'a:st
دیا(_ d'i:;a:
درج d'aRJ
دیوا d'i:va:
_) دوسر d'u:sR
دفاع d'Ifa:


.group ڈ .group ڈ
ڈ d.V ڈ d.V
ڈھ (L01 d.# ڈھ (L01 d.#
ڈّ d.d.V ڈّ d.d.V
ڈّ (L01 d.d. ڈّ (L01 d.d.
ڈھونڈ d.#'u:nd.


.group ذ .group ذ
ذ DV ذ DV
ر (L01 R ر (L01 R
رّ RRV رّ RRV
رّ (l01 RR رّ (l01 RR
@) ر (ٹ R
@) ر (ڈ R
_) رہت R'e:Ht
@) ر (د R
@) ر (چ R


.group ڑ .group ڑ
ڑ r.V ڑ r.V
ز (L01 z ز (L01 z
زّ zzV زّ zzV
زّ (L01 zz زّ (L01 zz
_) زند z'Ind


.group ژ .group ژ
ژ ZV ژ ZV
_) سلجھ (L01 sUlJh _) سلجھ (L01 sUlJh
_) سدھر sUdh'aR _) سدھر sUdh'aR
_) سدھر (L01 sUdhR _) سدھر (L01 sUdhR
_) سلسل s'Ils,Il
_) ستار sIt'a:R
@) س (ٹ s
سندھ s'Ind#
سیکھ s'i:k#
@) س (ت s
_) سپرد sUp'URd


.group ش .group ش
ش SV ش SV
ش (L01 S ش (L01 S
شّ SSV شّ SSV
شّ (L01 SS شّ (L01 SS
_) شعب S'Ob
شاعر Sa:'a:IR
_) شعرا S'ORa:
_) شعل S'Ol
@) ش (ت S
_) شخص S'axs.


.group ص .group ص
ص s.V ص s.V
ص (L01 s. ص (L01 s.
صّ ssV صّ ssV
صّ (L01 ss صّ (L01 ss
صوب s.'u:b


.group ض .group ض
ض zV ض zV
.group ط .group ط
ط tV ط tV
طھ t#V طھ t#V
ط (L01 t
ط (L01 t
طھ (L01 t# طھ (L01 t#
طّ ttV طّ ttV
طّ (L01 tt طّ (L01 tt
ف (L01 f ف (L01 f
فّ ffV فّ ffV
فّ (L01 ff فّ (L01 ff
_) فکر f'IkR


.group ق .group ق
ق qV ق qV
ق (L01 q ق (L01 q
قّ qqV قّ qqV
قّ (L01 qq قّ (L01 qq
قاعد q'a:jd


.group ک .group ک
ک kV ک kV
کّ kkV کّ kkV
کّ (L01 kk کّ (L01 kk
_) کتن k'Itn _) کتن k'Itn
کوئل k'o:Il
کتاب kIt'a:b
کوشش k'o:SIS


.group گ .group گ
گ gV گ gV
_) گرفت g'IRIft _) گرفت g'IRIft
_) گزر gUz'aR _) گزر gUz'aR
_) گزر (L01 gUzR _) گزر (L01 gUzR
گئے g'ae:
گئی g'ai:
گمشد g'UmS,Ud
_) گھما g#'Uma:


.group ل .group ل
ل lV ل lV
مّ mmV مّ mmV
مّ (L01 mm مّ (L01 mm
_) مشکل m'USk,Il _) مشکل m'USk,Il
محکم me:He:km
مظاہر mUz.'a:HIR
_) ملن (L01 m'Iln
مسجد m'asJ,Id
مشرق m'aSR,Iq
مقدم mUq'adm
مسلم m'Usl,Im
مسلما mUs'alm,a:
@) م (پ m
موجود mo:J'u:d
منزل m'anz,Il
@) م (ب m
محقق mUH'aqIq
منظر m,anz.'aR
محفل m'e:Hf,Il
مسکرا m'Usk,URa:
مسکراہٹ m,Usk,URa:H'at.
محسن m'o:Hs,In
مجرم m'UJR,Im
منظور m,anz.'u:R
ملزم m'Ulz,Im
مغرب m'aQR,Ib
منسوخ m'ansu:x


.group ن .group ن
ن nV ن nV
@) ن (چ n @) ن (چ n
_) نکال nIk'a:l _) نکال nIk'a:l
_) نگاہ nIg'a:H _) نگاہ nIg'a:H
_) نمٹ nIm'at.
_) نمٹ (L01 nImt.
@) ن (پ n
@) نچل n'Icl
نشان nIS'a:n
@) ن (ڈ n
_) نظر naz.'aR
_) نظام nIz.'a:m


.group ں .group ں
ں n // this should nasalize the vowel ں n // this should nasalize the vowel

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

name english name english
language en-uk 2
language en-gb 2 language en-gb 2
language en-uk 2
language en 2 language en 2
gender male gender male



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

dictrules 3 6 dictrules 3 6
option reduce_t 1 option reduce_t 1


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


replace 03 I i replace 03 I i

+ 1
- 1
espeak-data/voices/es-la View File

name spanish-latin-american
name spanish-latin-am
language es-la language es-la
language es-mx 6 language es-mx 6
language es 6 language es 6

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

name akan-test
language ak
translator sw

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

name azerbaijani-test
language az


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

name bengali
name bengali-test
language bn language bn
gender male gender male

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

name divehi-test
language dv


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

name haitian
language ht

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

name kazakh
language kk

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

name Korean
name korean-test
language ko language ko
gender male gender male
pitch 80 118 pitch 80 118

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

name maltese-test
language mt

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

name northern-sotho
language nso
translator sw

+ 0
- 5
espeak-data/voices/test/prs View File

name dari-test
language prs

translator fa
stressrule 10

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

name kinyarwanda-test
language rw
gender male

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

name sinhala
name sinhala-test
language si language si


intonation 2 intonation 2

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

name telugu
name telugu-test
language te language te


intonation 2 intonation 2

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

name setswana-test
language tn

+ 0
- 5
espeak-data/voices/test/tt View File

name tatar-test
language tt

tunes s3 c3 q3 e3


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

name wolof-test
language wo


BIN
phsource/d/xd View File


BIN
phsource/envelopes.png View File


+ 7
- 7
phsource/ph_bengali View File

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




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




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




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




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




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

+ 263
- 307
phsource/ph_danish View File

// PB General rules for vowels: // PB General rules for vowels:
// Short vowels // Short vowels
// ACC: Short "pille" [p?el@-]
// AC[V]: Short "piler" [p?ilV]
// ACC: Short "pille" [p?el@-], "andre" [AndRV]
// AC[V]: Short "piler" [p?ilV] - verbs, not nouns, which is a problem
// A[N]: Short "bange" [b?AN@-] // A[N]: Short "bange" [b?AN@-]
// Long vowels // Long vowels
// A + group #@ OR group #e: Long "ae" "aer" [&:@-]
// AC + group #@ OR group #e: Long "pile" [pi:l@-]
// A + @- OR V: Long "ae" "aer" [&:@-]
// AC + @- OR V: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di] // AC[i]: Long "smidig" [smi:Di]


// Change the length of short vowels (?+vowel)
procedure ShortVowelLength
// "endelig" - Short initial vowel sounds too short
IF thisPh(isWordStart) THEN
length 160
RETURN
ENDIF
// "slutte" t/d + @- makes the u too long
IF next2PhW(@-) THEN
IF nextPhW(t) OR nextPhW(d) THEN
//length 100
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound
// Exit the procedure
RETURN
ENDIF
ENDIF
// "bygget" - consonant + [@-D] makes the vowel too long
IF next2PhW(@-) THEN
IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound ("brygget")
// Exit the procedure
RETURN
ENDIF
ENDIF
// "bygger" - consonant + [V] makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(V) THEN
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound ("brygger")
// Exit the procedure
RETURN
ENDIF
// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
// length 100
LengthAdd -50
ENDIF
// "ring", "ringe", "fængsel"
IF nextPhW(N) THEN
// length 100
LengthAdd -10
ENDIF
// "sigte" t/d + @- makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN
IF next3PhW(@-) THEN
// length 100
LengthAdd -50
ENDIF
ENDIF
endprocedure

// Change the length of normal vowels (without ? in front of them)
procedure LongVowelLength
// "alene" - Short initial vowel sounds too short at length 140
IF thisPh(isWordStart) THEN
length 160
RETURN
ENDIF
// "forlade" - [D@-] makes the vowel too long
IF nextPhW(D) AND next2PhW(@-) THEN
length 180
RETURN
ENDIF
// PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n]
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
ENDIF
// PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225
ENDIF
// "ræve", "dele", "mene", "røve", "møve"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN
length 225
ENDIF
// "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
// Don't make "møve" [m'Ww_!@-_!] short
IF NOT next2PhW(_!) THEN
length 140
ENDIF
ENDIF
// "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
IF next2PhW(@-) OR next2PhW(V) THEN
// length 180
LengthAdd -70
ENDIF
ENDIF
// "syste", "sylte" t/d/D + @- makes the vowel too long
// "international", - added [V] TEST
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) OR next2PhW(D) THEN
IF next3PhW(@-) OR next3PhW(V) THEN
length 110
ENDIF
ENDIF
// "glimrende" [l/3] makes the following vowel too long
// LengthAdd doesn't work here. The length could be 225 or 140 - 30
IF prevPhW(l/3) THEN
// LengthAdd -30
length 110
ENDIF
// "længe" - short - 2 consonants => 1 consonant (ng => [N])
IF nextPhW(N) THEN
length 140
ENDIF
endprocedure

// A bit longer than [@-]
phoneme @ phoneme @
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
unstressed unstressed
IF nextPhW(*) OR nextPhW(r) THEN IF nextPhW(*) OR nextPhW(r) THEN
ipa NULL // @-* is used to make 'r' ipa NULL // @-* is used to make 'r'
ENDIF ENDIF
length 40
length 50
// "femten", "manden" - only a short "n" sound
IF nextPhW(n) THEN
length 15
ENDIF
IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN
length 15
ENDIF
// "lige" [li@-]
IF prevPhW(i) AND thisPh(isWordEnd) THEN
length 15
ENDIF
FMT(vowel/@-) FMT(vowel/@-)
endphoneme endphoneme




phoneme i phoneme i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 95 //150
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 150
length 140
// Long vowel followed by consonant and @- "gide", "pile"
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN
// length 225
ENDIF ENDIF
// "gider", vrider" // "gider", vrider"
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 95
ENDIF
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150
ENDIF
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
ENDIF
// This vowel is word end - longer because it sounds too short
// "sig", "si"
IF thisPh(isWordEnd) THEN
length 120
length 140
ENDIF ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
length 140
ENDIF ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
length 240
//"skideren" long
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/i_4) FMT(vowel/i_4)
endphoneme endphoneme


// sviret vs. svirret // sviret vs. svirret
phoneme ?i phoneme ?i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 90
length 140
CALL ShortVowelLength
IfNextVowelAppend(;) IfNextVowelAppend(;)
FMT(vowel/i_4) FMT(vowel/i_4)
endphoneme endphoneme


phoneme e phoneme e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 95 //150
// "delte", "mente"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 150
ENDIF
// PB "ring", "ringe"
IF nextPhW(N) THEN
length 95
ENDIF
// PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
ENDIF
length 140
CALL LongVowelLength
CALL ShortVowelLength
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


// "skille" vs. "skele", "pille" vs. "pile" // "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e phoneme ?e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
length 140
CALL ShortVowelLength
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 100 //150
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
// length 150
ENDIF
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 160
length 140
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF ENDIF
// "ære", "kærester", "ærefrygt" - longer E
// "ære", "kærester", "ærefrygt" - vowel + vowel
IF nextPhW(V) THEN IF nextPhW(V) THEN
length 180
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 160
length 225
ENDIF ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 160
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 120
// "dræber" TEST shortened by -70 in procedure because of the "r" sound
IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) AND next2PhW(V) THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
// "værelse" [v'E3-Vls@_!] // "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN IF nextPhW(3-) AND next2PhW(V) THEN
length 120
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 120
length 100
ENDIF ENDIF
FMT(vowel/e_mid2) FMT(vowel/e_mid2)
endphoneme endphoneme
phoneme ?E phoneme ?E
vowel starttype #e endtype #e vowel starttype #e endtype #e
ipa ε ipa ε
length 100
length 140
CALL ShortVowelLength
FMT(vowel/e_mid2) FMT(vowel/e_mid2)
endphoneme endphoneme


phoneme & phoneme &
vowel starttype #e endtype #e vowel starttype #e endtype #e
ipa a
length 90 //150
// "same", "sale", "bade" - consonant + gooup #e or group #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ipa æ
length 140
// "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN
IF NOT next3PhW(n) THEN
length 225
ENDIF
ENDIF ENDIF
// ThisPh + gooup #e or group #@
// ThisPh + V or @-
// "ae", "aer" vowel + vowel: extra length // "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
ENDIF
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
ENDIF
// "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
IF nextPhW(@-) OR nextPhW(V) THEN
length 260
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/ee_2) FMT(vowel/ee_2)
endphoneme endphoneme


// PB Short &
// Short &
// e.g. the last a in "staldkarl" // e.g. the last a in "staldkarl"
// "sale" vs. "sal" // "sale" vs. "sal"
phoneme ?& phoneme ?&
ipa a
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
FMT(vowel/ee_2)
length 140
FMT(vowel/ee_2)
endphoneme endphoneme


// PB added for the æ in "dræbt"
// Added for the æ in "dræbt"
phoneme &# phoneme &#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 120
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
length 140
ipa a
CALL LongVowelLength
// CALL ShortVowelLength
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme


// "revl" vs. "tremme" // "revl" vs. "tremme"
phoneme ?&# phoneme ?&#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
length 140
CALL ShortVowelLength
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme


//phoneme a
// vowel starttype #a endtype #a
// length 90 //150
//IF nextPhW(#@) OR nextPhW(#e) THEN
// length 150
//ENDIF
// FMT(vowel/a_2)
//endphoneme

// PB short (glottal) a
// "bragt"
//phoneme ?a
// vowel starttype #a endtype #a
// length 90
// FMT(vowel/a_2)
//endphoneme

phoneme A // PB changed to a_8 phoneme A // PB changed to a_8
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 90 //150
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
ENDIF
length 140
CALL LongVowelLength
// "fare" [f'A:A] // "fare" [f'A:A]
IF nextPhW(A) THEN IF nextPhW(A) THEN
length 150
length 225
ENDIF ENDIF
FMT(vowel/a_8) FMT(vowel/a_8)
endphoneme endphoneme


// PB short A // PB short A
// "drab" vs. "drabelig"
// "krabbe" vs. "drabelig"
phoneme ?A phoneme ?A
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 90
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
ENDIF
length 140
CALL ShortVowelLength
FMT(vowel/a_8) FMT(vowel/a_8)
endphoneme endphoneme


phoneme u phoneme u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 90 //150
length 140
// "suge", "uge", "bluse", "julegave" // "suge", "uge", "bluse", "julegave"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
ENDIF
// "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme


// PB glottal u
// Short u
// "tude" vs. "tuden" - [tuD3] [t?uD@n] // "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u phoneme ?u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 90
length 140
CALL ShortVowelLength
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme


phoneme o phoneme o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90 //150
// "bore", "borer"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 150
length 140
// "bore", "borer" [boV] o + V
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF ENDIF
// "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN
length 150
// "kone", "koner" o + consonant + V or @-
IF next2PhW(V) OR next2PhW(@-) THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme


// "patron" vs. "kone" // "patron" vs. "kone"
phoneme ?o phoneme ?o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 95
length 140
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90 // 150
// "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
length 140
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ
// "sove", "sover" - consonant + @ or V: long
IF next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF ENDIF
// PB "gået" - ThisPh + #e or #@
IF nextPhW(#e) OR nextPhW(#@) THEN
length 150
// PB "gået" - ThisPh + V or @-
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF ENDIF
// "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
length 180
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/o_5) FMT(vowel/o_5)
endphoneme endphoneme


// "toget" vs. "tåget" // "toget" vs. "tåget"
phoneme ?O phoneme ?O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90
length 140
FMT(vowel/o_5) FMT(vowel/o_5)
endphoneme endphoneme


phoneme V phoneme V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 150
// "sport" [spV:t]
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN
length 150
ENDIF
// PB short V in "holder", "solder"
IF nextPhW(isNotVowel) AND next2Ph(V) THEN
length 90
ENDIF
// "snorke", "snorker", årlig
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN
length 180
ENDIF
// "sove" [sVw3] - longer followed by w + 3
IF nextPhW(w) AND next2PhW(3) THEN
length 220
ENDIF
// PB "konge"
IF nextPhW(N) THEN
length 95
ENDIF
length 140
CALL LongVowelLength
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme


// PB Short å
// PB Short V
// "forstår" vs. "kåre" // "forstår" vs. "kåre"
phoneme ?V phoneme ?V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90
length 140
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme


phoneme 0 phoneme 0
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
length 140
ipa ɔ
FMT(vowel/oo_2) FMT(vowel/oo_2)
endphoneme endphoneme


// Short 0 "sukker" // Short 0 "sukker"
phoneme ?0 phoneme ?0
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90
length 140
ipa ɔ
FMT(vowel/oo_2) FMT(vowel/oo_2)
endphoneme endphoneme


phoneme y phoneme y
vowel starttype #i endtype #i vowel starttype #i endtype #i
// Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels.
length 90 //150

length 140
// PB long vowel followed by consonant and certain vowels // PB long vowel followed by consonant and certain vowels
// "lyde", "lyder"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "dydig" [dyDi]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
// "gyde", "gyder"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
// not "gebyret" TEST
IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN
length 225
ENDIF
ENDIF ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
length 200
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN
length 225
ENDIF ENDIF
// "tyve" // "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
IF nextPhW(w) AND next2PhW(@-) THEN
length 225
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme


// "kylling" vs. "kyle", "krybbe" vs. "krybe" // "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y phoneme ?y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 90
length 140
CALL ShortVowelLength
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme


phoneme Y phoneme Y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
length 140
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF ENDIF
FMT(vowel/yy) FMT(vowel/yy)
endphoneme endphoneme


phoneme W phoneme W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
ENDIF
// røde" W + 1 consonant + 3 or W or @
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160
ENDIF
// "røveri" but NOT "surfer" [sWf?V] TEST
length 140
// "røveri" but NOT "surfer" [sWfV] TEST
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 90
ENDIF
// PB "nødig", "nødigt", "kølige"
IF nextVowel(i) THEN
length 160
ENDIF
// "møve" [mWw@-]
IF nextPhW(w) AND nextVowel(@-) THEN
length 160
length 140
ENDIF ENDIF
// "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 150
// "børnebog" - short
IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN
length 140
ENDIF ENDIF
CALL LongVowelLength
FMT(vowel/oe) FMT(vowel/oe)
endphoneme endphoneme


// "prøv" vs. "prøve" // "prøv" vs. "prøve"
phoneme ?W phoneme ?W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 95
length 140
CALL ShortVowelLength
FMT(vowel/oe) FMT(vowel/oe)
endphoneme endphoneme


// Added for the ø in "røv", "røg", "øje" instead of [V3] // Added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W# phoneme W#
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90 //150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
// length 90
ENDIF
length 140 //225
// PB long vowel followed by consonant and certain vowels // PB long vowel followed by consonant and certain vowels
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
length 150
length 225
ENDIF ENDIF
FMT(vowel/V) FMT(vowel/V)
endphoneme endphoneme
// "rømme" // "rømme"
phoneme ?W# phoneme ?W#
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90
length 140
CALL ShortVowelLength
FMT(vowel/V) FMT(vowel/V)
endphoneme endphoneme


length 300 length 300
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
glstop glstop
length 150
length 225
ENDIF ENDIF
// "dreje" [dR'aI@-_!] // "dreje" [dR'aI@-_!]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
phoneme l phoneme l
liquid liquid
lengthmod 7 lengthmod 7
// [ll] => [-l] - avoid double l
IF nextPhW(l) THEN
// ChangePhoneme(-)
ENDIF
ChangePhoneme(l/3) ChangePhoneme(l/3)
// CALL base/l // CALL base/l
endphoneme endphoneme
phoneme l/3 // Replacement for [l/] phoneme l/3 // Replacement for [l/]
liquid liquid
lengthmod 7 lengthmod 7

IF nextPh(isVowel) THEN
// ChangePhoneme(l)
ENDIF

PrevVowelEndings
VowelEnding(l/l_@)
VowelEnding(l/l_a,-70) // kvalt, kapital
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o,-70) // stole, skole, pistol
VowelEnding(l/l_u, -70)
EndSwitch

// IF nextPh(isLiquid) THEN
// FMT(l/_l)
// ENDIF

FMT(l/l_) FMT(l/l_)
endphoneme endphoneme


phoneme j phoneme j
liquid palatal liquid palatal
lengthmod 7 lengthmod 7

// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
IF nextPhW(isVowel) THEN IF nextPhW(isVowel) THEN
NextVowelStarts NextVowelStarts
VowelStart(j/j@) VowelStart(j/j@)

+ 27
- 0
phsource/ph_english View File

vowel starttype #a endtype #a vowel starttype #a endtype #a
ipa a ipa a
length 185 length 185
IF MbrolaSynth THEN
ChangePhoneme(A:)
ENDIF

IfNextVowelAppend(r-) IfNextVowelAppend(r-)
FMT(vowel/a) FMT(vowel/a)
endphoneme endphoneme
vowel starttype #i endtype #i vowel starttype #i endtype #i
unstressed unstressed
length 130 length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF

IfNextVowelAppend(;) IfNextVowelAppend(;)
FMT(vowel/ii_4) FMT(vowel/ii_4)
endphoneme endphoneme



phoneme I# // used for [I] which may be [@] in some accents phoneme I# // used for [I] which may be [@] in some accents
vowel starttype #i endtype #i vowel starttype #i endtype #i
unstressed unstressed
length 130 length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF

IfNextVowelAppend(;) IfNextVowelAppend(;)
ChangePhoneme(I2) ChangePhoneme(I2)
endphoneme endphoneme



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
ipa ɪ ipa ɪ
vowel starttype #o endtype #o vowel starttype #o endtype #o
ipa ɔː ipa ɔː
length 250 length 250
IF MbrolaSynth THEN
ChangePhoneme(O@)
ENDIF

IfNextVowelAppend(r-) IfNextVowelAppend(r-)
FMT(vowel/oo_en) FMT(vowel/oo_en)
endphoneme endphoneme
phoneme i@3 phoneme i@3
vowel starttype #i endtype #@ vowel starttype #i endtype #@
length 250 length 250
IF MbrolaSynth THEN
ChangePhoneme(i@)
ENDIF

IfNextVowelAppend(r-) IfNextVowelAppend(r-)
FMT(vdiph2/ii@) FMT(vdiph2/ii@)
endphoneme endphoneme

+ 8
- 7
phsource/ph_english_us View File



phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 195
length 190
ChangeIfDiminished(I2) ChangeIfDiminished(I2)
FMT(vwl_en_us/ee) FMT(vwl_en_us/ee)
endphoneme endphoneme


phoneme O: phoneme O:
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 210
length 200
ChangeIfDiminished(@) ChangeIfDiminished(@)
IF nextPh(r) THEN IF nextPh(r) THEN
FMT(vwl_en_us/oor) FMT(vwl_en_us/oor)


phoneme aI phoneme aI
vowel starttype #a endtype #i vowel starttype #a endtype #i
length 250
length 240
IF nextPh(#a) OR nextPh(#o) THEN IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;) AppendPhoneme(;)
ENDIF ENDIF


phoneme eI phoneme eI
vowel starttype #e endtype #i vowel starttype #e endtype #i
length 230
FMT(vdiph/eei_5)
length 220
FMT(vdiph2/ei_4)
// FMT(vdiph/eei_5)
endphoneme endphoneme




phoneme OI phoneme OI
vowel starttype #o endtype #i vowel starttype #o endtype #i
length 285
length 280
FMT(vdiph/ooi_4) FMT(vdiph/ooi_4)
endphoneme endphoneme




phoneme aI3 phoneme aI3
vowel starttype #a endtype #@ vowel starttype #a endtype #@
length 300
length 310
ipa aɪɚ ipa aɪɚ
IfNextVowelAppend(r-) IfNextVowelAppend(r-)
FMT(vwl_en_us/ai3) FMT(vwl_en_us/ai3)

+ 1
- 1
phsource/ph_hindi View File



phoneme c# phoneme c#
CALL base/tS; CALL base/tS;
ipa ch
ipa cU+02B0
endphoneme endphoneme





+ 20
- 0
phsource/ph_korean View File

FMT(dzh/dzh) addWav(x/dz_pzd) FMT(dzh/dzh) addWav(x/dz_pzd)
endphoneme endphoneme


phoneme s-
import_phoneme base/s // temporary
endphoneme

phoneme q-
import_phoneme base/q // temporary
endphoneme

phoneme tS;-
import_phoneme base/tS; // temporary
endphoneme

phoneme d-
import_phoneme base/d
endphoneme

// phoneme tSh; ?? changed to [tS;h] in ko_rules
// phoneme h- in ko_list (for 10^3) ?? changed to [h]
// phoneme tSh- changed to tSh

phoneme * // r(ㄹ) at initial, medial phoneme * // r(ㄹ) at initial, medial
vcd alv flp rhotic vcd alv flp rhotic
ipa ɾ ipa ɾ

+ 119
- 1
phsource/ph_malayalam View File

length 130 length 130


IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN
FMT(vowel/a#_2)
FMT(vowel/a#_4)
ELSE ELSE
ChangeIfUnstressed(@) ChangeIfUnstressed(@)


endphoneme endphoneme




// Aspirated voice stops, sound like aspirated unvoiced stops ?

phoneme b#
vls blb stop prevoice
lengthmod 2
voicingswitch b
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(b/xb)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/p_)
ENDIF
IF nextPh(l) THEN
WAV(ustop/pl)
ENDIF
WAV(ustop/p_asp)
endphoneme


phoneme d#
vls dnt stop prevoice
lengthmod 2
voicingswitch d
Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/t_dnt, 35)
ENDIF
WAV(ustop/t_dnt, 50)
endphoneme


phoneme d.#
vls rfx stop prevoice
lengthmod 2
ipa ʈU+02B0
Vowelin f1=0 f2=1800 -300 300 f3=-400 80
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xdr)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

voicingswitch d.#
WAV(ustop/t)
endphoneme


phoneme J#
vls pal afr sibilant palatal prevoice
voicingswitch c#
lengthmod 2
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(dzh/xdz_pzd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

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


phoneme g#
vls vel stop prevoice
lengthmod 2
Vowelin f1=1 f2=1400 -100 100 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(g/xg)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/k_asp, 40)
ENDIF
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_a, 25)
ELSE
WAV(ustop/k_asp_a, 30)
ENDIF
endphoneme



+ 10
- 10
phsource/ph_portugal View File



phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 170
length 180
ChangeIfUnstressed(y) ChangeIfUnstressed(y)
FMT(vowel/e_mid) FMT(vowel/e_mid)
endphoneme endphoneme


phoneme e phoneme e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 160
length 180
ChangeIfUnstressed(y) ChangeIfUnstressed(y)
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


phoneme y phoneme y
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 110
length 130
ipa ɨ ipa ɨ
FMT(vowel/i#_5) FMT(vowel/i#_5)
endphoneme endphoneme


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


phoneme i/ // changes to NULL before a vowel phoneme i/ // changes to NULL before a vowel
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 100
length 130
ipa ɨ ipa ɨ
IF nextPh(isVowel) THEN IF nextPh(isVowel) THEN
ChangePhoneme(NULL) ChangePhoneme(NULL)


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 170
length 180
// ChangeIfNotStressed(o) // ChangeIfNotStressed(o)
FMT(vowel/0_2) FMT(vowel/0_2)
endphoneme endphoneme


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


phoneme u phoneme u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 160
length 180
FMT(vowel/u_6) FMT(vowel/u_6)
endphoneme endphoneme


phoneme U phoneme U
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 110
length 130
IF nextPh(isVowel) THEN IF nextPh(isVowel) THEN
ChangePhoneme(w) ChangePhoneme(w)
ENDIF ENDIF


phoneme EU phoneme EU
vowel starttype #e endtype #u vowel starttype #e endtype #u
length 220
length 230
FMT(vdiph/eeu_2) FMT(vdiph/eeu_2)
endphoneme endphoneme



+ 4
- 0
phsource/ph_tamil View File

ChangePhoneme(NULL) ChangePhoneme(NULL)
endphoneme endphoneme


phoneme z.
CALL base/z.
ipa U+027B
endphoneme

+ 11
- 12
phsource/phonemes View File

phonemetable ml hi phonemetable ml hi
include ph_malayalam include ph_malayalam


phonemetable te hi
include ph_telugu





phonemetable hu base phonemetable hu base
phonemetable am base phonemetable am base
include ph_amhari include ph_amhari


phonemetable si hi
include ph_sinhala



//************************************************************************************** //**************************************************************************************
// The following lines are experimental, for future additions. // The following lines are experimental, for future additions.
// These langauges are not in a usable state. // These langauges are not in a usable state.
// These lines can be deleted. // These lines can be deleted.


phonemetable rw base2
include ph_kinyarwanda
phonemetable si hi
include ph_sinhala

phonemetable sl sk
include ph_slovenian

//phonemetable rw base2
//include ph_kinyarwanda


//phonemetable mr hi //phonemetable mr hi
//include ph_marathi //include ph_marathi
//phonemetable prs base //phonemetable prs base
//include ph_dari //include ph_dari


phonemetable sl sk
include ph_slovenian

//phonemetable gd base //phonemetable gd base
//include ph_s_gaelic //include ph_s_gaelic


//phonemetable dv hi //phonemetable dv hi
//include ph_divehi //include ph_divehi


//phonemetable te hi
//include ph_telugu

//phonemetable tn base //phonemetable tn base
//include ph_setswana //include ph_setswana



//phonemetable mt base //phonemetable mt base
//include ph_maltese //include ph_maltese



BIN
phsource/r/V_ View File


BIN
phsource/r/V_2_ View File


BIN
phsource/voc/murmur1 View File


BIN
phsource/vwl_en_us/ai3 View File


BIN
phsource/vwl_en_us/er View File


BIN
phsource/vwl_en_us/oor View File


+ 3
- 2
platforms/riscos/Makefile View File





# Toolflags: # Toolflags:
CCflags = -c -C90 -depend !Depend -IC: -throwback -zM
C++flags = -c -depend !Depend -IC: -throwback -zM
CCflags = -c -C90 -depend !Depend -IC: -throwback -memaccess -zM -L22-S22-L41
C++flags = -c -depend !Depend -IC: -throwback -zM -L22-S22-L41
Linkflags = -rmf -c++ -o $@ Linkflags = -rmf -c++ -o $@
ObjAsmflags = -throwback -NoCache -depend !Depend ObjAsmflags = -throwback -NoCache -depend !Depend
CMHGflags = CMHGflags =
objasm $(objasmflags) -from @.s.assemb -to @.o.assemb objasm $(objasmflags) -from @.s.assemb -to @.o.assemb


# Dynamic dependencies: # Dynamic dependencies:


+ 111
- 25
platforms/riscos/cpp/speak_riscos View File



/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
#include <ctype.h> #include <ctype.h>
#include <locale.h> #include <locale.h>
#include "kernel.h" #include "kernel.h"
#include <math.h>


#include "speech.h" #include "speech.h"
#include "speak_lib.h" #include "speak_lib.h"
voice_variant_names[n_voice_variant_files++] = p; voice_variant_names[n_voice_variant_files++] = p;
} }
else else
if(strcmp(p, "default") != 0)
{ {
if(n_voice_files >= (N_VOICE_NAMES-1)) if(n_voice_files >= (N_VOICE_NAMES-1))
continue; continue;


void ReadVoiceNames() void ReadVoiceNames()
{//=================== {//===================
char directory[sizeof(path_home)+10];
char directory[sizeof(path_home)+20];


n_voice_files = 0; n_voice_files = 0;
n_voice_variant_files = 0; n_voice_variant_files = 0;


sprintf(directory,"%s.voices.default", path_home);
if(GetFileLength(directory) > 0)
{
// put the 'default' voice at the start of the list
voice_names[n_voice_files++] = "default";
}
sprintf(directory,"%s.voices",path_home); sprintf(directory,"%s.voices",path_home);


ReadVoiceNames2(directory); ReadVoiceNames2(directory);


int initialise(void) int initialise(void)
{//================= {//=================
sprintf(path_home,"%s.espeak-data","<eSpeak$Dir>");
char buf[N_PATH_HOME];

_kernel_swi_regs regs;
_kernel_oserror *error;

buf[0] = 0;
regs.r[0] = (int)"eSpeak$Dir";
regs.r[1] = (int)buf;
regs.r[2] = sizeof(buf);
regs.r[3] = 0;
regs.r[4] = 0;
regs.r[5] = 0;

error = _kernel_swi(0x20023,&regs,&regs); // OS_ReadVarVal
buf[regs.r[2]] = 0;

sprintf(path_home,"%s.espeak-data",buf);
if(GetFileLength(path_home) != -2) if(GetFileLength(path_home) != -2)
{ {
// not found, try the 10 character version of the directory name // not found, try the 10 character version of the directory name
sprintf(path_home,"%s.espeak-dat","<eSpeak$Dir>");
sprintf(path_home,"%s.espeak-dat",buf);
} }
if(GetFileLength(path_home) != -2) if(GetFileLength(path_home) != -2)
{ {
} }


WavegenInit(22050,0); WavegenInit(22050,0);
LoadPhData();
LoadPhData(NULL);
SetVoiceStack(NULL, ""); SetVoiceStack(NULL, "");
SynthesizeInit(); SynthesizeInit();
return(0); return(0);
static_length = 0; static_length = 0;
else else
{ {
strcat(&static_buf[static_length]," : ");
strcat(&static_buf[static_length]," \n ");
static_length+=3; static_length+=3;
} }


void jsd_swi_functions(int *r) void jsd_swi_functions(int *r)
/****************************/ /****************************/
{ {
int use_ipa;
espeak_VOICE voice_select; espeak_VOICE voice_select;


switch(r[0]) switch(r[0])
{ {
case 0: /* major version */ case 0: /* major version */
r[0] = 4; r[0] = 4;
r[1] = 331;
r[1] = 347;
break; break;


case 1: /* register user */ case 1: /* register user */
break; break;


case 3: case 3:
// r[0] = (int)speech_to_phonemes((char *)r[1]);
// translate into phonemes
use_ipa = 0;
if((r[2] >= 1) && (use_ipa <= 3))
use_ipa = r[2];
TranslateClause(translator,NULL,(char *)r[1],NULL,NULL);
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
r[0] = (int)translator->phon_out;
break; break;


case 4: case 4:
/*********************************************************/ /*********************************************************/
{ {
int value; int value;
int value2;
int q_length; int q_length;
value = r[0]; value = r[0];




case 0: // ready ? case 0: // ready ?
// returns the index into the source text of the currently speaking word // returns the index into the source text of the currently speaking word
if(current_source_index > 0)
r[1] = current_source_index-1;
else
r[1] = current_source_index; /* source index */
if(current_source_index > 0)
r[1] = current_source_index-1;
else
r[1] = current_source_index; /* source index */
r[2] = 0; /* source tag */ r[2] = 0; /* source tag */
r[3] = 0; /* for future expansion */ r[3] = 0; /* for future expansion */
r[4] = 0; r[4] = 0;
r[5] = 0; r[5] = 0;


if(wcmdq_head == wcmdq_tail)
if(WcmdqUsed() < 5)
{ {
r[0] = -1; /* ready, or nearly */ r[0] = -1; /* ready, or nearly */
} }
else else
{
r[0] = 0; r[0] = 0;
}
break; break;


case 1: /* restore old sound channel. DO NOTHING */ case 1: /* restore old sound channel. DO NOTHING */
break; break;


case 7: /* pitch */ case 7: /* pitch */
// not implemented
value = (value * 50)/128;
SetParameter(espeakPITCH, value, 0);
break; break;


case 8: /* speed */
SetParameter(espeakRATE,value,0);
case 8: // speed, convert to range 80 to 400, mid-value=180
if(value < 128)
value2 = 80 + (value*100)/128; // linear range for 0-127 -> 80-179
else
value2 = 80 + pow((float)value/128.0, 1.75)*100;

SetParameter(espeakRATE,value2,0);
break; break;


case 9: /* word_gap */ case 9: /* word_gap */
if(value >= 128)
value = value - 128;

if(value > 1)
value = (value-1) * 5;

SetParameter(espeakWORDGAP,value,0); SetParameter(espeakWORDGAP,value,0);
break; break;


case 10: /* pitch_range */ case 10: /* pitch_range */
// not implemented
value = (value * 50)/128;
SetParameter(espeakRANGE, value, 0);
break; break;


case 12: /* reset */ case 12: /* reset */
break; break;


case 13: /* volume */ case 13: /* volume */
SetParameter(espeakVOLUME,value,0);
// convert to range 6-255 to 10-400, mid-value=100
if(value < 6)
value2 = value + 4;
else
if(value < 128)
{
value2 = pow((float)(value+40)/168.0, 1.75)*100;
}
else
value2 = pow((float)value/128.0, 2.0)*100;
SetParameter(espeakVOLUME,value2,0);
WavegenSetVoice(voice);
break;

case 14: // set voice by name
SetVoiceByName((char *)r[0]);
WavegenSetVoice(voice); WavegenSetVoice(voice);
break; break;
} }
return(value); return(value);
} }


void PrintVersion()
{//================
char buf[120];
printf("\nspeak text-to-speech: %s Data at: %s\n", version_string, path_home);
}


void command_line(char *arg_string, int wait) void command_line(char *arg_string, int wait)
{//========================================== {//==========================================


char command[80]; char command[80];
char *p; char *p;
int ix; int ix;
int quiet;


voicename[0] = 0; voicename[0] = 0;
wavefile[0] = 0; wavefile[0] = 0;
option_linelength = 0; option_linelength = 0;
option_phonemes = 0; option_phonemes = 0;
option_waveout = 0; option_waveout = 0;
option_quiet = 0;
quiet = 0;
option_multibyte = 0; // auto option_multibyte = 0; // auto
option_capitals = 0; option_capitals = 0;
option_punctuation = 0; option_punctuation = 0;
break; break;


case 'h': case 'h':
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text);
PrintVersion();
printf("\n%s",help_text);
return; return;


case 'k': case 'k':
break; break;


case 'q': case 'q':
option_quiet = 1;
quiet = 1;
break; break;


case 'f': case 'f':
else else
if(strcmp(command,"help")==0) if(strcmp(command,"help")==0)
{ {
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text);
PrintVersion();
printf("\n%s",help_text);
return; return;
} }
else else
SetParameter(espeakPUNCTUATION,option_punctuation,0); SetParameter(espeakPUNCTUATION,option_punctuation,0);
} }
else else
if(memcmp(command,"version",7)==0)
{
PrintVersion();
return;
}
else
if(memcmp(command,"ipa",3)==0)
{
option_phonemes = 3;
}
else
{ {
printf("Command not recognised\n"); printf("Command not recognised\n");
} }
} }
} }


if((option_phonemes > 1) && !option_waveout)
quiet = 1; // can't call sprintf() during callback

SetVoiceByName(voicename); SetVoiceByName(voicename);


if((filename[0]==0) && (p[0]=='\r')) if((filename[0]==0) && (p[0]=='\r'))
{ {
// nothing to speak // nothing to speak
if(option_quiet)
if(quiet)
{ {
SpeakNextClause(NULL,NULL,2); // stop speaking SpeakNextClause(NULL,NULL,2); // stop speaking
more_text = 0; more_text = 0;
} }
} }


if(option_waveout || option_quiet)
if(option_waveout || quiet)
{ {
// write speech to a WAV file // write speech to a WAV file
if(option_quiet)
if(quiet)
{ {
OpenWaveFile(NULL,samplerate); OpenWaveFile(NULL,samplerate);
option_waveout = 2; option_waveout = 2;

+ 5
- 3
platforms/windows/make_espeak.iss View File

[Setup] [Setup]
AppName=eSpeak AppName=eSpeak
AppVerName=eSpeak version 1.47.01
AppVerName=eSpeak version 1.47.04
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes WindowVisible=yes
$0e: Result := 'hu'; $0e: Result := 'hu';
$0f: Result := 'is'; $0f: Result := 'is';
$10: Result := 'it'; $10: Result := 'it';
//$12: Result := 'ko';
$12: Result := 'ko';
$13: Result := 'nl'; $13: Result := 'nl';
$14: Result := 'no'; $14: Result := 'no';
$15: Result := 'pl'; $15: Result := 'pl';
$1c: Result := 'sq'; $1c: Result := 'sq';
$1d: Result := 'sv'; $1d: Result := 'sv';
$1f: Result := 'tr'; $1f: Result := 'tr';
//$20: Result := 'ur';
$20: Result := 'ur';
$21: Result := 'id'; $21: Result := 'id';
$25: Result := 'et'; $25: Result := 'et';
$26: Result := 'lv'; $26: Result := 'lv';
$39: Result := 'hi'; $39: Result := 'hi';
//$3a: Result := 'mt'; //$3a: Result := 'mt';
$3c: Result := 'ga'; $3c: Result := 'ga';
$3e: Result := 'ms';
//$3f: Result := 'kk'; //$3f: Result := 'kk';
$41: Result := 'sw'; $41: Result := 'sw';
//$44: Result := 'tt'; //$44: Result := 'tt';
'mk': value := $42f; 'mk': value := $42f;
'ml': value := $44c; 'ml': value := $44c;
'mn': value := $450; 'mn': value := $450;
'ms': value := $43e;
'mt': value := $43a; 'mt': value := $43a;
'my': value := $455; 'my': value := $455;
'ne': value := $461; 'ne': value := $461;

+ 64
- 58
platforms/windows/make_espeakedit.iss View File


[Setup]
AppName=eSpeakEdit
AppVerName=eSpeakEdit version 1.47.01
DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak
OutputBaseFilename=setup_espeakedit
Compression=lzma
SolidCompression=yes
DirExistsWarning=no
ShowLanguageDialog=auto

[Icons]
Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized
Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}"

[InstallDelete]
Type: filesandordirs; Name: "{app}\phsource\vowelcharts"
Type: filesandordirs; Name: "{app}\espeakedit"


[Files]
Source: "espeakedit.exe"; DestDir: "{app}"
;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs
Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs
Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs
Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs
Source: "License.txt"; DestDir: "{app}";
;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme


[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl"
Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl"
Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "de"; MessagesFile: "compiler:Languages\German.isl"
Name: "el"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl"
Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl"
Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl"
;Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl"
Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl"
Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl"

[Setup]
AppName=eSpeakEdit
AppVerName=eSpeakEdit version 1.47.04
DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak
OutputBaseFilename=setup_espeakedit
Compression=lzma
SolidCompression=yes
DirExistsWarning=no
ShowLanguageDialog=auto
[Icons]
Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized
Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}"
[InstallDelete]
Type: filesandordirs; Name: "{app}\phsource\vowelcharts"
Type: filesandordirs; Name: "{app}\espeakedit"
[Files]
Source: "espeakedit.exe"; DestDir: "{app}"
;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs
Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs
Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs
Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs
Source: "License.txt"; DestDir: "{app}";
;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl"
Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl"
Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl"
Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "da"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "de"; MessagesFile: "compiler:Languages\German.isl"
Name: "el"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "fa"; MessagesFile: "compiler:Languages\Farsi.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl"
Name: "hi"; MessagesFile: "compiler:Languages\Hindi.islu"
Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl"
Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "ka"; MessagesFile: "compiler:Languages\Georgian.islu"
Name: "lv"; MessagesFile: "compiler:Languages\Latvian.isl"
Name: "ne"; MessagesFile: "compiler:Languages\Nepali.islu"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl"
Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "vi"; MessagesFile: "compiler:Languages\Vietnamese.isl"
Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl"

+ 3
- 2
src/compiledata.cpp View File

break; break;


case i_ADD_LENGTH: case i_ADD_LENGTH:
value = NextItem(tSIGNEDNUMBER);
*prog_out++ = (i_ADD_LENGTH << 8) + value/2;
value = NextItem(tSIGNEDNUMBER) / 2;
*prog_out++ = (i_ADD_LENGTH << 8) + (value & 0xff);
DecThenCount(); DecThenCount();
break; break;




case kRETURN: case kRETURN:
*prog_out++ = i_RETURN; *prog_out++ = i_RETURN;
DecThenCount();
break; break;


case kINCLUDE: case kINCLUDE:

+ 20
- 2
src/dictionary.cpp View File

} // end of LookupDictList } // end of LookupDictList




extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes


int Lookup(Translator *tr, const char *word, char *ph_out) int Lookup(Translator *tr, const char *word, char *ph_out)
{//=================================================== {//===================================================
int found;
unsigned int flags[2]; unsigned int flags[2];
int say_as;
char *word1 = (char *)word;
char text[80];

flags[0] = 0; flags[0] = 0;
flags[1] = FLAG_LOOKUP_SYMBOL; flags[1] = FLAG_LOOKUP_SYMBOL;
char *word1 = (char *)word;
return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL));
found = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL);

if(flags[0] & FLAG_TEXTMODE)
{
say_as = option_sayas;
option_sayas = 0; // don't speak replacement word as letter names
text[0] = 0;
strncpy0(&text[1], word1, sizeof(text));
found = TranslateWord(tr, &text[1], 0, NULL, NULL);
strcpy(ph_out, word_phonemes);
option_sayas = say_as;
}
return(found);
} }



int LookupFlags(Translator *tr, const char *word) int LookupFlags(Translator *tr, const char *word)
{//============================================== {//==============================================
char buf[100]; char buf[100];

+ 30
- 3
src/numbers.cpp View File

current_alphabet = alphabet; current_alphabet = alphabet;
if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset)) if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset))
{ {
if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet))
if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet) || (al_offset == translator->langopts.our_alphabet))
{ {
// don't say the alphabet name // don't say the alphabet name
} }
else else
language = L('e','n'); language = L('e','n');


if(language != tr->translator_name)
if((language != tr->translator_name) || (language == L('k','o')))
{ {
char *p3;
int initial, code;
char hangul_buf[12];

// speak in the language for this alphabet (or English) // speak in the language for this alphabet (or English)
ph_buf[2] = SetTranslator2(WordToString2(language)); ph_buf[2] = SetTranslator2(WordToString2(language));
LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);

if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af))
{
// Special case for Korean letters.
// break a syllable hangul into 2 or 3 individual jamo

hangul_buf[0] = ' ';
p3 = &hangul_buf[1];
if((initial = (code/28)/21) != 11)
{
p3 += utf8_out(initial + 0x1100, p3);
}
utf8_out(((code/28) % 21) + 0x1161, p3); // medial
utf8_out((code % 28) + 0x11a7, &p3[3]); // final
p3[6] = ' ';
p3[7] = 0;
ph_buf[3] = 0;
TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL);
SetWordStress(translator2, &ph_buf[3], NULL, -1, 0);
}
else
{
LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
}


if(ph_buf[3] == phonSWITCH) if(ph_buf[3] == phonSWITCH)
{ {

+ 59
- 50
src/phonemelist.cpp View File

int delete_count; int delete_count;
int word_start; int word_start;
int inserted; int inserted;
int deleted;
PHONEME_DATA phdata; PHONEME_DATA phdata;


int n_ph_list3; int n_ph_list3;
plist3 = &ph_list3[j]; plist3 = &ph_list3[j];


inserted = 0; inserted = 0;
deleted = 0;
if(insert_ph != 0) if(insert_ph != 0)
{ {
// we have a (linking) phoneme which we need to insert here // we have a (linking) phoneme which we need to insert here
plist3->phcode = alternative; plist3->phcode = alternative;


if(alternative == 1) if(alternative == 1)
continue; // NULL phoneme, discard

if(ph->type == phVOWEL)
{ {
plist3->synthflags |= SFLAG_SYLLABLE;
if(ph2->type != phVOWEL)
plist3->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed
deleted = 1; // NULL phoneme, discard
} }
else else
plist3->synthflags &= ~SFLAG_SYLLABLE;
{
if(ph->type == phVOWEL)
{
plist3->synthflags |= SFLAG_SYLLABLE;
if(ph2->type != phVOWEL)
plist3->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed
}
else
plist3->synthflags &= ~SFLAG_SYLLABLE;


// re-interpret the changed phoneme
// But it doesn't obey a second ChangePhoneme()
InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata);
// re-interpret the changed phoneme
// But it doesn't obey a second ChangePhoneme()
InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata);
}
} }


if(ph->type == phVOWEL)
if((ph->type == phVOWEL) && (deleted == 0))
{ {
PHONEME_LIST *p; PHONEME_LIST *p;


} }
} }


if(plist3 != plist3_inserted)
if((plist3 != plist3_inserted) && (ix > 0))
{ {
if((x = (tr->langopts.word_gap & 0x7)) != 0) if((x = (tr->langopts.word_gap & 0x7)) != 0)
{ {
// not yet implemented // not yet implemented
} }


phlist[ix].ph = ph;
phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist3->synthflags;
phlist[ix].stresslevel = plist3->stresslevel & 0xf;
phlist[ix].wordstress = plist3->wordstress;
phlist[ix].tone_ph = plist3->tone_ph;
phlist[ix].sourceix = 0;
phlist[ix].phcode = ph->code;

if(plist3->sourceix != 0)
if(deleted == 0)
{ {
phlist[ix].sourceix = plist3->sourceix;
phlist[ix].newword = 1; // this phoneme is the start of a word
phlist[ix].ph = ph;
phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist3->synthflags;
phlist[ix].stresslevel = plist3->stresslevel & 0xf;
phlist[ix].wordstress = plist3->wordstress;
phlist[ix].tone_ph = plist3->tone_ph;
phlist[ix].sourceix = 0;
phlist[ix].phcode = ph->code;

if(plist3->sourceix != 0)
{
phlist[ix].sourceix = plist3->sourceix;
phlist[ix].newword = 1; // this phoneme is the start of a word


if(start_sentence)
if(start_sentence)
{
phlist[ix].newword = 5; // start of sentence + start of word
start_sentence = 0;
}
}
else
{ {
phlist[ix].newword = 5; // start of sentence + start of word
start_sentence = 0;
phlist[ix].newword = 0;
} }
}
else
{
phlist[ix].newword = 0;
}


// phlist[ix].length = ph->std_length;
phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2;
if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0))
{
phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT];
phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed
}
// phlist[ix].length = ph->std_length;
phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2;
if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0) && (plist3[1].sourceix != 0))
{
phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT];
phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed
}


if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE)
{
phlist[ix].length = 128; // length_mod
phlist[ix].env = PITCHfall;
}
if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE))
{
phlist[ix].length = 128; // length_mod
phlist[ix].env = PITCHfall;
}


phlist[ix].prepause = 0;
phlist[ix].amp = 20; // default, will be changed later
phlist[ix].pitch1 = 255;
phlist[ix].pitch2 = 255;
ix++;
phlist[ix].prepause = 0;
phlist[ix].amp = 20; // default, will be changed later
phlist[ix].pitch1 = 255;
phlist[ix].pitch2 = 255;
ix++;
}
} }
phlist[ix].newword = 2; // end of clause phlist[ix].newword = 2; // end of clause



+ 2
- 0
src/readclause.cpp View File

0x055e, // Armenian question 0x055e, // Armenian question
0x055b, // Armenian emphasis mark 0x055b, // Armenian emphasis mark


0x060c, // Arabic ,
0x061b, // Arabic ; 0x061b, // Arabic ;
0x061f, // Arabic ? 0x061f, // Arabic ?
0x06d4, // Arabic . 0x06d4, // Arabic .
CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question
CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark


CLAUSE_COMMA, // Arabic ,
CLAUSE_SEMICOLON, // Arabic ; CLAUSE_SEMICOLON, // Arabic ;
CLAUSE_QUESTION, // Arabic question mark CLAUSE_QUESTION, // Arabic question mark
CLAUSE_PERIOD, // Arabic full stop CLAUSE_PERIOD, // Arabic full stop

+ 24
- 4
src/setlengths.cpp View File

int last_pitch = 0; int last_pitch = 0;
int pitch_start; int pitch_start;
int length_mod; int length_mod;
int next2type;
int len; int len;
int env2; int env2;
int end_of_clause; int end_of_clause;


p->prepause = 40; p->prepause = 40;


if((prev->type == phPAUSE) || (prev->type == phVOWEL)) // || (prev->ph->mnemonic == ('/'*256+'r')))
p->prepause = 0;
if(prev->type == phVOWEL)
{
p->prepause = 0; // use murmur instead to link from the preceding vowel
}
else
if(prev->type == phPAUSE)
{
// reduce by the length of the preceding pause
if(prev->length < p->prepause)
p->prepause -= prev->length;
else
p->prepause = 0;
}
else else
if(p->newword==0) if(p->newword==0)
{ {
next3 = &phoneme_list[ix+4]; next3 = &phoneme_list[ix+4];
} }


next2type = next2->ph->length_mod;
if(more_syllables==0) if(more_syllables==0)
{ {
len = tr->langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod];
if(next->newword || next2->newword)
{
// don't use 2nd phoneme over a word boundary, unless it's a pause
if(next2type != 1)
next2type = 0;
}

len = tr->langopts.length_mods0[next2type *10+ next->ph->length_mod];


if((next->newword) && (tr->langopts.word_gap & 0x20)) if((next->newword) && (tr->langopts.word_gap & 0x20))
{ {
} }
else else
{ {
length_mod = tr->langopts.length_mods[next2->ph->length_mod *10+ next->ph->length_mod];
length_mod = tr->langopts.length_mods[next2type *10+ next->ph->length_mod];


if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS)) if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS))
length_mod -= 15; length_mod -= 15;

+ 11
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.47.03c 23.Mar.13";
const char *version_string = "1.47.04 02.Apr.13";
const int version_phdata = 0x014701; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;
phdata->pd_param[i_APPEND_PHONEME] = data; phdata->pd_param[i_APPEND_PHONEME] = data;
} }
else else
if(instn2 == i_ADD_LENGTH)
{
if(data & 0x80)
{
// a negative value, do sign extension
data = -(0x100 - data);
}
phdata->pd_param[i_SET_LENGTH] += data;
}
else
if(instn2 == i_IPA_NAME) if(instn2 == i_IPA_NAME)
{ {
// followed by utf-8 characters, 2 per instn word // followed by utf-8 characters, 2 per instn word

+ 19
- 1
src/synthesize.cpp View File



EndAmplitude(); EndAmplitude();


if(p->prepause > 0)
if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE))
DoPause(p->prepause,1); DoPause(p->prepause,1);


done_phoneme_marker = 0; done_phoneme_marker = 0;


case phSTOP: case phSTOP:
released = 0; released = 0;
ph = p->ph;
if(next->type==phVOWEL) if(next->type==phVOWEL)
{ {
released = 1; released = 1;
if(released == 0) if(released == 0)
p->synthflags |= SFLAG_NEXT_PAUSE; p->synthflags |= SFLAG_NEXT_PAUSE;


if(ph->phflags & phPREVOICE)
{
// a period of voicing before the release
memset(&fmtp, 0, sizeof(fmtp));
InterpretPhoneme(NULL, 0x01, p, &phdata, &worddata);
fmtp.fmt_addr = phdata.sound_addr[pd_FMT];
fmtp.fmt_amp = phdata.sound_param[pd_FMT];

if(last_pitch_cmd < 0)
{
DoAmplitude(next->amp,NULL);
DoPitch(envelope_data[p->env],next->pitch1,next->pitch2);
}

DoSpect2(ph, 0, &fmtp, p, 0);
}

InterpretPhoneme(NULL, 0, p, &phdata, &worddata); InterpretPhoneme(NULL, 0, p, &phdata, &worddata);
phdata.pd_control |= pd_DONTLENGTHEN; phdata.pd_control |= pd_DONTLENGTHEN;
DoSample3(&phdata, 0, 0); DoSample3(&phdata, 0, 0);

+ 12
- 7
src/tr_languages.cpp View File

{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS}, {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0},
{"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0},
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, L('k','o'), AL_WORDS},
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, {"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{"_ko", 0xa700, 0xa700,0xd7ff, 0, AL_NOT_CODE},
{"_ko", 0xa700, 0xa700,0xd7ff, L('k','o'), AL_NOT_CODE | AL_WORDS},
{NULL, 0, 0, 0, 0, 0} {NULL, 0, 0, 0, 0, 0}
}; };


{ {
SetCyrillicLetters(tr); SetCyrillicLetters(tr);
SetLetterVowel(tr,0x2a); SetLetterVowel(tr,0x2a);
tr->charset_a0 = charsets[5]; // ISO-8859-5
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v)
tr->langopts.param[LOPT_REDUCE] = 2; tr->langopts.param[LOPT_REDUCE] = 2;


// character codes offset by 0x380 // character codes offset by 0x380
static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0}; static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ
static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ
static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ _
static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ _
static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0}; static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ
static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ _


SetupTranslator(tr,stress_lengths_el,stress_amps_el); SetupTranslator(tr,stress_lengths_el,stress_amps_el);


SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels); SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels);
SetLetterBits(tr,LETTERGP_B,el_voiceless); SetLetterBits(tr,LETTERGP_B,el_voiceless);
SetLetterBits(tr,LETTERGP_C,el_consonants); SetLetterBits(tr,LETTERGP_C,el_consonants);
SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ
SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ _


tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS;
tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards
tr->langopts.replace_chars = replace_cyrillic_latin; tr->langopts.replace_chars = replace_cyrillic_latin;
tr->langopts.our_alphabet = OFFSET_CYRILLIC; // don't say "cyrillic" before letter names


SetLetterVowel(tr,'y'); SetLetterVowel(tr,'y');
SetLetterVowel(tr,'r'); SetLetterVowel(tr,'r');
static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N


tr->letter_bits_offset = OFFSET_KOREAN; tr->letter_bits_offset = OFFSET_KOREAN;
tr->langopts.our_alphabet = 0xa700;
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
SetLetterBits(tr,LETTERGP_Y,ko_ivowels); SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
SetupTranslator(tr,stress_lengths_mk,stress_amps_mk); SetupTranslator(tr,stress_lengths_mk,stress_amps_mk);
tr->charset_a0 = charsets[5]; // ISO-8859-5 tr->charset_a0 = charsets[5]; // ISO-8859-5
tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic; tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic;
tr->letter_bits_offset = OFFSET_CYRILLIC;


tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
tr->langopts.ideographs = 1; tr->langopts.ideographs = 1;
tr->langopts.our_alphabet = 0x3100;
tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
if(name2 == L('z','h')) if(name2 == L('z','h'))
{ {

+ 33
- 32
src/translate.cpp View File

translator2->phoneme_tab_ix = new_phoneme_tab; translator2->phoneme_tab_ix = new_phoneme_tab;
} }
} }
translator2->phonemes_repeat[0] = 0;
return(new_phoneme_tab); return(new_phoneme_tab);
} // end of SetTranslator2 } // end of SetTranslator2


0x72,0x73,0x74,0x75 0x72,0x73,0x74,0x75
}; };


// check for Korean Hangul letters
if(((code = c - 0xac00) >= 0) && (c <= 0xd7af))
{
// break a syllable hangul into 2 or 3 individual jamo
initial = (code/28)/21;
medial = (code/28) % 21;
final = code % 28;

if(initial == 11)
{
// null initial
c = medial + 0x1161;
if(final > 0)
*insert = final + 0x11a7;
}
else
{
// extact the initial and insert the remainder with a null initial
c = initial + 0x1100;
*insert = (11*28*21) + (medial*28) + final + 0xac00;
}
return(c);
}
else if(((code = c - 0x3130) >= 0) && (code < 0x34))
{
// Hangul compatibility jamo
return(hangul_compatibility[code] + 0x1100);
}

switch(tr->translator_name) switch(tr->translator_name)
{ {
case L('a','f'): case L('a','f'):
} }
} }
break; break;

case L('k','o'):
if(((code = c - 0xac00) >= 0) && (c <= 0xd7af))
{
// break a syllable hangul into 2 or 3 individual jamo
initial = (code/28)/21;
medial = (code/28) % 21;
final = code % 28;

if(initial == 11)
{
// null initial
c = medial + 0x1161;
if(final > 0)
*insert = final + 0x11a7;
}
else
{
// extact the initial and insert the remainder with a null initial
c = initial + 0x1100;
*insert = (11*28*21) + (medial*28) + final + 0xac00;
}
return(c);
}
else if(((code = c - 0x3130) >= 0) && (code < 0x34))
{
// Hangul compatibility jamo
return(hangul_compatibility[code] + 0x1100);
}
break;
} }
return(SubstituteChar(tr, c, next_in, insert, wordflags)); return(SubstituteChar(tr, c, next_in, insert, wordflags));
} }
} }
else else
{ {
if(iswlower(prev_in))
if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case
{ {
// lower case followed by upper case in a word // lower case followed by upper case in a word
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)


prev_clause_pause = clause_pause; prev_clause_pause = clause_pause;


*tone_out = tone;
if(tone_out != NULL)
*tone_out = tone;


new_sentence = 0; new_sentence = 0;
if(terminator & CLAUSE_BIT_SENTENCE) if(terminator & CLAUSE_BIT_SENTENCE)

+ 1
- 0
src/translate.h View File

int listx; // compile *_listx after *list int listx; // compile *_listx after *list
const unsigned int *replace_chars; // characters to be substitutes const unsigned int *replace_chars; // characters to be substitutes
char ascii_language[8]; // switch to this language for Latin characters char ascii_language[8]; // switch to this language for Latin characters
int our_alphabet; // offset for main alphabet (if not set in letter_bits_offset)
int alt_alphabet; // offset for another language to recognize int alt_alphabet; // offset for another language to recognize
int alt_alphabet_lang; // language for the alt_alphabet int alt_alphabet_lang; // language for the alt_alphabet
int max_lengthmod; int max_lengthmod;

+ 15
- 4
src/voices.cpp View File



// which directory to look for a named voice. List of voice names, must end in a space. // which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia = static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue ";
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
static const char *voices_europe = static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";




ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
{//======================================================================== {//========================================================================
#ifndef PLATFORM_RISCOS
char path_voices[sizeof(path_home)+12];
#ifdef PLATFORM_RISCOS
if(n_voices_list == 0)
{
sprintf(path_voices,"%s%cvoices",path_home,PATHSEP);
len_path_voices = strlen(path_voices)+1;
GetVoices(path_voices);
voices_list[n_voices_list] = NULL; // voices list terminator
}
return((const espeak_VOICE **)voices_list);

#else
int ix; int ix;
int j; int j;
espeak_VOICE *v; espeak_VOICE *v;
static espeak_VOICE **voices = NULL; static espeak_VOICE **voices = NULL;
char path_voices[sizeof(path_home)+12];


// free previous voice list data // free previous voice list data
FreeVoiceList(); FreeVoiceList();
} }
return((const espeak_VOICE **)voices); return((const espeak_VOICE **)voices);
#endif #endif
return((const espeak_VOICE **)voices_list);
} // end of espeak_ListVoices } // end of espeak_ListVoices





Loading…
Cancel
Save