Conflicts: platforms/windows/make_espeakedit.issmaster
@@ -195,6 +195,7 @@ dictionaries: src/espeak \ | |||
espeak-data/sv_dict \ | |||
espeak-data/sw_dict \ | |||
espeak-data/ta_dict \ | |||
espeak-data/te_dict \ | |||
espeak-data/tr_dict \ | |||
espeak-data/ur_dict \ | |||
espeak-data/vi_dict \ | |||
@@ -531,6 +532,12 @@ 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 .. | |||
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 | |||
dictsource/tr_extra: | |||
touch dictsource/tr_extra |
@@ -1,4 +1,4 @@ | |||
// Aragon translation rules | |||
// Aragon translation rules | |||
// This file is UTF-8 encoded | |||
// letters | |||
@@ -118,6 +118,9 @@ _x#º %o // for 1º 2º 3º | |||
_x#ª %a | |||
º orDin'al||maskul'in | |||
ª orDin'al||femen'in | |||
ºc gr'aUs||T'e | |||
ºf gr'aUs||'Efe | |||
ºk gr'aUs||k'a | |||
_1ox prim'Er | |||
_2ox seQ'und | |||
@@ -179,6 +182,7 @@ $ d'olar | |||
/ baRRa | |||
\ kontraBaRRa | |||
| b'aRRaBertik'al | |||
° graUs | |||
_- gj'on | |||
! TaRR'ar||eksklamaTj'on | |||
@@ -483,6 +487,7 @@ espeak isp'ik | |||
facebook f'eIsbuk | |||
firefox f'aIrfoks | |||
google g'ugEl | |||
hotmail xotm'eIl | |||
(i phone) 'aIfon | |||
iphone 'aIfon | |||
(i pod) 'aIpod |
@@ -1,11 +1,11 @@ | |||
// Translation rules for Bengali | |||
// Translation rules for Bengali | |||
// This file is UTF8 encoded | |||
// Numbers | |||
devanagari numbers are changed to latin characters before translation | |||
// Bengali numbers are changed to latin characters before translation | |||
_0 S'unjO | |||
_1 '&k | |||
_2 duj | |||
_2 d'uj | |||
_3 t'in | |||
_4 tS'ar | |||
_5 p'a~tS | |||
@@ -14,11 +14,16 @@ _7 S'at | |||
_8 'at.# | |||
_9 n'Oj | |||
_2a d'u // with hundreds etc. | |||
_6a tS#'a | |||
_9a n'O | |||
_10 d'OS | |||
_11 '&garo | |||
_12 b'arO | |||
_13 t'erO | |||
_14 tS'owddO | |||
_14 tS'oddO | |||
_15 p'OnerO | |||
_16 S'olO | |||
_17 S'OterO | |||
@@ -26,64 +31,101 @@ _18 'at.#arO | |||
_19 'uniS | |||
_20 k'uri // or b'iS ?? | |||
_21 'ekuS | |||
_21 ek'uS | |||
_22 b'ajS | |||
_23 t'ejS | |||
_24 tS'ObbiS | |||
_25 p'O~tSiS | |||
_26 tSh'ObbiS | |||
_27 S'ataS | |||
_26 tSh'abbiS | |||
_27 Sat'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 | |||
_0M1 h'ajar | |||
_0M2 l'ak# | |||
_0M3 k'ot.i | |||
_0M4 'Orbud | |||
_dpt dOsomik | |||
_dpt _d'Osomik_ | |||
// Single consonants | |||
@@ -91,40 +133,42 @@ _dpt dOsomik | |||
খ k#O | |||
গ gO | |||
ঘ g#O | |||
ঙ 'uNO | |||
ঙ 'uNO~ | |||
চ tSO | |||
ছ tShO // [h] to distinguish from [tS] | |||
জ JO | |||
ঝ J#O | |||
ঞ 'iNO | |||
ঞ 'iNO~ | |||
ট t.O | |||
ঠ t.#O | |||
ড d.O | |||
ঢ d.#O | |||
ণ m'odd#ennO | |||
ণ m,odd#en.n.'O | |||
ত tO | |||
থ t#O | |||
দ dO | |||
ধ d#O | |||
ন d'ontennO | |||
ন d,ontenn'O | |||
প pO | |||
ফ fO // or [p#O] ? | |||
ব bO | |||
ভ b#O | |||
ম mO | |||
য় Oj | |||
য ontostedZ'O | |||
য ,ontostedZ'O | |||
র rO | |||
ড় r.O | |||
ড় r.O // (d. + nukta) | |||
ঢ় hr.O | |||
ঢ় hr.O // (d#. + nukta) | |||
ল lO | |||
শ taleboS:O | |||
ষ mud#en:oS:O | |||
স d'onteS:O | |||
শ t,aleboS:'O | |||
ষ m,ud#en:oS:'O | |||
স d,onteS:'O | |||
হ hO | |||
ৎ kh'Ond.otO | |||
ৎ kh,Ond.ot'O | |||
ক্ষ k,ojmud#en:oS:'O | |||
// full vowels | |||
অ O | |||
@@ -134,11 +178,16 @@ _dpt dOsomik | |||
উ hrOS:o'u | |||
ঊ dirg#o'u | |||
ঋ ri | |||
এ e | |||
ঐ oj | |||
ও o | |||
ঔ ow | |||
এ e $u+ // word 'it' | |||
ঐ oj $u+ // word 'that' | |||
ও o $u+ $brk // 'and' | |||
_এ e | |||
_ঐ oj | |||
_ও o | |||
// combining vowel signs | |||
া 'akar | |||
ি r'oS:ikar | |||
@@ -158,10 +207,17 @@ _dpt dOsomik | |||
ঁ tS'Ondrobindu | |||
় b'indu | |||
$ d.Olar | |||
% SOtk'Ora | |||
+ jOg | |||
= SOman | |||
// Punctuation | |||
। dVn.d.V | |||
_, koma | |||
_? pr'oSnOtSihnO | |||
// Pronouns | |||
আমি $u // main: I | |||
@@ -264,3 +320,4 @@ _dpt dOsomik | |||
// Exceptions | |||
এত &to |
@@ -1,4 +1,4 @@ | |||
| |||
// This file is UTF8 encoded | |||
// letter groups: | |||
@@ -28,6 +28,7 @@ | |||
.group অ | |||
অ V | |||
অঁ O~ | |||
অ্যা & // V,ja in [æmiba] | |||
.group আ | |||
@@ -74,6 +75,8 @@ | |||
.group এ | |||
এ e | |||
এঁ e~ | |||
এ্যা & // e,ja [ækademi] | |||
.group ও | |||
@@ -288,7 +291,10 @@ | |||
য় jV // nukta | |||
য় (B j | |||
্) য (C & // ব্যস্ত [bæsto] | |||
্) যা & // ব্যাকরণ [bækɔron] | |||
.group র | |||
র rV | |||
র (B r | |||
@@ -378,3 +384,5 @@ | |||
ৢ l- | |||
ৣ l- | |||
__) - (_D bij'og | |||
D_) - (_D bij'og |
@@ -54,38 +54,38 @@ _?? symbol | |||
_#9 tab | |||
_#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: | |||
_; se:mi:ko:lVn | |||
_; semiko:lVn | |||
_: k'o:lVn | |||
_. pONtOm // PN u => O | |||
_? spWrgsmVlstajn | |||
_! udRVbstejn | |||
_- binnesdrai | |||
__ b'Onsdrai | |||
_? spWrsmOlstAjn | |||
_! udRVbstAjn | |||
_- bin@-sdrAi | |||
__ b'OnsdrAi | |||
& _Vw | |||
£ pun? | |||
€ euro | |||
© kVpirajt | |||
÷ divid'eReD||meD | |||
© kVpirAjt | |||
÷ divid'eRVD||mED | |||
= l'imeD | |||
# n'OmV | |||
§ paragr'af | |||
× g'aNe | |||
ª feminin||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 | |||
¥ j'en: | |||
µ my | |||
' apostr'Vf | |||
½ en'hal | |||
½ en'h&l | |||
+ plus | |||
// numbers | |||
@@ -102,19 +102,19 @@ _9 n'i | |||
_10 t'i | |||
_11 'Elv@ | |||
_12 t'Vl | |||
_13 tR'?&#d@-n | |||
_13 t*'?&#d@-n | |||
_14 fj'ord@-n | |||
_15 f'Emd@-n | |||
_16 s'ajsd@-n | |||
_17 s'Wd@-n | |||
_16 s'Ajsd@-n | |||
_17 s'?Wd@-n | |||
_18 '?&d@-n | |||
_19 n'ed@-n | |||
_19 n'?ed@-n | |||
_2X t'y:?u | |||
_3X tR'&#Dv@ | |||
_3X t*'&#Dv@ | |||
_4X f'?W:_|V | |||
_5X h&l't*Es | |||
_6X t*'Es | |||
_7X h&lfj'&rs | |||
_7X h&lfj'Ers | |||
_8X f'irs | |||
_9X h&lf'Ems // PB a changed to & | |||
_0C h'unRVD | |||
@@ -131,32 +131,32 @@ _0M4 bilij'o:n3 | |||
_0and V | |||
_dpt _k,Vm&: | |||
// PB a number followed by dot | |||
// A number followed by dot | |||
// ordinals are followed by a dot in Danish | |||
_ord 3 // 13. (trettende) | |||
_ord @- // 13. (trettende) | |||
// exceptions for ordinals | |||
_1o fWrsd3 // 1. første | |||
_1o fWrsd@- // 1. første | |||
_2o &n@n // 2. anden | |||
_3o trEdj3 // 3. tredje | |||
_3o trEdj@- // 3. tredje | |||
_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<*'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<*'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 | |||
@@ -187,10 +187,10 @@ fra $u+ // from | |||
ved $u+ // at | |||
om $u+ $brk // about, within | |||
med $u+ // with | |||
af & | |||
ad & | |||
af &_! | |||
ad &_! | |||
ad &D $atend $sentence // "Det må ikke skille os ad." | |||
at & $u | |||
at &_! $u | |||
hos | |||
som sVm $u // which / that | |||
@@ -203,7 +203,7 @@ hun $u | |||
det de $u | |||
dét de | |||
vi vi $u | |||
i _i $u+ | |||
i _i_! $u+ | |||
mig mAj $u // me | |||
dig dAj $u+ | |||
dem $u | |||
@@ -220,10 +220,10 @@ hvis ves $u+ // PB - whose | |||
// possessive pronouns | |||
min min $u | |||
mit mit $u | |||
mine m'in3 | |||
mine m'in@- | |||
din d'in $u+ | |||
dit d'it $u | |||
dine d'in3 | |||
dine d'in@- | |||
deres dE:Vs $u | |||
hans $u+ | |||
hendes $u+ | |||
@@ -1448,7 +1448,6 @@ elegance $alt | |||
eminence $alt | |||
excellence $alt | |||
fajance $alt | |||
hospice $alt | |||
ignorance $alt | |||
inspektrice $alt | |||
intolerance $alt | |||
@@ -1846,6 +1845,7 @@ afrikan $alt | |||
afrikaan $alt | |||
aleksandrin $alt | |||
amerikan $alt | |||
austral $alt | |||
andorran $alt | |||
anglikan $alt | |||
angolan $alt | |||
@@ -5968,6 +5968,7 @@ dediker $alt | |||
deducer $alt | |||
defiler $alt | |||
definer $alt | |||
omdefiner $alt | |||
deflorer $alt | |||
deformer $alt | |||
degrader $alt | |||
@@ -6547,6 +6548,7 @@ konstater $alt | |||
konstituer $alt | |||
konstringer $alt | |||
konstruer $alt | |||
rekonstruer $alt | |||
konsulere $alt | |||
konsulter $alt | |||
konsumer $alt | |||
@@ -11121,7 +11123,7 @@ sinecure $alt | |||
tournure $alt | |||
// exceptions | |||
alene &l'en@ // alone | |||
alene &l'en@- // alone | |||
egen _|aj@-n | |||
mc mak' $capital // PB McDonald | |||
egne ajn@- | |||
@@ -11130,7 +11132,7 @@ ide id'e // idea | |||
idé id'e // idea | |||
tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | |||
ny ny // new | |||
også Vs@- // also | |||
også ?Vs@- // also | |||
idet id'e // in so far as | |||
(rub og stub) R'Ob||V||sd'Ob | |||
tre tr'E // the number 3 | |||
@@ -11138,8 +11140,8 @@ rejicere rejis'eV // PB should not be pronounced [raje] | |||
rejicerer rejis'eV // PB | |||
rejiceres rejis'eVs // 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 | |||
bliver blir // PB | |||
konfirmand kVnferm'&nd // PB | |||
@@ -11150,48 +11152,48 @@ giv g'i // PB the v shouldn't be pronounced | |||
giver gir // PB the v shouldn't be pronounced | |||
opgiver Vpgir // PB | |||
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 | |||
(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 | |||
(al qaeda) al||k'ajda // 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: | |||
(fait accompli) fEtakVmpl'i // PB | |||
(fait accompli) fEt&kVmpl'i // PB | |||
(salt lake city) s'Vlt||lEjk||s'iti | |||
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 | |||
(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 | |||
(en passant) AN||p&s'AN | |||
(coney island) 'kouni||'ajl3nd // PB | |||
(union station) junj3n||steisj@n // PB | |||
(secret service) sigred||s'Wvis | |||
(happy hour) h&pi||'AuV | |||
chevrolet sjEvrol'e | |||
chevrolet sjEvrol'E | |||
saigon sAjgVn // PB Saigon | |||
managua m&n'&:gw& | |||
(deja-vu) deSja||'vy | |||
@@ -11246,32 +11248,37 @@ ikes ajks // PB | |||
// Try to catch errors | |||
(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 | |||
(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& | |||
(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) | |||
(et hav) ed||hAu | |||
(stort hav) stord||hAu | |||
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] | |||
//(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" | |||
(han steg) h&n||st'e | |||
(hun steg) hOn||st'e | |||
@@ -11280,7 +11287,7 @@ sig $atend $sentence saj // end of a sentence - han vaskede sig. | |||
(alle steg) &l3||st'e | |||
(vandet steg) v&n@D||st'e | |||
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] | |||
(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 |
@@ -1,4 +1,4 @@ | |||
| |||
// You can use the en_extra file, rather than this one | |||
// to add your own pronunciation definitions. | |||
@@ -70,6 +70,7 @@ a eI $atend | |||
ï $accent | |||
ö $accent | |||
ü $accent | |||
û $accent | |||
č $accent | |||
š $accent | |||
ş $accent | |||
@@ -324,37 +325,54 @@ _zh tS'aIni:z | |||
// Arabic letters | |||
ء 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# | |||
ت tE? | |||
ت ta | |||
ث TE? | |||
ج ZIm | |||
ج dZi:m | |||
ح hE? | |||
خ xE? | |||
د dEl/1 | |||
ذ DEl/1 | |||
د dal/1 | |||
ذ Dal/1 | |||
ر R2A:? | |||
ز zEjn | |||
س si:n | |||
ش Si:n | |||
ص sO:d@- | |||
ض dO:d@- | |||
ص sa:d@- | |||
ض da:d@- | |||
ط thA:? | |||
ظ DA:? | |||
ع ?ajn | |||
غ Q"ajn | |||
ف fE? | |||
ق qO:f | |||
ك kEf | |||
ل lEm | |||
ع '?Ein | |||
غ 'Q"Ein | |||
ف fa | |||
ق qa:f | |||
ك kaf | |||
ل lam | |||
م mi:m | |||
ن nu|:n | |||
ه hE? | |||
و wO:w | |||
ه ha | |||
و waw | |||
ى al'if_maks'ura | |||
ي jE? | |||
// Farsi | |||
پ pa | |||
چ tSa | |||
ژ Za | |||
گ ga:f | |||
ی f'A@si||j'e | |||
ک k'a:f | |||
// Urdu | |||
ٹ te | |||
ڈ de | |||
ڑ z.e | |||
ے barij'e | |||
ھ h'@ | |||
َ a | |||
ِ i | |||
@@ -724,6 +742,7 @@ aka aka# | |||
alas a#l'as | |||
albeit O:lb'i:It | |||
alfalfa alf'alf@ | |||
algebra aldZI2br@ | |||
alias eIli@s | |||
alibi al@baI | |||
alibis al@baIz | |||
@@ -754,6 +773,7 @@ ambassador a#mbas@d3 | |||
ambidextrous $3 | |||
amen ,A:m'En $onlys | |||
?3 amen ,eIm'En | |||
?3 amo amoU | |||
amok a#m0k | |||
amoral eIm'0r@L | |||
amount a#maUnt | |||
@@ -767,8 +787,6 @@ analyses an@laIzI#z $verb | |||
analysis a#nal@sIs | |||
anemone a#nEm@ni | |||
angel eIndZ@L | |||
anecdote anIkdoUt | |||
anecdotal anIkd'oUt@L | |||
anemometer anIm'0mI2t3 | |||
anew a#nju: | |||
?3 anew a#nu: | |||
@@ -829,7 +847,7 @@ arena a#ri:n@ | |||
argon A@g0n | |||
argue A@gju: | |||
aries e@ri:z | |||
arithmetic a#rITm@tIk | |||
arithmetic a#rITm@tIk $onlys | |||
arise a#raIz | |||
arisen @rIz@n | |||
armslength ,A@mzl'ENT | |||
@@ -877,6 +895,7 @@ average av@-rI2dZ | |||
aviary eIvi@ri | |||
awry a#raI | |||
axes aksI#z | |||
axon aks0n | |||
backend bak'End | |||
backstory baksto@ri | |||
@@ -1115,6 +1134,7 @@ circumference $2 | |||
circumvent s3:k@mvEnt | |||
?5 circumvent sIRk@mvEnt | |||
citadel sIt@dEl | |||
clandestine $2 | |||
clarinet klar@n'Et | |||
cleanliness klEnlIn@s | |||
cleanse klEnz | |||
@@ -1236,6 +1256,7 @@ coordinate koU'O:dI2neIt $verb | |||
copier k0pi@3 | |||
copilot koUpaIl@t | |||
coral k0r@L | |||
?3 cordial kO@dZ@L | |||
coronet k0r@nEt | |||
corollary $2 | |||
corporal kO@pr@L | |||
@@ -1291,6 +1312,7 @@ debut deIbju: | |||
?3 debut deIb'ju: | |||
decade dEkeId | |||
decent di:s@nt | |||
decibel dEsI#b@L | |||
declaration dEkl@'reIS@n | |||
decolletage deIk0lt'A:Z | |||
decor deIkO@ | |||
@@ -1380,6 +1402,7 @@ doctrine d0ktrI2n | |||
doctrinal $alt1 | |||
doer du:3 | |||
dogged d0gI#d | |||
dogmatic d0gm'atIk | |||
doin du:In | |||
domino $1 | |||
donor doUn3 | |||
@@ -1626,6 +1649,7 @@ gigantic dZaIg'antIk | |||
gilead g'IlIad | |||
gimme gImi | |||
giraffe dZI2raaf | |||
github gIthVb | |||
glacier gleIS3 | |||
goin ,goUI2n $only // for goin' | |||
gonna g,@n@ | |||
@@ -1796,6 +1820,7 @@ intestine I2ntEstI#n | |||
inventory Inv@ntri | |||
?3 inventory Inv@nto:ri | |||
interface $1 | |||
interlude $1 | |||
intermin Int'3:mIn // interminable | |||
intern $1 $onlys | |||
internee Int'3:ni: | |||
@@ -2056,6 +2081,7 @@ molybdenum $2 | |||
momentary moUm@nt@ri | |||
?3 momentary moUm@nt2e@ri | |||
momentum $2 | |||
monarchic m@nA@kIk | |||
monday mVndeI | |||
monotone m0n@toUn | |||
monsieur m@sj3: | |||
@@ -2251,6 +2277,7 @@ pear pe@ | |||
pecan pi:k@n | |||
peculiar pI2kju:lI3 | |||
pedalo pEd@loU | |||
pedestal pEdI2st@L | |||
pedestrian $alt3 | |||
pegasus pEg@s@s | |||
pejorative p@dZ0r@tIv | |||
@@ -2545,6 +2572,7 @@ ruby ru:bi | |||
rugged rVgI#d | |||
ruin ru:I2n // for ruining | |||
sabbatic $alt3 | |||
sabotage sab@tA:Z | |||
saboteur sab@t'3: | |||
?5 saboteur sab@t'VR | |||
@@ -2552,6 +2580,7 @@ sabre seIb3 | |||
sachet saSeI | |||
sacred seIkr@d | |||
sacrifice sakrI2faIs | |||
sadistic $alt3 | |||
safety seIfti | |||
saga sA:g@ | |||
sahara $alt3 | |||
@@ -2566,6 +2595,7 @@ saloon $alt3 | |||
san ,san $only | |||
sardine $2 | |||
satanic $alt3 | |||
satiric $alt3 | |||
saucepan sO:sp@n | |||
saudi saUdi | |||
saute sO:teI | |||
@@ -2706,6 +2736,7 @@ stagnate $2 | |||
stampede $2 | |||
starboard stA@b3d | |||
starry stA:rI | |||
statistic $alt3 | |||
stiletto stI2lEtoU | |||
strychnine str'Ikni:n | |||
sterile stEraIl | |||
@@ -2780,7 +2811,6 @@ tear te@ $verb | |||
(tear apart) t,e@||a#pA@t | |||
(tear off) t'e@||'0f | |||
teargas ti@3gas | |||
techy tEki | |||
teddybear t'EdIb,e@ | |||
telemetry t@lEm@tri | |||
telepathy t@lEp@Ti | |||
@@ -2882,6 +2912,7 @@ unaware Vn@w'e@ | |||
uncle VNk@L | |||
undeny VndIn'aI | |||
underling $1 | |||
underlings Vnd3lINz | |||
underworld $1 | |||
undies Vndiz | |||
undo Vnd'u: | |||
@@ -3241,8 +3272,9 @@ Lvov l@-v0v | |||
?5 Luxembourg lVks@mbVRg | |||
Madagascar mad@g'ask3 | |||
Madras m@draas | |||
Madrid m@drId | |||
Madrid m@drId | |||
Malawi $alt3 | |||
Malayalam maleI'A:l@m | |||
Maldives mO:ld'i:v | |||
Mali mA:li | |||
Mandalay $3 | |||
@@ -3283,6 +3315,7 @@ Noumea nu:m'eI@ | |||
Oahu oU'A:hu: | |||
Oklahoma oUkla#h'oUm@ | |||
Ohio oUh'aIoU | |||
Ohioan oUh'aIoU@n | |||
Omagh oUmA: | |||
Omaha oUma#hA: | |||
Oman oUm'an | |||
@@ -3369,6 +3402,7 @@ Wisconsin wI2sk'0nsI2n | |||
Wyoming waI'oUmIN | |||
Xhosa kO:s@ | |||
Yemen $alt2 | |||
Yosemite joUs'Em@ti | |||
zaire zaI'i@3 | |||
zimbabwe zI2mbA:bwi | |||
zimbabwean zI2mbA:bwI@n | |||
@@ -3648,6 +3682,7 @@ Phoebe fi:bi: | |||
Rachael reItS@L | |||
Rachel reItS@L | |||
Rafael rA:faI'El | |||
Rashid rA:S'i:d | |||
Raul raU'u:l | |||
Rees ri:s | |||
Reese ri:s | |||
@@ -3672,6 +3707,7 @@ Sebastian $alt3 | |||
Sheila Si:l@ | |||
Simon saIm@n | |||
Sinead SI2neId | |||
Sinéad SI2neId | |||
Siobhan S@vO:n | |||
Siobhán S@vO:n | |||
Sonia s0nj@ |
@@ -504,6 +504,7 @@ | |||
portr) ai (t I# | |||
.group al | |||
@ic) al (_S2 @L | |||
_) al (@ a#l | |||
gonz) al 'A:l | |||
_) alaba al@b'a | |||
@@ -720,6 +721,7 @@ | |||
p) an (c an | |||
@m) an (d aan | |||
sl) an (d aan | |||
_) anecdo anIkdoU | |||
C) an (t aan | |||
an (ath a#n | |||
ann (eal a#n | |||
@@ -1066,8 +1068,8 @@ | |||
as (thm as | |||
as (tral as | |||
as (tro as | |||
as (trolog a#s | |||
as (trono a#s | |||
_) as (trolog a#s | |||
_) as (trono a#s | |||
&) as (ty_ a#s | |||
ass (ym as | |||
purch) as (e Is | |||
@@ -1093,11 +1095,12 @@ | |||
_s) ata (n eIt@ | |||
_g) ator eIt3 | |||
&) ate (_$w_alt2 @t | |||
der) ated (_ eItI#d | |||
pal) ate (_ @t | |||
consul) ate (_ @t | |||
macul) ate (_ @t | |||
tim) ate (_ @t | |||
tim) ated (_ eItI2d | |||
tim) ated (_ eItI#d | |||
tim) ating (_ eItIN | |||
din) ate (_ @t | |||
ion) ate (_ @t | |||
@@ -1128,7 +1131,6 @@ | |||
at (io_ eIS | |||
ati (aX 'eIS | |||
&) atism @tIz@m | |||
st) at (ist @t | |||
w) at (t 0t | |||
@) ath (An_ @T | |||
athed (_ eIDd | |||
@@ -1334,6 +1336,7 @@ | |||
bi (nm bI | |||
bi (noc bI2 | |||
_) bio (@P3 b,aIoU | |||
bi (ol baI | |||
bi (otic baI | |||
@) bi (osA baI | |||
bi (oC_ bI | |||
@@ -1461,6 +1464,7 @@ | |||
a) ch (il k | |||
bra) ch k | |||
te) ch (K k | |||
_te) ch k | |||
ch (isC k | |||
ch (ic_ k | |||
@@Car) ch (_ k | |||
@@ -1685,6 +1689,7 @@ | |||
de (ft dE | |||
_) de (g@ dI2 | |||
_) de (hyd ,di: | |||
_) de (ist deI | |||
_) de (j dI2 | |||
_) de (l@ dI2 | |||
de (law dE | |||
@@ -1865,6 +1870,7 @@ | |||
sp) e (cies i: | |||
depr) ec (L02 i:S | |||
_) e (cl %I | |||
_) eccles (i I2kli:z | |||
econo (m Ik'0n@ | |||
econo (mic i:k@n'0 | |||
_) eco (s i:koU | |||
@@ -1927,23 +1933,6 @@ | |||
h) e (sion_ 'i: | |||
@) e (tio i: | |||
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: | |||
_s) ew u: | |||
?3 d) ew u: | |||
@@ -2458,6 +2447,7 @@ | |||
er (nal_ '3: | |||
&) er (n_ 3 | |||
c) er (n_ 3: | |||
_g) er (on Er | |||
&) er (oCe_ =@r | |||
er (se 3: | |||
v) er (sal '3: | |||
@@ -2531,7 +2521,7 @@ | |||
pr) es (ent Ez | |||
es (iA i:z | |||
es (ian_ 'i:z | |||
es (ic 'i:z | |||
@) es (ic 'i:z | |||
esis (_ 'i:sIs | |||
th) eses (_ @si:z | |||
th) esis (_ @sIs | |||
@@ -2599,6 +2589,27 @@ | |||
m) etry (_ =@tr%I | |||
&) 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 | |||
_) ev I2v | |||
_) eva (ne Ev@ | |||
@@ -2915,40 +2926,10 @@ | |||
n) ihi aI|@ | |||
_) i (h aI | |||
ii (_ IaI | |||
ij (C eI // Dutch | |||
f) i (j i: | |||
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 | |||
_) il (lust Il | |||
_C) i (lo aI | |||
&) ily (_S2i l%I | |||
@) i (ness I | |||
i (o I2 | |||
_) i (o aI | |||
@@ -2971,7 +2952,7 @@ | |||
ize (_ aIz | |||
ial) ize (_S3 aIz | |||
ize (d_ aIz | |||
i (zen I2 | |||
i (zen I | |||
iz (er_ aIz | |||
i (zon_ 'aI | |||
_p) izz i:t|s | |||
@@ -3055,6 +3036,7 @@ | |||
&n) iel (_ j@L | |||
&r) iel (_ =i:@L | |||
ie (n i@ | |||
&) ie (n_ =i@n | |||
d) iene (_ 'aIi:n | |||
ie (ntal I'E | |||
g) ie (n i: | |||
@@ -3135,6 +3117,40 @@ | |||
igu (e '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 | |||
&) im (_ I#m | |||
cl) im aIm | |||
@@ -3161,6 +3177,7 @@ | |||
imm (in Im | |||
immo (bi Im'oU | |||
imm (unis Im | |||
_) immu (no I2mju: | |||
@) imous (_ =Im@s | |||
im (pac Im | |||
im (pecu ,Im | |||
@@ -3241,6 +3258,7 @@ | |||
in (ga_ 'IN | |||
in (got IN | |||
_) in (gro IN | |||
_) in (im I2n | |||
_) in (jur In | |||
_) in (k IN | |||
_) in (l In | |||
@@ -3493,7 +3511,7 @@ | |||
@) istan (_ =Istan | |||
@) istani (_ Ist'A:nI | |||
@) iste (_ 'i:st | |||
@) is (tic 'Is | |||
@) is (tic_ 'Is | |||
r) is (y_ =@s | |||
@@ -4074,7 +4092,6 @@ | |||
betr) oth oUD | |||
?3 cl) o (th O | |||
cl) othe oUD | |||
tr) othe oUD | |||
b) o (ther 0 | |||
_r) o (ther 0 | |||
o (ther+ V | |||
@@ -4212,7 +4229,7 @@ | |||
dr) on (_ @n | |||
or) on (_ 0n | |||
cr) on (_ 0n | |||
x) on (_+ 0n | |||
@x) on (_ @n | |||
phot) on @n | |||
pers) on @n | |||
pers) on (i '0n | |||
@@ -4295,6 +4312,7 @@ | |||
.group or | |||
or o@ | |||
_) or O@ | |||
_) organo (@P6 O@g,anoU | |||
or (ch_ O@ | |||
or (m_ O@ | |||
st) or (m o@ | |||
@@ -5221,6 +5239,7 @@ | |||
?5 _) sur sVR | |||
_) sure SU@ | |||
sur (anc SU@ | |||
sur (g+ s3: | |||
sur (m s3 | |||
sur (pa s3 | |||
sur (pr s3 | |||
@@ -5253,6 +5272,7 @@ | |||
te (rrest t2@ | |||
r) tga (g gI | |||
@) t (ia S | |||
_pi) t (ia t | |||
s) t (l | |||
to (morr t@ | |||
_) to (nn tV | |||
@@ -5265,6 +5285,7 @@ | |||
tribe traIb | |||
_) tri (bu trI | |||
_) tri (g trI | |||
_) tri (gonA trI | |||
_) tri (ni trI | |||
_) tri (vi trI | |||
_) tri (xA trI | |||
@@ -5274,23 +5295,6 @@ | |||
_) tsu tsu: | |||
_) two tu: | |||
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 | |||
tze (_ tsi | |||
@@ -5367,7 +5371,26 @@ | |||
&) tious S=@s | |||
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 | |||
u V | |||
man) u ju: | |||
@@ -6069,6 +6092,7 @@ | |||
ö 3: | |||
ör 3: | |||
ü u: | |||
û u: | |||
ç s | |||
ß s | |||
č tS |
@@ -29,6 +29,7 @@ _tld t'ilde | |||
// names of symbols | |||
ª a | |||
º o | |||
° grados | |||
_. punto | |||
_, koma | |||
_; p,untoik'oma | |||
@@ -123,6 +124,9 @@ _dpt koma | |||
_#º o | |||
_#ª a | |||
_ord o | |||
ºc gr'ados||T'e | |||
ºf gr'ados||'Efe | |||
ºk gr'ados||k'a | |||
_1o prim'Er | |||
_2o seQ'und |
@@ -1,4 +1,4 @@ | |||
| |||
// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||
// This file is UTF-8 encoded | |||
@@ -40,6 +40,50 @@ | |||
y ipsilon | |||
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 | |||
@@ -47,6 +91,10 @@ _í $accent | |||
_ó $accent | |||
_ú $accent | |||
_ar 'Arapsko | |||
_cyr tS;'iRilitsa | |||
// accent names | |||
_lig l'ig&t,UR& | |||
_acu 'akUt |
@@ -1,4 +1,4 @@ | |||
| |||
// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||
// This file is UTF-8 encoded | |||
@@ -31,7 +31,9 @@ | |||
.group d | |||
d d | |||
dz dz | |||
_) dz (_ dz@ | |||
dž dZ | |||
_) dž (_ dZ@ | |||
.group đ | |||
đ dZ; | |||
@@ -67,6 +69,8 @@ | |||
.group l | |||
l l | |||
K) l (K l- | |||
_) lj (_ l^@ | |||
lj (+ l^ | |||
v) lj lj | |||
@@ -79,6 +83,7 @@ | |||
n (k N | |||
nj n^ | |||
_) nj (_ n^@ | |||
.group o | |||
o o |
@@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
श S@ | |||
ष s.@ // retroflex [S] | |||
स s@ | |||
ह H@- | |||
ह H@ | |||
क़ q@ | |||
ख़ x@ | |||
ग़ Q@ | |||
@@ -196,10 +196,21 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
_?? Vks.@r | |||
// Alphabet names | |||
_ar 'Vrbi | |||
_cyr sIrIk'Ik | |||
_zh c'i@ni | |||
// Punctuation | |||
। dVn.d.V | |||
$ dOl@r | |||
% pVt'IS@t | |||
+ plVs | |||
= bVr'a:b@r | |||
* ta:r'a:Nk@n | |||
* | |||
// Pronouns | |||
मैं $u // main: IrI | |||
मुझे $u | |||
@@ -262,7 +273,7 @@ _?? Vks.@r | |||
को $u // ko: to | |||
तक $u // tak: until, for(time) | |||
बिना $u $pause // without (preposition) | |||
में $u // me: in | |||
में me~: $u+ // me: in | |||
से $u // se: from, with, by | |||
@@ -272,7 +283,7 @@ _?? Vks.@r | |||
// Conjunctions | |||
और $u $pause // aur: and | |||
और $u $brk // aur: and | |||
य j@ $u $pause // ja: or | |||
अगर $u $pause // agar: if | |||
यदि $u $pause // yadi: if, whether | |||
@@ -299,5 +310,5 @@ _?? Vks.@r | |||
// Exceptions | |||
क्रिकेट krIk'Et | |||
क्रिकेट kr'IkIt | |||
सायबर s'aIb@r |
@@ -390,7 +390,7 @@ | |||
ः H // visarga | |||
.group ् // virama | |||
् | |||
् | |||
// Extra consonants | |||
@@ -410,7 +410,7 @@ | |||
ज़ zV | |||
ज़ (B z | |||
.group ड़ // dddha (should retroflex flap) | |||
.group ड़ // dddha (should retroflex flap ?) | |||
ड़ r.V | |||
ड़ (B r. | |||
@@ -443,8 +443,3 @@ | |||
.group | |||
$ dOlV | |||
% pVsEnt | |||
@@ -1,4 +1,4 @@ | |||
// 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] | |||
@@ -82,6 +82,7 @@ _tld t'ilde | |||
# kantSellet:o | |||
@ ki'otS:ola | |||
~ tilde | |||
° g@-*'a:di | |||
: d,uep'unti | |||
_! p,untoesklamat'ivo |
@@ -24,8 +24,8 @@ _9X g'u_!||s'ip_! | |||
_0C p'Eq_! | |||
// 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 | |||
_1M1 m'an | |||
_0M2 '@q // 10^8 | |||
@@ -50,7 +50,7 @@ _1M4 gj'@N | |||
ᄋ i;'u-N | |||
ᄌ tS;i;'u-t | |||
ᄍ 's-aNdZ;,i;u-t | |||
ᄎ tSh-'i;u-t | |||
ᄎ tSh'i;u-t | |||
ᄏ khi;'u-k | |||
ᄐ thi;'u-t- | |||
ᄑ phi;'u-p |
@@ -83,7 +83,7 @@ | |||
ᄍ 'tS;- // TODO: phoneme | |||
.group ᄎ // ㅊ | |||
ᄎ tSh- // TODO: phoneme | |||
ᄎ tSh // TODO: phoneme | |||
.group ᄂ // ㄴ | |||
ᄂ ;n | |||
@@ -198,7 +198,7 @@ | |||
ᇀᄂ nn | |||
ᇀᄆ mm | |||
ᇀ (A th | |||
ᇀ (L02 tSh; | |||
ᇀ (L02 tS;h | |||
.group ᆸ // ㅂ | |||
ᆸ p | |||
@@ -236,7 +236,7 @@ | |||
ᆾ t | |||
ᆾᄂ nn | |||
ᆾᄆ mm | |||
ᆾ (A tSh; | |||
ᆾ (A tS;h | |||
.group ᆫ // ㄴ | |||
ᆫ n |
@@ -295,12 +295,5 @@ | |||
.group 0xe0a4 // devanagari | |||
0xe0a4 _^_HI // switch to hindi voice | |||
.group 0xe0a5 // devanagari | |||
0xe0a5 _^_HI | |||
.group | |||
$ do:l.ar |
@@ -1,4 +1,4 @@ | |||
| |||
// This file in UTF8 encoded | |||
// $alt2, remove s from plural, remove en from plural | |||
@@ -58,7 +58,7 @@ _tld t'Ild@ | |||
// punctuation | |||
. p8nt $max3 | |||
. p8nt | |||
_, k'Oma: | |||
_: d'8b@l@p,8nt | |||
_; p'8ntkOm,a: | |||
@@ -75,10 +75,12 @@ _) h'a:kj@sl'Wyt@n | |||
_{ v'irkAnt@h,a:k | |||
_} v'irkAnt@h,a:ksl'Wyt@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@ | |||
€ 'Y:*o:t,e:k@n | |||
° Qra:d@n | |||
// numbers | |||
@@ -133,6 +135,7 @@ _0Co h'OndErtst@ | |||
// abbreviations | |||
be $abbrev // used as domain abbrev for Belgium and in a lot of other names | |||
ca ka: $hasdot | |||
enz Enzo:vo:rt | |||
bvb bEIv'o:rbe:lt | |||
eu e:_y: $abbrev | |||
@@ -379,6 +382,7 @@ reken $alt | |||
schepen $alt | |||
steven $alt | |||
teken $alt | |||
volwassen $alt | |||
wapen $alt | |||
zegen $alt | |||
trokken $alt |
@@ -4,7 +4,7 @@ | |||
// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant | |||
.L01 g k | |||
.L02 _ t_ d_ de_ den_ // verb endings | |||
.L02 _ t_ d_ de_ den_ nen_ // verb endings ('nen' for 'scannen') | |||
.group a | |||
@@ -330,13 +330,20 @@ | |||
g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | |||
gg Q | |||
s) g x | |||
@) gi (eus Z | |||
@) gi (euz Z | |||
reli) gi (eu Qij | |||
.group ge | |||
_) ge (@P2 Q@ | |||
ge (bied Q@ | |||
_) gee Qe: | |||
_) gei QEI | |||
gener (aal Q,e:n@r | |||
_) gelijk Q@lEIk | |||
_) ge (lC QE | |||
_) ge (rC QE | |||
_) geu QY: | |||
_) ge (ven Qe: | |||
@@ -346,10 +353,8 @@ | |||
ge (sprek Q@ // in compounds | |||
@) gi (eus Z | |||
@) gi (euz Z | |||
reli) gi (eu Qij | |||
.group h | |||
h h | |||
@@ -360,6 +365,7 @@ | |||
_) herinn h%ErIn // herinneren | |||
_) hersen h'Ers@n | |||
&) heid (_S4 hEIt | |||
_) hulp (@@P4 h'8lp | |||
.group i | |||
@@ -546,13 +552,14 @@ _) inn (@P2 'I // ?? inneren | |||
pl) oi (t v#A | |||
c) oi (ffu v#A | |||
pr) o (gram o: | |||
omgeving OmQ'e:vIN | |||
oo (X 'o: | |||
oon 'o:n // in compounds, eg. telefoongesprek | |||
oo (C_ 'o: | |||
_) oost (@P4 o:st | |||
_) op (@@P2 'Op | |||
_) open (@P4 'o:p@n | |||
_) op (enen 'o:p | |||
_) op (enen+ 'o:p | |||
_) openings (P8 'o:p@nINs | |||
_) op (era 'o:p | |||
_) op (tion Op |
@@ -329,8 +329,7 @@ vocês $u2+ $verbf | |||
eles $u+ $verbf | |||
elas $u+ $verbf | |||
me $u // reflexive | |||
me $u $verbf | |||
me $u $verbf // reflexive | |||
te $u $verbf | |||
nos $u $nounf | |||
la $u | |||
@@ -345,7 +344,7 @@ se $u | |||
?2 nesta $u+ $nounf | |||
?2 neste $u+ $nounf n'estSi //in this | |||
?2 esse $u+ $nounf 'esi // that | |||
essa 'Es& $u+ | |||
essa 'Es& $u+ $noun | |||
desse $u+ $nounf | |||
desta $nounf | |||
nesse n'esy $u+ $nounf | |||
@@ -384,7 +383,7 @@ duma $u $nounf | |||
duns $u $nounf | |||
dumas $u $nounf | |||
em $u // in,on,at | |||
em $u $noun // in,on,at | |||
no nu $u $nounf | |||
na $u $nounf | |||
num $u $nounf | |||
@@ -427,7 +426,7 @@ com $u // with | |||
// conjunctions | |||
?1 e i $u // and | |||
?2 e i $u // and | |||
se $u // if | |||
se $u+ $verbf // if | |||
?2 mas $u // but | |||
@@ -522,7 +521,7 @@ estão $u | |||
estava $u | |||
estávamos $u | |||
astavam $u | |||
estavam $u | |||
estive $u | |||
?2 esteve estevy $u2 | |||
@@ -619,9 +618,14 @@ o O $atend | |||
// 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 | |||
@@ -639,18 +643,19 @@ acervo $alt2 | |||
adepto $alt | |||
adore $alt | |||
adorno $alt $verb | |||
aeroporto $alt2 | |||
aeroportos $alt | |||
albatrozes $alt | |||
alcateia $alt | |||
alcova $alt2 | |||
alferes $alt | |||
algozes $alt | |||
alicerce $alt | |||
almoço $alt $verb | |||
amarelo $alt | |||
ameba $alt | |||
amores $alt2 | |||
antonieta $alt2 | |||
apego $alt2 $noun | |||
apelo $alt $verb | |||
apelo $alt2 $noun | |||
aposto $alt $verb | |||
aperto $alt2 $noun | |||
apneia $alt | |||
@@ -660,8 +665,8 @@ arremesso $alt2 $noun | |||
arroz $alt2 | |||
assembleia $alt | |||
ateia $alt | |||
aterro $alt2 $noun | |||
aterros $alt2 | |||
aterro $alt2 | |||
aterro $alt $verb | |||
atmosfera $alt | |||
atrozes $alt | |||
autora $alt2 | |||
@@ -671,10 +676,10 @@ azeda $alt $verb | |||
azedo $alt $verb | |||
baqueta $alt2 | |||
beco $alt2 | |||
belo $alt | |||
besta $alt2 | |||
bilhete $alt2 | |||
boca $alt2 | |||
boceta $alt2 | |||
bochecha $alt2 | |||
bojo $alt2 | |||
boleia $alt | |||
@@ -683,37 +688,41 @@ bolo $alt2 | |||
bolo $alt $verb | |||
borboleta $alt2 | |||
bordo $alt | |||
borra $alt2 $noun | |||
bosque $alt | |||
boto $alt2 $noun | |||
boxe $alt | |||
brejo $alt | |||
bromelha $alt | |||
cabelo $alt2 | |||
cabresto $alt2 | |||
cacete $alt2 | |||
cachorra $alt2 | |||
caderneta $alt2 | |||
cadete $alt2 | |||
camelha $alt | |||
camelo $alt2 | |||
caminhonete $alt | |||
camiseta $alt2 | |||
cantora $alt2 | |||
capacete $alt2 | |||
caractere $alt | |||
caramelo $alt | |||
carbureto $alt2 | |||
careta $alt2 | |||
carreta $alt2 | |||
carroça $alt | |||
casebre $alt | |||
castelo $alt | |||
cateto $alt2 | |||
catorze $alt2 | |||
cebola $alt2 | |||
cefaleia $alt | |||
centopeia $alt | |||
centopeia $alt | |||
cerca $alt | |||
cerca $alt2 $noun | |||
cerco $alt $verb | |||
chamego $alt2 | |||
chefe $alt | |||
checam $alt | |||
cheque $alt | |||
chinelo $alt | |||
choro $alt2 $noun | |||
chovesse $alt2 | |||
chupeta $alt2 | |||
@@ -721,7 +730,6 @@ clamores $alt2 | |||
clero $alt | |||
coco $alt2 | |||
cofre $alt | |||
cogumelo $alt | |||
coice $alt2 | |||
colabore $alt | |||
colete $alt2 | |||
@@ -736,9 +744,11 @@ concerto $alt2 $noun | |||
concertos $alt2 | |||
concordo $alt | |||
conforto $alt $verb | |||
congelo $alt | |||
console $alt2 $noun | |||
consolo $alt2 $noun | |||
controle $alt2 $noun | |||
controles $alt2 | |||
controles $alt $verb | |||
controlo $alt2 $noun | |||
coreia $alt | |||
coreto $alt2 | |||
@@ -749,37 +759,39 @@ corto $alt | |||
corveta $alt2 | |||
corvos $alt | |||
coto $alt2 | |||
cotovelo $alt2 | |||
cratera $alt | |||
crede $alt2 | |||
crepe $alt | |||
decore $alt | |||
degelo $alt2 | |||
desapego $alt2 $noun | |||
descabelo $alt | |||
descordo $alt | |||
desemprego $alt2 | |||
desemprego $alt $verb | |||
desespero $alt2 $noun | |||
desfecho $alt2 | |||
desmantelo $alt $verb | |||
desmantelo $alt2 $noun | |||
desporto $alt2 | |||
desportos $alt | |||
desprezo $alt2 $noun | |||
desse $alt2 | |||
desse $alt $verb | |||
deste $alt2 | |||
deste $alt $verb | |||
desterro $alt2 | |||
destroem $alt | |||
destroem $alt | |||
deveras $alt | |||
dez $alt | |||
diarreia $alt | |||
diego $alt2 | |||
discordo $alt | |||
dobro $alt2 $noun | |||
doce $alt2 | |||
doutora $alt2 | |||
droga $alt | |||
duelo $alt | |||
dueto $alt2 | |||
elixir eliSir | |||
elo $alt | |||
emprego $alt2 $noun | |||
empregos $alt2 | |||
encosto $alt $verb | |||
@@ -787,73 +799,77 @@ endereço $alt $verb | |||
enforco $alt | |||
engordo $alt | |||
enredo $alt $verb | |||
enrosco $alt $verb | |||
enrosco $alt $verb | |||
enterro $alt2 $noun | |||
enumerem $alt | |||
envelope $alt | |||
envolto $alt2 | |||
enxaqueca $alt2 | |||
enxerto $alt2 $noun | |||
epopeia $alt | |||
eritreia $alt | |||
erro $alt2 $noun | |||
erros $alt2 | |||
erro $alt2 | |||
erro $alt $verb | |||
esboço $alt $verb | |||
escopeta $alt2 | |||
escova $alt2 $noun | |||
escovas $alt2 | |||
escovas $alt2 | |||
escovo $alt | |||
escroto $alt2 | |||
esforço $alt $verb | |||
esforços $alt | |||
esgoto $alt2 $noun | |||
esgotos $alt2 | |||
esgoto $alt2 | |||
esgoto $alt $verb | |||
esperma $alt | |||
espeto $alt2 $noun | |||
espiroqueta $alt2 | |||
espoleta $alt2 | |||
esposa $alt2 | |||
esqueleto $alt2 | |||
estilete $alt2 | |||
estilete $alt2 | |||
estrela $alt2 | |||
estrofe $alt | |||
estorno $alt $verb | |||
estorvo $alt $verb | |||
etiqueta $alt2 | |||
europa $alt | |||
europeia $alt | |||
europeia $alt | |||
exagero $alt $verb | |||
explore $alt | |||
faceta $alt2 | |||
fantoche $alt | |||
farelo $alt | |||
fantoche $alt | |||
farofa $alt | |||
farolete $alt2 | |||
febre $alt | |||
fera $alt | |||
feitora $alt2 | |||
ferozes $alt | |||
fezes $alt | |||
filete $alt2 | |||
?1 fixe fiSy | |||
foda $alt2 $verb | |||
folheto $alt2 | |||
folga $alt | |||
fogos $alt | |||
foguete $alt2 | |||
foice $alt2 | |||
folheto $alt2 | |||
fora $alt | |||
fora $alt2 $verb | |||
forca $alt2 | |||
força $alt2 $noun | |||
forças $alt2 | |||
forço $alt | |||
formos $alt2 | |||
forro $alt $verb | |||
frevo $alt2 | |||
fulgores $alt2 | |||
galera $alt | |||
galileia $alt | |||
gameta $alt2 | |||
garçonete $alt2 | |||
geleia $alt | |||
gelo $alt2 | |||
gelo $alt $verb | |||
genebra $alt | |||
germe $alt | |||
gesso $alt2 | |||
golpe $alt | |||
gonorreia $alt | |||
@@ -871,28 +887,30 @@ hemorroida $alt | |||
hoje $alt2 | |||
horrores $alt2 | |||
ideia $alt | |||
interesse $alt2 $noun | |||
imberbe $alt | |||
interesse $alt2 | |||
interesse $alt $verb | |||
jogo $alt2 $noun | |||
joguete $alt2 | |||
lagosta $alt2 | |||
lambreta $alt2 | |||
lanchonete $alt | |||
lebre $alt | |||
lembrete $alt2 | |||
lepra $alt | |||
leste $alt2 $verb | |||
lingueta $alt2 | |||
lopes $alt | |||
macete $alt2 | |||
maior $alt | |||
maleta $alt2 | |||
marcelo $alt | |||
marmelo $alt | |||
marionete $alt | |||
marreta $alt2 | |||
martelo $alt | |||
megera $alt | |||
melhor $alt | |||
menor $alt | |||
merda $alt | |||
megera $alt | |||
melo $alt | |||
mentora $alt2 | |||
merda $alt | |||
meta $alt $noun | |||
meteoro $alt | |||
metro $alt | |||
@@ -902,8 +920,11 @@ mexo m'eSU | |||
minueto $alt2 | |||
miolo $alt2 | |||
miolos $alt | |||
modelo $alt2 | |||
modelo $alt $verb | |||
moeda $alt | |||
mofo $alt $verb | |||
moem $alt | |||
mofo $alt $verb | |||
molho $alt2 $noun | |||
monera $alt | |||
morcego $alt2 | |||
@@ -922,12 +943,15 @@ namoro $alt2 $noun | |||
naquela $nounf | |||
naquele $alt2 $nounf | |||
nervo $alt2 | |||
nojo $alt2 | |||
novelo $alt2 | |||
novos $alt | |||
obstetra $alt | |||
odisseia $alt | |||
onu $1 | |||
olho $alt2 $noun | |||
onomatopeia $alt | |||
olho $alt2 $noun | |||
olhos $alt | |||
onomatopeia $alt | |||
opereta $alt2 | |||
ordens $alt | |||
osso $alt2 | |||
@@ -941,16 +965,14 @@ palacete $alt2 | |||
palheta $alt2 | |||
panfleto $alt2 | |||
pangeia $alt | |||
panqueca p,&~Nk'Ek& | |||
pantera $alt | |||
paralelo $alt | |||
parede $alt2 | |||
pastora $alt2 | |||
patinete $alt | |||
pedra $alt | |||
pela $alt $verb | |||
pelego $alt2 | |||
pela $alt $verb | |||
pelo $alt $verb | |||
pelo $alt2 | |||
pelo $alt $verb | |||
peso $alt $verb | |||
piloto $alt2 $noun | |||
pintora $alt2 | |||
@@ -969,7 +991,7 @@ pose $alt2 | |||
povos $alt | |||
poxa p'oS& | |||
primavera $alt | |||
prosopopeia $alt | |||
prosopopeia $alt | |||
quarteto $alt2 | |||
queda $alt | |||
quede $alt2 | |||
@@ -985,12 +1007,17 @@ reforço $alt $verb | |||
reforços $alt | |||
refresco $alt $verb | |||
reitora $alt2 | |||
rejo $alt | |||
relevo $alt2 $noun | |||
remorso $alt | |||
renovo $alt $verb | |||
retorno $alt $verb | |||
reuva x'EUv& | |||
rigores $alt2 | |||
rixa x'iS& | |||
rocha $alt | |||
rock $alt | |||
roem $alt | |||
rola $alt2 $noun | |||
rolo $alt2 $noun | |||
rota $alt2 | |||
@@ -1003,12 +1030,12 @@ seca $alt2 $noun | |||
secas $alt2 | |||
seco $alt2 | |||
seco $alt $verb | |||
selo $alt $verb | |||
selo $alt2 | |||
selo $alt $verb | |||
selvagem seUv'aZeIN | |||
sexteto $alt2 | |||
?1 senhora $alt2 | |||
senhores $alt2 | |||
singelo $alt | |||
sinopse $alt | |||
soco $alt2 | |||
soco $alt $verb | |||
@@ -1025,6 +1052,7 @@ suor swOr | |||
tapete $alt2 | |||
temores $alt2 | |||
tempero $alt2 $noun | |||
tenores $alt2 | |||
terrores $alt2 | |||
teta $alt2 | |||
tetra $alt | |||
@@ -1032,9 +1060,10 @@ tocha $alt | |||
toga $alt | |||
topo $alt $verb | |||
torno $alt $verb | |||
tornozelo $alt2 | |||
torre $alt2 $noun | |||
torres $alt2 | |||
torro $alt | |||
torro $alt | |||
tortos $alt | |||
traqueia $alt | |||
travesso $alt2 | |||
@@ -1047,17 +1076,14 @@ trombeta $alt2 | |||
tumores $alt2 | |||
valeta $alt2 | |||
vanessa $alt2 | |||
velo $alt | |||
velozes $alt | |||
verme $alt | |||
verbete $alt2 | |||
violeta $alt2 | |||
violoncelo $alt | |||
voga $alt | |||
vozes $alt | |||
xarope $alt | |||
xeque $alt | |||
zelo $alt $verb | |||
zero $alt | |||
zelo $alt2 $noun | |||
zorra $alt2 | |||
@@ -1067,7 +1093,8 @@ zorra $alt2 | |||
?1 back b'Ek | |||
?2 backup bEk'&p | |||
?2 backups bEk'&ps | |||
?1 blind bl'aind | |||
blind bl'aind | |||
book buk | |||
?1 braille b:r'aily | |||
?2 Braille bR'aili | |||
?1 cancel k'&ns'El | |||
@@ -1083,8 +1110,10 @@ zorra $alt2 | |||
?1 download d'a,wnl'oud | |||
?2 download daUNl'owd | |||
?3 download dau~Nl'owd | |||
drive dR'aivy | |||
driver dR'aiver | |||
drivers dR'aiveRs | |||
?1 end 'end | |||
?1 escape Sk'eIpy | |||
?2 esc 'Esk | |||
?3 esc 'EskI | |||
?1 explorer ,ekspl'O:*&r- | |||
@@ -1107,6 +1136,7 @@ zorra $alt2 | |||
?2 Intranet iNtRan'Et | |||
?1 kernel k'Ern,El | |||
?2 kernel k'Ern@l | |||
laptop lEptOp | |||
?1 line l'ain | |||
layout l'eI,aUt | |||
?2 logo l'OgU | |||
@@ -1123,6 +1153,7 @@ zorra $alt2 | |||
?1 ovo 'ovu | |||
?1 pause p'au:z | |||
page p'eIdZ | |||
pizza p'its& | |||
python p'aIT&~N | |||
?1 readme r'i:dmi: | |||
?1 sapi s,ap'i | |||
@@ -1137,14 +1168,13 @@ símbolo s'imbolU | |||
?2 software s'Oftwe@- | |||
?1 space sp'eIsy | |||
?1 sporting sp'Ort,ing | |||
?1 tab t'ab | |||
tab t'aby | |||
tablet t'ablet | |||
?1 telemóvel t,El,Em'OvEl | |||
?1 telemóveis t,El,Em'OveIs# | |||
?1 up &p | |||
?1 upload &pl'oud | |||
?2 web w'Eb | |||
?2 verbete verb'etSi | |||
?2 verbetes verb'etSis | |||
?1 yahoo 'i,ah'u | |||
?2 yahoo iah'u | |||
?1 yes j'Es | |||
@@ -1158,14 +1188,16 @@ louis _^_FR | |||
// foreign product names | |||
?1 access 'aks,Es | |||
?1 adobe &d'Oby | |||
apple 'Epow | |||
chrome kR'owmi | |||
debian d'Ebj&~N | |||
?1 excel ,Eks'El | |||
?1 express ,Ekspr'Es | |||
espeak isp'i:k | |||
?1 espeakedit isp'i:kEd,it | |||
facebook feisybuk | |||
?1 fedora _^_EN | |||
?1 firefox f'ai&rfOks | |||
?2 firefox f'ai@fOks | |||
firefox f'ai@fOks | |||
?1 front fr'ont | |||
?1 jaws dZ'au:z | |||
?1 linux l,in'uks | |||
@@ -1178,7 +1210,8 @@ louis _^_FR | |||
?2 microsoft m'aIkRows'Oft | |||
?1 movie m'uvi | |||
?1 nero n'Eru | |||
?1 office 'Of,is | |||
/1 office 'Of,is | |||
?2 office 'Ofsy | |||
openoffice 'opeIN|'Ofis | |||
?1 outlook 'autl'uk | |||
?2 Outlook ,aUtl'uk | |||
@@ -1200,6 +1233,7 @@ playstation _^_EN | |||
suse z'u:ts@ | |||
?1 start st'art // nero StartSmart | |||
?1 time t'aImy // nero show time | |||
twitter tw'iter | |||
ubuntu ub'untu | |||
?1 unix ,u:n'iks | |||
?2 unix j'uniks |
@@ -47,7 +47,6 @@ | |||
?1 a (lK ,A // Algarve, Almerinda, etc... | |||
?2 al (K aU | |||
a (lh+ a | |||
a (m &~ | |||
a (mAr_ & | |||
a (mA@ & | |||
@@ -100,6 +99,7 @@ | |||
ái (s ''aI | |||
á (iCK ''a | |||
áy ''aI | |||
ál (C ''aU | |||
áu ''aU | |||
áu (s ''aU | |||
?1 ál ''Al | |||
@@ -198,7 +198,7 @@ | |||
e (guem_ E | |||
e (lA_ E | |||
e (lo_ e | |||
e (lo_ E | |||
e (lAm_ E | |||
i) e (r_ E | |||
@@ -220,9 +220,15 @@ | |||
f) e (re_ E | |||
f) e (rem_ E | |||
e (que_ E | |||
e (quem_ E | |||
e (rgA_ E | |||
e (rgAm_ E | |||
e (rgue_ E | |||
e (rguem_ E | |||
e (rsA_ E | |||
e (rsAm_ E | |||
@@ -236,6 +242,8 @@ | |||
e (stAm_ E | |||
e (strA_ E | |||
e (rme_ E | |||
e (rnA_ E | |||
e (rnAm_ E | |||
@@ -265,7 +273,6 @@ | |||
e (xA_ E | |||
e (xAm_ E | |||
?2 _n) e (t E | |||
em (C eIm | |||
en (K eIN | |||
enh en^ | |||
@@ -359,6 +366,7 @@ | |||
_perd) e (L05_ e | |||
_quis) e (L05_ E | |||
_soub) e (L05_ E | |||
_talh) e (L05_ E | |||
_trem) e (L05_ e | |||
diss) e (L06_ E // contra- | |||
fend) e (L06_ e // de- o- | |||
@@ -452,25 +460,26 @@ respond) e (L07_ e // cor- | |||
_hosp) e (dL03_ E | |||
_gr) e (gL03_ e | |||
_gal) e (gL03_ e | |||
_pel) e (gL03_ e | |||
_n) e (grL03_ e | |||
_ch) e (guL02_ e | |||
estr) ei (L04_ EI | |||
_inv) e (jL04_ E | |||
tr) e (pL04_ E // es- | |||
_dec) e (pL04_ E | |||
_in) e (ptL03_ E | |||
_p) e (quL02_ E | |||
_s) e (quL02_ E | |||
ad) e (quL04_ E | |||
l) e (que_ E | |||
_imp) e (rL03_ E | |||
_sev) e (rL03_ E | |||
_reit) e (rL03_ E | |||
_sinc) e (rL03_ E | |||
_g) e (rL04_ E | |||
_z) e (rL04_ E | |||
qu) e (rL04_ E // re- | |||
_op) e (rL04_ E | |||
gen) e (rL04_ E // de- re- | |||
_alt) e (rL04_ E | |||
_enc) e (rL04_ E | |||
_sug) e (rL04_ E | |||
_sup) e (rL04_ E | |||
_tol) e (rL04_ E | |||
@@ -482,16 +491,16 @@ respond) e (L07_ e // cor- | |||
_recup) e (rL04_ E | |||
_refrig) e (rL04_ E | |||
_v) e (rbL03_ E | |||
_alic) e (rcL02_ E | |||
_p) e (rdL02_ E | |||
_l) e (rdL03_ E | |||
_h) e (rdL04_ E | |||
_) e (rgL03_ e | |||
_) e (rguL02_ E | |||
_alb) e (rguL02_ E | |||
_enx) e (rguL02_ E | |||
_bez) e (rrL03_ e | |||
_inv) e (rtL03_ e | |||
_f) e (rvL03_ e | |||
_alic) e (rçL03_ E | |||
_p) e (sL01_ E | |||
_l) e (sL03_ E | |||
_refr) e (scL01_ E | |||
_d) e (scL02_ E | |||
_cr) e (scL02_ E | |||
@@ -517,6 +526,7 @@ _obsol) e (tL03_ e | |||
_atr) e (vL03_ e | |||
_r) e (zL04_ E | |||
_pr) e (zL04_ E | |||
_rev) e (zL04_ E | |||
_despr) e (zL04_ E | |||
_embel) e (zL04_ E | |||
_menospr) e (zL04_ E | |||
@@ -534,6 +544,7 @@ _entorp) e (çL03_ e | |||
éi (s ''EI | |||
é (iCK ''E | |||
éy ''eI | |||
él (C ''EU | |||
éu ''EU | |||
éu (s ''EU | |||
é (uCK ''E | |||
@@ -573,11 +584,19 @@ _entorp) e (çL03_ e | |||
g (Y Z // ge gi | |||
gu (Y g | |||
a) gu (ent gw | |||
_ar) gu (i gw | |||
averi) gu (e gw | |||
enxa) gu (e gw | |||
i) gu (idade gw | |||
lin) gu (e 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 (in gw | |||
tin) gu (i gw | |||
?1 n) gu (A gw // eg: língua, etc. | |||
?1 man) gu (ei g // mangueira | |||
?1 gu (ém_ g // eg: alguém, ninguém, etc... | |||
@@ -610,6 +629,8 @@ _entorp) e (çL03_ e | |||
i (A_ 'i | |||
i (am_ 'i | |||
i (em_ 'i | |||
io (_ iU | |||
io (s_ iU | |||
i (oCK i | |||
@@ -647,6 +668,7 @@ _entorp) e (çL03_ e | |||
ím (C ''im | |||
ín (K ''iN | |||
ính ''in^ | |||
íl (C ''IU | |||
.group j | |||
@@ -673,9 +695,9 @@ _entorp) e (çL03_ e | |||
_) l (_ 'Ele | |||
l l | |||
l) l | |||
lh l^ | |||
lh lj | |||
A) lh lj | |||
?1 A) lh l^ | |||
A) lh l^ | |||
?4 A) lh l^ | |||
@@ -741,9 +763,15 @@ _entorp) e (çL03_ e | |||
o (lA_ O | |||
o (lAm_ O | |||
o (lhe_ O | |||
o (lhem_ O | |||
o (ltA_ O | |||
o (ltAm_ O | |||
o (lve_ O | |||
o (lvem_ O | |||
o (sA_ O | |||
o (so_N o // not for osos_ | |||
o (sAm_ O | |||
@@ -760,9 +788,7 @@ _entorp) e (çL03_ e | |||
?1 o (l_ 'O | |||
?2 ol (_ Ow | |||
o (lh o | |||
?2 _) o (lhA_ O | |||
?2 _) o (lhAm_ O | |||
om (_ oN | |||
o (ma_ o | |||
@@ -820,10 +846,12 @@ _entorp) e (çL03_ e | |||
//sort | |||
_f) o (L05_ o | |||
_pormen) o (L05_ O | |||
_f) o (L07_ o | |||
_engl) o (bL01_ O | |||
_s) o (bL02_ O | |||
_af) o (bL04_ O | |||
_esn) o (bL04_ O | |||
_engl) o (bL04_ O | |||
br) o (chL04_ O | |||
_deb) o (chL04_ O | |||
_m) o (fL01_ O | |||
@@ -838,19 +866,17 @@ _entorp) e (çL03_ e | |||
_ap) oi (L02_ OI | |||
_b) oi (L04_ OI | |||
_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 | |||
_ens) o (pL04_ O | |||
_s) o (prL04_ O | |||
_) o (ptL04_ O | |||
p) o (rL02_ o | |||
_dev) o (rL02_ O | |||
_defl) o (rL02_ O | |||
_impl) o (rL02_ O | |||
_inod) o (rL03_ O | |||
@@ -926,17 +952,21 @@ _remem) o (rL04_ O | |||
?1 _) qua kwa // quatro, etc. | |||
?1 _) que ke // quente, 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 | |||
_a) qu (idade_ kw | |||
_a) qu (ífero_ kw | |||
e) qu (estr kw | |||
ese) qu (ív kw | |||
_e) qu (in kw | |||
fre) qu (ent kw | |||
_ini) qu (idade_ kw | |||
li) qu (id kw | |||
lí) qu (id kw | |||
n) qu (en kw | |||
_) qu (inqu kw | |||
se) qu (en kw | |||
tran) qu (il kw | |||
?1 quec kes // esquece, etc. | |||
?1 queç kes // esqueça. | |||
?1 A) que (nA_ ke // pequeno, etc. | |||
?1 C) quê (_ ke // porquê, etc. | |||
@@ -994,6 +1024,14 @@ _remem) o (rL04_ O | |||
?1 A) s (G+ Z | |||
?1 A) s (_KS1 s# | |||
?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 | |||
@@ -1027,6 +1065,8 @@ _remem) o (rL04_ O | |||
u (iu w | |||
u (iCK u | |||
uy uI | |||
ul (K uw | |||
u (lh+ u | |||
um (_ u~N | |||
um (C u~m |
@@ -28,7 +28,7 @@ _10 d;'es;It; | |||
_11 Od;'innVttsVt; | |||
_12 dv;In'AttsVt; | |||
_13 tR;In'AttsVt; | |||
_14 ts;It'y@-*nVttsVt; | |||
_14 tS;It'y@-*nVttsVt; | |||
_15 p;Itn'AttsVt; | |||
_16 SE#stn'AttsVt; | |||
_17 s;Imn'AttsVt; | |||
@@ -45,15 +45,15 @@ _9X d;E2v;In'ostO | |||
_0C st'o | |||
_2C dv;'es;t;I | |||
_3C tr;'ista | |||
_4C ts;It'yr;E2sta | |||
_4C tS;It'yr;E2sta | |||
_5C p;,It;s'ot | |||
_6C S,E#s;t;s'ot | |||
_7C s;,Ims'ot | |||
_8C vOs;Ims'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 | |||
_0MA2 m;,IlI;'ona | |||
_0M2 m;,IlI;'onof |
@@ -0,0 +1,171 @@ | |||
// 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 | |||
@@ -0,0 +1,271 @@ | |||
// 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 | |||
@@ -36,7 +36,7 @@ | |||
ل la:m | |||
م mi:m | |||
ن nu:n | |||
و va:O | |||
_و va:O | |||
ہ He: | |||
ں g#Unna | |||
ﮨ c#o:ti:||He: | |||
@@ -45,10 +45,13 @@ | |||
ی c#o:t.i:||je: | |||
ے bar.i:||je: | |||
ئ h'amza | |||
ۂ He:h'amza | |||
_ؤ va:Oh'amza | |||
َ z@b@R | |||
ِ ze:R | |||
ُ pe:S | |||
ٰ ,alIfmaqs'u:R,a | |||
ّ t,aSd'i:d | |||
ً d'o:zab'aR | |||
@@ -166,8 +169,7 @@ _dpt _ISaRI'Ia_ | |||
// pronouns | |||
یہ jE $u | |||
کہ kE $u | |||
یہ j'e:H $u | |||
وہ wo: $u | |||
آپ $u | |||
تم tUm $u | |||
@@ -186,8 +188,8 @@ _dpt _ISaRI'Ia_ | |||
تجھے t'UJ#e: | |||
جن J'In | |||
جنھیں J,InH'e:n | |||
انھوں ,UnH'o:n | |||
انھیں ,InH'e:n | |||
انہوں ,UnH'o:n | |||
انہیں ,UnH'e:n | |||
// unstressed prepositions | |||
کا $u | |||
@@ -196,6 +198,7 @@ _dpt _ISaRI'Ia_ | |||
سے $u | |||
اور OR $u $brk | |||
کہ k'e:H $u | |||
// unstressed verbs | |||
ہے $u | |||
@@ -206,7 +209,6 @@ _dpt _ISaRI'Ia_ | |||
// Pronunciation exceptions | |||
پاکستان p'a:k'i:st'a:n | |||
سندھ s'Ind# | |||
کچھ k'Uc# | |||
لنکس l'Ink,s | |||
لفظ l'afz. | |||
@@ -218,7 +220,6 @@ _dpt _ISaRI'Ia_ | |||
مسلح m,Usal'aH | |||
متفق mUt'afIq | |||
سابق s'a:bIq | |||
برسر b,aRs'aR | |||
اعلان e:l'a:n | |||
سنئیے sUn'i:;e: | |||
کلنگ k'IlIn,g | |||
@@ -226,7 +227,6 @@ _dpt _ISaRI'Ia_ | |||
جسٹس J'ast.,Is | |||
شکایت S,Ika:j'at | |||
شکست SIk'ast | |||
منزل m'anz,Il | |||
شعر S'e:R | |||
فعل f'e:l | |||
خصوصی xUs.'u:s.i: | |||
@@ -256,7 +256,6 @@ _dpt _ISaRI'Ia_ | |||
باہر ba:H'aR | |||
دیا d'i:;a: | |||
انڈیا ,Ind.'i:;a: | |||
مظاہرین m,Uz.a:HIR'i:n | |||
فائرنگ f'a:jIR,Ing | |||
ڈائریکٹر d.,a:jIR,e:kt.'aR | |||
فرقہ f'IRqa | |||
@@ -303,7 +302,6 @@ _dpt _ISaRI'Ia_ | |||
بغیر baQ'e:R | |||
ممکن m'Umk,In | |||
ممکنہ m'Unk,In,a | |||
طرح taR'aH | |||
الیکشن ,Ile:kS'an | |||
ووٹنگ vo:t.'Ing | |||
شواہد Sav'a:HId | |||
@@ -348,11 +346,188 @@ _dpt _ISaRI'Ia_ | |||
تعین t'a:jUn | |||
باعث b'a:jIs | |||
کتب k'UtUb | |||
سلسلہ s'Ils,Il,a | |||
سلسلے s'Ils,Ile: | |||
بحث be:He:s | |||
قسمت q,Ism'at | |||
آور a:v'aR | |||
بظاہر baz.'a:HIR | |||
ظاہر z.'a:HIR | |||
حکم 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 |
@@ -16,7 +16,7 @@ | |||
٨ 8 | |||
٩ 9 | |||
ي ی | |||
یٰ ا | |||
// vowel signs, alif acts as consonants at start of word if these follow | |||
@@ -81,6 +81,26 @@ _) ای e: | |||
_) ایمان i:m'a:n | |||
_) اعت 'e:tI | |||
_) اضاف 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 آ | |||
آ a: | |||
@@ -91,7 +111,8 @@ _) ای e: | |||
عا a: | |||
_) ع a | |||
_) عیس 'i:s | |||
_) عید 'i:d | |||
عنوان Unv'a:n | |||
.group و | |||
و o: | |||
@@ -117,6 +138,9 @@ _) ای e: | |||
.group ے // yeh barree | |||
ے e: | |||
.group ۂ | |||
ۂ 'ae: | |||
// with hamza | |||
.group ئ | |||
ئ | |||
@@ -148,7 +172,14 @@ _) ای e: | |||
بھیک bh'i:k | |||
بھیگ bh'i:g | |||
بھول 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 پ | |||
پ pV | |||
@@ -160,7 +191,8 @@ _) ای e: | |||
_) پھر ph'IR | |||
پھول ph'u:l | |||
_) پہل (L01 p'e:Hl | |||
پہنچ paH'Unc | |||
پوچھ p'u:c# | |||
.group ت | |||
ت tV | |||
@@ -169,6 +201,9 @@ _) ای e: | |||
تھ (L01 t# | |||
تّ ttV | |||
تّ (L01 tt | |||
_) تمہ t'UmH | |||
تحقیق t,e:Hq'i:q | |||
_) ترجم t'aRJ,Um | |||
.group ٹ | |||
@@ -178,6 +213,8 @@ _) ای e: | |||
ٹھ (L01 t.# | |||
ٹّ t.t.V | |||
ٹّ (L01 t.t. | |||
ٹریفک t.R'e:fIk | |||
_) ٹکڑ t.'Ukr. | |||
.group ث | |||
@@ -196,7 +233,10 @@ _) ای e: | |||
جّ (L01 JJ | |||
_) جیت J'i:t | |||
_) جوا J'ava: | |||
جانب J'a:nIb | |||
_) جنس J'Ins | |||
جھوٹ J#'u:t. | |||
_) جمل J'Uml | |||
.group چ | |||
چ cV | |||
@@ -205,12 +245,19 @@ _) ای e: | |||
چھ (L01 c# | |||
چّ ccV | |||
چّ (L01 cc | |||
_) چکا c'Uka: | |||
.group ح | |||
ح HV | |||
ح (L01 H | |||
ح (_ H | |||
ح (_ 'aH | |||
L01) ح (_ H | |||
حکومت H,Uku:m'at | |||
حکمران H,UkmaR'a:n | |||
_) حوال Hav'a:l | |||
حّ HHV | |||
حّ (L01 HH | |||
@@ -218,7 +265,7 @@ _) ای e: | |||
.group خ | |||
خ xV | |||
خ (L01 x | |||
خت(_ xt | |||
@) خ (ت x | |||
خّ xxV | |||
خّ (L01 xx | |||
_) خوش x'US | |||
@@ -233,7 +280,12 @@ _) ای e: | |||
دھ (L01 d# | |||
دّ ddV | |||
دّ (L01 dd | |||
درخواست d,aRxv'a:st | |||
دیا(_ d'i:;a: | |||
درج d'aRJ | |||
دیوا d'i:va: | |||
_) دوسر d'u:sR | |||
دفاع d'Ifa: | |||
.group ڈ | |||
ڈ d.V | |||
@@ -242,6 +294,7 @@ _) ای e: | |||
ڈھ (L01 d.# | |||
ڈّ d.d.V | |||
ڈّ (L01 d.d. | |||
ڈھونڈ d.#'u:nd. | |||
.group ذ | |||
ذ DV | |||
@@ -254,6 +307,11 @@ _) ای e: | |||
ر (L01 R | |||
رّ RRV | |||
رّ (l01 RR | |||
@) ر (ٹ R | |||
@) ر (ڈ R | |||
_) رہت R'e:Ht | |||
@) ر (د R | |||
@) ر (چ R | |||
.group ڑ | |||
ڑ r.V | |||
@@ -268,6 +326,7 @@ _) ای e: | |||
ز (L01 z | |||
زّ zzV | |||
زّ (L01 zz | |||
_) زند z'Ind | |||
.group ژ | |||
ژ ZV | |||
@@ -284,18 +343,32 @@ _) ای e: | |||
_) سلجھ (L01 sUlJh | |||
_) سدھر sUdh'aR | |||
_) سدھر (L01 sUdhR | |||
_) سلسل s'Ils,Il | |||
_) ستار sIt'a:R | |||
@) س (ٹ s | |||
سندھ s'Ind# | |||
سیکھ s'i:k# | |||
@) س (ت s | |||
_) سپرد sUp'URd | |||
.group ش | |||
ش SV | |||
ش (L01 S | |||
شّ SSV | |||
شّ (L01 SS | |||
_) شعب S'Ob | |||
شاعر Sa:'a:IR | |||
_) شعرا S'ORa: | |||
_) شعل S'Ol | |||
@) ش (ت S | |||
_) شخص S'axs. | |||
.group ص | |||
ص s.V | |||
ص (L01 s. | |||
صّ ssV | |||
صّ (L01 ss | |||
صوب s.'u:b | |||
.group ض | |||
ض zV | |||
@@ -306,7 +379,7 @@ _) ای e: | |||
.group ط | |||
ط tV | |||
طھ t#V | |||
ط (L01 t | |||
ط (L01 t | |||
طھ (L01 t# | |||
طّ ttV | |||
طّ (L01 tt | |||
@@ -328,12 +401,14 @@ _) ای e: | |||
ف (L01 f | |||
فّ ffV | |||
فّ (L01 ff | |||
_) فکر f'IkR | |||
.group ق | |||
ق qV | |||
ق (L01 q | |||
قّ qqV | |||
قّ (L01 qq | |||
قاعد q'a:jd | |||
.group ک | |||
ک kV | |||
@@ -343,6 +418,9 @@ _) ای e: | |||
کّ kkV | |||
کّ (L01 kk | |||
_) کتن k'Itn | |||
کوئل k'o:Il | |||
کتاب kIt'a:b | |||
کوشش k'o:SIS | |||
.group گ | |||
گ gV | |||
@@ -354,6 +432,10 @@ _) ای e: | |||
_) گرفت g'IRIft | |||
_) گزر gUz'aR | |||
_) گزر (L01 gUzR | |||
گئے g'ae: | |||
گئی g'ai: | |||
گمشد g'UmS,Ud | |||
_) گھما g#'Uma: | |||
.group ل | |||
ل lV | |||
@@ -368,6 +450,29 @@ _) ای e: | |||
مّ mmV | |||
مّ (L01 mm | |||
_) مشکل 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 ن | |||
ن nV | |||
@@ -383,6 +488,14 @@ _) ای e: | |||
@) ن (چ n | |||
_) نکال nIk'a:l | |||
_) نگاہ nIg'a:H | |||
_) نمٹ nIm'at. | |||
_) نمٹ (L01 nImt. | |||
@) ن (پ n | |||
@) نچل n'Icl | |||
نشان nIS'a:n | |||
@) ن (ڈ n | |||
_) نظر naz.'aR | |||
_) نظام nIz.'a:m | |||
.group ں | |||
ں n // this should nasalize the vowel |
@@ -1,6 +1,6 @@ | |||
name english | |||
language en-uk 2 | |||
language en-gb 2 | |||
language en-uk 2 | |||
language en 2 | |||
gender male | |||
@@ -9,7 +9,7 @@ phonemes en-us | |||
dictrules 3 6 | |||
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 | |||
replace 03 I i |
@@ -1,4 +1,4 @@ | |||
name spanish-latin-american | |||
name spanish-latin-am | |||
language es-la | |||
language es-mx 6 | |||
language es 6 |
@@ -1,4 +0,0 @@ | |||
name akan-test | |||
language ak | |||
translator sw | |||
@@ -1,3 +0,0 @@ | |||
name azerbaijani-test | |||
language az | |||
@@ -1,3 +1,3 @@ | |||
name bengali | |||
name bengali-test | |||
language bn | |||
gender male |
@@ -1,3 +0,0 @@ | |||
name divehi-test | |||
language dv | |||
@@ -1,3 +0,0 @@ | |||
name haitian | |||
language ht | |||
@@ -1,3 +0,0 @@ | |||
name kazakh | |||
language kk | |||
@@ -1,4 +1,4 @@ | |||
name Korean | |||
name korean-test | |||
language ko | |||
gender male | |||
pitch 80 118 |
@@ -1,3 +0,0 @@ | |||
name maltese-test | |||
language mt | |||
@@ -1,3 +0,0 @@ | |||
name northern-sotho | |||
language nso | |||
translator sw |
@@ -1,5 +0,0 @@ | |||
name dari-test | |||
language prs | |||
translator fa | |||
stressrule 10 |
@@ -1,4 +0,0 @@ | |||
name kinyarwanda-test | |||
language rw | |||
gender male | |||
@@ -1,4 +1,4 @@ | |||
name sinhala | |||
name sinhala-test | |||
language si | |||
intonation 2 |
@@ -1,4 +1,4 @@ | |||
name telugu | |||
name telugu-test | |||
language te | |||
intonation 2 |
@@ -1,3 +0,0 @@ | |||
name setswana-test | |||
language tn | |||
@@ -1,5 +0,0 @@ | |||
name tatar-test | |||
language tt | |||
tunes s3 c3 q3 e3 | |||
@@ -1,4 +0,0 @@ | |||
name wolof-test | |||
language wo | |||
@@ -29,43 +29,43 @@ endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 225 | |||
FMT(vowel/aa_9) | |||
FMT(vowel/a_3) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 200 | |||
length 210 | |||
FMT(vowel/i_6) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 200 | |||
length 210 | |||
FMT(vowel/u) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 200 | |||
length 210 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #a endtype #a | |||
length 200 | |||
length 210 | |||
FMT(vowel/&_2) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 200 | |||
length 210 | |||
IF nextPhW(w) THEN | |||
length 160 | |||
length 170 | |||
ENDIF | |||
FMT(vowel/o) | |||
endphoneme |
@@ -1,13 +1,123 @@ | |||
// PB General rules for 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@-] | |||
// 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] | |||
// 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 @ | |||
vowel starttype #@ endtype #@ | |||
unstressed | |||
@@ -22,7 +132,18 @@ phoneme @- // very short schwa | |||
IF nextPhW(*) OR nextPhW(r) THEN | |||
ipa NULL // @-* is used to make 'r' | |||
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/@-) | |||
endphoneme | |||
@@ -45,38 +166,24 @@ endphoneme | |||
phoneme 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 | |||
// "gider", vrider" | |||
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 | |||
// "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 | |||
// 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 | |||
CALL LongVowelLength | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -84,7 +191,8 @@ endphoneme | |||
// sviret vs. svirret | |||
phoneme ?i | |||
vowel starttype #i endtype #i | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -99,27 +207,9 @@ endphoneme | |||
phoneme 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) | |||
endphoneme | |||
@@ -127,44 +217,30 @@ endphoneme | |||
// "skille" vs. "skele", "pille" vs. "pile" | |||
phoneme ?e | |||
vowel starttype #e endtype #e | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme 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 | |||
// "ære", "kærester", "ærefrygt" - longer E | |||
// "ære", "kærester", "ærefrygt" - vowel + vowel | |||
IF nextPhW(V) THEN | |||
length 180 | |||
ENDIF | |||
// Only the letter "æ" - long | |||
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | |||
length 160 | |||
length 225 | |||
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 | |||
CALL LongVowelLength | |||
// "værelse" [v'E3-Vls@_!] | |||
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 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
@@ -174,64 +250,47 @@ endphoneme | |||
phoneme ?E | |||
vowel starttype #e endtype #e | |||
ipa ε | |||
length 100 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme & | |||
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 | |||
// ThisPh + gooup #e or group #@ | |||
// ThisPh + V or @- | |||
// "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 | |||
CALL LongVowelLength | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
// PB Short & | |||
// Short & | |||
// e.g. the last a in "staldkarl" | |||
// "sale" vs. "sal" | |||
phoneme ?& | |||
ipa a | |||
vowel starttype #e endtype #e | |||
length 90 | |||
FMT(vowel/ee_2) | |||
length 140 | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
// PB added for the æ in "dræbt" | |||
// Added for the æ in "dræbt" | |||
phoneme &# | |||
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/&) | |||
endphoneme | |||
@@ -239,102 +298,63 @@ endphoneme | |||
// "revl" vs. "tremme" | |||
phoneme ?&# | |||
vowel starttype #e endtype #e | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/&) | |||
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 | |||
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] | |||
IF nextPhW(A) THEN | |||
length 150 | |||
length 225 | |||
ENDIF | |||
FMT(vowel/a_8) | |||
endphoneme | |||
// PB short A | |||
// "drab" vs. "drabelig" | |||
// "krabbe" vs. "drabelig" | |||
phoneme ?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) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 90 //150 | |||
length 140 | |||
// "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 | |||
CALL LongVowelLength | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
// PB glottal u | |||
// Short u | |||
// "tude" vs. "tuden" - [tuD3] [t?uD@n] | |||
phoneme ?u | |||
vowel starttype #u endtype #u | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
phoneme 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 | |||
// "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 | |||
CALL LongVowelLength | |||
FMT(vowel/o_2) | |||
endphoneme | |||
@@ -342,25 +362,27 @@ endphoneme | |||
// "patron" vs. "kone" | |||
phoneme ?o | |||
vowel starttype #o endtype #o | |||
length 95 | |||
length 140 | |||
FMT(vowel/o_2) | |||
endphoneme | |||
phoneme 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 | |||
// 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 | |||
// "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 | |||
CALL LongVowelLength | |||
FMT(vowel/o_5) | |||
endphoneme | |||
@@ -368,95 +390,60 @@ endphoneme | |||
// "toget" vs. "tåget" | |||
phoneme ?O | |||
vowel starttype #o endtype #o | |||
length 90 | |||
length 140 | |||
FMT(vowel/o_5) | |||
endphoneme | |||
phoneme V | |||
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) | |||
endphoneme | |||
// PB Short å | |||
// PB Short V | |||
// "forstår" vs. "kåre" | |||
phoneme ?V | |||
vowel starttype #@ endtype #@ | |||
length 90 | |||
length 140 | |||
FMT(vowel/V_4) | |||
endphoneme | |||
phoneme 0 | |||
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) | |||
endphoneme | |||
// Short 0 "sukker" | |||
phoneme ?0 | |||
vowel starttype #o endtype #o | |||
length 90 | |||
length 140 | |||
ipa ɔ | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
phoneme y | |||
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 | |||
// "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 | |||
// "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 | |||
// "tyve" | |||
IF nextPhW(?u) AND next2PhW(@-) THEN | |||
length 150 | |||
IF nextPhW(w) AND next2PhW(@-) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/y) | |||
endphoneme | |||
@@ -464,50 +451,32 @@ endphoneme | |||
// "kylling" vs. "kyle", "krybbe" vs. "krybe" | |||
phoneme ?y | |||
vowel starttype #i endtype #i | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/y) | |||
endphoneme | |||
phoneme Y | |||
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 | |||
FMT(vowel/yy) | |||
endphoneme | |||
phoneme W | |||
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 | |||
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 | |||
// "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 | |||
CALL LongVowelLength | |||
FMT(vowel/oe) | |||
endphoneme | |||
@@ -515,21 +484,18 @@ endphoneme | |||
// "prøv" vs. "prøve" | |||
phoneme ?W | |||
vowel starttype #@ endtype #@ | |||
length 95 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/oe) | |||
endphoneme | |||
// Added for the ø in "røv", "røg", "øje" instead of [V3] | |||
phoneme W# | |||
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 | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN | |||
length 150 | |||
length 225 | |||
ENDIF | |||
FMT(vowel/V) | |||
endphoneme | |||
@@ -538,7 +504,8 @@ endphoneme | |||
// "rømme" | |||
phoneme ?W# | |||
vowel starttype #@ endtype #@ | |||
length 90 | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/V) | |||
endphoneme | |||
@@ -547,7 +514,7 @@ phoneme aI | |||
length 300 | |||
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 150 | |||
length 225 | |||
ENDIF | |||
// "dreje" [dR'aI@-_!] | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
@@ -571,6 +538,10 @@ endphoneme | |||
phoneme l | |||
liquid | |||
lengthmod 7 | |||
// [ll] => [-l] - avoid double l | |||
IF nextPhW(l) THEN | |||
// ChangePhoneme(-) | |||
ENDIF | |||
ChangePhoneme(l/3) | |||
// CALL base/l | |||
endphoneme | |||
@@ -578,24 +549,6 @@ endphoneme | |||
phoneme l/3 // Replacement for [l/] | |||
liquid | |||
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_) | |||
endphoneme | |||
@@ -678,7 +631,10 @@ endphoneme | |||
phoneme j | |||
liquid palatal | |||
lengthmod 7 | |||
// no link with next vowel | |||
IF thisPh(isWordEnd) THEN | |||
IfNextVowelAppend(_!) | |||
ENDIF | |||
IF nextPhW(isVowel) THEN | |||
NextVowelStarts | |||
VowelStart(j/j@) |
@@ -194,6 +194,11 @@ phoneme aa // 'bath' etc. | |||
vowel starttype #a endtype #a | |||
ipa a | |||
length 185 | |||
IF MbrolaSynth THEN | |||
ChangePhoneme(A:) | |||
ENDIF | |||
IfNextVowelAppend(r-) | |||
FMT(vowel/a) | |||
endphoneme | |||
@@ -219,18 +224,30 @@ phoneme I2 | |||
vowel starttype #i endtype #i | |||
unstressed | |||
length 130 | |||
IF MbrolaSynth THEN | |||
ChangePhoneme(I) | |||
ENDIF | |||
IfNextVowelAppend(;) | |||
FMT(vowel/ii_4) | |||
endphoneme | |||
phoneme I# // used for [I] which may be [@] in some accents | |||
vowel starttype #i endtype #i | |||
unstressed | |||
length 130 | |||
IF MbrolaSynth THEN | |||
ChangePhoneme(I) | |||
ENDIF | |||
IfNextVowelAppend(;) | |||
ChangePhoneme(I2) | |||
endphoneme | |||
phoneme i // optional variant of [I] for end of words | |||
vowel starttype #i endtype #i | |||
ipa ɪ | |||
@@ -342,6 +359,11 @@ phoneme o@ | |||
vowel starttype #o endtype #o | |||
ipa ɔː | |||
length 250 | |||
IF MbrolaSynth THEN | |||
ChangePhoneme(O@) | |||
ENDIF | |||
IfNextVowelAppend(r-) | |||
FMT(vowel/oo_en) | |||
endphoneme | |||
@@ -418,6 +440,11 @@ endphoneme | |||
phoneme i@3 | |||
vowel starttype #i endtype #@ | |||
length 250 | |||
IF MbrolaSynth THEN | |||
ChangePhoneme(i@) | |||
ENDIF | |||
IfNextVowelAppend(r-) | |||
FMT(vdiph2/ii@) | |||
endphoneme |
@@ -69,7 +69,7 @@ endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 195 | |||
length 190 | |||
ChangeIfDiminished(I2) | |||
FMT(vwl_en_us/ee) | |||
endphoneme | |||
@@ -181,7 +181,7 @@ endphoneme | |||
phoneme O: | |||
vowel starttype #o endtype #o | |||
length 210 | |||
length 200 | |||
ChangeIfDiminished(@) | |||
IF nextPh(r) THEN | |||
FMT(vwl_en_us/oor) | |||
@@ -245,7 +245,7 @@ endphoneme | |||
phoneme aI | |||
vowel starttype #a endtype #i | |||
length 250 | |||
length 240 | |||
IF nextPh(#a) OR nextPh(#o) THEN | |||
AppendPhoneme(;) | |||
ENDIF | |||
@@ -255,14 +255,15 @@ endphoneme | |||
phoneme eI | |||
vowel starttype #e endtype #i | |||
length 230 | |||
FMT(vdiph/eei_5) | |||
length 220 | |||
FMT(vdiph2/ei_4) | |||
// FMT(vdiph/eei_5) | |||
endphoneme | |||
phoneme OI | |||
vowel starttype #o endtype #i | |||
length 285 | |||
length 280 | |||
FMT(vdiph/ooi_4) | |||
endphoneme | |||
@@ -321,7 +322,7 @@ endphoneme | |||
phoneme aI3 | |||
vowel starttype #a endtype #@ | |||
length 300 | |||
length 310 | |||
ipa aɪɚ | |||
IfNextVowelAppend(r-) | |||
FMT(vwl_en_us/ai3) |
@@ -439,7 +439,7 @@ endphoneme | |||
phoneme c# | |||
CALL base/tS; | |||
ipa ch | |||
ipa cU+02B0 | |||
endphoneme | |||
@@ -95,6 +95,26 @@ phoneme dZ; // voiced /ㅈ/ | |||
FMT(dzh/dzh) addWav(x/dz_pzd) | |||
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 | |||
vcd alv flp rhotic | |||
ipa ɾ |
@@ -25,7 +25,7 @@ phoneme a | |||
length 130 | |||
IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN | |||
FMT(vowel/a#_2) | |||
FMT(vowel/a#_4) | |||
ELSE | |||
ChangeIfUnstressed(@) | |||
@@ -144,3 +144,121 @@ phoneme d2 // 'rr' sounds like English 'd' | |||
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 | |||
@@ -48,21 +48,21 @@ endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 170 | |||
length 180 | |||
ChangeIfUnstressed(y) | |||
FMT(vowel/e_mid) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 160 | |||
length 180 | |||
ChangeIfUnstressed(y) | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #@ endtype #@ | |||
length 110 | |||
length 130 | |||
ipa ɨ | |||
FMT(vowel/i#_5) | |||
endphoneme | |||
@@ -70,7 +70,7 @@ endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 150 | |||
length 170 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i) | |||
endphoneme | |||
@@ -78,7 +78,7 @@ endphoneme | |||
phoneme i/ // changes to NULL before a vowel | |||
vowel starttype #i endtype #i | |||
length 100 | |||
length 130 | |||
ipa ɨ | |||
IF nextPh(isVowel) THEN | |||
ChangePhoneme(NULL) | |||
@@ -90,7 +90,7 @@ endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
// ChangeIfNotStressed(o) | |||
FMT(vowel/0_2) | |||
endphoneme | |||
@@ -98,7 +98,7 @@ endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
ChangeIfNotStressed(u) | |||
FMT(vowel/o) | |||
endphoneme | |||
@@ -106,13 +106,13 @@ endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 160 | |||
length 180 | |||
FMT(vowel/u_6) | |||
endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 110 | |||
length 130 | |||
IF nextPh(isVowel) THEN | |||
ChangePhoneme(w) | |||
ENDIF | |||
@@ -122,7 +122,7 @@ endphoneme | |||
phoneme EU | |||
vowel starttype #e endtype #u | |||
length 220 | |||
length 230 | |||
FMT(vdiph/eeu_2) | |||
endphoneme | |||
@@ -159,3 +159,7 @@ phoneme # // a NULL phoneme for 'virama' | |||
ChangePhoneme(NULL) | |||
endphoneme | |||
phoneme z. | |||
CALL base/z. | |||
ipa U+027B | |||
endphoneme |
@@ -1745,6 +1745,9 @@ include ph_kannada | |||
phonemetable ml hi | |||
include ph_malayalam | |||
phonemetable te hi | |||
include ph_telugu | |||
phonemetable hu base | |||
@@ -1875,17 +1878,20 @@ include ph_greenlandic | |||
phonemetable am base | |||
include ph_amhari | |||
phonemetable si hi | |||
include ph_sinhala | |||
//************************************************************************************** | |||
// The following lines are experimental, for future additions. | |||
// These langauges are not in a usable state. | |||
// 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 | |||
//include ph_marathi | |||
@@ -1899,9 +1905,6 @@ include ph_kinyarwanda | |||
//phonemetable prs base | |||
//include ph_dari | |||
phonemetable sl sk | |||
include ph_slovenian | |||
//phonemetable gd base | |||
//include ph_s_gaelic | |||
@@ -1923,13 +1926,9 @@ include ph_slovenian | |||
//phonemetable dv hi | |||
//include ph_divehi | |||
//phonemetable te hi | |||
//include ph_telugu | |||
//phonemetable tn base | |||
//include ph_setswana | |||
//phonemetable mt base | |||
//include ph_maltese | |||
@@ -2,8 +2,8 @@ | |||
# 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 $@ | |||
ObjAsmflags = -throwback -NoCache -depend !Depend | |||
CMHGflags = | |||
@@ -61,3 +61,4 @@ Squeezeflags = -o $@ | |||
objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | |||
# Dynamic dependencies: | |||
@@ -1,6 +1,6 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||
* Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||
* email: [email protected] * | |||
* * | |||
* This program is free software; you can redistribute it and/or modify * | |||
@@ -26,6 +26,7 @@ | |||
#include <ctype.h> | |||
#include <locale.h> | |||
#include "kernel.h" | |||
#include <math.h> | |||
#include "speech.h" | |||
#include "speak_lib.h" | |||
@@ -221,6 +222,7 @@ void ReadVoiceNames2(char *directory) | |||
voice_variant_names[n_voice_variant_files++] = p; | |||
} | |||
else | |||
if(strcmp(p, "default") != 0) | |||
{ | |||
if(n_voice_files >= (N_VOICE_NAMES-1)) | |||
continue; | |||
@@ -233,11 +235,17 @@ void ReadVoiceNames2(char *directory) | |||
void ReadVoiceNames() | |||
{//=================== | |||
char directory[sizeof(path_home)+10]; | |||
char directory[sizeof(path_home)+20]; | |||
n_voice_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); | |||
ReadVoiceNames2(directory); | |||
@@ -400,11 +408,27 @@ void FillSoundBuf(int size) | |||
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,®s,®s); // OS_ReadVarVal | |||
buf[regs.r[2]] = 0; | |||
sprintf(path_home,"%s.espeak-data",buf); | |||
if(GetFileLength(path_home) != -2) | |||
{ | |||
// 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) | |||
{ | |||
@@ -414,7 +438,7 @@ int initialise(void) | |||
} | |||
WavegenInit(22050,0); | |||
LoadPhData(); | |||
LoadPhData(NULL); | |||
SetVoiceStack(NULL, ""); | |||
SynthesizeInit(); | |||
return(0); | |||
@@ -453,7 +477,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
static_length = 0; | |||
else | |||
{ | |||
strcat(&static_buf[static_length]," : "); | |||
strcat(&static_buf[static_length]," \n "); | |||
static_length+=3; | |||
} | |||
@@ -578,13 +602,14 @@ void set_say_options(int reg2, int reg3) | |||
void jsd_swi_functions(int *r) | |||
/****************************/ | |||
{ | |||
int use_ipa; | |||
espeak_VOICE voice_select; | |||
switch(r[0]) | |||
{ | |||
case 0: /* major version */ | |||
r[0] = 4; | |||
r[1] = 331; | |||
r[1] = 347; | |||
break; | |||
case 1: /* register user */ | |||
@@ -594,7 +619,13 @@ void jsd_swi_functions(int *r) | |||
break; | |||
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; | |||
case 4: | |||
@@ -642,6 +673,7 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
/*********************************************************/ | |||
{ | |||
int value; | |||
int value2; | |||
int q_length; | |||
value = r[0]; | |||
@@ -650,21 +682,23 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
case 0: // ready ? | |||
// 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[3] = 0; /* for future expansion */ | |||
r[4] = 0; | |||
r[5] = 0; | |||
if(wcmdq_head == wcmdq_tail) | |||
if(WcmdqUsed() < 5) | |||
{ | |||
r[0] = -1; /* ready, or nearly */ | |||
} | |||
else | |||
{ | |||
r[0] = 0; | |||
} | |||
break; | |||
case 1: /* restore old sound channel. DO NOTHING */ | |||
@@ -692,19 +726,32 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
break; | |||
case 7: /* pitch */ | |||
// not implemented | |||
value = (value * 50)/128; | |||
SetParameter(espeakPITCH, value, 0); | |||
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; | |||
case 9: /* word_gap */ | |||
if(value >= 128) | |||
value = value - 128; | |||
if(value > 1) | |||
value = (value-1) * 5; | |||
SetParameter(espeakWORDGAP,value,0); | |||
break; | |||
case 10: /* pitch_range */ | |||
// not implemented | |||
value = (value * 50)/128; | |||
SetParameter(espeakRANGE, value, 0); | |||
break; | |||
case 12: /* reset */ | |||
@@ -712,7 +759,22 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
break; | |||
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); | |||
break; | |||
} | |||
@@ -835,6 +897,13 @@ int param_number(char **argp) | |||
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) | |||
{//========================================== | |||
@@ -854,6 +923,7 @@ void command_line(char *arg_string, int wait) | |||
char command[80]; | |||
char *p; | |||
int ix; | |||
int quiet; | |||
voicename[0] = 0; | |||
wavefile[0] = 0; | |||
@@ -861,7 +931,7 @@ void command_line(char *arg_string, int wait) | |||
option_linelength = 0; | |||
option_phonemes = 0; | |||
option_waveout = 0; | |||
option_quiet = 0; | |||
quiet = 0; | |||
option_multibyte = 0; // auto | |||
option_capitals = 0; | |||
option_punctuation = 0; | |||
@@ -887,7 +957,8 @@ void command_line(char *arg_string, int wait) | |||
break; | |||
case 'h': | |||
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | |||
PrintVersion(); | |||
printf("\n%s",help_text); | |||
return; | |||
case 'k': | |||
@@ -912,7 +983,7 @@ void command_line(char *arg_string, int wait) | |||
break; | |||
case 'q': | |||
option_quiet = 1; | |||
quiet = 1; | |||
break; | |||
case 'f': | |||
@@ -963,7 +1034,8 @@ void command_line(char *arg_string, int wait) | |||
else | |||
if(strcmp(command,"help")==0) | |||
{ | |||
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | |||
PrintVersion(); | |||
printf("\n%s",help_text); | |||
return; | |||
} | |||
else | |||
@@ -980,6 +1052,17 @@ void command_line(char *arg_string, int wait) | |||
SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
} | |||
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"); | |||
} | |||
@@ -997,22 +1080,25 @@ void command_line(char *arg_string, int wait) | |||
} | |||
} | |||
if((option_phonemes > 1) && !option_waveout) | |||
quiet = 1; // can't call sprintf() during callback | |||
SetVoiceByName(voicename); | |||
if((filename[0]==0) && (p[0]=='\r')) | |||
{ | |||
// nothing to speak | |||
if(option_quiet) | |||
if(quiet) | |||
{ | |||
SpeakNextClause(NULL,NULL,2); // stop speaking | |||
more_text = 0; | |||
} | |||
} | |||
if(option_waveout || option_quiet) | |||
if(option_waveout || quiet) | |||
{ | |||
// write speech to a WAV file | |||
if(option_quiet) | |||
if(quiet) | |||
{ | |||
OpenWaveFile(NULL,samplerate); | |||
option_waveout = 2; |
@@ -2,7 +2,7 @@ | |||
[Setup] | |||
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). | |||
WindowVisible=yes | |||
@@ -146,7 +146,7 @@ begin | |||
$0e: Result := 'hu'; | |||
$0f: Result := 'is'; | |||
$10: Result := 'it'; | |||
//$12: Result := 'ko'; | |||
$12: Result := 'ko'; | |||
$13: Result := 'nl'; | |||
$14: Result := 'no'; | |||
$15: Result := 'pl'; | |||
@@ -158,7 +158,7 @@ begin | |||
$1c: Result := 'sq'; | |||
$1d: Result := 'sv'; | |||
$1f: Result := 'tr'; | |||
//$20: Result := 'ur'; | |||
$20: Result := 'ur'; | |||
$21: Result := 'id'; | |||
$25: Result := 'et'; | |||
$26: Result := 'lv'; | |||
@@ -174,6 +174,7 @@ begin | |||
$39: Result := 'hi'; | |||
//$3a: Result := 'mt'; | |||
$3c: Result := 'ga'; | |||
$3e: Result := 'ms'; | |||
//$3f: Result := 'kk'; | |||
$41: Result := 'sw'; | |||
//$44: Result := 'tt'; | |||
@@ -263,6 +264,7 @@ begin | |||
'mk': value := $42f; | |||
'ml': value := $44c; | |||
'mn': value := $450; | |||
'ms': value := $43e; | |||
'mt': value := $43a; | |||
'my': value := $455; | |||
'ne': value := $461; |
@@ -1,58 +1,64 @@ | |||
[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" | |||
@@ -2866,8 +2866,8 @@ int CompilePhoneme(int compile_phoneme) | |||
break; | |||
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(); | |||
break; | |||
@@ -3059,6 +3059,7 @@ int CompilePhoneme(int compile_phoneme) | |||
case kRETURN: | |||
*prog_out++ = i_RETURN; | |||
DecThenCount(); | |||
break; | |||
case kINCLUDE: |
@@ -3473,16 +3473,34 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f | |||
} // 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 found; | |||
unsigned int flags[2]; | |||
int say_as; | |||
char *word1 = (char *)word; | |||
char text[80]; | |||
flags[0] = 0; | |||
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) | |||
{//============================================== | |||
char buf[100]; |
@@ -655,7 +655,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
current_alphabet = alphabet; | |||
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 | |||
} | |||
@@ -703,11 +703,38 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
else | |||
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) | |||
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) | |||
{ |
@@ -125,6 +125,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
int delete_count; | |||
int word_start; | |||
int inserted; | |||
int deleted; | |||
PHONEME_DATA phdata; | |||
int n_ph_list3; | |||
@@ -343,6 +344,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
plist3 = &ph_list3[j]; | |||
inserted = 0; | |||
deleted = 0; | |||
if(insert_ph != 0) | |||
{ | |||
// we have a (linking) phoneme which we need to insert here | |||
@@ -431,23 +433,27 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
plist3->phcode = alternative; | |||
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 | |||
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; | |||
@@ -552,7 +558,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
} | |||
} | |||
if(plist3 != plist3_inserted) | |||
if((plist3 != plist3_inserted) && (ix > 0)) | |||
{ | |||
if((x = (tr->langopts.word_gap & 0x7)) != 0) | |||
{ | |||
@@ -585,51 +591,54 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
// 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 | |||
@@ -90,6 +90,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
0x055e, // Armenian question | |||
0x055b, // Armenian emphasis mark | |||
0x060c, // Arabic , | |||
0x061b, // Arabic ; | |||
0x061f, // Arabic ? | |||
0x06d4, // Arabic . | |||
@@ -137,6 +138,7 @@ static const unsigned int punct_attributes [] = { 0, | |||
CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question | |||
CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark | |||
CLAUSE_COMMA, // Arabic , | |||
CLAUSE_SEMICOLON, // Arabic ; | |||
CLAUSE_QUESTION, // Arabic question mark | |||
CLAUSE_PERIOD, // Arabic full stop |
@@ -575,6 +575,7 @@ void CalcLengths(Translator *tr) | |||
int last_pitch = 0; | |||
int pitch_start; | |||
int length_mod; | |||
int next2type; | |||
int len; | |||
int env2; | |||
int end_of_clause; | |||
@@ -689,8 +690,19 @@ void CalcLengths(Translator *tr) | |||
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 | |||
if(p->newword==0) | |||
{ | |||
@@ -827,9 +839,17 @@ if(stress <= 1) | |||
next3 = &phoneme_list[ix+4]; | |||
} | |||
next2type = next2->ph->length_mod; | |||
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)) | |||
{ | |||
@@ -841,7 +861,7 @@ if(stress <= 1) | |||
} | |||
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)) | |||
length_mod -= 15; |
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; | |||
@@ -1032,6 +1032,16 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ | |||
phdata->pd_param[i_APPEND_PHONEME] = data; | |||
} | |||
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) | |||
{ | |||
// followed by utf-8 characters, 2 per instn word |
@@ -1426,7 +1426,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
EndAmplitude(); | |||
if(p->prepause > 0) | |||
if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE)) | |||
DoPause(p->prepause,1); | |||
done_phoneme_marker = 0; | |||
@@ -1455,6 +1455,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
case phSTOP: | |||
released = 0; | |||
ph = p->ph; | |||
if(next->type==phVOWEL) | |||
{ | |||
released = 1; | |||
@@ -1468,6 +1469,23 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
if(released == 0) | |||
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); | |||
phdata.pd_control |= pd_DONTLENGTHEN; | |||
DoSample3(&phdata, 0, 0); |
@@ -79,7 +79,7 @@ ALPHABET alphabets [] = { | |||
{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, | |||
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, | |||
{"_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}, | |||
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, | |||
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, | |||
@@ -93,12 +93,12 @@ ALPHABET alphabets [] = { | |||
{"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, | |||
{"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, | |||
{"_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}, | |||
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, | |||
{"_ja", 0x3040, 0x3040,0x30ff, 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} | |||
}; | |||
@@ -518,6 +518,7 @@ Translator *SelectTranslator(const char *name) | |||
{ | |||
SetCyrillicLetters(tr); | |||
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_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) | |||
tr->langopts.param[LOPT_REDUCE] = 2; | |||
@@ -654,10 +655,10 @@ Translator *SelectTranslator(const char *name) | |||
// 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_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 wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ | |||
static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ _ | |||
SetupTranslator(tr,stress_lengths_el,stress_amps_el); | |||
@@ -670,7 +671,7 @@ Translator *SelectTranslator(const char *name) | |||
SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels); | |||
SetLetterBits(tr,LETTERGP_B,el_voiceless); | |||
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.stress_rule = STRESSPOSN_2R; | |||
@@ -912,6 +913,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); | |||
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.replace_chars = replace_cyrillic_latin; | |||
tr->langopts.our_alphabet = OFFSET_CYRILLIC; // don't say "cyrillic" before letter names | |||
SetLetterVowel(tr,'y'); | |||
SetLetterVowel(tr,'r'); | |||
@@ -1113,6 +1115,7 @@ SetLengthMods(tr,3); // all equal | |||
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->langopts.our_alphabet = 0xa700; | |||
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); | |||
SetLetterBits(tr,LETTERGP_Y,ko_ivowels); | |||
@@ -1194,6 +1197,7 @@ SetLengthMods(tr,3); // all equal | |||
SetupTranslator(tr,stress_lengths_mk,stress_amps_mk); | |||
tr->charset_a0 = charsets[5]; // ISO-8859-5 | |||
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.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; | |||
@@ -1608,6 +1612,7 @@ SetLengthMods(tr,3); // all equal | |||
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.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 | |||
if(name2 == L('z','h')) | |||
{ |
@@ -1736,6 +1736,7 @@ int SetTranslator2(const char *new_language) | |||
translator2->phoneme_tab_ix = new_phoneme_tab; | |||
} | |||
} | |||
translator2->phonemes_repeat[0] = 0; | |||
return(new_phoneme_tab); | |||
} // end of SetTranslator2 | |||
@@ -2444,6 +2445,35 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
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) | |||
{ | |||
case L('a','f'): | |||
@@ -2471,36 +2501,6 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
} | |||
} | |||
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)); | |||
} | |||
@@ -2955,7 +2955,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
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 | |||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
@@ -3473,7 +3473,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
prev_clause_pause = clause_pause; | |||
*tone_out = tone; | |||
if(tone_out != NULL) | |||
*tone_out = tone; | |||
new_sentence = 0; | |||
if(terminator & CLAUSE_BIT_SENTENCE) |
@@ -546,6 +546,7 @@ typedef struct { | |||
int listx; // compile *_listx after *list | |||
const unsigned int *replace_chars; // characters to be substitutes | |||
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_lang; // language for the alt_alphabet | |||
int max_lengthmod; |
@@ -602,7 +602,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
// which directory to look for a named voice. List of voice names, must end in a space. | |||
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 = | |||
"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 "; | |||
@@ -1894,12 +1894,24 @@ void FreeVoiceList() | |||
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 j; | |||
espeak_VOICE *v; | |||
static espeak_VOICE **voices = NULL; | |||
char path_voices[sizeof(path_home)+12]; | |||
// free previous voice list data | |||
FreeVoiceList(); | |||
@@ -1938,7 +1950,6 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
} | |||
return((const espeak_VOICE **)voices); | |||
#endif | |||
return((const espeak_VOICE **)voices_list); | |||
} // end of espeak_ListVoices | |||