@@ -143,6 +143,7 @@ dictionaries: src/espeak \ | |||
espeak-data/af_dict \ | |||
espeak-data/am_dict \ | |||
espeak-data/an_dict \ | |||
espeak-data/az_dict \ | |||
espeak-data/bg_dict \ | |||
espeak-data/bn_dict \ | |||
espeak-data/ca_dict \ | |||
@@ -220,6 +221,12 @@ dictsource/an_extra: | |||
espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra | |||
cd dictsource && ../src/espeak --compile=an && cd .. | |||
az: espeak-data/az_dict | |||
dictsource/az_extra: | |||
touch dictsource/az_extra | |||
espeak-data/az_dict: src/espeak espeak-data/phontab dictsource/az_list dictsource/az_rules dictsource/az_extra | |||
cd dictsource && ../src/espeak --compile=az && cd .. | |||
bg: espeak-data/bg_dict | |||
dictsource/bg_extra: | |||
touch dictsource/bg_extra |
@@ -57,6 +57,7 @@ _y je | |||
y je $atend | |||
ch tSe | |||
ll 'El^e | |||
ny n^e | |||
á 'a||akTEntw'aDa | |||
é 'e||akTEntw'aDa | |||
í 'i||akTEntw'aDa | |||
@@ -118,9 +119,10 @@ _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 | |||
(1 ºc) un||gr'aU||T'e | |||
ºc gr'aUs||Tentigr'aUs | |||
ºf gr'aUs||f'arEnxeI | |||
ºk gr'aUs||k'elBin | |||
_1ox prim'Er | |||
_2ox seQ'und | |||
@@ -183,6 +185,7 @@ $ d'olar | |||
\ kontraBaRRa | |||
| b'aRRaBertik'al | |||
° graUs | |||
(1 °) un||gr'aU | |||
_- gj'on | |||
! TaRR'ar||eksklamaTj'on | |||
@@ -471,40 +474,56 @@ witsa $abbrev | |||
// exceptions | |||
barça b'arsa | |||
holio x'olio | |||
jazz dZ'as | |||
banjo Banjo | |||
barça barsa | |||
desenyermar DesenjErmar | |||
halar xalar | |||
halma xalma | |||
harcia xarTja | |||
hibo xiBo | |||
hoder xoDer | |||
holgorio xolg'orio | |||
holio x'olio | |||
hopar xopar | |||
huerga xuerga | |||
huerza xuerTa | |||
jacuzzi jakusi | |||
jazz jas | |||
jet jet | |||
judo juDo | |||
// Foreign words | |||
android andr'oId | |||
apple 'apEl | |||
at 'at | |||
chat tS'at | |||
chrome kr'ome | |||
espeak isp'ik | |||
(e speak) isp'ik | |||
facebook f'eIsbuk | |||
firefox f'aIrfoks | |||
google g'ugEl | |||
hotmail xotm'eIl | |||
android androId | |||
apple 'apEl | |||
at at | |||
chat tSat | |||
chrome krome | |||
espeak ispik | |||
(e speak) ispik | |||
facebook f'eIsbuk | |||
firefox f'aIrfoks | |||
google g'ugEl | |||
hardware x'ardwer | |||
hockey xokeI | |||
hotmail xotmeIl | |||
(i phone) 'aIfon | |||
iphone 'aIfon | |||
(i pod) 'aIpod | |||
ipod 'aIpod | |||
hardware x'ardwer | |||
linux $1 | |||
live l'aIB | |||
messenger m'esendZer | |||
mozilla moT'ila | |||
nvda ene|be|de|'a | |||
office 'ofis | |||
skype esk'aIp | |||
iphone 'aIfon | |||
(i pod) 'aIpod | |||
ipod 'aIpod | |||
junior j'unior | |||
linux $1 | |||
live laIB | |||
messenger m'esendZer | |||
mozilla moTila | |||
nvda ene|be|de|'a | |||
office ofis | |||
skype eskaIp | |||
software s'oftwer | |||
thunderbird Tanderb'ird | |||
twitter tw'iter | |||
unix j'uniks | |||
whatsapp was'app | |||
windows w'indows | |||
thunderbird Tanderbird | |||
twitter tw'iter | |||
unix j'uniks | |||
whatsapp wasap | |||
windows w'indows | |||
//mobile _^_EN |
@@ -1,3 +1,4 @@ | |||
// Aragon translation rules | |||
// This file is UTF-8 encoded | |||
@@ -111,6 +112,7 @@ | |||
i i | |||
i (u_ i | |||
i (A j | |||
.group j | |||
@@ -168,6 +170,7 @@ | |||
.group q | |||
q k | |||
qu (A kw | |||
qü kw | |||
qu (e k | |||
@@ -204,6 +207,9 @@ | |||
u) t (_ t# | |||
ei) t (_ t# | |||
n) t (_ = // silent, but stress on last vowel | |||
n) t (m // Silent | |||
_pos) t (h t | |||
_pos) t (C // Silent | |||
tz T | |||
ue) t (_ t# | |||
ui) t (_ t# |
@@ -0,0 +1,110 @@ | |||
// This file is UTF8 encoded | |||
// Spelling to phoneme rules for Azerbaijani | |||
// Numbers | |||
_0 s@f'@R | |||
_1 b'iR | |||
_2 ic'i | |||
_3 'ytS | |||
_4 d'WRd | |||
_5 b'eS | |||
_6 alt'@ | |||
_7 jedd'i | |||
_8 s&Cc'iz | |||
_9 dogg'uz | |||
_1X 'on | |||
_2X ijiRm'i | |||
_3X ot'uz | |||
_4X g'@Rx | |||
_5X &ll'i | |||
_6X altm'@S | |||
_7X jetm'iS | |||
_8X s&Cs'&n | |||
_9X doxs'an | |||
_0C j'yz | |||
_0M1 m'in | |||
_0M2 milj'on | |||
_0M3 milj'aRd | |||
_dpt _t,am_| // ?? | |||
// Function words | |||
// personal pronouns | |||
mən $u+ | |||
sən $u+ | |||
o $u+ | |||
biz $u+ | |||
siz $u+ | |||
onlar $u+ | |||
// possessive pronouns | |||
mənim $u+ | |||
sənin $u+ | |||
onun $u+ | |||
bizim $u+ | |||
sizin $u+ | |||
onların $u+ | |||
bu $u+ | |||
// conjunctions | |||
və $u+ | |||
isə $u+ | |||
də $u+ | |||
həm $u+ | |||
ya $u+ | |||
da $u+ | |||
// prepositions | |||
aid $u+ // about | |||
ilə $u+ // with, by, in | |||
dair $u+ // about | |||
// postpositions | |||
ci $u | |||
cı $u | |||
cü $u | |||
de $u | |||
dir $u | |||
li $u | |||
in $u | |||
nə $u | |||
ya $u | |||
yə $u | |||
// Character names | |||
b be | |||
c dZe | |||
ç tSe | |||
_ə & | |||
d de | |||
f fe | |||
g Je | |||
ğ Qe | |||
h he | |||
x xe | |||
j Ze | |||
k ka | |||
q ge | |||
l el | |||
m em | |||
n en | |||
_o o | |||
p pe | |||
r eR | |||
s se | |||
ş Se | |||
t te | |||
v ve | |||
w dubElv'E | |||
y je | |||
z ze | |||
* ulduz $text | |||
% faiz $text | |||
@@ -0,0 +1,137 @@ | |||
// This file is UTF8 encoded | |||
// Spelling to phoneme rules for Azerbaijani | |||
// Stress rule: Right-most vowel, but stop before the vowel which is | |||
// marked as unstressed [%]. | |||
.L02 ı a o u // back vowels | |||
.L03 i e ö ü | |||
.group a | |||
a a | |||
ai (K aI | |||
-) a (_ a | |||
.group b | |||
b b | |||
.group c | |||
c dZ | |||
.group ç | |||
ç tS | |||
.group d | |||
d d | |||
-) dan (_ d%an | |||
-) dən (_ d%&n | |||
-) dək (_ d%&k | |||
.group e | |||
e e | |||
.group ə | |||
ə & | |||
@) ə (_ %& | |||
-) ə (_ %& | |||
.group f | |||
f f | |||
.group g | |||
g J | |||
.group ğ | |||
ğ Q | |||
A) ğ : | |||
a) ğa : | |||
o) ğo : | |||
u) ğu : | |||
ö) ğö : | |||
ü) ğü : | |||
i) ğ j | |||
e) ğ j | |||
.group h | |||
h h | |||
.group x | |||
x x | |||
.group ı | |||
ı @ | |||
.group i | |||
i i | |||
@) iya (_ =i;a | |||
.group j | |||
j Z | |||
.group k | |||
k c | |||
k (K C | |||
.group q | |||
q g | |||
q (_ x | |||
.group l | |||
l l | |||
l (L02 L | |||
L02) l (K L | |||
.group m | |||
m m | |||
.group n | |||
n n | |||
.group o | |||
o o | |||
.group ö | |||
ö W | |||
.group p | |||
p p | |||
.group r | |||
r R | |||
A) r (A * | |||
ğ) r (A * | |||
C) r (_ @-r | |||
.group s | |||
s s | |||
.group ş | |||
ş S | |||
.group t | |||
t t | |||
L03) t (L03 ts | |||
.group u | |||
u u | |||
.group ü | |||
ü y | |||
.group v | |||
v v | |||
.group w | |||
w w | |||
.group y | |||
y j | |||
.group z | |||
z z | |||
.group | |||
ä & |
@@ -1,4 +1,6 @@ | |||
// Translation rules for Bengali | |||
// Translation rules for Bengali | |||
// Improvement input by Him Prasad gautam (Nepal). | |||
// This file is UTF8 encoded | |||
// Numbers | |||
@@ -7,7 +9,7 @@ _0 S'unjO | |||
_1 '&k | |||
_2 d'uj | |||
_3 t'in | |||
_4 tS'ar | |||
_4 tSh'ar | |||
_5 p'a~tS | |||
_6 tS#'Oj | |||
_7 S'at | |||
@@ -15,7 +17,7 @@ _8 'at.# | |||
_9 n'Oj | |||
_2a d'u // with hundreds etc. | |||
_6a tS#'a | |||
_6a tS#'O | |||
_9a n'O | |||
@@ -23,7 +25,7 @@ _10 d'OS | |||
_11 '&garo | |||
_12 b'arO | |||
_13 t'erO | |||
_14 tS'oddO | |||
_14 tSh'oddO | |||
_15 p'OnerO | |||
_16 S'olO | |||
_17 S'OterO | |||
@@ -39,86 +41,86 @@ _25 p'O~tSiS | |||
_26 tSh'abbiS | |||
_27 Sat'aS | |||
_28 'at.#aS | |||
_29 unOtr'iS | |||
_29 'unOtr'iS | |||
_30 tr'iS | |||
_31 ekOtr'iS | |||
_32 bOtr'iS | |||
_33 tetr'iS | |||
_34 tSowtr'iS | |||
_35 pO~jtr'iS | |||
_31 'ekOtr'iS | |||
_32 b'Otr'iS | |||
_33 t'etr'iS | |||
_34 tS'owtr'iS | |||
_35 p'O~jtr'iS | |||
_36 tS#'Otr'iS | |||
_37 Sa~itr'iS | |||
_38 at.tr'iS | |||
_37 S'a~itr'iS | |||
_38 'at.tr'iS | |||
_39 'unOtSOll'iS | |||
_40 tSOll'iS | |||
_41 ektSOll'iS | |||
_42 biall'iS | |||
_43 tetall'iS | |||
_44 tSoall'iS | |||
_45 pO~jtall'iS | |||
_46 tSetSOll'iS | |||
_47 SatSOll'is | |||
_48 atSOll'iS | |||
_49 unOpO~tSaS | |||
_50 pO~tS'aS | |||
_51 &kann'o | |||
_52 bajann'o | |||
_53 tepann'o | |||
_54 tSujann'o | |||
_55 pontSann'o | |||
_56 tS#apann'o | |||
_57 Satann'o | |||
_58 at.ann'o | |||
_59 unOS'at. | |||
_41 'ektSOll'iS | |||
_42 b'iall'iS | |||
_43 t'etall'iS | |||
_44 tS'oall'iS | |||
_45 p'O~jtall'iS | |||
_46 tS'etSOll'iS | |||
_47 S'atSOll'is | |||
_48 'atSOll'iS | |||
_49 'unOpO~tSaS | |||
_50 p'O~tS'aS | |||
_51 '&kann'o | |||
_52 b'ajann'o | |||
_53 t'epann'o | |||
_54 tS'ujann'o | |||
_55 p'ontSann'o | |||
_56 tS#'apann'o | |||
_57 S'atann'o | |||
_58 'at.ann'o | |||
_59 'unOS'at. | |||
_60 s'at. | |||
_61 ekSOt.t.'i | |||
_62 baSOt.t.'i | |||
_63 teSOt.t.'i | |||
_64 tSowSOt.t.'i | |||
_65 pojSOt.t.'i | |||
_66 SeSOt.t.'i | |||
_67 SatSOt.t.'i | |||
_68 at.SOt.t.'i | |||
_6X sat.t.'i | |||
_69 unOSOtt'ur | |||
_70 SOtt'Or | |||
_71 ekatt'Or | |||
_72 bahatt'Or | |||
_73 tehatt'Or | |||
_74 tSuhatt'Or | |||
_75 pOtSatt'Or | |||
_76 tS#ijatt'Or | |||
_77 Satatt'Or | |||
_78 at.att'Or | |||
_79 unOaS'i | |||
_61 'ekSOt.t.'i | |||
_62 b'aSOt.t.'i | |||
_63 t'eSOt.t.'i | |||
_64 tS'owSOt.t.'i | |||
_65 p'ojSOt.t.'i | |||
_66 S'eSOt.t.'i | |||
_67 S'atSOt.t.'i | |||
_68 'at.SOt.t.'i | |||
_6X s'at.t.'i | |||
_69 'unOSOtt'Or | |||
_70 S'Ott'Or | |||
_71 'ekatt'Or | |||
_72 b'ahatt'Or | |||
_73 t'iatt'Or | |||
_74 tS'uhatt'Or | |||
_75 p'OtSatt'Or | |||
_76 tS#'ijatt'Or | |||
_77 S'atatt'Or | |||
_78 'at.att'Or | |||
_79 'unOaS'i | |||
_80 aS'i | |||
_81 &kaS'i | |||
_82 beraS'i | |||
_83 teraS'i | |||
_84 tSuraS'i | |||
_85 po~tSaS'i | |||
_86 tS#ijaS'i | |||
_87 SataS'i | |||
_88 at.aS'i | |||
_89 ,unOnObb'oj | |||
_81 '&kaS'i | |||
_82 b'eraS'i | |||
_83 t'eraS'i | |||
_84 tS'uraS'i | |||
_85 p'o~tSaS'i | |||
_86 tS#'ijaS'i | |||
_87 S'ataS'i | |||
_88 'at.aS'i | |||
_89 'unOnObb'oj | |||
_90 nObb'oj | |||
_91 &kanObb'oj | |||
_92 beranObb'oj | |||
_93 teranObb'oj | |||
_94 tSuranObb'oj | |||
_95 pOtSanObb'oj | |||
_96 tS#ijanObb'oj | |||
_97 SatanObb'oj | |||
_98 at.anObb'oj | |||
_99 niranObb'oj | |||
_91 '&kanObb'oj | |||
_92 b'eranObb'oj | |||
_93 t'eranObb'oj | |||
_94 tS'uranObb'oj | |||
_95 p'OtSanObb'oj | |||
_96 tS#'ijanObb'oj | |||
_97 S'atanObb'oj | |||
_98 'at.anObb'oj | |||
_99 n'iranObb'oj | |||
_0C S'o | |||
_0M1 h'ajar | |||
@@ -133,7 +135,7 @@ _dpt _d'Osomik_ | |||
খ k#O | |||
গ gO | |||
ঘ g#O | |||
ঙ 'uNO~ | |||
ঙ 'uNgO~ | |||
চ tSO | |||
ছ tShO // [h] to distinguish from [tS] | |||
জ JO | |||
@@ -174,9 +176,9 @@ _dpt _d'Osomik_ | |||
অ O | |||
আ a | |||
ই hrOS:o'i | |||
ঈ dirg#o'i | |||
ঈ d'i:rg#o'i | |||
উ hrOS:o'u | |||
ঊ dirg#o'u | |||
ঊ d'i:rg#o'u | |||
ঋ ri | |||
ঔ ow | |||
@@ -190,10 +192,10 @@ _ও o | |||
// combining vowel signs | |||
া 'akar | |||
ি r'oS:ikar | |||
ী d'irg#ikar | |||
ূ r'oS:ukar | |||
ু d'irg#ukar | |||
ি hrOS:o'ikar | |||
ী d'i:rg#ikar | |||
ূ hrOS:o'ukar | |||
ু d'i:rg#ukar | |||
ৃ r'ikar | |||
ে 'ekar | |||
ৈ 'ojkar |
@@ -1,4 +1,5 @@ | |||
| |||
// Pronounciation rule for Bengali. | |||
// Improvement input by Him Prasad Gautam (Nepal). | |||
// This file is UTF8 encoded | |||
// letter groups: | |||
@@ -97,56 +98,58 @@ | |||
// Vowel Signs | |||
.group া | |||
া a | |||
াঁ a~ | |||
C) া a | |||
C) াঁ a~ | |||
.group ি | |||
ি i | |||
িঁ i~ | |||
C) ি i | |||
C) িঁ i~ | |||
.group ী | |||
ী i | |||
ীঁ i~ | |||
C) ী i | |||
C) ীঁ i~ | |||
.group ূ | |||
ূ u | |||
ূঁ u~ | |||
C) ূ u | |||
C) ূঁ u~ | |||
.group ু | |||
ু u | |||
ুঁ u~ | |||
C) ু u | |||
C) ুঁ u~ | |||
.group ৃ | |||
ৃ ri | |||
ৃঁ ri~ | |||
C) ৃ r'i | |||
C) ৃঁ r'i~ | |||
.group ে | |||
ে e | |||
েঁ e~ | |||
েউ ew | |||
C) ে e | |||
C) েঁ e~ | |||
C) েউ ew | |||
.group ৈ | |||
ৈ oj | |||
ৈঁ o~j | |||
C) ৈ oj | |||
C) ৈঁ o~j | |||
.group ো | |||
ো o | |||
োঁ o~ | |||
C) ো o | |||
C) োঁ o~ | |||
.group ৌ | |||
ৌ ow | |||
ৌঁ o~w | |||
C) ৌ ow | |||
C) ৌঁ o~w | |||
// Consonants | |||
.group ক | |||
ক kV | |||
ক (B k | |||
ক্ষ k#k#V // or [k#:] ? | |||
ক্ষ (B k#k# | |||
.group খ | |||
খ k#V | |||
খ (B k# | |||
@@ -164,7 +167,7 @@ | |||
.group ঙ | |||
ঙ NV | |||
ঙ্ (B N | |||
ঙ (B N | |||
.group চ | |||
@@ -173,8 +176,8 @@ | |||
.group ছ | |||
ছ tS#V | |||
ছ (B tS# | |||
ছ tShV | |||
ছ (B tSh | |||
.group জ | |||
@@ -194,7 +197,7 @@ | |||
.group ঞ | |||
ঞ nV | |||
ঞ্ (B n | |||
ঞ (B n | |||
.group ট | |||
@@ -232,6 +235,7 @@ | |||
.group ত | |||
ত tV | |||
ত (B t | |||
ত (_ to | |||
.group থ | |||
@@ -281,7 +285,8 @@ | |||
.group য় | |||
য় jV | |||
য় (B j | |||
_) য় (B j | |||
য় (B // used to separate 2 vowels | |||
.group য | |||
@@ -289,7 +294,8 @@ | |||
য (B dZ | |||
য় jV // nukta | |||
য় (B j | |||
_) য় (B j | |||
য় (B | |||
্) য (C & // ব্যস্ত [bæsto] | |||
্) যা & // ব্যাকরণ [bækɔron] | |||
@@ -333,6 +339,7 @@ | |||
.group হ | |||
হ hV | |||
হ (B h | |||
হ (_ ho | |||
.group হ্ব | |||
@@ -352,21 +359,24 @@ | |||
.group ঢ় // can be ঢ plus nukta | |||
ঢ় hr.V | |||
ঢ় (B hr. | |||
ঢ় (_ hr.o | |||
.group ঁ | |||
ঁ O~ // candrabindu, nasalize the previous vowel | |||
C) ঁ O~ // candrabindu, nasalize the previous vowel/Consonants | |||
.group ং | |||
ং N // anusvara/onushshor | |||
A) ং N // anusvara/onushshor | |||
C) ং N // anusvara/onushshor | |||
.group ঃ // visarga/bishorgo | |||
ঃ // doubles the following consonant | |||
ঃ (_ H | |||
.group ্ // virama/hoshonto | |||
্ | |||
C) ্ | |||
.group ় | |||
় // nukta, modifies a consonant |
@@ -63,6 +63,8 @@ _#32 l'e:rts'aIC@n | |||
_?? zymb'o:l | |||
_?A b'u:xstA:b@ | |||
_cap gr'o:s | |||
_sub 'Unt@R|3_!,IndEks|| | |||
_sup 'o:b@R|3_!,IndEks|| | |||
// accent names |
@@ -16,9 +16,10 @@ | |||
// ?7 Scottish | |||
// ?8 Use full vowel, not schwa in some word endings | |||
// $alt1 use strong ending (-table, -inal) | |||
// $alt2 use weak ending | |||
// $alt1 use strong ending (-an, -table, -inal, -ier) | |||
// $alt2 use weak ending (ard, ate, ery, ess, ile, men) | |||
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] | |||
// $alt4 separate 'h', not 'th' | |||
// $alt6 'to' | |||
@@ -105,6 +106,8 @@ _hok h'Uk | |||
// character names | |||
_cap k,ap@-t@L | |||
_sub s,VbskrIpt|| | |||
_sup s,u:p3skrIpt|| | |||
_?A l,Et3 | |||
_?? sImb@L | |||
_braille br'eIl | |||
@@ -148,19 +151,14 @@ _} raItbreIs | |||
_¡ %Inv,3:tI2dEkskl@m'eIS@n | |||
_¦ broUk@nb'A@ | |||
_¨ daIa#r'i:sIs | |||
_ª fEmI2nIn'O@dI2n@L | |||
_« lEft'gIl@mEt | |||
_ makr0n | |||
² tu: | |||
³ Tri: | |||
_¹ su:p@skrIptw'0n | |||
_² su:p@skrIptt'u: | |||
_³ su:p@skrIptT'ri: | |||
² tu: $native | |||
³ Tri: $native | |||
_´ a#kju:taksEnt | |||
_· mId@Ld0t | |||
_¸ sEd'Il@ | |||
//_º maskjUlIn'O@dI2n@L | |||
_º dI2gr'i:z | |||
_» raIt'gIl@mEt | |||
_¿ %Inv,3:tI2dkw'EstS@n | |||
@@ -284,42 +282,42 @@ _ja dZ'ap@ni:z | |||
_zh tS'aIni:z | |||
// Cyrillic letters | |||
а a | |||
б bE | |||
в vE | |||
г gE | |||
д dE | |||
е jE | |||
ё jo | |||
ж ZE | |||
з zE | |||
и I | |||
а a: | |||
б bE: | |||
в vE: | |||
г gE: | |||
д dE: | |||
е jE: | |||
ё jo: | |||
ж ZE: | |||
з zE: | |||
и I: | |||
й ,Ik@-*'atkOji | |||
к ka | |||
к ka: | |||
л El/1 | |||
м Em | |||
н En | |||
о o | |||
п pE | |||
о o: | |||
п pE: | |||
р Er | |||
с Es | |||
т tE | |||
у u | |||
т tE: | |||
у u|: | |||
ф Ef | |||
х xa | |||
ц tsE | |||
ч tSE | |||
ш Sa | |||
щ StSa | |||
х xa: | |||
ц tsE: | |||
ч tSE: | |||
ш Sa: | |||
щ StSa: | |||
ъ jEr | |||
ы j'Eru | |||
ь j'eri | |||
э E | |||
ю ju | |||
я ja | |||
ћ tS;E | |||
ђ djE | |||
ќ kjE | |||
э E: | |||
ю ju|: | |||
я ja: | |||
ћ tS;E: | |||
ђ djE: | |||
ќ kjE: | |||
// Arabic letters | |||
@@ -507,7 +505,7 @@ _3o T'3: | |||
_5o f'If | |||
_20o tw'Enti@ | |||
_30o T'3:ti@ | |||
?3 _30o T'IRti@ | |||
?5 _30o T'IRti@ | |||
_40o f'o@ti@ | |||
_50o f'Ifti@ | |||
_60o s'Iksti@ | |||
@@ -567,8 +565,10 @@ ie aIi:_! $pause $only | |||
i.e aIi:_! $pause | |||
imo $abbrev | |||
inlb $abbrev | |||
ios $abbrev | |||
irc $abbrev | |||
irs $abbrev | |||
isbn $abbrev | |||
itx $abbrev | |||
(km ²) skw,e@kIl'0mIt3z | |||
lapd $abbrev | |||
@@ -593,6 +593,7 @@ oem $abbrev | |||
ok $abbrev | |||
omg $abbrev | |||
os $abbrev | |||
osx $abbrev | |||
otoh $abbrev | |||
pcie $abbrev | |||
pcmcia $abbrev | |||
@@ -661,8 +662,7 @@ ability a#bIl@ti | |||
ablaut ablaUt | |||
aborigine ab@r'IdZ@ni | |||
abracadabra abr@k@d'abr@ | |||
absence abs@ns | |||
absent $1 | |||
absentee $3 | |||
absent abs'Ent $verb | |||
absentia abs'Ent2i:@ | |||
absinthe absInT | |||
@@ -694,6 +694,7 @@ adieu a#dju: | |||
adieus a#dju:z | |||
adieux a#dju:z | |||
adios aDj'o:s | |||
adjective $1 | |||
admirable adm@r@b@L | |||
admirably adm@r@bli | |||
admonition adm@n'IS@n | |||
@@ -730,7 +731,7 @@ agog a#g0g | |||
agressive a#grEsIv // misspell | |||
aground a#graUnd | |||
ague eIgju: | |||
aha A:hA: | |||
aha A:h'A: | |||
ahem a#h'Em | |||
ahoy a#hOI | |||
airbus e@bVs | |||
@@ -758,6 +759,7 @@ allover O:l'oUv3 | |||
alm A:m | |||
almost O:lmoUst | |||
allspice $1 | |||
alt 0lt // not abbrev | |||
alternate O:lt'3:n@t $only | |||
alternate O:lt3neIt $verb | |||
alternately O:lt'3:n@tlI $verbf | |||
@@ -791,7 +793,6 @@ anemometer anIm'0mI2t3 | |||
anew a#nju: | |||
?3 anew a#nu: | |||
anime anImeI | |||
anion aneI@n | |||
anise anIs | |||
anniversary anIv'3:s@ri | |||
anon a#n0n | |||
@@ -804,7 +805,7 @@ antibody $1 | |||
antichrist $1 | |||
anticline $1 | |||
antidote $1 | |||
antifreze $1 | |||
antifreeze $1 | |||
antigen $1 | |||
antihero $1 | |||
antilog $1 | |||
@@ -874,6 +875,7 @@ attribute atrIbju:t | |||
attribute $alt3 $verb | |||
au ,oU | |||
aubergine oUb3Zi:n | |||
audi aUdi | |||
auger O:g3 | |||
augmentation O:gmEnt'eIS@n | |||
august O:g@st | |||
@@ -972,6 +974,7 @@ blurry bl3:rI | |||
boing bOIN | |||
bolognese b0l@n'eIz | |||
bombard $2 | |||
bombardier b0mb3d'i@3 | |||
(bon voyage) b0n||vOI'A:Z | |||
bonbon b0nb0n | |||
bonhomie b0n@mi: | |||
@@ -1054,7 +1057,7 @@ capita kapIt@ | |||
capitol kapIt@L | |||
caprice ka#pri:s | |||
carafe ka#raf | |||
caramel kar@mEl | |||
?!3 caramel kar@mEl $onlys | |||
caravan kar@van | |||
carburetor kA@b@r'Et3 | |||
?3 carburetor kA@b@reIt3 | |||
@@ -1075,7 +1078,7 @@ cathedral $alt3 | |||
catholic kaTlIk | |||
carotid $alt3 | |||
cartel kA@t'El | |||
cavalier $3 | |||
cavalier $alt1 | |||
caveat kavIat | |||
?3 caveat kavIA:t | |||
caviar kavIA@ | |||
@@ -1089,6 +1092,7 @@ celebre sEl'Ebr@ | |||
censure sEnS3 | |||
ceres si@ri:z | |||
certificate s3tIfIk@t | |||
c'est seI $u | |||
chagrin SagrIn | |||
?3 chagrin Sa#grIn | |||
chalet SaleI | |||
@@ -1151,6 +1155,7 @@ closely kloUslI $verbf // not kloUzlI | |||
closet kl0zI2t | |||
cloth kloUD $verb | |||
c'mon k@m0n | |||
coathanger $alt4 | |||
coauthor koU'O:T3 | |||
coaxial koU'aksI@l | |||
cobol koUb0l | |||
@@ -1170,6 +1175,7 @@ coincide koUIns'aId | |||
cojones k@hoUneIs | |||
coliseum k0l@s'i:@m | |||
collage k0l'A:Z | |||
collarbone k0l3boUn | |||
college k0lI2dZ | |||
collegiate k@li:dZI@t | |||
colloquial k@loUkwI@L | |||
@@ -1266,6 +1272,7 @@ corral k@r'al | |||
cosmos k0zm0s | |||
?3 cosmos k0zmoUs | |||
cougar ku:g3 | |||
counteract $3 | |||
countered kaUnt3d | |||
(coup de grâce) ku:d@||gr'A: | |||
coupon ku:p0n | |||
@@ -1441,6 +1448,7 @@ edwardian Edw'O@di@n | |||
efile i:faIl | |||
egg Eg // egging | |||
egregious Igr'i:dZ@s | |||
?!3 egret i:gr@t | |||
eh eI | |||
eid i:d | |||
el ,El $only | |||
@@ -1537,6 +1545,7 @@ eyrie i@ri | |||
facade f@sA:d | |||
façade f@sA:d | |||
facetious $alt3 | |||
faculty fak@Lt2i | |||
faeces fi:si:z | |||
fahrenheit far@nhaIt | |||
fairest fe@r@st | |||
@@ -1598,11 +1607,11 @@ fortune fO@tSu:n | |||
foyer fOIeI | |||
freelance fri:laans | |||
freon fri:0n | |||
frequent frI2kwEnt $verb | |||
fricassee frIka#seI | |||
frigate frIg@t | |||
fringer frIndZ3 // infringer | |||
fringing frIndZIN | |||
frisson fri:s'O~ | |||
frontend fr'Vnt,End | |||
frontier frVnti@3 | |||
?3 frontier frVnt'i@3 | |||
@@ -1641,6 +1650,7 @@ gentlemen dZEnt@Lm@n | |||
genuine dZEnju:I#n | |||
geode dZi:oUd | |||
geologist $2 | |||
gettin gEt#n- | |||
geyser gi:z3 | |||
?3 geyser gaIz3 | |||
gibbon gIb@n | |||
@@ -1651,6 +1661,7 @@ gimme gImi | |||
giraffe dZI2raaf | |||
github gIthVb | |||
glacier gleIS3 | |||
?3 goddess $alt2 | |||
goin ,goUI2n $only // for goin' | |||
gonna g,@n@ | |||
goodbye $2 | |||
@@ -1672,6 +1683,7 @@ griffon grIf@n | |||
grosvenor groUv@n3 | |||
groupie gru:pi | |||
guacamole gwA:ka#m'oUli: | |||
guarantee $3 | |||
gucci gu:tSi | |||
gui gu:i $onlys | |||
guinea gIni | |||
@@ -1680,6 +1692,8 @@ gurus gu:ru:z | |||
habitual $alt3 | |||
haggis hagIs | |||
haha hA:h'A: | |||
halation $alt3 // in- | |||
halberdier $alt1 | |||
halleluiah halI2'lu:j@ | |||
hallelujah halI2'lu:j@ | |||
halloween $3 | |||
@@ -1703,6 +1717,7 @@ hello h@loU | |||
henceforth hEnsfo@T | |||
?3 herb 3:b | |||
hercules h3:kjUli:z | |||
heredity h3rEdI2ti | |||
?3 hereford h3:f3d | |||
heretical hI2rEtI2k@L | |||
hereto hi@3'tu: | |||
@@ -1878,6 +1893,7 @@ kosher koUS3 | |||
kowtow kaUt2aU | |||
la ,la $only | |||
(la vie) la||v'i: | |||
laboratory la#b'0r@trI | |||
?3 laboratory labr@tO:ri | |||
labor leIb3 | |||
@@ -2072,9 +2088,10 @@ mixer mIks3 | |||
moccasin m0k@sI#n | |||
mocha moUk@ | |||
modem moUdEm | |||
?3 modem moUd@m | |||
?3 modem moUd@m | |||
moderate m0d@reIt $verb | |||
mogul moUg@L | |||
moi mwA: | |||
mojito moUh'i:toU | |||
molass $alt3 | |||
molybdenum $2 | |||
@@ -2154,10 +2171,11 @@ nothing nVTIN | |||
notwithstanding $3 | |||
noway noUweI | |||
nowhere noUwe@ | |||
?3 nuance nu:0ns | |||
?3 nuance nu:0ns | |||
oases oU'eIsi:z | |||
oasis oU'eIsI2s | |||
obdurate $alt2 | |||
obelisk 0b@lI2sk | |||
obesity oUb'i:s@ti | |||
obey oUb'eI | |||
@@ -2296,6 +2314,7 @@ persona p3:s'oUn@ | |||
perspex p3:spEks | |||
perus p@ru:z | |||
peruse p@ru:z | |||
petit p@ti: | |||
petite p@ti:t | |||
petroleum p@troUli:@m | |||
petunia $alt3 | |||
@@ -2336,6 +2355,7 @@ plethora plET3r@ | |||
plicate $2 | |||
plumber plVm3 | |||
plus plVs | |||
pois pwA: | |||
poly p0lI | |||
politer p@l'aIt3 | |||
politic p0l@tIk $onlys | |||
@@ -2378,6 +2398,7 @@ pretext pri:t2Ekst | |||
pretrial pri:tr'aI|@L | |||
pretty prIti | |||
pretzel prEts@L | |||
?3 priestess $alt2 | |||
primeval praIm'i:v@L | |||
pristine $2 | |||
?3 privacy praIv@si | |||
@@ -2419,6 +2440,7 @@ puny pju:ni | |||
purist pju:r-Ist | |||
purport $2 | |||
purportedly $2 | |||
puttin pUt#n- | |||
pyjama p@dZA:m@ | |||
pyrites paIr'aIti:z | |||
pythagoras paIT'ag@r@s | |||
@@ -2442,6 +2464,7 @@ radish radIS | |||
ragged ragI#d | |||
raiment reIm@nt | |||
rainforest r'eInf,0rI2st | |||
(raison d'être) reIz0n||d'Etr@- | |||
rajah rA:dZA: | |||
rapier reIpi@3 | |||
rapport rap'o@ | |||
@@ -2519,6 +2542,7 @@ rendevous r0ndI2vu: | |||
rendezvous r0ndI2vu: | |||
renegade rEn@geId | |||
reo ri:oU | |||
repartee rEpA@t'eI | |||
repel rI2pEl | |||
replay ri:pleI | |||
reply rI2plaI // for replied | |||
@@ -2652,6 +2676,7 @@ sesame sEsa#mi | |||
settee $2 | |||
severe sI2v'i@3 $only | |||
severely sI2v'i@3lI $verbf | |||
sewn soUn | |||
sex sEks // sexism | |||
several sEvr@L | |||
shallow SaloU | |||
@@ -2827,9 +2852,8 @@ telephon tElI2foUn // for telephoning | |||
temperature tEmprI2tS3 | |||
?!3 temporary tEmpr@rI | |||
?3 template tEmpl@t | |||
thereof ,De@'0v | |||
thereon ,De@'0n | |||
thereto ,De@'tu: | |||
therefore $1 | |||
thereof De@r'0v | |||
thermos T3:m@s | |||
thermostable $alt1 | |||
thesis Ti:sIs | |||
@@ -2952,7 +2976,6 @@ useful ju:sf@L | |||
utan u:t'an | |||
utensil ju:t'Ens@L | |||
valentine val@ntaIn | |||
valet valeI | |||
?3 valet val'eI | |||
valise va#li:s | |||
@@ -3083,6 +3106,7 @@ Cheadle tSi:d@L | |||
Cheshire tSES3 | |||
Chiswick tSIzIk | |||
Clwyd klu:Id | |||
Conway $1 | |||
Dagenham dag@n@m | |||
Devon dEv@n | |||
Dolgellau d0lg'EClaI | |||
@@ -3159,6 +3183,7 @@ Belgrade $2 | |||
Belize bEl'i:z | |||
Bengal b,Eng'O:l | |||
Benin bEnIn | |||
Berkeley b3:kli | |||
Bhutan bu:t'an | |||
Bideford bIdIf@d | |||
Bogota b0g@t'A: | |||
@@ -3195,6 +3220,7 @@ Cruz kru:z | |||
Cyprus saIpr@s | |||
Dahomey $alt3 | |||
Dallas dal@s | |||
Dagestan dA:gIst'A:n | |||
Damascus $alt3 | |||
Dakota $alt3 | |||
Danish deInIS | |||
@@ -3208,6 +3234,8 @@ Egyptia IdZ'IpS@ | |||
Egyptian IdZ'IpS@n | |||
Eire e@r@ | |||
Elysee eIl'i:zeI | |||
Elysée eIl'i:zeI | |||
Erebus ErI#b@s | |||
Erie i@ri | |||
Euphrates ju:fr'eIti:z | |||
Eyjafjalla eIja#fjatla# | |||
@@ -3222,6 +3250,7 @@ Gomera goUm'e@r@ | |||
Gurmukhi gU@mUki | |||
Harare ha#rA:ri | |||
Hanoi han'OI | |||
Harvard $alt2 | |||
Havana ha#van@ | |||
Hawaii h@w'aIi: | |||
Hawai'i h@w'aIi: | |||
@@ -3229,6 +3258,7 @@ Hawaiian h@w'aI@n | |||
Hebrew hi:bru: | |||
Hebrides hEbr@di:z | |||
Honduras h0nd'jU@r@s | |||
Honolulu $3 | |||
Houston hju:st@n | |||
Idaho $1 | |||
Illinois Il@n'OI | |||
@@ -3257,7 +3287,10 @@ Korean kOr'i:@n | |||
?3 Korean k3r'i:@n | |||
Kosovo k0s@voU | |||
Kuala kwA:la# | |||
Kyrgyz k3:rgIz | |||
Kyrgyzstan k3:rgIst'A:n | |||
Lagos leIg0s | |||
Lahore $alt3 | |||
Lebanon lEb@n0n | |||
Leipzig laIpsIg | |||
Leone li:'oUn | |||
@@ -3340,6 +3373,7 @@ Punjabi pVndZ'A:bi | |||
Pyrenees pIr@n'i:z | |||
Qatar katA@ | |||
Quebec kwI2bEk | |||
Québec kwI2bEk | |||
Raleigh rA:li | |||
Reno ri:noU | |||
Rio ri:oU | |||
@@ -3417,6 +3451,8 @@ Ada eId@ $onlys | |||
Andrea $2 | |||
Adrian eIdri@n | |||
Agatha aga#T@ | |||
Angela andZ@l@ | |||
Angelika $2 | |||
Aggie agi | |||
Agnes agn@s | |||
Aguilera agi:l'e@r@ | |||
@@ -3441,12 +3477,13 @@ Amy eImi | |||
Andre 0ndreI | |||
Andrea andri@ | |||
Andreas A:ndr'eI@s | |||
Angela $1 | |||
Angela ang@l@ | |||
Anita $alt3 | |||
Anthony ant@ni | |||
Anton ant0n | |||
Aoife i:f@ | |||
Aoiffe i:f@ | |||
Aphrodite afr@d'aIti | |||
Archibald A@tSIbO:ld | |||
Archie A@tSi | |||
Ares e@ri:z | |||
@@ -3523,6 +3560,7 @@ Duane dweIn | |||
Duncan dVnk@n | |||
Dvina d@vi:n@ | |||
Dylan dIl@n | |||
Ebenezar Eb@n'i:z3 | |||
Edith i:dIT | |||
Eduardo Edw'A@doU | |||
Elijah I2laIdZ@ | |||
@@ -3559,10 +3597,13 @@ Giordino dZO@d'i:noU | |||
Giovanni dZ@v'A:ni | |||
Graeme greI@m | |||
Graham greI@m | |||
Gruffydd grIfIT | |||
Guido gwi:doU | |||
Guinevere gwInI#vi@3 | |||
Hadrian heIdri:@n | |||
Hamish heImIS | |||
Harriet hari@t | |||
Harvey hA@vi | |||
Heidi haIdi | |||
Hecate hEk@teI | |||
Hekate hEk@teI | |||
@@ -3620,6 +3661,7 @@ Louise lu:w'i:z | |||
Luigi lu:'i:dZi | |||
Luis lu:Is | |||
Lupe lu:peI | |||
Luther lu:T3 | |||
Madeleine mad@lI2n | |||
Madeline mad@lI2n | |||
Maeve meIv | |||
@@ -3681,6 +3723,7 @@ Persephone p3s'Ef@ni | |||
Phoebe fi:bi: | |||
Rachael reItS@L | |||
Rachel reItS@L | |||
Rae reI | |||
Rafael rA:faI'El | |||
Rashid rA:S'i:d | |||
Raul raU'u:l | |||
@@ -3701,6 +3744,7 @@ Samantha sa#manT@ | |||
(Santa claus) s'ant@||kl'O:z | |||
Saoirse si@S@ | |||
Sarah se@r@ | |||
Sarisa $alt3 | |||
Seamus SeIm@s | |||
Sean SO:n | |||
Sebastian $alt3 | |||
@@ -3713,6 +3757,7 @@ Siobhán S@vO:n | |||
Sonia s0nj@ | |||
Sophie soUfi | |||
Stephen sti:v@n | |||
Stevie sti:vi | |||
Stewart stju:3t | |||
?3 Stewart stu:3t | |||
Stuart stju:3t | |||
@@ -3736,6 +3781,7 @@ Vanessa $alt3 | |||
Wallace w0lI#s | |||
Wally w0li | |||
?3 William wIlj@m | |||
Yerevan jEr@v'an | |||
Yves i:v | |||
Yvonne $2 | |||
Zoe zoUi | |||
@@ -3753,6 +3799,7 @@ Campbell kamb@l | |||
Capone ka#poUn | |||
Carnegie kA@n@gi | |||
Cohen koU@n | |||
Connolly $1 | |||
Cthulhu k@-Tu:l#u: | |||
Chrysler kraIsl3 | |||
(da vinci) da#vIntSi | |||
@@ -3769,6 +3816,7 @@ Folger foUldZ3 | |||
Genghis dZENgIs | |||
Gibson gIbs@n | |||
Guinness gInIs | |||
Gutierrez gu:tj'ErEz | |||
Hades heIdi:z | |||
Hamilton ham@Lt@n | |||
Hoosier hu:Z3 | |||
@@ -3874,6 +3922,7 @@ at at $nounf $only $u | |||
(at once) a#t_w0ns | |||
?6 (at once) a#t_wVns | |||
(at will) a#t_w'Il | |||
(at & t) 'eIt2i:@nt'i: | |||
with wID $u | |||
(with the) w%IDD@2 $nounf | |||
@@ -4153,7 +4202,7 @@ someone sVmw0n | |||
//conjunctions | |||
although OlD'oU $pause | |||
although 0lD'oU $pause | |||
and and $u $pause $only | |||
as %az $only | |||
(as is) ,az,Iz $pause | |||
@@ -4219,6 +4268,7 @@ that Dat $u $nounf $strend2 $verbsf | |||
these Di:z $u $nounf $strend2 $only | |||
those DoUz $u $nounf $strend2 $only | |||
there De@ $u $strend2 $only | |||
there've De@v $u | |||
(there are) D%e@,A@ $strend | |||
(there be) De@b'i: | |||
(there were) D%e@,w3: $strend |
@@ -239,14 +239,15 @@ | |||
ab (ruc ab | |||
ab (sce ab | |||
ab (sei ab | |||
absen (t ,abs@n | |||
_) ab (sen ab | |||
_) abse (ntC ,abs@ | |||
ab (solu ab | |||
ab (sti ab | |||
ab (ular 'ab | |||
b) ab (y eIb | |||
b) ab (yl ab | |||
&) able (_S4iev @b@L // suffix | |||
&) able (_$w_alt eIb@L | |||
&) able (_$w_alt1 eIb@L | |||
&c) able (_ @b@L | |||
@ct) able (_ =@b@L | |||
&) ability (S7iev @b'IlI2t%i // suffix | |||
@@ -302,7 +303,7 @@ | |||
f) ac (ilit @s | |||
_m) ace (d asI | |||
m) achi (nA# @Si: | |||
m) achina (t aSI2neI | |||
m) achina (t akI2neI | |||
ach (rom ak | |||
ac (id_ as | |||
_) ac (i a#s | |||
@@ -516,13 +517,16 @@ | |||
_) alber (tA alb'3: | |||
_) al (c al | |||
alco (h alk@ | |||
&) al (cy_ @l | |||
_) al (d O:l | |||
alde (hy 'aldI | |||
ale (_ eIl | |||
ale (h eIl | |||
X) al (ed al | |||
k) alei (d @laI | |||
_v) alen (t al@n | |||
aleph alEf | |||
_op) al (es @l | |||
_) alexan alIgz'aan | |||
_) alfa alf@ | |||
_) al (g al | |||
@@ -634,9 +638,8 @@ | |||
t) all (e O:l | |||
thr) all O:l | |||
Av) al (en @l | |||
w) all (A 0l | |||
w) all (A+ 0l | |||
w) alle O:l | |||
w) all (et 0l | |||
w) all O:l | |||
w) all (a 0l | |||
al (tAr 0l | |||
@@ -686,6 +689,7 @@ | |||
amer (ic a#mEr | |||
c) am (ero am | |||
c) am (el am | |||
car) am (el @m | |||
am (i_ 'A:m | |||
ami (g a#mi: | |||
_d) am (i eIm | |||
@@ -754,8 +758,8 @@ | |||
hum) an (_ @n | |||
&) an (ty_ @n | |||
&) an (t_ @n | |||
&) an (t_$w_alt an | |||
?3 &) an (t_$w_alt A:n | |||
&) an (t_$w_alt1 an | |||
?3 &) an (t_$w_alt1 A:n | |||
?8 &) an (t_ a#n | |||
_f) an (at a#n | |||
pl) an (t_ an | |||
@@ -782,7 +786,10 @@ | |||
&) an (ese @n | |||
_) ane (s anI | |||
an (gul 'an | |||
_) ani anI | |||
_) ani (on anaI | |||
&) ani (_ 'A:nI | |||
@st) ani (_S1 =i | |||
an (ia 'eIn | |||
ania (c_ 'eInIa | |||
ania (c a#naI@ | |||
@@ -912,6 +919,7 @@ | |||
_t) ar (_ A@ | |||
&) ar (dis 3 | |||
&) ar (diz 3 | |||
&) ar (d_$w_alt2 3 | |||
&d) ar (d_ 3 | |||
gg) ar (d_ 3 | |||
&h) ar (d_ 3 | |||
@@ -960,7 +968,7 @@ | |||
sp) ar (enC ar | |||
ar' (nt A@ | |||
ar (et ar | |||
ar (iaC_ 'e@ | |||
ar (iaB_ 'e@ | |||
ar (ia_ 'e@ | |||
@) arily (_ 'Er@l%I | |||
?3 @) arily (_ 'e@r@l%I | |||
@@ -979,6 +987,7 @@ | |||
u) ar (ish e@r | |||
?3 _) ar (istocrat a#r | |||
log) ar (i @r | |||
marg) ar (AtA_ 3r' | |||
m) ar (it ar | |||
p) ar (i ar | |||
p) ar (in e@ | |||
@@ -1015,6 +1024,7 @@ | |||
_w) ar (d O@ | |||
sw) ar (d O@ | |||
chw) ar (d O@ | |||
&) arye (_ 3ri | |||
.group as | |||
_) as (@ a#s | |||
@@ -1223,11 +1233,10 @@ | |||
av (eng a#v | |||
_) av (erC a#v | |||
av (oA a#v | |||
d) av (en av | |||
d) av (id eIv | |||
j) av (a A:v | |||
j) av (el av | |||
l) av (en av | |||
_B) av (en av | |||
al) av (er 'A:v | |||
sc) av (en av | |||
_) avi (A eIvI | |||
@@ -1350,7 +1359,7 @@ | |||
bi (ry bI | |||
bi (sc bI | |||
bi (sec b%aI | |||
bi (sh bI | |||
_) bi (sh bI | |||
bi (sm bI | |||
bi (sq bi: | |||
bi (str bi: | |||
@@ -1492,6 +1501,7 @@ | |||
bron) ch k | |||
ch (ute S | |||
ch (ure S | |||
za) ch k | |||
.group co | |||
_) co (ag k%oU | |||
@@ -1621,7 +1631,7 @@ | |||
co (rro k@ | |||
co (rrup k@ | |||
_) costar koUstA@ | |||
_) counter (@P7 k'aUnt@ // prefix | |||
_) counter (@P7 k'aUnt3 // prefix | |||
.group d | |||
d d | |||
@@ -1978,7 +1988,7 @@ | |||
st) ea (k eI | |||
w) eapo Ep@ | |||
eager i:g3 | |||
j) ealou El@ | |||
j) ea (lou E | |||
&) eal (_ i@l | |||
z) ea (lo E | |||
C) ea (lt E | |||
@@ -2472,16 +2482,18 @@ | |||
s) er (van 3: | |||
ery (_ @r%i | |||
?3 ery (_++$w_alt2 @rI | |||
?3 @@AC) ery (_ e@ri | |||
?3 @@AC) ery (_ ,e@ri | |||
ery (A 3j | |||
_v) ery ErI2 | |||
qu) ery i@rI | |||
_x) er (o i@r | |||
z) er (o i@r | |||
_C) er (o_ i@r | |||
er (rA E | |||
err (_N e@ | |||
.group es | |||
ess (_$w_alt2 @s | |||
&) es (_S1i z | |||
&es) es (_ i:z | |||
ese (_ i:z | |||
@@ -2648,6 +2660,8 @@ | |||
ex (erc Eks | |||
_) ex (A %Egz | |||
_) exh %Egz | |||
_) ex (hal %Eks | |||
_) exh (ibiti %Eks | |||
?3 _) exhu %Egzu: | |||
_) ex (it Egz | |||
exor (c Eks3 | |||
@@ -2715,6 +2729,7 @@ | |||
g (eek g | |||
_) g (ert g | |||
_) g (ek g | |||
g (eld g | |||
ge (nic_ dZ'E | |||
genesis dZ'EnI2sIs | |||
geous dZ=@s | |||
@@ -2950,7 +2965,9 @@ | |||
iza (tion aIzeI | |||
?3 iza (tion @zeI | |||
ize (_ aIz | |||
ial) ize (_S3 aIz | |||
&l) ize (_S3 aIz | |||
&l) ized (_S4 aIzd | |||
&l) izing (_S5 ,aIzIN | |||
ize (d_ aIz | |||
i (zen I | |||
iz (er_ aIz | |||
@@ -3036,7 +3053,7 @@ | |||
&n) iel (_ j@L | |||
&r) iel (_ =i:@L | |||
ie (n i@ | |||
&) ie (n_ =i@n | |||
&) ie (n_ =i@ | |||
d) iene (_ 'aIi:n | |||
ie (ntal I'E | |||
g) ie (n i: | |||
@@ -3053,7 +3070,7 @@ | |||
ier i@3 | |||
ier (a I'e@r | |||
&) ier (_NS2i 3 | |||
&) ier's (_NS4i 3z | |||
ier (_$w_alt1 'i@3 | |||
_h) ie (r aI3 | |||
pl) ier (_ aI3 | |||
_Cr) ier aI3 | |||
@@ -3190,7 +3207,7 @@ | |||
impo (ten Imp@ | |||
_) im (pre@P2 %Im | |||
impreg Impr'Eg | |||
impreg (nat ImprEg | |||
?!3 impreg (nat Impr,Eg | |||
im (presa ,Im | |||
im (provis Im | |||
im (pulse_ Im | |||
@@ -3200,7 +3217,7 @@ | |||
.group in | |||
@) ing (_+S3dve %IN | |||
@) ings (_S4dve %INz | |||
@) ings (_S1m z | |||
@) ingly (_S5dve %INl%I | |||
@) ingment (_S7dve %INm@nt | |||
logu) ing (_S4v %IN | |||
@@ -3267,7 +3284,6 @@ | |||
_) inno (ce In@ | |||
_) inno (v In@ | |||
_) inn (um %In | |||
_) in (of In | |||
_) in (org In | |||
_) in (p In | |||
_) in (que In | |||
@@ -3321,7 +3337,7 @@ | |||
adm) ini InI | |||
m) iniatur InItS3 | |||
m) inera (l In@r@ | |||
in (al_$w_alt 'aIn | |||
in (al_$w_alt1 'aIn | |||
&m) in (al_ =In | |||
f) in (a aIn | |||
@g) in (a_ aIn | |||
@@ -3357,6 +3373,7 @@ | |||
v) ine (g InI# | |||
in (ea In | |||
in (ee In | |||
in (esc In | |||
c) in (e In | |||
inc) in (e In | |||
g) in (e In | |||
@@ -3495,6 +3512,7 @@ | |||
is (er+_ aIz | |||
iser (_ aIz3 | |||
&) ish (_ I2S | |||
ish (A_ 'i:S | |||
is (ive aIs | |||
_) island aIl@nd | |||
_) is (le aI | |||
@@ -3508,8 +3526,8 @@ | |||
iss (a_ 'Is | |||
issimo (_ 'IsImoU | |||
chr) is (t_ aIs | |||
@) istan (_ =Istan | |||
@) istani (_ Ist'A:nI | |||
@) istan (_ =IstA:n | |||
@) istan (_N =Istan | |||
@) iste (_ 'i:st | |||
@) is (tic_ 'Is | |||
r) is (y_ =@s | |||
@@ -3997,7 +4015,7 @@ | |||
oea (_ 'i@ | |||
_) oe (d i: | |||
p) oe (m oUI | |||
oer oU@ | |||
oer oU3 | |||
_) oe (s i: | |||
&) oe (s_S2 z | |||
oesopha I2s0f@ | |||
@@ -4102,7 +4120,7 @@ | |||
o (tion oU | |||
m) o (tiv oU | |||
r) o (to oU | |||
pr) oto oUtoU | |||
pr) oto (C oUtoU | |||
pr) oto (n oUt0 | |||
m) otor oUt3 | |||
n) o (tor oU | |||
@@ -4167,6 +4185,7 @@ | |||
olt oUlt | |||
w) olv Ulv | |||
N_p) oly ,0lI | |||
_) ol (ym @l | |||
.group om | |||
&) om (_ @m | |||
@@ -4179,6 +4198,7 @@ | |||
t) omb (K u:m | |||
w) omb (_ u:m | |||
c) ombe (_ u:m | |||
_tr) ombo (n %0mboU | |||
c) om (e Vm | |||
c) omm (e Vm | |||
_d) om (a @m | |||
@@ -4217,6 +4237,7 @@ | |||
Cd) on (_ @n | |||
?3 ag) on (_ 0n | |||
rg) on (_ @n | |||
&k) on (_ @n | |||
&s) on (_ @n | |||
&t) on (_ @n | |||
&tr) on (_ 0n | |||
@@ -4235,6 +4256,7 @@ | |||
pers) on (i '0n | |||
postp) on 'oUn | |||
_sp) on 0n | |||
&s) on (an @n | |||
on (ald 0n | |||
&) on (age_ @n | |||
d) on (at %oUn | |||
@@ -4346,6 +4368,7 @@ | |||
nt) or (_ o@ | |||
vent) or (_ 3 | |||
y) or (k O@ | |||
&) or (ant_ 3r | |||
or (arL02 3r | |||
&) or (ation 3r | |||
_) ora (to 0r@ | |||
@@ -4420,7 +4443,7 @@ | |||
w) or (e o@ | |||
or (um_ 'o@r | |||
&) ory (_ @r%I | |||
?3 @@At) ory (_ o:ri | |||
?3 @@At) ory (_ ,o:ri | |||
_st) ory o@rI | |||
.group os | |||
@@ -4661,7 +4684,7 @@ | |||
_all) ow aU | |||
isall) ow aU | |||
cl) ow aU | |||
fl) ow (er aU | |||
fl) ower aU|3 | |||
gl) ow (er aU | |||
pl) ow aU | |||
_n) ow (_ aU | |||
@@ -4788,6 +4811,8 @@ | |||
prede (ces pri:dI | |||
_) pre (diP3 pr%i: | |||
_) pre (dic pr%I | |||
_) predi (lec pr,i:dI2 | |||
?3 _) predi (lec prEd@ | |||
_) pre (em pr%i: | |||
_) pre (fec pri: | |||
_) pre (feren prE | |||
@@ -4955,7 +4980,6 @@ | |||
_) re (arm %ri: | |||
_) re (au@P2 ,ri: | |||
re (ck rE | |||
reckon rEk@n | |||
reco (g rEk@ | |||
_) re (comP2 r,i: | |||
_) re (conP2 ,ri: | |||
@@ -5091,6 +5115,7 @@ | |||
m) s (i z | |||
a) s (el_ z | |||
m) s (y z | |||
n) s (y_ z | |||
a) s (e s | |||
pha) s (e z | |||
la) s (e z | |||
@@ -5129,7 +5154,7 @@ | |||
@) s (hill_ s | |||
@) s (hous s | |||
_) she' %Si: | |||
A) sh (i_ =S | |||
A) sh (A_ =S | |||
&) ship (_S4 SIp | |||
&) ships (_S5 SIps | |||
&) shire (_S5 S3 | |||
@@ -5210,6 +5235,7 @@ | |||
_) sus (A su:z | |||
su (al Zu: | |||
n) su (al sju: | |||
?3 n) su (al Su: | |||
_) su (b sV | |||
_) su (bdi s,V | |||
su (bdue s%V | |||
@@ -5265,6 +5291,7 @@ | |||
_) t (sY t | |||
_) t (wY t | |||
_) tz (ar ts | |||
t (h$w_alt4 t | |||
tch tS | |||
_) tele tElI2 | |||
@@ -5293,6 +5320,7 @@ | |||
tse (_ tsi | |||
_) tsk t'@sk | |||
_) tsu tsu: | |||
tt (i_ =t | |||
_) two tu: | |||
ttu (r t@ | |||
tz ts | |||
@@ -5335,6 +5363,7 @@ | |||
th (ern_ D | |||
_) thio T,aIoU | |||
th (ith D | |||
th (old th | |||
th (ole th | |||
_) th (om@ t | |||
ph) th T | |||
@@ -5346,6 +5375,7 @@ | |||
ear) th (y T | |||
_) there De@ | |||
_) them D%Em | |||
_) there (@ D%e@ | |||
_) the (mA Ti: | |||
.group ti | |||
@@ -5367,7 +5397,8 @@ | |||
&s) tion tS@n | |||
?8 &) tion S=Vn | |||
?8 &s) tion tSVn | |||
tion (al S=@-n | |||
tion (al_ S=@-n | |||
tion (al S@-n | |||
&) tious S=@s | |||
AC) tive (_ =tIv | |||
@@ -5383,7 +5414,7 @@ | |||
@) tu (lat =tSU | |||
?3 tu (Ant tSu: | |||
?3 tu (Ancy tSu: | |||
tu (ous tSu: | |||
tu (ous =tSu: | |||
@) tur (A tS@r | |||
@) tur (al_ tS=@r | |||
&) tur (y tS@r | |||
@@ -5503,7 +5534,7 @@ | |||
d) u (ly ju: | |||
z) u (l_ 'u: | |||
&) um (_ @m | |||
vol) u (m ju: | |||
vol) u (me ju: | |||
u (ma_ 'u: | |||
h) u (man ju: | |||
u (me ju: | |||
@@ -5712,6 +5743,7 @@ | |||
?3 _) vibra (t v'aIbreI | |||
vivi (@ vIvI | |||
viv (_ vaIv | |||
_) vo (lC v0 | |||
.group w | |||
w w | |||
@@ -5856,6 +5888,7 @@ | |||
C) yes (_ aIz | |||
_) yes jEs | |||
yeah jEh | |||
yew ju: | |||
@C) y (gen I | |||
?!3 d) y (nas I | |||
s) ynch Ink | |||
@@ -5963,7 +5996,7 @@ | |||
E (ntu 'E | |||
E (ntous 'E | |||
E (o_ I2 | |||
Eous (_ =j@s | |||
Eous (_ =i@s | |||
l) E (ps E | |||
l) E (pt E | |||
Eri (A 'i@rI2 | |||
@@ -6009,19 +6042,19 @@ | |||
.group ' | |||
's (_S2 z | |||
f) 's (_S2 s | |||
p) 's (_S2 s | |||
t) 's (_S2 s | |||
k) 's (_S2 s | |||
se) 's (_S2 I2z | |||
s) 's (_S2 I2z | |||
ce) 's (_S2 I2z | |||
ch) 's (_S2 I2z | |||
och) 's (_S2 s | |||
sh) 's (_S2 I2z | |||
x) 's (_S2 I2z | |||
z) 's (_S2 I2z | |||
's (_S2m z | |||
f) 's (_S2m s | |||
p) 's (_S2m s | |||
t) 's (_S2m s | |||
k) 's (_S2m s | |||
se) 's (_S2m I2z | |||
s) 's (_S2m I2z | |||
ce) 's (_S2m I2z | |||
ch) 's (_S2m I2z | |||
och) 's (_S2m s | |||
sh) 's (_S2m I2z | |||
x) 's (_S2m I2z | |||
z) 's (_S2m I2z | |||
6_) 's (_ I2z | |||
16_) 's (_ z | |||
're (_S3 @ |
@@ -50,8 +50,10 @@ A) ck k | |||
_) d (rA d | |||
_) d (A d | |||
d (A D | |||
d (_ D | |||
d (cY D | |||
d (L03 D | |||
d (v D | |||
m) d d | |||
n) d d | |||
l) d d | |||
@@ -85,6 +87,7 @@ A) ck k | |||
_) gn (A n | |||
_) g (A g | |||
g (A Q | |||
g (_ Q | |||
g (cY Q | |||
g (L03 Q | |||
m) g g |
@@ -698,7 +698,7 @@ _quatrevin) gts (_ z2 | |||
_) game (X _^_en | |||
girl _^_en // girl | |||
gh (K _^_en | |||
gy (_ _^_en | |||
@) gy (_ _^_en | |||
.group h | |||
@@ -1497,7 +1497,7 @@ A) wn _^_en | |||
y (nn i | |||
// group y: English section | |||
_C) y (_ _^_en | |||
//_C) y (_ _^_en | |||
AC) y (_ _^_en | |||
C) y (e_ _^_en | |||
%C) y (_ _^_en |
@@ -1,7 +1,9 @@ | |||
// Irish Gaeilge dictionary | |||
// written by Ronan McGuirk | |||
// January 2013 | |||
// version 2.5 | |||
// 2013 | |||
// version 2.6.1 | |||
// Please send comments and suggestions to [email protected] | |||
// This file is UTF8 encoded | |||
// letters | |||
@@ -47,7 +49,7 @@ _cap m'o:r | |||
// accent names | |||
// names of symbols | |||
ª_. pO#nk | |||
_. pO#nk | |||
_, k0m@ | |||
_; semI | |||
_: ko:l0n | |||
@@ -152,22 +154,26 @@ amárach @m'A:r@x | |||
amuigh @mu1'I | |||
amháin @w'A:in | |||
am aUm | |||
an @n | |||
anaithnid '0nah@nIdZ | |||
anois @nIS | |||
anonn @naUn | |||
ann aUn | |||
anseo @nS'O | |||
anuas a#n'u@s | |||
aodh e: | |||
aodha e: | |||
aon e:@n | |||
(ar ais) Er'aS | |||
arís @r'i:S | |||
as 0s | |||
aschurtha '0sxUrh@ | |||
atá @t['A: $u | |||
baill bu1'i:l | |||
bhaill vu1'i:l | |||
beidh bEg | |||
bhfuil w'Il | |||
bheas v'e:@s | |||
bhuel w'El | |||
ceithre kEr@ | |||
cathair k'0h@r | |||
@@ -176,6 +182,7 @@ clainne kl'InE | |||
chlainne xl'InE | |||
chun xUn $u | |||
crainn kri:n | |||
chrainn xri:n | |||
de dE $u+ | |||
des dEs $u | |||
@@ -184,6 +191,7 @@ di dI $u+ | |||
do dO# $u | |||
domhnach d[aUn@x | |||
domhnaigh d[aUnig | |||
dúghorm d['u:Q"Or@m | |||
eile 'El@ | |||
euro ju:ro: | |||
faic f@ak | |||
@@ -214,6 +222,7 @@ le lE $u | |||
(muigheo) mu1'i:||'o: | |||
mhuigh vu1'i: | |||
(mhaigh eo) vu1'i:||'o: | |||
mhama w'0m@ | |||
maith m'0 | |||
mhaith w'0 | |||
mbeadh m;O#X | |||
@@ -230,8 +239,10 @@ orthu O#rhu | |||
os o:s | |||
rabh raU | |||
raibh rEv | |||
raidió r'adi:o: | |||
réamhrá r'e:@vr,a: | |||
réidh re: | |||
's s | |||
samhain saUIn | |||
san s@n | |||
seo S@_ |
@@ -1,8 +1,10 @@ | |||
// translation rules for Irish Gaeilge | |||
// This file is UTF-8 encoded | |||
// written by Ronan McGuirk January 2013 | |||
// Version 2.5B | |||
// written by Ronan McGuirk 2013 | |||
// Version 2.6.1 | |||
// Please send comments and suggestions to [email protected] | |||
// Conditional rules | |||
// ?1 allow eclipsis as 2 separate words | |||
@@ -12,7 +14,7 @@ | |||
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||
.L04 b bh mb // for words like beag | |||
.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||
.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
.L06 aidh idh aí á eá eadh adh ad adsa imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
.L07 b c g ch bh gh mb | |||
.L08 lc ll nt bhse // for words like cailc | |||
.L09 cl cr chr f | |||
@@ -21,14 +23,14 @@ | |||
.L12 á é ó eo ua // when followed by i | |||
.L13 oc omb | |||
.L14 río dún gnío // followed with mh | |||
.L15 c ch f m d dh g gc gh mh // aoi following | |||
.L15 c ch f bhf m d dh g gc gh mh // aoi following | |||
.L16 b c bh ch gr ghr // for inn word ending | |||
.L17 l le li niste nn | |||
.L18 n nt nte neann neadh ntear nim nfear nfinn | |||
.L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar | |||
.L19 na nea ra rea la llea arga // word endings with silent dh | |||
.L20 eo eoir eá eabh io iu iú // slender m | |||
.L21 ll nn ndán nntán | |||
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann | |||
.L23 ea eo i | |||
.L24 b mb bh g gh p ph bp m mh | |||
@@ -40,14 +42,16 @@ | |||
abht aU#t[ | |||
amhr aUr // words like amhras | |||
K) amhl aUl | |||
abhra aUr@ // words like slabhra | |||
abh (C aU // words like slabhra | |||
aghaidh aIg | |||
t) abhair u:@r | |||
th) abhair u:@r | |||
t) abhar u:@r | |||
th) abhar u:@r | |||
_) an (sL01 @n | |||
_) an (- 0n // an prefix | |||
_) a (nA @ | |||
_) an (_ @n | |||
_) an (- '0n // an prefix | |||
é) a @ // words like féach | |||
X) a (nn_ aU# | |||
X) a (ll_ aU# | |||
@@ -77,8 +81,9 @@ | |||
_) ao e: | |||
ae e: | |||
amhna (_ aUn@ | |||
arraing arIng | |||
_) ath (@@P3 ,0_ | |||
.group á | |||
á A: | |||
@) á ,A: | |||
@@ -89,7 +94,7 @@ | |||
áinig A:nIg | |||
ái 'A:i | |||
.group ai | |||
ai a# | |||
L04) ai (L17 0# | |||
@@ -99,6 +104,7 @@ | |||
m) ai (n 0# | |||
c) ai (th 0# | |||
ch) ai (th 0# | |||
ai (tín 0# | |||
ai (d 0# | |||
p) ai (l 0# | |||
@) ai (L11_ I | |||
@@ -112,8 +118,9 @@ | |||
X) aigh 'aI | |||
aigh aI# L04) aill (_ wi:l | |||
aing (_ Ing | |||
ai (llimh '0 // words like Gaillimh | |||
.group b | |||
b b // broad | |||
L01) b b; // slender | |||
@@ -122,7 +129,7 @@ | |||
bh (_ vv | |||
bh (L22 vj // slender | |||
L01) bh v | |||
?1 _m_) b (@ | |||
?1 _m_) b (@ | |||
_) bhf v // urú broad | |||
_) bhf (L22 v; // urú slender | |||
_) bp b // urú broad | |||
@@ -134,8 +141,10 @@ | |||
a) bh (a U // for example cabhair | |||
ear) bha u: // words like Cearbhall | |||
bhfaigh v'aI | |||
_) beann (@ ba#n | |||
_) bheann (@ va#n | |||
_) bun (C@P3 b,Un | |||
.group c | |||
c k | |||
c (L01 k; // slender | |||
@@ -143,19 +152,20 @@ | |||
ch (L01 C; | |||
ch (é+ C; | |||
ch (ei+ x; | |||
?1 _g_) c (@ | |||
?1 _g_) c (L01 | |||
?1 _g_) c (@ | |||
?1 _g_) c (L01 | |||
_) cabhr k'aUr | |||
_) chabhr x'aUr | |||
_) ceann (C@P5 k;,aUn | |||
_) cheann (C@P6 C;,aUn | |||
.group d | |||
d d[ // broad | |||
L01) d dZ // slender | |||
d (L22 dZ // slender | |||
d (L01 d; // slender | |||
i) d (i dZ | |||
?1 _n_) d (@ | |||
?1 _n_) d (@ | |||
dh Q // broad | |||
dh (ui Q // broad | |||
dh (ao Q // broad | |||
@@ -165,6 +175,11 @@ | |||
?1 _) d (_t d[ | |||
?1 _) d (_tL01 dZ | |||
_) d' (@P2 d | |||
_) d' d | |||
_) d (_'fh d | |||
d'fh (L01 d | |||
i) dh (_ g | |||
a) dh (_ X | |||
o) dh (_ X | |||
@@ -174,8 +189,9 @@ | |||
dheartháir gr@h'A:r | |||
deirfiúr d;r@f'u:r | |||
dheirfiúr g;r@f'u:r | |||
_) do (Ch@@P2 d[,U_ | |||
_) dí (@@P2 d,i: | |||
.group e | |||
e E# | |||
eá A: | |||
@@ -184,29 +200,39 @@ | |||
r) ei (m aI | |||
eighea aI | |||
eighea aI | |||
s) ei (nn aI | |||
sh) ei (nn aI | |||
eigh aI | |||
eo o: | |||
eogh o: | |||
eoi o: | |||
eogha o: | |||
eoghai o: | |||
d) eo (ch O# | |||
dh) eo (ch O# | |||
_) eo (ch O# | |||
s) eo (_ @ | |||
.group é | |||
é 'e: | |||
éi 'e: | |||
éa 'e: | |||
_) éi (rig aI // words like éirigh | |||
_h) éi (rí aI | |||
_) éi (rí aI // words like éirí | |||
_) éireoidh aIro:Ig | |||
éacs e:@ks | |||
.group ea | |||
ea a# | |||
eai a# | |||
X) ea (L21_ aU | |||
ea (ltaine aU | |||
g) ea (ll aU | |||
l) eamh (n aU | |||
dr) ea (m aU | |||
X) ea (ch 0 | |||
_L04) ea (g @ | |||
_L04) ea (dh_ @ | |||
@@ -217,7 +243,7 @@ | |||
eanbhean 'an@v,an | |||
eadhb aIb | |||
.group f | |||
f f // broad | |||
f (L22 f; // slender | |||
@@ -225,14 +251,16 @@ | |||
fh (éin_ h | |||
fh (L22 ; // slender | |||
@) f (L06_ h | |||
?1 _bh_) f (@ | |||
?1 _bh_) f (L22 ; | |||
_) fo (C@@P2 f,U | |||
_) fogh f'aU | |||
?1 _bh_) f (@ | |||
?1 _bh_) f (L22 ; | |||
.group g | |||
g g // broad | |||
g (L01 g; // slender | |||
?1 _n_) g (@ | |||
?1 _n_) g (@ | |||
_) gh Q" | |||
_) gh (L01 Q"j | |||
_) gc g // urú broad | |||
@@ -245,19 +273,24 @@ | |||
gh (n X@ | |||
gheobh j'o: | |||
gabh gaU | |||
_) gearr (C@P5 g;,aR | |||
_) ghearr (C@P6 Q"j,aR | |||
.group h | |||
h h // silent | |||
.group i | |||
i I | |||
_) i I | |||
ia i@ | |||
ia (tha i: | |||
io O# | |||
io (dá I | |||
_) io (nadh u:// words like ionadh | |||
s) io (mb I | |||
sh) io (mb I | |||
_pr) io (n u: | |||
L16) inn (_ i:n | |||
iai i:i | |||
@@ -266,12 +299,18 @@ | |||
L12) i i // non syllabic short i after long vowel | |||
iú u: | |||
m) i (d_ i: // verb ending | |||
_) in (@@P2 ,In_ | |||
_) ionad (C@@P5 ,Ona#d[ | |||
.group í | |||
í 'i: | |||
íomh 'i:v | |||
íochn 'i:xn | |||
í (_ i: | |||
ín (_ i:n | |||
ío i:@ | |||
.group l | |||
l l // broad | |||
L01) l l; // slender | |||
@@ -280,8 +319,9 @@ | |||
ll (L23 l; | |||
l (g l@ | |||
l (b l@ | |||
_) lorg (@@P4 l,Or@g | |||
_) lán (C@@P3 l,A:n | |||
.group m | |||
m m // broad | |||
m (L20 m; //slender | |||
@@ -296,8 +336,8 @@ | |||
_) mh (n v@ | |||
léir) mheas vas | |||
r) m @m // words like gorm | |||
_) mear (@@P4 m,ar | |||
.group n | |||
n n // broad | |||
n (L01 n; // slender | |||
@@ -318,8 +358,8 @@ | |||
n (ch n@ | |||
c) n @n | |||
ch) n @n | |||
_) nasc (C@@ n,0sk | |||
.group o | |||
o O# | |||
_) o 'O | |||
@@ -342,12 +382,13 @@ | |||
odl (a O#l | |||
oí i: | |||
.group ó | |||
ó 'o: | |||
ómhai o:@ | |||
ói (p@ 'o: | |||
.group oi | |||
oi O | |||
_L15) oi (+ @'I | |||
@@ -369,15 +410,16 @@ | |||
_) oi (leá 'I | |||
oidh aI | |||
oir (_ 'ERR | |||
_sc) oi (r O | |||
oigh (ea aI | |||
.group p | |||
p p // broad | |||
ph f // broad | |||
p (L22 p; // slender | |||
ph (L20 f; // slender | |||
?1 _b_) p (@ | |||
?1 _b_) p (@ | |||
.group r | |||
@@ -388,13 +430,13 @@ | |||
L12i) r (t_ Z | |||
rr R | |||
rg r@g | |||
rgh rQ" | |||
L01) rg R@g // slender | |||
r (bh r@ | |||
ríomh ri:@v | |||
s) r (A R | |||
_) ramh raU | |||
.group s | |||
s s // broad | |||
L01) s S // slender | |||
@@ -402,13 +444,14 @@ | |||
s (cL01 S | |||
s (CCL01 S // slender | |||
s (pCé s // broad | |||
?1 _t_) s (@ | |||
?1 _t_) s (@ | |||
sh h | |||
sh (CL01 h | |||
sh (L01 h; | |||
s (lL01 S | |||
_') s (_ s // 's in poems etc | |||
_) sain (@P4 s,an | |||
.group t | |||
t t[ // broad | |||
L01) t c // slender | |||
@@ -418,7 +461,7 @@ | |||
?1 _) t (_L01 c | |||
L01C) t tS // slender after consonant | |||
t (CL01 tS // slender with following consonant before vowels | |||
?1 _d_) t (@ | |||
?1 _d_) t (@ | |||
th h | |||
th (L01 h; | |||
L01C) th h | |||
@@ -432,7 +475,7 @@ | |||
thne (_ h@nE | |||
A) th (_ // silent th at word end | |||
.group u | |||
u U# | |||
ua u@ | |||
@@ -441,11 +484,14 @@ | |||
uai (d ui | |||
uá u:'A: | |||
ui I | |||
ui (s U | |||
ui (sce_ I | |||
uinn (_ 'i:n | |||
uinti U#'i:ntI | |||
_b) uí wi: | |||
_bh) uí wi: | |||
g) uí wi: | |||
gh) uí wi: | |||
umh u: | |||
L03) ui @I | |||
_d) u (l_ O# | |||
@@ -453,8 +499,9 @@ | |||
gh) ui (gh_ @i: | |||
uí i: | |||
uachai 'ux@ | |||
_) uimhir (C@P6 ,IvIR | |||
.group ú | |||
ú u: | |||
únmh u:nv |
@@ -49,8 +49,8 @@ | |||
.group ऊ | |||
ऊ u | |||
ऊं u~ // + anusvara | |||
ऊँ u~ // + candrabinbu | |||
ऊं (_ u~ // + anusvara | |||
ऊँ (_ u~ // + candrabinbu | |||
.group ऋ | |||
ऋ rI | |||
@@ -63,14 +63,19 @@ | |||
.group ऎ | |||
ऎ e | |||
ऎं (_ e~ | |||
ऎँ (_ e~ | |||
.group ए | |||
ए e: | |||
एँ e~: | |||
एं (_ e~: | |||
ा) एँ (_ j | |||
.group ऐ | |||
ऐ E: // ?? [aI] [E:] [&:] | |||
ऐं E~ | |||
ऐँ E~ | |||
ऐं (_ E~ | |||
ऐँ (_ E~ | |||
?2 ऐ aI // ?? [aI] [E:] [&:] | |||
@@ -79,16 +84,21 @@ | |||
.group ऒ | |||
ऒ o | |||
ऒं (_ o~ | |||
ऒँ (_ o~ | |||
.group ओ | |||
ओ o: | |||
ओं o~ // +anusvara | |||
ओँ o~ // +candrabindu | |||
ओं (_ o~ // +anusvara | |||
ओँ (_ o~ // +candrabindu | |||
ा) ओं (_ w // +anusvara | |||
ा) ओँ (_ w | |||
.group औ | |||
औ O: // ?? [aU] [O:] | |||
औं O~ // +anusvara | |||
औँ O~ // +candrabindu | |||
औं (_ O~ // +anusvara | |||
औँ (_ O~ // +candrabindu | |||
?3 औ aU // ?? [aU] [O:] | |||
@@ -96,6 +106,9 @@ | |||
.group ा | |||
ा a: | |||
ा (ँ a~ | |||
ाँ (_ a~ | |||
ां (_ a~ | |||
ाव aU | |||
.group ि | |||
@@ -106,14 +119,21 @@ | |||
.group ी | |||
ी i: | |||
ी (_ i | |||
ी (ँ i~ | |||
ीँ (_ i~ | |||
ीं (_ i~ | |||
.group ु | |||
ु u | |||
ु U | |||
ु (ँ u~ | |||
ुं (_ u~ | |||
ुँ (_ u~ | |||
.group ू | |||
ू u: | |||
ूं u~ // or O~ ?? | |||
ूँ u~ | |||
ू (ँ u~ | |||
ूं (_ u~ // or O~ ?? | |||
ूँ (_ u~ | |||
.group ृ | |||
ृ rI | |||
@@ -126,14 +146,21 @@ | |||
.group ॆ | |||
ॆ e | |||
ॆ (ँ e~ | |||
ॆं (_ e~ | |||
ॆँ (_ e~ | |||
.group े | |||
े e: | |||
े (ँ e~ | |||
ें (_ e~: | |||
ेँ (_ e~: | |||
.group ै | |||
ै E: // ?? [aI] [E:] [&:] | |||
ैं E~ | |||
ैँ E~ | |||
ै (ँ E~ | |||
ैं (_ E~ | |||
ैँ (_ E~ | |||
?2 ै aI // ?? [aI] [E:] [&:] | |||
.group ॉ | |||
@@ -141,16 +168,21 @@ | |||
.group ॊ | |||
ॊ o | |||
ॊ (ँ o~ | |||
ॊं (_ o~ | |||
ॊँ (_ o~ | |||
.group ो | |||
ो o: | |||
ों o~ | |||
ोँ o~ | |||
ो (ँ o~ | |||
ों (_ o~ | |||
ोँ (_ o~ | |||
.group ौ | |||
ौ O: // [O:] or [aU] ?? | |||
ौं O~ | |||
ौँ O~ | |||
ौ (ँ O~ // [O:] or [aU] ?? | |||
ौं (_ O~ | |||
ौँ (_ O~ | |||
?3 ौ aU // [O:] or [aU] ?? | |||
.group ॢ // vowel sign l | |||
@@ -171,6 +203,9 @@ | |||
क़ qV | |||
क़ (B q | |||
क्ष kSV | |||
क्ष (B kS | |||
.group ख | |||
ख k#V | |||
ख (B k# | |||
@@ -206,15 +241,20 @@ | |||
ज (B J | |||
ज़ zV | |||
ज़ (B z | |||
ज्ञ gjV | |||
ज्ञ (B gj | |||
.group झ | |||
झ J#V | |||
झ (B J# | |||
.group ञ | |||
ञ n^V | |||
ञ (B n^ | |||
्) ञ (_ n^ | |||
्) ञ (_ n^@ | |||
.group ट | |||
ट t.V | |||
@@ -239,7 +279,7 @@ | |||
ढ़ (B r.h // nukta | |||
.group ण | |||
ण n.V // (temporary) same as dental [n] | |||
ण n.V | |||
ण (B n. | |||
्) ण (_ n.@ | |||
@@ -297,17 +337,19 @@ | |||
न्) म (_ m // n +virama | |||
.group य | |||
य j@ | |||
य jV | |||
य (B j | |||
C) य (_ Ej // [Ej] not [@j] | |||
्) य (_ j@ | |||
.group र | |||
र rV | |||
र (B r | |||
र (_ r | |||
्) र (_ r@ | |||
.group ऱ // rra | |||
ऱ rV // (temporary) same as [r] | |||
ऱ rV // (temporary) same as [r] should this be [r.] or perhaps [z.] ? | |||
ऱ (B r | |||
्) ऱ (_ r@ | |||
@@ -332,21 +374,22 @@ | |||
_) व wV | |||
_) व (B w | |||
_) व (् v // +virma | |||
व (_ w | |||
.group श | |||
श SV | |||
श (B S | |||
.group ष | |||
ष s.V //?? or retroflex [S] | |||
ष (B s. //?? | |||
ष s.V | |||
ष (B s. | |||
.group स | |||
स sV | |||
स (B s | |||
.group ह | |||
ह H | |||
ह HV | |||
ह (B H | |||
@@ -4390,7 +4390,7 @@ elnökét $unstressend | |||
(emelte ki) EmEltE_||ki $unstressend | |||
tagságát $unstressend | |||
(a szakadékot) A'||sAkAde:kot $unstressend | |||
(az országban) Az_'||orsa:gbAn $unstressend | |||
(az országban) Az_'||oR2sa:gbAn $unstressend | |||
eszközét $unstressend | |||
méretű $unstressend | |||
ketyeg $unstressend |
@@ -609,7 +609,7 @@ arcüre) g (gyulladás g | |||
orszá) g (gyarapod g | |||
anya) g (gyár g | |||
anya) g (gyűjt g | |||
végi) g (gya g | |||
végi) g (gy g | |||
me) ggy (mag J | |||
me) ggy (íz J: | |||
bádo) g (gy g | |||
@@ -624,7 +624,7 @@ imádsá) g (gyűjt g | |||
ro) ggyj (ék J: | |||
rá) g (gyűjt g //for example virággyűjtés, virággyűjteményt words | |||
_lo) g (gyűjt g //for example loggyűjtemény word | |||
dro) g (gyanú g | |||
dro) g (gy g | |||
le) gg (roteszk g: | |||
_agya) g (gy g | |||
anya) g (győz g | |||
@@ -649,6 +649,9 @@ csilla) g (gy g | |||
hazugsá) g (gy g | |||
tőze) g (gy g | |||
doppin) g (gy g | |||
baromsá) g (gy g | |||
tehetsé) g (gy g | |||
bete) g (gy g | |||
.group gy | |||
gy J | |||
@@ -773,6 +776,7 @@ _egyszere) gy (e J: | |||
_huszone) gy (e J: | |||
száze) gy (edik J: | |||
védje) gy (straté J | |||
na) gy (sor J | |||
.group h | |||
h h | |||
@@ -827,6 +831,7 @@ progressz) í (ve i: | |||
sz) í (veré i: | |||
sz) í (verő i: | |||
sz) í (vevő i: | |||
expressz) í (v i: | |||
.group j | |||
j j | |||
@@ -1040,6 +1045,7 @@ teljesítmé) ny (j n^ | |||
nem-lts n'Em||_!'Ellt,e:,ES //without this rule Espeak spokening the nem LTS text with one word, because general in hu_list have a $combine attribute the nem word. | |||
n'Em _!'Ellt,e:,ES | |||
porcelá) n (ny n | |||
.group o | |||
o o | |||
@@ -1203,7 +1209,7 @@ juventu) ss s: | |||
juventu) ssz s: //a radio station name | |||
farka) ssz (em Ss | |||
villamo) ssz (ék Ss | |||
titko) ssz (olgál Ss | |||
titko) ssz (olg Ss | |||
karo) ssz (ék Ss | |||
hú) ssz (elet Ss | |||
vörö) ssz (em Ss | |||
@@ -1722,6 +1728,29 @@ visszaélé) ssz Ss | |||
esé) ssz (erű Ss | |||
webe) ssz Ss | |||
beleve) ssz (en s: | |||
tengeré) ssz (ürk s: | |||
hirdeté) ssz S|s | |||
_ki) ssz (éri S|s | |||
_ki) ssz (ersz S|s | |||
_fűté) ssz S|s | |||
_kontaktu) ssz S|s | |||
_dió) ssz (ilá S|s | |||
_konszenzu) ssz S|s | |||
forgá) ssz (er S|s | |||
mérkőzé) ssz S|s | |||
művelődé) ssz S|s | |||
_nyomá) ssz (in S|s | |||
_oko) ssz S|s | |||
oktatá) ssz (er S|s | |||
pszichózi) ssz S|s | |||
realitá) ssz S|s | |||
szerződé) ssz S|s | |||
születé) ssz (ám S|s | |||
tölté) ssz (ak S|s | |||
utazá) ssz (er S|s | |||
zsarolá) ssz (er S|s | |||
dőlé) ssz (ab S|s | |||
.group sz | |||
@@ -1932,6 +1961,7 @@ szögle) t (szob t | |||
diva) t (cirk t | |||
álla) t (cirk t | |||
szen) t (szob t | |||
koncer) t (jeg t | |||
.group tj | |||
C) tj c |
@@ -2,6 +2,8 @@ | |||
// This file is UTF8 encoded | |||
// Spelling-to-phoneme words for Armenian | |||
// ?1 West Armenian | |||
// names of letters | |||
_ա aIb | |||
բ ben | |||
@@ -20,7 +22,7 @@ _ը '@t# | |||
կ ken | |||
հ ho | |||
ձ dza | |||
ղ r"ad | |||
ղ r"at | |||
ճ ce | |||
մ men | |||
յ hi | |||
@@ -30,15 +32,16 @@ _ը '@t# | |||
չ tSa | |||
պ pe | |||
ջ dZe | |||
ռ **a | |||
ռ R2a | |||
ս se | |||
վ vev | |||
տ tyn | |||
ր re | |||
ց tso | |||
ց ts#o | |||
ւ hyn | |||
փ p#yr | |||
ք k#e | |||
և jev | |||
_օ o | |||
ֆ fe | |||
@@ -52,6 +55,24 @@ d di | |||
e e | |||
f ef | |||
// symbols | |||
$ dolar | |||
% տոկոս $text | |||
* աստղանիշ $text | |||
+ գումարած $text | |||
= հավասար $text | |||
_՝ b'ut# | |||
_՞ harts#ak'an | |||
_՛ S'eSt | |||
_։ verdZak'et // U+0589 | |||
_: verdZak'et | |||
_, storak'et | |||
_. midZak'et | |||
_֊ jent#amn'a // hyphen | |||
_՜ bats#akantSut#j'un | |||
_՟ pat'iw | |||
// numbers | |||
@@ -82,5 +103,41 @@ _dpt _sto**ak'el_ | |||
// function words | |||
ես $u+ // pronouns | |||
դու $u+ | |||
եք $u+ | |||
Դուք $u+ | |||
նա $u+ | |||
այն $u+ | |||
մենք $u+ | |||
նրանք $u+ | |||
դուք $u+ | |||
ենք $u+ | |||
են $u+ | |||
այդ $u+ | |||
այս $u+ | |||
դա $u+ | |||
որ $u+ | |||
էր $u+ | |||
մի $u+ | |||
է $u+ | |||
հետ $u+ // prepositions | |||
եվ $u+ // and | |||
իսկ $u+ $brk // and, but | |||
կամ $u+ // or | |||
որը $u+ // which | |||
կարող $u+ // can | |||
// exceptions | |||
ով ov | |||
ովքեր ovk#er |
@@ -2,8 +2,10 @@ | |||
// (consonants are changed for Armenian-West in the voice file "hy-west") | |||
// This file is UTF-8 encoded | |||
// ?1 West Armenian | |||
.L01 բ գ թ կ պ տ ք | |||
.L02 ու այ իւ իյ ոյ // other vowel sounds | |||
.L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||
// ligature | |||
.replace | |||
@@ -12,7 +14,7 @@ | |||
.group ա | |||
ա a | |||
այ aI | |||
այ (K aI | |||
այ (_ a | |||
.group բ | |||
@@ -41,7 +43,7 @@ | |||
.group է | |||
է e | |||
էօ W | |||
էյ eI | |||
էյ (K eI | |||
.group ը | |||
ը @ | |||
@@ -57,7 +59,7 @@ | |||
ի i | |||
իւ y | |||
իւ (_ iv | |||
իյ i@ | |||
իյ (K i@ | |||
.group լ | |||
լ l | |||
@@ -97,8 +99,9 @@ | |||
L02) մ (_ m | |||
.group յ | |||
յ h // ?? [j] | |||
_) յ h // ?? [j] | |||
_) յ (C h@ | |||
յ j | |||
.group ն | |||
ն n | |||
@@ -133,8 +136,8 @@ | |||
_) ջ (C dZ@ | |||
.group ռ | |||
ռ ** | |||
_) ռ (C **@ | |||
ռ R2 | |||
_) ռ (C R2@ | |||
.group ս | |||
ս s | |||
@@ -151,6 +154,7 @@ | |||
.group ր | |||
ր r | |||
L02) ր (L02 * | |||
_) ր (C r@ | |||
C) ր (_ @r | |||
L02) ր (_ r | |||
@@ -178,7 +182,5 @@ | |||
ֆ f | |||
_) ֆ (C f@ | |||
.group | |||
$ dol@ | |||
@@ -36,6 +36,8 @@ _s Es | |||
_t te: | |||
_cap h'o:fdlEt@r | |||
_sub s'8pskrIpt|| | |||
_sup s'yp@rskrIpt|| | |||
_?A l'Et@r | |||
_?? s'imbo:l | |||
@@ -112,7 +114,7 @@ _6X z'Est@x | |||
_7X z'e:v@nt@x | |||
_8X t'Axt@x | |||
_9X n'e:g@nt@x | |||
_0C h'OndErt | |||
_0C h'Ond@rt | |||
_0M1 d'WyzEnt | |||
_0M2 m'iljun | |||
_0M3 m'iljArt | |||
@@ -377,6 +379,7 @@ keten $alt | |||
loochen $alt | |||
oefen $alt | |||
open $alt | |||
reden $alt | |||
regen $alt | |||
reken $alt | |||
schepen $alt | |||
@@ -687,6 +690,7 @@ wapper $alt | |||
water $alt | |||
wedijver $alt | |||
wegwijzer $alt | |||
weiger $alt | |||
wester $alt | |||
wijder $alt | |||
wilder $alt | |||
@@ -1097,6 +1101,7 @@ gijzel $alt | |||
gispel $alt | |||
gniffel $alt | |||
goochel $alt | |||
googel $alt | |||
gorgel $alt | |||
grabbel $alt | |||
grendel $alt | |||
@@ -1403,6 +1408,7 @@ vondel $alt | |||
accessoire aksEsw'ar@ | |||
accessoires aksEsw'ar@s | |||
actiepunt Aksip8nt | |||
actieve Akt'iv@ | |||
adhesie Ath'e:zi | |||
agenda $2 | |||
aldus Ald'8s | |||
@@ -1452,6 +1458,7 @@ december $2 | |||
desillusie dEsIlyzi | |||
dieet $2 | |||
diesel diz@l | |||
diner din'e: | |||
//discussie $2 | |||
divers div'Ers | |||
diftongering dIft,ON'e:rIN | |||
@@ -1461,6 +1468,7 @@ eensgelijks e:nsQ@l'EIks | |||
elfstedentocht ,Elf'ste:d@ntoQt | |||
embouchuur A~buS'yr // embouchure | |||
enorm $2 | |||
enquête A~k'Et@ $alt2 | |||
erosie e:r'o:zi | |||
eucharistie $4 | |||
explosie $2 | |||
@@ -1484,6 +1492,9 @@ informatie $3 | |||
invasie $2 | |||
januari $3 | |||
kadaster $2 | |||
leesregel le:sre:Q@l | |||
lunch l8nS | |||
lunches l8nS@s | |||
mangat $alt3 | |||
materie ma:t'e:ri | |||
maatregel ma:tre:Q@l $alt2 | |||
@@ -1529,6 +1540,7 @@ ongerieflijk $3 | |||
partijvoorzitters $2 | |||
periferie pI:rifI:r'i | |||
pistache pist'AS | |||
privilege privil'e:Z@ $alt2 | |||
proces $2 | |||
projectielen $3 | |||
renaissance rEne:s'A~s@ | |||
@@ -1546,13 +1558,16 @@ serie sI:ri | |||
sms'jes EsEm'Es_j@s | |||
spektakel $2 | |||
tegennatuur $4 | |||
tralie $1 | |||
travestie $3 | |||
verderop $3 | |||
vergezicht vErQ@zIxt | |||
verre vEr@ | |||
verrekijker vEr@kEIk@r | |||
verste vErst@ | |||
verte vErt@ | |||
volledig $2 | |||
voordeel $1 | |||
vrouwengek $alt3 | |||
waarschijnlijk $2 | |||
wanen v#a:n@n |
@@ -20,15 +20,17 @@ | |||
@@C) a (_ =a: | |||
_) aan (@P3 'a:n | |||
@) aar (_S3 a:r | |||
@) aard (_S4 a:rt | |||
&) aar (_S3 a:r | |||
&) aard (_S4 a:rt | |||
aa (rd_ 'a: | |||
aa (C_ 'a: | |||
z) aa (m_ a: | |||
t) a (bleau a: | |||
@) abel (_ 'a:b@l | |||
@) abele (_ 'a:b@l@ | |||
@) ace (_ e:s // ?? interface | |||
m) ach (in %a:S | |||
_) actie (@P5 'Aksi | |||
_) af (C@P2 'Af | |||
_) affich %AfiS | |||
age (_ 'a:Z@ | |||
@@ -64,11 +66,16 @@ | |||
baan ba:n | |||
&) baar (_S4 =ba:r | |||
&) bare (_S4 =ba:r@ | |||
_) bedrijfs (@P8 b@dr'EIfs | |||
_) belasting (@P9 b@l'AstIN | |||
_) beleids (@P7 b@l'EIts | |||
_) bij (C@P3 b'EI | |||
bij (zond b%i | |||
_) bijeen bEI'e:n | |||
_) binnen (P6 b'In@n | |||
_) boek (@P4 b'uk | |||
_) boven (P5 b'o:v@n | |||
_) braille (@P7 br'Aj@ | |||
_) brand br'And | |||
_) buiten (P6 b'Wyt@n | |||
_) buurt (@@P5 b'yrt // buurtbewoner | |||
@@ -100,6 +107,7 @@ | |||
_) be (zem be: | |||
_) be (zig be: | |||
_) beu bY: | |||
_) bezoekers (@P9 b@z'uk@rs | |||
.group c | |||
@@ -114,9 +122,12 @@ | |||
@) ci (ë S | |||
ci (o S | |||
ck k | |||
ces (_ s'Es | |||
coach ko:tS | |||
_) computer (@P8 kOmpj'ut@r | |||
_) congres kOnQr'Es | |||
_) concentratie (@P12 kOnsEntr'a:tsi | |||
co (ncert k%O | |||
@@ -239,7 +250,7 @@ | |||
&) end (_ @nd | |||
&) ende (_S1 @ | |||
&) enden (_S2 @n | |||
eden e:d@n | |||
eden (_ e:d@n // ?? | |||
@) ent (_ 'Ent | |||
@) ent (e_ 'Ent | |||
@) ent (en_ 'Ent | |||
@@ -253,6 +264,7 @@ | |||
@z) es (_S1 s | |||
@) es (_S2qd 'Es // double the previous vowel | |||
@) es (_$w_alt2S1 s // just remove 's' | |||
@) e (s_$p_alt2+S1 s | |||
KAC) es (_S2e @s | |||
mb) es (_S1 s | |||
nd) es (_S1 s | |||
@@ -273,6 +285,7 @@ | |||
@) eur (_ 'Y:r | |||
&) e (nB@ E2 | |||
&) e (ntig @ | |||
_p) e (nibel e: | |||
id) e (nt E | |||
pres) e (nt E | |||
@@ -315,11 +328,14 @@ | |||
er (ij_ @r | |||
tol) er (abel @r | |||
mis) er (abel @r | |||
hond) er (d_ @r | |||
_) erger ErQ@r // ergeren | |||
&) era (_ @ra: | |||
@) er (aar_ @r | |||
&) er (C@ E2r | |||
.group ê | |||
ê E | |||
.group f | |||
f f | |||
@@ -334,17 +350,21 @@ | |||
@) gi (eus Z | |||
@) gi (euz Z | |||
reli) gi (eu Qij | |||
_) goog (el gu:g | |||
.group ge | |||
_) ge (@P2 Q@ | |||
ge (bied Q@ | |||
_) gebruikers (@P10 Q@br'Wyk@rs | |||
_) gee Qe: | |||
_) gei QEI | |||
gener (aal Q,e:n@r | |||
_) gelijk Q@lEIk | |||
_) ge (lC QE | |||
_) ge (rC QE | |||
_) ge (lenL02 Qe: | |||
_) ge (tenL02 Qe: | |||
_) geu QY: | |||
_) ge (ven Qe: | |||
_) ge (ver Qe: | |||
@@ -365,6 +385,7 @@ | |||
_) herinn h%ErIn // herinneren | |||
_) hersen h'Ers@n | |||
&) heid (_S4 hEIt | |||
_) honden (@P6 h'Ond@n | |||
_) hulp (@@P4 h'8lp | |||
@@ -425,10 +446,11 @@ | |||
&) ika (_ =ika: | |||
&) iko (_ =iko: | |||
_) in (C@P2 'In | |||
// _) in (gP2 'In | |||
_) in (do In | |||
ine (_ 'in@ | |||
ines (_ 'in@s | |||
_) inn (@P2 'I // ?? inneren | |||
_) inter Int@r | |||
io (nage iO | |||
io (de_ i'o: | |||
iodes (_ i'o:d@s | |||
@@ -439,10 +461,12 @@ | |||
@) isme (_ 'Ism@ | |||
@) ist (_ 'Ist | |||
@) isten (_ 'Ist@n | |||
_) inn (@P2 'I // ?? inneren | |||
.group j | |||
j j | |||
_) jaar (@P4 j'a:r | |||
jaar (lijk ja:r | |||
jou (rna Zu | |||
@@ -451,6 +475,9 @@ _) inn (@P2 'I // ?? inneren | |||
k) k | |||
_) kale (nde ka:l'E | |||
_) kantoor (@P7 kAnt'o:r | |||
_) keuze (@P5 k'Y:z@ | |||
_) kinder (@P6 k'Ind@r | |||
kokkerel kOk@r'El | |||
_) koning k'o:nIN // in compounds | |||
_) koningin ko:nIQ'In | |||
@@ -465,10 +492,14 @@ _) inn (@P2 'I // ?? inneren | |||
&) lijker (_S6 l@k@r | |||
&) lijkere (_S7 l@k@r@ | |||
&) lijkheid (_S8 l@khEIt | |||
&) lijkheden (_S9 l@khe:d@n | |||
// &) lijks@ (_ l@ks@ | |||
&) lijkst (_S6 l@kst | |||
&) lijkste (_S7 l@kst@ | |||
&) laan (_S4 la:n | |||
_) lange (@P5 laN@ | |||
_) liefdes (@P7 l'ifd@s | |||
@) loog (_ lo:x | |||
@) loos (_S4 lo:s | |||
@) loze (_S4 lo:z@ | |||
@@ -482,6 +513,7 @@ _) inn (@P2 'I // ?? inneren | |||
management ma:nIdZm@nt | |||
_) mee (@P3 m'e: | |||
_) mee (rC mI: | |||
menu (_ m@ny | |||
_) mi (cro mi | |||
_) mi (s@ m%I | |||
@@ -498,6 +530,7 @@ _) inn (@P2 'I // ?? inneren | |||
_) mis (loP3 m'Is | |||
_) mis (tA m'Is | |||
_) misver (@ m'Isf@r | |||
_) muziek (@P6 myz'ik | |||
.group n | |||
n n | |||
@@ -512,6 +545,7 @@ _) inn (@P2 'I // ?? inneren | |||
_) na (C@N n'a: | |||
_) na (C% nA | |||
_) na (cht nA | |||
_) najaars (@P7 n'a:ja:rs | |||
_) narci (s n%ArsI | |||
_) na (rc n%A | |||
_) na (der na: | |||
@@ -524,10 +558,11 @@ _) inn (@P2 'I // ?? inneren | |||
na (vig n%a: | |||
_) na (vr na: | |||
_) na (volg@ n%a: | |||
_) noord (@P5 no:rd | |||
_) nieuws (@P6 n'iws | |||
@@) nis (_S3 nIs | |||
@@) nisen (_S5 nIs@n | |||
_) noord (@P5 no:rd | |||
_) notitie (@P7 no:t'itsi | |||
.group o | |||
@@ -571,6 +606,8 @@ _) inn (@P2 'I // ?? inneren | |||
tr) ou (vail u | |||
ouve (rtu uvE | |||
_) over (@P4 ,o:v@r | |||
_) overigen o:v@r@Q@n | |||
_) overheid 'o:v@rhEIt | |||
t) ou (r u: | |||
@@ -628,20 +665,25 @@ _) inn (@P2 'I // ?? inneren | |||
C) r (A r | |||
rr *r | |||
recherch r@SErS | |||
revanch r@vA~nS | |||
route rut@ // route(s) | |||
.group re | |||
_) re (geren r@ | |||
_) re (geer r@ | |||
_) regel re:Q@l | |||
_) re (cent r@ | |||
_) re (cept r@ | |||
_) re (ceptief re: | |||
_) re (ces r@ | |||
_) re (clam r@ | |||
_) register r@Q'Ist@r | |||
reme (die r@m'e: | |||
_) re (serve_ r@ | |||
_) re (cord re' | |||
_) regering r@Q'I:rIN | |||
repre (saill re:pre: | |||
recherch r@SErS | |||
revanch r@vA~nS | |||
.group s | |||
@@ -677,7 +719,10 @@ _) inn (@P2 'I // ?? inneren | |||
@) ssi (o S | |||
CAr) sie (_ =zi | |||
_) stads (@P5 st'Ats | |||
_) stage (@P5 st'a:Z@ | |||
_) standaard (@P9 st'Anda:rt | |||
_) start (@P5 st'Art | |||
@) straat (_S6 stra:t | |||
_vre) s (e s | |||
@@ -767,9 +812,12 @@ _) inn (@P2 'I // ?? inneren | |||
_) ver (@P3 v@r | |||
_) ver (sie_ vEr | |||
_) verder vErd@r | |||
_) verge (@P5 vErg@ | |||
_) verge (le v@rQ'e: | |||
_) verkeers (@P8 v@rk'I:rs | |||
// _) verge (@P5 vErg@ | |||
// _) verge (le v@rQ'e: | |||
_) voorjaars (@P9 v'O:rja:rs | |||
_) voort (@P5 v'O:rt | |||
_) vrijwilligers (@P13 vrEIv#'Il@Q@rs | |||
.group w | |||
@@ -788,11 +836,15 @@ _) inn (@P2 'I // ?? inneren | |||
_) wanstaltig v#Anst'Alt@Q | |||
_) wantrouwig v#Antr'VU@Q | |||
_) wanvoeglijk v#Anv'uxl@k | |||
_) water (@P5 v#'a:t@r | |||
_) weers (@P5 v#'I:rs | |||
_) weg (@P3 v#'EQ | |||
_) weg (en v#e:Q | |||
_) weg (e_ v#e:Q // bewegelijk | |||
_) werk (@P4 v#'Erk | |||
_) west (@P4 v#Est | |||
_) wr vr | |||
_) woon (@P4 v#'o:n | |||
_) wr (@ vr | |||
.group x |
@@ -371,12 +371,12 @@ | |||
ੱ) ਯ (_ j: | |||
.group ਰ | |||
ਰ RV | |||
ਰ (B R | |||
@) ਰ (_ R | |||
ੱ) ਰ R:V | |||
ੱ) ਰ (B R: | |||
ੱ) ਰ (_ R: | |||
ਰ rV | |||
ਰ (B r | |||
@) ਰ (_ r | |||
ੱ) ਰ r:V | |||
ੱ) ਰ (B r: | |||
ੱ) ਰ (_ r: | |||
.group ਲ | |||
ਲ lV |
@@ -121,8 +121,8 @@ _w vu | |||
x iks | |||
y 'igREk | |||
_z zEt | |||
ż Z;Et | |||
ź ZEt | |||
ż ZEt | |||
ź Z;Et | |||
ä $accent | |||
ö $accent |
@@ -23,8 +23,8 @@ | |||
// accent names | |||
_lig ligad'u*& | |||
_acu &g'udU | |||
_ac2 &g'udUd'uplU | |||
_acu ag'udU | |||
_ac2 ag'udUd'uplU | |||
_brv bR'Evi | |||
_ced sedZ'ilj& | |||
?1 _ced syd'il^& | |||
@@ -69,6 +69,8 @@ v ve // not Roman numbers | |||
x Sis# | |||
_cap maI'uskulU | |||
_sub ||subskR'itU | |||
_sup ||sob*eskR'itU | |||
_?A l'etR&_ | |||
_?? s'imbolU_ | |||
_#32 esp'asU | |||
@@ -81,9 +83,10 @@ _#9 tab | |||
+ maIs# $max3 | |||
% pors'eINtU $max3 | |||
& _'e_ | |||
@ &x'ob& | |||
@ ax'ob& | |||
¤ 'eU*U | |||
€ 'eU*U | |||
£ l'ibR& | |||
§ p&*'agRafU | |||
@@ -115,8 +118,9 @@ _[ ,abRikowS'etSi | |||
_\ b,ax&,iNvertS'id& | |||
_] f,ES&kowS'etSi | |||
_^ s,irku~Nfl'Eksu | |||
_´ as'eINtu,ag'udU | |||
__ s,ublin^'adu | |||
_` gR'avi | |||
_` gR'avi | |||
_{ ,abRiS'avi | |||
?1 _| b,ax&v,ertSik'al | |||
?2 _| b,ax&v,ertSik'aU | |||
@@ -127,8 +131,10 @@ _¡ ,eskl&mas,&U~,iNvertS'id& | |||
_¿ ,iNtex,ogas,&U~,iNvertS'id& | |||
_" 'abRi;'asp&||d'upl&s# | |||
_º Oz'in^U | |||
_ª az'in^U | |||
?1 º O*@-din'almaskul'i~nU | |||
?2 º o*@-dZin'aUmaskul'i~nU | |||
?1 ª O*@-din'alfemin'i~nU | |||
?2 ª o*@-dZin'aUfemin'i~nU | |||
° gR'aU | |||
@@ -182,12 +188,12 @@ _8X oIt'eINt& | |||
?2 _9X nov'eINt& | |||
_1C0 s'eIN | |||
?1_0C s'eINtus# | |||
?2_0C s'eINtUs# | |||
?2_0C s'eINtUz | |||
_1C s'eINtu | |||
?1_2C duz'eINtus# | |||
?2_2C duz'eINtUz | |||
?1_3C tryz'eNtus# | |||
?2_3C tRez'eNtUz | |||
?1_3C tryz'eINtus# | |||
?2_3C tRez'eINtUz | |||
?1_5C kin^'eINtus# | |||
?2_5C kin^'eINtUz | |||
?1_0M1 m'il_ | |||
@@ -293,13 +299,16 @@ unts $abbrev | |||
usb $abbrev | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
prof pr'Of $dot | |||
dr dowtor $dot | |||
dra dowt'o*& $dot | |||
mr m'ister $dot | |||
mrs m'irsys $dot | |||
prof pR'Of $dot | |||
profº pR,ofes'or | |||
profª pR,ofes'o*& | |||
engº eInZen^'eI*U | |||
engª eInZen^'eI*& | |||
nº n'u~me*U | |||
sr $dot | |||
?1 sra ,Es;'Errj'a $dot | |||
?2 sra $dot | |||
@@ -333,7 +342,7 @@ me $u $verbf // reflexive | |||
te $u $verbf | |||
nos $u $nounf | |||
la $u | |||
lo $u | |||
lo lU $u | |||
las $u | |||
los $u | |||
se $u | |||
@@ -348,11 +357,10 @@ essa 'Es& $u+ $noun | |||
desse $u+ $nounf | |||
desta $nounf | |||
nesse n'esy $u+ $nounf | |||
aquele &k'ely $u+ $nounf // that | |||
aquela $u+ $nounf | |||
daquele d&k'ely $u+ $nounf | |||
aquele $alt2 $nounf | |||
daquela $u+ $nounf | |||
daquele $alt2 $nounf | |||
que $u // pronunciation is in pt_rules | |||
// possessive adjectives | |||
@@ -374,7 +382,7 @@ nele nely $u1+ | |||
// prepositions | |||
de $u $nounf // of,from | |||
do $u $nounf | |||
do du $u $nounf | |||
da $u $nounf | |||
dos $u $nounf | |||
das $u $nounf | |||
@@ -384,7 +392,7 @@ duns $u $nounf | |||
dumas $u $nounf | |||
em $u $noun // in,on,at | |||
no nu $u $nounf | |||
no nU $u $nounf | |||
na $u $nounf | |||
num $u $nounf | |||
numa $u $nounf | |||
@@ -402,7 +410,7 @@ aos $u $nounf | |||
às ,a:s $nounf | |||
para $u // for,to | |||
pro $u $nounf | |||
pro pRU $u $nounf | |||
pra $u $nounf | |||
pros $u $nounf | |||
pras $u $nounf | |||
@@ -426,7 +434,7 @@ com $u // with | |||
// conjunctions | |||
?1 e i $u // and | |||
?2 e i $u // and | |||
se $u+ $verbf // if | |||
se $u+ // if | |||
?2 mas $u // but | |||
@@ -592,10 +600,10 @@ pôde $u+ | |||
pudemos $u+ | |||
puderam $u+ | |||
poderei $u3+ | |||
poderá $u3+ | |||
poderemos $u+ | |||
poderão $u+ | |||
poderei p%ode*eI $u+ | |||
poderá p%ode*a $u+ | |||
poderemos p%ode*'emUs $u+ | |||
podeão p%ode*&U~ $u+ | |||
// ir - to go (used to make future tense) | |||
@@ -636,8 +644,10 @@ jamais $u+ $verbf | |||
abacaxi abakaSy | |||
abordo $alt | |||
aborto $alt $verb | |||
absorta $alt2 | |||
acerto $alt2 $noun | |||
acertos $alt2 | |||
acocho $alt2 $noun | |||
acordo $alt $verb | |||
acervo $alt2 | |||
adepto $alt | |||
@@ -645,14 +655,19 @@ adore $alt | |||
adorno $alt $verb | |||
aeroporto $alt2 | |||
aeroportos $alt | |||
albatrozes $alt | |||
alcateia $alt | |||
alcova $alt2 | |||
alegro $alt2 $noun | |||
alferes $alt | |||
algozes $alt | |||
almoço $alt $verb | |||
ameba $alt | |||
amores $alt2 | |||
amorno $alt | |||
amuleto $alt2 | |||
ampere $alt | |||
ampola $alt2 | |||
ampulheta $alt2 | |||
andorra $alt2 | |||
antonieta $alt2 | |||
apego $alt2 $noun | |||
apelo $alt2 $noun | |||
@@ -662,25 +677,31 @@ apneia $alt | |||
apoio $alt $verb | |||
arredores $alt | |||
arremesso $alt2 $noun | |||
arrocho $alt2 $noun | |||
arroto $alt2 $noun | |||
arroz $alt2 | |||
assembleia $alt | |||
assopro $alt2 $noun | |||
ateia $alt | |||
aterro $alt2 | |||
aterro $alt $verb | |||
atmosfera $alt | |||
atrozes $alt | |||
autora $alt2 | |||
avesso $alt2 | |||
axé aSE | |||
azeda $alt $verb | |||
azedo $alt $verb | |||
bairro b'aIxU | |||
baqueta $alt2 | |||
banqueta $alt2 | |||
banquete $alt2 | |||
bastonete $alt2 | |||
beco $alt2 | |||
besta $alt2 | |||
bilhete $alt2 | |||
bissulfeto $alt2 | |||
boca $alt2 | |||
boceta $alt2 | |||
bochecha $alt2 | |||
bofe $alt | |||
bojo $alt2 | |||
boleia $alt | |||
bolero $alt | |||
@@ -691,36 +712,47 @@ bordo $alt | |||
borra $alt2 $noun | |||
bosque $alt | |||
boto $alt2 $noun | |||
boxe $alt | |||
boxe $alt | |||
brejo $alt | |||
bromelha $alt | |||
broto $alt2 $noun | |||
cabelo $alt2 | |||
cabresto $alt2 | |||
cacete $alt2 | |||
cachorra $alt2 | |||
caderneta $alt2 | |||
cadete $alt2 | |||
cãibra k'&~IbR& | |||
caibro k'aIbRU | |||
caixeta $alt2 | |||
camelha $alt | |||
camelo $alt2 | |||
caminhonete $alt | |||
camiseta $alt2 | |||
canaleta $alt2 | |||
canhoto $alt2 | |||
cantora $alt2 | |||
capacete $alt2 | |||
caractere $alt | |||
carbureto $alt2 | |||
careta $alt2 | |||
carrapeta $alt2 | |||
carreta $alt2 | |||
carroça $alt | |||
casebre $alt | |||
cateto $alt2 | |||
catorze $alt2 | |||
cebola $alt2 | |||
cedro $alt | |||
cefaleia $alt | |||
cerebelo $alt2 | |||
centopeia $alt | |||
cerca $alt | |||
cerca $alt2 $noun | |||
cerco $alt $verb | |||
chamego $alt2 | |||
cerda $alt | |||
cetro $alt | |||
chamego $alt2 $verb | |||
chaveta $alt2 | |||
chefe $alt | |||
checam $alt | |||
choro $alt2 $noun | |||
@@ -728,10 +760,11 @@ chovesse $alt2 | |||
chupeta $alt2 | |||
clamores $alt2 | |||
clero $alt | |||
cloreto $alt2 | |||
coche $alt2 | |||
coco $alt2 | |||
cofre $alt | |||
coice $alt2 | |||
colabore $alt | |||
colete $alt2 | |||
colchete $alt2 | |||
colher $alt $noun | |||
@@ -746,6 +779,7 @@ concordo $alt | |||
conforto $alt $verb | |||
console $alt2 $noun | |||
consolo $alt2 $noun | |||
constroem $alt | |||
controle $alt2 $noun | |||
controles $alt2 | |||
controles $alt $verb | |||
@@ -754,24 +788,32 @@ coreia $alt | |||
coreto $alt2 | |||
corneta $alt2 | |||
cornos $alt | |||
coro $alt2 | |||
coro $alt $verb | |||
corpos $alt | |||
corto $alt | |||
corveta $alt2 | |||
corvos $alt | |||
costeleta $alt2 | |||
coto $alt2 | |||
cotovelo $alt2 | |||
cratera $alt | |||
crede $alt2 | |||
credo $alt | |||
crepe $alt | |||
decore $alt | |||
decoro $alt2 $noun | |||
degelo $alt2 | |||
desapego $alt2 $noun | |||
descordo $alt | |||
desemprego $alt2 | |||
desemprego $alt $verb | |||
desespero $alt2 $noun | |||
desespero $alt2 | |||
desespero $alt $verb | |||
desfecho $alt2 | |||
desmantelo $alt2 $noun | |||
despojo $alt2 $noun | |||
despojos $alt | |||
desporto $alt2 | |||
desportos $alt | |||
desprezo $alt2 $noun | |||
@@ -786,10 +828,13 @@ dez $alt | |||
diarreia $alt | |||
diego $alt2 | |||
discordo $alt | |||
dobro $alt2 $noun | |||
dissabores $alt2 | |||
dispneia dZIspyn'EI& | |||
dobro $alt2 | |||
dobro $alt $verb | |||
doce $alt2 | |||
doutora $alt2 | |||
droga $alt | |||
doze $alt2 | |||
dueto $alt2 | |||
elixir eliSir | |||
emprego $alt2 $noun | |||
@@ -801,9 +846,9 @@ engordo $alt | |||
enredo $alt $verb | |||
enrosco $alt $verb | |||
enterro $alt2 $noun | |||
enumerem $alt | |||
entorto $alt | |||
entroso $alt | |||
envelope $alt | |||
envolto $alt2 | |||
enxaqueca $alt2 | |||
enxerto $alt2 $noun | |||
epopeia $alt | |||
@@ -812,10 +857,10 @@ erro $alt2 | |||
erro $alt $verb | |||
esboço $alt $verb | |||
escopeta $alt2 | |||
escova $alt2 $noun | |||
escovas $alt2 | |||
escore $alt | |||
escova $alt2 | |||
escova $alt $verb | |||
escovo $alt | |||
escroto $alt2 | |||
esforço $alt $verb | |||
esforços $alt | |||
esgoto $alt2 | |||
@@ -827,27 +872,30 @@ espoleta $alt2 | |||
esposa $alt2 | |||
esqueleto $alt2 | |||
estilete $alt2 | |||
estrela $alt2 | |||
estrofe $alt | |||
estorno $alt $verb | |||
estorvo $alt $verb | |||
estrela $alt2 | |||
estrofe $alt | |||
estrogonofe $alt | |||
eta $alt2 | |||
etiqueta $alt2 | |||
europa $alt | |||
europeia $alt | |||
exagero $alt $verb | |||
explore $alt | |||
faceta $alt2 | |||
fantoche $alt | |||
falangeta $alt2 | |||
farofa $alt | |||
farolete $alt2 | |||
farolete $alt2 | |||
febre $alt | |||
fera $alt | |||
feitora $alt2 | |||
ferozes $alt | |||
fezes $alt | |||
filete $alt2 | |||
?1 fixe fiSy | |||
flerte $alt2 $noun | |||
foda $alt2 $verb | |||
fodo $alt2 | |||
fogos $alt | |||
foguete $alt2 | |||
foice $alt2 | |||
@@ -855,56 +903,72 @@ folheto $alt2 | |||
fora $alt | |||
fora $alt2 $verb | |||
forca $alt2 | |||
força $alt2 $noun | |||
forças $alt2 | |||
força $alt2 | |||
força $alt $verb | |||
forço $alt | |||
formos $alt2 | |||
forro $alt $verb | |||
frevo $alt2 | |||
fulgores $alt2 | |||
galera $alt | |||
galeto $alt2 | |||
galhofa $alt | |||
galileia $alt | |||
gameta $alt2 | |||
garçonete $alt2 | |||
gangorra $alt2 | |||
geleia $alt | |||
gelo $alt2 | |||
gelo $alt $verb | |||
genebra $alt | |||
gesso $alt2 | |||
golpe $alt | |||
gloso $alt | |||
gonorreia $alt | |||
gol gow | |||
golpe $alt | |||
gorda $alt2 | |||
gorjeta $alt2 | |||
gosto $alt $verb | |||
gota $alt2 | |||
governo $alt2 $noun | |||
governo $alt2 | |||
governo $alt $verb | |||
gozo $alt2 $noun | |||
graveto $alt2 | |||
grelha $alt | |||
groselha $alt | |||
grosso $alt2 | |||
grozo $alt $verb | |||
groso $alt | |||
gueto $alt2 | |||
hemorroida $alt | |||
hoje $alt2 | |||
horrores $alt2 | |||
humores $alt2 | |||
ideia $alt | |||
imberbe $alt | |||
interesse $alt2 | |||
interesse $alt $verb | |||
jogo $alt2 $noun | |||
iodo $alt2 | |||
ioga $alt | |||
jereba $alt | |||
jogo $alt2 | |||
jogo $alt $verb | |||
jogos $alt | |||
joguete $alt2 | |||
lagosta $alt2 | |||
lambreta $alt2 | |||
lanchonete $alt | |||
lebre $alt | |||
leitora $alt2 | |||
lembrete $alt2 | |||
lepra $alt | |||
leste $alt2 $verb | |||
?2 lhe l^y | |||
lingueta $alt2 | |||
lisboeta $alt2 | |||
lodo $alt2 | |||
logro $alt | |||
lopes $alt | |||
macete $alt2 | |||
maior $alt | |||
maleta $alt2 | |||
marionete $alt | |||
maniçoba $alt | |||
marieta $alt2 | |||
marreta $alt2 | |||
megera $alt | |||
melhor $alt | |||
@@ -914,16 +978,13 @@ merda $alt | |||
meta $alt $noun | |||
meteoro $alt | |||
metro $alt | |||
mexa m'eS& | |||
mexi meS'i | |||
mexo m'eSU | |||
minueto $alt2 | |||
miolo $alt2 | |||
miolos $alt | |||
modelo $alt2 | |||
modelo $alt $verb | |||
moeda $alt | |||
moem $alt | |||
moem $alt | |||
mofo $alt $verb | |||
molho $alt2 $noun | |||
monera $alt | |||
@@ -933,10 +994,7 @@ moreia $alt | |||
mortos $alt | |||
motora $alt2 | |||
mui mwi | |||
muito mw'iNtU // -s is included as a suffix | |||
muita mw'iNt& | |||
mulher $alt | |||
mulheres $alt | |||
muleta $alt2 | |||
mureta $alt2 | |||
mutreta $alt2 | |||
namoro $alt2 $noun | |||
@@ -946,11 +1004,10 @@ nervo $alt2 | |||
nojo $alt2 | |||
novelo $alt2 | |||
novos $alt | |||
obstetra $alt | |||
odisseia $alt | |||
onu $1 | |||
olho $alt2 $noun | |||
olhos $alt | |||
olho $alt2 $noun | |||
olhos $alt | |||
onomatopeia $alt | |||
opereta $alt2 | |||
ordens $alt | |||
@@ -961,29 +1018,39 @@ ovelha $alt2 | |||
ovos $alt | |||
pachorra $alt2 | |||
paexa paeSa | |||
paella pa'el^& | |||
palacete $alt2 | |||
paleta $alt2 | |||
palheta $alt2 | |||
panfleto $alt2 | |||
pangeia $alt | |||
pantera $alt | |||
papoco $alt2 $noun | |||
parede $alt2 | |||
pastora $alt2 | |||
patinete $alt | |||
peba $alt | |||
pedra $alt | |||
pela $alt $verb | |||
pelo $alt2 | |||
pelo $alt $verb | |||
pereba $alt | |||
peroba $alt | |||
peseta $alt2 | |||
peso $alt $verb | |||
piloto $alt2 $noun | |||
pintora $alt2 | |||
pior $alt | |||
pipoco $alt2 $noun | |||
pirueta $alt2 | |||
plaqueta $alt2 | |||
plateia $alt | |||
plebeia $alt | |||
polca $alt | |||
pompeia $alt | |||
porcos $alt | |||
porque $alt2 | |||
porra $alt2 | |||
porreta $alt2 | |||
porrete $alt2 | |||
porto $alt2 | |||
portos $alt | |||
@@ -991,13 +1058,19 @@ pose $alt2 | |||
povos $alt | |||
poxa p'oS& | |||
primavera $alt | |||
primores $alt2 | |||
proso $alt | |||
prosopopeia $alt | |||
proveta $alt2 | |||
quarteto $alt2 | |||
queda $alt | |||
quede $alt2 | |||
quitinete $alt | |||
quinteto $alt2 | |||
ramalhete $alt2 | |||
raposa $alt2 | |||
recomeço $alt $verb | |||
reconstroem $alt | |||
recordo $alt | |||
recorto $alt | |||
rede $alt2 | |||
@@ -1006,23 +1079,29 @@ reembolso $alt $verb | |||
reforço $alt $verb | |||
reforços $alt | |||
refresco $alt $verb | |||
rego $alt2 $noun | |||
reitora $alt2 | |||
rejo $alt | |||
relevo $alt2 $noun | |||
remoem $alt | |||
remorso $alt | |||
renovo $alt $verb | |||
retorno $alt $verb | |||
reuva x'EUv& | |||
reuva x'EUv& | |||
rigores $alt2 | |||
rixa x'iS& | |||
rocha $alt | |||
risoto $alt2 | |||
rock $alt | |||
roem $alt | |||
roem $alt | |||
rola $alt2 $noun | |||
roleta $alt2 | |||
rolete $alt2 | |||
rolo $alt2 $noun | |||
rota $alt2 | |||
rota $alt $noun | |||
rubores $alt2 | |||
rumores $alt2 | |||
sabonete $alt2 | |||
sabores $alt2 | |||
saibro s'aIbRU | |||
saleta $alt2 | |||
sarjeta $alt2 | |||
seborreia $alt | |||
@@ -1047,27 +1126,32 @@ sossego $alt2 $noun | |||
suborno $alt $verb | |||
sufoco $alt2 $noun | |||
sufocos $alt2 | |||
sulfeto $alt2 | |||
sulfureto $alt2 | |||
super s'Uper | |||
suporto $alt | |||
suor swOr | |||
sutiã sutSi'&~N | |||
tapete $alt2 | |||
temores $alt2 | |||
tempero $alt2 $noun | |||
tenores $alt2 | |||
tenores $alt2 | |||
terrores $alt2 | |||
teta $alt2 | |||
tetra $alt | |||
tocha $alt | |||
toga $alt | |||
topo $alt $verb | |||
topo $alt2 $noun | |||
torno $alt $verb | |||
tornozelo $alt2 | |||
torre $alt2 $noun | |||
torres $alt2 | |||
torro $alt | |||
tortos $alt | |||
toso $alt | |||
transtorno $alt $verb | |||
traqueia $alt | |||
travesso $alt2 | |||
tremores $alt2 | |||
treta $alt2 | |||
trevo $alt2 | |||
troco $alt2 $noun | |||
tropa $alt | |||
@@ -1076,23 +1160,26 @@ trombeta $alt2 | |||
tumores $alt2 | |||
valeta $alt2 | |||
vanessa $alt2 | |||
velozes $alt | |||
vareta $alt2 | |||
vera $alt | |||
verbete $alt2 | |||
violeta $alt2 | |||
violoncelo $alt | |||
voga $alt | |||
vozes $alt | |||
xarope $alt | |||
xereta $alt2 | |||
zelo $alt2 $noun | |||
zorra $alt2 | |||
// foreign words | |||
?1 alt 'alt | |||
?2 agosto &g'ostU | |||
?2 agosto ag'ostU | |||
?1 back b'Ek | |||
?2 backup bEk'&p | |||
?2 backups bEk'&ps | |||
beatle b'itow | |||
beatles b'itows | |||
blind bl'aind | |||
book buk | |||
?1 braille b:r'aily | |||
@@ -1108,11 +1195,12 @@ book buk | |||
?1 dj d,i:dZ'eI | |||
?1 down d'a,wn | |||
?1 download d'a,wnl'oud | |||
?2 download daUNl'owd | |||
?2 download daUNl'owd | |||
?2 downloads daUNl'owds | |||
?3 download dau~Nl'owd | |||
drive dR'aivy | |||
driver dR'aiver | |||
drivers dR'aiveRs | |||
drive dR'aIv | |||
driver dR'aIver | |||
drivers dR'aIveRs | |||
?1 end 'end | |||
?2 esc 'Esk | |||
?3 esc 'EskI | |||
@@ -1139,7 +1227,7 @@ drivers dR'aiveRs | |||
laptop lEptOp | |||
?1 line l'ain | |||
layout l'eI,aUt | |||
?2 logo l'OgU | |||
?2 login logiN | |||
?1 lock l'Ok | |||
mail m'eIl | |||
mails m'eIls | |||
@@ -1158,22 +1246,28 @@ python p'aIT&~N | |||
?1 readme r'i:dmi: | |||
?1 sapi s,ap'i | |||
?1 scanner sk'En&r | |||
sky sk'ay | |||
shake S'eIk | |||
?1 shift S'ift | |||
?1 scroll sk:r'ol | |||
?1 site s'aIt | |||
?2 site s'aItSi | |||
?2 shampoo S&mpu | |||
?1 software s'Oft,w'Er- | |||
símbolo s'imbolU | |||
?4 símbolo s'iNbolU | |||
?2 software s'Oftwe@- | |||
?1 space sp'eIsy | |||
?2 space sp'eIs | |||
?1 sporting sp'Ort,ing | |||
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 | |||
update &pd'eIt | |||
upgrade &pgR'eId | |||
upload &pl'oud | |||
?2 web w'Eb | |||
?1 yahoo 'i,ah'u | |||
?2 yahoo iah'u | |||
@@ -1181,13 +1275,14 @@ símbolo s'imbolU | |||
// common person names | |||
alan 'al@n | |||
alan 'al@N | |||
louis _^_FR | |||
// foreign product names | |||
?1 access 'aks,Es | |||
?1 adobe &d'Oby | |||
android &NdR'Oid | |||
apple 'Epow | |||
chrome kR'owmi | |||
debian d'Ebj&~N | |||
@@ -1195,22 +1290,27 @@ chrome kR'owmi | |||
?1 express ,Ekspr'Es | |||
espeak isp'i:k | |||
?1 espeakedit isp'i:kEd,it | |||
facebook feisybuk | |||
facebook feIsybuk | |||
?1 fedora _^_EN | |||
firefox f'ai@fOks | |||
?1 front fr'ont | |||
?1 jaws dZ'au:z | |||
?1 linux l,in'uks | |||
?2 linux l'inUks | |||
?1 live l'aiv | |||
live l'aiv | |||
?1 maker m'eIk&r- | |||
mac mEk | |||
?1 media m'Ed,i& | |||
?1 messenger m'Es&ndZ&r- | |||
?1 microsoft m,ik:r'os,Oft | |||
?2 microsoft m'aIkRows'Oft | |||
?1 movie m'uvi | |||
?1 nero n'Eru | |||
/1 office 'Of,is | |||
?2 netbook nEtbUk | |||
?2 netbooks nEtbUks | |||
?2 notebook nowtbUk | |||
?2 notebooks nowtbUks | |||
?1 office 'Of,is | |||
?2 office 'Ofsy | |||
openoffice 'opeIN|'Ofis | |||
?1 outlook 'autl'uk | |||
@@ -1245,15 +1345,16 @@ twitter tw'iter | |||
?2 window w'iNdow | |||
// historical/famous person names | |||
// historical/famous person s | |||
babbage b'abidZ | |||
bernhard bern'ard | |||
darwin d'Arwin | |||
dijkstra d'ijkstrA: | |||
einstein _!'aInSt,aIn | |||
?2 einstein _!'aInst,aIn | |||
feynman f'ainm@n | |||
freud fr'OId | |||
friedrich fr'i:driS | |||
freud fR'OId | |||
friedrich fR'i:dRiS | |||
gauss g'aUs | |||
geisel g'aIzEU | |||
gottfried g'Otfri:t | |||
@@ -1270,7 +1371,7 @@ oppenheimer _!'Op@nh,aImar | |||
richard x'iS&rd | |||
riemann r'i:man | |||
rijndael x'ain;d'al | |||
rousseau Rus'o | |||
?2 rousseau xus'o | |||
schrödinger Sr'edinger | |||
stephen st'i:v@n | |||
steve st'i:v | |||
@@ -1281,30 +1382,27 @@ von f%On | |||
// foreign common names/surnames | |||
?1 alison &l'is&N | |||
anderson '&ndersoN | |||
antonio &~nt'onIU | |||
?1 cleverson kl'Evyrs&N | |||
?2 cleverson kl'EversoN | |||
?1 elton 'Elt&N | |||
emerson 'emE*@-soN | |||
?1 halison &l'is&N | |||
klein kl'aIn // Very common on southern Brazil. | |||
?1 kleverson kl'Evers&N | |||
krueger kR'iZer | |||
krüger kR'iZer | |||
kühl k'il | |||
?1 nelson n'Els&N | |||
mueler m'iler | |||
mueller m'iler | |||
müler m'iler | |||
müller m'iler | |||
?1 nelson n'Els&N | |||
ronchi r'OnCi: | |||
valter v'aUter | |||
vogel f'o:g@l | |||
volkmann f'Olkman | |||
washington w'OSinton | |||
wellington w'Elynton | |||
@@ -69,6 +69,8 @@ _tld s_v'l-novkoU | |||
// character names | |||
_cap vel^ke: | |||
_sub d,olni:||'indeks|| | |||
_sup h,oRni:||'indeks|| | |||
_?? simbol | |||
_#9 t'ab | |||
_#32 'medzeRa | |||
@@ -76,76 +78,100 @@ _?A znak | |||
* hviezda $max3 | |||
+ plus $max3 | |||
= Rovna:sa $max3 | |||
= Rovna:||sa $max3 | |||
@ zavina:tS | |||
& ampeRsand | |||
# kRi:Zik $max3 | |||
_! vi:kRitSn^i:k | |||
_" u:vodzovki | |||
_" u:vodzowki | |||
_$ dola:R | |||
_' apostRof | |||
_( za:tvoRka | |||
_) zatvoRit; | |||
_, tSiaRka | |||
_- poml-tSka | |||
__ podtSiaRknutie | |||
_- spojovn^i:k | |||
__ podtSiaRkovn^i:k | |||
_. bodka | |||
_/ lomeno | |||
_/ lomka | |||
_: dvojbodka | |||
_; bodkotSiaRka | |||
_< menSi: | |||
_> vetSSi: | |||
_> v&tSSi: | |||
_? ota:zn^ik | |||
_[ hRanata:||za:tvoRka | |||
_\ opatSne:||lomeno | |||
_] hRanata:||zatvoRit; | |||
_^ stRieZka | |||
_[ hRanata:||z'a:tvoRka | |||
_\ opatSna:||l'omka | |||
_] hRanata:||z'atvoRit; | |||
_^ voka:n^ | |||
_` aktsent | |||
_{ zloZena:||za:tvoRka | |||
_| zvisla:||tSiaRa | |||
_} zloZena:||zatvoRit; | |||
_{ zloZena:||z'a:tvoRka | |||
_| zvisla:||tS'iaRa | |||
_} zloZena:||z'atvoRit; | |||
_~ vl-novka | |||
_ tvr-da:m'edzeRa // U+00A0 no-break-space | |||
_¡ obra:t;eni:v'i:kRitSn^i:k | |||
_¦ pReRuSena:'tSiaRa | |||
_ª hoRni:indeks'a: | |||
_« dvojita:lomena:||za:tvoRka | |||
_ mekka:poml-tSka | |||
_² nadRuhu: | |||
_³ natRetju | |||
_´ dl:Zen^ | |||
_· bodka'vpRostRjedku | |||
_¸ tsedila | |||
_¹ napRvu: | |||
_» dvojita:lomena:||zatvoRit; | |||
_¿ obRa:t;eni:'ota:zn^ik | |||
_– dl-ha:'poml-tSka | |||
_‘ l^ava:'u:vodzovka | |||
_’ prava:'u:vodzovka | |||
_“ horne:'u:vodzovki | |||
_” dolne:'u:vodzovki | |||
_‡ dvojiti:kRi:Z | |||
_• odRa:Zka | |||
_‣ tRojuholni:kova:'odRa:Zka | |||
_ tvr-da:||m'edzeRa // U+00A0 no-break-space | |||
_¡ obra:t;eni:||v'i:kRitSn^i:k | |||
_¦ pReRuSena:||tS'iaRa | |||
_¨ pRehla:ska | |||
_« dvojita:||l'omena:||z'a:tvoRka | |||
_ Rozd;el^ovn^i:k | |||
_´ dl:Zen^ | |||
_· bodka||'v||pRostRjedku | |||
_¸ tsedila | |||
_» dvojita:||l'omena:||z'atvoRit; | |||
_¿ obRa:t;eni:||'ota:zn^ik | |||
_– poml-tSka | |||
_‘ hoRne:||j'ednoduche:||'u:vodzowki | |||
_’ odsuvn^i:k | |||
_“ hoRne:||'u:vodzowki | |||
_” dvojita:||h'oRna:||'opatSna:||'u:vodzowka | |||
_„ dolne:||'u:vodzowki | |||
_‚ dolne:||j'ednoduche:||'u:vodzowki | |||
_‡ dvojkRi:Z | |||
_• odRa:Zka | |||
_‣ odRa:Zka||t'Rojuholn^i:k | |||
_⁃ odRa:Zka||'v||tvaRe||p'oml-tSki | |||
‰ pRomile | |||
€ euRo | |||
§ paRagRaf | |||
÷ d;eleno | |||
× kRa:t | |||
° stupn^ou | |||
¢ tsentou | |||
£ libjeR | |||
¤ znatSkameni | |||
¢ tsent | |||
£ libRa | |||
¤ mena | |||
© kopiRajt | |||
® Registrovane: | |||
¥ jen | |||
− mi:nus | |||
± plus'mi:nus | |||
µ mu: | |||
¼ Stvr-tina | |||
± plus||m'i:nus | |||
µ mi: | |||
¼ Stvr-t;ina | |||
½ polovitsa | |||
¾ tri_Stvr-tini | |||
¬ logitske:not | |||
æ a'e: | |||
þ poml-tSkanad | |||
¾ t'@-*i||S'tvr-t;ini | |||
¬ logitski:||z'a:poR | |||
æ otvoRene:||'e: | |||
þ soRn | |||
¯ pRuh||n'at | |||
ð ed | |||
ƒ floRe:n | |||
_† kRi:Z | |||
_≈ pRibliZn^e||sa||R'ovna: | |||
_≠ n^eRovna:||s'a | |||
_≤ menSi:||'alebo||sa||R'ovna: | |||
_≥ v&tSSi:||'alebo||sa||R'ovna: | |||
_√ dRuha:||'odmotsn^ina | |||
_∛ tRet;ia||'odmotsn^ina | |||
_∞ n^ekon^etSno | |||
_■ tSieRni||S'tvoRets | |||
_□ bieli||S'tvoRets | |||
_◆ tSieRni||d'iamant | |||
_○ bieli||kR'uh | |||
_● tSieRni||kR'uh | |||
_◦ odRa:Zka||'v||tvaRe||b'ielej||b'odki | |||
_✓ zaSkr-tnut;ie | |||
_✔ tutSne:||z'aSkr-tnut;ie | |||
_➔ Si:pka||'vpRavo | |||
_➢ odRa:Zka||'v||tvaRe||S'i:pki | |||
// Numbers |
@@ -43,16 +43,16 @@ _?A haRf | |||
//_lig | |||
_acu vURg'UimI | |||
_ac2 tS'IftvURg'UimI | |||
_brv k@s'altmaimI | |||
_brv k@s'aLtmaimI | |||
_ced h'aRf | |||
_cir Sapk'a | |||
_dia Umla'Ut | |||
_dia UmLa'Ut | |||
_dot YstnOkt'a | |||
_grv 'aksanimI | |||
_hac t'ERsSapk'a | |||
_mcn uz'atmaimI | |||
_ogo ogon'Ek | |||
_rng halk'a | |||
_rng haLk'a | |||
//_stk | |||
_tld tIld'E | |||
@@ -60,7 +60,7 @@ _tld tIld'E | |||
// symbols | |||
_. nOkt'a | |||
_, vIRJ'Yl | |||
_; nOktal'@vIRJ'Yl | |||
_; nOktaL'@vIRJ'Yl | |||
_: ik'InOkt'a | |||
_… 'YtSnOkt'a | |||
_? soR'UiSa*et,I | |||
@@ -73,7 +73,7 @@ _' apOstR'Of | |||
_^ IndZ'EltmEiSa*et'I | |||
& _!v'E | |||
_& v'EiSa*et'I | |||
_@ kUjRUkl'U'a | |||
_@ kUjRUkL'U'a | |||
_\ t'ERs||ej,IktSIzg'I | |||
_( atSpa*ant'Ez | |||
_) kapapa*ant'Ez | |||
@@ -84,9 +84,9 @@ _‘ tEkt@Rn'ak | |||
§ tSEnJ'El | |||
° de*edZ'E | |||
_# dij'Ez | |||
_~ jaklaS'@k | |||
__ ,alttSIzg'I | |||
* j'@ld@z $max3 | |||
_~ jakLaS'@k | |||
__ ,aLttSIzg'I | |||
* j'@Ld@z $max3 | |||
= ESIt $max3 | |||
% jYzdE $max3 | |||
+ aRt@ $max3 | |||
@@ -99,7 +99,7 @@ _2 ic'i | |||
_3 'ytS | |||
_4 d'WRt | |||
_5 b'ES | |||
_6 alt'@ | |||
_6 aLt'@ | |||
_7 jed'i | |||
_8 sec'Iz | |||
_9 d'okuz | |||
@@ -111,7 +111,7 @@ _2X jiRm'i | |||
_3X ot'uz | |||
_4X k'@Rk | |||
_5X ell'i | |||
_6X altm'@S | |||
_6X aLtm'@S | |||
_7X jetm'iS | |||
_8X seks'En | |||
_9X doks'an | |||
@@ -260,13 +260,13 @@ Düzce $1 | |||
Edirne $2 | |||
Hakkari $1 | |||
Hatay $1 | |||
Iğdır $1 | |||
İngiltere $3 | |||
İskenderun $2 | |||
ığdır $1 | |||
ingiltere $3 | |||
iskenderun $2 | |||
Isparta $2 | |||
İstanbul $2 | |||
İsveç $1 | |||
İzmir $1 | |||
istanbul $2 | |||
isveç $1 | |||
izmir $1 | |||
Kastamonu $1 | |||
Kayseri $1 | |||
Kilis $1 |
@@ -9,8 +9,10 @@ | |||
// ?1 mbrola voices | |||
// unvoiced consonants | |||
.L01 ç f h k p q s ş t | |||
.L01 ç f h k p q s ş t // unvoiced consonants | |||
.L02 ı a o u // back vowels | |||
.L03 i e ö ü î â ô û // not-back vowels | |||
.replace | |||
` ' | |||
@@ -23,7 +25,7 @@ | |||
@) acak (_S4 adZak | |||
@) acakmış (_S7 adZakm%@S | |||
@) ayım (_S4 aj@m | |||
@) alım (_S4 al@m | |||
@) alım (_S4 aL@m | |||
@) asın (_S4 as@n | |||
@) avru (pa avr'u | |||
@@ -33,9 +35,11 @@ | |||
.group c | |||
c dZ | |||
ce (_S2 dZ%E | |||
.group ç | |||
ç tS | |||
çe (_S2 tS%E | |||
.group d | |||
d d | |||
@@ -57,13 +61,13 @@ | |||
dın (_S3 d@n | |||
dınız (_S5 d@n@z | |||
dı (_S2 d@ | |||
dılar (_S5 d@laR | |||
dılar (_S5 d@LaR | |||
dum (_S3 dum | |||
duk (_S3 duk | |||
dun (_S3 dun | |||
dunuz (_S5 dunuz | |||
du (_S2 du | |||
dular (_S5 dular | |||
dular (_S5 duLar | |||
düm (_S3 dym | |||
dük (_S3 dyk | |||
dün (_S3 dyn | |||
@@ -96,18 +100,24 @@ | |||
.group g | |||
g g | |||
g (i J | |||
g (e J | |||
g (ü J | |||
g (ö J | |||
g (L03 J | |||
L03) g (K J | |||
.group ğ | |||
ğ Q | |||
A) ğ :|| | |||
?1 A) ğ G // mbrola | |||
A) ğ : | |||
?1 A) ğ (+ G // mbrola | |||
a) ğa : | |||
o) ğo : | |||
u) ğu : | |||
ö) ğö : | |||
ü) ğü : | |||
i) ğ j | |||
e) ğ j | |||
.group h | |||
h h | |||
@@ -135,37 +145,40 @@ | |||
@) ıyor (_S4 @j%oR | |||
@) ın (_S2 @n | |||
.group î | |||
î @ | |||
.group j | |||
j Z | |||
.group k | |||
k k | |||
k (i c | |||
k (e c | |||
k (ü c | |||
k (ö c | |||
k (L03 c | |||
L03) k (K c | |||
ken (_S3 %cen | |||
.group l | |||
l l | |||
l (L02 L | |||
L02) l (K L | |||
la (_S2 %la | |||
la (_S2 %La | |||
le (_S2 %le | |||
lar (_S3 laR | |||
lar (_S3 LaR | |||
ler (_S3 leR | |||
li (_S2 li | |||
lı (_S2 l@ | |||
lu (_S2 lu | |||
lı (_S2 L@ | |||
lu (_S2 Lu | |||
lü (_S2 ly | |||
lik (_S3 lik | |||
lık (_S3 l@k | |||
luk (_S3 luk | |||
lık (_S3 L@k | |||
luk (_S3 Luk | |||
lük (_S3 lyk | |||
@@ -204,6 +217,7 @@ | |||
.group r | |||
r R | |||
A) r (A * | |||
ğ) r (A * | |||
ra (_S2 %Ra | |||
re (_S2 %Re | |||
@@ -308,7 +322,7 @@ | |||
yunuz (_S5 %junuz | |||
yünüz (_S5 %jynyz | |||
yla (_S3 %jla | |||
yla (_S3 %jLa | |||
yle (_S3 %jle | |||
yacak (_S5 jadZak | |||
@@ -317,7 +331,7 @@ | |||
yecekmiş (_S8 jedZekm%iS | |||
yayım (_S5 jaj@m | |||
yalım (_S5 jal@m | |||
yalım (_S5 jaL@m | |||
yasın (_S5 jas@n | |||
yeyim (_S5 jejim | |||
yelim (_S5 jelim |
@@ -13,4 +13,5 @@ formant 6 100 100 100 | |||
formant 7 100 100 100 | |||
formant 8 100 100 100 | |||
consonants 100 | |||
stressAdd 10 10 0 0 0 0 -30 -30 |
@@ -3,6 +3,8 @@ language hy-west | |||
language hy 8 | |||
gender male | |||
dictrules 1 | |||
// change consonants for West Armenian pronunciation | |||
replace 00 b p# | |||
replace 00 d t# | |||
@@ -16,5 +18,5 @@ replace 00 ts dz | |||
replace 00 c dZ | |||
replace 00 k g | |||
replace 00 ** R // ?? | |||
replace 00 r R | |||
replace 00 R2 R // ?? | |||
@@ -0,0 +1,6 @@ | |||
name Korean | |||
language ko | |||
gender male | |||
pitch 80 118 | |||
intonation 2 | |||
@@ -0,0 +1,12 @@ | |||
name vietnam_sgn | |||
language vi-sgn | |||
phonemes vi-sgn | |||
dictrules 2 | |||
gender male | |||
words 1 | |||
pitch 82 118 //80 118 | |||
//breath 75 75 60 40 15 10 | |||
//breathw 150 150 200 200 400 400 | |||
voicing 90 //18 | |||
flutter 20 |
@@ -1,4 +1,4 @@ | |||
name Irish Gaeilge | |||
name irish-gaeilge | |||
language ga | |||
dictrules 1 // fix for eclipsis |
@@ -1,4 +1,4 @@ | |||
name lancashire | |||
name english-north | |||
language en-uk-north | |||
language en-uk 3 | |||
language en 5 | |||
@@ -10,6 +10,6 @@ stressLength 160 150 180 180 220 220 290 290 | |||
replace 00 i@3 i@ | |||
replace 03 N n | |||
//replace 03 I i | |||
//replace 03 I2 i | |||
replace 03 i I2 | |||
@@ -4,4 +4,5 @@ language pt | |||
gender male | |||
dictrules 2 | |||
stressLength 200 115 230 230 0 0 250 270 | |||
@@ -0,0 +1,3 @@ | |||
name azerbaijani-test | |||
language az | |||
@@ -16,7 +16,16 @@ nucleus0 fall-rise 80 18 | |||
nucleus fall-rise2 78 22 34 52 | |||
endtune | |||
tune q1 | |||
tune q1 // small change for version 1.47.05 | |||
prehead 45 56 | |||
headenv fall 16 | |||
head 3 75 43 -7 0 | |||
headextend 20 60 35 11 0 | |||
nucleus0 fall-rise 89 21 | |||
nucleus fall-rise2 86 21 34 68 | |||
endtune | |||
tune q1a // previous version | |||
prehead 46 57 | |||
headenv fall 16 | |||
head 4 75 43 -7 0 |
@@ -1,3 +1,4 @@ | |||
volume 17 | |||
0 l/2 NULL 0 l | |||
0 l/ NULL 0 l | |||
@@ -10,7 +11,6 @@ | |||
0 j/ NULL 0 j | |||
0 ; NULL 0 NULL | |||
0 g- NULL 0 NULL | |||
0 @- NULL 0 NULL | |||
0 @3 NULL 0 NULL | |||
0 * NULL 0 R | |||
0 : NULL 0 NULL | |||
@@ -43,6 +43,7 @@ | |||
0 z2 NULL 0 z | |||
0 z3 NULL 0 z | |||
0 @- NULL 0 @ | |||
0 a- NULL 0 a | |||
0 e- NULL 0 e | |||
0 y- NULL 0 y |
@@ -1,19 +1,22 @@ | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 160 | |||
length 180 | |||
FMT(vowel/ii_5) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 160 | |||
length 200 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #e endtype #e | |||
length 160 | |||
length 200 | |||
IF thisPh(isWordEnd) THEN | |||
FMT(vowel/&_3) | |||
ENDIF | |||
FMT(vowel/&) | |||
endphoneme | |||
@@ -25,32 +28,35 @@ endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
length 180 | |||
length 200 | |||
FMT(vowel/y#_2) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 160 | |||
FMT(vowel/u_5) | |||
length 180 | |||
FMT(vowel/u_2) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 160 | |||
FMT(vowel/o_mid) | |||
length 200 | |||
FMT(vowel/o_mid2) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 200 | |||
FMT(vowel/aa) | |||
IF thisPh(isWordEnd) THEN | |||
FMT(vowel/a#) | |||
ENDIF | |||
FMT(vowel/aa_9) | |||
endphoneme | |||
phoneme @ | |||
vowel starttype #@ endtype #@ | |||
ipa ɯ | |||
length 160 | |||
length 180 | |||
FMT(vowel/u#_7) | |||
endphoneme | |||
@@ -7,7 +7,7 @@ | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 180 | |||
length 190 | |||
IF thisPh(isDiminished) THEN | |||
ChangePhoneme(a/) | |||
FMT(vowel/a#) | |||
@@ -18,28 +18,28 @@ endphoneme | |||
phoneme a/ | |||
vowel starttype #@ endtype #@ | |||
length 180 | |||
length 190 | |||
FMT(vowel/a#) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 170 | |||
length 180 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 170 | |||
length 180 | |||
FMT(vowel/ee_1) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 150 | |||
length 170 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i) | |||
endphoneme | |||
@@ -47,42 +47,42 @@ endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
FMT(vowel/o) | |||
endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
FMT(vowel/oo_4) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 160 | |||
length 180 | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 160 | |||
length 180 | |||
FMT(vowel/uu_2) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #i endtype #i | |||
length 160 | |||
length 180 | |||
FMT(vowel/y) | |||
endphoneme | |||
phoneme Y | |||
vowel starttype #@ endtype #@ | |||
length 160 | |||
length 180 | |||
FMT(vowel/y#) | |||
endphoneme | |||
@@ -17,8 +17,11 @@ phoneme V // inherent vowel, can be [O] or [o] | |||
ChangePhoneme(o) | |||
ENDIF | |||
IF prevPhW(r) THEN | |||
ChangePhoneme(o) | |||
IF prevPhW(r) AND nextVowel(isVowel) THEN | |||
IF nextVowel(isWordEnd) AND nextVowel(V) THEN | |||
ELSE | |||
ChangePhoneme(o) | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
@@ -8,113 +8,213 @@ | |||
// AC + @- OR V: Long "pile" [pi:l@-] | |||
// AC[i]: Long "smidig" [smi:Di] | |||
// Change the length of short vowels (?+vowel) | |||
// 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 | |||
// "endelig", "ånder" - Short initial vowel sounds too short TEST | |||
IF thisPh(isWordStart) AND nextPhW(n) THEN | |||
IF next2PhW(@-) OR next2PhW(V) THEN | |||
length 160 | |||
RETURN | |||
ENDIF | |||
ENDIF | |||
// "slutte" t/d + @- makes the vowel too long | |||
// Problem with compounds like "spildedamp" | |||
IF next2PhW(@-) OR next2PhW(V) THEN | |||
IF nextPhW(t) OR nextPhW(d) THEN | |||
// length 100 | |||
LengthAdd -45 | |||
// 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 | |||
RETURN | |||
ENDIF | |||
ENDIF | |||
// "bygget", "byggede" - consonant + [@-D] makes the vowel too long | |||
IF next2PhW(@-) THEN | |||
IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN | |||
IF thisPh(isFirstVowel) THEN // NOT "cellof'anet" | |||
IF NOT thisPh(?V) THEN // NOT "fjollet" | |||
LengthAdd -40 | |||
// Don't shorten it further if it comes after an "r" sound ("brygget") | |||
// Exit the procedure | |||
RETURN | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
// "bygger" - consonant + [V] makes the vowel too long | |||
IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
LengthAdd -50 | |||
IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
IF NOT thisPh(isWordStart) THEN // NOT "eller" | |||
// LengthAdd -45 | |||
// Don't shorten it further if it comes after an "r" sound ("brygger") | |||
// Exit the procedure | |||
RETURN | |||
ENDIF | |||
RETURN | |||
ENDIF | |||
ENDIF | |||
// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long | |||
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
// length 100 | |||
LengthAdd -50 | |||
ENDIF | |||
// "ring", "ringe", "fængsel" | |||
IF nextPhW(N) THEN | |||
LengthAdd -40 | |||
RETURN | |||
ENDIF | |||
// "ring", "ringe", "fængsel", "spinkel", "vindspejl" | |||
IF nextPhW(isNasal) 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 | |||
LengthAdd -30 | |||
RETURN | |||
ENDIF | |||
// "sigte", "bælte", "henter" t/d + @-/V makes the vowel too long | |||
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN | |||
IF next3PhW(@-) OR next3PhW(V) THEN | |||
IF thisPh(isFirstVowel) THEN // NOT [i] in "forsp'ildte" | |||
// length 100 | |||
LengthAdd -50 | |||
ENDIF | |||
ENDIF | |||
LengthAdd -30 | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
// "forbandelse" [n@-] makes the vowel too long? | |||
// nasal eg: m, n, N | |||
IF nextPhW(isNasal) AND next2PhW(@-) THEN | |||
IF NOT thisPh(isFirstVowel) AND thisPh(isStressed) THEN | |||
// NOT LengthAdd since [R] might have shortend the vowel above | |||
length 100 | |||
ENDIF | |||
ENDIF | |||
// "himlen" l/3 makes the vowel too long | |||
IF nextPhW(isNotVowel) AND next2PhW(l/3) AND next3PhW(@-) OR next3PhW(V) THEN | |||
length 100 | |||
ENDIF | |||
// "lænkerne" l/3 makes the vowel too long | |||
IF prevPh(l/3) AND nextPhW(isNotVowel) AND next3PhW(V) THEN | |||
length 120 | |||
ENDIF | |||
//"musikken" consonant + [@-n] makes the vowel too long | |||
// Probably wrong. Only k? | |||
IF nextPhW(k) AND next2PhW(@-) AND next3PhW(n) THEN | |||
length 100 | |||
ENDIF | |||
//"svælge" [svElj@-] vowel + 2 consonants but length 100 is too short | |||
IF nextPhW(isNotVowel) AND next2PhW(j) THEN | |||
length 140 | |||
ENDIF | |||
endprocedure | |||
// Change the length of normal vowels (without ? in front of them) | |||
// Change the length of NORMAL vowels (without ? in front of them) | |||
procedure LongVowelLength | |||
// "guldmine" [ul/3] makes the vowel extremely short | |||
IF prevVowel(u) AND prev2PhW(l/3) THEN | |||
length 350 | |||
RETURN | |||
ENDIF | |||
// "guldur" [ul/3] makes the vowel extremely short | |||
IF prevVowel(u) AND prevPhW(l/3) THEN | |||
IF NOT thisPh(isWordEnd) THEN // NOT "umulig" | |||
length 325 | |||
RETURN | |||
ENDIF | |||
ENDIF | |||
// "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 | |||
IF thisPh(isWordStart) THEN | |||
length 160 | |||
// "ønske" The vowel should have been made short becauce og 2 x consonant. | |||
// Take care of it here | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(isNotVowel) THEN | |||
length 140 | |||
ENDIF | |||
// "ære" | |||
IF nextPhW(V) AND nextPhW(isFinalVowel) THEN | |||
length 240 | |||
ENDIF | |||
RETURN | |||
ENDIF | |||
// "huske" - hACC@- vowel too long | |||
IF prevPhW(h) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(@-) THEN | |||
length 110 | |||
RETURN | |||
ENDIF | |||
// PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n] | |||
IF nextPhW(@-) OR nextPhW(V) THEN | |||
length 225 | |||
ENDIF | |||
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 | |||
IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
length 225 | |||
ENDIF | |||
// "dele", "mene", "møve" | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN | |||
length 225 | |||
ENDIF | |||
// "sveder", "deler" | |||
IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
length 225 | |||
ENDIF | |||
// "maskinen" consonant + [@-n]: vowel too long | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(n) THEN | |||
length 160 | |||
ENDIF | |||
// "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
// Don't make "møve" [m'Ww_!@-_!] short | |||
IF NOT next2PhW(_!) THEN | |||
length 140 | |||
ENDIF | |||
ENDIF | |||
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 | |||
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
IF NOT thisPh(V) AND next2PhW(@-) OR next2PhW(V) THEN | |||
length 140 | |||
ENDIF | |||
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 | |||
// "føden" | |||
IF nextPhW(D) AND next2PhW(@-) AND next3PhW(n) THEN | |||
length 180 | |||
ENDIF | |||
// "glimrende", "glemte" [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 | |||
IF prev2PhW(g) AND prevPhW(l/3) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 110 | |||
RETURN | |||
ENDIF | |||
// l/3 makes the vowel too long (+ voiced?) | |||
// isVoiced = b, d, g, v, z | |||
IF prevPhW(l/3) AND nextPhW(isVoiced) THEN | |||
// "klub", "klud" | |||
// The vowel should have been short but we fix it here | |||
IF NOT next2PhW(@-) AND NOT next2PhW(V) THEN | |||
length 100 | |||
ELSE | |||
// "slæde", "lader" | |||
length 160 | |||
ENDIF | |||
ENDIF | |||
// "længe" - short - 2 consonants => 1 consonant (ng => [N]) | |||
IF nextPhW(N) THEN | |||
length 140 | |||
ENDIF | |||
IF nextPhW(isNasal) THEN | |||
IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN | |||
length 140 | |||
// "omkring", "ring" - both prev. N and next R | |||
ELIF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN | |||
length 110 | |||
ENDIF | |||
ENDIF | |||
// "buskene", "krøbling" The vowel should have been made short becauce og 2 x consonant. | |||
// Take care of it here | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
IF NOT nextPhW(l/3) THEN | |||
IF NOT nextPhW(r) AND NOT prevPhW(R) AND NOT prevPhW(3-) THEN // NOT "Maria" | |||
length 110 | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
// "barnet" - consonant + [@-D]: too long vowel | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(D) THEN | |||
length 160 | |||
ENDIF | |||
// "trin", "trit", "ring" - vowel too long | |||
// IF prevPhW(isRhotic) THEN | |||
IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN | |||
IF nextPhW(isNotVowel) AND nextPhW(isWordEnd) THEN | |||
length 110 | |||
ENDIF | |||
ENDIF | |||
endprocedure | |||
// A bit longer than [@-] | |||
@@ -167,22 +267,6 @@ endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
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 140 | |||
ENDIF | |||
//"skider" short | |||
IF nextPhW(D) AND next2PhW(V) THEN | |||
length 140 | |||
ENDIF | |||
//"skideren" long | |||
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -209,7 +293,7 @@ phoneme e | |||
vowel starttype #e endtype #e | |||
length 140 | |||
CALL LongVowelLength | |||
CALL ShortVowelLength | |||
// CALL ShortVowelLength | |||
FMT(vowel/e) | |||
endphoneme | |||
@@ -257,7 +341,7 @@ endphoneme | |||
phoneme & | |||
vowel starttype #e endtype #e | |||
ipa æ | |||
ipa a | |||
length 140 | |||
// "same", "sale", "bade" - consonant + @-: long | |||
// but NOT "hinanden" | |||
@@ -279,8 +363,10 @@ endphoneme | |||
// e.g. the last a in "staldkarl" | |||
// "sale" vs. "sal" | |||
phoneme ?& | |||
ipa a | |||
vowel starttype #e endtype #e | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
@@ -298,6 +384,7 @@ endphoneme | |||
// "revl" vs. "tremme" | |||
phoneme ?&# | |||
vowel starttype #e endtype #e | |||
ipa ?a | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/&) | |||
@@ -372,11 +459,11 @@ phoneme O | |||
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ | |||
// "sove", "sover" - consonant + @ or V: long | |||
IF next2PhW(@-) OR next2PhW(V) THEN | |||
length 225 | |||
// length 225 | |||
ENDIF | |||
// PB "gået" - ThisPh + V or @- | |||
IF nextPhW(V) OR nextPhW(@-) THEN | |||
length 225 | |||
// length 225 | |||
ENDIF | |||
// "såre", "sårede" [s'O:?OD@-] | |||
IF nextPhW(O) OR nextPhW(?O) THEN | |||
@@ -391,6 +478,7 @@ endphoneme | |||
phoneme ?O | |||
vowel starttype #o endtype #o | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/o_5) | |||
endphoneme | |||
@@ -406,6 +494,7 @@ endphoneme | |||
phoneme ?V | |||
vowel starttype #@ endtype #@ | |||
length 140 | |||
CALL ShortVowelLength | |||
FMT(vowel/V_4) | |||
endphoneme | |||
@@ -416,34 +505,19 @@ phoneme 0 | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
// Short 0 "sukker" | |||
// Short 0 "sukker", "provst" | |||
phoneme ?0 | |||
vowel starttype #o endtype #o | |||
length 140 | |||
ipa ɔ | |||
CALL ShortVowelLength | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #i endtype #i | |||
length 140 | |||
// PB long vowel followed by consonant and certain vowels | |||
// "gyde", "gyder" | |||
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN | |||
// not "gebyret" TEST | |||
IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN | |||
length 225 | |||
ENDIF | |||
ENDIF | |||
// "syge" [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(w) AND next2PhW(@-) THEN | |||
length 225 | |||
ENDIF | |||
CALL LongVowelLength | |||
CALL LongVowelLength | |||
FMT(vowel/y) | |||
endphoneme | |||
@@ -468,15 +542,7 @@ endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
length 140 | |||
// "røveri" but NOT "surfer" [sWfV] TEST | |||
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | |||
length 140 | |||
ENDIF | |||
// "børnebog" - short | |||
IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN | |||
length 140 | |||
ENDIF | |||
CALL LongVowelLength | |||
CALL LongVowelLength | |||
FMT(vowel/oe) | |||
endphoneme | |||
@@ -492,11 +558,8 @@ endphoneme | |||
// Added for the ø in "røv", "røg", "øje" instead of [V3] | |||
phoneme W# | |||
vowel starttype #@ endtype #@ | |||
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 225 | |||
ENDIF | |||
length 140 | |||
CALL LongVowelLength | |||
FMT(vowel/V) | |||
endphoneme | |||
@@ -540,7 +603,7 @@ phoneme l | |||
lengthmod 7 | |||
// [ll] => [-l] - avoid double l | |||
IF nextPhW(l) THEN | |||
// ChangePhoneme(-) | |||
// ChangePhoneme(NULL) | |||
ENDIF | |||
ChangePhoneme(l/3) | |||
// CALL base/l | |||
@@ -565,6 +628,10 @@ phoneme r // used for 'r' after a vowel (to create a diphthong) | |||
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN | |||
ChangePhoneme(R) | |||
ENDIF | |||
// "generer" [Sen'e:Vr], "mysterier" - delete the r | |||
IF prevPhW(V) AND thisPh(isWordEnd) THEN | |||
ChangePhoneme(NULL) | |||
ENDIF | |||
FMT(r/a_) | |||
endphoneme | |||
@@ -637,7 +704,7 @@ IF thisPh(isWordEnd) THEN | |||
ENDIF | |||
IF nextPhW(isVowel) THEN | |||
NextVowelStarts | |||
VowelStart(j/j@) | |||
VowelStart(j/j@,-45) // jøderne | |||
VowelStart(j/ja) | |||
VowelStart(j/je,-35) | |||
VowelStart(j/ji) | |||
@@ -655,4 +722,5 @@ Vowelout len=70 | |||
Vowelout len=70 | |||
FMT(j/j_) | |||
ENDIF | |||
endphoneme | |||
endphoneme | |||
@@ -263,8 +263,8 @@ endphoneme | |||
phoneme OI | |||
vowel starttype #o endtype #i | |||
length 280 | |||
FMT(vdiph/ooi_4) | |||
length 270 | |||
FMT(vdiph/ooi_3) | |||
endphoneme | |||
@@ -13,7 +13,7 @@ phoneme @ | |||
length 130 | |||
ChangeIfDiminished(@-) | |||
IF nextPh(H) THEN | |||
IF nextPh(H) OR prevPh(H) THEN | |||
FMT(vowel/@_low) | |||
ENDIF | |||
FMT(vowel/@_bck) | |||
@@ -24,6 +24,11 @@ phoneme V | |||
vowel flag1 starttype #@ endtype #@ | |||
length 130 | |||
IF thisPh(isWordStart) THEN | |||
FMT(vowel/V_3) | |||
RETURN | |||
ENDIF | |||
IF thisPh(isNotStressed) THEN | |||
IF prevPh(H) THEN | |||
ChangePhoneme(@) | |||
@@ -33,15 +38,11 @@ phoneme V | |||
ChangePhoneme(NULL) | |||
ENDIF | |||
IF NOT nextVowel(isFlag1) THEN | |||
IF thisPh(isSeqFlag1) THEN | |||
// delete the last inherent vowel of a sequence | |||
ChangePhoneme(NULL) | |||
IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN | |||
IF nextPhW(isNotVowel) AND nextPh(isWordEnd) THEN | |||
// don't delete schwa before a word-final consonant | |||
ELSE | |||
IF NOT thisPh(isFirstVowel) THEN | |||
// delete if not the first vowel, and is an isolated 'a' | |||
ChangePhoneme(NULL) | |||
ENDIF | |||
ChangePhoneme(NULL) | |||
ENDIF | |||
ENDIF | |||
ENDIF | |||
@@ -55,7 +56,7 @@ phoneme V | |||
ChangePhoneme(@) | |||
ENDIF | |||
IF nextPh(H) THEN | |||
IF nextPh(H) OR prevPh(H) THEN | |||
FMT(vowel/@_low) | |||
ENDIF | |||
ENDIF | |||
@@ -135,6 +136,9 @@ endphoneme | |||
phoneme a: | |||
vowel long starttype #a endtype #a | |||
length 190 | |||
IF nextPhW(j) THEN | |||
FMT(vowel/a_5) | |||
ENDIF | |||
FMT(vowel/aa_9) | |||
endphoneme | |||
@@ -208,25 +212,25 @@ endphoneme | |||
phoneme E~ | |||
vowel long starttype #e endtype #e | |||
length 230 | |||
length 220 | |||
FMT(vnasal/ee_n2) | |||
endphoneme | |||
phoneme a~ | |||
vowel long starttype #a endtype #a | |||
length 250 | |||
FMT(vnasal/aa_n) | |||
length 220 | |||
FMT(vnasal/&_n) | |||
endphoneme | |||
phoneme V~ | |||
vowel long starttype #@ endtype #@ | |||
length 250 | |||
length 220 | |||
FMT(vnasal/V_n) | |||
endphoneme | |||
phoneme O~ | |||
vowel long starttype #o endtype #o | |||
length 230 | |||
length 220 | |||
FMT(vnasal/oo_n2) | |||
endphoneme | |||
@@ -244,7 +248,7 @@ endphoneme | |||
phoneme u~ | |||
vowel long starttype #u endtype #u | |||
length 230 | |||
length 220 | |||
FMT(vnasal/u_n) | |||
endphoneme | |||
@@ -513,3 +517,22 @@ phoneme #X2 // click, use for indicating combining long vowels | |||
endphoneme | |||
phoneme r | |||
liquid rhotic | |||
lengthmod 3 | |||
IF thisPh(isWordEnd) THEN | |||
CALL base/r/ | |||
ELSE | |||
IF prevPhW(isVowel) THEN | |||
IF nextPhW(isNotVowel) OR nextPhW(V) THEN | |||
ChangePhoneme(*) | |||
ENDIF | |||
ENDIF | |||
CALL base/r | |||
ENDIF | |||
ipa ɾ | |||
endphoneme | |||
@@ -113,7 +113,7 @@ endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 130 | |||
IF nextPh(isVowel) THEN | |||
IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||
ChangePhoneme(w) | |||
ENDIF | |||
FMT(vowel/u_6) |
@@ -135,7 +135,7 @@ endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 140 | |||
IF thisPh(isWordEnd) AND nextPh(isVowel) THEN | |||
IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||
ChangePhoneme(w) | |||
ENDIF | |||
FMT(vowel/uu_bck) |
@@ -6,44 +6,44 @@ | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 180 | |||
length 200 | |||
FMT(vowel/a_4) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 190 | |||
length 200 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 190 | |||
length 200 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 170 | |||
length 190 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 190 | |||
length 200 | |||
FMT(vowel/oo) | |||
endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 190 | |||
length 200 | |||
FMT(vowel/oo) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 180 | |||
length 200 | |||
FMT(vowel/u_bck2) | |||
endphoneme | |||
@@ -107,11 +107,16 @@ phoneme D | |||
voicingswitch T | |||
CALL base/D | |||
IF nextPh(isPause2) THEN | |||
FMT(voc/dh_) addWav(vocw/dh, 40) // weaker | |||
FMT(voc/dh_) addWav(vocw/dh, 35) // weaker | |||
ENDIF | |||
endphoneme | |||
phoneme t // dental variant of /t/ | |||
import_phoneme base/t[ | |||
endphoneme | |||
phoneme s | |||
vls alv frc sibilant | |||
lengthmod 3 |
@@ -2,7 +2,7 @@ | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 150 | |||
length 180 | |||
IF thisPh(isTranslationGiven) THEN | |||
// don't reduce the vowel if phonemes are explicitly given | |||
ELSE | |||
@@ -18,14 +18,14 @@ endphoneme | |||
phoneme I | |||
vowel starttype #i endtype #i | |||
length 150 | |||
length 180 | |||
FMT(vowel/ii_5) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #u endtype #u | |||
length 155 | |||
length 180 | |||
IF thisPh(isTranslationGiven) THEN | |||
// don't reduce the vowel if phonemes are explicitly given | |||
ELSE | |||
@@ -41,7 +41,7 @@ endphoneme | |||
phoneme Y | |||
vowel starttype #u endtype #u | |||
length 155 | |||
length 180 | |||
FMT(vowel/u#) | |||
endphoneme | |||
@@ -49,10 +49,16 @@ endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 180 | |||
length 200 | |||
IF thisPh(isTranslationGiven) THEN | |||
// don't reduce the vowel if phonemes are explicitly given | |||
ELSE | |||
IF nextPh(isWordEnd) OR next2PhW(isNotVowel) THEN | |||
IF nextPh(isRhotic) OR nextPh(isNasal) OR nextPh(l) OR nextPh(L) THEN | |||
ChangePhoneme(&) | |||
ENDIF | |||
ENDIF | |||
IF thisPh(isFinalVowel) THEN | |||
ChangePhoneme(E) | |||
ENDIF | |||
@@ -65,21 +71,27 @@ endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 180 | |||
length 200 | |||
FMT(vowel/e_mid) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #a endtype #a | |||
length 200 | |||
FMT(vowel/ee_6) | |||
endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
length 180 | |||
length 200 | |||
FMT(vowel/y#) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 190 | |||
length 200 | |||
FMT(vowel/a#_4) | |||
endphoneme | |||
@@ -87,7 +99,7 @@ endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 150 | |||
length 180 | |||
IF thisPh(isTranslationGiven) THEN | |||
// don't reduce the vowel if phonemes are explicitly given | |||
ELSE | |||
@@ -103,7 +115,7 @@ endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 150 | |||
length 180 | |||
FMT(vowel/uu_2) | |||
endphoneme | |||
@@ -111,7 +123,7 @@ endphoneme | |||
phoneme @ | |||
vowel starttype #@ endtype #@ | |||
ipa ɯ | |||
length 150 | |||
length 180 | |||
FMT(vowel/u#_7) | |||
endphoneme | |||
@@ -119,7 +131,7 @@ endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 190 | |||
length 200 | |||
IF thisPh(isTranslationGiven) THEN | |||
// don't reduce the vowel if phonemes are explicitly given | |||
ELSE | |||
@@ -135,7 +147,7 @@ endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 190 | |||
length 200 | |||
FMT(vowel/oo) | |||
endphoneme | |||
@@ -179,12 +191,20 @@ phoneme J | |||
endphoneme | |||
phoneme l | |||
import_phoneme en/l | |||
endphoneme | |||
phoneme G | |||
import_phoneme en/r/ | |||
lengthmod 7 | |||
endphoneme | |||
phoneme R | |||
vcd alv flp rhotic | |||
IF prevPhW(isVowel) AND nextPhW(isVowel) THEN | |||
CALL base/* | |||
// ELIF prevPhW(isNotVowel) THEN | |||
// CALL base/R | |||
ELSE | |||
CALL base/r | |||
ENDIF | |||
ipa ɾ | |||
endphoneme |
@@ -18,13 +18,13 @@ endphoneme | |||
phoneme 3 // sắc Tone(rising | |||
stress | |||
Tone(25, 50, envelope/p_rise, NULL) // 25 | |||
Tone(30, 60, envelope/p_rise, NULL) // 25 50 | |||
endphoneme | |||
phoneme 4 // hỏi Tone(curve (dipping rising) | |||
stress | |||
Tone(30, 5, envelope/p_fallrise, NULL) | |||
Tone(40, 5, envelope/p_fallrise, NULL) //30 | |||
endphoneme | |||
@@ -54,33 +54,33 @@ endphoneme | |||
phoneme a | |||
vowel starttype #@ endtype #@ | |||
length 120 | |||
length 140 | |||
FMT(vowel/a_6) //a_4) | |||
endphoneme | |||
phoneme a: | |||
vowel starttype #a endtype #a | |||
length 200 //280 | |||
FMT(vietnam/a) //FMT(vowel/a_6) | |||
length 240 //280 | |||
FMT(vowel/a_8) | |||
endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 200 | |||
length 240 | |||
FMT(vowel/ee_3) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 200 | |||
length 140 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 190 | |||
length 240 | |||
IfNextVowelAppend(;) | |||
IF prevPhW(w) THEN | |||
VowelStart(w/wi) | |||
@@ -100,7 +100,7 @@ phoneme O | |||
ELSE | |||
length 200 | |||
ENDIF | |||
FMT(vowel/aa_4) | |||
FMT(vowel/0_2) //aa_4) | |||
endphoneme | |||
phoneme o | |||
@@ -110,7 +110,7 @@ phoneme o | |||
ELSE | |||
length 200 | |||
ENDIF | |||
FMT(vowel/o_2) | |||
FMT(vowel/o) // o_2) | |||
endphoneme | |||
@@ -119,9 +119,9 @@ phoneme u | |||
IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound | |||
length 120 | |||
ELSE | |||
length 200 | |||
length 240 | |||
ENDIF | |||
FMT(vnasal/u_n) //vowel/u_7) | |||
FMT(vowel/u_5) | |||
endphoneme | |||
phoneme y | |||
@@ -129,7 +129,7 @@ phoneme y | |||
IF nextPh(kh) OR nextPh(N) THEN | |||
length 120 | |||
ELSE | |||
length 200 | |||
length 180 | |||
ENDIF | |||
FMT(vowel/u#_5) | |||
endphoneme | |||
@@ -138,10 +138,10 @@ endphoneme | |||
phoneme @ | |||
vowel starttype #@ endtype #a | |||
IF nextPh(kh) OR nextPh(N) THEN | |||
IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN | |||
length 120 | |||
ELSE | |||
length 170 | |||
length 200 | |||
ENDIF | |||
FMT(vowel/V) //vowel/@_2) | |||
endphoneme | |||
@@ -149,7 +149,7 @@ endphoneme | |||
phoneme @: | |||
vowel starttype #@ endtype #@ | |||
length 280 | |||
length 200 | |||
FMT(vowel/@_2) | |||
endphoneme | |||
@@ -160,8 +160,8 @@ endphoneme | |||
phoneme aI | |||
vowel starttype #a endtype #i | |||
length 200 //250 | |||
FMT(vdiph/&y) | |||
length 140 //250 | |||
FMT(vdiph/&i_2) | |||
endphoneme | |||
@@ -188,14 +188,14 @@ endphoneme | |||
phoneme eI | |||
vowel starttype #e endtype #i | |||
length 200 | |||
length 140 | |||
FMT(vdiph/ei) | |||
endphoneme | |||
phoneme EI | |||
vowel starttype #e endtype #i | |||
length 200 | |||
length 140 | |||
FMT(vdiph/eei) | |||
endphoneme | |||
@@ -203,7 +203,7 @@ endphoneme | |||
phoneme OI | |||
vowel starttype #o endtype #i | |||
length 200 | |||
FMT(vdiph/0i) | |||
FMT(vdiph/ooi_3) | |||
endphoneme | |||
@@ -231,14 +231,14 @@ endphoneme | |||
phoneme aU | |||
vowel starttype #a endtype #u | |||
length 210 | |||
length 200 | |||
FMT(vdiph/aau_4) | |||
endphoneme | |||
phoneme a:U | |||
vowel starttype #a endtype #u | |||
length 230 //270 | |||
length 200 //270 | |||
FMT(vdiph/au) | |||
endphoneme | |||
@@ -258,19 +258,19 @@ endphoneme | |||
phoneme iU | |||
vowel starttype #i endtype #u | |||
length 200 | |||
length 140 | |||
FMT(vdiph2/iu) | |||
endphoneme | |||
phoneme @U | |||
vowel starttype #@ endtype #u | |||
length 200 | |||
length 140 | |||
FMT(vdiph/@u_3) | |||
endphoneme | |||
phoneme @:U | |||
vowel starttype #@ endtype #u | |||
length 270 | |||
length 140 | |||
FMT(vdiph/@u) | |||
endphoneme | |||
@@ -278,19 +278,19 @@ endphoneme | |||
phoneme i@ | |||
vowel starttype #i endtype #@ | |||
length 240 | |||
length 140 | |||
FMT(vdiph2/ii@_3) | |||
endphoneme | |||
phoneme y@ | |||
vowel starttype #i endtype #@ | |||
length 200 | |||
length 140 | |||
FMT(vdiph2/y-y#) | |||
endphoneme | |||
phoneme u@ | |||
vowel starttype #u endtype #@ | |||
length 150 //200 | |||
length 100 //200 | |||
FMT(vdiph2/uu@) | |||
endphoneme | |||
@@ -298,39 +298,67 @@ endphoneme | |||
phoneme o# // ông | |||
vowel starttype #o endtype #o | |||
length 200 | |||
length 140 | |||
FMT(vnasal/a#u_n) | |||
endphoneme | |||
phoneme O# // ong | |||
vowel starttype #o endtype #o | |||
length 200 | |||
length 140 | |||
FMT(vnasal/&u_n) | |||
endphoneme | |||
phoneme o@ | |||
vowel starttype #o endtype #o | |||
length 160 | |||
length 140 | |||
FMT(vdiph2/oa) | |||
endphoneme | |||
phoneme o& | |||
vowel starttype #o endtype #o | |||
length 160 | |||
length 140 | |||
FMT(vietnam/oe) | |||
endphoneme | |||
phoneme iE // iê : viết, giệc | |||
vowel starttype #i endtype #e | |||
length 190 | |||
length 140 | |||
FMT(vietnam/ie_2) | |||
endphoneme | |||
phoneme Oi // oai sound | |||
vowel starttype #o endtype #i | |||
length 140 | |||
FMT(vdiph/ooi_3) | |||
endphoneme | |||
// Vowel and Dipthong for south dialect | |||
phoneme O- // ôi southern sound | |||
vowel starttype #o endtype #i | |||
length 150 | |||
FMT(vnasal/oi_n) | |||
endphoneme | |||
phoneme @- // ơi southern sound | |||
vowel starttype #o endtype #i | |||
length 150 | |||
FMT(vdiph/@i_3) | |||
endphoneme | |||
phoneme u- // u southern sound | |||
vowel starttype #u endtype #u | |||
length 150 | |||
FMT(vowel/u_3,70) | |||
endphoneme | |||
phoneme kh | |||
vls vel frc | |||
lengthmod 3 | |||
Vowelin f1=0 f2=2300 200 400 f3=200 80 | |||
Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 | |||
Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 | |||
WAV(vietnam/_c,5) //ufric/x, 50) | |||
endphoneme | |||
@@ -338,11 +366,11 @@ endphoneme | |||
phoneme l | |||
liquid | |||
lengthmod 7 | |||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 | |||
//lengthmod 7 | |||
//IF nextPh(isNotVowel) THEN | |||
// ChangePhoneme(l/2) | |||
//ENDIF | |||
//CALL vowelstart_l | |||
FMT(l/l_vi) | |||
@@ -352,7 +380,7 @@ phoneme t | |||
vls alv stop | |||
//voicingswitch d | |||
lengthmod 2 | |||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 | |||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
WAV(vietnam/th, 50) | |||
@@ -362,7 +390,7 @@ phoneme cr | |||
vls pla afr sibilant | |||
//voicingswitch dZ | |||
lengthmod 2 | |||
Vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||
Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=30 | |||
WAV(vietnam/tr,10) | |||
@@ -370,10 +398,10 @@ endphoneme | |||
phoneme d | |||
vcd alv stop | |||
lengthmod 5 | |||
// lengthmod 5 | |||
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 | |||
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk | |||
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=30 | |||
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30 | |||
WAV(vietnam/dd) | |||
endphoneme | |||
@@ -381,9 +409,9 @@ WAV(vietnam/dd) | |||
vls pal stop palatal | |||
//voicingswitch J | |||
lengthmod 2 | |||
length 75 | |||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | |||
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 | |||
length 2 | |||
Vowelin f1=0 f2=2700 400 600 f3=300 80 len=30 brk | |||
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=30 colr=1 | |||
WAV(vietnam/ch,5) | |||
@@ -402,18 +430,20 @@ endphoneme | |||
phoneme n | |||
vcd alv nasal | |||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 brk len=30 | |||
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk len=30 | |||
lengthmod 4 | |||
FMT(n/n#_) | |||
length 75 | |||
FMT(n/nr_) | |||
endphoneme | |||
phoneme t[ // dental variant of /t/ | |||
vls dnt stop | |||
voicingswitch d[ | |||
lengthmod 2 | |||
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 | |||
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
length 5 | |||
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=30 | |||
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=30 | |||
IF nextPh(isPause2) THEN | |||
WAV(ustop/t_unasp2, 5) |
@@ -6,31 +6,31 @@ | |||
phoneme 1 // ngang tone: level | |||
stress | |||
Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone | |||
Tone(40, 5, envelope/p_level, NULL) // similar Hue dialect tone | |||
endphoneme | |||
phoneme 2 // huyền tone: low falling | |||
stress | |||
Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 8 | |||
Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 25 | |||
endphoneme | |||
phoneme 3 // sắc Tone(rising | |||
stress | |||
Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75 | |||
Tone(2, 10, envelope/p_fallrise, NULL) // 2 10 | |||
endphoneme | |||
phoneme 4 // hỏi Tone(curve (dipping rising) | |||
stress | |||
Tone(20, 5, envelope/p_512,NULL) //Tone(55, 5, envelope/p_fallrise, NULL) //30 5 m 55 5 | |||
Tone(5, 10, envelope/p_512,NULL) //20 5 | |||
endphoneme | |||
phoneme 5 // ngã tone: broken (creaking rising) | |||
stress | |||
Tone(50,2, envelope/p_214, envelope/vi_5amp) // 28,58 m20 85 | |||
Tone(10, 15, envelope/p_512, envelope/vi_6amp) // 40 20 | |||
endphoneme | |||
@@ -46,4 +46,41 @@ phoneme 7 // Tone(1 (ngang) at end of clause | |||
Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 | |||
endphoneme | |||
// Redefine the length of vowels | |||
phoneme i | |||
CALL vi/i | |||
length 150 | |||
endphoneme | |||
phoneme E | |||
CALL vi/E | |||
length 150 | |||
endphoneme | |||
phoneme a: | |||
CALL vi/a: | |||
length 150 | |||
endphoneme | |||
phoneme @ | |||
CALL vi/@ | |||
length 150 | |||
endphoneme | |||
phoneme @: | |||
CALL vi/@: | |||
length 150 | |||
endphoneme | |||
phoneme O | |||
CALL vi/O | |||
length 150 | |||
FMT(vowel/0) | |||
endphoneme | |||
phoneme Oi | |||
CALL vi/Oi | |||
length 100 | |||
FMT(vdiph/ooi_2) | |||
endphoneme |
@@ -0,0 +1,97 @@ | |||
//==================================================== | |||
// Vietnamese Phonemes - Make Sài gòn Dialect | |||
//==================================================== | |||
phoneme 1 // ngang tone: level | |||
stress | |||
Tone(32, 34, envelope/p_level, NULL) | |||
endphoneme | |||
phoneme 2 // huyền tone: low falling | |||
stress | |||
Tone(35,20 , envelope/p_fall, NULL) //20 | |||
endphoneme | |||
phoneme 3 // sắc Tone(rising | |||
stress | |||
Tone(40,60, envelope/p_rise, NULL) // 25 50 | |||
endphoneme | |||
phoneme 4 // hỏi Tone(curve (dipping rising) | |||
stress | |||
Tone(30,50, envelope/p_rise, NULL) //envelope/vi_5amp) // 28,58 | |||
endphoneme | |||
phoneme 5 // ngã tone: broken (creaking rising) | |||
stress | |||
Tone(30,50, envelope/p_rise, NULL) //20,80, envelope/p_214, envelope/vi_5amp) // 28,58 | |||
endphoneme | |||
phoneme 6 // nặng Tone(drop (constricted) | |||
stress | |||
//length 150 // ignore because it make too short sound 75 // reduce the length of the vowel | |||
Tone(10,5, envelope/p_512,NULL) // envelope/vi_6amp) | |||
endphoneme | |||
phoneme 7 // Tone(1 (ngang) at end of clause | |||
stress | |||
Tone(40, 20, envelope/p_fall, NULL) | |||
endphoneme | |||
// Redefine the length of vowels | |||
phoneme i | |||
CALL vi/i | |||
length 150 | |||
endphoneme | |||
phoneme E | |||
CALL vi/E | |||
length 150 | |||
endphoneme | |||
phoneme a: | |||
CALL vi/a: | |||
length 150 | |||
FMT(vietnam/a) | |||
endphoneme | |||
phoneme @ | |||
CALL vi/@ | |||
length 150 | |||
endphoneme | |||
phoneme @: | |||
CALL vi/@: | |||
length 150 | |||
endphoneme | |||
phoneme O | |||
CALL vi/O | |||
length 150 | |||
FMT(vowel/0) | |||
endphoneme | |||
phoneme Oi | |||
CALL vi/Oi | |||
length 100 | |||
FMT(vdiph/ooi_2) | |||
endphoneme | |||
phoneme y | |||
CALL vi/y | |||
FMT(vowel/u#_4) | |||
endphoneme | |||
phoneme o | |||
CALL vi/o | |||
FMT(vowel/o_5) | |||
endphoneme |
@@ -616,8 +616,8 @@ phoneme w | |||
VowelEnding(w/xw, -30) | |||
IF prevPh(isPause) THEN | |||
FMT(w/_w) | |||
IF prevPhW(isNasal) THEN | |||
FMT(w/w) | |||
ELSE | |||
FMT(w/_w) | |||
ENDIF | |||
@@ -634,7 +634,7 @@ endphoneme | |||
phoneme j | |||
liquid palatal | |||
liquid palatal starttype #i | |||
lengthmod 7 | |||
IF nextPhW(isVowel) THEN | |||
@@ -1610,7 +1610,7 @@ phoneme x | |||
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||
IF nextPh(isPause) THEN | |||
WAV(ufric/x, 110) | |||
WAV(ufric/x_, 60) | |||
ENDIF | |||
WAV(ufric/x_hr, 20) | |||
endphoneme | |||
@@ -1745,9 +1745,6 @@ include ph_kannada | |||
phonemetable ml hi | |||
include ph_malayalam | |||
phonemetable te hi | |||
include ph_telugu | |||
phonemetable hu base | |||
@@ -1833,6 +1830,9 @@ include ph_vietnam | |||
phonemetable vi-hue vi | |||
include ph_vietnam_hue | |||
phonemetable vi-sgn vi | |||
include ph_vietnam_sgn | |||
phonemetable zhy base | |||
include ph_zh_yue | |||
@@ -1867,31 +1867,14 @@ include ph_georgian | |||
phonemetable fa base | |||
include ph_farsi | |||
// experimental | |||
phonemetable ko base | |||
include ph_korean | |||
phonemetable kl base | |||
include ph_greenlandic | |||
phonemetable am base | |||
include ph_amhari | |||
//************************************************************************************** | |||
// The following lines are experimental, for future additions. | |||
// These langauges are not in a usable state. | |||
// These lines can be deleted. | |||
phonemetable si hi | |||
include ph_sinhala | |||
phonemetable sl sk | |||
include ph_slovenian | |||
//phonemetable rw base2 | |||
//include ph_kinyarwanda | |||
phonemetable rw base2 | |||
include ph_kinyarwanda | |||
//phonemetable mr hi | |||
//include ph_marathi | |||
@@ -1902,42 +1885,67 @@ include ph_slovenian | |||
//phonemetable mn base | |||
//include ph_mongolian | |||
//phonemetable prs base | |||
//include ph_dari | |||
phonemetable prs base | |||
include ph_dari | |||
phonemetable sl sk | |||
include ph_slovenian | |||
phonemetable gd base | |||
include ph_s_gaelic | |||
phonemetable nso base | |||
include ph_northern-sotho | |||
phonemetable ht fr | |||
include ph_haitian | |||
phonemetable az tr | |||
include ph_azerbaijani | |||
phonemetable ak base | |||
include ph_akan | |||
phonemetable am base | |||
include ph_amhari | |||
phonemetable wo base | |||
include ph_wolof | |||
//phonemetable gd base | |||
//include ph_s_gaelic | |||
phonemetable dv hi | |||
include ph_divehi | |||
//phonemetable nso base | |||
//include ph_northern-sotho | |||
phonemetable te hi | |||
include ph_telugu | |||
//phonemetable ht fr | |||
//include ph_haitian | |||
phonemetable si hi | |||
include ph_sinhala | |||
//phonemetable az tr | |||
//include ph_azerbaijani | |||
phonemetable tn base | |||
include ph_setswana | |||
//phonemetable ak base | |||
//include ph_akan | |||
//phonemetable wo base | |||
//include ph_wolof | |||
phonemetable mt base | |||
include ph_maltese | |||
//phonemetable dv hi | |||
//include ph_divehi | |||
phonemetable bo hi | |||
include ph_tibetan | |||
//phonemetable tn base | |||
//include ph_setswana | |||
phonemetable kk base | |||
include ph_kazakh | |||
//phonemetable mt base | |||
//include ph_maltese | |||
phonemetable tt base | |||
include ph_tatar | |||
//phonemetable bo hi | |||
//include ph_tibetan | |||
phonemetable ko base | |||
include ph_korean | |||
phonemetable kl base | |||
include ph_greenlandic | |||
//phonemetable kk base | |||
//include ph_kazakh | |||
phonemetable ar base | |||
include ph_arabic | |||
//phonemetable tt base | |||
//include ph_tatar | |||
phonemetable gu hi | |||
include ph_gujarati | |||
@@ -2,8 +2,8 @@ | |||
# Toolflags: | |||
CCflags = -c -C90 -depend !Depend -IC: -throwback -memaccess -zM -L22-S22-L41 | |||
C++flags = -c -depend !Depend -IC: -throwback -zM -L22-S22-L41 | |||
CCflags = -c -C90 -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
C++flags = -c -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
Linkflags = -rmf -c++ -o $@ | |||
ObjAsmflags = -throwback -NoCache -depend !Depend | |||
CMHGflags = | |||
@@ -27,38 +27,64 @@ Squeezeflags = -o $@ | |||
# User-editable dependencies: | |||
# Static dependencies: | |||
@.o.speak_riscos: @.cpp.speak_riscos | |||
c++ $(c++flags) -o @.o.speak_riscos @.cpp.speak_riscos | |||
@.o.compiledict: @.cpp.compiledict | |||
c++ $(c++flags) -o @.o.compiledict @.cpp.compiledict | |||
@.o.dictionary: @.CPP.dictionary | |||
c++ $(c++flags) -o @.o.dictionary @.CPP.dictionary | |||
@.o.intonation: @.CPP.intonation | |||
c++ $(c++flags) -o @.o.intonation @.CPP.intonation | |||
@.o.numbers: @.CPP.numbers | |||
c++ $(c++flags) -o @.o.numbers @.CPP.numbers | |||
@.o.phonemelist: @.CPP.phonemelist | |||
c++ $(c++flags) -o @.o.phonemelist @.CPP.phonemelist | |||
@.o.readclause: @.CPP.readclause | |||
c++ $(c++flags) -o @.o.readclause @.CPP.readclause | |||
@.o.setlengths: @.CPP.setlengths | |||
c++ $(c++flags) -o @.o.setlengths @.CPP.setlengths | |||
@.o.synthdata: @.CPP.synthdata | |||
c++ $(c++flags) -o @.o.synthdata @.CPP.synthdata | |||
@.o.synth_mbrola: @.CPP.synth_mbrola | |||
c++ $(c++flags) -o @.o.synth_mbrola @.CPP.synth_mbrola | |||
@.o.synthesize: @.CPP.synthesize | |||
c++ $(c++flags) -o @.o.synthesize @.CPP.synthesize | |||
@.o.translate: @.CPP.translate | |||
c++ $(c++flags) -o @.o.translate @.CPP.translate | |||
@.o.tr_languages: @.CPP.tr_languages | |||
c++ $(c++flags) -o @.o.tr_languages @.CPP.tr_languages | |||
@.o.voices: @.CPP.voices | |||
c++ $(c++flags) -o @.o.voices @.CPP.voices | |||
@.o.wavegen: @.CPP.wavegen | |||
c++ $(c++flags) -o @.o.wavegen @.CPP.wavegen | |||
@.o.speak_riscos: @.c.speak_riscos | |||
cc $(ccflags) -o @.o.speak_riscos @.c.speak_riscos | |||
@.o.compiledict: @.c.compiledict | |||
cc $(ccflags) -o @.o.compiledict @.c.compiledict | |||
@.o.dictionary: @.c.dictionary | |||
cc $(ccflags) -o @.o.dictionary @.c.dictionary | |||
@.o.intonation: @.c.intonation | |||
cc $(ccflags) -o @.o.intonation @.c.intonation | |||
@.o.numbers: @.c.numbers | |||
cc $(ccflags) -o @.o.numbers @.c.numbers | |||
@.o.phonemelist: @.c.phonemelist | |||
cc $(ccflags) -o @.o.phonemelist @.c.phonemelist | |||
@.o.readclause: @.c.readclause | |||
cc $(ccflags) -o @.o.readclause @.c.readclause | |||
@.o.setlengths: @.c.setlengths | |||
cc $(ccflags) -o @.o.setlengths @.c.setlengths | |||
@.o.synthdata: @.c.synthdata | |||
cc $(ccflags) -o @.o.synthdata @.c.synthdata | |||
@.o.synth_mbrola: @.c.synth_mbrola | |||
cc $(ccflags) -o @.o.synth_mbrola @.c.synth_mbrola | |||
@.o.synthesize: @.c.synthesize | |||
cc $(ccflags) -o @.o.synthesize @.c.synthesize | |||
@.o.translate: @.c.translate | |||
cc $(ccflags) -o @.o.translate @.c.translate | |||
@.o.tr_languages: @.c.tr_languages | |||
cc $(ccflags) -o @.o.tr_languages @.c.tr_languages | |||
@.o.voices: @.c.voices | |||
cc $(ccflags) -o @.o.voices @.c.voices | |||
@.o.wavegen: @.c.wavegen | |||
cc $(ccflags) -o @.o.wavegen @.c.wavegen | |||
@.o.assemb: @.s.assemb | |||
objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | |||
# Dynamic dependencies: | |||
o.wavegen: c.wavegen | |||
o.wavegen: h.StdAfx | |||
o.wavegen: h.speak_lib | |||
o.wavegen: h.speech | |||
o.wavegen: h.phoneme | |||
o.wavegen: h.synthesize | |||
o.wavegen: h.voice | |||
o.wavegen: h.sintab | |||
o.speak_riscos: c.speak_riscos | |||
o.speak_riscos: C:h.kernel | |||
o.speak_riscos: h.speech | |||
o.speak_riscos: h.speak_lib | |||
o.speak_riscos: h.phoneme | |||
o.speak_riscos: h.synthesize | |||
o.speak_riscos: h.voice | |||
o.speak_riscos: h.translate | |||
o.synthdata: c.synthdata | |||
o.synthdata: h.StdAfx | |||
o.synthdata: h.wctype | |||
o.synthdata: h.speak_lib | |||
o.synthdata: h.speech | |||
o.synthdata: h.phoneme | |||
o.synthdata: h.synthesize | |||
o.synthdata: h.voice | |||
o.synthdata: h.translate | |||
o.synthdata: h.wave | |||
o.synthdata: C:h.stdint |
@@ -38,7 +38,7 @@ | |||
#define os_X 0x20000 | |||
// interface to the assembler section | |||
extern "C" { | |||
//extern "C" { | |||
extern void DMA_Handler(void); | |||
@@ -51,7 +51,7 @@ extern int callback_entry(_kernel_swi_regs *r, void *pw); | |||
extern int sound_handler(_kernel_swi_regs *r, void *pw); | |||
extern int sound_entry(_kernel_swi_regs *r, void *pw); | |||
} | |||
//} | |||
extern int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); | |||
extern void RiscosOpenSound(); | |||
@@ -75,12 +75,13 @@ char path_home[N_PATH_HOME] = ""; | |||
char wavefile[120]; | |||
char textbuffile[L_tmpnam]; | |||
int sample_rate_index; // current value | |||
int current_voice_num=0; | |||
int sample_rate_doubled = 0; // 1= write audio data at 2x sample rate | |||
char current_voice_name[40] = {0}; | |||
int n_voice_files = 0; | |||
int n_voice_variant_files = 0; | |||
// output sound buffer, 2 bytes per sample | |||
static unsigned short SoundBuf[4096]; | |||
static short SoundBuf[4096]; | |||
static void *module_data; | |||
static int callback_inhibit = 0; | |||
static int more_text=0; | |||
@@ -131,9 +132,10 @@ static const char *help_text = | |||
"--punct=\"<characters>\"\n" | |||
"\t Speak the names of punctuation characters during speaking. If\n" | |||
"\t =<characters> is omitted, all punctuation is spoken.\n" | |||
"--voices=<language>\n" | |||
"\t List the available voices for the specified language.\n" | |||
"\t If <language> is omitted, then list all voices.\n" | |||
"--voices=\n" | |||
"\t List the available voices. (More voices can be installed from the main eSpeak distribution)\n" | |||
"--voices=variant\n" | |||
"\t List the available voice variants which can be combined with voices, eg. en+f3\n" | |||
"-k <integer>\n" | |||
"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | |||
"\t higher values = a pitch increase (try -k20).\n"; | |||
@@ -169,9 +171,6 @@ int GetFileLength(const char *filename) | |||
} /* end of GetFileLength */ | |||
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||
{ | |||
} | |||
void ReadVoiceNames2(char *directory) | |||
{//================================== | |||
@@ -194,6 +193,9 @@ void ReadVoiceNames2(char *directory) | |||
path_len = strlen(directory); | |||
voice_variant_names[0] = "(none)"; | |||
n_voice_variant_files = 1; | |||
while(regs.r[3] > 0) | |||
{ | |||
error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | |||
@@ -363,8 +365,8 @@ static void CloseWaveFile(int rate) | |||
void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) | |||
{//====================================================================================== | |||
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||
{//================================================================================================= | |||
// Do nothing in the command-line version. | |||
} // end of MarkerEvent | |||
@@ -452,6 +454,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
{ | |||
int c; | |||
int ix; | |||
char *vname; | |||
static static_length=0; | |||
static int user_token=0; /* increment for each call of translate() */ | |||
_kernel_swi_regs regs; | |||
@@ -462,12 +465,13 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
option_endpause = 1; | |||
if((voice_num >= 0) && (voice_num != current_voice_num) && (voice_num < N_VOICE_NAMES)) | |||
vname = voice_names[voice_num]; | |||
if((voice_num >= 0) && (strcmp(vname, current_voice_name) != 0) && (voice_num < N_VOICE_NAMES)) | |||
{ | |||
SetVoiceByName(voice_names[voice_num]); | |||
WavegenSetVoice(voice); | |||
WavegenSetVoice(voice); | |||
} | |||
current_voice_num = voice_num; | |||
strcmp(current_voice_name, vname); | |||
/* don't count CR as terminator if length is specified */ | |||
if(len > 0) terminator = 0; | |||
@@ -593,8 +597,16 @@ void set_say_options(int reg2, int reg3) | |||
option_waveout = 0; | |||
option_multibyte = 0; // auto | |||
option_capitals = 0; | |||
option_punctuation = 0; | |||
option_punctlist[0] = 0; | |||
if(reg2 >= 0) | |||
{ | |||
// not using SWI_SPEAK+14 to set voice and punctiation option | |||
option_punctuation = 0; | |||
option_punctlist[0] = 0; | |||
} | |||
else | |||
{ | |||
SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
} | |||
} /* end of set_say_options */ | |||
@@ -621,7 +633,7 @@ void jsd_swi_functions(int *r) | |||
case 3: | |||
// translate into phonemes | |||
use_ipa = 0; | |||
if((r[2] >= 1) && (use_ipa <= 3)) | |||
if((r[2] >= 1) && (r[2] <= 5)) | |||
use_ipa = r[2]; | |||
TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); | |||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
@@ -641,7 +653,7 @@ void jsd_swi_functions(int *r) | |||
if(r[1] < N_VOICE_NAMES) | |||
{ | |||
SetVoiceByName(voice_names[r[1]]); | |||
current_voice_num = r[1]; | |||
strcmp(current_voice_name, voice_names[r[1]]); | |||
WavegenSetVoice(voice); | |||
} | |||
break; | |||
@@ -675,6 +687,8 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
int value; | |||
int value2; | |||
int q_length; | |||
char *p; | |||
int ix; | |||
value = r[0]; | |||
switch(swi_no) | |||
@@ -682,16 +696,17 @@ _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; | |||
ix = current_source_index & 0x7ff; | |||
if(ix > 0) | |||
r[1] = ix-1; | |||
else | |||
r[1] = current_source_index; /* source index */ | |||
r[1] = ix; /* source index */ | |||
r[2] = 0; /* source tag */ | |||
r[3] = 0; /* for future expansion */ | |||
r[4] = 0; | |||
r[5] = 0; | |||
if(WcmdqUsed() < 5) | |||
if((WcmdqUsed() < 5) && (more_text == 0)) | |||
{ | |||
r[0] = -1; /* ready, or nearly */ | |||
} | |||
@@ -774,8 +789,30 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
break; | |||
case 14: // set voice by name | |||
SetVoiceByName((char *)r[0]); | |||
WavegenSetVoice(voice); | |||
p = (char *)r[0]; | |||
if(strcmp(p, current_voice_name) != 0) | |||
{ | |||
SetVoiceByName(p); | |||
WavegenSetVoice(voice); | |||
strcpy(current_voice_name, p); | |||
} | |||
option_punctuation = 0; | |||
if(r[1] != 0) | |||
{ | |||
p = (char *)r[1]; | |||
if(p[0] == 0) | |||
option_punctuation = 1; | |||
else | |||
{ | |||
for(ix=0; ix < N_PUNCTLIST; ix++) | |||
{ | |||
if((option_punctlist[ix] = p[ix]) == 0) | |||
break; | |||
} | |||
option_punctlist[N_PUNCTLIST-1] = 0; | |||
option_punctuation = 2; | |||
} | |||
} | |||
break; | |||
} | |||
return(NULL); | |||
@@ -814,7 +851,7 @@ void DisplayVoices(FILE *f_out, char *language) | |||
const espeak_VOICE **voices; | |||
espeak_VOICE voice_select; | |||
static char genders[4] = {' ','M','F',' '}; | |||
static char genders[4] = {'-','M','F','-'}; | |||
if(language[0] == '=') | |||
{ | |||
@@ -837,11 +874,24 @@ void DisplayVoices(FILE *f_out, char *language) | |||
{ | |||
count = 0; | |||
p = v->languages; | |||
if(memcmp(language,"=variant",8)==0) | |||
{ | |||
if(strcmp(p+1,"variant") != 0) | |||
continue; | |||
} | |||
else | |||
if(language[0] == 0) | |||
{ | |||
if(strcmp(p+1,"variant") == 0) | |||
continue; | |||
} | |||
while(*p != 0) | |||
{ | |||
len = strlen(p+1); | |||
lang_name = p+1; | |||
if(v->age == 0) | |||
strcpy(age_buf," "); | |||
else | |||
@@ -859,8 +909,6 @@ void DisplayVoices(FILE *f_out, char *language) | |||
count++; | |||
p += len+2; | |||
} | |||
// if(scores) | |||
// fprintf(f_out,"%3d ",v->score); | |||
fputc('\n',f_out); | |||
} | |||
} // end of DisplayVoices | |||
@@ -910,9 +958,9 @@ void command_line(char *arg_string, int wait) | |||
int option_index = 0; | |||
int c; | |||
int value; | |||
int speed; | |||
int amp; | |||
int wordgap; | |||
int speed = 175; | |||
int amp = 100; | |||
int wordgap = 0; | |||
int speaking = 0; | |||
int flag_stdin = 0; | |||
int flag_compile = 0; | |||
@@ -923,15 +971,15 @@ void command_line(char *arg_string, int wait) | |||
char command[80]; | |||
char *p; | |||
int ix; | |||
int quiet; | |||
int quiet = 0; | |||
voicename[0] = 0; | |||
wavefile[0] = 0; | |||
filename[0] = 0; | |||
option_ssml = 0; | |||
option_linelength = 0; | |||
option_phonemes = 0; | |||
option_waveout = 0; | |||
quiet = 0; | |||
option_multibyte = 0; // auto | |||
option_capitals = 0; | |||
option_punctuation = 0; | |||
@@ -963,7 +1011,6 @@ void command_line(char *arg_string, int wait) | |||
case 'k': | |||
option_capitals = param_number(&p); | |||
SetParameter(espeakCAPITALS,option_capitals,0); | |||
break; | |||
case 'x': | |||
@@ -996,17 +1043,14 @@ void command_line(char *arg_string, int wait) | |||
case 'a': | |||
amp = param_number(&p); | |||
SetParameter(espeakVOLUME,amp,0); | |||
break; | |||
case 's': | |||
speed = param_number(&p); | |||
SetParameter(espeakRATE,speed,0); | |||
break; | |||
case 'g': | |||
wordgap = param_number(&p); | |||
SetParameter(espeakWORDGAP,wordgap,0); | |||
break; | |||
case 'v': | |||
@@ -1049,7 +1093,6 @@ void command_line(char *arg_string, int wait) | |||
option_punctlist[N_PUNCTLIST-1] = 0; | |||
option_punctuation = 2; | |||
} | |||
SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
} | |||
else | |||
if(memcmp(command,"version",7)==0) | |||
@@ -1080,6 +1123,12 @@ void command_line(char *arg_string, int wait) | |||
} | |||
} | |||
SetParameter(espeakCAPITALS,option_capitals,0); | |||
SetParameter(espeakWORDGAP,wordgap,0); | |||
SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
SetParameter(espeakRATE,speed,0); | |||
SetParameter(espeakVOLUME,amp,0); | |||
if((option_phonemes > 1) && !option_waveout) | |||
quiet = 1; // can't call sprintf() during callback | |||
@@ -1241,17 +1290,39 @@ int sound_handler(_kernel_swi_regs *r, void *pw) | |||
int size; | |||
int *dma_buf; | |||
int x; | |||
int x2; | |||
int ix; | |||
module_data = (int *)pw; | |||
dma_buf = (int *)r->r[1]; | |||
size = (r->r[2] - r->r[1])/4; | |||
FillSoundBuf(size); | |||
if(sample_rate_doubled == 0) | |||
{ | |||
FillSoundBuf(size); | |||
for(ix=0; ix<size; ix++) | |||
for(ix=0; ix<size; ix++) | |||
{ | |||
x = SoundBuf[ix] & 0xffff; | |||
dma_buf[ix] = x + (x << 16); | |||
} | |||
} | |||
else | |||
{ | |||
x = SoundBuf[ix]; | |||
dma_buf[ix] = x + (x << 16); | |||
// write audio data at 2x sample rate | |||
size = size /2; | |||
FillSoundBuf(size); | |||
for(ix=0; ix<size; ix++) | |||
{ | |||
x = SoundBuf[ix] & 0xffff; | |||
dma_buf[ix*2] = x + (x << 16); | |||
if((ix+1) < size) | |||
{ | |||
x = ((SoundBuf[ix] + SoundBuf[ix+1]) / 2) & 0xffff; // interpolate | |||
} | |||
dma_buf[ix*2 + 1] = x + (x << 16); | |||
} | |||
} | |||
n_queue = WcmdqUsed(); | |||
@@ -1287,10 +1358,15 @@ int InitSound16(int sample_rate) | |||
int srate; | |||
int n_srix; | |||
int ix; | |||
int double_rate_ix = -1; | |||
int nearest_ix; | |||
int nearest_diff = 0x7fffffff; | |||
int diff; | |||
_kernel_swi_regs regs; | |||
_kernel_oserror *error; | |||
sound_mode = 0; | |||
sample_rate_doubled = 0; | |||
regs.r[0] = 0; | |||
error = _kernel_swi(0x40144+os_X,®s,®s); | |||
sound_mode = regs.r[0]; | |||
@@ -1301,7 +1377,7 @@ int InitSound16(int sample_rate) | |||
/* 16 bit sound, find sample rate index */ | |||
regs.r[0] = 0; | |||
regs.r[1] = 0; | |||
_kernel_swi(0x40146,®s,®s); | |||
_kernel_swi(0x40146,®s,®s); // Sound_SampleRate | |||
n_srix = regs.r[1]; | |||
regs.r[0] = 1; | |||
@@ -1314,14 +1390,32 @@ int InitSound16(int sample_rate) | |||
regs.r[0] = 2; | |||
regs.r[1] = ix; | |||
_kernel_swi(0x40146,®s,®s); | |||
srate = regs.r[2]; | |||
if(srate >= (sample_rate*1024)) | |||
srate = regs.r[2] / 1024; | |||
if(srate == sample_rate) | |||
{ | |||
return(ix); | |||
} | |||
if(srate == sample_rate*2) | |||
{ | |||
double_rate_ix = ix; | |||
} | |||
if((diff = abs(sample_rate - srate)) < nearest_diff) | |||
{ | |||
nearest_diff = diff; | |||
nearest_ix = ix; | |||
} | |||
} | |||
} | |||
return(14); // this was the index for 22050 | |||
if(double_rate_ix >= 0) | |||
{ | |||
// matching sample rate is not available, but double this rate is. | |||
sample_rate_doubled = 1; | |||
return(double_rate_ix); | |||
} | |||
else | |||
{ | |||
return(nearest_ix); | |||
} | |||
} // end of InitSound16 | |||
@@ -1369,7 +1463,7 @@ _kernel_oserror *user_init(char *cmd_fail, int podule_base, void *pw) | |||
// other characters give the correct results with iswalpha() etc. | |||
static char *locale = "ISO8859-1"; | |||
setlocale(LC_CTYPE,locale); | |||
setlocale(LC_CTYPE,locale); | |||
module_data = pw; | |||
@@ -1,17 +1,17 @@ | |||
copy <obey$dir>.^.src.compiledict/cpp <obey$dir>.cpp.compiledict fq~c | |||
copy <obey$dir>.^.src.dictionary/cpp <obey$dir>.cpp.dictionary fq~c | |||
copy <obey$dir>.^.src.intonation/cpp <obey$dir>.cpp.intonation fq~c | |||
copy <obey$dir>.^.src.numbers/cpp <obey$dir>.cpp.numbers fq~c | |||
copy <obey$dir>.^.src.phonemelist/cpp <obey$dir>.cpp.phonemelist fq~c | |||
copy <obey$dir>.^.src.readclause/cpp <obey$dir>.cpp.readclause fq~c | |||
copy <obey$dir>.^.src.setlengths/cpp <obey$dir>.cpp.setlengths fq~c | |||
copy <obey$dir>.^.src.synthdata/cpp <obey$dir>.cpp.synthdata fq~c | |||
copy <obey$dir>.^.src.synth_mbrola/cpp <obey$dir>.cpp.synth_mbrola fq~c | |||
copy <obey$dir>.^.src.synthesize/cpp <obey$dir>.cpp.synthesize fq~c | |||
copy <obey$dir>.^.src.translate/cpp <obey$dir>.cpp.translate fq~c | |||
copy <obey$dir>.^.src.tr_languages/cpp <obey$dir>.cpp.tr_languages fq~c | |||
copy <obey$dir>.^.src.voices/cpp <obey$dir>.cpp.voices fq~c | |||
copy <obey$dir>.^.src.wavegen/cpp <obey$dir>.cpp.wavegen fq~c | |||
copy <obey$dir>.^.src.compiledict/cpp <obey$dir>.c.compiledict fq~c | |||
copy <obey$dir>.^.src.dictionary/cpp <obey$dir>.c.dictionary fq~c | |||
copy <obey$dir>.^.src.intonation/cpp <obey$dir>.c.intonation fq~c | |||
copy <obey$dir>.^.src.numbers/cpp <obey$dir>.c.numbers fq~c | |||
copy <obey$dir>.^.src.phonemelist/cpp <obey$dir>.c.phonemelist fq~c | |||
copy <obey$dir>.^.src.readclause/cpp <obey$dir>.c.readclause fq~c | |||
copy <obey$dir>.^.src.setlengths/cpp <obey$dir>.c.setlengths fq~c | |||
copy <obey$dir>.^.src.synthdata/cpp <obey$dir>.c.synthdata fq~c | |||
copy <obey$dir>.^.src.synth_mbrola/cpp <obey$dir>.c.synth_mbrola fq~c | |||
copy <obey$dir>.^.src.synthesize/cpp <obey$dir>.c.synthesize fq~c | |||
copy <obey$dir>.^.src.translate/cpp <obey$dir>.c.translate fq~c | |||
copy <obey$dir>.^.src.tr_languages/cpp <obey$dir>.c.tr_languages fq~c | |||
copy <obey$dir>.^.src.voices/cpp <obey$dir>.c.voices fq~c | |||
copy <obey$dir>.^.src.wavegen/cpp <obey$dir>.c.wavegen fq~c | |||
copy <obey$dir>.^.src.phoneme/h <obey$dir>.h.phoneme fq~c | |||
copy <obey$dir>.^.src.sintab/h <obey$dir>.h.sintab fq~c |
@@ -2,7 +2,7 @@ | |||
[Setup] | |||
AppName=eSpeak | |||
AppVerName=eSpeak version 1.47.04 | |||
AppVerName=eSpeak version 1.47.08 | |||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
WindowVisible=yes | |||
@@ -1,7 +1,7 @@ | |||
[Setup] | |||
AppName=eSpeakEdit | |||
AppVerName=eSpeakEdit version 1.47.04 | |||
AppVerName=eSpeakEdit version 1.47.08 | |||
DefaultDirName={pf}\eSpeak | |||
DefaultGroupName=eSpeak | |||
OutputBaseFilename=setup_espeakedit |
@@ -2727,7 +2727,6 @@ static void DecThenCount() | |||
static void InstnPlusPhoneme(int instn) | |||
{//==================================== | |||
int phcode; | |||
DecThenCount(); | |||
phcode = NextItemBrackets(tPHONEMEMNEM,0); | |||
*prog_out++ = instn + phcode; | |||
@@ -2835,16 +2834,19 @@ int CompilePhoneme(int compile_phoneme) | |||
case i_CHANGE_IF+2: | |||
case i_CHANGE_IF+3: | |||
InstnPlusPhoneme(keyword << 8); | |||
DecThenCount(); | |||
break; | |||
case i_PAUSE_BEFORE: | |||
value = NextItemMax(255); | |||
*prog_out++ = (i_PAUSE_BEFORE << 8) + value; | |||
DecThenCount(); | |||
break; | |||
case i_PAUSE_AFTER: | |||
value = NextItemMax(255); | |||
*prog_out++ = (i_PAUSE_AFTER << 8) + value; | |||
DecThenCount(); | |||
break; | |||
case i_SET_LENGTH: | |||
@@ -2936,6 +2938,7 @@ int CompilePhoneme(int compile_phoneme) | |||
{ | |||
*prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); | |||
} | |||
DecThenCount(); | |||
break; | |||
} | |||
break; | |||
@@ -3018,6 +3021,7 @@ int CompilePhoneme(int compile_phoneme) | |||
case kCALLPH: | |||
CallPhoneme(); | |||
DecThenCount(); | |||
break; | |||
case kFMT: | |||
@@ -3049,6 +3053,7 @@ int CompilePhoneme(int compile_phoneme) | |||
break; | |||
case kTONESPEC: | |||
DecThenCount(); | |||
endphoneme = CompileToneSpec(); | |||
break; | |||
@@ -133,6 +133,7 @@ MNEM_TAB mnem_flags[] = { | |||
{"$stem", 0x30}, // must have a suffix | |||
{"$atend", 0x31}, // use this pronunciation if at end of clause | |||
{"$atstart", 0x32}, // use this pronunciation at start of clause | |||
{"$native", 0x33}, // not if we've switched translators | |||
// doesn't set dictionary_flags | |||
{"$?", 100}, // conditional rule, followed by byte giving the condition number | |||
@@ -700,9 +701,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
ix = utf8_in(&c2,p); | |||
if(c2 == 0) | |||
break; | |||
if(iswupper(c2)) | |||
if(iswupper2(c2)) | |||
{ | |||
utf8_out(towlower(c2),p); | |||
utf8_out(towlower2(c2),p); | |||
} | |||
else | |||
{ |
@@ -524,7 +524,7 @@ void DecodePhonemes(const char *inptr, char *outptr) | |||
unsigned short ipa1[96] = { | |||
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | |||
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | |||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, | |||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254, | |||
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | |||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | |||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | |||
@@ -633,10 +633,13 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
{//========================================================================= | |||
/* Can be called after a clause has been translated into phonemes, in order | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode) | |||
{//=============================================================================== | |||
/* Called after a clause has been translated into phonemes, in order | |||
to display the clause in phoneme mnemonic form. | |||
phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
bit 4: 0=eSpeak phoneme names, 1=IPA | |||
*/ | |||
int ix; | |||
@@ -649,6 +652,9 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
char *buf; | |||
int count; | |||
int flags; | |||
int use_ipa; | |||
int use_tie; | |||
int separate_phonemes = 0; | |||
char phon_buf[30]; | |||
char phon_buf2[30]; | |||
PHONEME_LIST *plist; | |||
@@ -656,6 +662,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
static const char *stress_chars = "==,,''"; | |||
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | |||
use_ipa = phoneme_mode & 0x10; | |||
use_tie = phoneme_mode & 0x0f; | |||
if(use_tie >= 3) | |||
{ | |||
// separate individual phonemes with underscores | |||
separate_phonemes = '_'; | |||
use_tie = 0; | |||
} | |||
if(phon_out != NULL) | |||
{ | |||
for(ix=1; ix<(n_phoneme_list-2); ix++) | |||
@@ -663,8 +679,21 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
buf = phon_buf; | |||
plist = &phoneme_list[ix]; | |||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
if(plist->newword) | |||
*buf++ = ' '; | |||
else | |||
{ | |||
if((separate_phonemes != 0) && (ix > 1)) | |||
{ | |||
utf8_in(&c, phon_buf2); | |||
if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||
{ | |||
*buf++ = separate_phonemes; | |||
} | |||
} | |||
} | |||
if(plist->synthflags & SFLAG_SYLLABLE) | |||
{ | |||
@@ -687,22 +716,23 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
if(c != 0) | |||
{ | |||
buf += utf8_out(c, buf); | |||
// if(separate_phonemes) | |||
// *buf++ = separate_phonemes; | |||
} | |||
} | |||
} | |||
flags = 0; | |||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
count = 0; | |||
for(p=phon_buf2; *p != 0;) | |||
{ | |||
p += utf8_in(&c, p); | |||
if(use_ipa > 1) | |||
if(use_tie > 0) | |||
{ | |||
// look for non-inital alphabetic character, but not diacritic, superscript etc. | |||
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) | |||
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||
{ | |||
buf += utf8_out(char_tie[use_ipa-2], buf); | |||
buf += utf8_out(char_tie[use_tie-1], buf); | |||
} | |||
} | |||
buf += utf8_out(c, buf); | |||
@@ -894,7 +924,13 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
if(count==0) | |||
c1 = c; | |||
count++; | |||
if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3)) | |||
{ | |||
// don't count apostrophe | |||
} | |||
else | |||
count++; | |||
if(IsVowel(tr, c)) | |||
{ | |||
@@ -902,7 +938,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
break; | |||
} | |||
if((c != '\'') && !iswalpha(c)) | |||
if((c != '\'') && !iswalpha2(c)) | |||
return(0); | |||
} | |||
@@ -1624,8 +1660,11 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, | |||
if(!(control & 1) && ((ph = phoneme_tab[*p]) != NULL)) | |||
{ | |||
if(ph->type == phSTRESS) | |||
ph = phoneme_tab[p[1]]; | |||
while((ph->type == phSTRESS) || (*p == phonEND_WORD)) | |||
{ | |||
p++; | |||
ph = phoneme_tab[p[0]]; | |||
} | |||
#ifdef deleted | |||
int gap = tr->langopts.word_gap & 0x700; | |||
@@ -2078,7 +2117,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
break; | |||
case RULE_NONALPHA: | |||
if(!iswalpha(letter_w)) | |||
if(!iswalpha2(letter_w)) | |||
{ | |||
add_points = (21-distance_right); | |||
post_ptr += letter_xbytes; | |||
@@ -2322,7 +2361,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
break; | |||
case RULE_NONALPHA: | |||
if(!iswalpha(letter_w)) | |||
if(!iswalpha2(letter_w)) | |||
{ | |||
add_points = (21-distance_right); | |||
pre_ptr -= letter_xbytes; | |||
@@ -2639,7 +2678,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
if(tr->letter_bits_offset > 0) | |||
{ | |||
// not a Latin alphabet, switch to the default Latin alphabet language | |||
if((letter <= 0x241) && iswalpha(letter)) | |||
if((letter <= 0x241) && iswalpha2(letter)) | |||
{ | |||
sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | |||
return(0); | |||
@@ -3240,6 +3279,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
continue; | |||
} | |||
} | |||
if(dictionary_flags2 & FLAG_NATIVE) | |||
{ | |||
if(tr != translator) | |||
continue; // don't use if we've switched translators | |||
} | |||
if(dictionary_flags & FLAG_ALT2_TRANS) | |||
{ | |||
// language specific | |||
@@ -3505,9 +3549,9 @@ int LookupFlags(Translator *tr, const char *word) | |||
{//============================================== | |||
char buf[100]; | |||
static unsigned int flags[2]; | |||
char *word1 = (char *)word; | |||
flags[0] = flags[1] = 0; | |||
char *word1 = (char *)word; | |||
LookupDictList(tr, &word1, buf, flags, 0, NULL); | |||
return(flags[0]); | |||
} |
@@ -20,6 +20,7 @@ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <ctype.h> | |||
#ifndef NEED_GETOPT | |||
#include <getopt.h> | |||
#endif | |||
@@ -67,7 +68,7 @@ static const char *help_text = | |||
"\t Compile pronunciation rules and dictionary from the current\n" | |||
"\t directory. <voice name> specifies the language\n" | |||
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | |||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||
"--path=\"<path>\"\n" | |||
"\t Specifies the directory containing the espeak-data directory\n" | |||
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | |||
@@ -221,14 +222,17 @@ int OpenWavFile(char *path, int rate) | |||
if(path == NULL) | |||
return(2); | |||
if(path[0] == 0) | |||
return(0); | |||
if(strcmp(path,"stdout")==0) | |||
f_wavfile = stdout; | |||
else | |||
f_wavfile = fopen(path,"wb"); | |||
while(isspace(*path)) path++; | |||
f_wavfile = NULL; | |||
if(path[0] != 0) | |||
{ | |||
if(strcmp(path,"stdout")==0) | |||
f_wavfile = stdout; | |||
else | |||
f_wavfile = fopen(path,"wb"); | |||
} | |||
if(f_wavfile == NULL) | |||
{ | |||
fprintf(stderr,"Can't write to: '%s'\n",path); | |||
@@ -620,7 +624,7 @@ int main (int argc, char **argv) | |||
{ | |||
value = -1; | |||
sscanf(optarg2,"%d",&value); | |||
if((value<0) || (value>2)) | |||
if((value<0) || (value>3)) | |||
{ | |||
fprintf(stderr,"Bad value for -ipa=\n"); | |||
value = 0; |
@@ -199,6 +199,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) | |||
EVT_MENU(MENU_OPT_SPEED, MyFrame::OnOptions) | |||
EVT_MENU(MENU_OPT_PUNCT, MyFrame::OnOptions) | |||
EVT_MENU(MENU_OPT_SPELL, MyFrame::OnOptions) | |||
EVT_MENU(MENU_OPT_SPELL2, MyFrame::OnOptions) | |||
EVT_MENU(MENU_PATH0, MyFrame::OnOptions) | |||
EVT_MENU(MENU_PATH1, MyFrame::OnOptions) | |||
EVT_MENU(MENU_PATH2, MyFrame::OnOptions) | |||
@@ -625,6 +626,12 @@ void OnOptions2(int event_id) | |||
break; | |||
case MENU_OPT_SPELL: | |||
transldlg->t_source->SetValue(_T("<say-as interpret-as=\"characters\">\n")); | |||
transldlg->t_source->SetInsertionPointEnd(); | |||
notebook->SetSelection(1); | |||
break; | |||
case MENU_OPT_SPELL2: | |||
transldlg->t_source->SetValue(_T("<say-as interpret-as=\"tts:char\">\n")); | |||
transldlg->t_source->SetInsertionPointEnd(); | |||
notebook->SetSelection(1); | |||
@@ -632,7 +639,7 @@ void OnOptions2(int event_id) | |||
case MENU_PATH0: | |||
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | |||
_T(""),_T(""),_T("*"),wxOPEN); | |||
_T("phonemes"),_T(""),_T("*"),wxOPEN); | |||
if(!string.IsEmpty()) | |||
{ | |||
path_phfile = string; |
@@ -1564,8 +1564,8 @@ void CountWordFreq(wxString path, wcount **hashtab) | |||
for(k=0; k<ix; ) | |||
{ | |||
k += utf8_in(&wc,&buf[k]); | |||
wc = towlower(wc); // convert to lower case | |||
if(iswalpha(wc)) | |||
wc = towlower2(wc); // convert to lower case | |||
if(iswalpha2(wc)) | |||
{ | |||
j += utf8_out(wc,&wbuf[j]); | |||
n_chars++; | |||
@@ -2272,6 +2272,82 @@ void Test2() | |||
#endif | |||
#define MAX_WALPHA 0x24f | |||
void Make_walpha_tab() | |||
{//=================== | |||
int ix; | |||
int value; | |||
int c; | |||
short exceptions[40]; | |||
int ex = 0; | |||
FILE *f; | |||
f = fopen("/home/jsd1/walpha_tab.txt","w"); | |||
for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
{ | |||
value = 0; | |||
if(iswalpha(ix)) | |||
{ | |||
value = 0xfe; // no case | |||
if(iswlower(ix)) | |||
{ | |||
value = 0xff; | |||
} | |||
else if(iswupper(ix)) | |||
{ | |||
c = towlower(ix); | |||
if(c > 0) | |||
value = c - ix; | |||
if((value < 0) || (value > 0xfc)) | |||
{ | |||
exceptions[ex] = ix; | |||
exceptions[ex+1] = c; | |||
ex+=2; | |||
value = 0xfd; | |||
} | |||
} | |||
} | |||
if(value > 0xfc) | |||
fprintf(f," 0x%.2x,", value); | |||
else | |||
fprintf(f," %4d,", value); | |||
if((ix % 16) == 15) | |||
{ | |||
fprintf(f," // %.3x\n", ix & 0xfff0); | |||
} | |||
} | |||
fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); | |||
for(ix=0; ix<ex; ix+=2) | |||
{ | |||
fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]); | |||
} | |||
fprintf(f, "\t0,0 };\n"); | |||
fprintf(f, "\nstatic const short wchar_toupper[] = {\n"); | |||
for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
{ | |||
if(iswlower(ix)) | |||
{ | |||
c = towupper(ix); | |||
value = ix - c; | |||
if((value != 32) && (value != 1)) | |||
{ | |||
fprintf(f,"\t0x%.3x, 0x%.3x,\n", ix, c); | |||
} | |||
} | |||
} | |||
fprintf(f, "\t0,0 };\n"); | |||
fclose(f); | |||
} | |||
const char* text1 = "Hello world. Testing."; | |||
@@ -2290,6 +2366,7 @@ void TestTest(int control) | |||
//CharsetToUnicode("ISO-8859-4"); | |||
//CharsetToUnicode("ISCII"); | |||
if(control==2) | |||
{ | |||
return; | |||
@@ -2319,9 +2396,16 @@ if(control==2) | |||
espeak_SetSynthCallback(TestSynthCallback); | |||
espeak_SetUriCallback(TestUriCallback); | |||
espeak_SetVoiceByName("en"); | |||
voice.languages = "fr"; | |||
espeak_SetVoiceByProperties(&voice); | |||
// espeak_SetVoiceByName("fr"); | |||
espeak_Synth("1", 5, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); | |||
// voice.languages = "en"; | |||
// espeak_SetVoiceByProperties(&voice); | |||
espeak_SetVoiceByName("de"); | |||
espeak_Synth(textbuf, strlen(textbuf)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); | |||
// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); | |||
// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); | |||
espeak_SetParameter(espeakPUNCTUATION, 1, 0); | |||
espeak_Synchronize(); |
@@ -127,6 +127,7 @@ enum { | |||
MENU_OPT_SPEED, | |||
MENU_OPT_PUNCT, | |||
MENU_OPT_SPELL, | |||
MENU_OPT_SPELL2, | |||
MENU_PATHS, | |||
MENU_PATH0, | |||
MENU_PATH1, |
@@ -119,8 +119,10 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) | |||
option_menu = new wxMenu; | |||
option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); | |||
option_menu->Append(MENU_OPT_SPEED, _("Speed...")); | |||
option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation")); | |||
option_menu->Append(MENU_OPT_SPELL, _("Speak character names")); | |||
option_menu->AppendSeparator(); | |||
option_menu->Append(MENU_OPT_PUNCT, _("Speak punctuation")); | |||
option_menu->Append(MENU_OPT_SPELL, _("Speak characters")); | |||
option_menu->Append(MENU_OPT_SPELL2, _("Speak character name")); | |||
// TOOLS | |||
vowelchart_menu = new wxMenu; |
@@ -582,7 +582,103 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b | |||
} // end of LookupLetter | |||
static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'Ef"}; // using phonemes available to all languages | |||
// unicode ranges for non-ascii digits 0-9 | |||
static const int number_ranges[] = { | |||
0x660, 0x6f0, // arabic | |||
0x966, 0x9e6, 0xa66, 0xae6, 0xb66, 0xbe6, 0xc66, 0xce6, 0xd66, // indic | |||
0xe50, 0xed0, 0xf20, 0x1040, 0x1090, | |||
0 }; // these must be in ascending order | |||
int NonAsciiNumber(int letter) | |||
{//============================ | |||
// Change non-ascii digit into ascii digit '0' to '9', (or -1 if not) | |||
const int *p; | |||
int base; | |||
for(p=number_ranges; (base = *p) != 0; p++) | |||
{ | |||
if(letter < base) | |||
break; // not found | |||
if(letter < (base+10)) | |||
return(letter-base+'0'); | |||
} | |||
return(-1); | |||
} | |||
#define L_SUB 0x4000 // subscript | |||
#define L_SUP 0x8000 // superscript | |||
static const char *modifiers[] = {NULL, "_sub", "_sup", NULL}; | |||
// this list must be in ascending order | |||
static unsigned short derived_letters[] = { | |||
0x00aa, 'a'+L_SUP, | |||
0x00b2, '2'+L_SUP, | |||
0x00b3, '3'+L_SUP, | |||
0x00b9, '1'+L_SUP, | |||
0x00ba, 'o'+L_SUP, | |||
0x02b0, 'h'+L_SUP, | |||
0x02b1, 0x266+L_SUP, | |||
0x02b2, 'j'+L_SUP, | |||
0x02b3, 'r'+L_SUP, | |||
0x02b4, 0x279+L_SUP, | |||
0x02b5, 0x27b+L_SUP, | |||
0x02b6, 0x281+L_SUP, | |||
0x02b7, 'w'+L_SUP, | |||
0x02b8, 'y'+L_SUP, | |||
0x02c0, 0x294+L_SUP, | |||
0x02c1, 0x295+L_SUP, | |||
0x02e0, 0x263+L_SUP, | |||
0x02e1, 'l'+L_SUP, | |||
0x02e2, 's'+L_SUP, | |||
0x02e3, 'x'+L_SUP, | |||
0x2070, '0'+L_SUP, | |||
0x2071, 'i'+L_SUP, | |||
0x2074, '4'+L_SUP, | |||
0x2075, '5'+L_SUP, | |||
0x2076, '6'+L_SUP, | |||
0x2077, '7'+L_SUP, | |||
0x2078, '8'+L_SUP, | |||
0x2079, '9'+L_SUP, | |||
0x207a, '+'+L_SUP, | |||
0x207b, '-'+L_SUP, | |||
0x207c, '='+L_SUP, | |||
0x207d, '('+L_SUP, | |||
0x207e, ')'+L_SUP, | |||
0x207f, 'n'+L_SUP, | |||
0x2080, '0'+L_SUB, | |||
0x2081, '1'+L_SUB, | |||
0x2082, '2'+L_SUB, | |||
0x2083, '3'+L_SUB, | |||
0x2084, '4'+L_SUB, | |||
0x2085, '5'+L_SUB, | |||
0x2086, '6'+L_SUB, | |||
0x2087, '7'+L_SUB, | |||
0x2088, '8'+L_SUB, | |||
0x2089, '9'+L_SUB, | |||
0x208a, '+'+L_SUB, | |||
0x208b, '-'+L_SUB, | |||
0x208c, '='+L_SUB, | |||
0x208d, '('+L_SUB, | |||
0x208e, ')'+L_SUB, | |||
0x2090, 'a'+L_SUB, | |||
0x2091, 'e'+L_SUB, | |||
0x2092, 'o'+L_SUB, | |||
0x2093, 'x'+L_SUB, | |||
0x2094, 0x259+L_SUB, | |||
0x2095, 'h'+L_SUB, | |||
0x2096, 'k'+L_SUB, | |||
0x2097, 'l'+L_SUB, | |||
0x2098, 'm'+L_SUB, | |||
0x2099, 'n'+L_SUB, | |||
0x209a, 'p'+L_SUB, | |||
0x209b, 's'+L_SUB, | |||
0x209c, 't'+L_SUB, | |||
0,0}; | |||
static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages | |||
int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
{//========================================================================= | |||
@@ -596,15 +692,18 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
int letter; | |||
int len; | |||
int ix; | |||
int c; | |||
char *p2; | |||
char *pbuf; | |||
const char *modifier; | |||
ALPHABET *alphabet; | |||
int al_offset; | |||
int al_flags; | |||
int language; | |||
int number; | |||
int phontab_1; | |||
int speak_letter_number; | |||
char capital[20]; | |||
char capital[30]; | |||
char ph_buf[80]; | |||
char ph_buf2[80]; | |||
char ph_alphabet[80]; | |||
@@ -626,21 +725,61 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
if(control & 2) | |||
{ | |||
// include CAPITAL information | |||
if(iswupper(letter)) | |||
if(iswupper2(letter)) | |||
{ | |||
Lookup(tr, "_cap", capital); | |||
} | |||
} | |||
letter = towlower2(letter); | |||
LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
if(ph_buf[0] == 0) | |||
{ | |||
// is this a subscript or superscript letter ? | |||
for(ix=0; (c = derived_letters[ix]) != 0; ix+=2) | |||
{ | |||
if(c > letter) | |||
break; | |||
if(c == letter) | |||
{ | |||
c = derived_letters[ix+1]; | |||
letter = c & 0x3fff; | |||
if((modifier = modifiers[c >> 14]) != NULL) | |||
{ | |||
Lookup(tr, modifier, capital); | |||
if(capital[0] == 0) | |||
{ | |||
capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
Lookup(translator2, modifier, &capital[3]); | |||
if(capital[3] != 0) | |||
{ | |||
capital[0] = phonPAUSE; | |||
capital[1] = phonSWITCH; | |||
len = strlen(&capital[3]); | |||
capital[len+3] = phonSWITCH; | |||
capital[len+4] = phontab_1; | |||
capital[len+5] = 0; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
} | |||
if(ph_buf[0] == phonSWITCH) | |||
{ | |||
strcpy(phonemes,ph_buf); | |||
return(0); | |||
} | |||
if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | |||
{ | |||
// convert a non-ascii number to 0-9 | |||
LookupLetter(tr, number, 0, ph_buf, control & 1); | |||
} | |||
al_offset = 0; | |||
al_flags = 0; | |||
if((alphabet = AlphabetFromChar(letter)) != NULL) | |||
@@ -766,7 +905,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
speak_letter_number = 1; | |||
if(!(al_flags & AL_NO_SYMBOL)) | |||
{ | |||
if(iswalpha(letter)) | |||
if(iswalpha2(letter)) | |||
Lookup(translator, "_?A", ph_buf); | |||
if((ph_buf[0]==0) && !iswspace(letter)) | |||
@@ -784,8 +923,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
speak_letter_number = 0; | |||
} | |||
if((ph_alphabet[0] != 0) && speak_letter_number) | |||
ph_buf[0] = 0; // don't speak "letter" if we speak alphabet name | |||
// if((ph_alphabet[0] != 0) && speak_letter_number) | |||
// ph_buf[0] = 0; // don't speak "letter" if we speak alphabet name | |||
if(speak_letter_number) | |||
{ | |||
@@ -2216,8 +2355,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | |||
utf8_in(&next_char,p); | |||
if(!iswalpha(next_char) && (thousands_exact==0)) | |||
// if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
if(!iswalpha2(next_char) && (thousands_exact==0)) | |||
// if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | |||
} | |||
@@ -76,6 +76,8 @@ static int ssml_ignore_l_angle = 0; | |||
// punctuations symbols that can end a clause | |||
static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
0x00a1, // inverted exclamation | |||
0x00bf, // inverted question | |||
0x2013, // en-dash | |||
0x2014, // em-dash | |||
0x2026, // elipsis | |||
@@ -124,6 +126,8 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
// bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket | |||
static const unsigned int punct_attributes [] = { 0, | |||
CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, | |||
CLAUSE_SEMICOLON | 0x8000, // inverted exclamation | |||
CLAUSE_SEMICOLON | 0x8000, // inverted question | |||
CLAUSE_SEMICOLON, // en-dash | |||
CLAUSE_SEMICOLON, // em-dash | |||
CLAUSE_SEMICOLON | PUNCT_SAY_NAME | 0x8000, // elipsis | |||
@@ -214,50 +218,91 @@ const int param_defaults[N_SPEECH_PARAM] = { | |||
0, // voice type | |||
}; | |||
#ifdef NEED_WCHAR_FUNCTIONS | |||
// additional Latin characters beyond the Latin1 character set | |||
#define MAX_WALPHA 0x233 | |||
// indexed by character - 0x100 | |||
// 0=not alphabetic, 0xff=lower case, 0xfe=special case | |||
// additional Latin characters beyond the ascii character set | |||
#define MAX_WALPHA 0x24f | |||
// indexed by character - 0x80 | |||
// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower | |||
// other=value to add to upper case to convert to lower case | |||
static unsigned char walpha_tab[MAX_WALPHA-0xff] = { | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120 | |||
0xfe,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130 | |||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170 | |||
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180 | |||
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190 | |||
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0 | |||
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0 | |||
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0 | |||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0 | |||
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200 | |||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210 | |||
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220 | |||
1,0xff, 1,0xff }; // 230 | |||
static unsigned char walpha_tab[MAX_WALPHA-0x7f] = { | |||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 080 | |||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 090 | |||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0a0 | |||
0, 0, 0, 0, 0, 0xff, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0b0 | |||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 0c0 | |||
32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0xff, // 0d0 | |||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0 | |||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 100 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 110 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 120 | |||
0xfd, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, // 130 | |||
0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, // 140 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 150 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 160 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, // 170 | |||
0xff, 210, 1, 0xff, 1, 0xff, 206, 1, 0xff, 205, 205, 1, 0xff, 0xfe, 79, 202, // 180 | |||
203, 1, 0xff, 205, 207, 0xff, 211, 209, 1, 0xff, 0xff, 0xfe, 211, 213, 0xff, 214, // 190 | |||
1, 0xff, 1, 0xff, 1, 0xff, 218, 1, 0xff, 218, 0xfe, 0xfe, 1, 0xff, 218, 1, // 1a0 | |||
0xff, 217, 217, 1, 0xff, 1, 0xff, 219, 1, 0xff, 0xfe, 0xfe, 1, 0xff, 0xfe, 0xff, // 1b0 | |||
0xfe, 0xfe, 0xfe, 0xfe, 2, 0xff, 0xff, 2, 0xff, 0xff, 2, 0xff, 0xff, 1, 0xff, 1, // 1c0 | |||
0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, 1, 0xff, // 1d0 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1e0 | |||
0xfe, 2, 0xff, 0xff, 1, 0xff, 0xfd, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1f0 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 200 | |||
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 210 | |||
0xfd, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 220 | |||
1, 0xff, 1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 1, 0xff, 0xfd, 0xfd, 0xfe, // 230 | |||
0xfe, 1, 0xff, 0xfd, 69, 71, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff}; // 240 | |||
static const short wchar_tolower[] = { | |||
0x130, 0x069, | |||
0x178, 0x0ff, | |||
0x1f6, 0x195, | |||
0x1f7, 0x1bf, | |||
0x220, 0x19e, | |||
0x23a, 0x2c65, | |||
0x23d, 0x19a, | |||
0x23e, 0x2c66, | |||
0x243, 0x180, | |||
0,0 }; | |||
static const short wchar_toupper[] = { | |||
0x0b5, 0x39c, | |||
0x0df, 0x0df, | |||
0x0ff, 0x178, | |||
0x131, 0x049, | |||
0x17f, 0x053, | |||
0x180, 0x243, | |||
0x195, 0x1f6, | |||
0x19a, 0x23d, | |||
0x19e, 0x220, | |||
0x1bf, 0x1f7, | |||
0x1c6, 0x1c4, | |||
0x1c9, 0x1c7, | |||
0x1cc, 0x1ca, | |||
0x1dd, 0x18e, | |||
0x1f3, 0x1f1, | |||
0,0 }; | |||
#ifdef NEED_WCHAR_FUNCTIONS | |||
// use ctype.h functions for Latin1 (character < 0x100) | |||
int iswalpha(int c) | |||
{ | |||
if(c < 0x100) | |||
if(c < 0x80) | |||
return(isalpha(c)); | |||
if((c > 0x3040) && (c <= 0xa700)) | |||
return(1); // japanese, chinese characters | |||
if(c > MAX_WALPHA) | |||
return(0); | |||
return(walpha_tab[c-0x100]); | |||
return(walpha_tab[c-0x80]); | |||
} | |||
int iswdigit(int c) | |||
{ | |||
if(c < 0x100) | |||
if(c < 0x80) | |||
return(isdigit(c)); | |||
return(0); | |||
} | |||
@@ -272,50 +317,67 @@ int iswalnum(int c) | |||
int towlower(int c) | |||
{ | |||
int x; | |||
if(c < 0x100) | |||
int ix; | |||
if(c < 0x80) | |||
return(tolower(c)); | |||
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff)) | |||
return(c); // already lower case | |||
if(x == 0xfe) | |||
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe)) | |||
return(c); | |||
if(x == 0xfd) | |||
{ | |||
// special cases | |||
if(c == 0x130) // uppercase i-dot | |||
return('i'); | |||
// special cases, lookup translation table | |||
for(ix=0; wchar_tolower[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_tolower[ix] == c) | |||
return(wchar_tolower[ix+1]); | |||
} | |||
} | |||
return(c + x); // convert to lower case | |||
} | |||
int towupper(int c) | |||
{ | |||
// check whether the previous character code is the upper-case equivalent of this character | |||
if(tolower(c-1) == c) | |||
return(c-1); // yes, use it | |||
int ix; | |||
// check whether a previous character code is the upper-case equivalent of this character | |||
if(towlower(c-32) == c) | |||
return(c-32); // yes, use it | |||
if(towlower(c-1) == c) | |||
return(c-1); | |||
for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_toupper[ix] == c) | |||
return(wchar_toupper[ix+1]); | |||
} | |||
return(c); // no | |||
} | |||
int iswupper(int c) | |||
{ | |||
int x; | |||
if(c < 0x100) | |||
if(c < 0x80) | |||
return(isupper(c)); | |||
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff)) | |||
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff)) | |||
return(0); | |||
return(1); | |||
} | |||
int iswlower(int c) | |||
{ | |||
if(c < 0x100) | |||
if(c < 0x80) | |||
return(islower(c)); | |||
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) | |||
if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff)) | |||
return(0); | |||
return(1); | |||
} | |||
int iswspace(int c) | |||
{ | |||
if(c < 0x100) | |||
if(c < 0x80) | |||
return(isspace(c)); | |||
if(c == 0xa0) | |||
return(1); | |||
return(0); | |||
} | |||
@@ -367,23 +429,96 @@ float wcstod(const wchar_t *str, wchar_t **tailptr) | |||
} | |||
#endif | |||
// use internal data for iswalpha up to U+024F | |||
// iswalpha() on Windows is unreliable (U+AA, U+BA). | |||
int iswalpha2(int c) | |||
{ | |||
if(c < 0x80) | |||
return(isalpha(c)); | |||
if((c > 0x3040) && (c <= 0xa700)) | |||
return(1); // japanese, chinese characters | |||
if(c > MAX_WALPHA) | |||
return(iswalpha(c)); | |||
return(walpha_tab[c-0x80]); | |||
} | |||
int iswlower2(int c) | |||
{ | |||
if(c < 0x80) | |||
return(islower(c)); | |||
if(c > MAX_WALPHA) | |||
return(iswlower(c)); | |||
if(walpha_tab[c-0x80] == 0xff) | |||
return(1); | |||
return(0); | |||
} | |||
int iswupper2(int c) | |||
{ | |||
int x; | |||
if(c < 0x80) | |||
return(isupper(c)); | |||
if(c > MAX_WALPHA) | |||
return(iswupper(c)); | |||
if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe)) | |||
return(1); | |||
return(0); | |||
} | |||
int towlower2(unsigned int c) | |||
{ | |||
int x; | |||
int ix; | |||
// check for non-standard upper to lower case conversions | |||
if(c == 'I') | |||
{ | |||
if(translator->translator_name == L('t','r')) | |||
if(translator->langopts.dotless_i) | |||
{ | |||
c = 0x131; // I -> ı | |||
} | |||
} | |||
#ifdef __WIN32__ | |||
if(c == 0x130) // uppercase i-dot | |||
return('i'); | |||
#endif | |||
return(towlower(c)); | |||
if(c < 0x80) | |||
return(tolower(c)); | |||
if(c > MAX_WALPHA) | |||
return(towlower(c)); | |||
if((x = walpha_tab[c-0x80]) >= 0xfe) | |||
return(c); // this is not an upper case letter | |||
if(x == 0xfd) | |||
{ | |||
// special cases, lookup translation table | |||
for(ix=0; wchar_tolower[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_tolower[ix] == (int)c) | |||
return(wchar_tolower[ix+1]); | |||
} | |||
} | |||
return(c + x); // convert to lower case | |||
} | |||
int towupper2(unsigned int c) | |||
{ | |||
int ix; | |||
if(c > MAX_WALPHA) | |||
return(towupper(c)); | |||
// check whether a previous character code is the upper-case equivalent of this character | |||
if(towlower2(c-32) == (int)c) | |||
return(c-32); // yes, use it | |||
if(towlower2(c-1) == (int)c) | |||
return(c-1); | |||
for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_toupper[ix] == (int)c) | |||
return(wchar_toupper[ix+1]); | |||
} | |||
return(c); // no | |||
} | |||
static int IsRomanU(unsigned int c) | |||
{//================================ | |||
@@ -2261,7 +2396,7 @@ f_input = f_in; // for GetC etc | |||
c2 = ' '; | |||
} | |||
else | |||
if((c2 == '/') || iswalpha(c2)) | |||
if((c2 == '/') || iswalpha2(c2)) | |||
{ | |||
// check for space in the output buffer for embedded commands produced by the SSML tag | |||
if(ix > (n_buf - 20)) | |||
@@ -2444,10 +2579,10 @@ f_input = f_in; // for GetC etc | |||
} | |||
} | |||
if(iswupper(c1)) | |||
if(iswupper2(c1)) | |||
{ | |||
tr->clause_upper_count++; | |||
if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev)) | |||
if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev)) | |||
{ | |||
char text_buf[40]; | |||
char text_buf2[30]; | |||
@@ -2464,7 +2599,7 @@ f_input = f_in; // for GetC etc | |||
} | |||
} | |||
else | |||
if(iswalpha(c1)) | |||
if(iswalpha2(c1)) | |||
tr->clause_lower_count++; | |||
if(option_phoneme_input) | |||
@@ -2533,8 +2668,8 @@ if(option_ssml) parag=1; | |||
if(!iswspace(c1)) | |||
{ | |||
if(!IsAlpha(c1) || !iswlower(c1)) | |||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
if(!IsAlpha(c1) || !iswlower2(c1)) | |||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1))) | |||
{ | |||
UngetC(c2); | |||
ungot_char2 = c1; | |||
@@ -2633,7 +2768,7 @@ if(option_ssml) parag=1; | |||
if(nl_count==0) | |||
{ | |||
if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next)))) | |||
if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next)))) | |||
{ | |||
// lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | |||
c1 = CHAR_COMMA_BREAK; | |||
@@ -2652,7 +2787,7 @@ if(option_ssml) parag=1; | |||
} | |||
else | |||
{ | |||
if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
if (iswlower2(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | |||
} | |||
} | |||
@@ -2661,7 +2796,7 @@ if(option_ssml) parag=1; | |||
{ | |||
is_end_clause = 0; // eg. u.s.a.'s | |||
} | |||
if(iswlower(c_next)) | |||
if(iswlower2(c_next)) | |||
{ | |||
// next word has no capital letter, this dot is probably from an abbreviation | |||
// c1 = ' '; |
@@ -24,6 +24,7 @@ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <ctype.h> | |||
#ifndef PLATFORM_DOS | |||
#ifdef PLATFORM_WINDOWS | |||
@@ -101,7 +102,7 @@ static const char *help_text = | |||
"\t Compile pronunciation rules and dictionary from the current\n" | |||
"\t directory. <voice name> specifies the language\n" | |||
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | |||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||
"--path=\"<path>\"\n" | |||
"\t Specifies the directory containing the espeak-data directory\n" | |||
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | |||
@@ -243,16 +244,22 @@ static int OpenWaveFile(const char *path, int rate) | |||
if(path == NULL) | |||
return(2); | |||
if(strcmp(path,"stdout")==0) | |||
while(isspace(*path)) path++; | |||
f_wave = NULL; | |||
if(path[0] != 0) | |||
{ | |||
if(strcmp(path,"stdout")==0) | |||
{ | |||
#ifdef PLATFORM_WINDOWS | |||
// prevent Windows adding 0x0d before 0x0a bytes | |||
_setmode(_fileno(stdout), _O_BINARY); | |||
_setmode(_fileno(stdout), _O_BINARY); | |||
#endif | |||
f_wave = stdout; | |||
f_wave = stdout; | |||
} | |||
else | |||
f_wave = fopen(path,"wb"); | |||
} | |||
else | |||
f_wave = fopen(path,"wb"); | |||
if(f_wave != NULL) | |||
{ | |||
@@ -739,7 +746,7 @@ int main (int argc, char **argv) | |||
{ | |||
value = -1; | |||
sscanf(optarg2,"%d",&value); | |||
if((value<0) || (value>2)) | |||
if((value<0) || (value>3)) | |||
{ | |||
fprintf(stderr,"Bad value for -ipa=\n"); | |||
value = 0; |
@@ -1164,6 +1164,17 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) | |||
} // end of espeak_SetPhonemes | |||
ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode) | |||
{//============================================================================================================== | |||
/* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
bits 4-7: 0=eSpeak phoneme names, 1=IPA | |||
*/ | |||
option_multibyte = textmode & 7; | |||
TranslateClause(translator, NULL, text, NULL, NULL); | |||
GetTranslatedPhonemeString(buffer, size, phonememode); | |||
} | |||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | |||
{//============================================================================= | |||
ENTER("espeak_CompileDictionary"); |
@@ -55,6 +55,9 @@ Revision 7 24.Dec.2011 | |||
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics. | |||
Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names. | |||
Revision 8 26.Apr.2013 | |||
Added function espeak_TextToPhonemes(). | |||
*/ | |||
/********************/ | |||
/* Initialization */ | |||
@@ -94,7 +97,7 @@ typedef struct { | |||
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | |||
} id; | |||
} espeak_EVENT; | |||
/* | |||
/* | |||
When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. | |||
@@ -102,16 +105,16 @@ typedef struct { | |||
In PLAYBACK mode, the callback function is called as soon as an event happens. | |||
For example suppose that the following message is supplied to espeak_Synth: | |||
For example suppose that the following message is supplied to espeak_Synth: | |||
"hello, hello." | |||
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | |||
** Block 1: | |||
<audio data> + | |||
<audio data> + | |||
List of events: SENTENCE + WORD + LIST_TERMINATED | |||
** Block 2: | |||
<audio data> + | |||
List of events: WORD + END + LIST_TERMINATED | |||
@@ -148,11 +151,11 @@ typedef enum { | |||
typedef enum { | |||
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | |||
AUDIO_OUTPUT_PLAYBACK, | |||
AUDIO_OUTPUT_PLAYBACK, | |||
/* RETRIEVAL mode: supplies audio data and events to the calling program */ | |||
AUDIO_OUTPUT_RETRIEVAL, | |||
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | |||
AUDIO_OUTPUT_SYNCHRONOUS, | |||
@@ -199,7 +202,7 @@ extern "C" | |||
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
/* Must be called before any synthesis functions are called. | |||
This specifies a function in the calling program which is called when a buffer of | |||
speech sound data has been produced. | |||
speech sound data has been produced. | |||
The callback function is of the form: | |||
@@ -288,7 +291,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
start of the text. | |||
position_type: Determines whether "position" is a number of characters, words, or sentences. | |||
Values: | |||
Values: | |||
end_position: If set, this gives a character position at which speaking will stop. A value | |||
of zero indicates no end position. | |||
@@ -299,6 +302,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | |||
espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | |||
espeakCHARS_WCHAR Wide characters (wchar_t) | |||
espeakCHARS_16BIT 16 bit characters. | |||
espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored. | |||
@@ -307,13 +311,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | |||
this pause is suppressed. | |||
unique_identifier: message identifier; helpful for identifying later | |||
unique_identifier: message identifier; helpful for identifying later | |||
data supplied to the callback. | |||
user_data: pointer which will be passed to the callback function. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -336,8 +340,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
For the other parameters, see espeak_Synth() | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -350,8 +354,8 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
If key_name is a single character, it speaks the name of the character. | |||
Otherwise, it speaks key_name as a text string. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -360,10 +364,10 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
/* Speak the name of the given character | |||
/* Speak the name of the given character | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -420,7 +424,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||
espeakPUNCTUATION: which punctuation characters to announce: | |||
value in espeak_PUNCT_TYPE (none, all, some), | |||
value in espeak_PUNCT_TYPE (none, all, some), | |||
see espeak_GetParameter() to specify which characters are announced. | |||
espeakCAPITALS: announce capital letters by: | |||
@@ -432,8 +436,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
espeakWORDGAP: pause between words, units of 10mS (at the default speed) | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -455,8 +459,8 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
punctlist: A list of character codes, terminated by a zero character. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -474,6 +478,35 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode); | |||
/* Translates text into phonemes. Call espeak_SetVoiceByName() first, to select a language. | |||
text: The text to translate, terminated by a zero character. | |||
buffer: Output buffer for the phoneme translation. | |||
size: Size of the output buffer in bytes. | |||
textmode: Type of character codes, one of: | |||
espeakCHARS_UTF8 UTF8 encoding | |||
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | |||
espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | |||
espeakCHARS_WCHAR Wide characters (wchar_t) | |||
espeakCHARS_16BIT 16 bit characters. | |||
phonememode: bits0-3: | |||
0= just phonemes. | |||
1= include ties (U+361) for phoneme names of more than one letter. | |||
2= include zero-width-joiner for phoneme names of more than one letter. | |||
3= separate phonemes with underscore characters. | |||
bits 4-7: | |||
0= eSpeak's ascii phoneme names. | |||
1= International Phonetic Alphabet (as UTF-8 characters). | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
@@ -501,7 +534,7 @@ typedef struct { | |||
unsigned char gender; // 0=none 1=male, 2=female, | |||
unsigned char age; // 0=not specified, or age in years | |||
unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties | |||
unsigned char xx1; // for internal use | |||
unsigned char xx1; // for internal use | |||
int score; // for internal use | |||
void *spare; // for internal use | |||
} espeak_VOICE; | |||
@@ -546,8 +579,8 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
/* Searches for a voice with a matching "name" field. Language is not considered. | |||
"name" is a UTF8 string. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -588,7 +621,7 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
function returns, the audio output is fully stopped and the synthesizer is ready to | |||
synthesize a new message. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -605,7 +638,7 @@ extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
/* This function returns when all data have been spoken. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -614,7 +647,7 @@ extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
/* last function to be called. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.47.04 02.Apr.13"; | |||
const char *version_string = "1.47.08 26.Apr.13"; | |||
const int version_phdata = 0x014701; | |||
int option_device_number = -1; |
@@ -1953,20 +1953,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
if((option_phonemes > 0) || (phoneme_callback != NULL)) | |||
{ | |||
int use_ipa = 0; | |||
int phoneme_mode = 0; | |||
if(option_phonemes >= 3) | |||
use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ | |||
phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | |||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode); | |||
if(option_phonemes > 0) | |||
{ | |||
fprintf(f_trans,"%s\n",translator->phon_out); | |||
if(!iswalpha(0x010d)) | |||
{ | |||
// check that c-caron is recognized as an alphabetic character | |||
fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n"); | |||
} | |||
} | |||
if(phoneme_callback != NULL) | |||
{ |
@@ -192,23 +192,23 @@ typedef struct { | |||
// a clause translated into phoneme codes (first stage) | |||
typedef struct { | |||
unsigned short synthflags; // NOTE Put shorts on 32bit boundaries, because of RISC OS compiler bug? | |||
unsigned char phcode; | |||
unsigned char stresslevel; | |||
unsigned char wordstress; | |||
unsigned char tone_ph; // tone phoneme to use with this vowel | |||
unsigned short synthflags; | |||
unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
unsigned char wordstress; // the highest level stress in this word | |||
unsigned char tone_ph; // tone phoneme to use with this vowel | |||
} PHONEME_LIST2; | |||
typedef struct { | |||
// The first section is a copy of PHONEME_LIST2 | |||
unsigned short synthflags; | |||
unsigned char phcode; | |||
unsigned char stresslevel; | |||
unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
unsigned char wordstress; // the highest level stress in this word | |||
unsigned char tone_ph; // tone phoneme to use with this vowel | |||
unsigned short synthflags; | |||
unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
PHONEME_TAB *ph; | |||
short length; // length_mod |
@@ -844,6 +844,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_rule = STRESSPOSN_1L; | |||
tr->langopts.numbers = 1; | |||
tr->langopts.accents = 2; // 'capital' after letter name | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe | |||
} | |||
break; | |||
@@ -971,7 +972,7 @@ SetLengthMods(tr,3); // all equal | |||
SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | |||
SetLetterBits(tr,LETTERGP_C,hy_consonants); | |||
tr->langopts.max_initial_consonants = 6; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED; | |||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
} | |||
break; | |||
@@ -1289,6 +1290,7 @@ SetLengthMods(tr,3); // all equal | |||
ResetLetterBits(tr,0x2); | |||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | |||
tr->langopts.accents = 2; // 'capital' after letter name | |||
} | |||
break; | |||
@@ -1520,6 +1522,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
tr->langopts.dotless_i = 1; | |||
tr->langopts.param[LOPT_SUFFIX] = 1; | |||
if(name2 == L('a','z')) |
@@ -388,9 +388,12 @@ int IsAlpha(unsigned int c) | |||
0 | |||
}; | |||
if(iswalpha(c)) | |||
if(iswalpha2(c)) | |||
return(1); | |||
if(c < 0x300) | |||
return(0); | |||
if((c >= 0x901) && (c <= 0xdf7)) | |||
{ | |||
// Indic scripts: Devanagari, Tamil, etc | |||
@@ -625,7 +628,7 @@ int IsAllUpper(const char *word) | |||
while((*word != 0) && !isspace2(*word)) | |||
{ | |||
word += utf8_in(&c, word); | |||
if(!iswupper(c)) | |||
if(!iswupper2(c)) | |||
return(0); | |||
} | |||
return(1); | |||
@@ -1054,7 +1057,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
} | |||
} | |||
if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char)) | |||
if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char)) | |||
{ | |||
if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | |||
{ | |||
@@ -1633,7 +1636,7 @@ if(end_type & SUFX_UNPRON) | |||
tr->expect_past--; | |||
} | |||
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i')) | |||
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i')) | |||
{ | |||
// English Specific !!!! | |||
// any single letter before a dot is an abbreviation, except 'I' | |||
@@ -1909,7 +1912,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
while(*p2 != ' ') p2++; | |||
utf8_in(&c_word2, p2+1); // first character of the next word; | |||
if(!iswalpha(c_word2)) | |||
if(!iswalpha2(c_word2)) | |||
{ | |||
ok =0; | |||
} | |||
@@ -2377,9 +2380,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
// there is a list of character codes to be substituted with alternative codes | |||
if(iswupper(c_lower = c)) | |||
if(iswupper2(c_lower = c)) | |||
{ | |||
c_lower = towlower(c); | |||
c_lower = towlower2(c); | |||
upper_case = 1; | |||
} | |||
@@ -2393,7 +2396,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
new_c = replace_chars[ix+1]; | |||
break; | |||
} | |||
if((word >> 16) == (unsigned int)towlower(next_in)) | |||
if((word >> 16) == (unsigned int)towlower2(next_in)) | |||
{ | |||
new_c = replace_chars[ix+1]; | |||
ignore_next = 1; | |||
@@ -2410,14 +2413,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
// there is a second character to be inserted | |||
// don't convert the case of the second character unless the next letter is also upper case | |||
c2 = new_c >> 16; | |||
if(upper_case && iswupper(next_in)) | |||
c2 = towupper(c2); | |||
if(upper_case && iswupper2(next_in)) | |||
c2 = towupper2(c2); | |||
*insert = c2; | |||
new_c &= 0xffff; | |||
} | |||
if(upper_case) | |||
new_c = towupper(new_c); | |||
new_c = towupper2(new_c); | |||
*wordflags |= FLAG_CHAR_REPLACED; | |||
return(new_c); | |||
@@ -2481,7 +2484,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
// look for 'n and replace by a special character (unicode: schwa) | |||
if(!iswalpha(prev_in)) | |||
if(!iswalpha2(prev_in)) | |||
{ | |||
utf8_in(&next2, &ptr[1]); | |||
@@ -2911,7 +2914,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
else | |||
{ | |||
if(iswupper(c)) | |||
if(iswupper2(c)) | |||
word_flags |= FLAG_FIRST_UPPER; | |||
if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | |||
@@ -2940,7 +2943,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
if(iswupper(c)) | |||
if(iswupper2(c)) | |||
{ | |||
c = towlower2(c); | |||
@@ -2955,13 +2958,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
else | |||
{ | |||
if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case | |||
if(iswlower2(prev_in)) | |||
{ | |||
// lower case followed by upper case in a word | |||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
{ | |||
// convert to lower case and continue | |||
c = towlower(c); | |||
c = towlower2(c); | |||
} | |||
else | |||
{ | |||
@@ -2971,7 +2974,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
} | |||
} | |||
else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | |||
else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in)) | |||
{ | |||
int next2_in; | |||
utf8_in(&next2_in,&source[source_index + next_in_nbytes]); |
@@ -81,8 +81,9 @@ | |||
#define FLAG_ONLY 0x4000 | |||
#define FLAG_ONLY_S 0x8000 | |||
#define FLAG_STEM 0x10000 // must have a suffix | |||
#define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ | |||
#define FLAG_ATEND 0x20000 // use this pronunciation if at end of clause | |||
#define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause | |||
#define FLAG_NATIVE 0x80000 // not if we've switched translators | |||
#define FLAG_LOOKUP_SYMBOL 0x40000000 // to indicate called from Lookup() | |||
#define BITNUM_FLAG_ALLCAPS 0x2a | |||
@@ -247,9 +248,9 @@ typedef struct { | |||
typedef struct{ | |||
unsigned int flags; | |||
unsigned short start; | |||
unsigned short sourceix; | |||
unsigned char pre_pause; | |||
unsigned char wmark; | |||
unsigned short sourceix; | |||
unsigned char length; | |||
} WORD_TAB; | |||
@@ -542,6 +543,7 @@ typedef struct { | |||
char tone_numbers; | |||
char ideographs; // treat as separate words | |||
char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | |||
char dotless_i; // uses letter U+0131 | |||
int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
int listx; // compile *_listx after *list | |||
const unsigned int *replace_chars; // characters to be substitutes | |||
@@ -713,9 +715,13 @@ int IsDigit(unsigned int c); | |||
int IsDigit09(unsigned int c); | |||
int IsAlpha(unsigned int c); | |||
int IsVowel(Translator *tr, int c); | |||
int iswalpha2(int c); | |||
int isspace2(unsigned int c); | |||
int iswlower2(int c); | |||
int iswupper2(int c); | |||
int towlower2(unsigned int c); | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||
int towupper2(unsigned int c); | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode); | |||
const char *WordToString2(unsigned int word); | |||
ALPHABET *AlphabetFromChar(int c); | |||
ALPHABET *AlphabetFromName(const char *name); |
@@ -460,7 +460,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) | |||
t_phonetic->SetDefaultStyle(style_phonetic_large); | |||
translate_text = 3; | |||
use_ipa = 1; | |||
use_ipa = 0x10; | |||
break; | |||
case T_PROCESS: |
@@ -21,6 +21,7 @@ | |||
typedef struct { | |||
char v_name[40]; | |||
char language_name[20]; | |||
int phoneme_tab_ix; // phoneme table number | |||
int pitch_base; // Hz<<12 |
@@ -422,7 +422,7 @@ void VoiceReset(int tone_only) | |||
voice->n_harmonic_peaks = 5; | |||
voice->peak_shape = 0; | |||
voice->voicing = 64; | |||
voice->consonant_amp = 90; // change to 85 for v.1.47 was 100 | |||
voice->consonant_amp = 90; // change from 100 to 90 for v.1.47 | |||
voice->consonant_ampv = 100; | |||
voice->samplerate = samplerate_native; | |||
memset(voice->klattv,0,sizeof(voice->klattv)); | |||
@@ -540,7 +540,7 @@ static unsigned int StringToWord2(const char *string) | |||
int c; | |||
unsigned int value = 0; | |||
for(ix=0; (ix<4) & ((c = string[ix]) != 0); ix++) | |||
for(ix=0; (ix<4) && ((c = string[ix]) != 0); ix++) | |||
{ | |||
value = (value << 8) | (c & 0xff); | |||
} | |||
@@ -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 = | |||
"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 "; | |||
"az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn 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 "; | |||
@@ -751,6 +751,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
new_translator = SelectTranslator(translator_name); | |||
langopts = &new_translator->langopts; | |||
strncpy0(voice->language_name, language_name, sizeof(voice->language_name)); | |||
} | |||
} | |||
break; | |||
@@ -1829,6 +1830,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
} | |||
DoVoiceChange(voice); | |||
voice_selector.languages = voice->language_name; | |||
SetVoiceStack(&voice_selector, variant_name); | |||
return(EE_OK); | |||
} | |||
@@ -1845,6 +1847,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
LoadVoice(variant_name,2); | |||
} | |||
DoVoiceChange(voice); | |||
voice_selector.languages = voice->language_name; | |||
SetVoiceStack(&voice_selector, variant_name); | |||
return(EE_OK); | |||
} | |||
@@ -1895,8 +1898,8 @@ void FreeVoiceList() | |||
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
{//======================================================================== | |||
char path_voices[sizeof(path_home)+12]; | |||
#ifdef PLATFORM_RISCOS | |||
if(n_voices_list == 0) | |||
{ |