| @@ -143,6 +143,7 @@ dictionaries: src/espeak \ | |||
| espeak-data/af_dict \ | |||
| espeak-data/am_dict \ | |||
| espeak-data/an_dict \ | |||
| espeak-data/az_dict \ | |||
| espeak-data/bg_dict \ | |||
| espeak-data/bn_dict \ | |||
| espeak-data/ca_dict \ | |||
| @@ -220,6 +221,12 @@ dictsource/an_extra: | |||
| espeak-data/an_dict: src/espeak espeak-data/phontab dictsource/an_list dictsource/an_rules dictsource/an_extra | |||
| cd dictsource && ../src/espeak --compile=an && cd .. | |||
| az: espeak-data/az_dict | |||
| dictsource/az_extra: | |||
| touch dictsource/az_extra | |||
| espeak-data/az_dict: src/espeak espeak-data/phontab dictsource/az_list dictsource/az_rules dictsource/az_extra | |||
| cd dictsource && ../src/espeak --compile=az && cd .. | |||
| bg: espeak-data/bg_dict | |||
| dictsource/bg_extra: | |||
| touch dictsource/bg_extra | |||
| @@ -57,6 +57,7 @@ _y je | |||
| y je $atend | |||
| ch tSe | |||
| ll 'El^e | |||
| ny n^e | |||
| á 'a||akTEntw'aDa | |||
| é 'e||akTEntw'aDa | |||
| í 'i||akTEntw'aDa | |||
| @@ -118,9 +119,10 @@ _x#º %o // for 1º 2º 3º | |||
| _x#ª %a | |||
| º orDin'al||maskul'in | |||
| ª orDin'al||femen'in | |||
| ºc gr'aUs||T'e | |||
| ºf gr'aUs||'Efe | |||
| ºk gr'aUs||k'a | |||
| (1 ºc) un||gr'aU||T'e | |||
| ºc gr'aUs||Tentigr'aUs | |||
| ºf gr'aUs||f'arEnxeI | |||
| ºk gr'aUs||k'elBin | |||
| _1ox prim'Er | |||
| _2ox seQ'und | |||
| @@ -183,6 +185,7 @@ $ d'olar | |||
| \ kontraBaRRa | |||
| | b'aRRaBertik'al | |||
| ° graUs | |||
| (1 °) un||gr'aU | |||
| _- gj'on | |||
| ! TaRR'ar||eksklamaTj'on | |||
| @@ -471,40 +474,56 @@ witsa $abbrev | |||
| // exceptions | |||
| barça b'arsa | |||
| holio x'olio | |||
| jazz dZ'as | |||
| banjo Banjo | |||
| barça barsa | |||
| desenyermar DesenjErmar | |||
| halar xalar | |||
| halma xalma | |||
| harcia xarTja | |||
| hibo xiBo | |||
| hoder xoDer | |||
| holgorio xolg'orio | |||
| holio x'olio | |||
| hopar xopar | |||
| huerga xuerga | |||
| huerza xuerTa | |||
| jacuzzi jakusi | |||
| jazz jas | |||
| jet jet | |||
| judo juDo | |||
| // Foreign words | |||
| android andr'oId | |||
| apple 'apEl | |||
| at 'at | |||
| chat tS'at | |||
| chrome kr'ome | |||
| espeak isp'ik | |||
| (e speak) isp'ik | |||
| facebook f'eIsbuk | |||
| firefox f'aIrfoks | |||
| google g'ugEl | |||
| hotmail xotm'eIl | |||
| android androId | |||
| apple 'apEl | |||
| at at | |||
| chat tSat | |||
| chrome krome | |||
| espeak ispik | |||
| (e speak) ispik | |||
| facebook f'eIsbuk | |||
| firefox f'aIrfoks | |||
| google g'ugEl | |||
| hardware x'ardwer | |||
| hockey xokeI | |||
| hotmail xotmeIl | |||
| (i phone) 'aIfon | |||
| iphone 'aIfon | |||
| (i pod) 'aIpod | |||
| ipod 'aIpod | |||
| hardware x'ardwer | |||
| linux $1 | |||
| live l'aIB | |||
| messenger m'esendZer | |||
| mozilla moT'ila | |||
| nvda ene|be|de|'a | |||
| office 'ofis | |||
| skype esk'aIp | |||
| iphone 'aIfon | |||
| (i pod) 'aIpod | |||
| ipod 'aIpod | |||
| junior j'unior | |||
| linux $1 | |||
| live laIB | |||
| messenger m'esendZer | |||
| mozilla moTila | |||
| nvda ene|be|de|'a | |||
| office ofis | |||
| skype eskaIp | |||
| software s'oftwer | |||
| thunderbird Tanderb'ird | |||
| twitter tw'iter | |||
| unix j'uniks | |||
| whatsapp was'app | |||
| windows w'indows | |||
| thunderbird Tanderbird | |||
| twitter tw'iter | |||
| unix j'uniks | |||
| whatsapp wasap | |||
| windows w'indows | |||
| //mobile _^_EN | |||
| @@ -1,3 +1,4 @@ | |||
| // Aragon translation rules | |||
| // This file is UTF-8 encoded | |||
| @@ -111,6 +112,7 @@ | |||
| i i | |||
| i (u_ i | |||
| i (A j | |||
| .group j | |||
| @@ -168,6 +170,7 @@ | |||
| .group q | |||
| q k | |||
| qu (A kw | |||
| qü kw | |||
| qu (e k | |||
| @@ -204,6 +207,9 @@ | |||
| u) t (_ t# | |||
| ei) t (_ t# | |||
| n) t (_ = // silent, but stress on last vowel | |||
| n) t (m // Silent | |||
| _pos) t (h t | |||
| _pos) t (C // Silent | |||
| tz T | |||
| ue) t (_ t# | |||
| ui) t (_ t# | |||
| @@ -0,0 +1,110 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling to phoneme rules for Azerbaijani | |||
| // Numbers | |||
| _0 s@f'@R | |||
| _1 b'iR | |||
| _2 ic'i | |||
| _3 'ytS | |||
| _4 d'WRd | |||
| _5 b'eS | |||
| _6 alt'@ | |||
| _7 jedd'i | |||
| _8 s&Cc'iz | |||
| _9 dogg'uz | |||
| _1X 'on | |||
| _2X ijiRm'i | |||
| _3X ot'uz | |||
| _4X g'@Rx | |||
| _5X &ll'i | |||
| _6X altm'@S | |||
| _7X jetm'iS | |||
| _8X s&Cs'&n | |||
| _9X doxs'an | |||
| _0C j'yz | |||
| _0M1 m'in | |||
| _0M2 milj'on | |||
| _0M3 milj'aRd | |||
| _dpt _t,am_| // ?? | |||
| // Function words | |||
| // personal pronouns | |||
| mən $u+ | |||
| sən $u+ | |||
| o $u+ | |||
| biz $u+ | |||
| siz $u+ | |||
| onlar $u+ | |||
| // possessive pronouns | |||
| mənim $u+ | |||
| sənin $u+ | |||
| onun $u+ | |||
| bizim $u+ | |||
| sizin $u+ | |||
| onların $u+ | |||
| bu $u+ | |||
| // conjunctions | |||
| və $u+ | |||
| isə $u+ | |||
| də $u+ | |||
| həm $u+ | |||
| ya $u+ | |||
| da $u+ | |||
| // prepositions | |||
| aid $u+ // about | |||
| ilə $u+ // with, by, in | |||
| dair $u+ // about | |||
| // postpositions | |||
| ci $u | |||
| cı $u | |||
| cü $u | |||
| de $u | |||
| dir $u | |||
| li $u | |||
| in $u | |||
| nə $u | |||
| ya $u | |||
| yə $u | |||
| // Character names | |||
| b be | |||
| c dZe | |||
| ç tSe | |||
| _ə & | |||
| d de | |||
| f fe | |||
| g Je | |||
| ğ Qe | |||
| h he | |||
| x xe | |||
| j Ze | |||
| k ka | |||
| q ge | |||
| l el | |||
| m em | |||
| n en | |||
| _o o | |||
| p pe | |||
| r eR | |||
| s se | |||
| ş Se | |||
| t te | |||
| v ve | |||
| w dubElv'E | |||
| y je | |||
| z ze | |||
| * ulduz $text | |||
| % faiz $text | |||
| @@ -0,0 +1,137 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling to phoneme rules for Azerbaijani | |||
| // Stress rule: Right-most vowel, but stop before the vowel which is | |||
| // marked as unstressed [%]. | |||
| .L02 ı a o u // back vowels | |||
| .L03 i e ö ü | |||
| .group a | |||
| a a | |||
| ai (K aI | |||
| -) a (_ a | |||
| .group b | |||
| b b | |||
| .group c | |||
| c dZ | |||
| .group ç | |||
| ç tS | |||
| .group d | |||
| d d | |||
| -) dan (_ d%an | |||
| -) dən (_ d%&n | |||
| -) dək (_ d%&k | |||
| .group e | |||
| e e | |||
| .group ə | |||
| ə & | |||
| @) ə (_ %& | |||
| -) ə (_ %& | |||
| .group f | |||
| f f | |||
| .group g | |||
| g J | |||
| .group ğ | |||
| ğ Q | |||
| A) ğ : | |||
| a) ğa : | |||
| o) ğo : | |||
| u) ğu : | |||
| ö) ğö : | |||
| ü) ğü : | |||
| i) ğ j | |||
| e) ğ j | |||
| .group h | |||
| h h | |||
| .group x | |||
| x x | |||
| .group ı | |||
| ı @ | |||
| .group i | |||
| i i | |||
| @) iya (_ =i;a | |||
| .group j | |||
| j Z | |||
| .group k | |||
| k c | |||
| k (K C | |||
| .group q | |||
| q g | |||
| q (_ x | |||
| .group l | |||
| l l | |||
| l (L02 L | |||
| L02) l (K L | |||
| .group m | |||
| m m | |||
| .group n | |||
| n n | |||
| .group o | |||
| o o | |||
| .group ö | |||
| ö W | |||
| .group p | |||
| p p | |||
| .group r | |||
| r R | |||
| A) r (A * | |||
| ğ) r (A * | |||
| C) r (_ @-r | |||
| .group s | |||
| s s | |||
| .group ş | |||
| ş S | |||
| .group t | |||
| t t | |||
| L03) t (L03 ts | |||
| .group u | |||
| u u | |||
| .group ü | |||
| ü y | |||
| .group v | |||
| v v | |||
| .group w | |||
| w w | |||
| .group y | |||
| y j | |||
| .group z | |||
| z z | |||
| .group | |||
| ä & | |||
| @@ -1,4 +1,6 @@ | |||
| // Translation rules for Bengali | |||
| // Translation rules for Bengali | |||
| // Improvement input by Him Prasad gautam (Nepal). | |||
| // This file is UTF8 encoded | |||
| // Numbers | |||
| @@ -7,7 +9,7 @@ _0 S'unjO | |||
| _1 '&k | |||
| _2 d'uj | |||
| _3 t'in | |||
| _4 tS'ar | |||
| _4 tSh'ar | |||
| _5 p'a~tS | |||
| _6 tS#'Oj | |||
| _7 S'at | |||
| @@ -15,7 +17,7 @@ _8 'at.# | |||
| _9 n'Oj | |||
| _2a d'u // with hundreds etc. | |||
| _6a tS#'a | |||
| _6a tS#'O | |||
| _9a n'O | |||
| @@ -23,7 +25,7 @@ _10 d'OS | |||
| _11 '&garo | |||
| _12 b'arO | |||
| _13 t'erO | |||
| _14 tS'oddO | |||
| _14 tSh'oddO | |||
| _15 p'OnerO | |||
| _16 S'olO | |||
| _17 S'OterO | |||
| @@ -39,86 +41,86 @@ _25 p'O~tSiS | |||
| _26 tSh'abbiS | |||
| _27 Sat'aS | |||
| _28 'at.#aS | |||
| _29 unOtr'iS | |||
| _29 'unOtr'iS | |||
| _30 tr'iS | |||
| _31 ekOtr'iS | |||
| _32 bOtr'iS | |||
| _33 tetr'iS | |||
| _34 tSowtr'iS | |||
| _35 pO~jtr'iS | |||
| _31 'ekOtr'iS | |||
| _32 b'Otr'iS | |||
| _33 t'etr'iS | |||
| _34 tS'owtr'iS | |||
| _35 p'O~jtr'iS | |||
| _36 tS#'Otr'iS | |||
| _37 Sa~itr'iS | |||
| _38 at.tr'iS | |||
| _37 S'a~itr'iS | |||
| _38 'at.tr'iS | |||
| _39 'unOtSOll'iS | |||
| _40 tSOll'iS | |||
| _41 ektSOll'iS | |||
| _42 biall'iS | |||
| _43 tetall'iS | |||
| _44 tSoall'iS | |||
| _45 pO~jtall'iS | |||
| _46 tSetSOll'iS | |||
| _47 SatSOll'is | |||
| _48 atSOll'iS | |||
| _49 unOpO~tSaS | |||
| _50 pO~tS'aS | |||
| _51 &kann'o | |||
| _52 bajann'o | |||
| _53 tepann'o | |||
| _54 tSujann'o | |||
| _55 pontSann'o | |||
| _56 tS#apann'o | |||
| _57 Satann'o | |||
| _58 at.ann'o | |||
| _59 unOS'at. | |||
| _41 'ektSOll'iS | |||
| _42 b'iall'iS | |||
| _43 t'etall'iS | |||
| _44 tS'oall'iS | |||
| _45 p'O~jtall'iS | |||
| _46 tS'etSOll'iS | |||
| _47 S'atSOll'is | |||
| _48 'atSOll'iS | |||
| _49 'unOpO~tSaS | |||
| _50 p'O~tS'aS | |||
| _51 '&kann'o | |||
| _52 b'ajann'o | |||
| _53 t'epann'o | |||
| _54 tS'ujann'o | |||
| _55 p'ontSann'o | |||
| _56 tS#'apann'o | |||
| _57 S'atann'o | |||
| _58 'at.ann'o | |||
| _59 'unOS'at. | |||
| _60 s'at. | |||
| _61 ekSOt.t.'i | |||
| _62 baSOt.t.'i | |||
| _63 teSOt.t.'i | |||
| _64 tSowSOt.t.'i | |||
| _65 pojSOt.t.'i | |||
| _66 SeSOt.t.'i | |||
| _67 SatSOt.t.'i | |||
| _68 at.SOt.t.'i | |||
| _6X sat.t.'i | |||
| _69 unOSOtt'ur | |||
| _70 SOtt'Or | |||
| _71 ekatt'Or | |||
| _72 bahatt'Or | |||
| _73 tehatt'Or | |||
| _74 tSuhatt'Or | |||
| _75 pOtSatt'Or | |||
| _76 tS#ijatt'Or | |||
| _77 Satatt'Or | |||
| _78 at.att'Or | |||
| _79 unOaS'i | |||
| _61 'ekSOt.t.'i | |||
| _62 b'aSOt.t.'i | |||
| _63 t'eSOt.t.'i | |||
| _64 tS'owSOt.t.'i | |||
| _65 p'ojSOt.t.'i | |||
| _66 S'eSOt.t.'i | |||
| _67 S'atSOt.t.'i | |||
| _68 'at.SOt.t.'i | |||
| _6X s'at.t.'i | |||
| _69 'unOSOtt'Or | |||
| _70 S'Ott'Or | |||
| _71 'ekatt'Or | |||
| _72 b'ahatt'Or | |||
| _73 t'iatt'Or | |||
| _74 tS'uhatt'Or | |||
| _75 p'OtSatt'Or | |||
| _76 tS#'ijatt'Or | |||
| _77 S'atatt'Or | |||
| _78 'at.att'Or | |||
| _79 'unOaS'i | |||
| _80 aS'i | |||
| _81 &kaS'i | |||
| _82 beraS'i | |||
| _83 teraS'i | |||
| _84 tSuraS'i | |||
| _85 po~tSaS'i | |||
| _86 tS#ijaS'i | |||
| _87 SataS'i | |||
| _88 at.aS'i | |||
| _89 ,unOnObb'oj | |||
| _81 '&kaS'i | |||
| _82 b'eraS'i | |||
| _83 t'eraS'i | |||
| _84 tS'uraS'i | |||
| _85 p'o~tSaS'i | |||
| _86 tS#'ijaS'i | |||
| _87 S'ataS'i | |||
| _88 'at.aS'i | |||
| _89 'unOnObb'oj | |||
| _90 nObb'oj | |||
| _91 &kanObb'oj | |||
| _92 beranObb'oj | |||
| _93 teranObb'oj | |||
| _94 tSuranObb'oj | |||
| _95 pOtSanObb'oj | |||
| _96 tS#ijanObb'oj | |||
| _97 SatanObb'oj | |||
| _98 at.anObb'oj | |||
| _99 niranObb'oj | |||
| _91 '&kanObb'oj | |||
| _92 b'eranObb'oj | |||
| _93 t'eranObb'oj | |||
| _94 tS'uranObb'oj | |||
| _95 p'OtSanObb'oj | |||
| _96 tS#'ijanObb'oj | |||
| _97 S'atanObb'oj | |||
| _98 'at.anObb'oj | |||
| _99 n'iranObb'oj | |||
| _0C S'o | |||
| _0M1 h'ajar | |||
| @@ -133,7 +135,7 @@ _dpt _d'Osomik_ | |||
| খ k#O | |||
| গ gO | |||
| ঘ g#O | |||
| ঙ 'uNO~ | |||
| ঙ 'uNgO~ | |||
| চ tSO | |||
| ছ tShO // [h] to distinguish from [tS] | |||
| জ JO | |||
| @@ -174,9 +176,9 @@ _dpt _d'Osomik_ | |||
| অ O | |||
| আ a | |||
| ই hrOS:o'i | |||
| ঈ dirg#o'i | |||
| ঈ d'i:rg#o'i | |||
| উ hrOS:o'u | |||
| ঊ dirg#o'u | |||
| ঊ d'i:rg#o'u | |||
| ঋ ri | |||
| ঔ ow | |||
| @@ -190,10 +192,10 @@ _ও o | |||
| // combining vowel signs | |||
| া 'akar | |||
| ি r'oS:ikar | |||
| ী d'irg#ikar | |||
| ূ r'oS:ukar | |||
| ু d'irg#ukar | |||
| ি hrOS:o'ikar | |||
| ী d'i:rg#ikar | |||
| ূ hrOS:o'ukar | |||
| ু d'i:rg#ukar | |||
| ৃ r'ikar | |||
| ে 'ekar | |||
| ৈ 'ojkar | |||
| @@ -1,4 +1,5 @@ | |||
| | |||
| // Pronounciation rule for Bengali. | |||
| // Improvement input by Him Prasad Gautam (Nepal). | |||
| // This file is UTF8 encoded | |||
| // letter groups: | |||
| @@ -97,56 +98,58 @@ | |||
| // Vowel Signs | |||
| .group া | |||
| া a | |||
| াঁ a~ | |||
| C) া a | |||
| C) াঁ a~ | |||
| .group ি | |||
| ি i | |||
| িঁ i~ | |||
| C) ি i | |||
| C) িঁ i~ | |||
| .group ী | |||
| ী i | |||
| ীঁ i~ | |||
| C) ী i | |||
| C) ীঁ i~ | |||
| .group ূ | |||
| ূ u | |||
| ূঁ u~ | |||
| C) ূ u | |||
| C) ূঁ u~ | |||
| .group ু | |||
| ু u | |||
| ুঁ u~ | |||
| C) ু u | |||
| C) ুঁ u~ | |||
| .group ৃ | |||
| ৃ ri | |||
| ৃঁ ri~ | |||
| C) ৃ r'i | |||
| C) ৃঁ r'i~ | |||
| .group ে | |||
| ে e | |||
| েঁ e~ | |||
| েউ ew | |||
| C) ে e | |||
| C) েঁ e~ | |||
| C) েউ ew | |||
| .group ৈ | |||
| ৈ oj | |||
| ৈঁ o~j | |||
| C) ৈ oj | |||
| C) ৈঁ o~j | |||
| .group ো | |||
| ো o | |||
| োঁ o~ | |||
| C) ো o | |||
| C) োঁ o~ | |||
| .group ৌ | |||
| ৌ ow | |||
| ৌঁ o~w | |||
| C) ৌ ow | |||
| C) ৌঁ o~w | |||
| // Consonants | |||
| .group ক | |||
| ক kV | |||
| ক (B k | |||
| ক্ষ k#k#V // or [k#:] ? | |||
| ক্ষ (B k#k# | |||
| .group খ | |||
| খ k#V | |||
| খ (B k# | |||
| @@ -164,7 +167,7 @@ | |||
| .group ঙ | |||
| ঙ NV | |||
| ঙ্ (B N | |||
| ঙ (B N | |||
| .group চ | |||
| @@ -173,8 +176,8 @@ | |||
| .group ছ | |||
| ছ tS#V | |||
| ছ (B tS# | |||
| ছ tShV | |||
| ছ (B tSh | |||
| .group জ | |||
| @@ -194,7 +197,7 @@ | |||
| .group ঞ | |||
| ঞ nV | |||
| ঞ্ (B n | |||
| ঞ (B n | |||
| .group ট | |||
| @@ -232,6 +235,7 @@ | |||
| .group ত | |||
| ত tV | |||
| ত (B t | |||
| ত (_ to | |||
| .group থ | |||
| @@ -281,7 +285,8 @@ | |||
| .group য় | |||
| য় jV | |||
| য় (B j | |||
| _) য় (B j | |||
| য় (B // used to separate 2 vowels | |||
| .group য | |||
| @@ -289,7 +294,8 @@ | |||
| য (B dZ | |||
| য় jV // nukta | |||
| য় (B j | |||
| _) য় (B j | |||
| য় (B | |||
| ্) য (C & // ব্যস্ত [bæsto] | |||
| ্) যা & // ব্যাকরণ [bækɔron] | |||
| @@ -333,6 +339,7 @@ | |||
| .group হ | |||
| হ hV | |||
| হ (B h | |||
| হ (_ ho | |||
| .group হ্ব | |||
| @@ -352,21 +359,24 @@ | |||
| .group ঢ় // can be ঢ plus nukta | |||
| ঢ় hr.V | |||
| ঢ় (B hr. | |||
| ঢ় (_ hr.o | |||
| .group ঁ | |||
| ঁ O~ // candrabindu, nasalize the previous vowel | |||
| C) ঁ O~ // candrabindu, nasalize the previous vowel/Consonants | |||
| .group ং | |||
| ং N // anusvara/onushshor | |||
| A) ং N // anusvara/onushshor | |||
| C) ং N // anusvara/onushshor | |||
| .group ঃ // visarga/bishorgo | |||
| ঃ // doubles the following consonant | |||
| ঃ (_ H | |||
| .group ্ // virama/hoshonto | |||
| ্ | |||
| C) ্ | |||
| .group ় | |||
| ় // nukta, modifies a consonant | |||
| @@ -63,6 +63,8 @@ _#32 l'e:rts'aIC@n | |||
| _?? zymb'o:l | |||
| _?A b'u:xstA:b@ | |||
| _cap gr'o:s | |||
| _sub 'Unt@R|3_!,IndEks|| | |||
| _sup 'o:b@R|3_!,IndEks|| | |||
| // accent names | |||
| @@ -16,9 +16,10 @@ | |||
| // ?7 Scottish | |||
| // ?8 Use full vowel, not schwa in some word endings | |||
| // $alt1 use strong ending (-table, -inal) | |||
| // $alt2 use weak ending | |||
| // $alt1 use strong ending (-an, -table, -inal, -ier) | |||
| // $alt2 use weak ending (ard, ate, ery, ess, ile, men) | |||
| // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] | |||
| // $alt4 separate 'h', not 'th' | |||
| // $alt6 'to' | |||
| @@ -105,6 +106,8 @@ _hok h'Uk | |||
| // character names | |||
| _cap k,ap@-t@L | |||
| _sub s,VbskrIpt|| | |||
| _sup s,u:p3skrIpt|| | |||
| _?A l,Et3 | |||
| _?? sImb@L | |||
| _braille br'eIl | |||
| @@ -148,19 +151,14 @@ _} raItbreIs | |||
| _¡ %Inv,3:tI2dEkskl@m'eIS@n | |||
| _¦ broUk@nb'A@ | |||
| _¨ daIa#r'i:sIs | |||
| _ª fEmI2nIn'O@dI2n@L | |||
| _« lEft'gIl@mEt | |||
| _ makr0n | |||
| ² tu: | |||
| ³ Tri: | |||
| _¹ su:p@skrIptw'0n | |||
| _² su:p@skrIptt'u: | |||
| _³ su:p@skrIptT'ri: | |||
| ² tu: $native | |||
| ³ Tri: $native | |||
| _´ a#kju:taksEnt | |||
| _· mId@Ld0t | |||
| _¸ sEd'Il@ | |||
| //_º maskjUlIn'O@dI2n@L | |||
| _º dI2gr'i:z | |||
| _» raIt'gIl@mEt | |||
| _¿ %Inv,3:tI2dkw'EstS@n | |||
| @@ -284,42 +282,42 @@ _ja dZ'ap@ni:z | |||
| _zh tS'aIni:z | |||
| // Cyrillic letters | |||
| а a | |||
| б bE | |||
| в vE | |||
| г gE | |||
| д dE | |||
| е jE | |||
| ё jo | |||
| ж ZE | |||
| з zE | |||
| и I | |||
| а a: | |||
| б bE: | |||
| в vE: | |||
| г gE: | |||
| д dE: | |||
| е jE: | |||
| ё jo: | |||
| ж ZE: | |||
| з zE: | |||
| и I: | |||
| й ,Ik@-*'atkOji | |||
| к ka | |||
| к ka: | |||
| л El/1 | |||
| м Em | |||
| н En | |||
| о o | |||
| п pE | |||
| о o: | |||
| п pE: | |||
| р Er | |||
| с Es | |||
| т tE | |||
| у u | |||
| т tE: | |||
| у u|: | |||
| ф Ef | |||
| х xa | |||
| ц tsE | |||
| ч tSE | |||
| ш Sa | |||
| щ StSa | |||
| х xa: | |||
| ц tsE: | |||
| ч tSE: | |||
| ш Sa: | |||
| щ StSa: | |||
| ъ jEr | |||
| ы j'Eru | |||
| ь j'eri | |||
| э E | |||
| ю ju | |||
| я ja | |||
| ћ tS;E | |||
| ђ djE | |||
| ќ kjE | |||
| э E: | |||
| ю ju|: | |||
| я ja: | |||
| ћ tS;E: | |||
| ђ djE: | |||
| ќ kjE: | |||
| // Arabic letters | |||
| @@ -507,7 +505,7 @@ _3o T'3: | |||
| _5o f'If | |||
| _20o tw'Enti@ | |||
| _30o T'3:ti@ | |||
| ?3 _30o T'IRti@ | |||
| ?5 _30o T'IRti@ | |||
| _40o f'o@ti@ | |||
| _50o f'Ifti@ | |||
| _60o s'Iksti@ | |||
| @@ -567,8 +565,10 @@ ie aIi:_! $pause $only | |||
| i.e aIi:_! $pause | |||
| imo $abbrev | |||
| inlb $abbrev | |||
| ios $abbrev | |||
| irc $abbrev | |||
| irs $abbrev | |||
| isbn $abbrev | |||
| itx $abbrev | |||
| (km ²) skw,e@kIl'0mIt3z | |||
| lapd $abbrev | |||
| @@ -593,6 +593,7 @@ oem $abbrev | |||
| ok $abbrev | |||
| omg $abbrev | |||
| os $abbrev | |||
| osx $abbrev | |||
| otoh $abbrev | |||
| pcie $abbrev | |||
| pcmcia $abbrev | |||
| @@ -661,8 +662,7 @@ ability a#bIl@ti | |||
| ablaut ablaUt | |||
| aborigine ab@r'IdZ@ni | |||
| abracadabra abr@k@d'abr@ | |||
| absence abs@ns | |||
| absent $1 | |||
| absentee $3 | |||
| absent abs'Ent $verb | |||
| absentia abs'Ent2i:@ | |||
| absinthe absInT | |||
| @@ -694,6 +694,7 @@ adieu a#dju: | |||
| adieus a#dju:z | |||
| adieux a#dju:z | |||
| adios aDj'o:s | |||
| adjective $1 | |||
| admirable adm@r@b@L | |||
| admirably adm@r@bli | |||
| admonition adm@n'IS@n | |||
| @@ -730,7 +731,7 @@ agog a#g0g | |||
| agressive a#grEsIv // misspell | |||
| aground a#graUnd | |||
| ague eIgju: | |||
| aha A:hA: | |||
| aha A:h'A: | |||
| ahem a#h'Em | |||
| ahoy a#hOI | |||
| airbus e@bVs | |||
| @@ -758,6 +759,7 @@ allover O:l'oUv3 | |||
| alm A:m | |||
| almost O:lmoUst | |||
| allspice $1 | |||
| alt 0lt // not abbrev | |||
| alternate O:lt'3:n@t $only | |||
| alternate O:lt3neIt $verb | |||
| alternately O:lt'3:n@tlI $verbf | |||
| @@ -791,7 +793,6 @@ anemometer anIm'0mI2t3 | |||
| anew a#nju: | |||
| ?3 anew a#nu: | |||
| anime anImeI | |||
| anion aneI@n | |||
| anise anIs | |||
| anniversary anIv'3:s@ri | |||
| anon a#n0n | |||
| @@ -804,7 +805,7 @@ antibody $1 | |||
| antichrist $1 | |||
| anticline $1 | |||
| antidote $1 | |||
| antifreze $1 | |||
| antifreeze $1 | |||
| antigen $1 | |||
| antihero $1 | |||
| antilog $1 | |||
| @@ -874,6 +875,7 @@ attribute atrIbju:t | |||
| attribute $alt3 $verb | |||
| au ,oU | |||
| aubergine oUb3Zi:n | |||
| audi aUdi | |||
| auger O:g3 | |||
| augmentation O:gmEnt'eIS@n | |||
| august O:g@st | |||
| @@ -972,6 +974,7 @@ blurry bl3:rI | |||
| boing bOIN | |||
| bolognese b0l@n'eIz | |||
| bombard $2 | |||
| bombardier b0mb3d'i@3 | |||
| (bon voyage) b0n||vOI'A:Z | |||
| bonbon b0nb0n | |||
| bonhomie b0n@mi: | |||
| @@ -1054,7 +1057,7 @@ capita kapIt@ | |||
| capitol kapIt@L | |||
| caprice ka#pri:s | |||
| carafe ka#raf | |||
| caramel kar@mEl | |||
| ?!3 caramel kar@mEl $onlys | |||
| caravan kar@van | |||
| carburetor kA@b@r'Et3 | |||
| ?3 carburetor kA@b@reIt3 | |||
| @@ -1075,7 +1078,7 @@ cathedral $alt3 | |||
| catholic kaTlIk | |||
| carotid $alt3 | |||
| cartel kA@t'El | |||
| cavalier $3 | |||
| cavalier $alt1 | |||
| caveat kavIat | |||
| ?3 caveat kavIA:t | |||
| caviar kavIA@ | |||
| @@ -1089,6 +1092,7 @@ celebre sEl'Ebr@ | |||
| censure sEnS3 | |||
| ceres si@ri:z | |||
| certificate s3tIfIk@t | |||
| c'est seI $u | |||
| chagrin SagrIn | |||
| ?3 chagrin Sa#grIn | |||
| chalet SaleI | |||
| @@ -1151,6 +1155,7 @@ closely kloUslI $verbf // not kloUzlI | |||
| closet kl0zI2t | |||
| cloth kloUD $verb | |||
| c'mon k@m0n | |||
| coathanger $alt4 | |||
| coauthor koU'O:T3 | |||
| coaxial koU'aksI@l | |||
| cobol koUb0l | |||
| @@ -1170,6 +1175,7 @@ coincide koUIns'aId | |||
| cojones k@hoUneIs | |||
| coliseum k0l@s'i:@m | |||
| collage k0l'A:Z | |||
| collarbone k0l3boUn | |||
| college k0lI2dZ | |||
| collegiate k@li:dZI@t | |||
| colloquial k@loUkwI@L | |||
| @@ -1266,6 +1272,7 @@ corral k@r'al | |||
| cosmos k0zm0s | |||
| ?3 cosmos k0zmoUs | |||
| cougar ku:g3 | |||
| counteract $3 | |||
| countered kaUnt3d | |||
| (coup de grâce) ku:d@||gr'A: | |||
| coupon ku:p0n | |||
| @@ -1441,6 +1448,7 @@ edwardian Edw'O@di@n | |||
| efile i:faIl | |||
| egg Eg // egging | |||
| egregious Igr'i:dZ@s | |||
| ?!3 egret i:gr@t | |||
| eh eI | |||
| eid i:d | |||
| el ,El $only | |||
| @@ -1537,6 +1545,7 @@ eyrie i@ri | |||
| facade f@sA:d | |||
| façade f@sA:d | |||
| facetious $alt3 | |||
| faculty fak@Lt2i | |||
| faeces fi:si:z | |||
| fahrenheit far@nhaIt | |||
| fairest fe@r@st | |||
| @@ -1598,11 +1607,11 @@ fortune fO@tSu:n | |||
| foyer fOIeI | |||
| freelance fri:laans | |||
| freon fri:0n | |||
| frequent frI2kwEnt $verb | |||
| fricassee frIka#seI | |||
| frigate frIg@t | |||
| fringer frIndZ3 // infringer | |||
| fringing frIndZIN | |||
| frisson fri:s'O~ | |||
| frontend fr'Vnt,End | |||
| frontier frVnti@3 | |||
| ?3 frontier frVnt'i@3 | |||
| @@ -1641,6 +1650,7 @@ gentlemen dZEnt@Lm@n | |||
| genuine dZEnju:I#n | |||
| geode dZi:oUd | |||
| geologist $2 | |||
| gettin gEt#n- | |||
| geyser gi:z3 | |||
| ?3 geyser gaIz3 | |||
| gibbon gIb@n | |||
| @@ -1651,6 +1661,7 @@ gimme gImi | |||
| giraffe dZI2raaf | |||
| github gIthVb | |||
| glacier gleIS3 | |||
| ?3 goddess $alt2 | |||
| goin ,goUI2n $only // for goin' | |||
| gonna g,@n@ | |||
| goodbye $2 | |||
| @@ -1672,6 +1683,7 @@ griffon grIf@n | |||
| grosvenor groUv@n3 | |||
| groupie gru:pi | |||
| guacamole gwA:ka#m'oUli: | |||
| guarantee $3 | |||
| gucci gu:tSi | |||
| gui gu:i $onlys | |||
| guinea gIni | |||
| @@ -1680,6 +1692,8 @@ gurus gu:ru:z | |||
| habitual $alt3 | |||
| haggis hagIs | |||
| haha hA:h'A: | |||
| halation $alt3 // in- | |||
| halberdier $alt1 | |||
| halleluiah halI2'lu:j@ | |||
| hallelujah halI2'lu:j@ | |||
| halloween $3 | |||
| @@ -1703,6 +1717,7 @@ hello h@loU | |||
| henceforth hEnsfo@T | |||
| ?3 herb 3:b | |||
| hercules h3:kjUli:z | |||
| heredity h3rEdI2ti | |||
| ?3 hereford h3:f3d | |||
| heretical hI2rEtI2k@L | |||
| hereto hi@3'tu: | |||
| @@ -1878,6 +1893,7 @@ kosher koUS3 | |||
| kowtow kaUt2aU | |||
| la ,la $only | |||
| (la vie) la||v'i: | |||
| laboratory la#b'0r@trI | |||
| ?3 laboratory labr@tO:ri | |||
| labor leIb3 | |||
| @@ -2072,9 +2088,10 @@ mixer mIks3 | |||
| moccasin m0k@sI#n | |||
| mocha moUk@ | |||
| modem moUdEm | |||
| ?3 modem moUd@m | |||
| ?3 modem moUd@m | |||
| moderate m0d@reIt $verb | |||
| mogul moUg@L | |||
| moi mwA: | |||
| mojito moUh'i:toU | |||
| molass $alt3 | |||
| molybdenum $2 | |||
| @@ -2154,10 +2171,11 @@ nothing nVTIN | |||
| notwithstanding $3 | |||
| noway noUweI | |||
| nowhere noUwe@ | |||
| ?3 nuance nu:0ns | |||
| ?3 nuance nu:0ns | |||
| oases oU'eIsi:z | |||
| oasis oU'eIsI2s | |||
| obdurate $alt2 | |||
| obelisk 0b@lI2sk | |||
| obesity oUb'i:s@ti | |||
| obey oUb'eI | |||
| @@ -2296,6 +2314,7 @@ persona p3:s'oUn@ | |||
| perspex p3:spEks | |||
| perus p@ru:z | |||
| peruse p@ru:z | |||
| petit p@ti: | |||
| petite p@ti:t | |||
| petroleum p@troUli:@m | |||
| petunia $alt3 | |||
| @@ -2336,6 +2355,7 @@ plethora plET3r@ | |||
| plicate $2 | |||
| plumber plVm3 | |||
| plus plVs | |||
| pois pwA: | |||
| poly p0lI | |||
| politer p@l'aIt3 | |||
| politic p0l@tIk $onlys | |||
| @@ -2378,6 +2398,7 @@ pretext pri:t2Ekst | |||
| pretrial pri:tr'aI|@L | |||
| pretty prIti | |||
| pretzel prEts@L | |||
| ?3 priestess $alt2 | |||
| primeval praIm'i:v@L | |||
| pristine $2 | |||
| ?3 privacy praIv@si | |||
| @@ -2419,6 +2440,7 @@ puny pju:ni | |||
| purist pju:r-Ist | |||
| purport $2 | |||
| purportedly $2 | |||
| puttin pUt#n- | |||
| pyjama p@dZA:m@ | |||
| pyrites paIr'aIti:z | |||
| pythagoras paIT'ag@r@s | |||
| @@ -2442,6 +2464,7 @@ radish radIS | |||
| ragged ragI#d | |||
| raiment reIm@nt | |||
| rainforest r'eInf,0rI2st | |||
| (raison d'être) reIz0n||d'Etr@- | |||
| rajah rA:dZA: | |||
| rapier reIpi@3 | |||
| rapport rap'o@ | |||
| @@ -2519,6 +2542,7 @@ rendevous r0ndI2vu: | |||
| rendezvous r0ndI2vu: | |||
| renegade rEn@geId | |||
| reo ri:oU | |||
| repartee rEpA@t'eI | |||
| repel rI2pEl | |||
| replay ri:pleI | |||
| reply rI2plaI // for replied | |||
| @@ -2652,6 +2676,7 @@ sesame sEsa#mi | |||
| settee $2 | |||
| severe sI2v'i@3 $only | |||
| severely sI2v'i@3lI $verbf | |||
| sewn soUn | |||
| sex sEks // sexism | |||
| several sEvr@L | |||
| shallow SaloU | |||
| @@ -2827,9 +2852,8 @@ telephon tElI2foUn // for telephoning | |||
| temperature tEmprI2tS3 | |||
| ?!3 temporary tEmpr@rI | |||
| ?3 template tEmpl@t | |||
| thereof ,De@'0v | |||
| thereon ,De@'0n | |||
| thereto ,De@'tu: | |||
| therefore $1 | |||
| thereof De@r'0v | |||
| thermos T3:m@s | |||
| thermostable $alt1 | |||
| thesis Ti:sIs | |||
| @@ -2952,7 +2976,6 @@ useful ju:sf@L | |||
| utan u:t'an | |||
| utensil ju:t'Ens@L | |||
| valentine val@ntaIn | |||
| valet valeI | |||
| ?3 valet val'eI | |||
| valise va#li:s | |||
| @@ -3083,6 +3106,7 @@ Cheadle tSi:d@L | |||
| Cheshire tSES3 | |||
| Chiswick tSIzIk | |||
| Clwyd klu:Id | |||
| Conway $1 | |||
| Dagenham dag@n@m | |||
| Devon dEv@n | |||
| Dolgellau d0lg'EClaI | |||
| @@ -3159,6 +3183,7 @@ Belgrade $2 | |||
| Belize bEl'i:z | |||
| Bengal b,Eng'O:l | |||
| Benin bEnIn | |||
| Berkeley b3:kli | |||
| Bhutan bu:t'an | |||
| Bideford bIdIf@d | |||
| Bogota b0g@t'A: | |||
| @@ -3195,6 +3220,7 @@ Cruz kru:z | |||
| Cyprus saIpr@s | |||
| Dahomey $alt3 | |||
| Dallas dal@s | |||
| Dagestan dA:gIst'A:n | |||
| Damascus $alt3 | |||
| Dakota $alt3 | |||
| Danish deInIS | |||
| @@ -3208,6 +3234,8 @@ Egyptia IdZ'IpS@ | |||
| Egyptian IdZ'IpS@n | |||
| Eire e@r@ | |||
| Elysee eIl'i:zeI | |||
| Elysée eIl'i:zeI | |||
| Erebus ErI#b@s | |||
| Erie i@ri | |||
| Euphrates ju:fr'eIti:z | |||
| Eyjafjalla eIja#fjatla# | |||
| @@ -3222,6 +3250,7 @@ Gomera goUm'e@r@ | |||
| Gurmukhi gU@mUki | |||
| Harare ha#rA:ri | |||
| Hanoi han'OI | |||
| Harvard $alt2 | |||
| Havana ha#van@ | |||
| Hawaii h@w'aIi: | |||
| Hawai'i h@w'aIi: | |||
| @@ -3229,6 +3258,7 @@ Hawaiian h@w'aI@n | |||
| Hebrew hi:bru: | |||
| Hebrides hEbr@di:z | |||
| Honduras h0nd'jU@r@s | |||
| Honolulu $3 | |||
| Houston hju:st@n | |||
| Idaho $1 | |||
| Illinois Il@n'OI | |||
| @@ -3257,7 +3287,10 @@ Korean kOr'i:@n | |||
| ?3 Korean k3r'i:@n | |||
| Kosovo k0s@voU | |||
| Kuala kwA:la# | |||
| Kyrgyz k3:rgIz | |||
| Kyrgyzstan k3:rgIst'A:n | |||
| Lagos leIg0s | |||
| Lahore $alt3 | |||
| Lebanon lEb@n0n | |||
| Leipzig laIpsIg | |||
| Leone li:'oUn | |||
| @@ -3340,6 +3373,7 @@ Punjabi pVndZ'A:bi | |||
| Pyrenees pIr@n'i:z | |||
| Qatar katA@ | |||
| Quebec kwI2bEk | |||
| Québec kwI2bEk | |||
| Raleigh rA:li | |||
| Reno ri:noU | |||
| Rio ri:oU | |||
| @@ -3417,6 +3451,8 @@ Ada eId@ $onlys | |||
| Andrea $2 | |||
| Adrian eIdri@n | |||
| Agatha aga#T@ | |||
| Angela andZ@l@ | |||
| Angelika $2 | |||
| Aggie agi | |||
| Agnes agn@s | |||
| Aguilera agi:l'e@r@ | |||
| @@ -3441,12 +3477,13 @@ Amy eImi | |||
| Andre 0ndreI | |||
| Andrea andri@ | |||
| Andreas A:ndr'eI@s | |||
| Angela $1 | |||
| Angela ang@l@ | |||
| Anita $alt3 | |||
| Anthony ant@ni | |||
| Anton ant0n | |||
| Aoife i:f@ | |||
| Aoiffe i:f@ | |||
| Aphrodite afr@d'aIti | |||
| Archibald A@tSIbO:ld | |||
| Archie A@tSi | |||
| Ares e@ri:z | |||
| @@ -3523,6 +3560,7 @@ Duane dweIn | |||
| Duncan dVnk@n | |||
| Dvina d@vi:n@ | |||
| Dylan dIl@n | |||
| Ebenezar Eb@n'i:z3 | |||
| Edith i:dIT | |||
| Eduardo Edw'A@doU | |||
| Elijah I2laIdZ@ | |||
| @@ -3559,10 +3597,13 @@ Giordino dZO@d'i:noU | |||
| Giovanni dZ@v'A:ni | |||
| Graeme greI@m | |||
| Graham greI@m | |||
| Gruffydd grIfIT | |||
| Guido gwi:doU | |||
| Guinevere gwInI#vi@3 | |||
| Hadrian heIdri:@n | |||
| Hamish heImIS | |||
| Harriet hari@t | |||
| Harvey hA@vi | |||
| Heidi haIdi | |||
| Hecate hEk@teI | |||
| Hekate hEk@teI | |||
| @@ -3620,6 +3661,7 @@ Louise lu:w'i:z | |||
| Luigi lu:'i:dZi | |||
| Luis lu:Is | |||
| Lupe lu:peI | |||
| Luther lu:T3 | |||
| Madeleine mad@lI2n | |||
| Madeline mad@lI2n | |||
| Maeve meIv | |||
| @@ -3681,6 +3723,7 @@ Persephone p3s'Ef@ni | |||
| Phoebe fi:bi: | |||
| Rachael reItS@L | |||
| Rachel reItS@L | |||
| Rae reI | |||
| Rafael rA:faI'El | |||
| Rashid rA:S'i:d | |||
| Raul raU'u:l | |||
| @@ -3701,6 +3744,7 @@ Samantha sa#manT@ | |||
| (Santa claus) s'ant@||kl'O:z | |||
| Saoirse si@S@ | |||
| Sarah se@r@ | |||
| Sarisa $alt3 | |||
| Seamus SeIm@s | |||
| Sean SO:n | |||
| Sebastian $alt3 | |||
| @@ -3713,6 +3757,7 @@ Siobhán S@vO:n | |||
| Sonia s0nj@ | |||
| Sophie soUfi | |||
| Stephen sti:v@n | |||
| Stevie sti:vi | |||
| Stewart stju:3t | |||
| ?3 Stewart stu:3t | |||
| Stuart stju:3t | |||
| @@ -3736,6 +3781,7 @@ Vanessa $alt3 | |||
| Wallace w0lI#s | |||
| Wally w0li | |||
| ?3 William wIlj@m | |||
| Yerevan jEr@v'an | |||
| Yves i:v | |||
| Yvonne $2 | |||
| Zoe zoUi | |||
| @@ -3753,6 +3799,7 @@ Campbell kamb@l | |||
| Capone ka#poUn | |||
| Carnegie kA@n@gi | |||
| Cohen koU@n | |||
| Connolly $1 | |||
| Cthulhu k@-Tu:l#u: | |||
| Chrysler kraIsl3 | |||
| (da vinci) da#vIntSi | |||
| @@ -3769,6 +3816,7 @@ Folger foUldZ3 | |||
| Genghis dZENgIs | |||
| Gibson gIbs@n | |||
| Guinness gInIs | |||
| Gutierrez gu:tj'ErEz | |||
| Hades heIdi:z | |||
| Hamilton ham@Lt@n | |||
| Hoosier hu:Z3 | |||
| @@ -3874,6 +3922,7 @@ at at $nounf $only $u | |||
| (at once) a#t_w0ns | |||
| ?6 (at once) a#t_wVns | |||
| (at will) a#t_w'Il | |||
| (at & t) 'eIt2i:@nt'i: | |||
| with wID $u | |||
| (with the) w%IDD@2 $nounf | |||
| @@ -4153,7 +4202,7 @@ someone sVmw0n | |||
| //conjunctions | |||
| although OlD'oU $pause | |||
| although 0lD'oU $pause | |||
| and and $u $pause $only | |||
| as %az $only | |||
| (as is) ,az,Iz $pause | |||
| @@ -4219,6 +4268,7 @@ that Dat $u $nounf $strend2 $verbsf | |||
| these Di:z $u $nounf $strend2 $only | |||
| those DoUz $u $nounf $strend2 $only | |||
| there De@ $u $strend2 $only | |||
| there've De@v $u | |||
| (there are) D%e@,A@ $strend | |||
| (there be) De@b'i: | |||
| (there were) D%e@,w3: $strend | |||
| @@ -239,14 +239,15 @@ | |||
| ab (ruc ab | |||
| ab (sce ab | |||
| ab (sei ab | |||
| absen (t ,abs@n | |||
| _) ab (sen ab | |||
| _) abse (ntC ,abs@ | |||
| ab (solu ab | |||
| ab (sti ab | |||
| ab (ular 'ab | |||
| b) ab (y eIb | |||
| b) ab (yl ab | |||
| &) able (_S4iev @b@L // suffix | |||
| &) able (_$w_alt eIb@L | |||
| &) able (_$w_alt1 eIb@L | |||
| &c) able (_ @b@L | |||
| @ct) able (_ =@b@L | |||
| &) ability (S7iev @b'IlI2t%i // suffix | |||
| @@ -302,7 +303,7 @@ | |||
| f) ac (ilit @s | |||
| _m) ace (d asI | |||
| m) achi (nA# @Si: | |||
| m) achina (t aSI2neI | |||
| m) achina (t akI2neI | |||
| ach (rom ak | |||
| ac (id_ as | |||
| _) ac (i a#s | |||
| @@ -516,13 +517,16 @@ | |||
| _) alber (tA alb'3: | |||
| _) al (c al | |||
| alco (h alk@ | |||
| &) al (cy_ @l | |||
| _) al (d O:l | |||
| alde (hy 'aldI | |||
| ale (_ eIl | |||
| ale (h eIl | |||
| X) al (ed al | |||
| k) alei (d @laI | |||
| _v) alen (t al@n | |||
| aleph alEf | |||
| _op) al (es @l | |||
| _) alexan alIgz'aan | |||
| _) alfa alf@ | |||
| _) al (g al | |||
| @@ -634,9 +638,8 @@ | |||
| t) all (e O:l | |||
| thr) all O:l | |||
| Av) al (en @l | |||
| w) all (A 0l | |||
| w) all (A+ 0l | |||
| w) alle O:l | |||
| w) all (et 0l | |||
| w) all O:l | |||
| w) all (a 0l | |||
| al (tAr 0l | |||
| @@ -686,6 +689,7 @@ | |||
| amer (ic a#mEr | |||
| c) am (ero am | |||
| c) am (el am | |||
| car) am (el @m | |||
| am (i_ 'A:m | |||
| ami (g a#mi: | |||
| _d) am (i eIm | |||
| @@ -754,8 +758,8 @@ | |||
| hum) an (_ @n | |||
| &) an (ty_ @n | |||
| &) an (t_ @n | |||
| &) an (t_$w_alt an | |||
| ?3 &) an (t_$w_alt A:n | |||
| &) an (t_$w_alt1 an | |||
| ?3 &) an (t_$w_alt1 A:n | |||
| ?8 &) an (t_ a#n | |||
| _f) an (at a#n | |||
| pl) an (t_ an | |||
| @@ -782,7 +786,10 @@ | |||
| &) an (ese @n | |||
| _) ane (s anI | |||
| an (gul 'an | |||
| _) ani anI | |||
| _) ani (on anaI | |||
| &) ani (_ 'A:nI | |||
| @st) ani (_S1 =i | |||
| an (ia 'eIn | |||
| ania (c_ 'eInIa | |||
| ania (c a#naI@ | |||
| @@ -912,6 +919,7 @@ | |||
| _t) ar (_ A@ | |||
| &) ar (dis 3 | |||
| &) ar (diz 3 | |||
| &) ar (d_$w_alt2 3 | |||
| &d) ar (d_ 3 | |||
| gg) ar (d_ 3 | |||
| &h) ar (d_ 3 | |||
| @@ -960,7 +968,7 @@ | |||
| sp) ar (enC ar | |||
| ar' (nt A@ | |||
| ar (et ar | |||
| ar (iaC_ 'e@ | |||
| ar (iaB_ 'e@ | |||
| ar (ia_ 'e@ | |||
| @) arily (_ 'Er@l%I | |||
| ?3 @) arily (_ 'e@r@l%I | |||
| @@ -979,6 +987,7 @@ | |||
| u) ar (ish e@r | |||
| ?3 _) ar (istocrat a#r | |||
| log) ar (i @r | |||
| marg) ar (AtA_ 3r' | |||
| m) ar (it ar | |||
| p) ar (i ar | |||
| p) ar (in e@ | |||
| @@ -1015,6 +1024,7 @@ | |||
| _w) ar (d O@ | |||
| sw) ar (d O@ | |||
| chw) ar (d O@ | |||
| &) arye (_ 3ri | |||
| .group as | |||
| _) as (@ a#s | |||
| @@ -1223,11 +1233,10 @@ | |||
| av (eng a#v | |||
| _) av (erC a#v | |||
| av (oA a#v | |||
| d) av (en av | |||
| d) av (id eIv | |||
| j) av (a A:v | |||
| j) av (el av | |||
| l) av (en av | |||
| _B) av (en av | |||
| al) av (er 'A:v | |||
| sc) av (en av | |||
| _) avi (A eIvI | |||
| @@ -1350,7 +1359,7 @@ | |||
| bi (ry bI | |||
| bi (sc bI | |||
| bi (sec b%aI | |||
| bi (sh bI | |||
| _) bi (sh bI | |||
| bi (sm bI | |||
| bi (sq bi: | |||
| bi (str bi: | |||
| @@ -1492,6 +1501,7 @@ | |||
| bron) ch k | |||
| ch (ute S | |||
| ch (ure S | |||
| za) ch k | |||
| .group co | |||
| _) co (ag k%oU | |||
| @@ -1621,7 +1631,7 @@ | |||
| co (rro k@ | |||
| co (rrup k@ | |||
| _) costar koUstA@ | |||
| _) counter (@P7 k'aUnt@ // prefix | |||
| _) counter (@P7 k'aUnt3 // prefix | |||
| .group d | |||
| d d | |||
| @@ -1978,7 +1988,7 @@ | |||
| st) ea (k eI | |||
| w) eapo Ep@ | |||
| eager i:g3 | |||
| j) ealou El@ | |||
| j) ea (lou E | |||
| &) eal (_ i@l | |||
| z) ea (lo E | |||
| C) ea (lt E | |||
| @@ -2472,16 +2482,18 @@ | |||
| s) er (van 3: | |||
| ery (_ @r%i | |||
| ?3 ery (_++$w_alt2 @rI | |||
| ?3 @@AC) ery (_ e@ri | |||
| ?3 @@AC) ery (_ ,e@ri | |||
| ery (A 3j | |||
| _v) ery ErI2 | |||
| qu) ery i@rI | |||
| _x) er (o i@r | |||
| z) er (o i@r | |||
| _C) er (o_ i@r | |||
| er (rA E | |||
| err (_N e@ | |||
| .group es | |||
| ess (_$w_alt2 @s | |||
| &) es (_S1i z | |||
| &es) es (_ i:z | |||
| ese (_ i:z | |||
| @@ -2648,6 +2660,8 @@ | |||
| ex (erc Eks | |||
| _) ex (A %Egz | |||
| _) exh %Egz | |||
| _) ex (hal %Eks | |||
| _) exh (ibiti %Eks | |||
| ?3 _) exhu %Egzu: | |||
| _) ex (it Egz | |||
| exor (c Eks3 | |||
| @@ -2715,6 +2729,7 @@ | |||
| g (eek g | |||
| _) g (ert g | |||
| _) g (ek g | |||
| g (eld g | |||
| ge (nic_ dZ'E | |||
| genesis dZ'EnI2sIs | |||
| geous dZ=@s | |||
| @@ -2950,7 +2965,9 @@ | |||
| iza (tion aIzeI | |||
| ?3 iza (tion @zeI | |||
| ize (_ aIz | |||
| ial) ize (_S3 aIz | |||
| &l) ize (_S3 aIz | |||
| &l) ized (_S4 aIzd | |||
| &l) izing (_S5 ,aIzIN | |||
| ize (d_ aIz | |||
| i (zen I | |||
| iz (er_ aIz | |||
| @@ -3036,7 +3053,7 @@ | |||
| &n) iel (_ j@L | |||
| &r) iel (_ =i:@L | |||
| ie (n i@ | |||
| &) ie (n_ =i@n | |||
| &) ie (n_ =i@ | |||
| d) iene (_ 'aIi:n | |||
| ie (ntal I'E | |||
| g) ie (n i: | |||
| @@ -3053,7 +3070,7 @@ | |||
| ier i@3 | |||
| ier (a I'e@r | |||
| &) ier (_NS2i 3 | |||
| &) ier's (_NS4i 3z | |||
| ier (_$w_alt1 'i@3 | |||
| _h) ie (r aI3 | |||
| pl) ier (_ aI3 | |||
| _Cr) ier aI3 | |||
| @@ -3190,7 +3207,7 @@ | |||
| impo (ten Imp@ | |||
| _) im (pre@P2 %Im | |||
| impreg Impr'Eg | |||
| impreg (nat ImprEg | |||
| ?!3 impreg (nat Impr,Eg | |||
| im (presa ,Im | |||
| im (provis Im | |||
| im (pulse_ Im | |||
| @@ -3200,7 +3217,7 @@ | |||
| .group in | |||
| @) ing (_+S3dve %IN | |||
| @) ings (_S4dve %INz | |||
| @) ings (_S1m z | |||
| @) ingly (_S5dve %INl%I | |||
| @) ingment (_S7dve %INm@nt | |||
| logu) ing (_S4v %IN | |||
| @@ -3267,7 +3284,6 @@ | |||
| _) inno (ce In@ | |||
| _) inno (v In@ | |||
| _) inn (um %In | |||
| _) in (of In | |||
| _) in (org In | |||
| _) in (p In | |||
| _) in (que In | |||
| @@ -3321,7 +3337,7 @@ | |||
| adm) ini InI | |||
| m) iniatur InItS3 | |||
| m) inera (l In@r@ | |||
| in (al_$w_alt 'aIn | |||
| in (al_$w_alt1 'aIn | |||
| &m) in (al_ =In | |||
| f) in (a aIn | |||
| @g) in (a_ aIn | |||
| @@ -3357,6 +3373,7 @@ | |||
| v) ine (g InI# | |||
| in (ea In | |||
| in (ee In | |||
| in (esc In | |||
| c) in (e In | |||
| inc) in (e In | |||
| g) in (e In | |||
| @@ -3495,6 +3512,7 @@ | |||
| is (er+_ aIz | |||
| iser (_ aIz3 | |||
| &) ish (_ I2S | |||
| ish (A_ 'i:S | |||
| is (ive aIs | |||
| _) island aIl@nd | |||
| _) is (le aI | |||
| @@ -3508,8 +3526,8 @@ | |||
| iss (a_ 'Is | |||
| issimo (_ 'IsImoU | |||
| chr) is (t_ aIs | |||
| @) istan (_ =Istan | |||
| @) istani (_ Ist'A:nI | |||
| @) istan (_ =IstA:n | |||
| @) istan (_N =Istan | |||
| @) iste (_ 'i:st | |||
| @) is (tic_ 'Is | |||
| r) is (y_ =@s | |||
| @@ -3997,7 +4015,7 @@ | |||
| oea (_ 'i@ | |||
| _) oe (d i: | |||
| p) oe (m oUI | |||
| oer oU@ | |||
| oer oU3 | |||
| _) oe (s i: | |||
| &) oe (s_S2 z | |||
| oesopha I2s0f@ | |||
| @@ -4102,7 +4120,7 @@ | |||
| o (tion oU | |||
| m) o (tiv oU | |||
| r) o (to oU | |||
| pr) oto oUtoU | |||
| pr) oto (C oUtoU | |||
| pr) oto (n oUt0 | |||
| m) otor oUt3 | |||
| n) o (tor oU | |||
| @@ -4167,6 +4185,7 @@ | |||
| olt oUlt | |||
| w) olv Ulv | |||
| N_p) oly ,0lI | |||
| _) ol (ym @l | |||
| .group om | |||
| &) om (_ @m | |||
| @@ -4179,6 +4198,7 @@ | |||
| t) omb (K u:m | |||
| w) omb (_ u:m | |||
| c) ombe (_ u:m | |||
| _tr) ombo (n %0mboU | |||
| c) om (e Vm | |||
| c) omm (e Vm | |||
| _d) om (a @m | |||
| @@ -4217,6 +4237,7 @@ | |||
| Cd) on (_ @n | |||
| ?3 ag) on (_ 0n | |||
| rg) on (_ @n | |||
| &k) on (_ @n | |||
| &s) on (_ @n | |||
| &t) on (_ @n | |||
| &tr) on (_ 0n | |||
| @@ -4235,6 +4256,7 @@ | |||
| pers) on (i '0n | |||
| postp) on 'oUn | |||
| _sp) on 0n | |||
| &s) on (an @n | |||
| on (ald 0n | |||
| &) on (age_ @n | |||
| d) on (at %oUn | |||
| @@ -4346,6 +4368,7 @@ | |||
| nt) or (_ o@ | |||
| vent) or (_ 3 | |||
| y) or (k O@ | |||
| &) or (ant_ 3r | |||
| or (arL02 3r | |||
| &) or (ation 3r | |||
| _) ora (to 0r@ | |||
| @@ -4420,7 +4443,7 @@ | |||
| w) or (e o@ | |||
| or (um_ 'o@r | |||
| &) ory (_ @r%I | |||
| ?3 @@At) ory (_ o:ri | |||
| ?3 @@At) ory (_ ,o:ri | |||
| _st) ory o@rI | |||
| .group os | |||
| @@ -4661,7 +4684,7 @@ | |||
| _all) ow aU | |||
| isall) ow aU | |||
| cl) ow aU | |||
| fl) ow (er aU | |||
| fl) ower aU|3 | |||
| gl) ow (er aU | |||
| pl) ow aU | |||
| _n) ow (_ aU | |||
| @@ -4788,6 +4811,8 @@ | |||
| prede (ces pri:dI | |||
| _) pre (diP3 pr%i: | |||
| _) pre (dic pr%I | |||
| _) predi (lec pr,i:dI2 | |||
| ?3 _) predi (lec prEd@ | |||
| _) pre (em pr%i: | |||
| _) pre (fec pri: | |||
| _) pre (feren prE | |||
| @@ -4955,7 +4980,6 @@ | |||
| _) re (arm %ri: | |||
| _) re (au@P2 ,ri: | |||
| re (ck rE | |||
| reckon rEk@n | |||
| reco (g rEk@ | |||
| _) re (comP2 r,i: | |||
| _) re (conP2 ,ri: | |||
| @@ -5091,6 +5115,7 @@ | |||
| m) s (i z | |||
| a) s (el_ z | |||
| m) s (y z | |||
| n) s (y_ z | |||
| a) s (e s | |||
| pha) s (e z | |||
| la) s (e z | |||
| @@ -5129,7 +5154,7 @@ | |||
| @) s (hill_ s | |||
| @) s (hous s | |||
| _) she' %Si: | |||
| A) sh (i_ =S | |||
| A) sh (A_ =S | |||
| &) ship (_S4 SIp | |||
| &) ships (_S5 SIps | |||
| &) shire (_S5 S3 | |||
| @@ -5210,6 +5235,7 @@ | |||
| _) sus (A su:z | |||
| su (al Zu: | |||
| n) su (al sju: | |||
| ?3 n) su (al Su: | |||
| _) su (b sV | |||
| _) su (bdi s,V | |||
| su (bdue s%V | |||
| @@ -5265,6 +5291,7 @@ | |||
| _) t (sY t | |||
| _) t (wY t | |||
| _) tz (ar ts | |||
| t (h$w_alt4 t | |||
| tch tS | |||
| _) tele tElI2 | |||
| @@ -5293,6 +5320,7 @@ | |||
| tse (_ tsi | |||
| _) tsk t'@sk | |||
| _) tsu tsu: | |||
| tt (i_ =t | |||
| _) two tu: | |||
| ttu (r t@ | |||
| tz ts | |||
| @@ -5335,6 +5363,7 @@ | |||
| th (ern_ D | |||
| _) thio T,aIoU | |||
| th (ith D | |||
| th (old th | |||
| th (ole th | |||
| _) th (om@ t | |||
| ph) th T | |||
| @@ -5346,6 +5375,7 @@ | |||
| ear) th (y T | |||
| _) there De@ | |||
| _) them D%Em | |||
| _) there (@ D%e@ | |||
| _) the (mA Ti: | |||
| .group ti | |||
| @@ -5367,7 +5397,8 @@ | |||
| &s) tion tS@n | |||
| ?8 &) tion S=Vn | |||
| ?8 &s) tion tSVn | |||
| tion (al S=@-n | |||
| tion (al_ S=@-n | |||
| tion (al S@-n | |||
| &) tious S=@s | |||
| AC) tive (_ =tIv | |||
| @@ -5383,7 +5414,7 @@ | |||
| @) tu (lat =tSU | |||
| ?3 tu (Ant tSu: | |||
| ?3 tu (Ancy tSu: | |||
| tu (ous tSu: | |||
| tu (ous =tSu: | |||
| @) tur (A tS@r | |||
| @) tur (al_ tS=@r | |||
| &) tur (y tS@r | |||
| @@ -5503,7 +5534,7 @@ | |||
| d) u (ly ju: | |||
| z) u (l_ 'u: | |||
| &) um (_ @m | |||
| vol) u (m ju: | |||
| vol) u (me ju: | |||
| u (ma_ 'u: | |||
| h) u (man ju: | |||
| u (me ju: | |||
| @@ -5712,6 +5743,7 @@ | |||
| ?3 _) vibra (t v'aIbreI | |||
| vivi (@ vIvI | |||
| viv (_ vaIv | |||
| _) vo (lC v0 | |||
| .group w | |||
| w w | |||
| @@ -5856,6 +5888,7 @@ | |||
| C) yes (_ aIz | |||
| _) yes jEs | |||
| yeah jEh | |||
| yew ju: | |||
| @C) y (gen I | |||
| ?!3 d) y (nas I | |||
| s) ynch Ink | |||
| @@ -5963,7 +5996,7 @@ | |||
| E (ntu 'E | |||
| E (ntous 'E | |||
| E (o_ I2 | |||
| Eous (_ =j@s | |||
| Eous (_ =i@s | |||
| l) E (ps E | |||
| l) E (pt E | |||
| Eri (A 'i@rI2 | |||
| @@ -6009,19 +6042,19 @@ | |||
| .group ' | |||
| 's (_S2 z | |||
| f) 's (_S2 s | |||
| p) 's (_S2 s | |||
| t) 's (_S2 s | |||
| k) 's (_S2 s | |||
| se) 's (_S2 I2z | |||
| s) 's (_S2 I2z | |||
| ce) 's (_S2 I2z | |||
| ch) 's (_S2 I2z | |||
| och) 's (_S2 s | |||
| sh) 's (_S2 I2z | |||
| x) 's (_S2 I2z | |||
| z) 's (_S2 I2z | |||
| 's (_S2m z | |||
| f) 's (_S2m s | |||
| p) 's (_S2m s | |||
| t) 's (_S2m s | |||
| k) 's (_S2m s | |||
| se) 's (_S2m I2z | |||
| s) 's (_S2m I2z | |||
| ce) 's (_S2m I2z | |||
| ch) 's (_S2m I2z | |||
| och) 's (_S2m s | |||
| sh) 's (_S2m I2z | |||
| x) 's (_S2m I2z | |||
| z) 's (_S2m I2z | |||
| 6_) 's (_ I2z | |||
| 16_) 's (_ z | |||
| 're (_S3 @ | |||
| @@ -50,8 +50,10 @@ A) ck k | |||
| _) d (rA d | |||
| _) d (A d | |||
| d (A D | |||
| d (_ D | |||
| d (cY D | |||
| d (L03 D | |||
| d (v D | |||
| m) d d | |||
| n) d d | |||
| l) d d | |||
| @@ -85,6 +87,7 @@ A) ck k | |||
| _) gn (A n | |||
| _) g (A g | |||
| g (A Q | |||
| g (_ Q | |||
| g (cY Q | |||
| g (L03 Q | |||
| m) g g | |||
| @@ -698,7 +698,7 @@ _quatrevin) gts (_ z2 | |||
| _) game (X _^_en | |||
| girl _^_en // girl | |||
| gh (K _^_en | |||
| gy (_ _^_en | |||
| @) gy (_ _^_en | |||
| .group h | |||
| @@ -1497,7 +1497,7 @@ A) wn _^_en | |||
| y (nn i | |||
| // group y: English section | |||
| _C) y (_ _^_en | |||
| //_C) y (_ _^_en | |||
| AC) y (_ _^_en | |||
| C) y (e_ _^_en | |||
| %C) y (_ _^_en | |||
| @@ -1,7 +1,9 @@ | |||
| // Irish Gaeilge dictionary | |||
| // written by Ronan McGuirk | |||
| // January 2013 | |||
| // version 2.5 | |||
| // 2013 | |||
| // version 2.6.1 | |||
| // Please send comments and suggestions to [email protected] | |||
| // This file is UTF8 encoded | |||
| // letters | |||
| @@ -47,7 +49,7 @@ _cap m'o:r | |||
| // accent names | |||
| // names of symbols | |||
| ª_. pO#nk | |||
| _. pO#nk | |||
| _, k0m@ | |||
| _; semI | |||
| _: ko:l0n | |||
| @@ -152,22 +154,26 @@ amárach @m'A:r@x | |||
| amuigh @mu1'I | |||
| amháin @w'A:in | |||
| am aUm | |||
| an @n | |||
| anaithnid '0nah@nIdZ | |||
| anois @nIS | |||
| anonn @naUn | |||
| ann aUn | |||
| anseo @nS'O | |||
| anuas a#n'u@s | |||
| aodh e: | |||
| aodha e: | |||
| aon e:@n | |||
| (ar ais) Er'aS | |||
| arís @r'i:S | |||
| as 0s | |||
| aschurtha '0sxUrh@ | |||
| atá @t['A: $u | |||
| baill bu1'i:l | |||
| bhaill vu1'i:l | |||
| beidh bEg | |||
| bhfuil w'Il | |||
| bheas v'e:@s | |||
| bhuel w'El | |||
| ceithre kEr@ | |||
| cathair k'0h@r | |||
| @@ -176,6 +182,7 @@ clainne kl'InE | |||
| chlainne xl'InE | |||
| chun xUn $u | |||
| crainn kri:n | |||
| chrainn xri:n | |||
| de dE $u+ | |||
| des dEs $u | |||
| @@ -184,6 +191,7 @@ di dI $u+ | |||
| do dO# $u | |||
| domhnach d[aUn@x | |||
| domhnaigh d[aUnig | |||
| dúghorm d['u:Q"Or@m | |||
| eile 'El@ | |||
| euro ju:ro: | |||
| faic f@ak | |||
| @@ -214,6 +222,7 @@ le lE $u | |||
| (muigheo) mu1'i:||'o: | |||
| mhuigh vu1'i: | |||
| (mhaigh eo) vu1'i:||'o: | |||
| mhama w'0m@ | |||
| maith m'0 | |||
| mhaith w'0 | |||
| mbeadh m;O#X | |||
| @@ -230,8 +239,10 @@ orthu O#rhu | |||
| os o:s | |||
| rabh raU | |||
| raibh rEv | |||
| raidió r'adi:o: | |||
| réamhrá r'e:@vr,a: | |||
| réidh re: | |||
| 's s | |||
| samhain saUIn | |||
| san s@n | |||
| seo S@_ | |||
| @@ -1,8 +1,10 @@ | |||
| // translation rules for Irish Gaeilge | |||
| // This file is UTF-8 encoded | |||
| // written by Ronan McGuirk January 2013 | |||
| // Version 2.5B | |||
| // written by Ronan McGuirk 2013 | |||
| // Version 2.6.1 | |||
| // Please send comments and suggestions to [email protected] | |||
| // Conditional rules | |||
| // ?1 allow eclipsis as 2 separate words | |||
| @@ -12,7 +14,7 @@ | |||
| .L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||
| .L04 b bh mb // for words like beag | |||
| .L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||
| .L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
| .L06 aidh idh aí á eá eadh adh ad adsa imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
| .L07 b c g ch bh gh mb | |||
| .L08 lc ll nt bhse // for words like cailc | |||
| .L09 cl cr chr f | |||
| @@ -21,14 +23,14 @@ | |||
| .L12 á é ó eo ua // when followed by i | |||
| .L13 oc omb | |||
| .L14 río dún gnío // followed with mh | |||
| .L15 c ch f m d dh g gc gh mh // aoi following | |||
| .L15 c ch f bhf m d dh g gc gh mh // aoi following | |||
| .L16 b c bh ch gr ghr // for inn word ending | |||
| .L17 l le li niste nn | |||
| .L18 n nt nte neann neadh ntear nim nfear nfinn | |||
| .L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar | |||
| .L19 na nea ra rea la llea arga // word endings with silent dh | |||
| .L20 eo eoir eá eabh io iu iú // slender m | |||
| .L21 ll nn ndán nntán | |||
| .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||
| .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann | |||
| .L23 ea eo i | |||
| .L24 b mb bh g gh p ph bp m mh | |||
| @@ -40,14 +42,16 @@ | |||
| abht aU#t[ | |||
| amhr aUr // words like amhras | |||
| K) amhl aUl | |||
| abhra aUr@ // words like slabhra | |||
| abh (C aU // words like slabhra | |||
| aghaidh aIg | |||
| t) abhair u:@r | |||
| th) abhair u:@r | |||
| t) abhar u:@r | |||
| th) abhar u:@r | |||
| _) an (sL01 @n | |||
| _) an (- 0n // an prefix | |||
| _) a (nA @ | |||
| _) an (_ @n | |||
| _) an (- '0n // an prefix | |||
| é) a @ // words like féach | |||
| X) a (nn_ aU# | |||
| X) a (ll_ aU# | |||
| @@ -77,8 +81,9 @@ | |||
| _) ao e: | |||
| ae e: | |||
| amhna (_ aUn@ | |||
| arraing arIng | |||
| _) ath (@@P3 ,0_ | |||
| .group á | |||
| á A: | |||
| @) á ,A: | |||
| @@ -89,7 +94,7 @@ | |||
| áinig A:nIg | |||
| ái 'A:i | |||
| .group ai | |||
| ai a# | |||
| L04) ai (L17 0# | |||
| @@ -99,6 +104,7 @@ | |||
| m) ai (n 0# | |||
| c) ai (th 0# | |||
| ch) ai (th 0# | |||
| ai (tín 0# | |||
| ai (d 0# | |||
| p) ai (l 0# | |||
| @) ai (L11_ I | |||
| @@ -112,8 +118,9 @@ | |||
| X) aigh 'aI | |||
| aigh aI# L04) aill (_ wi:l | |||
| aing (_ Ing | |||
| ai (llimh '0 // words like Gaillimh | |||
| .group b | |||
| b b // broad | |||
| L01) b b; // slender | |||
| @@ -122,7 +129,7 @@ | |||
| bh (_ vv | |||
| bh (L22 vj // slender | |||
| L01) bh v | |||
| ?1 _m_) b (@ | |||
| ?1 _m_) b (@ | |||
| _) bhf v // urú broad | |||
| _) bhf (L22 v; // urú slender | |||
| _) bp b // urú broad | |||
| @@ -134,8 +141,10 @@ | |||
| a) bh (a U // for example cabhair | |||
| ear) bha u: // words like Cearbhall | |||
| bhfaigh v'aI | |||
| _) beann (@ ba#n | |||
| _) bheann (@ va#n | |||
| _) bun (C@P3 b,Un | |||
| .group c | |||
| c k | |||
| c (L01 k; // slender | |||
| @@ -143,19 +152,20 @@ | |||
| ch (L01 C; | |||
| ch (é+ C; | |||
| ch (ei+ x; | |||
| ?1 _g_) c (@ | |||
| ?1 _g_) c (L01 | |||
| ?1 _g_) c (@ | |||
| ?1 _g_) c (L01 | |||
| _) cabhr k'aUr | |||
| _) chabhr x'aUr | |||
| _) ceann (C@P5 k;,aUn | |||
| _) cheann (C@P6 C;,aUn | |||
| .group d | |||
| d d[ // broad | |||
| L01) d dZ // slender | |||
| d (L22 dZ // slender | |||
| d (L01 d; // slender | |||
| i) d (i dZ | |||
| ?1 _n_) d (@ | |||
| ?1 _n_) d (@ | |||
| dh Q // broad | |||
| dh (ui Q // broad | |||
| dh (ao Q // broad | |||
| @@ -165,6 +175,11 @@ | |||
| ?1 _) d (_t d[ | |||
| ?1 _) d (_tL01 dZ | |||
| _) d' (@P2 d | |||
| _) d' d | |||
| _) d (_'fh d | |||
| d'fh (L01 d | |||
| i) dh (_ g | |||
| a) dh (_ X | |||
| o) dh (_ X | |||
| @@ -174,8 +189,9 @@ | |||
| dheartháir gr@h'A:r | |||
| deirfiúr d;r@f'u:r | |||
| dheirfiúr g;r@f'u:r | |||
| _) do (Ch@@P2 d[,U_ | |||
| _) dí (@@P2 d,i: | |||
| .group e | |||
| e E# | |||
| eá A: | |||
| @@ -184,29 +200,39 @@ | |||
| r) ei (m aI | |||
| eighea aI | |||
| eighea aI | |||
| s) ei (nn aI | |||
| sh) ei (nn aI | |||
| eigh aI | |||
| eo o: | |||
| eogh o: | |||
| eoi o: | |||
| eogha o: | |||
| eoghai o: | |||
| d) eo (ch O# | |||
| dh) eo (ch O# | |||
| _) eo (ch O# | |||
| s) eo (_ @ | |||
| .group é | |||
| é 'e: | |||
| éi 'e: | |||
| éa 'e: | |||
| _) éi (rig aI // words like éirigh | |||
| _h) éi (rí aI | |||
| _) éi (rí aI // words like éirí | |||
| _) éireoidh aIro:Ig | |||
| éacs e:@ks | |||
| .group ea | |||
| ea a# | |||
| eai a# | |||
| X) ea (L21_ aU | |||
| ea (ltaine aU | |||
| g) ea (ll aU | |||
| l) eamh (n aU | |||
| dr) ea (m aU | |||
| X) ea (ch 0 | |||
| _L04) ea (g @ | |||
| _L04) ea (dh_ @ | |||
| @@ -217,7 +243,7 @@ | |||
| eanbhean 'an@v,an | |||
| eadhb aIb | |||
| .group f | |||
| f f // broad | |||
| f (L22 f; // slender | |||
| @@ -225,14 +251,16 @@ | |||
| fh (éin_ h | |||
| fh (L22 ; // slender | |||
| @) f (L06_ h | |||
| ?1 _bh_) f (@ | |||
| ?1 _bh_) f (L22 ; | |||
| _) fo (C@@P2 f,U | |||
| _) fogh f'aU | |||
| ?1 _bh_) f (@ | |||
| ?1 _bh_) f (L22 ; | |||
| .group g | |||
| g g // broad | |||
| g (L01 g; // slender | |||
| ?1 _n_) g (@ | |||
| ?1 _n_) g (@ | |||
| _) gh Q" | |||
| _) gh (L01 Q"j | |||
| _) gc g // urú broad | |||
| @@ -245,19 +273,24 @@ | |||
| gh (n X@ | |||
| gheobh j'o: | |||
| gabh gaU | |||
| _) gearr (C@P5 g;,aR | |||
| _) ghearr (C@P6 Q"j,aR | |||
| .group h | |||
| h h // silent | |||
| .group i | |||
| i I | |||
| _) i I | |||
| ia i@ | |||
| ia (tha i: | |||
| io O# | |||
| io (dá I | |||
| _) io (nadh u:// words like ionadh | |||
| s) io (mb I | |||
| sh) io (mb I | |||
| _pr) io (n u: | |||
| L16) inn (_ i:n | |||
| iai i:i | |||
| @@ -266,12 +299,18 @@ | |||
| L12) i i // non syllabic short i after long vowel | |||
| iú u: | |||
| m) i (d_ i: // verb ending | |||
| _) in (@@P2 ,In_ | |||
| _) ionad (C@@P5 ,Ona#d[ | |||
| .group í | |||
| í 'i: | |||
| íomh 'i:v | |||
| íochn 'i:xn | |||
| í (_ i: | |||
| ín (_ i:n | |||
| ío i:@ | |||
| .group l | |||
| l l // broad | |||
| L01) l l; // slender | |||
| @@ -280,8 +319,9 @@ | |||
| ll (L23 l; | |||
| l (g l@ | |||
| l (b l@ | |||
| _) lorg (@@P4 l,Or@g | |||
| _) lán (C@@P3 l,A:n | |||
| .group m | |||
| m m // broad | |||
| m (L20 m; //slender | |||
| @@ -296,8 +336,8 @@ | |||
| _) mh (n v@ | |||
| léir) mheas vas | |||
| r) m @m // words like gorm | |||
| _) mear (@@P4 m,ar | |||
| .group n | |||
| n n // broad | |||
| n (L01 n; // slender | |||
| @@ -318,8 +358,8 @@ | |||
| n (ch n@ | |||
| c) n @n | |||
| ch) n @n | |||
| _) nasc (C@@ n,0sk | |||
| .group o | |||
| o O# | |||
| _) o 'O | |||
| @@ -342,12 +382,13 @@ | |||
| odl (a O#l | |||
| oí i: | |||
| .group ó | |||
| ó 'o: | |||
| ómhai o:@ | |||
| ói (p@ 'o: | |||
| .group oi | |||
| oi O | |||
| _L15) oi (+ @'I | |||
| @@ -369,15 +410,16 @@ | |||
| _) oi (leá 'I | |||
| oidh aI | |||
| oir (_ 'ERR | |||
| _sc) oi (r O | |||
| oigh (ea aI | |||
| .group p | |||
| p p // broad | |||
| ph f // broad | |||
| p (L22 p; // slender | |||
| ph (L20 f; // slender | |||
| ?1 _b_) p (@ | |||
| ?1 _b_) p (@ | |||
| .group r | |||
| @@ -388,13 +430,13 @@ | |||
| L12i) r (t_ Z | |||
| rr R | |||
| rg r@g | |||
| rgh rQ" | |||
| L01) rg R@g // slender | |||
| r (bh r@ | |||
| ríomh ri:@v | |||
| s) r (A R | |||
| _) ramh raU | |||
| .group s | |||
| s s // broad | |||
| L01) s S // slender | |||
| @@ -402,13 +444,14 @@ | |||
| s (cL01 S | |||
| s (CCL01 S // slender | |||
| s (pCé s // broad | |||
| ?1 _t_) s (@ | |||
| ?1 _t_) s (@ | |||
| sh h | |||
| sh (CL01 h | |||
| sh (L01 h; | |||
| s (lL01 S | |||
| _') s (_ s // 's in poems etc | |||
| _) sain (@P4 s,an | |||
| .group t | |||
| t t[ // broad | |||
| L01) t c // slender | |||
| @@ -418,7 +461,7 @@ | |||
| ?1 _) t (_L01 c | |||
| L01C) t tS // slender after consonant | |||
| t (CL01 tS // slender with following consonant before vowels | |||
| ?1 _d_) t (@ | |||
| ?1 _d_) t (@ | |||
| th h | |||
| th (L01 h; | |||
| L01C) th h | |||
| @@ -432,7 +475,7 @@ | |||
| thne (_ h@nE | |||
| A) th (_ // silent th at word end | |||
| .group u | |||
| u U# | |||
| ua u@ | |||
| @@ -441,11 +484,14 @@ | |||
| uai (d ui | |||
| uá u:'A: | |||
| ui I | |||
| ui (s U | |||
| ui (sce_ I | |||
| uinn (_ 'i:n | |||
| uinti U#'i:ntI | |||
| _b) uí wi: | |||
| _bh) uí wi: | |||
| g) uí wi: | |||
| gh) uí wi: | |||
| umh u: | |||
| L03) ui @I | |||
| _d) u (l_ O# | |||
| @@ -453,8 +499,9 @@ | |||
| gh) ui (gh_ @i: | |||
| uí i: | |||
| uachai 'ux@ | |||
| _) uimhir (C@P6 ,IvIR | |||
| .group ú | |||
| ú u: | |||
| únmh u:nv | |||
| @@ -49,8 +49,8 @@ | |||
| .group ऊ | |||
| ऊ u | |||
| ऊं u~ // + anusvara | |||
| ऊँ u~ // + candrabinbu | |||
| ऊं (_ u~ // + anusvara | |||
| ऊँ (_ u~ // + candrabinbu | |||
| .group ऋ | |||
| ऋ rI | |||
| @@ -63,14 +63,19 @@ | |||
| .group ऎ | |||
| ऎ e | |||
| ऎं (_ e~ | |||
| ऎँ (_ e~ | |||
| .group ए | |||
| ए e: | |||
| एँ e~: | |||
| एं (_ e~: | |||
| ा) एँ (_ j | |||
| .group ऐ | |||
| ऐ E: // ?? [aI] [E:] [&:] | |||
| ऐं E~ | |||
| ऐँ E~ | |||
| ऐं (_ E~ | |||
| ऐँ (_ E~ | |||
| ?2 ऐ aI // ?? [aI] [E:] [&:] | |||
| @@ -79,16 +84,21 @@ | |||
| .group ऒ | |||
| ऒ o | |||
| ऒं (_ o~ | |||
| ऒँ (_ o~ | |||
| .group ओ | |||
| ओ o: | |||
| ओं o~ // +anusvara | |||
| ओँ o~ // +candrabindu | |||
| ओं (_ o~ // +anusvara | |||
| ओँ (_ o~ // +candrabindu | |||
| ा) ओं (_ w // +anusvara | |||
| ा) ओँ (_ w | |||
| .group औ | |||
| औ O: // ?? [aU] [O:] | |||
| औं O~ // +anusvara | |||
| औँ O~ // +candrabindu | |||
| औं (_ O~ // +anusvara | |||
| औँ (_ O~ // +candrabindu | |||
| ?3 औ aU // ?? [aU] [O:] | |||
| @@ -96,6 +106,9 @@ | |||
| .group ा | |||
| ा a: | |||
| ा (ँ a~ | |||
| ाँ (_ a~ | |||
| ां (_ a~ | |||
| ाव aU | |||
| .group ि | |||
| @@ -106,14 +119,21 @@ | |||
| .group ी | |||
| ी i: | |||
| ी (_ i | |||
| ी (ँ i~ | |||
| ीँ (_ i~ | |||
| ीं (_ i~ | |||
| .group ु | |||
| ु u | |||
| ु U | |||
| ु (ँ u~ | |||
| ुं (_ u~ | |||
| ुँ (_ u~ | |||
| .group ू | |||
| ू u: | |||
| ूं u~ // or O~ ?? | |||
| ूँ u~ | |||
| ू (ँ u~ | |||
| ूं (_ u~ // or O~ ?? | |||
| ूँ (_ u~ | |||
| .group ृ | |||
| ृ rI | |||
| @@ -126,14 +146,21 @@ | |||
| .group ॆ | |||
| ॆ e | |||
| ॆ (ँ e~ | |||
| ॆं (_ e~ | |||
| ॆँ (_ e~ | |||
| .group े | |||
| े e: | |||
| े (ँ e~ | |||
| ें (_ e~: | |||
| ेँ (_ e~: | |||
| .group ै | |||
| ै E: // ?? [aI] [E:] [&:] | |||
| ैं E~ | |||
| ैँ E~ | |||
| ै (ँ E~ | |||
| ैं (_ E~ | |||
| ैँ (_ E~ | |||
| ?2 ै aI // ?? [aI] [E:] [&:] | |||
| .group ॉ | |||
| @@ -141,16 +168,21 @@ | |||
| .group ॊ | |||
| ॊ o | |||
| ॊ (ँ o~ | |||
| ॊं (_ o~ | |||
| ॊँ (_ o~ | |||
| .group ो | |||
| ो o: | |||
| ों o~ | |||
| ोँ o~ | |||
| ो (ँ o~ | |||
| ों (_ o~ | |||
| ोँ (_ o~ | |||
| .group ौ | |||
| ौ O: // [O:] or [aU] ?? | |||
| ौं O~ | |||
| ौँ O~ | |||
| ौ (ँ O~ // [O:] or [aU] ?? | |||
| ौं (_ O~ | |||
| ौँ (_ O~ | |||
| ?3 ौ aU // [O:] or [aU] ?? | |||
| .group ॢ // vowel sign l | |||
| @@ -171,6 +203,9 @@ | |||
| क़ qV | |||
| क़ (B q | |||
| क्ष kSV | |||
| क्ष (B kS | |||
| .group ख | |||
| ख k#V | |||
| ख (B k# | |||
| @@ -206,15 +241,20 @@ | |||
| ज (B J | |||
| ज़ zV | |||
| ज़ (B z | |||
| ज्ञ gjV | |||
| ज्ञ (B gj | |||
| .group झ | |||
| झ J#V | |||
| झ (B J# | |||
| .group ञ | |||
| ञ n^V | |||
| ञ (B n^ | |||
| ्) ञ (_ n^ | |||
| ्) ञ (_ n^@ | |||
| .group ट | |||
| ट t.V | |||
| @@ -239,7 +279,7 @@ | |||
| ढ़ (B r.h // nukta | |||
| .group ण | |||
| ण n.V // (temporary) same as dental [n] | |||
| ण n.V | |||
| ण (B n. | |||
| ्) ण (_ n.@ | |||
| @@ -297,17 +337,19 @@ | |||
| न्) म (_ m // n +virama | |||
| .group य | |||
| य j@ | |||
| य jV | |||
| य (B j | |||
| C) य (_ Ej // [Ej] not [@j] | |||
| ्) य (_ j@ | |||
| .group र | |||
| र rV | |||
| र (B r | |||
| र (_ r | |||
| ्) र (_ r@ | |||
| .group ऱ // rra | |||
| ऱ rV // (temporary) same as [r] | |||
| ऱ rV // (temporary) same as [r] should this be [r.] or perhaps [z.] ? | |||
| ऱ (B r | |||
| ्) ऱ (_ r@ | |||
| @@ -332,21 +374,22 @@ | |||
| _) व wV | |||
| _) व (B w | |||
| _) व (् v // +virma | |||
| व (_ w | |||
| .group श | |||
| श SV | |||
| श (B S | |||
| .group ष | |||
| ष s.V //?? or retroflex [S] | |||
| ष (B s. //?? | |||
| ष s.V | |||
| ष (B s. | |||
| .group स | |||
| स sV | |||
| स (B s | |||
| .group ह | |||
| ह H | |||
| ह HV | |||
| ह (B H | |||
| @@ -4390,7 +4390,7 @@ elnökét $unstressend | |||
| (emelte ki) EmEltE_||ki $unstressend | |||
| tagságát $unstressend | |||
| (a szakadékot) A'||sAkAde:kot $unstressend | |||
| (az országban) Az_'||orsa:gbAn $unstressend | |||
| (az országban) Az_'||oR2sa:gbAn $unstressend | |||
| eszközét $unstressend | |||
| méretű $unstressend | |||
| ketyeg $unstressend | |||
| @@ -609,7 +609,7 @@ arcüre) g (gyulladás g | |||
| orszá) g (gyarapod g | |||
| anya) g (gyár g | |||
| anya) g (gyűjt g | |||
| végi) g (gya g | |||
| végi) g (gy g | |||
| me) ggy (mag J | |||
| me) ggy (íz J: | |||
| bádo) g (gy g | |||
| @@ -624,7 +624,7 @@ imádsá) g (gyűjt g | |||
| ro) ggyj (ék J: | |||
| rá) g (gyűjt g //for example virággyűjtés, virággyűjteményt words | |||
| _lo) g (gyűjt g //for example loggyűjtemény word | |||
| dro) g (gyanú g | |||
| dro) g (gy g | |||
| le) gg (roteszk g: | |||
| _agya) g (gy g | |||
| anya) g (győz g | |||
| @@ -649,6 +649,9 @@ csilla) g (gy g | |||
| hazugsá) g (gy g | |||
| tőze) g (gy g | |||
| doppin) g (gy g | |||
| baromsá) g (gy g | |||
| tehetsé) g (gy g | |||
| bete) g (gy g | |||
| .group gy | |||
| gy J | |||
| @@ -773,6 +776,7 @@ _egyszere) gy (e J: | |||
| _huszone) gy (e J: | |||
| száze) gy (edik J: | |||
| védje) gy (straté J | |||
| na) gy (sor J | |||
| .group h | |||
| h h | |||
| @@ -827,6 +831,7 @@ progressz) í (ve i: | |||
| sz) í (veré i: | |||
| sz) í (verő i: | |||
| sz) í (vevő i: | |||
| expressz) í (v i: | |||
| .group j | |||
| j j | |||
| @@ -1040,6 +1045,7 @@ teljesítmé) ny (j n^ | |||
| nem-lts n'Em||_!'Ellt,e:,ES //without this rule Espeak spokening the nem LTS text with one word, because general in hu_list have a $combine attribute the nem word. | |||
| n'Em _!'Ellt,e:,ES | |||
| porcelá) n (ny n | |||
| .group o | |||
| o o | |||
| @@ -1203,7 +1209,7 @@ juventu) ss s: | |||
| juventu) ssz s: //a radio station name | |||
| farka) ssz (em Ss | |||
| villamo) ssz (ék Ss | |||
| titko) ssz (olgál Ss | |||
| titko) ssz (olg Ss | |||
| karo) ssz (ék Ss | |||
| hú) ssz (elet Ss | |||
| vörö) ssz (em Ss | |||
| @@ -1722,6 +1728,29 @@ visszaélé) ssz Ss | |||
| esé) ssz (erű Ss | |||
| webe) ssz Ss | |||
| beleve) ssz (en s: | |||
| tengeré) ssz (ürk s: | |||
| hirdeté) ssz S|s | |||
| _ki) ssz (éri S|s | |||
| _ki) ssz (ersz S|s | |||
| _fűté) ssz S|s | |||
| _kontaktu) ssz S|s | |||
| _dió) ssz (ilá S|s | |||
| _konszenzu) ssz S|s | |||
| forgá) ssz (er S|s | |||
| mérkőzé) ssz S|s | |||
| művelődé) ssz S|s | |||
| _nyomá) ssz (in S|s | |||
| _oko) ssz S|s | |||
| oktatá) ssz (er S|s | |||
| pszichózi) ssz S|s | |||
| realitá) ssz S|s | |||
| szerződé) ssz S|s | |||
| születé) ssz (ám S|s | |||
| tölté) ssz (ak S|s | |||
| utazá) ssz (er S|s | |||
| zsarolá) ssz (er S|s | |||
| dőlé) ssz (ab S|s | |||
| .group sz | |||
| @@ -1932,6 +1961,7 @@ szögle) t (szob t | |||
| diva) t (cirk t | |||
| álla) t (cirk t | |||
| szen) t (szob t | |||
| koncer) t (jeg t | |||
| .group tj | |||
| C) tj c | |||
| @@ -2,6 +2,8 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling-to-phoneme words for Armenian | |||
| // ?1 West Armenian | |||
| // names of letters | |||
| _ա aIb | |||
| բ ben | |||
| @@ -20,7 +22,7 @@ _ը '@t# | |||
| կ ken | |||
| հ ho | |||
| ձ dza | |||
| ղ r"ad | |||
| ղ r"at | |||
| ճ ce | |||
| մ men | |||
| յ hi | |||
| @@ -30,15 +32,16 @@ _ը '@t# | |||
| չ tSa | |||
| պ pe | |||
| ջ dZe | |||
| ռ **a | |||
| ռ R2a | |||
| ս se | |||
| վ vev | |||
| տ tyn | |||
| ր re | |||
| ց tso | |||
| ց ts#o | |||
| ւ hyn | |||
| փ p#yr | |||
| ք k#e | |||
| և jev | |||
| _օ o | |||
| ֆ fe | |||
| @@ -52,6 +55,24 @@ d di | |||
| e e | |||
| f ef | |||
| // symbols | |||
| $ dolar | |||
| % տոկոս $text | |||
| * աստղանիշ $text | |||
| + գումարած $text | |||
| = հավասար $text | |||
| _՝ b'ut# | |||
| _՞ harts#ak'an | |||
| _՛ S'eSt | |||
| _։ verdZak'et // U+0589 | |||
| _: verdZak'et | |||
| _, storak'et | |||
| _. midZak'et | |||
| _֊ jent#amn'a // hyphen | |||
| _՜ bats#akantSut#j'un | |||
| _՟ pat'iw | |||
| // numbers | |||
| @@ -82,5 +103,41 @@ _dpt _sto**ak'el_ | |||
| // function words | |||
| ես $u+ // pronouns | |||
| դու $u+ | |||
| եք $u+ | |||
| Դուք $u+ | |||
| նա $u+ | |||
| այն $u+ | |||
| մենք $u+ | |||
| նրանք $u+ | |||
| դուք $u+ | |||
| ենք $u+ | |||
| են $u+ | |||
| այդ $u+ | |||
| այս $u+ | |||
| դա $u+ | |||
| որ $u+ | |||
| էր $u+ | |||
| մի $u+ | |||
| է $u+ | |||
| հետ $u+ // prepositions | |||
| եվ $u+ // and | |||
| իսկ $u+ $brk // and, but | |||
| կամ $u+ // or | |||
| որը $u+ // which | |||
| կարող $u+ // can | |||
| // exceptions | |||
| ով ov | |||
| ովքեր ovk#er | |||
| @@ -2,8 +2,10 @@ | |||
| // (consonants are changed for Armenian-West in the voice file "hy-west") | |||
| // This file is UTF-8 encoded | |||
| // ?1 West Armenian | |||
| .L01 բ գ թ կ պ տ ք | |||
| .L02 ու այ իւ իյ ոյ // other vowel sounds | |||
| .L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||
| // ligature | |||
| .replace | |||
| @@ -12,7 +14,7 @@ | |||
| .group ա | |||
| ա a | |||
| այ aI | |||
| այ (K aI | |||
| այ (_ a | |||
| .group բ | |||
| @@ -41,7 +43,7 @@ | |||
| .group է | |||
| է e | |||
| էօ W | |||
| էյ eI | |||
| էյ (K eI | |||
| .group ը | |||
| ը @ | |||
| @@ -57,7 +59,7 @@ | |||
| ի i | |||
| իւ y | |||
| իւ (_ iv | |||
| իյ i@ | |||
| իյ (K i@ | |||
| .group լ | |||
| լ l | |||
| @@ -97,8 +99,9 @@ | |||
| L02) մ (_ m | |||
| .group յ | |||
| յ h // ?? [j] | |||
| _) յ h // ?? [j] | |||
| _) յ (C h@ | |||
| յ j | |||
| .group ն | |||
| ն n | |||
| @@ -133,8 +136,8 @@ | |||
| _) ջ (C dZ@ | |||
| .group ռ | |||
| ռ ** | |||
| _) ռ (C **@ | |||
| ռ R2 | |||
| _) ռ (C R2@ | |||
| .group ս | |||
| ս s | |||
| @@ -151,6 +154,7 @@ | |||
| .group ր | |||
| ր r | |||
| L02) ր (L02 * | |||
| _) ր (C r@ | |||
| C) ր (_ @r | |||
| L02) ր (_ r | |||
| @@ -178,7 +182,5 @@ | |||
| ֆ f | |||
| _) ֆ (C f@ | |||
| .group | |||
| $ dol@ | |||
| @@ -36,6 +36,8 @@ _s Es | |||
| _t te: | |||
| _cap h'o:fdlEt@r | |||
| _sub s'8pskrIpt|| | |||
| _sup s'yp@rskrIpt|| | |||
| _?A l'Et@r | |||
| _?? s'imbo:l | |||
| @@ -112,7 +114,7 @@ _6X z'Est@x | |||
| _7X z'e:v@nt@x | |||
| _8X t'Axt@x | |||
| _9X n'e:g@nt@x | |||
| _0C h'OndErt | |||
| _0C h'Ond@rt | |||
| _0M1 d'WyzEnt | |||
| _0M2 m'iljun | |||
| _0M3 m'iljArt | |||
| @@ -377,6 +379,7 @@ keten $alt | |||
| loochen $alt | |||
| oefen $alt | |||
| open $alt | |||
| reden $alt | |||
| regen $alt | |||
| reken $alt | |||
| schepen $alt | |||
| @@ -687,6 +690,7 @@ wapper $alt | |||
| water $alt | |||
| wedijver $alt | |||
| wegwijzer $alt | |||
| weiger $alt | |||
| wester $alt | |||
| wijder $alt | |||
| wilder $alt | |||
| @@ -1097,6 +1101,7 @@ gijzel $alt | |||
| gispel $alt | |||
| gniffel $alt | |||
| goochel $alt | |||
| googel $alt | |||
| gorgel $alt | |||
| grabbel $alt | |||
| grendel $alt | |||
| @@ -1403,6 +1408,7 @@ vondel $alt | |||
| accessoire aksEsw'ar@ | |||
| accessoires aksEsw'ar@s | |||
| actiepunt Aksip8nt | |||
| actieve Akt'iv@ | |||
| adhesie Ath'e:zi | |||
| agenda $2 | |||
| aldus Ald'8s | |||
| @@ -1452,6 +1458,7 @@ december $2 | |||
| desillusie dEsIlyzi | |||
| dieet $2 | |||
| diesel diz@l | |||
| diner din'e: | |||
| //discussie $2 | |||
| divers div'Ers | |||
| diftongering dIft,ON'e:rIN | |||
| @@ -1461,6 +1468,7 @@ eensgelijks e:nsQ@l'EIks | |||
| elfstedentocht ,Elf'ste:d@ntoQt | |||
| embouchuur A~buS'yr // embouchure | |||
| enorm $2 | |||
| enquête A~k'Et@ $alt2 | |||
| erosie e:r'o:zi | |||
| eucharistie $4 | |||
| explosie $2 | |||
| @@ -1484,6 +1492,9 @@ informatie $3 | |||
| invasie $2 | |||
| januari $3 | |||
| kadaster $2 | |||
| leesregel le:sre:Q@l | |||
| lunch l8nS | |||
| lunches l8nS@s | |||
| mangat $alt3 | |||
| materie ma:t'e:ri | |||
| maatregel ma:tre:Q@l $alt2 | |||
| @@ -1529,6 +1540,7 @@ ongerieflijk $3 | |||
| partijvoorzitters $2 | |||
| periferie pI:rifI:r'i | |||
| pistache pist'AS | |||
| privilege privil'e:Z@ $alt2 | |||
| proces $2 | |||
| projectielen $3 | |||
| renaissance rEne:s'A~s@ | |||
| @@ -1546,13 +1558,16 @@ serie sI:ri | |||
| sms'jes EsEm'Es_j@s | |||
| spektakel $2 | |||
| tegennatuur $4 | |||
| tralie $1 | |||
| travestie $3 | |||
| verderop $3 | |||
| vergezicht vErQ@zIxt | |||
| verre vEr@ | |||
| verrekijker vEr@kEIk@r | |||
| verste vErst@ | |||
| verte vErt@ | |||
| volledig $2 | |||
| voordeel $1 | |||
| vrouwengek $alt3 | |||
| waarschijnlijk $2 | |||
| wanen v#a:n@n | |||
| @@ -20,15 +20,17 @@ | |||
| @@C) a (_ =a: | |||
| _) aan (@P3 'a:n | |||
| @) aar (_S3 a:r | |||
| @) aard (_S4 a:rt | |||
| &) aar (_S3 a:r | |||
| &) aard (_S4 a:rt | |||
| aa (rd_ 'a: | |||
| aa (C_ 'a: | |||
| z) aa (m_ a: | |||
| t) a (bleau a: | |||
| @) abel (_ 'a:b@l | |||
| @) abele (_ 'a:b@l@ | |||
| @) ace (_ e:s // ?? interface | |||
| m) ach (in %a:S | |||
| _) actie (@P5 'Aksi | |||
| _) af (C@P2 'Af | |||
| _) affich %AfiS | |||
| age (_ 'a:Z@ | |||
| @@ -64,11 +66,16 @@ | |||
| baan ba:n | |||
| &) baar (_S4 =ba:r | |||
| &) bare (_S4 =ba:r@ | |||
| _) bedrijfs (@P8 b@dr'EIfs | |||
| _) belasting (@P9 b@l'AstIN | |||
| _) beleids (@P7 b@l'EIts | |||
| _) bij (C@P3 b'EI | |||
| bij (zond b%i | |||
| _) bijeen bEI'e:n | |||
| _) binnen (P6 b'In@n | |||
| _) boek (@P4 b'uk | |||
| _) boven (P5 b'o:v@n | |||
| _) braille (@P7 br'Aj@ | |||
| _) brand br'And | |||
| _) buiten (P6 b'Wyt@n | |||
| _) buurt (@@P5 b'yrt // buurtbewoner | |||
| @@ -100,6 +107,7 @@ | |||
| _) be (zem be: | |||
| _) be (zig be: | |||
| _) beu bY: | |||
| _) bezoekers (@P9 b@z'uk@rs | |||
| .group c | |||
| @@ -114,9 +122,12 @@ | |||
| @) ci (ë S | |||
| ci (o S | |||
| ck k | |||
| ces (_ s'Es | |||
| coach ko:tS | |||
| _) computer (@P8 kOmpj'ut@r | |||
| _) congres kOnQr'Es | |||
| _) concentratie (@P12 kOnsEntr'a:tsi | |||
| co (ncert k%O | |||
| @@ -239,7 +250,7 @@ | |||
| &) end (_ @nd | |||
| &) ende (_S1 @ | |||
| &) enden (_S2 @n | |||
| eden e:d@n | |||
| eden (_ e:d@n // ?? | |||
| @) ent (_ 'Ent | |||
| @) ent (e_ 'Ent | |||
| @) ent (en_ 'Ent | |||
| @@ -253,6 +264,7 @@ | |||
| @z) es (_S1 s | |||
| @) es (_S2qd 'Es // double the previous vowel | |||
| @) es (_$w_alt2S1 s // just remove 's' | |||
| @) e (s_$p_alt2+S1 s | |||
| KAC) es (_S2e @s | |||
| mb) es (_S1 s | |||
| nd) es (_S1 s | |||
| @@ -273,6 +285,7 @@ | |||
| @) eur (_ 'Y:r | |||
| &) e (nB@ E2 | |||
| &) e (ntig @ | |||
| _p) e (nibel e: | |||
| id) e (nt E | |||
| pres) e (nt E | |||
| @@ -315,11 +328,14 @@ | |||
| er (ij_ @r | |||
| tol) er (abel @r | |||
| mis) er (abel @r | |||
| hond) er (d_ @r | |||
| _) erger ErQ@r // ergeren | |||
| &) era (_ @ra: | |||
| @) er (aar_ @r | |||
| &) er (C@ E2r | |||
| .group ê | |||
| ê E | |||
| .group f | |||
| f f | |||
| @@ -334,17 +350,21 @@ | |||
| @) gi (eus Z | |||
| @) gi (euz Z | |||
| reli) gi (eu Qij | |||
| _) goog (el gu:g | |||
| .group ge | |||
| _) ge (@P2 Q@ | |||
| ge (bied Q@ | |||
| _) gebruikers (@P10 Q@br'Wyk@rs | |||
| _) gee Qe: | |||
| _) gei QEI | |||
| gener (aal Q,e:n@r | |||
| _) gelijk Q@lEIk | |||
| _) ge (lC QE | |||
| _) ge (rC QE | |||
| _) ge (lenL02 Qe: | |||
| _) ge (tenL02 Qe: | |||
| _) geu QY: | |||
| _) ge (ven Qe: | |||
| _) ge (ver Qe: | |||
| @@ -365,6 +385,7 @@ | |||
| _) herinn h%ErIn // herinneren | |||
| _) hersen h'Ers@n | |||
| &) heid (_S4 hEIt | |||
| _) honden (@P6 h'Ond@n | |||
| _) hulp (@@P4 h'8lp | |||
| @@ -425,10 +446,11 @@ | |||
| &) ika (_ =ika: | |||
| &) iko (_ =iko: | |||
| _) in (C@P2 'In | |||
| // _) in (gP2 'In | |||
| _) in (do In | |||
| ine (_ 'in@ | |||
| ines (_ 'in@s | |||
| _) inn (@P2 'I // ?? inneren | |||
| _) inter Int@r | |||
| io (nage iO | |||
| io (de_ i'o: | |||
| iodes (_ i'o:d@s | |||
| @@ -439,10 +461,12 @@ | |||
| @) isme (_ 'Ism@ | |||
| @) ist (_ 'Ist | |||
| @) isten (_ 'Ist@n | |||
| _) inn (@P2 'I // ?? inneren | |||
| .group j | |||
| j j | |||
| _) jaar (@P4 j'a:r | |||
| jaar (lijk ja:r | |||
| jou (rna Zu | |||
| @@ -451,6 +475,9 @@ _) inn (@P2 'I // ?? inneren | |||
| k) k | |||
| _) kale (nde ka:l'E | |||
| _) kantoor (@P7 kAnt'o:r | |||
| _) keuze (@P5 k'Y:z@ | |||
| _) kinder (@P6 k'Ind@r | |||
| kokkerel kOk@r'El | |||
| _) koning k'o:nIN // in compounds | |||
| _) koningin ko:nIQ'In | |||
| @@ -465,10 +492,14 @@ _) inn (@P2 'I // ?? inneren | |||
| &) lijker (_S6 l@k@r | |||
| &) lijkere (_S7 l@k@r@ | |||
| &) lijkheid (_S8 l@khEIt | |||
| &) lijkheden (_S9 l@khe:d@n | |||
| // &) lijks@ (_ l@ks@ | |||
| &) lijkst (_S6 l@kst | |||
| &) lijkste (_S7 l@kst@ | |||
| &) laan (_S4 la:n | |||
| _) lange (@P5 laN@ | |||
| _) liefdes (@P7 l'ifd@s | |||
| @) loog (_ lo:x | |||
| @) loos (_S4 lo:s | |||
| @) loze (_S4 lo:z@ | |||
| @@ -482,6 +513,7 @@ _) inn (@P2 'I // ?? inneren | |||
| management ma:nIdZm@nt | |||
| _) mee (@P3 m'e: | |||
| _) mee (rC mI: | |||
| menu (_ m@ny | |||
| _) mi (cro mi | |||
| _) mi (s@ m%I | |||
| @@ -498,6 +530,7 @@ _) inn (@P2 'I // ?? inneren | |||
| _) mis (loP3 m'Is | |||
| _) mis (tA m'Is | |||
| _) misver (@ m'Isf@r | |||
| _) muziek (@P6 myz'ik | |||
| .group n | |||
| n n | |||
| @@ -512,6 +545,7 @@ _) inn (@P2 'I // ?? inneren | |||
| _) na (C@N n'a: | |||
| _) na (C% nA | |||
| _) na (cht nA | |||
| _) najaars (@P7 n'a:ja:rs | |||
| _) narci (s n%ArsI | |||
| _) na (rc n%A | |||
| _) na (der na: | |||
| @@ -524,10 +558,11 @@ _) inn (@P2 'I // ?? inneren | |||
| na (vig n%a: | |||
| _) na (vr na: | |||
| _) na (volg@ n%a: | |||
| _) noord (@P5 no:rd | |||
| _) nieuws (@P6 n'iws | |||
| @@) nis (_S3 nIs | |||
| @@) nisen (_S5 nIs@n | |||
| _) noord (@P5 no:rd | |||
| _) notitie (@P7 no:t'itsi | |||
| .group o | |||
| @@ -571,6 +606,8 @@ _) inn (@P2 'I // ?? inneren | |||
| tr) ou (vail u | |||
| ouve (rtu uvE | |||
| _) over (@P4 ,o:v@r | |||
| _) overigen o:v@r@Q@n | |||
| _) overheid 'o:v@rhEIt | |||
| t) ou (r u: | |||
| @@ -628,20 +665,25 @@ _) inn (@P2 'I // ?? inneren | |||
| C) r (A r | |||
| rr *r | |||
| recherch r@SErS | |||
| revanch r@vA~nS | |||
| route rut@ // route(s) | |||
| .group re | |||
| _) re (geren r@ | |||
| _) re (geer r@ | |||
| _) regel re:Q@l | |||
| _) re (cent r@ | |||
| _) re (cept r@ | |||
| _) re (ceptief re: | |||
| _) re (ces r@ | |||
| _) re (clam r@ | |||
| _) register r@Q'Ist@r | |||
| reme (die r@m'e: | |||
| _) re (serve_ r@ | |||
| _) re (cord re' | |||
| _) regering r@Q'I:rIN | |||
| repre (saill re:pre: | |||
| recherch r@SErS | |||
| revanch r@vA~nS | |||
| .group s | |||
| @@ -677,7 +719,10 @@ _) inn (@P2 'I // ?? inneren | |||
| @) ssi (o S | |||
| CAr) sie (_ =zi | |||
| _) stads (@P5 st'Ats | |||
| _) stage (@P5 st'a:Z@ | |||
| _) standaard (@P9 st'Anda:rt | |||
| _) start (@P5 st'Art | |||
| @) straat (_S6 stra:t | |||
| _vre) s (e s | |||
| @@ -767,9 +812,12 @@ _) inn (@P2 'I // ?? inneren | |||
| _) ver (@P3 v@r | |||
| _) ver (sie_ vEr | |||
| _) verder vErd@r | |||
| _) verge (@P5 vErg@ | |||
| _) verge (le v@rQ'e: | |||
| _) verkeers (@P8 v@rk'I:rs | |||
| // _) verge (@P5 vErg@ | |||
| // _) verge (le v@rQ'e: | |||
| _) voorjaars (@P9 v'O:rja:rs | |||
| _) voort (@P5 v'O:rt | |||
| _) vrijwilligers (@P13 vrEIv#'Il@Q@rs | |||
| .group w | |||
| @@ -788,11 +836,15 @@ _) inn (@P2 'I // ?? inneren | |||
| _) wanstaltig v#Anst'Alt@Q | |||
| _) wantrouwig v#Antr'VU@Q | |||
| _) wanvoeglijk v#Anv'uxl@k | |||
| _) water (@P5 v#'a:t@r | |||
| _) weers (@P5 v#'I:rs | |||
| _) weg (@P3 v#'EQ | |||
| _) weg (en v#e:Q | |||
| _) weg (e_ v#e:Q // bewegelijk | |||
| _) werk (@P4 v#'Erk | |||
| _) west (@P4 v#Est | |||
| _) wr vr | |||
| _) woon (@P4 v#'o:n | |||
| _) wr (@ vr | |||
| .group x | |||
| @@ -371,12 +371,12 @@ | |||
| ੱ) ਯ (_ j: | |||
| .group ਰ | |||
| ਰ RV | |||
| ਰ (B R | |||
| @) ਰ (_ R | |||
| ੱ) ਰ R:V | |||
| ੱ) ਰ (B R: | |||
| ੱ) ਰ (_ R: | |||
| ਰ rV | |||
| ਰ (B r | |||
| @) ਰ (_ r | |||
| ੱ) ਰ r:V | |||
| ੱ) ਰ (B r: | |||
| ੱ) ਰ (_ r: | |||
| .group ਲ | |||
| ਲ lV | |||
| @@ -121,8 +121,8 @@ _w vu | |||
| x iks | |||
| y 'igREk | |||
| _z zEt | |||
| ż Z;Et | |||
| ź ZEt | |||
| ż ZEt | |||
| ź Z;Et | |||
| ä $accent | |||
| ö $accent | |||
| @@ -23,8 +23,8 @@ | |||
| // accent names | |||
| _lig ligad'u*& | |||
| _acu &g'udU | |||
| _ac2 &g'udUd'uplU | |||
| _acu ag'udU | |||
| _ac2 ag'udUd'uplU | |||
| _brv bR'Evi | |||
| _ced sedZ'ilj& | |||
| ?1 _ced syd'il^& | |||
| @@ -69,6 +69,8 @@ v ve // not Roman numbers | |||
| x Sis# | |||
| _cap maI'uskulU | |||
| _sub ||subskR'itU | |||
| _sup ||sob*eskR'itU | |||
| _?A l'etR&_ | |||
| _?? s'imbolU_ | |||
| _#32 esp'asU | |||
| @@ -81,9 +83,10 @@ _#9 tab | |||
| + maIs# $max3 | |||
| % pors'eINtU $max3 | |||
| & _'e_ | |||
| @ &x'ob& | |||
| @ ax'ob& | |||
| ¤ 'eU*U | |||
| € 'eU*U | |||
| £ l'ibR& | |||
| § p&*'agRafU | |||
| @@ -115,8 +118,9 @@ _[ ,abRikowS'etSi | |||
| _\ b,ax&,iNvertS'id& | |||
| _] f,ES&kowS'etSi | |||
| _^ s,irku~Nfl'Eksu | |||
| _´ as'eINtu,ag'udU | |||
| __ s,ublin^'adu | |||
| _` gR'avi | |||
| _` gR'avi | |||
| _{ ,abRiS'avi | |||
| ?1 _| b,ax&v,ertSik'al | |||
| ?2 _| b,ax&v,ertSik'aU | |||
| @@ -127,8 +131,10 @@ _¡ ,eskl&mas,&U~,iNvertS'id& | |||
| _¿ ,iNtex,ogas,&U~,iNvertS'id& | |||
| _" 'abRi;'asp&||d'upl&s# | |||
| _º Oz'in^U | |||
| _ª az'in^U | |||
| ?1 º O*@-din'almaskul'i~nU | |||
| ?2 º o*@-dZin'aUmaskul'i~nU | |||
| ?1 ª O*@-din'alfemin'i~nU | |||
| ?2 ª o*@-dZin'aUfemin'i~nU | |||
| ° gR'aU | |||
| @@ -182,12 +188,12 @@ _8X oIt'eINt& | |||
| ?2 _9X nov'eINt& | |||
| _1C0 s'eIN | |||
| ?1_0C s'eINtus# | |||
| ?2_0C s'eINtUs# | |||
| ?2_0C s'eINtUz | |||
| _1C s'eINtu | |||
| ?1_2C duz'eINtus# | |||
| ?2_2C duz'eINtUz | |||
| ?1_3C tryz'eNtus# | |||
| ?2_3C tRez'eNtUz | |||
| ?1_3C tryz'eINtus# | |||
| ?2_3C tRez'eINtUz | |||
| ?1_5C kin^'eINtus# | |||
| ?2_5C kin^'eINtUz | |||
| ?1_0M1 m'il_ | |||
| @@ -293,13 +299,16 @@ unts $abbrev | |||
| usb $abbrev | |||
| dr $dot | |||
| dra $dot | |||
| mr $dot | |||
| mrs $dot | |||
| prof pr'Of $dot | |||
| dr dowtor $dot | |||
| dra dowt'o*& $dot | |||
| mr m'ister $dot | |||
| mrs m'irsys $dot | |||
| prof pR'Of $dot | |||
| profº pR,ofes'or | |||
| profª pR,ofes'o*& | |||
| engº eInZen^'eI*U | |||
| engª eInZen^'eI*& | |||
| nº n'u~me*U | |||
| sr $dot | |||
| ?1 sra ,Es;'Errj'a $dot | |||
| ?2 sra $dot | |||
| @@ -333,7 +342,7 @@ me $u $verbf // reflexive | |||
| te $u $verbf | |||
| nos $u $nounf | |||
| la $u | |||
| lo $u | |||
| lo lU $u | |||
| las $u | |||
| los $u | |||
| se $u | |||
| @@ -348,11 +357,10 @@ essa 'Es& $u+ $noun | |||
| desse $u+ $nounf | |||
| desta $nounf | |||
| nesse n'esy $u+ $nounf | |||
| aquele &k'ely $u+ $nounf // that | |||
| aquela $u+ $nounf | |||
| daquele d&k'ely $u+ $nounf | |||
| aquele $alt2 $nounf | |||
| daquela $u+ $nounf | |||
| daquele $alt2 $nounf | |||
| que $u // pronunciation is in pt_rules | |||
| // possessive adjectives | |||
| @@ -374,7 +382,7 @@ nele nely $u1+ | |||
| // prepositions | |||
| de $u $nounf // of,from | |||
| do $u $nounf | |||
| do du $u $nounf | |||
| da $u $nounf | |||
| dos $u $nounf | |||
| das $u $nounf | |||
| @@ -384,7 +392,7 @@ duns $u $nounf | |||
| dumas $u $nounf | |||
| em $u $noun // in,on,at | |||
| no nu $u $nounf | |||
| no nU $u $nounf | |||
| na $u $nounf | |||
| num $u $nounf | |||
| numa $u $nounf | |||
| @@ -402,7 +410,7 @@ aos $u $nounf | |||
| às ,a:s $nounf | |||
| para $u // for,to | |||
| pro $u $nounf | |||
| pro pRU $u $nounf | |||
| pra $u $nounf | |||
| pros $u $nounf | |||
| pras $u $nounf | |||
| @@ -426,7 +434,7 @@ com $u // with | |||
| // conjunctions | |||
| ?1 e i $u // and | |||
| ?2 e i $u // and | |||
| se $u+ $verbf // if | |||
| se $u+ // if | |||
| ?2 mas $u // but | |||
| @@ -592,10 +600,10 @@ pôde $u+ | |||
| pudemos $u+ | |||
| puderam $u+ | |||
| poderei $u3+ | |||
| poderá $u3+ | |||
| poderemos $u+ | |||
| poderão $u+ | |||
| poderei p%ode*eI $u+ | |||
| poderá p%ode*a $u+ | |||
| poderemos p%ode*'emUs $u+ | |||
| podeão p%ode*&U~ $u+ | |||
| // ir - to go (used to make future tense) | |||
| @@ -636,8 +644,10 @@ jamais $u+ $verbf | |||
| abacaxi abakaSy | |||
| abordo $alt | |||
| aborto $alt $verb | |||
| absorta $alt2 | |||
| acerto $alt2 $noun | |||
| acertos $alt2 | |||
| acocho $alt2 $noun | |||
| acordo $alt $verb | |||
| acervo $alt2 | |||
| adepto $alt | |||
| @@ -645,14 +655,19 @@ adore $alt | |||
| adorno $alt $verb | |||
| aeroporto $alt2 | |||
| aeroportos $alt | |||
| albatrozes $alt | |||
| alcateia $alt | |||
| alcova $alt2 | |||
| alegro $alt2 $noun | |||
| alferes $alt | |||
| algozes $alt | |||
| almoço $alt $verb | |||
| ameba $alt | |||
| amores $alt2 | |||
| amorno $alt | |||
| amuleto $alt2 | |||
| ampere $alt | |||
| ampola $alt2 | |||
| ampulheta $alt2 | |||
| andorra $alt2 | |||
| antonieta $alt2 | |||
| apego $alt2 $noun | |||
| apelo $alt2 $noun | |||
| @@ -662,25 +677,31 @@ apneia $alt | |||
| apoio $alt $verb | |||
| arredores $alt | |||
| arremesso $alt2 $noun | |||
| arrocho $alt2 $noun | |||
| arroto $alt2 $noun | |||
| arroz $alt2 | |||
| assembleia $alt | |||
| assopro $alt2 $noun | |||
| ateia $alt | |||
| aterro $alt2 | |||
| aterro $alt $verb | |||
| atmosfera $alt | |||
| atrozes $alt | |||
| autora $alt2 | |||
| avesso $alt2 | |||
| axé aSE | |||
| azeda $alt $verb | |||
| azedo $alt $verb | |||
| bairro b'aIxU | |||
| baqueta $alt2 | |||
| banqueta $alt2 | |||
| banquete $alt2 | |||
| bastonete $alt2 | |||
| beco $alt2 | |||
| besta $alt2 | |||
| bilhete $alt2 | |||
| bissulfeto $alt2 | |||
| boca $alt2 | |||
| boceta $alt2 | |||
| bochecha $alt2 | |||
| bofe $alt | |||
| bojo $alt2 | |||
| boleia $alt | |||
| bolero $alt | |||
| @@ -691,36 +712,47 @@ bordo $alt | |||
| borra $alt2 $noun | |||
| bosque $alt | |||
| boto $alt2 $noun | |||
| boxe $alt | |||
| boxe $alt | |||
| brejo $alt | |||
| bromelha $alt | |||
| broto $alt2 $noun | |||
| cabelo $alt2 | |||
| cabresto $alt2 | |||
| cacete $alt2 | |||
| cachorra $alt2 | |||
| caderneta $alt2 | |||
| cadete $alt2 | |||
| cãibra k'&~IbR& | |||
| caibro k'aIbRU | |||
| caixeta $alt2 | |||
| camelha $alt | |||
| camelo $alt2 | |||
| caminhonete $alt | |||
| camiseta $alt2 | |||
| canaleta $alt2 | |||
| canhoto $alt2 | |||
| cantora $alt2 | |||
| capacete $alt2 | |||
| caractere $alt | |||
| carbureto $alt2 | |||
| careta $alt2 | |||
| carrapeta $alt2 | |||
| carreta $alt2 | |||
| carroça $alt | |||
| casebre $alt | |||
| cateto $alt2 | |||
| catorze $alt2 | |||
| cebola $alt2 | |||
| cedro $alt | |||
| cefaleia $alt | |||
| cerebelo $alt2 | |||
| centopeia $alt | |||
| cerca $alt | |||
| cerca $alt2 $noun | |||
| cerco $alt $verb | |||
| chamego $alt2 | |||
| cerda $alt | |||
| cetro $alt | |||
| chamego $alt2 $verb | |||
| chaveta $alt2 | |||
| chefe $alt | |||
| checam $alt | |||
| choro $alt2 $noun | |||
| @@ -728,10 +760,11 @@ chovesse $alt2 | |||
| chupeta $alt2 | |||
| clamores $alt2 | |||
| clero $alt | |||
| cloreto $alt2 | |||
| coche $alt2 | |||
| coco $alt2 | |||
| cofre $alt | |||
| coice $alt2 | |||
| colabore $alt | |||
| colete $alt2 | |||
| colchete $alt2 | |||
| colher $alt $noun | |||
| @@ -746,6 +779,7 @@ concordo $alt | |||
| conforto $alt $verb | |||
| console $alt2 $noun | |||
| consolo $alt2 $noun | |||
| constroem $alt | |||
| controle $alt2 $noun | |||
| controles $alt2 | |||
| controles $alt $verb | |||
| @@ -754,24 +788,32 @@ coreia $alt | |||
| coreto $alt2 | |||
| corneta $alt2 | |||
| cornos $alt | |||
| coro $alt2 | |||
| coro $alt $verb | |||
| corpos $alt | |||
| corto $alt | |||
| corveta $alt2 | |||
| corvos $alt | |||
| costeleta $alt2 | |||
| coto $alt2 | |||
| cotovelo $alt2 | |||
| cratera $alt | |||
| crede $alt2 | |||
| credo $alt | |||
| crepe $alt | |||
| decore $alt | |||
| decoro $alt2 $noun | |||
| degelo $alt2 | |||
| desapego $alt2 $noun | |||
| descordo $alt | |||
| desemprego $alt2 | |||
| desemprego $alt $verb | |||
| desespero $alt2 $noun | |||
| desespero $alt2 | |||
| desespero $alt $verb | |||
| desfecho $alt2 | |||
| desmantelo $alt2 $noun | |||
| despojo $alt2 $noun | |||
| despojos $alt | |||
| desporto $alt2 | |||
| desportos $alt | |||
| desprezo $alt2 $noun | |||
| @@ -786,10 +828,13 @@ dez $alt | |||
| diarreia $alt | |||
| diego $alt2 | |||
| discordo $alt | |||
| dobro $alt2 $noun | |||
| dissabores $alt2 | |||
| dispneia dZIspyn'EI& | |||
| dobro $alt2 | |||
| dobro $alt $verb | |||
| doce $alt2 | |||
| doutora $alt2 | |||
| droga $alt | |||
| doze $alt2 | |||
| dueto $alt2 | |||
| elixir eliSir | |||
| emprego $alt2 $noun | |||
| @@ -801,9 +846,9 @@ engordo $alt | |||
| enredo $alt $verb | |||
| enrosco $alt $verb | |||
| enterro $alt2 $noun | |||
| enumerem $alt | |||
| entorto $alt | |||
| entroso $alt | |||
| envelope $alt | |||
| envolto $alt2 | |||
| enxaqueca $alt2 | |||
| enxerto $alt2 $noun | |||
| epopeia $alt | |||
| @@ -812,10 +857,10 @@ erro $alt2 | |||
| erro $alt $verb | |||
| esboço $alt $verb | |||
| escopeta $alt2 | |||
| escova $alt2 $noun | |||
| escovas $alt2 | |||
| escore $alt | |||
| escova $alt2 | |||
| escova $alt $verb | |||
| escovo $alt | |||
| escroto $alt2 | |||
| esforço $alt $verb | |||
| esforços $alt | |||
| esgoto $alt2 | |||
| @@ -827,27 +872,30 @@ espoleta $alt2 | |||
| esposa $alt2 | |||
| esqueleto $alt2 | |||
| estilete $alt2 | |||
| estrela $alt2 | |||
| estrofe $alt | |||
| estorno $alt $verb | |||
| estorvo $alt $verb | |||
| estrela $alt2 | |||
| estrofe $alt | |||
| estrogonofe $alt | |||
| eta $alt2 | |||
| etiqueta $alt2 | |||
| europa $alt | |||
| europeia $alt | |||
| exagero $alt $verb | |||
| explore $alt | |||
| faceta $alt2 | |||
| fantoche $alt | |||
| falangeta $alt2 | |||
| farofa $alt | |||
| farolete $alt2 | |||
| farolete $alt2 | |||
| febre $alt | |||
| fera $alt | |||
| feitora $alt2 | |||
| ferozes $alt | |||
| fezes $alt | |||
| filete $alt2 | |||
| ?1 fixe fiSy | |||
| flerte $alt2 $noun | |||
| foda $alt2 $verb | |||
| fodo $alt2 | |||
| fogos $alt | |||
| foguete $alt2 | |||
| foice $alt2 | |||
| @@ -855,56 +903,72 @@ folheto $alt2 | |||
| fora $alt | |||
| fora $alt2 $verb | |||
| forca $alt2 | |||
| força $alt2 $noun | |||
| forças $alt2 | |||
| força $alt2 | |||
| força $alt $verb | |||
| forço $alt | |||
| formos $alt2 | |||
| forro $alt $verb | |||
| frevo $alt2 | |||
| fulgores $alt2 | |||
| galera $alt | |||
| galeto $alt2 | |||
| galhofa $alt | |||
| galileia $alt | |||
| gameta $alt2 | |||
| garçonete $alt2 | |||
| gangorra $alt2 | |||
| geleia $alt | |||
| gelo $alt2 | |||
| gelo $alt $verb | |||
| genebra $alt | |||
| gesso $alt2 | |||
| golpe $alt | |||
| gloso $alt | |||
| gonorreia $alt | |||
| gol gow | |||
| golpe $alt | |||
| gorda $alt2 | |||
| gorjeta $alt2 | |||
| gosto $alt $verb | |||
| gota $alt2 | |||
| governo $alt2 $noun | |||
| governo $alt2 | |||
| governo $alt $verb | |||
| gozo $alt2 $noun | |||
| graveto $alt2 | |||
| grelha $alt | |||
| groselha $alt | |||
| grosso $alt2 | |||
| grozo $alt $verb | |||
| groso $alt | |||
| gueto $alt2 | |||
| hemorroida $alt | |||
| hoje $alt2 | |||
| horrores $alt2 | |||
| humores $alt2 | |||
| ideia $alt | |||
| imberbe $alt | |||
| interesse $alt2 | |||
| interesse $alt $verb | |||
| jogo $alt2 $noun | |||
| iodo $alt2 | |||
| ioga $alt | |||
| jereba $alt | |||
| jogo $alt2 | |||
| jogo $alt $verb | |||
| jogos $alt | |||
| joguete $alt2 | |||
| lagosta $alt2 | |||
| lambreta $alt2 | |||
| lanchonete $alt | |||
| lebre $alt | |||
| leitora $alt2 | |||
| lembrete $alt2 | |||
| lepra $alt | |||
| leste $alt2 $verb | |||
| ?2 lhe l^y | |||
| lingueta $alt2 | |||
| lisboeta $alt2 | |||
| lodo $alt2 | |||
| logro $alt | |||
| lopes $alt | |||
| macete $alt2 | |||
| maior $alt | |||
| maleta $alt2 | |||
| marionete $alt | |||
| maniçoba $alt | |||
| marieta $alt2 | |||
| marreta $alt2 | |||
| megera $alt | |||
| melhor $alt | |||
| @@ -914,16 +978,13 @@ merda $alt | |||
| meta $alt $noun | |||
| meteoro $alt | |||
| metro $alt | |||
| mexa m'eS& | |||
| mexi meS'i | |||
| mexo m'eSU | |||
| minueto $alt2 | |||
| miolo $alt2 | |||
| miolos $alt | |||
| modelo $alt2 | |||
| modelo $alt $verb | |||
| moeda $alt | |||
| moem $alt | |||
| moem $alt | |||
| mofo $alt $verb | |||
| molho $alt2 $noun | |||
| monera $alt | |||
| @@ -933,10 +994,7 @@ moreia $alt | |||
| mortos $alt | |||
| motora $alt2 | |||
| mui mwi | |||
| muito mw'iNtU // -s is included as a suffix | |||
| muita mw'iNt& | |||
| mulher $alt | |||
| mulheres $alt | |||
| muleta $alt2 | |||
| mureta $alt2 | |||
| mutreta $alt2 | |||
| namoro $alt2 $noun | |||
| @@ -946,11 +1004,10 @@ nervo $alt2 | |||
| nojo $alt2 | |||
| novelo $alt2 | |||
| novos $alt | |||
| obstetra $alt | |||
| odisseia $alt | |||
| onu $1 | |||
| olho $alt2 $noun | |||
| olhos $alt | |||
| olho $alt2 $noun | |||
| olhos $alt | |||
| onomatopeia $alt | |||
| opereta $alt2 | |||
| ordens $alt | |||
| @@ -961,29 +1018,39 @@ ovelha $alt2 | |||
| ovos $alt | |||
| pachorra $alt2 | |||
| paexa paeSa | |||
| paella pa'el^& | |||
| palacete $alt2 | |||
| paleta $alt2 | |||
| palheta $alt2 | |||
| panfleto $alt2 | |||
| pangeia $alt | |||
| pantera $alt | |||
| papoco $alt2 $noun | |||
| parede $alt2 | |||
| pastora $alt2 | |||
| patinete $alt | |||
| peba $alt | |||
| pedra $alt | |||
| pela $alt $verb | |||
| pelo $alt2 | |||
| pelo $alt $verb | |||
| pereba $alt | |||
| peroba $alt | |||
| peseta $alt2 | |||
| peso $alt $verb | |||
| piloto $alt2 $noun | |||
| pintora $alt2 | |||
| pior $alt | |||
| pipoco $alt2 $noun | |||
| pirueta $alt2 | |||
| plaqueta $alt2 | |||
| plateia $alt | |||
| plebeia $alt | |||
| polca $alt | |||
| pompeia $alt | |||
| porcos $alt | |||
| porque $alt2 | |||
| porra $alt2 | |||
| porreta $alt2 | |||
| porrete $alt2 | |||
| porto $alt2 | |||
| portos $alt | |||
| @@ -991,13 +1058,19 @@ pose $alt2 | |||
| povos $alt | |||
| poxa p'oS& | |||
| primavera $alt | |||
| primores $alt2 | |||
| proso $alt | |||
| prosopopeia $alt | |||
| proveta $alt2 | |||
| quarteto $alt2 | |||
| queda $alt | |||
| quede $alt2 | |||
| quitinete $alt | |||
| quinteto $alt2 | |||
| ramalhete $alt2 | |||
| raposa $alt2 | |||
| recomeço $alt $verb | |||
| reconstroem $alt | |||
| recordo $alt | |||
| recorto $alt | |||
| rede $alt2 | |||
| @@ -1006,23 +1079,29 @@ reembolso $alt $verb | |||
| reforço $alt $verb | |||
| reforços $alt | |||
| refresco $alt $verb | |||
| rego $alt2 $noun | |||
| reitora $alt2 | |||
| rejo $alt | |||
| relevo $alt2 $noun | |||
| remoem $alt | |||
| remorso $alt | |||
| renovo $alt $verb | |||
| retorno $alt $verb | |||
| reuva x'EUv& | |||
| reuva x'EUv& | |||
| rigores $alt2 | |||
| rixa x'iS& | |||
| rocha $alt | |||
| risoto $alt2 | |||
| rock $alt | |||
| roem $alt | |||
| roem $alt | |||
| rola $alt2 $noun | |||
| roleta $alt2 | |||
| rolete $alt2 | |||
| rolo $alt2 $noun | |||
| rota $alt2 | |||
| rota $alt $noun | |||
| rubores $alt2 | |||
| rumores $alt2 | |||
| sabonete $alt2 | |||
| sabores $alt2 | |||
| saibro s'aIbRU | |||
| saleta $alt2 | |||
| sarjeta $alt2 | |||
| seborreia $alt | |||
| @@ -1047,27 +1126,32 @@ sossego $alt2 $noun | |||
| suborno $alt $verb | |||
| sufoco $alt2 $noun | |||
| sufocos $alt2 | |||
| sulfeto $alt2 | |||
| sulfureto $alt2 | |||
| super s'Uper | |||
| suporto $alt | |||
| suor swOr | |||
| sutiã sutSi'&~N | |||
| tapete $alt2 | |||
| temores $alt2 | |||
| tempero $alt2 $noun | |||
| tenores $alt2 | |||
| tenores $alt2 | |||
| terrores $alt2 | |||
| teta $alt2 | |||
| tetra $alt | |||
| tocha $alt | |||
| toga $alt | |||
| topo $alt $verb | |||
| topo $alt2 $noun | |||
| torno $alt $verb | |||
| tornozelo $alt2 | |||
| torre $alt2 $noun | |||
| torres $alt2 | |||
| torro $alt | |||
| tortos $alt | |||
| toso $alt | |||
| transtorno $alt $verb | |||
| traqueia $alt | |||
| travesso $alt2 | |||
| tremores $alt2 | |||
| treta $alt2 | |||
| trevo $alt2 | |||
| troco $alt2 $noun | |||
| tropa $alt | |||
| @@ -1076,23 +1160,26 @@ trombeta $alt2 | |||
| tumores $alt2 | |||
| valeta $alt2 | |||
| vanessa $alt2 | |||
| velozes $alt | |||
| vareta $alt2 | |||
| vera $alt | |||
| verbete $alt2 | |||
| violeta $alt2 | |||
| violoncelo $alt | |||
| voga $alt | |||
| vozes $alt | |||
| xarope $alt | |||
| xereta $alt2 | |||
| zelo $alt2 $noun | |||
| zorra $alt2 | |||
| // foreign words | |||
| ?1 alt 'alt | |||
| ?2 agosto &g'ostU | |||
| ?2 agosto ag'ostU | |||
| ?1 back b'Ek | |||
| ?2 backup bEk'&p | |||
| ?2 backups bEk'&ps | |||
| beatle b'itow | |||
| beatles b'itows | |||
| blind bl'aind | |||
| book buk | |||
| ?1 braille b:r'aily | |||
| @@ -1108,11 +1195,12 @@ book buk | |||
| ?1 dj d,i:dZ'eI | |||
| ?1 down d'a,wn | |||
| ?1 download d'a,wnl'oud | |||
| ?2 download daUNl'owd | |||
| ?2 download daUNl'owd | |||
| ?2 downloads daUNl'owds | |||
| ?3 download dau~Nl'owd | |||
| drive dR'aivy | |||
| driver dR'aiver | |||
| drivers dR'aiveRs | |||
| drive dR'aIv | |||
| driver dR'aIver | |||
| drivers dR'aIveRs | |||
| ?1 end 'end | |||
| ?2 esc 'Esk | |||
| ?3 esc 'EskI | |||
| @@ -1139,7 +1227,7 @@ drivers dR'aiveRs | |||
| laptop lEptOp | |||
| ?1 line l'ain | |||
| layout l'eI,aUt | |||
| ?2 logo l'OgU | |||
| ?2 login logiN | |||
| ?1 lock l'Ok | |||
| mail m'eIl | |||
| mails m'eIls | |||
| @@ -1158,22 +1246,28 @@ python p'aIT&~N | |||
| ?1 readme r'i:dmi: | |||
| ?1 sapi s,ap'i | |||
| ?1 scanner sk'En&r | |||
| sky sk'ay | |||
| shake S'eIk | |||
| ?1 shift S'ift | |||
| ?1 scroll sk:r'ol | |||
| ?1 site s'aIt | |||
| ?2 site s'aItSi | |||
| ?2 shampoo S&mpu | |||
| ?1 software s'Oft,w'Er- | |||
| símbolo s'imbolU | |||
| ?4 símbolo s'iNbolU | |||
| ?2 software s'Oftwe@- | |||
| ?1 space sp'eIsy | |||
| ?2 space sp'eIs | |||
| ?1 sporting sp'Ort,ing | |||
| tab t'aby | |||
| tablet t'ablet | |||
| ?1 telemóvel t,El,Em'OvEl | |||
| ?1 telemóveis t,El,Em'OveIs# | |||
| ?1 up &p | |||
| ?1 upload &pl'oud | |||
| update &pd'eIt | |||
| upgrade &pgR'eId | |||
| upload &pl'oud | |||
| ?2 web w'Eb | |||
| ?1 yahoo 'i,ah'u | |||
| ?2 yahoo iah'u | |||
| @@ -1181,13 +1275,14 @@ símbolo s'imbolU | |||
| // common person names | |||
| alan 'al@n | |||
| alan 'al@N | |||
| louis _^_FR | |||
| // foreign product names | |||
| ?1 access 'aks,Es | |||
| ?1 adobe &d'Oby | |||
| android &NdR'Oid | |||
| apple 'Epow | |||
| chrome kR'owmi | |||
| debian d'Ebj&~N | |||
| @@ -1195,22 +1290,27 @@ chrome kR'owmi | |||
| ?1 express ,Ekspr'Es | |||
| espeak isp'i:k | |||
| ?1 espeakedit isp'i:kEd,it | |||
| facebook feisybuk | |||
| facebook feIsybuk | |||
| ?1 fedora _^_EN | |||
| firefox f'ai@fOks | |||
| ?1 front fr'ont | |||
| ?1 jaws dZ'au:z | |||
| ?1 linux l,in'uks | |||
| ?2 linux l'inUks | |||
| ?1 live l'aiv | |||
| live l'aiv | |||
| ?1 maker m'eIk&r- | |||
| mac mEk | |||
| ?1 media m'Ed,i& | |||
| ?1 messenger m'Es&ndZ&r- | |||
| ?1 microsoft m,ik:r'os,Oft | |||
| ?2 microsoft m'aIkRows'Oft | |||
| ?1 movie m'uvi | |||
| ?1 nero n'Eru | |||
| /1 office 'Of,is | |||
| ?2 netbook nEtbUk | |||
| ?2 netbooks nEtbUks | |||
| ?2 notebook nowtbUk | |||
| ?2 notebooks nowtbUks | |||
| ?1 office 'Of,is | |||
| ?2 office 'Ofsy | |||
| openoffice 'opeIN|'Ofis | |||
| ?1 outlook 'autl'uk | |||
| @@ -1245,15 +1345,16 @@ twitter tw'iter | |||
| ?2 window w'iNdow | |||
| // historical/famous person names | |||
| // historical/famous person s | |||
| babbage b'abidZ | |||
| bernhard bern'ard | |||
| darwin d'Arwin | |||
| dijkstra d'ijkstrA: | |||
| einstein _!'aInSt,aIn | |||
| ?2 einstein _!'aInst,aIn | |||
| feynman f'ainm@n | |||
| freud fr'OId | |||
| friedrich fr'i:driS | |||
| freud fR'OId | |||
| friedrich fR'i:dRiS | |||
| gauss g'aUs | |||
| geisel g'aIzEU | |||
| gottfried g'Otfri:t | |||
| @@ -1270,7 +1371,7 @@ oppenheimer _!'Op@nh,aImar | |||
| richard x'iS&rd | |||
| riemann r'i:man | |||
| rijndael x'ain;d'al | |||
| rousseau Rus'o | |||
| ?2 rousseau xus'o | |||
| schrödinger Sr'edinger | |||
| stephen st'i:v@n | |||
| steve st'i:v | |||
| @@ -1281,30 +1382,27 @@ von f%On | |||
| // foreign common names/surnames | |||
| ?1 alison &l'is&N | |||
| anderson '&ndersoN | |||
| antonio &~nt'onIU | |||
| ?1 cleverson kl'Evyrs&N | |||
| ?2 cleverson kl'EversoN | |||
| ?1 elton 'Elt&N | |||
| emerson 'emE*@-soN | |||
| ?1 halison &l'is&N | |||
| klein kl'aIn // Very common on southern Brazil. | |||
| ?1 kleverson kl'Evers&N | |||
| krueger kR'iZer | |||
| krüger kR'iZer | |||
| kühl k'il | |||
| ?1 nelson n'Els&N | |||
| mueler m'iler | |||
| mueller m'iler | |||
| müler m'iler | |||
| müller m'iler | |||
| ?1 nelson n'Els&N | |||
| ronchi r'OnCi: | |||
| valter v'aUter | |||
| vogel f'o:g@l | |||
| volkmann f'Olkman | |||
| washington w'OSinton | |||
| wellington w'Elynton | |||
| @@ -69,6 +69,8 @@ _tld s_v'l-novkoU | |||
| // character names | |||
| _cap vel^ke: | |||
| _sub d,olni:||'indeks|| | |||
| _sup h,oRni:||'indeks|| | |||
| _?? simbol | |||
| _#9 t'ab | |||
| _#32 'medzeRa | |||
| @@ -76,76 +78,100 @@ _?A znak | |||
| * hviezda $max3 | |||
| + plus $max3 | |||
| = Rovna:sa $max3 | |||
| = Rovna:||sa $max3 | |||
| @ zavina:tS | |||
| & ampeRsand | |||
| # kRi:Zik $max3 | |||
| _! vi:kRitSn^i:k | |||
| _" u:vodzovki | |||
| _" u:vodzowki | |||
| _$ dola:R | |||
| _' apostRof | |||
| _( za:tvoRka | |||
| _) zatvoRit; | |||
| _, tSiaRka | |||
| _- poml-tSka | |||
| __ podtSiaRknutie | |||
| _- spojovn^i:k | |||
| __ podtSiaRkovn^i:k | |||
| _. bodka | |||
| _/ lomeno | |||
| _/ lomka | |||
| _: dvojbodka | |||
| _; bodkotSiaRka | |||
| _< menSi: | |||
| _> vetSSi: | |||
| _> v&tSSi: | |||
| _? ota:zn^ik | |||
| _[ hRanata:||za:tvoRka | |||
| _\ opatSne:||lomeno | |||
| _] hRanata:||zatvoRit; | |||
| _^ stRieZka | |||
| _[ hRanata:||z'a:tvoRka | |||
| _\ opatSna:||l'omka | |||
| _] hRanata:||z'atvoRit; | |||
| _^ voka:n^ | |||
| _` aktsent | |||
| _{ zloZena:||za:tvoRka | |||
| _| zvisla:||tSiaRa | |||
| _} zloZena:||zatvoRit; | |||
| _{ zloZena:||z'a:tvoRka | |||
| _| zvisla:||tS'iaRa | |||
| _} zloZena:||z'atvoRit; | |||
| _~ vl-novka | |||
| _ tvr-da:m'edzeRa // U+00A0 no-break-space | |||
| _¡ obra:t;eni:v'i:kRitSn^i:k | |||
| _¦ pReRuSena:'tSiaRa | |||
| _ª hoRni:indeks'a: | |||
| _« dvojita:lomena:||za:tvoRka | |||
| _ mekka:poml-tSka | |||
| _² nadRuhu: | |||
| _³ natRetju | |||
| _´ dl:Zen^ | |||
| _· bodka'vpRostRjedku | |||
| _¸ tsedila | |||
| _¹ napRvu: | |||
| _» dvojita:lomena:||zatvoRit; | |||
| _¿ obRa:t;eni:'ota:zn^ik | |||
| _– dl-ha:'poml-tSka | |||
| _‘ l^ava:'u:vodzovka | |||
| _’ prava:'u:vodzovka | |||
| _“ horne:'u:vodzovki | |||
| _” dolne:'u:vodzovki | |||
| _‡ dvojiti:kRi:Z | |||
| _• odRa:Zka | |||
| _‣ tRojuholni:kova:'odRa:Zka | |||
| _ tvr-da:||m'edzeRa // U+00A0 no-break-space | |||
| _¡ obra:t;eni:||v'i:kRitSn^i:k | |||
| _¦ pReRuSena:||tS'iaRa | |||
| _¨ pRehla:ska | |||
| _« dvojita:||l'omena:||z'a:tvoRka | |||
| _ Rozd;el^ovn^i:k | |||
| _´ dl:Zen^ | |||
| _· bodka||'v||pRostRjedku | |||
| _¸ tsedila | |||
| _» dvojita:||l'omena:||z'atvoRit; | |||
| _¿ obRa:t;eni:||'ota:zn^ik | |||
| _– poml-tSka | |||
| _‘ hoRne:||j'ednoduche:||'u:vodzowki | |||
| _’ odsuvn^i:k | |||
| _“ hoRne:||'u:vodzowki | |||
| _” dvojita:||h'oRna:||'opatSna:||'u:vodzowka | |||
| _„ dolne:||'u:vodzowki | |||
| _‚ dolne:||j'ednoduche:||'u:vodzowki | |||
| _‡ dvojkRi:Z | |||
| _• odRa:Zka | |||
| _‣ odRa:Zka||t'Rojuholn^i:k | |||
| _⁃ odRa:Zka||'v||tvaRe||p'oml-tSki | |||
| ‰ pRomile | |||
| € euRo | |||
| § paRagRaf | |||
| ÷ d;eleno | |||
| × kRa:t | |||
| ° stupn^ou | |||
| ¢ tsentou | |||
| £ libjeR | |||
| ¤ znatSkameni | |||
| ¢ tsent | |||
| £ libRa | |||
| ¤ mena | |||
| © kopiRajt | |||
| ® Registrovane: | |||
| ¥ jen | |||
| − mi:nus | |||
| ± plus'mi:nus | |||
| µ mu: | |||
| ¼ Stvr-tina | |||
| ± plus||m'i:nus | |||
| µ mi: | |||
| ¼ Stvr-t;ina | |||
| ½ polovitsa | |||
| ¾ tri_Stvr-tini | |||
| ¬ logitske:not | |||
| æ a'e: | |||
| þ poml-tSkanad | |||
| ¾ t'@-*i||S'tvr-t;ini | |||
| ¬ logitski:||z'a:poR | |||
| æ otvoRene:||'e: | |||
| þ soRn | |||
| ¯ pRuh||n'at | |||
| ð ed | |||
| ƒ floRe:n | |||
| _† kRi:Z | |||
| _≈ pRibliZn^e||sa||R'ovna: | |||
| _≠ n^eRovna:||s'a | |||
| _≤ menSi:||'alebo||sa||R'ovna: | |||
| _≥ v&tSSi:||'alebo||sa||R'ovna: | |||
| _√ dRuha:||'odmotsn^ina | |||
| _∛ tRet;ia||'odmotsn^ina | |||
| _∞ n^ekon^etSno | |||
| _■ tSieRni||S'tvoRets | |||
| _□ bieli||S'tvoRets | |||
| _◆ tSieRni||d'iamant | |||
| _○ bieli||kR'uh | |||
| _● tSieRni||kR'uh | |||
| _◦ odRa:Zka||'v||tvaRe||b'ielej||b'odki | |||
| _✓ zaSkr-tnut;ie | |||
| _✔ tutSne:||z'aSkr-tnut;ie | |||
| _➔ Si:pka||'vpRavo | |||
| _➢ odRa:Zka||'v||tvaRe||S'i:pki | |||
| // Numbers | |||
| @@ -43,16 +43,16 @@ _?A haRf | |||
| //_lig | |||
| _acu vURg'UimI | |||
| _ac2 tS'IftvURg'UimI | |||
| _brv k@s'altmaimI | |||
| _brv k@s'aLtmaimI | |||
| _ced h'aRf | |||
| _cir Sapk'a | |||
| _dia Umla'Ut | |||
| _dia UmLa'Ut | |||
| _dot YstnOkt'a | |||
| _grv 'aksanimI | |||
| _hac t'ERsSapk'a | |||
| _mcn uz'atmaimI | |||
| _ogo ogon'Ek | |||
| _rng halk'a | |||
| _rng haLk'a | |||
| //_stk | |||
| _tld tIld'E | |||
| @@ -60,7 +60,7 @@ _tld tIld'E | |||
| // symbols | |||
| _. nOkt'a | |||
| _, vIRJ'Yl | |||
| _; nOktal'@vIRJ'Yl | |||
| _; nOktaL'@vIRJ'Yl | |||
| _: ik'InOkt'a | |||
| _… 'YtSnOkt'a | |||
| _? soR'UiSa*et,I | |||
| @@ -73,7 +73,7 @@ _' apOstR'Of | |||
| _^ IndZ'EltmEiSa*et'I | |||
| & _!v'E | |||
| _& v'EiSa*et'I | |||
| _@ kUjRUkl'U'a | |||
| _@ kUjRUkL'U'a | |||
| _\ t'ERs||ej,IktSIzg'I | |||
| _( atSpa*ant'Ez | |||
| _) kapapa*ant'Ez | |||
| @@ -84,9 +84,9 @@ _‘ tEkt@Rn'ak | |||
| § tSEnJ'El | |||
| ° de*edZ'E | |||
| _# dij'Ez | |||
| _~ jaklaS'@k | |||
| __ ,alttSIzg'I | |||
| * j'@ld@z $max3 | |||
| _~ jakLaS'@k | |||
| __ ,aLttSIzg'I | |||
| * j'@Ld@z $max3 | |||
| = ESIt $max3 | |||
| % jYzdE $max3 | |||
| + aRt@ $max3 | |||
| @@ -99,7 +99,7 @@ _2 ic'i | |||
| _3 'ytS | |||
| _4 d'WRt | |||
| _5 b'ES | |||
| _6 alt'@ | |||
| _6 aLt'@ | |||
| _7 jed'i | |||
| _8 sec'Iz | |||
| _9 d'okuz | |||
| @@ -111,7 +111,7 @@ _2X jiRm'i | |||
| _3X ot'uz | |||
| _4X k'@Rk | |||
| _5X ell'i | |||
| _6X altm'@S | |||
| _6X aLtm'@S | |||
| _7X jetm'iS | |||
| _8X seks'En | |||
| _9X doks'an | |||
| @@ -260,13 +260,13 @@ Düzce $1 | |||
| Edirne $2 | |||
| Hakkari $1 | |||
| Hatay $1 | |||
| Iğdır $1 | |||
| İngiltere $3 | |||
| İskenderun $2 | |||
| ığdır $1 | |||
| ingiltere $3 | |||
| iskenderun $2 | |||
| Isparta $2 | |||
| İstanbul $2 | |||
| İsveç $1 | |||
| İzmir $1 | |||
| istanbul $2 | |||
| isveç $1 | |||
| izmir $1 | |||
| Kastamonu $1 | |||
| Kayseri $1 | |||
| Kilis $1 | |||
| @@ -9,8 +9,10 @@ | |||
| // ?1 mbrola voices | |||
| // unvoiced consonants | |||
| .L01 ç f h k p q s ş t | |||
| .L01 ç f h k p q s ş t // unvoiced consonants | |||
| .L02 ı a o u // back vowels | |||
| .L03 i e ö ü î â ô û // not-back vowels | |||
| .replace | |||
| ` ' | |||
| @@ -23,7 +25,7 @@ | |||
| @) acak (_S4 adZak | |||
| @) acakmış (_S7 adZakm%@S | |||
| @) ayım (_S4 aj@m | |||
| @) alım (_S4 al@m | |||
| @) alım (_S4 aL@m | |||
| @) asın (_S4 as@n | |||
| @) avru (pa avr'u | |||
| @@ -33,9 +35,11 @@ | |||
| .group c | |||
| c dZ | |||
| ce (_S2 dZ%E | |||
| .group ç | |||
| ç tS | |||
| çe (_S2 tS%E | |||
| .group d | |||
| d d | |||
| @@ -57,13 +61,13 @@ | |||
| dın (_S3 d@n | |||
| dınız (_S5 d@n@z | |||
| dı (_S2 d@ | |||
| dılar (_S5 d@laR | |||
| dılar (_S5 d@LaR | |||
| dum (_S3 dum | |||
| duk (_S3 duk | |||
| dun (_S3 dun | |||
| dunuz (_S5 dunuz | |||
| du (_S2 du | |||
| dular (_S5 dular | |||
| dular (_S5 duLar | |||
| düm (_S3 dym | |||
| dük (_S3 dyk | |||
| dün (_S3 dyn | |||
| @@ -96,18 +100,24 @@ | |||
| .group g | |||
| g g | |||
| g (i J | |||
| g (e J | |||
| g (ü J | |||
| g (ö J | |||
| g (L03 J | |||
| L03) g (K J | |||
| .group ğ | |||
| ğ Q | |||
| A) ğ :|| | |||
| ?1 A) ğ G // mbrola | |||
| A) ğ : | |||
| ?1 A) ğ (+ G // mbrola | |||
| a) ğa : | |||
| o) ğo : | |||
| u) ğu : | |||
| ö) ğö : | |||
| ü) ğü : | |||
| i) ğ j | |||
| e) ğ j | |||
| .group h | |||
| h h | |||
| @@ -135,37 +145,40 @@ | |||
| @) ıyor (_S4 @j%oR | |||
| @) ın (_S2 @n | |||
| .group î | |||
| î @ | |||
| .group j | |||
| j Z | |||
| .group k | |||
| k k | |||
| k (i c | |||
| k (e c | |||
| k (ü c | |||
| k (ö c | |||
| k (L03 c | |||
| L03) k (K c | |||
| ken (_S3 %cen | |||
| .group l | |||
| l l | |||
| l (L02 L | |||
| L02) l (K L | |||
| la (_S2 %la | |||
| la (_S2 %La | |||
| le (_S2 %le | |||
| lar (_S3 laR | |||
| lar (_S3 LaR | |||
| ler (_S3 leR | |||
| li (_S2 li | |||
| lı (_S2 l@ | |||
| lu (_S2 lu | |||
| lı (_S2 L@ | |||
| lu (_S2 Lu | |||
| lü (_S2 ly | |||
| lik (_S3 lik | |||
| lık (_S3 l@k | |||
| luk (_S3 luk | |||
| lık (_S3 L@k | |||
| luk (_S3 Luk | |||
| lük (_S3 lyk | |||
| @@ -204,6 +217,7 @@ | |||
| .group r | |||
| r R | |||
| A) r (A * | |||
| ğ) r (A * | |||
| ra (_S2 %Ra | |||
| re (_S2 %Re | |||
| @@ -308,7 +322,7 @@ | |||
| yunuz (_S5 %junuz | |||
| yünüz (_S5 %jynyz | |||
| yla (_S3 %jla | |||
| yla (_S3 %jLa | |||
| yle (_S3 %jle | |||
| yacak (_S5 jadZak | |||
| @@ -317,7 +331,7 @@ | |||
| yecekmiş (_S8 jedZekm%iS | |||
| yayım (_S5 jaj@m | |||
| yalım (_S5 jal@m | |||
| yalım (_S5 jaL@m | |||
| yasın (_S5 jas@n | |||
| yeyim (_S5 jejim | |||
| yelim (_S5 jelim | |||
| @@ -13,4 +13,5 @@ formant 6 100 100 100 | |||
| formant 7 100 100 100 | |||
| formant 8 100 100 100 | |||
| consonants 100 | |||
| stressAdd 10 10 0 0 0 0 -30 -30 | |||
| @@ -3,6 +3,8 @@ language hy-west | |||
| language hy 8 | |||
| gender male | |||
| dictrules 1 | |||
| // change consonants for West Armenian pronunciation | |||
| replace 00 b p# | |||
| replace 00 d t# | |||
| @@ -16,5 +18,5 @@ replace 00 ts dz | |||
| replace 00 c dZ | |||
| replace 00 k g | |||
| replace 00 ** R // ?? | |||
| replace 00 r R | |||
| replace 00 R2 R // ?? | |||
| @@ -0,0 +1,6 @@ | |||
| name Korean | |||
| language ko | |||
| gender male | |||
| pitch 80 118 | |||
| intonation 2 | |||
| @@ -0,0 +1,12 @@ | |||
| name vietnam_sgn | |||
| language vi-sgn | |||
| phonemes vi-sgn | |||
| dictrules 2 | |||
| gender male | |||
| words 1 | |||
| pitch 82 118 //80 118 | |||
| //breath 75 75 60 40 15 10 | |||
| //breathw 150 150 200 200 400 400 | |||
| voicing 90 //18 | |||
| flutter 20 | |||
| @@ -1,4 +1,4 @@ | |||
| name Irish Gaeilge | |||
| name irish-gaeilge | |||
| language ga | |||
| dictrules 1 // fix for eclipsis | |||
| @@ -1,4 +1,4 @@ | |||
| name lancashire | |||
| name english-north | |||
| language en-uk-north | |||
| language en-uk 3 | |||
| language en 5 | |||
| @@ -10,6 +10,6 @@ stressLength 160 150 180 180 220 220 290 290 | |||
| replace 00 i@3 i@ | |||
| replace 03 N n | |||
| //replace 03 I i | |||
| //replace 03 I2 i | |||
| replace 03 i I2 | |||
| @@ -4,4 +4,5 @@ language pt | |||
| gender male | |||
| dictrules 2 | |||
| stressLength 200 115 230 230 0 0 250 270 | |||
| @@ -0,0 +1,3 @@ | |||
| name azerbaijani-test | |||
| language az | |||
| @@ -16,7 +16,16 @@ nucleus0 fall-rise 80 18 | |||
| nucleus fall-rise2 78 22 34 52 | |||
| endtune | |||
| tune q1 | |||
| tune q1 // small change for version 1.47.05 | |||
| prehead 45 56 | |||
| headenv fall 16 | |||
| head 3 75 43 -7 0 | |||
| headextend 20 60 35 11 0 | |||
| nucleus0 fall-rise 89 21 | |||
| nucleus fall-rise2 86 21 34 68 | |||
| endtune | |||
| tune q1a // previous version | |||
| prehead 46 57 | |||
| headenv fall 16 | |||
| head 4 75 43 -7 0 | |||
| @@ -1,3 +1,4 @@ | |||
| volume 17 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| @@ -10,7 +11,6 @@ | |||
| 0 j/ NULL 0 j | |||
| 0 ; NULL 0 NULL | |||
| 0 g- NULL 0 NULL | |||
| 0 @- NULL 0 NULL | |||
| 0 @3 NULL 0 NULL | |||
| 0 * NULL 0 R | |||
| 0 : NULL 0 NULL | |||
| @@ -43,6 +43,7 @@ | |||
| 0 z2 NULL 0 z | |||
| 0 z3 NULL 0 z | |||
| 0 @- NULL 0 @ | |||
| 0 a- NULL 0 a | |||
| 0 e- NULL 0 e | |||
| 0 y- NULL 0 y | |||
| @@ -1,19 +1,22 @@ | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/ii_5) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 160 | |||
| length 200 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype #e endtype #e | |||
| length 160 | |||
| length 200 | |||
| IF thisPh(isWordEnd) THEN | |||
| FMT(vowel/&_3) | |||
| ENDIF | |||
| FMT(vowel/&) | |||
| endphoneme | |||
| @@ -25,32 +28,35 @@ endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 180 | |||
| length 200 | |||
| FMT(vowel/y#_2) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 160 | |||
| FMT(vowel/u_5) | |||
| length 180 | |||
| FMT(vowel/u_2) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 160 | |||
| FMT(vowel/o_mid) | |||
| length 200 | |||
| FMT(vowel/o_mid2) | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 200 | |||
| FMT(vowel/aa) | |||
| IF thisPh(isWordEnd) THEN | |||
| FMT(vowel/a#) | |||
| ENDIF | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| phoneme @ | |||
| vowel starttype #@ endtype #@ | |||
| ipa ɯ | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/u#_7) | |||
| endphoneme | |||
| @@ -7,7 +7,7 @@ | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 180 | |||
| length 190 | |||
| IF thisPh(isDiminished) THEN | |||
| ChangePhoneme(a/) | |||
| FMT(vowel/a#) | |||
| @@ -18,28 +18,28 @@ endphoneme | |||
| phoneme a/ | |||
| vowel starttype #@ endtype #@ | |||
| length 180 | |||
| length 190 | |||
| FMT(vowel/a#) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/ee_1) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| length 170 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| @@ -47,42 +47,42 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/oo_4) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme U | |||
| vowel starttype #u endtype #u | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/uu_2) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| phoneme Y | |||
| vowel starttype #@ endtype #@ | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/y#) | |||
| endphoneme | |||
| @@ -17,8 +17,11 @@ phoneme V // inherent vowel, can be [O] or [o] | |||
| ChangePhoneme(o) | |||
| ENDIF | |||
| IF prevPhW(r) THEN | |||
| ChangePhoneme(o) | |||
| IF prevPhW(r) AND nextVowel(isVowel) THEN | |||
| IF nextVowel(isWordEnd) AND nextVowel(V) THEN | |||
| ELSE | |||
| ChangePhoneme(o) | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| @@ -8,113 +8,213 @@ | |||
| // AC + @- OR V: Long "pile" [pi:l@-] | |||
| // AC[i]: Long "smidig" [smi:Di] | |||
| // Change the length of short vowels (?+vowel) | |||
| // Change the length of SHORT vowels (?+vowel) | |||
| procedure ShortVowelLength | |||
| // "endelig" - Short initial vowel sounds too short | |||
| IF thisPh(isWordStart) THEN | |||
| length 160 | |||
| RETURN | |||
| ENDIF | |||
| // "slutte" t/d + @- makes the u too long | |||
| IF next2PhW(@-) THEN | |||
| IF nextPhW(t) OR nextPhW(d) THEN | |||
| //length 100 | |||
| LengthAdd -50 | |||
| // "endelig", "ånder" - Short initial vowel sounds too short TEST | |||
| IF thisPh(isWordStart) AND nextPhW(n) THEN | |||
| IF next2PhW(@-) OR next2PhW(V) THEN | |||
| length 160 | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| // "slutte" t/d + @- makes the vowel too long | |||
| // Problem with compounds like "spildedamp" | |||
| IF next2PhW(@-) OR next2PhW(V) THEN | |||
| IF nextPhW(t) OR nextPhW(d) THEN | |||
| // length 100 | |||
| LengthAdd -45 | |||
| // Don't shorten it further if it comes after an "r" sound | |||
| // Exit the procedure | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| // "bygget" - consonant + [@-D] makes the vowel too long | |||
| IF next2PhW(@-) THEN | |||
| IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN | |||
| LengthAdd -50 | |||
| // Don't shorten it further if it comes after an "r" sound ("brygget") | |||
| // Exit the procedure | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| // "bygget", "byggede" - consonant + [@-D] makes the vowel too long | |||
| IF next2PhW(@-) THEN | |||
| IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN | |||
| IF thisPh(isFirstVowel) THEN // NOT "cellof'anet" | |||
| IF NOT thisPh(?V) THEN // NOT "fjollet" | |||
| LengthAdd -40 | |||
| // Don't shorten it further if it comes after an "r" sound ("brygget") | |||
| // Exit the procedure | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| // "bygger" - consonant + [V] makes the vowel too long | |||
| IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
| LengthAdd -50 | |||
| IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
| IF NOT thisPh(isWordStart) THEN // NOT "eller" | |||
| // LengthAdd -45 | |||
| // Don't shorten it further if it comes after an "r" sound ("brygger") | |||
| // Exit the procedure | |||
| RETURN | |||
| ENDIF | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| // "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long | |||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
| // length 100 | |||
| LengthAdd -50 | |||
| ENDIF | |||
| // "ring", "ringe", "fængsel" | |||
| IF nextPhW(N) THEN | |||
| LengthAdd -40 | |||
| RETURN | |||
| ENDIF | |||
| // "ring", "ringe", "fængsel", "spinkel", "vindspejl" | |||
| IF nextPhW(isNasal) THEN | |||
| // length 100 | |||
| LengthAdd -10 | |||
| ENDIF | |||
| // "sigte" t/d + @- makes the vowel too long | |||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN | |||
| IF next3PhW(@-) THEN | |||
| LengthAdd -30 | |||
| RETURN | |||
| ENDIF | |||
| // "sigte", "bælte", "henter" t/d + @-/V makes the vowel too long | |||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN | |||
| IF next3PhW(@-) OR next3PhW(V) THEN | |||
| IF thisPh(isFirstVowel) THEN // NOT [i] in "forsp'ildte" | |||
| // length 100 | |||
| LengthAdd -50 | |||
| ENDIF | |||
| ENDIF | |||
| LengthAdd -30 | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| // "forbandelse" [n@-] makes the vowel too long? | |||
| // nasal eg: m, n, N | |||
| IF nextPhW(isNasal) AND next2PhW(@-) THEN | |||
| IF NOT thisPh(isFirstVowel) AND thisPh(isStressed) THEN | |||
| // NOT LengthAdd since [R] might have shortend the vowel above | |||
| length 100 | |||
| ENDIF | |||
| ENDIF | |||
| // "himlen" l/3 makes the vowel too long | |||
| IF nextPhW(isNotVowel) AND next2PhW(l/3) AND next3PhW(@-) OR next3PhW(V) THEN | |||
| length 100 | |||
| ENDIF | |||
| // "lænkerne" l/3 makes the vowel too long | |||
| IF prevPh(l/3) AND nextPhW(isNotVowel) AND next3PhW(V) THEN | |||
| length 120 | |||
| ENDIF | |||
| //"musikken" consonant + [@-n] makes the vowel too long | |||
| // Probably wrong. Only k? | |||
| IF nextPhW(k) AND next2PhW(@-) AND next3PhW(n) THEN | |||
| length 100 | |||
| ENDIF | |||
| //"svælge" [svElj@-] vowel + 2 consonants but length 100 is too short | |||
| IF nextPhW(isNotVowel) AND next2PhW(j) THEN | |||
| length 140 | |||
| ENDIF | |||
| endprocedure | |||
| // Change the length of normal vowels (without ? in front of them) | |||
| // Change the length of NORMAL vowels (without ? in front of them) | |||
| procedure LongVowelLength | |||
| // "guldmine" [ul/3] makes the vowel extremely short | |||
| IF prevVowel(u) AND prev2PhW(l/3) THEN | |||
| length 350 | |||
| RETURN | |||
| ENDIF | |||
| // "guldur" [ul/3] makes the vowel extremely short | |||
| IF prevVowel(u) AND prevPhW(l/3) THEN | |||
| IF NOT thisPh(isWordEnd) THEN // NOT "umulig" | |||
| length 325 | |||
| RETURN | |||
| ENDIF | |||
| ENDIF | |||
| // "alene" - Short initial vowel sounds too short at length 140 | |||
| IF thisPh(isWordStart) THEN | |||
| length 160 | |||
| RETURN | |||
| ENDIF | |||
| // "forlade" - [D@-] makes the vowel too long | |||
| IF nextPhW(D) AND next2PhW(@-) THEN | |||
| length 180 | |||
| RETURN | |||
| ENDIF | |||
| IF thisPh(isWordStart) THEN | |||
| length 160 | |||
| // "ønske" The vowel should have been made short becauce og 2 x consonant. | |||
| // Take care of it here | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(isNotVowel) THEN | |||
| length 140 | |||
| ENDIF | |||
| // "ære" | |||
| IF nextPhW(V) AND nextPhW(isFinalVowel) THEN | |||
| length 240 | |||
| ENDIF | |||
| RETURN | |||
| ENDIF | |||
| // "huske" - hACC@- vowel too long | |||
| IF prevPhW(h) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(@-) THEN | |||
| length 110 | |||
| RETURN | |||
| ENDIF | |||
| // PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n] | |||
| IF nextPhW(@-) OR nextPhW(V) THEN | |||
| length 225 | |||
| ENDIF | |||
| IF nextPhW(@-) OR nextPhW(V) THEN | |||
| length 225 | |||
| ENDIF | |||
| // PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i] | |||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
| length 225 | |||
| ENDIF | |||
| // "ræve", "dele", "mene", "røve", "møve" | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN | |||
| length 225 | |||
| ENDIF | |||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
| length 225 | |||
| ENDIF | |||
| // "dele", "mene", "møve" | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN | |||
| length 225 | |||
| ENDIF | |||
| // "sveder", "deler" | |||
| IF nextPhW(isNotVowel) AND next2PhW(V) THEN | |||
| length 225 | |||
| ENDIF | |||
| // "maskinen" consonant + [@-n]: vowel too long | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(n) THEN | |||
| length 160 | |||
| ENDIF | |||
| // "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| // Don't make "møve" [m'Ww_!@-_!] short | |||
| IF NOT next2PhW(_!) THEN | |||
| length 140 | |||
| ENDIF | |||
| ENDIF | |||
| IF NOT next2PhW(_!) THEN | |||
| length 140 | |||
| ENDIF | |||
| ENDIF | |||
| // "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long | |||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
| IF next2PhW(@-) OR next2PhW(V) THEN | |||
| // length 180 | |||
| LengthAdd -70 | |||
| IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN | |||
| IF NOT thisPh(V) AND next2PhW(@-) OR next2PhW(V) THEN | |||
| length 140 | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| // "syste", "sylte" t/d/D + @- makes the vowel too long | |||
| // "international", - added [V] TEST | |||
| IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) OR next2PhW(D) THEN | |||
| IF next3PhW(@-) OR next3PhW(V) THEN | |||
| length 110 | |||
| ENDIF | |||
| ENDIF | |||
| // "glimrende" [l/3] makes the following vowel too long | |||
| // "føden" | |||
| IF nextPhW(D) AND next2PhW(@-) AND next3PhW(n) THEN | |||
| length 180 | |||
| ENDIF | |||
| // "glimrende", "glemte" [l/3] makes the following vowel too long | |||
| // LengthAdd doesn't work here. The length could be 225 or 140 - 30 | |||
| IF prevPhW(l/3) THEN | |||
| // LengthAdd -30 | |||
| length 110 | |||
| ENDIF | |||
| IF prev2PhW(g) AND prevPhW(l/3) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 110 | |||
| RETURN | |||
| ENDIF | |||
| // l/3 makes the vowel too long (+ voiced?) | |||
| // isVoiced = b, d, g, v, z | |||
| IF prevPhW(l/3) AND nextPhW(isVoiced) THEN | |||
| // "klub", "klud" | |||
| // The vowel should have been short but we fix it here | |||
| IF NOT next2PhW(@-) AND NOT next2PhW(V) THEN | |||
| length 100 | |||
| ELSE | |||
| // "slæde", "lader" | |||
| length 160 | |||
| ENDIF | |||
| ENDIF | |||
| // "længe" - short - 2 consonants => 1 consonant (ng => [N]) | |||
| IF nextPhW(N) THEN | |||
| length 140 | |||
| ENDIF | |||
| IF nextPhW(isNasal) THEN | |||
| IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN | |||
| length 140 | |||
| // "omkring", "ring" - both prev. N and next R | |||
| ELIF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN | |||
| length 110 | |||
| ENDIF | |||
| ENDIF | |||
| // "buskene", "krøbling" The vowel should have been made short becauce og 2 x consonant. | |||
| // Take care of it here | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| IF NOT nextPhW(l/3) THEN | |||
| IF NOT nextPhW(r) AND NOT prevPhW(R) AND NOT prevPhW(3-) THEN // NOT "Maria" | |||
| length 110 | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| // "barnet" - consonant + [@-D]: too long vowel | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(D) THEN | |||
| length 160 | |||
| ENDIF | |||
| // "trin", "trit", "ring" - vowel too long | |||
| // IF prevPhW(isRhotic) THEN | |||
| IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN | |||
| IF nextPhW(isNotVowel) AND nextPhW(isWordEnd) THEN | |||
| length 110 | |||
| ENDIF | |||
| ENDIF | |||
| endprocedure | |||
| // A bit longer than [@-] | |||
| @@ -167,22 +267,6 @@ endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 140 | |||
| // Long vowel followed by consonant and @- "gide", "pile" | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) THEN | |||
| // length 225 | |||
| ENDIF | |||
| // "gider", vrider" | |||
| IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | |||
| length 140 | |||
| ENDIF | |||
| //"skider" short | |||
| IF nextPhW(D) AND next2PhW(V) THEN | |||
| length 140 | |||
| ENDIF | |||
| //"skideren" long | |||
| IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN | |||
| length 225 | |||
| ENDIF | |||
| CALL LongVowelLength | |||
| FMT(vowel/i_4) | |||
| endphoneme | |||
| @@ -209,7 +293,7 @@ phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 140 | |||
| CALL LongVowelLength | |||
| CALL ShortVowelLength | |||
| // CALL ShortVowelLength | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| @@ -257,7 +341,7 @@ endphoneme | |||
| phoneme & | |||
| vowel starttype #e endtype #e | |||
| ipa æ | |||
| ipa a | |||
| length 140 | |||
| // "same", "sale", "bade" - consonant + @-: long | |||
| // but NOT "hinanden" | |||
| @@ -279,8 +363,10 @@ endphoneme | |||
| // e.g. the last a in "staldkarl" | |||
| // "sale" vs. "sal" | |||
| phoneme ?& | |||
| ipa a | |||
| vowel starttype #e endtype #e | |||
| length 140 | |||
| CALL ShortVowelLength | |||
| FMT(vowel/ee_2) | |||
| endphoneme | |||
| @@ -298,6 +384,7 @@ endphoneme | |||
| // "revl" vs. "tremme" | |||
| phoneme ?&# | |||
| vowel starttype #e endtype #e | |||
| ipa ?a | |||
| length 140 | |||
| CALL ShortVowelLength | |||
| FMT(vowel/&) | |||
| @@ -372,11 +459,11 @@ phoneme O | |||
| ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ | |||
| // "sove", "sover" - consonant + @ or V: long | |||
| IF next2PhW(@-) OR next2PhW(V) THEN | |||
| length 225 | |||
| // length 225 | |||
| ENDIF | |||
| // PB "gået" - ThisPh + V or @- | |||
| IF nextPhW(V) OR nextPhW(@-) THEN | |||
| length 225 | |||
| // length 225 | |||
| ENDIF | |||
| // "såre", "sårede" [s'O:?OD@-] | |||
| IF nextPhW(O) OR nextPhW(?O) THEN | |||
| @@ -391,6 +478,7 @@ endphoneme | |||
| phoneme ?O | |||
| vowel starttype #o endtype #o | |||
| length 140 | |||
| CALL ShortVowelLength | |||
| FMT(vowel/o_5) | |||
| endphoneme | |||
| @@ -406,6 +494,7 @@ endphoneme | |||
| phoneme ?V | |||
| vowel starttype #@ endtype #@ | |||
| length 140 | |||
| CALL ShortVowelLength | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| @@ -416,34 +505,19 @@ phoneme 0 | |||
| FMT(vowel/oo_2) | |||
| endphoneme | |||
| // Short 0 "sukker" | |||
| // Short 0 "sukker", "provst" | |||
| phoneme ?0 | |||
| vowel starttype #o endtype #o | |||
| length 140 | |||
| ipa ɔ | |||
| CALL ShortVowelLength | |||
| FMT(vowel/oo_2) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #i endtype #i | |||
| length 140 | |||
| // PB long vowel followed by consonant and certain vowels | |||
| // "gyde", "gyder" | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN | |||
| // not "gebyret" TEST | |||
| IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN | |||
| length 225 | |||
| ENDIF | |||
| ENDIF | |||
| // "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] | |||
| IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN | |||
| length 225 | |||
| ENDIF | |||
| // "tyve" | |||
| IF nextPhW(w) AND next2PhW(@-) THEN | |||
| length 225 | |||
| ENDIF | |||
| CALL LongVowelLength | |||
| CALL LongVowelLength | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| @@ -468,15 +542,7 @@ endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 140 | |||
| // "røveri" but NOT "surfer" [sWfV] TEST | |||
| IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | |||
| length 140 | |||
| ENDIF | |||
| // "børnebog" - short | |||
| IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN | |||
| length 140 | |||
| ENDIF | |||
| CALL LongVowelLength | |||
| CALL LongVowelLength | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| @@ -492,11 +558,8 @@ endphoneme | |||
| // Added for the ø in "røv", "røg", "øje" instead of [V3] | |||
| phoneme W# | |||
| vowel starttype #@ endtype #@ | |||
| length 140 //225 | |||
| // PB long vowel followed by consonant and certain vowels | |||
| IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN | |||
| length 225 | |||
| ENDIF | |||
| length 140 | |||
| CALL LongVowelLength | |||
| FMT(vowel/V) | |||
| endphoneme | |||
| @@ -540,7 +603,7 @@ phoneme l | |||
| lengthmod 7 | |||
| // [ll] => [-l] - avoid double l | |||
| IF nextPhW(l) THEN | |||
| // ChangePhoneme(-) | |||
| // ChangePhoneme(NULL) | |||
| ENDIF | |||
| ChangePhoneme(l/3) | |||
| // CALL base/l | |||
| @@ -565,6 +628,10 @@ phoneme r // used for 'r' after a vowel (to create a diphthong) | |||
| IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN | |||
| ChangePhoneme(R) | |||
| ENDIF | |||
| // "generer" [Sen'e:Vr], "mysterier" - delete the r | |||
| IF prevPhW(V) AND thisPh(isWordEnd) THEN | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| FMT(r/a_) | |||
| endphoneme | |||
| @@ -637,7 +704,7 @@ IF thisPh(isWordEnd) THEN | |||
| ENDIF | |||
| IF nextPhW(isVowel) THEN | |||
| NextVowelStarts | |||
| VowelStart(j/j@) | |||
| VowelStart(j/j@,-45) // jøderne | |||
| VowelStart(j/ja) | |||
| VowelStart(j/je,-35) | |||
| VowelStart(j/ji) | |||
| @@ -655,4 +722,5 @@ Vowelout len=70 | |||
| Vowelout len=70 | |||
| FMT(j/j_) | |||
| ENDIF | |||
| endphoneme | |||
| endphoneme | |||
| @@ -263,8 +263,8 @@ endphoneme | |||
| phoneme OI | |||
| vowel starttype #o endtype #i | |||
| length 280 | |||
| FMT(vdiph/ooi_4) | |||
| length 270 | |||
| FMT(vdiph/ooi_3) | |||
| endphoneme | |||
| @@ -13,7 +13,7 @@ phoneme @ | |||
| length 130 | |||
| ChangeIfDiminished(@-) | |||
| IF nextPh(H) THEN | |||
| IF nextPh(H) OR prevPh(H) THEN | |||
| FMT(vowel/@_low) | |||
| ENDIF | |||
| FMT(vowel/@_bck) | |||
| @@ -24,6 +24,11 @@ phoneme V | |||
| vowel flag1 starttype #@ endtype #@ | |||
| length 130 | |||
| IF thisPh(isWordStart) THEN | |||
| FMT(vowel/V_3) | |||
| RETURN | |||
| ENDIF | |||
| IF thisPh(isNotStressed) THEN | |||
| IF prevPh(H) THEN | |||
| ChangePhoneme(@) | |||
| @@ -33,15 +38,11 @@ phoneme V | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| IF NOT nextVowel(isFlag1) THEN | |||
| IF thisPh(isSeqFlag1) THEN | |||
| // delete the last inherent vowel of a sequence | |||
| ChangePhoneme(NULL) | |||
| IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN | |||
| IF nextPhW(isNotVowel) AND nextPh(isWordEnd) THEN | |||
| // don't delete schwa before a word-final consonant | |||
| ELSE | |||
| IF NOT thisPh(isFirstVowel) THEN | |||
| // delete if not the first vowel, and is an isolated 'a' | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| @@ -55,7 +56,7 @@ phoneme V | |||
| ChangePhoneme(@) | |||
| ENDIF | |||
| IF nextPh(H) THEN | |||
| IF nextPh(H) OR prevPh(H) THEN | |||
| FMT(vowel/@_low) | |||
| ENDIF | |||
| ENDIF | |||
| @@ -135,6 +136,9 @@ endphoneme | |||
| phoneme a: | |||
| vowel long starttype #a endtype #a | |||
| length 190 | |||
| IF nextPhW(j) THEN | |||
| FMT(vowel/a_5) | |||
| ENDIF | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| @@ -208,25 +212,25 @@ endphoneme | |||
| phoneme E~ | |||
| vowel long starttype #e endtype #e | |||
| length 230 | |||
| length 220 | |||
| FMT(vnasal/ee_n2) | |||
| endphoneme | |||
| phoneme a~ | |||
| vowel long starttype #a endtype #a | |||
| length 250 | |||
| FMT(vnasal/aa_n) | |||
| length 220 | |||
| FMT(vnasal/&_n) | |||
| endphoneme | |||
| phoneme V~ | |||
| vowel long starttype #@ endtype #@ | |||
| length 250 | |||
| length 220 | |||
| FMT(vnasal/V_n) | |||
| endphoneme | |||
| phoneme O~ | |||
| vowel long starttype #o endtype #o | |||
| length 230 | |||
| length 220 | |||
| FMT(vnasal/oo_n2) | |||
| endphoneme | |||
| @@ -244,7 +248,7 @@ endphoneme | |||
| phoneme u~ | |||
| vowel long starttype #u endtype #u | |||
| length 230 | |||
| length 220 | |||
| FMT(vnasal/u_n) | |||
| endphoneme | |||
| @@ -513,3 +517,22 @@ phoneme #X2 // click, use for indicating combining long vowels | |||
| endphoneme | |||
| phoneme r | |||
| liquid rhotic | |||
| lengthmod 3 | |||
| IF thisPh(isWordEnd) THEN | |||
| CALL base/r/ | |||
| ELSE | |||
| IF prevPhW(isVowel) THEN | |||
| IF nextPhW(isNotVowel) OR nextPhW(V) THEN | |||
| ChangePhoneme(*) | |||
| ENDIF | |||
| ENDIF | |||
| CALL base/r | |||
| ENDIF | |||
| ipa ɾ | |||
| endphoneme | |||
| @@ -113,7 +113,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype #u endtype #u | |||
| length 130 | |||
| IF nextPh(isVowel) THEN | |||
| IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||
| ChangePhoneme(w) | |||
| ENDIF | |||
| FMT(vowel/u_6) | |||
| @@ -135,7 +135,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype #u endtype #u | |||
| length 140 | |||
| IF thisPh(isWordEnd) AND nextPh(isVowel) THEN | |||
| IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN | |||
| ChangePhoneme(w) | |||
| ENDIF | |||
| FMT(vowel/uu_bck) | |||
| @@ -6,44 +6,44 @@ | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 180 | |||
| length 200 | |||
| FMT(vowel/a_4) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 170 | |||
| length 190 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/oo) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/oo) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 180 | |||
| length 200 | |||
| FMT(vowel/u_bck2) | |||
| endphoneme | |||
| @@ -107,11 +107,16 @@ phoneme D | |||
| voicingswitch T | |||
| CALL base/D | |||
| IF nextPh(isPause2) THEN | |||
| FMT(voc/dh_) addWav(vocw/dh, 40) // weaker | |||
| FMT(voc/dh_) addWav(vocw/dh, 35) // weaker | |||
| ENDIF | |||
| endphoneme | |||
| phoneme t // dental variant of /t/ | |||
| import_phoneme base/t[ | |||
| endphoneme | |||
| phoneme s | |||
| vls alv frc sibilant | |||
| lengthmod 3 | |||
| @@ -2,7 +2,7 @@ | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| length 180 | |||
| IF thisPh(isTranslationGiven) THEN | |||
| // don't reduce the vowel if phonemes are explicitly given | |||
| ELSE | |||
| @@ -18,14 +18,14 @@ endphoneme | |||
| phoneme I | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| length 180 | |||
| FMT(vowel/ii_5) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #u endtype #u | |||
| length 155 | |||
| length 180 | |||
| IF thisPh(isTranslationGiven) THEN | |||
| // don't reduce the vowel if phonemes are explicitly given | |||
| ELSE | |||
| @@ -41,7 +41,7 @@ endphoneme | |||
| phoneme Y | |||
| vowel starttype #u endtype #u | |||
| length 155 | |||
| length 180 | |||
| FMT(vowel/u#) | |||
| endphoneme | |||
| @@ -49,10 +49,16 @@ endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 180 | |||
| length 200 | |||
| IF thisPh(isTranslationGiven) THEN | |||
| // don't reduce the vowel if phonemes are explicitly given | |||
| ELSE | |||
| IF nextPh(isWordEnd) OR next2PhW(isNotVowel) THEN | |||
| IF nextPh(isRhotic) OR nextPh(isNasal) OR nextPh(l) OR nextPh(L) THEN | |||
| ChangePhoneme(&) | |||
| ENDIF | |||
| ENDIF | |||
| IF thisPh(isFinalVowel) THEN | |||
| ChangePhoneme(E) | |||
| ENDIF | |||
| @@ -65,21 +71,27 @@ endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 180 | |||
| length 200 | |||
| FMT(vowel/e_mid) | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype #a endtype #a | |||
| length 200 | |||
| FMT(vowel/ee_6) | |||
| endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 180 | |||
| length 200 | |||
| FMT(vowel/y#) | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/a#_4) | |||
| endphoneme | |||
| @@ -87,7 +99,7 @@ endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 150 | |||
| length 180 | |||
| IF thisPh(isTranslationGiven) THEN | |||
| // don't reduce the vowel if phonemes are explicitly given | |||
| ELSE | |||
| @@ -103,7 +115,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype #u endtype #u | |||
| length 150 | |||
| length 180 | |||
| FMT(vowel/uu_2) | |||
| endphoneme | |||
| @@ -111,7 +123,7 @@ endphoneme | |||
| phoneme @ | |||
| vowel starttype #@ endtype #@ | |||
| ipa ɯ | |||
| length 150 | |||
| length 180 | |||
| FMT(vowel/u#_7) | |||
| endphoneme | |||
| @@ -119,7 +131,7 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| length 200 | |||
| IF thisPh(isTranslationGiven) THEN | |||
| // don't reduce the vowel if phonemes are explicitly given | |||
| ELSE | |||
| @@ -135,7 +147,7 @@ endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| length 200 | |||
| FMT(vowel/oo) | |||
| endphoneme | |||
| @@ -179,12 +191,20 @@ phoneme J | |||
| endphoneme | |||
| phoneme l | |||
| import_phoneme en/l | |||
| endphoneme | |||
| phoneme G | |||
| import_phoneme en/r/ | |||
| lengthmod 7 | |||
| endphoneme | |||
| phoneme R | |||
| vcd alv flp rhotic | |||
| IF prevPhW(isVowel) AND nextPhW(isVowel) THEN | |||
| CALL base/* | |||
| // ELIF prevPhW(isNotVowel) THEN | |||
| // CALL base/R | |||
| ELSE | |||
| CALL base/r | |||
| ENDIF | |||
| ipa ɾ | |||
| endphoneme | |||
| @@ -18,13 +18,13 @@ endphoneme | |||
| phoneme 3 // sắc Tone(rising | |||
| stress | |||
| Tone(25, 50, envelope/p_rise, NULL) // 25 | |||
| Tone(30, 60, envelope/p_rise, NULL) // 25 50 | |||
| endphoneme | |||
| phoneme 4 // hỏi Tone(curve (dipping rising) | |||
| stress | |||
| Tone(30, 5, envelope/p_fallrise, NULL) | |||
| Tone(40, 5, envelope/p_fallrise, NULL) //30 | |||
| endphoneme | |||
| @@ -54,33 +54,33 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| length 140 | |||
| FMT(vowel/a_6) //a_4) | |||
| endphoneme | |||
| phoneme a: | |||
| vowel starttype #a endtype #a | |||
| length 200 //280 | |||
| FMT(vietnam/a) //FMT(vowel/a_6) | |||
| length 240 //280 | |||
| FMT(vowel/a_8) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 200 | |||
| length 240 | |||
| FMT(vowel/ee_3) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 200 | |||
| length 140 | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 190 | |||
| length 240 | |||
| IfNextVowelAppend(;) | |||
| IF prevPhW(w) THEN | |||
| VowelStart(w/wi) | |||
| @@ -100,7 +100,7 @@ phoneme O | |||
| ELSE | |||
| length 200 | |||
| ENDIF | |||
| FMT(vowel/aa_4) | |||
| FMT(vowel/0_2) //aa_4) | |||
| endphoneme | |||
| phoneme o | |||
| @@ -110,7 +110,7 @@ phoneme o | |||
| ELSE | |||
| length 200 | |||
| ENDIF | |||
| FMT(vowel/o_2) | |||
| FMT(vowel/o) // o_2) | |||
| endphoneme | |||
| @@ -119,9 +119,9 @@ phoneme u | |||
| IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound | |||
| length 120 | |||
| ELSE | |||
| length 200 | |||
| length 240 | |||
| ENDIF | |||
| FMT(vnasal/u_n) //vowel/u_7) | |||
| FMT(vowel/u_5) | |||
| endphoneme | |||
| phoneme y | |||
| @@ -129,7 +129,7 @@ phoneme y | |||
| IF nextPh(kh) OR nextPh(N) THEN | |||
| length 120 | |||
| ELSE | |||
| length 200 | |||
| length 180 | |||
| ENDIF | |||
| FMT(vowel/u#_5) | |||
| endphoneme | |||
| @@ -138,10 +138,10 @@ endphoneme | |||
| phoneme @ | |||
| vowel starttype #@ endtype #a | |||
| IF nextPh(kh) OR nextPh(N) THEN | |||
| IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN | |||
| length 120 | |||
| ELSE | |||
| length 170 | |||
| length 200 | |||
| ENDIF | |||
| FMT(vowel/V) //vowel/@_2) | |||
| endphoneme | |||
| @@ -149,7 +149,7 @@ endphoneme | |||
| phoneme @: | |||
| vowel starttype #@ endtype #@ | |||
| length 280 | |||
| length 200 | |||
| FMT(vowel/@_2) | |||
| endphoneme | |||
| @@ -160,8 +160,8 @@ endphoneme | |||
| phoneme aI | |||
| vowel starttype #a endtype #i | |||
| length 200 //250 | |||
| FMT(vdiph/&y) | |||
| length 140 //250 | |||
| FMT(vdiph/&i_2) | |||
| endphoneme | |||
| @@ -188,14 +188,14 @@ endphoneme | |||
| phoneme eI | |||
| vowel starttype #e endtype #i | |||
| length 200 | |||
| length 140 | |||
| FMT(vdiph/ei) | |||
| endphoneme | |||
| phoneme EI | |||
| vowel starttype #e endtype #i | |||
| length 200 | |||
| length 140 | |||
| FMT(vdiph/eei) | |||
| endphoneme | |||
| @@ -203,7 +203,7 @@ endphoneme | |||
| phoneme OI | |||
| vowel starttype #o endtype #i | |||
| length 200 | |||
| FMT(vdiph/0i) | |||
| FMT(vdiph/ooi_3) | |||
| endphoneme | |||
| @@ -231,14 +231,14 @@ endphoneme | |||
| phoneme aU | |||
| vowel starttype #a endtype #u | |||
| length 210 | |||
| length 200 | |||
| FMT(vdiph/aau_4) | |||
| endphoneme | |||
| phoneme a:U | |||
| vowel starttype #a endtype #u | |||
| length 230 //270 | |||
| length 200 //270 | |||
| FMT(vdiph/au) | |||
| endphoneme | |||
| @@ -258,19 +258,19 @@ endphoneme | |||
| phoneme iU | |||
| vowel starttype #i endtype #u | |||
| length 200 | |||
| length 140 | |||
| FMT(vdiph2/iu) | |||
| endphoneme | |||
| phoneme @U | |||
| vowel starttype #@ endtype #u | |||
| length 200 | |||
| length 140 | |||
| FMT(vdiph/@u_3) | |||
| endphoneme | |||
| phoneme @:U | |||
| vowel starttype #@ endtype #u | |||
| length 270 | |||
| length 140 | |||
| FMT(vdiph/@u) | |||
| endphoneme | |||
| @@ -278,19 +278,19 @@ endphoneme | |||
| phoneme i@ | |||
| vowel starttype #i endtype #@ | |||
| length 240 | |||
| length 140 | |||
| FMT(vdiph2/ii@_3) | |||
| endphoneme | |||
| phoneme y@ | |||
| vowel starttype #i endtype #@ | |||
| length 200 | |||
| length 140 | |||
| FMT(vdiph2/y-y#) | |||
| endphoneme | |||
| phoneme u@ | |||
| vowel starttype #u endtype #@ | |||
| length 150 //200 | |||
| length 100 //200 | |||
| FMT(vdiph2/uu@) | |||
| endphoneme | |||
| @@ -298,39 +298,67 @@ endphoneme | |||
| phoneme o# // ông | |||
| vowel starttype #o endtype #o | |||
| length 200 | |||
| length 140 | |||
| FMT(vnasal/a#u_n) | |||
| endphoneme | |||
| phoneme O# // ong | |||
| vowel starttype #o endtype #o | |||
| length 200 | |||
| length 140 | |||
| FMT(vnasal/&u_n) | |||
| endphoneme | |||
| phoneme o@ | |||
| vowel starttype #o endtype #o | |||
| length 160 | |||
| length 140 | |||
| FMT(vdiph2/oa) | |||
| endphoneme | |||
| phoneme o& | |||
| vowel starttype #o endtype #o | |||
| length 160 | |||
| length 140 | |||
| FMT(vietnam/oe) | |||
| endphoneme | |||
| phoneme iE // iê : viết, giệc | |||
| vowel starttype #i endtype #e | |||
| length 190 | |||
| length 140 | |||
| FMT(vietnam/ie_2) | |||
| endphoneme | |||
| phoneme Oi // oai sound | |||
| vowel starttype #o endtype #i | |||
| length 140 | |||
| FMT(vdiph/ooi_3) | |||
| endphoneme | |||
| // Vowel and Dipthong for south dialect | |||
| phoneme O- // ôi southern sound | |||
| vowel starttype #o endtype #i | |||
| length 150 | |||
| FMT(vnasal/oi_n) | |||
| endphoneme | |||
| phoneme @- // ơi southern sound | |||
| vowel starttype #o endtype #i | |||
| length 150 | |||
| FMT(vdiph/@i_3) | |||
| endphoneme | |||
| phoneme u- // u southern sound | |||
| vowel starttype #u endtype #u | |||
| length 150 | |||
| FMT(vowel/u_3,70) | |||
| endphoneme | |||
| phoneme kh | |||
| vls vel frc | |||
| lengthmod 3 | |||
| Vowelin f1=0 f2=2300 200 400 f3=200 80 | |||
| Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 | |||
| Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 | |||
| WAV(vietnam/_c,5) //ufric/x, 50) | |||
| endphoneme | |||
| @@ -338,11 +366,11 @@ endphoneme | |||
| phoneme l | |||
| liquid | |||
| lengthmod 7 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 | |||
| //lengthmod 7 | |||
| //IF nextPh(isNotVowel) THEN | |||
| // ChangePhoneme(l/2) | |||
| //ENDIF | |||
| //CALL vowelstart_l | |||
| FMT(l/l_vi) | |||
| @@ -352,7 +380,7 @@ phoneme t | |||
| vls alv stop | |||
| //voicingswitch d | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| WAV(vietnam/th, 50) | |||
| @@ -362,7 +390,7 @@ phoneme cr | |||
| vls pla afr sibilant | |||
| //voicingswitch dZ | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||
| Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=30 | |||
| WAV(vietnam/tr,10) | |||
| @@ -370,10 +398,10 @@ endphoneme | |||
| phoneme d | |||
| vcd alv stop | |||
| lengthmod 5 | |||
| // lengthmod 5 | |||
| Vowelin f1=1 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk | |||
| Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=30 | |||
| Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30 | |||
| WAV(vietnam/dd) | |||
| endphoneme | |||
| @@ -381,9 +409,9 @@ WAV(vietnam/dd) | |||
| vls pal stop palatal | |||
| //voicingswitch J | |||
| lengthmod 2 | |||
| length 75 | |||
| Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | |||
| Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 | |||
| length 2 | |||
| Vowelin f1=0 f2=2700 400 600 f3=300 80 len=30 brk | |||
| Vowelout f1=1 f2=2700 400 600 f3=200 70 len=30 colr=1 | |||
| WAV(vietnam/ch,5) | |||
| @@ -402,18 +430,20 @@ endphoneme | |||
| phoneme n | |||
| vcd alv nasal | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
| Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 brk len=30 | |||
| Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk len=30 | |||
| lengthmod 4 | |||
| FMT(n/n#_) | |||
| length 75 | |||
| FMT(n/nr_) | |||
| endphoneme | |||
| phoneme t[ // dental variant of /t/ | |||
| vls dnt stop | |||
| voicingswitch d[ | |||
| lengthmod 2 | |||
| Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 | |||
| Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
| length 5 | |||
| Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=30 | |||
| Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=30 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/t_unasp2, 5) | |||
| @@ -6,31 +6,31 @@ | |||
| phoneme 1 // ngang tone: level | |||
| stress | |||
| Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone | |||
| Tone(40, 5, envelope/p_level, NULL) // similar Hue dialect tone | |||
| endphoneme | |||
| phoneme 2 // huyền tone: low falling | |||
| stress | |||
| Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 8 | |||
| Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 25 | |||
| endphoneme | |||
| phoneme 3 // sắc Tone(rising | |||
| stress | |||
| Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75 | |||
| Tone(2, 10, envelope/p_fallrise, NULL) // 2 10 | |||
| endphoneme | |||
| phoneme 4 // hỏi Tone(curve (dipping rising) | |||
| stress | |||
| Tone(20, 5, envelope/p_512,NULL) //Tone(55, 5, envelope/p_fallrise, NULL) //30 5 m 55 5 | |||
| Tone(5, 10, envelope/p_512,NULL) //20 5 | |||
| endphoneme | |||
| phoneme 5 // ngã tone: broken (creaking rising) | |||
| stress | |||
| Tone(50,2, envelope/p_214, envelope/vi_5amp) // 28,58 m20 85 | |||
| Tone(10, 15, envelope/p_512, envelope/vi_6amp) // 40 20 | |||
| endphoneme | |||
| @@ -46,4 +46,41 @@ phoneme 7 // Tone(1 (ngang) at end of clause | |||
| Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 | |||
| endphoneme | |||
| // Redefine the length of vowels | |||
| phoneme i | |||
| CALL vi/i | |||
| length 150 | |||
| endphoneme | |||
| phoneme E | |||
| CALL vi/E | |||
| length 150 | |||
| endphoneme | |||
| phoneme a: | |||
| CALL vi/a: | |||
| length 150 | |||
| endphoneme | |||
| phoneme @ | |||
| CALL vi/@ | |||
| length 150 | |||
| endphoneme | |||
| phoneme @: | |||
| CALL vi/@: | |||
| length 150 | |||
| endphoneme | |||
| phoneme O | |||
| CALL vi/O | |||
| length 150 | |||
| FMT(vowel/0) | |||
| endphoneme | |||
| phoneme Oi | |||
| CALL vi/Oi | |||
| length 100 | |||
| FMT(vdiph/ooi_2) | |||
| endphoneme | |||
| @@ -0,0 +1,97 @@ | |||
| //==================================================== | |||
| // Vietnamese Phonemes - Make Sài gòn Dialect | |||
| //==================================================== | |||
| phoneme 1 // ngang tone: level | |||
| stress | |||
| Tone(32, 34, envelope/p_level, NULL) | |||
| endphoneme | |||
| phoneme 2 // huyền tone: low falling | |||
| stress | |||
| Tone(35,20 , envelope/p_fall, NULL) //20 | |||
| endphoneme | |||
| phoneme 3 // sắc Tone(rising | |||
| stress | |||
| Tone(40,60, envelope/p_rise, NULL) // 25 50 | |||
| endphoneme | |||
| phoneme 4 // hỏi Tone(curve (dipping rising) | |||
| stress | |||
| Tone(30,50, envelope/p_rise, NULL) //envelope/vi_5amp) // 28,58 | |||
| endphoneme | |||
| phoneme 5 // ngã tone: broken (creaking rising) | |||
| stress | |||
| Tone(30,50, envelope/p_rise, NULL) //20,80, envelope/p_214, envelope/vi_5amp) // 28,58 | |||
| endphoneme | |||
| phoneme 6 // nặng Tone(drop (constricted) | |||
| stress | |||
| //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel | |||
| Tone(10,5, envelope/p_512,NULL) // envelope/vi_6amp) | |||
| endphoneme | |||
| phoneme 7 // Tone(1 (ngang) at end of clause | |||
| stress | |||
| Tone(40, 20, envelope/p_fall, NULL) | |||
| endphoneme | |||
| // Redefine the length of vowels | |||
| phoneme i | |||
| CALL vi/i | |||
| length 150 | |||
| endphoneme | |||
| phoneme E | |||
| CALL vi/E | |||
| length 150 | |||
| endphoneme | |||
| phoneme a: | |||
| CALL vi/a: | |||
| length 150 | |||
| FMT(vietnam/a) | |||
| endphoneme | |||
| phoneme @ | |||
| CALL vi/@ | |||
| length 150 | |||
| endphoneme | |||
| phoneme @: | |||
| CALL vi/@: | |||
| length 150 | |||
| endphoneme | |||
| phoneme O | |||
| CALL vi/O | |||
| length 150 | |||
| FMT(vowel/0) | |||
| endphoneme | |||
| phoneme Oi | |||
| CALL vi/Oi | |||
| length 100 | |||
| FMT(vdiph/ooi_2) | |||
| endphoneme | |||
| phoneme y | |||
| CALL vi/y | |||
| FMT(vowel/u#_4) | |||
| endphoneme | |||
| phoneme o | |||
| CALL vi/o | |||
| FMT(vowel/o_5) | |||
| endphoneme | |||
| @@ -616,8 +616,8 @@ phoneme w | |||
| VowelEnding(w/xw, -30) | |||
| IF prevPh(isPause) THEN | |||
| FMT(w/_w) | |||
| IF prevPhW(isNasal) THEN | |||
| FMT(w/w) | |||
| ELSE | |||
| FMT(w/_w) | |||
| ENDIF | |||
| @@ -634,7 +634,7 @@ endphoneme | |||
| phoneme j | |||
| liquid palatal | |||
| liquid palatal starttype #i | |||
| lengthmod 7 | |||
| IF nextPhW(isVowel) THEN | |||
| @@ -1610,7 +1610,7 @@ phoneme x | |||
| Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||
| IF nextPh(isPause) THEN | |||
| WAV(ufric/x, 110) | |||
| WAV(ufric/x_, 60) | |||
| ENDIF | |||
| WAV(ufric/x_hr, 20) | |||
| endphoneme | |||
| @@ -1745,9 +1745,6 @@ include ph_kannada | |||
| phonemetable ml hi | |||
| include ph_malayalam | |||
| phonemetable te hi | |||
| include ph_telugu | |||
| phonemetable hu base | |||
| @@ -1833,6 +1830,9 @@ include ph_vietnam | |||
| phonemetable vi-hue vi | |||
| include ph_vietnam_hue | |||
| phonemetable vi-sgn vi | |||
| include ph_vietnam_sgn | |||
| phonemetable zhy base | |||
| include ph_zh_yue | |||
| @@ -1867,31 +1867,14 @@ include ph_georgian | |||
| phonemetable fa base | |||
| include ph_farsi | |||
| // experimental | |||
| phonemetable ko base | |||
| include ph_korean | |||
| phonemetable kl base | |||
| include ph_greenlandic | |||
| phonemetable am base | |||
| include ph_amhari | |||
| //************************************************************************************** | |||
| // The following lines are experimental, for future additions. | |||
| // These langauges are not in a usable state. | |||
| // These lines can be deleted. | |||
| phonemetable si hi | |||
| include ph_sinhala | |||
| phonemetable sl sk | |||
| include ph_slovenian | |||
| //phonemetable rw base2 | |||
| //include ph_kinyarwanda | |||
| phonemetable rw base2 | |||
| include ph_kinyarwanda | |||
| //phonemetable mr hi | |||
| //include ph_marathi | |||
| @@ -1902,42 +1885,67 @@ include ph_slovenian | |||
| //phonemetable mn base | |||
| //include ph_mongolian | |||
| //phonemetable prs base | |||
| //include ph_dari | |||
| phonemetable prs base | |||
| include ph_dari | |||
| phonemetable sl sk | |||
| include ph_slovenian | |||
| phonemetable gd base | |||
| include ph_s_gaelic | |||
| phonemetable nso base | |||
| include ph_northern-sotho | |||
| phonemetable ht fr | |||
| include ph_haitian | |||
| phonemetable az tr | |||
| include ph_azerbaijani | |||
| phonemetable ak base | |||
| include ph_akan | |||
| phonemetable am base | |||
| include ph_amhari | |||
| phonemetable wo base | |||
| include ph_wolof | |||
| //phonemetable gd base | |||
| //include ph_s_gaelic | |||
| phonemetable dv hi | |||
| include ph_divehi | |||
| //phonemetable nso base | |||
| //include ph_northern-sotho | |||
| phonemetable te hi | |||
| include ph_telugu | |||
| //phonemetable ht fr | |||
| //include ph_haitian | |||
| phonemetable si hi | |||
| include ph_sinhala | |||
| //phonemetable az tr | |||
| //include ph_azerbaijani | |||
| phonemetable tn base | |||
| include ph_setswana | |||
| //phonemetable ak base | |||
| //include ph_akan | |||
| //phonemetable wo base | |||
| //include ph_wolof | |||
| phonemetable mt base | |||
| include ph_maltese | |||
| //phonemetable dv hi | |||
| //include ph_divehi | |||
| phonemetable bo hi | |||
| include ph_tibetan | |||
| //phonemetable tn base | |||
| //include ph_setswana | |||
| phonemetable kk base | |||
| include ph_kazakh | |||
| //phonemetable mt base | |||
| //include ph_maltese | |||
| phonemetable tt base | |||
| include ph_tatar | |||
| //phonemetable bo hi | |||
| //include ph_tibetan | |||
| phonemetable ko base | |||
| include ph_korean | |||
| phonemetable kl base | |||
| include ph_greenlandic | |||
| //phonemetable kk base | |||
| //include ph_kazakh | |||
| phonemetable ar base | |||
| include ph_arabic | |||
| //phonemetable tt base | |||
| //include ph_tatar | |||
| phonemetable gu hi | |||
| include ph_gujarati | |||
| @@ -2,8 +2,8 @@ | |||
| # Toolflags: | |||
| CCflags = -c -C90 -depend !Depend -IC: -throwback -memaccess -zM -L22-S22-L41 | |||
| C++flags = -c -depend !Depend -IC: -throwback -zM -L22-S22-L41 | |||
| CCflags = -c -C90 -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
| C++flags = -c -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
| Linkflags = -rmf -c++ -o $@ | |||
| ObjAsmflags = -throwback -NoCache -depend !Depend | |||
| CMHGflags = | |||
| @@ -27,38 +27,64 @@ Squeezeflags = -o $@ | |||
| # User-editable dependencies: | |||
| # Static dependencies: | |||
| @.o.speak_riscos: @.cpp.speak_riscos | |||
| c++ $(c++flags) -o @.o.speak_riscos @.cpp.speak_riscos | |||
| @.o.compiledict: @.cpp.compiledict | |||
| c++ $(c++flags) -o @.o.compiledict @.cpp.compiledict | |||
| @.o.dictionary: @.CPP.dictionary | |||
| c++ $(c++flags) -o @.o.dictionary @.CPP.dictionary | |||
| @.o.intonation: @.CPP.intonation | |||
| c++ $(c++flags) -o @.o.intonation @.CPP.intonation | |||
| @.o.numbers: @.CPP.numbers | |||
| c++ $(c++flags) -o @.o.numbers @.CPP.numbers | |||
| @.o.phonemelist: @.CPP.phonemelist | |||
| c++ $(c++flags) -o @.o.phonemelist @.CPP.phonemelist | |||
| @.o.readclause: @.CPP.readclause | |||
| c++ $(c++flags) -o @.o.readclause @.CPP.readclause | |||
| @.o.setlengths: @.CPP.setlengths | |||
| c++ $(c++flags) -o @.o.setlengths @.CPP.setlengths | |||
| @.o.synthdata: @.CPP.synthdata | |||
| c++ $(c++flags) -o @.o.synthdata @.CPP.synthdata | |||
| @.o.synth_mbrola: @.CPP.synth_mbrola | |||
| c++ $(c++flags) -o @.o.synth_mbrola @.CPP.synth_mbrola | |||
| @.o.synthesize: @.CPP.synthesize | |||
| c++ $(c++flags) -o @.o.synthesize @.CPP.synthesize | |||
| @.o.translate: @.CPP.translate | |||
| c++ $(c++flags) -o @.o.translate @.CPP.translate | |||
| @.o.tr_languages: @.CPP.tr_languages | |||
| c++ $(c++flags) -o @.o.tr_languages @.CPP.tr_languages | |||
| @.o.voices: @.CPP.voices | |||
| c++ $(c++flags) -o @.o.voices @.CPP.voices | |||
| @.o.wavegen: @.CPP.wavegen | |||
| c++ $(c++flags) -o @.o.wavegen @.CPP.wavegen | |||
| @.o.speak_riscos: @.c.speak_riscos | |||
| cc $(ccflags) -o @.o.speak_riscos @.c.speak_riscos | |||
| @.o.compiledict: @.c.compiledict | |||
| cc $(ccflags) -o @.o.compiledict @.c.compiledict | |||
| @.o.dictionary: @.c.dictionary | |||
| cc $(ccflags) -o @.o.dictionary @.c.dictionary | |||
| @.o.intonation: @.c.intonation | |||
| cc $(ccflags) -o @.o.intonation @.c.intonation | |||
| @.o.numbers: @.c.numbers | |||
| cc $(ccflags) -o @.o.numbers @.c.numbers | |||
| @.o.phonemelist: @.c.phonemelist | |||
| cc $(ccflags) -o @.o.phonemelist @.c.phonemelist | |||
| @.o.readclause: @.c.readclause | |||
| cc $(ccflags) -o @.o.readclause @.c.readclause | |||
| @.o.setlengths: @.c.setlengths | |||
| cc $(ccflags) -o @.o.setlengths @.c.setlengths | |||
| @.o.synthdata: @.c.synthdata | |||
| cc $(ccflags) -o @.o.synthdata @.c.synthdata | |||
| @.o.synth_mbrola: @.c.synth_mbrola | |||
| cc $(ccflags) -o @.o.synth_mbrola @.c.synth_mbrola | |||
| @.o.synthesize: @.c.synthesize | |||
| cc $(ccflags) -o @.o.synthesize @.c.synthesize | |||
| @.o.translate: @.c.translate | |||
| cc $(ccflags) -o @.o.translate @.c.translate | |||
| @.o.tr_languages: @.c.tr_languages | |||
| cc $(ccflags) -o @.o.tr_languages @.c.tr_languages | |||
| @.o.voices: @.c.voices | |||
| cc $(ccflags) -o @.o.voices @.c.voices | |||
| @.o.wavegen: @.c.wavegen | |||
| cc $(ccflags) -o @.o.wavegen @.c.wavegen | |||
| @.o.assemb: @.s.assemb | |||
| objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | |||
| # Dynamic dependencies: | |||
| o.wavegen: c.wavegen | |||
| o.wavegen: h.StdAfx | |||
| o.wavegen: h.speak_lib | |||
| o.wavegen: h.speech | |||
| o.wavegen: h.phoneme | |||
| o.wavegen: h.synthesize | |||
| o.wavegen: h.voice | |||
| o.wavegen: h.sintab | |||
| o.speak_riscos: c.speak_riscos | |||
| o.speak_riscos: C:h.kernel | |||
| o.speak_riscos: h.speech | |||
| o.speak_riscos: h.speak_lib | |||
| o.speak_riscos: h.phoneme | |||
| o.speak_riscos: h.synthesize | |||
| o.speak_riscos: h.voice | |||
| o.speak_riscos: h.translate | |||
| o.synthdata: c.synthdata | |||
| o.synthdata: h.StdAfx | |||
| o.synthdata: h.wctype | |||
| o.synthdata: h.speak_lib | |||
| o.synthdata: h.speech | |||
| o.synthdata: h.phoneme | |||
| o.synthdata: h.synthesize | |||
| o.synthdata: h.voice | |||
| o.synthdata: h.translate | |||
| o.synthdata: h.wave | |||
| o.synthdata: C:h.stdint | |||
| @@ -38,7 +38,7 @@ | |||
| #define os_X 0x20000 | |||
| // interface to the assembler section | |||
| extern "C" { | |||
| //extern "C" { | |||
| extern void DMA_Handler(void); | |||
| @@ -51,7 +51,7 @@ extern int callback_entry(_kernel_swi_regs *r, void *pw); | |||
| extern int sound_handler(_kernel_swi_regs *r, void *pw); | |||
| extern int sound_entry(_kernel_swi_regs *r, void *pw); | |||
| } | |||
| //} | |||
| extern int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); | |||
| extern void RiscosOpenSound(); | |||
| @@ -75,12 +75,13 @@ char path_home[N_PATH_HOME] = ""; | |||
| char wavefile[120]; | |||
| char textbuffile[L_tmpnam]; | |||
| int sample_rate_index; // current value | |||
| int current_voice_num=0; | |||
| int sample_rate_doubled = 0; // 1= write audio data at 2x sample rate | |||
| char current_voice_name[40] = {0}; | |||
| int n_voice_files = 0; | |||
| int n_voice_variant_files = 0; | |||
| // output sound buffer, 2 bytes per sample | |||
| static unsigned short SoundBuf[4096]; | |||
| static short SoundBuf[4096]; | |||
| static void *module_data; | |||
| static int callback_inhibit = 0; | |||
| static int more_text=0; | |||
| @@ -131,9 +132,10 @@ static const char *help_text = | |||
| "--punct=\"<characters>\"\n" | |||
| "\t Speak the names of punctuation characters during speaking. If\n" | |||
| "\t =<characters> is omitted, all punctuation is spoken.\n" | |||
| "--voices=<language>\n" | |||
| "\t List the available voices for the specified language.\n" | |||
| "\t If <language> is omitted, then list all voices.\n" | |||
| "--voices=\n" | |||
| "\t List the available voices. (More voices can be installed from the main eSpeak distribution)\n" | |||
| "--voices=variant\n" | |||
| "\t List the available voice variants which can be combined with voices, eg. en+f3\n" | |||
| "-k <integer>\n" | |||
| "\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | |||
| "\t higher values = a pitch increase (try -k20).\n"; | |||
| @@ -169,9 +171,6 @@ int GetFileLength(const char *filename) | |||
| } /* end of GetFileLength */ | |||
| void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||
| { | |||
| } | |||
| void ReadVoiceNames2(char *directory) | |||
| {//================================== | |||
| @@ -194,6 +193,9 @@ void ReadVoiceNames2(char *directory) | |||
| path_len = strlen(directory); | |||
| voice_variant_names[0] = "(none)"; | |||
| n_voice_variant_files = 1; | |||
| while(regs.r[3] > 0) | |||
| { | |||
| error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | |||
| @@ -363,8 +365,8 @@ static void CloseWaveFile(int rate) | |||
| void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) | |||
| {//====================================================================================== | |||
| void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||
| {//================================================================================================= | |||
| // Do nothing in the command-line version. | |||
| } // end of MarkerEvent | |||
| @@ -452,6 +454,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
| { | |||
| int c; | |||
| int ix; | |||
| char *vname; | |||
| static static_length=0; | |||
| static int user_token=0; /* increment for each call of translate() */ | |||
| _kernel_swi_regs regs; | |||
| @@ -462,12 +465,13 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
| option_endpause = 1; | |||
| if((voice_num >= 0) && (voice_num != current_voice_num) && (voice_num < N_VOICE_NAMES)) | |||
| vname = voice_names[voice_num]; | |||
| if((voice_num >= 0) && (strcmp(vname, current_voice_name) != 0) && (voice_num < N_VOICE_NAMES)) | |||
| { | |||
| SetVoiceByName(voice_names[voice_num]); | |||
| WavegenSetVoice(voice); | |||
| WavegenSetVoice(voice); | |||
| } | |||
| current_voice_num = voice_num; | |||
| strcmp(current_voice_name, vname); | |||
| /* don't count CR as terminator if length is specified */ | |||
| if(len > 0) terminator = 0; | |||
| @@ -593,8 +597,16 @@ void set_say_options(int reg2, int reg3) | |||
| option_waveout = 0; | |||
| option_multibyte = 0; // auto | |||
| option_capitals = 0; | |||
| option_punctuation = 0; | |||
| option_punctlist[0] = 0; | |||
| if(reg2 >= 0) | |||
| { | |||
| // not using SWI_SPEAK+14 to set voice and punctiation option | |||
| option_punctuation = 0; | |||
| option_punctlist[0] = 0; | |||
| } | |||
| else | |||
| { | |||
| SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
| } | |||
| } /* end of set_say_options */ | |||
| @@ -621,7 +633,7 @@ void jsd_swi_functions(int *r) | |||
| case 3: | |||
| // translate into phonemes | |||
| use_ipa = 0; | |||
| if((r[2] >= 1) && (use_ipa <= 3)) | |||
| if((r[2] >= 1) && (r[2] <= 5)) | |||
| use_ipa = r[2]; | |||
| TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
| @@ -641,7 +653,7 @@ void jsd_swi_functions(int *r) | |||
| if(r[1] < N_VOICE_NAMES) | |||
| { | |||
| SetVoiceByName(voice_names[r[1]]); | |||
| current_voice_num = r[1]; | |||
| strcmp(current_voice_name, voice_names[r[1]]); | |||
| WavegenSetVoice(voice); | |||
| } | |||
| break; | |||
| @@ -675,6 +687,8 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| int value; | |||
| int value2; | |||
| int q_length; | |||
| char *p; | |||
| int ix; | |||
| value = r[0]; | |||
| switch(swi_no) | |||
| @@ -682,16 +696,17 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| case 0: // ready ? | |||
| // returns the index into the source text of the currently speaking word | |||
| if(current_source_index > 0) | |||
| r[1] = current_source_index-1; | |||
| ix = current_source_index & 0x7ff; | |||
| if(ix > 0) | |||
| r[1] = ix-1; | |||
| else | |||
| r[1] = current_source_index; /* source index */ | |||
| r[1] = ix; /* source index */ | |||
| r[2] = 0; /* source tag */ | |||
| r[3] = 0; /* for future expansion */ | |||
| r[4] = 0; | |||
| r[5] = 0; | |||
| if(WcmdqUsed() < 5) | |||
| if((WcmdqUsed() < 5) && (more_text == 0)) | |||
| { | |||
| r[0] = -1; /* ready, or nearly */ | |||
| } | |||
| @@ -774,8 +789,30 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| break; | |||
| case 14: // set voice by name | |||
| SetVoiceByName((char *)r[0]); | |||
| WavegenSetVoice(voice); | |||
| p = (char *)r[0]; | |||
| if(strcmp(p, current_voice_name) != 0) | |||
| { | |||
| SetVoiceByName(p); | |||
| WavegenSetVoice(voice); | |||
| strcpy(current_voice_name, p); | |||
| } | |||
| option_punctuation = 0; | |||
| if(r[1] != 0) | |||
| { | |||
| p = (char *)r[1]; | |||
| if(p[0] == 0) | |||
| option_punctuation = 1; | |||
| else | |||
| { | |||
| for(ix=0; ix < N_PUNCTLIST; ix++) | |||
| { | |||
| if((option_punctlist[ix] = p[ix]) == 0) | |||
| break; | |||
| } | |||
| option_punctlist[N_PUNCTLIST-1] = 0; | |||
| option_punctuation = 2; | |||
| } | |||
| } | |||
| break; | |||
| } | |||
| return(NULL); | |||
| @@ -814,7 +851,7 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| const espeak_VOICE **voices; | |||
| espeak_VOICE voice_select; | |||
| static char genders[4] = {' ','M','F',' '}; | |||
| static char genders[4] = {'-','M','F','-'}; | |||
| if(language[0] == '=') | |||
| { | |||
| @@ -837,11 +874,24 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| { | |||
| count = 0; | |||
| p = v->languages; | |||
| if(memcmp(language,"=variant",8)==0) | |||
| { | |||
| if(strcmp(p+1,"variant") != 0) | |||
| continue; | |||
| } | |||
| else | |||
| if(language[0] == 0) | |||
| { | |||
| if(strcmp(p+1,"variant") == 0) | |||
| continue; | |||
| } | |||
| while(*p != 0) | |||
| { | |||
| len = strlen(p+1); | |||
| lang_name = p+1; | |||
| if(v->age == 0) | |||
| strcpy(age_buf," "); | |||
| else | |||
| @@ -859,8 +909,6 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| count++; | |||
| p += len+2; | |||
| } | |||
| // if(scores) | |||
| // fprintf(f_out,"%3d ",v->score); | |||
| fputc('\n',f_out); | |||
| } | |||
| } // end of DisplayVoices | |||
| @@ -910,9 +958,9 @@ void command_line(char *arg_string, int wait) | |||
| int option_index = 0; | |||
| int c; | |||
| int value; | |||
| int speed; | |||
| int amp; | |||
| int wordgap; | |||
| int speed = 175; | |||
| int amp = 100; | |||
| int wordgap = 0; | |||
| int speaking = 0; | |||
| int flag_stdin = 0; | |||
| int flag_compile = 0; | |||
| @@ -923,15 +971,15 @@ void command_line(char *arg_string, int wait) | |||
| char command[80]; | |||
| char *p; | |||
| int ix; | |||
| int quiet; | |||
| int quiet = 0; | |||
| voicename[0] = 0; | |||
| wavefile[0] = 0; | |||
| filename[0] = 0; | |||
| option_ssml = 0; | |||
| option_linelength = 0; | |||
| option_phonemes = 0; | |||
| option_waveout = 0; | |||
| quiet = 0; | |||
| option_multibyte = 0; // auto | |||
| option_capitals = 0; | |||
| option_punctuation = 0; | |||
| @@ -963,7 +1011,6 @@ void command_line(char *arg_string, int wait) | |||
| case 'k': | |||
| option_capitals = param_number(&p); | |||
| SetParameter(espeakCAPITALS,option_capitals,0); | |||
| break; | |||
| case 'x': | |||
| @@ -996,17 +1043,14 @@ void command_line(char *arg_string, int wait) | |||
| case 'a': | |||
| amp = param_number(&p); | |||
| SetParameter(espeakVOLUME,amp,0); | |||
| break; | |||
| case 's': | |||
| speed = param_number(&p); | |||
| SetParameter(espeakRATE,speed,0); | |||
| break; | |||
| case 'g': | |||
| wordgap = param_number(&p); | |||
| SetParameter(espeakWORDGAP,wordgap,0); | |||
| break; | |||
| case 'v': | |||
| @@ -1049,7 +1093,6 @@ void command_line(char *arg_string, int wait) | |||
| option_punctlist[N_PUNCTLIST-1] = 0; | |||
| option_punctuation = 2; | |||
| } | |||
| SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
| } | |||
| else | |||
| if(memcmp(command,"version",7)==0) | |||
| @@ -1080,6 +1123,12 @@ void command_line(char *arg_string, int wait) | |||
| } | |||
| } | |||
| SetParameter(espeakCAPITALS,option_capitals,0); | |||
| SetParameter(espeakWORDGAP,wordgap,0); | |||
| SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
| SetParameter(espeakRATE,speed,0); | |||
| SetParameter(espeakVOLUME,amp,0); | |||
| if((option_phonemes > 1) && !option_waveout) | |||
| quiet = 1; // can't call sprintf() during callback | |||
| @@ -1241,17 +1290,39 @@ int sound_handler(_kernel_swi_regs *r, void *pw) | |||
| int size; | |||
| int *dma_buf; | |||
| int x; | |||
| int x2; | |||
| int ix; | |||
| module_data = (int *)pw; | |||
| dma_buf = (int *)r->r[1]; | |||
| size = (r->r[2] - r->r[1])/4; | |||
| FillSoundBuf(size); | |||
| if(sample_rate_doubled == 0) | |||
| { | |||
| FillSoundBuf(size); | |||
| for(ix=0; ix<size; ix++) | |||
| for(ix=0; ix<size; ix++) | |||
| { | |||
| x = SoundBuf[ix] & 0xffff; | |||
| dma_buf[ix] = x + (x << 16); | |||
| } | |||
| } | |||
| else | |||
| { | |||
| x = SoundBuf[ix]; | |||
| dma_buf[ix] = x + (x << 16); | |||
| // write audio data at 2x sample rate | |||
| size = size /2; | |||
| FillSoundBuf(size); | |||
| for(ix=0; ix<size; ix++) | |||
| { | |||
| x = SoundBuf[ix] & 0xffff; | |||
| dma_buf[ix*2] = x + (x << 16); | |||
| if((ix+1) < size) | |||
| { | |||
| x = ((SoundBuf[ix] + SoundBuf[ix+1]) / 2) & 0xffff; // interpolate | |||
| } | |||
| dma_buf[ix*2 + 1] = x + (x << 16); | |||
| } | |||
| } | |||
| n_queue = WcmdqUsed(); | |||
| @@ -1287,10 +1358,15 @@ int InitSound16(int sample_rate) | |||
| int srate; | |||
| int n_srix; | |||
| int ix; | |||
| int double_rate_ix = -1; | |||
| int nearest_ix; | |||
| int nearest_diff = 0x7fffffff; | |||
| int diff; | |||
| _kernel_swi_regs regs; | |||
| _kernel_oserror *error; | |||
| sound_mode = 0; | |||
| sample_rate_doubled = 0; | |||
| regs.r[0] = 0; | |||
| error = _kernel_swi(0x40144+os_X,®s,®s); | |||
| sound_mode = regs.r[0]; | |||
| @@ -1301,7 +1377,7 @@ int InitSound16(int sample_rate) | |||
| /* 16 bit sound, find sample rate index */ | |||
| regs.r[0] = 0; | |||
| regs.r[1] = 0; | |||
| _kernel_swi(0x40146,®s,®s); | |||
| _kernel_swi(0x40146,®s,®s); // Sound_SampleRate | |||
| n_srix = regs.r[1]; | |||
| regs.r[0] = 1; | |||
| @@ -1314,14 +1390,32 @@ int InitSound16(int sample_rate) | |||
| regs.r[0] = 2; | |||
| regs.r[1] = ix; | |||
| _kernel_swi(0x40146,®s,®s); | |||
| srate = regs.r[2]; | |||
| if(srate >= (sample_rate*1024)) | |||
| srate = regs.r[2] / 1024; | |||
| if(srate == sample_rate) | |||
| { | |||
| return(ix); | |||
| } | |||
| if(srate == sample_rate*2) | |||
| { | |||
| double_rate_ix = ix; | |||
| } | |||
| if((diff = abs(sample_rate - srate)) < nearest_diff) | |||
| { | |||
| nearest_diff = diff; | |||
| nearest_ix = ix; | |||
| } | |||
| } | |||
| } | |||
| return(14); // this was the index for 22050 | |||
| if(double_rate_ix >= 0) | |||
| { | |||
| // matching sample rate is not available, but double this rate is. | |||
| sample_rate_doubled = 1; | |||
| return(double_rate_ix); | |||
| } | |||
| else | |||
| { | |||
| return(nearest_ix); | |||
| } | |||
| } // end of InitSound16 | |||
| @@ -1369,7 +1463,7 @@ _kernel_oserror *user_init(char *cmd_fail, int podule_base, void *pw) | |||
| // other characters give the correct results with iswalpha() etc. | |||
| static char *locale = "ISO8859-1"; | |||
| setlocale(LC_CTYPE,locale); | |||
| setlocale(LC_CTYPE,locale); | |||
| module_data = pw; | |||
| @@ -1,17 +1,17 @@ | |||
| copy <obey$dir>.^.src.compiledict/cpp <obey$dir>.cpp.compiledict fq~c | |||
| copy <obey$dir>.^.src.dictionary/cpp <obey$dir>.cpp.dictionary fq~c | |||
| copy <obey$dir>.^.src.intonation/cpp <obey$dir>.cpp.intonation fq~c | |||
| copy <obey$dir>.^.src.numbers/cpp <obey$dir>.cpp.numbers fq~c | |||
| copy <obey$dir>.^.src.phonemelist/cpp <obey$dir>.cpp.phonemelist fq~c | |||
| copy <obey$dir>.^.src.readclause/cpp <obey$dir>.cpp.readclause fq~c | |||
| copy <obey$dir>.^.src.setlengths/cpp <obey$dir>.cpp.setlengths fq~c | |||
| copy <obey$dir>.^.src.synthdata/cpp <obey$dir>.cpp.synthdata fq~c | |||
| copy <obey$dir>.^.src.synth_mbrola/cpp <obey$dir>.cpp.synth_mbrola fq~c | |||
| copy <obey$dir>.^.src.synthesize/cpp <obey$dir>.cpp.synthesize fq~c | |||
| copy <obey$dir>.^.src.translate/cpp <obey$dir>.cpp.translate fq~c | |||
| copy <obey$dir>.^.src.tr_languages/cpp <obey$dir>.cpp.tr_languages fq~c | |||
| copy <obey$dir>.^.src.voices/cpp <obey$dir>.cpp.voices fq~c | |||
| copy <obey$dir>.^.src.wavegen/cpp <obey$dir>.cpp.wavegen fq~c | |||
| copy <obey$dir>.^.src.compiledict/cpp <obey$dir>.c.compiledict fq~c | |||
| copy <obey$dir>.^.src.dictionary/cpp <obey$dir>.c.dictionary fq~c | |||
| copy <obey$dir>.^.src.intonation/cpp <obey$dir>.c.intonation fq~c | |||
| copy <obey$dir>.^.src.numbers/cpp <obey$dir>.c.numbers fq~c | |||
| copy <obey$dir>.^.src.phonemelist/cpp <obey$dir>.c.phonemelist fq~c | |||
| copy <obey$dir>.^.src.readclause/cpp <obey$dir>.c.readclause fq~c | |||
| copy <obey$dir>.^.src.setlengths/cpp <obey$dir>.c.setlengths fq~c | |||
| copy <obey$dir>.^.src.synthdata/cpp <obey$dir>.c.synthdata fq~c | |||
| copy <obey$dir>.^.src.synth_mbrola/cpp <obey$dir>.c.synth_mbrola fq~c | |||
| copy <obey$dir>.^.src.synthesize/cpp <obey$dir>.c.synthesize fq~c | |||
| copy <obey$dir>.^.src.translate/cpp <obey$dir>.c.translate fq~c | |||
| copy <obey$dir>.^.src.tr_languages/cpp <obey$dir>.c.tr_languages fq~c | |||
| copy <obey$dir>.^.src.voices/cpp <obey$dir>.c.voices fq~c | |||
| copy <obey$dir>.^.src.wavegen/cpp <obey$dir>.c.wavegen fq~c | |||
| copy <obey$dir>.^.src.phoneme/h <obey$dir>.h.phoneme fq~c | |||
| copy <obey$dir>.^.src.sintab/h <obey$dir>.h.sintab fq~c | |||
| @@ -2,7 +2,7 @@ | |||
| [Setup] | |||
| AppName=eSpeak | |||
| AppVerName=eSpeak version 1.47.04 | |||
| AppVerName=eSpeak version 1.47.08 | |||
| AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
| WindowVisible=yes | |||
| @@ -1,7 +1,7 @@ | |||
| [Setup] | |||
| AppName=eSpeakEdit | |||
| AppVerName=eSpeakEdit version 1.47.04 | |||
| AppVerName=eSpeakEdit version 1.47.08 | |||
| DefaultDirName={pf}\eSpeak | |||
| DefaultGroupName=eSpeak | |||
| OutputBaseFilename=setup_espeakedit | |||
| @@ -2727,7 +2727,6 @@ static void DecThenCount() | |||
| static void InstnPlusPhoneme(int instn) | |||
| {//==================================== | |||
| int phcode; | |||
| DecThenCount(); | |||
| phcode = NextItemBrackets(tPHONEMEMNEM,0); | |||
| *prog_out++ = instn + phcode; | |||
| @@ -2835,16 +2834,19 @@ int CompilePhoneme(int compile_phoneme) | |||
| case i_CHANGE_IF+2: | |||
| case i_CHANGE_IF+3: | |||
| InstnPlusPhoneme(keyword << 8); | |||
| DecThenCount(); | |||
| break; | |||
| case i_PAUSE_BEFORE: | |||
| value = NextItemMax(255); | |||
| *prog_out++ = (i_PAUSE_BEFORE << 8) + value; | |||
| DecThenCount(); | |||
| break; | |||
| case i_PAUSE_AFTER: | |||
| value = NextItemMax(255); | |||
| *prog_out++ = (i_PAUSE_AFTER << 8) + value; | |||
| DecThenCount(); | |||
| break; | |||
| case i_SET_LENGTH: | |||
| @@ -2936,6 +2938,7 @@ int CompilePhoneme(int compile_phoneme) | |||
| { | |||
| *prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); | |||
| } | |||
| DecThenCount(); | |||
| break; | |||
| } | |||
| break; | |||
| @@ -3018,6 +3021,7 @@ int CompilePhoneme(int compile_phoneme) | |||
| case kCALLPH: | |||
| CallPhoneme(); | |||
| DecThenCount(); | |||
| break; | |||
| case kFMT: | |||
| @@ -3049,6 +3053,7 @@ int CompilePhoneme(int compile_phoneme) | |||
| break; | |||
| case kTONESPEC: | |||
| DecThenCount(); | |||
| endphoneme = CompileToneSpec(); | |||
| break; | |||
| @@ -133,6 +133,7 @@ MNEM_TAB mnem_flags[] = { | |||
| {"$stem", 0x30}, // must have a suffix | |||
| {"$atend", 0x31}, // use this pronunciation if at end of clause | |||
| {"$atstart", 0x32}, // use this pronunciation at start of clause | |||
| {"$native", 0x33}, // not if we've switched translators | |||
| // doesn't set dictionary_flags | |||
| {"$?", 100}, // conditional rule, followed by byte giving the condition number | |||
| @@ -700,9 +701,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
| ix = utf8_in(&c2,p); | |||
| if(c2 == 0) | |||
| break; | |||
| if(iswupper(c2)) | |||
| if(iswupper2(c2)) | |||
| { | |||
| utf8_out(towlower(c2),p); | |||
| utf8_out(towlower2(c2),p); | |||
| } | |||
| else | |||
| { | |||
| @@ -524,7 +524,7 @@ void DecodePhonemes(const char *inptr, char *outptr) | |||
| unsigned short ipa1[96] = { | |||
| 0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | |||
| 0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | |||
| 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, | |||
| 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254, | |||
| 0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | |||
| 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | |||
| 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | |||
| @@ -633,10 +633,13 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| {//========================================================================= | |||
| /* Can be called after a clause has been translated into phonemes, in order | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode) | |||
| {//=============================================================================== | |||
| /* Called after a clause has been translated into phonemes, in order | |||
| to display the clause in phoneme mnemonic form. | |||
| phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
| bit 4: 0=eSpeak phoneme names, 1=IPA | |||
| */ | |||
| int ix; | |||
| @@ -649,6 +652,9 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| char *buf; | |||
| int count; | |||
| int flags; | |||
| int use_ipa; | |||
| int use_tie; | |||
| int separate_phonemes = 0; | |||
| char phon_buf[30]; | |||
| char phon_buf2[30]; | |||
| PHONEME_LIST *plist; | |||
| @@ -656,6 +662,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| static const char *stress_chars = "==,,''"; | |||
| static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | |||
| use_ipa = phoneme_mode & 0x10; | |||
| use_tie = phoneme_mode & 0x0f; | |||
| if(use_tie >= 3) | |||
| { | |||
| // separate individual phonemes with underscores | |||
| separate_phonemes = '_'; | |||
| use_tie = 0; | |||
| } | |||
| if(phon_out != NULL) | |||
| { | |||
| for(ix=1; ix<(n_phoneme_list-2); ix++) | |||
| @@ -663,8 +679,21 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| buf = phon_buf; | |||
| plist = &phoneme_list[ix]; | |||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
| if(plist->newword) | |||
| *buf++ = ' '; | |||
| else | |||
| { | |||
| if((separate_phonemes != 0) && (ix > 1)) | |||
| { | |||
| utf8_in(&c, phon_buf2); | |||
| if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||
| { | |||
| *buf++ = separate_phonemes; | |||
| } | |||
| } | |||
| } | |||
| if(plist->synthflags & SFLAG_SYLLABLE) | |||
| { | |||
| @@ -687,22 +716,23 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| if(c != 0) | |||
| { | |||
| buf += utf8_out(c, buf); | |||
| // if(separate_phonemes) | |||
| // *buf++ = separate_phonemes; | |||
| } | |||
| } | |||
| } | |||
| flags = 0; | |||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
| count = 0; | |||
| for(p=phon_buf2; *p != 0;) | |||
| { | |||
| p += utf8_in(&c, p); | |||
| if(use_ipa > 1) | |||
| if(use_tie > 0) | |||
| { | |||
| // look for non-inital alphabetic character, but not diacritic, superscript etc. | |||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) | |||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||
| { | |||
| buf += utf8_out(char_tie[use_ipa-2], buf); | |||
| buf += utf8_out(char_tie[use_tie-1], buf); | |||
| } | |||
| } | |||
| buf += utf8_out(c, buf); | |||
| @@ -894,7 +924,13 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
| if(count==0) | |||
| c1 = c; | |||
| count++; | |||
| if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3)) | |||
| { | |||
| // don't count apostrophe | |||
| } | |||
| else | |||
| count++; | |||
| if(IsVowel(tr, c)) | |||
| { | |||
| @@ -902,7 +938,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
| break; | |||
| } | |||
| if((c != '\'') && !iswalpha(c)) | |||
| if((c != '\'') && !iswalpha2(c)) | |||
| return(0); | |||
| } | |||
| @@ -1624,8 +1660,11 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, | |||
| if(!(control & 1) && ((ph = phoneme_tab[*p]) != NULL)) | |||
| { | |||
| if(ph->type == phSTRESS) | |||
| ph = phoneme_tab[p[1]]; | |||
| while((ph->type == phSTRESS) || (*p == phonEND_WORD)) | |||
| { | |||
| p++; | |||
| ph = phoneme_tab[p[0]]; | |||
| } | |||
| #ifdef deleted | |||
| int gap = tr->langopts.word_gap & 0x700; | |||
| @@ -2078,7 +2117,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
| break; | |||
| case RULE_NONALPHA: | |||
| if(!iswalpha(letter_w)) | |||
| if(!iswalpha2(letter_w)) | |||
| { | |||
| add_points = (21-distance_right); | |||
| post_ptr += letter_xbytes; | |||
| @@ -2322,7 +2361,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
| break; | |||
| case RULE_NONALPHA: | |||
| if(!iswalpha(letter_w)) | |||
| if(!iswalpha2(letter_w)) | |||
| { | |||
| add_points = (21-distance_right); | |||
| pre_ptr -= letter_xbytes; | |||
| @@ -2639,7 +2678,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| if(tr->letter_bits_offset > 0) | |||
| { | |||
| // not a Latin alphabet, switch to the default Latin alphabet language | |||
| if((letter <= 0x241) && iswalpha(letter)) | |||
| if((letter <= 0x241) && iswalpha2(letter)) | |||
| { | |||
| sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | |||
| return(0); | |||
| @@ -3240,6 +3279,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| continue; | |||
| } | |||
| } | |||
| if(dictionary_flags2 & FLAG_NATIVE) | |||
| { | |||
| if(tr != translator) | |||
| continue; // don't use if we've switched translators | |||
| } | |||
| if(dictionary_flags & FLAG_ALT2_TRANS) | |||
| { | |||
| // language specific | |||
| @@ -3505,9 +3549,9 @@ int LookupFlags(Translator *tr, const char *word) | |||
| {//============================================== | |||
| char buf[100]; | |||
| static unsigned int flags[2]; | |||
| char *word1 = (char *)word; | |||
| flags[0] = flags[1] = 0; | |||
| char *word1 = (char *)word; | |||
| LookupDictList(tr, &word1, buf, flags, 0, NULL); | |||
| return(flags[0]); | |||
| } | |||
| @@ -20,6 +20,7 @@ | |||
| #include <stdio.h> | |||
| #include <stdlib.h> | |||
| #include <string.h> | |||
| #include <ctype.h> | |||
| #ifndef NEED_GETOPT | |||
| #include <getopt.h> | |||
| #endif | |||
| @@ -67,7 +68,7 @@ static const char *help_text = | |||
| "\t Compile pronunciation rules and dictionary from the current\n" | |||
| "\t directory. <voice name> specifies the language\n" | |||
| "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | |||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||
| "--path=\"<path>\"\n" | |||
| "\t Specifies the directory containing the espeak-data directory\n" | |||
| "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | |||
| @@ -221,14 +222,17 @@ int OpenWavFile(char *path, int rate) | |||
| if(path == NULL) | |||
| return(2); | |||
| if(path[0] == 0) | |||
| return(0); | |||
| if(strcmp(path,"stdout")==0) | |||
| f_wavfile = stdout; | |||
| else | |||
| f_wavfile = fopen(path,"wb"); | |||
| while(isspace(*path)) path++; | |||
| f_wavfile = NULL; | |||
| if(path[0] != 0) | |||
| { | |||
| if(strcmp(path,"stdout")==0) | |||
| f_wavfile = stdout; | |||
| else | |||
| f_wavfile = fopen(path,"wb"); | |||
| } | |||
| if(f_wavfile == NULL) | |||
| { | |||
| fprintf(stderr,"Can't write to: '%s'\n",path); | |||
| @@ -620,7 +624,7 @@ int main (int argc, char **argv) | |||
| { | |||
| value = -1; | |||
| sscanf(optarg2,"%d",&value); | |||
| if((value<0) || (value>2)) | |||
| if((value<0) || (value>3)) | |||
| { | |||
| fprintf(stderr,"Bad value for -ipa=\n"); | |||
| value = 0; | |||
| @@ -199,6 +199,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) | |||
| EVT_MENU(MENU_OPT_SPEED, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_OPT_PUNCT, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_OPT_SPELL, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_OPT_SPELL2, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_PATH0, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_PATH1, MyFrame::OnOptions) | |||
| EVT_MENU(MENU_PATH2, MyFrame::OnOptions) | |||
| @@ -625,6 +626,12 @@ void OnOptions2(int event_id) | |||
| break; | |||
| case MENU_OPT_SPELL: | |||
| transldlg->t_source->SetValue(_T("<say-as interpret-as=\"characters\">\n")); | |||
| transldlg->t_source->SetInsertionPointEnd(); | |||
| notebook->SetSelection(1); | |||
| break; | |||
| case MENU_OPT_SPELL2: | |||
| transldlg->t_source->SetValue(_T("<say-as interpret-as=\"tts:char\">\n")); | |||
| transldlg->t_source->SetInsertionPointEnd(); | |||
| notebook->SetSelection(1); | |||
| @@ -632,7 +639,7 @@ void OnOptions2(int event_id) | |||
| case MENU_PATH0: | |||
| string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | |||
| _T(""),_T(""),_T("*"),wxOPEN); | |||
| _T("phonemes"),_T(""),_T("*"),wxOPEN); | |||
| if(!string.IsEmpty()) | |||
| { | |||
| path_phfile = string; | |||
| @@ -1564,8 +1564,8 @@ void CountWordFreq(wxString path, wcount **hashtab) | |||
| for(k=0; k<ix; ) | |||
| { | |||
| k += utf8_in(&wc,&buf[k]); | |||
| wc = towlower(wc); // convert to lower case | |||
| if(iswalpha(wc)) | |||
| wc = towlower2(wc); // convert to lower case | |||
| if(iswalpha2(wc)) | |||
| { | |||
| j += utf8_out(wc,&wbuf[j]); | |||
| n_chars++; | |||
| @@ -2272,6 +2272,82 @@ void Test2() | |||
| #endif | |||
| #define MAX_WALPHA 0x24f | |||
| void Make_walpha_tab() | |||
| {//=================== | |||
| int ix; | |||
| int value; | |||
| int c; | |||
| short exceptions[40]; | |||
| int ex = 0; | |||
| FILE *f; | |||
| f = fopen("/home/jsd1/walpha_tab.txt","w"); | |||
| for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
| { | |||
| value = 0; | |||
| if(iswalpha(ix)) | |||
| { | |||
| value = 0xfe; // no case | |||
| if(iswlower(ix)) | |||
| { | |||
| value = 0xff; | |||
| } | |||
| else if(iswupper(ix)) | |||
| { | |||
| c = towlower(ix); | |||
| if(c > 0) | |||
| value = c - ix; | |||
| if((value < 0) || (value > 0xfc)) | |||
| { | |||
| exceptions[ex] = ix; | |||
| exceptions[ex+1] = c; | |||
| ex+=2; | |||
| value = 0xfd; | |||
| } | |||
| } | |||
| } | |||
| if(value > 0xfc) | |||
| fprintf(f," 0x%.2x,", value); | |||
| else | |||
| fprintf(f," %4d,", value); | |||
| if((ix % 16) == 15) | |||
| { | |||
| fprintf(f," // %.3x\n", ix & 0xfff0); | |||
| } | |||
| } | |||
| fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); | |||
| for(ix=0; ix<ex; ix+=2) | |||
| { | |||
| fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]); | |||
| } | |||
| fprintf(f, "\t0,0 };\n"); | |||
| fprintf(f, "\nstatic const short wchar_toupper[] = {\n"); | |||
| for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
| { | |||
| if(iswlower(ix)) | |||
| { | |||
| c = towupper(ix); | |||
| value = ix - c; | |||
| if((value != 32) && (value != 1)) | |||
| { | |||
| fprintf(f,"\t0x%.3x, 0x%.3x,\n", ix, c); | |||
| } | |||
| } | |||
| } | |||
| fprintf(f, "\t0,0 };\n"); | |||
| fclose(f); | |||
| } | |||
| const char* text1 = "Hello world. Testing."; | |||
| @@ -2290,6 +2366,7 @@ void TestTest(int control) | |||
| //CharsetToUnicode("ISO-8859-4"); | |||
| //CharsetToUnicode("ISCII"); | |||
| if(control==2) | |||
| { | |||
| return; | |||
| @@ -2319,9 +2396,16 @@ if(control==2) | |||
| espeak_SetSynthCallback(TestSynthCallback); | |||
| espeak_SetUriCallback(TestUriCallback); | |||
| espeak_SetVoiceByName("en"); | |||
| voice.languages = "fr"; | |||
| espeak_SetVoiceByProperties(&voice); | |||
| // espeak_SetVoiceByName("fr"); | |||
| espeak_Synth("1", 5, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); | |||
| // voice.languages = "en"; | |||
| // espeak_SetVoiceByProperties(&voice); | |||
| espeak_SetVoiceByName("de"); | |||
| espeak_Synth(textbuf, strlen(textbuf)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); | |||
| // espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); | |||
| // espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); | |||
| espeak_SetParameter(espeakPUNCTUATION, 1, 0); | |||
| espeak_Synchronize(); | |||
| @@ -127,6 +127,7 @@ enum { | |||
| MENU_OPT_SPEED, | |||
| MENU_OPT_PUNCT, | |||
| MENU_OPT_SPELL, | |||
| MENU_OPT_SPELL2, | |||
| MENU_PATHS, | |||
| MENU_PATH0, | |||
| MENU_PATH1, | |||
| @@ -119,8 +119,10 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) | |||
| option_menu = new wxMenu; | |||
| option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); | |||
| option_menu->Append(MENU_OPT_SPEED, _("Speed...")); | |||
| option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation")); | |||
| option_menu->Append(MENU_OPT_SPELL, _("Speak character names")); | |||
| option_menu->AppendSeparator(); | |||
| option_menu->Append(MENU_OPT_PUNCT, _("Speak punctuation")); | |||
| option_menu->Append(MENU_OPT_SPELL, _("Speak characters")); | |||
| option_menu->Append(MENU_OPT_SPELL2, _("Speak character name")); | |||
| // TOOLS | |||
| vowelchart_menu = new wxMenu; | |||
| @@ -582,7 +582,103 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b | |||
| } // end of LookupLetter | |||
| static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'Ef"}; // using phonemes available to all languages | |||
| // unicode ranges for non-ascii digits 0-9 | |||
| static const int number_ranges[] = { | |||
| 0x660, 0x6f0, // arabic | |||
| 0x966, 0x9e6, 0xa66, 0xae6, 0xb66, 0xbe6, 0xc66, 0xce6, 0xd66, // indic | |||
| 0xe50, 0xed0, 0xf20, 0x1040, 0x1090, | |||
| 0 }; // these must be in ascending order | |||
| int NonAsciiNumber(int letter) | |||
| {//============================ | |||
| // Change non-ascii digit into ascii digit '0' to '9', (or -1 if not) | |||
| const int *p; | |||
| int base; | |||
| for(p=number_ranges; (base = *p) != 0; p++) | |||
| { | |||
| if(letter < base) | |||
| break; // not found | |||
| if(letter < (base+10)) | |||
| return(letter-base+'0'); | |||
| } | |||
| return(-1); | |||
| } | |||
| #define L_SUB 0x4000 // subscript | |||
| #define L_SUP 0x8000 // superscript | |||
| static const char *modifiers[] = {NULL, "_sub", "_sup", NULL}; | |||
| // this list must be in ascending order | |||
| static unsigned short derived_letters[] = { | |||
| 0x00aa, 'a'+L_SUP, | |||
| 0x00b2, '2'+L_SUP, | |||
| 0x00b3, '3'+L_SUP, | |||
| 0x00b9, '1'+L_SUP, | |||
| 0x00ba, 'o'+L_SUP, | |||
| 0x02b0, 'h'+L_SUP, | |||
| 0x02b1, 0x266+L_SUP, | |||
| 0x02b2, 'j'+L_SUP, | |||
| 0x02b3, 'r'+L_SUP, | |||
| 0x02b4, 0x279+L_SUP, | |||
| 0x02b5, 0x27b+L_SUP, | |||
| 0x02b6, 0x281+L_SUP, | |||
| 0x02b7, 'w'+L_SUP, | |||
| 0x02b8, 'y'+L_SUP, | |||
| 0x02c0, 0x294+L_SUP, | |||
| 0x02c1, 0x295+L_SUP, | |||
| 0x02e0, 0x263+L_SUP, | |||
| 0x02e1, 'l'+L_SUP, | |||
| 0x02e2, 's'+L_SUP, | |||
| 0x02e3, 'x'+L_SUP, | |||
| 0x2070, '0'+L_SUP, | |||
| 0x2071, 'i'+L_SUP, | |||
| 0x2074, '4'+L_SUP, | |||
| 0x2075, '5'+L_SUP, | |||
| 0x2076, '6'+L_SUP, | |||
| 0x2077, '7'+L_SUP, | |||
| 0x2078, '8'+L_SUP, | |||
| 0x2079, '9'+L_SUP, | |||
| 0x207a, '+'+L_SUP, | |||
| 0x207b, '-'+L_SUP, | |||
| 0x207c, '='+L_SUP, | |||
| 0x207d, '('+L_SUP, | |||
| 0x207e, ')'+L_SUP, | |||
| 0x207f, 'n'+L_SUP, | |||
| 0x2080, '0'+L_SUB, | |||
| 0x2081, '1'+L_SUB, | |||
| 0x2082, '2'+L_SUB, | |||
| 0x2083, '3'+L_SUB, | |||
| 0x2084, '4'+L_SUB, | |||
| 0x2085, '5'+L_SUB, | |||
| 0x2086, '6'+L_SUB, | |||
| 0x2087, '7'+L_SUB, | |||
| 0x2088, '8'+L_SUB, | |||
| 0x2089, '9'+L_SUB, | |||
| 0x208a, '+'+L_SUB, | |||
| 0x208b, '-'+L_SUB, | |||
| 0x208c, '='+L_SUB, | |||
| 0x208d, '('+L_SUB, | |||
| 0x208e, ')'+L_SUB, | |||
| 0x2090, 'a'+L_SUB, | |||
| 0x2091, 'e'+L_SUB, | |||
| 0x2092, 'o'+L_SUB, | |||
| 0x2093, 'x'+L_SUB, | |||
| 0x2094, 0x259+L_SUB, | |||
| 0x2095, 'h'+L_SUB, | |||
| 0x2096, 'k'+L_SUB, | |||
| 0x2097, 'l'+L_SUB, | |||
| 0x2098, 'm'+L_SUB, | |||
| 0x2099, 'n'+L_SUB, | |||
| 0x209a, 'p'+L_SUB, | |||
| 0x209b, 's'+L_SUB, | |||
| 0x209c, 't'+L_SUB, | |||
| 0,0}; | |||
| static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages | |||
| int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| {//========================================================================= | |||
| @@ -596,15 +692,18 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| int letter; | |||
| int len; | |||
| int ix; | |||
| int c; | |||
| char *p2; | |||
| char *pbuf; | |||
| const char *modifier; | |||
| ALPHABET *alphabet; | |||
| int al_offset; | |||
| int al_flags; | |||
| int language; | |||
| int number; | |||
| int phontab_1; | |||
| int speak_letter_number; | |||
| char capital[20]; | |||
| char capital[30]; | |||
| char ph_buf[80]; | |||
| char ph_buf2[80]; | |||
| char ph_alphabet[80]; | |||
| @@ -626,21 +725,61 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| if(control & 2) | |||
| { | |||
| // include CAPITAL information | |||
| if(iswupper(letter)) | |||
| if(iswupper2(letter)) | |||
| { | |||
| Lookup(tr, "_cap", capital); | |||
| } | |||
| } | |||
| letter = towlower2(letter); | |||
| LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
| if(ph_buf[0] == 0) | |||
| { | |||
| // is this a subscript or superscript letter ? | |||
| for(ix=0; (c = derived_letters[ix]) != 0; ix+=2) | |||
| { | |||
| if(c > letter) | |||
| break; | |||
| if(c == letter) | |||
| { | |||
| c = derived_letters[ix+1]; | |||
| letter = c & 0x3fff; | |||
| if((modifier = modifiers[c >> 14]) != NULL) | |||
| { | |||
| Lookup(tr, modifier, capital); | |||
| if(capital[0] == 0) | |||
| { | |||
| capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
| Lookup(translator2, modifier, &capital[3]); | |||
| if(capital[3] != 0) | |||
| { | |||
| capital[0] = phonPAUSE; | |||
| capital[1] = phonSWITCH; | |||
| len = strlen(&capital[3]); | |||
| capital[len+3] = phonSWITCH; | |||
| capital[len+4] = phontab_1; | |||
| capital[len+5] = 0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
| } | |||
| if(ph_buf[0] == phonSWITCH) | |||
| { | |||
| strcpy(phonemes,ph_buf); | |||
| return(0); | |||
| } | |||
| if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | |||
| { | |||
| // convert a non-ascii number to 0-9 | |||
| LookupLetter(tr, number, 0, ph_buf, control & 1); | |||
| } | |||
| al_offset = 0; | |||
| al_flags = 0; | |||
| if((alphabet = AlphabetFromChar(letter)) != NULL) | |||
| @@ -766,7 +905,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| speak_letter_number = 1; | |||
| if(!(al_flags & AL_NO_SYMBOL)) | |||
| { | |||
| if(iswalpha(letter)) | |||
| if(iswalpha2(letter)) | |||
| Lookup(translator, "_?A", ph_buf); | |||
| if((ph_buf[0]==0) && !iswspace(letter)) | |||
| @@ -784,8 +923,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| speak_letter_number = 0; | |||
| } | |||
| if((ph_alphabet[0] != 0) && speak_letter_number) | |||
| ph_buf[0] = 0; // don't speak "letter" if we speak alphabet name | |||
| // if((ph_alphabet[0] != 0) && speak_letter_number) | |||
| // ph_buf[0] = 0; // don't speak "letter" if we speak alphabet name | |||
| if(speak_letter_number) | |||
| { | |||
| @@ -2216,8 +2355,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | |||
| utf8_in(&next_char,p); | |||
| if(!iswalpha(next_char) && (thousands_exact==0)) | |||
| // if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| if(!iswalpha2(next_char) && (thousands_exact==0)) | |||
| // if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | |||
| } | |||
| @@ -76,6 +76,8 @@ static int ssml_ignore_l_angle = 0; | |||
| // punctuations symbols that can end a clause | |||
| static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
| 0x00a1, // inverted exclamation | |||
| 0x00bf, // inverted question | |||
| 0x2013, // en-dash | |||
| 0x2014, // em-dash | |||
| 0x2026, // elipsis | |||
| @@ -124,6 +126,8 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
| // bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket | |||
| static const unsigned int punct_attributes [] = { 0, | |||
| CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, | |||
| CLAUSE_SEMICOLON | 0x8000, // inverted exclamation | |||
| CLAUSE_SEMICOLON | 0x8000, // inverted question | |||
| CLAUSE_SEMICOLON, // en-dash | |||
| CLAUSE_SEMICOLON, // em-dash | |||
| CLAUSE_SEMICOLON | PUNCT_SAY_NAME | 0x8000, // elipsis | |||
| @@ -214,50 +218,91 @@ const int param_defaults[N_SPEECH_PARAM] = { | |||
| 0, // voice type | |||
| }; | |||
| #ifdef NEED_WCHAR_FUNCTIONS | |||
| // additional Latin characters beyond the Latin1 character set | |||
| #define MAX_WALPHA 0x233 | |||
| // indexed by character - 0x100 | |||
| // 0=not alphabetic, 0xff=lower case, 0xfe=special case | |||
| // additional Latin characters beyond the ascii character set | |||
| #define MAX_WALPHA 0x24f | |||
| // indexed by character - 0x80 | |||
| // 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower | |||
| // other=value to add to upper case to convert to lower case | |||
| static unsigned char walpha_tab[MAX_WALPHA-0xff] = { | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120 | |||
| 0xfe,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130 | |||
| 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170 | |||
| 0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180 | |||
| 203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190 | |||
| 1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0 | |||
| 0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0 | |||
| 0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0 | |||
| 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0 | |||
| 0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200 | |||
| 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210 | |||
| 0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220 | |||
| 1,0xff, 1,0xff }; // 230 | |||
| static unsigned char walpha_tab[MAX_WALPHA-0x7f] = { | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 080 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 090 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0a0 | |||
| 0, 0, 0, 0, 0, 0xff, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0b0 | |||
| 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 0c0 | |||
| 32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0xff, // 0d0 | |||
| 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0 | |||
| 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 100 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 110 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 120 | |||
| 0xfd, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, // 130 | |||
| 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, // 140 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 150 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 160 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, // 170 | |||
| 0xff, 210, 1, 0xff, 1, 0xff, 206, 1, 0xff, 205, 205, 1, 0xff, 0xfe, 79, 202, // 180 | |||
| 203, 1, 0xff, 205, 207, 0xff, 211, 209, 1, 0xff, 0xff, 0xfe, 211, 213, 0xff, 214, // 190 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 218, 1, 0xff, 218, 0xfe, 0xfe, 1, 0xff, 218, 1, // 1a0 | |||
| 0xff, 217, 217, 1, 0xff, 1, 0xff, 219, 1, 0xff, 0xfe, 0xfe, 1, 0xff, 0xfe, 0xff, // 1b0 | |||
| 0xfe, 0xfe, 0xfe, 0xfe, 2, 0xff, 0xff, 2, 0xff, 0xff, 2, 0xff, 0xff, 1, 0xff, 1, // 1c0 | |||
| 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, 1, 0xff, // 1d0 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1e0 | |||
| 0xfe, 2, 0xff, 0xff, 1, 0xff, 0xfd, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1f0 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 200 | |||
| 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 210 | |||
| 0xfd, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 220 | |||
| 1, 0xff, 1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 1, 0xff, 0xfd, 0xfd, 0xfe, // 230 | |||
| 0xfe, 1, 0xff, 0xfd, 69, 71, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff}; // 240 | |||
| static const short wchar_tolower[] = { | |||
| 0x130, 0x069, | |||
| 0x178, 0x0ff, | |||
| 0x1f6, 0x195, | |||
| 0x1f7, 0x1bf, | |||
| 0x220, 0x19e, | |||
| 0x23a, 0x2c65, | |||
| 0x23d, 0x19a, | |||
| 0x23e, 0x2c66, | |||
| 0x243, 0x180, | |||
| 0,0 }; | |||
| static const short wchar_toupper[] = { | |||
| 0x0b5, 0x39c, | |||
| 0x0df, 0x0df, | |||
| 0x0ff, 0x178, | |||
| 0x131, 0x049, | |||
| 0x17f, 0x053, | |||
| 0x180, 0x243, | |||
| 0x195, 0x1f6, | |||
| 0x19a, 0x23d, | |||
| 0x19e, 0x220, | |||
| 0x1bf, 0x1f7, | |||
| 0x1c6, 0x1c4, | |||
| 0x1c9, 0x1c7, | |||
| 0x1cc, 0x1ca, | |||
| 0x1dd, 0x18e, | |||
| 0x1f3, 0x1f1, | |||
| 0,0 }; | |||
| #ifdef NEED_WCHAR_FUNCTIONS | |||
| // use ctype.h functions for Latin1 (character < 0x100) | |||
| int iswalpha(int c) | |||
| { | |||
| if(c < 0x100) | |||
| if(c < 0x80) | |||
| return(isalpha(c)); | |||
| if((c > 0x3040) && (c <= 0xa700)) | |||
| return(1); // japanese, chinese characters | |||
| if(c > MAX_WALPHA) | |||
| return(0); | |||
| return(walpha_tab[c-0x100]); | |||
| return(walpha_tab[c-0x80]); | |||
| } | |||
| int iswdigit(int c) | |||
| { | |||
| if(c < 0x100) | |||
| if(c < 0x80) | |||
| return(isdigit(c)); | |||
| return(0); | |||
| } | |||
| @@ -272,50 +317,67 @@ int iswalnum(int c) | |||
| int towlower(int c) | |||
| { | |||
| int x; | |||
| if(c < 0x100) | |||
| int ix; | |||
| if(c < 0x80) | |||
| return(tolower(c)); | |||
| if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff)) | |||
| return(c); // already lower case | |||
| if(x == 0xfe) | |||
| if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe)) | |||
| return(c); | |||
| if(x == 0xfd) | |||
| { | |||
| // special cases | |||
| if(c == 0x130) // uppercase i-dot | |||
| return('i'); | |||
| // special cases, lookup translation table | |||
| for(ix=0; wchar_tolower[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_tolower[ix] == c) | |||
| return(wchar_tolower[ix+1]); | |||
| } | |||
| } | |||
| return(c + x); // convert to lower case | |||
| } | |||
| int towupper(int c) | |||
| { | |||
| // check whether the previous character code is the upper-case equivalent of this character | |||
| if(tolower(c-1) == c) | |||
| return(c-1); // yes, use it | |||
| int ix; | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if(towlower(c-32) == c) | |||
| return(c-32); // yes, use it | |||
| if(towlower(c-1) == c) | |||
| return(c-1); | |||
| for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_toupper[ix] == c) | |||
| return(wchar_toupper[ix+1]); | |||
| } | |||
| return(c); // no | |||
| } | |||
| int iswupper(int c) | |||
| { | |||
| int x; | |||
| if(c < 0x100) | |||
| if(c < 0x80) | |||
| return(isupper(c)); | |||
| if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff)) | |||
| if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff)) | |||
| return(0); | |||
| return(1); | |||
| } | |||
| int iswlower(int c) | |||
| { | |||
| if(c < 0x100) | |||
| if(c < 0x80) | |||
| return(islower(c)); | |||
| if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) | |||
| if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff)) | |||
| return(0); | |||
| return(1); | |||
| } | |||
| int iswspace(int c) | |||
| { | |||
| if(c < 0x100) | |||
| if(c < 0x80) | |||
| return(isspace(c)); | |||
| if(c == 0xa0) | |||
| return(1); | |||
| return(0); | |||
| } | |||
| @@ -367,23 +429,96 @@ float wcstod(const wchar_t *str, wchar_t **tailptr) | |||
| } | |||
| #endif | |||
| // use internal data for iswalpha up to U+024F | |||
| // iswalpha() on Windows is unreliable (U+AA, U+BA). | |||
| int iswalpha2(int c) | |||
| { | |||
| if(c < 0x80) | |||
| return(isalpha(c)); | |||
| if((c > 0x3040) && (c <= 0xa700)) | |||
| return(1); // japanese, chinese characters | |||
| if(c > MAX_WALPHA) | |||
| return(iswalpha(c)); | |||
| return(walpha_tab[c-0x80]); | |||
| } | |||
| int iswlower2(int c) | |||
| { | |||
| if(c < 0x80) | |||
| return(islower(c)); | |||
| if(c > MAX_WALPHA) | |||
| return(iswlower(c)); | |||
| if(walpha_tab[c-0x80] == 0xff) | |||
| return(1); | |||
| return(0); | |||
| } | |||
| int iswupper2(int c) | |||
| { | |||
| int x; | |||
| if(c < 0x80) | |||
| return(isupper(c)); | |||
| if(c > MAX_WALPHA) | |||
| return(iswupper(c)); | |||
| if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe)) | |||
| return(1); | |||
| return(0); | |||
| } | |||
| int towlower2(unsigned int c) | |||
| { | |||
| int x; | |||
| int ix; | |||
| // check for non-standard upper to lower case conversions | |||
| if(c == 'I') | |||
| { | |||
| if(translator->translator_name == L('t','r')) | |||
| if(translator->langopts.dotless_i) | |||
| { | |||
| c = 0x131; // I -> ı | |||
| } | |||
| } | |||
| #ifdef __WIN32__ | |||
| if(c == 0x130) // uppercase i-dot | |||
| return('i'); | |||
| #endif | |||
| return(towlower(c)); | |||
| if(c < 0x80) | |||
| return(tolower(c)); | |||
| if(c > MAX_WALPHA) | |||
| return(towlower(c)); | |||
| if((x = walpha_tab[c-0x80]) >= 0xfe) | |||
| return(c); // this is not an upper case letter | |||
| if(x == 0xfd) | |||
| { | |||
| // special cases, lookup translation table | |||
| for(ix=0; wchar_tolower[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_tolower[ix] == (int)c) | |||
| return(wchar_tolower[ix+1]); | |||
| } | |||
| } | |||
| return(c + x); // convert to lower case | |||
| } | |||
| int towupper2(unsigned int c) | |||
| { | |||
| int ix; | |||
| if(c > MAX_WALPHA) | |||
| return(towupper(c)); | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if(towlower2(c-32) == (int)c) | |||
| return(c-32); // yes, use it | |||
| if(towlower2(c-1) == (int)c) | |||
| return(c-1); | |||
| for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_toupper[ix] == (int)c) | |||
| return(wchar_toupper[ix+1]); | |||
| } | |||
| return(c); // no | |||
| } | |||
| static int IsRomanU(unsigned int c) | |||
| {//================================ | |||
| @@ -2261,7 +2396,7 @@ f_input = f_in; // for GetC etc | |||
| c2 = ' '; | |||
| } | |||
| else | |||
| if((c2 == '/') || iswalpha(c2)) | |||
| if((c2 == '/') || iswalpha2(c2)) | |||
| { | |||
| // check for space in the output buffer for embedded commands produced by the SSML tag | |||
| if(ix > (n_buf - 20)) | |||
| @@ -2444,10 +2579,10 @@ f_input = f_in; // for GetC etc | |||
| } | |||
| } | |||
| if(iswupper(c1)) | |||
| if(iswupper2(c1)) | |||
| { | |||
| tr->clause_upper_count++; | |||
| if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev)) | |||
| if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev)) | |||
| { | |||
| char text_buf[40]; | |||
| char text_buf2[30]; | |||
| @@ -2464,7 +2599,7 @@ f_input = f_in; // for GetC etc | |||
| } | |||
| } | |||
| else | |||
| if(iswalpha(c1)) | |||
| if(iswalpha2(c1)) | |||
| tr->clause_lower_count++; | |||
| if(option_phoneme_input) | |||
| @@ -2533,8 +2668,8 @@ if(option_ssml) parag=1; | |||
| if(!iswspace(c1)) | |||
| { | |||
| if(!IsAlpha(c1) || !iswlower(c1)) | |||
| // if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
| if(!IsAlpha(c1) || !iswlower2(c1)) | |||
| // if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1))) | |||
| { | |||
| UngetC(c2); | |||
| ungot_char2 = c1; | |||
| @@ -2633,7 +2768,7 @@ if(option_ssml) parag=1; | |||
| if(nl_count==0) | |||
| { | |||
| if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next)))) | |||
| if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next)))) | |||
| { | |||
| // lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | |||
| c1 = CHAR_COMMA_BREAK; | |||
| @@ -2652,7 +2787,7 @@ if(option_ssml) parag=1; | |||
| } | |||
| else | |||
| { | |||
| if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
| if (iswlower2(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
| is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | |||
| } | |||
| } | |||
| @@ -2661,7 +2796,7 @@ if(option_ssml) parag=1; | |||
| { | |||
| is_end_clause = 0; // eg. u.s.a.'s | |||
| } | |||
| if(iswlower(c_next)) | |||
| if(iswlower2(c_next)) | |||
| { | |||
| // next word has no capital letter, this dot is probably from an abbreviation | |||
| // c1 = ' '; | |||
| @@ -24,6 +24,7 @@ | |||
| #include <stdio.h> | |||
| #include <stdlib.h> | |||
| #include <string.h> | |||
| #include <ctype.h> | |||
| #ifndef PLATFORM_DOS | |||
| #ifdef PLATFORM_WINDOWS | |||
| @@ -101,7 +102,7 @@ static const char *help_text = | |||
| "\t Compile pronunciation rules and dictionary from the current\n" | |||
| "\t directory. <voice name> specifies the language\n" | |||
| "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | |||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" | |||
| "--path=\"<path>\"\n" | |||
| "\t Specifies the directory containing the espeak-data directory\n" | |||
| "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | |||
| @@ -243,16 +244,22 @@ static int OpenWaveFile(const char *path, int rate) | |||
| if(path == NULL) | |||
| return(2); | |||
| if(strcmp(path,"stdout")==0) | |||
| while(isspace(*path)) path++; | |||
| f_wave = NULL; | |||
| if(path[0] != 0) | |||
| { | |||
| if(strcmp(path,"stdout")==0) | |||
| { | |||
| #ifdef PLATFORM_WINDOWS | |||
| // prevent Windows adding 0x0d before 0x0a bytes | |||
| _setmode(_fileno(stdout), _O_BINARY); | |||
| _setmode(_fileno(stdout), _O_BINARY); | |||
| #endif | |||
| f_wave = stdout; | |||
| f_wave = stdout; | |||
| } | |||
| else | |||
| f_wave = fopen(path,"wb"); | |||
| } | |||
| else | |||
| f_wave = fopen(path,"wb"); | |||
| if(f_wave != NULL) | |||
| { | |||
| @@ -739,7 +746,7 @@ int main (int argc, char **argv) | |||
| { | |||
| value = -1; | |||
| sscanf(optarg2,"%d",&value); | |||
| if((value<0) || (value>2)) | |||
| if((value<0) || (value>3)) | |||
| { | |||
| fprintf(stderr,"Bad value for -ipa=\n"); | |||
| value = 0; | |||
| @@ -1164,6 +1164,17 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) | |||
| } // end of espeak_SetPhonemes | |||
| ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode) | |||
| {//============================================================================================================== | |||
| /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
| bits 4-7: 0=eSpeak phoneme names, 1=IPA | |||
| */ | |||
| option_multibyte = textmode & 7; | |||
| TranslateClause(translator, NULL, text, NULL, NULL); | |||
| GetTranslatedPhonemeString(buffer, size, phonememode); | |||
| } | |||
| ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | |||
| {//============================================================================= | |||
| ENTER("espeak_CompileDictionary"); | |||
| @@ -55,6 +55,9 @@ Revision 7 24.Dec.2011 | |||
| Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics. | |||
| Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names. | |||
| Revision 8 26.Apr.2013 | |||
| Added function espeak_TextToPhonemes(). | |||
| */ | |||
| /********************/ | |||
| /* Initialization */ | |||
| @@ -94,7 +97,7 @@ typedef struct { | |||
| char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | |||
| } id; | |||
| } espeak_EVENT; | |||
| /* | |||
| /* | |||
| When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. | |||
| @@ -102,16 +105,16 @@ typedef struct { | |||
| In PLAYBACK mode, the callback function is called as soon as an event happens. | |||
| For example suppose that the following message is supplied to espeak_Synth: | |||
| For example suppose that the following message is supplied to espeak_Synth: | |||
| "hello, hello." | |||
| * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | |||
| ** Block 1: | |||
| <audio data> + | |||
| <audio data> + | |||
| List of events: SENTENCE + WORD + LIST_TERMINATED | |||
| ** Block 2: | |||
| <audio data> + | |||
| List of events: WORD + END + LIST_TERMINATED | |||
| @@ -148,11 +151,11 @@ typedef enum { | |||
| typedef enum { | |||
| /* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | |||
| AUDIO_OUTPUT_PLAYBACK, | |||
| AUDIO_OUTPUT_PLAYBACK, | |||
| /* RETRIEVAL mode: supplies audio data and events to the calling program */ | |||
| AUDIO_OUTPUT_RETRIEVAL, | |||
| /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | |||
| AUDIO_OUTPUT_SYNCHRONOUS, | |||
| @@ -199,7 +202,7 @@ extern "C" | |||
| ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
| /* Must be called before any synthesis functions are called. | |||
| This specifies a function in the calling program which is called when a buffer of | |||
| speech sound data has been produced. | |||
| speech sound data has been produced. | |||
| The callback function is of the form: | |||
| @@ -288,7 +291,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| start of the text. | |||
| position_type: Determines whether "position" is a number of characters, words, or sentences. | |||
| Values: | |||
| Values: | |||
| end_position: If set, this gives a character position at which speaking will stop. A value | |||
| of zero indicates no end position. | |||
| @@ -299,6 +302,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | |||
| espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | |||
| espeakCHARS_WCHAR Wide characters (wchar_t) | |||
| espeakCHARS_16BIT 16 bit characters. | |||
| espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored. | |||
| @@ -307,13 +311,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
| espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | |||
| this pause is suppressed. | |||
| unique_identifier: message identifier; helpful for identifying later | |||
| unique_identifier: message identifier; helpful for identifying later | |||
| data supplied to the callback. | |||
| user_data: pointer which will be passed to the callback function. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -336,8 +340,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
| For the other parameters, see espeak_Synth() | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -350,8 +354,8 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
| If key_name is a single character, it speaks the name of the character. | |||
| Otherwise, it speaks key_name as a text string. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -360,10 +364,10 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
| /* Speak the name of the given character | |||
| /* Speak the name of the given character | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -420,7 +424,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||
| espeakPUNCTUATION: which punctuation characters to announce: | |||
| value in espeak_PUNCT_TYPE (none, all, some), | |||
| value in espeak_PUNCT_TYPE (none, all, some), | |||
| see espeak_GetParameter() to specify which characters are announced. | |||
| espeakCAPITALS: announce capital letters by: | |||
| @@ -432,8 +436,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| espeakWORDGAP: pause between words, units of 10mS (at the default speed) | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -455,8 +459,8 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
| punctlist: A list of character codes, terminated by a zero character. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -474,6 +478,35 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
| stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode); | |||
| /* Translates text into phonemes. Call espeak_SetVoiceByName() first, to select a language. | |||
| text: The text to translate, terminated by a zero character. | |||
| buffer: Output buffer for the phoneme translation. | |||
| size: Size of the output buffer in bytes. | |||
| textmode: Type of character codes, one of: | |||
| espeakCHARS_UTF8 UTF8 encoding | |||
| espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | |||
| espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | |||
| espeakCHARS_WCHAR Wide characters (wchar_t) | |||
| espeakCHARS_16BIT 16 bit characters. | |||
| phonememode: bits0-3: | |||
| 0= just phonemes. | |||
| 1= include ties (U+361) for phoneme names of more than one letter. | |||
| 2= include zero-width-joiner for phoneme names of more than one letter. | |||
| 3= separate phonemes with underscore characters. | |||
| bits 4-7: | |||
| 0= eSpeak's ascii phoneme names. | |||
| 1= International Phonetic Alphabet (as UTF-8 characters). | |||
| */ | |||
| #ifdef __cplusplus | |||
| extern "C" | |||
| #endif | |||
| @@ -501,7 +534,7 @@ typedef struct { | |||
| unsigned char gender; // 0=none 1=male, 2=female, | |||
| unsigned char age; // 0=not specified, or age in years | |||
| unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties | |||
| unsigned char xx1; // for internal use | |||
| unsigned char xx1; // for internal use | |||
| int score; // for internal use | |||
| void *spare; // for internal use | |||
| } espeak_VOICE; | |||
| @@ -546,8 +579,8 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
| /* Searches for a voice with a matching "name" field. Language is not considered. | |||
| "name" is a UTF8 string. | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| Return: EE_OK: operation achieved | |||
| EE_BUFFER_FULL: the command can not be buffered; | |||
| you may try after a while to call the function again. | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -588,7 +621,7 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
| function returns, the audio output is fully stopped and the synthesizer is ready to | |||
| synthesize a new message. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -605,7 +638,7 @@ extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
| /* This function returns when all data have been spoken. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -614,7 +647,7 @@ extern "C" | |||
| #endif | |||
| ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
| /* last function to be called. | |||
| Return: EE_OK: operation achieved | |||
| Return: EE_OK: operation achieved | |||
| EE_INTERNAL_ERROR. | |||
| */ | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.47.04 02.Apr.13"; | |||
| const char *version_string = "1.47.08 26.Apr.13"; | |||
| const int version_phdata = 0x014701; | |||
| int option_device_number = -1; | |||
| @@ -1953,20 +1953,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| if((option_phonemes > 0) || (phoneme_callback != NULL)) | |||
| { | |||
| int use_ipa = 0; | |||
| int phoneme_mode = 0; | |||
| if(option_phonemes >= 3) | |||
| use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ | |||
| phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode); | |||
| if(option_phonemes > 0) | |||
| { | |||
| fprintf(f_trans,"%s\n",translator->phon_out); | |||
| if(!iswalpha(0x010d)) | |||
| { | |||
| // check that c-caron is recognized as an alphabetic character | |||
| fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n"); | |||
| } | |||
| } | |||
| if(phoneme_callback != NULL) | |||
| { | |||
| @@ -192,23 +192,23 @@ typedef struct { | |||
| // a clause translated into phoneme codes (first stage) | |||
| typedef struct { | |||
| unsigned short synthflags; // NOTE Put shorts on 32bit boundaries, because of RISC OS compiler bug? | |||
| unsigned char phcode; | |||
| unsigned char stresslevel; | |||
| unsigned char wordstress; | |||
| unsigned char tone_ph; // tone phoneme to use with this vowel | |||
| unsigned short synthflags; | |||
| unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
| unsigned char wordstress; // the highest level stress in this word | |||
| unsigned char tone_ph; // tone phoneme to use with this vowel | |||
| } PHONEME_LIST2; | |||
| typedef struct { | |||
| // The first section is a copy of PHONEME_LIST2 | |||
| unsigned short synthflags; | |||
| unsigned char phcode; | |||
| unsigned char stresslevel; | |||
| unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
| unsigned char wordstress; // the highest level stress in this word | |||
| unsigned char tone_ph; // tone phoneme to use with this vowel | |||
| unsigned short synthflags; | |||
| unsigned short sourceix; // ix into the original source text string, only set at the start of a word | |||
| PHONEME_TAB *ph; | |||
| short length; // length_mod | |||
| @@ -844,6 +844,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.numbers = 1; | |||
| tr->langopts.accents = 2; // 'capital' after letter name | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe | |||
| } | |||
| break; | |||
| @@ -971,7 +972,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | |||
| SetLetterBits(tr,LETTERGP_C,hy_consonants); | |||
| tr->langopts.max_initial_consonants = 6; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED; | |||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| } | |||
| break; | |||
| @@ -1289,6 +1290,7 @@ SetLengthMods(tr,3); // all equal | |||
| ResetLetterBits(tr,0x2); | |||
| SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
| tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | |||
| tr->langopts.accents = 2; // 'capital' after letter name | |||
| } | |||
| break; | |||
| @@ -1520,6 +1522,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
| tr->langopts.dotless_i = 1; | |||
| tr->langopts.param[LOPT_SUFFIX] = 1; | |||
| if(name2 == L('a','z')) | |||
| @@ -388,9 +388,12 @@ int IsAlpha(unsigned int c) | |||
| 0 | |||
| }; | |||
| if(iswalpha(c)) | |||
| if(iswalpha2(c)) | |||
| return(1); | |||
| if(c < 0x300) | |||
| return(0); | |||
| if((c >= 0x901) && (c <= 0xdf7)) | |||
| { | |||
| // Indic scripts: Devanagari, Tamil, etc | |||
| @@ -625,7 +628,7 @@ int IsAllUpper(const char *word) | |||
| while((*word != 0) && !isspace2(*word)) | |||
| { | |||
| word += utf8_in(&c, word); | |||
| if(!iswupper(c)) | |||
| if(!iswupper2(c)) | |||
| return(0); | |||
| } | |||
| return(1); | |||
| @@ -1054,7 +1057,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| } | |||
| } | |||
| if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char)) | |||
| if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char)) | |||
| { | |||
| if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | |||
| { | |||
| @@ -1633,7 +1636,7 @@ if(end_type & SUFX_UNPRON) | |||
| tr->expect_past--; | |||
| } | |||
| if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i')) | |||
| if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i')) | |||
| { | |||
| // English Specific !!!! | |||
| // any single letter before a dot is an abbreviation, except 'I' | |||
| @@ -1909,7 +1912,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| while(*p2 != ' ') p2++; | |||
| utf8_in(&c_word2, p2+1); // first character of the next word; | |||
| if(!iswalpha(c_word2)) | |||
| if(!iswalpha2(c_word2)) | |||
| { | |||
| ok =0; | |||
| } | |||
| @@ -2377,9 +2380,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| // there is a list of character codes to be substituted with alternative codes | |||
| if(iswupper(c_lower = c)) | |||
| if(iswupper2(c_lower = c)) | |||
| { | |||
| c_lower = towlower(c); | |||
| c_lower = towlower2(c); | |||
| upper_case = 1; | |||
| } | |||
| @@ -2393,7 +2396,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| new_c = replace_chars[ix+1]; | |||
| break; | |||
| } | |||
| if((word >> 16) == (unsigned int)towlower(next_in)) | |||
| if((word >> 16) == (unsigned int)towlower2(next_in)) | |||
| { | |||
| new_c = replace_chars[ix+1]; | |||
| ignore_next = 1; | |||
| @@ -2410,14 +2413,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| // there is a second character to be inserted | |||
| // don't convert the case of the second character unless the next letter is also upper case | |||
| c2 = new_c >> 16; | |||
| if(upper_case && iswupper(next_in)) | |||
| c2 = towupper(c2); | |||
| if(upper_case && iswupper2(next_in)) | |||
| c2 = towupper2(c2); | |||
| *insert = c2; | |||
| new_c &= 0xffff; | |||
| } | |||
| if(upper_case) | |||
| new_c = towupper(new_c); | |||
| new_c = towupper2(new_c); | |||
| *wordflags |= FLAG_CHAR_REPLACED; | |||
| return(new_c); | |||
| @@ -2481,7 +2484,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| // look for 'n and replace by a special character (unicode: schwa) | |||
| if(!iswalpha(prev_in)) | |||
| if(!iswalpha2(prev_in)) | |||
| { | |||
| utf8_in(&next2, &ptr[1]); | |||
| @@ -2911,7 +2914,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| else | |||
| { | |||
| if(iswupper(c)) | |||
| if(iswupper2(c)) | |||
| word_flags |= FLAG_FIRST_UPPER; | |||
| if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | |||
| @@ -2940,7 +2943,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| } | |||
| if(iswupper(c)) | |||
| if(iswupper2(c)) | |||
| { | |||
| c = towlower2(c); | |||
| @@ -2955,13 +2958,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| else | |||
| { | |||
| if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case | |||
| if(iswlower2(prev_in)) | |||
| { | |||
| // lower case followed by upper case in a word | |||
| if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
| { | |||
| // convert to lower case and continue | |||
| c = towlower(c); | |||
| c = towlower2(c); | |||
| } | |||
| else | |||
| { | |||
| @@ -2971,7 +2974,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
| } | |||
| } | |||
| else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | |||
| else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in)) | |||
| { | |||
| int next2_in; | |||
| utf8_in(&next2_in,&source[source_index + next_in_nbytes]); | |||
| @@ -81,8 +81,9 @@ | |||
| #define FLAG_ONLY 0x4000 | |||
| #define FLAG_ONLY_S 0x8000 | |||
| #define FLAG_STEM 0x10000 // must have a suffix | |||
| #define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ | |||
| #define FLAG_ATEND 0x20000 // use this pronunciation if at end of clause | |||
| #define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause | |||
| #define FLAG_NATIVE 0x80000 // not if we've switched translators | |||
| #define FLAG_LOOKUP_SYMBOL 0x40000000 // to indicate called from Lookup() | |||
| #define BITNUM_FLAG_ALLCAPS 0x2a | |||
| @@ -247,9 +248,9 @@ typedef struct { | |||
| typedef struct{ | |||
| unsigned int flags; | |||
| unsigned short start; | |||
| unsigned short sourceix; | |||
| unsigned char pre_pause; | |||
| unsigned char wmark; | |||
| unsigned short sourceix; | |||
| unsigned char length; | |||
| } WORD_TAB; | |||
| @@ -542,6 +543,7 @@ typedef struct { | |||
| char tone_numbers; | |||
| char ideographs; // treat as separate words | |||
| char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | |||
| char dotless_i; // uses letter U+0131 | |||
| int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
| int listx; // compile *_listx after *list | |||
| const unsigned int *replace_chars; // characters to be substitutes | |||
| @@ -713,9 +715,13 @@ int IsDigit(unsigned int c); | |||
| int IsDigit09(unsigned int c); | |||
| int IsAlpha(unsigned int c); | |||
| int IsVowel(Translator *tr, int c); | |||
| int iswalpha2(int c); | |||
| int isspace2(unsigned int c); | |||
| int iswlower2(int c); | |||
| int iswupper2(int c); | |||
| int towlower2(unsigned int c); | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||
| int towupper2(unsigned int c); | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode); | |||
| const char *WordToString2(unsigned int word); | |||
| ALPHABET *AlphabetFromChar(int c); | |||
| ALPHABET *AlphabetFromName(const char *name); | |||
| @@ -460,7 +460,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) | |||
| t_phonetic->SetDefaultStyle(style_phonetic_large); | |||
| translate_text = 3; | |||
| use_ipa = 1; | |||
| use_ipa = 0x10; | |||
| break; | |||
| case T_PROCESS: | |||
| @@ -21,6 +21,7 @@ | |||
| typedef struct { | |||
| char v_name[40]; | |||
| char language_name[20]; | |||
| int phoneme_tab_ix; // phoneme table number | |||
| int pitch_base; // Hz<<12 | |||
| @@ -422,7 +422,7 @@ void VoiceReset(int tone_only) | |||
| voice->n_harmonic_peaks = 5; | |||
| voice->peak_shape = 0; | |||
| voice->voicing = 64; | |||
| voice->consonant_amp = 90; // change to 85 for v.1.47 was 100 | |||
| voice->consonant_amp = 90; // change from 100 to 90 for v.1.47 | |||
| voice->consonant_ampv = 100; | |||
| voice->samplerate = samplerate_native; | |||
| memset(voice->klattv,0,sizeof(voice->klattv)); | |||
| @@ -540,7 +540,7 @@ static unsigned int StringToWord2(const char *string) | |||
| int c; | |||
| unsigned int value = 0; | |||
| for(ix=0; (ix<4) & ((c = string[ix]) != 0); ix++) | |||
| for(ix=0; (ix<4) && ((c = string[ix]) != 0); ix++) | |||
| { | |||
| value = (value << 8) | (c & 0xff); | |||
| } | |||
| @@ -602,7 +602,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| // which directory to look for a named voice. List of voice names, must end in a space. | |||
| static const char *voices_asia = | |||
| "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue "; | |||
| "az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; | |||
| static const char *voices_europe = | |||
| "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| @@ -751,6 +751,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| new_translator = SelectTranslator(translator_name); | |||
| langopts = &new_translator->langopts; | |||
| strncpy0(voice->language_name, language_name, sizeof(voice->language_name)); | |||
| } | |||
| } | |||
| break; | |||
| @@ -1829,6 +1830,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
| } | |||
| DoVoiceChange(voice); | |||
| voice_selector.languages = voice->language_name; | |||
| SetVoiceStack(&voice_selector, variant_name); | |||
| return(EE_OK); | |||
| } | |||
| @@ -1845,6 +1847,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
| LoadVoice(variant_name,2); | |||
| } | |||
| DoVoiceChange(voice); | |||
| voice_selector.languages = voice->language_name; | |||
| SetVoiceStack(&voice_selector, variant_name); | |||
| return(EE_OK); | |||
| } | |||
| @@ -1895,8 +1898,8 @@ void FreeVoiceList() | |||
| ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| {//======================================================================== | |||
| char path_voices[sizeof(path_home)+12]; | |||
| #ifdef PLATFORM_RISCOS | |||
| if(n_voices_list == 0) | |||
| { | |||