Merge branch 'master' into android

Conflicts:
	platforms/windows/make_espeakedit.iss
This commit is contained in:
Reece H. Dunn
2013-04-03 09:23:50 +01:00
79 changed files with 3071 additions and 1535 deletions
+7
View File
@@ -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
+6 -1
View File
@@ -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
+113 -56
View File
@@ -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
_29 unOtr'iS
_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
_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 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
_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.
// 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
_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 S'OttOr
_7X S'OttOr
_79 'unOaSi
_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 'aSi
_8X 'aSi
_89 'unOnObbOj
_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 n'ObbOj
_9X n'ObbOj
_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
+10 -2
View File
@@ -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
+106 -99
View File
@@ -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&lt*'Esenstyv@n@ // 52.
_6Xo tr'Esenstyv@n@ // 62.
_7Xo h&lfj'&rsenstyv@n@ // 72.
_8Xo firsenstyv@n@ // 82.
_9Xo h&lf'Emsenstyv@n@ // 95.
_2Xo t'yv@n@- // 25.
_3Xo tr'&#ft@- //36.
_4Xo fWV'tyv@-n@- // 42.
_5Xo h&lt*'Esenstyv@-n@- // 52.
_6Xo tr'Esenstyv@-n@- // 62.
_7Xo h&lfj'&rsenstyv@-n@- // 72.
_8Xo firsenstyv@-n@- // 82.
_9Xo h&lf'Emsenstyv@-n@- // 95.
// function words
@@ -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
+748 -528
View File
File diff suppressed because it is too large Load Diff
+60 -24
View File
@@ -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@
+99 -75
View File
@@ -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
+4
View File
@@ -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
+49 -1
View File
@@ -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
+6 -1
View File
@@ -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
+15 -4
View File
@@ -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
+2 -7
View File
@@ -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
+2 -1
View File
@@ -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
+3 -3
View File
@@ -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
+3 -3
View File
@@ -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
-7
View File
@@ -295,12 +295,5 @@
.group 0xe0a4 // devanagari
0xe0a4 _^_HI // switch to hindi voice
.group 0xe0a5 // devanagari
0xe0a5 _^_HI
.group
$ do:l.ar
+8 -4
View File
@@ -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
+12 -5
View File
@@ -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
+106 -72
View File
@@ -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
+67 -27
View File
@@ -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
+5 -5
View File
@@ -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
+171
View File
@@ -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
+271
View File
@@ -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
+187 -12
View File
@@ -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
+122 -9
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
name english
language en-uk 2
language en-gb 2
language en-uk 2
language en 2
gender male
+1 -1
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
name spanish-latin-american
name spanish-latin-am
language es-la
language es-mx 6
language es 6
-4
View File
@@ -1,4 +0,0 @@
name akan-test
language ak
translator sw
-3
View File
@@ -1,3 +0,0 @@
name azerbaijani-test
language az
+1 -1
View File
@@ -1,3 +1,3 @@
name bengali
name bengali-test
language bn
gender male
-3
View File
@@ -1,3 +0,0 @@
name divehi-test
language dv
-3
View File
@@ -1,3 +0,0 @@
name haitian
language ht
-3
View File
@@ -1,3 +0,0 @@
name kazakh
language kk
+1 -1
View File
@@ -1,4 +1,4 @@
name Korean
name korean-test
language ko
gender male
pitch 80 118
-3
View File
@@ -1,3 +0,0 @@
name maltese-test
language mt
-3
View File
@@ -1,3 +0,0 @@
name northern-sotho
language nso
translator sw
-5
View File
@@ -1,5 +0,0 @@
name dari-test
language prs
translator fa
stressrule 10
-4
View File
@@ -1,4 +0,0 @@
name kinyarwanda-test
language rw
gender male
+1 -1
View File
@@ -1,4 +1,4 @@
name sinhala
name sinhala-test
language si
intonation 2
+1 -1
View File
@@ -1,4 +1,4 @@
name telugu
name telugu-test
language te
intonation 2
-3
View File
@@ -1,3 +0,0 @@
name setswana-test
language tn
-5
View File
@@ -1,5 +0,0 @@
name tatar-test
language tt
tunes s3 c3 q3 e3
-4
View File
@@ -1,4 +0,0 @@
name wolof-test
language wo
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+7 -7
View File
@@ -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
+263 -307
View File
@@ -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
length 140
ENDIF
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
length 140
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
ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
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
length 140
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 160
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
// "ære", "kærester", "ærefrygt" - vowel + vowel
IF nextPhW(V) THEN
length 180
length 225
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 160
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
// "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
// 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
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
length 140
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
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@)
+27
View File
@@ -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
+8 -7
View File
@@ -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)
+1 -1
View File
@@ -439,7 +439,7 @@ endphoneme
phoneme c#
CALL base/tS;
ipa ch
ipa cU+02B0
endphoneme
+20
View File
@@ -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 ɾ
+119 -1
View File
@@ -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
+10 -10
View File
@@ -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
+4
View File
@@ -159,3 +159,7 @@ phoneme # // a NULL phoneme for 'virama'
ChangePhoneme(NULL)
endphoneme
phoneme z.
CALL base/z.
ipa U+027B
endphoneme
+11 -12
View File
@@ -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
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3 -2
View File
@@ -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:
+111 -25
View File
@@ -1,6 +1,6 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: jonsd@users.sourceforge.net *
* *
* 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,&regs,&regs); // 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;
+5 -3
View File
@@ -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;
+64 -58
View File
@@ -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"
+3 -2
View File
@@ -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:
+20 -2
View File
@@ -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];
+30 -3
View File
@@ -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)
{
+59 -50
View File
@@ -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(start_sentence)
if(plist3->sourceix != 0)
{
phlist[ix].newword = 5; // start of sentence + start of word
start_sentence = 0;
phlist[ix].sourceix = plist3->sourceix;
phlist[ix].newword = 1; // this phoneme is the start of a word
if(start_sentence)
{
phlist[ix].newword = 5; // start of sentence + start of word
start_sentence = 0;
}
}
else
{
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
+2
View File
@@ -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
+24 -4
View File
@@ -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;
+11 -1
View File
@@ -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
+19 -1
View File
@@ -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);
+12 -7
View File
@@ -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'))
{
+33 -32
View File
@@ -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)
+1
View File
@@ -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;
+15 -4
View File
@@ -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