espeak-data/af_dict \ | espeak-data/af_dict \ | ||||
espeak-data/am_dict \ | espeak-data/am_dict \ | ||||
espeak-data/an_dict \ | espeak-data/an_dict \ | ||||
espeak-data/az_dict \ | |||||
espeak-data/bg_dict \ | espeak-data/bg_dict \ | ||||
espeak-data/bn_dict \ | espeak-data/bn_dict \ | ||||
espeak-data/ca_dict \ | espeak-data/ca_dict \ | ||||
espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules 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 .. | 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 | bg: espeak-data/bg_dict | ||||
dictsource/bg_extra: | dictsource/bg_extra: | ||||
touch dictsource/bg_extra | touch dictsource/bg_extra |
y je $atend | y je $atend | ||||
ch tSe | ch tSe | ||||
ll 'El^e | ll 'El^e | ||||
ny n^e | |||||
á 'a||akTEntw'aDa | á 'a||akTEntw'aDa | ||||
é 'e||akTEntw'aDa | é 'e||akTEntw'aDa | ||||
í 'i||akTEntw'aDa | í 'i||akTEntw'aDa | ||||
_x#ª %a | _x#ª %a | ||||
º orDin'al||maskul'in | º orDin'al||maskul'in | ||||
ª orDin'al||femen'in | ª orDin'al||femen'in | ||||
ºc gr'aUs||T'e | |||||
ºf gr'aUs||'Efe | |||||
ºk gr'aUs||k'a | |||||
(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 | _1ox prim'Er | ||||
_2ox seQ'und | _2ox seQ'und | ||||
\ kontraBaRRa | \ kontraBaRRa | ||||
| b'aRRaBertik'al | | b'aRRaBertik'al | ||||
° graUs | ° graUs | ||||
(1 °) un||gr'aU | |||||
_- gj'on | _- gj'on | ||||
! TaRR'ar||eksklamaTj'on | ! TaRR'ar||eksklamaTj'on | ||||
// exceptions | // 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 | // 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 | (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 | 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 | //mobile _^_EN |
// Aragon translation rules | // Aragon translation rules | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
i i | i i | ||||
i (u_ i | i (u_ i | ||||
i (A j | i (A j | ||||
.group j | .group j | ||||
.group q | .group q | ||||
q k | |||||
qu (A kw | qu (A kw | ||||
qü kw | qü kw | ||||
qu (e k | qu (e k | ||||
u) t (_ t# | u) t (_ t# | ||||
ei) t (_ t# | ei) t (_ t# | ||||
n) t (_ = // silent, but stress on last vowel | n) t (_ = // silent, but stress on last vowel | ||||
n) t (m // Silent | |||||
_pos) t (h t | |||||
_pos) t (C // Silent | |||||
tz T | tz T | ||||
ue) t (_ t# | ue) t (_ t# | ||||
ui) t (_ t# | ui) t (_ t# |
// 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 | |||||
// 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 | |||||
ä & |
// Translation rules for Bengali | |||||
// Translation rules for Bengali | |||||
// Improvement input by Him Prasad gautam (Nepal). | |||||
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// Numbers | // Numbers | ||||
_1 '&k | _1 '&k | ||||
_2 d'uj | _2 d'uj | ||||
_3 t'in | _3 t'in | ||||
_4 tS'ar | |||||
_4 tSh'ar | |||||
_5 p'a~tS | _5 p'a~tS | ||||
_6 tS#'Oj | _6 tS#'Oj | ||||
_7 S'at | _7 S'at | ||||
_9 n'Oj | _9 n'Oj | ||||
_2a d'u // with hundreds etc. | _2a d'u // with hundreds etc. | ||||
_6a tS#'a | |||||
_6a tS#'O | |||||
_9a n'O | _9a n'O | ||||
_11 '&garo | _11 '&garo | ||||
_12 b'arO | _12 b'arO | ||||
_13 t'erO | _13 t'erO | ||||
_14 tS'oddO | |||||
_14 tSh'oddO | |||||
_15 p'OnerO | _15 p'OnerO | ||||
_16 S'olO | _16 S'olO | ||||
_17 S'OterO | _17 S'OterO | ||||
_26 tSh'abbiS | _26 tSh'abbiS | ||||
_27 Sat'aS | _27 Sat'aS | ||||
_28 'at.#aS | _28 'at.#aS | ||||
_29 unOtr'iS | |||||
_29 'unOtr'iS | |||||
_30 tr'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 | _36 tS#'Otr'iS | ||||
_37 Sa~itr'iS | |||||
_38 at.tr'iS | |||||
_37 S'a~itr'iS | |||||
_38 'at.tr'iS | |||||
_39 'unOtSOll'iS | _39 'unOtSOll'iS | ||||
_40 tSOll'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. | _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 | _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 | _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 | _0C S'o | ||||
_0M1 h'ajar | _0M1 h'ajar | ||||
খ k#O | খ k#O | ||||
গ gO | গ gO | ||||
ঘ g#O | ঘ g#O | ||||
ঙ 'uNO~ | |||||
ঙ 'uNgO~ | |||||
চ tSO | চ tSO | ||||
ছ tShO // [h] to distinguish from [tS] | ছ tShO // [h] to distinguish from [tS] | ||||
জ JO | জ JO | ||||
অ O | অ O | ||||
আ a | আ a | ||||
ই hrOS:o'i | ই hrOS:o'i | ||||
ঈ dirg#o'i | |||||
ঈ d'i:rg#o'i | |||||
উ hrOS:o'u | উ hrOS:o'u | ||||
ঊ dirg#o'u | |||||
ঊ d'i:rg#o'u | |||||
ঋ ri | ঋ ri | ||||
ঔ ow | ঔ ow | ||||
// combining vowel signs | // combining vowel signs | ||||
া 'akar | া '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 | ৃ r'ikar | ||||
ে 'ekar | ে 'ekar | ||||
ৈ 'ojkar | ৈ 'ojkar |
| |||||
// Pronounciation rule for Bengali. | |||||
// Improvement input by Him Prasad Gautam (Nepal). | |||||
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// letter groups: | // letter groups: | ||||
// Vowel Signs | // Vowel Signs | ||||
.group া | .group া | ||||
া a | |||||
াঁ a~ | |||||
C) া a | |||||
C) াঁ a~ | |||||
.group ি | .group ি | ||||
ি i | |||||
িঁ i~ | |||||
C) ি i | |||||
C) িঁ i~ | |||||
.group ী | .group ী | ||||
ী i | |||||
ীঁ i~ | |||||
C) ী i | |||||
C) ীঁ i~ | |||||
.group ূ | .group ূ | ||||
ূ u | |||||
ূঁ u~ | |||||
C) ূ u | |||||
C) ূঁ u~ | |||||
.group ু | .group ু | ||||
ু u | |||||
ুঁ u~ | |||||
C) ু u | |||||
C) ুঁ u~ | |||||
.group ৃ | .group ৃ | ||||
ৃ ri | |||||
ৃঁ ri~ | |||||
C) ৃ r'i | |||||
C) ৃঁ r'i~ | |||||
.group ে | .group ে | ||||
ে e | |||||
েঁ e~ | |||||
েউ ew | |||||
C) ে e | |||||
C) েঁ e~ | |||||
C) েউ ew | |||||
.group ৈ | .group ৈ | ||||
ৈ oj | |||||
ৈঁ o~j | |||||
C) ৈ oj | |||||
C) ৈঁ o~j | |||||
.group ো | .group ো | ||||
ো o | |||||
োঁ o~ | |||||
C) ো o | |||||
C) োঁ o~ | |||||
.group ৌ | .group ৌ | ||||
ৌ ow | |||||
ৌঁ o~w | |||||
C) ৌ ow | |||||
C) ৌঁ o~w | |||||
// Consonants | // Consonants | ||||
.group ক | .group ক | ||||
ক kV | ক kV | ||||
ক (B k | ক (B k | ||||
ক্ষ k#k#V // or [k#:] ? | |||||
ক্ষ (B k#k# | |||||
.group খ | .group খ | ||||
খ k#V | খ k#V | ||||
খ (B k# | খ (B k# | ||||
.group ঙ | .group ঙ | ||||
ঙ NV | ঙ NV | ||||
ঙ্ (B N | |||||
ঙ (B N | |||||
.group চ | .group চ | ||||
.group ছ | .group ছ | ||||
ছ tS#V | |||||
ছ (B tS# | |||||
ছ tShV | |||||
ছ (B tSh | |||||
.group জ | .group জ | ||||
.group ঞ | .group ঞ | ||||
ঞ nV | ঞ nV | ||||
ঞ্ (B n | |||||
ঞ (B n | |||||
.group ট | .group ট | ||||
.group ত | .group ত | ||||
ত tV | ত tV | ||||
ত (B t | ত (B t | ||||
ত (_ to | |||||
.group থ | .group থ | ||||
.group য় | .group য় | ||||
য় jV | য় jV | ||||
য় (B j | |||||
_) য় (B j | |||||
য় (B // used to separate 2 vowels | |||||
.group য | .group য | ||||
য (B dZ | য (B dZ | ||||
য় jV // nukta | য় jV // nukta | ||||
য় (B j | |||||
_) য় (B j | |||||
য় (B | |||||
্) য (C & // ব্যস্ত [bæsto] | ্) য (C & // ব্যস্ত [bæsto] | ||||
্) যা & // ব্যাকরণ [bækɔron] | ্) যা & // ব্যাকরণ [bækɔron] | ||||
.group হ | .group হ | ||||
হ hV | হ hV | ||||
হ (B h | হ (B h | ||||
হ (_ ho | |||||
.group হ্ব | .group হ্ব | ||||
.group ঢ় // can be ঢ plus nukta | .group ঢ় // can be ঢ plus nukta | ||||
ঢ় hr.V | ঢ় hr.V | ||||
ঢ় (B hr. | ঢ় (B hr. | ||||
ঢ় (_ hr.o | |||||
.group ঁ | .group ঁ | ||||
ঁ O~ // candrabindu, nasalize the previous vowel | |||||
C) ঁ O~ // candrabindu, nasalize the previous vowel/Consonants | |||||
.group ং | .group ং | ||||
ং N // anusvara/onushshor | |||||
A) ং N // anusvara/onushshor | |||||
C) ং N // anusvara/onushshor | |||||
.group ঃ // visarga/bishorgo | .group ঃ // visarga/bishorgo | ||||
ঃ // doubles the following consonant | ঃ // doubles the following consonant | ||||
ঃ (_ H | ঃ (_ H | ||||
.group ্ // virama/hoshonto | .group ্ // virama/hoshonto | ||||
্ | |||||
C) ্ | |||||
.group ় | .group ় | ||||
় // nukta, modifies a consonant | ় // nukta, modifies a consonant |
_?? zymb'o:l | _?? zymb'o:l | ||||
_?A b'u:xstA:b@ | _?A b'u:xstA:b@ | ||||
_cap gr'o:s | _cap gr'o:s | ||||
_sub 'Unt@R|3_!,IndEks|| | |||||
_sup 'o:b@R|3_!,IndEks|| | |||||
// accent names | // accent names |
// ?7 Scottish | // ?7 Scottish | ||||
// ?8 Use full vowel, not schwa in some word endings | // ?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#] | // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] | ||||
// $alt4 separate 'h', not 'th' | |||||
// $alt6 'to' | // $alt6 'to' | ||||
// character names | // character names | ||||
_cap k,ap@-t@L | _cap k,ap@-t@L | ||||
_sub s,VbskrIpt|| | |||||
_sup s,u:p3skrIpt|| | |||||
_?A l,Et3 | _?A l,Et3 | ||||
_?? sImb@L | _?? sImb@L | ||||
_braille br'eIl | _braille br'eIl | ||||
_¡ %Inv,3:tI2dEkskl@m'eIS@n | _¡ %Inv,3:tI2dEkskl@m'eIS@n | ||||
_¦ broUk@nb'A@ | _¦ broUk@nb'A@ | ||||
_¨ daIa#r'i:sIs | _¨ daIa#r'i:sIs | ||||
_ª fEmI2nIn'O@dI2n@L | |||||
_« lEft'gIl@mEt | _« lEft'gIl@mEt | ||||
_ makr0n | _ makr0n | ||||
² tu: | |||||
³ Tri: | |||||
_¹ su:p@skrIptw'0n | |||||
_² su:p@skrIptt'u: | |||||
_³ su:p@skrIptT'ri: | |||||
² tu: $native | |||||
³ Tri: $native | |||||
_´ a#kju:taksEnt | _´ a#kju:taksEnt | ||||
_· mId@Ld0t | _· mId@Ld0t | ||||
_¸ sEd'Il@ | _¸ sEd'Il@ | ||||
//_º maskjUlIn'O@dI2n@L | |||||
_º dI2gr'i:z | |||||
_» raIt'gIl@mEt | _» raIt'gIl@mEt | ||||
_¿ %Inv,3:tI2dkw'EstS@n | _¿ %Inv,3:tI2dkw'EstS@n | ||||
_zh tS'aIni:z | _zh tS'aIni:z | ||||
// Cyrillic letters | // Cyrillic letters | ||||
а a | |||||
б bE | |||||
в vE | |||||
г gE | |||||
д dE | |||||
е jE | |||||
ё jo | |||||
ж ZE | |||||
з zE | |||||
и I | |||||
а a: | |||||
б bE: | |||||
в vE: | |||||
г gE: | |||||
д dE: | |||||
е jE: | |||||
ё jo: | |||||
ж ZE: | |||||
з zE: | |||||
и I: | |||||
й ,Ik@-*'atkOji | й ,Ik@-*'atkOji | ||||
к ka | |||||
к ka: | |||||
л El/1 | л El/1 | ||||
м Em | м Em | ||||
н En | н En | ||||
о o | |||||
п pE | |||||
о o: | |||||
п pE: | |||||
р Er | р Er | ||||
с Es | с Es | ||||
т tE | |||||
у u | |||||
т tE: | |||||
у u|: | |||||
ф Ef | ф Ef | ||||
х xa | |||||
ц tsE | |||||
ч tSE | |||||
ш Sa | |||||
щ StSa | |||||
х xa: | |||||
ц tsE: | |||||
ч tSE: | |||||
ш Sa: | |||||
щ StSa: | |||||
ъ jEr | ъ jEr | ||||
ы j'Eru | ы j'Eru | ||||
ь j'eri | ь j'eri | ||||
э E | |||||
ю ju | |||||
я ja | |||||
ћ tS;E | |||||
ђ djE | |||||
ќ kjE | |||||
э E: | |||||
ю ju|: | |||||
я ja: | |||||
ћ tS;E: | |||||
ђ djE: | |||||
ќ kjE: | |||||
// Arabic letters | // Arabic letters | ||||
_5o f'If | _5o f'If | ||||
_20o tw'Enti@ | _20o tw'Enti@ | ||||
_30o T'3:ti@ | _30o T'3:ti@ | ||||
?3 _30o T'IRti@ | |||||
?5 _30o T'IRti@ | |||||
_40o f'o@ti@ | _40o f'o@ti@ | ||||
_50o f'Ifti@ | _50o f'Ifti@ | ||||
_60o s'Iksti@ | _60o s'Iksti@ | ||||
i.e aIi:_! $pause | i.e aIi:_! $pause | ||||
imo $abbrev | imo $abbrev | ||||
inlb $abbrev | inlb $abbrev | ||||
ios $abbrev | |||||
irc $abbrev | irc $abbrev | ||||
irs $abbrev | irs $abbrev | ||||
isbn $abbrev | |||||
itx $abbrev | itx $abbrev | ||||
(km ²) skw,e@kIl'0mIt3z | (km ²) skw,e@kIl'0mIt3z | ||||
lapd $abbrev | lapd $abbrev | ||||
ok $abbrev | ok $abbrev | ||||
omg $abbrev | omg $abbrev | ||||
os $abbrev | os $abbrev | ||||
osx $abbrev | |||||
otoh $abbrev | otoh $abbrev | ||||
pcie $abbrev | pcie $abbrev | ||||
pcmcia $abbrev | pcmcia $abbrev | ||||
ablaut ablaUt | ablaut ablaUt | ||||
aborigine ab@r'IdZ@ni | aborigine ab@r'IdZ@ni | ||||
abracadabra abr@k@d'abr@ | abracadabra abr@k@d'abr@ | ||||
absence abs@ns | |||||
absent $1 | |||||
absentee $3 | |||||
absent abs'Ent $verb | absent abs'Ent $verb | ||||
absentia abs'Ent2i:@ | absentia abs'Ent2i:@ | ||||
absinthe absInT | absinthe absInT | ||||
adieus a#dju:z | adieus a#dju:z | ||||
adieux a#dju:z | adieux a#dju:z | ||||
adios aDj'o:s | adios aDj'o:s | ||||
adjective $1 | |||||
admirable adm@r@b@L | admirable adm@r@b@L | ||||
admirably adm@r@bli | admirably adm@r@bli | ||||
admonition adm@n'IS@n | admonition adm@n'IS@n | ||||
agressive a#grEsIv // misspell | agressive a#grEsIv // misspell | ||||
aground a#graUnd | aground a#graUnd | ||||
ague eIgju: | ague eIgju: | ||||
aha A:hA: | |||||
aha A:h'A: | |||||
ahem a#h'Em | ahem a#h'Em | ||||
ahoy a#hOI | ahoy a#hOI | ||||
airbus e@bVs | airbus e@bVs | ||||
alm A:m | alm A:m | ||||
almost O:lmoUst | almost O:lmoUst | ||||
allspice $1 | allspice $1 | ||||
alt 0lt // not abbrev | |||||
alternate O:lt'3:n@t $only | alternate O:lt'3:n@t $only | ||||
alternate O:lt3neIt $verb | alternate O:lt3neIt $verb | ||||
alternately O:lt'3:n@tlI $verbf | alternately O:lt'3:n@tlI $verbf | ||||
anew a#nju: | anew a#nju: | ||||
?3 anew a#nu: | ?3 anew a#nu: | ||||
anime anImeI | anime anImeI | ||||
anion aneI@n | |||||
anise anIs | anise anIs | ||||
anniversary anIv'3:s@ri | anniversary anIv'3:s@ri | ||||
anon a#n0n | anon a#n0n | ||||
antichrist $1 | antichrist $1 | ||||
anticline $1 | anticline $1 | ||||
antidote $1 | antidote $1 | ||||
antifreze $1 | |||||
antifreeze $1 | |||||
antigen $1 | antigen $1 | ||||
antihero $1 | antihero $1 | ||||
antilog $1 | antilog $1 | ||||
attribute $alt3 $verb | attribute $alt3 $verb | ||||
au ,oU | au ,oU | ||||
aubergine oUb3Zi:n | aubergine oUb3Zi:n | ||||
audi aUdi | |||||
auger O:g3 | auger O:g3 | ||||
augmentation O:gmEnt'eIS@n | augmentation O:gmEnt'eIS@n | ||||
august O:g@st | august O:g@st | ||||
boing bOIN | boing bOIN | ||||
bolognese b0l@n'eIz | bolognese b0l@n'eIz | ||||
bombard $2 | bombard $2 | ||||
bombardier b0mb3d'i@3 | |||||
(bon voyage) b0n||vOI'A:Z | (bon voyage) b0n||vOI'A:Z | ||||
bonbon b0nb0n | bonbon b0nb0n | ||||
bonhomie b0n@mi: | bonhomie b0n@mi: | ||||
capitol kapIt@L | capitol kapIt@L | ||||
caprice ka#pri:s | caprice ka#pri:s | ||||
carafe ka#raf | carafe ka#raf | ||||
caramel kar@mEl | |||||
?!3 caramel kar@mEl $onlys | |||||
caravan kar@van | caravan kar@van | ||||
carburetor kA@b@r'Et3 | carburetor kA@b@r'Et3 | ||||
?3 carburetor kA@b@reIt3 | ?3 carburetor kA@b@reIt3 | ||||
catholic kaTlIk | catholic kaTlIk | ||||
carotid $alt3 | carotid $alt3 | ||||
cartel kA@t'El | cartel kA@t'El | ||||
cavalier $3 | |||||
cavalier $alt1 | |||||
caveat kavIat | caveat kavIat | ||||
?3 caveat kavIA:t | ?3 caveat kavIA:t | ||||
caviar kavIA@ | caviar kavIA@ | ||||
censure sEnS3 | censure sEnS3 | ||||
ceres si@ri:z | ceres si@ri:z | ||||
certificate s3tIfIk@t | certificate s3tIfIk@t | ||||
c'est seI $u | |||||
chagrin SagrIn | chagrin SagrIn | ||||
?3 chagrin Sa#grIn | ?3 chagrin Sa#grIn | ||||
chalet SaleI | chalet SaleI | ||||
closet kl0zI2t | closet kl0zI2t | ||||
cloth kloUD $verb | cloth kloUD $verb | ||||
c'mon k@m0n | c'mon k@m0n | ||||
coathanger $alt4 | |||||
coauthor koU'O:T3 | coauthor koU'O:T3 | ||||
coaxial koU'aksI@l | coaxial koU'aksI@l | ||||
cobol koUb0l | cobol koUb0l | ||||
cojones k@hoUneIs | cojones k@hoUneIs | ||||
coliseum k0l@s'i:@m | coliseum k0l@s'i:@m | ||||
collage k0l'A:Z | collage k0l'A:Z | ||||
collarbone k0l3boUn | |||||
college k0lI2dZ | college k0lI2dZ | ||||
collegiate k@li:dZI@t | collegiate k@li:dZI@t | ||||
colloquial k@loUkwI@L | colloquial k@loUkwI@L | ||||
cosmos k0zm0s | cosmos k0zm0s | ||||
?3 cosmos k0zmoUs | ?3 cosmos k0zmoUs | ||||
cougar ku:g3 | cougar ku:g3 | ||||
counteract $3 | |||||
countered kaUnt3d | countered kaUnt3d | ||||
(coup de grâce) ku:d@||gr'A: | (coup de grâce) ku:d@||gr'A: | ||||
coupon ku:p0n | coupon ku:p0n | ||||
efile i:faIl | efile i:faIl | ||||
egg Eg // egging | egg Eg // egging | ||||
egregious Igr'i:dZ@s | egregious Igr'i:dZ@s | ||||
?!3 egret i:gr@t | |||||
eh eI | eh eI | ||||
eid i:d | eid i:d | ||||
el ,El $only | el ,El $only | ||||
facade f@sA:d | facade f@sA:d | ||||
façade f@sA:d | façade f@sA:d | ||||
facetious $alt3 | facetious $alt3 | ||||
faculty fak@Lt2i | |||||
faeces fi:si:z | faeces fi:si:z | ||||
fahrenheit far@nhaIt | fahrenheit far@nhaIt | ||||
fairest fe@r@st | fairest fe@r@st | ||||
foyer fOIeI | foyer fOIeI | ||||
freelance fri:laans | freelance fri:laans | ||||
freon fri:0n | freon fri:0n | ||||
frequent frI2kwEnt $verb | |||||
fricassee frIka#seI | fricassee frIka#seI | ||||
frigate frIg@t | frigate frIg@t | ||||
fringer frIndZ3 // infringer | fringer frIndZ3 // infringer | ||||
fringing frIndZIN | fringing frIndZIN | ||||
frisson fri:s'O~ | |||||
frontend fr'Vnt,End | frontend fr'Vnt,End | ||||
frontier frVnti@3 | frontier frVnti@3 | ||||
?3 frontier frVnt'i@3 | ?3 frontier frVnt'i@3 | ||||
genuine dZEnju:I#n | genuine dZEnju:I#n | ||||
geode dZi:oUd | geode dZi:oUd | ||||
geologist $2 | geologist $2 | ||||
gettin gEt#n- | |||||
geyser gi:z3 | geyser gi:z3 | ||||
?3 geyser gaIz3 | ?3 geyser gaIz3 | ||||
gibbon gIb@n | gibbon gIb@n | ||||
giraffe dZI2raaf | giraffe dZI2raaf | ||||
github gIthVb | github gIthVb | ||||
glacier gleIS3 | glacier gleIS3 | ||||
?3 goddess $alt2 | |||||
goin ,goUI2n $only // for goin' | goin ,goUI2n $only // for goin' | ||||
gonna g,@n@ | gonna g,@n@ | ||||
goodbye $2 | goodbye $2 | ||||
grosvenor groUv@n3 | grosvenor groUv@n3 | ||||
groupie gru:pi | groupie gru:pi | ||||
guacamole gwA:ka#m'oUli: | guacamole gwA:ka#m'oUli: | ||||
guarantee $3 | |||||
gucci gu:tSi | gucci gu:tSi | ||||
gui gu:i $onlys | gui gu:i $onlys | ||||
guinea gIni | guinea gIni | ||||
habitual $alt3 | habitual $alt3 | ||||
haggis hagIs | haggis hagIs | ||||
haha hA:h'A: | haha hA:h'A: | ||||
halation $alt3 // in- | |||||
halberdier $alt1 | |||||
halleluiah halI2'lu:j@ | halleluiah halI2'lu:j@ | ||||
hallelujah halI2'lu:j@ | hallelujah halI2'lu:j@ | ||||
halloween $3 | halloween $3 | ||||
henceforth hEnsfo@T | henceforth hEnsfo@T | ||||
?3 herb 3:b | ?3 herb 3:b | ||||
hercules h3:kjUli:z | hercules h3:kjUli:z | ||||
heredity h3rEdI2ti | |||||
?3 hereford h3:f3d | ?3 hereford h3:f3d | ||||
heretical hI2rEtI2k@L | heretical hI2rEtI2k@L | ||||
hereto hi@3'tu: | hereto hi@3'tu: | ||||
kowtow kaUt2aU | kowtow kaUt2aU | ||||
la ,la $only | la ,la $only | ||||
(la vie) la||v'i: | |||||
laboratory la#b'0r@trI | laboratory la#b'0r@trI | ||||
?3 laboratory labr@tO:ri | ?3 laboratory labr@tO:ri | ||||
labor leIb3 | labor leIb3 | ||||
moccasin m0k@sI#n | moccasin m0k@sI#n | ||||
mocha moUk@ | mocha moUk@ | ||||
modem moUdEm | modem moUdEm | ||||
?3 modem moUd@m | |||||
?3 modem moUd@m | |||||
moderate m0d@reIt $verb | moderate m0d@reIt $verb | ||||
mogul moUg@L | mogul moUg@L | ||||
moi mwA: | |||||
mojito moUh'i:toU | mojito moUh'i:toU | ||||
molass $alt3 | molass $alt3 | ||||
molybdenum $2 | molybdenum $2 | ||||
notwithstanding $3 | notwithstanding $3 | ||||
noway noUweI | noway noUweI | ||||
nowhere noUwe@ | nowhere noUwe@ | ||||
?3 nuance nu:0ns | |||||
?3 nuance nu:0ns | |||||
oases oU'eIsi:z | oases oU'eIsi:z | ||||
oasis oU'eIsI2s | oasis oU'eIsI2s | ||||
obdurate $alt2 | |||||
obelisk 0b@lI2sk | obelisk 0b@lI2sk | ||||
obesity oUb'i:s@ti | obesity oUb'i:s@ti | ||||
obey oUb'eI | obey oUb'eI | ||||
perspex p3:spEks | perspex p3:spEks | ||||
perus p@ru:z | perus p@ru:z | ||||
peruse p@ru:z | peruse p@ru:z | ||||
petit p@ti: | |||||
petite p@ti:t | petite p@ti:t | ||||
petroleum p@troUli:@m | petroleum p@troUli:@m | ||||
petunia $alt3 | petunia $alt3 | ||||
plicate $2 | plicate $2 | ||||
plumber plVm3 | plumber plVm3 | ||||
plus plVs | plus plVs | ||||
pois pwA: | |||||
poly p0lI | poly p0lI | ||||
politer p@l'aIt3 | politer p@l'aIt3 | ||||
politic p0l@tIk $onlys | politic p0l@tIk $onlys | ||||
pretrial pri:tr'aI|@L | pretrial pri:tr'aI|@L | ||||
pretty prIti | pretty prIti | ||||
pretzel prEts@L | pretzel prEts@L | ||||
?3 priestess $alt2 | |||||
primeval praIm'i:v@L | primeval praIm'i:v@L | ||||
pristine $2 | pristine $2 | ||||
?3 privacy praIv@si | ?3 privacy praIv@si | ||||
purist pju:r-Ist | purist pju:r-Ist | ||||
purport $2 | purport $2 | ||||
purportedly $2 | purportedly $2 | ||||
puttin pUt#n- | |||||
pyjama p@dZA:m@ | pyjama p@dZA:m@ | ||||
pyrites paIr'aIti:z | pyrites paIr'aIti:z | ||||
pythagoras paIT'ag@r@s | pythagoras paIT'ag@r@s | ||||
ragged ragI#d | ragged ragI#d | ||||
raiment reIm@nt | raiment reIm@nt | ||||
rainforest r'eInf,0rI2st | rainforest r'eInf,0rI2st | ||||
(raison d'être) reIz0n||d'Etr@- | |||||
rajah rA:dZA: | rajah rA:dZA: | ||||
rapier reIpi@3 | rapier reIpi@3 | ||||
rapport rap'o@ | rapport rap'o@ | ||||
rendezvous r0ndI2vu: | rendezvous r0ndI2vu: | ||||
renegade rEn@geId | renegade rEn@geId | ||||
reo ri:oU | reo ri:oU | ||||
repartee rEpA@t'eI | |||||
repel rI2pEl | repel rI2pEl | ||||
replay ri:pleI | replay ri:pleI | ||||
reply rI2plaI // for replied | reply rI2plaI // for replied | ||||
settee $2 | settee $2 | ||||
severe sI2v'i@3 $only | severe sI2v'i@3 $only | ||||
severely sI2v'i@3lI $verbf | severely sI2v'i@3lI $verbf | ||||
sewn soUn | |||||
sex sEks // sexism | sex sEks // sexism | ||||
several sEvr@L | several sEvr@L | ||||
shallow SaloU | shallow SaloU | ||||
temperature tEmprI2tS3 | temperature tEmprI2tS3 | ||||
?!3 temporary tEmpr@rI | ?!3 temporary tEmpr@rI | ||||
?3 template tEmpl@t | ?3 template tEmpl@t | ||||
thereof ,De@'0v | |||||
thereon ,De@'0n | |||||
thereto ,De@'tu: | |||||
therefore $1 | |||||
thereof De@r'0v | |||||
thermos T3:m@s | thermos T3:m@s | ||||
thermostable $alt1 | thermostable $alt1 | ||||
thesis Ti:sIs | thesis Ti:sIs | ||||
utan u:t'an | utan u:t'an | ||||
utensil ju:t'Ens@L | utensil ju:t'Ens@L | ||||
valentine val@ntaIn | |||||
valet valeI | valet valeI | ||||
?3 valet val'eI | ?3 valet val'eI | ||||
valise va#li:s | valise va#li:s | ||||
Cheshire tSES3 | Cheshire tSES3 | ||||
Chiswick tSIzIk | Chiswick tSIzIk | ||||
Clwyd klu:Id | Clwyd klu:Id | ||||
Conway $1 | |||||
Dagenham dag@n@m | Dagenham dag@n@m | ||||
Devon dEv@n | Devon dEv@n | ||||
Dolgellau d0lg'EClaI | Dolgellau d0lg'EClaI | ||||
Belize bEl'i:z | Belize bEl'i:z | ||||
Bengal b,Eng'O:l | Bengal b,Eng'O:l | ||||
Benin bEnIn | Benin bEnIn | ||||
Berkeley b3:kli | |||||
Bhutan bu:t'an | Bhutan bu:t'an | ||||
Bideford bIdIf@d | Bideford bIdIf@d | ||||
Bogota b0g@t'A: | Bogota b0g@t'A: | ||||
Cyprus saIpr@s | Cyprus saIpr@s | ||||
Dahomey $alt3 | Dahomey $alt3 | ||||
Dallas dal@s | Dallas dal@s | ||||
Dagestan dA:gIst'A:n | |||||
Damascus $alt3 | Damascus $alt3 | ||||
Dakota $alt3 | Dakota $alt3 | ||||
Danish deInIS | Danish deInIS | ||||
Egyptian IdZ'IpS@n | Egyptian IdZ'IpS@n | ||||
Eire e@r@ | Eire e@r@ | ||||
Elysee eIl'i:zeI | Elysee eIl'i:zeI | ||||
Elysée eIl'i:zeI | |||||
Erebus ErI#b@s | |||||
Erie i@ri | Erie i@ri | ||||
Euphrates ju:fr'eIti:z | Euphrates ju:fr'eIti:z | ||||
Eyjafjalla eIja#fjatla# | Eyjafjalla eIja#fjatla# | ||||
Gurmukhi gU@mUki | Gurmukhi gU@mUki | ||||
Harare ha#rA:ri | Harare ha#rA:ri | ||||
Hanoi han'OI | Hanoi han'OI | ||||
Harvard $alt2 | |||||
Havana ha#van@ | Havana ha#van@ | ||||
Hawaii h@w'aIi: | Hawaii h@w'aIi: | ||||
Hawai'i h@w'aIi: | Hawai'i h@w'aIi: | ||||
Hebrew hi:bru: | Hebrew hi:bru: | ||||
Hebrides hEbr@di:z | Hebrides hEbr@di:z | ||||
Honduras h0nd'jU@r@s | Honduras h0nd'jU@r@s | ||||
Honolulu $3 | |||||
Houston hju:st@n | Houston hju:st@n | ||||
Idaho $1 | Idaho $1 | ||||
Illinois Il@n'OI | Illinois Il@n'OI | ||||
?3 Korean k3r'i:@n | ?3 Korean k3r'i:@n | ||||
Kosovo k0s@voU | Kosovo k0s@voU | ||||
Kuala kwA:la# | Kuala kwA:la# | ||||
Kyrgyz k3:rgIz | |||||
Kyrgyzstan k3:rgIst'A:n | |||||
Lagos leIg0s | Lagos leIg0s | ||||
Lahore $alt3 | |||||
Lebanon lEb@n0n | Lebanon lEb@n0n | ||||
Leipzig laIpsIg | Leipzig laIpsIg | ||||
Leone li:'oUn | Leone li:'oUn | ||||
Pyrenees pIr@n'i:z | Pyrenees pIr@n'i:z | ||||
Qatar katA@ | Qatar katA@ | ||||
Quebec kwI2bEk | Quebec kwI2bEk | ||||
Québec kwI2bEk | |||||
Raleigh rA:li | Raleigh rA:li | ||||
Reno ri:noU | Reno ri:noU | ||||
Rio ri:oU | Rio ri:oU | ||||
Andrea $2 | Andrea $2 | ||||
Adrian eIdri@n | Adrian eIdri@n | ||||
Agatha aga#T@ | Agatha aga#T@ | ||||
Angela andZ@l@ | |||||
Angelika $2 | |||||
Aggie agi | Aggie agi | ||||
Agnes agn@s | Agnes agn@s | ||||
Aguilera agi:l'e@r@ | Aguilera agi:l'e@r@ | ||||
Andre 0ndreI | Andre 0ndreI | ||||
Andrea andri@ | Andrea andri@ | ||||
Andreas A:ndr'eI@s | Andreas A:ndr'eI@s | ||||
Angela $1 | |||||
Angela ang@l@ | |||||
Anita $alt3 | Anita $alt3 | ||||
Anthony ant@ni | Anthony ant@ni | ||||
Anton ant0n | Anton ant0n | ||||
Aoife i:f@ | Aoife i:f@ | ||||
Aoiffe i:f@ | Aoiffe i:f@ | ||||
Aphrodite afr@d'aIti | |||||
Archibald A@tSIbO:ld | Archibald A@tSIbO:ld | ||||
Archie A@tSi | Archie A@tSi | ||||
Ares e@ri:z | Ares e@ri:z | ||||
Duncan dVnk@n | Duncan dVnk@n | ||||
Dvina d@vi:n@ | Dvina d@vi:n@ | ||||
Dylan dIl@n | Dylan dIl@n | ||||
Ebenezar Eb@n'i:z3 | |||||
Edith i:dIT | Edith i:dIT | ||||
Eduardo Edw'A@doU | Eduardo Edw'A@doU | ||||
Elijah I2laIdZ@ | Elijah I2laIdZ@ | ||||
Giovanni dZ@v'A:ni | Giovanni dZ@v'A:ni | ||||
Graeme greI@m | Graeme greI@m | ||||
Graham greI@m | Graham greI@m | ||||
Gruffydd grIfIT | |||||
Guido gwi:doU | Guido gwi:doU | ||||
Guinevere gwInI#vi@3 | |||||
Hadrian heIdri:@n | Hadrian heIdri:@n | ||||
Hamish heImIS | Hamish heImIS | ||||
Harriet hari@t | Harriet hari@t | ||||
Harvey hA@vi | |||||
Heidi haIdi | Heidi haIdi | ||||
Hecate hEk@teI | Hecate hEk@teI | ||||
Hekate hEk@teI | Hekate hEk@teI | ||||
Luigi lu:'i:dZi | Luigi lu:'i:dZi | ||||
Luis lu:Is | Luis lu:Is | ||||
Lupe lu:peI | Lupe lu:peI | ||||
Luther lu:T3 | |||||
Madeleine mad@lI2n | Madeleine mad@lI2n | ||||
Madeline mad@lI2n | Madeline mad@lI2n | ||||
Maeve meIv | Maeve meIv | ||||
Phoebe fi:bi: | Phoebe fi:bi: | ||||
Rachael reItS@L | Rachael reItS@L | ||||
Rachel reItS@L | Rachel reItS@L | ||||
Rae reI | |||||
Rafael rA:faI'El | Rafael rA:faI'El | ||||
Rashid rA:S'i:d | Rashid rA:S'i:d | ||||
Raul raU'u:l | Raul raU'u:l | ||||
(Santa claus) s'ant@||kl'O:z | (Santa claus) s'ant@||kl'O:z | ||||
Saoirse si@S@ | Saoirse si@S@ | ||||
Sarah se@r@ | Sarah se@r@ | ||||
Sarisa $alt3 | |||||
Seamus SeIm@s | Seamus SeIm@s | ||||
Sean SO:n | Sean SO:n | ||||
Sebastian $alt3 | Sebastian $alt3 | ||||
Sonia s0nj@ | Sonia s0nj@ | ||||
Sophie soUfi | Sophie soUfi | ||||
Stephen sti:v@n | Stephen sti:v@n | ||||
Stevie sti:vi | |||||
Stewart stju:3t | Stewart stju:3t | ||||
?3 Stewart stu:3t | ?3 Stewart stu:3t | ||||
Stuart stju:3t | Stuart stju:3t | ||||
Wallace w0lI#s | Wallace w0lI#s | ||||
Wally w0li | Wally w0li | ||||
?3 William wIlj@m | ?3 William wIlj@m | ||||
Yerevan jEr@v'an | |||||
Yves i:v | Yves i:v | ||||
Yvonne $2 | Yvonne $2 | ||||
Zoe zoUi | Zoe zoUi | ||||
Capone ka#poUn | Capone ka#poUn | ||||
Carnegie kA@n@gi | Carnegie kA@n@gi | ||||
Cohen koU@n | Cohen koU@n | ||||
Connolly $1 | |||||
Cthulhu k@-Tu:l#u: | Cthulhu k@-Tu:l#u: | ||||
Chrysler kraIsl3 | Chrysler kraIsl3 | ||||
(da vinci) da#vIntSi | (da vinci) da#vIntSi | ||||
Genghis dZENgIs | Genghis dZENgIs | ||||
Gibson gIbs@n | Gibson gIbs@n | ||||
Guinness gInIs | Guinness gInIs | ||||
Gutierrez gu:tj'ErEz | |||||
Hades heIdi:z | Hades heIdi:z | ||||
Hamilton ham@Lt@n | Hamilton ham@Lt@n | ||||
Hoosier hu:Z3 | Hoosier hu:Z3 | ||||
(at once) a#t_w0ns | (at once) a#t_w0ns | ||||
?6 (at once) a#t_wVns | ?6 (at once) a#t_wVns | ||||
(at will) a#t_w'Il | (at will) a#t_w'Il | ||||
(at & t) 'eIt2i:@nt'i: | |||||
with wID $u | with wID $u | ||||
(with the) w%IDD@2 $nounf | (with the) w%IDD@2 $nounf | ||||
//conjunctions | //conjunctions | ||||
although OlD'oU $pause | |||||
although 0lD'oU $pause | |||||
and and $u $pause $only | and and $u $pause $only | ||||
as %az $only | as %az $only | ||||
(as is) ,az,Iz $pause | (as is) ,az,Iz $pause | ||||
these Di:z $u $nounf $strend2 $only | these Di:z $u $nounf $strend2 $only | ||||
those DoUz $u $nounf $strend2 $only | those DoUz $u $nounf $strend2 $only | ||||
there De@ $u $strend2 $only | there De@ $u $strend2 $only | ||||
there've De@v $u | |||||
(there are) D%e@,A@ $strend | (there are) D%e@,A@ $strend | ||||
(there be) De@b'i: | (there be) De@b'i: | ||||
(there were) D%e@,w3: $strend | (there were) D%e@,w3: $strend |
ab (ruc ab | ab (ruc ab | ||||
ab (sce ab | ab (sce ab | ||||
ab (sei ab | ab (sei ab | ||||
absen (t ,abs@n | |||||
_) ab (sen ab | |||||
_) abse (ntC ,abs@ | |||||
ab (solu ab | ab (solu ab | ||||
ab (sti ab | ab (sti ab | ||||
ab (ular 'ab | ab (ular 'ab | ||||
b) ab (y eIb | b) ab (y eIb | ||||
b) ab (yl ab | b) ab (yl ab | ||||
&) able (_S4iev @b@L // suffix | &) able (_S4iev @b@L // suffix | ||||
&) able (_$w_alt eIb@L | |||||
&) able (_$w_alt1 eIb@L | |||||
&c) able (_ @b@L | &c) able (_ @b@L | ||||
@ct) able (_ =@b@L | @ct) able (_ =@b@L | ||||
&) ability (S7iev @b'IlI2t%i // suffix | &) ability (S7iev @b'IlI2t%i // suffix | ||||
f) ac (ilit @s | f) ac (ilit @s | ||||
_m) ace (d asI | _m) ace (d asI | ||||
m) achi (nA# @Si: | m) achi (nA# @Si: | ||||
m) achina (t aSI2neI | |||||
m) achina (t akI2neI | |||||
ach (rom ak | ach (rom ak | ||||
ac (id_ as | ac (id_ as | ||||
_) ac (i a#s | _) ac (i a#s | ||||
_) alber (tA alb'3: | _) alber (tA alb'3: | ||||
_) al (c al | _) al (c al | ||||
alco (h alk@ | alco (h alk@ | ||||
&) al (cy_ @l | |||||
_) al (d O:l | _) al (d O:l | ||||
alde (hy 'aldI | alde (hy 'aldI | ||||
ale (_ eIl | ale (_ eIl | ||||
ale (h eIl | ale (h eIl | ||||
X) al (ed al | X) al (ed al | ||||
k) alei (d @laI | k) alei (d @laI | ||||
_v) alen (t al@n | |||||
aleph alEf | aleph alEf | ||||
_op) al (es @l | |||||
_) alexan alIgz'aan | _) alexan alIgz'aan | ||||
_) alfa alf@ | _) alfa alf@ | ||||
_) al (g al | _) al (g al | ||||
t) all (e O:l | t) all (e O:l | ||||
thr) all O:l | thr) all O:l | ||||
Av) al (en @l | Av) al (en @l | ||||
w) all (A 0l | |||||
w) all (A+ 0l | |||||
w) alle O:l | w) alle O:l | ||||
w) all (et 0l | |||||
w) all O:l | w) all O:l | ||||
w) all (a 0l | w) all (a 0l | ||||
al (tAr 0l | al (tAr 0l | ||||
amer (ic a#mEr | amer (ic a#mEr | ||||
c) am (ero am | c) am (ero am | ||||
c) am (el am | c) am (el am | ||||
car) am (el @m | |||||
am (i_ 'A:m | am (i_ 'A:m | ||||
ami (g a#mi: | ami (g a#mi: | ||||
_d) am (i eIm | _d) am (i eIm | ||||
hum) an (_ @n | hum) an (_ @n | ||||
&) an (ty_ @n | &) an (ty_ @n | ||||
&) an (t_ @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 | ?8 &) an (t_ a#n | ||||
_f) an (at a#n | _f) an (at a#n | ||||
pl) an (t_ an | pl) an (t_ an | ||||
&) an (ese @n | &) an (ese @n | ||||
_) ane (s anI | _) ane (s anI | ||||
an (gul 'an | an (gul 'an | ||||
_) ani anI | |||||
_) ani (on anaI | |||||
&) ani (_ 'A:nI | &) ani (_ 'A:nI | ||||
@st) ani (_S1 =i | |||||
an (ia 'eIn | an (ia 'eIn | ||||
ania (c_ 'eInIa | ania (c_ 'eInIa | ||||
ania (c a#naI@ | ania (c a#naI@ | ||||
_t) ar (_ A@ | _t) ar (_ A@ | ||||
&) ar (dis 3 | &) ar (dis 3 | ||||
&) ar (diz 3 | &) ar (diz 3 | ||||
&) ar (d_$w_alt2 3 | |||||
&d) ar (d_ 3 | &d) ar (d_ 3 | ||||
gg) ar (d_ 3 | gg) ar (d_ 3 | ||||
&h) ar (d_ 3 | &h) ar (d_ 3 | ||||
sp) ar (enC ar | sp) ar (enC ar | ||||
ar' (nt A@ | ar' (nt A@ | ||||
ar (et ar | ar (et ar | ||||
ar (iaC_ 'e@ | |||||
ar (iaB_ 'e@ | |||||
ar (ia_ 'e@ | ar (ia_ 'e@ | ||||
@) arily (_ 'Er@l%I | @) arily (_ 'Er@l%I | ||||
?3 @) arily (_ 'e@r@l%I | ?3 @) arily (_ 'e@r@l%I | ||||
u) ar (ish e@r | u) ar (ish e@r | ||||
?3 _) ar (istocrat a#r | ?3 _) ar (istocrat a#r | ||||
log) ar (i @r | log) ar (i @r | ||||
marg) ar (AtA_ 3r' | |||||
m) ar (it ar | m) ar (it ar | ||||
p) ar (i ar | p) ar (i ar | ||||
p) ar (in e@ | p) ar (in e@ | ||||
_w) ar (d O@ | _w) ar (d O@ | ||||
sw) ar (d O@ | sw) ar (d O@ | ||||
chw) ar (d O@ | chw) ar (d O@ | ||||
&) arye (_ 3ri | |||||
.group as | .group as | ||||
_) as (@ a#s | _) as (@ a#s | ||||
av (eng a#v | av (eng a#v | ||||
_) av (erC a#v | _) av (erC a#v | ||||
av (oA a#v | av (oA a#v | ||||
d) av (en av | |||||
d) av (id eIv | d) av (id eIv | ||||
j) av (a A:v | j) av (a A:v | ||||
j) av (el av | j) av (el av | ||||
l) av (en av | |||||
_B) av (en av | |||||
al) av (er 'A:v | al) av (er 'A:v | ||||
sc) av (en av | sc) av (en av | ||||
_) avi (A eIvI | _) avi (A eIvI | ||||
bi (ry bI | bi (ry bI | ||||
bi (sc bI | bi (sc bI | ||||
bi (sec b%aI | bi (sec b%aI | ||||
bi (sh bI | |||||
_) bi (sh bI | |||||
bi (sm bI | bi (sm bI | ||||
bi (sq bi: | bi (sq bi: | ||||
bi (str bi: | bi (str bi: | ||||
bron) ch k | bron) ch k | ||||
ch (ute S | ch (ute S | ||||
ch (ure S | ch (ure S | ||||
za) ch k | |||||
.group co | .group co | ||||
_) co (ag k%oU | _) co (ag k%oU | ||||
co (rro k@ | co (rro k@ | ||||
co (rrup k@ | co (rrup k@ | ||||
_) costar koUstA@ | _) costar koUstA@ | ||||
_) counter (@P7 k'aUnt@ // prefix | |||||
_) counter (@P7 k'aUnt3 // prefix | |||||
.group d | .group d | ||||
d d | d d | ||||
st) ea (k eI | st) ea (k eI | ||||
w) eapo Ep@ | w) eapo Ep@ | ||||
eager i:g3 | eager i:g3 | ||||
j) ealou El@ | |||||
j) ea (lou E | |||||
&) eal (_ i@l | &) eal (_ i@l | ||||
z) ea (lo E | z) ea (lo E | ||||
C) ea (lt E | C) ea (lt E | ||||
s) er (van 3: | s) er (van 3: | ||||
ery (_ @r%i | ery (_ @r%i | ||||
?3 ery (_++$w_alt2 @rI | ?3 ery (_++$w_alt2 @rI | ||||
?3 @@AC) ery (_ e@ri | |||||
?3 @@AC) ery (_ ,e@ri | |||||
ery (A 3j | ery (A 3j | ||||
_v) ery ErI2 | _v) ery ErI2 | ||||
qu) ery i@rI | qu) ery i@rI | ||||
_x) er (o i@r | |||||
z) er (o i@r | z) er (o i@r | ||||
_C) er (o_ i@r | _C) er (o_ i@r | ||||
er (rA E | er (rA E | ||||
err (_N e@ | err (_N e@ | ||||
.group es | .group es | ||||
ess (_$w_alt2 @s | |||||
&) es (_S1i z | &) es (_S1i z | ||||
&es) es (_ i:z | &es) es (_ i:z | ||||
ese (_ i:z | ese (_ i:z | ||||
ex (erc Eks | ex (erc Eks | ||||
_) ex (A %Egz | _) ex (A %Egz | ||||
_) exh %Egz | _) exh %Egz | ||||
_) ex (hal %Eks | |||||
_) exh (ibiti %Eks | |||||
?3 _) exhu %Egzu: | ?3 _) exhu %Egzu: | ||||
_) ex (it Egz | _) ex (it Egz | ||||
exor (c Eks3 | exor (c Eks3 | ||||
g (eek g | g (eek g | ||||
_) g (ert g | _) g (ert g | ||||
_) g (ek g | _) g (ek g | ||||
g (eld g | |||||
ge (nic_ dZ'E | ge (nic_ dZ'E | ||||
genesis dZ'EnI2sIs | genesis dZ'EnI2sIs | ||||
geous dZ=@s | geous dZ=@s | ||||
iza (tion aIzeI | iza (tion aIzeI | ||||
?3 iza (tion @zeI | ?3 iza (tion @zeI | ||||
ize (_ aIz | ize (_ aIz | ||||
ial) ize (_S3 aIz | |||||
&l) ize (_S3 aIz | |||||
&l) ized (_S4 aIzd | |||||
&l) izing (_S5 ,aIzIN | |||||
ize (d_ aIz | ize (d_ aIz | ||||
i (zen I | i (zen I | ||||
iz (er_ aIz | iz (er_ aIz | ||||
&n) iel (_ j@L | &n) iel (_ j@L | ||||
&r) iel (_ =i:@L | &r) iel (_ =i:@L | ||||
ie (n i@ | ie (n i@ | ||||
&) ie (n_ =i@n | |||||
&) ie (n_ =i@ | |||||
d) iene (_ 'aIi:n | d) iene (_ 'aIi:n | ||||
ie (ntal I'E | ie (ntal I'E | ||||
g) ie (n i: | g) ie (n i: | ||||
ier i@3 | ier i@3 | ||||
ier (a I'e@r | ier (a I'e@r | ||||
&) ier (_NS2i 3 | &) ier (_NS2i 3 | ||||
&) ier's (_NS4i 3z | |||||
ier (_$w_alt1 'i@3 | |||||
_h) ie (r aI3 | _h) ie (r aI3 | ||||
pl) ier (_ aI3 | pl) ier (_ aI3 | ||||
_Cr) ier aI3 | _Cr) ier aI3 | ||||
impo (ten Imp@ | impo (ten Imp@ | ||||
_) im (pre@P2 %Im | _) im (pre@P2 %Im | ||||
impreg Impr'Eg | impreg Impr'Eg | ||||
impreg (nat ImprEg | |||||
?!3 impreg (nat Impr,Eg | |||||
im (presa ,Im | im (presa ,Im | ||||
im (provis Im | im (provis Im | ||||
im (pulse_ Im | im (pulse_ Im | ||||
.group in | .group in | ||||
@) ing (_+S3dve %IN | @) ing (_+S3dve %IN | ||||
@) ings (_S4dve %INz | |||||
@) ings (_S1m z | |||||
@) ingly (_S5dve %INl%I | @) ingly (_S5dve %INl%I | ||||
@) ingment (_S7dve %INm@nt | @) ingment (_S7dve %INm@nt | ||||
logu) ing (_S4v %IN | logu) ing (_S4v %IN | ||||
_) inno (ce In@ | _) inno (ce In@ | ||||
_) inno (v In@ | _) inno (v In@ | ||||
_) inn (um %In | _) inn (um %In | ||||
_) in (of In | |||||
_) in (org In | _) in (org In | ||||
_) in (p In | _) in (p In | ||||
_) in (que In | _) in (que In | ||||
adm) ini InI | adm) ini InI | ||||
m) iniatur InItS3 | m) iniatur InItS3 | ||||
m) inera (l In@r@ | m) inera (l In@r@ | ||||
in (al_$w_alt 'aIn | |||||
in (al_$w_alt1 'aIn | |||||
&m) in (al_ =In | &m) in (al_ =In | ||||
f) in (a aIn | f) in (a aIn | ||||
@g) in (a_ aIn | @g) in (a_ aIn | ||||
v) ine (g InI# | v) ine (g InI# | ||||
in (ea In | in (ea In | ||||
in (ee In | in (ee In | ||||
in (esc In | |||||
c) in (e In | c) in (e In | ||||
inc) in (e In | inc) in (e In | ||||
g) in (e In | g) in (e In | ||||
is (er+_ aIz | is (er+_ aIz | ||||
iser (_ aIz3 | iser (_ aIz3 | ||||
&) ish (_ I2S | &) ish (_ I2S | ||||
ish (A_ 'i:S | |||||
is (ive aIs | is (ive aIs | ||||
_) island aIl@nd | _) island aIl@nd | ||||
_) is (le aI | _) is (le aI | ||||
iss (a_ 'Is | iss (a_ 'Is | ||||
issimo (_ 'IsImoU | issimo (_ 'IsImoU | ||||
chr) is (t_ aIs | chr) is (t_ aIs | ||||
@) istan (_ =Istan | |||||
@) istani (_ Ist'A:nI | |||||
@) istan (_ =IstA:n | |||||
@) istan (_N =Istan | |||||
@) iste (_ 'i:st | @) iste (_ 'i:st | ||||
@) is (tic_ 'Is | @) is (tic_ 'Is | ||||
r) is (y_ =@s | r) is (y_ =@s | ||||
oea (_ 'i@ | oea (_ 'i@ | ||||
_) oe (d i: | _) oe (d i: | ||||
p) oe (m oUI | p) oe (m oUI | ||||
oer oU@ | |||||
oer oU3 | |||||
_) oe (s i: | _) oe (s i: | ||||
&) oe (s_S2 z | &) oe (s_S2 z | ||||
oesopha I2s0f@ | oesopha I2s0f@ | ||||
o (tion oU | o (tion oU | ||||
m) o (tiv oU | m) o (tiv oU | ||||
r) o (to oU | r) o (to oU | ||||
pr) oto oUtoU | |||||
pr) oto (C oUtoU | |||||
pr) oto (n oUt0 | pr) oto (n oUt0 | ||||
m) otor oUt3 | m) otor oUt3 | ||||
n) o (tor oU | n) o (tor oU | ||||
olt oUlt | olt oUlt | ||||
w) olv Ulv | w) olv Ulv | ||||
N_p) oly ,0lI | N_p) oly ,0lI | ||||
_) ol (ym @l | |||||
.group om | .group om | ||||
&) om (_ @m | &) om (_ @m | ||||
t) omb (K u:m | t) omb (K u:m | ||||
w) omb (_ u:m | w) omb (_ u:m | ||||
c) ombe (_ u:m | c) ombe (_ u:m | ||||
_tr) ombo (n %0mboU | |||||
c) om (e Vm | c) om (e Vm | ||||
c) omm (e Vm | c) omm (e Vm | ||||
_d) om (a @m | _d) om (a @m | ||||
Cd) on (_ @n | Cd) on (_ @n | ||||
?3 ag) on (_ 0n | ?3 ag) on (_ 0n | ||||
rg) on (_ @n | rg) on (_ @n | ||||
&k) on (_ @n | |||||
&s) on (_ @n | &s) on (_ @n | ||||
&t) on (_ @n | &t) on (_ @n | ||||
&tr) on (_ 0n | &tr) on (_ 0n | ||||
pers) on (i '0n | pers) on (i '0n | ||||
postp) on 'oUn | postp) on 'oUn | ||||
_sp) on 0n | _sp) on 0n | ||||
&s) on (an @n | |||||
on (ald 0n | on (ald 0n | ||||
&) on (age_ @n | &) on (age_ @n | ||||
d) on (at %oUn | d) on (at %oUn | ||||
nt) or (_ o@ | nt) or (_ o@ | ||||
vent) or (_ 3 | vent) or (_ 3 | ||||
y) or (k O@ | y) or (k O@ | ||||
&) or (ant_ 3r | |||||
or (arL02 3r | or (arL02 3r | ||||
&) or (ation 3r | &) or (ation 3r | ||||
_) ora (to 0r@ | _) ora (to 0r@ | ||||
w) or (e o@ | w) or (e o@ | ||||
or (um_ 'o@r | or (um_ 'o@r | ||||
&) ory (_ @r%I | &) ory (_ @r%I | ||||
?3 @@At) ory (_ o:ri | |||||
?3 @@At) ory (_ ,o:ri | |||||
_st) ory o@rI | _st) ory o@rI | ||||
.group os | .group os | ||||
_all) ow aU | _all) ow aU | ||||
isall) ow aU | isall) ow aU | ||||
cl) ow aU | cl) ow aU | ||||
fl) ow (er aU | |||||
fl) ower aU|3 | |||||
gl) ow (er aU | gl) ow (er aU | ||||
pl) ow aU | pl) ow aU | ||||
_n) ow (_ aU | _n) ow (_ aU | ||||
prede (ces pri:dI | prede (ces pri:dI | ||||
_) pre (diP3 pr%i: | _) pre (diP3 pr%i: | ||||
_) pre (dic pr%I | _) pre (dic pr%I | ||||
_) predi (lec pr,i:dI2 | |||||
?3 _) predi (lec prEd@ | |||||
_) pre (em pr%i: | _) pre (em pr%i: | ||||
_) pre (fec pri: | _) pre (fec pri: | ||||
_) pre (feren prE | _) pre (feren prE | ||||
_) re (arm %ri: | _) re (arm %ri: | ||||
_) re (au@P2 ,ri: | _) re (au@P2 ,ri: | ||||
re (ck rE | re (ck rE | ||||
reckon rEk@n | |||||
reco (g rEk@ | reco (g rEk@ | ||||
_) re (comP2 r,i: | _) re (comP2 r,i: | ||||
_) re (conP2 ,ri: | _) re (conP2 ,ri: | ||||
m) s (i z | m) s (i z | ||||
a) s (el_ z | a) s (el_ z | ||||
m) s (y z | m) s (y z | ||||
n) s (y_ z | |||||
a) s (e s | a) s (e s | ||||
pha) s (e z | pha) s (e z | ||||
la) s (e z | la) s (e z | ||||
@) s (hill_ s | @) s (hill_ s | ||||
@) s (hous s | @) s (hous s | ||||
_) she' %Si: | _) she' %Si: | ||||
A) sh (i_ =S | |||||
A) sh (A_ =S | |||||
&) ship (_S4 SIp | &) ship (_S4 SIp | ||||
&) ships (_S5 SIps | &) ships (_S5 SIps | ||||
&) shire (_S5 S3 | &) shire (_S5 S3 | ||||
_) sus (A su:z | _) sus (A su:z | ||||
su (al Zu: | su (al Zu: | ||||
n) su (al sju: | n) su (al sju: | ||||
?3 n) su (al Su: | |||||
_) su (b sV | _) su (b sV | ||||
_) su (bdi s,V | _) su (bdi s,V | ||||
su (bdue s%V | su (bdue s%V | ||||
_) t (sY t | _) t (sY t | ||||
_) t (wY t | _) t (wY t | ||||
_) tz (ar ts | _) tz (ar ts | ||||
t (h$w_alt4 t | |||||
tch tS | tch tS | ||||
_) tele tElI2 | _) tele tElI2 | ||||
tse (_ tsi | tse (_ tsi | ||||
_) tsk t'@sk | _) tsk t'@sk | ||||
_) tsu tsu: | _) tsu tsu: | ||||
tt (i_ =t | |||||
_) two tu: | _) two tu: | ||||
ttu (r t@ | ttu (r t@ | ||||
tz ts | tz ts | ||||
th (ern_ D | th (ern_ D | ||||
_) thio T,aIoU | _) thio T,aIoU | ||||
th (ith D | th (ith D | ||||
th (old th | |||||
th (ole th | th (ole th | ||||
_) th (om@ t | _) th (om@ t | ||||
ph) th T | ph) th T | ||||
ear) th (y T | ear) th (y T | ||||
_) there De@ | _) there De@ | ||||
_) them D%Em | _) them D%Em | ||||
_) there (@ D%e@ | |||||
_) the (mA Ti: | _) the (mA Ti: | ||||
.group ti | .group ti | ||||
&s) tion tS@n | &s) tion tS@n | ||||
?8 &) tion S=Vn | ?8 &) tion S=Vn | ||||
?8 &s) tion tSVn | ?8 &s) tion tSVn | ||||
tion (al S=@-n | |||||
tion (al_ S=@-n | |||||
tion (al S@-n | |||||
&) tious S=@s | &) tious S=@s | ||||
AC) tive (_ =tIv | AC) tive (_ =tIv | ||||
@) tu (lat =tSU | @) tu (lat =tSU | ||||
?3 tu (Ant tSu: | ?3 tu (Ant tSu: | ||||
?3 tu (Ancy tSu: | ?3 tu (Ancy tSu: | ||||
tu (ous tSu: | |||||
tu (ous =tSu: | |||||
@) tur (A tS@r | @) tur (A tS@r | ||||
@) tur (al_ tS=@r | @) tur (al_ tS=@r | ||||
&) tur (y tS@r | &) tur (y tS@r | ||||
d) u (ly ju: | d) u (ly ju: | ||||
z) u (l_ 'u: | z) u (l_ 'u: | ||||
&) um (_ @m | &) um (_ @m | ||||
vol) u (m ju: | |||||
vol) u (me ju: | |||||
u (ma_ 'u: | u (ma_ 'u: | ||||
h) u (man ju: | h) u (man ju: | ||||
u (me ju: | u (me ju: | ||||
?3 _) vibra (t v'aIbreI | ?3 _) vibra (t v'aIbreI | ||||
vivi (@ vIvI | vivi (@ vIvI | ||||
viv (_ vaIv | viv (_ vaIv | ||||
_) vo (lC v0 | |||||
.group w | .group w | ||||
w w | w w | ||||
C) yes (_ aIz | C) yes (_ aIz | ||||
_) yes jEs | _) yes jEs | ||||
yeah jEh | yeah jEh | ||||
yew ju: | |||||
@C) y (gen I | @C) y (gen I | ||||
?!3 d) y (nas I | ?!3 d) y (nas I | ||||
s) ynch Ink | s) ynch Ink | ||||
E (ntu 'E | E (ntu 'E | ||||
E (ntous 'E | E (ntous 'E | ||||
E (o_ I2 | E (o_ I2 | ||||
Eous (_ =j@s | |||||
Eous (_ =i@s | |||||
l) E (ps E | l) E (ps E | ||||
l) E (pt E | l) E (pt E | ||||
Eri (A 'i@rI2 | Eri (A 'i@rI2 | ||||
.group ' | .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 | 6_) 's (_ I2z | ||||
16_) 's (_ z | 16_) 's (_ z | ||||
're (_S3 @ | 're (_S3 @ |
_) d (rA d | _) d (rA d | ||||
_) d (A d | _) d (A d | ||||
d (A D | d (A D | ||||
d (_ D | |||||
d (cY D | d (cY D | ||||
d (L03 D | d (L03 D | ||||
d (v D | |||||
m) d d | m) d d | ||||
n) d d | n) d d | ||||
l) d d | l) d d | ||||
_) gn (A n | _) gn (A n | ||||
_) g (A g | _) g (A g | ||||
g (A Q | g (A Q | ||||
g (_ Q | |||||
g (cY Q | g (cY Q | ||||
g (L03 Q | g (L03 Q | ||||
m) g g | m) g g |
_) game (X _^_en | _) game (X _^_en | ||||
girl _^_en // girl | girl _^_en // girl | ||||
gh (K _^_en | gh (K _^_en | ||||
gy (_ _^_en | |||||
@) gy (_ _^_en | |||||
.group h | .group h | ||||
y (nn i | y (nn i | ||||
// group y: English section | // group y: English section | ||||
_C) y (_ _^_en | |||||
//_C) y (_ _^_en | |||||
AC) y (_ _^_en | AC) y (_ _^_en | ||||
C) y (e_ _^_en | C) y (e_ _^_en | ||||
%C) y (_ _^_en | %C) y (_ _^_en |
// Irish Gaeilge dictionary | // Irish Gaeilge dictionary | ||||
// written by Ronan McGuirk | // 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 | // This file is UTF8 encoded | ||||
// letters | // letters | ||||
// accent names | // accent names | ||||
// names of symbols | // names of symbols | ||||
ª_. pO#nk | |||||
_. pO#nk | |||||
_, k0m@ | _, k0m@ | ||||
_; semI | _; semI | ||||
_: ko:l0n | _: ko:l0n | ||||
amuigh @mu1'I | amuigh @mu1'I | ||||
amháin @w'A:in | amháin @w'A:in | ||||
am aUm | am aUm | ||||
an @n | |||||
anaithnid '0nah@nIdZ | |||||
anois @nIS | anois @nIS | ||||
anonn @naUn | anonn @naUn | ||||
ann aUn | ann aUn | ||||
anseo @nS'O | anseo @nS'O | ||||
anuas a#n'u@s | |||||
aodh e: | aodh e: | ||||
aodha e: | aodha e: | ||||
aon e:@n | aon e:@n | ||||
(ar ais) Er'aS | (ar ais) Er'aS | ||||
arís @r'i:S | arís @r'i:S | ||||
as 0s | as 0s | ||||
aschurtha '0sxUrh@ | |||||
atá @t['A: $u | atá @t['A: $u | ||||
baill bu1'i:l | baill bu1'i:l | ||||
bhaill vu1'i:l | bhaill vu1'i:l | ||||
beidh bEg | beidh bEg | ||||
bhfuil w'Il | bhfuil w'Il | ||||
bheas v'e:@s | |||||
bhuel w'El | bhuel w'El | ||||
ceithre kEr@ | ceithre kEr@ | ||||
cathair k'0h@r | cathair k'0h@r | ||||
chlainne xl'InE | chlainne xl'InE | ||||
chun xUn $u | chun xUn $u | ||||
crainn kri:n | crainn kri:n | ||||
chrainn xri:n | |||||
de dE $u+ | de dE $u+ | ||||
des dEs $u | des dEs $u | ||||
do dO# $u | do dO# $u | ||||
domhnach d[aUn@x | domhnach d[aUn@x | ||||
domhnaigh d[aUnig | domhnaigh d[aUnig | ||||
dúghorm d['u:Q"Or@m | |||||
eile 'El@ | eile 'El@ | ||||
euro ju:ro: | euro ju:ro: | ||||
faic f@ak | faic f@ak | ||||
(muigheo) mu1'i:||'o: | (muigheo) mu1'i:||'o: | ||||
mhuigh vu1'i: | mhuigh vu1'i: | ||||
(mhaigh eo) vu1'i:||'o: | (mhaigh eo) vu1'i:||'o: | ||||
mhama w'0m@ | |||||
maith m'0 | maith m'0 | ||||
mhaith w'0 | mhaith w'0 | ||||
mbeadh m;O#X | mbeadh m;O#X | ||||
os o:s | os o:s | ||||
rabh raU | rabh raU | ||||
raibh rEv | raibh rEv | ||||
raidió r'adi:o: | |||||
réamhrá r'e:@vr,a: | réamhrá r'e:@vr,a: | ||||
réidh re: | réidh re: | ||||
's s | |||||
samhain saUIn | samhain saUIn | ||||
san s@n | san s@n | ||||
seo S@_ | seo S@_ |
// translation rules for Irish Gaeilge | // translation rules for Irish Gaeilge | ||||
// This file is UTF-8 encoded | // 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 | // Conditional rules | ||||
// ?1 allow eclipsis as 2 separate words | // ?1 allow eclipsis as 2 separate words | ||||
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | .L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | ||||
.L04 b bh mb // for words like beag | .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 | .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 | .L07 b c g ch bh gh mb | ||||
.L08 lc ll nt bhse // for words like cailc | .L08 lc ll nt bhse // for words like cailc | ||||
.L09 cl cr chr f | .L09 cl cr chr f | ||||
.L12 á é ó eo ua // when followed by i | .L12 á é ó eo ua // when followed by i | ||||
.L13 oc omb | .L13 oc omb | ||||
.L14 río dún gnío // followed with mh | .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 | .L16 b c bh ch gr ghr // for inn word ending | ||||
.L17 l le li niste nn | .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 | .L19 na nea ra rea la llea arga // word endings with silent dh | ||||
.L20 eo eoir eá eabh io iu iú // slender m | .L20 eo eoir eá eabh io iu iú // slender m | ||||
.L21 ll nn ndán nntán | .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 | .L23 ea eo i | ||||
.L24 b mb bh g gh p ph bp m mh | .L24 b mb bh g gh p ph bp m mh | ||||
abht aU#t[ | abht aU#t[ | ||||
amhr aUr // words like amhras | amhr aUr // words like amhras | ||||
K) amhl aUl | K) amhl aUl | ||||
abhra aUr@ // words like slabhra | |||||
abh (C aU // words like slabhra | |||||
aghaidh aIg | aghaidh aIg | ||||
t) abhair u:@r | t) abhair u:@r | ||||
th) abhair u:@r | th) abhair u:@r | ||||
t) abhar u:@r | t) abhar u:@r | ||||
th) abhar u:@r | th) abhar u:@r | ||||
_) an (sL01 @n | _) an (sL01 @n | ||||
_) an (- 0n // an prefix | |||||
_) a (nA @ | |||||
_) an (_ @n | |||||
_) an (- '0n // an prefix | |||||
é) a @ // words like féach | é) a @ // words like féach | ||||
X) a (nn_ aU# | X) a (nn_ aU# | ||||
X) a (ll_ aU# | X) a (ll_ aU# | ||||
_) ao e: | _) ao e: | ||||
ae e: | ae e: | ||||
amhna (_ aUn@ | amhna (_ aUn@ | ||||
arraing arIng | |||||
_) ath (@@P3 ,0_ | |||||
.group á | .group á | ||||
á A: | á A: | ||||
@) á ,A: | @) á ,A: | ||||
áinig A:nIg | áinig A:nIg | ||||
ái 'A:i | ái 'A:i | ||||
.group ai | .group ai | ||||
ai a# | ai a# | ||||
L04) ai (L17 0# | L04) ai (L17 0# | ||||
m) ai (n 0# | m) ai (n 0# | ||||
c) ai (th 0# | c) ai (th 0# | ||||
ch) ai (th 0# | ch) ai (th 0# | ||||
ai (tín 0# | |||||
ai (d 0# | ai (d 0# | ||||
p) ai (l 0# | p) ai (l 0# | ||||
@) ai (L11_ I | @) ai (L11_ I | ||||
X) aigh 'aI | X) aigh 'aI | ||||
aigh aI# L04) aill (_ wi:l | aigh aI# L04) aill (_ wi:l | ||||
aing (_ Ing | aing (_ Ing | ||||
ai (llimh '0 // words like Gaillimh | |||||
.group b | .group b | ||||
b b // broad | b b // broad | ||||
L01) b b; // slender | L01) b b; // slender | ||||
bh (_ vv | bh (_ vv | ||||
bh (L22 vj // slender | bh (L22 vj // slender | ||||
L01) bh v | L01) bh v | ||||
?1 _m_) b (@ | |||||
?1 _m_) b (@ | |||||
_) bhf v // urú broad | _) bhf v // urú broad | ||||
_) bhf (L22 v; // urú slender | _) bhf (L22 v; // urú slender | ||||
_) bp b // urú broad | _) bp b // urú broad | ||||
a) bh (a U // for example cabhair | a) bh (a U // for example cabhair | ||||
ear) bha u: // words like Cearbhall | ear) bha u: // words like Cearbhall | ||||
bhfaigh v'aI | bhfaigh v'aI | ||||
_) beann (@ ba#n | |||||
_) bheann (@ va#n | |||||
_) bun (C@P3 b,Un | |||||
.group c | .group c | ||||
c k | c k | ||||
c (L01 k; // slender | c (L01 k; // slender | ||||
ch (L01 C; | ch (L01 C; | ||||
ch (é+ C; | ch (é+ C; | ||||
ch (ei+ x; | ch (ei+ x; | ||||
?1 _g_) c (@ | |||||
?1 _g_) c (L01 | |||||
?1 _g_) c (@ | |||||
?1 _g_) c (L01 | |||||
_) cabhr k'aUr | _) cabhr k'aUr | ||||
_) chabhr x'aUr | _) chabhr x'aUr | ||||
_) ceann (C@P5 k;,aUn | |||||
_) cheann (C@P6 C;,aUn | |||||
.group d | .group d | ||||
d d[ // broad | d d[ // broad | ||||
L01) d dZ // slender | L01) d dZ // slender | ||||
d (L22 dZ // slender | d (L22 dZ // slender | ||||
d (L01 d; // slender | d (L01 d; // slender | ||||
i) d (i dZ | i) d (i dZ | ||||
?1 _n_) d (@ | |||||
?1 _n_) d (@ | |||||
dh Q // broad | dh Q // broad | ||||
dh (ui Q // broad | dh (ui Q // broad | ||||
dh (ao Q // broad | dh (ao Q // broad | ||||
?1 _) d (_t d[ | ?1 _) d (_t d[ | ||||
?1 _) d (_tL01 dZ | ?1 _) d (_tL01 dZ | ||||
_) d' (@P2 d | _) d' (@P2 d | ||||
_) d' d | |||||
_) d (_'fh d | |||||
d'fh (L01 d | |||||
i) dh (_ g | i) dh (_ g | ||||
a) dh (_ X | a) dh (_ X | ||||
o) dh (_ X | o) dh (_ X | ||||
dheartháir gr@h'A:r | dheartháir gr@h'A:r | ||||
deirfiúr d;r@f'u:r | deirfiúr d;r@f'u:r | ||||
dheirfiúr g;r@f'u:r | dheirfiúr g;r@f'u:r | ||||
_) do (Ch@@P2 d[,U_ | |||||
_) dí (@@P2 d,i: | |||||
.group e | .group e | ||||
e E# | e E# | ||||
eá A: | eá A: | ||||
r) ei (m aI | r) ei (m aI | ||||
eighea aI | eighea aI | ||||
eighea aI | eighea aI | ||||
s) ei (nn aI | |||||
sh) ei (nn aI | |||||
eigh aI | eigh aI | ||||
eo o: | eo o: | ||||
eogh o: | |||||
eoi o: | |||||
eogha o: | |||||
eoghai o: | |||||
d) eo (ch O# | d) eo (ch O# | ||||
dh) eo (ch O# | |||||
_) eo (ch O# | _) eo (ch O# | ||||
s) eo (_ @ | s) eo (_ @ | ||||
.group é | .group é | ||||
é 'e: | é 'e: | ||||
éi 'e: | éi 'e: | ||||
éa 'e: | |||||
_) éi (rig aI // words like éirigh | _) éi (rig aI // words like éirigh | ||||
_h) éi (rí aI | |||||
_) éi (rí aI // words like éirí | _) éi (rí aI // words like éirí | ||||
_) éireoidh aIro:Ig | _) éireoidh aIro:Ig | ||||
éacs e:@ks | éacs e:@ks | ||||
.group ea | .group ea | ||||
ea a# | ea a# | ||||
eai a# | |||||
X) ea (L21_ aU | X) ea (L21_ aU | ||||
ea (ltaine aU | ea (ltaine aU | ||||
g) ea (ll aU | g) ea (ll aU | ||||
l) eamh (n aU | |||||
dr) ea (m aU | |||||
X) ea (ch 0 | X) ea (ch 0 | ||||
_L04) ea (g @ | _L04) ea (g @ | ||||
_L04) ea (dh_ @ | _L04) ea (dh_ @ | ||||
eanbhean 'an@v,an | eanbhean 'an@v,an | ||||
eadhb aIb | eadhb aIb | ||||
.group f | .group f | ||||
f f // broad | f f // broad | ||||
f (L22 f; // slender | f (L22 f; // slender | ||||
fh (éin_ h | fh (éin_ h | ||||
fh (L22 ; // slender | fh (L22 ; // slender | ||||
@) f (L06_ h | @) 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 | .group g | ||||
g g // broad | g g // broad | ||||
g (L01 g; // slender | g (L01 g; // slender | ||||
?1 _n_) g (@ | |||||
?1 _n_) g (@ | |||||
_) gh Q" | _) gh Q" | ||||
_) gh (L01 Q"j | _) gh (L01 Q"j | ||||
_) gc g // urú broad | _) gc g // urú broad | ||||
gh (n X@ | gh (n X@ | ||||
gheobh j'o: | gheobh j'o: | ||||
gabh gaU | gabh gaU | ||||
_) gearr (C@P5 g;,aR | |||||
_) ghearr (C@P6 Q"j,aR | |||||
.group h | .group h | ||||
h h // silent | h h // silent | ||||
.group i | .group i | ||||
i I | i I | ||||
_) i I | _) i I | ||||
ia i@ | ia i@ | ||||
ia (tha i: | ia (tha i: | ||||
io O# | io O# | ||||
io (dá I | |||||
_) io (nadh u:// words like ionadh | _) io (nadh u:// words like ionadh | ||||
s) io (mb I | |||||
sh) io (mb I | |||||
_pr) io (n u: | _pr) io (n u: | ||||
L16) inn (_ i:n | L16) inn (_ i:n | ||||
iai i:i | iai i:i | ||||
L12) i i // non syllabic short i after long vowel | L12) i i // non syllabic short i after long vowel | ||||
iú u: | iú u: | ||||
m) i (d_ i: // verb ending | m) i (d_ i: // verb ending | ||||
_) in (@@P2 ,In_ | |||||
_) ionad (C@@P5 ,Ona#d[ | |||||
.group í | .group í | ||||
í 'i: | í 'i: | ||||
íomh 'i:v | |||||
íochn 'i:xn | |||||
í (_ i: | |||||
ín (_ i:n | |||||
ío i:@ | |||||
.group l | .group l | ||||
l l // broad | l l // broad | ||||
L01) l l; // slender | L01) l l; // slender | ||||
ll (L23 l; | ll (L23 l; | ||||
l (g l@ | l (g l@ | ||||
l (b l@ | l (b l@ | ||||
_) lorg (@@P4 l,Or@g | |||||
_) lán (C@@P3 l,A:n | |||||
.group m | .group m | ||||
m m // broad | m m // broad | ||||
m (L20 m; //slender | m (L20 m; //slender | ||||
_) mh (n v@ | _) mh (n v@ | ||||
léir) mheas vas | léir) mheas vas | ||||
r) m @m // words like gorm | r) m @m // words like gorm | ||||
_) mear (@@P4 m,ar | |||||
.group n | .group n | ||||
n n // broad | n n // broad | ||||
n (L01 n; // slender | n (L01 n; // slender | ||||
n (ch n@ | n (ch n@ | ||||
c) n @n | c) n @n | ||||
ch) n @n | ch) n @n | ||||
_) nasc (C@@ n,0sk | |||||
.group o | .group o | ||||
o O# | o O# | ||||
_) o 'O | _) o 'O | ||||
odl (a O#l | odl (a O#l | ||||
oí i: | oí i: | ||||
.group ó | .group ó | ||||
ó 'o: | ó 'o: | ||||
ómhai o:@ | ómhai o:@ | ||||
ói (p@ 'o: | |||||
.group oi | .group oi | ||||
oi O | oi O | ||||
_L15) oi (+ @'I | _L15) oi (+ @'I | ||||
_) oi (leá 'I | _) oi (leá 'I | ||||
oidh aI | oidh aI | ||||
oir (_ 'ERR | oir (_ 'ERR | ||||
_sc) oi (r O | |||||
oigh (ea aI | oigh (ea aI | ||||
.group p | .group p | ||||
p p // broad | p p // broad | ||||
ph f // broad | ph f // broad | ||||
p (L22 p; // slender | p (L22 p; // slender | ||||
ph (L20 f; // slender | ph (L20 f; // slender | ||||
?1 _b_) p (@ | |||||
?1 _b_) p (@ | |||||
.group r | .group r | ||||
L12i) r (t_ Z | L12i) r (t_ Z | ||||
rr R | rr R | ||||
rg r@g | rg r@g | ||||
rgh rQ" | |||||
L01) rg R@g // slender | L01) rg R@g // slender | ||||
r (bh r@ | r (bh r@ | ||||
ríomh ri:@v | |||||
s) r (A R | s) r (A R | ||||
_) ramh raU | _) ramh raU | ||||
.group s | .group s | ||||
s s // broad | s s // broad | ||||
L01) s S // slender | L01) s S // slender | ||||
s (cL01 S | s (cL01 S | ||||
s (CCL01 S // slender | s (CCL01 S // slender | ||||
s (pCé s // broad | s (pCé s // broad | ||||
?1 _t_) s (@ | |||||
?1 _t_) s (@ | |||||
sh h | sh h | ||||
sh (CL01 h | sh (CL01 h | ||||
sh (L01 h; | sh (L01 h; | ||||
s (lL01 S | s (lL01 S | ||||
_') s (_ s // 's in poems etc | |||||
_) sain (@P4 s,an | |||||
.group t | .group t | ||||
t t[ // broad | t t[ // broad | ||||
L01) t c // slender | L01) t c // slender | ||||
?1 _) t (_L01 c | ?1 _) t (_L01 c | ||||
L01C) t tS // slender after consonant | L01C) t tS // slender after consonant | ||||
t (CL01 tS // slender with following consonant before vowels | t (CL01 tS // slender with following consonant before vowels | ||||
?1 _d_) t (@ | |||||
?1 _d_) t (@ | |||||
th h | th h | ||||
th (L01 h; | th (L01 h; | ||||
L01C) th h | L01C) th h | ||||
thne (_ h@nE | thne (_ h@nE | ||||
A) th (_ // silent th at word end | A) th (_ // silent th at word end | ||||
.group u | .group u | ||||
u U# | u U# | ||||
ua u@ | ua u@ | ||||
uai (d ui | uai (d ui | ||||
uá u:'A: | uá u:'A: | ||||
ui I | ui I | ||||
ui (s U | |||||
ui (sce_ I | |||||
uinn (_ 'i:n | uinn (_ 'i:n | ||||
uinti U#'i:ntI | uinti U#'i:ntI | ||||
_b) uí wi: | _b) uí wi: | ||||
_bh) uí wi: | _bh) uí wi: | ||||
g) uí wi: | g) uí wi: | ||||
gh) uí wi: | |||||
umh u: | umh u: | ||||
L03) ui @I | L03) ui @I | ||||
_d) u (l_ O# | _d) u (l_ O# | ||||
gh) ui (gh_ @i: | gh) ui (gh_ @i: | ||||
uí i: | uí i: | ||||
uachai 'ux@ | uachai 'ux@ | ||||
_) uimhir (C@P6 ,IvIR | |||||
.group ú | .group ú | ||||
ú u: | ú u: | ||||
únmh u:nv | únmh u:nv |
.group ऊ | .group ऊ | ||||
ऊ u | ऊ u | ||||
ऊं u~ // + anusvara | |||||
ऊँ u~ // + candrabinbu | |||||
ऊं (_ u~ // + anusvara | |||||
ऊँ (_ u~ // + candrabinbu | |||||
.group ऋ | .group ऋ | ||||
ऋ rI | ऋ rI | ||||
.group ऎ | .group ऎ | ||||
ऎ e | ऎ e | ||||
ऎं (_ e~ | |||||
ऎँ (_ e~ | |||||
.group ए | .group ए | ||||
ए e: | ए e: | ||||
एँ e~: | |||||
एं (_ e~: | |||||
ा) एँ (_ j | |||||
.group ऐ | .group ऐ | ||||
ऐ E: // ?? [aI] [E:] [&:] | ऐ E: // ?? [aI] [E:] [&:] | ||||
ऐं E~ | |||||
ऐँ E~ | |||||
ऐं (_ E~ | |||||
ऐँ (_ E~ | |||||
?2 ऐ aI // ?? [aI] [E:] [&:] | ?2 ऐ aI // ?? [aI] [E:] [&:] | ||||
.group ऒ | .group ऒ | ||||
ऒ o | ऒ o | ||||
ऒं (_ o~ | |||||
ऒँ (_ o~ | |||||
.group ओ | .group ओ | ||||
ओ o: | ओ o: | ||||
ओं o~ // +anusvara | |||||
ओँ o~ // +candrabindu | |||||
ओं (_ o~ // +anusvara | |||||
ओँ (_ o~ // +candrabindu | |||||
ा) ओं (_ w // +anusvara | |||||
ा) ओँ (_ w | |||||
.group औ | .group औ | ||||
औ O: // ?? [aU] [O:] | औ O: // ?? [aU] [O:] | ||||
औं O~ // +anusvara | |||||
औँ O~ // +candrabindu | |||||
औं (_ O~ // +anusvara | |||||
औँ (_ O~ // +candrabindu | |||||
?3 औ aU // ?? [aU] [O:] | ?3 औ aU // ?? [aU] [O:] | ||||
.group ा | .group ा | ||||
ा a: | ा a: | ||||
ा (ँ a~ | |||||
ाँ (_ a~ | |||||
ां (_ a~ | |||||
ाव aU | ाव aU | ||||
.group ि | .group ि | ||||
.group ी | .group ी | ||||
ी i: | ी i: | ||||
ी (_ i | ी (_ i | ||||
ी (ँ i~ | |||||
ीँ (_ i~ | |||||
ीं (_ i~ | |||||
.group ु | .group ु | ||||
ु u | |||||
ु U | |||||
ु (ँ u~ | |||||
ुं (_ u~ | |||||
ुँ (_ u~ | |||||
.group ू | .group ू | ||||
ू u: | ू u: | ||||
ूं u~ // or O~ ?? | |||||
ूँ u~ | |||||
ू (ँ u~ | |||||
ूं (_ u~ // or O~ ?? | |||||
ूँ (_ u~ | |||||
.group ृ | .group ृ | ||||
ृ rI | ृ rI | ||||
.group ॆ | .group ॆ | ||||
ॆ e | ॆ e | ||||
ॆ (ँ e~ | |||||
ॆं (_ e~ | |||||
ॆँ (_ e~ | |||||
.group े | .group े | ||||
े e: | े e: | ||||
े (ँ e~ | |||||
ें (_ e~: | |||||
ेँ (_ e~: | |||||
.group ै | .group ै | ||||
ै E: // ?? [aI] [E:] [&:] | ै E: // ?? [aI] [E:] [&:] | ||||
ैं E~ | |||||
ैँ E~ | |||||
ै (ँ E~ | |||||
ैं (_ E~ | |||||
ैँ (_ E~ | |||||
?2 ै aI // ?? [aI] [E:] [&:] | ?2 ै aI // ?? [aI] [E:] [&:] | ||||
.group ॉ | .group ॉ | ||||
.group ॊ | .group ॊ | ||||
ॊ o | ॊ o | ||||
ॊ (ँ o~ | |||||
ॊं (_ o~ | |||||
ॊँ (_ o~ | |||||
.group ो | .group ो | ||||
ो o: | ो o: | ||||
ों o~ | |||||
ोँ o~ | |||||
ो (ँ o~ | |||||
ों (_ o~ | |||||
ोँ (_ o~ | |||||
.group ौ | .group ौ | ||||
ौ O: // [O:] or [aU] ?? | ौ O: // [O:] or [aU] ?? | ||||
ौं O~ | |||||
ौँ O~ | |||||
ौ (ँ O~ // [O:] or [aU] ?? | |||||
ौं (_ O~ | |||||
ौँ (_ O~ | |||||
?3 ौ aU // [O:] or [aU] ?? | ?3 ौ aU // [O:] or [aU] ?? | ||||
.group ॢ // vowel sign l | .group ॢ // vowel sign l | ||||
क़ qV | क़ qV | ||||
क़ (B q | क़ (B q | ||||
क्ष kSV | |||||
क्ष (B kS | |||||
.group ख | .group ख | ||||
ख k#V | ख k#V | ||||
ख (B k# | ख (B k# | ||||
ज (B J | ज (B J | ||||
ज़ zV | ज़ zV | ||||
ज़ (B z | ज़ (B z | ||||
ज्ञ gjV | |||||
ज्ञ (B gj | |||||
.group झ | .group झ | ||||
झ J#V | झ J#V | ||||
झ (B J# | झ (B J# | ||||
.group ञ | .group ञ | ||||
ञ n^V | ञ n^V | ||||
ञ (B n^ | ञ (B n^ | ||||
्) ञ (_ n^ | |||||
्) ञ (_ n^@ | |||||
.group ट | .group ट | ||||
ट t.V | ट t.V | ||||
ढ़ (B r.h // nukta | ढ़ (B r.h // nukta | ||||
.group ण | .group ण | ||||
ण n.V // (temporary) same as dental [n] | |||||
ण n.V | |||||
ण (B n. | ण (B n. | ||||
्) ण (_ n.@ | ्) ण (_ n.@ | ||||
न्) म (_ m // n +virama | न्) म (_ m // n +virama | ||||
.group य | .group य | ||||
य j@ | |||||
य jV | |||||
य (B j | य (B j | ||||
C) य (_ Ej // [Ej] not [@j] | |||||
्) य (_ j@ | ्) य (_ j@ | ||||
.group र | .group र | ||||
र rV | र rV | ||||
र (B r | र (B r | ||||
र (_ r | |||||
्) र (_ r@ | ्) र (_ r@ | ||||
.group ऱ // rra | .group ऱ // rra | ||||
ऱ rV // (temporary) same as [r] | |||||
ऱ rV // (temporary) same as [r] should this be [r.] or perhaps [z.] ? | |||||
ऱ (B r | ऱ (B r | ||||
्) ऱ (_ r@ | ्) ऱ (_ r@ | ||||
_) व wV | _) व wV | ||||
_) व (B w | _) व (B w | ||||
_) व (् v // +virma | _) व (् v // +virma | ||||
व (_ w | |||||
.group श | .group श | ||||
श SV | श SV | ||||
श (B S | श (B S | ||||
.group ष | .group ष | ||||
ष s.V //?? or retroflex [S] | |||||
ष (B s. //?? | |||||
ष s.V | |||||
ष (B s. | |||||
.group स | .group स | ||||
स sV | स sV | ||||
स (B s | स (B s | ||||
.group ह | .group ह | ||||
ह H | |||||
ह HV | |||||
ह (B H | ह (B H | ||||
(emelte ki) EmEltE_||ki $unstressend | (emelte ki) EmEltE_||ki $unstressend | ||||
tagságát $unstressend | tagságát $unstressend | ||||
(a szakadékot) A'||sAkAde:kot $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 | eszközét $unstressend | ||||
méretű $unstressend | méretű $unstressend | ||||
ketyeg $unstressend | ketyeg $unstressend |
orszá) g (gyarapod g | orszá) g (gyarapod g | ||||
anya) g (gyár g | anya) g (gyár g | ||||
anya) g (gyűjt g | anya) g (gyűjt g | ||||
végi) g (gya g | |||||
végi) g (gy g | |||||
me) ggy (mag J | me) ggy (mag J | ||||
me) ggy (íz J: | me) ggy (íz J: | ||||
bádo) g (gy g | bádo) g (gy g | ||||
ro) ggyj (ék J: | ro) ggyj (ék J: | ||||
rá) g (gyűjt g //for example virággyűjtés, virággyűjteményt words | 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 | _lo) g (gyűjt g //for example loggyűjtemény word | ||||
dro) g (gyanú g | |||||
dro) g (gy g | |||||
le) gg (roteszk g: | le) gg (roteszk g: | ||||
_agya) g (gy g | _agya) g (gy g | ||||
anya) g (győz g | anya) g (győz g | ||||
hazugsá) g (gy g | hazugsá) g (gy g | ||||
tőze) g (gy g | tőze) g (gy g | ||||
doppin) g (gy g | doppin) g (gy g | ||||
baromsá) g (gy g | |||||
tehetsé) g (gy g | |||||
bete) g (gy g | |||||
.group gy | .group gy | ||||
gy J | gy J | ||||
_huszone) gy (e J: | _huszone) gy (e J: | ||||
száze) gy (edik J: | száze) gy (edik J: | ||||
védje) gy (straté J | védje) gy (straté J | ||||
na) gy (sor J | |||||
.group h | .group h | ||||
h h | h h | ||||
sz) í (veré i: | sz) í (veré i: | ||||
sz) í (verő i: | sz) í (verő i: | ||||
sz) í (vevő i: | sz) í (vevő i: | ||||
expressz) í (v i: | |||||
.group j | .group j | ||||
j j | j j | ||||
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. | 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 | n'Em _!'Ellt,e:,ES | ||||
porcelá) n (ny n | |||||
.group o | .group o | ||||
o o | o o | ||||
juventu) ssz s: //a radio station name | juventu) ssz s: //a radio station name | ||||
farka) ssz (em Ss | farka) ssz (em Ss | ||||
villamo) ssz (ék Ss | villamo) ssz (ék Ss | ||||
titko) ssz (olgál Ss | |||||
titko) ssz (olg Ss | |||||
karo) ssz (ék Ss | karo) ssz (ék Ss | ||||
hú) ssz (elet Ss | hú) ssz (elet Ss | ||||
vörö) ssz (em Ss | vörö) ssz (em Ss | ||||
esé) ssz (erű Ss | esé) ssz (erű Ss | ||||
webe) ssz Ss | webe) ssz Ss | ||||
beleve) ssz (en s: | 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 | .group sz | ||||
diva) t (cirk t | diva) t (cirk t | ||||
álla) t (cirk t | álla) t (cirk t | ||||
szen) t (szob t | szen) t (szob t | ||||
koncer) t (jeg t | |||||
.group tj | .group tj | ||||
C) tj c | C) tj c |
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// Spelling-to-phoneme words for Armenian | // Spelling-to-phoneme words for Armenian | ||||
// ?1 West Armenian | |||||
// names of letters | // names of letters | ||||
_ա aIb | _ա aIb | ||||
բ ben | բ ben | ||||
կ ken | կ ken | ||||
հ ho | հ ho | ||||
ձ dza | ձ dza | ||||
ղ r"ad | |||||
ղ r"at | |||||
ճ ce | ճ ce | ||||
մ men | մ men | ||||
յ hi | յ hi | ||||
չ tSa | չ tSa | ||||
պ pe | պ pe | ||||
ջ dZe | ջ dZe | ||||
ռ **a | |||||
ռ R2a | |||||
ս se | ս se | ||||
վ vev | վ vev | ||||
տ tyn | տ tyn | ||||
ր re | ր re | ||||
ց tso | |||||
ց ts#o | |||||
ւ hyn | ւ hyn | ||||
փ p#yr | փ p#yr | ||||
ք k#e | ք k#e | ||||
և jev | |||||
_օ o | _օ o | ||||
ֆ fe | ֆ fe | ||||
e e | e e | ||||
f ef | 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 | // numbers | ||||
// function words | // 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 |
// (consonants are changed for Armenian-West in the voice file "hy-west") | // (consonants are changed for Armenian-West in the voice file "hy-west") | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// ?1 West Armenian | |||||
.L01 բ գ թ կ պ տ ք | .L01 բ գ թ կ պ տ ք | ||||
.L02 ու այ իւ իյ ոյ // other vowel sounds | |||||
.L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||||
// ligature | // ligature | ||||
.replace | .replace | ||||
.group ա | .group ա | ||||
ա a | ա a | ||||
այ aI | |||||
այ (K aI | |||||
այ (_ a | այ (_ a | ||||
.group բ | .group բ | ||||
.group է | .group է | ||||
է e | է e | ||||
էօ W | էօ W | ||||
էյ eI | |||||
էյ (K eI | |||||
.group ը | .group ը | ||||
ը @ | ը @ | ||||
ի i | ի i | ||||
իւ y | իւ y | ||||
իւ (_ iv | իւ (_ iv | ||||
իյ i@ | |||||
իյ (K i@ | |||||
.group լ | .group լ | ||||
լ l | լ l | ||||
L02) մ (_ m | L02) մ (_ m | ||||
.group յ | .group յ | ||||
յ h // ?? [j] | |||||
_) յ h // ?? [j] | |||||
_) յ (C h@ | _) յ (C h@ | ||||
յ j | |||||
.group ն | .group ն | ||||
ն n | ն n | ||||
_) ջ (C dZ@ | _) ջ (C dZ@ | ||||
.group ռ | .group ռ | ||||
ռ ** | |||||
_) ռ (C **@ | |||||
ռ R2 | |||||
_) ռ (C R2@ | |||||
.group ս | .group ս | ||||
ս s | ս s | ||||
.group ր | .group ր | ||||
ր r | ր r | ||||
L02) ր (L02 * | |||||
_) ր (C r@ | _) ր (C r@ | ||||
C) ր (_ @r | C) ր (_ @r | ||||
L02) ր (_ r | L02) ր (_ r | ||||
ֆ f | ֆ f | ||||
_) ֆ (C f@ | _) ֆ (C f@ | ||||
.group | |||||
$ dol@ | |||||
_t te: | _t te: | ||||
_cap h'o:fdlEt@r | _cap h'o:fdlEt@r | ||||
_sub s'8pskrIpt|| | |||||
_sup s'yp@rskrIpt|| | |||||
_?A l'Et@r | _?A l'Et@r | ||||
_?? s'imbo:l | _?? s'imbo:l | ||||
_7X z'e:v@nt@x | _7X z'e:v@nt@x | ||||
_8X t'Axt@x | _8X t'Axt@x | ||||
_9X n'e:g@nt@x | _9X n'e:g@nt@x | ||||
_0C h'OndErt | |||||
_0C h'Ond@rt | |||||
_0M1 d'WyzEnt | _0M1 d'WyzEnt | ||||
_0M2 m'iljun | _0M2 m'iljun | ||||
_0M3 m'iljArt | _0M3 m'iljArt | ||||
loochen $alt | loochen $alt | ||||
oefen $alt | oefen $alt | ||||
open $alt | open $alt | ||||
reden $alt | |||||
regen $alt | regen $alt | ||||
reken $alt | reken $alt | ||||
schepen $alt | schepen $alt | ||||
water $alt | water $alt | ||||
wedijver $alt | wedijver $alt | ||||
wegwijzer $alt | wegwijzer $alt | ||||
weiger $alt | |||||
wester $alt | wester $alt | ||||
wijder $alt | wijder $alt | ||||
wilder $alt | wilder $alt | ||||
gispel $alt | gispel $alt | ||||
gniffel $alt | gniffel $alt | ||||
goochel $alt | goochel $alt | ||||
googel $alt | |||||
gorgel $alt | gorgel $alt | ||||
grabbel $alt | grabbel $alt | ||||
grendel $alt | grendel $alt | ||||
accessoire aksEsw'ar@ | accessoire aksEsw'ar@ | ||||
accessoires aksEsw'ar@s | accessoires aksEsw'ar@s | ||||
actiepunt Aksip8nt | actiepunt Aksip8nt | ||||
actieve Akt'iv@ | |||||
adhesie Ath'e:zi | adhesie Ath'e:zi | ||||
agenda $2 | agenda $2 | ||||
aldus Ald'8s | aldus Ald'8s | ||||
desillusie dEsIlyzi | desillusie dEsIlyzi | ||||
dieet $2 | dieet $2 | ||||
diesel diz@l | diesel diz@l | ||||
diner din'e: | |||||
//discussie $2 | //discussie $2 | ||||
divers div'Ers | divers div'Ers | ||||
diftongering dIft,ON'e:rIN | diftongering dIft,ON'e:rIN | ||||
elfstedentocht ,Elf'ste:d@ntoQt | elfstedentocht ,Elf'ste:d@ntoQt | ||||
embouchuur A~buS'yr // embouchure | embouchuur A~buS'yr // embouchure | ||||
enorm $2 | enorm $2 | ||||
enquête A~k'Et@ $alt2 | |||||
erosie e:r'o:zi | erosie e:r'o:zi | ||||
eucharistie $4 | eucharistie $4 | ||||
explosie $2 | explosie $2 | ||||
invasie $2 | invasie $2 | ||||
januari $3 | januari $3 | ||||
kadaster $2 | kadaster $2 | ||||
leesregel le:sre:Q@l | |||||
lunch l8nS | |||||
lunches l8nS@s | |||||
mangat $alt3 | mangat $alt3 | ||||
materie ma:t'e:ri | materie ma:t'e:ri | ||||
maatregel ma:tre:Q@l $alt2 | maatregel ma:tre:Q@l $alt2 | ||||
partijvoorzitters $2 | partijvoorzitters $2 | ||||
periferie pI:rifI:r'i | periferie pI:rifI:r'i | ||||
pistache pist'AS | pistache pist'AS | ||||
privilege privil'e:Z@ $alt2 | |||||
proces $2 | proces $2 | ||||
projectielen $3 | projectielen $3 | ||||
renaissance rEne:s'A~s@ | renaissance rEne:s'A~s@ | ||||
sms'jes EsEm'Es_j@s | sms'jes EsEm'Es_j@s | ||||
spektakel $2 | spektakel $2 | ||||
tegennatuur $4 | tegennatuur $4 | ||||
tralie $1 | |||||
travestie $3 | travestie $3 | ||||
verderop $3 | verderop $3 | ||||
vergezicht vErQ@zIxt | |||||
verre vEr@ | verre vEr@ | ||||
verrekijker vEr@kEIk@r | verrekijker vEr@kEIk@r | ||||
verste vErst@ | verste vErst@ | ||||
verte vErt@ | verte vErt@ | ||||
volledig $2 | volledig $2 | ||||
voordeel $1 | |||||
vrouwengek $alt3 | vrouwengek $alt3 | ||||
waarschijnlijk $2 | waarschijnlijk $2 | ||||
wanen v#a:n@n | wanen v#a:n@n |
@@C) a (_ =a: | @@C) a (_ =a: | ||||
_) aan (@P3 'a:n | _) aan (@P3 'a:n | ||||
@) aar (_S3 a:r | |||||
@) aard (_S4 a:rt | |||||
&) aar (_S3 a:r | |||||
&) aard (_S4 a:rt | |||||
aa (rd_ 'a: | aa (rd_ 'a: | ||||
aa (C_ 'a: | aa (C_ 'a: | ||||
z) aa (m_ a: | z) aa (m_ a: | ||||
t) a (bleau a: | t) a (bleau a: | ||||
@) abel (_ 'a:b@l | @) abel (_ 'a:b@l | ||||
@) abele (_ 'a:b@l@ | @) abele (_ 'a:b@l@ | ||||
@) ace (_ e:s // ?? interface | |||||
m) ach (in %a:S | m) ach (in %a:S | ||||
_) actie (@P5 'Aksi | |||||
_) af (C@P2 'Af | _) af (C@P2 'Af | ||||
_) affich %AfiS | _) affich %AfiS | ||||
age (_ 'a:Z@ | age (_ 'a:Z@ | ||||
baan ba:n | baan ba:n | ||||
&) baar (_S4 =ba:r | &) baar (_S4 =ba:r | ||||
&) bare (_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 (C@P3 b'EI | ||||
bij (zond b%i | bij (zond b%i | ||||
_) bijeen bEI'e:n | _) bijeen bEI'e:n | ||||
_) binnen (P6 b'In@n | _) binnen (P6 b'In@n | ||||
_) boek (@P4 b'uk | |||||
_) boven (P5 b'o:v@n | _) boven (P5 b'o:v@n | ||||
_) braille (@P7 br'Aj@ | |||||
_) brand br'And | _) brand br'And | ||||
_) buiten (P6 b'Wyt@n | _) buiten (P6 b'Wyt@n | ||||
_) buurt (@@P5 b'yrt // buurtbewoner | _) buurt (@@P5 b'yrt // buurtbewoner | ||||
_) be (zem be: | _) be (zem be: | ||||
_) be (zig be: | _) be (zig be: | ||||
_) beu bY: | _) beu bY: | ||||
_) bezoekers (@P9 b@z'uk@rs | |||||
.group c | .group c | ||||
@) ci (ë S | @) ci (ë S | ||||
ci (o S | ci (o S | ||||
ck k | ck k | ||||
ces (_ s'Es | |||||
coach ko:tS | coach ko:tS | ||||
_) computer (@P8 kOmpj'ut@r | |||||
_) congres kOnQr'Es | _) congres kOnQr'Es | ||||
_) concentratie (@P12 kOnsEntr'a:tsi | |||||
co (ncert k%O | co (ncert k%O | ||||
&) end (_ @nd | &) end (_ @nd | ||||
&) ende (_S1 @ | &) ende (_S1 @ | ||||
&) enden (_S2 @n | &) enden (_S2 @n | ||||
eden e:d@n | |||||
eden (_ e:d@n // ?? | |||||
@) ent (_ 'Ent | @) ent (_ 'Ent | ||||
@) ent (e_ 'Ent | @) ent (e_ 'Ent | ||||
@) ent (en_ 'Ent | @) ent (en_ 'Ent | ||||
@z) es (_S1 s | @z) es (_S1 s | ||||
@) es (_S2qd 'Es // double the previous vowel | @) es (_S2qd 'Es // double the previous vowel | ||||
@) es (_$w_alt2S1 s // just remove 's' | @) es (_$w_alt2S1 s // just remove 's' | ||||
@) e (s_$p_alt2+S1 s | |||||
KAC) es (_S2e @s | KAC) es (_S2e @s | ||||
mb) es (_S1 s | mb) es (_S1 s | ||||
nd) es (_S1 s | nd) es (_S1 s | ||||
@) eur (_ 'Y:r | @) eur (_ 'Y:r | ||||
&) e (nB@ E2 | &) e (nB@ E2 | ||||
&) e (ntig @ | |||||
_p) e (nibel e: | _p) e (nibel e: | ||||
id) e (nt E | id) e (nt E | ||||
pres) e (nt E | pres) e (nt E | ||||
er (ij_ @r | er (ij_ @r | ||||
tol) er (abel @r | tol) er (abel @r | ||||
mis) er (abel @r | mis) er (abel @r | ||||
hond) er (d_ @r | |||||
_) erger ErQ@r // ergeren | _) erger ErQ@r // ergeren | ||||
&) era (_ @ra: | &) era (_ @ra: | ||||
@) er (aar_ @r | @) er (aar_ @r | ||||
&) er (C@ E2r | &) er (C@ E2r | ||||
.group ê | |||||
ê E | |||||
.group f | .group f | ||||
f f | f f | ||||
@) gi (eus Z | @) gi (eus Z | ||||
@) gi (euz Z | @) gi (euz Z | ||||
reli) gi (eu Qij | reli) gi (eu Qij | ||||
_) goog (el gu:g | |||||
.group ge | .group ge | ||||
_) ge (@P2 Q@ | _) ge (@P2 Q@ | ||||
ge (bied Q@ | ge (bied Q@ | ||||
_) gebruikers (@P10 Q@br'Wyk@rs | |||||
_) gee Qe: | _) gee Qe: | ||||
_) gei QEI | _) gei QEI | ||||
gener (aal Q,e:n@r | gener (aal Q,e:n@r | ||||
_) gelijk Q@lEIk | _) gelijk Q@lEIk | ||||
_) ge (lC QE | _) ge (lC QE | ||||
_) ge (rC QE | _) ge (rC QE | ||||
_) ge (lenL02 Qe: | |||||
_) ge (tenL02 Qe: | |||||
_) geu QY: | _) geu QY: | ||||
_) ge (ven Qe: | _) ge (ven Qe: | ||||
_) ge (ver Qe: | _) ge (ver Qe: | ||||
_) herinn h%ErIn // herinneren | _) herinn h%ErIn // herinneren | ||||
_) hersen h'Ers@n | _) hersen h'Ers@n | ||||
&) heid (_S4 hEIt | &) heid (_S4 hEIt | ||||
_) honden (@P6 h'Ond@n | |||||
_) hulp (@@P4 h'8lp | _) hulp (@@P4 h'8lp | ||||
&) ika (_ =ika: | &) ika (_ =ika: | ||||
&) iko (_ =iko: | &) iko (_ =iko: | ||||
_) in (C@P2 'In | _) in (C@P2 'In | ||||
// _) in (gP2 'In | |||||
_) in (do In | _) in (do In | ||||
ine (_ 'in@ | ine (_ 'in@ | ||||
ines (_ 'in@s | ines (_ 'in@s | ||||
_) inn (@P2 'I // ?? inneren | |||||
_) inter Int@r | |||||
io (nage iO | io (nage iO | ||||
io (de_ i'o: | io (de_ i'o: | ||||
iodes (_ i'o:d@s | iodes (_ i'o:d@s | ||||
@) isme (_ 'Ism@ | @) isme (_ 'Ism@ | ||||
@) ist (_ 'Ist | @) ist (_ 'Ist | ||||
@) isten (_ 'Ist@n | @) isten (_ 'Ist@n | ||||
_) inn (@P2 'I // ?? inneren | |||||
.group j | .group j | ||||
j j | j j | ||||
_) jaar (@P4 j'a:r | |||||
jaar (lijk ja:r | |||||
jou (rna Zu | jou (rna Zu | ||||
k) k | k) k | ||||
_) kale (nde ka:l'E | _) kale (nde ka:l'E | ||||
_) kantoor (@P7 kAnt'o:r | |||||
_) keuze (@P5 k'Y:z@ | |||||
_) kinder (@P6 k'Ind@r | |||||
kokkerel kOk@r'El | kokkerel kOk@r'El | ||||
_) koning k'o:nIN // in compounds | _) koning k'o:nIN // in compounds | ||||
_) koningin ko:nIQ'In | _) koningin ko:nIQ'In | ||||
&) lijker (_S6 l@k@r | &) lijker (_S6 l@k@r | ||||
&) lijkere (_S7 l@k@r@ | &) lijkere (_S7 l@k@r@ | ||||
&) lijkheid (_S8 l@khEIt | &) lijkheid (_S8 l@khEIt | ||||
&) lijkheden (_S9 l@khe:d@n | |||||
// &) lijks@ (_ l@ks@ | |||||
&) lijkst (_S6 l@kst | &) lijkst (_S6 l@kst | ||||
&) lijkste (_S7 l@kst@ | &) lijkste (_S7 l@kst@ | ||||
&) laan (_S4 la:n | &) laan (_S4 la:n | ||||
_) lange (@P5 laN@ | _) lange (@P5 laN@ | ||||
_) liefdes (@P7 l'ifd@s | |||||
@) loog (_ lo:x | @) loog (_ lo:x | ||||
@) loos (_S4 lo:s | @) loos (_S4 lo:s | ||||
@) loze (_S4 lo:z@ | @) loze (_S4 lo:z@ | ||||
management ma:nIdZm@nt | management ma:nIdZm@nt | ||||
_) mee (@P3 m'e: | _) mee (@P3 m'e: | ||||
_) mee (rC mI: | |||||
menu (_ m@ny | menu (_ m@ny | ||||
_) mi (cro mi | _) mi (cro mi | ||||
_) mi (s@ m%I | _) mi (s@ m%I | ||||
_) mis (loP3 m'Is | _) mis (loP3 m'Is | ||||
_) mis (tA m'Is | _) mis (tA m'Is | ||||
_) misver (@ m'Isf@r | _) misver (@ m'Isf@r | ||||
_) muziek (@P6 myz'ik | |||||
.group n | .group n | ||||
n n | n n | ||||
_) na (C@N n'a: | _) na (C@N n'a: | ||||
_) na (C% nA | _) na (C% nA | ||||
_) na (cht nA | _) na (cht nA | ||||
_) najaars (@P7 n'a:ja:rs | |||||
_) narci (s n%ArsI | _) narci (s n%ArsI | ||||
_) na (rc n%A | _) na (rc n%A | ||||
_) na (der na: | _) na (der na: | ||||
na (vig n%a: | na (vig n%a: | ||||
_) na (vr na: | _) na (vr na: | ||||
_) na (volg@ n%a: | _) na (volg@ n%a: | ||||
_) noord (@P5 no:rd | |||||
_) nieuws (@P6 n'iws | _) nieuws (@P6 n'iws | ||||
@@) nis (_S3 nIs | @@) nis (_S3 nIs | ||||
@@) nisen (_S5 nIs@n | @@) nisen (_S5 nIs@n | ||||
_) noord (@P5 no:rd | |||||
_) notitie (@P7 no:t'itsi | |||||
.group o | .group o | ||||
tr) ou (vail u | tr) ou (vail u | ||||
ouve (rtu uvE | ouve (rtu uvE | ||||
_) over (@P4 ,o:v@r | _) over (@P4 ,o:v@r | ||||
_) overigen o:v@r@Q@n | |||||
_) overheid 'o:v@rhEIt | |||||
t) ou (r u: | t) ou (r u: | ||||
C) r (A r | C) r (A r | ||||
rr *r | rr *r | ||||
recherch r@SErS | |||||
revanch r@vA~nS | |||||
route rut@ // route(s) | route rut@ // route(s) | ||||
.group re | .group re | ||||
_) re (geren r@ | _) re (geren r@ | ||||
_) re (geer r@ | _) re (geer r@ | ||||
_) regel re:Q@l | |||||
_) re (cent r@ | _) re (cent r@ | ||||
_) re (cept r@ | _) re (cept r@ | ||||
_) re (ceptief re: | _) re (ceptief re: | ||||
_) re (ces r@ | |||||
_) re (clam r@ | _) re (clam r@ | ||||
_) register r@Q'Ist@r | |||||
reme (die r@m'e: | |||||
_) re (serve_ r@ | _) re (serve_ r@ | ||||
_) re (cord re' | _) re (cord re' | ||||
_) regering r@Q'I:rIN | |||||
repre (saill re:pre: | repre (saill re:pre: | ||||
recherch r@SErS | |||||
revanch r@vA~nS | |||||
.group s | .group s | ||||
@) ssi (o S | @) ssi (o S | ||||
CAr) sie (_ =zi | CAr) sie (_ =zi | ||||
_) stads (@P5 st'Ats | |||||
_) stage (@P5 st'a:Z@ | |||||
_) standaard (@P9 st'Anda:rt | _) standaard (@P9 st'Anda:rt | ||||
_) start (@P5 st'Art | |||||
@) straat (_S6 stra:t | @) straat (_S6 stra:t | ||||
_vre) s (e s | _vre) s (e s | ||||
_) ver (@P3 v@r | _) ver (@P3 v@r | ||||
_) ver (sie_ vEr | _) ver (sie_ vEr | ||||
_) verder vErd@r | _) 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 | _) voort (@P5 v'O:rt | ||||
_) vrijwilligers (@P13 vrEIv#'Il@Q@rs | |||||
.group w | .group w | ||||
_) wanstaltig v#Anst'Alt@Q | _) wanstaltig v#Anst'Alt@Q | ||||
_) wantrouwig v#Antr'VU@Q | _) wantrouwig v#Antr'VU@Q | ||||
_) wanvoeglijk v#Anv'uxl@k | _) wanvoeglijk v#Anv'uxl@k | ||||
_) water (@P5 v#'a:t@r | |||||
_) weers (@P5 v#'I:rs | |||||
_) weg (@P3 v#'EQ | _) weg (@P3 v#'EQ | ||||
_) weg (en v#e:Q | _) weg (en v#e:Q | ||||
_) weg (e_ v#e:Q // bewegelijk | _) weg (e_ v#e:Q // bewegelijk | ||||
_) werk (@P4 v#'Erk | |||||
_) west (@P4 v#Est | _) west (@P4 v#Est | ||||
_) wr vr | |||||
_) woon (@P4 v#'o:n | |||||
_) wr (@ vr | |||||
.group x | .group x |
ੱ) ਯ (_ j: | ੱ) ਯ (_ j: | ||||
.group ਰ | .group ਰ | ||||
ਰ RV | |||||
ਰ (B R | |||||
@) ਰ (_ R | |||||
ੱ) ਰ R:V | |||||
ੱ) ਰ (B R: | |||||
ੱ) ਰ (_ R: | |||||
ਰ rV | |||||
ਰ (B r | |||||
@) ਰ (_ r | |||||
ੱ) ਰ r:V | |||||
ੱ) ਰ (B r: | |||||
ੱ) ਰ (_ r: | |||||
.group ਲ | .group ਲ | ||||
ਲ lV | ਲ lV |
x iks | x iks | ||||
y 'igREk | y 'igREk | ||||
_z zEt | _z zEt | ||||
ż Z;Et | |||||
ź ZEt | |||||
ż ZEt | |||||
ź Z;Et | |||||
ä $accent | ä $accent | ||||
ö $accent | ö $accent |
// accent names | // accent names | ||||
_lig ligad'u*& | _lig ligad'u*& | ||||
_acu &g'udU | |||||
_ac2 &g'udUd'uplU | |||||
_acu ag'udU | |||||
_ac2 ag'udUd'uplU | |||||
_brv bR'Evi | _brv bR'Evi | ||||
_ced sedZ'ilj& | _ced sedZ'ilj& | ||||
?1 _ced syd'il^& | ?1 _ced syd'il^& | ||||
x Sis# | x Sis# | ||||
_cap maI'uskulU | _cap maI'uskulU | ||||
_sub ||subskR'itU | |||||
_sup ||sob*eskR'itU | |||||
_?A l'etR&_ | _?A l'etR&_ | ||||
_?? s'imbolU_ | _?? s'imbolU_ | ||||
_#32 esp'asU | _#32 esp'asU | ||||
+ maIs# $max3 | + maIs# $max3 | ||||
% pors'eINtU $max3 | % pors'eINtU $max3 | ||||
& _'e_ | & _'e_ | ||||
@ &x'ob& | |||||
@ ax'ob& | |||||
¤ 'eU*U | ¤ 'eU*U | ||||
€ 'eU*U | € 'eU*U | ||||
£ l'ibR& | |||||
§ p&*'agRafU | § p&*'agRafU | ||||
_\ b,ax&,iNvertS'id& | _\ b,ax&,iNvertS'id& | ||||
_] f,ES&kowS'etSi | _] f,ES&kowS'etSi | ||||
_^ s,irku~Nfl'Eksu | _^ s,irku~Nfl'Eksu | ||||
_´ as'eINtu,ag'udU | |||||
__ s,ublin^'adu | __ s,ublin^'adu | ||||
_` gR'avi | |||||
_` gR'avi | |||||
_{ ,abRiS'avi | _{ ,abRiS'avi | ||||
?1 _| b,ax&v,ertSik'al | ?1 _| b,ax&v,ertSik'al | ||||
?2 _| b,ax&v,ertSik'aU | ?2 _| b,ax&v,ertSik'aU | ||||
_¿ ,iNtex,ogas,&U~,iNvertS'id& | _¿ ,iNtex,ogas,&U~,iNvertS'id& | ||||
_" 'abRi;'asp&||d'upl&s# | _" '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 | ° gR'aU | ||||
?2 _9X nov'eINt& | ?2 _9X nov'eINt& | ||||
_1C0 s'eIN | _1C0 s'eIN | ||||
?1_0C s'eINtus# | ?1_0C s'eINtus# | ||||
?2_0C s'eINtUs# | |||||
?2_0C s'eINtUz | |||||
_1C s'eINtu | _1C s'eINtu | ||||
?1_2C duz'eINtus# | ?1_2C duz'eINtus# | ||||
?2_2C duz'eINtUz | ?2_2C duz'eINtUz | ||||
?1_3C tryz'eNtus# | |||||
?2_3C tRez'eNtUz | |||||
?1_3C tryz'eINtus# | |||||
?2_3C tRez'eINtUz | |||||
?1_5C kin^'eINtus# | ?1_5C kin^'eINtus# | ||||
?2_5C kin^'eINtUz | ?2_5C kin^'eINtUz | ||||
?1_0M1 m'il_ | ?1_0M1 m'il_ | ||||
usb $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'or | ||||
profª pR,ofes'o*& | profª pR,ofes'o*& | ||||
engº eInZen^'eI*U | |||||
engª eInZen^'eI*& | |||||
nº n'u~me*U | |||||
sr $dot | sr $dot | ||||
?1 sra ,Es;'Errj'a $dot | ?1 sra ,Es;'Errj'a $dot | ||||
?2 sra $dot | ?2 sra $dot | ||||
te $u $verbf | te $u $verbf | ||||
nos $u $nounf | nos $u $nounf | ||||
la $u | la $u | ||||
lo $u | |||||
lo lU $u | |||||
las $u | las $u | ||||
los $u | los $u | ||||
se $u | se $u | ||||
desse $u+ $nounf | desse $u+ $nounf | ||||
desta $nounf | desta $nounf | ||||
nesse n'esy $u+ $nounf | nesse n'esy $u+ $nounf | ||||
aquele &k'ely $u+ $nounf // that | |||||
aquela $u+ $nounf | aquela $u+ $nounf | ||||
daquele d&k'ely $u+ $nounf | |||||
aquele $alt2 $nounf | |||||
daquela $u+ $nounf | daquela $u+ $nounf | ||||
daquele $alt2 $nounf | |||||
que $u // pronunciation is in pt_rules | que $u // pronunciation is in pt_rules | ||||
// possessive adjectives | // possessive adjectives | ||||
// prepositions | // prepositions | ||||
de $u $nounf // of,from | de $u $nounf // of,from | ||||
do $u $nounf | |||||
do du $u $nounf | |||||
da $u $nounf | da $u $nounf | ||||
dos $u $nounf | dos $u $nounf | ||||
das $u $nounf | das $u $nounf | ||||
dumas $u $nounf | dumas $u $nounf | ||||
em $u $noun // in,on,at | em $u $noun // in,on,at | ||||
no nu $u $nounf | |||||
no nU $u $nounf | |||||
na $u $nounf | na $u $nounf | ||||
num $u $nounf | num $u $nounf | ||||
numa $u $nounf | numa $u $nounf | ||||
às ,a:s $nounf | às ,a:s $nounf | ||||
para $u // for,to | para $u // for,to | ||||
pro $u $nounf | |||||
pro pRU $u $nounf | |||||
pra $u $nounf | pra $u $nounf | ||||
pros $u $nounf | pros $u $nounf | ||||
pras $u $nounf | pras $u $nounf | ||||
// conjunctions | // conjunctions | ||||
?1 e i $u // and | ?1 e i $u // and | ||||
?2 e i $u // and | ?2 e i $u // and | ||||
se $u+ $verbf // if | |||||
se $u+ // if | |||||
?2 mas $u // but | ?2 mas $u // but | ||||
pudemos $u+ | pudemos $u+ | ||||
puderam $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) | // ir - to go (used to make future tense) | ||||
abacaxi abakaSy | abacaxi abakaSy | ||||
abordo $alt | abordo $alt | ||||
aborto $alt $verb | aborto $alt $verb | ||||
absorta $alt2 | |||||
acerto $alt2 $noun | acerto $alt2 $noun | ||||
acertos $alt2 | acertos $alt2 | ||||
acocho $alt2 $noun | |||||
acordo $alt $verb | acordo $alt $verb | ||||
acervo $alt2 | acervo $alt2 | ||||
adepto $alt | adepto $alt | ||||
adorno $alt $verb | adorno $alt $verb | ||||
aeroporto $alt2 | aeroporto $alt2 | ||||
aeroportos $alt | aeroportos $alt | ||||
albatrozes $alt | |||||
alcateia $alt | alcateia $alt | ||||
alcova $alt2 | alcova $alt2 | ||||
alegro $alt2 $noun | |||||
alferes $alt | alferes $alt | ||||
algozes $alt | |||||
almoço $alt $verb | almoço $alt $verb | ||||
ameba $alt | ameba $alt | ||||
amores $alt2 | amores $alt2 | ||||
amorno $alt | |||||
amuleto $alt2 | |||||
ampere $alt | |||||
ampola $alt2 | |||||
ampulheta $alt2 | |||||
andorra $alt2 | |||||
antonieta $alt2 | antonieta $alt2 | ||||
apego $alt2 $noun | apego $alt2 $noun | ||||
apelo $alt2 $noun | apelo $alt2 $noun | ||||
apoio $alt $verb | apoio $alt $verb | ||||
arredores $alt | arredores $alt | ||||
arremesso $alt2 $noun | arremesso $alt2 $noun | ||||
arrocho $alt2 $noun | |||||
arroto $alt2 $noun | |||||
arroz $alt2 | arroz $alt2 | ||||
assembleia $alt | assembleia $alt | ||||
assopro $alt2 $noun | |||||
ateia $alt | ateia $alt | ||||
aterro $alt2 | aterro $alt2 | ||||
aterro $alt $verb | aterro $alt $verb | ||||
atmosfera $alt | |||||
atrozes $alt | |||||
autora $alt2 | autora $alt2 | ||||
avesso $alt2 | avesso $alt2 | ||||
axé aSE | axé aSE | ||||
azeda $alt $verb | azeda $alt $verb | ||||
azedo $alt $verb | azedo $alt $verb | ||||
bairro b'aIxU | |||||
baqueta $alt2 | baqueta $alt2 | ||||
banqueta $alt2 | |||||
banquete $alt2 | |||||
bastonete $alt2 | |||||
beco $alt2 | beco $alt2 | ||||
besta $alt2 | besta $alt2 | ||||
bilhete $alt2 | bilhete $alt2 | ||||
bissulfeto $alt2 | |||||
boca $alt2 | boca $alt2 | ||||
boceta $alt2 | boceta $alt2 | ||||
bochecha $alt2 | |||||
bofe $alt | |||||
bojo $alt2 | bojo $alt2 | ||||
boleia $alt | boleia $alt | ||||
bolero $alt | bolero $alt | ||||
borra $alt2 $noun | borra $alt2 $noun | ||||
bosque $alt | bosque $alt | ||||
boto $alt2 $noun | boto $alt2 $noun | ||||
boxe $alt | |||||
boxe $alt | |||||
brejo $alt | brejo $alt | ||||
bromelha $alt | bromelha $alt | ||||
broto $alt2 $noun | |||||
cabelo $alt2 | cabelo $alt2 | ||||
cabresto $alt2 | cabresto $alt2 | ||||
cacete $alt2 | cacete $alt2 | ||||
cachorra $alt2 | cachorra $alt2 | ||||
caderneta $alt2 | caderneta $alt2 | ||||
cadete $alt2 | cadete $alt2 | ||||
cãibra k'&~IbR& | |||||
caibro k'aIbRU | |||||
caixeta $alt2 | |||||
camelha $alt | camelha $alt | ||||
camelo $alt2 | camelo $alt2 | ||||
caminhonete $alt | |||||
camiseta $alt2 | camiseta $alt2 | ||||
canaleta $alt2 | |||||
canhoto $alt2 | |||||
cantora $alt2 | cantora $alt2 | ||||
capacete $alt2 | capacete $alt2 | ||||
caractere $alt | caractere $alt | ||||
carbureto $alt2 | carbureto $alt2 | ||||
careta $alt2 | careta $alt2 | ||||
carrapeta $alt2 | |||||
carreta $alt2 | carreta $alt2 | ||||
carroça $alt | carroça $alt | ||||
casebre $alt | casebre $alt | ||||
cateto $alt2 | cateto $alt2 | ||||
catorze $alt2 | catorze $alt2 | ||||
cebola $alt2 | cebola $alt2 | ||||
cedro $alt | |||||
cefaleia $alt | cefaleia $alt | ||||
cerebelo $alt2 | |||||
centopeia $alt | centopeia $alt | ||||
cerca $alt | cerca $alt | ||||
cerca $alt2 $noun | cerca $alt2 $noun | ||||
cerco $alt $verb | cerco $alt $verb | ||||
chamego $alt2 | |||||
cerda $alt | |||||
cetro $alt | |||||
chamego $alt2 $verb | |||||
chaveta $alt2 | |||||
chefe $alt | chefe $alt | ||||
checam $alt | checam $alt | ||||
choro $alt2 $noun | choro $alt2 $noun | ||||
chupeta $alt2 | chupeta $alt2 | ||||
clamores $alt2 | clamores $alt2 | ||||
clero $alt | clero $alt | ||||
cloreto $alt2 | |||||
coche $alt2 | |||||
coco $alt2 | coco $alt2 | ||||
cofre $alt | cofre $alt | ||||
coice $alt2 | coice $alt2 | ||||
colabore $alt | |||||
colete $alt2 | colete $alt2 | ||||
colchete $alt2 | colchete $alt2 | ||||
colher $alt $noun | colher $alt $noun | ||||
conforto $alt $verb | conforto $alt $verb | ||||
console $alt2 $noun | console $alt2 $noun | ||||
consolo $alt2 $noun | consolo $alt2 $noun | ||||
constroem $alt | |||||
controle $alt2 $noun | controle $alt2 $noun | ||||
controles $alt2 | controles $alt2 | ||||
controles $alt $verb | controles $alt $verb | ||||
coreto $alt2 | coreto $alt2 | ||||
corneta $alt2 | corneta $alt2 | ||||
cornos $alt | cornos $alt | ||||
coro $alt2 | |||||
coro $alt $verb | |||||
corpos $alt | corpos $alt | ||||
corto $alt | corto $alt | ||||
corveta $alt2 | corveta $alt2 | ||||
corvos $alt | corvos $alt | ||||
costeleta $alt2 | |||||
coto $alt2 | coto $alt2 | ||||
cotovelo $alt2 | cotovelo $alt2 | ||||
cratera $alt | cratera $alt | ||||
crede $alt2 | crede $alt2 | ||||
credo $alt | |||||
crepe $alt | crepe $alt | ||||
decore $alt | decore $alt | ||||
decoro $alt2 $noun | |||||
degelo $alt2 | degelo $alt2 | ||||
desapego $alt2 $noun | desapego $alt2 $noun | ||||
descordo $alt | descordo $alt | ||||
desemprego $alt2 | desemprego $alt2 | ||||
desemprego $alt $verb | desemprego $alt $verb | ||||
desespero $alt2 $noun | |||||
desespero $alt2 | |||||
desespero $alt $verb | |||||
desfecho $alt2 | desfecho $alt2 | ||||
desmantelo $alt2 $noun | desmantelo $alt2 $noun | ||||
despojo $alt2 $noun | |||||
despojos $alt | |||||
desporto $alt2 | desporto $alt2 | ||||
desportos $alt | desportos $alt | ||||
desprezo $alt2 $noun | desprezo $alt2 $noun | ||||
diarreia $alt | diarreia $alt | ||||
diego $alt2 | diego $alt2 | ||||
discordo $alt | discordo $alt | ||||
dobro $alt2 $noun | |||||
dissabores $alt2 | |||||
dispneia dZIspyn'EI& | |||||
dobro $alt2 | |||||
dobro $alt $verb | |||||
doce $alt2 | doce $alt2 | ||||
doutora $alt2 | doutora $alt2 | ||||
droga $alt | |||||
doze $alt2 | |||||
dueto $alt2 | dueto $alt2 | ||||
elixir eliSir | elixir eliSir | ||||
emprego $alt2 $noun | emprego $alt2 $noun | ||||
enredo $alt $verb | enredo $alt $verb | ||||
enrosco $alt $verb | enrosco $alt $verb | ||||
enterro $alt2 $noun | enterro $alt2 $noun | ||||
enumerem $alt | |||||
entorto $alt | |||||
entroso $alt | |||||
envelope $alt | envelope $alt | ||||
envolto $alt2 | |||||
enxaqueca $alt2 | enxaqueca $alt2 | ||||
enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
epopeia $alt | epopeia $alt | ||||
erro $alt $verb | erro $alt $verb | ||||
esboço $alt $verb | esboço $alt $verb | ||||
escopeta $alt2 | escopeta $alt2 | ||||
escova $alt2 $noun | |||||
escovas $alt2 | |||||
escore $alt | |||||
escova $alt2 | |||||
escova $alt $verb | |||||
escovo $alt | escovo $alt | ||||
escroto $alt2 | |||||
esforço $alt $verb | esforço $alt $verb | ||||
esforços $alt | esforços $alt | ||||
esgoto $alt2 | esgoto $alt2 | ||||
esposa $alt2 | esposa $alt2 | ||||
esqueleto $alt2 | esqueleto $alt2 | ||||
estilete $alt2 | estilete $alt2 | ||||
estrela $alt2 | |||||
estrofe $alt | |||||
estorno $alt $verb | estorno $alt $verb | ||||
estorvo $alt $verb | estorvo $alt $verb | ||||
estrela $alt2 | |||||
estrofe $alt | |||||
estrogonofe $alt | |||||
eta $alt2 | |||||
etiqueta $alt2 | etiqueta $alt2 | ||||
europa $alt | europa $alt | ||||
europeia $alt | europeia $alt | ||||
exagero $alt $verb | exagero $alt $verb | ||||
explore $alt | explore $alt | ||||
faceta $alt2 | faceta $alt2 | ||||
fantoche $alt | |||||
falangeta $alt2 | |||||
farofa $alt | farofa $alt | ||||
farolete $alt2 | |||||
farolete $alt2 | |||||
febre $alt | febre $alt | ||||
fera $alt | fera $alt | ||||
feitora $alt2 | feitora $alt2 | ||||
ferozes $alt | |||||
fezes $alt | fezes $alt | ||||
filete $alt2 | filete $alt2 | ||||
?1 fixe fiSy | ?1 fixe fiSy | ||||
flerte $alt2 $noun | |||||
foda $alt2 $verb | foda $alt2 $verb | ||||
fodo $alt2 | |||||
fogos $alt | fogos $alt | ||||
foguete $alt2 | foguete $alt2 | ||||
foice $alt2 | foice $alt2 | ||||
fora $alt | fora $alt | ||||
fora $alt2 $verb | fora $alt2 $verb | ||||
forca $alt2 | forca $alt2 | ||||
força $alt2 $noun | |||||
forças $alt2 | |||||
força $alt2 | |||||
força $alt $verb | |||||
forço $alt | forço $alt | ||||
formos $alt2 | formos $alt2 | ||||
forro $alt $verb | forro $alt $verb | ||||
frevo $alt2 | frevo $alt2 | ||||
fulgores $alt2 | fulgores $alt2 | ||||
galera $alt | galera $alt | ||||
galeto $alt2 | |||||
galhofa $alt | |||||
galileia $alt | galileia $alt | ||||
gameta $alt2 | |||||
garçonete $alt2 | |||||
gangorra $alt2 | |||||
geleia $alt | geleia $alt | ||||
gelo $alt2 | gelo $alt2 | ||||
gelo $alt $verb | gelo $alt $verb | ||||
genebra $alt | genebra $alt | ||||
gesso $alt2 | gesso $alt2 | ||||
golpe $alt | |||||
gloso $alt | |||||
gonorreia $alt | gonorreia $alt | ||||
gol gow | |||||
golpe $alt | |||||
gorda $alt2 | gorda $alt2 | ||||
gorjeta $alt2 | |||||
gosto $alt $verb | gosto $alt $verb | ||||
gota $alt2 | gota $alt2 | ||||
governo $alt2 $noun | |||||
governo $alt2 | |||||
governo $alt $verb | |||||
gozo $alt2 $noun | gozo $alt2 $noun | ||||
graveto $alt2 | graveto $alt2 | ||||
grelha $alt | grelha $alt | ||||
groselha $alt | groselha $alt | ||||
grosso $alt2 | grosso $alt2 | ||||
grozo $alt $verb | |||||
groso $alt | |||||
gueto $alt2 | |||||
hemorroida $alt | hemorroida $alt | ||||
hoje $alt2 | hoje $alt2 | ||||
horrores $alt2 | horrores $alt2 | ||||
humores $alt2 | |||||
ideia $alt | ideia $alt | ||||
imberbe $alt | |||||
interesse $alt2 | interesse $alt2 | ||||
interesse $alt $verb | interesse $alt $verb | ||||
jogo $alt2 $noun | |||||
iodo $alt2 | |||||
ioga $alt | |||||
jereba $alt | |||||
jogo $alt2 | |||||
jogo $alt $verb | |||||
jogos $alt | |||||
joguete $alt2 | joguete $alt2 | ||||
lagosta $alt2 | lagosta $alt2 | ||||
lambreta $alt2 | lambreta $alt2 | ||||
lanchonete $alt | |||||
lebre $alt | lebre $alt | ||||
leitora $alt2 | |||||
lembrete $alt2 | lembrete $alt2 | ||||
lepra $alt | lepra $alt | ||||
leste $alt2 $verb | leste $alt2 $verb | ||||
?2 lhe l^y | |||||
lingueta $alt2 | lingueta $alt2 | ||||
lisboeta $alt2 | |||||
lodo $alt2 | |||||
logro $alt | |||||
lopes $alt | lopes $alt | ||||
macete $alt2 | macete $alt2 | ||||
maior $alt | maior $alt | ||||
maleta $alt2 | maleta $alt2 | ||||
marionete $alt | |||||
maniçoba $alt | |||||
marieta $alt2 | |||||
marreta $alt2 | marreta $alt2 | ||||
megera $alt | megera $alt | ||||
melhor $alt | melhor $alt | ||||
meta $alt $noun | meta $alt $noun | ||||
meteoro $alt | meteoro $alt | ||||
metro $alt | metro $alt | ||||
mexa m'eS& | |||||
mexi meS'i | |||||
mexo m'eSU | |||||
minueto $alt2 | minueto $alt2 | ||||
miolo $alt2 | miolo $alt2 | ||||
miolos $alt | miolos $alt | ||||
modelo $alt2 | modelo $alt2 | ||||
modelo $alt $verb | modelo $alt $verb | ||||
moeda $alt | moeda $alt | ||||
moem $alt | |||||
moem $alt | |||||
mofo $alt $verb | mofo $alt $verb | ||||
molho $alt2 $noun | molho $alt2 $noun | ||||
monera $alt | monera $alt | ||||
mortos $alt | mortos $alt | ||||
motora $alt2 | motora $alt2 | ||||
mui mwi | mui mwi | ||||
muito mw'iNtU // -s is included as a suffix | |||||
muita mw'iNt& | |||||
mulher $alt | |||||
mulheres $alt | |||||
muleta $alt2 | |||||
mureta $alt2 | mureta $alt2 | ||||
mutreta $alt2 | mutreta $alt2 | ||||
namoro $alt2 $noun | namoro $alt2 $noun | ||||
nojo $alt2 | nojo $alt2 | ||||
novelo $alt2 | novelo $alt2 | ||||
novos $alt | novos $alt | ||||
obstetra $alt | |||||
odisseia $alt | odisseia $alt | ||||
onu $1 | onu $1 | ||||
olho $alt2 $noun | |||||
olhos $alt | |||||
olho $alt2 $noun | |||||
olhos $alt | |||||
onomatopeia $alt | onomatopeia $alt | ||||
opereta $alt2 | opereta $alt2 | ||||
ordens $alt | ordens $alt | ||||
ovos $alt | ovos $alt | ||||
pachorra $alt2 | pachorra $alt2 | ||||
paexa paeSa | paexa paeSa | ||||
paella pa'el^& | |||||
palacete $alt2 | palacete $alt2 | ||||
paleta $alt2 | |||||
palheta $alt2 | palheta $alt2 | ||||
panfleto $alt2 | panfleto $alt2 | ||||
pangeia $alt | pangeia $alt | ||||
pantera $alt | pantera $alt | ||||
papoco $alt2 $noun | |||||
parede $alt2 | parede $alt2 | ||||
pastora $alt2 | pastora $alt2 | ||||
patinete $alt | |||||
peba $alt | |||||
pedra $alt | pedra $alt | ||||
pela $alt $verb | pela $alt $verb | ||||
pelo $alt2 | pelo $alt2 | ||||
pelo $alt $verb | pelo $alt $verb | ||||
pereba $alt | |||||
peroba $alt | |||||
peseta $alt2 | |||||
peso $alt $verb | peso $alt $verb | ||||
piloto $alt2 $noun | piloto $alt2 $noun | ||||
pintora $alt2 | pintora $alt2 | ||||
pior $alt | pior $alt | ||||
pipoco $alt2 $noun | |||||
pirueta $alt2 | pirueta $alt2 | ||||
plaqueta $alt2 | plaqueta $alt2 | ||||
plateia $alt | plateia $alt | ||||
plebeia $alt | plebeia $alt | ||||
polca $alt | polca $alt | ||||
pompeia $alt | |||||
porcos $alt | porcos $alt | ||||
porque $alt2 | |||||
porra $alt2 | porra $alt2 | ||||
porreta $alt2 | |||||
porrete $alt2 | porrete $alt2 | ||||
porto $alt2 | porto $alt2 | ||||
portos $alt | portos $alt | ||||
povos $alt | povos $alt | ||||
poxa p'oS& | poxa p'oS& | ||||
primavera $alt | primavera $alt | ||||
primores $alt2 | |||||
proso $alt | |||||
prosopopeia $alt | prosopopeia $alt | ||||
proveta $alt2 | |||||
quarteto $alt2 | quarteto $alt2 | ||||
queda $alt | queda $alt | ||||
quede $alt2 | quede $alt2 | ||||
quitinete $alt | |||||
quinteto $alt2 | quinteto $alt2 | ||||
ramalhete $alt2 | |||||
raposa $alt2 | raposa $alt2 | ||||
recomeço $alt $verb | recomeço $alt $verb | ||||
reconstroem $alt | |||||
recordo $alt | recordo $alt | ||||
recorto $alt | recorto $alt | ||||
rede $alt2 | rede $alt2 | ||||
reforço $alt $verb | reforço $alt $verb | ||||
reforços $alt | reforços $alt | ||||
refresco $alt $verb | refresco $alt $verb | ||||
rego $alt2 $noun | |||||
reitora $alt2 | reitora $alt2 | ||||
rejo $alt | |||||
relevo $alt2 $noun | relevo $alt2 $noun | ||||
remoem $alt | |||||
remorso $alt | remorso $alt | ||||
renovo $alt $verb | renovo $alt $verb | ||||
retorno $alt $verb | retorno $alt $verb | ||||
reuva x'EUv& | |||||
reuva x'EUv& | |||||
rigores $alt2 | rigores $alt2 | ||||
rixa x'iS& | |||||
rocha $alt | |||||
risoto $alt2 | |||||
rock $alt | rock $alt | ||||
roem $alt | |||||
roem $alt | |||||
rola $alt2 $noun | rola $alt2 $noun | ||||
roleta $alt2 | |||||
rolete $alt2 | |||||
rolo $alt2 $noun | rolo $alt2 $noun | ||||
rota $alt2 | rota $alt2 | ||||
rota $alt $noun | rota $alt $noun | ||||
rubores $alt2 | |||||
rumores $alt2 | rumores $alt2 | ||||
sabonete $alt2 | |||||
sabores $alt2 | |||||
saibro s'aIbRU | |||||
saleta $alt2 | saleta $alt2 | ||||
sarjeta $alt2 | sarjeta $alt2 | ||||
seborreia $alt | seborreia $alt | ||||
suborno $alt $verb | suborno $alt $verb | ||||
sufoco $alt2 $noun | sufoco $alt2 $noun | ||||
sufocos $alt2 | sufocos $alt2 | ||||
sulfeto $alt2 | |||||
sulfureto $alt2 | |||||
super s'Uper | |||||
suporto $alt | suporto $alt | ||||
suor swOr | suor swOr | ||||
sutiã sutSi'&~N | |||||
tapete $alt2 | tapete $alt2 | ||||
temores $alt2 | temores $alt2 | ||||
tempero $alt2 $noun | tempero $alt2 $noun | ||||
tenores $alt2 | |||||
tenores $alt2 | |||||
terrores $alt2 | terrores $alt2 | ||||
teta $alt2 | teta $alt2 | ||||
tetra $alt | |||||
tocha $alt | |||||
toga $alt | toga $alt | ||||
topo $alt $verb | |||||
topo $alt2 $noun | |||||
torno $alt $verb | torno $alt $verb | ||||
tornozelo $alt2 | tornozelo $alt2 | ||||
torre $alt2 $noun | torre $alt2 $noun | ||||
torres $alt2 | torres $alt2 | ||||
torro $alt | torro $alt | ||||
tortos $alt | tortos $alt | ||||
toso $alt | |||||
transtorno $alt $verb | |||||
traqueia $alt | traqueia $alt | ||||
travesso $alt2 | travesso $alt2 | ||||
tremores $alt2 | tremores $alt2 | ||||
treta $alt2 | |||||
trevo $alt2 | trevo $alt2 | ||||
troco $alt2 $noun | troco $alt2 $noun | ||||
tropa $alt | tropa $alt | ||||
tumores $alt2 | tumores $alt2 | ||||
valeta $alt2 | valeta $alt2 | ||||
vanessa $alt2 | vanessa $alt2 | ||||
velozes $alt | |||||
vareta $alt2 | |||||
vera $alt | |||||
verbete $alt2 | verbete $alt2 | ||||
violeta $alt2 | violeta $alt2 | ||||
violoncelo $alt | violoncelo $alt | ||||
voga $alt | voga $alt | ||||
vozes $alt | |||||
xarope $alt | xarope $alt | ||||
xereta $alt2 | |||||
zelo $alt2 $noun | zelo $alt2 $noun | ||||
zorra $alt2 | zorra $alt2 | ||||
// foreign words | // foreign words | ||||
?1 alt 'alt | ?1 alt 'alt | ||||
?2 agosto &g'ostU | |||||
?2 agosto ag'ostU | |||||
?1 back b'Ek | ?1 back b'Ek | ||||
?2 backup bEk'&p | ?2 backup bEk'&p | ||||
?2 backups bEk'&ps | ?2 backups bEk'&ps | ||||
beatle b'itow | |||||
beatles b'itows | |||||
blind bl'aind | blind bl'aind | ||||
book buk | book buk | ||||
?1 braille b:r'aily | ?1 braille b:r'aily | ||||
?1 dj d,i:dZ'eI | ?1 dj d,i:dZ'eI | ||||
?1 down d'a,wn | ?1 down d'a,wn | ||||
?1 download d'a,wnl'oud | ?1 download d'a,wnl'oud | ||||
?2 download daUNl'owd | |||||
?2 download daUNl'owd | |||||
?2 downloads daUNl'owds | |||||
?3 download dau~Nl'owd | ?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 | ?1 end 'end | ||||
?2 esc 'Esk | ?2 esc 'Esk | ||||
?3 esc 'EskI | ?3 esc 'EskI | ||||
laptop lEptOp | laptop lEptOp | ||||
?1 line l'ain | ?1 line l'ain | ||||
layout l'eI,aUt | layout l'eI,aUt | ||||
?2 logo l'OgU | |||||
?2 login logiN | |||||
?1 lock l'Ok | ?1 lock l'Ok | ||||
mail m'eIl | mail m'eIl | ||||
mails m'eIls | mails m'eIls | ||||
?1 readme r'i:dmi: | ?1 readme r'i:dmi: | ||||
?1 sapi s,ap'i | ?1 sapi s,ap'i | ||||
?1 scanner sk'En&r | ?1 scanner sk'En&r | ||||
sky sk'ay | |||||
shake S'eIk | |||||
?1 shift S'ift | ?1 shift S'ift | ||||
?1 scroll sk:r'ol | ?1 scroll sk:r'ol | ||||
?1 site s'aIt | ?1 site s'aIt | ||||
?2 site s'aItSi | ?2 site s'aItSi | ||||
?2 shampoo S&mpu | |||||
?1 software s'Oft,w'Er- | ?1 software s'Oft,w'Er- | ||||
símbolo s'imbolU | símbolo s'imbolU | ||||
?4 símbolo s'iNbolU | ?4 símbolo s'iNbolU | ||||
?2 software s'Oftwe@- | ?2 software s'Oftwe@- | ||||
?1 space sp'eIsy | ?1 space sp'eIsy | ||||
?2 space sp'eIs | |||||
?1 sporting sp'Ort,ing | ?1 sporting sp'Ort,ing | ||||
tab t'aby | tab t'aby | ||||
tablet t'ablet | tablet t'ablet | ||||
?1 telemóvel t,El,Em'OvEl | ?1 telemóvel t,El,Em'OvEl | ||||
?1 telemóveis t,El,Em'OveIs# | ?1 telemóveis t,El,Em'OveIs# | ||||
?1 up &p | ?1 up &p | ||||
?1 upload &pl'oud | |||||
update &pd'eIt | |||||
upgrade &pgR'eId | |||||
upload &pl'oud | |||||
?2 web w'Eb | ?2 web w'Eb | ||||
?1 yahoo 'i,ah'u | ?1 yahoo 'i,ah'u | ||||
?2 yahoo iah'u | ?2 yahoo iah'u | ||||
// common person names | // common person names | ||||
alan 'al@n | |||||
alan 'al@N | |||||
louis _^_FR | louis _^_FR | ||||
// foreign product names | // foreign product names | ||||
?1 access 'aks,Es | ?1 access 'aks,Es | ||||
?1 adobe &d'Oby | ?1 adobe &d'Oby | ||||
android &NdR'Oid | |||||
apple 'Epow | apple 'Epow | ||||
chrome kR'owmi | chrome kR'owmi | ||||
debian d'Ebj&~N | debian d'Ebj&~N | ||||
?1 express ,Ekspr'Es | ?1 express ,Ekspr'Es | ||||
espeak isp'i:k | espeak isp'i:k | ||||
?1 espeakedit isp'i:kEd,it | ?1 espeakedit isp'i:kEd,it | ||||
facebook feisybuk | |||||
facebook feIsybuk | |||||
?1 fedora _^_EN | ?1 fedora _^_EN | ||||
firefox f'ai@fOks | firefox f'ai@fOks | ||||
?1 front fr'ont | ?1 front fr'ont | ||||
?1 jaws dZ'au:z | ?1 jaws dZ'au:z | ||||
?1 linux l,in'uks | ?1 linux l,in'uks | ||||
?2 linux l'inUks | ?2 linux l'inUks | ||||
?1 live l'aiv | |||||
live l'aiv | |||||
?1 maker m'eIk&r- | ?1 maker m'eIk&r- | ||||
mac mEk | |||||
?1 media m'Ed,i& | ?1 media m'Ed,i& | ||||
?1 messenger m'Es&ndZ&r- | ?1 messenger m'Es&ndZ&r- | ||||
?1 microsoft m,ik:r'os,Oft | ?1 microsoft m,ik:r'os,Oft | ||||
?2 microsoft m'aIkRows'Oft | ?2 microsoft m'aIkRows'Oft | ||||
?1 movie m'uvi | ?1 movie m'uvi | ||||
?1 nero n'Eru | ?1 nero n'Eru | ||||
/1 office 'Of,is | |||||
?2 netbook nEtbUk | |||||
?2 netbooks nEtbUks | |||||
?2 notebook nowtbUk | |||||
?2 notebooks nowtbUks | |||||
?1 office 'Of,is | |||||
?2 office 'Ofsy | ?2 office 'Ofsy | ||||
openoffice 'opeIN|'Ofis | openoffice 'opeIN|'Ofis | ||||
?1 outlook 'autl'uk | ?1 outlook 'autl'uk | ||||
?2 window w'iNdow | ?2 window w'iNdow | ||||
// historical/famous person names | |||||
// historical/famous person s | |||||
babbage b'abidZ | babbage b'abidZ | ||||
bernhard bern'ard | bernhard bern'ard | ||||
darwin d'Arwin | darwin d'Arwin | ||||
dijkstra d'ijkstrA: | dijkstra d'ijkstrA: | ||||
einstein _!'aInSt,aIn | einstein _!'aInSt,aIn | ||||
?2 einstein _!'aInst,aIn | |||||
feynman f'ainm@n | feynman f'ainm@n | ||||
freud fr'OId | |||||
friedrich fr'i:driS | |||||
freud fR'OId | |||||
friedrich fR'i:dRiS | |||||
gauss g'aUs | gauss g'aUs | ||||
geisel g'aIzEU | geisel g'aIzEU | ||||
gottfried g'Otfri:t | gottfried g'Otfri:t | ||||
richard x'iS&rd | richard x'iS&rd | ||||
riemann r'i:man | riemann r'i:man | ||||
rijndael x'ain;d'al | rijndael x'ain;d'al | ||||
rousseau Rus'o | |||||
?2 rousseau xus'o | |||||
schrödinger Sr'edinger | schrödinger Sr'edinger | ||||
stephen st'i:v@n | stephen st'i:v@n | ||||
steve st'i:v | steve st'i:v | ||||
// foreign common names/surnames | // foreign common names/surnames | ||||
?1 alison &l'is&N | ?1 alison &l'is&N | ||||
anderson '&ndersoN | |||||
antonio &~nt'onIU | |||||
?1 cleverson kl'Evyrs&N | ?1 cleverson kl'Evyrs&N | ||||
?2 cleverson kl'EversoN | ?2 cleverson kl'EversoN | ||||
?1 elton 'Elt&N | ?1 elton 'Elt&N | ||||
emerson 'emE*@-soN | |||||
?1 halison &l'is&N | ?1 halison &l'is&N | ||||
klein kl'aIn // Very common on southern Brazil. | klein kl'aIn // Very common on southern Brazil. | ||||
?1 kleverson kl'Evers&N | ?1 kleverson kl'Evers&N | ||||
krueger kR'iZer | krueger kR'iZer | ||||
krüger kR'iZer | krüger kR'iZer | ||||
kühl k'il | kühl k'il | ||||
?1 nelson n'Els&N | |||||
mueler m'iler | mueler m'iler | ||||
mueller m'iler | mueller m'iler | ||||
müler m'iler | müler m'iler | ||||
müller m'iler | müller m'iler | ||||
?1 nelson n'Els&N | |||||
ronchi r'OnCi: | ronchi r'OnCi: | ||||
valter v'aUter | |||||
vogel f'o:g@l | vogel f'o:g@l | ||||
volkmann f'Olkman | volkmann f'Olkman | ||||
washington w'OSinton | |||||
wellington w'Elynton | |||||
// character names | // character names | ||||
_cap vel^ke: | _cap vel^ke: | ||||
_sub d,olni:||'indeks|| | |||||
_sup h,oRni:||'indeks|| | |||||
_?? simbol | _?? simbol | ||||
_#9 t'ab | _#9 t'ab | ||||
_#32 'medzeRa | _#32 'medzeRa | ||||
* hviezda $max3 | * hviezda $max3 | ||||
+ plus $max3 | + plus $max3 | ||||
= Rovna:sa $max3 | |||||
= Rovna:||sa $max3 | |||||
@ zavina:tS | @ zavina:tS | ||||
& ampeRsand | & ampeRsand | ||||
# kRi:Zik $max3 | # kRi:Zik $max3 | ||||
_! vi:kRitSn^i:k | _! vi:kRitSn^i:k | ||||
_" u:vodzovki | |||||
_" u:vodzowki | |||||
_$ dola:R | _$ dola:R | ||||
_' apostRof | _' apostRof | ||||
_( za:tvoRka | _( za:tvoRka | ||||
_) zatvoRit; | _) zatvoRit; | ||||
_, tSiaRka | _, tSiaRka | ||||
_- poml-tSka | |||||
__ podtSiaRknutie | |||||
_- spojovn^i:k | |||||
__ podtSiaRkovn^i:k | |||||
_. bodka | _. bodka | ||||
_/ lomeno | |||||
_/ lomka | |||||
_: dvojbodka | _: dvojbodka | ||||
_; bodkotSiaRka | _; bodkotSiaRka | ||||
_< menSi: | _< menSi: | ||||
_> vetSSi: | |||||
_> v&tSSi: | |||||
_? ota:zn^ik | _? ota:zn^ik | ||||
_[ hRanata:||za:tvoRka | |||||
_\ opatSne:||lomeno | |||||
_] hRanata:||zatvoRit; | |||||
_^ stRieZka | |||||
_[ hRanata:||z'a:tvoRka | |||||
_\ opatSna:||l'omka | |||||
_] hRanata:||z'atvoRit; | |||||
_^ voka:n^ | |||||
_` aktsent | _` aktsent | ||||
_{ zloZena:||za:tvoRka | |||||
_| zvisla:||tSiaRa | |||||
_} zloZena:||zatvoRit; | |||||
_{ zloZena:||z'a:tvoRka | |||||
_| zvisla:||tS'iaRa | |||||
_} zloZena:||z'atvoRit; | |||||
_~ vl-novka | _~ 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 | ‰ pRomile | ||||
€ euRo | € euRo | ||||
§ paRagRaf | § paRagRaf | ||||
÷ d;eleno | ÷ d;eleno | ||||
× kRa:t | × kRa:t | ||||
° stupn^ou | ° stupn^ou | ||||
¢ tsentou | |||||
£ libjeR | |||||
¤ znatSkameni | |||||
¢ tsent | |||||
£ libRa | |||||
¤ mena | |||||
© kopiRajt | |||||
® Registrovane: | |||||
¥ jen | |||||
− mi:nus | − mi:nus | ||||
± plus'mi:nus | |||||
µ mu: | |||||
¼ Stvr-tina | |||||
± plus||m'i:nus | |||||
µ mi: | |||||
¼ Stvr-t;ina | |||||
½ polovitsa | ½ 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 | // Numbers |
//_lig | //_lig | ||||
_acu vURg'UimI | _acu vURg'UimI | ||||
_ac2 tS'IftvURg'UimI | _ac2 tS'IftvURg'UimI | ||||
_brv k@s'altmaimI | |||||
_brv k@s'aLtmaimI | |||||
_ced h'aRf | _ced h'aRf | ||||
_cir Sapk'a | _cir Sapk'a | ||||
_dia Umla'Ut | |||||
_dia UmLa'Ut | |||||
_dot YstnOkt'a | _dot YstnOkt'a | ||||
_grv 'aksanimI | _grv 'aksanimI | ||||
_hac t'ERsSapk'a | _hac t'ERsSapk'a | ||||
_mcn uz'atmaimI | _mcn uz'atmaimI | ||||
_ogo ogon'Ek | _ogo ogon'Ek | ||||
_rng halk'a | |||||
_rng haLk'a | |||||
//_stk | //_stk | ||||
_tld tIld'E | _tld tIld'E | ||||
// symbols | // symbols | ||||
_. nOkt'a | _. nOkt'a | ||||
_, vIRJ'Yl | _, vIRJ'Yl | ||||
_; nOktal'@vIRJ'Yl | |||||
_; nOktaL'@vIRJ'Yl | |||||
_: ik'InOkt'a | _: ik'InOkt'a | ||||
_… 'YtSnOkt'a | _… 'YtSnOkt'a | ||||
_? soR'UiSa*et,I | _? soR'UiSa*et,I | ||||
_^ IndZ'EltmEiSa*et'I | _^ IndZ'EltmEiSa*et'I | ||||
& _!v'E | & _!v'E | ||||
_& v'EiSa*et'I | _& v'EiSa*et'I | ||||
_@ kUjRUkl'U'a | |||||
_@ kUjRUkL'U'a | |||||
_\ t'ERs||ej,IktSIzg'I | _\ t'ERs||ej,IktSIzg'I | ||||
_( atSpa*ant'Ez | _( atSpa*ant'Ez | ||||
_) kapapa*ant'Ez | _) kapapa*ant'Ez | ||||
§ tSEnJ'El | § tSEnJ'El | ||||
° de*edZ'E | ° de*edZ'E | ||||
_# dij'Ez | _# dij'Ez | ||||
_~ jaklaS'@k | |||||
__ ,alttSIzg'I | |||||
* j'@ld@z $max3 | |||||
_~ jakLaS'@k | |||||
__ ,aLttSIzg'I | |||||
* j'@Ld@z $max3 | |||||
= ESIt $max3 | = ESIt $max3 | ||||
% jYzdE $max3 | % jYzdE $max3 | ||||
+ aRt@ $max3 | + aRt@ $max3 | ||||
_3 'ytS | _3 'ytS | ||||
_4 d'WRt | _4 d'WRt | ||||
_5 b'ES | _5 b'ES | ||||
_6 alt'@ | |||||
_6 aLt'@ | |||||
_7 jed'i | _7 jed'i | ||||
_8 sec'Iz | _8 sec'Iz | ||||
_9 d'okuz | _9 d'okuz | ||||
_3X ot'uz | _3X ot'uz | ||||
_4X k'@Rk | _4X k'@Rk | ||||
_5X ell'i | _5X ell'i | ||||
_6X altm'@S | |||||
_6X aLtm'@S | |||||
_7X jetm'iS | _7X jetm'iS | ||||
_8X seks'En | _8X seks'En | ||||
_9X doks'an | _9X doks'an | ||||
Edirne $2 | Edirne $2 | ||||
Hakkari $1 | Hakkari $1 | ||||
Hatay $1 | Hatay $1 | ||||
Iğdır $1 | |||||
İngiltere $3 | |||||
İskenderun $2 | |||||
ığdır $1 | |||||
ingiltere $3 | |||||
iskenderun $2 | |||||
Isparta $2 | Isparta $2 | ||||
İstanbul $2 | |||||
İsveç $1 | |||||
İzmir $1 | |||||
istanbul $2 | |||||
isveç $1 | |||||
izmir $1 | |||||
Kastamonu $1 | Kastamonu $1 | ||||
Kayseri $1 | Kayseri $1 | ||||
Kilis $1 | Kilis $1 |
// ?1 mbrola voices | // ?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 | .replace | ||||
` ' | ` ' | ||||
@) acak (_S4 adZak | @) acak (_S4 adZak | ||||
@) acakmış (_S7 adZakm%@S | @) acakmış (_S7 adZakm%@S | ||||
@) ayım (_S4 aj@m | @) ayım (_S4 aj@m | ||||
@) alım (_S4 al@m | |||||
@) alım (_S4 aL@m | |||||
@) asın (_S4 as@n | @) asın (_S4 as@n | ||||
@) avru (pa avr'u | @) avru (pa avr'u | ||||
.group c | .group c | ||||
c dZ | c dZ | ||||
ce (_S2 dZ%E | |||||
.group ç | .group ç | ||||
ç tS | ç tS | ||||
çe (_S2 tS%E | |||||
.group d | .group d | ||||
d d | d d | ||||
dın (_S3 d@n | dın (_S3 d@n | ||||
dınız (_S5 d@n@z | dınız (_S5 d@n@z | ||||
dı (_S2 d@ | dı (_S2 d@ | ||||
dılar (_S5 d@laR | |||||
dılar (_S5 d@LaR | |||||
dum (_S3 dum | dum (_S3 dum | ||||
duk (_S3 duk | duk (_S3 duk | ||||
dun (_S3 dun | dun (_S3 dun | ||||
dunuz (_S5 dunuz | dunuz (_S5 dunuz | ||||
du (_S2 du | du (_S2 du | ||||
dular (_S5 dular | |||||
dular (_S5 duLar | |||||
düm (_S3 dym | düm (_S3 dym | ||||
dük (_S3 dyk | dük (_S3 dyk | ||||
dün (_S3 dyn | dün (_S3 dyn | ||||
.group g | .group g | ||||
g g | g g | ||||
g (i J | |||||
g (e J | |||||
g (ü J | |||||
g (ö J | |||||
g (L03 J | |||||
L03) g (K J | |||||
.group ğ | .group ğ | ||||
ğ Q | ğ Q | ||||
A) ğ :|| | |||||
?1 A) ğ G // mbrola | |||||
A) ğ : | |||||
?1 A) ğ (+ G // mbrola | |||||
a) ğa : | |||||
o) ğo : | |||||
u) ğu : | |||||
ö) ğö : | |||||
ü) ğü : | |||||
i) ğ j | i) ğ j | ||||
e) ğ j | e) ğ j | ||||
.group h | .group h | ||||
h h | h h | ||||
@) ıyor (_S4 @j%oR | @) ıyor (_S4 @j%oR | ||||
@) ın (_S2 @n | @) ın (_S2 @n | ||||
.group î | |||||
î @ | |||||
.group j | .group j | ||||
j Z | j Z | ||||
.group k | .group k | ||||
k k | k k | ||||
k (i c | |||||
k (e c | |||||
k (ü c | |||||
k (ö c | |||||
k (L03 c | |||||
L03) k (K c | |||||
ken (_S3 %cen | ken (_S3 %cen | ||||
.group l | .group l | ||||
l l | l l | ||||
l (L02 L | |||||
L02) l (K L | |||||
la (_S2 %la | |||||
la (_S2 %La | |||||
le (_S2 %le | le (_S2 %le | ||||
lar (_S3 laR | |||||
lar (_S3 LaR | |||||
ler (_S3 leR | ler (_S3 leR | ||||
li (_S2 li | li (_S2 li | ||||
lı (_S2 l@ | |||||
lu (_S2 lu | |||||
lı (_S2 L@ | |||||
lu (_S2 Lu | |||||
lü (_S2 ly | lü (_S2 ly | ||||
lik (_S3 lik | lik (_S3 lik | ||||
lık (_S3 l@k | |||||
luk (_S3 luk | |||||
lık (_S3 L@k | |||||
luk (_S3 Luk | |||||
lük (_S3 lyk | lük (_S3 lyk | ||||
.group r | .group r | ||||
r R | r R | ||||
A) r (A * | A) r (A * | ||||
ğ) r (A * | |||||
ra (_S2 %Ra | ra (_S2 %Ra | ||||
re (_S2 %Re | re (_S2 %Re | ||||
yunuz (_S5 %junuz | yunuz (_S5 %junuz | ||||
yünüz (_S5 %jynyz | yünüz (_S5 %jynyz | ||||
yla (_S3 %jla | |||||
yla (_S3 %jLa | |||||
yle (_S3 %jle | yle (_S3 %jle | ||||
yacak (_S5 jadZak | yacak (_S5 jadZak | ||||
yecekmiş (_S8 jedZekm%iS | yecekmiş (_S8 jedZekm%iS | ||||
yayım (_S5 jaj@m | yayım (_S5 jaj@m | ||||
yalım (_S5 jal@m | |||||
yalım (_S5 jaL@m | |||||
yasın (_S5 jas@n | yasın (_S5 jas@n | ||||
yeyim (_S5 jejim | yeyim (_S5 jejim | ||||
yelim (_S5 jelim | yelim (_S5 jelim |
formant 7 100 100 100 | formant 7 100 100 100 | ||||
formant 8 100 100 100 | formant 8 100 100 100 | ||||
consonants 100 | |||||
stressAdd 10 10 0 0 0 0 -30 -30 | stressAdd 10 10 0 0 0 0 -30 -30 |
language hy 8 | language hy 8 | ||||
gender male | gender male | ||||
dictrules 1 | |||||
// change consonants for West Armenian pronunciation | // change consonants for West Armenian pronunciation | ||||
replace 00 b p# | replace 00 b p# | ||||
replace 00 d t# | replace 00 d t# | ||||
replace 00 c dZ | replace 00 c dZ | ||||
replace 00 k g | replace 00 k g | ||||
replace 00 ** R // ?? | |||||
replace 00 r R | |||||
replace 00 R2 R // ?? | |||||
name Korean | |||||
language ko | |||||
gender male | |||||
pitch 80 118 | |||||
intonation 2 | |||||
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 |
name Irish Gaeilge | |||||
name irish-gaeilge | |||||
language ga | language ga | ||||
dictrules 1 // fix for eclipsis | dictrules 1 // fix for eclipsis |
name lancashire | |||||
name english-north | |||||
language en-uk-north | language en-uk-north | ||||
language en-uk 3 | language en-uk 3 | ||||
language en 5 | language en 5 | ||||
replace 00 i@3 i@ | replace 00 i@3 i@ | ||||
replace 03 N n | replace 03 N n | ||||
//replace 03 I i | |||||
//replace 03 I2 i | |||||
replace 03 i I2 | |||||
gender male | gender male | ||||
dictrules 2 | dictrules 2 | ||||
stressLength 200 115 230 230 0 0 250 270 | |||||
name azerbaijani-test | |||||
language az | |||||
nucleus fall-rise2 78 22 34 52 | nucleus fall-rise2 78 22 34 52 | ||||
endtune | 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 | prehead 46 57 | ||||
headenv fall 16 | headenv fall 16 | ||||
head 4 75 43 -7 0 | head 4 75 43 -7 0 |
volume 17 | |||||
0 l/2 NULL 0 l | 0 l/2 NULL 0 l | ||||
0 l/ NULL 0 l | 0 l/ NULL 0 l | ||||
0 j/ NULL 0 j | 0 j/ NULL 0 j | ||||
0 ; NULL 0 NULL | 0 ; NULL 0 NULL | ||||
0 g- NULL 0 NULL | 0 g- NULL 0 NULL | ||||
0 @- NULL 0 NULL | |||||
0 @3 NULL 0 NULL | 0 @3 NULL 0 NULL | ||||
0 * NULL 0 R | 0 * NULL 0 R | ||||
0 : NULL 0 NULL | 0 : NULL 0 NULL | ||||
0 z2 NULL 0 z | 0 z2 NULL 0 z | ||||
0 z3 NULL 0 z | 0 z3 NULL 0 z | ||||
0 @- NULL 0 @ | |||||
0 a- NULL 0 a | 0 a- NULL 0 a | ||||
0 e- NULL 0 e | 0 e- NULL 0 e | ||||
0 y- NULL 0 y | 0 y- NULL 0 y |
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/ii_5) | FMT(vowel/ii_5) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 160 | |||||
length 200 | |||||
FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
endphoneme | endphoneme | ||||
phoneme & | phoneme & | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 160 | |||||
length 200 | |||||
IF thisPh(isWordEnd) THEN | |||||
FMT(vowel/&_3) | |||||
ENDIF | |||||
FMT(vowel/&) | FMT(vowel/&) | ||||
endphoneme | endphoneme | ||||
phoneme W | phoneme W | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 180 | |||||
length 200 | |||||
FMT(vowel/y#_2) | FMT(vowel/y#_2) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 160 | |||||
FMT(vowel/u_5) | |||||
length 180 | |||||
FMT(vowel/u_2) | |||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 160 | |||||
FMT(vowel/o_mid) | |||||
length 200 | |||||
FMT(vowel/o_mid2) | |||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 200 | length 200 | ||||
FMT(vowel/aa) | |||||
IF thisPh(isWordEnd) THEN | |||||
FMT(vowel/a#) | |||||
ENDIF | |||||
FMT(vowel/aa_9) | |||||
endphoneme | endphoneme | ||||
phoneme @ | phoneme @ | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
ipa ɯ | ipa ɯ | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/u#_7) | FMT(vowel/u#_7) | ||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 180 | |||||
length 190 | |||||
IF thisPh(isDiminished) THEN | IF thisPh(isDiminished) THEN | ||||
ChangePhoneme(a/) | ChangePhoneme(a/) | ||||
FMT(vowel/a#) | FMT(vowel/a#) | ||||
phoneme a/ | phoneme a/ | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 180 | |||||
length 190 | |||||
FMT(vowel/a#) | FMT(vowel/a#) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/e) | FMT(vowel/e) | ||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/ee_1) | FMT(vowel/ee_1) | ||||
endphoneme | endphoneme | ||||
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 150 | |||||
length 170 | |||||
IfNextVowelAppend(;) | IfNextVowelAppend(;) | ||||
FMT(vowel/i) | FMT(vowel/i) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/o) | FMT(vowel/o) | ||||
endphoneme | endphoneme | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/oo_4) | FMT(vowel/oo_4) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
endphoneme | endphoneme | ||||
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/uu_2) | FMT(vowel/uu_2) | ||||
endphoneme | endphoneme | ||||
phoneme y | phoneme y | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/y) | FMT(vowel/y) | ||||
endphoneme | endphoneme | ||||
phoneme Y | phoneme Y | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/y#) | FMT(vowel/y#) | ||||
endphoneme | endphoneme | ||||
ChangePhoneme(o) | ChangePhoneme(o) | ||||
ENDIF | 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 | ||||
ENDIF | ENDIF | ||||
// AC + @- OR V: Long "pile" [pi:l@-] | // AC + @- OR V: Long "pile" [pi:l@-] | ||||
// AC[i]: Long "smidig" [smi:Di] | // AC[i]: Long "smidig" [smi:Di] | ||||
// Change the length of short vowels (?+vowel) | |||||
// Change the length of SHORT vowels (?+vowel) | |||||
procedure ShortVowelLength | 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 | // Don't shorten it further if it comes after an "r" sound | ||||
// Exit the procedure | // 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 | // "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") | // Don't shorten it further if it comes after an "r" sound ("brygger") | ||||
// Exit the procedure | // Exit the procedure | ||||
RETURN | |||||
ENDIF | |||||
RETURN | |||||
ENDIF | |||||
ENDIF | |||||
// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long | // "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 | // 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 | // 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 | // 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 | 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 | 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 | // "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] | // 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] | // 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 | // "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 | // 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 | // "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 | ||||
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 | // 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]) | // "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 | endprocedure | ||||
// A bit longer than [@-] | // A bit longer than [@-] | ||||
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 140 | 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 | CALL LongVowelLength | ||||
FMT(vowel/i_4) | FMT(vowel/i_4) | ||||
endphoneme | endphoneme | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 140 | length 140 | ||||
CALL LongVowelLength | CALL LongVowelLength | ||||
CALL ShortVowelLength | |||||
// CALL ShortVowelLength | |||||
FMT(vowel/e) | FMT(vowel/e) | ||||
endphoneme | endphoneme | ||||
phoneme & | phoneme & | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
ipa æ | |||||
ipa a | |||||
length 140 | length 140 | ||||
// "same", "sale", "bade" - consonant + @-: long | // "same", "sale", "bade" - consonant + @-: long | ||||
// but NOT "hinanden" | // but NOT "hinanden" | ||||
// e.g. the last a in "staldkarl" | // e.g. the last a in "staldkarl" | ||||
// "sale" vs. "sal" | // "sale" vs. "sal" | ||||
phoneme ?& | phoneme ?& | ||||
ipa a | |||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 140 | length 140 | ||||
CALL ShortVowelLength | |||||
FMT(vowel/ee_2) | FMT(vowel/ee_2) | ||||
endphoneme | endphoneme | ||||
// "revl" vs. "tremme" | // "revl" vs. "tremme" | ||||
phoneme ?&# | phoneme ?&# | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
ipa ?a | |||||
length 140 | length 140 | ||||
CALL ShortVowelLength | CALL ShortVowelLength | ||||
FMT(vowel/&) | FMT(vowel/&) | ||||
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ | ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ | ||||
// "sove", "sover" - consonant + @ or V: long | // "sove", "sover" - consonant + @ or V: long | ||||
IF next2PhW(@-) OR next2PhW(V) THEN | IF next2PhW(@-) OR next2PhW(V) THEN | ||||
length 225 | |||||
// length 225 | |||||
ENDIF | ENDIF | ||||
// PB "gået" - ThisPh + V or @- | // PB "gået" - ThisPh + V or @- | ||||
IF nextPhW(V) OR nextPhW(@-) THEN | IF nextPhW(V) OR nextPhW(@-) THEN | ||||
length 225 | |||||
// length 225 | |||||
ENDIF | ENDIF | ||||
// "såre", "sårede" [s'O:?OD@-] | // "såre", "sårede" [s'O:?OD@-] | ||||
IF nextPhW(O) OR nextPhW(?O) THEN | IF nextPhW(O) OR nextPhW(?O) THEN | ||||
phoneme ?O | phoneme ?O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 140 | length 140 | ||||
CALL ShortVowelLength | |||||
FMT(vowel/o_5) | FMT(vowel/o_5) | ||||
endphoneme | endphoneme | ||||
phoneme ?V | phoneme ?V | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 140 | length 140 | ||||
CALL ShortVowelLength | |||||
FMT(vowel/V_4) | FMT(vowel/V_4) | ||||
endphoneme | endphoneme | ||||
FMT(vowel/oo_2) | FMT(vowel/oo_2) | ||||
endphoneme | endphoneme | ||||
// Short 0 "sukker" | |||||
// Short 0 "sukker", "provst" | |||||
phoneme ?0 | phoneme ?0 | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 140 | length 140 | ||||
ipa ɔ | ipa ɔ | ||||
CALL ShortVowelLength | |||||
FMT(vowel/oo_2) | FMT(vowel/oo_2) | ||||
endphoneme | endphoneme | ||||
phoneme y | phoneme y | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 140 | 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) | FMT(vowel/y) | ||||
endphoneme | endphoneme | ||||
phoneme W | phoneme W | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 140 | 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) | FMT(vowel/oe) | ||||
endphoneme | endphoneme | ||||
// Added for the ø in "røv", "røg", "øje" instead of [V3] | // Added for the ø in "røv", "røg", "øje" instead of [V3] | ||||
phoneme W# | phoneme W# | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 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) | FMT(vowel/V) | ||||
endphoneme | endphoneme | ||||
lengthmod 7 | lengthmod 7 | ||||
// [ll] => [-l] - avoid double l | // [ll] => [-l] - avoid double l | ||||
IF nextPhW(l) THEN | IF nextPhW(l) THEN | ||||
// ChangePhoneme(-) | |||||
// ChangePhoneme(NULL) | |||||
ENDIF | ENDIF | ||||
ChangePhoneme(l/3) | ChangePhoneme(l/3) | ||||
// CALL base/l | // CALL base/l | ||||
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN | IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN | ||||
ChangePhoneme(R) | ChangePhoneme(R) | ||||
ENDIF | ENDIF | ||||
// "generer" [Sen'e:Vr], "mysterier" - delete the r | |||||
IF prevPhW(V) AND thisPh(isWordEnd) THEN | |||||
ChangePhoneme(NULL) | |||||
ENDIF | |||||
FMT(r/a_) | FMT(r/a_) | ||||
endphoneme | endphoneme | ||||
ENDIF | ENDIF | ||||
IF nextPhW(isVowel) THEN | IF nextPhW(isVowel) THEN | ||||
NextVowelStarts | NextVowelStarts | ||||
VowelStart(j/j@) | |||||
VowelStart(j/j@,-45) // jøderne | |||||
VowelStart(j/ja) | VowelStart(j/ja) | ||||
VowelStart(j/je,-35) | VowelStart(j/je,-35) | ||||
VowelStart(j/ji) | VowelStart(j/ji) | ||||
Vowelout len=70 | Vowelout len=70 | ||||
FMT(j/j_) | FMT(j/j_) | ||||
ENDIF | ENDIF | ||||
endphoneme | |||||
endphoneme | |||||
phoneme OI | phoneme OI | ||||
vowel starttype #o endtype #i | vowel starttype #o endtype #i | ||||
length 280 | |||||
FMT(vdiph/ooi_4) | |||||
length 270 | |||||
FMT(vdiph/ooi_3) | |||||
endphoneme | endphoneme | ||||
length 130 | length 130 | ||||
ChangeIfDiminished(@-) | ChangeIfDiminished(@-) | ||||
IF nextPh(H) THEN | |||||
IF nextPh(H) OR prevPh(H) THEN | |||||
FMT(vowel/@_low) | FMT(vowel/@_low) | ||||
ENDIF | ENDIF | ||||
FMT(vowel/@_bck) | FMT(vowel/@_bck) | ||||
vowel flag1 starttype #@ endtype #@ | vowel flag1 starttype #@ endtype #@ | ||||
length 130 | length 130 | ||||
IF thisPh(isWordStart) THEN | |||||
FMT(vowel/V_3) | |||||
RETURN | |||||
ENDIF | |||||
IF thisPh(isNotStressed) THEN | IF thisPh(isNotStressed) THEN | ||||
IF prevPh(H) THEN | IF prevPh(H) THEN | ||||
ChangePhoneme(@) | ChangePhoneme(@) | ||||
ChangePhoneme(NULL) | ChangePhoneme(NULL) | ||||
ENDIF | 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 | 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 | ENDIF | ||||
ENDIF | ENDIF | ||||
ChangePhoneme(@) | ChangePhoneme(@) | ||||
ENDIF | ENDIF | ||||
IF nextPh(H) THEN | |||||
IF nextPh(H) OR prevPh(H) THEN | |||||
FMT(vowel/@_low) | FMT(vowel/@_low) | ||||
ENDIF | ENDIF | ||||
ENDIF | ENDIF | ||||
phoneme a: | phoneme a: | ||||
vowel long starttype #a endtype #a | vowel long starttype #a endtype #a | ||||
length 190 | length 190 | ||||
IF nextPhW(j) THEN | |||||
FMT(vowel/a_5) | |||||
ENDIF | |||||
FMT(vowel/aa_9) | FMT(vowel/aa_9) | ||||
endphoneme | endphoneme | ||||
phoneme E~ | phoneme E~ | ||||
vowel long starttype #e endtype #e | vowel long starttype #e endtype #e | ||||
length 230 | |||||
length 220 | |||||
FMT(vnasal/ee_n2) | FMT(vnasal/ee_n2) | ||||
endphoneme | endphoneme | ||||
phoneme a~ | phoneme a~ | ||||
vowel long starttype #a endtype #a | vowel long starttype #a endtype #a | ||||
length 250 | |||||
FMT(vnasal/aa_n) | |||||
length 220 | |||||
FMT(vnasal/&_n) | |||||
endphoneme | endphoneme | ||||
phoneme V~ | phoneme V~ | ||||
vowel long starttype #@ endtype #@ | vowel long starttype #@ endtype #@ | ||||
length 250 | |||||
length 220 | |||||
FMT(vnasal/V_n) | FMT(vnasal/V_n) | ||||
endphoneme | endphoneme | ||||
phoneme O~ | phoneme O~ | ||||
vowel long starttype #o endtype #o | vowel long starttype #o endtype #o | ||||
length 230 | |||||
length 220 | |||||
FMT(vnasal/oo_n2) | FMT(vnasal/oo_n2) | ||||
endphoneme | endphoneme | ||||
phoneme u~ | phoneme u~ | ||||
vowel long starttype #u endtype #u | vowel long starttype #u endtype #u | ||||
length 230 | |||||
length 220 | |||||
FMT(vnasal/u_n) | FMT(vnasal/u_n) | ||||
endphoneme | endphoneme | ||||
endphoneme | 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 | |||||
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 130 | length 130 | ||||
IF nextPh(isVowel) THEN | |||||
IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||||
ChangePhoneme(w) | ChangePhoneme(w) | ||||
ENDIF | ENDIF | ||||
FMT(vowel/u_6) | FMT(vowel/u_6) |
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 140 | length 140 | ||||
IF thisPh(isWordEnd) AND nextPh(isVowel) THEN | |||||
IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||||
ChangePhoneme(w) | ChangePhoneme(w) | ||||
ENDIF | ENDIF | ||||
FMT(vowel/uu_bck) | FMT(vowel/uu_bck) |
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 180 | |||||
length 200 | |||||
FMT(vowel/a_4) | FMT(vowel/a_4) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
endphoneme | endphoneme | ||||
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 170 | |||||
length 190 | |||||
IfNextVowelAppend(;) | IfNextVowelAppend(;) | ||||
FMT(vowel/i) | FMT(vowel/i) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/oo) | FMT(vowel/oo) | ||||
endphoneme | endphoneme | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/oo) | FMT(vowel/oo) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 180 | |||||
length 200 | |||||
FMT(vowel/u_bck2) | FMT(vowel/u_bck2) | ||||
endphoneme | endphoneme | ||||
voicingswitch T | voicingswitch T | ||||
CALL base/D | CALL base/D | ||||
IF nextPh(isPause2) THEN | IF nextPh(isPause2) THEN | ||||
FMT(voc/dh_) addWav(vocw/dh, 40) // weaker | |||||
FMT(voc/dh_) addWav(vocw/dh, 35) // weaker | |||||
ENDIF | ENDIF | ||||
endphoneme | endphoneme | ||||
phoneme t // dental variant of /t/ | |||||
import_phoneme base/t[ | |||||
endphoneme | |||||
phoneme s | phoneme s | ||||
vls alv frc sibilant | vls alv frc sibilant | ||||
lengthmod 3 | lengthmod 3 |
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 150 | |||||
length 180 | |||||
IF thisPh(isTranslationGiven) THEN | IF thisPh(isTranslationGiven) THEN | ||||
// don't reduce the vowel if phonemes are explicitly given | // don't reduce the vowel if phonemes are explicitly given | ||||
ELSE | ELSE | ||||
phoneme I | phoneme I | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 150 | |||||
length 180 | |||||
FMT(vowel/ii_5) | FMT(vowel/ii_5) | ||||
endphoneme | endphoneme | ||||
phoneme y | phoneme y | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 155 | |||||
length 180 | |||||
IF thisPh(isTranslationGiven) THEN | IF thisPh(isTranslationGiven) THEN | ||||
// don't reduce the vowel if phonemes are explicitly given | // don't reduce the vowel if phonemes are explicitly given | ||||
ELSE | ELSE | ||||
phoneme Y | phoneme Y | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 155 | |||||
length 180 | |||||
FMT(vowel/u#) | FMT(vowel/u#) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 180 | |||||
length 200 | |||||
IF thisPh(isTranslationGiven) THEN | IF thisPh(isTranslationGiven) THEN | ||||
// don't reduce the vowel if phonemes are explicitly given | // don't reduce the vowel if phonemes are explicitly given | ||||
ELSE | 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 | IF thisPh(isFinalVowel) THEN | ||||
ChangePhoneme(E) | ChangePhoneme(E) | ||||
ENDIF | ENDIF | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 180 | |||||
length 200 | |||||
FMT(vowel/e_mid) | FMT(vowel/e_mid) | ||||
endphoneme | endphoneme | ||||
phoneme & | |||||
vowel starttype #a endtype #a | |||||
length 200 | |||||
FMT(vowel/ee_6) | |||||
endphoneme | |||||
phoneme W | phoneme W | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 180 | |||||
length 200 | |||||
FMT(vowel/y#) | FMT(vowel/y#) | ||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/a#_4) | FMT(vowel/a#_4) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 150 | |||||
length 180 | |||||
IF thisPh(isTranslationGiven) THEN | IF thisPh(isTranslationGiven) THEN | ||||
// don't reduce the vowel if phonemes are explicitly given | // don't reduce the vowel if phonemes are explicitly given | ||||
ELSE | ELSE | ||||
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 150 | |||||
length 180 | |||||
FMT(vowel/uu_2) | FMT(vowel/uu_2) | ||||
endphoneme | endphoneme | ||||
phoneme @ | phoneme @ | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
ipa ɯ | ipa ɯ | ||||
length 150 | |||||
length 180 | |||||
FMT(vowel/u#_7) | FMT(vowel/u#_7) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 190 | |||||
length 200 | |||||
IF thisPh(isTranslationGiven) THEN | IF thisPh(isTranslationGiven) THEN | ||||
// don't reduce the vowel if phonemes are explicitly given | // don't reduce the vowel if phonemes are explicitly given | ||||
ELSE | ELSE | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 190 | |||||
length 200 | |||||
FMT(vowel/oo) | FMT(vowel/oo) | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme l | |||||
import_phoneme en/l | |||||
endphoneme | |||||
phoneme G | phoneme G | ||||
import_phoneme en/r/ | import_phoneme en/r/ | ||||
lengthmod 7 | lengthmod 7 | ||||
endphoneme | 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 |
phoneme 3 // sắc Tone(rising | phoneme 3 // sắc Tone(rising | ||||
stress | stress | ||||
Tone(25, 50, envelope/p_rise, NULL) // 25 | |||||
Tone(30, 60, envelope/p_rise, NULL) // 25 50 | |||||
endphoneme | endphoneme | ||||
phoneme 4 // hỏi Tone(curve (dipping rising) | phoneme 4 // hỏi Tone(curve (dipping rising) | ||||
stress | stress | ||||
Tone(30, 5, envelope/p_fallrise, NULL) | |||||
Tone(40, 5, envelope/p_fallrise, NULL) //30 | |||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 120 | |||||
length 140 | |||||
FMT(vowel/a_6) //a_4) | FMT(vowel/a_6) //a_4) | ||||
endphoneme | endphoneme | ||||
phoneme a: | phoneme a: | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 200 //280 | |||||
FMT(vietnam/a) //FMT(vowel/a_6) | |||||
length 240 //280 | |||||
FMT(vowel/a_8) | |||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 200 | |||||
length 240 | |||||
FMT(vowel/ee_3) | FMT(vowel/ee_3) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 200 | |||||
length 140 | |||||
FMT(vowel/e) | FMT(vowel/e) | ||||
endphoneme | endphoneme | ||||
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 190 | |||||
length 240 | |||||
IfNextVowelAppend(;) | IfNextVowelAppend(;) | ||||
IF prevPhW(w) THEN | IF prevPhW(w) THEN | ||||
VowelStart(w/wi) | VowelStart(w/wi) | ||||
ELSE | ELSE | ||||
length 200 | length 200 | ||||
ENDIF | ENDIF | ||||
FMT(vowel/aa_4) | |||||
FMT(vowel/0_2) //aa_4) | |||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
ELSE | ELSE | ||||
length 200 | length 200 | ||||
ENDIF | ENDIF | ||||
FMT(vowel/o_2) | |||||
FMT(vowel/o) // o_2) | |||||
endphoneme | endphoneme | ||||
IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound | IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound | ||||
length 120 | length 120 | ||||
ELSE | ELSE | ||||
length 200 | |||||
length 240 | |||||
ENDIF | ENDIF | ||||
FMT(vnasal/u_n) //vowel/u_7) | |||||
FMT(vowel/u_5) | |||||
endphoneme | endphoneme | ||||
phoneme y | phoneme y | ||||
IF nextPh(kh) OR nextPh(N) THEN | IF nextPh(kh) OR nextPh(N) THEN | ||||
length 120 | length 120 | ||||
ELSE | ELSE | ||||
length 200 | |||||
length 180 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/u#_5) | FMT(vowel/u#_5) | ||||
endphoneme | endphoneme | ||||
phoneme @ | phoneme @ | ||||
vowel starttype #@ endtype #a | 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 | length 120 | ||||
ELSE | ELSE | ||||
length 170 | |||||
length 200 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/V) //vowel/@_2) | FMT(vowel/V) //vowel/@_2) | ||||
endphoneme | endphoneme | ||||
phoneme @: | phoneme @: | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 280 | |||||
length 200 | |||||
FMT(vowel/@_2) | FMT(vowel/@_2) | ||||
endphoneme | endphoneme | ||||
phoneme aI | phoneme aI | ||||
vowel starttype #a endtype #i | vowel starttype #a endtype #i | ||||
length 200 //250 | |||||
FMT(vdiph/&y) | |||||
length 140 //250 | |||||
FMT(vdiph/&i_2) | |||||
endphoneme | endphoneme | ||||
phoneme eI | phoneme eI | ||||
vowel starttype #e endtype #i | vowel starttype #e endtype #i | ||||
length 200 | |||||
length 140 | |||||
FMT(vdiph/ei) | FMT(vdiph/ei) | ||||
endphoneme | endphoneme | ||||
phoneme EI | phoneme EI | ||||
vowel starttype #e endtype #i | vowel starttype #e endtype #i | ||||
length 200 | |||||
length 140 | |||||
FMT(vdiph/eei) | FMT(vdiph/eei) | ||||
endphoneme | endphoneme | ||||
phoneme OI | phoneme OI | ||||
vowel starttype #o endtype #i | vowel starttype #o endtype #i | ||||
length 200 | length 200 | ||||
FMT(vdiph/0i) | |||||
FMT(vdiph/ooi_3) | |||||
endphoneme | endphoneme | ||||
phoneme aU | phoneme aU | ||||
vowel starttype #a endtype #u | vowel starttype #a endtype #u | ||||
length 210 | |||||
length 200 | |||||
FMT(vdiph/aau_4) | FMT(vdiph/aau_4) | ||||
endphoneme | endphoneme | ||||
phoneme a:U | phoneme a:U | ||||
vowel starttype #a endtype #u | vowel starttype #a endtype #u | ||||
length 230 //270 | |||||
length 200 //270 | |||||
FMT(vdiph/au) | FMT(vdiph/au) | ||||
endphoneme | endphoneme | ||||
phoneme iU | phoneme iU | ||||
vowel starttype #i endtype #u | vowel starttype #i endtype #u | ||||
length 200 | |||||
length 140 | |||||
FMT(vdiph2/iu) | FMT(vdiph2/iu) | ||||
endphoneme | endphoneme | ||||
phoneme @U | phoneme @U | ||||
vowel starttype #@ endtype #u | vowel starttype #@ endtype #u | ||||
length 200 | |||||
length 140 | |||||
FMT(vdiph/@u_3) | FMT(vdiph/@u_3) | ||||
endphoneme | endphoneme | ||||
phoneme @:U | phoneme @:U | ||||
vowel starttype #@ endtype #u | vowel starttype #@ endtype #u | ||||
length 270 | |||||
length 140 | |||||
FMT(vdiph/@u) | FMT(vdiph/@u) | ||||
endphoneme | endphoneme | ||||
phoneme i@ | phoneme i@ | ||||
vowel starttype #i endtype #@ | vowel starttype #i endtype #@ | ||||
length 240 | |||||
length 140 | |||||
FMT(vdiph2/ii@_3) | FMT(vdiph2/ii@_3) | ||||
endphoneme | endphoneme | ||||
phoneme y@ | phoneme y@ | ||||
vowel starttype #i endtype #@ | vowel starttype #i endtype #@ | ||||
length 200 | |||||
length 140 | |||||
FMT(vdiph2/y-y#) | FMT(vdiph2/y-y#) | ||||
endphoneme | endphoneme | ||||
phoneme u@ | phoneme u@ | ||||
vowel starttype #u endtype #@ | vowel starttype #u endtype #@ | ||||
length 150 //200 | |||||
length 100 //200 | |||||
FMT(vdiph2/uu@) | FMT(vdiph2/uu@) | ||||
endphoneme | endphoneme | ||||
phoneme o# // ông | phoneme o# // ông | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 200 | |||||
length 140 | |||||
FMT(vnasal/a#u_n) | FMT(vnasal/a#u_n) | ||||
endphoneme | endphoneme | ||||
phoneme O# // ong | phoneme O# // ong | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 200 | |||||
length 140 | |||||
FMT(vnasal/&u_n) | FMT(vnasal/&u_n) | ||||
endphoneme | endphoneme | ||||
phoneme o@ | phoneme o@ | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 160 | |||||
length 140 | |||||
FMT(vdiph2/oa) | FMT(vdiph2/oa) | ||||
endphoneme | endphoneme | ||||
phoneme o& | phoneme o& | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 160 | |||||
length 140 | |||||
FMT(vietnam/oe) | FMT(vietnam/oe) | ||||
endphoneme | endphoneme | ||||
phoneme iE // iê : viết, giệc | phoneme iE // iê : viết, giệc | ||||
vowel starttype #i endtype #e | vowel starttype #i endtype #e | ||||
length 190 | |||||
length 140 | |||||
FMT(vietnam/ie_2) | FMT(vietnam/ie_2) | ||||
endphoneme | 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 | phoneme kh | ||||
vls vel frc | vls vel frc | ||||
lengthmod 3 | 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 | Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 | ||||
WAV(vietnam/_c,5) //ufric/x, 50) | WAV(vietnam/_c,5) //ufric/x, 50) | ||||
endphoneme | endphoneme | ||||
phoneme l | phoneme l | ||||
liquid | liquid | ||||
lengthmod 7 | |||||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 | |||||
//lengthmod 7 | |||||
//IF nextPh(isNotVowel) THEN | //IF nextPh(isNotVowel) THEN | ||||
// ChangePhoneme(l/2) | // ChangePhoneme(l/2) | ||||
//ENDIF | //ENDIF | ||||
//CALL vowelstart_l | //CALL vowelstart_l | ||||
FMT(l/l_vi) | FMT(l/l_vi) | ||||
vls alv stop | vls alv stop | ||||
//voicingswitch d | //voicingswitch d | ||||
lengthmod 2 | 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 | Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | ||||
WAV(vietnam/th, 50) | WAV(vietnam/th, 50) | ||||
vls pla afr sibilant | vls pla afr sibilant | ||||
//voicingswitch dZ | //voicingswitch dZ | ||||
lengthmod 2 | 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) | WAV(vietnam/tr,10) | ||||
phoneme d | phoneme d | ||||
vcd alv stop | 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) | WAV(vietnam/dd) | ||||
endphoneme | endphoneme | ||||
vls pal stop palatal | vls pal stop palatal | ||||
//voicingswitch J | //voicingswitch J | ||||
lengthmod 2 | 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) | WAV(vietnam/ch,5) | ||||
phoneme n | phoneme n | ||||
vcd alv nasal | 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 | lengthmod 4 | ||||
FMT(n/n#_) | |||||
length 75 | |||||
FMT(n/nr_) | |||||
endphoneme | endphoneme | ||||
phoneme t[ // dental variant of /t/ | phoneme t[ // dental variant of /t/ | ||||
vls dnt stop | vls dnt stop | ||||
voicingswitch d[ | voicingswitch d[ | ||||
lengthmod 2 | 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 | IF nextPh(isPause2) THEN | ||||
WAV(ustop/t_unasp2, 5) | WAV(ustop/t_unasp2, 5) |
phoneme 1 // ngang tone: level | phoneme 1 // ngang tone: level | ||||
stress | stress | ||||
Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone | |||||
Tone(40, 5, envelope/p_level, NULL) // similar Hue dialect tone | |||||
endphoneme | endphoneme | ||||
phoneme 2 // huyền tone: low falling | phoneme 2 // huyền tone: low falling | ||||
stress | 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 | endphoneme | ||||
phoneme 3 // sắc Tone(rising | phoneme 3 // sắc Tone(rising | ||||
stress | stress | ||||
Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75 | |||||
Tone(2, 10, envelope/p_fallrise, NULL) // 2 10 | |||||
endphoneme | endphoneme | ||||
phoneme 4 // hỏi Tone(curve (dipping rising) | phoneme 4 // hỏi Tone(curve (dipping rising) | ||||
stress | 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 | endphoneme | ||||
phoneme 5 // ngã tone: broken (creaking rising) | phoneme 5 // ngã tone: broken (creaking rising) | ||||
stress | 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 | endphoneme | ||||
Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 | Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 | ||||
endphoneme | 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 |
//==================================================== | |||||
// 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 |
VowelEnding(w/xw, -30) | VowelEnding(w/xw, -30) | ||||
IF prevPh(isPause) THEN | |||||
FMT(w/_w) | |||||
IF prevPhW(isNasal) THEN | |||||
FMT(w/w) | |||||
ELSE | ELSE | ||||
FMT(w/_w) | FMT(w/_w) | ||||
ENDIF | ENDIF | ||||
phoneme j | phoneme j | ||||
liquid palatal | |||||
liquid palatal starttype #i | |||||
lengthmod 7 | lengthmod 7 | ||||
IF nextPhW(isVowel) THEN | IF nextPhW(isVowel) THEN | ||||
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | ||||
IF nextPh(isPause) THEN | IF nextPh(isPause) THEN | ||||
WAV(ufric/x, 110) | |||||
WAV(ufric/x_, 60) | |||||
ENDIF | ENDIF | ||||
WAV(ufric/x_hr, 20) | WAV(ufric/x_hr, 20) | ||||
endphoneme | endphoneme | ||||
phonemetable ml hi | phonemetable ml hi | ||||
include ph_malayalam | include ph_malayalam | ||||
phonemetable te hi | |||||
include ph_telugu | |||||
phonemetable hu base | phonemetable hu base | ||||
phonemetable vi-hue vi | phonemetable vi-hue vi | ||||
include ph_vietnam_hue | include ph_vietnam_hue | ||||
phonemetable vi-sgn vi | |||||
include ph_vietnam_sgn | |||||
phonemetable zhy base | phonemetable zhy base | ||||
include ph_zh_yue | include ph_zh_yue | ||||
phonemetable fa base | phonemetable fa base | ||||
include ph_farsi | 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. | // The following lines are experimental, for future additions. | ||||
// These langauges are not in a usable state. | // These langauges are not in a usable state. | ||||
// These lines can be deleted. | // These lines can be deleted. | ||||
phonemetable 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 | //phonemetable mr hi | ||||
//include ph_marathi | //include ph_marathi | ||||
//phonemetable mn base | //phonemetable mn base | ||||
//include ph_mongolian | //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 | |||||
# Toolflags: | # 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 $@ | Linkflags = -rmf -c++ -o $@ | ||||
ObjAsmflags = -throwback -NoCache -depend !Depend | ObjAsmflags = -throwback -NoCache -depend !Depend | ||||
CMHGflags = | CMHGflags = | ||||
# User-editable dependencies: | # User-editable dependencies: | ||||
# Static 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 | @.o.assemb: @.s.assemb | ||||
objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | ||||
# Dynamic dependencies: | # 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 |
#define os_X 0x20000 | #define os_X 0x20000 | ||||
// interface to the assembler section | // interface to the assembler section | ||||
extern "C" { | |||||
//extern "C" { | |||||
extern void DMA_Handler(void); | extern void DMA_Handler(void); | ||||
extern int sound_handler(_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 sound_entry(_kernel_swi_regs *r, void *pw); | ||||
} | |||||
//} | |||||
extern int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); | extern int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); | ||||
extern void RiscosOpenSound(); | extern void RiscosOpenSound(); | ||||
char wavefile[120]; | char wavefile[120]; | ||||
char textbuffile[L_tmpnam]; | char textbuffile[L_tmpnam]; | ||||
int sample_rate_index; // current value | 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_files = 0; | ||||
int n_voice_variant_files = 0; | int n_voice_variant_files = 0; | ||||
// output sound buffer, 2 bytes per sample | // output sound buffer, 2 bytes per sample | ||||
static unsigned short SoundBuf[4096]; | |||||
static short SoundBuf[4096]; | |||||
static void *module_data; | static void *module_data; | ||||
static int callback_inhibit = 0; | static int callback_inhibit = 0; | ||||
static int more_text=0; | static int more_text=0; | ||||
"--punct=\"<characters>\"\n" | "--punct=\"<characters>\"\n" | ||||
"\t Speak the names of punctuation characters during speaking. If\n" | "\t Speak the names of punctuation characters during speaking. If\n" | ||||
"\t =<characters> is omitted, all punctuation is spoken.\n" | "\t =<characters> is omitted, all punctuation is spoken.\n" | ||||
"--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" | "-k <integer>\n" | ||||
"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | "\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | ||||
"\t higher values = a pitch increase (try -k20).\n"; | "\t higher values = a pitch increase (try -k20).\n"; | ||||
} /* end of GetFileLength */ | } /* end of GetFileLength */ | ||||
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||||
{ | |||||
} | |||||
void ReadVoiceNames2(char *directory) | void ReadVoiceNames2(char *directory) | ||||
{//================================== | {//================================== | ||||
path_len = strlen(directory); | path_len = strlen(directory); | ||||
voice_variant_names[0] = "(none)"; | |||||
n_voice_variant_files = 1; | |||||
while(regs.r[3] > 0) | while(regs.r[3] > 0) | ||||
{ | { | ||||
error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | ||||
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. | // Do nothing in the command-line version. | ||||
} // end of MarkerEvent | } // end of MarkerEvent | ||||
{ | { | ||||
int c; | int c; | ||||
int ix; | int ix; | ||||
char *vname; | |||||
static static_length=0; | static static_length=0; | ||||
static int user_token=0; /* increment for each call of translate() */ | static int user_token=0; /* increment for each call of translate() */ | ||||
_kernel_swi_regs regs; | _kernel_swi_regs regs; | ||||
option_endpause = 1; | 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]); | 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 */ | /* don't count CR as terminator if length is specified */ | ||||
if(len > 0) terminator = 0; | if(len > 0) terminator = 0; | ||||
option_waveout = 0; | option_waveout = 0; | ||||
option_multibyte = 0; // auto | option_multibyte = 0; // auto | ||||
option_capitals = 0; | 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 */ | } /* end of set_say_options */ | ||||
case 3: | case 3: | ||||
// translate into phonemes | // translate into phonemes | ||||
use_ipa = 0; | use_ipa = 0; | ||||
if((r[2] >= 1) && (use_ipa <= 3)) | |||||
if((r[2] >= 1) && (r[2] <= 5)) | |||||
use_ipa = r[2]; | use_ipa = r[2]; | ||||
TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); | TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); | ||||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | ||||
if(r[1] < N_VOICE_NAMES) | if(r[1] < N_VOICE_NAMES) | ||||
{ | { | ||||
SetVoiceByName(voice_names[r[1]]); | SetVoiceByName(voice_names[r[1]]); | ||||
current_voice_num = r[1]; | |||||
strcmp(current_voice_name, voice_names[r[1]]); | |||||
WavegenSetVoice(voice); | WavegenSetVoice(voice); | ||||
} | } | ||||
break; | break; | ||||
int value; | int value; | ||||
int value2; | int value2; | ||||
int q_length; | int q_length; | ||||
char *p; | |||||
int ix; | |||||
value = r[0]; | value = r[0]; | ||||
switch(swi_no) | switch(swi_no) | ||||
case 0: // ready ? | case 0: // ready ? | ||||
// returns the index into the source text of the currently speaking word | // returns the index into the source text of the currently speaking word | ||||
if(current_source_index > 0) | |||||
r[1] = current_source_index-1; | |||||
ix = current_source_index & 0x7ff; | |||||
if(ix > 0) | |||||
r[1] = ix-1; | |||||
else | else | ||||
r[1] = current_source_index; /* source index */ | |||||
r[1] = ix; /* source index */ | |||||
r[2] = 0; /* source tag */ | r[2] = 0; /* source tag */ | ||||
r[3] = 0; /* for future expansion */ | r[3] = 0; /* for future expansion */ | ||||
r[4] = 0; | r[4] = 0; | ||||
r[5] = 0; | r[5] = 0; | ||||
if(WcmdqUsed() < 5) | |||||
if((WcmdqUsed() < 5) && (more_text == 0)) | |||||
{ | { | ||||
r[0] = -1; /* ready, or nearly */ | r[0] = -1; /* ready, or nearly */ | ||||
} | } | ||||
break; | break; | ||||
case 14: // set voice by name | 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; | break; | ||||
} | } | ||||
return(NULL); | return(NULL); | ||||
const espeak_VOICE **voices; | const espeak_VOICE **voices; | ||||
espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
static char genders[4] = {' ','M','F',' '}; | |||||
static char genders[4] = {'-','M','F','-'}; | |||||
if(language[0] == '=') | if(language[0] == '=') | ||||
{ | { | ||||
{ | { | ||||
count = 0; | count = 0; | ||||
p = v->languages; | 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) | while(*p != 0) | ||||
{ | { | ||||
len = strlen(p+1); | len = strlen(p+1); | ||||
lang_name = p+1; | lang_name = p+1; | ||||
if(v->age == 0) | if(v->age == 0) | ||||
strcpy(age_buf," "); | strcpy(age_buf," "); | ||||
else | else | ||||
count++; | count++; | ||||
p += len+2; | p += len+2; | ||||
} | } | ||||
// if(scores) | |||||
// fprintf(f_out,"%3d ",v->score); | |||||
fputc('\n',f_out); | fputc('\n',f_out); | ||||
} | } | ||||
} // end of DisplayVoices | } // end of DisplayVoices | ||||
int option_index = 0; | int option_index = 0; | ||||
int c; | int c; | ||||
int value; | int value; | ||||
int speed; | |||||
int amp; | |||||
int wordgap; | |||||
int speed = 175; | |||||
int amp = 100; | |||||
int wordgap = 0; | |||||
int speaking = 0; | int speaking = 0; | ||||
int flag_stdin = 0; | int flag_stdin = 0; | ||||
int flag_compile = 0; | int flag_compile = 0; | ||||
char command[80]; | char command[80]; | ||||
char *p; | char *p; | ||||
int ix; | int ix; | ||||
int quiet; | |||||
int quiet = 0; | |||||
voicename[0] = 0; | voicename[0] = 0; | ||||
wavefile[0] = 0; | wavefile[0] = 0; | ||||
filename[0] = 0; | filename[0] = 0; | ||||
option_ssml = 0; | |||||
option_linelength = 0; | option_linelength = 0; | ||||
option_phonemes = 0; | option_phonemes = 0; | ||||
option_waveout = 0; | option_waveout = 0; | ||||
quiet = 0; | |||||
option_multibyte = 0; // auto | option_multibyte = 0; // auto | ||||
option_capitals = 0; | option_capitals = 0; | ||||
option_punctuation = 0; | option_punctuation = 0; | ||||
case 'k': | case 'k': | ||||
option_capitals = param_number(&p); | option_capitals = param_number(&p); | ||||
SetParameter(espeakCAPITALS,option_capitals,0); | |||||
break; | break; | ||||
case 'x': | case 'x': | ||||
case 'a': | case 'a': | ||||
amp = param_number(&p); | amp = param_number(&p); | ||||
SetParameter(espeakVOLUME,amp,0); | |||||
break; | break; | ||||
case 's': | case 's': | ||||
speed = param_number(&p); | speed = param_number(&p); | ||||
SetParameter(espeakRATE,speed,0); | |||||
break; | break; | ||||
case 'g': | case 'g': | ||||
wordgap = param_number(&p); | wordgap = param_number(&p); | ||||
SetParameter(espeakWORDGAP,wordgap,0); | |||||
break; | break; | ||||
case 'v': | case 'v': | ||||
option_punctlist[N_PUNCTLIST-1] = 0; | option_punctlist[N_PUNCTLIST-1] = 0; | ||||
option_punctuation = 2; | option_punctuation = 2; | ||||
} | } | ||||
SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||||
} | } | ||||
else | else | ||||
if(memcmp(command,"version",7)==0) | if(memcmp(command,"version",7)==0) | ||||
} | } | ||||
} | } | ||||
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) | if((option_phonemes > 1) && !option_waveout) | ||||
quiet = 1; // can't call sprintf() during callback | quiet = 1; // can't call sprintf() during callback | ||||
int size; | int size; | ||||
int *dma_buf; | int *dma_buf; | ||||
int x; | int x; | ||||
int x2; | |||||
int ix; | int ix; | ||||
module_data = (int *)pw; | module_data = (int *)pw; | ||||
dma_buf = (int *)r->r[1]; | dma_buf = (int *)r->r[1]; | ||||
size = (r->r[2] - r->r[1])/4; | 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(); | n_queue = WcmdqUsed(); | ||||
int srate; | int srate; | ||||
int n_srix; | int n_srix; | ||||
int ix; | int ix; | ||||
int double_rate_ix = -1; | |||||
int nearest_ix; | |||||
int nearest_diff = 0x7fffffff; | |||||
int diff; | |||||
_kernel_swi_regs regs; | _kernel_swi_regs regs; | ||||
_kernel_oserror *error; | _kernel_oserror *error; | ||||
sound_mode = 0; | sound_mode = 0; | ||||
sample_rate_doubled = 0; | |||||
regs.r[0] = 0; | regs.r[0] = 0; | ||||
error = _kernel_swi(0x40144+os_X,®s,®s); | error = _kernel_swi(0x40144+os_X,®s,®s); | ||||
sound_mode = regs.r[0]; | sound_mode = regs.r[0]; | ||||
/* 16 bit sound, find sample rate index */ | /* 16 bit sound, find sample rate index */ | ||||
regs.r[0] = 0; | regs.r[0] = 0; | ||||
regs.r[1] = 0; | regs.r[1] = 0; | ||||
_kernel_swi(0x40146,®s,®s); | |||||
_kernel_swi(0x40146,®s,®s); // Sound_SampleRate | |||||
n_srix = regs.r[1]; | n_srix = regs.r[1]; | ||||
regs.r[0] = 1; | regs.r[0] = 1; | ||||
regs.r[0] = 2; | regs.r[0] = 2; | ||||
regs.r[1] = ix; | regs.r[1] = ix; | ||||
_kernel_swi(0x40146,®s,®s); | _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); | 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 | } // end of InitSound16 | ||||
// other characters give the correct results with iswalpha() etc. | // other characters give the correct results with iswalpha() etc. | ||||
static char *locale = "ISO8859-1"; | static char *locale = "ISO8859-1"; | ||||
setlocale(LC_CTYPE,locale); | |||||
setlocale(LC_CTYPE,locale); | |||||
module_data = pw; | module_data = pw; | ||||
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.phoneme/h <obey$dir>.h.phoneme fq~c | ||||
copy <obey$dir>.^.src.sintab/h <obey$dir>.h.sintab fq~c | copy <obey$dir>.^.src.sintab/h <obey$dir>.h.sintab fq~c |
[Setup] | [Setup] | ||||
AppName=eSpeak | 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). | AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | ||||
WindowVisible=yes | WindowVisible=yes | ||||
[Setup] | [Setup] | ||||
AppName=eSpeakEdit | AppName=eSpeakEdit | ||||
AppVerName=eSpeakEdit version 1.47.04 | |||||
AppVerName=eSpeakEdit version 1.47.08 | |||||
DefaultDirName={pf}\eSpeak | DefaultDirName={pf}\eSpeak | ||||
DefaultGroupName=eSpeak | DefaultGroupName=eSpeak | ||||
OutputBaseFilename=setup_espeakedit | OutputBaseFilename=setup_espeakedit |
static void InstnPlusPhoneme(int instn) | static void InstnPlusPhoneme(int instn) | ||||
{//==================================== | {//==================================== | ||||
int phcode; | int phcode; | ||||
DecThenCount(); | |||||
phcode = NextItemBrackets(tPHONEMEMNEM,0); | phcode = NextItemBrackets(tPHONEMEMNEM,0); | ||||
*prog_out++ = instn + phcode; | *prog_out++ = instn + phcode; | ||||
case i_CHANGE_IF+2: | case i_CHANGE_IF+2: | ||||
case i_CHANGE_IF+3: | case i_CHANGE_IF+3: | ||||
InstnPlusPhoneme(keyword << 8); | InstnPlusPhoneme(keyword << 8); | ||||
DecThenCount(); | |||||
break; | break; | ||||
case i_PAUSE_BEFORE: | case i_PAUSE_BEFORE: | ||||
value = NextItemMax(255); | value = NextItemMax(255); | ||||
*prog_out++ = (i_PAUSE_BEFORE << 8) + value; | *prog_out++ = (i_PAUSE_BEFORE << 8) + value; | ||||
DecThenCount(); | |||||
break; | break; | ||||
case i_PAUSE_AFTER: | case i_PAUSE_AFTER: | ||||
value = NextItemMax(255); | value = NextItemMax(255); | ||||
*prog_out++ = (i_PAUSE_AFTER << 8) + value; | *prog_out++ = (i_PAUSE_AFTER << 8) + value; | ||||
DecThenCount(); | |||||
break; | break; | ||||
case i_SET_LENGTH: | case i_SET_LENGTH: | ||||
{ | { | ||||
*prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); | *prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); | ||||
} | } | ||||
DecThenCount(); | |||||
break; | break; | ||||
} | } | ||||
break; | break; | ||||
case kCALLPH: | case kCALLPH: | ||||
CallPhoneme(); | CallPhoneme(); | ||||
DecThenCount(); | |||||
break; | break; | ||||
case kFMT: | case kFMT: | ||||
break; | break; | ||||
case kTONESPEC: | case kTONESPEC: | ||||
DecThenCount(); | |||||
endphoneme = CompileToneSpec(); | endphoneme = CompileToneSpec(); | ||||
break; | break; | ||||
{"$stem", 0x30}, // must have a suffix | {"$stem", 0x30}, // must have a suffix | ||||
{"$atend", 0x31}, // use this pronunciation if at end of clause | {"$atend", 0x31}, // use this pronunciation if at end of clause | ||||
{"$atstart", 0x32}, // use this pronunciation at start of clause | {"$atstart", 0x32}, // use this pronunciation at start of clause | ||||
{"$native", 0x33}, // not if we've switched translators | |||||
// doesn't set dictionary_flags | // doesn't set dictionary_flags | ||||
{"$?", 100}, // conditional rule, followed by byte giving the condition number | {"$?", 100}, // conditional rule, followed by byte giving the condition number | ||||
ix = utf8_in(&c2,p); | ix = utf8_in(&c2,p); | ||||
if(c2 == 0) | if(c2 == 0) | ||||
break; | break; | ||||
if(iswupper(c2)) | |||||
if(iswupper2(c2)) | |||||
{ | { | ||||
utf8_out(towlower(c2),p); | |||||
utf8_out(towlower2(c2),p); | |||||
} | } | ||||
else | else | ||||
{ | { |
unsigned short ipa1[96] = { | unsigned short ipa1[96] = { | ||||
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | 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, | 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, | 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, | 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 | 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | ||||
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. | 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; | int ix; | ||||
char *buf; | char *buf; | ||||
int count; | int count; | ||||
int flags; | int flags; | ||||
int use_ipa; | |||||
int use_tie; | |||||
int separate_phonemes = 0; | |||||
char phon_buf[30]; | char phon_buf[30]; | ||||
char phon_buf2[30]; | char phon_buf2[30]; | ||||
PHONEME_LIST *plist; | PHONEME_LIST *plist; | ||||
static const char *stress_chars = "==,,''"; | static const char *stress_chars = "==,,''"; | ||||
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | 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) | if(phon_out != NULL) | ||||
{ | { | ||||
for(ix=1; ix<(n_phoneme_list-2); ix++) | for(ix=1; ix<(n_phoneme_list-2); ix++) | ||||
buf = phon_buf; | buf = phon_buf; | ||||
plist = &phoneme_list[ix]; | plist = &phoneme_list[ix]; | ||||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
if(plist->newword) | if(plist->newword) | ||||
*buf++ = ' '; | *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) | if(plist->synthflags & SFLAG_SYLLABLE) | ||||
{ | { | ||||
if(c != 0) | if(c != 0) | ||||
{ | { | ||||
buf += utf8_out(c, buf); | buf += utf8_out(c, buf); | ||||
// if(separate_phonemes) | |||||
// *buf++ = separate_phonemes; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
flags = 0; | flags = 0; | ||||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
count = 0; | count = 0; | ||||
for(p=phon_buf2; *p != 0;) | for(p=phon_buf2; *p != 0;) | ||||
{ | { | ||||
p += utf8_in(&c, p); | p += utf8_in(&c, p); | ||||
if(use_ipa > 1) | |||||
if(use_tie > 0) | |||||
{ | { | ||||
// look for non-inital alphabetic character, but not diacritic, superscript etc. | // look for non-inital alphabetic character, but not diacritic, superscript etc. | ||||
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && 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); | buf += utf8_out(c, buf); | ||||
if(count==0) | if(count==0) | ||||
c1 = c; | c1 = c; | ||||
count++; | |||||
if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3)) | |||||
{ | |||||
// don't count apostrophe | |||||
} | |||||
else | |||||
count++; | |||||
if(IsVowel(tr, c)) | if(IsVowel(tr, c)) | ||||
{ | { | ||||
break; | break; | ||||
} | } | ||||
if((c != '\'') && !iswalpha(c)) | |||||
if((c != '\'') && !iswalpha2(c)) | |||||
return(0); | return(0); | ||||
} | } | ||||
if(!(control & 1) && ((ph = phoneme_tab[*p]) != NULL)) | 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 | #ifdef deleted | ||||
int gap = tr->langopts.word_gap & 0x700; | int gap = tr->langopts.word_gap & 0x700; | ||||
break; | break; | ||||
case RULE_NONALPHA: | case RULE_NONALPHA: | ||||
if(!iswalpha(letter_w)) | |||||
if(!iswalpha2(letter_w)) | |||||
{ | { | ||||
add_points = (21-distance_right); | add_points = (21-distance_right); | ||||
post_ptr += letter_xbytes; | post_ptr += letter_xbytes; | ||||
break; | break; | ||||
case RULE_NONALPHA: | case RULE_NONALPHA: | ||||
if(!iswalpha(letter_w)) | |||||
if(!iswalpha2(letter_w)) | |||||
{ | { | ||||
add_points = (21-distance_right); | add_points = (21-distance_right); | ||||
pre_ptr -= letter_xbytes; | pre_ptr -= letter_xbytes; | ||||
if(tr->letter_bits_offset > 0) | if(tr->letter_bits_offset > 0) | ||||
{ | { | ||||
// not a Latin alphabet, switch to the default Latin alphabet language | // 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); | sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | ||||
return(0); | return(0); | ||||
continue; | continue; | ||||
} | } | ||||
} | } | ||||
if(dictionary_flags2 & FLAG_NATIVE) | |||||
{ | |||||
if(tr != translator) | |||||
continue; // don't use if we've switched translators | |||||
} | |||||
if(dictionary_flags & FLAG_ALT2_TRANS) | if(dictionary_flags & FLAG_ALT2_TRANS) | ||||
{ | { | ||||
// language specific | // language specific | ||||
{//============================================== | {//============================================== | ||||
char buf[100]; | char buf[100]; | ||||
static unsigned int flags[2]; | static unsigned int flags[2]; | ||||
char *word1 = (char *)word; | |||||
flags[0] = flags[1] = 0; | flags[0] = flags[1] = 0; | ||||
char *word1 = (char *)word; | |||||
LookupDictList(tr, &word1, buf, flags, 0, NULL); | LookupDictList(tr, &word1, buf, flags, 0, NULL); | ||||
return(flags[0]); | return(flags[0]); | ||||
} | } |
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <ctype.h> | |||||
#ifndef NEED_GETOPT | #ifndef NEED_GETOPT | ||||
#include <getopt.h> | #include <getopt.h> | ||||
#endif | #endif | ||||
"\t Compile pronunciation rules and dictionary from the current\n" | "\t Compile pronunciation rules and dictionary from the current\n" | ||||
"\t directory. <voice name> specifies the language\n" | "\t directory. <voice name> specifies the language\n" | ||||
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | ||||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||||
"--path=\"<path>\"\n" | "--path=\"<path>\"\n" | ||||
"\t Specifies the directory containing the espeak-data directory\n" | "\t Specifies the directory containing the espeak-data directory\n" | ||||
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | ||||
if(path == NULL) | if(path == NULL) | ||||
return(2); | 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) | if(f_wavfile == NULL) | ||||
{ | { | ||||
fprintf(stderr,"Can't write to: '%s'\n",path); | fprintf(stderr,"Can't write to: '%s'\n",path); | ||||
{ | { | ||||
value = -1; | value = -1; | ||||
sscanf(optarg2,"%d",&value); | sscanf(optarg2,"%d",&value); | ||||
if((value<0) || (value>2)) | |||||
if((value<0) || (value>3)) | |||||
{ | { | ||||
fprintf(stderr,"Bad value for -ipa=\n"); | fprintf(stderr,"Bad value for -ipa=\n"); | ||||
value = 0; | value = 0; |
EVT_MENU(MENU_OPT_SPEED, MyFrame::OnOptions) | EVT_MENU(MENU_OPT_SPEED, MyFrame::OnOptions) | ||||
EVT_MENU(MENU_OPT_PUNCT, MyFrame::OnOptions) | EVT_MENU(MENU_OPT_PUNCT, MyFrame::OnOptions) | ||||
EVT_MENU(MENU_OPT_SPELL, 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_PATH0, MyFrame::OnOptions) | ||||
EVT_MENU(MENU_PATH1, MyFrame::OnOptions) | EVT_MENU(MENU_PATH1, MyFrame::OnOptions) | ||||
EVT_MENU(MENU_PATH2, MyFrame::OnOptions) | EVT_MENU(MENU_PATH2, MyFrame::OnOptions) | ||||
break; | break; | ||||
case MENU_OPT_SPELL: | 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->SetValue(_T("<say-as interpret-as=\"tts:char\">\n")); | ||||
transldlg->t_source->SetInsertionPointEnd(); | transldlg->t_source->SetInsertionPointEnd(); | ||||
notebook->SetSelection(1); | notebook->SetSelection(1); | ||||
case MENU_PATH0: | case MENU_PATH0: | ||||
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | ||||
_T(""),_T(""),_T("*"),wxOPEN); | |||||
_T("phonemes"),_T(""),_T("*"),wxOPEN); | |||||
if(!string.IsEmpty()) | if(!string.IsEmpty()) | ||||
{ | { | ||||
path_phfile = string; | path_phfile = string; |
for(k=0; k<ix; ) | for(k=0; k<ix; ) | ||||
{ | { | ||||
k += utf8_in(&wc,&buf[k]); | 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]); | j += utf8_out(wc,&wbuf[j]); | ||||
n_chars++; | n_chars++; | ||||
#endif | #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."; | const char* text1 = "Hello world. Testing."; | ||||
//CharsetToUnicode("ISO-8859-4"); | //CharsetToUnicode("ISO-8859-4"); | ||||
//CharsetToUnicode("ISCII"); | //CharsetToUnicode("ISCII"); | ||||
if(control==2) | if(control==2) | ||||
{ | { | ||||
return; | return; | ||||
espeak_SetSynthCallback(TestSynthCallback); | espeak_SetSynthCallback(TestSynthCallback); | ||||
espeak_SetUriCallback(TestUriCallback); | 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(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_SetParameter(espeakPUNCTUATION, 1, 0); | ||||
espeak_Synchronize(); | espeak_Synchronize(); |
MENU_OPT_SPEED, | MENU_OPT_SPEED, | ||||
MENU_OPT_PUNCT, | MENU_OPT_PUNCT, | ||||
MENU_OPT_SPELL, | MENU_OPT_SPELL, | ||||
MENU_OPT_SPELL2, | |||||
MENU_PATHS, | MENU_PATHS, | ||||
MENU_PATH0, | MENU_PATH0, | ||||
MENU_PATH1, | MENU_PATH1, |
option_menu = new wxMenu; | option_menu = new wxMenu; | ||||
option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); | option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); | ||||
option_menu->Append(MENU_OPT_SPEED, _("Speed...")); | 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 | // TOOLS | ||||
vowelchart_menu = new wxMenu; | vowelchart_menu = new wxMenu; |
} // end of LookupLetter | } // 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) | int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | ||||
{//========================================================================= | {//========================================================================= | ||||
int letter; | int letter; | ||||
int len; | int len; | ||||
int ix; | int ix; | ||||
int c; | |||||
char *p2; | char *p2; | ||||
char *pbuf; | char *pbuf; | ||||
const char *modifier; | |||||
ALPHABET *alphabet; | ALPHABET *alphabet; | ||||
int al_offset; | int al_offset; | ||||
int al_flags; | int al_flags; | ||||
int language; | int language; | ||||
int number; | |||||
int phontab_1; | int phontab_1; | ||||
int speak_letter_number; | int speak_letter_number; | ||||
char capital[20]; | |||||
char capital[30]; | |||||
char ph_buf[80]; | char ph_buf[80]; | ||||
char ph_buf2[80]; | char ph_buf2[80]; | ||||
char ph_alphabet[80]; | char ph_alphabet[80]; | ||||
if(control & 2) | if(control & 2) | ||||
{ | { | ||||
// include CAPITAL information | // include CAPITAL information | ||||
if(iswupper(letter)) | |||||
if(iswupper2(letter)) | |||||
{ | { | ||||
Lookup(tr, "_cap", capital); | Lookup(tr, "_cap", capital); | ||||
} | } | ||||
} | } | ||||
letter = towlower2(letter); | letter = towlower2(letter); | ||||
LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | 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) | if(ph_buf[0] == phonSWITCH) | ||||
{ | { | ||||
strcpy(phonemes,ph_buf); | strcpy(phonemes,ph_buf); | ||||
return(0); | 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_offset = 0; | ||||
al_flags = 0; | al_flags = 0; | ||||
if((alphabet = AlphabetFromChar(letter)) != NULL) | if((alphabet = AlphabetFromChar(letter)) != NULL) | ||||
speak_letter_number = 1; | speak_letter_number = 1; | ||||
if(!(al_flags & AL_NO_SYMBOL)) | if(!(al_flags & AL_NO_SYMBOL)) | ||||
{ | { | ||||
if(iswalpha(letter)) | |||||
if(iswalpha2(letter)) | |||||
Lookup(translator, "_?A", ph_buf); | Lookup(translator, "_?A", ph_buf); | ||||
if((ph_buf[0]==0) && !iswspace(letter)) | if((ph_buf[0]==0) && !iswspace(letter)) | ||||
speak_letter_number = 0; | 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) | if(speak_letter_number) | ||||
{ | { | ||||
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | ||||
utf8_in(&next_char,p); | 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. | strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | ||||
} | } | ||||
// punctuations symbols that can end a clause | // punctuations symbols that can end a clause | ||||
static const unsigned short punct_chars[] = {',','.','?','!',':',';', | static const unsigned short punct_chars[] = {',','.','?','!',':',';', | ||||
0x00a1, // inverted exclamation | |||||
0x00bf, // inverted question | |||||
0x2013, // en-dash | 0x2013, // en-dash | ||||
0x2014, // em-dash | 0x2014, // em-dash | ||||
0x2026, // elipsis | 0x2026, // elipsis | ||||
// bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket | // 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, | static const unsigned int punct_attributes [] = { 0, | ||||
CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, | 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, // en-dash | ||||
CLAUSE_SEMICOLON, // em-dash | CLAUSE_SEMICOLON, // em-dash | ||||
CLAUSE_SEMICOLON | PUNCT_SAY_NAME | 0x8000, // elipsis | CLAUSE_SEMICOLON | PUNCT_SAY_NAME | 0x8000, // elipsis | ||||
0, // voice type | 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 | // 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) | // use ctype.h functions for Latin1 (character < 0x100) | ||||
int iswalpha(int c) | int iswalpha(int c) | ||||
{ | { | ||||
if(c < 0x100) | |||||
if(c < 0x80) | |||||
return(isalpha(c)); | return(isalpha(c)); | ||||
if((c > 0x3040) && (c <= 0xa700)) | if((c > 0x3040) && (c <= 0xa700)) | ||||
return(1); // japanese, chinese characters | return(1); // japanese, chinese characters | ||||
if(c > MAX_WALPHA) | if(c > MAX_WALPHA) | ||||
return(0); | return(0); | ||||
return(walpha_tab[c-0x100]); | |||||
return(walpha_tab[c-0x80]); | |||||
} | } | ||||
int iswdigit(int c) | int iswdigit(int c) | ||||
{ | { | ||||
if(c < 0x100) | |||||
if(c < 0x80) | |||||
return(isdigit(c)); | return(isdigit(c)); | ||||
return(0); | return(0); | ||||
} | } | ||||
int towlower(int c) | int towlower(int c) | ||||
{ | { | ||||
int x; | int x; | ||||
if(c < 0x100) | |||||
int ix; | |||||
if(c < 0x80) | |||||
return(tolower(c)); | 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 | return(c + x); // convert to lower case | ||||
} | } | ||||
int towupper(int c) | 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 | return(c); // no | ||||
} | } | ||||
int iswupper(int c) | int iswupper(int c) | ||||
{ | { | ||||
int x; | int x; | ||||
if(c < 0x100) | |||||
if(c < 0x80) | |||||
return(isupper(c)); | 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(0); | ||||
return(1); | return(1); | ||||
} | } | ||||
int iswlower(int c) | int iswlower(int c) | ||||
{ | { | ||||
if(c < 0x100) | |||||
if(c < 0x80) | |||||
return(islower(c)); | return(islower(c)); | ||||
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) | |||||
if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff)) | |||||
return(0); | return(0); | ||||
return(1); | return(1); | ||||
} | } | ||||
int iswspace(int c) | int iswspace(int c) | ||||
{ | { | ||||
if(c < 0x100) | |||||
if(c < 0x80) | |||||
return(isspace(c)); | return(isspace(c)); | ||||
if(c == 0xa0) | |||||
return(1); | |||||
return(0); | return(0); | ||||
} | } | ||||
} | } | ||||
#endif | #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 towlower2(unsigned int c) | ||||
{ | { | ||||
int x; | |||||
int ix; | |||||
// check for non-standard upper to lower case conversions | // check for non-standard upper to lower case conversions | ||||
if(c == 'I') | if(c == 'I') | ||||
{ | { | ||||
if(translator->translator_name == L('t','r')) | |||||
if(translator->langopts.dotless_i) | |||||
{ | { | ||||
c = 0x131; // 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) | static int IsRomanU(unsigned int c) | ||||
{//================================ | {//================================ | ||||
c2 = ' '; | c2 = ' '; | ||||
} | } | ||||
else | else | ||||
if((c2 == '/') || iswalpha(c2)) | |||||
if((c2 == '/') || iswalpha2(c2)) | |||||
{ | { | ||||
// check for space in the output buffer for embedded commands produced by the SSML tag | // check for space in the output buffer for embedded commands produced by the SSML tag | ||||
if(ix > (n_buf - 20)) | if(ix > (n_buf - 20)) | ||||
} | } | ||||
} | } | ||||
if(iswupper(c1)) | |||||
if(iswupper2(c1)) | |||||
{ | { | ||||
tr->clause_upper_count++; | 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_buf[40]; | ||||
char text_buf2[30]; | char text_buf2[30]; | ||||
} | } | ||||
} | } | ||||
else | else | ||||
if(iswalpha(c1)) | |||||
if(iswalpha2(c1)) | |||||
tr->clause_lower_count++; | tr->clause_lower_count++; | ||||
if(option_phoneme_input) | if(option_phoneme_input) | ||||
if(!iswspace(c1)) | 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); | UngetC(c2); | ||||
ungot_char2 = c1; | ungot_char2 = c1; | ||||
if(nl_count==0) | 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 | // lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | ||||
c1 = CHAR_COMMA_BREAK; | c1 = CHAR_COMMA_BREAK; | ||||
} | } | ||||
else | 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) | is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | ||||
} | } | ||||
} | } | ||||
{ | { | ||||
is_end_clause = 0; // eg. u.s.a.'s | 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 | // next word has no capital letter, this dot is probably from an abbreviation | ||||
// c1 = ' '; | // c1 = ' '; |
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <ctype.h> | |||||
#ifndef PLATFORM_DOS | #ifndef PLATFORM_DOS | ||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
"\t Compile pronunciation rules and dictionary from the current\n" | "\t Compile pronunciation rules and dictionary from the current\n" | ||||
"\t directory. <voice name> specifies the language\n" | "\t directory. <voice name> specifies the language\n" | ||||
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | ||||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||||
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||||
"--path=\"<path>\"\n" | "--path=\"<path>\"\n" | ||||
"\t Specifies the directory containing the espeak-data directory\n" | "\t Specifies the directory containing the espeak-data directory\n" | ||||
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | ||||
if(path == NULL) | if(path == NULL) | ||||
return(2); | 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 | #ifdef PLATFORM_WINDOWS | ||||
// prevent Windows adding 0x0d before 0x0a bytes | // prevent Windows adding 0x0d before 0x0a bytes | ||||
_setmode(_fileno(stdout), _O_BINARY); | |||||
_setmode(_fileno(stdout), _O_BINARY); | |||||
#endif | #endif | ||||
f_wave = stdout; | |||||
f_wave = stdout; | |||||
} | |||||
else | |||||
f_wave = fopen(path,"wb"); | |||||
} | } | ||||
else | |||||
f_wave = fopen(path,"wb"); | |||||
if(f_wave != NULL) | if(f_wave != NULL) | ||||
{ | { | ||||
{ | { | ||||
value = -1; | value = -1; | ||||
sscanf(optarg2,"%d",&value); | sscanf(optarg2,"%d",&value); | ||||
if((value<0) || (value>2)) | |||||
if((value<0) || (value>3)) | |||||
{ | { | ||||
fprintf(stderr,"Bad value for -ipa=\n"); | fprintf(stderr,"Bad value for -ipa=\n"); | ||||
value = 0; | value = 0; |
} // end of espeak_SetPhonemes | } // 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) | ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | ||||
{//============================================================================= | {//============================================================================= | ||||
ENTER("espeak_CompileDictionary"); | ENTER("espeak_CompileDictionary"); |
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics. | 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. | Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names. | ||||
Revision 8 26.Apr.2013 | |||||
Added function espeak_TextToPhonemes(). | |||||
*/ | */ | ||||
/********************/ | /********************/ | ||||
/* Initialization */ | /* Initialization */ | ||||
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | ||||
} id; | } id; | ||||
} espeak_EVENT; | } 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. | 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. | ||||
In PLAYBACK mode, the callback function is called as soon as an event happens. | 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." | "hello, hello." | ||||
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | ||||
** Block 1: | ** Block 1: | ||||
<audio data> + | |||||
<audio data> + | |||||
List of events: SENTENCE + WORD + LIST_TERMINATED | List of events: SENTENCE + WORD + LIST_TERMINATED | ||||
** Block 2: | ** Block 2: | ||||
<audio data> + | <audio data> + | ||||
List of events: WORD + END + LIST_TERMINATED | List of events: WORD + END + LIST_TERMINATED | ||||
typedef enum { | typedef enum { | ||||
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | /* 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 */ | /* RETRIEVAL mode: supplies audio data and events to the calling program */ | ||||
AUDIO_OUTPUT_RETRIEVAL, | AUDIO_OUTPUT_RETRIEVAL, | ||||
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | ||||
AUDIO_OUTPUT_SYNCHRONOUS, | AUDIO_OUTPUT_SYNCHRONOUS, | ||||
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | ||||
/* Must be called before any synthesis functions are called. | /* Must be called before any synthesis functions are called. | ||||
This specifies a function in the calling program which is called when a buffer of | 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: | The callback function is of the form: | ||||
start of the text. | start of the text. | ||||
position_type: Determines whether "position" is a number of characters, words, or sentences. | 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 | end_position: If set, this gives a character position at which speaking will stop. A value | ||||
of zero indicates no end position. | of zero indicates no end position. | ||||
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | ||||
espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | ||||
espeakCHARS_WCHAR Wide characters (wchar_t) | 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. | espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored. | ||||
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | ||||
this pause is suppressed. | 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. | data supplied to the callback. | ||||
user_data: pointer which will be passed to the callback function. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
For the other parameters, see espeak_Synth() | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
If key_name is a single character, it speaks the name of the character. | If key_name is a single character, it speaks the name of the character. | ||||
Otherwise, it speaks key_name as a text string. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | ||||
espeakPUNCTUATION: which punctuation characters to announce: | 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. | see espeak_GetParameter() to specify which characters are announced. | ||||
espeakCAPITALS: announce capital letters by: | espeakCAPITALS: announce capital letters by: | ||||
espeakWORDGAP: pause between words, units of 10mS (at the default speed) | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
punctlist: A list of character codes, terminated by a zero character. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | ||||
*/ | */ | ||||
#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 | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
unsigned char gender; // 0=none 1=male, 2=female, | unsigned char gender; // 0=none 1=male, 2=female, | ||||
unsigned char age; // 0=not specified, or age in years | 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 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 | int score; // for internal use | ||||
void *spare; // for internal use | void *spare; // for internal use | ||||
} espeak_VOICE; | } espeak_VOICE; | ||||
/* Searches for a voice with a matching "name" field. Language is not considered. | /* Searches for a voice with a matching "name" field. Language is not considered. | ||||
"name" is a UTF8 string. | "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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
function returns, the audio output is fully stopped and the synthesizer is ready to | function returns, the audio output is fully stopped and the synthesizer is ready to | ||||
synthesize a new message. | synthesize a new message. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | ESPEAK_API espeak_ERROR espeak_Synchronize(void); | ||||
/* This function returns when all data have been spoken. | /* This function returns when all data have been spoken. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | ESPEAK_API espeak_ERROR espeak_Terminate(void); | ||||
/* last function to be called. | /* last function to be called. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014701; | ||||
int option_device_number = -1; | int option_device_number = -1; |
if((option_phonemes > 0) || (phoneme_callback != NULL)) | if((option_phonemes > 0) || (phoneme_callback != NULL)) | ||||
{ | { | ||||
int use_ipa = 0; | |||||
int phoneme_mode = 0; | |||||
if(option_phonemes >= 3) | 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) | if(option_phonemes > 0) | ||||
{ | { | ||||
fprintf(f_trans,"%s\n",translator->phon_out); | 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) | if(phoneme_callback != NULL) | ||||
{ | { |
// a clause translated into phoneme codes (first stage) | // a clause translated into phoneme codes (first stage) | ||||
typedef struct { | typedef struct { | ||||
unsigned short synthflags; // NOTE Put shorts on 32bit boundaries, because of RISC OS compiler bug? | |||||
unsigned char phcode; | unsigned char phcode; | ||||
unsigned char stresslevel; | 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 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; | } PHONEME_LIST2; | ||||
typedef struct { | typedef struct { | ||||
// The first section is a copy of PHONEME_LIST2 | // The first section is a copy of PHONEME_LIST2 | ||||
unsigned short synthflags; | |||||
unsigned char phcode; | unsigned char phcode; | ||||
unsigned char stresslevel; | 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 wordstress; // the highest level stress in this word | ||||
unsigned char tone_ph; // tone phoneme to use with this vowel | 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; | PHONEME_TAB *ph; | ||||
short length; // length_mod | short length; // length_mod |
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.numbers = 1; | tr->langopts.numbers = 1; | ||||
tr->langopts.accents = 2; // 'capital' after letter name | tr->langopts.accents = 2; // 'capital' after letter name | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe | |||||
} | } | ||||
break; | break; | ||||
SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | ||||
SetLetterBits(tr,LETTERGP_C,hy_consonants); | SetLetterBits(tr,LETTERGP_C,hy_consonants); | ||||
tr->langopts.max_initial_consonants = 6; | 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 | // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
} | } | ||||
break; | break; | ||||
ResetLetterBits(tr,0x2); | ResetLetterBits(tr,0x2); | ||||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | 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.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | ||||
tr->langopts.accents = 2; // 'capital' after letter name | |||||
} | } | ||||
break; | break; | ||||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | 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.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | ||||
tr->langopts.dotless_i = 1; | |||||
tr->langopts.param[LOPT_SUFFIX] = 1; | tr->langopts.param[LOPT_SUFFIX] = 1; | ||||
if(name2 == L('a','z')) | if(name2 == L('a','z')) |
0 | 0 | ||||
}; | }; | ||||
if(iswalpha(c)) | |||||
if(iswalpha2(c)) | |||||
return(1); | return(1); | ||||
if(c < 0x300) | |||||
return(0); | |||||
if((c >= 0x901) && (c <= 0xdf7)) | if((c >= 0x901) && (c <= 0xdf7)) | ||||
{ | { | ||||
// Indic scripts: Devanagari, Tamil, etc | // Indic scripts: Devanagari, Tamil, etc | ||||
while((*word != 0) && !isspace2(*word)) | while((*word != 0) && !isspace2(*word)) | ||||
{ | { | ||||
word += utf8_in(&c, word); | word += utf8_in(&c, word); | ||||
if(!iswupper(c)) | |||||
if(!iswupper2(c)) | |||||
return(0); | return(0); | ||||
} | } | ||||
return(1); | return(1); | ||||
} | } | ||||
} | } | ||||
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)) | if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | ||||
{ | { | ||||
tr->expect_past--; | 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 !!!! | // English Specific !!!! | ||||
// any single letter before a dot is an abbreviation, except 'I' | // any single letter before a dot is an abbreviation, except 'I' | ||||
while(*p2 != ' ') p2++; | while(*p2 != ' ') p2++; | ||||
utf8_in(&c_word2, p2+1); // first character of the next word; | utf8_in(&c_word2, p2+1); // first character of the next word; | ||||
if(!iswalpha(c_word2)) | |||||
if(!iswalpha2(c_word2)) | |||||
{ | { | ||||
ok =0; | ok =0; | ||||
} | } | ||||
// there is a list of character codes to be substituted with alternative codes | // 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; | upper_case = 1; | ||||
} | } | ||||
new_c = replace_chars[ix+1]; | new_c = replace_chars[ix+1]; | ||||
break; | break; | ||||
} | } | ||||
if((word >> 16) == (unsigned int)towlower(next_in)) | |||||
if((word >> 16) == (unsigned int)towlower2(next_in)) | |||||
{ | { | ||||
new_c = replace_chars[ix+1]; | new_c = replace_chars[ix+1]; | ||||
ignore_next = 1; | ignore_next = 1; | ||||
// there is a second character to be inserted | // 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 | // don't convert the case of the second character unless the next letter is also upper case | ||||
c2 = new_c >> 16; | c2 = new_c >> 16; | ||||
if(upper_case && iswupper(next_in)) | |||||
c2 = towupper(c2); | |||||
if(upper_case && iswupper2(next_in)) | |||||
c2 = towupper2(c2); | |||||
*insert = c2; | *insert = c2; | ||||
new_c &= 0xffff; | new_c &= 0xffff; | ||||
} | } | ||||
if(upper_case) | if(upper_case) | ||||
new_c = towupper(new_c); | |||||
new_c = towupper2(new_c); | |||||
*wordflags |= FLAG_CHAR_REPLACED; | *wordflags |= FLAG_CHAR_REPLACED; | ||||
return(new_c); | return(new_c); | ||||
// look for 'n and replace by a special character (unicode: schwa) | // look for 'n and replace by a special character (unicode: schwa) | ||||
if(!iswalpha(prev_in)) | |||||
if(!iswalpha2(prev_in)) | |||||
{ | { | ||||
utf8_in(&next2, &ptr[1]); | utf8_in(&next2, &ptr[1]); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(iswupper(c)) | |||||
if(iswupper2(c)) | |||||
word_flags |= FLAG_FIRST_UPPER; | word_flags |= FLAG_FIRST_UPPER; | ||||
if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | ||||
} | } | ||||
} | } | ||||
if(iswupper(c)) | |||||
if(iswupper2(c)) | |||||
{ | { | ||||
c = towlower2(c); | c = towlower2(c); | ||||
} | } | ||||
else | 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 | // lower case followed by upper case in a word | ||||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | ||||
{ | { | ||||
// convert to lower case and continue | // convert to lower case and continue | ||||
c = towlower(c); | |||||
c = towlower2(c); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | // 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; | int next2_in; | ||||
utf8_in(&next2_in,&source[source_index + next_in_nbytes]); | utf8_in(&next2_in,&source[source_index + next_in_nbytes]); |
#define FLAG_ONLY 0x4000 | #define FLAG_ONLY 0x4000 | ||||
#define FLAG_ONLY_S 0x8000 | #define FLAG_ONLY_S 0x8000 | ||||
#define FLAG_STEM 0x10000 // must have a suffix | #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_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 FLAG_LOOKUP_SYMBOL 0x40000000 // to indicate called from Lookup() | ||||
#define BITNUM_FLAG_ALLCAPS 0x2a | #define BITNUM_FLAG_ALLCAPS 0x2a | ||||
typedef struct{ | typedef struct{ | ||||
unsigned int flags; | unsigned int flags; | ||||
unsigned short start; | unsigned short start; | ||||
unsigned short sourceix; | |||||
unsigned char pre_pause; | unsigned char pre_pause; | ||||
unsigned char wmark; | unsigned char wmark; | ||||
unsigned short sourceix; | |||||
unsigned char length; | unsigned char length; | ||||
} WORD_TAB; | } WORD_TAB; | ||||
char tone_numbers; | char tone_numbers; | ||||
char ideographs; // treat as separate words | char ideographs; // treat as separate words | ||||
char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | 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 testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | ||||
int listx; // compile *_listx after *list | int listx; // compile *_listx after *list | ||||
const unsigned int *replace_chars; // characters to be substitutes | const unsigned int *replace_chars; // characters to be substitutes | ||||
int IsDigit09(unsigned int c); | int IsDigit09(unsigned int c); | ||||
int IsAlpha(unsigned int c); | int IsAlpha(unsigned int c); | ||||
int IsVowel(Translator *tr, int c); | int IsVowel(Translator *tr, int c); | ||||
int iswalpha2(int c); | |||||
int isspace2(unsigned int c); | int isspace2(unsigned int c); | ||||
int iswlower2(int c); | |||||
int iswupper2(int c); | |||||
int towlower2(unsigned 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); | const char *WordToString2(unsigned int word); | ||||
ALPHABET *AlphabetFromChar(int c); | ALPHABET *AlphabetFromChar(int c); | ||||
ALPHABET *AlphabetFromName(const char *name); | ALPHABET *AlphabetFromName(const char *name); |
t_phonetic->SetDefaultStyle(style_phonetic_large); | t_phonetic->SetDefaultStyle(style_phonetic_large); | ||||
translate_text = 3; | translate_text = 3; | ||||
use_ipa = 1; | |||||
use_ipa = 0x10; | |||||
break; | break; | ||||
case T_PROCESS: | case T_PROCESS: |
typedef struct { | typedef struct { | ||||
char v_name[40]; | char v_name[40]; | ||||
char language_name[20]; | |||||
int phoneme_tab_ix; // phoneme table number | int phoneme_tab_ix; // phoneme table number | ||||
int pitch_base; // Hz<<12 | int pitch_base; // Hz<<12 |
voice->n_harmonic_peaks = 5; | voice->n_harmonic_peaks = 5; | ||||
voice->peak_shape = 0; | voice->peak_shape = 0; | ||||
voice->voicing = 64; | 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->consonant_ampv = 100; | ||||
voice->samplerate = samplerate_native; | voice->samplerate = samplerate_native; | ||||
memset(voice->klattv,0,sizeof(voice->klattv)); | memset(voice->klattv,0,sizeof(voice->klattv)); | ||||
int c; | int c; | ||||
unsigned int value = 0; | 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); | value = (value << 8) | (c & 0xff); | ||||
} | } | ||||
// which directory to look for a named voice. List of voice names, must end in a space. | // which directory to look for a named voice. List of voice names, must end in a space. | ||||
static const char *voices_asia = | static const char *voices_asia = | ||||
"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 = | static const char *voices_europe = | ||||
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | ||||
new_translator = SelectTranslator(translator_name); | new_translator = SelectTranslator(translator_name); | ||||
langopts = &new_translator->langopts; | langopts = &new_translator->langopts; | ||||
strncpy0(voice->language_name, language_name, sizeof(voice->language_name)); | |||||
} | } | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
voice_selector.languages = voice->language_name; | |||||
SetVoiceStack(&voice_selector, variant_name); | SetVoiceStack(&voice_selector, variant_name); | ||||
return(EE_OK); | return(EE_OK); | ||||
} | } | ||||
LoadVoice(variant_name,2); | LoadVoice(variant_name,2); | ||||
} | } | ||||
DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
voice_selector.languages = voice->language_name; | |||||
SetVoiceStack(&voice_selector, variant_name); | SetVoiceStack(&voice_selector, variant_name); | ||||
return(EE_OK); | return(EE_OK); | ||||
} | } | ||||
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | ||||
{//======================================================================== | {//======================================================================== | ||||
char path_voices[sizeof(path_home)+12]; | char path_voices[sizeof(path_home)+12]; | ||||
#ifdef PLATFORM_RISCOS | #ifdef PLATFORM_RISCOS | ||||
if(n_voices_list == 0) | if(n_voices_list == 0) | ||||
{ | { |